[*] Binary protection state of libmbedx509.so.2.2.1
Partial RELRO No Canary found NX disabled DSO No RPATH No RUNPATH Symbols
[*] Function printf tear down of libmbedx509.so.2.2.1
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libmbedx509.so.2.2.1 @ 0x4bf4 */
| #include <stdint.h>
|
; (fcn) sym.mbedtls_x509_self_test () | void mbedtls_x509_self_test (uint32_t arg1) {
| int32_t var_0h;
| int32_t var_4h;
| int32_t var_8h;
| int32_t var_14h;
| int32_t var_18h;
| int32_t var_150h;
| int32_t var_28ch;
| r0 = arg1;
0x00004bf4 push {r4, r5, r6, r7, lr} |
0x00004bf8 ldr r4, [pc, 0x1b4] | r4 = *(0x4db0);
0x00004bfc ldr r3, [pc, 0x1b4] | r3 = *(0x4db4);
0x00004c00 add r4, pc, r4 | r4 = pc + r4;
0x00004c04 ldr r3, [r4, r3] | r3 = *(0x4db0);
0x00004c08 cmp r0, 0 |
0x00004c0c sub sp, sp, 0x28c |
0x00004c10 ldr r6, [r3] | r6 = *(0x4db0);
| if (r0 != 0) {
0x00004c14 bne 0x4cc8 | goto label_1;
| }
0x00004c18 add r5, sp, 0x150 | r5 += var_150h;
0x00004c1c mov r0, r5 | r0 = r5;
0x00004c20 bl 0x3648 | fcn_00003648 ();
0x00004c24 ldr r3, [pc, 0x190] | r3 = *(0x4db8);
0x00004c28 mov r2, r6 | r2 = r6;
0x00004c2c ldr r3, [r4, r3] | r3 = *((r4 + r3));
0x00004c30 mov r0, r5 | r0 = r5;
0x00004c34 ldr r1, [r3] | r1 = *(0x4db8);
0x00004c38 bl 0x33cc | fcn_000033cc ();
0x00004c3c subs r6, r0, 0 | r6 -= var_150h;
0x00004c40 beq 0x4c50 |
| while (r6 != var_18h) {
| label_0:
0x00004c44 mov r0, r6 | r0 = r6;
0x00004c48 add sp, sp, 0x28c |
0x00004c4c pop {r4, r5, r6, r7, pc} |
0x00004c50 add r7, sp, 0x18 | r7 += var_18h;
0x00004c54 mov r0, r7 | r0 = r7;
0x00004c58 bl 0x3648 | fcn_00003648 ();
0x00004c5c ldr r2, [pc, 0x15c] |
0x00004c60 ldr r3, [pc, 0x15c] | r3 = *(0x4dc0);
0x00004c64 ldr r2, [r4, r2] | r2 = *((r4 + r2));
0x00004c68 ldr r3, [r4, r3] | r3 = *((r4 + r3));
0x00004c6c ldr r2, [r2] | r2 = *(0x4dbc);
0x00004c70 ldr r1, [r3] | r1 = *(0x4dc0);
0x00004c74 mov r0, r7 | r0 = r7;
0x00004c78 bl 0x33cc | fcn_000033cc ();
0x00004c7c subs r6, r0, 0 | r6 -= var_18h;
0x00004c80 bne 0x4c44 |
| }
0x00004c84 add r3, sp, 0x14 | r3 += var_14h;
0x00004c88 str r6, [sp, 8] | var_8h = r6;
0x00004c8c str r6, [sp, 4] | var_4h = r6;
0x00004c90 str r3, [sp] | *(sp) = r3;
0x00004c94 mov r2, r6 | r2 = r6;
0x00004c98 mov r3, r6 | r3 = r6;
0x00004c9c mov r1, r7 | r1 = r7;
0x00004ca0 mov r0, r5 | r0 = r5;
0x00004ca4 bl 0x3564 | fcn_00003564 ();
0x00004ca8 subs r6, r0, 0 | r6 -= var_150h;
| if (r6 != var_150h) {
0x00004cac bne 0x4c44 | goto label_0;
| }
| do {
0x00004cb0 mov r0, r7 | r0 = r7;
0x00004cb4 bl 0x34bc | fcn_000034bc ();
0x00004cb8 mov r0, r5 | r0 = r5;
0x00004cbc bl 0x34bc | fcn_000034bc ();
0x00004cc0 mov r6, 0 | r6 = 0;
0x00004cc4 b 0x4c44 | goto label_0;
| label_1:
0x00004cc8 ldr r0, [pc, 0xf8] | r0 = *(0x4dc4);
0x00004ccc add r5, sp, 0x150 | r5 += var_150h;
0x00004cd0 add r0, pc, r0 | r0 = pc + r0;
0x00004cd4 bl 0x3210 | printf (r0, r1, r2, r3, r4, r5)
0x00004cd8 mov r0, r5 | r0 = r5;
0x00004cdc bl 0x3648 | fcn_00003648 ();
0x00004ce0 ldr r3, [pc, 0xd4] | r3 = *(0x4db8);
0x00004ce4 mov r2, r6 | r2 = r6;
0x00004ce8 ldr r3, [r4, r3] | r3 = *((r4 + r3));
0x00004cec mov r0, r5 | r0 = r5;
0x00004cf0 ldr r1, [r3] | r1 = *(0x4db8);
0x00004cf4 bl 0x33cc | fcn_000033cc ();
0x00004cf8 subs r6, r0, 0 | r6 -= var_150h;
| if (r6 != var_150h) {
0x00004cfc beq 0x4d18 |
0x00004d00 ldr r0, [pc, 0xc4] | r0 = *(0x4dc8);
0x00004d04 add r0, pc, r0 | r0 = pc + r0;
0x00004d08 bl 0x3330 | puts (r0);
0x00004d0c mov r0, r6 | r0 = r6;
0x00004d10 add sp, sp, 0x28c |
0x00004d14 pop {r4, r5, r6, r7, pc} |
| }
0x00004d18 add r7, sp, 0x18 | r7 += var_18h;
0x00004d1c mov r0, r7 | r0 = r7;
0x00004d20 bl 0x3648 | fcn_00003648 ();
0x00004d24 ldr r2, [pc, 0x94] |
0x00004d28 ldr r3, [pc, 0x94] | r3 = *(0x4dc0);
0x00004d2c ldr r2, [r4, r2] | r2 = *((r4 + r2));
0x00004d30 ldr r3, [r4, r3] | r3 = *((r4 + r3));
0x00004d34 ldr r2, [r2] | r2 = *(0x4dbc);
0x00004d38 ldr r1, [r3] | r1 = *(0x4dc0);
0x00004d3c mov r0, r7 | r0 = r7;
0x00004d40 bl 0x33cc | fcn_000033cc ();
0x00004d44 subs r6, r0, 0 | r6 -= var_18h;
| if (r6 != var_18h) {
0x00004d48 beq 0x4d5c |
0x00004d4c ldr r0, [pc, 0x7c] | r0 = *(0x4dcc);
0x00004d50 add r0, pc, r0 | r0 = pc + r0;
0x00004d54 bl 0x3330 | puts (r0);
0x00004d58 b 0x4c44 | goto label_0;
| }
0x00004d5c ldr r0, [pc, 0x70] | r0 = *(0x4dd0);
0x00004d60 add r0, pc, r0 | r0 = pc + r0;
0x00004d64 bl 0x3210 | printf (r0)
0x00004d68 add r3, sp, 0x14 | r3 += var_14h;
0x00004d6c str r6, [sp, 8] | var_8h = r6;
0x00004d70 str r6, [sp, 4] | var_4h = r6;
0x00004d74 str r3, [sp] | *(sp) = r3;
0x00004d78 mov r2, r6 | r2 = r6;
0x00004d7c mov r3, r6 | r3 = r6;
0x00004d80 mov r1, r7 | r1 = r7;
0x00004d84 mov r0, r5 | r0 = r5;
0x00004d88 bl 0x3564 | fcn_00003564 ();
0x00004d8c subs r6, r0, 0 | r6 -= var_150h;
| if (r6 != var_150h) {
0x00004d90 beq 0x4da4 |
0x00004d94 ldr r0, [pc, 0x3c] | r0 = *(0x4dd4);
0x00004d98 add r0, pc, r0 | r0 = pc + r0;
0x00004d9c bl 0x3330 | puts (r0);
0x00004da0 b 0x4c44 | goto label_0;
| }
0x00004da4 ldr r0, [pc, 0x30] | r0 = *(0x4dd8);
0x00004da8 add r0, pc, r0 | r0 = pc + r0;
0x00004dac bl 0x3330 | puts (r0);
0x00004db0 b 0x4cb0 |
| } while (1);
| }
[*] Function printf used 3 times libmbedx509.so.2.2.1