[*] Binary protection state of libcrypto.so.1.1
Full RELRO Canary found NX disabled DSO No RPATH No RUNPATH No Symbols
[*] Function popen tear down of libcrypto.so.1.1
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/4325012-58052244.squashfs_v4_le_extract/usr/lib/libcrypto.so.1.1 @ 0x42784 */
| #include <stdint.h>
|
; (fcn) entry.fini0 () | void entry_fini0 () {
0x00042784 lui gp, 0x1f |
0x00042788 addiu gp, gp, 0x159c |
0x0004278c addu gp, gp, t9 | gp += t9;
0x00042790 addiu sp, sp, -0x20 |
0x00042794 sw s0, 0x18(sp) | *(var_18h) = s0;
0x00042798 lw s0, -0x7fe4(gp) | s0 = *(gp);
0x0004279c sw gp, 0x10(sp) | *(var_10h) = gp;
0x000427a0 sw ra, 0x1c(sp) | *(var_1ch) = ra;
0x000427a4 lbu v0, -0x1550(s0) | v0 = *((s0 - 5456));
0x000427a8 lw v0, -0x53c4(gp) | v0 = *((gp - 5361));
| if (v0 == 0) {
0x000427ac bnez v0, 0x427e0 |
0x000427b0 lw v0, -0x7fe0(gp) | v0 = *((gp - 8184));
| if (v0 != 0) {
0x000427b4 beqz v0, 0x427c8 |
0x000427b8 lw t9, -0x53c4(gp) | t9 = *((gp - 5361));
0x000427bc lw a0, (v0) | a0 = *(v0);
0x000427c0 jalr t9 | t9 ();
0x000427c4 lw gp, 0x10(sp) | gp = *(var_10h);
| }
0x000427c8 lw t9, -0x7fdc(gp) | t9 = *((gp - 8183));
0x000427cc addiu t9, t9, 0x2700 | t9 += 0x2700;
0x000427d0 bal 0x42700 | entry0 ();
0x000427d4 nop |
0x000427d8 addiu v0, zero, 1 | v0 = 1;
0x000427dc sb v0, -0x1550(s0) | *((s0 - 5456)) = v0;
| }
0x000427e0 lw ra, 0x1c(sp) | ra = *(var_1ch);
0x000427e4 lw s0, 0x18(sp) | s0 = *(var_18h);
0x000427e8 addiu sp, sp, 0x20 |
0x000427ec jr ra | return v0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/4325012-58052244.squashfs_v4_le_extract/usr/lib/libcrypto.so.1.1 @ 0x4abcc */
| #include <stdint.h>
|
; (fcn) sym.ASN1_UNIVERSALSTRING_to_string () | void ASN1_UNIVERSALSTRING_to_string () {
0x0004abcc lui gp, 0x1f |
0x0004abd0 addiu gp, gp, -0x6eac |
0x0004abd4 addu gp, gp, t9 | gp += t9;
0x0004abd8 lw v1, 4(a0) | v1 = *((a0 + 1));
0x0004abdc addiu v0, zero, 0x1c | v0 = 0x1c;
| if (v1 != v0) {
0x0004abe0 bne v1, v0, 0x4ace8 | goto label_0;
| }
0x0004abe4 nop |
0x0004abe8 lw a3, (a0) | a3 = *(a0);
0x0004abec andi v0, a3, 3 | v0 = a3 & 3;
| if (v0 != 0) {
0x0004abf0 bnez v0, 0x4ace8 | goto label_0;
| }
0x0004abf4 nop |
0x0004abf8 lw v1, 8(a0) | v1 = *((a0 + 2));
| if (a3 <= 0) {
0x0004abfc blez a3, 0x4ac68 | goto label_1;
| }
0x0004ac00 lbu v0, (v1) | v0 = *(v1);
| if (v0 != 0) {
0x0004ac04 bnez v0, 0x4ace8 | goto label_0;
| }
0x0004ac08 nop |
0x0004ac0c lbu v0, 1(v1) | v0 = *((v1 + 1));
| if (v0 != 0) {
0x0004ac10 bnez v0, 0x4ace8 | goto label_0;
| }
0x0004ac14 nop |
0x0004ac18 lbu v0, 2(v1) | v0 = *((v1 + 2));
0x0004ac1c addiu a1, a3, -1 | a1 = a3 + -1;
| if (v0 != 0) {
0x0004ac20 bnez v0, 0x4ace8 | goto label_0;
| }
0x0004ac24 srl a1, a1, 2 | a1 >>= 2;
| /* esilref: 'EC_GROUP_set_curve' */
0x0004ac28 addiu a1, a1, 1 | a1++;
0x0004ac2c sll a1, a1, 2 | a1 <<= 2;
0x0004ac30 addu a1, v1, a1 | a1 = v1 + a1;
0x0004ac34 move v0, v1 | v0 = v1;
0x0004ac38 b 0x4ac5c |
| if (a2 != 0) {
| while (a1 == v0) {
0x0004ac3c bnez a2, 0x4ace8 | goto label_0;
| }
0x0004ac40 nop |
0x0004ac44 lbu a2, 1(v0) | a2 = *((v0 + 1));
| if (a2 != 0) {
0x0004ac48 bnez a2, 0x4ace8 | goto label_0;
| }
0x0004ac4c nop |
0x0004ac50 lbu a2, 2(v0) | a2 = *((v0 + 2));
| if (a2 != 0) {
0x0004ac54 bnez a2, 0x4acf0 | goto label_2;
| }
0x0004ac58 nop |
0x0004ac5c addiu v0, v0, 4 | v0 += 4;
0x0004ac60 lbu a2, (v0) | a2 = *(v0);
0x0004ac64 bnel a1, v0, 0x4ac3c |
| }
| label_1:
0x0004ac68 addiu sp, sp, -0x20 |
0x0004ac6c slti a3, a3, 4 | a3 = (a3 < 4) ? 1 : 0;
0x0004ac70 sw gp, 0x10(sp) | *(var_10h) = gp;
0x0004ac74 sw ra, 0x1c(sp) | *(var_1ch) = ra;
0x0004ac78 sw s0, 0x18(sp) | *(var_18h) = s0;
0x0004ac7c move a1, v1 | a1 = v1;
| if (a3 != 0) {
0x0004ac80 bnez a3, 0x4aca8 | goto label_3;
| }
0x0004ac84 addiu v0, zero, 3 | v0 = 3;
| do {
0x0004ac88 lbux a1, v0(a1) | __asm ("lbux a1, v0(a1)");
0x0004ac8c addiu v1, v1, 1 | v1++;
0x0004ac90 sb a1, -1(v1) | *((v1 - 1)) = a1;
0x0004ac94 lw a1, (a0) | a1 = *(a0);
0x0004ac98 addiu v0, v0, 4 | v0 += 4;
0x0004ac9c slt a1, v0, a1 | a1 = (v0 < a1) ? 1 : 0;
0x0004aca0 lw a1, 8(a0) | a1 = *((a0 + 2));
0x0004aca4 bnel a1, zero, 0x4ac88 |
| } while (a1 == 0);
| label_3:
0x0004aca8 sb zero, (v1) | *(v1) = 0;
0x0004acac lw a1, (a0) | a1 = *(a0);
| if (a1 >= 0) {
0x0004acb0 bltzl a1, 0x4acb8 |
0x0004acb4 addiu a1, a1, 3 | a1 += 3;
| }
0x0004acb8 move s0, a0 | s0 = a0;
0x0004acbc sra a1, a1, 2 | a1 >>= 2;
0x0004acc0 lw a0, 8(a0) | a0 = *((a0 + 2));
0x0004acc4 lw t9, -0x7e88(gp) | t9 = *(gp);
0x0004acc8 sw a1, (s0) | *(s0) = a1;
0x0004accc bal 0x4aaa0 | sym_ASN1_PRINTABLE_type ();
0x0004acd0 lw ra, 0x1c(sp) | ra = *(var_1ch);
0x0004acd4 sw v0, 4(s0) | *((s0 + 1)) = v0;
0x0004acd8 lw s0, 0x18(sp) | s0 = *(var_18h);
0x0004acdc addiu v0, zero, 1 | v0 = 1;
0x0004ace0 addiu sp, sp, 0x20 |
0x0004ace4 jr ra | return v0;
| label_0:
0x0004ace8 move v0, zero | v0 = 0;
0x0004acec jr ra | return v0;
| label_2:
0x0004acf0 move v0, zero | v0 = 0;
0x0004acf4 jr ra | return v0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/4325012-58052244.squashfs_v4_le_extract/usr/lib/libcrypto.so.1.1 @ 0xa0aac */
| #include <stdint.h>
|
; (fcn) sym.CMS_SignerInfo_sign () | void CMS_SignerInfo_sign () {
0x000a0aac lui gp, 0x19 |
0x000a0ab0 addiu gp, gp, 0x3274 |
0x000a0ab4 addu gp, gp, t9 | gp += t9;
0x000a0ab8 addiu sp, sp, -0x48 |
0x000a0abc lw v1, 8(a0) | v1 = *((a0 + 2));
0x000a0ac0 sw s1, 0x34(sp) | *(var_34h) = s1;
0x000a0ac4 lw s1, -0x53f0(gp) | s1 = *((gp - 5372));
0x000a0ac8 lw t9, -0x7ea0(gp) | t9 = *((gp - 8104));
0x000a0acc sw s0, 0x30(sp) | *(var_30h) = s0;
0x000a0ad0 lw v0, (s1) | v0 = *(s1);
0x000a0ad4 move s0, a0 | s0 = a0;
0x000a0ad8 lw a0, (v1) | a0 = *(v1);
0x000a0adc sw ra, 0x44(sp) | *(var_44h) = ra;
0x000a0ae0 sw gp, 0x18(sp) | *(var_18h) = gp;
0x000a0ae4 sw s2, 0x38(sp) | *(var_38h) = s2;
0x000a0ae8 sw s4, 0x40(sp) | *(var_40h) = s4;
0x000a0aec sw s3, 0x3c(sp) | *(var_3ch) = s3;
0x000a0af0 sw v0, 0x2c(sp) | *(var_2ch) = v0;
0x000a0af4 sw zero, 0x20(sp) | *(var_20h) = 0;
0x000a0af8 sw zero, 0x24(sp) | *(var_24h) = 0;
0x000a0afc lw s2, 0x24(s0) | s2 = *((s0 + 9));
0x000a0b00 jalr t9 | t9 ();
0x000a0b04 lw gp, 0x18(sp) | gp = *(var_18h);
0x000a0b08 lw t9, -0x7e14(gp) | t9 = *((gp - 8069));
0x000a0b0c move a0, v0 | a0 = v0;
0x000a0b10 jalr t9 | t9 ();
0x000a0b14 lw gp, 0x18(sp) | gp = *(var_18h);
0x000a0b18 lw t9, -0x7d90(gp) | t9 = *((gp - 8036));
0x000a0b1c move a0, v0 | a0 = v0;
0x000a0b20 jalr t9 | t9 ();
0x000a0b24 lw gp, 0x18(sp) | gp = *(var_18h);
| if (v0 == 0) {
0x000a0b28 beqz v0, 0xa0d70 | goto label_5;
| }
0x000a0b2c lw t9, -0x7398(gp) | t9 = *((gp - 7398));
0x000a0b30 addiu a2, zero, -1 | a2 = -1;
0x000a0b34 addiu a1, zero, 0x34 | a1 = 0x34;
0x000a0b38 move a0, s0 | a0 = s0;
0x000a0b3c move s3, v0 | s3 = v0;
0x000a0b40 bal 0x99444 | sym_CMS_signed_get_attr_by_NID ();
0x000a0b44 lw gp, 0x18(sp) | gp = *(var_18h);
| if (v0 < 0) {
0x000a0b48 bltz v0, 0xa0ca8 | goto label_6;
| }
0x000a0b4c lw t9, -0x7394(gp) | t9 = *((gp - 7397));
0x000a0b50 move a0, s0 | a0 = s0;
0x000a0b54 bal 0x9971c | fcn_0009971c ();
0x000a0b58 lw gp, 0x18(sp) | gp = *(var_18h);
| if (v0 == 0) {
0x000a0b5c beqz v0, 0xa0d14 | goto label_1;
| }
| do {
0x000a0b60 lw a0, 0x28(s0) | a0 = *((s0 + 10));
0x000a0b64 lw t9, -0x7390(gp) | t9 = *((gp - 7396));
| if (a0 == 0) {
0x000a0b68 beqz a0, 0xa0de8 | goto label_7;
| }
0x000a0b6c sw a0, 0x20(sp) | *(var_20h) = a0;
| label_2:
0x000a0b70 lw t9, -0x74f4(gp) | t9 = *(gp);
0x000a0b74 sw s0, 0x14(sp) | *(var_14h) = s0;
0x000a0b78 sw zero, 0x10(sp) | *(var_10h_4) = 0;
0x000a0b7c addiu a3, zero, 0xb | a3 = 0xb;
0x000a0b80 addiu a2, zero, 8 | a2 = 8;
0x000a0b84 addiu a1, zero, -1 | a1 = -1;
0x000a0b88 jalr t9 | t9 ();
0x000a0b8c lw gp, 0x18(sp) | gp = *(var_18h);
| if (v0 <= 0) {
0x000a0b90 blez v0, 0xa0db8 | goto label_8;
| }
0x000a0b94 lw t9, -0x7f48(gp) | t9 = *((gp - 8146));
0x000a0b98 lw a2, -0x738c(gp) | a2 = *((gp - 7395));
0x000a0b9c lw a0, 0xc(s0) | a0 = *((s0 + 3));
0x000a0ba0 addiu a1, sp, 0x24 | a1 = sp + 0x24;
0x000a0ba4 jalr t9 | t9 ();
0x000a0ba8 lw a0, 0x24(sp) | a0 = *(var_24h);
0x000a0bac lw gp, 0x18(sp) | gp = *(var_18h);
| if (a0 == 0) {
0x000a0bb0 beqz a0, 0xa0d18 | goto label_9;
| }
0x000a0bb4 lw t9, -0x7e70(gp) | t9 = *((gp - 8092));
0x000a0bb8 move a1, a0 | a1 = a0;
0x000a0bbc move a2, v0 | a2 = v0;
0x000a0bc0 move a0, s2 | a0 = s2;
0x000a0bc4 jalr t9 | t9 ();
0x000a0bc8 lw gp, 0x18(sp) | gp = *(var_18h);
| if (v0 <= 0) {
0x000a0bcc blez v0, 0xa0d14 | goto label_1;
| }
0x000a0bd0 lw t9, -0x7388(gp) | t9 = *((gp - 7394));
0x000a0bd4 addiu s4, sp, 0x28 | s4 = sp + 0x28;
0x000a0bd8 move a2, s4 | a2 = s4;
0x000a0bdc move a1, zero | a1 = 0;
0x000a0be0 move a0, s2 | a0 = s2;
0x000a0be4 jalr t9 | t9 ();
0x000a0be8 lw gp, 0x18(sp) | gp = *(var_18h);
| if (v0 <= 0) {
0x000a0bec blez v0, 0xa0d14 | goto label_1;
| }
0x000a0bf0 lw s3, -0x7e04(gp) | s3 = *((gp - 8065));
0x000a0bf4 lw t9, -0x7f98(gp) | t9 = *(gp);
0x000a0bf8 lw a0, 0x24(sp) | a0 = *(var_24h);
0x000a0bfc addiu a2, zero, 0x2bc | a2 = aav.0x000002bc;
0x000a0c00 addiu a1, s3, -0x1378 | a1 = s3 + -aav.0x00001378;
0x000a0c04 jalr t9 | t9 ();
0x000a0c08 lw gp, 0x18(sp) | gp = *(var_18h);
0x000a0c0c lw a0, 0x28(sp) | a0 = *(var_28h_4);
0x000a0c10 addiu a2, zero, 0x2bd | a2 = 0x2bd;
0x000a0c14 lw t9, -0x7f9c(gp) | t9 = *((gp - 8167));
0x000a0c18 addiu a1, s3, -0x1378 | a1 = s3 + -aav.0x00001378;
0x000a0c1c jalr t9 | t9 ();
0x000a0c20 move a0, v0 | a0 = v0;
0x000a0c24 lw gp, 0x18(sp) | gp = *(var_18h);
0x000a0c28 sw v0, 0x24(sp) | *(var_24h) = v0;
| if (v0 == 0) {
0x000a0c2c beqz v0, 0xa0d1c | goto label_0;
| }
0x000a0c30 lw t9, -0x7388(gp) | t9 = *((gp - 7394));
0x000a0c34 move a2, s4 | a2 = s4;
0x000a0c38 move a1, v0 | a1 = v0;
0x000a0c3c move a0, s2 | a0 = s2;
0x000a0c40 jalr t9 | t9 ();
0x000a0c44 lw gp, 0x18(sp) | gp = *(var_18h);
| if (v0 <= 0) {
0x000a0c48 blez v0, 0xa0de0 | goto label_10;
| }
0x000a0c4c lw t9, -0x74f4(gp) | t9 = *(gp);
0x000a0c50 addiu v0, zero, 1 | v0 = 1;
0x000a0c54 lw a0, 0x20(sp) | a0 = *(var_20h);
0x000a0c58 sw s0, 0x14(sp) | *(var_14h) = s0;
0x000a0c5c sw v0, 0x10(sp) | *(var_10h_4) = v0;
0x000a0c60 addiu a3, zero, 0xb | a3 = 0xb;
0x000a0c64 addiu a2, zero, 8 | a2 = 8;
0x000a0c68 addiu a1, zero, -1 | a1 = -1;
0x000a0c6c jalr t9 | t9 ();
0x000a0c70 lw gp, 0x18(sp) | gp = *(var_18h);
| if (v0 <= 0) {
0x000a0c74 blez v0, 0xa0e38 | goto label_11;
| }
0x000a0c78 lw t9, -0x7390(gp) | t9 = *((gp - 7396));
0x000a0c7c move a0, s2 | a0 = s2;
0x000a0c80 jalr t9 | t9 ();
0x000a0c84 lw gp, 0x18(sp) | gp = *(var_18h);
0x000a0c88 lw a2, 0x28(sp) | a2 = *(var_28h_4);
0x000a0c8c lw a1, 0x24(sp) | a1 = *(var_24h);
0x000a0c90 lw t9, -0x7ba8(gp) | t9 = *((gp - 7914));
0x000a0c94 lw a0, 0x14(s0) | a0 = *((s0 + 5));
0x000a0c98 jalr t9 | t9 ();
0x000a0c9c lw gp, 0x18(sp) | gp = *(var_18h);
0x000a0ca0 addiu v0, zero, 1 | v0 = 1;
0x000a0ca4 b 0xa0d44 | goto label_12;
| label_6:
0x000a0ca8 lw t9, -0x7384(gp) | t9 = *((gp - 7393));
0x000a0cac move a1, zero | a1 = 0;
0x000a0cb0 move a0, zero | a0 = 0;
0x000a0cb4 jalr t9 | t9 ();
0x000a0cb8 move s4, v0 | s4 = v0;
0x000a0cbc lw gp, 0x18(sp) | gp = *(var_18h);
| if (v0 == 0) {
0x000a0cc0 beqz v0, 0xa0d78 | goto label_13;
| }
0x000a0cc4 lw t9, -0x74c4(gp) | t9 = *(gp);
0x000a0cc8 lw a2, 4(v0) | a2 = *((v0 + 1));
0x000a0ccc addiu v0, zero, -1 | v0 = -1;
0x000a0cd0 move a0, s0 | a0 = s0;
0x000a0cd4 sw v0, 0x10(sp) | *(var_10h_4) = v0;
0x000a0cd8 move a3, s4 | a3 = s4;
0x000a0cdc addiu a1, zero, 0x34 | a1 = 0x34;
0x000a0ce0 bal 0x99514 | sym_CMS_signed_add1_attr_by_NID ();
0x000a0ce4 lw gp, 0x18(sp) | gp = *(var_18h);
0x000a0ce8 move a0, s4 | a0 = s4;
0x000a0cec lw t9, -0x7380(gp) | t9 = *((gp - 7392));
| if (v0 <= 0) {
0x000a0cf0 blez v0, 0xa0e28 | goto label_14;
| }
0x000a0cf4 jalr t9 | t9 ();
0x000a0cf8 nop |
0x000a0cfc lw gp, 0x18(sp) | gp = *(var_18h);
0x000a0d00 lw t9, -0x7394(gp) | t9 = *((gp - 7397));
0x000a0d04 move a0, s0 | a0 = s0;
0x000a0d08 bal 0x9971c | fcn_0009971c ();
0x000a0d0c lw gp, 0x18(sp) | gp = *(var_18h);
0x000a0d10 bnez v0, 0xa0b60 |
| } while (v0 != 0);
| label_1:
0x000a0d14 lw a0, 0x24(sp) | a0 = *(var_24h);
| label_9:
0x000a0d18 lw s3, -0x7e04(gp) | s3 = *((gp - 8065));
| label_0:
0x000a0d1c lw t9, -0x7f98(gp) | t9 = *(gp);
0x000a0d20 addiu a2, zero, 0x2d0 | a2 = aav.0x000002d0;
0x000a0d24 addiu a1, s3, -0x1378 | a1 = s3 + -aav.0x00001378;
0x000a0d28 jalr t9 | t9 ();
0x000a0d2c lw gp, 0x18(sp) | gp = *(var_18h);
0x000a0d30 lw t9, -0x7390(gp) | t9 = *((gp - 7396));
0x000a0d34 move a0, s2 | a0 = s2;
0x000a0d38 jalr t9 | t9 ();
0x000a0d3c lw gp, 0x18(sp) | gp = *(var_18h);
0x000a0d40 move v0, zero | v0 = 0;
| do {
| label_12:
0x000a0d44 lw a0, 0x2c(sp) | a0 = *(var_2ch);
0x000a0d48 lw v1, (s1) | v1 = *(s1);
0x000a0d4c lw ra, 0x44(sp) | ra = *(var_44h);
| if (a0 != v1) {
0x000a0d50 bne a0, v1, 0xa0e44 | goto label_15;
| }
0x000a0d54 lw s4, 0x40(sp) | s4 = *(var_40h);
0x000a0d58 lw s3, 0x3c(sp) | s3 = *(var_3ch);
0x000a0d5c lw s2, 0x38(sp) | s2 = *(var_38h);
0x000a0d60 lw s1, 0x34(sp) | s1 = *(var_34h);
0x000a0d64 lw s0, 0x30(sp) | s0 = *(var_30h);
0x000a0d68 addiu sp, sp, 0x48 |
0x000a0d6c jr ra | return v0;
| label_5:
0x000a0d70 move v0, zero | v0 = 0;
0x000a0d74 b 0xa0d44 |
| } while (1);
| label_13:
0x000a0d78 lw t9, -0x7380(gp) | t9 = *((gp - 7392));
0x000a0d7c move a0, zero | a0 = 0;
0x000a0d80 jalr t9 | t9 ();
0x000a0d84 lw gp, 0x18(sp) | gp = *(var_18h);
| label_3:
0x000a0d88 lw s3, -0x7e04(gp) | s3 = *((gp - 8065));
0x000a0d8c lw t9, -0x7f94(gp) | t9 = *((gp - 8165));
0x000a0d90 addiu v0, zero, 0x1a3 | v0 = 0x1a3;
0x000a0d94 addiu a0, zero, 0x2e | a0 = 0x2e;
0x000a0d98 sw v0, 0x10(sp) | *(var_10h_4) = v0;
0x000a0d9c addiu a3, s3, -0x1378 | a3 = s3 + -aav.0x00001378;
0x000a0da0 addiu a2, zero, 0x41 | a2 = 0x41;
0x000a0da4 addiu a1, zero, 0x67 | a1 = 0x67;
0x000a0da8 jalr t9 | t9 ();
0x000a0dac lw gp, 0x18(sp) | gp = *(var_18h);
0x000a0db0 lw a0, 0x24(sp) | a0 = *(var_24h);
0x000a0db4 b 0xa0d1c | goto label_0;
| label_8:
0x000a0db8 lw s3, -0x7e04(gp) | s3 = *((gp - 8065));
0x000a0dbc lw t9, -0x7f94(gp) | t9 = *((gp - 8165));
0x000a0dc0 addiu v0, zero, 0x2b0 | v0 = aav.0x000002b0;
| label_4:
0x000a0dc4 sw v0, 0x10(sp) | *(var_10h_4) = v0;
0x000a0dc8 addiu a3, s3, -0x1378 | a3 = s3 + -aav.0x00001378;
0x000a0dcc addiu a2, zero, 0x6e | a2 = 0x6e;
0x000a0dd0 addiu a1, zero, 0x97 | a1 = 0x97;
0x000a0dd4 addiu a0, zero, 0x2e | a0 = 0x2e;
0x000a0dd8 jalr t9 | t9 ();
0x000a0ddc lw gp, 0x18(sp) | gp = *(var_18h);
| label_10:
0x000a0de0 lw a0, 0x24(sp) | a0 = *(var_24h);
0x000a0de4 b 0xa0d1c | goto label_0;
| label_7:
0x000a0de8 move a0, s2 | a0 = s2;
0x000a0dec jalr t9 | t9 ();
0x000a0df0 lw gp, 0x18(sp) | gp = *(var_18h);
0x000a0df4 lw v0, 0x20(s0) | v0 = *((s0 + 8));
0x000a0df8 move a3, zero | a3 = 0;
0x000a0dfc lw t9, -0x7e44(gp) | t9 = *((gp - 8081));
0x000a0e00 sw v0, 0x10(sp) | *(var_10h_4) = v0;
0x000a0e04 move a2, s3 | a2 = s3;
0x000a0e08 addiu a1, sp, 0x20 | a1 = sp + 0x20;
0x000a0e0c move a0, s2 | a0 = s2;
0x000a0e10 jalr t9 | t9 ();
0x000a0e14 lw gp, 0x18(sp) | gp = *(var_18h);
| if (v0 <= 0) {
0x000a0e18 blez v0, 0xa0d14 | goto label_1;
| }
0x000a0e1c lw a0, 0x20(sp) | a0 = *(var_20h);
0x000a0e20 sw a0, 0x28(s0) | *((s0 + 10)) = a0;
0x000a0e24 b 0xa0b70 | goto label_2;
| label_14:
0x000a0e28 jalr t9 | t9 ();
0x000a0e2c nop |
0x000a0e30 lw gp, 0x18(sp) | gp = *(var_18h);
0x000a0e34 b 0xa0d88 | goto label_3;
| label_11:
0x000a0e38 lw t9, -0x7f94(gp) | t9 = *((gp - 8165));
0x000a0e3c addiu v0, zero, 0x2c5 | v0 = 0x2c5;
0x000a0e40 b 0xa0dc4 | goto label_4;
| label_15:
0x000a0e44 lw t9, -0x5428(gp) | t9 = *((gp - 5386));
0x000a0e48 jalr t9 | t9 ();
0x000a0e4c nop |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/4325012-58052244.squashfs_v4_le_extract/usr/lib/libcrypto.so.1.1 @ 0x1161d8 */
| #include <stdint.h>
|
; (fcn) sym.EVP_PKEY_get0_poly1305 () | void EVP_PKEY_get0_poly1305 () {
0x001161d8 lui gp, 0x12 |
0x001161dc addiu gp, gp, -0x24b8 |
0x001161e0 addu gp, gp, t9 | gp += t9;
0x001161e4 lw v1, (a0) | v1 = *(a0);
0x001161e8 addiu v0, zero, 0x425 | v0 = 0x425;
0x001161ec lw a3, -0x7ea8(gp) | a3 = *((gp - 8106));
| if (v1 == v0) {
0x001161f0 bne v1, v0, 0x116208 |
0x001161f4 lw v0, 0x18(a0) | v0 = *((a0 + 6));
0x001161f8 lw v1, (v0) | v1 = *(v0);
0x001161fc lw v0, 8(v0) | v0 = *((v0 + 2));
0x00116200 sw v1, (a1) | *(a1) = v1;
0x00116204 jr ra | return v0;
| }
0x00116208 addiu sp, sp, -0x28 |
0x0011620c lw t9, -0x7f94(gp) | t9 = *((gp - 8165));
0x00116210 addiu v0, zero, 0x1b6 | v0 = 0x1b6;
0x00116214 addiu a3, a3, -0x7118 | a3 += -0x7118;
0x00116218 sw ra, 0x24(sp) | *(var_24h) = ra;
0x0011621c sw gp, 0x18(sp) | *(var_18h) = gp;
0x00116220 sw v0, 0x10(sp) | *(var_10h) = v0;
0x00116224 addiu a2, zero, 0xa4 | a2 = 0xa4;
0x00116228 addiu a1, zero, 0xb8 | a1 = 0xb8;
0x0011622c addiu a0, zero, 6 | a0 = 6;
0x00116230 bal 0xfb1a0 | sym_ERR_put_error ();
0x00116234 lw ra, 0x24(sp) | ra = *(var_24h);
0x00116238 move v0, zero | v0 = 0;
0x0011623c addiu sp, sp, 0x28 |
0x00116240 jr ra | return v0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/4325012-58052244.squashfs_v4_le_extract/usr/lib/libcrypto.so.1.1 @ 0x191b08 */
| #include <stdint.h>
|
; (fcn) sym.X509_STORE_CTX_get_by_subject () | void X509_STORE_CTX_get_by_subject () {
0x00191b08 lui gp, 0xa |
0x00191b0c addiu gp, gp, 0x2218 |
0x00191b10 addu gp, gp, t9 | gp += t9;
0x00191b14 addiu sp, sp, -0x50 |
0x00191b18 sw s5, 0x40(sp) | *(var_40h) = s5;
0x00191b1c lw s5, -0x53f0(gp) | s5 = *((gp - 5372));
0x00191b20 sw s1, 0x30(sp) | *(var_30h) = s1;
0x00191b24 lw s1, (a0) | s1 = *(a0);
0x00191b28 lw v0, (s5) | v0 = *(s5);
0x00191b2c sw gp, 0x10(sp) | *(var_10h) = gp;
0x00191b30 sw ra, 0x4c(sp) | *(var_4ch) = ra;
0x00191b34 sw s7, 0x48(sp) | *(var_48h) = s7;
0x00191b38 sw s6, 0x44(sp) | *(var_44h) = s6;
0x00191b3c sw s4, 0x3c(sp) | *(var_3ch) = s4;
0x00191b40 sw s3, 0x38(sp) | *(var_38h) = s3;
0x00191b44 sw s2, 0x34(sp) | *(var_34h) = s2;
0x00191b48 sw s0, 0x2c(sp) | *(var_2ch) = s0;
0x00191b4c sw v0, 0x24(sp) | *(var_24h) = v0;
0x00191b50 lw t9, -0x7844(gp) | t9 = *((gp - 7697));
| if (s1 == 0) {
0x00191b54 beqz s1, 0x191be8 | goto label_3;
| }
0x00191b58 lw a0, 0x48(s1) | a0 = *((s1 + 18));
0x00191b5c sw zero, 0x1c(sp) | *(var_1ch_2) = 0;
0x00191b60 sw zero, 0x20(sp) | *(var_20h_2) = 0;
0x00191b64 move s6, a3 | s6 = a3;
0x00191b68 move s2, a1 | s2 = a1;
0x00191b6c move s3, a2 | s3 = a2;
0x00191b70 bal 0x17ce14 | sym_CRYPTO_THREAD_write_lock ();
0x00191b74 lw gp, 0x10(sp) | gp = *(var_10h);
0x00191b78 lw a0, 4(s1) | a0 = *((s1 + 1));
0x00191b7c move a2, s3 | a2 = s3;
0x00191b80 lw t9, -0x58c0(gp) | t9 = *((gp - 5680));
0x00191b84 move a1, s2 | a1 = s2;
0x00191b88 bal 0x191a9c | sym_X509_OBJECT_retrieve_by_subject ();
0x00191b8c lw gp, 0x10(sp) | gp = *(var_10h);
0x00191b90 lw a0, 0x48(s1) | a0 = *((s1 + 18));
0x00191b94 lw t9, -0x7840(gp) | t9 = *((gp - 7696));
0x00191b98 move s4, v0 | s4 = v0;
0x00191b9c bal 0x17ce48 | sym_CRYPTO_THREAD_unlock ();
0x00191ba0 lw gp, 0x10(sp) | gp = *(var_10h);
| if (s4 == 0) {
0x00191ba4 beqz s4, 0x191c24 | goto label_4;
| }
0x00191ba8 addiu v0, zero, 2 | v0 = 2;
0x00191bac move s0, zero | s0 = 0;
| if (s2 == v0) {
0x00191bb0 beq s2, v0, 0x191c28 | goto label_5;
| }
| label_2:
0x00191bb4 lw t9, -0x58bc(gp) | t9 = *((gp - 5679));
| do {
0x00191bb8 move a0, s4 | a0 = s4;
0x00191bbc bal 0x191838 | sym_X509_OBJECT_up_ref_count ();
0x00191bc0 lw gp, 0x10(sp) | gp = *(var_10h);
| if (v0 == 0) {
0x00191bc4 beqz v0, 0x191be8 | goto label_3;
| }
0x00191bc8 lw v0, 4(s4) | v0 = *((s4 + 1));
0x00191bcc lw v1, (s4) | v1 = *(s4);
0x00191bd0 sw v0, 4(s6) | *((s6 + 1)) = v0;
0x00191bd4 sw v1, (s6) | *(s6) = v1;
0x00191bd8 addiu v0, zero, 1 | v0 = 1;
0x00191bdc b 0x191bec | goto label_6;
| label_0:
0x00191be0 lw t9, -0x58bc(gp) | t9 = *((gp - 5679));
0x00191be4 bnez s4, 0x191bb8 |
| } while (s4 != 0);
| label_3:
0x00191be8 move v0, zero | v0 = 0;
| label_6:
0x00191bec lw a0, 0x24(sp) | a0 = *(var_24h);
0x00191bf0 lw v1, (s5) | v1 = *(s5);
0x00191bf4 lw ra, 0x4c(sp) | ra = *(var_4ch);
| if (a0 != v1) {
0x00191bf8 bne a0, v1, 0x191ca0 | goto label_7;
| }
0x00191bfc lw s7, 0x48(sp) | s7 = *(var_48h);
0x00191c00 lw s6, 0x44(sp) | s6 = *(var_44h);
0x00191c04 lw s5, 0x40(sp) | s5 = *(var_40h);
0x00191c08 lw s4, 0x3c(sp) | s4 = *(var_3ch);
0x00191c0c lw s3, 0x38(sp) | s3 = *(var_38h);
0x00191c10 lw s2, 0x34(sp) | s2 = *(var_34h);
0x00191c14 lw s1, 0x30(sp) | s1 = *(var_30h);
0x00191c18 lw s0, 0x2c(sp) | s0 = *(var_2ch);
0x00191c1c addiu sp, sp, 0x50 |
0x00191c20 jr ra | return v0;
| label_4:
0x00191c24 move s0, zero | s0 = 0;
| label_5:
0x00191c28 addiu s7, sp, 0x1c | s7 = sp + 0x1c;
| label_1:
0x00191c2c lw t9, -0x7d78(gp) | t9 = *(gp);
0x00191c30 lw a0, 8(s1) | a0 = *((s1 + 2));
0x00191c34 bal 0x1782c4 | sym_OPENSSL_sk_num ();
0x00191c38 slt v0, s0, v0 | v0 = (s0 < v0) ? 1 : 0;
0x00191c3c lw gp, 0x10(sp) | gp = *(var_10h);
| if (v0 == 0) {
0x00191c40 beqz v0, 0x191be0 | goto label_0;
| }
0x00191c44 lw t9, -0x7df8(gp) | t9 = *((gp - 8062));
0x00191c48 lw a0, 8(s1) | a0 = *((s1 + 2));
0x00191c4c move a1, s0 | a1 = s0;
0x00191c50 bal 0x1782dc | sym_OPENSSL_sk_value ();
0x00191c54 lw v1, 8(v0) | v1 = *((v0 + 2));
0x00191c58 lw gp, 0x10(sp) | gp = *(var_10h);
| if (v1 == 0) {
0x00191c5c beqz v1, 0x191c90 | goto label_8;
| }
0x00191c60 lw t9, 0x18(v1) | t9 = *((v1 + 6));
| if (t9 == 0) {
0x00191c64 beql t9, zero, 0x191c2c | goto label_1;
| }
0x00191c68 addiu s0, s0, 1 | s0++;
0x00191c6c lw v1, 4(v0) | v1 = *((v0 + 1));
0x00191c70 move a3, s7 | a3 = s7;
| if (v1 == 0) {
0x00191c74 bnez v1, 0x191c90 |
0x00191c78 move a2, s3 | a2 = s3;
0x00191c7c move a1, s2 | a1 = s2;
0x00191c80 move a0, v0 | a0 = v0;
0x00191c84 jalr t9 | t9 ();
0x00191c88 lw gp, 0x10(sp) | gp = *(var_10h);
| if (v0 != 0) {
0x00191c8c bnez v0, 0x191c98 | goto label_9;
| }
| }
| label_8:
0x00191c90 addiu s0, s0, 1 | s0++;
0x00191c94 b 0x191c2c | goto label_1;
| label_9:
0x00191c98 move s4, s7 | s4 = s7;
0x00191c9c b 0x191bb4 | goto label_2;
| label_7:
0x00191ca0 lw t9, -0x5428(gp) | t9 = *((gp - 5386));
0x00191ca4 jalr t9 | t9 ();
0x00191ca8 nop |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/4325012-58052244.squashfs_v4_le_extract/usr/lib/libcrypto.so.1.1 @ 0x196fd0 */
| #include <stdint.h>
|
; (fcn) sym.X509_cmp_time () | void X509_cmp_time () {
0x00196fd0 lui gp, 0xa |
0x00196fd4 addiu gp, gp, -0x32b0 |
0x00196fd8 addu gp, gp, t9 | gp += t9;
0x00196fdc addiu sp, sp, -0x48 |
0x00196fe0 addiu v1, zero, 0x17 | v1 = 0x17;
0x00196fe4 sw s2, 0x3c(sp) | *(var_3ch) = s2;
0x00196fe8 lw s2, -0x53f0(gp) | s2 = *((gp - 5372));
0x00196fec sw s1, 0x38(sp) | *(var_38h) = s1;
0x00196ff0 move s1, a0 | s1 = a0;
0x00196ff4 lw a0, (s2) | a0 = *(s2);
0x00196ff8 lw v0, 4(s1) | v0 = *((s1 + 1));
0x00196ffc sw gp, 0x10(sp) | *(var_10h) = gp;
0x00197000 sw s3, 0x40(sp) | *(var_40h) = s3;
0x00197004 sw ra, 0x44(sp) | *(var_44h) = ra;
0x00197008 sw s0, 0x34(sp) | *(var_34h) = s0;
0x0019700c move s3, a1 | s3 = a1;
0x00197010 sw a0, 0x2c(sp) | *(var_2ch) = a0;
0x00197014 addiu v1, zero, 0x18 | v1 = 0x18;
| if (v0 == v1) {
0x00197018 beq v0, v1, 0x197060 | goto label_2;
| }
0x0019701c move v0, zero | v0 = 0;
| if (v0 != v1) {
0x00197020 bne v0, v1, 0x197038 | goto label_0;
| }
0x00197024 lw v1, (s1) | v1 = *(s1);
0x00197028 addiu v0, zero, 0xf | v0 = 0xf;
0x0019702c move s0, zero | s0 = 0;
| if (v1 == v0) {
0x00197030 beq v1, v0, 0x197090 | goto label_3;
| }
0x00197034 move v0, zero | v0 = 0;
| do {
| label_0:
0x00197038 lw a0, 0x2c(sp) | a0 = *(var_2ch);
0x0019703c lw v1, (s2) | v1 = *(s2);
0x00197040 lw ra, 0x44(sp) | ra = *(var_44h);
| if (a0 != v1) {
0x00197044 bne a0, v1, 0x197158 | goto label_4;
| }
0x00197048 lw s3, 0x40(sp) | s3 = *(var_40h);
0x0019704c lw s2, 0x3c(sp) | s2 = *(var_3ch);
0x00197050 lw s1, 0x38(sp) | s1 = *(var_38h);
0x00197054 lw s0, 0x34(sp) | s0 = *(var_34h);
0x00197058 addiu sp, sp, 0x48 |
0x0019705c jr ra | return v0;
| label_2:
0x00197060 lw v1, (s1) | v1 = *(s1);
0x00197064 addiu v0, zero, 0xd | v0 = 0xd;
0x00197068 move v0, zero | v0 = 0;
0x0019706c bne v1, v0, 0x197038 |
| } while (v1 != v0);
0x00197070 move s0, zero | s0 = 0;
0x00197074 b 0x197090 |
| while (v0 != 0) {
0x00197078 lw v1, (s1) | v1 = *(s1);
0x0019707c addiu s0, s0, 1 | s0++;
0x00197080 addiu v0, v1, -1 | v0 = v1 + -1;
0x00197084 slt v0, s0, v0 | v0 = (s0 < v0) ? 1 : 0;
| if (v0 == 0) {
0x00197088 beql v0, zero, 0x1970b4 | goto label_5;
| }
0x0019708c lw v0, 8(s1) | v0 = *((s1 + 2));
| label_3:
0x00197090 lw v0, 8(s1) | v0 = *((s1 + 2));
0x00197094 lw t9, -0x7dd8(gp) | t9 = *((gp - 8054));
0x00197098 addu v0, v0, s0 | v0 += s0;
0x0019709c lb a0, (v0) | a0 = *(v0);
0x001970a0 jalr t9 | t9 ();
0x001970a4 lw gp, 0x10(sp) | gp = *(var_10h);
0x001970a8 bnez v0, 0x197078 |
| }
0x001970ac move v0, zero | v0 = 0;
0x001970b0 b 0x197038 | goto label_0;
| label_5:
0x001970b4 addiu a0, zero, 0x5a | a0 = 0x5a;
0x001970b8 addu v1, v0, v1 | v1 = v0 + v1;
0x001970bc lbu v0, -1(v1) | v0 = *((v1 - 1));
0x001970c0 move v0, zero | v0 = 0;
| if (v0 != a0) {
0x001970c4 bne v0, a0, 0x197038 | goto label_0;
| }
0x001970c8 lw t9, -0x5824(gp) | t9 = *((gp - 5641));
0x001970cc move a3, s3 | a3 = s3;
0x001970d0 move a2, zero | a2 = 0;
0x001970d4 move a1, zero | a1 = 0;
0x001970d8 move a0, zero | a0 = 0;
0x001970dc bal 0x196ec8 | sym_X509_time_adj_ex ();
0x001970e0 move s0, v0 | s0 = v0;
0x001970e4 lw gp, 0x10(sp) | gp = *(var_10h);
| if (v0 == 0) {
0x001970e8 beqz v0, 0x197148 | goto label_6;
| }
0x001970ec lw t9, -0x7db0(gp) | t9 = *((gp - 8044));
0x001970f0 move a3, v0 | a3 = v0;
0x001970f4 move a2, s1 | a2 = s1;
0x001970f8 addiu a1, sp, 0x28 | a1 = sp + 0x28;
0x001970fc addiu a0, sp, 0x24 | a0 = sp + 0x24;
0x00197100 jalr t9 | t9 ();
0x00197104 lw gp, 0x10(sp) | gp = *(var_10h);
| if (v0 == 0) {
0x00197108 beqz v0, 0x197148 | goto label_6;
| }
0x0019710c lw v0, 0x24(sp) | v0 = *(var_24h_2);
0x00197110 addiu a0, zero, 1 | a0 = 1;
| if (v0 < 0) {
0x00197114 bltz v0, 0x197150 | goto label_7;
| }
0x00197118 lw v0, 0x28(sp) | v0 = *(var_28h_2);
0x0019711c slti v0, v0, 0 | v0 = (v0 < 0) ? 1 : 0;
0x00197120 addiu v1, zero, -1 | v1 = -1;
| if (v0 == 0) {
0x00197124 movn v1, a0, v0 | v1 = a0;
| }
0x00197128 move v0, v1 | v0 = v1;
| do {
| label_1:
0x0019712c lw t9, -0x7380(gp) | t9 = *((gp - 7392));
0x00197130 sw v0, 0x1c(sp) | *(var_1ch_2) = v0;
0x00197134 move a0, s0 | a0 = s0;
0x00197138 jalr t9 | t9 ();
0x0019713c lw gp, 0x10(sp) | gp = *(var_10h);
0x00197140 lw v0, 0x1c(sp) | v0 = *(var_1ch_2);
0x00197144 b 0x197038 | goto label_0;
| label_6:
0x00197148 move v0, zero | v0 = 0;
0x0019714c b 0x19712c |
| } while (1);
| label_7:
0x00197150 addiu v0, zero, 1 | v0 = 1;
0x00197154 b 0x19712c | goto label_1;
| label_4:
0x00197158 lw t9, -0x5428(gp) | t9 = *((gp - 5386));
0x0019715c jalr t9 | t9 ();
0x00197160 nop |
| }
[*] Function popen used 1 times libcrypto.so.1.1