[*] Binary protection state of netd_migrate
Full RELRO Canary found NX enabled PIE enabled No RPATH No RUNPATH No Symbols
[*] Function system tear down of netd_migrate
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/netd_migrate @ 0x63f0 */
| #include <stdint.h>
|
; (fcn) fcn.000063f0 () | void fcn_000063f0 (int16_t arg_164h, int16_t arg_168h, int16_t arg_28h, uint32_t arg1, uint32_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_0h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x000063f0 svcmi 0x70e92d | __asm ("svcmi 0x70e92d");
0x000063f4 sub sp, 8 |
0x000063f6 ldr.w sb, [sp, 0x28] | sb = *(arg_28h);
0x000063fa cmp r0, 0 |
| if (arg_28h == ) {
0x000063fc beq 0x649a | goto label_2;
| }
0x000063fe mov r4, r1 | r4 = r1;
0x00006400 cmp r1, 0 |
| if (r1 == 0) {
0x00006402 beq 0x64ce | goto label_3;
| }
0x00006404 mov r6, r2 | r6 = r2;
0x00006406 mov r8, r3 | r8 = r3;
0x00006408 mov r5, r0 | r5 = r0;
0x0000640a cmp r3, 0 |
| if (r3 != 0) {
0x0000640c bne 0x64b2 | goto label_4;
| }
0x0000640e blx 0x2854 | r0 = fcn_00002854 ();
0x00006412 mov sl, r0 | sl = r0;
0x00006414 mov r2, r6 | r2 = r6;
0x00006416 mov r0, r5 | r0 = r5;
0x00006418 movw r1, 0x8041 | r1 = 0x8041;
0x0000641c str.w r8, [sl] | __asm ("str.w r8, [sl]");
0x00006420 blx 0x2214 | r0 = fcn_00002214 ();
0x00006424 adds r3, r0, 1 | r3 = r0 + 1;
0x00006426 mov r5, r0 | r5 = r0;
| if (r3 == r0) {
0x00006428 beq 0x64e8 | goto label_5;
| }
0x0000642a ldr.w fp, [pc, 0x13c] |
0x0000642e add fp, pc | fp = 0xc99c;
0x00006430 add.w r1, fp, 0x164 | r1 += arg_164h;
0x00006434 blx 0x25b0 | r0 = fcn_000025b0 ();
0x00006438 mov r6, r0 | r6 = r0;
0x0000643a cmp r0, 0 |
| if (r0 == 0) {
0x0000643c beq.w 0x6544 | goto label_6;
| }
0x00006440 mov r3, r4 | r3 = r4;
0x00006442 add.w r2, fp, 0x168 | r2 += arg_168h;
0x00006446 movs r1, 1 | r1 = 1;
0x00006448 blx 0x2688 | r0 = fcn_00002688 ();
0x0000644c cmp r0, 0 |
| if (r0 < 0) {
0x0000644e blt 0x6518 | goto label_7;
| }
0x00006450 mov r0, r6 | r0 = r6;
0x00006452 blx 0x2330 | r0 = system (r0)
0x00006456 cmp r0, 0 |
| if (r0 == 0) {
0x00006458 beq 0x6510 | goto label_8;
| }
0x0000645a blx 0x241c | fcn_0000241c ();
0x0000645e ldr.w r6, [sl] | r6 = *(sl);
0x00006462 mov r4, r0 | r4 = r0;
0x00006464 mov r0, r6 | r0 = r6;
0x00006466 blx 0x2744 | g_bus_unown_name ();
0x0000646a mov r2, r6 | r2 = r6;
0x0000646c mov r3, r0 | r3 = r0;
0x0000646e mov r1, r4 | r1 = r4;
0x00006470 mov r0, sb | r0 = sb;
0x00006472 blx 0x26f8 | fcn_000026f8 ();
0x00006474 invalid |
| do {
| label_1:
0x00006476 mov r0, r5 | r0 = r5;
0x00006478 blx 0x25ec | fcn_000025ec ();
0x0000647c adds r0, 1 | r0++;
| if (r0 == 1) {
0x0000647e bne 0x6508 |
0x00006480 ldr.w r0, [sl] | r0 = *(sl);
0x00006484 blx 0x2744 | g_bus_unown_name ();
0x00006488 ldr r1, [pc, 0xe0] |
0x0000648a mov r2, r0 | r2 = r0;
0x0000648c movs r0, 3 | r0 = 3;
0x0000648e add r1, pc |
0x00006490 add.w r1, r1, 0x16c | r1 = 0xcb6a;
0x00006494 bl 0x4ff4 | fcn_00004ff4 (r0);
0x00006498 b 0x6508 | goto label_0;
| label_2:
0x0000649a ldr r1, [pc, 0xd4] |
0x0000649c movw r2, 0x189 | r2 = 0x189;
0x000064a0 add r1, pc | r1 = 0xca16;
0x000064a2 add.w r4, r1, 0x144 | r4 = r1 + 0x144;
0x000064a6 add.w r3, r1, 0x124 | r3 = r1 + 0x124;
0x000064aa str r4, [sp] | *(sp) = r4;
0x000064ac adds r1, 0x74 | r1 += 0x74;
0x000064ae blx 0x2434 | fcn_00002434 ();
| label_4:
0x000064b2 mov r0, r1 | r0 = r1;
0x000064b4 blx 0x24e0 | unlink (r0);
0x000064b8 mov r3, r6 | r3 = r6;
0x000064ba mov r2, r0 | r2 = r0;
0x000064bc mov r1, r4 | r1 = r4;
0x000064be mov r0, r5 | r0 = r5;
0x000064c0 str.w sb, [sp, 0x28] | __asm ("str.w sb, [arg_28h]");
0x000064c4 add sp, 8 |
0x000064c6 pop.w {r4, r5, r6, r8, sb, sl, fp, lr} |
0x000064ca b.w 0x2504 | void (*0x2504)() ();
| label_3:
0x000064ce ldr r1, [pc, 0xa4] |
0x000064d0 mov r0, r4 | r0 = r4;
0x000064d2 mov.w r2, 0x18a | r2 = 0x18a;
0x000064d6 add r1, pc | r1 = 0xca50;
0x000064d8 add.w r4, r1, 0x154 | r4 = r1 + 0x154;
0x000064dc add.w r3, r1, 0x124 | r3 = r1 + 0x124;
0x000064e0 str r4, [sp] | *(sp) = r4;
0x000064e2 adds r1, 0x74 | r1 += 0x74;
0x000064e4 blx 0x2434 | fcn_00002434 ();
| label_5:
0x000064e8 blx 0x241c | fcn_0000241c ();
0x000064ec ldr.w r5, [sl] | r5 = *(sl);
0x000064f0 mov r4, r0 | r4 = r0;
0x000064f2 mov r0, r5 | r0 = r5;
0x000064f4 blx 0x2744 | g_bus_unown_name ();
0x000064f8 mov r2, r5 | r2 = r5;
0x000064fa mov r3, r0 | r3 = r0;
0x000064fc mov r1, r4 | r1 = r4;
0x000064fe mov r0, sb | r0 = sb;
0x00006500 blx 0x26f8 | fcn_000026f8 ();
0x00006504 str.w r8, [sl] | __asm ("str.w r8, [sl]");
| }
| label_0:
0x00006508 movs r0, 0 | r0 = 0;
0x0000650a add sp, 8 |
0x0000650c pop.w {r4, r5, r6, r8, sb, sl, fp, pc} |
| label_8:
0x00006510 movs r0, 1 | r0 = 1;
0x00006512 add sp, 8 |
0x00006514 pop.w {r4, r5, r6, r8, sb, sl, fp, pc} |
0x00006516 ldrh r0, [r6, 0x3a] | r0 = *((r6 + 0x3a));
| label_7:
0x00006518 blx 0x241c | fcn_0000241c ();
0x0000651c ldr.w fp, [sl] | fp = *(sl);
0x00006520 mov r4, r0 | r4 = r0;
0x00006522 mov r0, fp | r0 = fp;
0x00006524 blx 0x2744 | g_bus_unown_name ();
0x00006528 mov r2, fp | r2 = fp;
0x0000652a mov r3, r0 | r3 = r0;
0x0000652c mov r1, r4 | r1 = r4;
0x0000652e mov r0, sb | r0 = sb;
0x00006530 blx 0x26f8 | fcn_000026f8 ();
0x00006534 mov r0, r6 | r0 = r6;
0x00006536 str.w r8, [sl] | __asm ("str.w r8, [sl]");
0x0000653a blx 0x2330 | r0 = system (r0)
0x0000653e cmp r0, 0 |
0x00006540 bne 0x6476 |
| } while (r0 != 0);
0x00006542 b 0x6508 | goto label_0;
| label_6:
0x00006544 blx 0x241c | fcn_0000241c ();
0x00006548 ldr.w r8, [sl] | r8 = *(sl);
0x0000654c mov r4, r0 | r4 = r0;
0x0000654e mov r0, r8 | r0 = r8;
0x00006550 blx 0x2744 | g_bus_unown_name ();
0x00006554 mov r2, r8 | r2 = r8;
0x00006556 mov r3, r0 | r3 = r0;
0x00006558 mov r1, r4 | r1 = r4;
0x0000655a mov r0, sb | r0 = sb;
0x0000655c blx 0x26f8 | fcn_000026f8 ();
0x00006560 str.w r6, [sl] | __asm ("str.w r6, [sl]");
0x00006564 b 0x6476 | goto label_1;
| }
[*] Function system used 3 times netd_migrate