[*] Binary protection state of riod

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


[*] Function strcat tear down of riod

    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/bin/riod @ 0x827c */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) fcn.0000827c ()                                      | void fcn_0000827c (int16_t arg_4h, int16_t arg_ch, int16_t arg_10h, uint32_t arg1) {
                                                                 |     int16_t var_0h;
                                                                 |     int16_t var_4h;
                                                                 |     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_34h;
                                                                 |     int16_t var_38h;
                                                                 |     int32_t var_0h_2;
                                                                 |     int32_t var_8h;
                                                                 |     int16_t var_44h;
                                                                 |     int32_t var_0h_3;
                                                                 |     int32_t var_8h_2;
                                                                 |     int16_t var_50h;
                                                                 |     int32_t var_30h;
                                                                 |     int32_t var_38h_2;
                                                                 |     int16_t var_10ch;
                                                                 |     int16_t var_1c8h;
                                                                 |     int32_t var_1c8h_2;
                                                                 |     int16_t var_284h;
                                                                 |     int16_t var_28ch;
                                                                 |     r0 = arg1;
    0x0000827c ldr.w r2, [pc, 0x5d8]                             |     r2 = *(0x00008858);
    0x00008280 ldr.w r3, [pc, 0x5d8]                             |     
    0x00008284 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}       |     
    0x00008288 sub.w sp, sp, 0x28c                               |     
    0x0000828c add r2, pc                                        |     r2 += pc;
    0x0000828e ldr.w r6, [pc, 0x5d0]                             |     r6 = *(0x00008860);
    0x00008290 str r0, [r2, 0x5c]                                |     *((r2 + 0x5c)) = r0;
    0x00008292 mov fp, r0                                        |     
    0x00008294 ldr r3, [r2, r3]                                  |     r3 = *((r2 + r3));
    0x00008296 add r6, pc                                        |     r6 += pc;
    0x00008298 ldr r3, [r3]                                      |     r3 = *(0x885c);
    0x0000829a str r3, [sp, 0x284]                               |     var_284h = r3;
    0x0000829c mov.w r3, 0                                       |     r3 = 0;
    0x000082a0 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x000082a2 beq.w 0x8674                                      |         goto label_8;
                                                                 |     }
                                                                 | label_2:
    0x000082a6 add r5, sp, 0x50                                  |     r5 += var_50h;
    0x000082a8 movs r7, 0                                        |     r7 = 0;
    0x000082aa mov r0, r5                                        |     r0 = r5;
    0x000082ac add r4, sp, 0x38                                  |     r4 += var_38h;
    0x000082ae blx 0x46bc                                        |     apireq_init ();
    0x000082b2 ldr.w r2, [pc, 0x5b0]                             |     r2 = *(0x8866);
    0x000082b6 add r1, sp, 0x1c8                                 |     r1 += var_1c8h;
    0x000082b8 ldr.w r3, [pc, 0x5ac]                             |     r3 = *(0x8868);
    0x000082bc mov r0, r5                                        |     r0 = r5;
    0x000082be str r1, [sp, 0x14]                                |     var_14h = r1;
    0x000082c0 strd r7, r7, [r4]                                 |     __asm ("strd r7, r7, [r4]");
    0x000082c4 str r7, [r4, 8]                                   |     var_8h = r7;
    0x000082c6 strd r7, r7, [sp, 0x1c8]                          |     __asm ("strd r7, r7, [var_1c8h]");
    0x000082ca ldr r3, [r6, r3]                                  |     r3 = *((r6 + r3));
    0x000082cc ldr r6, [r6, r2]                                  |     r6 = *((r6 + r2));
    0x000082ce mov r2, r1                                        |     r2 = r1;
    0x000082d0 mov r1, r7                                        |     r1 = r7;
    0x000082d2 strd r4, r6, [sp]                                 |     __asm ("strd r4, r6, [sp]");
    0x000082d6 blx 0x4ac8                                        |     fcn_00004ac8 ();
    0x000082da ldr.w r8, [r5, 0x30]                              |     r8 = var_30h;
    0x000082de cmp.w r8, 0                                       |     
                                                                 |     if (r8 != 0) {
    0x000082e2 bne.w 0x87f2                                      |         goto label_9;
                                                                 |     }
    0x000082e6 add r3, sp, 0x10c                                 |     r3 += var_10ch;
    0x000082e8 mov r0, r3                                        |     r0 = r3;
    0x000082ea mov r7, r3                                        |     r7 = r3;
    0x000082ec str r3, [sp, 0x10]                                |     var_10h = r3;
    0x000082ee blx 0x46bc                                        |     apireq_init ();
    0x000082f2 ldr r3, [r4, 4]                                   |     r3 = var_0h_2;
    0x000082f4 cmp r3, 0                                         |     
                                                                 |     if (r3 > 0) {
    0x000082f6 ble.w 0x843a                                      |         
    0x000082fa ldr.w r2, [pc, 0x570]                             |         
    0x000082fe mov r1, r4                                        |         r1 = r4;
    0x00008300 ldr.w r3, [pc, 0x56c]                             |         
    0x00008304 mov r0, r5                                        |         r0 = r5;
    0x00008306 add r2, pc                                        |         
    0x00008308 add r3, pc                                        |         r3 = 0x10b7c;
    0x0000830a bl 0x8154                                         |         r0 = fcn_00008154 (r0, r1, r2, r3);
    0x0000830e blx 0x4f80                                        |         g_source_set_callback ();
    0x00008310 mrc p8, 1, apsr_nzcv, c8, c15, 6                  |         __asm ("mrc p8, 1, apsr_nzcv, c8, c15, 6");
    0x00008314 movs r5, 0x60                                     |         r5 = 0x60;
    0x00008316 mov r3, r0                                        |         r3 = r0;
    0x00008318 mov r1, r4                                        |         r1 = r4;
    0x0000831a mov r0, r5                                        |         r0 = r5;
    0x0000831c add r2, pc                                        |         r2 = 0x18e98;
    0x0000831e bl 0x8154                                         |         fcn_00008154 (r0, r1, r2, r3);
    0x00008322 mov r0, r7                                        |         r0 = r7;
    0x00008324 mov r2, r6                                        |         r2 = r6;
    0x00008326 mov r1, r4                                        |         r1 = r4;
    0x00008328 bl 0x9d58                                         |         r0 = fcn_00009d58 (r0);
    0x0000832c mov r7, r0                                        |         r7 = r0;
    0x0000832e cmp r0, 0                                         |         
                                                                 |         if (r0 != 0) {
    0x00008330 bne.w 0x868c                                      |             goto label_10;
                                                                 |         }
    0x00008334 ldr r3, [sp, 0x10]                                |         r3 = var_10h;
    0x00008336 ldr.w r0, [fp, 0xc]                               |         r0 = *(arg_ch);
    0x0000833a ldr r3, [r3, 0x18]                                |         r3 = *((r3 + 0x18));
    0x0000833c str r3, [sp, 0xc]                                 |         var_ch = r3;
    0x0000833e blx 0x506c                                        |         fcn_0000506c ();
    0x00008342 blx 0x4a40                                        |         g_variant_builder_unref ();
    0x00008346 blx 0x4a1c                                        |         g_strchomp ();
    0x0000834a ldr.w r3, [fp, 0xc]                               |         r3 = *(arg_ch);
    0x0000834e mov r8, r0                                        |         r8 = r0;
                                                                 |         if (r3 != 0) {
    0x00008350 cbz r3, 0x8360                                    |             
    0x00008352 ldr.w sl, [pc, 0x524]                             |             
    0x00008356 add sl, pc                                        |             sl = 0x10bd4;
    0x00008358 mov r1, sl                                        |             r1 = sl;
    0x0000835a blx 0x5268                                        |             r0 = fcn_00005268 ();
                                                                 |             if (r0 != 0) {
    0x0000835e cbnz r0, 0x83b0                                   |                 goto label_11;
                                                                 |             }
                                                                 |         }
    0x00008360 ldr.w r3, [pc, 0x518]                             |         
    0x00008364 movs r0, 0                                        |         r0 = 0;
    0x00008366 ldr.w r2, [pc, 0x518]                             |         
    0x0000836a movs r1, 0x10                                     |         r1 = 0x10;
    0x0000836c add r3, pc                                        |         r3 = 0x10bec;
    0x0000836e add r2, pc                                        |         r2 = 0x10bf4;
    0x00008370 blx 0x4868                                        |         fcn_00004868 ();
    0x00008374 mov.w r3, -1                                      |         r3 = -1;
    0x00008378 mov r0, r8                                        |         r0 = r8;
    0x0000837a str r3, [sp, 0xc]                                 |         var_ch = r3;
    0x0000837c blx 0x4d6c                                        |         fcn_00004d6c ();
                                                                 | label_1:
    0x00008380 ldr r0, [sp, 0x10]                                |         r0 = var_10h;
    0x00008382 blx 0x48b4                                        |         g_variant_new_tuple ();
                                                                 | label_6:
    0x00008386 mov r0, r5                                        |         r0 = r5;
    0x00008388 blx 0x48b4                                        |         g_variant_new_tuple ();
    0x0000838c ldr.w r2, [pc, 0x4f4]                             |         r2 = *(0x00008884);
    0x00008390 ldr.w r3, [pc, 0x4c8]                             |         r3 = *(0x885c);
    0x00008394 add r2, pc                                        |         r2 += pc;
    0x00008396 ldr r3, [r2, r3]                                  |         r3 = *((r2 + r3));
    0x00008398 ldr r2, [r3]                                      |         r2 = *(0x885c);
    0x0000839a ldr r3, [sp, 0x284]                               |         r3 = var_284h;
    0x0000839c eors r2, r3                                       |         r2 ^= r3;
    0x0000839e mov.w r3, 0                                       |         r3 = 0;
                                                                 |         if (r2 != r3) {
    0x000083a2 bne.w 0x8854                                      |             goto label_12;
                                                                 |         }
    0x000083a6 ldr r0, [sp, 0xc]                                 |         r0 = var_ch;
    0x000083a8 add.w sp, sp, 0x28c                               |         
    0x000083ac pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |         
                                                                 | label_11:
    0x000083b0 ldr.w r0, [fp, 0xc]                               |         r0 = *(arg_ch);
    0x000083b4 bl 0xbdc4                                         |         fcn_0000bdc4 (r0);
    0x000083b8 ldr.w r2, [pc, 0x4cc]                             |         
    0x000083bc mov r1, r0                                        |         r1 = r0;
    0x000083be mov sb, r0                                        |         sb = r0;
    0x000083c0 ldr.w r0, [pc, 0x4c8]                             |         
    0x000083c4 mov r3, r7                                        |         r3 = r7;
    0x000083c6 add r2, pc                                        |         r2 = 0x10c52;
    0x000083c8 add r0, pc                                        |         r0 = 0x10c58;
    0x000083ca blx 0x4eb0                                        |         fcn_00004eb0 ();
    0x000083ce ldr.w r2, [pc, 0x4c0]                             |         
    0x000083d2 str r7, [sp, 4]                                   |         var_4h = r7;
    0x000083d4 mov r7, r0                                        |         r7 = r0;
    0x000083d6 ldr.w r1, [pc, 0x4bc]                             |         
    0x000083da add r2, pc                                        |         
    0x000083dc ldr.w r0, [pc, 0x4b8]                             |         
    0x000083e0 str r2, [sp]                                      |         *(sp) = r2;
    0x000083e2 ldr.w r2, [pc, 0x4b8]                             |         r2 = fcn.00006d40;
    0x000083e6 add r1, pc                                        |         r1 = 0x10c80;
    0x000083e8 ldr r3, [sp, 0xc]                                 |         r3 = var_ch;
    0x000083ea add r0, pc                                        |         r0 = 0x10c86;
    0x000083ec add r2, pc                                        |         r2 = 0x19060;
    0x000083ee blx 0x4eb0                                        |         fcn_00004eb0 ();
    0x000083f2 ldrd r1, r2, [fp, 0x10]                           |         __asm ("ldrd r1, r2, [arg_10h]");
    0x000083f6 mov r3, r0                                        |         r3 = r0;
    0x000083f8 str r0, [sp, 0xc]                                 |         var_ch = r0;
    0x000083fa mov r0, r7                                        |         r0 = r7;
    0x000083fc bl 0x9660                                         |         fcn_00009660 (r0, r1, r2);
    0x00008400 ldr.w r1, [fp, 4]                                 |         r1 = *(arg_4h);
    0x00008404 str r0, [sp, 0x1c8]                               |         var_1c8h = r0;
    0x00008406 bl 0xbdd8                                         |         r0 = fcn_0000bdd8 (r0, r1);
    0x0000840a cmp r0, 0                                         |         
                                                                 |         if (r0 == 0) {
    0x0000840c beq.w 0x876e                                      |             goto label_13;
                                                                 |         }
    0x00008410 ldr r3, [sp, 0x1c8]                               |         r3 = var_1c8h;
                                                                 |         if (r3 != 0) {
    0x00008412 cbz r3, 0x841a                                    |             
    0x00008414 ldr r0, [sp, 0x14]                                |             r0 = var_14h;
    0x00008416 bl 0x95f8                                         |             fcn_000095f8 (r0);
                                                                 |         }
    0x0000841a mov r0, sb                                        |         r0 = sb;
    0x0000841c blx 0x4d6c                                        |         fcn_00004d6c ();
    0x00008420 ldr r0, [sp, 0xc]                                 |         r0 = var_ch;
    0x00008422 blx 0x4d6c                                        |         fcn_00004d6c ();
    0x00008426 mov r0, r7                                        |         r0 = r7;
    0x00008428 blx 0x4d6c                                        |         fcn_00004d6c ();
    0x0000842c mov r0, r8                                        |         r0 = r8;
    0x0000842e blx 0x4d6c                                        |         fcn_00004d6c ();
    0x00008432 ldr.w r0, [fp, 4]                                 |         r0 = *(arg_4h);
    0x00008436 bl 0xac3c                                         |         fcn_0000ac3c (r0);
                                                                 |     }
    0x0000843a ldr.w r0, [fp, 0xc]                               |     r0 = *(arg_ch);
    0x0000843e blx 0x506c                                        |     fcn_0000506c ();
    0x00008442 blx 0x4a40                                        |     g_variant_builder_unref ();
    0x00008446 blx 0x4a1c                                        |     g_strchomp ();
    0x0000844a ldr.w r3, [fp, 0xc]                               |     r3 = *(arg_ch);
    0x0000844e mov r7, r0                                        |     r7 = r0;
    0x00008450 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x00008452 beq.w 0x8646                                      |         goto label_14;
                                                                 |     }
    0x00008456 ldr.w r8, [pc, 0x448]                             |     
    0x0000845a add r8, pc                                        |     r8 = 0x10d00;
    0x0000845c mov r1, r8                                        |     r1 = r8;
    0x0000845e blx 0x5268                                        |     r0 = fcn_00005268 ();
    0x00008462 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00008464 beq.w 0x8646                                      |         goto label_14;
                                                                 |     }
    0x00008468 ldr.w r0, [fp, 0xc]                               |     r0 = *(arg_ch);
    0x0000846c bl 0xbdc4                                         |     fcn_0000bdc4 (r0);
    0x00008470 ldr.w r2, [pc, 0x430]                             |     
    0x00008474 mov r1, r0                                        |     r1 = r0;
    0x00008476 mov sl, r0                                        |     sl = r0;
    0x00008478 ldr.w r0, [pc, 0x42c]                             |     
    0x0000847c movs r3, 0                                        |     r3 = 0;
    0x0000847e add r2, pc                                        |     r2 = 0x10d26;
    0x00008480 add r0, pc                                        |     r0 = 0x10d2c;
    0x00008482 blx 0x4eb0                                        |     fcn_00004eb0 ();
    0x00008486 ldr.w r2, [pc, 0x424]                             |     
    0x00008488 movs r4, 0x24                                     |     r4 = 0x24;
    0x0000848a mov sb, r0                                        |     sb = r0;
    0x0000848c ldr.w r1, [pc, 0x420]                             |     
    0x00008490 movs r3, 0                                        |     r3 = 0;
    0x00008492 ldr.w r0, [pc, 0x420]                             |     
    0x00008496 add r2, pc                                        |     r2 = 0x10d48;
    0x00008498 add r1, pc                                        |     r1 = 0x10d4c;
    0x0000849a add r0, pc                                        |     r0 = 0x10d54;
    0x0000849c blx 0x4eb0                                        |     fcn_00004eb0 ();
    0x000084a0 ldrd r1, r2, [fp, 0x10]                           |     __asm ("ldrd r1, r2, [arg_10h]");
    0x000084a2 asrs r4, r0, 8                                    |     r4 = r0 >> 8;
    0x000084a4 mov r3, r0                                        |     r3 = r0;
    0x000084a6 str r0, [sp, 0xc]                                 |     var_ch = r0;
    0x000084a8 mov r0, sb                                        |     r0 = sb;
    0x000084aa bl 0x9660                                         |     fcn_00009660 (r0, r1, r2);
    0x000084ae ldr.w r1, [fp, 4]                                 |     r1 = *(arg_4h);
    0x000084b2 str r0, [sp, 0x1c8]                               |     var_1c8h = r0;
    0x000084b4 bl 0xbdd8                                         |     r0 = fcn_0000bdd8 (r0, r1);
    0x000084b6 ldc2 p8, c2, [r0], {0}                            |     __asm ("ldc2 p8, c2, [r0], {0}");
    0x000084b8 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x000084ba beq.w 0x86a4                                      |         goto label_15;
                                                                 |     }
    0x000084be ldr r3, [sp, 0x1c8]                               |     r3 = var_1c8h;
    0x000084c0 ldrd r0, r1, [r3, 4]                              |     __asm ("ldrd r0, r1, [r3, 4]");
    0x000084c4 blx 0x4760                                        |     fcn_00004760 ();
    0x000084c8 ldr r3, [sp, 0x1c8]                               |     r3 = var_1c8h;
    0x000084ca str r0, [sp, 0x1c]                                |     var_1ch = r0;
    0x000084cc cmp r3, 0                                         |     
                                                                 |     if (r3 != 0) {
    0x000084ce bne.w 0x87ea                                      |         goto label_16;
                                                                 |     }
                                                                 | label_5:
    0x000084d2 mov r0, sl                                        |     r0 = sl;
    0x000084d4 blx 0x4d6c                                        |     fcn_00004d6c ();
    0x000084d8 mov r0, sb                                        |     r0 = sb;
    0x000084da blx 0x4d6c                                        |     fcn_00004d6c ();
    0x000084de ldr r0, [sp, 0xc]                                 |     r0 = var_ch;
    0x000084e0 blx 0x4d6c                                        |     fcn_00004d6c ();
    0x000084e4 mov r0, r7                                        |     r0 = r7;
    0x000084e6 movs r7, 0                                        |     r7 = 0;
    0x000084e8 blx 0x4d6c                                        |     fcn_00004d6c ();
    0x000084ec ldr.w r0, [fp, 4]                                 |     r0 = *(arg_4h);
    0x000084f0 bl 0xac3c                                         |     fcn_0000ac3c (r0);
    0x000084f4 ldr.w r8, [sp, 0x14]                              |     r8 = var_14h;
    0x000084f8 mov r0, r8                                        |     r0 = r8;
    0x000084fa blx 0x46bc                                        |     apireq_init ();
    0x000084fe mov r3, r6                                        |     r3 = r6;
    0x00008500 add r6, sp, 0x44                                  |     r6 += var_44h;
    0x00008502 ldr r1, [sp, 0x1c]                                |     r1 = var_1ch;
    0x00008504 mov r2, r6                                        |     r2 = r6;
    0x00008506 mov r0, r8                                        |     r0 = r8;
    0x00008508 strd r7, r7, [r6]                                 |     __asm ("strd r7, r7, [r6]");
    0x0000850c str r7, [r6, 8]                                   |     var_8h_2 = r7;
    0x0000850e bl 0x9d40                                         |     fcn_00009d40 (r0);
    0x00008512 str r0, [sp, 0xc]                                 |     var_ch = r0;
    0x00008514 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x00008516 bne.w 0x8724                                      |         goto label_17;
                                                                 |     }
    0x0000851a ldr r0, [pc, 0x39c]                               |     
    0x0000851c add r0, pc                                        |     r0 = 0x10dda;
    0x0000851e blx 0x479c                                        |     fcn_0000479c ();
    0x00008522 ldr r3, [r6, 4]                                   |     r3 = var_0h_3;
    0x00008524 str r0, [sp, 0x20]                                |     var_20h = r0;
    0x00008526 cmp r3, 0                                         |     
                                                                 |     if (r3 <= 0) {
    0x00008528 ble.w 0x8634                                      |         goto label_18;
                                                                 |     }
    0x0000852c ldr r3, [pc, 0x38c]                               |     
    0x0000852e str r5, [sp, 0x2c]                                |     var_2ch = r5;
    0x00008530 add r3, pc                                        |     r3 = 0x10df0;
    0x00008532 str r3, [sp, 0x24]                                |     var_24h = r3;
    0x00008534 ldr r3, [pc, 0x388]                               |     
    0x00008536 add r3, pc                                        |     r3 = 0x10dfa;
    0x00008538 str r3, [sp, 0x28]                                |     var_28h = r3;
    0x0000853a ldr r3, [sp, 0xc]                                 |     r3 = var_ch;
    0x0000853c mov r7, r3                                        |     r7 = r3;
    0x0000853e mov sb, r3                                        |     sb = r3;
    0x00008540 str r3, [sp, 0x18]                                |     var_18h = r3;
                                                                 | label_0:
    0x00008542 ldr r3, [r6, 8]                                   |     r3 = var_8h_2;
    0x00008544 add r3, r7                                        |     r3 += r7;
    0x00008546 ldr.w sl, [r3, 0x18]                              |     sl = *((r3 + 0x18));
    0x0000854a add.w r8, sl, -1                                  |     r8 = sl + -1;
    0x0000854e add.w r8, r8, r8, lsl 1                           |     r8 += (r8 << 1);
    0x00008552 lsl.w r8, r8, 2                                   |     r8 <<= 2;
    0x00008556 b 0x857e                                          |     
                                                                 |     while (sl > 0) {
    0x00008558 ldr r3, [r6, 8]                                   |         r3 = var_8h_2;
    0x0000855a add.w sl, sl, -1                                  |         sl += -1;
    0x0000855e add r3, r7                                        |         r3 += r7;
    0x00008560 ldr r3, [r3, 0x1c]                                |         r3 = *((r3 + 0x1c));
    0x00008562 add r3, r8                                        |         r3 += r8;
    0x00008564 sub.w r8, r8, 0xc                                 |         r8 -= 0xc;
    0x00008568 ldr r5, [r3, 8]                                   |         r5 = *((r3 + 8));
    0x0000856a blx 0x4f80                                        |         r0 = g_source_set_callback ();
    0x0000856e mov r1, r0                                        |         r1 = r0;
    0x00008570 mov r0, r5                                        |         r0 = r5;
    0x00008572 blx 0x5268                                        |         r0 = fcn_00005268 ();
    0x00008576 mov r5, r0                                        |         r5 = r0;
    0x00008578 cmp r0, 0                                         |         
                                                                 |         if (r0 == 0) {
    0x0000857a beq.w 0x86d4                                      |             goto label_19;
                                                                 |         }
    0x0000857e cmp.w sl, 0                                       |         
    0x00008582 bgt 0x8558                                        |         
                                                                 |     }
                                                                 | label_3:
    0x00008584 ldr r3, [r6, 4]                                   |     r3 = var_0h_3;
    0x00008586 add.w sb, sb, 1                                   |     sb++;
    0x0000858a adds r7, 0x28                                     |     r7 += 0x28;
    0x0000858c cmp sb, r3                                        |     
                                                                 |     if (sb < r3) {
    0x0000858e blt 0x8542                                        |         goto label_0;
                                                                 |     }
    0x00008590 ldr r3, [sp, 0x18]                                |     r3 = var_18h;
    0x00008592 ldr r5, [sp, 0x2c]                                |     r5 = var_2ch;
    0x00008594 cmp r3, 0                                         |     
                                                                 |     if (r3 != 0) {
    0x00008596 beq 0x8634                                        |         
    0x00008598 ldr r3, [sp, 0x20]                                |         r3 = var_20h;
    0x0000859a ldr.w r0, [fp, 0xc]                               |         r0 = *(arg_ch);
    0x0000859c movs r4, r1                                       |         r4 = r1;
    0x0000859e ldr r6, [r3]                                      |         r6 = *(r3);
    0x000085a0 blx 0x506c                                        |         fcn_0000506c ();
    0x000085a4 blx 0x4a40                                        |         g_variant_builder_unref ();
    0x000085a8 blx 0x4a1c                                        |         g_strchomp ();
    0x000085ac ldr.w r3, [fp, 0xc]                               |         r3 = *(arg_ch);
    0x000085b0 mov r4, r0                                        |         r4 = r0;
    0x000085b2 cmp r3, 0                                         |         
                                                                 |         if (r3 == 0) {
    0x000085b4 beq.w 0x87a4                                      |             goto label_20;
                                                                 |         }
    0x000085b8 ldr.w sb, [pc, 0x308]                             |         
    0x000085bc add sb, pc                                        |         sb = "axhbt:Heartbeat";
    0x000085be mov r1, sb                                        |         r1 = sb;
    0x000085c0 blx 0x5268                                        |         r0 = fcn_00005268 ();
    0x000085c4 cmp r0, 0                                         |         
                                                                 |         if (r0 == 0) {
    0x000085c6 beq.w 0x87a4                                      |             goto label_20;
                                                                 |         }
    0x000085ca ldr r2, [pc, 0x2fc]                               |         
    0x000085cc movs r3, 0                                        |         r3 = 0;
    0x000085ce ldr r0, [pc, 0x2fc]                               |         
    0x000085d0 add r7, sp, 0x34                                  |         r7 += var_34h;
    0x000085d2 ldr.w r1, [fp, 0xc]                               |         r1 = *(arg_ch);
    0x000085d6 add r2, pc                                        |         r2 = 0x10ea4;
    0x000085d8 add r0, pc                                        |         r0 = 0x10eaa;
    0x000085da blx 0x4eb0                                        |         fcn_00004eb0 ();
    0x000085de ldr r2, [pc, 0x2f0]                               |         
    0x000085e0 mov r8, r0                                        |         r8 = r0;
    0x000085e2 ldr r1, [pc, 0x2f0]                               |         
    0x000085e4 mov r3, r6                                        |         r3 = r6;
    0x000085e6 ldr r0, [pc, 0x2f0]                               |         
    0x000085e8 add r2, pc                                        |         r2 = 0x10ebe;
    0x000085ea str r2, [sp]                                      |         *(sp) = r2;
    0x000085ec movs r2, 0                                        |         r2 = 0;
    0x000085ee str r2, [sp, 4]                                   |         var_4h = r2;
    0x000085f0 add r1, pc                                        |         r1 = 0x10eca;
    0x000085f2 ldr r2, [pc, 0x2e8]                               |         
    0x000085f4 add r0, pc                                        |         r0 = 0x10ed2;
    0x000085f6 add r2, pc                                        |         r2 = 0x10ed8;
    0x000085f8 blx 0x4eb0                                        |         fcn_00004eb0 ();
    0x000085fc ldrd r1, r2, [fp, 0x10]                           |         __asm ("ldrd r1, r2, [arg_10h]");
    0x00008600 mov r3, r0                                        |         r3 = r0;
    0x00008602 mov r6, r0                                        |         r6 = r0;
    0x00008604 mov r0, r8                                        |         r0 = r8;
    0x00008606 bl 0x9660                                         |         fcn_00009660 (r0, r1, r2);
    0x00008608 invalid                                           |         
    0x0000860c asrs r4, r0, 0x20                                 |         r4 = r0 >> 0x20;
    0x0000860e str r0, [r7]                                      |         *(r7) = r0;
    0x00008610 bl 0xbdd8                                         |         r0 = fcn_0000bdd8 (r0, r1);
    0x00008614 cmp r0, 0                                         |         
                                                                 |         if (r0 == 0) {
    0x00008616 beq.w 0x8822                                      |             goto label_21;
                                                                 |         }
    0x0000861a ldr r3, [r7]                                      |         r3 = *(r7);
    0x0000861c cmp r3, 0                                         |         
                                                                 |         if (r3 != 0) {
    0x0000861e bne.w 0x884c                                      |             goto label_22;
                                                                 |         }
                                                                 | label_7:
    0x00008622 mov r0, r6                                        |         r0 = r6;
    0x00008624 blx 0x4d6c                                        |         fcn_00004d6c ();
    0x00008628 mov r0, r8                                        |         r0 = r8;
    0x0000862a blx 0x4d6c                                        |         r0 = fcn_00004d6c ();
    0x0000862c sub.w r6, r0, r0, asr 16                          |         r6 = r0 - (r0 >> 16);
    0x00008630 blx 0x4d6c                                        |         fcn_00004d6c ();
                                                                 |     }
                                                                 | label_18:
    0x00008634 ldr r0, [sp, 0x20]                                |     r0 = var_20h;
    0x00008636 movs r1, 1                                        |     r1 = 1;
    0x00008638 blx 0x4f10                                        |     fcn_00004f10 ();
    0x0000863c ldr.w r0, [fp, 4]                                 |     r0 = *(arg_4h);
    0x0000863e movs r4, r0                                       |     r4 = r0;
    0x00008640 bl 0xac3c                                         |     fcn_0000ac3c (r0);
    0x00008644 b 0x873a                                          |     goto label_4;
                                                                 | label_14:
    0x00008646 ldr r3, [pc, 0x298]                               |     
    0x00008648 movs r0, 0                                        |     r0 = 0;
    0x0000864a ldr r2, [pc, 0x298]                               |     
    0x0000864c movs r1, 0x10                                     |     r1 = 0x10;
    0x0000864e add r3, pc                                        |     r3 = 0x10f34;
    0x00008650 add r2, pc                                        |     r2 = 0x10f3a;
    0x00008652 blx 0x4868                                        |     fcn_00004868 ();
    0x00008656 mov r0, r7                                        |     r0 = r7;
    0x00008658 blx 0x4d6c                                        |     fcn_00004d6c ();
                                                                 |     do {
    0x0000865c ldr r3, [pc, 0x288]                               |         
    0x0000865e movs r1, 0x10                                     |         r1 = 0x10;
    0x00008660 ldr r2, [pc, 0x288]                               |         
    0x00008662 movs r0, 0                                        |         r0 = 0;
    0x00008664 add r3, pc                                        |         r3 = 0x10f50;
    0x00008666 add r2, pc                                        |         r2 = 0x10f56;
    0x00008668 blx 0x4868                                        |         fcn_00004868 ();
    0x0000866c mov.w r3, -1                                      |         r3 = -1;
    0x00008670 str r3, [sp, 0xc]                                 |         var_ch = r3;
    0x00008672 b 0x8380                                          |         goto label_1;
                                                                 | label_8:
    0x00008674 ldr r3, [pc, 0x278]                               |         
    0x00008676 ldr r2, [pc, 0x27c]                               |         
    0x00008678 ldr r1, [pc, 0x27c]                               |         
    0x0000867a add r3, pc                                        |         r3 = 0x10f6e;
    0x0000867c add r2, pc                                        |         r2 = 0x10f76;
    0x0000867e adds r3, 0x18                                     |         r3 += 0x18;
    0x00008680 str r2, [sp]                                      |         *(sp) = r2;
    0x00008682 add r1, pc                                        |         r1 = 0x10f7e;
    0x00008684 movs r2, 0x7a                                     |         r2 = 0x7a;
    0x00008686 blx 0x4dac                                        |         g_variant_type_free ();
    0x0000868a b 0x82a6                                          |         goto label_2;
                                                                 | label_10:
    0x0000868c ldr r3, [pc, 0x26c]                               |         
    0x0000868e mov r0, r8                                        |         r0 = r8;
    0x00008690 ldr r2, [pc, 0x26c]                               |         
    0x00008692 movs r1, 0x10                                     |         r1 = 0x10;
    0x00008694 add r3, pc                                        |         r3 = 0x10f94;
    0x00008696 add r2, pc                                        |         r2 = 0x10f9a;
    0x00008698 blx 0x4868                                        |         fcn_00004868 ();
    0x0000869c mov.w r3, -1                                      |         r3 = -1;
    0x000086a0 str r3, [sp, 0xc]                                 |         var_ch = r3;
    0x000086a2 b 0x8380                                          |         goto label_1;
                                                                 | label_15:
    0x000086a4 ldr r2, [pc, 0x25c]                               |         
    0x000086a6 mov r3, r8                                        |         r3 = r8;
    0x000086a8 movs r1, 0x10                                     |         r1 = 0x10;
    0x000086aa add r2, pc                                        |         r2 = 0x10fb2;
    0x000086ac blx 0x4868                                        |         fcn_00004868 ();
    0x000086b0 ldr r3, [sp, 0x1c8]                               |         r3 = var_1c8h;
                                                                 |         if (r3 != 0) {
    0x000086b2 cbz r3, 0x86ba                                    |             
    0x000086b4 ldr r0, [sp, 0x14]                                |             r0 = var_14h;
    0x000086b6 bl 0x95f8                                         |             fcn_000095f8 (r0);
                                                                 |         }
    0x000086ba mov r0, sl                                        |         r0 = sl;
    0x000086bc blx 0x4d6c                                        |         fcn_00004d6c ();
    0x000086c0 mov r0, sb                                        |         r0 = sb;
    0x000086c2 blx 0x4d6c                                        |         fcn_00004d6c ();
    0x000086c6 ldr r0, [sp, 0xc]                                 |         r0 = var_ch;
    0x000086c8 blx 0x4d6c                                        |         fcn_00004d6c ();
    0x000086cc mov r0, r7                                        |         r0 = r7;
    0x000086ce blx 0x4d6c                                        |         fcn_00004d6c ();
    0x000086d2 b 0x865c                                          |         
                                                                 |     } while (1);
                                                                 | label_19:
    0x000086d4 ldr r2, [r6, 8]                                   |     r2 = var_8h_2;
    0x000086d6 adds.w r8, r2, r7                                 |     r8 = r2 + r7;
                                                                 |     if (r8 == r2) {
    0x000086da beq 0x8748                                        |         goto label_23;
                                                                 |     }
    0x000086dc ldr r1, [r4, 4]                                   |     r1 = var_0h_2;
    0x000086de cmp r1, 0                                         |     
    0x000086e0 it gt                                             |     
                                                                 |     if (r1 <= 0) {
    0x000086e2 movgt sl, r0                                      |         sl = r0;
                                                                 |     }
                                                                 |     if (r1 > 0) {
    0x000086e4 bgt 0x86f4                                        |         goto label_24;
                                                                 |     }
    0x000086e6 b 0x870a                                          |     goto label_25;
                                                                 |     do {
    0x000086e8 ldr r3, [r4, 4]                                   |         r3 = var_0h_2;
    0x000086ea adds r5, 1                                        |         r5++;
    0x000086ec add.w sl, sl, 0x28                                |         sl += 0x28;
    0x000086f0 cmp r5, r3                                        |         
                                                                 |         if (r5 >= r3) {
    0x000086f2 bge 0x8708                                        |             goto label_26;
                                                                 |         }
                                                                 | label_24:
    0x000086f4 ldr r3, [r4, 8]                                   |         r3 = var_8h;
    0x000086f6 ldr.w r1, [r8, 8]                                 |         r1 = *((r8 + 8));
    0x000086fa add r3, sl                                        |         r3 += sl;
    0x000086fc ldr r0, [r3, 8]                                   |         r0 = *((r3 + 8));
    0x000086fe blx 0x5268                                        |         fcn_00005268 ();
    0x00008700 ldc p8, c2, [r4, 0]!                              |         __asm ("ldc p8, c2, [r4, 0]!");
    0x00008704 bne 0x86e8                                        |         
                                                                 |     } while (r5 != r3);
    0x00008706 b 0x8584                                          |     goto label_3;
                                                                 | label_26:
    0x00008708 ldr r2, [r6, 8]                                   |     r2 = var_8h_2;
                                                                 | label_25:
    0x0000870a ldr r3, [sp, 0x18]                                |     r3 = var_18h;
                                                                 |     if (r3 != 0) {
    0x0000870c cbnz r3, 0x8760                                   |         goto label_27;
                                                                 |     }
    0x0000870e ldr r3, [r6, 8]                                   |     r3 = var_8h_2;
    0x00008710 ldr r1, [sp, 0x28]                                |     r1 = var_28h;
    0x00008712 ldr r0, [sp, 0x20]                                |     r0 = var_20h;
    0x00008714 add r3, r7                                        |     r3 += r7;
    0x00008716 ldr r2, [r3, 8]                                   |     r2 = *((r3 + 8));
    0x00008718 blx 0x51c8                                        |     fcn_000051c8 ();
                                                                 |     do {
    0x0000871c ldr r3, [sp, 0x18]                                |         r3 = var_18h;
    0x0000871e adds r3, 1                                        |         r3++;
    0x00008720 str r3, [sp, 0x18]                                |         var_18h = r3;
    0x00008722 b 0x8584                                          |         goto label_3;
                                                                 | label_17:
    0x00008724 ldr r3, [pc, 0x1e0]                               |         
    0x00008726 mov r0, r7                                        |         r0 = r7;
    0x00008728 ldr r2, [pc, 0x1e0]                               |         
    0x0000872a movs r1, 0x10                                     |         r1 = 0x10;
    0x0000872c add r3, pc                                        |         r3 = 0x11038;
    0x0000872e add r2, pc                                        |         r2 = 0x1103e;
    0x00008730 blx 0x4868                                        |         fcn_00004868 ();
    0x00008734 mov.w r3, -1                                      |         r3 = -1;
    0x00008738 str r3, [sp, 0xc]                                 |         var_ch = r3;
                                                                 | label_4:
    0x0000873a ldr r0, [sp, 0x14]                                |         r0 = var_14h;
    0x0000873c blx 0x48b4                                        |         g_variant_new_tuple ();
    0x00008740 ldr r0, [sp, 0x1c]                                |         r0 = var_1ch;
    0x00008742 blx 0x4d6c                                        |         fcn_00004d6c ();
    0x00008746 b 0x8380                                          |         goto label_1;
                                                                 | label_23:
    0x00008748 ldr r3, [pc, 0x1c4]                               |         
    0x0000874a mov.w r2, 0x1e6                                   |         r2 = 0x1e6;
    0x0000874e ldr r4, [pc, 0x1c4]                               |         
    0x00008750 ldr r1, [pc, 0x1c4]                               |         
    0x00008752 add r3, pc                                        |         r3 = 0x11066;
    0x00008754 add r4, pc                                        |         r4 = 0x1106e;
    0x00008756 adds r3, 0x2c                                     |         r3 += 0x2c;
    0x00008758 add r1, pc                                        |         r1 = 0x11074;
    0x0000875a str r4, [sp]                                      |         *(sp) = r4;
    0x0000875c blx 0x5150                                        |         fcn_00005150 ();
                                                                 | label_27:
    0x00008760 add r2, r7                                        |         r2 += r7;
    0x00008762 ldrd r0, r1, [sp, 0x20]                           |         __asm ("ldrd r0, r1, [var_20h]");
    0x00008766 ldr r2, [r2, 8]                                   |         r2 = *((r2 + 8));
    0x00008768 blx 0x51c8                                        |         fcn_000051c8 ();
    0x0000876c b 0x871c                                          |         
                                                                 |     } while (1);
                                                                 | label_13:
    0x0000876e ldr r2, [pc, 0x1ac]                               |     
    0x00008770 mov r3, sl                                        |     r3 = sl;
    0x00008772 movs r1, 0x10                                     |     r1 = 0x10;
    0x00008774 add r2, pc                                        |     r2 = 0x11096;
    0x00008776 blx 0x4868                                        |     fcn_00004868 ();
    0x0000877a ldr r3, [sp, 0x1c8]                               |     r3 = var_1c8h;
                                                                 |     if (r3 != 0) {
    0x0000877c cbz r3, 0x8784                                    |         
    0x0000877e ldr r0, [sp, 0x14]                                |         r0 = var_14h;
    0x00008780 bl 0x95f8                                         |         fcn_000095f8 (r0);
                                                                 |     }
    0x00008784 mov r0, sb                                        |     r0 = sb;
    0x00008786 blx 0x4d6c                                        |     fcn_00004d6c ();
    0x0000878a ldr r0, [sp, 0xc]                                 |     r0 = var_ch;
    0x0000878c blx 0x4d6c                                        |     fcn_00004d6c ();
    0x00008790 mov r0, r7                                        |     r0 = r7;
    0x00008792 blx 0x4d6c                                        |     fcn_00004d6c ();
    0x00008796 mov.w r3, -1                                      |     r3 = -1;
    0x0000879a mov r0, r8                                        |     r0 = r8;
    0x0000879c str r3, [sp, 0xc]                                 |     var_ch = r3;
    0x0000879e blx 0x4d6c                                        |     fcn_00004d6c ();
    0x000087a2 b 0x8380                                          |     goto label_1;
                                                                 | label_20:
    0x000087a4 ldr r3, [pc, 0x178]                               |     
    0x000087a6 movs r0, 0                                        |     r0 = 0;
    0x000087a8 ldr r2, [pc, 0x178]                               |     
    0x000087aa movs r1, 0x10                                     |     r1 = 0x10;
    0x000087ac add r3, pc                                        |     r3 = 0x110d0;
    0x000087ae add r2, pc                                        |     r2 = 0x110d6;
    0x000087b0 blx 0x4868                                        |     fcn_00004868 ();
    0x000087b4 mov r0, r4                                        |     r0 = r4;
    0x000087b6 blx 0x4d6c                                        |     fcn_00004d6c ();
                                                                 |     do {
    0x000087ba ldr r4, [pc, 0x16c]                               |         
    0x000087bc mov.w r3, -1                                      |         r3 = -1;
    0x000087c0 ldr r2, [pc, 0x168]                               |         
    0x000087c2 movs r1, 0x10                                     |         r1 = 0x10;
    0x000087c4 str r3, [sp, 0xc]                                 |         var_ch = r3;
    0x000087c6 movs r0, 0                                        |         r0 = 0;
    0x000087c8 add r4, pc                                        |         r4 = 0x110f6;
    0x000087ca mov r3, r4                                        |         r3 = r4;
    0x000087cc add r2, pc                                        |         r2 = 0x110fc;
    0x000087ce blx 0x4868                                        |         fcn_00004868 ();
    0x000087d2 ldr r0, [sp, 0x20]                                |         r0 = var_20h;
    0x000087d4 movs r1, 1                                        |         r1 = 1;
    0x000087d6 blx 0x4f10                                        |         fcn_00004f10 ();
    0x000087da ldr r2, [pc, 0x154]                               |         
    0x000087dc mov r3, r4                                        |         r3 = r4;
    0x000087de movs r1, 0x10                                     |         r1 = 0x10;
    0x000087e0 movs r0, 0                                        |         r0 = 0;
    0x000087e2 add r2, pc                                        |         r2 = 0x11118;
    0x000087e4 blx 0x4868                                        |         fcn_00004868 ();
    0x000087e8 b 0x873a                                          |         goto label_4;
                                                                 | label_16:
    0x000087ea ldr r0, [sp, 0x14]                                |         r0 = var_14h;
    0x000087ec bl 0x95f8                                         |         fcn_000095f8 (r0);
    0x000087f0 b 0x84d2                                          |         goto label_5;
                                                                 | label_9:
    0x000087f2 ldr r2, [r5, 0x38]                                |         r2 = var_38h_2;
    0x000087f4 movs r1, 0x10                                     |         r1 = 0x10;
    0x000087f6 ldr r4, [pc, 0x13c]                               |         
    0x000087f8 mov r0, r7                                        |         r0 = r7;
    0x000087fa str.w r8, [sp]                                    |         __asm ("str.w r8, [sp]");
    0x000087fc strh r0, [r0]                                     |         *(r0) = r0;
    0x000087fe str r2, [sp, 4]                                   |         var_4h = r2;
    0x00008800 ldr r2, [pc, 0x134]                               |         
    0x00008802 add r4, pc                                        |         r4 = 0x1113c;
    0x00008804 mov r3, r4                                        |         r3 = r4;
    0x00008806 add r2, pc                                        |         r2 = 0x11142;
    0x00008808 blx 0x4868                                        |         fcn_00004868 ();
    0x0000880c ldr r2, [pc, 0x12c]                               |         
    0x0000880e mov r3, r4                                        |         r3 = r4;
    0x00008810 movs r1, 0x10                                     |         r1 = 0x10;
    0x00008812 mov r0, r7                                        |         r0 = r7;
    0x00008814 add r2, pc                                        |         r2 = 0x11154;
    0x00008816 blx 0x4868                                        |         fcn_00004868 ();
    0x0000881a mov.w r3, -1                                      |         r3 = -1;
    0x0000881e str r3, [sp, 0xc]                                 |         var_ch = r3;
    0x00008820 b 0x8386                                          |         goto label_6;
                                                                 | label_21:
    0x00008822 ldr r2, [pc, 0x11c]                               |         
    0x00008824 mov r3, sb                                        |         r3 = sb;
    0x00008826 movs r1, 0x10                                     |         r1 = 0x10;
    0x00008828 add r2, pc                                        |         r2 = 0x1116e;
    0x0000882a blx 0x4868                                        |         fcn_00004868 ();
    0x0000882e ldr r3, [r7]                                      |         r3 = *(r7);
                                                                 |         if (r3 != 0) {
    0x00008830 cbz r3, 0x8838                                    |             
    0x00008832 mov r0, r7                                        |             r0 = r7;
    0x00008834 bl 0x95f8                                         |             fcn_000095f8 (r0);
                                                                 |         }
    0x00008838 mov r0, r6                                        |         r0 = r6;
    0x0000883a blx 0x4d6c                                        |         fcn_00004d6c ();
    0x0000883e mov r0, r8                                        |         r0 = r8;
    0x00008840 blx 0x4d6c                                        |         fcn_00004d6c ();
    0x00008844 mov r0, r4                                        |         r0 = r4;
    0x00008846 blx 0x4d6c                                        |         fcn_00004d6c ();
    0x0000884a b 0x87ba                                          |         
                                                                 |     } while (1);
                                                                 | label_22:
    0x0000884c mov r0, r7                                        |     r0 = r7;
    0x0000884e bl 0x95f8                                         |     fcn_000095f8 (r0);
    0x00008852 b 0x8622                                          |     goto label_7;
                                                                 | label_12:
    0x00008854 blx 0x4d44                                        |     fcn_00004d44 ();
    0x00008858 invalid                                           |     
                                                                 | }

[*] Function strcat used 1 times riod