[*] Binary protection state of libgcc_s.so.1
No RELRO No Canary found NX disabled DSO No RPATH No RUNPATH No Symbols
[*] Function strcat tear down of libgcc_s.so.1
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/2097216-5451840.squashfs_v4_le_extract/lib/libgcc_s.so.1 @ 0x26b54 */
| #include <stdint.h>
|
; (fcn) sym.__emutls_get_address () | void emutls_get_address () {
0x00026b54 lui gp, 2 |
0x00026b58 addiu gp, gp, -0x5b34 |
0x00026b5c addu gp, gp, t9 | gp += t9;
0x00026b60 lw v0, -0x7dfc(gp) | v0 = *((gp - 8063));
0x00026b64 addiu sp, sp, -0x38 |
0x00026b68 sw gp, 0x10(sp) | *(var_10h) = gp;
0x00026b6c sw s0, 0x1c(sp) | *(var_1ch) = s0;
0x00026b70 sw ra, 0x34(sp) | *(var_34h) = ra;
0x00026b74 sw s5, 0x30(sp) | *(var_30h) = s5;
0x00026b78 sw s4, 0x2c(sp) | *(var_2ch) = s4;
0x00026b7c sw s3, 0x28(sp) | *(var_28h) = s3;
0x00026b80 sw s2, 0x24(sp) | *(var_24h) = s2;
0x00026b84 sw s1, 0x20(sp) | *(var_20h) = s1;
0x00026b88 move s0, a0 | s0 = a0;
| if (v0 != 0) {
0x00026b8c bnez v0, 0x26bc0 | goto label_3;
| }
0x00026b90 lw v0, 8(a0) | v0 = *((a0 + 2));
0x00026b94 lw t9, -0x7fd8(gp) | t9 = *((gp - 8182));
| if (v0 == 0) {
0x00026b98 beqz v0, 0x26c28 | goto label_4;
| }
| label_0:
0x00026b9c lw ra, 0x34(sp) | ra = *(var_34h);
| do {
0x00026ba0 lw s5, 0x30(sp) | s5 = *(var_30h);
0x00026ba4 lw s4, 0x2c(sp) | s4 = *(var_2ch);
0x00026ba8 lw s3, 0x28(sp) | s3 = *(var_28h);
0x00026bac lw s2, 0x24(sp) | s2 = *(var_24h);
0x00026bb0 lw s1, 0x20(sp) | s1 = *(var_20h);
0x00026bb4 lw s0, 0x1c(sp) | s0 = *(var_1ch);
0x00026bb8 addiu sp, sp, 0x38 |
0x00026bbc jr ra | return v0;
| label_3:
0x00026bc0 lw s2, 8(a0) | s2 = *((a0 + 2));
0x00026bc4 lw a0, -0x7fe4(gp) | a0 = *((gp - 8185));
| if (s2 == 0) {
0x00026bc8 beqz s2, 0x26ce4 | goto label_5;
| }
| label_2:
0x00026bcc lw s5, -0x7fe4(gp) | s5 = *((gp - 8185));
0x00026bd0 lw t9, -0x7dec(gp) | t9 = *((gp - 8059));
0x00026bd4 lw a0, -0x6b90(s5) | a0 = *((s5 - 6884));
0x00026bd8 jalr t9 | t9 ();
0x00026bdc move s1, v0 | s1 = v0;
0x00026be0 lw gp, 0x10(sp) | gp = *(var_10h);
| if (v0 == 0) {
0x00026be4 beqz v0, 0x26ca8 | goto label_6;
| }
0x00026be8 lw s4, (v0) | s4 = *(v0);
0x00026bec sltu v0, s4, s2 | v0 = (s4 < s2) ? 1 : 0;
0x00026bf0 sll s3, s4, 1 | s3 = s4 << 1;
| if (v0 != 0) {
0x00026bf4 bnez v0, 0x26c3c | goto label_7;
| }
| label_1:
0x00026bf8 addiu v0, s2, -1 | v0 = s2 + -1;
0x00026bfc sll v0, v0, 2 | v0 <<= 2;
0x00026c00 addu s1, s1, v0 | s1 += v0;
0x00026c04 lw v0, 4(s1) | v0 = *((s1 + 1));
0x00026c08 lw ra, 0x34(sp) | ra = *(var_34h);
0x00026c0c bnez v0, 0x26ba0 |
| } while (v0 != 0);
0x00026c10 lw t9, -0x7fd8(gp) | t9 = *((gp - 8182));
0x00026c14 addiu t9, t9, -0x3660 | t9 += -0x3660;
0x00026c18 move a0, s0 | a0 = s0;
0x00026c1c bal 0xc9a0 | entry0 ();
0x00026c20 sw v0, 4(s1) | *((s1 + 1)) = v0;
0x00026c24 b 0x26b9c | goto label_0;
| label_4:
0x00026c28 addiu t9, t9, -0x3660 | t9 += -0x3660;
0x00026c2c bal 0xc9a0 | entry0 ();
0x00026c30 nop |
0x00026c34 sw v0, 8(s0) | *((s0 + 2)) = v0;
0x00026c38 b 0x26b9c | goto label_0;
| label_7:
0x00026c3c sltu v1, s3, s2 | v1 = (s3 < s2) ? 1 : 0;
0x00026c40 addiu v0, s2, 0x20 | v0 = s2 + 0x20;
0x00026c44 lw t9, -0x7e48(gp) | t9 = *((gp - 8082));
| if (v1 == 0) {
0x00026c48 movn s3, v0, v1 | s3 = v0;
| }
0x00026c4c addiu a1, s3, 1 | a1 = s3 + 1;
0x00026c50 move a0, s1 | a0 = s1;
0x00026c54 sll a1, a1, 2 | a1 <<= 2;
0x00026c58 jalr t9 | t9 ();
0x00026c5c move s1, v0 | s1 = v0;
0x00026c60 lw gp, 0x10(sp) | gp = *(var_10h);
| if (v0 != 0) {
0x00026c64 beqz v0, 0x26d40 |
0x00026c68 lw t9, -0x7e60(gp) | t9 = *((gp - 8088));
0x00026c6c sll a0, s4, 2 | a0 = s4 << 2;
0x00026c70 addu a0, v0, a0 | a0 = v0 + a0;
0x00026c74 subu a2, s3, s4 | __asm ("subu a2, s3, s4");
0x00026c78 addiu a0, a0, 4 | a0 += 4;
0x00026c7c move a1, zero | a1 = 0;
0x00026c80 sll a2, a2, 2 | a2 <<= 2;
0x00026c84 sw s3, (v0) | *(v0) = s3;
0x00026c88 jalr t9 | t9 ();
0x00026c8c lw gp, 0x10(sp) | gp = *(var_10h);
0x00026c90 lw a0, -0x6b90(s5) | a0 = *((s5 - 6884));
0x00026c94 lw t9, -0x7ea0(gp) | t9 = *((gp - 8104));
0x00026c98 move a1, s1 | a1 = s1;
0x00026c9c jalr t9 | t9 ();
0x00026ca0 lw gp, 0x10(sp) | gp = *(var_10h);
0x00026ca4 b 0x26bf8 | goto label_1;
| label_6:
0x00026ca8 lw t9, -0x7e14(gp) | t9 = *((gp - 8069));
0x00026cac addiu a0, s2, 0x21 | a0 = s2 + 0x21;
0x00026cb0 addiu a1, zero, 4 | a1 = 4;
0x00026cb4 jalr t9 | t9 ();
0x00026cb8 move s1, v0 | s1 = v0;
0x00026cbc lw gp, 0x10(sp) | gp = *(var_10h);
0x00026cc0 addiu v0, s2, 0x20 | v0 = s2 + 0x20;
| if (s1 == 0) {
0x00026cc4 beqz s1, 0x26d40 | goto label_8;
| }
0x00026cc8 lw t9, -0x7ea0(gp) | t9 = *((gp - 8104));
0x00026ccc lw a0, -0x6b90(s5) | a0 = *((s5 - 6884));
0x00026cd0 sw v0, (s1) | *(s1) = v0;
0x00026cd4 move a1, s1 | a1 = s1;
0x00026cd8 jalr t9 | t9 ();
0x00026cdc lw gp, 0x10(sp) | gp = *(var_10h);
0x00026ce0 b 0x26bf8 | goto label_1;
| label_5:
0x00026ce4 lw a1, -0x7fd0(gp) | a1 = *((gp - 8180));
0x00026ce8 lw t9, -0x7e2c(gp) | t9 = *((gp - 8075));
0x00026cec addiu a0, a0, -0x6bb0 | a0 += -0x6bb0;
0x00026cf0 lw s1, -0x7fe4(gp) | s1 = *((gp - 8185));
0x00026cf4 addiu a1, a1, 0x6a80 | a1 += 0x6a80;
0x00026cf8 jalr t9 | t9 ();
0x00026cfc lw gp, 0x10(sp) | gp = *(var_10h);
0x00026d00 lw t9, -0x7e84(gp) | t9 = *((gp - 8097));
0x00026d04 addiu a0, s1, -0x6bac | a0 = s1 + -0x6bac;
0x00026d08 jalr t9 | t9 ();
0x00026d0c lw s2, 8(s0) | s2 = *((s0 + 2));
0x00026d10 lw gp, 0x10(sp) | gp = *(var_10h);
| if (s2 == 0) {
0x00026d14 bnez s2, 0x26d2c |
0x00026d18 lw v0, -0x7fe4(gp) | v0 = *((gp - 8185));
0x00026d1c lw s2, -0x6b94(v0) | s2 = *((v0 - 6885));
0x00026d20 addiu s2, s2, 1 | s2++;
0x00026d24 sw s2, -0x6b94(v0) | *((v0 - 6885)) = s2;
0x00026d28 sw s2, 8(s0) | *((s0 + 2)) = s2;
| }
0x00026d2c lw t9, -0x7e70(gp) | t9 = *((gp - 8092));
0x00026d30 addiu a0, s1, -0x6bac | a0 = s1 + -0x6bac;
0x00026d34 jalr t9 | t9 ();
0x00026d38 lw gp, 0x10(sp) | gp = *(var_10h);
0x00026d3c b 0x26bcc | goto label_2;
| }
| label_8:
0x00026d40 lw t9, -0x7e10(gp) | t9 = *((gp - 8068));
0x00026d44 jalr t9 | t9 ();
0x00026d48 nop |
| }
[*] Function strcat used 1 times libgcc_s.so.1