[*] Binary protection state of libblkid.so.1.1.0
Full RELRO Canary found NX enabled DSO No RPATH No RUNPATH No Symbols
[*] Function printf tear down of libblkid.so.1.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/libblkid.so.1.1.0 @ 0x2868c */
| #include <stdint.h>
|
; (fcn) fcn.0002868c () | void fcn_0002868c (int16_t arg1, int16_t arg2, int16_t arg3) {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_ch;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x0002868c mvnsmi lr, sp, lsr 18 | __asm ("mvnsmi lr, sp, lsr 18");
0x00028690 mov r6, r2 | r6 = r2;
0x00028692 ldr r2, [pc, 0x150] |
0x00028694 sub sp, 0x10 |
0x00028696 ldr r3, [pc, 0x150] | r3 = *(0x287ea);
0x00028698 add r2, pc | r2 = 0x50e82;
0x0002869a ldr r7, [pc, 0x150] |
0x0002869c ldr r3, [r2, r3] |
0x0002869e add r7, pc | r7 = 0x50e90;
0x000286a0 ldr r3, [r3] | r3 = *(0x50e82);
0x000286a2 str r3, [sp, 0xc] | var_ch = r3;
0x000286a4 mov.w r3, 0 | r3 = 0;
| if (r0 == 0) {
0x000286a8 cbz r0, 0x286f6 | goto label_2;
| }
0x000286aa mov r5, r0 | r5 = r0;
0x000286ac mov r8, r1 | r8 = r1;
0x000286ae bl 0x27f64 | r0 = fcn_00027f64 (r0, r1, r2, r3, r4, r5, r6);
0x000286b2 cmp r0, 0 |
0x000286b4 mov r4, r0 | r4 = r0;
0x000286b6 str r0, [sp, 8] | var_8h = r0;
| if (r0 < 0) {
0x000286b8 blt 0x286da | goto label_0;
| }
0x000286ba ldrsb.w r3, [r6] | r3 = *(r6);
0x000286be mov r2, r8 | r2 = r8;
0x000286c0 cmp r3, 0x2f |
0x000286c2 it eq |
| if (r3 != 0x2f) {
0x000286c4 addeq r6, 1 | r6++;
| }
0x000286c6 mov r1, r6 | r1 = r6;
0x000286c8 blx 0x4ff0 | r0 = vsnprintf_chk ()
0x000286cc subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 < r0) {
0x000286ce blt 0x28738 | goto label_3;
| }
| label_1:
0x000286d0 ldr r3, [pc, 0x11c] |
0x000286d2 add r3, pc |
0x000286d4 ldr r3, [r3] | r3 = *(0x50ec6);
0x000286d6 lsls r3, r3, 0x1d | r3 <<= 0x1d;
| if (r3 < r3) {
0x000286d8 bmi 0x2879e | goto label_4;
| }
| do {
| label_0:
0x000286da ldr r2, [pc, 0x118] |
0x000286dc ldr r3, [pc, 0x108] | r3 = *(0x287e8);
0x000286de add r2, pc | r2 = 0x50ed8;
0x000286e0 ldr r3, [r2, r3] | r3 = *(0x50ed8);
0x000286e2 ldr r2, [r3] | r2 = *(0x50ed8);
0x000286e4 ldr r3, [sp, 0xc] | r3 = var_ch;
0x000286e6 eors r2, r3 | r2 ^= r3;
0x000286e8 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x000286ec bne 0x287d4 | goto label_5;
| }
0x000286ee mov r0, r4 | r0 = r4;
0x000286f0 add sp, 0x10 |
0x000286f2 pop.w {r4, r5, r6, r7, r8, pc} |
| label_2:
0x000286f6 mov r0, r6 | r0 = r6;
0x000286f8 blx 0x54a8 | fcn_000054a8 ();
0x000286fc ldr r3, [pc, 0xf8] |
0x000286fe mov r4, r0 | r4 = r0;
0x00028700 add r3, pc |
0x00028702 ldr r3, [r3] | r3 = *(0x50efc);
0x00028704 lsls r1, r3, 0x1d | r1 = r3 << 0x1d;
0x00028706 bpl 0x286da |
| } while (r1 >= r3);
0x00028708 ldr r3, [pc, 0xf0] | r3 = *(0x287fc);
0x0002870a ldr r3, [r7, r3] | r3 = *((r7 + r3));
0x0002870c ldr r5, [r3] | r5 = *(0x287fc);
0x0002870e blx 0x53b4 | fcn_000053b4 ();
0x00028712 ldr r2, [pc, 0xec] |
0x00028714 mov r3, r0 | r3 = r0;
0x00028716 movs r1, 1 | r1 = 1;
0x00028718 mov r0, r5 | r0 = r5;
0x0002871a add r2, pc | r2 = 0x50f20;
0x0002871c str r2, [sp, 4] | var_4h = r2;
0x0002871e ldr r2, [pc, 0xe4] |
0x00028720 add r2, pc | r2 = 0x50f2a;
0x00028722 str r2, [sp] | *(sp) = r2;
0x00028724 ldr r2, [pc, 0xe0] |
0x00028726 add r2, pc | r2 = 0x50f32;
0x00028728 blx 0x5604 | fcn_00005604 ();
0x0002872c ldr r0, [pc, 0xdc] |
0x0002872e mov r1, r6 | r1 = r6;
0x00028730 add r0, pc | r0 = 0x50f40;
0x00028732 bl 0x27af8 | fcn_00027af8 ();
0x00028736 b 0x286da | goto label_0;
| label_3:
0x00028738 blx 0x54c0 | r0 = fcn_000054c0 ();
0x0002873c ldr r3, [r0] | r3 = *(r0);
0x0002873e cmp r3, 2 |
| if (r3 != 2) {
0x00028740 bne 0x286d0 | goto label_1;
| }
0x00028742 add.w r3, r5, 0x1000 | r3 = r5 + 0x1000;
0x00028746 ldr r3, [r3, 0x18] | r3 = *((r3 + 0x18));
0x00028748 cmp r3, 0 |
| if (r3 == 0) {
0x0002874a beq 0x286d0 | goto label_1;
| }
0x0002874c add r2, sp, 8 | r2 += var_8h;
0x0002874e mov r1, r6 | r1 = r6;
0x00028750 mov r0, r5 | r0 = r5;
0x00028752 blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r2);
0x00028754 cmp r0, 0 |
| if (r0 != 0) {
0x00028756 bne 0x286d0 | goto label_1;
| }
0x00028758 mov r2, r8 | r2 = r8;
0x0002875a ldr r0, [sp, 8] | r0 = var_8h;
0x0002875c mov r1, r6 | r1 = r6;
0x0002875e blx 0x4ff0 | vsnprintf_chk ()
0x00028762 ldr r3, [pc, 0xac] |
0x00028764 mov r8, r0 | r8 = r0;
0x00028766 add r3, pc |
0x00028768 ldr r3, [r3] | r3 = *(0x50f7c);
0x0002876a lsls r2, r3, 0x1d | r2 = r3 << 0x1d;
| if (r2 >= r3) {
0x0002876c bpl 0x287de | goto label_6;
| }
0x0002876e ldr r3, [pc, 0x8c] | r3 = *(0x287fe);
0x00028770 ldr r3, [r7, r3] | r3 = *((r7 + r3));
0x00028772 ldr r7, [r3] | r7 = *(0x287fe);
0x00028774 blx 0x53b4 | fcn_000053b4 ();
0x00028778 ldr r2, [pc, 0x98] |
0x0002877a mov r3, r0 | r3 = r0;
0x0002877c movs r1, 1 | r1 = 1;
0x0002877e mov r0, r7 | r0 = r7;
0x00028780 add r2, pc | r2 = 0x50f98;
0x00028782 str r2, [sp, 4] | var_4h = r2;
0x00028784 ldr r2, [pc, 0x90] |
0x00028786 add r2, pc | r2 = 0x50fa2;
0x00028788 str r2, [sp] | *(sp) = r2;
0x0002878a ldr r2, [pc, 0x90] |
0x0002878c add r2, pc | r2 = 0x50fae;
0x0002878e blx 0x5604 | fcn_00005604 ();
0x00028792 cmp r4, r8 |
| if (r4 == r8) {
0x00028794 beq 0x287d8 | goto label_7;
| }
0x00028796 ldr r3, [pc, 0x88] |
0x00028798 mov r4, r8 | r4 = r8;
0x0002879a add r3, pc | r3 = 0x50fc0;
0x0002879c b 0x287c6 | goto label_8;
| label_4:
0x0002879e ldr r3, [pc, 0x5c] | r3 = *(0x287fe);
0x000287a0 ldr r3, [r7, r3] | r3 = *((r7 + r3));
0x000287a2 ldr r7, [r3] | r7 = *(0x287fe);
0x000287a4 blx 0x53b4 | fcn_000053b4 ();
0x000287a8 ldr r2, [pc, 0x78] |
0x000287aa mov r3, r0 | r3 = r0;
0x000287ac movs r1, 1 | r1 = 1;
0x000287ae mov r0, r7 | r0 = r7;
0x000287b0 add r2, pc | r2 = 0x50fd8;
0x000287b2 str r2, [sp, 4] | var_4h = r2;
0x000287b4 ldr r2, [pc, 0x70] |
0x000287b6 add r2, pc | r2 = 0x50fe2;
0x000287b8 str r2, [sp] | *(sp) = r2;
0x000287ba ldr r2, [pc, 0x70] |
0x000287bc add r2, pc | r2 = 0x50fee;
0x000287be blx 0x5604 | fcn_00005604 ();
0x000287c2 ldr r3, [pc, 0x6c] |
0x000287c4 add r3, pc | r3 = 0x50ffa;
| do {
| label_8:
0x000287c6 ldr r1, [pc, 0x6c] |
0x000287c8 mov r2, r6 | r2 = r6;
0x000287ca mov r0, r5 | r0 = r5;
0x000287cc add r1, pc | r1 = 0x51006;
0x000287ce bl 0x27a64 | fcn_00027a64 (r0);
0x000287d2 b 0x286da | goto label_0;
| label_5:
0x000287d4 blx 0x50e0 | unlink (r0);
| label_7:
0x000287d8 ldr r3, [pc, 0x5c] |
0x000287da add r3, pc | r3 = 0x51016;
0x000287dc b 0x287c6 |
| } while (1);
| label_6:
0x000287de mov r4, r0 | r4 = r0;
0x000287e0 b 0x286da | goto label_0;
| }
[*] Function printf used 3 times libblkid.so.1.1.0