[*] Binary protection state of libserved-api-common.so.1.0.35
Full RELRO Canary found NX enabled DSO No RPATH No RUNPATH No Symbols
[*] Function printf tear down of libserved-api-common.so.1.0.35
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/libserved-api-common.so.1.0.35 @ 0xa0dc */
| #include <stdint.h>
|
; (fcn) sym.resource_get_default_interface () | void resource_get_default_interface (int16_t arg_358h, int16_t arg2, int16_t arg3) {
| int16_t var_4h;
| int16_t var_8h_2;
| int16_t var_ch_2;
| int16_t var_0h;
| int16_t var_10h;
| int16_t var_60h;
| r1 = arg2;
| r2 = arg3;
0x0000a0dc mvnsmi lr, sp, lsr 18 | __asm ("mvnsmi lr, sp, lsr 18");
0x0000a0e0 mov r4, r1 | r4 = r1;
0x0000a0e2 ldr r5, [pc, 0xe8] |
0x0000a0e4 mov r1, r2 | r1 = r2;
0x0000a0e6 mov r2, r4 | r2 = r4;
0x0000a0e8 sub sp, 0x10 |
0x0000a0ea ldr r4, [pc, 0xe4] | r4 = *(0xa1d2);
0x0000a0ec add r5, pc | r5 = 0x142be;
0x0000a0ee ldr.w r8, [sp, 0x28] | r8 = var_0h;
0x0000a0f2 ldr r7, [pc, 0xe0] |
0x0000a0f4 ldr r4, [r5, r4] |
0x0000a0f6 add r7, pc | r7 = 0x142d0;
0x0000a0f8 ldr r4, [r4] | r4 = imp.g_str_hash;
0x0000a0fa str r4, [sp, 0xc] | var_ch_2 = r4;
0x0000a0fc mov.w r4, 0 | r4 = 0;
0x0000a100 blx 0x6208 | r0 = fcn_00006208 ();
0x0000a104 mov r6, r0 | r6 = r0;
0x0000a106 blx 0x5ef4 | r0 = g_strdup_printf ()
0x0000a10a cmp r0, 1 |
| if (r0 == 1) {
0x0000a10c bne 0xa146 |
0x0000a10e movs r1, 0 | r1 = 0;
0x0000a110 mov r0, r6 | r0 = r6;
0x0000a112 blx 0x65ac | fcn_000065ac ();
0x0000a116 blx 0x5f04 | r0 = fcn_00005f04 ();
0x0000a11a mov r4, r0 | r4 = r0;
| label_0:
0x0000a11c ldr r3, [pc, 0xb8] | r3 = *(0xa1d8);
0x0000a11e mov r0, r6 | r0 = r6;
0x0000a120 ldr r3, [r7, r3] | r3 = *((r7 + r3));
0x0000a122 mov r1, r3 | r1 = r3;
0x0000a124 str r3, [sp, 4] | var_4h = r3;
0x0000a126 blx 0x5d00 | fcn_00005d00 ();
0x0000a12a ldr r2, [pc, 0xb0] |
0x0000a12c ldr r3, [pc, 0xa0] | r3 = *(0xa1d0);
0x0000a12e add r2, pc | r2 = 0x14310;
0x0000a130 ldr r3, [r2, r3] | r3 = imp.g_str_hash;
0x0000a132 ldr r2, [r3] | r2 = imp.g_str_hash;
0x0000a134 ldr r3, [sp, 0xc] | r3 = var_ch_2;
0x0000a136 eors r2, r3 | r2 ^= r3;
0x0000a138 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0000a13c bne 0xa1c8 | goto label_2;
| }
0x0000a13e mov r0, r4 | r0 = r4;
0x0000a140 add sp, 0x10 |
0x0000a142 pop.w {r4, r5, r6, r7, r8, pc} |
| }
0x0000a146 mov r0, r6 | r0 = r6;
0x0000a148 blx 0x5ef4 | r0 = g_strdup_printf ()
0x0000a14c cmp r0, 1 |
| if (r0 < 1) {
0x0000a14e bls 0xa1b4 | goto label_3;
| }
0x0000a150 blx 0x5da8 | fcn_00005da8 ();
0x0000a154 str r0, [sp, 8] | var_8h_2 = r0;
0x0000a156 cmp r6, 0 |
| if (r6 == 0) {
0x0000a158 beq 0xa1c4 | goto label_4;
| }
0x0000a15a mov r5, r6 | r5 = r6;
0x0000a15c movs r4, 0 | r4 = 0;
| do {
0x0000a15e ldr r0, [r5] | r0 = *(r5);
0x0000a160 blx 0x65dc | r0 = fcn_000065dc ();
0x0000a164 mov r1, r0 | r1 = r0;
0x0000a166 mov r0, r4 | r0 = r4;
0x0000a168 blx 0x64fc | fcn_000064fc ();
0x0000a16c ldr r5, [r5, 4] | r5 = *((r5 + 4));
0x0000a16e mov r4, r0 | r4 = r0;
0x0000a170 cmp r5, 0 |
0x0000a172 bne 0xa15e |
| } while (r5 != 0);
0x0000a174 ldr r0, [sp, 8] | r0 = var_8h_2;
| label_1:
0x0000a176 ldr r1, [pc, 0x68] |
0x0000a178 mov r2, r4 | r2 = r4;
0x0000a17a add r1, pc | r1 = 0x14360;
0x0000a17c blx 0x60dc | fcn_000060dc ();
0x0000a180 mov r0, r4 | r0 = r4;
0x0000a182 blx 0x5ca4 | fcn_00005ca4 ();
0x0000a186 ldr r2, [pc, 0x5c] |
0x0000a188 ldr r1, [pc, 0x5c] |
0x0000a18a ldr r0, [sp, 8] | r0 = var_8h_2;
0x0000a18c add r2, pc | r2 = 0x14376;
0x0000a18e add r1, pc | r1 = 0x1437a;
0x0000a190 blx 0x59a0 | fcn_000059a0 ();
0x0000a194 ldr r1, [sp, 8] | r1 = var_8h_2;
0x0000a196 mov.w r0, 0x12c | r0 = 0x12c;
0x0000a19a blx 0x60c0 | r0 = fcn_000060c0 ();
0x0000a19e mov r4, r0 | r4 = r0;
0x0000a1a0 add r0, sp, 8 | r0 += var_8h_2;
0x0000a1a2 blx 0x61f0 | fcn_000061f0 ();
| do {
| if (r4 != 0) {
0x0000a1a6 cbz r4, 0xa1b0 |
0x0000a1a8 mov r1, r4 | r1 = r4;
0x0000a1aa mov r0, r8 | r0 = r8;
0x0000a1ac blx 0x60b4 | fcn_000060b4 ();
| }
0x0000a1b0 movs r4, 0 | r4 = 0;
0x0000a1b2 b 0xa11c | goto label_0;
| label_3:
0x0000a1b4 ldr r1, [pc, 0x34] |
0x0000a1b6 mov.w r0, 0x194 | r0 = 0x194;
0x0000a1ba add r1, pc | r1 = 0x143aa;
0x0000a1bc blx 0x5b50 | r0 = fcn_00005b50 ();
0x0000a1c0 mov r4, r0 | r4 = r0;
0x0000a1c2 b 0xa1a6 |
| } while (1);
| label_4:
0x0000a1c4 mov r4, r6 | r4 = r6;
0x0000a1c6 b 0xa176 | goto label_1;
| label_2:
0x0000a1c8 blx 0x63b4 | fcn_000063b4 ();
0x0000a1cc ldr r2, [sp, 0x60] | r2 = var_60h;
0x0000a1ce movs r0, r0 |
0x0000a1d0 lsls r0, r5, 0x13 | r0 = r5 << 0x13;
0x0000a1d2 movs r0, r0 |
0x0000a1d4 ldr r2, [sp, 0x38] | r2 = var_10h;
0x0000a1d6 movs r0, r0 |
0x0000a1d8 lsls r4, r2, 0x13 | r4 = r2 << 0x13;
0x0000a1da movs r0, r0 |
0x0000a1dc ldr r1, [sp, 0x358] | r1 = *(arg_358h);
0x0000a1de movs r0, r0 |
0x0000a1e0 str r6, [r7, 0x78] | *((r7 + 0x78)) = r6;
0x0000a1e2 movs r0, r0 |
0x0000a1e4 str r4, [r6, 0x78] | *((r6 + 0x78)) = r4;
0x0000a1e6 movs r0, r0 |
0x0000a1e8 str r6, [r5, 0x7c] | *((r5 + 0x7c)) = r6;
0x0000a1ea movs r0, r0 |
0x0000a1ec str r2, [r1, 0x7c] | *((r1 + 0x7c)) = r2;
0x0000a1ee movs r0, r0 |
| }
[*] Function printf used 3 times libserved-api-common.so.1.0.35