[*] Binary protection state of actionengined

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


[*] Function printf tear down of actionengined

    ; assembly                                       | /* r2dec pseudo code output */
                                                     | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/bin/actionengined @ 0xd3a8 */
                                                     | #include <stdint.h>
                                                     |  
    ; (fcn) fcn.0000d3a8 ()                          | void fcn_0000d3a8 (uint32_t arg1) {
                                                     |     r0 = arg1;
    0x0000d3a8 push {r3, r4, r5, r6, r7, lr}         |     
    0x0000d3aa mov r4, r0                            |     r4 = r0;
    0x0000d3ac ldrd r5, r6, [r0, 0x54]               |     __asm ("ldrd r5, r6, [r0, 0x54]");
    0x0000d3b0 ldr r7, [r0, 0x5c]                    |     r7 = *((r0 + 0x5c));
                                                     |     if (r5 == 0) {
    0x0000d3b2 cbnz r5, 0xd3d0                       |         
                                                     |         if (r6 == 0) {
    0x0000d3b4 cbz r6, 0xd3f6                        |             goto label_4;
                                                     |         }
    0x0000d3b6 cmp r7, 0                             |         
                                                     |         if (r7 != 0) {
    0x0000d3b8 bne 0xd44e                            |             goto label_5;
                                                     |         }
    0x0000d3ba ldr r0, [r0, 0x60]                    |         r0 = *((r0 + 0x60));
    0x0000d3bc cmp r0, 0                             |         
                                                     |         if (r0 != 0) {
    0x0000d3be bne 0xd470                            |             goto label_6;
                                                     |         }
                                                     | label_3:
    0x0000d3c0 ldr r1, [pc, 0xb8]                    |         
    0x0000d3c2 mov r2, r4                            |         r2 = r4;
    0x0000d3c4 mov r0, r6                            |         r0 = r6;
    0x0000d3c6 add r1, pc                            |         r1 = 0x1a846;
    0x0000d3c8 blx 0x4304                            |         g_strdup_printf ()
    0x0000d3cc str r0, [r4, 0x60]                    |         *((r4 + 0x60)) = r0;
                                                     | label_0:
    0x0000d3ce pop {r3, r4, r5, r6, r7, pc}          |         
                                                     |     }
                                                     |     if (r6 != 0) {
    0x0000d3d0 cbnz r6, 0xd3ea                       |         goto label_7;
                                                     |     }
                                                     |     if (r7 != 0) {
    0x0000d3d2 cbnz r7, 0xd422                       |         goto label_8;
                                                     |     }
    0x0000d3d4 ldr r0, [r0, 0x60]                    |     r0 = *((r0 + 0x60));
    0x0000d3d6 cmp r0, 0                             |     
                                                     |     if (r0 != 0) {
    0x0000d3d8 bne 0xd466                            |         goto label_9;
                                                     |     }
                                                     |     do {
                                                     | label_1:
    0x0000d3da ldr r1, [pc, 0xa4]                    |         
    0x0000d3dc mov r2, r4                            |         r2 = r4;
    0x0000d3de mov r0, r5                            |         r0 = r5;
    0x0000d3e0 add r1, pc                            |         r1 = 0x1a866;
    0x0000d3e2 blx 0x4304                            |         g_strdup_printf ()
    0x0000d3e6 str r0, [r4, 0x5c]                    |         *((r4 + 0x5c)) = r0;
    0x0000d3e8 pop {r3, r4, r5, r6, r7, pc}          |         
                                                     |         if (r7 != 0) {
                                                     | label_7:
    0x0000d3ea cbnz r7, 0xd406                       |             goto label_10;
                                                     |         }
    0x0000d3ec ldr r0, [r0, 0x60]                    |         r0 = *((r0 + 0x60));
                                                     |         if (r0 != 0) {
    0x0000d3ee cbnz r0, 0xd414                       |             goto label_11;
                                                     |         }
    0x0000d3f0 cmp r5, r6                            |         
    0x0000d3f2 blo 0xd3da                            |         
                                                     |     } while (r5 <= r6);
    0x0000d3f4 pop {r3, r4, r5, r6, r7, pc}          |     
                                                     |     if (r7 != 0) {
                                                     | label_4:
    0x0000d3f6 cbnz r7, 0xd438                       |         goto label_12;
                                                     |     }
    0x0000d3f8 ldr r0, [r0, 0x60]                    |     r0 = *((r0 + 0x60));
    0x0000d3fa cmp r0, 0                             |     
                                                     |     if (r0 == 0) {
    0x0000d3fc beq 0xd3ce                            |         goto label_0;
                                                     |     }
    0x0000d3fe blx 0x4700                            |     g_slist_length ();
    0x0000d402 str r7, [r4, 0x60]                    |     *((r4 + 0x60)) = r7;
    0x0000d404 pop {r3, r4, r5, r6, r7, pc}          |     
                                                     | label_10:
    0x0000d406 mov r0, r7                            |     r0 = r7;
    0x0000d408 movs r7, 0                            |     r7 = 0;
    0x0000d40a blx 0x4700                            |     g_slist_length ();
    0x0000d40e ldr r0, [r4, 0x60]                    |     r0 = *((r4 + 0x60));
    0x0000d410 str r7, [r4, 0x5c]                    |     *((r4 + 0x5c)) = r7;
                                                     |     if (r0 != 0) {
    0x0000d412 cbz r0, 0xd41a                        |         
                                                     | label_11:
    0x0000d414 blx 0x4700                            |         g_slist_length ();
    0x0000d418 str r7, [r4, 0x60]                    |         *((r4 + 0x60)) = r7;
                                                     |     }
    0x0000d41a cmp r5, r6                            |     
                                                     |     if (r5 >= r6) {
    0x0000d41c bhs 0xd3ce                            |         goto label_0;
                                                     |     }
                                                     |     do {
                                                     | label_2:
    0x0000d41e ldr r5, [r4, 0x54]                    |         r5 = *((r4 + 0x54));
    0x0000d420 b 0xd3da                              |         goto label_1;
                                                     | label_8:
    0x0000d422 mov r0, r7                            |         r0 = r7;
    0x0000d424 blx 0x4700                            |         g_slist_length ();
    0x0000d428 ldr r0, [r4, 0x60]                    |         r0 = *((r4 + 0x60));
    0x0000d42a str r6, [r4, 0x5c]                    |         *((r4 + 0x5c)) = r6;
    0x0000d42c cmp r0, 0                             |         
    0x0000d42e beq 0xd41e                            |         
                                                     |     } while (r0 == 0);
    0x0000d430 blx 0x4700                            |     g_slist_length ();
    0x0000d434 str r6, [r4, 0x60]                    |     *((r4 + 0x60)) = r6;
    0x0000d436 b 0xd41e                              |     goto label_2;
                                                     | label_12:
    0x0000d438 mov r0, r7                            |     r0 = r7;
    0x0000d43a blx 0x4700                            |     g_slist_length ();
    0x0000d43e ldr r0, [r4, 0x60]                    |     r0 = *((r4 + 0x60));
    0x0000d440 str r6, [r4, 0x5c]                    |     *((r4 + 0x5c)) = r6;
    0x0000d442 cmp r0, 0                             |     
                                                     |     if (r0 == 0) {
    0x0000d444 beq 0xd3ce                            |         goto label_0;
                                                     |     }
    0x0000d446 blx 0x4700                            |     g_slist_length ();
    0x0000d44a str r6, [r4, 0x60]                    |     *((r4 + 0x60)) = r6;
    0x0000d44c pop {r3, r4, r5, r6, r7, pc}          |     
                                                     | label_5:
    0x0000d44e mov r0, r7                            |     r0 = r7;
    0x0000d450 blx 0x4700                            |     g_slist_length ();
    0x0000d454 ldr r0, [r4, 0x60]                    |     r0 = *((r4 + 0x60));
    0x0000d456 str r5, [r4, 0x5c]                    |     *((r4 + 0x5c)) = r5;
    0x0000d458 cbnz r0, 0xd45e                       |     
                                                     |     while (1) {
    0x0000d45a ldr r6, [r4, 0x58]                    |         r6 = *((r4 + 0x58));
    0x0000d45c b 0xd3c0                              |         goto label_3;
    0x0000d45e blx 0x4700                            |         g_slist_length ();
    0x0000d462 str r5, [r4, 0x60]                    |         *((r4 + 0x60)) = r5;
    0x0000d464 b 0xd45a                              |         
                                                     |     }
                                                     | label_9:
    0x0000d466 blx 0x4700                            |     g_slist_length ();
    0x0000d46a ldr r5, [r4, 0x54]                    |     r5 = *((r4 + 0x54));
    0x0000d46c str r7, [r4, 0x60]                    |     *((r4 + 0x60)) = r7;
    0x0000d46e b 0xd3da                              |     goto label_1;
                                                     | label_6:
    0x0000d470 blx 0x4700                            |     g_slist_length ();
    0x0000d474 ldr r6, [r4, 0x58]                    |     r6 = *((r4 + 0x58));
    0x0000d476 str r7, [r4, 0x60]                    |     *((r4 + 0x60)) = r7;
    0x0000d478 b 0xd3c0                              |     goto label_3;
                                                     | }
    ; assembly                                       | /* r2dec pseudo code output */
                                                     | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/bin/actionengined @ 0xd4e0 */
                                                     | #include <stdint.h>
                                                     |  
    ; (fcn) fcn.0000d4e0 ()                          | void fcn_0000d4e0 (int16_t arg1) {
                                                     |     int16_t var_0h;
                                                     |     r0 = arg1;
                                                     | label_1:
    0x00004948 bx pc                                 |     return void (*pc)() ();
    0x0000d4e0 ldr r2, [r0, 0x68]                    |     r2 = *((r0 + 0x68));
    0x0000d4e2 push.w {r4, r5, r6, r7, r8, lr}       |     
    0x0000d4e6 mov r4, r0                            |     r4 = r0;
    0x0000d4e8 ldr r5, [pc, 0x288]                   |     
    0x0000d4ea sub sp, 8                             |     
    0x0000d4ec add r5, pc                            |     r5 = 0x1ac64;
                                                     |     if (r2 != 0) {
    0x0000d4ee cbz r2, 0xd50c                        |         
    0x0000d4f0 ldr r3, [pc, 0x284]                   |         
    0x0000d4f2 ldr r1, [pc, 0x288]                   |         
    0x0000d4f4 ldr r0, [pc, 0x288]                   |         
    0x0000d4f6 ldr r3, [r5, r3]                      |         r3 = *((r5 + r3));
    0x0000d4f8 add r1, pc                            |         r1 = 0x1ac7a;
    0x0000d4fa adds r1, 0x44                         |         r1 += 0x44;
    0x0000d4fc add r0, pc                            |         r0 = 0x1ac80;
    0x0000d4fe ldr r3, [r3]                          |         r3 = *(0xd778);
    0x0000d500 blx r3                                |         uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
    0x0000d502 ldr r0, [r4, 0x68]                    |         r0 = *((r4 + 0x68));
    0x0000d504 blx 0x4700                            |         g_slist_length ();
    0x0000d508 movs r3, 0                            |         r3 = 0;
    0x0000d50a str r3, [r4, 0x68]                    |         *((r4 + 0x68)) = r3;
                                                     |     }
    0x0000d50c ldr r3, [r4, 0x50]                    |     r3 = *((r4 + 0x50));
    0x0000d50e cmp r3, 0                             |     
                                                     |     if (r3 != 0) {
    0x0000d510 bne 0xd57e                            |         goto label_9;
                                                     |     }
    0x0000d512 ldr r3, [r4, 0x2c]                    |     r3 = *((r4 + 0x2c));
                                                     |     if (r3 != 0) {
    0x0000d514 cbz r3, 0xd51c                        |         
    0x0000d516 ldr r3, [r3, 0xc]                     |         r3 = *((r3 + 0xc));
    0x0000d518 cmp r3, 3                             |         
                                                     |         if (r3 == 3) {
    0x0000d51a beq 0xd5f6                            |             goto label_10;
                                                     |         }
                                                     |     }
    0x0000d51c ldr r1, [r4, 0x24]                    |     r1 = *((r4 + 0x24));
    0x0000d51e ldr r3, [r1, 0xc]                     |     r3 = *((r1 + 0xc));
    0x0000d520 subs r2, r3, 2                        |     r2 = r3 - 2;
    0x0000d522 bics r2, r2, 2                        |     __asm ("bics r2, r2, 2");
                                                     |     if (r2 == r3) {
    0x0000d526 beq 0xd596                            |         goto label_11;
                                                     |     }
    0x0000d528 cmp r3, 9                             |     
                                                     |     if (r3 != 9) {
    0x0000d52a bne 0xd5ae                            |         goto label_12;
                                                     |     }
                                                     | label_0:
    0x0000d52c ldr r1, [r4, 0x28]                    |     r1 = *((r4 + 0x28));
    0x0000d52e cmp r1, 0                             |     
                                                     |     if (r1 == 0) {
    0x0000d530 beq 0xd5c0                            |         goto label_13;
                                                     |     }
    0x0000d532 ldr r3, [r1, 0xc]                     |     r3 = *((r1 + 0xc));
    0x0000d534 subs r2, r3, 2                        |     r2 = r3 - 2;
    0x0000d536 bics r2, r2, 2                        |     __asm ("bics r2, r2, 2");
                                                     |     if (r2 != r3) {
    0x0000d53a bne 0xd5b6                            |         goto label_14;
                                                     |     }
    0x0000d53c ldr r3, [pc, 0x238]                   |     r3 = *(0xd778);
    0x0000d53e str r1, [r4, 0x2c]                    |     *((r4 + 0x2c)) = r1;
    0x0000d540 ldr r1, [pc, 0x240]                   |     
    0x0000d542 ldr r5, [r5, r3]                      |     r5 = *((r5 + r3));
    0x0000d544 ldr r0, [pc, 0x240]                   |     
    0x0000d546 add r1, pc                            |     r1 = 0x1acce;
    0x0000d548 ldr r3, [r5]                          |     r3 = *(r5);
    0x0000d54a adds r1, 0x60                         |     r1 += 0x60;
    0x0000d54c add r0, pc                            |     r0 = 0x1acd8;
    0x0000d54e blx r3                                |     uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
    0x0000d550 ldr r6, [r4, 0x28]                    |     r6 = *((r4 + 0x28));
                                                     |     do {
    0x0000d552 cmp r6, 0                             |         
                                                     |         if (r6 == 0) {
    0x0000d554 beq 0xd5d6                            |             goto label_15;
                                                     |         }
    0x0000d556 ldr r3, [r4, 0x78]                    |         r3 = *((r4 + 0x78));
    0x0000d558 cmp r3, 1                             |         
                                                     |         if (r3 == 1) {
    0x0000d55a beq 0xd62e                            |             goto label_16;
                                                     |         }
    0x0000d55c bics r2, r3, 2                        |         __asm ("bics r2, r3, 2");
                                                     |         if (r3 != 1) {
    0x0000d560 bne 0xd642                            |             goto label_17;
                                                     |         }
    0x0000d562 ldr r0, [r4, 0x4c]                    |         r0 = *((r4 + 0x4c));
    0x0000d564 cmp r0, 0                             |         
                                                     |         if (r0 != 0) {
    0x0000d566 bne.w 0xd73a                          |             goto label_18;
                                                     |         }
                                                     | label_7:
    0x0000d56a ldr r7, [r5]                          |         r7 = *(r5);
    0x0000d56c cmp r3, 3                             |         
                                                     |         if (r3 > 3) {
    0x0000d56e bhi.w 0xd768                          |             goto label_19;
                                                     |         }
                                                     |         /* switch table (5 cases) at 0xd576 */
    0x0000d572 tbh [pc, r3, lsl 1]                   |         __asm ("tbh [pc, r3, lsl 1]");
                                                     | label_9:
    0x0000d57e ldr r3, [pc, 0x1f8]                   |         
    0x0000d580 ldr r1, [pc, 0x208]                   |         
    0x0000d582 ldr r0, [pc, 0x20c]                   |         
    0x0000d584 ldr r3, [r5, r3]                      |         r3 = *((r5 + r3));
    0x0000d586 add r1, pc                            |         r1 = 0x1ad16;
    0x0000d588 add r0, pc                            |         r0 = 0x1ad1e;
    0x0000d58a adds r1, 0x44                         |         r1 += 0x44;
    0x0000d58c ldr r3, [r3]                          |         r3 = *(0xd77a);
    0x0000d58e add sp, 8                             |         
    0x0000d590 pop.w {r4, r5, r6, r7, r8, lr}        |         
    0x0000d594 bx r3                                 |         return uint32_t (*r3)() ();
                                                     | label_11:
    0x0000d596 ldr r3, [pc, 0x1e0]                   |         r3 = *(0xd77a);
    0x0000d598 str r1, [r4, 0x2c]                    |         *((r4 + 0x2c)) = r1;
    0x0000d59a ldr r1, [pc, 0x1f8]                   |         
    0x0000d59c ldr r5, [r5, r3]                      |         r5 = *((r5 + r3));
    0x0000d59e ldr r0, [pc, 0x1f8]                   |         
    0x0000d5a0 add r1, pc                            |         r1 = 0x1ad3a;
    0x0000d5a2 ldr r3, [r5]                          |         r3 = *(r5);
    0x0000d5a4 adds r1, 0x60                         |         r1 += 0x60;
    0x0000d5a6 add r0, pc                            |         r0 = 0x1ad44;
    0x0000d5a8 blx r3                                |         uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
    0x0000d5aa ldr r6, [r4, 0x24]                    |         r6 = *((r4 + 0x24));
    0x0000d5ac b 0xd552                              |         
                                                     |     } while (1);
                                                     | label_12:
    0x0000d5ae mov r0, r1                            |     r0 = r1;
    0x0000d5b0 bl 0xd484                             |     fcn_0000d484 (r0, r1);
    0x0000d5b4 b 0xd52c                              |     goto label_0;
                                                     | label_14:
    0x0000d5b6 cmp r3, 9                             |     
                                                     |     if (r3 != 9) {
    0x0000d5b8 beq 0xd5c0                            |         
    0x0000d5ba ldr r0, [r4, 0x24]                    |         r0 = *((r4 + 0x24));
    0x0000d5bc bl 0xd484                             |         fcn_0000d484 (r0, r1);
                                                     |     }
                                                     | label_13:
    0x0000d5c0 ldr r3, [pc, 0x1b4]                   |     r3 = *(0xd778);
    0x0000d5c2 ldr r1, [pc, 0x1d8]                   |     
    0x0000d5c4 ldr r0, [pc, 0x1d8]                   |     
    0x0000d5c6 ldr r5, [r5, r3]                      |     r5 = *((r5 + r3));
    0x0000d5c8 add r1, pc                            |     r1 = 0x1ad6a;
    0x0000d5ca add r0, pc                            |     r0 = 0x1ad6e;
    0x0000d5cc adds r1, 0x60                         |     r1 += 0x60;
    0x0000d5ce ldr r3, [r5]                          |     r3 = *(r5);
    0x0000d5d0 blx r3                                |     uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
    0x0000d5d2 movs r3, 0                            |     r3 = 0;
    0x0000d5d4 str r3, [r4, 0x2c]                    |     *((r4 + 0x2c)) = r3;
                                                     | label_15:
    0x0000d5d6 ldr r1, [pc, 0x1cc]                   |     
    0x0000d5d8 ldr r0, [pc, 0x1cc]                   |     
    0x0000d5da ldr r3, [r5]                          |     r3 = *(r5);
    0x0000d5dc add r1, pc                            |     r1 = 0x1ad86;
    0x0000d5de add r0, pc                            |     r0 = 0x1ad8a;
    0x0000d5e0 adds r1, 0x44                         |     r1 += 0x44;
    0x0000d5e2 blx r3                                |     uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
    0x0000d5e4 ldr r3, [r4, 0x78]                    |     r3 = *((r4 + 0x78));
    0x0000d5e6 ldr r5, [r5]                          |     r5 = *(r5);
    0x0000d5e8 cmp r3, 3                             |     
                                                     |     if (r3 > 3) {
    0x0000d5ea bhi.w 0xd76e                          |         goto label_20;
                                                     |     }
                                                     |     /* switch table (4 cases) at 0xd5f2 */
    0x0000d5ee tbb [pc, r3]                          |     __asm ("tbb [0x0000d5f4]");
                                                     | label_10:
    0x0000d5f6 ldr r3, [r4, 0x78]                    |     r3 = *((r4 + 0x78));
    0x0000d5f8 cmp r3, 1                             |     
                                                     |     if (r3 != 1) {
    0x0000d5fa beq 0xd628                            |         
    0x0000d5fc ldr r2, [pc, 0x178]                   |         r2 = *(0xd778);
    0x0000d5fe cmp r3, 2                             |         
    0x0000d600 ldr r2, [r5, r2]                      |         r2 = *((r5 + r2));
    0x0000d602 ldr r5, [r2]                          |         r5 = *(0xd778);
                                                     |         if (r3 == 2) {
    0x0000d604 beq.w 0xd762                          |             goto label_21;
                                                     |         }
    0x0000d608 cmp r3, 3                             |         
                                                     |         if (r3 == 3) {
    0x0000d60a beq 0xd708                            |             goto label_22;
                                                     |         }
    0x0000d60c cmp r3, 0                             |         
                                                     |         if (r3 == 0) {
    0x0000d60e beq 0xd702                            |             goto label_23;
                                                     |         }
    0x0000d610 ldr r2, [pc, 0x198]                   |         
    0x0000d612 add r2, pc                            |         r2 = 0x1adc2;
                                                     | label_4:
    0x0000d614 ldr r1, [pc, 0x198]                   |         
    0x0000d616 ldr r3, [pc, 0x19c]                   |         
    0x0000d618 ldr r0, [pc, 0x19c]                   |         
    0x0000d61a add r1, pc                            |         r1 = 0x1adce;
    0x0000d61c add r3, pc                            |         r3 = 0x1add6;
    0x0000d61e adds r1, 0x44                         |         r1 += 0x44;
    0x0000d620 add r0, pc                            |         r0 = 0x1addc;
    0x0000d622 blx r5                                |         uint32_t (*r5)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
    0x0000d624 movs r3, 1                            |         r3 = 1;
    0x0000d626 str r3, [r4, 0x78]                    |         *((r4 + 0x78)) = r3;
                                                     |     }
                                                     | label_5:
    0x0000d628 add sp, 8                             |     
    0x0000d62a pop.w {r4, r5, r6, r7, r8, pc}        |     
                                                     | label_16:
    0x0000d62e ldr r1, [pc, 0x18c]                   |     
    0x0000d630 ldr r0, [pc, 0x18c]                   |     
    0x0000d632 ldr r3, [r5]                          |     r3 = *(r5);
    0x0000d634 add r1, pc                            |     r1 = 0x1adf6;
    0x0000d636 add r0, pc                            |     r0 = 0x1adfa;
    0x0000d638 adds r1, 0x44                         |     r1 += 0x44;
    0x0000d63a add sp, 8                             |     
    0x0000d63c pop.w {r4, r5, r6, r7, r8, lr}        |     
    0x0000d640 bx r3                                 |     return uint32_t (*r3)() ();
                                                     | label_17:
    0x0000d642 cmp r3, 3                             |     
    0x0000d644 ldr r5, [r5]                          |     r5 = *(r5);
                                                     |     if (r3 != 3) {
    0x0000d646 bne 0xd6fc                            |         goto label_24;
                                                     |     }
    0x0000d648 ldr r2, [pc, 0x178]                   |     
    0x0000d64a add r2, pc                            |     r2 = 0x1ae12;
                                                     | label_3:
    0x0000d64c ldr r1, [pc, 0x178]                   |     
    0x0000d64e ldr r3, [pc, 0x17c]                   |     
    0x0000d650 ldr r0, [pc, 0x17c]                   |     
    0x0000d652 add r1, pc                            |     r1 = 0x1ae1e;
    0x0000d654 add r3, pc                            |     r3 = 0x1ae26;
    0x0000d656 adds r1, 0x44                         |     r1 += 0x44;
    0x0000d658 add r0, pc                            |     r0 = 0x1ae2c;
    0x0000d65a blx r5                                |     uint32_t (*r5)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
    0x0000d65c movs r3, 1                            |     r3 = 1;
    0x0000d65e str r3, [r4, 0x78]                    |     *((r4 + 0x78)) = r3;
    0x0000d660 add sp, 8                             |     
    0x0000d662 pop.w {r4, r5, r6, r7, r8, pc}        |     
    0x0000d666 ldr r2, [pc, 0x16c]                   |     
    0x0000d668 add r2, pc                            |     r2 = 0x1ae42;
                                                     |     do {
                                                     | label_2:
    0x0000d66a ldr r1, [pc, 0x16c]                   |         
    0x0000d66c mov.w r8, 1                           |         r8 = 1;
    0x0000d670 ldr r3, [pc, 0x168]                   |         
    0x0000d672 ldr r0, [pc, 0x16c]                   |         
    0x0000d674 add r1, pc                            |         r1 = 0x1ae52;
    0x0000d676 add r3, pc                            |         r3 = 0x1ae56;
    0x0000d678 adds r1, 0x44                         |         r1 += 0x44;
    0x0000d67a add r0, pc                            |         r0 = 0x1ae60;
    0x0000d67c blx r7                                |         uint32_t (*r7)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
    0x0000d67e mov r0, r4                            |         r0 = r4;
    0x0000d680 str.w r8, [r4, 0x78]                  |         __asm ("str.w r8, [r4, 0x78]");
    0x0000d684 bl 0x11ca8                            |         fcn_00011ca8 (r0);
    0x0000d688 ldrd r3, r2, [r4, 0x28]               |         __asm ("ldrd r3, r2, [r4, 0x28]");
    0x0000d68c mov r7, r0                            |         r7 = r0;
    0x0000d68e cmp r2, r3                            |         
                                                     |         if (r2 != r3) {
    0x0000d690 beq 0xd6aa                            |             
    0x0000d692 ldr r0, [r4, 0x34]                    |             r0 = *((r4 + 0x34));
    0x0000d694 str.w r8, [r4, 0x30]                  |             __asm ("str.w r8, [r4, 0x30]");
    0x0000d698 cmp r0, 0                             |             
                                                     |             if (r0 != 0) {
    0x0000d69a bne 0xd75c                            |                 goto label_25;
                                                     |             }
                                                     | label_8:
    0x0000d69c ldr r1, [pc, 0x144]                   |             
    0x0000d69e mov r2, r4                            |             r2 = r4;
    0x0000d6a0 movs r0, 0xc                          |             r0 = 0xc;
    0x0000d6a2 add r1, pc                            |             r1 = 0x1ae8a;
    0x0000d6a4 blx 0x4304                            |             g_strdup_printf ()
    0x0000d6a8 str r0, [r4, 0x34]                    |             *((r4 + 0x34)) = r0;
                                                     |         }
    0x0000d6aa ldr r3, [r6]                          |         r3 = *(r6);
    0x0000d6ac mov r0, r6                            |         r0 = r6;
    0x0000d6ae ldr r4, [r4, 0x14]                    |         r4 = *((r4 + 0x14));
    0x0000d6b0 ldr.w r3, [r3, 0x80]                  |         r3 = *((r3 + 0x80));
    0x0000d6b4 blx r3                                |         uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
    0x0000d6b6 ldr r2, [pc, 0x130]                   |         
    0x0000d6b8 mov r3, r4                            |         r3 = r4;
    0x0000d6ba str r0, [sp]                          |         *(sp) = r0;
    0x0000d6bc movs r1, 0x20                         |         r1 = 0x20;
    0x0000d6be movs r0, 0                            |         r0 = 0;
    0x0000d6c0 add r2, pc                            |         r2 = 0x1aeae;
    0x0000d6c2 blx 0x4abc                            |         fcn_00004abc ();
    0x0000d6c6 ldr r1, [pc, 0x124]                   |         
    0x0000d6c8 ldr r0, [pc, 0x124]                   |         
    0x0000d6ca ldr r3, [r5]                          |         r3 = *(r5);
    0x0000d6cc add r1, pc                            |         r1 = 0x1aebe;
    0x0000d6ce add r0, pc                            |         r0 = 0x1aec2;
    0x0000d6d0 adds r1, 0x44                         |         r1 += 0x44;
    0x0000d6d2 blx r3                                |         uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
    0x0000d6d4 ldr r3, [r6]                          |         r3 = *(r6);
    0x0000d6d6 mov r0, r6                            |         r0 = r6;
    0x0000d6d8 mov r1, r7                            |         r1 = r7;
    0x0000d6da ldr r3, [r3, 0x4c]                    |         r3 = *((r3 + 0x4c));
    0x0000d6dc blx r3                                |         uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
    0x0000d6de mov r0, r7                            |         r0 = r7;
    0x0000d6e0 add sp, 8                             |         
    0x0000d6e2 pop.w {r4, r5, r6, r7, r8, lr}        |         
    0x0000d6e6 b.w 0x4948                            |         goto label_1;
    0x0000d6ea ldr r2, [pc, 0x108]                   |         
    0x0000d6ec add r2, pc                            |         r2 = 0x1aee6;
    0x0000d6ee b 0xd66a                              |         
                                                     |     } while (1);
    0x0000d6f0 ldr r2, [pc, 0x104]                   |     
    0x0000d6f2 add r2, pc                            |     r2 = 0x1aeee;
    0x0000d6f4 b 0xd66a                              |     goto label_2;
    0x0000d6f6 ldr r2, [pc, 0x104]                   |     
    0x0000d6f8 add r2, pc                            |     r2 = 0x1aefa;
    0x0000d6fa b 0xd66a                              |     goto label_2;
                                                     | label_24:
    0x0000d6fc ldr r2, [pc, 0x100]                   |     
    0x0000d6fe add r2, pc                            |     r2 = 0x1af02;
    0x0000d700 b 0xd64c                              |     goto label_3;
                                                     | label_23:
    0x0000d702 ldr r2, [pc, 0x100]                   |     
    0x0000d704 add r2, pc                            |     r2 = 0x1af0e;
    0x0000d706 b 0xd614                              |     goto label_4;
                                                     | label_22:
    0x0000d708 ldr r2, [pc, 0xfc]                    |     
    0x0000d70a add r2, pc                            |     r2 = 0x1af16;
    0x0000d70c b 0xd614                              |     goto label_4;
    0x0000d70e ldr r2, [pc, 0xfc]                    |     
    0x0000d710 add r2, pc                            |     r2 = 0x1af22;
                                                     |     do {
                                                     | label_6:
    0x0000d712 ldr r1, [pc, 0xfc]                    |         
    0x0000d714 ldr r3, [pc, 0xfc]                    |         
    0x0000d716 ldr r0, [pc, 0x100]                   |         
    0x0000d718 add r1, pc                            |         r1 = 0x1af2e;
    0x0000d71a add r3, pc                            |         r3 = 0x1af32;
    0x0000d71c adds r1, 0x44                         |         r1 += 0x44;
    0x0000d71e add r0, pc                            |         r0 = 0x1af3c;
    0x0000d720 blx r5                                |         uint32_t (*r5)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
    0x0000d722 movs r3, 2                            |         r3 = 2;
    0x0000d724 str r3, [r4, 0x78]                    |         *((r4 + 0x78)) = r3;
    0x0000d726 b 0xd628                              |         goto label_5;
    0x0000d728 ldr r2, [pc, 0xf0]                    |         
    0x0000d72a add r2, pc                            |         r2 = 0x1af4a;
    0x0000d72c b 0xd712                              |         
                                                     |     } while (1);
    0x0000d72e ldr r2, [pc, 0xf0]                    |     
    0x0000d730 add r2, pc                            |     r2 = 0x1af56;
    0x0000d732 b 0xd712                              |     goto label_6;
    0x0000d734 ldr r2, [pc, 0xec]                    |     
    0x0000d736 add r2, pc                            |     r2 = 0x1af5e;
    0x0000d738 b 0xd712                              |     goto label_6;
                                                     | label_18:
    0x0000d73a ldr r1, [pc, 0xec]                    |     
    0x0000d73c movs r3, 1                            |     r3 = 1;
    0x0000d73e mov r2, r4                            |     r2 = r4;
    0x0000d740 str r3, [r4, 0x50]                    |     *((r4 + 0x50)) = r3;
    0x0000d742 add r1, pc                            |     
    0x0000d744 blx 0x4304                            |     g_strdup_printf ()
    0x0000d746 ldcl p9, c4, [lr, 0xe0]               |     __asm ("ldcl p9, c4, [lr, 0xe0]");
    0x0000d74a str r0, [r4, 0x64]                    |     *((r4 + 0x64)) = r0;
    0x0000d74c ldr r0, [pc, 0xe0]                    |     
    0x0000d74e add r1, pc                            |     r1 = 0x286c2;
    0x0000d750 ldr r3, [r5]                          |     r3 = *(r5);
    0x0000d752 adds r1, 0x44                         |     r1 += 0x44;
    0x0000d754 add r0, pc                            |     r0 = 0x1af88;
    0x0000d756 blx r3                                |     uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
    0x0000d758 ldr r3, [r4, 0x78]                    |     r3 = *((r4 + 0x78));
    0x0000d75a b 0xd56a                              |     goto label_7;
                                                     | label_25:
    0x0000d75c blx 0x4700                            |     g_slist_length ();
    0x0000d760 b 0xd69c                              |     goto label_8;
                                                     | label_21:
    0x0000d762 ldr r2, [pc, 0xd0]                    |     
    0x0000d764 add r2, pc                            |     r2 = 0x1af9e;
    0x0000d766 b 0xd614                              |     goto label_4;
                                                     | label_19:
    0x0000d768 ldr r2, [pc, 0xcc]                    |     
    0x0000d76a add r2, pc                            |     r2 = 0x1afa6;
    0x0000d76c b 0xd66a                              |     goto label_2;
                                                     | label_20:
    0x0000d76e ldr r2, [pc, 0xcc]                    |     
    0x0000d770 add r2, pc                            |     r2 = 0x1afb2;
    0x0000d772 b 0xd712                              |     goto label_6;
    0x00016c72 strh r4, [r1, r5]                     |     *((r1 + r5)) = r4;
    0x00016c74 lsls r5, r0, 1                        |     r5 = r0 << 1;
    0x00016c76 movs r0, r0                           |     
    0x00016c78 strb r5, [r4, 0xc]                    |     *((r4 + 0xc)) = r5;
    0x00016c7a str r1, [r0, 0x34]                    |     *((r0 + 0x34)) = r1;
    0x00016c7c movs r1, r1                           |     
    0x00016c7e movs r0, r0                           |     
    0x00016c80 ldr r1, [r1, 0x64]                    |     r1 = *((r1 + 0x64));
    0x00016c82 strb r3, [r6, 0x11]                   |     *((r6 + 0x11)) = r3;
    0x00016c84 ldr r1, [r4, 0x64]                    |     r1 = *((r4 + 0x64));
    0x00016c86 str r3, [r4, 0x54]                    |     *((r4 + 0x54)) = r3;
    0x00016c88 strb r0, [r4, 0xc]                    |     *((r4 + 0xc)) = r0;
    0x00016c8a ldr r0, [r5, 0x74]                    |     r0 = *((r5 + 0x74));
    0x00016c8c ldr r5, [r6, 0x44]                    |     r5 = *((r6 + 0x44));
    0x00016c8e movs r0, 0x64                         |     r0 = 0x64;
    0x00016c90 ldr r6, [r5, 0x74]                    |     r6 = *((r5 + 0x74));
    0x00016c92 movs r0, 0x74                         |     r0 = 0x74;
    0x00016c94 str r2, [r4, 0x54]                    |     *((r4 + 0x54)) = r2;
    0x00016c96 str r0, [r4, 0x50]                    |     *((r4 + 0x50)) = r0;
    0x00016c98 strb r5, [r5, 1]                      |     *((r5 + 1)) = r5;
    0x00016c9a ldrb r4, [r6, 5]                      |     r4 = *((r6 + 5));
    0x00016c9c movs r0, 0x2e                         |     r0 = 0x2e;
    0x00016c9e ldrb r4, [r6, 5]                      |     r4 = *((r6 + 5));
    0x00016ca0 str r0, [r6, 0x54]                    |     *((r6 + 0x54)) = r0;
    0x00016ca2 subs r5, 0x20                         |     r5 -= 0x20;
    0x00016ca4 movs r5, 0x20                         |     r5 = 0x20;
    0x00016ca6 cmp r4, 0x73                          |     
    0x00016ca8 str r0, [r4, 0x50]                    |     *((r4 + 0x50)) = r0;
    0x00016caa strb r2, [r6, 9]                      |     *((r6 + 9)) = r2;
    0x00016cac strb r7, [r5, 9]                      |     *((r5 + 9)) = r7;
    0x00016cae subs r5, 0x20                         |     r5 -= 0x20;
    0x00016cb0 movs r5, 0x20                         |     r5 = 0x20;
    0x00016cb2 lsls r3, r6, 1                        |     r3 = r6 << 1;
    0x00016cb4 str r1, [r4, 0x34]                    |     *((r4 + 0x34)) = r1;
    0x00016cb6 ldr r4, [r6, 0x14]                    |     r4 = *((r6 + 0x14));
    0x00016cb8 ldr r7, [r5, 0x64]                    |     r7 = *((r5 + 0x64));
    0x00016cba ldr r7, [r3, 0x14]                    |     r7 = *((r3 + 0x14));
    0x00016cbc strb r6, [r5, 0xd]                    |     *((r5 + 0xd)) = r6;
    0x00016cbe str r4, [r6, 0x14]                    |     *((r6 + 0x14)) = r4;
    0x00016cc0 str r6, [r5, 0x34]                    |     *((r5 + 0x34)) = r6;
    0x00016cc2 cmp r6, 0x65                          |     
    0x00016cc4 subs r2, 0x63                         |     r2 -= 0x63;
    0x00016cc6 adds r4, 0x34                         |     r4 += 0x34;
    0x00016cc8 movs r0, 0x35                         |     r0 = 0x35;
    0x00016cca movs r5, 0x5b                         |     r5 = 0x5b;
    0x00016ccc ldrb r3, [r6, r5]                     |     r3 = *((r6 + r5));
    0x00016cce strb r0, [r4, 0x10]                   |     *((r4 + 0x10)) = r0;
    0x00016cd0 strb r1, [r7, 1]                      |     *((r7 + 1)) = r1;
    0x00016cd2 movs r0, 0x65                         |     r0 = 0x65;
    0x00016cd4 movs r0, 0x3d                         |     r0 = 0x3d;
    0x00016cd6 strb r5, [r4, 0xc]                    |     *((r4 + 0xc)) = r5;
    0x00016cd8 movs r0, 0x2c                         |     r0 = 0x2c;
    0x00016cda strb r5, [r4, 9]                      |     *((r4 + 9)) = r5;
    0x00016cdc ldr r2, [r6, 0x74]                    |     r2 = *((r6 + 0x74));
    0x00016cde movs r0, 0x72                         |     r0 = 0x72;
    0x00016ce0 movs r0, 0x3d                         |     r0 = 0x3d;
    0x00016ce2 strb r5, [r4, 0xc]                    |     *((r4 + 0xc)) = r5;
    0x00016ce4 movs r0, 0x2c                         |     r0 = 0x2c;
    0x00016ce6 strb r3, [r4, 0x15]                   |     *((r4 + 0x15)) = r3;
    0x00016ce8 strb r2, [r6, 9]                      |     *((r6 + 9)) = r2;
    0x00016cea ldr r5, [r4, 0x64]                    |     r5 = *((r4 + 0x64));
    0x00016cec movs r0, 0x74                         |     r0 = 0x74;
    0x00016cee strb r3, [r6, 0x11]                   |     *((r6 + 0x11)) = r3;
    0x00016cf0 strb r1, [r4, 0x11]                   |     *((r4 + 0x11)) = r1;
    0x00016cf2 movs r0, 0x65                         |     r0 = 0x65;
    0x00016cf4 movs r0, 0x3d                         |     r0 = 0x3d;
    0x00016cf6 strb r5, [r4, 0xc]                    |     *((r4 + 0xc)) = r5;
    0x00016cf8 movs r0, r0                           |     
    0x00016cfa movs r0, r0                           |     
    0x00016cfc str r1, [r4, 0x34]                    |     *((r4 + 0x34)) = r1;
    0x00016cfe ldr r4, [r6, 0x14]                    |     r4 = *((r6 + 0x14));
    0x00016d00 ldr r7, [r5, 0x64]                    |     r7 = *((r5 + 0x64));
    0x00016d02 ldr r7, [r3, 0x14]                    |     r7 = *((r3 + 0x14));
    0x00016d04 strb r6, [r5, 0xd]                    |     *((r5 + 0xd)) = r6;
    0x00016d06 str r4, [r6, 0x14]                    |     *((r6 + 0x14)) = r4;
    0x00016d08 str r6, [r5, 0x34]                    |     *((r5 + 0x34)) = r6;
    0x00016d0a cmp r6, 0x65                          |     
    0x00016d0c subs r2, 0x63                         |     r2 -= 0x63;
    0x00016d0e adds r5, 0x34                         |     r5 += 0x34;
    0x00016d10 movs r0, 0x31                         |     r0 = 0x31;
    0x00016d12 movs r5, 0x5b                         |     r5 = 0x5b;
    0x00016d14 ldrb r3, [r6, r5]                     |     r3 = *((r6 + r5));
    0x00016d16 subs r0, r4, r4                       |     r0 = r4 - r4;
    0x00016d18 adds r3, 0x5b                         |     r3 += 0x5b;
    0x00016d1a subs r3, 0x33                         |     r3 -= 0x33;
    0x00016d1c adds r1, 0x30                         |     r1 += 0x30;
    0x00016d1e str r5, [r5, 0x34]                    |     *((r5 + 0x34)) = r5;
    0x00016d20 str r0, [r5, 0x14]                    |     *((r5 + 0x14)) = r0;
    0x00016d22 str r6, [r5, 0x74]                    |     *((r5 + 0x74)) = r6;
    0x00016d24 ldr r1, [r5, 0x64]                    |     r1 = *((r5 + 0x64));
    0x00016d26 movs r0, 0x67                         |     r0 = 0x67;
    0x00016d28 str r1, [r4, 0x34]                    |     *((r4 + 0x34)) = r1;
    0x00016d2a ldr r4, [r6, 0x14]                    |     r4 = *((r6 + 0x14));
    0x00016d2c ldr r7, [r5, 0x64]                    |     r7 = *((r5 + 0x64));
    0x00016d2e ldr r0, [r4, 0x10]                    |     r0 = *((r4 + 0x10));
    0x00016d30 strb r6, [r5, 0xd]                    |     *((r5 + 0xd)) = r6;
    0x00016d32 str r4, [r6, 0x14]                    |     *((r6 + 0x14)) = r4;
    0x00016d34 str r6, [r5, 0x34]                    |     *((r5 + 0x34)) = r6;
    0x00016d36 movs r0, 0x65                         |     r0 = 0x65;
    0x00016d38 movs r5, 0x5b                         |     r5 = 0x5b;
    0x00016d3a ldrb r0, [r6, r5]                     |     r0 = *((r6 + r5));
    0x00016d3c strb r0, [r4, 0xc]                    |     *((r4 + 0xc)) = r0;
    0x00016d3e str r4, [r6, 0x14]                    |     *((r6 + 0x14)) = r4;
    0x00016d40 str r4, [r6, 0x54]                    |     *((r6 + 0x54)) = r4;
    0x00016d42 movs r5, 0x20                         |     r5 = 0x20;
    0x00016d44 movs r0, 0x73                         |     r0 = 0x73;
    0x00016d46 subs r6, 0x2d                         |     r6 -= 0x2d;
    0x00016d48 movs r5, 0x20                         |     r5 = 0x20;
    0x00016d4a movs r0, 0x73                         |     r0 = 0x73;
    0x00016d4c ldrh r3, [r3, r4]                     |     r3 = *((r3 + r4));
    0x00016d4e adds r7, 0x33                         |     r7 += 0x33;
    0x00016d50 adds r0, 0x3b                         |     r0 += 0x3b;
    0x00016d52 ldr r0, [r6, 0x50]                    |     r0 = *((r6 + 0x50));
    0x00016d54 movs r0, r0                           |     
    0x00016d56 movs r0, r0                           |     
    0x00016d58 str r1, [r4, 0x34]                    |     *((r4 + 0x34)) = r1;
    0x00016d5a ldr r4, [r6, 0x14]                    |     r4 = *((r6 + 0x14));
    0x00016d5c ldr r7, [r5, 0x64]                    |     r7 = *((r5 + 0x64));
    0x00016d5e ldr r7, [r3, 0x14]                    |     r7 = *((r3 + 0x14));
    0x00016d60 strb r6, [r5, 0xd]                    |     *((r5 + 0xd)) = r6;
    0x00016d62 str r4, [r6, 0x14]                    |     *((r6 + 0x14)) = r4;
    0x00016d64 str r6, [r5, 0x34]                    |     *((r5 + 0x34)) = r6;
    0x00016d66 cmp r6, 0x65                          |     
    0x00016d68 subs r2, 0x63                         |     r2 -= 0x63;
    0x00016d6a adds r5, 0x34                         |     r5 += 0x34;
    0x00016d6c movs r0, 0x32                         |     r0 = 0x32;
    0x00016d6e movs r5, 0x5b                         |     r5 = 0x5b;
    0x00016d70 ldrb r3, [r6, r5]                     |     r3 = *((r6 + r5));
    0x00016d72 add r0, r4                            |     r0 += r4;
    0x00016d74 strb r5, [r4, 0xd]                    |     *((r4 + 0xd)) = r5;
    0x00016d76 strb r4, [r6, 9]                      |     *((r6 + 9)) = r4;
    0x00016d78 ldrb r7, [r5, 5]                      |     r7 = *((r5 + 5));
    0x00016d7a str r5, [r4, 0x44]                    |     *((r4 + 0x44)) = r5;
    0x00016d7c movs r0, 0x2c                         |     r0 = 0x2c;
    0x00016d7e ldr r5, [r6, 0x64]                    |     r5 = *((r6 + 0x64));
    0x00016d80 str r2, [r6, 0x54]                    |     *((r6 + 0x54)) = r2;
    0x00016d82 ldr r6, [r4, 0x14]                    |     r6 = *((r4 + 0x14));
    0x00016d84 str r6, [r5, 0x74]                    |     *((r5 + 0x74)) = r6;
    0x00016d86 movs r0, r0                           |     
    0x00016d88 str r1, [r4, 0x34]                    |     *((r4 + 0x34)) = r1;
    0x00016d8a ldr r4, [r6, 0x14]                    |     r4 = *((r6 + 0x14));
    0x00016d8c ldr r7, [r5, 0x64]                    |     r7 = *((r5 + 0x64));
    0x00016d8e ldr r7, [r3, 0x14]                    |     r7 = *((r3 + 0x14));
    0x00016d90 strb r6, [r5, 0xd]                    |     *((r5 + 0xd)) = r6;
    0x00016d92 str r4, [r6, 0x14]                    |     *((r6 + 0x14)) = r4;
    0x00016d94 str r6, [r5, 0x34]                    |     *((r5 + 0x34)) = r6;
    0x00016d96 cmp r6, 0x65                          |     
    0x00016d98 subs r2, 0x63                         |     r2 -= 0x63;
    0x00016d9a adds r5, 0x34                         |     r5 += 0x34;
    0x00016d9c movs r0, 0x35                         |     r0 = 0x35;
    0x00016d9e movs r5, 0x5b                         |     r5 = 0x5b;
    0x00016da0 ldrb r3, [r6, r5]                     |     r3 = *((r6 + r5));
    0x00016da2 bx r4                                 |     return uint32_t (*r4)() ();
                                                     | }

[*] Function printf used 5 times actionengined