[*] Binary protection state of libss.so.2.0
Full RELRO Canary found NX enabled DSO No RPATH No RUNPATH No Symbols
[*] Function fprintf tear down of libss.so.2.0
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/libss.so.2.0 @ 0x2920 */
| #include <stdint.h>
|
; (fcn) sym.ss_page_stdin () | void ss_page_stdin () {
| FILE * stream;
| int16_t var_84h;
| int16_t var_0h;
| int16_t var_d4h;
0x00002920 blmi 0xc551e8 | __asm ("blmi aav.0x00002570");
0x00002924 push {r4, r5, r6, lr} |
0x00002926 sub sp, 0xd8 |
0x00002928 add r2, pc | r2 += pc;
0x0000292a ldr r5, [pc, 0xc0] |
0x0000292c movs r4, 3 | r4 = 3;
0x0000292e ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x00002930 add r5, pc | r5 = 0x5322;
0x00002932 ldr r3, [r3] | r3 = *(r3);
0x00002934 str r3, [sp, 0xd4] | var_d4h = r3;
0x00002936 mov.w r3, 0 | r3 = 0;
| do {
0x0000293a mov r0, r4 | r0 = r4;
0x0000293c adds r4, 1 | r4++;
0x0000293e blx 0x17b8 | fcn_000017b8 ();
0x00002942 cmp r4, 0x20 |
0x00002944 bne 0x293a |
| } while (r4 != 0x20);
0x00002946 movs r1, 0 | r1 = 0;
0x00002948 movs r0, 2 | r0 = 2;
0x0000294a blx 0x153c | fcn_0000153c ();
0x0000294e add r4, sp, 4 | r4 += stream;
0x00002950 movs r1, 0 | r1 = 0;
0x00002952 mov r2, r4 | r2 = r4;
0x00002954 mov r0, r1 | r0 = r1;
0x00002956 blx 0x14c0 | setjmp (r0);
0x0000295a movs r1, 2 | r1 = 2;
0x0000295c mov r0, r4 | r0 = r4;
0x0000295e blx 0x16c4 | fclose (r0);
0x00002962 mov r1, r4 | r1 = r4;
0x00002964 movs r2, 0 | r2 = 0;
0x00002966 movs r0, 2 | r0 = 2;
0x00002968 blx 0x14c0 | setjmp (r0);
0x0000296c ldr r3, [pc, 0x80] | r3 = *(0x29f0);
0x0000296e ldr r4, [r5, r3] | r4 = *((r5 + r3));
0x00002970 ldr r1, [r4] | r1 = *(r4);
| if (r1 == 0) {
0x00002972 cbz r1, 0x29ca | goto label_4;
| }
| label_3:
0x00002974 movs r2, 0 | r2 = 0;
0x00002976 mov r0, r1 | r0 = r1;
0x00002978 add r6, sp, 0x84 | r6 += var_84h;
0x0000297a blx 0x1524 | fcn_00001524 ();
| do {
| label_2:
0x0000297e movs r2, 0x50 | r2 = 0x50;
0x00002980 mov r1, r6 | r1 = r6;
0x00002982 movs r0, 0 | r0 = 0;
0x00002984 blx 0x1498 | r0 = fcn_00001498 ();
0x00002988 subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 <= r0) {
0x0000298a ble 0x29c0 | goto label_5;
| }
0x0000298c mov r5, r6 | r5 = r6;
| label_1:
0x0000298e mov r2, r4 | r2 = r4;
0x00002990 mov r1, r5 | r1 = r5;
0x00002992 movs r0, 1 | r0 = 1;
0x00002994 blx 0x16b8 | r0 = fprintf_chk ()
0x00002998 cmp r0, 0 |
| if (r0 < 0) {
0x0000299a blt 0x29b0 | goto label_6;
| }
| label_0:
0x0000299c subs r4, r4, r0 | r4 -= r0;
0x0000299e add r5, r0 | r5 += r0;
0x000029a0 beq 0x297e |
| } while (r4 == r4);
0x000029a2 mov r2, r4 | r2 = r4;
0x000029a4 mov r1, r5 | r1 = r5;
0x000029a6 movs r0, 1 | r0 = 1;
0x000029a8 blx 0x16b8 | r0 = fprintf_chk ()
0x000029ac cmp r0, 0 |
| if (r0 >= 0) {
0x000029ae bge 0x299c | goto label_0;
| }
| label_6:
0x000029b0 blx 0x1660 | r0 = fcn_00001660 ();
0x000029b4 ldr r3, [r0] | r3 = *(r0);
0x000029b6 cmp r3, 4 |
0x000029b8 it ne |
| if (r3 == 4) {
0x000029ba cmpne r3, 0xb | __asm ("cmpne r3, 0xb");
| goto label_7;
| }
| if (r3 == 4) {
| label_7:
0x000029bc beq 0x298e | goto label_1;
| }
0x000029be b 0x297e | goto label_2;
| label_5:
0x000029c0 blx 0x1660 | r0 = fcn_00001660 ();
0x000029c4 ldr r0, [r0] | r0 = *(r0);
0x000029c6 blx 0x1630 | fcn_00001630 ();
| label_4:
0x000029ca ldr r0, [pc, 0x28] |
0x000029cc add r0, pc | r0 = 0x53c6;
0x000029ce blx 0x14e4 | r0 = free (r0);
0x000029d2 mov r1, r0 | r1 = r0;
| if (r0 != 0) {
0x000029d4 cbz r0, 0x29da |
0x000029d6 str r0, [r4] | *(r4) = r0;
0x000029d8 b 0x2974 | goto label_3;
| }
0x000029da ldr r3, [pc, 0x1c] |
0x000029dc add r3, pc | r3 = 0x53da;
0x000029de mov r1, r3 | r1 = r3;
0x000029e0 str r3, [r4] | *(r4) = r3;
0x000029e2 b 0x2974 | goto label_3;
| }
[*] Function fprintf used 3 times libss.so.2.0