[*] Binary protection state of libgcc_s.so.1
No RELRO No Canary found NX disabled DSO No RPATH No RUNPATH No Symbols
[*] Function fprintf tear down of libgcc_s.so.1
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/11108416-13869836.lzma_extract/lzma.uncompressed_extract/3761304-11775640.cpio_portable_ascii_extract/lib/libgcc_s.so.1 @ 0x26d54 */
| #include <stdint.h>
|
; (fcn) sym.__emutls_get_address () | void emutls_get_address () {
0x00026d54 lui gp, 2 |
0x00026d58 addiu gp, gp, -0x5d34 |
0x00026d5c addu gp, gp, t9 | gp += t9;
0x00026d60 lw v0, -0x7dfc(gp) | v0 = *((gp - 8063));
0x00026d64 addiu sp, sp, -0x38 |
0x00026d68 sw gp, 0x10(sp) | *(var_10h) = gp;
0x00026d6c sw s0, 0x1c(sp) | *(var_1ch) = s0;
0x00026d70 sw ra, 0x34(sp) | *(var_34h) = ra;
0x00026d74 sw s5, 0x30(sp) | *(var_30h) = s5;
0x00026d78 sw s4, 0x2c(sp) | *(var_2ch) = s4;
0x00026d7c sw s3, 0x28(sp) | *(var_28h) = s3;
0x00026d80 sw s2, 0x24(sp) | *(var_24h) = s2;
0x00026d84 sw s1, 0x20(sp) | *(var_20h) = s1;
0x00026d88 move s0, a0 | s0 = a0;
| if (v0 != 0) {
0x00026d8c bnez v0, 0x26dc0 | goto label_3;
| }
0x00026d90 lw v0, 8(a0) | v0 = *((a0 + 2));
0x00026d94 lw t9, -0x7fd8(gp) | t9 = *((gp - 8182));
| if (v0 == 0) {
0x00026d98 beqz v0, 0x26e28 | goto label_4;
| }
| label_0:
0x00026d9c lw ra, 0x34(sp) | ra = *(var_34h);
| do {
0x00026da0 lw s5, 0x30(sp) | s5 = *(var_30h);
0x00026da4 lw s4, 0x2c(sp) | s4 = *(var_2ch);
0x00026da8 lw s3, 0x28(sp) | s3 = *(var_28h);
0x00026dac lw s2, 0x24(sp) | s2 = *(var_24h);
0x00026db0 lw s1, 0x20(sp) | s1 = *(var_20h);
0x00026db4 lw s0, 0x1c(sp) | s0 = *(var_1ch);
0x00026db8 addiu sp, sp, 0x38 |
0x00026dbc jr ra | return v0;
| label_3:
0x00026dc0 lw s2, 8(a0) | s2 = *((a0 + 2));
0x00026dc4 lw a0, -0x7fe4(gp) | a0 = *((gp - 8185));
| if (s2 == 0) {
0x00026dc8 beqz s2, 0x26ee4 | goto label_5;
| }
| label_2:
0x00026dcc lw s5, -0x7fe4(gp) | s5 = *((gp - 8185));
0x00026dd0 lw t9, -0x7dec(gp) | t9 = *((gp - 8059));
0x00026dd4 lw a0, -0x6ba0(s5) | a0 = *((s5 - 6888));
0x00026dd8 jalr t9 | t9 ();
0x00026ddc move s1, v0 | s1 = v0;
0x00026de0 lw gp, 0x10(sp) | gp = *(var_10h);
| if (v0 == 0) {
0x00026de4 beqz v0, 0x26ea8 | goto label_6;
| }
0x00026de8 lw s4, (v0) | s4 = *(v0);
0x00026dec sltu v0, s4, s2 | v0 = (s4 < s2) ? 1 : 0;
0x00026df0 sll s3, s4, 1 | s3 = s4 << 1;
| if (v0 != 0) {
0x00026df4 bnez v0, 0x26e3c | goto label_7;
| }
| label_1:
0x00026df8 addiu v0, s2, -1 | v0 = s2 + -1;
0x00026dfc sll v0, v0, 2 | v0 <<= 2;
0x00026e00 addu s1, s1, v0 | s1 += v0;
0x00026e04 lw v0, 4(s1) | v0 = *((s1 + 1));
0x00026e08 lw ra, 0x34(sp) | ra = *(var_34h);
0x00026e0c bnez v0, 0x26da0 |
| } while (v0 != 0);
0x00026e10 lw t9, -0x7fd8(gp) | t9 = *((gp - 8182));
0x00026e14 addiu t9, t9, -0x3660 | t9 += -0x3660;
0x00026e18 move a0, s0 | a0 = s0;
0x00026e1c bal 0xc9a0 | entry0 ();
0x00026e20 sw v0, 4(s1) | *((s1 + 1)) = v0;
0x00026e24 b 0x26d9c | goto label_0;
| label_4:
0x00026e28 addiu t9, t9, -0x3660 | t9 += -0x3660;
0x00026e2c bal 0xc9a0 | entry0 ();
0x00026e30 nop |
0x00026e34 sw v0, 8(s0) | *((s0 + 2)) = v0;
0x00026e38 b 0x26d9c | goto label_0;
| label_7:
0x00026e3c sltu v1, s3, s2 | v1 = (s3 < s2) ? 1 : 0;
0x00026e40 addiu v0, s2, 0x20 | v0 = s2 + 0x20;
0x00026e44 lw t9, -0x7e48(gp) | t9 = *((gp - 8082));
| if (v1 == 0) {
0x00026e48 movn s3, v0, v1 | s3 = v0;
| }
0x00026e4c addiu a1, s3, 1 | a1 = s3 + 1;
0x00026e50 move a0, s1 | a0 = s1;
0x00026e54 sll a1, a1, 2 | a1 <<= 2;
0x00026e58 jalr t9 | t9 ();
0x00026e5c move s1, v0 | s1 = v0;
0x00026e60 lw gp, 0x10(sp) | gp = *(var_10h);
| if (v0 != 0) {
0x00026e64 beqz v0, 0x26f40 |
0x00026e68 lw t9, -0x7e60(gp) | t9 = *((gp - 8088));
0x00026e6c sll a0, s4, 2 | a0 = s4 << 2;
0x00026e70 addu a0, v0, a0 | a0 = v0 + a0;
0x00026e74 subu a2, s3, s4 | __asm ("subu a2, s3, s4");
0x00026e78 addiu a0, a0, 4 | a0 += 4;
0x00026e7c move a1, zero | a1 = 0;
0x00026e80 sll a2, a2, 2 | a2 <<= 2;
0x00026e84 sw s3, (v0) | *(v0) = s3;
0x00026e88 jalr t9 | t9 ();
0x00026e8c lw gp, 0x10(sp) | gp = *(var_10h);
0x00026e90 lw a0, -0x6ba0(s5) | a0 = *((s5 - 6888));
0x00026e94 lw t9, -0x7ea0(gp) | t9 = *((gp - 8104));
0x00026e98 move a1, s1 | a1 = s1;
0x00026e9c jalr t9 | t9 ();
0x00026ea0 lw gp, 0x10(sp) | gp = *(var_10h);
0x00026ea4 b 0x26df8 | goto label_1;
| label_6:
0x00026ea8 lw t9, -0x7e14(gp) | t9 = *((gp - 8069));
0x00026eac addiu a0, s2, 0x21 | a0 = s2 + 0x21;
0x00026eb0 addiu a1, zero, 4 | a1 = 4;
0x00026eb4 jalr t9 | t9 ();
0x00026eb8 move s1, v0 | s1 = v0;
0x00026ebc lw gp, 0x10(sp) | gp = *(var_10h);
0x00026ec0 addiu v0, s2, 0x20 | v0 = s2 + 0x20;
| if (s1 == 0) {
0x00026ec4 beqz s1, 0x26f40 | goto label_8;
| }
0x00026ec8 lw t9, -0x7ea0(gp) | t9 = *((gp - 8104));
0x00026ecc lw a0, -0x6ba0(s5) | a0 = *((s5 - 6888));
0x00026ed0 sw v0, (s1) | *(s1) = v0;
0x00026ed4 move a1, s1 | a1 = s1;
0x00026ed8 jalr t9 | t9 ();
0x00026edc lw gp, 0x10(sp) | gp = *(var_10h);
0x00026ee0 b 0x26df8 | goto label_1;
| label_5:
0x00026ee4 lw a1, -0x7fd0(gp) | a1 = *((gp - 8180));
0x00026ee8 lw t9, -0x7e2c(gp) | t9 = *((gp - 8075));
0x00026eec addiu a0, a0, -0x6bc0 | a0 += -0x6bc0;
0x00026ef0 lw s1, -0x7fe4(gp) | s1 = *((gp - 8185));
0x00026ef4 addiu a1, a1, 0x6c80 | a1 += 0x6c80;
0x00026ef8 jalr t9 | t9 ();
0x00026efc lw gp, 0x10(sp) | gp = *(var_10h);
0x00026f00 lw t9, -0x7e84(gp) | t9 = *((gp - 8097));
0x00026f04 addiu a0, s1, -0x6bbc | a0 = s1 + -0x6bbc;
0x00026f08 jalr t9 | t9 ();
0x00026f0c lw s2, 8(s0) | s2 = *((s0 + 2));
0x00026f10 lw gp, 0x10(sp) | gp = *(var_10h);
| if (s2 == 0) {
0x00026f14 bnez s2, 0x26f2c |
0x00026f18 lw v0, -0x7fe4(gp) | v0 = *((gp - 8185));
0x00026f1c lw s2, -0x6ba4(v0) | s2 = *((v0 - 6889));
0x00026f20 addiu s2, s2, 1 | s2++;
0x00026f24 sw s2, -0x6ba4(v0) | *((v0 - 6889)) = s2;
0x00026f28 sw s2, 8(s0) | *((s0 + 2)) = s2;
| }
0x00026f2c lw t9, -0x7e70(gp) | t9 = *((gp - 8092));
0x00026f30 addiu a0, s1, -0x6bbc | a0 = s1 + -0x6bbc;
0x00026f34 jalr t9 | t9 ();
0x00026f38 lw gp, 0x10(sp) | gp = *(var_10h);
0x00026f3c b 0x26dcc | goto label_2;
| }
| label_8:
0x00026f40 lw t9, -0x7e10(gp) | t9 = *((gp - 8068));
0x00026f44 jalr t9 | t9 ();
0x00026f48 nop |
| }
[*] Function fprintf used 1 times libgcc_s.so.1