[*] Binary protection state of xmllint
Full RELRO Canary found NX disabled PIE enabled No RPATH No RUNPATH No Symbols
[*] Function printf tear down of xmllint
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/4325012-58052244.squashfs_v4_le_extract/usr/bin/xmllint @ 0xb738 */
| #include <stdint.h>
|
; (fcn) fcn.0000b738 () | void fcn_0000b738 () {
0x0000b738 lui gp, 2 |
0x0000b73c addiu gp, gp, -0x3588 |
0x0000b740 addu gp, gp, t9 | gp += t9;
0x0000b744 addiu sp, sp, -0x50 |
0x0000b748 lw t9, -0x7e94(gp) | t9 = sym.imp.__xmlGenericError;
0x0000b74c sw ra, 0x4c(sp) | *(var_4ch) = ra;
0x0000b750 sw gp, 0x18(sp) | *(var_18h) = gp;
0x0000b754 sw a0, 0x24(sp) | *(var_24h) = a0;
0x0000b758 sw s5, 0x3c(sp) | *(var_3ch) = s5;
0x0000b75c sw s1, 0x2c(sp) | *(var_2ch) = s1;
0x0000b760 sw s0, 0x28(sp) | *(var_28h) = s0;
0x0000b764 sw fp, 0x48(sp) | *(var_48h) = fp;
0x0000b768 sw s7, 0x44(sp) | *(var_44h) = s7;
0x0000b76c sw s6, 0x40(sp) | *(var_40h) = s6;
0x0000b770 sw s4, 0x38(sp) | *(var_38h) = s4;
0x0000b774 sw s3, 0x34(sp) | *(var_34h) = s3;
0x0000b778 sw s2, 0x30(sp) | *(var_30h) = s2;
0x0000b77c move s1, a0 | s1 = a0;
0x0000b780 jalr t9 | t9 ();
0x0000b784 lw gp, 0x18(sp) | gp = *(var_18h);
0x0000b788 lw t9, -0x7dcc(gp) | t9 = sym.imp.__xmlGenericErrorContext;
0x0000b78c lw s0, (v0) | s0 = *(v0);
0x0000b790 jalr t9 | t9 ();
0x0000b794 lw gp, 0x18(sp) | gp = *(var_18h);
0x0000b798 lw a0, (v0) | a0 = *(v0);
0x0000b79c move t9, s0 | t9 = s0;
0x0000b7a0 lw a1, -0x7fd4(gp) | a1 = *((gp - 8181));
0x0000b7a4 addiu a1, a1, -0x1894 | a1 += -0x1894;
0x0000b7a8 jalr t9 | t9 ();
0x0000b7ac lw v0, 0x10(s1) | v0 = *((s1 + 4));
0x0000b7b0 lw s5, 0xc(s1) | s5 = *((s1 + 3));
0x0000b7b4 sltu v1, s5, v0 | v1 = (s5 < v0) ? 1 : 0;
0x0000b7b8 lw gp, 0x18(sp) | gp = *(var_18h);
| if (v1 == 0) {
0x0000b7bc beqz v1, 0xba70 | goto label_8;
| }
0x0000b7c0 addiu a0, zero, 0xa | a0 = 0xa;
0x0000b7c4 addiu a1, zero, 0xd | a1 = 0xd;
| do {
0x0000b7c8 lbu s0, (v0) | s0 = *(v0);
0x0000b7cc addiu v1, v0, -1 | v1 = v0 + -1;
| if (s0 != a0) {
0x0000b7d0 beq s0, a0, 0xb7dc |
0x0000b7d4 sltu v1, s5, v0 | v1 = (s5 < v0) ? 1 : 0;
| if (s0 == a1) {
0x0000b7d8 bnel s0, a1, 0xb9f8 | goto label_9;
| }
| }
0x0000b7dc move v0, v1 | v0 = v1;
0x0000b7e0 bnel s5, v1, 0xb7c8 |
| } while (s5 == v1);
0x0000b7e4 lbu s0, -1(v0) | s0 = *((v0 - 1));
| label_2:
0x0000b7e8 addiu v0, zero, 0xa | v0 = 0xa;
| if (s0 == v0) {
0x0000b7ec beql s0, v0, 0xba38 | goto label_10;
| }
0x0000b7f0 move v1, s5 | v1 = s5;
| label_7:
0x0000b7f4 addiu v0, zero, 0xd | v0 = 0xd;
0x0000b7f8 move v1, s5 | v1 = s5;
| if (s0 == v0) {
0x0000b7fc beq s0, v0, 0xba38 | goto label_10;
| }
| if (s0 == 0) {
0x0000b800 beql s0, zero, 0xba5c | goto label_11;
| }
0x0000b804 lw v0, -0x7fdc(gp) | v0 = *(gp);
| label_4:
0x0000b808 lw v0, -0x7fdc(gp) | v0 = *(gp);
| label_5:
0x0000b80c lw s1, -0x7fd4(gp) | s1 = *((gp - 8181));
0x0000b810 addiu s2, v0, 0x534 | s2 = v0 + 0x534;
0x0000b814 sw v0, 0x20(sp) | *(var_20h) = v0;
0x0000b818 addiu fp, s5, 0x4f | fp = s5 + 0x4f;
0x0000b81c move s4, s5 | s4 = s5;
0x0000b820 addiu s1, s1, -0x188c | s1 += -0x188c;
0x0000b824 move s7, s2 | s7 = s2;
0x0000b828 ori s6, zero, 0xc350 | s6 = sym.imp.__fprintf_chk
0x0000b82c addiu s3, zero, 0x2401 | s3 = 0x2401;
0x0000b830 b 0xb83c |
| if (s4 == fp) {
| while (a0 == 0) {
| label_0:
0x0000b834 beql s4, fp, 0xb894 | goto label_12;
| }
0x0000b838 lw v0, 0x20(sp) | v0 = *(var_20h);
0x0000b83c lw t9, -0x7e34(gp) | t9 = sym.imp.strlen;
0x0000b840 move a0, s7 | a0 = s7;
0x0000b844 jalr t9 | t9 ();
0x0000b848 lw gp, 0x18(sp) | gp = *(var_18h);
0x0000b84c addiu s4, s4, 1 | s4++;
0x0000b850 sw s0, 0x14(sp) | *(var_14h) = s0;
0x0000b854 lw t9, -0x7f44(gp) | t9 = sym.imp.__snprintf_chk
0x0000b858 addu a0, s2, v0 | a0 = s2 + v0;
0x0000b85c sw s1, 0x10(sp) | *(var_10h) = s1;
0x0000b860 addiu a3, zero, -1 | a3 = -1;
0x0000b864 addiu a2, zero, 1 | a2 = 1;
0x0000b868 subu a1, s6, v0 | __asm ("subu a1, s6, v0");
0x0000b86c jalr t9 | t9 ();
0x0000b870 lbu s0, (s4) | s0 = *(s4);
0x0000b874 lw gp, 0x18(sp) | gp = *(var_18h);
0x0000b878 srlv v0, s3, s0 | v0 = s3 >> s0;
0x0000b87c sltiu a0, s0, 0xe | a0 = (s0 < 0xe) ? 1 : 0;
0x0000b880 ext v0, v0, 0, 1 | __asm ("ext v0, v0, 0, 1");
0x0000b884 beqz a0, 0xb834 |
| }
| if (v0 == 0) {
0x0000b888 beqz v0, 0xb834 | goto label_0;
| }
0x0000b88c nop |
| label_6:
0x0000b890 lw v0, 0x20(sp) | v0 = *(var_20h);
| label_12:
0x0000b894 lw t9, -0x7e34(gp) | t9 = sym.imp.strlen;
0x0000b898 addiu a0, v0, 0x534 | a0 = v0 + 0x534;
0x0000b89c jalr t9 | t9 ();
0x0000b8a0 lw gp, 0x18(sp) | gp = *(var_18h);
0x0000b8a4 ori a1, zero, 0xc350 | a1 = sym.imp.__fprintf_chk
0x0000b8a8 subu a1, a1, v0 | __asm ("subu a1, a1, v0");
0x0000b8ac lw a2, -0x7fd4(gp) | a2 = *((gp - 8181));
0x0000b8b0 lw t9, -0x7f74(gp) | t9 = sym.imp.snprintf
0x0000b8b4 addu a0, s2, v0 | a0 = s2 + v0;
0x0000b8b8 addiu a2, a2, -0x1b34 | a2 += -0x1b34;
0x0000b8bc jalr t9 | t9 ();
0x0000b8c0 lw v0, 0x24(sp) | v0 = *(var_24h);
0x0000b8c4 lw gp, 0x18(sp) | gp = *(var_18h);
0x0000b8c8 addiu a0, zero, 0xa | a0 = 0xa;
0x0000b8cc lw v0, 0x10(v0) | v0 = *((v0 + 4));
0x0000b8d0 addiu a1, zero, 0xd | a1 = 0xd;
| do {
| label_1:
0x0000b8d4 lbu v1, (v0) | v1 = *(v0);
0x0000b8d8 beql v1, a0, 0xb8d4 |
| } while (v1 == a0);
0x0000b8dc addiu v0, v0, -1 | v0 += -1;
| if (v1 == a1) {
0x0000b8e0 bne v1, a1, 0xb8f0 |
0x0000b8e4 nop |
0x0000b8e8 addiu v0, v0, -1 | v0 += -1;
0x0000b8ec b 0xb8d4 | goto label_1;
| }
0x0000b8f0 subu s1, v0, s5 | __asm ("subu s1, v0, s5");
| if (v0 == s5) {
0x0000b8f4 beq v0, s5, 0xb950 | goto label_13;
| }
0x0000b8f8 lw s3, -0x7fd4(gp) | s3 = *((gp - 8181));
0x0000b8fc lw v0, 0x20(sp) | v0 = *(var_20h);
0x0000b900 addiu s0, zero, 1 | s0 = 1;
0x0000b904 addiu s6, v0, 0x534 | s6 = v0 + 0x534;
0x0000b908 ori s5, zero, 0xc350 | s5 = sym.imp.__fprintf_chk
0x0000b90c addiu s3, s3, -0x1864 | s3 += -0x1864;
0x0000b910 addiu s7, zero, 0x51 | s7 = 0x51;
0x0000b914 b 0xb924 |
| while (s0 != s1) {
0x0000b918 addiu s0, s0, 1 | s0++;
0x0000b91c lw v0, 0x20(sp) | v0 = *(var_20h);
| if (s0 == s7) {
0x0000b920 beq s0, s7, 0xb954 | goto label_14;
| }
0x0000b924 lw t9, -0x7e34(gp) | t9 = sym.imp.strlen;
0x0000b928 move a0, s6 | a0 = s6;
0x0000b92c jalr t9 | t9 ();
0x0000b930 lw gp, 0x18(sp) | gp = *(var_18h);
0x0000b934 move a2, s3 | a2 = s3;
0x0000b938 subu a1, s5, v0 | __asm ("subu a1, s5, v0");
0x0000b93c lw t9, -0x7f74(gp) | t9 = sym.imp.snprintf
0x0000b940 addu a0, s2, v0 | a0 = s2 + v0;
0x0000b944 jalr t9 | t9 ();
0x0000b948 lw gp, 0x18(sp) | gp = *(var_18h);
0x0000b94c bne s0, s1, 0xb918 |
| }
| label_13:
0x0000b950 lw v0, 0x20(sp) | v0 = *(var_20h);
| label_14:
0x0000b954 lw t9, -0x7e34(gp) | t9 = sym.imp.strlen;
0x0000b958 addiu a0, v0, 0x534 | a0 = v0 + 0x534;
0x0000b95c jalr t9 | t9 ();
0x0000b960 lw gp, 0x18(sp) | gp = *(var_18h);
0x0000b964 ori a1, zero, 0xc350 | a1 = sym.imp.__fprintf_chk
0x0000b968 addu a0, s2, v0 | a0 = s2 + v0;
0x0000b96c lw a2, -0x7fd4(gp) | a2 = *((gp - 8181));
0x0000b970 lw t9, -0x7f74(gp) | t9 = sym.imp.snprintf
0x0000b974 subu a1, a1, v0 | __asm ("subu a1, a1, v0");
0x0000b978 addiu a2, a2, -0x1888 | a2 += -0x1888;
0x0000b97c jalr t9 | t9 ();
0x0000b980 lw gp, 0x18(sp) | gp = *(var_18h);
0x0000b984 lw t9, -0x7fd4(gp) | t9 = *((gp - 8181));
0x0000b988 addiu t9, t9, -0x7dbc | t9 += -0x7dbc;
0x0000b98c bal 0x8244 | fcn_00008244 ();
0x0000b990 nop |
0x0000b994 lw gp, 0x18(sp) | gp = *(var_18h);
0x0000b998 lw t9, -0x7e94(gp) | t9 = sym.imp.__xmlGenericError;
0x0000b99c jalr t9 | t9 ();
0x0000b9a0 nop |
0x0000b9a4 lw gp, 0x18(sp) | gp = *(var_18h);
0x0000b9a8 lw t9, -0x7dcc(gp) | t9 = sym.imp.__xmlGenericErrorContext;
0x0000b9ac lw s0, (v0) | s0 = *(v0);
0x0000b9b0 jalr t9 | t9 ();
0x0000b9b4 lw gp, 0x18(sp) | gp = *(var_18h);
0x0000b9b8 lw ra, 0x4c(sp) | ra = *(var_4ch);
0x0000b9bc lw fp, 0x48(sp) | fp = *(var_48h);
0x0000b9c0 lw a1, -0x7fd4(gp) | a1 = *((gp - 8181));
0x0000b9c4 lw s7, 0x44(sp) | s7 = *(var_44h);
0x0000b9c8 lw s6, 0x40(sp) | s6 = *(var_40h);
0x0000b9cc lw s5, 0x3c(sp) | s5 = *(var_3ch);
0x0000b9d0 lw s4, 0x38(sp) | s4 = *(var_38h);
0x0000b9d4 lw s3, 0x34(sp) | s3 = *(var_34h);
0x0000b9d8 lw s2, 0x30(sp) | s2 = *(var_30h);
0x0000b9dc lw s1, 0x2c(sp) | s1 = *(var_2ch);
0x0000b9e0 lw a0, (v0) | a0 = *(v0);
0x0000b9e4 move t9, s0 | t9 = s0;
0x0000b9e8 lw s0, 0x28(sp) | s0 = *(var_28h);
0x0000b9ec addiu a1, a1, -0x1884 | a1 += -0x1884;
0x0000b9f0 addiu sp, sp, 0x50 |
0x0000b9f4 jr t9 | t9 ();
| label_9:
0x0000b9f8 addiu v1, v0, -1 | v1 = v0 + -1;
| if (v1 == 0) {
0x0000b9fc beqz v1, 0xba7c | goto label_15;
| }
0x0000ba00 addiu a1, zero, 0xa | a1 = 0xa;
0x0000ba04 addiu v0, v0, -0x50 | v0 += -0x50;
0x0000ba08 addiu a2, zero, 0xd | a2 = 0xd;
0x0000ba0c b 0xba24 | goto label_16;
| if (s0 == a2) {
| label_3:
0x0000ba10 beql s0, a2, 0xba3c | goto label_17;
| }
0x0000ba14 lbu s0, 1(v1) | s0 = *((v1 + 1));
| if (a0 == v0) {
0x0000ba18 beql a0, v0, 0xba68 | goto label_18;
| }
0x0000ba1c lbu s0, -1(v1) | s0 = *((v1 - 1));
0x0000ba20 move v1, a0 | v1 = a0;
| label_16:
0x0000ba24 addiu a0, v1, -1 | a0 = v1 + -1;
0x0000ba28 lbu s0, (v1) | s0 = *(v1);
| if (s5 == v1) {
0x0000ba2c beq s5, v1, 0xb7e8 | goto label_2;
| }
| if (s0 != a1) {
0x0000ba30 bne s0, a1, 0xba10 | goto label_3;
| }
0x0000ba34 nop |
| label_10:
0x0000ba38 lbu s0, 1(v1) | s0 = *((v1 + 1));
| label_17:
0x0000ba3c sltiu v0, s0, 0xe | v0 = (s0 < 0xe) ? 1 : 0;
0x0000ba40 addiu s5, v1, 1 | s5 = v1 + 1;
| if (v0 == 0) {
0x0000ba44 beqz v0, 0xb808 | goto label_4;
| }
0x0000ba48 addiu v0, zero, 0x2401 | v0 = 0x2401;
0x0000ba4c srlv v0, v0, s0 | v0 >>= s0;
0x0000ba50 ext v0, v0, 0, 1 | __asm ("ext v0, v0, 0, 1");
0x0000ba54 lw v0, -0x7fdc(gp) | v0 = *(gp);
| if (v0 == 0) {
0x0000ba58 beqz v0, 0xb80c | goto label_5;
| }
| label_11:
0x0000ba5c sw v0, 0x20(sp) | *(var_20h) = v0;
0x0000ba60 addiu s2, v0, 0x534 | s2 = v0 + 0x534;
0x0000ba64 b 0xb890 | goto label_6;
| label_18:
0x0000ba68 move s5, v0 | s5 = v0;
0x0000ba6c b 0xb7e8 | goto label_2;
| label_8:
0x0000ba70 lbu s0, (v0) | s0 = *(v0);
0x0000ba74 move s5, v0 | s5 = v0;
0x0000ba78 b 0xb7e8 | goto label_2;
| label_15:
0x0000ba7c move s5, v0 | s5 = v0;
0x0000ba80 b 0xb7f4 | goto label_7;
| }
[*] Function printf used 9 times xmllint