[*] 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