[*] Binary protection state of basic_device.so

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


[*] Function fprintf tear down of basic_device.so

    ; assembly                                   | /* r2dec pseudo code output */
                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/upnp_plugins/basic_device.so @ 0x10e0 */
                                                 | #include <stdint.h>
                                                 |  
    ; (fcn) fcn.000010e0 ()                      | void fcn_000010e0 (int16_t arg1, int16_t arg2) {
                                                 |     int16_t var_0h;
                                                 |     int16_t var_4h;
                                                 |     int16_t var_8h;
                                                 |     int16_t var_ch;
                                                 |     int16_t var_2ch;
                                                 |     r0 = arg1;
                                                 |     r1 = arg2;
    0x000010e0 movwhs fp, 0x5f0                  |     __asm ("movwhs fp, 0x5f0");
    0x000010e4 sub sp, 0x34                      |     
    0x000010e6 ldr r2, [pc, 0xac]                |     
    0x000010e8 mov r7, r0                        |     r7 = r0;
    0x000010ea mov r5, r1                        |     r5 = r1;
    0x000010ec str r3, [sp, 8]                   |     var_8h = r3;
    0x000010ee add r6, sp, 0xc                   |     r6 += var_ch;
    0x000010f0 ldr r3, [pc, 0xa4]                |     r3 = *(0x1198);
    0x000010f2 add r2, pc                        |     r2 = 0x228c;
    0x000010f4 ldr.w lr, [pc, 0xa4]              |     
    0x000010f8 mov ip, r6                        |     
    0x000010fa ldr r4, [pc, 0xa4]                |     
    0x000010fc ldr r3, [r2, r3]                  |     
    0x000010fe add lr, pc                        |     lr += pc;
    0x00001100 add r4, pc                        |     r4 = 0x22a6;
    0x00001102 ldr r3, [r3]                      |     r3 = *(0x228c);
    0x00001104 str r3, [sp, 0x2c]                |     var_2ch = r3;
    0x00001106 mov.w r3, 0                       |     r3 = 0;
    0x0000110a ldr r3, [pc, 0x98]                |     
    0x0000110c str r4, [sp]                      |     *(sp) = r4;
    0x0000110e add r3, pc                        |     r3 = 0x22b8;
    0x00001110 str r3, [sp, 4]                   |     var_4h = r3;
    0x00001112 ldm.w lr!, {r0, r1, r2, r3}       |     r0 = *(lr!);
                                                 |     r1 = *((lr! + 4));
                                                 |     r2 = *((lr! + 8));
                                                 |     r3 = *((lr! + 12));
    0x00001116 stm.w ip!, {r0, r1, r2, r3}       |     *(ip!) = r0;
                                                 |     *((ip! + 4)) = r1;
                                                 |     *((ip! + 8)) = r2;
                                                 |     *((ip! + 12)) = r3;
    0x0000111a ldm.w lr, {r0, r1, r2, r3}        |     r0 = *(lr);
                                                 |     r1 = *((lr + 4));
                                                 |     r2 = *((lr + 8));
                                                 |     r3 = *((lr + 12));
    0x0000111e stm.w ip, {r0, r1, r2, r3}        |     *(ip) = r0;
                                                 |     *((ip + 4)) = r1;
                                                 |     *((ip + 8)) = r2;
                                                 |     *((ip + 12)) = r3;
    0x00001122 mov r2, r4                        |     r2 = r4;
    0x00001124 ldr r3, [pc, 0x80]                |     
    0x00001126 mov r0, r7                        |     r0 = r7;
    0x00001128 add r1, sp, 8                     |     r1 += var_8h;
    0x0000112a add r3, pc                        |     r3 = 0x22d6;
    0x0000112c blx 0xd20                         |     r0 = sd_bus_error_free ();
    0x00001130 subs r4, r0, 0                    |     r4 = r0 - 0;
                                                 |     if (r4 < r0) {
    0x00001132 blt 0x115e                        |         goto label_1;
                                                 |     }
    0x00001134 ldr r0, [sp, 8]                   |     r0 = var_8h;
    0x00001136 mov r1, r6                        |     r1 = r6;
    0x00001138 blx 0xd14                         |     r0 = sd_bus_message_new_method_call ();
    0x0000113c subs r4, r0, 0                    |     r4 = r0 - 0;
                                                 |     if (r4 < r0) {
    0x0000113e blt 0x1174                        |         goto label_2;
                                                 |     }
    0x00001140 ldr r3, [sp, 8]                   |     r3 = var_8h;
    0x00001142 str r3, [r5]                      |     *(r5) = r3;
                                                 |     do {
                                                 | label_0:
    0x00001144 ldr r2, [pc, 0x64]                |         
    0x00001146 ldr r3, [pc, 0x50]                |         r3 = *(0x119a);
    0x00001148 add r2, pc                        |         r2 = 0x22f8;
    0x0000114a ldr r3, [r2, r3]                  |         r3 = *(0x22f8);
    0x0000114c ldr r2, [r3]                      |         r2 = *(0x22f8);
    0x0000114e ldr r3, [sp, 0x2c]                |         r3 = var_2ch;
    0x00001150 eors r2, r3                       |         r2 ^= r3;
    0x00001152 mov.w r3, 0                       |         r3 = 0;
                                                 |         if (r2 != r3) {
    0x00001156 bne 0x1190                        |             goto label_3;
                                                 |         }
    0x00001158 mov r0, r4                        |         r0 = r4;
    0x0000115a add sp, 0x34                      |         
    0x0000115c pop {r4, r5, r6, r7, pc}          |         
                                                 | label_1:
    0x0000115e rsbs r0, r4, 0                    |         r0 = r4 - ;
    0x00001160 blx 0xb94                         |         strerror (r0);
    0x00001164 ldr r2, [pc, 0x48]                |         
    0x00001166 mov r3, r0                        |         r3 = r0;
    0x00001168 movs r1, 1                        |         r1 = 1;
    0x0000116a movs r0, 3                        |         r0 = 3;
    0x0000116c add r2, pc                        |         r2 = "Memory allocation failed";
    0x0000116e blx 0xca8                         |         sd_bus_message_read ();
    0x00001172 b 0x1144                          |         
                                                 |     } while (1);
                                                 | label_2:
    0x00001174 rsbs r0, r4, 0                    |     r0 = r4 - ;
    0x00001176 blx 0xb94                         |     strerror (r0);
    0x0000117a ldr r2, [pc, 0x38]                |     
    0x0000117c mov r3, r0                        |     r3 = r0;
    0x0000117e movs r1, 1                        |     r1 = 1;
    0x00001180 movs r0, 3                        |     r0 = 3;
    0x00001182 add r2, pc                        |     r2 = 0x233c;
    0x00001184 blx 0xca8                         |     sd_bus_message_read ();
    0x00001188 ldr r0, [sp, 8]                   |     r0 = var_8h;
    0x0000118a blx 0xc34                         |     fcn_00000c34 ();
    0x0000118e b 0x1144                          |     goto label_0;
                                                 | label_3:
    0x00001190 blx 0xcf0                         |     fprintf_chk ()
    0x00001194 cmp r6, 0x46                      |     
    0x00001196 movs r0, r0                       |     
    0x00001198 lsls r4, r7, 2                    |     r4 = r7 << 2;
    0x0000119a movs r0, r0                       |     
    0x0000119c cmp r7, 2                         |     
    0x0000119e movs r0, r0                       |     
    0x000011a0 lsrs r4, r3, 0x17                 |     r4 = r3 >> 0x17;
    0x000011a2 movs r0, r0                       |     
    0x000011a4 lsrs r2, r5, 0x17                 |     r2 = r5 >> 0x17;
    0x000011a6 movs r0, r0                       |     
    0x000011a8 lsrs r6, r2, 0x16                 |     r6 = r2 >> 0x16;
    0x000011aa movs r0, r0                       |     
    0x000011ac cmp r5, 0xf0                      |     
    0x000011ae movs r0, r0                       |     
    0x000011b0 lsrs r0, r2, 0x16                 |     r0 = r2 >> 0x16;
    0x000011b2 movs r0, r0                       |     
    0x000011b4 lsrs r2, r4, 0x16                 |     r2 = r4 >> 0x16;
    0x000011b6 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/lib/upnp_plugins/basic_device.so @ 0x1934 */
                                                         | #include <stdint.h>
                                                         |  
    ; (fcn) fcn.00001934 ()                              | void fcn_00001934 (int16_t arg1) {
                                                         |     int16_t var_4h;
                                                         |     int16_t var_204h;
                                                         |     r0 = arg1;
    0x00001934 blmi 0xbd41f4                             |     __asm ("blmi aav.0x000025f8");
    0x00001938 push.w {r4, r5, r6, r7, r8, sb, lr}       |     
    0x0000193c sub.w sp, sp, 0x20c                       |     
    0x00001940 add r2, pc                                |     r2 += pc;
    0x00001942 ldr r3, [r2, r3]                          |     r3 = *((r2 + r3));
    0x00001944 ldr r3, [r3]                              |     r3 = *(r3);
    0x00001946 str r3, [sp, 0x204]                       |     var_204h = r3;
    0x00001948 mov.w r3, 0                               |     r3 = 0;
    0x0000194c ldrb r3, [r0]                             |     r3 = *(r0);
    0x0000194e cmp r3, 0                                 |     
                                                         |     if (r3 == 0) {
    0x00001950 beq 0x19e6                                |         goto label_3;
                                                         |     }
    0x00001952 ldr r6, [pc, 0xa4]                        |     
    0x00001954 mov sb, r0                                |     sb = r0;
    0x00001956 ldr.w r8, [pc, 0xa4]                      |     
    0x0000195a mov.w ip, 0                               |     
    0x0000195e ldr r7, [pc, 0xa0]                        |     
    0x00001960 add r5, sp, 4                             |     r5 += var_4h;
    0x00001962 add r6, pc                                |     r6 = 0x3360;
    0x00001964 add r8, pc                                |     r8 = 0x3366;
    0x00001966 add r7, pc                                |     r7 = 0x336c;
    0x00001968 b 0x198c                                  |     goto label_4;
                                                         | label_0:
    0x0000196a cmp r3, 0x26                              |     
                                                         |     if (r3 == 0x26) {
    0x0000196c beq 0x19d8                                |         goto label_5;
                                                         |     }
    0x0000196e mov r1, sb                                |     r1 = sb;
    0x00001970 movs r2, 1                                |     r2 = 1;
                                                         |     do {
                                                         | label_2:
    0x00001972 add.w r4, r2, ip                          |         r4 = r2 + ip;
    0x00001976 cmp.w r4, 0x200                           |         
                                                         |         if (r4 >= 0x200) {
    0x0000197a bge 0x19b0                                |             goto label_6;
                                                         |         }
                                                         | label_1:
    0x0000197c add.w r0, r5, ip                          |         r0 = r5 + ip;
    0x00001980 blx 0xc5c                                 |         fcn_00000c5c ();
    0x00001984 ldrb r3, [sb, 1]!                         |         r3 = *((sb += 1));
    0x00001988 mov ip, r4                                |         
                                                         |         if (r3 == 0) {
    0x0000198a cbz r3, 0x19b0                            |             goto label_6;
                                                         |         }
                                                         | label_4:
    0x0000198c sub.w r2, r3, 0x20                        |         r2 = r3 - 0x20;
    0x00001990 cmp r2, 0x5e                              |         
    0x00001992 itt hi                                    |         
                                                         |         if (r2 <= 0x5e) {
    0x00001994 movhi r2, 1                               |             r2 = 1;
                                                         |         }
                                                         |         if (r2 <= 0x5e) {
    0x00001996 movhi r1, r6                              |             r1 = r6;
                                                         |         }
    0x00001998 bhi 0x1972                                |         
                                                         |     } while (r2 > 0x5e);
    0x0000199a cmp r3, 0x3c                              |     
                                                         |     if (r3 == 0x3c) {
    0x0000199c beq 0x19e0                                |         goto label_7;
                                                         |     }
    0x0000199e cmp r3, 0x3e                              |     
                                                         |     if (r3 != 0x3e) {
    0x000019a0 bne 0x196a                                |         goto label_0;
                                                         |     }
    0x000019a2 movs r2, 4                                |     r2 = 4;
    0x000019a4 mov r1, r7                                |     r1 = r7;
    0x000019a6 add.w r4, r2, ip                          |     r4 = r2 + ip;
    0x000019aa cmp.w r4, 0x200                           |     
                                                         |     if (r4 < 0x200) {
    0x000019ae blt 0x197c                                |         goto label_1;
                                                         |     }
                                                         |     do {
                                                         | label_6:
    0x000019b0 movs r3, 0                                |         r3 = 0;
    0x000019b2 mov r0, r5                                |         r0 = r5;
    0x000019b4 strb.w r3, [r5, ip]                       |         *((r5 + ip)) = r3;
    0x000019b8 blx 0xccc                                 |         sd_bus_message_enter_container ();
    0x000019bc ldr r2, [pc, 0x44]                        |         
    0x000019be ldr r3, [pc, 0x34]                        |         r3 = *(0x19f6);
    0x000019c0 add r2, pc                                |         r2 = 0x33c8;
    0x000019c2 ldr r3, [r2, r3]                          |         r3 = *(0x33c8);
    0x000019c4 ldr r2, [r3]                              |         r2 = *(0x33c8);
    0x000019c6 ldr r3, [sp, 0x204]                       |         r3 = var_204h;
    0x000019c8 eors r2, r3                               |         r2 ^= r3;
    0x000019ca mov.w r3, 0                               |         r3 = 0;
                                                         |         if (r2 != r3) {
    0x000019ce bne 0x19ec                                |             goto label_8;
                                                         |         }
    0x000019d0 add.w sp, sp, 0x20c                       |         
    0x000019d4 pop.w {r4, r5, r6, r7, r8, sb, pc}        |         
                                                         | label_5:
    0x000019d8 ldr r1, [pc, 0x2c]                        |         
    0x000019da movs r2, 5                                |         r2 = 5;
    0x000019dc add r1, pc                                |         r1 = 0x33e8;
    0x000019de b 0x1972                                  |         goto label_2;
                                                         | label_7:
    0x000019e0 movs r2, 4                                |         r2 = 4;
    0x000019e2 mov r1, r8                                |         r1 = r8;
    0x000019e4 b 0x1972                                  |         goto label_2;
                                                         | label_3:
    0x000019e6 mov ip, r3                                |         
    0x000019e8 add r5, sp, 4                             |         r5 += var_4h;
    0x000019ea b 0x19b0                                  |         
                                                         |     } while (1);
                                                         | label_8:
    0x000019ec blx 0xcf0                                 |     fprintf_chk ()
    0x000019f0 movs r5, 0xf8                             |     r5 = 0xf8;
    0x000019f2 movs r0, r0                               |     
    0x000019f4 lsls r4, r7, 2                            |     r4 = r7 << 2;
    0x000019f6 movs r0, r0                               |     
    0x000019f8 lsrs r6, r5, 5                            |     r6 = r5 >> 5;
    0x000019fa movs r0, r0                               |     
    0x000019fc lsrs r0, r6, 5                            |     r0 = r6 >> 5;
    0x000019fe movs r0, r0                               |     
    0x00001a00 lsrs r6, r6, 5                            |     r6 >>= 5;
    0x00001a02 movs r0, r0                               |     
    0x00001a04 movs r5, 0x78                             |     r5 = 0x78;
    0x00001a06 movs r0, r0                               |     
    0x00001a08 lsrs r0, r1, 4                            |     r0 = r1 >> 4;
    0x00001a0a 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/lib/upnp_plugins/basic_device.so @ 0x1a0c */
                                                                     | #include <stdint.h>
                                                                     |  
    ; (fcn) sym.createRootDescDoc ()                                 | void createRootDescDoc (int16_t arg1) {
                                                                     |     int16_t var_0h;
                                                                     |     int16_t var_4h;
                                                                     |     int16_t var_8h;
                                                                     |     int16_t var_ch;
                                                                     |     int16_t var_10h;
                                                                     |     int16_t var_14h;
                                                                     |     int16_t var_18h;
                                                                     |     int16_t var_1ch;
                                                                     |     int16_t var_20h;
                                                                     |     int16_t var_24h;
                                                                     |     int16_t var_28h;
                                                                     |     int16_t var_2ch;
                                                                     |     int16_t var_30h;
                                                                     |     int16_t var_34h;
                                                                     |     int16_t var_38h;
                                                                     |     int16_t var_3ch;
                                                                     |     int16_t var_40h;
                                                                     |     int16_t var_4ch;
                                                                     |     int16_t var_50h;
                                                                     |     int16_t var_54h;
                                                                     |     int16_t var_58h;
                                                                     |     int16_t var_6ch;
                                                                     |     r0 = arg1;
    0x00001a0c blmi 0xfe254434                                       |     __asm ("blmi aav.0x00002522");
    0x00001a10 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}           |     
    0x00001a14 sub sp, 0x74                                          |     
    0x00001a16 add r2, pc                                            |     r2 += pc;
    0x00001a18 ldr r5, [r0, 0x1c]                                    |     r5 = *((r0 + 0x1c));
    0x00001a1a mov r4, r0                                            |     r4 = r0;
    0x00001a1c ldr r3, [r2, r3]                                      |     r3 = *((r2 + r3));
    0x00001a1e ldr r3, [r3]                                          |     r3 = *(r3);
    0x00001a20 str r3, [sp, 0x6c]                                    |     var_6ch = r3;
    0x00001a22 mov.w r3, 0                                           |     r3 = 0;
    0x00001a26 cmp r5, 0                                             |     
                                                                     |     if (r5 == 0) {
    0x00001a28 beq 0x1b1a                                            |         goto label_5;
                                                                     |     }
    0x00001a2a ldrb r3, [r5]                                         |     r3 = *(r5);
    0x00001a2c cmp r3, 0                                             |     
    0x00001a2e beq 0x1b1a                                            |     
                                                                     |     while (1) {
    0x00001a30 mov r0, r5                                            |         r0 = r5;
    0x00001a32 ldr r6, [pc, 0x204]                                   |         
    0x00001a34 bl 0x1934                                             |         fcn_00001934 (r0);
    0x00001a38 str r0, [r4, 0x1c]                                    |         *((r4 + 0x1c)) = r0;
    0x00001a3a mov r0, r5                                            |         r0 = r5;
    0x00001a3c blx 0xc1c                                             |         fcn_00000c1c ();
    0x00001a40 ldr r1, [pc, 0x1f8]                                   |         
    0x00001a42 add r6, pc                                            |         r6 = 0x3680;
    0x00001a44 mov r0, r6                                            |         r0 = r6;
    0x00001a46 add r1, pc                                            |         r1 = 0x3686;
    0x00001a48 blx 0xc68                                             |         r0 = fcn_00000c68 ();
    0x00001a4c mov r5, r0                                            |         r5 = r0;
    0x00001a4e cmp r0, 0                                             |         
                                                                     |         if (r0 == 0) {
    0x00001a50 beq.w 0x1c10                                          |             goto label_6;
                                                                     |         }
    0x00001a54 ldr r2, [r4, 4]                                       |         r2 = *((r4 + 4));
    0x00001a56 add.w ip, sp, 0x58                                    |         
    0x00001a5a ldr r6, [pc, 0x1e4]                                   |         
    0x00001a5c ldr r3, [r4]                                          |         r3 = *(r4);
    0x00001a5e str r2, [sp, 0x50]                                    |         var_50h = r2;
    0x00001a60 ldr r2, [r4, 8]                                       |         r2 = *((r4 + 8));
    0x00001a62 add r6, pc                                            |         r6 = 0x36a8;
    0x00001a64 ldrd r0, r1, [r6]                                     |         __asm ("ldrd r0, r1, [r6]");
    0x00001a68 str r3, [sp, 0x4c]                                    |         var_4ch = r3;
    0x00001a6a str r2, [sp, 0x54]                                    |         var_54h = r2;
    0x00001a6c ldr r2, [r6, 8]                                       |         r2 = *(0x36b0);
    0x00001a6e ldr r3, [pc, 0x1d4]                                   |         
    0x00001a70 ldr.w r8, [r4, 0x1c]                                  |         r8 = *((r4 + 0x1c));
    0x00001a74 orr.w fp, r0, r2                                      |         
    0x00001a78 ldr r2, [r6, 0xc]                                     |         r2 = *(0x36b4);
    0x00001a7a add r3, pc                                            |         r3 = 0x36c4;
    0x00001a7c ldr r7, [r4, 0x14]                                    |         r7 = *((r4 + 0x14));
    0x00001a7e ldr.w sb, [r4, 0xc]                                   |         sb = *((r4 + 0xc));
    0x00001a82 orr.w lr, r1, r2                                      |         lr = r1 | r2;
    0x00001a86 ldm r3, {r0, r1, r2, r3}                              |         r0 = *(r3);
                                                                     |         r1 = *((r3 + 4));
                                                                     |         r2 = *((r3 + 8));
                                                                     |         r3 = *((r3 + 12));
    0x00001a88 orrs.w lr, fp, lr                                     |         lr = fp | lr;
    0x00001a8c ldr.w sl, [r4, 0x18]                                  |         sl = *((r4 + 0x18));
    0x00001a90 stm.w ip, {r0, r1, r2, r3}                            |         *(ip) = r0;
                                                                     |         *((ip + 4)) = r1;
                                                                     |         *((ip + 8)) = r2;
                                                                     |         *((ip + 12)) = r3;
                                                                     |         if (lr == fp) {
    0x00001a94 beq 0x1b4e                                            |             goto label_7;
                                                                     |         }
                                                                     | label_2:
    0x00001a96 ldr r1, [pc, 0x1b0]                                   |         
    0x00001a98 ldr r0, [r4, 0x10]                                    |         r0 = *((r4 + 0x10));
    0x00001a9a add r1, pc                                            |         r1 = 0x36e8;
    0x00001a9c blx 0xd60                                             |         r0 = fcn_00000d60 ();
    0x00001aa0 cmp r0, 0                                             |         
                                                                     |         if (r0 == 0) {
    0x00001aa2 beq 0x1b3c                                            |             goto label_8;
                                                                     |         }
    0x00001aa4 ldr r3, [r4, 0x24]                                    |         r3 = *((r4 + 0x24));
    0x00001aa6 ldr.w fp, [pc, 0x1a4]                                 |         
    0x00001aaa cmp r3, 1                                             |         
    0x00001aac add fp, pc                                            |         fp = 0x36fe;
                                                                     |         if (r3 == 1) {
    0x00001aae beq 0x1b48                                            |             goto label_9;
                                                                     |         }
                                                                     | label_0:
    0x00001ab0 ldr r6, [pc, 0x19c]                                   |         
    0x00001ab2 add r6, pc                                            |         r6 = 0x3706;
                                                                     | label_1:
    0x00001ab4 blx 0xbe8                                             |         UpnpGetServerIpAddress ();
    0x00001ab8 ldr r3, [sp, 0x54]                                    |         r3 = var_54h;
    0x00001aba movs r1, 1                                            |         r1 = 1;
    0x00001abc ldr r2, [pc, 0x194]                                   |         
    0x00001abe strd r6, r0, [sp, 0x2c]                               |         __asm ("strd r6, r0, [var_30h]");
    0x00001ac2 str r3, [sp, 0xc]                                     |         var_ch = r3;
    0x00001ac4 ldr r3, [sp, 0x50]                                    |         r3 = var_50h;
    0x00001ac6 add r2, pc                                            |         r2 = 0x371e;
    0x00001ac8 ldr r0, [pc, 0x18c]                                   |         
    0x00001aca str.w sl, [sp, 0x18]                                  |         __asm ("str.w sl, [var_18h]");
    0x00001ace str r3, [sp, 8]                                       |         var_8h = r3;
    0x00001ad0 ldr r3, [sp, 0x4c]                                    |         r3 = var_4ch;
    0x00001ad2 add r0, pc                                            |         r0 = 0x372e;
    0x00001ad4 str.w sb, [sp, 0x10]                                  |         __asm ("str.w sb, [var_10h]");
    0x00001ad8 adds r0, 0x10                                         |         r0 += 0x10;
    0x00001ada str r3, [sp]                                          |         *(sp) = r3;
    0x00001adc ldr r3, [r4, 0x20]                                    |         r3 = *((r4 + 0x20));
    0x00001ade str r2, [sp, 0x28]                                    |         var_28h = r2;
    0x00001ae0 ldr r2, [pc, 0x178]                                   |         
    0x00001ae2 str r3, [sp, 0x34]                                    |         var_34h = r3;
    0x00001ae4 mov r3, r8                                            |         r3 = r8;
    0x00001ae6 str r0, [sp, 0x1c]                                    |         var_1ch = r0;
    0x00001ae8 mov r0, r5                                            |         r0 = r5;
    0x00001aea add r2, pc                                            |         r2 = 0x374a;
    0x00001aec strd fp, fp, [sp, 0x20]                               |         __asm ("strd fp, fp, [var_0hx20]");
    0x00001af0 str r7, [sp, 0x14]                                    |         var_14h = r7;
    0x00001af2 str r7, [sp, 4]                                       |         var_4h = r7;
    0x00001af4 blx 0xcfc                                             |         UpnpSetWebServerRootDir ();
    0x00001af8 mov r0, r5                                            |         r0 = r5;
    0x00001afa blx 0xbd0                                             |         fclose (r0);
    0x00001afe movs r0, 1                                            |         r0 = 1;
                                                                     | label_3:
    0x00001b00 ldr r2, [pc, 0x15c]                                   |         
    0x00001b02 ldr r3, [pc, 0x130]                                   |         r3 = *(0x1c36);
    0x00001b04 add r2, pc                                            |         r2 = 0x3768;
    0x00001b06 ldr r3, [r2, r3]                                      |         r3 = *(0x3768);
    0x00001b08 ldr r2, [r3]                                          |         r2 = *(0x3768);
    0x00001b0a ldr r3, [sp, 0x6c]                                    |         r3 = var_6ch;
    0x00001b0c eors r2, r3                                           |         r2 ^= r3;
    0x00001b0e mov.w r3, 0                                           |         r3 = 0;
                                                                     |         if (r2 != r3) {
    0x00001b12 bne 0x1c0c                                            |             goto label_10;
                                                                     |         }
    0x00001b14 add sp, 0x74                                          |         
    0x00001b16 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}            |         
                                                                     | label_5:
    0x00001b1a mov r0, r5                                            |         r0 = r5;
    0x00001b1c blx 0xc1c                                             |         fcn_00000c1c ();
    0x00001b20 ldr r0, [r4, 0x18]                                    |         r0 = *((r4 + 0x18));
    0x00001b22 movs r1, 1                                            |         r1 = 1;
    0x00001b24 ldr r2, [pc, 0x13c]                                   |         
    0x00001b26 ldr r3, [r4, 8]                                       |         r3 = *((r4 + 8));
    0x00001b28 str r0, [sp]                                          |         *(sp) = r0;
    0x00001b2a add.w r0, r4, 0x1c                                    |         r0 = r4 + 0x1c;
    0x00001b2e add r2, pc                                            |         r2 = 0x3796;
    0x00001b30 blx 0xc28                                             |         r0 = fcn_00000c28 ();
    0x00001b34 cmp r0, 0                                             |         
                                                                     |         if (r0 < 0) {
    0x00001b36 blt 0x1bee                                            |             goto label_11;
                                                                     |         }
    0x00001b38 ldr r5, [r4, 0x1c]                                    |         r5 = *((r4 + 0x1c));
    0x00001b3a b 0x1a30                                              |         
                                                                     |     }
                                                                     | label_8:
    0x00001b3c ldr r3, [r4, 0x24]                                    |     r3 = *((r4 + 0x24));
    0x00001b3e ldr.w fp, [pc, 0x128]                                 |     
    0x00001b42 cmp r3, 1                                             |     
    0x00001b44 add fp, pc                                            |     fp = 0x37b2;
                                                                     |     if (r3 != 1) {
    0x00001b46 bne 0x1ab0                                            |         goto label_0;
                                                                     |     }
                                                                     | label_9:
    0x00001b48 ldr r6, [pc, 0x120]                                   |     
    0x00001b4a add r6, pc                                            |     r6 = 0x37ba;
    0x00001b4c b 0x1ab4                                              |     goto label_1;
                                                                     | label_7:
    0x00001b4e str r6, [sp]                                          |     *(sp) = r6;
    0x00001b50 blx 0xce4                                             |     r0 = stack_chk_fail ();
    0x00001b54 cmp r0, 0                                             |     
    0x00001b56 bne 0x1bfe                                            |     
                                                                     |     while (1) {
    0x00001b58 ldr r0, [pc, 0x114]                                   |         
    0x00001b5a movs r3, 0x25                                         |         r3 = 0x25;
    0x00001b5c ldr r6, [pc, 0x114]                                   |         
    0x00001b5e movs r2, 1                                            |         r2 = 1;
    0x00001b60 mov r1, r3                                            |         r1 = r3;
    0x00001b62 add r0, pc                                            |         r0 = 0x37d6;
    0x00001b64 ldrb.w ip, [r0, 0xf]                                  |         ip = *((r0 + 0xf));
    0x00001b68 add r6, pc                                            |         r6 = 0x37e0;
    0x00001b6a adds r0, 0x10                                         |         r0 += 0x10;
    0x00001b6c str.w ip, [sp, 0x40]                                  |         __asm ("str.w ip, [var_40h]");
    0x00001b70 ldrb ip, [r0, -0x2]                                   |         ip = *((r0 - 0x2));
    0x00001b74 str.w ip, [sp, 0x3c]                                  |         __asm ("str.w ip, [var_3ch]");
    0x00001b78 ldrb ip, [r0, -0x3]                                   |         ip = *((r0 - 0x3));
    0x00001b7c str.w ip, [sp, 0x38]                                  |         __asm ("str.w ip, [var_38h]");
    0x00001b80 ldrb ip, [r0, -0x4]                                   |         ip = *((r0 - 0x4));
    0x00001b84 str.w ip, [sp, 0x34]                                  |         __asm ("str.w ip, [var_34h]");
    0x00001b88 ldrb ip, [r0, -0x5]                                   |         ip = *((r0 - 0x5));
    0x00001b8c str.w ip, [sp, 0x30]                                  |         __asm ("str.w ip, [var_30h]");
    0x00001b90 ldrb ip, [r0, -0x6]                                   |         ip = *((r0 - 0x6));
    0x00001b94 str.w ip, [sp, 0x2c]                                  |         __asm ("str.w ip, [var_2ch]");
    0x00001b98 ldrb ip, [r0, -0x7]                                   |         ip = *((r0 - 0x7));
    0x00001b9c str.w ip, [sp, 0x28]                                  |         __asm ("str.w ip, [var_28h]");
    0x00001ba0 ldrb ip, [r0, -0x8]                                   |         ip = *((r0 - 0x8));
    0x00001ba4 str.w ip, [sp, 0x24]                                  |         __asm ("str.w ip, [var_24h]");
    0x00001ba8 ldrb ip, [r0, -0x9]                                   |         ip = *((r0 - 0x9));
    0x00001bac str.w ip, [sp, 0x20]                                  |         __asm ("str.w ip, [var_20h]");
    0x00001bb0 ldrb ip, [r0, -0xa]                                   |         ip = *((r0 - 0xa));
    0x00001bb4 str.w ip, [sp, 0x1c]                                  |         __asm ("str.w ip, [var_1ch]");
    0x00001bb8 ldrb ip, [r0, -0xb]                                   |         ip = *((r0 - 0xb));
    0x00001bbc str.w ip, [sp, 0x18]                                  |         __asm ("str.w ip, [var_18h]");
    0x00001bc0 ldrb ip, [r0, -0xc]                                   |         ip = *((r0 - 0xc));
    0x00001bc4 str.w ip, [sp, 0x14]                                  |         __asm ("str.w ip, [var_14h]");
    0x00001bc8 ldrb ip, [r0, -0xd]                                   |         ip = *((r0 - 0xd));
    0x00001bcc str.w ip, [sp, 0x10]                                  |         __asm ("str.w ip, [var_10h]");
    0x00001bd0 ldrb ip, [r0, -0xe]                                   |         ip = *((r0 - 0xe));
    0x00001bd4 str.w ip, [sp, 0xc]                                   |         __asm ("str.w ip, [var_ch]");
    0x00001bd8 ldrb ip, [r0, -0xf]                                   |         ip = *((r0 - 0xf));
    0x00001bdc str.w ip, [sp, 8]                                     |         __asm ("str.w ip, [var_8h]");
    0x00001be0 ldrb ip, [r0, -0x10]                                  |         ip = *((r0 - 0x10));
    0x00001be4 strd r6, ip, [sp]                                     |         __asm ("strd r6, ip, [sp]");
    0x00001be8 blx 0xc8c                                             |         fcn_00000c8c ();
    0x00001bec b 0x1a96                                              |         goto label_2;
                                                                     | label_11:
    0x00001bee ldr r2, [pc, 0x88]                                    |         
    0x00001bf0 movs r1, 1                                            |         r1 = 1;
    0x00001bf2 movs r0, 2                                            |         r0 = 2;
    0x00001bf4 add r2, pc                                            |         r2 = 0x3872;
    0x00001bf6 blx 0xca8                                             |         sd_bus_message_read ();
                                                                     | label_4:
    0x00001bfa movs r0, 0                                            |         r0 = 0;
    0x00001bfc b 0x1b00                                              |         goto label_3;
    0x00001bfe ldr r2, [pc, 0x7c]                                    |         
    0x00001c00 movs r1, 1                                            |         r1 = 1;
    0x00001c02 movs r0, 3                                            |         r0 = 3;
    0x00001c04 add r2, pc                                            |         r2 = 0x3886;
    0x00001c06 blx 0xca8                                             |         sd_bus_message_read ();
    0x00001c0a b 0x1b58                                              |         
                                                                     |     }
                                                                     | label_10:
    0x00001c0c blx 0xcf0                                             |     fprintf_chk ()
                                                                     | label_6:
    0x00001c10 blx 0xd6c                                             |     r0 = fcn_00000d6c ();
    0x00001c14 ldr r0, [r0]                                          |     r0 = *(r0);
    0x00001c16 blx 0xb94                                             |     strerror (r0);
    0x00001c1a ldr r2, [pc, 0x64]                                    |     
    0x00001c1c mov r4, r0                                            |     r4 = r0;
    0x00001c1e mov r3, r6                                            |     r3 = r6;
    0x00001c20 movs r1, 1                                            |     r1 = 1;
    0x00001c22 movs r0, 2                                            |     r0 = 2;
    0x00001c24 str r4, [sp]                                          |     *(sp) = r4;
    0x00001c26 add r2, pc                                            |     r2 = 0x38ac;
    0x00001c28 blx 0xca8                                             |     sd_bus_message_read ();
    0x00001c2c b 0x1bfa                                              |     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/lib/upnp_plugins/basic_device.so @ 0x11f8 */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) sym.readConfigBasicDevice ()                         | void readConfigBasicDevice (int16_t arg1, int16_t arg2) {
                                                                 |     int16_t var_6ch;
                                                                 |     int16_t var_0h;
                                                                 |     int16_t var_4h_2;
                                                                 |     int16_t var_8h;
                                                                 |     int16_t var_14h;
                                                                 |     int16_t var_18h;
                                                                 |     int16_t var_1ch;
                                                                 |     int16_t var_24h;
                                                                 |     int16_t var_28h;
                                                                 |     int16_t var_2ch;
                                                                 |     size_t nitems;
                                                                 |     FILE * stream;
                                                                 |     int16_t var_38h;
                                                                 |     int16_t var_3ch;
                                                                 |     int16_t var_40h;
                                                                 |     int16_t var_48h;
                                                                 |     int16_t var_4ch;
                                                                 |     int16_t var_50h;
                                                                 |     int16_t var_54h;
                                                                 |     int16_t var_64h;
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
    0x000011f8 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}       |     
    0x000011fc mov r5, r1                                        |     r5 = r1;
    0x000011fe ldr.w r1, [pc, 0x670]                             |     r1 = *(0x00001870);
    0x00001202 sub sp, 0x6c                                      |     
    0x00001204 movs r3, 0                                        |     r3 = 0;
    0x00001206 mov r4, r0                                        |     r4 = r0;
    0x00001208 vmov.i32 d16, 0                                   |     __asm ("vmov.i32 d16, 0");
    0x0000120c add r0, sp, 0x24                                  |     r0 += var_24h;
    0x0000120e ldr.w r2, [pc, 0x664]                             |     
    0x00001212 add r1, pc                                        |     r1 += pc;
    0x00001214 vstr d16, [sp, 0x38]                              |     __asm ("vstr d16, [sp, 0x38]");
    0x00001216 lsrs r6, r1, 0xc                                  |     r6 = r1 >> 0xc;
    0x00001218 ldr r2, [r1, r2]                                  |     r2 = *((r1 + r2));
    0x0000121a ldr r2, [r2]                                      |     r2 = *(0x1876);
    0x0000121c str r2, [sp, 0x64]                                |     var_64h = r2;
    0x0000121e mov.w r2, 0                                       |     r2 = 0;
    0x00001222 str r3, [sp, 0x24]                                |     var_24h = r3;
    0x00001224 str r3, [sp, 0x40]                                |     var_40h = r3;
    0x00001226 blx 0xc74                                         |     r0 = fcn_00000c74 ();
    0x0000122a cmp r0, 0                                         |     
                                                                 |     if (r0 < 0) {
    0x0000122c blt.w 0x15ac                                      |         goto label_18;
                                                                 |     }
    0x00001230 ldr.w r6, [pc, 0x644]                             |     
    0x00001234 add.w sl, r4, 0x1c                                |     sl = r4 + 0x1c;
    0x00001238 ldr.w r7, [pc, 0x640]                             |     
    0x0000123c add.w sb, sp, 0x38                                |     sb += var_38h;
    0x00001240 ldr.w r8, [pc, 0x63c]                             |     
    0x00001244 add r6, pc                                        |     r6 = 0x2ac0;
    0x00001246 ldr r0, [sp, 0x24]                                |     r0 = var_24h;
    0x00001248 add r7, pc                                        |     r7 = 0x2ac8;
    0x0000124a mov r1, r6                                        |     r1 = r6;
    0x0000124c add r8, pc                                        |     r8 = 0x2ad0;
    0x0000124e mov r3, r6                                        |     r3 = r6;
    0x00001250 mov r2, r7                                        |     r2 = r7;
    0x00001252 str.w sl, [sp, 8]                                 |     __asm ("str.w sl, [var_8h]");
    0x00001256 str.w r8, [sp]                                    |     __asm ("str.w r8, [sp]");
    0x0000125a str.w sb, [sp, 4]                                 |     __asm ("str.w sb, [var_4h_2]");
    0x0000125e blx 0xbf4                                         |     r0 = sd_bus_get_property_string ();
    0x00001262 adds r1, r0, 4                                    |     r1 = r0 + 4;
                                                                 |     if (r1 == r0) {
    0x00001264 beq.w 0x16c2                                      |         goto label_19;
                                                                 |     }
                                                                 | label_12:
    0x00001268 ldr r3, [r5]                                      |     r3 = *(r5);
    0x0000126a cmp r3, 1                                         |     
                                                                 |     if (r3 == 1) {
    0x0000126c beq.w 0x13e2                                      |         goto label_11;
                                                                 |     }
    0x00001270 cmp r0, 0                                         |     
                                                                 |     if (r0 < 0) {
    0x00001272 blt.w 0x1656                                      |         goto label_20;
                                                                 |     }
                                                                 | label_10:
    0x00001276 ldr r6, [sp, 0x24]                                |     r6 = var_24h;
    0x00001278 add.w r8, sp, 0x2c                                |     r8 += var_2ch;
    0x0000127c vmov.i32 d16, 0                                   |     __asm ("vmov.i32 d16, 0");
    0x00001280 movs r3, 0                                        |     r3 = 0;
    0x00001282 mov r1, r8                                        |     r1 = r8;
    0x00001284 strd r3, r3, [sp, 0x28]                           |     __asm ("strd r3, r3, [var_2ch]");
    0x00001288 mov r0, r6                                        |     r0 = r6;
    0x0000128a str r3, [sp, 0x50]                                |     var_50h = r3;
    0x0000128c vstr d16, [sp, 0x48]                              |     __asm ("vstr d16, [sp, 0x48]");
    0x00001290 bl 0x10e0                                         |     r0 = fcn_000010e0 (r0, r1);
    0x00001294 cmp r0, 0                                         |     
                                                                 |     if (r0 < 0) {
    0x00001296 blt.w 0x1466                                      |         goto label_14;
                                                                 |     }
    0x0000129a ldr.w sl, [sp, 0x2c]                              |     sl = var_2ch;
    0x0000129e add r7, sp, 0x28                                  |     r7 += var_28h;
    0x000012a0 add r5, sp, 0x48                                  |     r5 += var_48h;
    0x000012a2 movs r2, 0                                        |     r2 = 0;
    0x000012a4 mov r0, r6                                        |     r0 = r6;
    0x000012a6 movs r3, 0                                        |     r3 = 0;
    0x000012a8 mov r1, sl                                        |     r1 = sl;
    0x000012aa str r7, [sp, 4]                                   |     var_4h_2 = r7;
    0x000012ac str r5, [sp]                                      |     *(sp) = r5;
    0x000012ae blx 0xc00                                         |     r0 = sd_bus_call ();
    0x000012b2 adds r2, r0, 4                                    |     r2 = r0 + 4;
                                                                 |     if (r2 == r0) {
    0x000012b4 beq.w 0x1734                                      |         goto label_21;
                                                                 |     }
                                                                 | label_15:
    0x000012b8 cmp r0, 0                                         |     
                                                                 |     if (r0 < 0) {
    0x000012ba blt.w 0x16fe                                      |         goto label_22;
                                                                 |     }
    0x000012be ldr.w r2, [pc, 0x5c4]                             |     
    0x000012c2 movs r1, 0x61                                     |     r1 = 0x61;
    0x000012c4 ldr r0, [sp, 0x28]                                |     r0 = var_28h;
    0x000012c6 add r2, pc                                        |     r2 = 0x2b50;
    0x000012c8 blx 0xcd8                                         |     r0 = sd_id128_get_machine_app_specific ();
    0x000012cc cmp r0, 0                                         |     
                                                                 |     if (r0 < 0) {
    0x000012ce blt.w 0x1450                                      |         goto label_23;
                                                                 |     }
    0x000012d2 ldr.w r6, [pc, 0x5b4]                             |     
    0x000012d6 add r7, sp, 0x34                                  |     r7 += stream;
    0x000012d8 ldr.w sl, [pc, 0x5b0]                             |     
    0x000012dc ldr.w fp, [pc, 0x5b0]                             |     
    0x000012e0 str.w r8, [sp, 0x14]                              |     __asm ("str.w r8, [var_14h]");
    0x000012e4 add r6, pc                                        |     r6 = 0x2b72;
    0x000012e6 add sl, pc                                        |     sl = 0x2b76;
    0x000012e8 mov r8, r4                                        |     r8 = r4;
    0x000012ea add fp, pc                                        |     fp = 0x2b7e;
    0x000012ec b 0x1366                                          |     
                                                                 |     while (r0 != 0) {
    0x000012ee mov r1, fp                                        |         r1 = fp;
    0x000012f0 mov r0, r5                                        |         r0 = r5;
    0x000012f2 blx 0xd60                                         |         r0 = fcn_00000d60 ();
    0x000012f6 cmp r0, 0                                         |         
                                                                 |         if (r0 == 0) {
    0x000012f8 beq.w 0x166c                                      |             goto label_24;
                                                                 |         }
    0x000012fc ldr.w r1, [pc, 0x594]                             |         
    0x00001300 mov r0, r5                                        |         r0 = r5;
    0x00001302 add r1, pc                                        |         r1 = 0x2b9a;
    0x00001304 blx 0xd60                                         |         r0 = fcn_00000d60 ();
    0x00001308 cmp r0, 0                                         |         
                                                                 |         if (r0 == 0) {
    0x0000130a beq.w 0x1694                                      |             goto label_25;
                                                                 |         }
    0x0000130e ldr.w r1, [pc, 0x588]                             |         
    0x00001312 mov r0, r5                                        |         r0 = r5;
    0x00001314 add r1, pc                                        |         r1 = 0x2bb2;
    0x00001316 blx 0xd60                                         |         r0 = fcn_00000d60 ();
    0x0000131a cmp r0, 0                                         |         
                                                                 |         if (r0 == 0) {
    0x0000131c beq.w 0x16a0                                      |             goto label_26;
                                                                 |         }
    0x00001320 ldr.w r1, [pc, 0x578]                             |         
    0x00001324 mov r0, r5                                        |         r0 = r5;
    0x00001326 add r1, pc                                        |         r1 = 0x2bc6;
    0x00001328 blx 0xd60                                         |         r0 = fcn_00000d60 ();
    0x0000132c cmp r0, 0                                         |         
                                                                 |         if (r0 == 0) {
    0x0000132e beq.w 0x16f2                                      |             goto label_27;
                                                                 |         }
    0x00001332 ldr.w r1, [pc, 0x56c]                             |         
    0x00001336 mov r0, r5                                        |         r0 = r5;
    0x00001338 add r1, pc                                        |         r1 = 0x2bde;
    0x0000133a blx 0xd60                                         |         r0 = fcn_00000d60 ();
    0x0000133e cmp r0, 0                                         |         
                                                                 |         if (r0 == 0) {
    0x00001340 beq.w 0x1728                                      |             goto label_28;
                                                                 |         }
    0x00001344 ldr.w r1, [pc, 0x55c]                             |         
    0x00001348 mov r0, r5                                        |         r0 = r5;
    0x0000134a add r1, pc                                        |         r1 = 0x2bf2;
    0x0000134c blx 0xd60                                         |         r0 = fcn_00000d60 ();
    0x00001350 cmp r0, 0                                         |         
                                                                 |         if (r0 != 0) {
    0x00001352 bne.w 0x1716                                      |             goto label_29;
                                                                 |         }
    0x00001356 mov r0, r4                                        |         r0 = r4;
    0x00001358 blx 0xccc                                         |         sd_bus_message_enter_container ();
    0x0000135c str.w r0, [r8, 0x18]                              |         __asm ("str.w r0, [r8, 0x18]");
                                                                 | label_0:
    0x00001360 ldr r0, [sp, 0x28]                                |         r0 = var_28h;
    0x00001362 blx 0xc40                                         |         fcn_00000c40 ();
    0x00001366 movs r3, 0                                        |         r3 = 0;
    0x00001368 ldr r0, [sp, 0x28]                                |         r0 = var_28h;
    0x0000136a mov r2, r6                                        |         r2 = r6;
    0x0000136c movs r1, 0x65                                     |         r1 = 0x65;
    0x0000136e strd r3, r3, [sp, 0x30]                           |         __asm ("strd r3, r3, [stream]");
    0x00001372 blx 0xcd8                                         |         r0 = sd_id128_get_machine_app_specific ();
    0x00001376 cmp r0, 0                                         |         
                                                                 |         if (r0 < 0) {
    0x00001378 blt.w 0x17a8                                      |             goto label_30;
                                                                 |         }
    0x0000137c ldr r0, [sp, 0x28]                                |         r0 = var_28h;
                                                                 |         if (r0 == 0) {
    0x0000137e beq.w 0x17dc                                      |             goto label_31;
                                                                 |         }
    0x00001382 mov r3, r7                                        |         r3 = r7;
    0x00001384 add r2, sp, 0x30                                  |         r2 += nitems;
    0x00001386 mov r1, r6                                        |         r1 = r6;
    0x00001388 blx 0xcb4                                         |         r0 = fwrite (r0, r1, r2, r3);
    0x0000138c cmp r0, 0                                         |         
                                                                 |         if (r0 < 0) {
    0x0000138e blt.w 0x181e                                      |             goto label_32;
                                                                 |         }
    0x00001392 ldr r5, [sp, 0x30]                                |         r5 = nitems;
    0x00001394 mov r1, sl                                        |         r1 = sl;
    0x00001396 mov r0, r5                                        |         r0 = r5;
    0x00001398 blx 0xd60                                         |         fcn_00000d60 ();
    0x0000139c ldr r4, [sp, 0x34]                                |         r4 = stream;
    0x0000139e cmp r0, 0                                         |         
    0x000013a0 bne 0x12ee                                        |         
                                                                 |     }
    0x000013a2 mov r0, r4                                        |     r0 = r4;
    0x000013a4 blx 0xccc                                         |     sd_bus_message_enter_container ();
    0x000013a8 str.w r0, [r8, 4]                                 |     __asm ("str.w r0, [r8, 4]");
    0x000013ac b 0x1360                                          |     goto label_0;
                                                                 |     do {
    0x000013ae ldr.w r2, [pc, 0x4f8]                             |         
    0x000013b2 movs r1, 1                                        |         r1 = 1;
    0x000013b4 ldr r3, [sp, 0x4c]                                |         r3 = var_4ch;
    0x000013b6 movs r0, 3                                        |         r0 = 3;
    0x000013b8 add r2, pc                                        |         r2 = 0x2c66;
    0x000013ba blx 0xca8                                         |         sd_bus_message_read ();
    0x000013be movs r3, 0                                        |         r3 = 0;
    0x000013c0 mov r0, r5                                        |         r0 = r5;
    0x000013c2 str r3, [sp, 0x14]                                |         var_14h = r3;
    0x000013c4 mov r5, r3                                        |         r5 = r3;
    0x000013c6 blx 0xd2c                                         |         fcn_00000d2c ();
    0x000013ca ldr r7, [sp, 0x2c]                                |         r7 = var_2ch;
    0x000013cc mov fp, r5                                        |         
                                                                 | label_17:
    0x000013ce ldr r0, [sp, 0x14]                                |         r0 = var_14h;
    0x000013d0 blx 0xc1c                                         |         fcn_00000c1c ();
    0x000013d4 mov r0, fp                                        |         r0 = fp;
    0x000013d6 blx 0xc1c                                         |         fcn_00000c1c ();
                                                                 |         if (r7 != 0) {
    0x000013da cbz r7, 0x13e2                                    |             
    0x000013dc mov r0, r7                                        |             r0 = r7;
    0x000013de blx 0xc34                                         |             fcn_00000c34 ();
                                                                 |         }
                                                                 | label_11:
    0x000013e2 ldr r3, [r4]                                      |         r3 = *(r4);
    0x000013e4 cmp r3, 0                                         |         
                                                                 |         if (r3 == 0) {
    0x000013e6 beq.w 0x15cc                                      |             goto label_33;
                                                                 |         }
                                                                 | label_2:
    0x000013ea ldr r3, [r4, 4]                                   |         r3 = *((r4 + 4));
    0x000013ec cmp r3, 0                                         |         
                                                                 |         if (r3 == 0) {
    0x000013ee beq.w 0x15de                                      |             goto label_34;
                                                                 |         }
                                                                 | label_3:
    0x000013f2 ldr r3, [r4, 8]                                   |         r3 = *((r4 + 8));
    0x000013f4 cmp r3, 0                                         |         
                                                                 |         if (r3 == 0) {
    0x000013f6 beq.w 0x15f0                                      |             goto label_35;
                                                                 |         }
                                                                 | label_4:
    0x000013fa ldr r3, [r4, 0xc]                                 |         r3 = *((r4 + 0xc));
    0x000013fc cmp r3, 0                                         |         
                                                                 |         if (r3 == 0) {
    0x000013fe beq.w 0x1602                                      |             goto label_36;
                                                                 |         }
                                                                 | label_5:
    0x00001402 ldr r3, [r4, 0x10]                                |         r3 = *((r4 + 0x10));
    0x00001404 cmp r3, 0                                         |         
                                                                 |         if (r3 == 0) {
    0x00001406 beq.w 0x1614                                      |             goto label_37;
                                                                 |         }
                                                                 | label_6:
    0x0000140a ldr r3, [r4, 0x14]                                |         r3 = *((r4 + 0x14));
    0x0000140c cmp r3, 0                                         |         
                                                                 |         if (r3 == 0) {
    0x0000140e beq.w 0x1626                                      |             goto label_38;
                                                                 |         }
                                                                 | label_7:
    0x00001412 ldr r3, [r4, 0x18]                                |         r3 = *((r4 + 0x18));
    0x00001414 cmp r3, 0                                         |         
                                                                 |         if (r3 == 0) {
    0x00001416 beq.w 0x1638                                      |             goto label_39;
                                                                 |         }
                                                                 | label_8:
    0x0000141a ldr r3, [r4, 0x1c]                                |         r3 = *((r4 + 0x1c));
    0x0000141c cmp r3, 0                                         |         
                                                                 |         if (r3 == 0) {
    0x0000141e beq.w 0x164a                                      |             goto label_40;
                                                                 |         }
                                                                 | label_9:
    0x00001422 ldr r0, [sp, 0x24]                                |         r0 = var_24h;
                                                                 |         if (r0 != 0) {
    0x00001424 cbz r0, 0x142a                                    |             
    0x00001426 blx 0xc98                                         |             fcn_00000c98 ();
                                                                 |         }
    0x0000142a mov r0, sb                                        |         r0 = sb;
    0x0000142c blx 0xd2c                                         |         fcn_00000d2c ();
    0x00001430 ldr.w r2, [pc, 0x478]                             |         
    0x00001434 ldr.w r3, [pc, 0x43c]                             |         r3 = *(0x1874);
    0x00001438 add r2, pc                                        |         r2 = 0x2ce8;
    0x0000143a ldr r3, [r2, r3]                                  |         r3 = *(0x2ce8);
    0x0000143c ldr r2, [r3]                                      |         r2 = *(0x2ce8);
    0x0000143e ldr r3, [sp, 0x64]                                |         r3 = var_64h;
    0x00001440 eors r2, r3                                       |         r2 ^= r3;
    0x00001442 mov.w r3, 0                                       |         r3 = 0;
                                                                 |         if (r2 != r3) {
    0x00001446 bne.w 0x186c                                      |             goto label_41;
                                                                 |         }
    0x0000144a add sp, 0x6c                                      |         
    0x0000144c pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |         
                                                                 | label_23:
    0x00001450 rsbs r0, r0, 0                                    |         r0 -= ;
    0x00001452 blx 0xb94                                         |         strerror (r0);
    0x00001456 ldr.w r2, [pc, 0x458]                             |         r2 = sym.imp.sd_bus_message_unref;
    0x0000145a mov r3, r0                                        |         r3 = r0;
    0x0000145c movs r1, 1                                        |         r1 = 1;
    0x0000145e movs r0, 3                                        |         r0 = 3;
    0x00001460 add r2, pc                                        |         r2 += pc;
    0x00001462 blx 0xca8                                         |         sd_bus_message_read ();
                                                                 | label_14:
    0x00001466 add r7, sp, 0x34                                  |         r7 += stream;
                                                                 | label_13:
    0x00001468 ldr r0, [sp, 0x28]                                |         r0 = var_28h;
                                                                 |         if (r0 != 0) {
    0x0000146a cbz r0, 0x1470                                    |             
    0x0000146c blx 0xc34                                         |             fcn_00000c34 ();
                                                                 |         }
    0x00001470 ldr r0, [sp, 0x2c]                                |         r0 = var_2ch;
                                                                 |         if (r0 != 0) {
    0x00001472 cbz r0, 0x1478                                    |             
    0x00001474 blx 0xc34                                         |             fcn_00000c34 ();
                                                                 |         }
    0x00001478 ldr.w r3, [pc, 0x438]                             |         r3 = *(0x000018b4);
    0x0000147c add r5, sp, 0x54                                  |         r5 += var_54h;
    0x0000147e ldr.w r2, [pc, 0x438]                             |         
    0x00001482 mov.w sl, 0                                       |         sl = 0;
    0x00001486 ldr.w ip, [pc, 0x434]                             |         
    0x0000148a add r3, pc                                        |         r3 += pc;
    0x0000148c ldr r6, [sp, 0x24]                                |         r6 = var_24h;
    0x0000148e add r2, pc                                        |         r2 = 0x2d4c;
    0x00001490 adds r3, 0x20                                     |         r3 += 0x20;
    0x00001492 str r2, [sp, 4]                                   |         var_4h_2 = r2;
    0x00001494 add ip, pc                                        |         ip = 0x2d56;
    0x00001496 ldm r3, {r0, r1, r2, r3}                          |         r0 = *(r3);
                                                                 |         r1 = *((r3 + 4));
                                                                 |         r2 = *((r3 + 8));
                                                                 |         r3 = *((r3 + 12));
    0x00001498 str.w ip, [sp]                                    |         __asm ("str.w ip, [sp]");
    0x0000149c vmov.i32 d16, 0                                   |         __asm ("vmov.i32 d16, 0");
    0x000014a0 stm.w r5, {r0, r1, r2, r3}                        |         *(r5) = r0;
                                                                 |         *((r5 + 4)) = r1;
                                                                 |         *((r5 + 8)) = r2;
                                                                 |         *((r5 + 12)) = r3;
    0x000014a4 mov r2, ip                                        |         r2 = ip;
    0x000014a6 ldr.w r3, [pc, 0x418]                             |         
    0x000014aa mov r1, r7                                        |         r1 = r7;
    0x000014ac mov r0, r6                                        |         r0 = r6;
    0x000014ae vstr d16, [sp, 0x48]                              |         __asm ("vstr d16, [sp, 0x48]");
    0x000014b2 add r3, pc                                        |         r3 = 0x2d78;
    0x000014b4 strd sl, sl, [sp, 0x28]                           |         __asm ("strd sl, sl, [var_2ch]");
    0x000014b8 str.w sl, [sp, 0x50]                              |         __asm ("str.w sl, [var_50h]");
    0x000014bc str.w sl, [sp, 0x34]                              |         __asm ("str.w sl, [stream]");
    0x000014c0 blx 0xd20                                         |         r0 = sd_bus_error_free ();
    0x000014c4 cmp r0, 0                                         |         
                                                                 |         if (r0 < 0) {
    0x000014c6 blt.w 0x16ac                                      |             goto label_42;
                                                                 |         }
    0x000014ca ldr r0, [sp, 0x34]                                |         r0 = stream;
    0x000014cc mov r1, r5                                        |         r1 = r5;
    0x000014ce blx 0xd14                                         |         r0 = sd_bus_message_new_method_call ();
    0x000014d2 cmp r0, 0                                         |         
                                                                 |         if (r0 < 0) {
    0x000014d4 blt.w 0x17e8                                      |             goto label_43;
                                                                 |         }
    0x000014d8 ldr r1, [sp, 0x34]                                |         r1 = stream;
    0x000014da add.w fp, sp, 0x28                                |         
    0x000014de add r5, sp, 0x48                                  |         r5 += var_48h;
    0x000014e0 movs r3, 0                                        |         r3 = 0;
    0x000014e2 mov r0, r6                                        |         r0 = r6;
    0x000014e4 movs r2, 0                                        |         r2 = 0;
    0x000014e6 str.w fp, [sp, 4]                                 |         __asm ("str.w fp, [var_4h_2]");
    0x000014ea str r5, [sp]                                      |         *(sp) = r5;
    0x000014ec str r1, [sp, 0x2c]                                |         var_2ch = r1;
    0x000014ee str r1, [sp, 0x14]                                |         var_14h = r1;
    0x000014f0 blx 0xc00                                         |         r0 = sd_bus_call ();
    0x000014f4 adds r3, r0, 4                                    |         r3 = r0 + 4;
    0x000014f6 ldr r1, [sp, 0x14]                                |         r1 = var_14h;
                                                                 |         if (r3 == r0) {
    0x000014f8 beq.w 0x1760                                      |             goto label_44;
                                                                 |         }
                                                                 | label_16:
    0x000014fc cmp r0, 0                                         |         
    0x000014fe blt.w 0x13ae                                      |         
                                                                 |     } while (r0 < 0);
    0x00001502 ldr r2, [pc, 0x3c0]                               |     
    0x00001504 movs r1, 0x61                                     |     r1 = 0x61;
    0x00001506 ldr r0, [sp, 0x28]                                |     r0 = var_28h;
    0x00001508 add r2, pc                                        |     r2 = 0x2dd2;
    0x0000150a blx 0xcd8                                         |     r0 = sd_id128_get_machine_app_specific ();
    0x0000150e cmp r0, 0                                         |     
                                                                 |     if (r0 < 0) {
    0x00001510 blt.w 0x183a                                      |         goto label_45;
                                                                 |     }
    0x00001514 movs r3, 0                                        |     r3 = 0;
    0x00001516 ldr.w r8, [pc, 0x3b0]                             |     
    0x0000151a mov fp, r3                                        |     
    0x0000151c str r3, [sp, 0x14]                                |     var_14h = r3;
    0x0000151e ldr r3, [pc, 0x3ac]                               |     
    0x00001520 ldr.w sl, [pc, 0x3ac]                             |     sl = sym.imp.sd_bus_message_new_method_call;
    0x00001524 add r8, pc                                        |     r8 = 0x2df2;
    0x00001526 add r3, pc                                        |     r3 = 0x2df8;
    0x00001528 add sl, pc                                        |     sl += pc;
    0x0000152a strd r3, sb, [sp, 0x18]                           |     __asm ("strd r3, sb, [var_1ch]");
    0x0000152e b 0x154a                                          |     
                                                                 |     while (r0 == 0) {
    0x00001530 ldr r1, [pc, 0x3a0]                               |         
    0x00001532 mov r0, r6                                        |         r0 = r6;
    0x00001534 add r1, pc                                        |         r1 = 0x2e0c;
    0x00001536 blx 0xd60                                         |         r0 = fcn_00000d60 ();
    0x0000153a cmp r0, 0                                         |         
                                                                 |         if (r0 != 0) {
    0x0000153c bne.w 0x1666                                      |             goto label_46;
                                                                 |         }
    0x00001540 movs r3, 1                                        |         r3 = 1;
    0x00001542 str r3, [r4, 0x24]                                |         *((r4 + 0x24)) = r3;
                                                                 | label_1:
    0x00001544 ldr r0, [sp, 0x28]                                |         r0 = var_28h;
    0x00001546 blx 0xc40                                         |         fcn_00000c40 ();
    0x0000154a movs r3, 0                                        |         r3 = 0;
    0x0000154c ldr r0, [sp, 0x28]                                |         r0 = var_28h;
    0x0000154e mov r2, r8                                        |         r2 = r8;
    0x00001550 movs r1, 0x65                                     |         r1 = 0x65;
    0x00001552 strd r3, r3, [sp, 0x30]                           |         __asm ("strd r3, r3, [stream]");
    0x00001556 blx 0xcd8                                         |         r0 = sd_id128_get_machine_app_specific ();
    0x0000155a subs r5, r0, 0                                    |         r5 = r0 - 0;
                                                                 |         if (r5 < r0) {
    0x0000155c blt.w 0x178c                                      |             goto label_47;
                                                                 |         }
    0x00001560 ldr r0, [sp, 0x28]                                |         r0 = var_28h;
                                                                 |         if (r5 == r0) {
    0x00001562 beq.w 0x17c4                                      |             goto label_48;
                                                                 |         }
    0x00001566 mov r3, r7                                        |         r3 = r7;
    0x00001568 add r2, sp, 0x30                                  |         r2 += nitems;
    0x0000156a mov r1, r8                                        |         r1 = r8;
    0x0000156c blx 0xcb4                                         |         r0 = fwrite (r0, r1, r2, r3);
    0x00001570 cmp r0, 0                                         |         
                                                                 |         if (r0 < 0) {
    0x00001572 blt.w 0x1804                                      |             goto label_49;
                                                                 |         }
    0x00001576 ldr r5, [sp, 0x30]                                |         r5 = nitems;
    0x00001578 mov r1, sl                                        |         r1 = sl;
    0x0000157a mov r0, r5                                        |         r0 = r5;
    0x0000157c blx 0xd60                                         |         fcn_00000d60 ();
    0x00001580 ldr r6, [sp, 0x34]                                |         r6 = stream;
    0x00001582 mov sb, r0                                        |         sb = r0;
    0x00001584 cmp r0, 0                                         |         
    0x00001586 beq 0x1530                                        |         
                                                                 |     }
    0x00001588 ldr r1, [sp, 0x18]                                |     r1 = var_18h;
    0x0000158a mov r0, r5                                        |     r0 = r5;
    0x0000158c blx 0xd60                                         |     r0 = fcn_00000d60 ();
    0x00001590 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00001592 beq 0x168a                                        |         goto label_50;
                                                                 |     }
    0x00001594 ldr r1, [pc, 0x340]                               |     
    0x00001596 mov r0, r5                                        |     r0 = r5;
    0x00001598 add r1, pc                                        |     r1 = 0x2e74;
    0x0000159a blx 0xd60                                         |     r0 = fcn_00000d60 ();
    0x0000159e cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x000015a0 bne 0x1678                                        |         goto label_51;
                                                                 |     }
    0x000015a2 mov r0, r6                                        |     r0 = r6;
    0x000015a4 blx 0xccc                                         |     sd_bus_message_enter_container ();
    0x000015a8 str r0, [sp, 0x14]                                |     var_14h = r0;
    0x000015aa b 0x1544                                          |     goto label_1;
                                                                 | label_18:
    0x000015ac rsbs r0, r0, 0                                    |     r0 -= ;
    0x000015ae add.w sb, sp, 0x38                                |     sb += var_38h;
    0x000015b2 blx 0xb94                                         |     strerror (r0);
    0x000015b6 ldr r2, [pc, 0x324]                               |     
    0x000015b8 mov r3, r0                                        |     r3 = r0;
    0x000015ba movs r1, 1                                        |     r1 = 1;
    0x000015bc movs r0, 3                                        |     r0 = 3;
    0x000015be add r2, pc                                        |     r2 = 0x2ea0;
    0x000015c0 blx 0xca8                                         |     sd_bus_message_read ();
    0x000015c4 ldr r3, [r4]                                      |     r3 = *(r4);
    0x000015c6 cmp r3, 0                                         |     
                                                                 |     if (r3 != 0) {
    0x000015c8 bne.w 0x13ea                                      |         goto label_2;
                                                                 |     }
                                                                 | label_33:
    0x000015cc ldr r0, [pc, 0x310]                               |     
    0x000015ce add r0, pc                                        |     r0 = 0x2eb2;
    0x000015d0 blx 0xccc                                         |     sd_bus_message_enter_container ();
    0x000015d4 ldr r3, [r4, 4]                                   |     r3 = *((r4 + 4));
    0x000015d6 str r0, [r4]                                      |     *(r4) = r0;
    0x000015d8 cmp r3, 0                                         |     
                                                                 |     if (r3 != 0) {
    0x000015da bne.w 0x13f2                                      |         goto label_3;
                                                                 |     }
                                                                 | label_34:
    0x000015de ldr r0, [pc, 0x304]                               |     
    0x000015e0 add r0, pc                                        |     r0 = 0x2eca;
    0x000015e2 blx 0xccc                                         |     sd_bus_message_enter_container ();
    0x000015e6 ldr r3, [r4, 8]                                   |     r3 = *((r4 + 8));
    0x000015e8 str r0, [r4, 4]                                   |     *((r4 + 4)) = r0;
    0x000015ea cmp r3, 0                                         |     
                                                                 |     if (r3 != 0) {
    0x000015ec bne.w 0x13fa                                      |         goto label_4;
                                                                 |     }
                                                                 | label_35:
    0x000015f0 ldr r0, [pc, 0x2f4]                               |     
    0x000015f2 add r0, pc                                        |     r0 = 0x2ede;
    0x000015f4 blx 0xccc                                         |     sd_bus_message_enter_container ();
    0x000015f8 ldr r3, [r4, 0xc]                                 |     r3 = *((r4 + 0xc));
    0x000015fa str r0, [r4, 8]                                   |     *((r4 + 8)) = r0;
    0x000015fc cmp r3, 0                                         |     
                                                                 |     if (r3 != 0) {
    0x000015fe bne.w 0x1402                                      |         goto label_5;
                                                                 |     }
                                                                 | label_36:
    0x00001602 ldr r0, [pc, 0x2e8]                               |     
    0x00001604 add r0, pc                                        |     r0 = 0x2ef6;
    0x00001606 blx 0xccc                                         |     sd_bus_message_enter_container ();
    0x0000160a ldr r3, [r4, 0x10]                                |     r3 = *((r4 + 0x10));
    0x0000160c str r0, [r4, 0xc]                                 |     *((r4 + 0xc)) = r0;
    0x0000160e cmp r3, 0                                         |     
                                                                 |     if (r3 != 0) {
    0x00001610 bne.w 0x140a                                      |         goto label_6;
                                                                 |     }
                                                                 | label_37:
    0x00001614 ldr r0, [pc, 0x2d8]                               |     
    0x00001616 add r0, pc                                        |     r0 = 0x2f0a;
    0x00001618 blx 0xccc                                         |     sd_bus_message_enter_container ();
    0x0000161c ldr r3, [r4, 0x14]                                |     r3 = *((r4 + 0x14));
    0x0000161e str r0, [r4, 0x10]                                |     *((r4 + 0x10)) = r0;
    0x00001620 cmp r3, 0                                         |     
                                                                 |     if (r3 != 0) {
    0x00001622 bne.w 0x1412                                      |         goto label_7;
                                                                 |     }
                                                                 | label_38:
    0x00001626 ldr r0, [pc, 0x2cc]                               |     
    0x00001628 add r0, pc                                        |     r0 = 0x2f22;
    0x0000162a blx 0xccc                                         |     sd_bus_message_enter_container ();
    0x0000162e ldr r3, [r4, 0x18]                                |     r3 = *((r4 + 0x18));
    0x00001630 str r0, [r4, 0x14]                                |     *((r4 + 0x14)) = r0;
    0x00001632 cmp r3, 0                                         |     
                                                                 |     if (r3 != 0) {
    0x00001634 bne.w 0x141a                                      |         goto label_8;
                                                                 |     }
                                                                 | label_39:
    0x00001638 ldr r0, [pc, 0x2bc]                               |     
    0x0000163a add r0, pc                                        |     r0 = 0x2f36;
    0x0000163c blx 0xccc                                         |     sd_bus_message_enter_container ();
    0x00001640 ldr r3, [r4, 0x1c]                                |     r3 = *((r4 + 0x1c));
    0x00001642 str r0, [r4, 0x18]                                |     *((r4 + 0x18)) = r0;
    0x00001644 cmp r3, 0                                         |     
                                                                 |     if (r3 != 0) {
    0x00001646 bne.w 0x1422                                      |         goto label_9;
                                                                 |     }
                                                                 | label_40:
    0x0000164a ldr r0, [pc, 0x2b0]                               |     
    0x0000164c add r0, pc                                        |     r0 = 0x2f4e;
    0x0000164e blx 0xccc                                         |     sd_bus_message_enter_container ();
    0x00001652 str r0, [r4, 0x1c]                                |     *((r4 + 0x1c)) = r0;
    0x00001654 b 0x1422                                          |     goto label_9;
                                                                 | label_20:
    0x00001656 ldr r2, [pc, 0x2a8]                               |     
    0x00001658 movs r1, 1                                        |     r1 = 1;
    0x0000165a ldr r3, [sp, 0x3c]                                |     r3 = var_3ch;
    0x0000165c movs r0, 3                                        |     r0 = 3;
    0x0000165e add r2, pc                                        |     r2 = 0x2f64;
    0x00001660 blx 0xca8                                         |     sd_bus_message_read ();
    0x00001664 b 0x1276                                          |     goto label_10;
                                                                 | label_46:
    0x00001666 str.w sb, [r4, 0x24]                              |     __asm ("str.w sb, [r4, 0x24]");
    0x0000166a b 0x1544                                          |     goto label_1;
                                                                 | label_24:
    0x0000166c mov r0, r4                                        |     r0 = r4;
    0x0000166e blx 0xccc                                         |     sd_bus_message_enter_container ();
    0x00001672 str.w r0, [r8]                                    |     __asm ("str.w r0, [r8]");
    0x00001676 b 0x1360                                          |     goto label_0;
                                                                 | label_51:
    0x00001678 ldr r2, [pc, 0x288]                               |     
    0x0000167a mov r3, r5                                        |     r3 = r5;
    0x0000167c movs r1, 1                                        |     r1 = 1;
    0x0000167e movs r0, 4                                        |     r0 = 4;
    0x00001680 str r6, [sp]                                      |     *(sp) = r6;
    0x00001682 add r2, pc                                        |     r2 = 0x2f8a;
    0x00001684 blx 0xca8                                         |     sd_bus_message_read ();
    0x00001688 b 0x1544                                          |     goto label_1;
                                                                 | label_50:
    0x0000168a mov r0, r6                                        |     r0 = r6;
    0x0000168c blx 0xccc                                         |     r0 = sd_bus_message_enter_container ();
    0x00001690 mov fp, r0                                        |     
    0x00001692 b 0x1544                                          |     goto label_1;
                                                                 | label_25:
    0x00001694 mov r0, r4                                        |     r0 = r4;
    0x00001696 blx 0xccc                                         |     sd_bus_message_enter_container ();
    0x0000169a str.w r0, [r8, 8]                                 |     __asm ("str.w r0, [r8, 8]");
    0x0000169e b 0x1360                                          |     goto label_0;
                                                                 | label_26:
    0x000016a0 mov r0, r4                                        |     r0 = r4;
    0x000016a2 blx 0xccc                                         |     sd_bus_message_enter_container ();
    0x000016a6 str.w r0, [r8, 0xc]                               |     __asm ("str.w r0, [r8, 0xc]");
    0x000016aa b 0x1360                                          |     goto label_0;
                                                                 | label_42:
    0x000016ac rsbs r0, r0, 0                                    |     r0 -= ;
    0x000016ae blx 0xb94                                         |     strerror (r0);
    0x000016b2 ldr r2, [pc, 0x254]                               |     
    0x000016b4 mov r3, r0                                        |     r3 = r0;
    0x000016b6 movs r1, 1                                        |     r1 = 1;
    0x000016b8 movs r0, 3                                        |     r0 = 3;
    0x000016ba add r2, pc                                        |     r2 = 0x2fc8;
    0x000016bc blx 0xca8                                         |     sd_bus_message_read ();
    0x000016c0 b 0x13e2                                          |     goto label_11;
                                                                 | label_19:
    0x000016c2 mov r0, sb                                        |     r0 = sb;
    0x000016c4 blx 0xd2c                                         |     fcn_00000d2c ();
    0x000016c8 ldr r3, [pc, 0x240]                               |     
    0x000016ca movs r1, 1                                        |     r1 = 1;
    0x000016cc ldr r2, [pc, 0x240]                               |     
    0x000016ce movs r0, 7                                        |     r0 = 7;
    0x000016d0 add r3, pc                                        |     r3 = 0x2fe0;
    0x000016d2 add r2, pc                                        |     r2 = 0x2fe6;
    0x000016d4 blx 0xca8                                         |     sd_bus_message_read ();
    0x000016d8 ldr r0, [sp, 0x24]                                |     r0 = var_24h;
    0x000016da mov r2, r7                                        |     r2 = r7;
    0x000016dc mov r3, r6                                        |     r3 = r6;
    0x000016de mov r1, r6                                        |     r1 = r6;
    0x000016e0 str.w sl, [sp, 8]                                 |     __asm ("str.w sl, [var_8h]");
    0x000016e4 str.w r8, [sp]                                    |     __asm ("str.w r8, [sp]");
    0x000016e8 str.w sb, [sp, 4]                                 |     __asm ("str.w sb, [var_4h_2]");
    0x000016ec blx 0xbf4                                         |     sd_bus_get_property_string ();
    0x000016f0 b 0x1268                                          |     goto label_12;
                                                                 | label_27:
    0x000016f2 mov r0, r4                                        |     r0 = r4;
    0x000016f4 blx 0xccc                                         |     sd_bus_message_enter_container ();
    0x000016f8 str.w r0, [r8, 0x10]                              |     __asm ("str.w r0, [r8, 0x10]");
    0x000016fc b 0x1360                                          |     goto label_0;
                                                                 | label_22:
    0x000016fe ldr r2, [pc, 0x214]                               |     
    0x00001700 movs r1, 1                                        |     r1 = 1;
    0x00001702 ldr r3, [sp, 0x4c]                                |     r3 = var_4ch;
    0x00001704 movs r0, 3                                        |     r0 = 3;
    0x00001706 add r7, sp, 0x34                                  |     r7 += stream;
    0x00001708 add r2, pc                                        |     r2 = 0x3022;
    0x0000170a blx 0xca8                                         |     sd_bus_message_read ();
    0x0000170e mov r0, r5                                        |     r0 = r5;
    0x00001710 blx 0xd2c                                         |     fcn_00000d2c ();
    0x00001714 b 0x1468                                          |     goto label_13;
                                                                 | label_29:
    0x00001716 ldr r2, [pc, 0x200]                               |     
    0x00001718 mov r3, r5                                        |     r3 = r5;
    0x0000171a movs r1, 1                                        |     r1 = 1;
    0x0000171c movs r0, 4                                        |     r0 = 4;
    0x0000171e str r4, [sp]                                      |     *(sp) = r4;
    0x00001720 add r2, pc                                        |     r2 = 0x303e;
    0x00001722 blx 0xca8                                         |     sd_bus_message_read ();
    0x00001726 b 0x1360                                          |     goto label_0;
                                                                 | label_28:
    0x00001728 mov r0, r4                                        |     r0 = r4;
    0x0000172a blx 0xccc                                         |     sd_bus_message_enter_container ();
    0x0000172e str.w r0, [r8, 0x14]                              |     __asm ("str.w r0, [r8, 0x14]");
    0x00001732 b 0x1360                                          |     goto label_0;
                                                                 | label_21:
    0x00001734 mov r0, sl                                        |     r0 = sl;
    0x00001736 blx 0xc34                                         |     fcn_00000c34 ();
    0x0000173a mov r0, r5                                        |     r0 = r5;
    0x0000173c blx 0xd2c                                         |     fcn_00000d2c ();
    0x00001740 mov r1, r8                                        |     r1 = r8;
    0x00001742 mov r0, r6                                        |     r0 = r6;
    0x00001744 bl 0x10e0                                         |     r0 = fcn_000010e0 (r0, r1);
    0x00001748 cmp r0, 0                                         |     
                                                                 |     if (r0 < 0) {
    0x0000174a blt.w 0x1466                                      |         goto label_14;
                                                                 |     }
    0x0000174e ldr r1, [sp, 0x2c]                                |     r1 = var_2ch;
    0x00001750 mov r0, r6                                        |     r0 = r6;
    0x00001752 movs r2, 0                                        |     r2 = 0;
    0x00001754 movs r3, 0                                        |     r3 = 0;
    0x00001756 str r7, [sp, 4]                                   |     var_4h_2 = r7;
    0x00001758 str r5, [sp]                                      |     *(sp) = r5;
    0x0000175a blx 0xc00                                         |     sd_bus_call ();
    0x0000175e b 0x12b8                                          |     goto label_15;
                                                                 | label_44:
    0x00001760 mov r0, r1                                        |     r0 = r1;
    0x00001762 blx 0xc34                                         |     fcn_00000c34 ();
    0x00001766 mov r0, r5                                        |     r0 = r5;
    0x00001768 blx 0xd2c                                         |     fcn_00000d2c ();
    0x0000176c mov r1, r8                                        |     r1 = r8;
    0x0000176e mov r0, r6                                        |     r0 = r6;
    0x00001770 bl 0x10e0                                         |     r0 = fcn_000010e0 (r0, r1);
    0x00001774 cmp r0, 0                                         |     
                                                                 |     if (r0 < 0) {
    0x00001776 blt 0x1862                                        |         goto label_52;
                                                                 |     }
    0x00001778 ldr r1, [sp, 0x2c]                                |     r1 = var_2ch;
    0x0000177a mov r0, r6                                        |     r0 = r6;
    0x0000177c movs r2, 0                                        |     r2 = 0;
    0x0000177e movs r3, 0                                        |     r3 = 0;
    0x00001780 str.w fp, [sp, 4]                                 |     __asm ("str.w fp, [var_4h_2]");
    0x00001784 str r5, [sp]                                      |     *(sp) = r5;
    0x00001786 blx 0xc00                                         |     sd_bus_call ();
    0x0000178a b 0x14fc                                          |     goto label_16;
                                                                 | label_47:
    0x0000178c rsbs r0, r5, 0                                    |     r0 = r5 - ;
    0x0000178e ldr.w sb, [sp, 0x1c]                              |     sb = var_1ch;
    0x00001792 blx 0xb94                                         |     strerror (r0);
    0x00001796 ldr r2, [pc, 0x184]                               |     
    0x00001798 mov r3, r0                                        |     r3 = r0;
    0x0000179a movs r1, 1                                        |     r1 = 1;
    0x0000179c movs r0, 3                                        |     r0 = 3;
    0x0000179e add r2, pc                                        |     r2 = 0x30c0;
    0x000017a0 blx 0xca8                                         |     sd_bus_message_read ();
                                                                 |     do {
    0x000017a4 ldr r7, [sp, 0x2c]                                |         r7 = var_2ch;
    0x000017a6 b 0x13ce                                          |         goto label_17;
                                                                 | label_30:
    0x000017a8 rsbs r0, r0, 0                                    |         r0 -= ;
    0x000017aa mov r4, r8                                        |         r4 = r8;
    0x000017ac ldr.w r8, [sp, 0x14]                              |         r8 = var_14h;
    0x000017b0 blx 0xb94                                         |         strerror (r0);
    0x000017b4 ldr r2, [pc, 0x168]                               |         
    0x000017b6 mov r3, r0                                        |         r3 = r0;
    0x000017b8 movs r1, 1                                        |         r1 = 1;
    0x000017ba movs r0, 3                                        |         r0 = 3;
    0x000017bc add r2, pc                                        |         r2 = 0x30e0;
    0x000017be blx 0xca8                                         |         sd_bus_message_read ();
    0x000017c2 b 0x1468                                          |         goto label_13;
                                                                 | label_48:
    0x000017c4 ldr.w sb, [sp, 0x1c]                              |         sb = var_1ch;
    0x000017c8 blx 0xc40                                         |         fcn_00000c40 ();
    0x000017cc ldr r3, [r4, 0x24]                                |         r3 = *((r4 + 0x24));
    0x000017ce cmp r3, 0                                         |         
                                                                 |         if (r3 == 0) {
    0x000017d0 beq 0x1858                                        |             goto label_53;
                                                                 |         }
    0x000017d2 ldr r3, [sp, 0x14]                                |         r3 = var_14h;
    0x000017d4 ldr r7, [sp, 0x2c]                                |         r7 = var_2ch;
    0x000017d6 str r5, [sp, 0x14]                                |         var_14h = r5;
    0x000017d8 str r3, [r4, 0x20]                                |         *((r4 + 0x20)) = r3;
    0x000017da b 0x13ce                                          |         goto label_17;
                                                                 | label_31:
    0x000017dc mov r4, r8                                        |         r4 = r8;
    0x000017de ldr.w r8, [sp, 0x14]                              |         r8 = var_14h;
    0x000017e2 blx 0xc40                                         |         fcn_00000c40 ();
    0x000017e6 b 0x1468                                          |         goto label_13;
                                                                 | label_43:
    0x000017e8 rsbs r0, r0, 0                                    |         r0 -= ;
    0x000017ea blx 0xb94                                         |         strerror (r0);
    0x000017ee ldr r2, [pc, 0x134]                               |         
    0x000017f0 mov r3, r0                                        |         r3 = r0;
    0x000017f2 movs r1, 1                                        |         r1 = 1;
    0x000017f4 movs r0, 3                                        |         r0 = 3;
    0x000017f6 add r2, pc                                        |         r2 = 0x3120;
    0x000017f8 blx 0xca8                                         |         sd_bus_message_read ();
    0x000017fc ldr r0, [sp, 0x34]                                |         r0 = stream;
    0x000017fe blx 0xc34                                         |         fcn_00000c34 ();
    0x00001802 b 0x13e2                                          |         goto label_11;
                                                                 | label_49:
    0x00001804 rsbs r0, r0, 0                                    |         r0 -= ;
    0x00001806 ldr.w sb, [sp, 0x1c]                              |         sb = var_1ch;
    0x0000180a blx 0xb94                                         |         strerror (r0);
    0x0000180e ldr r2, [pc, 0x118]                               |         
    0x00001810 mov r3, r0                                        |         r3 = r0;
    0x00001812 movs r1, 1                                        |         r1 = 1;
    0x00001814 movs r0, 3                                        |         r0 = 3;
    0x00001816 add r2, pc                                        |         r2 = 0x3144;
    0x00001818 blx 0xca8                                         |         sd_bus_message_read ();
    0x0000181c b 0x17a4                                          |         
                                                                 |     } while (1);
                                                                 | label_32:
    0x0000181e rsbs r0, r0, 0                                    |     r0 -= ;
    0x00001820 mov r4, r8                                        |     r4 = r8;
    0x00001822 ldr.w r8, [sp, 0x14]                              |     r8 = var_14h;
    0x00001826 blx 0xb94                                         |     strerror (r0);
    0x0000182a ldr r2, [pc, 0x100]                               |     
    0x0000182c mov r3, r0                                        |     r3 = r0;
    0x0000182e movs r1, 1                                        |     r1 = 1;
    0x00001830 movs r0, 3                                        |     r0 = 3;
    0x00001832 add r2, pc                                        |     r2 = 0x3164;
    0x00001834 blx 0xca8                                         |     sd_bus_message_read ();
    0x00001838 b 0x1468                                          |     goto label_13;
                                                                 | label_45:
    0x0000183a rsbs r0, r0, 0                                    |     r0 -= ;
    0x0000183c blx 0xb94                                         |     strerror (r0);
    0x00001840 ldr r2, [pc, 0xec]                                |     
    0x00001842 mov r3, r0                                        |     r3 = r0;
    0x00001844 movs r1, 1                                        |     r1 = 1;
    0x00001846 movs r0, 3                                        |     r0 = 3;
    0x00001848 add r2, pc                                        |     r2 = 0x317c;
    0x0000184a blx 0xca8                                         |     sd_bus_message_read ();
    0x0000184e movs r3, 0                                        |     r3 = 0;
    0x00001850 ldr r7, [sp, 0x2c]                                |     r7 = var_2ch;
    0x00001852 mov fp, r3                                        |     
    0x00001854 str r3, [sp, 0x14]                                |     var_14h = r3;
    0x00001856 b 0x13ce                                          |     goto label_17;
                                                                 | label_53:
    0x00001858 str.w fp, [r4, 0x20]                              |     __asm ("str.w fp, [r4, 0x20]");
    0x0000185c mov fp, r3                                        |     
    0x0000185e ldr r7, [sp, 0x2c]                                |     r7 = var_2ch;
    0x00001860 b 0x13ce                                          |     goto label_17;
                                                                 | label_52:
    0x00001862 ldr r7, [sp, 0x2c]                                |     r7 = var_2ch;
    0x00001864 mov fp, sl                                        |     
    0x00001866 str.w sl, [sp, 0x14]                              |     __asm ("str.w sl, [var_14h]");
    0x0000186a b 0x13ce                                          |     goto label_17;
                                                                 | label_41:
    0x0000186c blx 0xcf0                                         |     fprintf_chk ()
    0x00001870 cmp r5, 0x26                                      |     
    0x00001872 movs r0, r0                                       |     
    0x00001874 lsls r4, r7, 2                                    |     r4 = r7 << 2;
    0x00001876 movs r0, r0                                       |     
    0x00001878 lsrs r0, r5, 0x14                                 |     r0 = r5 >> 0x14;
    0x0000187a movs r0, r0                                       |     
    0x0000187c lsrs r4, r6, 0x14                                 |     r4 = r6 >> 0x14;
    0x0000187e movs r0, r0                                       |     
    0x00001880 lsrs r0, r0, 0x15                                 |     r0 >>= 0x15;
    0x00001882 movs r0, r0                                       |     
    0x00001884 lsrs r2, r0, 0x17                                 |     r2 = r0 >> 0x17;
    0x00001886 movs r0, r0                                       |     
    0x00001888 lsrs r0, r2, 0x17                                 |     r0 = r2 >> 0x17;
    0x0000188a movs r0, r0                                       |     
    0x0000188c lsrs r6, r2, 0x18                                 |     r6 = r2 >> 0x18;
    0x0000188e movs r0, r0                                       |     
    0x00001890 lsrs r2, r4, 0x18                                 |     r2 = r4 >> 0x18;
    0x00001892 movs r0, r0                                       |     
    0x00001894 lsrs r2, r2, 0x18                                 |     r2 >>= 0x18;
    0x00001896 movs r0, r0                                       |     
    0x00001898 lsrs r0, r2, 0x18                                 |     r0 = r2 >> 0x18;
    0x0000189a movs r0, r0                                       |     
    0x0000189c lsrs r6, r0, 0x18                                 |     r6 = r0 >> 0x18;
    0x0000189e movs r0, r0                                       |     
    0x000018a0 lsrs r0, r0, 0x18                                 |     r0 >>= 0x18;
    0x000018a2 movs r0, r0                                       |     
    0x000018a4 lsrs r6, r6, 0x17                                 |     r6 >>= 0x17;
    0x000018a6 movs r0, r0                                       |     
    0x000018a8 lsrs r4, r5, 0x18                                 |     r4 = r5 >> 0x18;
    0x000018aa movs r0, r0                                       |     
    0x000018ac cmp r3, 0                                         |     
    0x000018ae movs r0, r0                                       |     
    0x000018b0 lsrs r0, r6, 0x10                                 |     r0 = r6 >> 0x10;
    0x000018b2 movs r0, r0                                       |     
    0x000018b4 cmp r3, 0x76                                      |     
    0x000018b6 movs r0, r0                                       |     
    0x000018b8 lsrs r2, r3, 0x14                                 |     r2 = r3 >> 0x14;
    0x000018ba movs r0, r0                                       |     
    0x000018bc lsrs r0, r7, 0x13                                 |     r0 = r7 >> 0x13;
    0x000018be movs r0, r0                                       |     
    0x000018c0 lsrs r6, r7, 0x12                                 |     r6 = r7 >> 0x12;
    0x000018c2 movs r0, r0                                       |     
    0x000018c4 lsrs r0, r0, 0xe                                  |     r0 >>= 0xe;
    0x000018c6 movs r0, r0                                       |     
    0x000018c8 lsrs r0, r2, 0xe                                  |     r0 = r2 >> 0xe;
    0x000018ca movs r0, r0                                       |     
    0x000018cc lsrs r2, r7, 0x14                                 |     r2 = r7 >> 0x14;
    0x000018ce movs r0, r0                                       |     
    0x000018d0 lsrs r4, r2, 0x14                                 |     r4 = r2 >> 0x14;
    0x000018d2 movs r0, r0                                       |     
    0x000018d4 lsrs r4, r4, 0x14                                 |     r4 >>= 0x14;
    0x000018d6 movs r0, r0                                       |     
    0x000018d8 lsrs r0, r3, 0x13                                 |     r0 = r3 >> 0x13;
    0x000018da movs r0, r0                                       |     
    0x000018dc lsrs r2, r1, 6                                    |     r2 = r1 >> 6;
    0x000018de movs r0, r0                                       |     
    0x000018e0 lsrs r2, r2, 0x13                                 |     r2 >>= 0x13;
    0x000018e2 movs r0, r0                                       |     
    0x000018e4 lsrs r0, r1, 0x13                                 |     r0 = r1 >> 0x13;
    0x000018e6 movs r0, r0                                       |     
    0x000018e8 lsrs r6, r7, 0x12                                 |     r6 = r7 >> 0x12;
    0x000018ea movs r0, r0                                       |     
    0x000018ec lsrs r0, r6, 8                                    |     r0 = r6 >> 8;
    0x000018ee movs r0, r0                                       |     
    0x000018f0 lsrs r6, r3, 8                                    |     r6 = r3 >> 8;
    0x000018f2 movs r0, r0                                       |     
    0x000018f4 lsrs r4, r2, 0x12                                 |     r4 = r2 >> 0x12;
    0x000018f6 movs r0, r0                                       |     
    0x000018f8 lsrs r2, r7, 7                                    |     r2 = r7 >> 7;
    0x000018fa movs r0, r0                                       |     
    0x000018fc lsrs r0, r5, 7                                    |     r0 = r5 >> 7;
    0x000018fe movs r0, r0                                       |     
    0x00001900 lsrs r2, r3, 7                                    |     r2 = r3 >> 7;
    0x00001902 movs r0, r0                                       |     
    0x00001904 lsrs r2, r7, 0xf                                  |     r2 = r7 >> 0xf;
    0x00001906 movs r0, r0                                       |     
    0x00001908 lsrs r6, r7, 0xb                                  |     r6 = r7 >> 0xb;
    0x0000190a movs r0, r0                                       |     
    0x0000190c lsrs r4, r1, 3                                    |     r4 = r1 >> 3;
    0x0000190e movs r0, r0                                       |     
    0x00001910 lsrs r6, r1, 5                                    |     r6 = r1 >> 5;
    0x00001912 movs r0, r0                                       |     
    0x00001914 lsrs r0, r3, 5                                    |     r0 = r3 >> 5;
    0x00001916 movs r0, r0                                       |     
    0x00001918 lsrs r0, r6, 8                                    |     r0 = r6 >> 8;
    0x0000191a movs r0, r0                                       |     
    0x0000191c lsrs r6, r5, 9                                    |     r6 = r5 >> 9;
    0x0000191e movs r0, r0                                       |     
    0x00001920 lsrs r4, r7, 3                                    |     r4 = r7 >> 3;
    0x00001922 movs r0, r0                                       |     
    0x00001924 lsls r6, r5, 0x1c                                 |     r6 = r5 << 0x1c;
    0x00001926 movs r0, r0                                       |     
    0x00001928 lsrs r6, r0, 3                                    |     r6 = r0 >> 3;
    0x0000192a movs r0, r0                                       |     
    0x0000192c lsrs r2, r5, 2                                    |     r2 = r5 >> 2;
    0x0000192e movs r0, r0                                       |     
    0x00001930 lsrs r0, r1, 1                                    |     r0 = r1 >> 1;
    0x00001932 movs r0, r0                                       |     
                                                                 | }

[*] Function fprintf used 5 times basic_device.so