[*] Binary protection state of libreadline.so.5.2

  
  	Full RELRO     Canary found      NX disabled  DSO          No RPATH     No RUNPATH   No Symbols


[*] Function system tear down of libreadline.so.5.2

    ; assembly                               | /* r2dec pseudo code output */
                                             | /* /logs/firmware/unblob_extracted/firmware_extract/4325012-58052244.squashfs_v4_le_extract/usr/lib/libreadline.so.5.2 @ 0xa074 */
                                             | #include <stdint.h>
                                             |  
    ; (fcn) entry.fini0 ()                   | void entry_fini0 () {
    0x0000a074 lui gp, 4                     |     
    0x0000a078 addiu gp, gp, 0x294c          |     
    0x0000a07c addu gp, gp, t9               |     gp += t9;
    0x0000a080 addiu sp, sp, -0x20           |     
    0x0000a084 sw s0, 0x18(sp)               |     *(var_18h) = s0;
    0x0000a088 lw s0, -0x7fe4(gp)            |     s0 = *((gp - 8185));
    0x0000a08c sw gp, 0x10(sp)               |     *(var_10h) = gp;
    0x0000a090 sw ra, 0x1c(sp)               |     *(var_1ch) = ra;
    0x0000a094 lbu v0, 0x5430(s0)            |     v0 = *((s0 + 21552));
    0x0000a098 lw v0, -0x77c0(gp)            |     v0 = *((gp - 7664));
                                             |     if (v0 == 0) {
    0x0000a09c bnez v0, 0xa0d0               |         
    0x0000a0a0 lw v0, -0x7fe0(gp)            |         v0 = *((gp - 8184));
                                             |         if (v0 != 0) {
    0x0000a0a4 beqz v0, 0xa0b8               |             
    0x0000a0a8 lw t9, -0x77c0(gp)            |             t9 = *((gp - 7664));
    0x0000a0ac lw a0, (v0)                   |             a0 = *(v0);
    0x0000a0b0 jalr t9                       |             t9 ();
    0x0000a0b4 lw gp, 0x10(sp)               |             gp = *(var_10h);
                                             |         }
    0x0000a0b8 lw t9, -0x7fdc(gp)            |         t9 = *((gp - 8183));
    0x0000a0bc addiu t9, t9, -0x6010         |         t9 += -0x6010;
    0x0000a0c0 bal 0x9ff0                    |         entry0 ();
    0x0000a0c4 nop                           |         
    0x0000a0c8 addiu v0, zero, 1             |         v0 = 1;
    0x0000a0cc sb v0, 0x5430(s0)             |         *((s0 + 21552)) = v0;
                                             |     }
    0x0000a0d0 lw ra, 0x1c(sp)               |     ra = *(var_1ch);
    0x0000a0d4 lw s0, 0x18(sp)               |     s0 = *(var_18h);
    0x0000a0d8 addiu sp, sp, 0x20            |     
    0x0000a0dc jr ra                         |     return v0;
                                             | }
    ; assembly                               | /* r2dec pseudo code output */
                                             | /* /logs/firmware/unblob_extracted/firmware_extract/4325012-58052244.squashfs_v4_le_extract/usr/lib/libreadline.so.5.2 @ 0x1281c */
                                             | #include <stdint.h>
                                             |  
    ; (fcn) fcn.0001281c ()                  | void fcn_0001281c () {
    0x0001281c lui gp, 4                     |     
    0x00012820 addiu gp, gp, -0x5e5c         |     
    0x00012824 addu gp, gp, t9               |     gp += t9;
    0x00012828 addiu sp, sp, -0x20           |     
    0x0001282c lw t9, -0x7df4(gp)            |     t9 = *((gp - 8061));
    0x00012830 addiu a1, zero, 0x2f          |     a1 = 0x2f;
    0x00012834 sw s0, 0x18(sp)               |     *(var_18h) = s0;
    0x00012838 sw gp, 0x10(sp)               |     *(var_10h) = gp;
    0x0001283c sw ra, 0x1c(sp)               |     *(var_1ch) = ra;
    0x00012840 move s0, a0                   |     s0 = a0;
    0x00012844 jalr t9                       |     t9 ();
    0x00012848 lw ra, 0x1c(sp)               |     ra = *(var_1ch);
                                             |     if (v0 == 0) {
    0x0001284c beqz v0, 0x128bc              |         goto label_1;
                                             |     }
    0x00012850 lb v1, (v0)                   |     v1 = *(v0);
                                             |     if (v1 == 0) {
    0x00012854 beql v1, zero, 0x128c0        |         goto label_2;
                                             |     }
    0x00012858 move v0, s0                   |     v0 = s0;
    0x0001285c lb v1, 1(v0)                  |     v1 = *((v0 + 1));
    0x00012860 addiu s0, v0, 1               |     s0 = v0 + 1;
                                             |     if (v1 == 0) {
    0x00012864 bnel v1, zero, 0x128cc        |         goto label_3;
                                             |     }
    0x00012868 addiu v1, v0, -1              |     v1 = v0 + -1;
    0x0001286c sltu a0, s0, v1               |     a0 = (s0 < v1) ? 1 : 0;
                                             |     if (a0 == 0) {
    0x00012870 beql a0, zero, 0x128ac        |         goto label_4;
                                             |     }
    0x00012874 lb a0, -1(v0)                 |     a0 = *((v0 - 1));
    0x00012878 lb a1, -1(v0)                 |     a1 = *((v0 - 1));
    0x0001287c addiu a0, zero, 0x2f          |     a0 = 0x2f;
                                             |     if (a1 == a0) {
    0x00012880 beql a1, a0, 0x128e4          |         goto label_5;
                                             |     }
    0x00012884 move v1, v0                   |     v1 = v0;
    0x00012888 addiu a1, zero, 0x2f          |     a1 = 0x2f;
    0x0001288c b 0x1289c                     |     
                                             |     while (s0 != v0) {
                                             |         if (a0 == a1) {
    0x00012890 beql a0, a1, 0x128b8          |             goto label_0;
                                             |         }
    0x00012894 move s0, v1                   |         s0 = v1;
    0x00012898 move v1, v0                   |         v1 = v0;
    0x0001289c addiu v0, v1, -1              |         v0 = v1 + -1;
    0x000128a0 lb a0, -1(v1)                 |         a0 = *((v1 - 1));
    0x000128a4 bne s0, v0, 0x12890           |         
                                             |     }
    0x000128a8 move v1, s0                   |     v1 = s0;
                                             | label_4:
    0x000128ac addiu v0, zero, 0x2f          |     v0 = 0x2f;
                                             |     if (a0 == v0) {
    0x000128b0 beql a0, v0, 0x128dc          |         goto label_6;
                                             |     }
    0x000128b4 addiu v1, v1, 1               |     v1++;
                                             |     do {
                                             | label_0:
    0x000128b8 lw ra, 0x1c(sp)               |         ra = *(var_1ch);
                                             | label_1:
    0x000128bc move v0, s0                   |         v0 = s0;
                                             | label_2:
    0x000128c0 lw s0, 0x18(sp)               |         s0 = *(var_18h);
    0x000128c4 addiu sp, sp, 0x20            |         
    0x000128c8 jr ra                         |         return v0;
                                             | label_3:
    0x000128cc move v0, s0                   |         v0 = s0;
    0x000128d0 lw s0, 0x18(sp)               |         s0 = *(var_18h);
    0x000128d4 addiu sp, sp, 0x20            |         
    0x000128d8 jr ra                         |         return v0;
                                             | label_6:
    0x000128dc move s0, v1                   |         s0 = v1;
    0x000128e0 b 0x128b8                     |         
                                             |     } while (1);
                                             | label_5:
    0x000128e4 move s0, v1                   |     s0 = v1;
    0x000128e8 b 0x128b8                     |     goto label_0;
                                             | }
    ; assembly                               | /* r2dec pseudo code output */
                                             | /* /logs/firmware/unblob_extracted/firmware_extract/4325012-58052244.squashfs_v4_le_extract/usr/lib/libreadline.so.5.2 @ 0x21b10 */
                                             | #include <stdint.h>
                                             |  
    ; (fcn) fcn.00021b10 ()                  | void fcn_00021b10 () {
    0x00021b10 lui gp, 3                     |     
    0x00021b14 addiu gp, gp, -0x5150         |     
    0x00021b18 addu gp, gp, t9               |     gp += t9;
    0x00021b1c addiu sp, sp, -0x30           |     
    0x00021b20 lw t9, -0x7838(gp)            |     t9 = *((gp - 7694));
    0x00021b24 sw gp, 0x10(sp)               |     *(var_10h) = gp;
    0x00021b28 sw s4, 0x28(sp)               |     *(var_28h) = s4;
    0x00021b2c sw s3, 0x24(sp)               |     *(var_24h) = s3;
    0x00021b30 sw s2, 0x20(sp)               |     *(var_20h) = s2;
    0x00021b34 sw s1, 0x1c(sp)               |     *(var_1ch) = s1;
    0x00021b38 sw ra, 0x2c(sp)               |     *(var_2ch) = ra;
    0x00021b3c sw s0, 0x18(sp)               |     *(var_18h) = s0;
    0x00021b40 move s4, a0                   |     s4 = a0;
    0x00021b44 move s3, a1                   |     s3 = a1;
    0x00021b48 move s1, a2                   |     s1 = a2;
    0x00021b4c jalr t9                       |     t9 ();
    0x00021b50 move s2, v0                   |     s2 = v0;
    0x00021b54 lw gp, 0x10(sp)               |     gp = *(var_10h);
                                             |     if (s1 <= 0) {
    0x00021b58 blez s1, 0x21b74              |         goto label_1;
                                             |     }
    0x00021b5c move s0, zero                 |     s0 = 0;
                                             |     do {
    0x00021b60 lw t9, -0x7aac(gp)            |         t9 = *((gp - 7851));
    0x00021b64 addiu s0, s0, 1               |         s0++;
    0x00021b68 jalr t9                       |         t9 ();
    0x00021b6c lw gp, 0x10(sp)               |         gp = *(var_10h);
    0x00021b70 bne s1, s0, 0x21b60           |         
                                             |     } while (s1 != s0);
                                             | label_1:
    0x00021b74 lw t9, -0x7aac(gp)            |     t9 = *((gp - 7851));
    0x00021b78 jalr t9                       |     t9 ();
    0x00021b7c nop                           |     
    0x00021b80 lw gp, 0x10(sp)               |     gp = *(var_10h);
    0x00021b84 move s0, v0                   |     s0 = v0;
    0x00021b88 lw t9, -0x7d74(gp)            |     t9 = *((gp - 8029));
    0x00021b8c move a0, s2                   |     a0 = s2;
    0x00021b90 jalr t9                       |     t9 ();
    0x00021b94 lw gp, 0x10(sp)               |     gp = *(var_10h);
                                             |     if (s0 == 0) {
    0x00021b98 beqz s0, 0x21c94              |         goto label_2;
                                             |     }
    0x00021b9c lw t9, -0x7e74(gp)            |     t9 = *((gp - 8093));
    0x00021ba0 lw a2, (s0)                   |     a2 = *(s0);
    0x00021ba4 move a1, s4                   |     a1 = s4;
    0x00021ba8 move a0, s4                   |     a0 = s4;
    0x00021bac jalr t9                       |     t9 ();
    0x00021bb0 move s0, v0                   |     s0 = v0;
    0x00021bb4 lw gp, 0x10(sp)               |     gp = *(var_10h);
                                             |     if (v0 == 0) {
    0x00021bb8 beqz v0, 0x21c94              |         goto label_2;
                                             |     }
    0x00021bbc lb v0, (v0)                   |     v0 = *(v0);
    0x00021bc0 lw t9, -0x7784(gp)            |     t9 = *((gp - 7649));
                                             |     if (v0 == 0) {
    0x00021bc4 beqz v0, 0x21c70              |         goto label_3;
                                             |     }
    0x00021bc8 jalr t9                       |     t9 ();
    0x00021bcc nop                           |     
    0x00021bd0 lw gp, 0x10(sp)               |     gp = *(var_10h);
    0x00021bd4 lw v0, -0x7d94(gp)            |     v0 = *((gp - 8037));
    0x00021bd8 lw t9, -0x7ee4(gp)            |     t9 = *((gp - 8121));
    0x00021bdc lw a0, (v0)                   |     a0 = *(v0);
    0x00021be0 jalr t9                       |     t9 ();
    0x00021be4 lw gp, 0x10(sp)               |     gp = *(var_10h);
    0x00021be8 lw v0, -0x7d48(gp)            |     v0 = *((gp - 8018));
    0x00021bec lw v0, (v0)                   |     v0 = *(v0);
    0x00021bf0 lw t9, -0x7b50(gp)            |     t9 = *((gp - 7892));
    0x00021bf4 beqz v0, 0x21c48              |     
                                             |     while (1) {
    0x00021bf8 lw t9, -0x7794(gp)            |         t9 = *((gp - 7653));
    0x00021bfc move a0, s0                   |         a0 = s0;
    0x00021c00 jalr t9                       |         t9 ();
    0x00021c04 lw gp, 0x10(sp)               |         gp = *(var_10h);
    0x00021c08 lw t9, -0x7868(gp)            |         t9 = *((gp - 7706));
    0x00021c0c move a0, s0                   |         a0 = s0;
    0x00021c10 jalr t9                       |         t9 ();
    0x00021c14 lw gp, 0x10(sp)               |         gp = *(var_10h);
    0x00021c18 lw t9, -0x7f0c(gp)            |         t9 = *((gp - 8131));
    0x00021c1c jalr t9                       |         t9 ();
    0x00021c20 nop                           |         
    0x00021c24 move v0, zero                 |         v0 = 0;
                                             | label_0:
    0x00021c28 lw ra, 0x2c(sp)               |         ra = *(var_2ch);
    0x00021c2c lw s4, 0x28(sp)               |         s4 = *(var_28h);
    0x00021c30 lw s3, 0x24(sp)               |         s3 = *(var_24h);
    0x00021c34 lw s2, 0x20(sp)               |         s2 = *(var_20h);
    0x00021c38 lw s1, 0x1c(sp)               |         s1 = *(var_1ch);
    0x00021c3c lw s0, 0x18(sp)               |         s0 = *(var_18h);
    0x00021c40 addiu sp, sp, 0x30            |         
    0x00021c44 jr ra                         |         return v0;
    0x00021c48 move a1, s3                   |         a1 = s3;
    0x00021c4c addiu a0, zero, 1             |         a0 = 1;
    0x00021c50 jalr t9                       |         t9 ();
    0x00021c54 lw gp, 0x10(sp)               |         gp = *(var_10h);
    0x00021c58 lw a0, -0x7fd8(gp)            |         a0 = *((gp - 8182));
    0x00021c5c lw t9, -0x7794(gp)            |         t9 = *((gp - 7653));
    0x00021c60 addiu a0, a0, 0x7e0           |         a0 += 0x7e0;
    0x00021c64 jalr t9                       |         t9 ();
    0x00021c68 lw gp, 0x10(sp)               |         gp = *(var_10h);
    0x00021c6c b 0x21bf8                     |         
                                             |     }
                                             | label_3:
    0x00021c70 lw t9, -0x7d6c(gp)            |     t9 = *((gp - 8027));
    0x00021c74 jalr t9                       |     t9 ();
    0x00021c78 nop                           |     
    0x00021c7c lw gp, 0x10(sp)               |     gp = *(var_10h);
    0x00021c80 lw t9, -0x7868(gp)            |     t9 = *((gp - 7706));
    0x00021c84 move a0, s0                   |     a0 = s0;
    0x00021c88 jalr t9                       |     t9 ();
    0x00021c8c addiu v0, zero, -1            |     v0 = -1;
    0x00021c90 b 0x21c28                     |     goto label_0;
                                             | label_2:
    0x00021c94 lw t9, -0x7d6c(gp)            |     t9 = *((gp - 8027));
    0x00021c98 jalr t9                       |     t9 ();
    0x00021c9c nop                           |     
    0x00021ca0 addiu v0, zero, -1            |     v0 = -1;
    0x00021ca4 b 0x21c28                     |     goto label_0;
                                             | }

[*] Function system used 1 times libreadline.so.5.2