[*] Binary protection state of libreadline.so.5.2
Full RELRO Canary found NX disabled DSO No RPATH No RUNPATH No Symbols
[*] Function popen 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 |
| if (a0 == a1) {
| while (s0 != v0) {
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 popen used 1 times libreadline.so.5.2