[*] Binary protection state of libmbedcrypto.so.2.16.0
Full RELRO No Canary found NX enabled DSO No RPATH No RUNPATH No Symbols
[*] Function sprintf tear down of libmbedcrypto.so.2.16.0
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/1568982-13971496.squashfs_v4_le_extract/usr/lib/libmbedcrypto.so.2.16.0 @ 0x20ae8 */
| #include <stdint.h>
|
; (fcn) sym.mbedtls_md_file () | void mbedtls_md_file () {
0x00020ae8 lui gp, 3 |
0x00020aec addiu gp, gp, 0x1528 |
0x00020af0 addu gp, gp, t9 | gp += t9;
0x00020af4 addiu sp, sp, -0x448 |
0x00020af8 sw gp, 0x10(sp) | *(var_10h) = gp;
0x00020afc sw ra, 0x444(sp) | *(var_444h) = ra;
0x00020b00 sw s5, 0x440(sp) | *(var_440h) = s5;
0x00020b04 sw s4, 0x43c(sp) | *(var_43ch) = s4;
0x00020b08 sw s3, 0x438(sp) | *(var_438h) = s3;
0x00020b0c sw s2, 0x434(sp) | *(var_434h) = s2;
0x00020b10 sw s1, 0x430(sp) | *(var_430h) = s1;
0x00020b14 sw s0, 0x42c(sp) | *(var_42ch) = s0;
0x00020b18 move v0, a1 | v0 = a1;
| if (a0 == 0) {
0x00020b1c beqz a0, 0x20c70 | goto label_3;
| }
0x00020b20 lw a1, -0x7fd8(gp) | a1 = *((gp - 8182));
0x00020b24 lw t9, -0x7a94(gp) | t9 = *((gp - 7845));
0x00020b28 move s1, a0 | s1 = a0;
0x00020b2c addiu a1, a1, 0x4308 | a1 += 0x4308;
0x00020b30 move a0, v0 | a0 = v0;
0x00020b34 move s4, a2 | s4 = a2;
0x00020b38 jalr t9 | t9 ();
0x00020b3c move s3, v0 | s3 = v0;
0x00020b40 lw gp, 0x10(sp) | gp = *(var_10h);
| if (v0 == 0) {
0x00020b44 beqz v0, 0x20c78 | goto label_4;
| }
0x00020b48 lw t9, -0x7cec(gp) | t9 = *((gp - 7995));
0x00020b4c addiu s5, sp, 0x418 | s5 = sp + aav.0x00000418;
0x00020b50 move a0, s5 | a0 = s5;
0x00020b54 bal 0x20834 | sym_mbedtls_md_init ();
0x00020b58 lw gp, 0x10(sp) | gp = *(var_10h);
0x00020b5c move a2, zero | a2 = 0;
0x00020b60 move a1, s1 | a1 = s1;
0x00020b64 lw t9, -0x7d00(gp) | t9 = *((gp - 8000));
0x00020b68 move a0, s5 | a0 = s5;
0x00020b6c bal 0x20974 | sym_mbedtls_md_setup ();
0x00020b70 move s0, v0 | s0 = v0;
0x00020b74 lw gp, 0x10(sp) | gp = *(var_10h);
| if (v0 != 0) {
0x00020b78 bnez v0, 0x20c60 | goto label_5;
| }
0x00020b7c lw t9, 0x10(s1) | t9 = *((s1 + 4));
0x00020b80 lw a0, 0x41c(sp) | a0 = *(var_41ch);
0x00020b84 addiu s2, sp, 0x18 | s2 = sp + 0x18;
0x00020b88 jalr t9 | t9 ();
0x00020b8c move s0, v0 | s0 = v0;
0x00020b90 lw gp, 0x10(sp) | gp = *(var_10h);
| if (v0 == 0) {
0x00020b94 beqz v0, 0x20c08 | goto label_6;
| }
| do {
| label_1:
0x00020b98 lw t9, -0x7fd4(gp) | t9 = *((gp - 8181));
0x00020b9c addiu a1, zero, 0x400 | a1 = 0x400;
0x00020ba0 move a0, s2 | a0 = s2;
0x00020ba4 bal 0x29110 | sym_mbedtls_platform_zeroize ();
0x00020ba8 lw gp, 0x10(sp) | gp = *(var_10h);
0x00020bac lw t9, -0x7b18(gp) | t9 = *((gp - 7878));
0x00020bb0 move a0, s3 | a0 = s3;
0x00020bb4 jalr t9 | t9 ();
0x00020bb8 lw gp, 0x10(sp) | gp = *(var_10h);
0x00020bbc lw t9, -0x7cf4(gp) | t9 = *((gp - 7997));
0x00020bc0 move a0, s5 | a0 = s5;
0x00020bc4 bal 0x20868 | sym_mbedtls_md_free ();
| label_2:
0x00020bc8 lw ra, 0x444(sp) | ra = *(var_444h);
0x00020bcc move v0, s0 | v0 = s0;
0x00020bd0 lw s5, 0x440(sp) | s5 = *(var_440h);
0x00020bd4 lw s4, 0x43c(sp) | s4 = *(var_43ch);
0x00020bd8 lw s3, 0x438(sp) | s3 = *(var_438h);
0x00020bdc lw s2, 0x434(sp) | s2 = *(var_434h);
0x00020be0 lw s1, 0x430(sp) | s1 = *(var_430h);
0x00020be4 lw s0, 0x42c(sp) | s0 = *(var_42ch);
0x00020be8 addiu sp, sp, 0x448 |
0x00020bec jr ra | return v0;
| label_0:
0x00020bf0 lw t9, 0x14(s1) | t9 = *((s1 + 5));
0x00020bf4 lw a0, 0x41c(sp) | a0 = *(var_41ch);
0x00020bf8 jalr t9 | t9 ();
0x00020bfc move s0, v0 | s0 = v0;
0x00020c00 lw gp, 0x10(sp) | gp = *(var_10h);
0x00020c04 bnez v0, 0x20b98 |
| } while (v0 != 0);
| label_6:
0x00020c08 lw t9, -0x7ad4(gp) | t9 = *((gp - 7861));
0x00020c0c addiu a2, zero, 0x400 | a2 = 0x400;
0x00020c10 addiu a1, zero, 1 | a1 = 1;
0x00020c14 move a0, s2 | a0 = s2;
0x00020c18 move a3, s3 | a3 = s3;
0x00020c1c jalr t9 | t9 ();
0x00020c20 move a2, v0 | a2 = v0;
0x00020c24 lw gp, 0x10(sp) | gp = *(var_10h);
0x00020c28 move a1, s2 | a1 = s2;
| if (v0 != 0) {
0x00020c2c bnez v0, 0x20bf0 | goto label_0;
| }
0x00020c30 lw t9, -0x7aa4(gp) | t9 = *((gp - 7849));
0x00020c34 move a0, s3 | a0 = s3;
0x00020c38 jalr t9 | t9 ();
0x00020c3c lw gp, 0x10(sp) | gp = *(var_10h);
| if (v0 == 0) {
0x00020c40 bnez v0, 0x20c68 |
0x00020c44 lw t9, 0x18(s1) | t9 = *((s1 + 6));
0x00020c48 lw a0, 0x41c(sp) | a0 = *(var_41ch);
0x00020c4c move a1, s4 | a1 = s4;
0x00020c50 jalr t9 | t9 ();
0x00020c54 move s0, v0 | s0 = v0;
0x00020c58 lw gp, 0x10(sp) | gp = *(var_10h);
0x00020c5c b 0x20b98 | goto label_1;
| label_5:
0x00020c60 addiu s2, sp, 0x18 | s2 = sp + 0x18;
0x00020c64 b 0x20b98 | goto label_1;
| }
0x00020c68 addiu s0, zero, -0x5200 | s0 = -0x5200;
0x00020c6c b 0x20b98 | goto label_1;
| label_3:
0x00020c70 addiu s0, zero, -0x5100 | s0 = -0x5100;
0x00020c74 b 0x20bc8 | goto label_2;
| label_4:
0x00020c78 addiu s0, zero, -0x5200 | s0 = -0x5200;
0x00020c7c b 0x20bc8 | goto label_2;
| }
[*] Function sprintf used 1 times libmbedcrypto.so.2.16.0