[*] Binary protection state of libparam.so.1.0
Full RELRO Canary found NX enabled DSO No RPATH No RUNPATH No Symbols
[*] Function fprintf tear down of libparam.so.1.0
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libparam.so.1.0 @ 0x19f8 */
| #include <stdint.h>
|
; (fcn) fcn.000019f8 () | void fcn_000019f8 (int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_14h;
| int16_t var_1ch;
| int16_t var_21ch;
| int16_t var_224h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x000019f8 svcmi 0xf0e92d | __asm ("svcmi 0xf0e92d");
0x000019fc sub.w sp, sp, 0x224 |
0x00001a00 strd r1, r3, [sp, 8] | __asm ("strd r1, r3, [var_ch]");
0x00001a04 mov sl, r0 | sl = r0;
0x00001a06 mov r7, r2 | r7 = r2;
0x00001a08 ldr r1, [pc, 0x2d8] |
0x00001a0a ldr r3, [pc, 0x2dc] | r3 = *(0x1cea);
0x00001a0c ldr r4, [pc, 0x2dc] |
0x00001a0e add r1, pc | r1 = 0x36f6;
0x00001a10 ldr r3, [r1, r3] |
0x00001a12 add r4, pc | r4 = 0x3702;
0x00001a14 ldr r3, [r3] | r3 = *(0x36f6);
0x00001a16 str r3, [sp, 0x21c] | var_21ch = r3;
0x00001a18 mov.w r3, 0 | r3 = 0;
0x00001a1c cmp r2, 0 |
| if (r2 == 0) {
0x00001a1e beq.w 0x1b48 | goto label_8;
| }
0x00001a22 ldr r1, [pc, 0x2cc] |
0x00001a24 add r1, pc | r1 = 0x371a;
| label_0:
0x00001a26 ldr r3, [pc, 0x2cc] | r3 = *(0x1cf6);
0x00001a28 ldr r0, [pc, 0x2cc] |
0x00001a2a ldr r3, [r4, r3] | r3 = *((r4 + r3));
0x00001a2c add r0, pc | r0 = "libparam: Called %s with callback = NULL.";
0x00001a2e ldr r2, [r3] | r2 = *(0x1cf6);
0x00001a30 str r3, [sp, 0x10] | var_10h = r3;
0x00001a32 blx 0x1624 | r0 = fcn_00001624 ();
0x00001a36 mov fp, r0 |
0x00001a38 blx 0x17f0 | r0 = fcn_000017f0 ();
0x00001a3c mov r5, r0 | r5 = r0;
0x00001a3e cmp r0, 0 |
| if (r0 == 0) {
0x00001a40 beq.w 0x1cce | goto label_9;
| }
0x00001a44 mov r1, r0 | r1 = r0;
0x00001a46 ldr r0, [pc, 0x2b4] |
0x00001a48 add r0, pc | r0 = 0x374a;
0x00001a4a blx 0x1624 | fcn_00001624 ();
0x00001a4e movs r1, 0 | r1 = 0;
0x00001a50 mov sb, r0 | sb = r0;
0x00001a52 mov r0, r5 | r0 = r5;
0x00001a54 blx 0x1678 | r0 = rename (r0, r1);
0x00001a58 subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 < r0) {
0x00001a5a blt 0x1b4e | goto label_10;
| }
0x00001a5c movs r1, 2 | r1 = 2;
0x00001a5e blx 0x169c | r0 = strlen (r0);
0x00001a62 cmp r0, 0 |
| if (r0 < 0) {
0x00001a64 blt.w 0x1bc4 | goto label_11;
| }
0x00001a68 ldr r1, [pc, 0x294] |
0x00001a6a mov r0, r4 | r0 = r4;
0x00001a6c add r1, pc | r1 = 0x3770;
0x00001a6e blx 0x1468 | r0 = fdopen ();
0x00001a72 mov r8, r0 | r8 = r0;
0x00001a74 cmp r0, 0 |
| if (r0 == 0) {
0x00001a76 beq.w 0x1cba | goto label_12;
| }
0x00001a7a mov r0, sb | r0 = sb;
0x00001a7c blx 0x15d0 | r0 = g_ascii_strdown ();
0x00001a80 cmp r0, 0 |
| if (r0 < 0) {
0x00001a82 bge 0x1a90 |
0x00001a84 blx 0x16cc | r0 = cli_cleanupGroupContext ();
0x00001a88 ldr r3, [r0] | r3 = *(r0);
0x00001a8a cmp r3, 2 |
| if (r3 != 2) {
0x00001a8c bne.w 0x1c34 | goto label_13;
| }
| }
0x00001a90 mov.w r2, 0x1a4 | r2 = 0x1a4;
0x00001a94 movs r1, 0xc2 | r1 = 0xc2;
0x00001a96 mov r0, sb | r0 = sb;
0x00001a98 blx 0x1678 | r0 = rename (r0, r1);
0x00001a9c subs r3, r0, 0 | r3 = r0 - 0;
0x00001a9e str r3, [sp, 0x14] | var_14h = r3;
| if (r3 < r0) {
0x00001aa0 blt.w 0x1c1e | goto label_14;
| }
0x00001aa4 ldr r1, [pc, 0x25c] |
0x00001aa6 add r1, pc | r1 = 0x37ae;
0x00001aa8 blx 0x1468 | r0 = fdopen ();
0x00001aac mov r6, r0 | r6 = r0;
0x00001aae cmp r0, 0 |
| if (r0 == 0) {
0x00001ab0 beq.w 0x1bde | goto label_15;
| }
0x00001ab4 add r4, sp, 0x1c | r4 += var_1ch;
0x00001ab6 b 0x1ad6 |
| while (r0 != 0) {
0x00001ab8 mov r1, r7 | r1 = r7;
0x00001aba mov r0, r4 | r0 = r4;
0x00001abc bl 0x1954 | r0 = fcn_00001954 (r0);
0x00001ac0 mov r1, r0 | r1 = r0;
0x00001ac2 mov r0, sl | r0 = sl;
0x00001ac4 blx 0x15b8 | r0 = fcn_000015b8 ();
0x00001ac8 cmp r0, 0 |
| if (r0 == 0) {
0x00001aca beq.w 0x1bfe | goto label_16;
| }
0x00001ace mov r1, r6 | r1 = r6;
0x00001ad0 mov r0, r4 | r0 = r4;
0x00001ad2 blx 0x1844 | fcn_00001844 ();
0x00001ad6 mov r2, r8 | r2 = r8;
0x00001ad8 mov.w r1, 0x200 | r1 = 0x200;
0x00001adc mov r0, r4 | r0 = r4;
0x00001ade blx 0x154c | r0 = g_cond_signal ();
0x00001ae2 cmp r0, 0 |
0x00001ae4 bne 0x1ab8 |
| }
0x00001ae6 cmp r7, 0 |
| if (r7 != 0) {
0x00001ae8 bne 0x1ba6 | goto label_17;
| }
0x00001aea ldr r3, [sp, 8] | r3 = var_8h;
0x00001aec cmp r3, 0 |
| if (r3 == 0) {
0x00001aee beq.w 0x1c9c | goto label_18;
| }
| label_6:
0x00001af2 ldr r1, [pc, 0x214] |
0x00001af4 mov r2, sl | r2 = sl;
0x00001af6 ldr r3, [sp, 8] | r3 = var_8h;
0x00001af8 mov r0, r6 | r0 = r6;
0x00001afa add r1, pc | r1 = 0x3808;
0x00001afc blx 0x14c8 | g_fprintf ()
| label_5:
0x00001b00 mov r0, r6 | r0 = r6;
0x00001b02 blx 0x1518 | r0 = fcn_00001518 ();
0x00001b06 mov r4, r0 | r4 = r0;
0x00001b08 cmp r0, 0 |
| if (r0 != 0) {
0x00001b0a bne.w 0x1c3c | goto label_19;
| }
0x00001b0e ldr r0, [sp, 0x14] | r0 = var_14h;
0x00001b10 blx 0x1480 | r0 = fsync ();
0x00001b14 cmp r0, 0 |
| if (r0 < 0) {
0x00001b16 blt.w 0x1ca4 | goto label_20;
| }
0x00001b1a mov r0, r8 | r0 = r8;
0x00001b1c blx 0x1738 | g_hash_table_destroy ();
0x00001b1e mcr p6, 0, r4, c12, c0, 1 | __asm ("mcr p6, 0, r4, c12, c0, 1");
0x00001b22 blx 0x1738 | g_hash_table_destroy ();
0x00001b26 mov r1, r5 | r1 = r5;
0x00001b28 mov r0, sb | r0 = sb;
0x00001b2a blx 0x1684 | r0 = exit (r0);
0x00001b2e cmp r0, 0 |
| if (r0 < 0) {
0x00001b30 bge 0x1b60 |
0x00001b32 ldr r2, [pc, 0x1d8] |
0x00001b34 mov r3, sb | r3 = sb;
0x00001b36 movs r1, 1 | r1 = 1;
0x00001b38 movs r0, 3 | r0 = 3;
0x00001b3a str r5, [sp] | *(sp) = r5;
0x00001b3c mov.w r4, -1 | r4 = -1;
0x00001b40 add r2, pc | r2 = 0x3852;
0x00001b42 blx 0x176c | fcn_0000176c ();
0x00001b46 b 0x1b60 | goto label_1;
| label_8:
0x00001b48 ldr r1, [pc, 0x1c4] |
0x00001b4a add r1, pc | r1 = 0x385e;
0x00001b4c b 0x1a26 | goto label_0;
| label_10:
0x00001b4e ldr r2, [pc, 0x1c4] |
0x00001b50 mov.w r4, -1 | r4 = -1;
0x00001b54 mov r3, r5 | r3 = r5;
0x00001b56 movs r1, 1 | r1 = 1;
0x00001b58 movs r0, 3 | r0 = 3;
0x00001b5a add r2, pc | r2 = 0x3874;
0x00001b5c blx 0x176c | fcn_0000176c ();
| }
| label_1:
0x00001b60 mov r0, fp | r0 = fp;
0x00001b62 blx 0x14e4 | fcn_000014e4 ();
0x00001b66 mov r0, r5 | r0 = r5;
0x00001b68 blx 0x14e4 | fcn_000014e4 ();
0x00001b6c mov r0, sb | r0 = sb;
0x00001b6e blx 0x14e4 | fcn_000014e4 ();
0x00001b72 ldr r2, [pc, 0x1a4] |
0x00001b74 ldr r3, [pc, 0x170] | r3 = *(0x1ce8);
0x00001b76 add r2, pc | r2 = "ChangeNotification";
0x00001b78 ldr r3, [r2, r3] | r3 = "ChangeNotification";
0x00001b7a ldr r2, [r3] | r2 = "ChangeNotification";
0x00001b7c ldr r3, [sp, 0x21c] | r3 = var_21ch;
0x00001b7e eors r2, r3 | r2 ^= r3;
0x00001b80 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00001b84 bne.w 0x1cca | goto label_21;
| }
0x00001b88 mov r0, r4 | r0 = r4;
0x00001b8a add.w sp, sp, 0x224 |
0x00001b8e pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| do {
0x00001b92 mov r0, r6 | r0 = r6;
0x00001b94 blx 0x157c | r0 = cli_getParamInGroup ();
0x00001b98 cmp r0, 0 |
| if (r0 <= 0) {
0x00001b9a ble 0x1c44 | goto label_22;
| }
0x00001b9c mov r0, r6 | r0 = r6;
0x00001b9e blx 0x1708 | r0 = fileno (r0);
0x00001ba2 cmp r0, 0x7d |
| if (r0 == 0x7d) {
0x00001ba4 beq 0x1c52 | goto label_23;
| }
| label_17:
0x00001ba6 movs r2, 1 | r2 = 1;
0x00001ba8 mvn r1, 1 | r1 = ~1;
0x00001bac mov r0, r6 | r0 = r6;
0x00001bae blx 0x182c | r0 = fcn_0000182c ();
0x00001bb2 cmp r0, 0 |
0x00001bb4 beq 0x1b92 |
| } while (r0 == 0);
0x00001bb6 ldr r2, [pc, 0x164] |
0x00001bb8 movs r1, 1 | r1 = 1;
0x00001bba movs r0, 3 | r0 = 3;
0x00001bbc add r2, pc | r2 = 0x38de;
0x00001bbe blx 0x176c | fcn_0000176c ();
0x00001bc2 b 0x1c0c | goto label_4;
| label_11:
0x00001bc4 ldr r2, [pc, 0x158] |
0x00001bc6 mov r3, r5 | r3 = r5;
0x00001bc8 movs r1, 1 | r1 = 1;
0x00001bca movs r0, 3 | r0 = 3;
0x00001bcc add r2, pc | r2 = 0x38f0;
0x00001bce blx 0x176c | fcn_0000176c ();
| label_7:
0x00001bd2 mov r0, r4 | r0 = r4;
0x00001bd4 mov.w r4, -1 | r4 = -1;
0x00001bd8 blx 0x1850 | fcn_00001850 ();
0x00001bdc b 0x1b60 | goto label_1;
| label_15:
0x00001bde ldr r2, [pc, 0x144] |
0x00001be0 mov r3, sb | r3 = sb;
0x00001be2 movs r1, 1 | r1 = 1;
0x00001be4 movs r0, 3 | r0 = 3;
0x00001be6 add r2, pc | r2 = 0x3910;
0x00001be8 blx 0x176c | fcn_0000176c ();
0x00001bec mov r0, r8 | r0 = r8;
0x00001bee blx 0x1738 | g_hash_table_destroy ();
0x00001bf2 ldr r0, [sp, 0x14] | r0 = var_14h;
0x00001bf4 blx 0x1850 | fcn_00001850 ();
| do {
0x00001bf8 mov.w r4, -1 | r4 = -1;
0x00001bfc b 0x1b60 | goto label_1;
| label_16:
0x00001bfe ldr r2, [pc, 0x128] |
0x00001c00 mov r3, sl | r3 = sl;
0x00001c02 add r2, pc | r2 = 0x3930;
| label_3:
0x00001c04 movs r1, 1 | r1 = 1;
0x00001c06 movs r0, 3 | r0 = 3;
0x00001c08 blx 0x176c | fcn_0000176c ();
| label_4:
0x00001c0c mov r0, r8 | r0 = r8;
0x00001c0e mov.w r4, -1 | r4 = -1;
0x00001c12 blx 0x1738 | g_hash_table_destroy ();
0x00001c16 mov r0, r6 | r0 = r6;
0x00001c18 blx 0x1738 | g_hash_table_destroy ();
0x00001c1c b 0x1b60 | goto label_1;
| label_14:
0x00001c1e ldr r2, [pc, 0x10c] |
0x00001c20 mov r3, sb | r3 = sb;
0x00001c22 add r2, pc | r2 = 0x3954;
| label_2:
0x00001c24 movs r1, 1 | r1 = 1;
0x00001c26 movs r0, 3 | r0 = 3;
0x00001c28 blx 0x176c | fcn_0000176c ();
0x00001c2c mov r0, r8 | r0 = r8;
0x00001c2e blx 0x1738 | g_hash_table_destroy ();
0x00001c32 b 0x1bf8 |
| } while (1);
| label_13:
0x00001c34 ldr r2, [pc, 0xf8] |
0x00001c36 mov r3, sb | r3 = sb;
0x00001c38 add r2, pc | r2 = 0x396c;
0x00001c3a b 0x1c24 | goto label_2;
| label_19:
0x00001c3c ldr r2, [pc, 0xf4] |
0x00001c3e mov r3, sb | r3 = sb;
0x00001c40 add r2, pc | r2 = 0x3978;
0x00001c42 b 0x1c04 | goto label_3;
| label_22:
0x00001c44 ldr r2, [pc, 0xf0] |
0x00001c46 movs r1, 1 | r1 = 1;
0x00001c48 movs r0, 3 | r0 = 3;
0x00001c4a add r2, pc | r2 = 0x3986;
0x00001c4c blx 0x176c | fcn_0000176c ();
0x00001c50 b 0x1c0c | goto label_4;
| label_23:
0x00001c52 movs r2, 1 | r2 = 1;
0x00001c54 mov.w r1, -1 | r1 = -1;
0x00001c58 mov r0, r6 | r0 = r6;
0x00001c5a blx 0x182c | r0 = fcn_0000182c ();
| if (r0 == 0) {
0x00001c5e cbnz r0, 0x1cac |
0x00001c60 ldr r3, [sp, 0x10] | r3 = var_10h;
0x00001c62 ldr r7, [r3] | r7 = *(r3);
0x00001c64 mov r0, r7 | r0 = r7;
0x00001c66 blx 0x15a0 | r0 = stack_chk_fail ();
0x00001c6a mov r4, r0 | r4 = r0;
0x00001c6c ldrb r0, [r7] | r0 = *(r7);
0x00001c6e blx 0x1600 | g_strcmp0 ();
0x00001c72 ldr r3, [sp, 0xc] | r3 = var_ch;
0x00001c74 mov r2, sl | r2 = sl;
0x00001c76 ldr r1, [pc, 0xc4] |
0x00001c78 str r3, [sp, 4] | var_4h = r3;
0x00001c7a mov r3, r4 | r3 = r4;
0x00001c7c strb r0, [r4] | *(r4) = r0;
0x00001c7e add r1, pc | r1 = 0x39c0;
0x00001c80 mov r0, r6 | r0 = r6;
0x00001c82 str.w sl, [sp] | __asm ("str.w sl, [sp]");
0x00001c86 blx 0x14c8 | g_fprintf ()
0x00001c8a ldr r1, [pc, 0xb4] |
0x00001c8c mov r0, r6 | r0 = r6;
0x00001c8e add r1, pc | r1 = 0x39d4;
0x00001c90 blx 0x14c8 | g_fprintf ()
0x00001c94 mov r0, r4 | r0 = r4;
0x00001c96 blx 0x14e4 | fcn_000014e4 ();
0x00001c9a b 0x1b00 | goto label_5;
| label_18:
0x00001c9c ldr r3, [pc, 0xa4] |
0x00001c9e add r3, pc | r3 = 0x39e6;
0x00001ca0 str r3, [sp, 8] | var_8h = r3;
0x00001ca2 b 0x1af2 | goto label_6;
| label_20:
0x00001ca4 ldr r2, [pc, 0xa0] |
0x00001ca6 mov r3, sb | r3 = sb;
0x00001ca8 add r2, pc | r2 = 0x39f4;
0x00001caa b 0x1c04 | goto label_3;
| }
0x00001cac ldr r2, [pc, 0x9c] |
0x00001cae movs r1, 1 | r1 = 1;
0x00001cb0 movs r0, 3 | r0 = 3;
0x00001cb2 add r2, pc | r2 = 0x3a02;
0x00001cb4 blx 0x176c | fcn_0000176c ();
0x00001cb8 b 0x1c0c | goto label_4;
| label_12:
0x00001cba ldr r2, [pc, 0x94] |
0x00001cbc mov r3, r5 | r3 = r5;
0x00001cbe movs r1, 1 | r1 = 1;
0x00001cc0 movs r0, 3 | r0 = 3;
0x00001cc2 add r2, pc | r2 = 0x3a18;
0x00001cc4 blx 0x176c | fcn_0000176c ();
0x00001cc8 b 0x1bd2 | goto label_7;
| label_21:
0x00001cca blx 0x15ac | g_ascii_strcasecmp ();
| label_9:
0x00001cce ldr r2, [pc, 0x84] |
0x00001cd0 mov r3, fp | r3 = fp;
0x00001cd2 movs r1, 1 | r1 = 1;
0x00001cd4 movs r0, 3 | r0 = 3;
0x00001cd6 mov sb, r5 | sb = r5;
0x00001cd8 mov.w r4, -1 | r4 = -1;
0x00001cdc add r2, pc | r2 = 0x3a36;
0x00001cde blx 0x176c | fcn_0000176c ();
0x00001ce2 b 0x1b60 | goto label_1;
| }
[*] Function fprintf used 4 times libparam.so.1.0