[*] 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