[*] Binary protection state of libcrypto.so.1.1
Partial RELRO No Canary found NX disabled DSO No RPATH No RUNPATH No Symbols
[*] Function printf tear down of libcrypto.so.1.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/libcrypto.so.1.1 @ 0x5ba48 */
| #include <stdint.h>
|
; (fcn) fcn.0005ba48 () | void fcn_0005ba48 (int32_t arg_f0h, int32_t arg_f4h, int32_t arg_f8h, int32_t arg1, int32_t arg2) {
| int32_t var_0h;
| int32_t var_4h;
| int32_t var_8h;
| int32_t var_10h;
| int32_t var_14h;
| int32_t var_18h;
| int32_t var_1ch;
| int32_t var_20h;
| int32_t var_24h;
| int32_t var_28h;
| int32_t var_2ch;
| int32_t var_30h;
| int32_t var_34h;
| int32_t var_38h;
| int32_t var_3ch;
| int32_t var_40h;
| int32_t var_44h;
| int32_t var_48h;
| int32_t var_c8h;
| int32_t var_cch;
| r0 = arg1;
| r1 = arg2;
0x0005ba48 push {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0005ba4c sub sp, sp, 0xcc |
0x0005ba50 str r3, [sp, 0x18] | var_18h = r3;
0x0005ba54 ldr r3, [sp, 0xf0] | r3 = *(arg_f0h);
0x0005ba58 mov fp, 0 |
0x0005ba5c cmp r3, 0x81 |
0x0005ba60 ldr r6, [sp, 0xf8] | r6 = *(arg_f8h);
0x0005ba64 str fp, [sp, 0x44] | var_44h = fp;
| if (r3 != 0x81) {
0x0005ba68 bne 0x5ba88 | goto label_25;
| }
0x0005ba6c ldr r1, [pc, 0x994] | r1 = *(0x5c404);
0x0005ba70 mov r5, fp | r5 = fp;
0x0005ba74 add r1, pc, r1 | r1 = pc + r1;
0x0005ba78 bl 0x6e860 | BIO_puts ();
| do {
0x0005ba7c mov r0, r5 | r0 = r5;
0x0005ba80 add sp, sp, 0xcc |
0x0005ba84 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_25:
0x0005ba88 ldr r3, [r1] | r3 = *(r1);
0x0005ba8c mov r4, r0 | r4 = r0;
0x0005ba90 str r3, [sp, 0x30] | var_30h = r3;
0x0005ba94 add r3, r3, r2 | r3 += r2;
0x0005ba98 str r3, [sp, 0x1c] | var_1ch = r3;
0x0005ba9c ldr r3, [sp, 0xf4] | r3 = *(arg_f4h);
0x0005baa0 mov sb, r1 | sb = r1;
0x0005baa4 cmp r3, 0 |
0x0005baa8 ldr r3, [sp, 0xf0] | r3 = *(arg_f0h);
| if (r3 != 0) {
0x0005baac moveq r3, 0 | r3 = 0;
| }
0x0005bab0 str r3, [sp, 0x20] | var_20h = r3;
0x0005bab4 ldr r3, [pc, 0x950] | r3 = *(0x5c408);
0x0005bab8 mov r5, r2 | r5 = r2;
0x0005babc add r3, pc, r3 | r3 = pc + r3;
0x0005bac0 str r3, [sp, 0x24] | var_24h = r3;
0x0005bac4 ldr r3, [pc, 0x944] | r3 = *(0x5c40c);
0x0005bac8 add r3, pc, r3 | r3 = pc + r3;
0x0005bacc str r3, [sp, 0x28] | var_28h = r3;
| label_7:
0x0005bad0 cmp r5, 0 |
| if (r5 > 0) {
0x0005bad4 movle r7, 0 | r7 = 0;
| }
| if (r5 > 0) {
0x0005bad8 movle r5, 1 | r5 = 1;
| }
| if (r5 > 0) {
0x0005badc ble 0x5bb68 |
0x0005bae0 str r5, [sp] | *(sp) = r5;
0x0005bae4 add r3, sp, 0x40 | r3 += var_40h;
0x0005bae8 add r2, sp, 0x3c | r2 += var_3ch;
0x0005baec add r1, sp, 0x38 | r1 += var_38h;
0x0005baf0 add r0, sp, 0x30 | r0 += var_30h;
0x0005baf4 ldr r8, [sp, 0x30] | r8 = var_30h;
0x0005baf8 bl 0x5b3b0 | ASN1_get_object ();
0x0005bafc tst r0, 0x80 |
0x0005bb00 mov sl, r0 | sl = r0;
| if ((r0 & 0x80) != 0) {
0x0005bb04 beq 0x5bb28 |
0x0005bb08 ldr r1, [pc, 0x904] | r1 = *(0x5c410);
0x0005bb0c mov r2, 0x12 | r2 = 0x12;
0x0005bb10 add r1, pc, r1 | r1 = pc + r1;
0x0005bb14 mov r0, r4 | r0 = r4;
0x0005bb18 bl 0x6e820 | BIO_write ();
0x0005bb1c mov r7, 0 | r7 = 0;
| label_9:
0x0005bb20 mov r5, 0 | r5 = 0;
0x0005bb24 b 0x5bb68 |
| } else {
0x0005bb28 ldr r3, [sp, 0x30] | r3 = var_30h;
0x0005bb2c ldr r2, [sb] | r2 = *(sb);
0x0005bb30 sub r7, r3, r8 | r7 = r3 - r8;
0x0005bb34 str r3, [sp, 0x10] | var_10h = r3;
0x0005bb38 sub r3, r5, r7 | r3 = r5 - r7;
0x0005bb3c str r3, [sp, 0x14] | var_14h = r3;
0x0005bb40 ldr r3, [sp, 0x18] | r3 = var_18h;
0x0005bb44 sub r2, r8, r2 | r2 = r8 - r2;
0x0005bb48 add r2, r2, r3 | r2 += r3;
0x0005bb4c ldr r1, [sp, 0x24] | r1 = var_24h;
0x0005bb50 mov r0, r4 | r0 = r4;
0x0005bb54 bl 0x6bbc4 | r0 = BIO_printf ()
0x0005bb58 cmp r0, 0 |
| if (r0 > 0) {
0x0005bb5c bgt 0x5bb84 | goto label_26;
| }
| label_0:
0x0005bb60 mov r5, 0 | r5 = 0;
0x0005bb64 mov r7, r5 | r7 = r5;
| }
| }
| label_13:
0x0005bb68 ldr r0, [sp, 0x44] | r0 = var_44h;
0x0005bb6c bl 0x560f4 | ASN1_OBJECT_free ();
0x0005bb70 mov r0, r7 | r0 = r7;
0x0005bb74 bl 0x65840 | ASN1_OCTET_STRING_free ();
0x0005bb78 ldr r3, [sp, 0x30] | r3 = var_30h;
0x0005bb7c str r3, [sb] | *(sb) = r3;
0x0005bb80 b 0x5ba7c |
| } while (1);
| label_26:
0x0005bb84 cmp sl, 0x21 |
| if (sl == 0x21) {
0x0005bb88 beq 0x5bca4 | goto label_27;
| }
0x0005bb8c ldr r3, [sp, 0x38] | r3 = var_38h;
0x0005bb90 ldr r1, [pc, 0x880] | r1 = *(0x5c414);
0x0005bb94 str r3, [sp] | *(sp) = r3;
0x0005bb98 ldr r2, [sp, 0xf0] | r2 = *(arg_f0h);
0x0005bb9c mov r3, r7 | r3 = r7;
0x0005bba0 add r1, pc, r1 | r1 = pc + r1;
0x0005bba4 mov r0, r4 | r0 = r4;
0x0005bba8 bl 0x6bbc4 | r0 = BIO_printf ()
| label_1:
0x0005bbac cmp r0, 0 |
| if (r0 <= 0) {
0x0005bbb0 ble 0x5bb60 | goto label_0;
| }
0x0005bbb4 ands r2, sl, 0x20 | r2 = sl & 0x20;
0x0005bbb8 ldr r5, [sp, 0x3c] | r5 = var_3ch;
0x0005bbbc ldr r3, [sp, 0x40] | r3 = var_40h;
0x0005bbc0 str r2, [sp, 0x2c] | var_2ch = r2;
| if (r2 == sl) {
0x0005bbc4 beq 0x5bcc0 | goto label_28;
| }
0x0005bbc8 ldr r1, [pc, 0x84c] | r1 = *(0x5c418);
0x0005bbcc add r1, pc, r1 | r1 = pc + r1;
| label_2:
0x0005bbd0 mov r2, 6 | r2 = 6;
0x0005bbd4 mov r0, r4 | r0 = r4;
0x0005bbd8 str r3, [sp, 0x2c] | var_2ch = r3;
0x0005bbdc bl 0x6e820 | BIO_write ();
0x0005bbe0 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x0005bbe4 cmp r0, 5 |
| if (r0 <= 5) {
0x0005bbe8 ble 0x5bb60 | goto label_0;
| }
0x0005bbec mov r2, 0x80 | r2 = 0x80;
0x0005bbf0 ldr r1, [sp, 0x20] | r1 = var_20h;
0x0005bbf4 mov r0, r4 | r0 = r4;
0x0005bbf8 str r3, [sp, 0x2c] | var_2ch = r3;
0x0005bbfc bl 0x6eb94 | BIO_indent ();
0x0005bc00 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x0005bc04 and r2, r3, 0xc0 | r2 = r3 & 0xc0;
0x0005bc08 cmp r2, 0xc0 |
| if (r2 != 0xc0) {
0x0005bc0c bne 0x5bccc | goto label_29;
| }
0x0005bc10 ldr r2, [pc, 0x808] | r2 = *(0x5c41c);
0x0005bc14 mov r3, r5 | r3 = r5;
0x0005bc18 add r2, pc, r2 | r2 = pc + r2;
| label_3:
0x0005bc1c add r5, sp, 0x48 | r5 += var_48h;
0x0005bc20 mov r1, 0x80 | r1 = 0x80;
0x0005bc24 mov r0, r5 | r0 = r5;
0x0005bc28 bl 0x6bc48 | BIO_snprintf ()
| label_4:
0x0005bc2c ldr r1, [pc, 0x7f0] | r1 = *(0x5c420);
0x0005bc30 mov r2, r5 | r2 = r5;
0x0005bc34 add r1, pc, r1 | r1 = pc + r1;
0x0005bc38 mov r0, r4 | r0 = r4;
0x0005bc3c bl 0x6bbc4 | r0 = BIO_printf ()
0x0005bc40 cmp r0, 0 |
| if (r0 <= 0) {
0x0005bc44 ble 0x5bb60 | goto label_0;
| }
0x0005bc48 ands r3, sl, 0x20 | r3 = sl & 0x20;
0x0005bc4c cmp r3, 0 |
| if (r3 == 0) {
0x0005bc50 beq 0x5be08 | goto label_30;
| }
0x0005bc54 ldr r1, [pc, 0x7cc] | r1 = *(0x5c424);
0x0005bc58 mov r2, 1 | r2 = 1;
0x0005bc5c add r1, pc, r1 | r1 = pc + r1;
0x0005bc60 mov r0, r4 | r0 = r4;
0x0005bc64 ldr r8, [sp, 0x30] | r8 = var_30h;
0x0005bc68 ldr r7, [sp, 0x38] | r7 = var_38h;
0x0005bc6c bl 0x6e820 | BIO_write ();
0x0005bc70 add r7, r8, r7 | r7 = r8 + r7;
0x0005bc74 cmp r0, 0 |
| if (r0 <= 0) {
0x0005bc78 ble 0x5bb60 | goto label_0;
| }
0x0005bc7c ldr r5, [sp, 0x38] | r5 = var_38h;
0x0005bc80 ldr r3, [sp, 0x14] | r3 = var_14h;
0x0005bc84 cmp r5, r3 |
| if (r5 <= r3) {
0x0005bc88 ble 0x5bd18 | goto label_31;
| }
0x0005bc8c ldr r1, [pc, 0x798] | r1 = *(0x5c428);
0x0005bc90 mov r2, r3 | r2 = r3;
0x0005bc94 add r1, pc, r1 | r1 = pc + r1;
0x0005bc98 mov r0, r4 | r0 = r4;
0x0005bc9c bl 0x6bbc4 | BIO_printf ()
0x0005bca0 b 0x5bb60 | goto label_0;
| label_27:
0x0005bca4 ldr r1, [pc, 0x784] | r1 = *(0x5c42c);
0x0005bca8 mov r3, r7 | r3 = r7;
0x0005bcac ldr r2, [sp, 0xf0] | r2 = *(arg_f0h);
0x0005bcb0 add r1, pc, r1 | r1 = pc + r1;
0x0005bcb4 mov r0, r4 | r0 = r4;
0x0005bcb8 bl 0x6bbc4 | BIO_printf ()
0x0005bcbc b 0x5bbac | goto label_1;
| label_28:
0x0005bcc0 ldr r1, [pc, 0x76c] | r1 = *(0x5c430);
0x0005bcc4 add r1, pc, r1 | r1 = pc + r1;
0x0005bcc8 b 0x5bbd0 | goto label_2;
| label_29:
0x0005bccc tst r3, 0x80 |
| if ((r3 & 0x80) == 0) {
0x0005bcd0 ldrne r2, [pc, 0x760] | r2 = *((pc + 0x760));
| }
| if ((r3 & 0x80) == 0) {
0x0005bcd4 movne r3, r5 | r3 = r5;
| }
| if ((r3 & 0x80) != 0) {
0x0005bcd8 addne r2, pc, r2 | r2 = pc + r2;
| goto label_32;
| }
| if ((r3 & 0x80) != 0) {
| label_32:
0x0005bcdc bne 0x5bc1c | goto label_3;
| }
0x0005bce0 tst r3, 0x40 |
| if ((r3 & 0x40) == 0) {
0x0005bce4 ldrne r2, [pc, 0x750] | r2 = *((pc + 0x750));
| }
| if ((r3 & 0x40) == 0) {
0x0005bce8 movne r3, r5 | r3 = r5;
| }
| if ((r3 & 0x40) != 0) {
0x0005bcec addne r2, pc, r2 | r2 = pc + r2;
| goto label_33;
| }
| if ((r3 & 0x40) != 0) {
| label_33:
0x0005bcf0 bne 0x5bc1c | goto label_3;
| }
0x0005bcf4 cmp r5, 0x1e |
| if (r5 <= 0x1e) {
0x0005bcf8 ldrgt r2, [pc, 0x740] | r2 = *((pc + 0x740));
| }
| if (r5 <= 0x1e) {
0x0005bcfc movgt r3, r5 | r3 = r5;
| }
| if (r5 > 0x1e) {
0x0005bd00 addgt r2, pc, r2 | r2 = pc + r2;
| goto label_34;
| }
| if (r5 > 0x1e) {
| label_34:
0x0005bd04 bgt 0x5bc1c | goto label_3;
| }
0x0005bd08 mov r0, r5 | r0 = r5;
0x0005bd0c bl 0x5ba08 | r0 = ASN1_tag2str ();
0x0005bd10 mov r5, r0 | r5 = r0;
0x0005bd14 b 0x5bc2c | goto label_4;
| label_31:
0x0005bd18 cmp r5, 0 |
0x0005bd1c cmpeq sl, 0x21 | __asm ("cmpeq sl, 0x21");
| if (r5 != 0) {
0x0005bd20 ldreq r3, [sp, 0xf0] | r3 = *(arg_f0h);
| }
| if (r5 != 0) {
0x0005bd24 addeq r5, sp, 0x30 | r5 += var_30h;
| }
| if (r5 != 0) {
0x0005bd28 addeq r7, r3, 1 | r7 = r3 + 1;
| }
| if (r5 == 0) {
0x0005bd2c beq 0x5bd98 | goto label_6;
| }
0x0005bd30 ldr r3, [sp, 0xf0] | r3 = *(arg_f0h);
0x0005bd34 add sl, sp, 0x30 | sl += var_30h;
0x0005bd38 add r3, r3, 1 | r3++;
0x0005bd3c str r3, [sp, 0x10] | var_10h = r3;
| label_5:
0x0005bd40 ldr r8, [sp, 0x30] | r8 = var_30h;
0x0005bd44 cmp r8, r7 |
| if (r8 >= r7) {
0x0005bd48 bhs 0x5bdf8 | goto label_15;
| }
0x0005bd4c ldr r2, [sp, 0xf4] | r2 = *(arg_f4h);
0x0005bd50 ldr r3, [sb] | r3 = *(sb);
0x0005bd54 str r2, [sp, 4] | var_4h = r2;
0x0005bd58 ldr r2, [sp, 0x10] | r2 = var_10h;
0x0005bd5c sub r3, r8, r3 | r3 = r8 - r3;
0x0005bd60 str r2, [sp] | *(sp) = r2;
0x0005bd64 ldr r2, [sp, 0x18] | r2 = var_18h;
0x0005bd68 str r6, [sp, 8] | var_8h = r6;
0x0005bd6c add r3, r3, r2 | r3 += r2;
0x0005bd70 mov r1, sl | r1 = sl;
0x0005bd74 mov r2, r5 | r2 = r5;
0x0005bd78 mov r0, r4 | r0 = r4;
0x0005bd7c bl 0x5ba48 | r0 = fcn_0005ba48 (r0, r1, r2, r3, r4);
0x0005bd80 cmp r0, 0 |
| if (r0 == 0) {
0x0005bd84 beq 0x5bb60 | goto label_0;
| }
0x0005bd88 ldr r3, [sp, 0x30] | r3 = var_30h;
0x0005bd8c sub r8, r3, r8 | r8 = r3 - r8;
0x0005bd90 sub r5, r5, r8 | r5 -= r8;
0x0005bd94 b 0x5bd40 | goto label_5;
| label_6:
0x0005bd98 ldr r1, [sp, 0xf4] | r1 = *(arg_f4h);
0x0005bd9c ldr r3, [sb] | r3 = *(sb);
0x0005bda0 ldr r2, [sp, 0x30] | r2 = var_30h;
0x0005bda4 str r1, [sp, 4] | var_4h = r1;
0x0005bda8 ldr r1, [sp, 0x18] | r1 = var_18h;
0x0005bdac sub r3, r2, r3 | r3 = r2 - r3;
0x0005bdb0 add r3, r3, r1 | r3 += r1;
0x0005bdb4 ldr r1, [sp, 0x1c] | r1 = var_1ch;
0x0005bdb8 str r6, [sp, 8] | var_8h = r6;
0x0005bdbc sub r2, r1, r2 | r2 = r1 - r2;
0x0005bdc0 str r7, [sp] | *(sp) = r7;
0x0005bdc4 mov r1, r5 | r1 = r5;
0x0005bdc8 mov r0, r4 | r0 = r4;
0x0005bdcc bl 0x5ba48 | r0 = fcn_0005ba48 (r0, r1, r2, r3, r4);
0x0005bdd0 cmp r0, 0 |
| if (r0 == 0) {
0x0005bdd4 beq 0x5bb60 | goto label_0;
| }
0x0005bdd8 cmp r0, 2 |
0x0005bddc ldr r3, [sp, 0x30] | r3 = var_30h;
| if (r0 == 2) {
0x0005bde0 beq 0x5bdf0 | goto label_35;
| }
0x0005bde4 ldr r2, [sp, 0x1c] | r2 = var_1ch;
0x0005bde8 cmp r2, r3 |
| if (r2 > r3) {
0x0005bdec bhi 0x5bd98 | goto label_6;
| }
| label_35:
0x0005bdf0 sub r8, r3, r8 | r8 = r3 - r8;
0x0005bdf4 str r8, [sp, 0x38] | var_38h = r8;
| do {
| label_15:
0x0005bdf8 ldr r5, [sp, 0x38] | r5 = var_38h;
0x0005bdfc ldr r3, [sp, 0x14] | r3 = var_14h;
0x0005be00 sub r5, r3, r5 | r5 = r3 - r5;
0x0005be04 b 0x5bad0 | goto label_7;
| label_30:
0x0005be08 ldr r5, [sp, 0x40] | r5 = var_40h;
0x0005be0c cmp r5, 0 |
| if (r5 == 0) {
0x0005be10 beq 0x5be44 | goto label_36;
| }
0x0005be14 ldr r3, [sp, 0x30] | r3 = var_30h;
0x0005be18 ldr r2, [sp, 0x38] | r2 = var_38h;
0x0005be1c ldr r1, [pc, 0x620] | r1 = *(0x5c440);
0x0005be20 add r3, r3, r2 | r3 += r2;
0x0005be24 add r1, pc, r1 | r1 = pc + r1;
0x0005be28 mov r2, 1 | r2 = 1;
0x0005be2c mov r0, r4 | r0 = r4;
0x0005be30 str r3, [sp, 0x30] | var_30h = r3;
0x0005be34 bl 0x6e820 | r0 = BIO_write ();
0x0005be38 cmp r0, 0 |
0x0005be3c bgt 0x5bdf8 |
| } while (r0 > 0);
0x0005be40 b 0x5bb60 | goto label_0;
| label_36:
0x0005be44 ldr sl, [sp, 0x3c] | sl = var_3ch;
0x0005be48 cmp sl, 0x1a |
| if (sl > 0x1a) {
0x0005be4c bhi 0x5bf68 | goto label_37;
| }
0x0005be50 ldr r3, [pc, 0x5f0] | r3 = *(0x5c444);
0x0005be54 mvn r3, r3, lsr sl | r3 = ~r3;
0x0005be58 tst r3, 1 |
| if ((r3 & 1) != 0) {
0x0005be5c bne 0x5beac | goto label_38;
| }
0x0005be60 ldr r1, [pc, 0x5e4] | r1 = *(0x5c448);
0x0005be64 mov r2, 1 | r2 = 1;
0x0005be68 add r1, pc, r1 | r1 = pc + r1;
0x0005be6c mov r0, r4 | r0 = r4;
0x0005be70 bl 0x6e820 | r0 = BIO_write ();
0x0005be74 cmp r0, 0 |
| if (r0 <= 0) {
0x0005be78 ble 0x5bb60 | goto label_0;
| }
0x0005be7c ldr r2, [sp, 0x38] | r2 = var_38h;
0x0005be80 cmp r2, 0 |
| if (r2 <= 0) {
0x0005be84 ble 0x5bea0 | goto label_8;
| }
0x0005be88 ldr r1, [sp, 0x30] | r1 = var_30h;
0x0005be8c mov r0, r4 | r0 = r4;
0x0005be90 bl 0x6e820 | BIO_write ();
0x0005be94 ldr r3, [sp, 0x38] | r3 = var_38h;
0x0005be98 cmp r0, r3 |
| if (r0 != r3) {
0x0005be9c bne 0x5bb60 | goto label_0;
| }
| label_8:
0x0005bea0 cmp fp, 0 |
| if (fp != 0) {
0x0005bea4 bne 0x5bf18 | goto label_14;
| }
0x0005bea8 b 0x5c0f4 | goto label_39;
| label_38:
0x0005beac cmp sl, 6 |
| if (sl != 6) {
0x0005beb0 bne 0x5bf68 | goto label_37;
| }
0x0005beb4 ldr r2, [sp, 0x38] | r2 = var_38h;
0x0005beb8 add r1, sp, 0x34 | r1 += var_34h;
0x0005bebc add r2, r7, r2 | r2 = r7 + r2;
0x0005bec0 add r0, sp, 0x44 | r0 += var_44h;
0x0005bec4 str r8, [sp, 0x34] | var_34h = r8;
0x0005bec8 bl 0x563c8 | r0 = d2i_ASN1_OBJECT ();
0x0005becc cmp r0, 0 |
| if (r0 == 0) {
0x0005bed0 beq 0x5bf00 | goto label_40;
| }
0x0005bed4 ldr r1, [pc, 0x574] | r1 = *(0x5c44c);
0x0005bed8 mov r2, 1 | r2 = 1;
0x0005bedc add r1, pc, r1 | r1 = pc + r1;
0x0005bee0 mov r0, r4 | r0 = r4;
0x0005bee4 bl 0x6e820 | r0 = BIO_write ();
0x0005bee8 cmp r0, 0 |
| if (r0 <= 0) {
0x0005beec ble 0x5bb60 | goto label_0;
| }
0x0005bef0 ldr r1, [sp, 0x44] | r1 = var_44h;
0x0005bef4 mov r0, r4 | r0 = r4;
0x0005bef8 bl 0x55f58 | i2a_ASN1_OBJECT ();
0x0005befc b 0x5bea0 | goto label_8;
| label_40:
0x0005bf00 ldr r1, [pc, 0x54c] | r1 = *(0x5c450);
0x0005bf04 mov r0, r4 | r0 = r4;
0x0005bf08 add r1, pc, r1 | r1 = pc + r1;
0x0005bf0c bl 0x6e860 | r0 = BIO_puts ();
0x0005bf10 cmp r0, 0 |
| if (r0 <= 0) {
0x0005bf14 ble 0x5bb60 | goto label_0;
| }
| label_14:
0x0005bf18 ldr r1, [pc, 0x538] | r1 = *(0x5c454);
0x0005bf1c mov r0, r4 | r0 = r4;
0x0005bf20 add r1, pc, r1 | r1 = pc + r1;
0x0005bf24 bl 0x6e860 | r0 = BIO_puts ();
0x0005bf28 cmp r0, 0 |
| if (r0 <= 0) {
0x0005bf2c ble 0x5bb60 | goto label_0;
| }
0x0005bf30 ldr r7, [sp, 0x10] | r7 = var_10h;
| label_24:
0x0005bf34 ldr r3, [sp, 0x10] | r3 = var_10h;
0x0005bf38 ldr r2, [sp, 0x38] | r2 = var_38h;
0x0005bf3c sub r3, r7, r3 | r3 = r7 - r3;
0x0005bf40 cmp r2, r3 |
| if (r2 > r3) {
0x0005bf44 bgt 0x5c3ec | goto label_41;
| }
0x0005bf48 ldr r1, [pc, 0x50c] | r1 = *(0x5c458);
0x0005bf4c mov r0, r4 | r0 = r4;
0x0005bf50 add r1, pc, r1 | r1 = pc + r1;
0x0005bf54 bl 0x6e860 | r0 = BIO_puts ();
0x0005bf58 cmp r0, 0 |
| if (r0 <= 0) {
0x0005bf5c ble 0x5bb60 | goto label_0;
| }
0x0005bf60 mov fp, 1 |
0x0005bf64 b 0x5c0ec | goto label_42;
| label_37:
0x0005bf68 cmp sl, 1 |
| if (sl != 1) {
0x0005bf6c bne 0x5bfc0 | goto label_43;
| }
0x0005bf70 ldr r3, [sp, 0x38] | r3 = var_38h;
0x0005bf74 cmp r3, 1 |
| if (r3 == 1) {
0x0005bf78 beq 0x5bf98 | goto label_44;
| }
0x0005bf7c ldr r1, [pc, 0x4dc] | r1 = *(0x5c45c);
0x0005bf80 mov r0, r4 | r0 = r4;
0x0005bf84 add r1, pc, r1 | r1 = pc + r1;
0x0005bf88 bl 0x6e860 | r0 = BIO_puts ();
0x0005bf8c cmp r0, 0 |
| if (r0 <= 0) {
0x0005bf90 ble 0x5bb60 | goto label_0;
| }
0x0005bf94 mov fp, sl |
| label_44:
0x0005bf98 ldr r3, [sp, 0x38] | r3 = var_38h;
0x0005bf9c cmp r3, 0 |
| if (r3 <= 0) {
0x0005bfa0 ble 0x5bea0 | goto label_8;
| }
0x0005bfa4 ldr r3, [sp, 0x30] | r3 = var_30h;
0x0005bfa8 ldr r1, [pc, 0x4b4] | r1 = *(0x5c460);
0x0005bfac ldrb r2, [r3] | r2 = *(r3);
0x0005bfb0 add r1, pc, r1 | r1 = pc + r1;
0x0005bfb4 mov r0, r4 | r0 = r4;
0x0005bfb8 bl 0x6bbc4 | BIO_printf ()
0x0005bfbc b 0x5bea0 | goto label_8;
| label_43:
0x0005bfc0 cmp sl, 0x1e |
| if (sl == 0x1e) {
0x0005bfc4 beq 0x5bea0 | goto label_8;
| }
0x0005bfc8 cmp sl, 4 |
0x0005bfcc ldr r2, [sp, 0x38] | r2 = var_38h;
| if (sl != 4) {
0x0005bfd0 bne 0x5c190 | goto label_45;
| }
0x0005bfd4 add r1, sp, 0xc8 | r1 += var_c8h;
0x0005bfd8 add r2, r2, r7 | r2 += r7;
0x0005bfdc str r8, [r1, -0x94]! | *((r1 -= 0x94)) = r8;
0x0005bfe0 mov r0, 0 | r0 = 0;
0x0005bfe4 bl 0x657e4 | r0 = d2i_ASN1_OCTET_STRING ();
0x0005bfe8 subs r7, r0, 0 | r7 = r0 - 0;
| if (r7 == r0) {
0x0005bfec beq 0x5c0dc | goto label_16;
| }
0x0005bff0 ldr r0, [r7] | r0 = *(r7);
0x0005bff4 cmp r0, 0 |
| if (r0 <= 0) {
0x0005bff8 ble 0x5c0dc | goto label_16;
| }
0x0005bffc ldr r2, [r7, 8] | r2 = *((r7 + 8));
0x0005c000 mov r1, r2 | r1 = r2;
0x0005c004 str r2, [sp, 0x34] | var_34h = r2;
| label_12:
0x0005c008 ldrb r3, [r1], 1 | r3 = *(r1);
| r1++;
0x0005c00c cmp r3, 0x1f |
| if (r3 <= 0x1f) {
0x0005c010 movhi ip, 0 |
| }
| if (r3 > 0x1f) {
0x0005c014 movls ip, 1 |
| }
0x0005c018 cmp r3, 0xa |
| if (r3 != 0xa) {
0x0005c01c moveq ip, 0 |
| }
0x0005c020 cmp ip, 0 |
| if (ip == 0) {
0x0005c024 beq 0x5c094 | goto label_46;
| }
0x0005c028 and r3, r3, 0xfb | r3 &= 0xfb;
0x0005c02c cmp r3, 9 |
| if (r3 == 9) {
0x0005c030 beq 0x5c09c | goto label_47;
| }
| label_11:
0x0005c034 cmp r6, 0 |
| if (r6 != 0) {
0x0005c038 bne 0x5c140 | goto label_48;
| }
0x0005c03c ldr r1, [pc, 0x424] | r1 = *(0x5c464);
0x0005c040 mov r2, 0xb | r2 = 0xb;
0x0005c044 add r1, pc, r1 | r1 = pc + r1;
0x0005c048 mov r0, r4 | r0 = r4;
0x0005c04c bl 0x6e820 | r0 = BIO_write ();
0x0005c050 cmp r0, 0 |
| if (r0 <= 0) {
0x0005c054 ble 0x5bb20 | goto label_9;
| }
0x0005c058 ldr sl, [pc, 0x40c] | sl = *(0x5c468);
0x0005c05c mov r8, r6 | r8 = r6;
0x0005c060 add sl, pc, sl | sl = pc + sl;
| label_10:
0x0005c064 ldr r3, [r7] | r3 = *(r7);
0x0005c068 cmp r3, r8 |
| if (r3 <= r8) {
0x0005c06c ble 0x5c0dc | goto label_16;
| }
0x0005c070 ldr r3, [sp, 0x34] | r3 = var_34h;
0x0005c074 mov r1, sl | r1 = sl;
0x0005c078 ldrb r2, [r3, r8] | r2 = *((r3 + r8));
0x0005c07c mov r0, r4 | r0 = r4;
0x0005c080 bl 0x6bbc4 | r0 = BIO_printf ()
0x0005c084 cmp r0, 0 |
| if (r0 <= 0) {
0x0005c088 ble 0x5bb20 | goto label_9;
| }
0x0005c08c add r8, r8, 1 | r8++;
0x0005c090 b 0x5c064 | goto label_10;
| label_46:
0x0005c094 cmp r3, 0x7e |
| if (r3 > 0x7e) {
0x0005c098 bhi 0x5c034 | goto label_11;
| }
| label_47:
0x0005c09c sub r3, r1, r2 | r3 = r1 - r2;
0x0005c0a0 cmp r0, r3 |
| if (r0 > r3) {
0x0005c0a4 bgt 0x5c008 | goto label_12;
| }
0x0005c0a8 ldr r1, [pc, 0x3c0] | r1 = *(0x5c46c);
0x0005c0ac mov r2, 1 | r2 = 1;
0x0005c0b0 add r1, pc, r1 | r1 = pc + r1;
0x0005c0b4 mov r0, r4 | r0 = r4;
0x0005c0b8 bl 0x6e820 | r0 = BIO_write ();
0x0005c0bc cmp r0, 0 |
| if (r0 <= 0) {
0x0005c0c0 ble 0x5bb68 | goto label_13;
| }
0x0005c0c4 ldr r2, [r7] | r2 = *(r7);
0x0005c0c8 ldr r1, [sp, 0x34] | r1 = var_34h;
0x0005c0cc mov r0, r4 | r0 = r4;
0x0005c0d0 bl 0x6e820 | r0 = BIO_write ();
0x0005c0d4 cmp r0, 0 |
| if (r0 <= 0) {
0x0005c0d8 ble 0x5bb68 | goto label_13;
| }
| label_16:
0x0005c0dc mov r0, r7 | r0 = r7;
0x0005c0e0 bl 0x65840 | ASN1_OCTET_STRING_free ();
0x0005c0e4 cmp fp, 0 |
| if (fp != 0) {
0x0005c0e8 bne 0x5bf18 | goto label_14;
| }
| label_42:
0x0005c0ec cmp r5, 0 |
| if (r5 != 0) {
0x0005c0f0 bne 0x5c110 | goto label_23;
| }
| label_39:
0x0005c0f4 ldr r1, [pc, 0x378] | r1 = *(0x5c470);
0x0005c0f8 mov r2, 1 | r2 = 1;
0x0005c0fc add r1, pc, r1 | r1 = pc + r1;
0x0005c100 mov r0, r4 | r0 = r4;
0x0005c104 bl 0x6e820 | r0 = BIO_write ();
0x0005c108 cmp r0, 0 |
| if (r0 <= 0) {
0x0005c10c ble 0x5bb60 | goto label_0;
| }
| label_23:
0x0005c110 ldr r3, [sp, 0x30] | r3 = var_30h;
0x0005c114 ldr r2, [sp, 0x38] | r2 = var_38h;
0x0005c118 add r3, r3, r2 | r3 += r2;
0x0005c11c str r3, [sp, 0x30] | var_30h = r3;
0x0005c120 ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x0005c124 cmp r3, 0 |
| if (r3 != 0) {
0x0005c128 bne 0x5bdf8 | goto label_15;
| }
0x0005c12c ldr r7, [sp, 0x40] | r7 = var_40h;
0x0005c130 cmp r7, 0 |
| if (r7 != 0) {
0x0005c134 bne 0x5bdf8 | goto label_15;
| }
0x0005c138 mov r5, 2 | r5 = 2;
0x0005c13c b 0x5bb68 | goto label_13;
| label_48:
0x0005c140 ldr r1, [pc, 0x330] | r1 = TS_VERIFY_CTX_free;
0x0005c144 mov r2, 1 | r2 = 1;
0x0005c148 add r1, pc, r1 | r1 = pc + r1;
0x0005c14c mov r0, r4 | r0 = r4;
0x0005c150 bl 0x6e820 | r0 = BIO_write ();
0x0005c154 cmp r0, 0 |
| if (r0 <= 0) {
0x0005c158 ble 0x5bb68 | goto label_13;
| }
0x0005c15c cmn r6, 1 |
0x0005c160 ldr r1, [sp, 0x34] | r1 = var_34h;
0x0005c164 ldr r2, [r7] | r2 = *(r7);
| if (r6 != 1) {
0x0005c168 beq 0x5c174 |
0x0005c16c cmp r2, r6 |
| if (r2 >= r6) {
0x0005c170 movge r2, r6 | r2 = r6;
| goto label_49;
| }
| }
| label_49:
0x0005c174 mov r3, 6 | r3 = 6;
0x0005c178 mov r0, r4 | r0 = r4;
0x0005c17c bl 0x6a508 | r0 = BIO_dump_indent ();
0x0005c180 cmp r0, 0 |
| if (r0 <= 0) {
0x0005c184 ble 0x5bb68 | goto label_13;
| }
0x0005c188 mov r5, 1 | r5 = 1;
0x0005c18c b 0x5c0dc | goto label_16;
| label_45:
0x0005c190 cmp sl, 2 |
| if (sl != 2) {
0x0005c194 bne 0x5c28c | goto label_50;
| }
0x0005c198 add r1, sp, 0xc8 | r1 += var_c8h;
0x0005c19c add r2, r2, r7 | r2 += r7;
0x0005c1a0 str r8, [r1, -0x94]! | *((r1 -= 0x94)) = r8;
0x0005c1a4 mov r0, 0 | r0 = 0;
0x0005c1a8 bl 0x65844 | r0 = d2i_ASN1_INTEGER ();
0x0005c1ac subs r7, r0, 0 | r7 = r0 - 0;
| if (r7 == r0) {
0x0005c1b0 beq 0x5c26c | goto label_51;
| }
0x0005c1b4 ldr r1, [pc, 0x2c0] | r1 = *(0x5c478);
0x0005c1b8 mov r2, 1 | r2 = 1;
0x0005c1bc add r1, pc, r1 | r1 = pc + r1;
0x0005c1c0 mov r0, r4 | r0 = r4;
0x0005c1c4 bl 0x6e820 | r0 = BIO_write ();
0x0005c1c8 cmp r0, 0 |
| if (r0 <= 0) {
0x0005c1cc ble 0x5bb60 | goto label_0;
| }
0x0005c1d0 ldr r2, [r7, 4] | r2 = *((r7 + 4));
0x0005c1d4 ldr r3, [pc, 0x2a4] | r3 = *(0x5c47c);
0x0005c1d8 cmp r2, r3 |
| if (r2 == r3) {
0x0005c1dc beq 0x5c228 | goto label_52;
| }
| label_17:
0x0005c1e0 ldr sl, [pc, 0x29c] | sl = *(0x5c480);
0x0005c1e4 mov r8, 0 | r8 = 0;
0x0005c1e8 add sl, pc, sl | sl = pc + sl;
| label_18:
0x0005c1ec ldr r3, [r7] | r3 = *(r7);
0x0005c1f0 cmp r3, r8 |
| if (r3 > r8) {
0x0005c1f4 bgt 0x5c248 | goto label_53;
| }
0x0005c1f8 cmp r3, 0 |
| if (r3 != 0) {
0x0005c1fc bne 0x5c21c | goto label_19;
| }
0x0005c200 ldr r1, [pc, 0x280] | r1 = *(0x5c484);
0x0005c204 mov r2, 2 | r2 = 2;
0x0005c208 add r1, pc, r1 | r1 = pc + r1;
0x0005c20c mov r0, r4 | r0 = r4;
0x0005c210 bl 0x6e820 | r0 = BIO_write ();
0x0005c214 cmp r0, 0 |
| if (r0 <= 0) {
0x0005c218 ble 0x5bb60 | goto label_0;
| }
| label_19:
0x0005c21c mov r0, r7 | r0 = r7;
0x0005c220 bl 0x658a0 | ASN1_INTEGER_free ();
0x0005c224 b 0x5bea0 | goto label_8;
| label_52:
0x0005c228 ldr r1, [pc, 0x25c] | r1 = *(0x5c488);
0x0005c22c mov r2, 1 | r2 = 1;
0x0005c230 add r1, pc, r1 | r1 = pc + r1;
0x0005c234 mov r0, r4 | r0 = r4;
0x0005c238 bl 0x6e820 | r0 = BIO_write ();
0x0005c23c cmp r0, 0 |
| if (r0 > 0) {
0x0005c240 bgt 0x5c1e0 | goto label_17;
| }
0x0005c244 b 0x5bb60 | goto label_0;
| label_53:
0x0005c248 ldr r3, [r7, 8] | r3 = *((r7 + 8));
0x0005c24c mov r1, sl | r1 = sl;
0x0005c250 ldrb r2, [r3, r8] | r2 = *((r3 + r8));
0x0005c254 mov r0, r4 | r0 = r4;
0x0005c258 bl 0x6bbc4 | r0 = BIO_printf ()
0x0005c25c cmp r0, 0 |
| if (r0 <= 0) {
0x0005c260 ble 0x5bb60 | goto label_0;
| }
0x0005c264 add r8, r8, 1 | r8++;
0x0005c268 b 0x5c1ec | goto label_18;
| label_51:
0x0005c26c ldr r1, [pc, 0x21c] | r1 = *(0x5c48c);
0x0005c270 mov r0, r4 | r0 = r4;
0x0005c274 add r1, pc, r1 | r1 = pc + r1;
0x0005c278 bl 0x6e860 | r0 = BIO_puts ();
0x0005c27c cmp r0, 0 |
| if (r0 <= 0) {
0x0005c280 ble 0x5bb60 | goto label_0;
| }
0x0005c284 mov fp, 1 |
0x0005c288 b 0x5c21c | goto label_19;
| label_50:
0x0005c28c cmp sl, 0xa |
| if (sl != 0xa) {
0x0005c290 bne 0x5c388 | goto label_54;
| }
0x0005c294 add r1, sp, 0xc8 | r1 += var_c8h;
0x0005c298 add r2, r2, r7 | r2 += r7;
0x0005c29c str r8, [r1, -0x94]! | *((r1 -= 0x94)) = r8;
0x0005c2a0 mov r0, 0 | r0 = 0;
0x0005c2a4 bl 0x658a4 | r0 = d2i_ASN1_ENUMERATED ();
0x0005c2a8 subs r7, r0, 0 | r7 = r0 - 0;
| if (r7 == r0) {
0x0005c2ac beq 0x5c368 | goto label_55;
| }
0x0005c2b0 ldr r1, [pc, 0x1dc] | r1 = *(0x5c490);
0x0005c2b4 mov r2, 1 | r2 = 1;
0x0005c2b8 add r1, pc, r1 | r1 = pc + r1;
0x0005c2bc mov r0, r4 | r0 = r4;
0x0005c2c0 bl 0x6e820 | r0 = BIO_write ();
0x0005c2c4 cmp r0, 0 |
| if (r0 <= 0) {
0x0005c2c8 ble 0x5bb60 | goto label_0;
| }
0x0005c2cc ldr r2, [r7, 4] | r2 = *((r7 + 4));
0x0005c2d0 ldr r3, [pc, 0x1c0] | r3 = *(0x5c494);
0x0005c2d4 cmp r2, r3 |
| if (r2 == r3) {
0x0005c2d8 beq 0x5c324 | goto label_56;
| }
| label_20:
0x0005c2dc ldr sl, [pc, 0x1b8] | sl = *(0x5c498);
0x0005c2e0 mov r8, 0 | r8 = 0;
0x0005c2e4 add sl, pc, sl | sl = pc + sl;
| label_21:
0x0005c2e8 ldr r3, [r7] | r3 = *(r7);
0x0005c2ec cmp r3, r8 |
| if (r3 > r8) {
0x0005c2f0 bgt 0x5c344 | goto label_57;
| }
0x0005c2f4 cmp r3, 0 |
| if (r3 != 0) {
0x0005c2f8 bne 0x5c318 | goto label_22;
| }
0x0005c2fc ldr r1, [pc, 0x19c] | r1 = *(0x5c49c);
0x0005c300 mov r2, 2 | r2 = 2;
0x0005c304 add r1, pc, r1 | r1 = pc + r1;
0x0005c308 mov r0, r4 | r0 = r4;
0x0005c30c bl 0x6e820 | r0 = BIO_write ();
0x0005c310 cmp r0, 0 |
| if (r0 <= 0) {
0x0005c314 ble 0x5bb60 | goto label_0;
| }
| label_22:
0x0005c318 mov r0, r7 | r0 = r7;
0x0005c31c bl 0x65900 | ASN1_ENUMERATED_free ();
0x0005c320 b 0x5bea0 | goto label_8;
| label_56:
0x0005c324 ldr r1, [pc, 0x178] | r1 = *(0x5c4a0);
0x0005c328 mov r2, 1 | r2 = 1;
0x0005c32c add r1, pc, r1 | r1 = pc + r1;
0x0005c330 mov r0, r4 | r0 = r4;
0x0005c334 bl 0x6e820 | r0 = BIO_write ();
0x0005c338 cmp r0, 0 |
| if (r0 > 0) {
0x0005c33c bgt 0x5c2dc | goto label_20;
| }
0x0005c340 b 0x5bb60 | goto label_0;
| label_57:
0x0005c344 ldr r3, [r7, 8] | r3 = *((r7 + 8));
0x0005c348 mov r1, sl | r1 = sl;
0x0005c34c ldrb r2, [r3, r8] | r2 = *((r3 + r8));
0x0005c350 mov r0, r4 | r0 = r4;
0x0005c354 bl 0x6bbc4 | r0 = BIO_printf ()
0x0005c358 cmp r0, 0 |
| if (r0 <= 0) {
0x0005c35c ble 0x5bb60 | goto label_0;
| }
0x0005c360 add r8, r8, 1 | r8++;
0x0005c364 b 0x5c2e8 | goto label_21;
| label_55:
0x0005c368 ldr r1, [pc, 0x138] | r1 = *(0x5c4a4);
0x0005c36c mov r0, r4 | r0 = r4;
0x0005c370 add r1, pc, r1 | r1 = pc + r1;
0x0005c374 bl 0x6e860 | r0 = BIO_puts ();
0x0005c378 cmp r0, 0 |
| if (r0 <= 0) {
0x0005c37c ble 0x5bb60 | goto label_0;
| }
0x0005c380 mov fp, 1 |
0x0005c384 b 0x5c318 | goto label_22;
| label_54:
0x0005c388 cmp r6, 0 |
0x0005c38c cmpne r2, 0 | __asm ("cmpne r2, 0");
| if (r6 <= 0) {
0x0005c390 ble 0x5bea0 | goto label_8;
| }
0x0005c394 ldr r1, [pc, 0x110] | r1 = *(0x5c4a8);
0x0005c398 mov r2, 1 | r2 = 1;
0x0005c39c add r1, pc, r1 | r1 = pc + r1;
0x0005c3a0 mov r0, r4 | r0 = r4;
0x0005c3a4 bl 0x6e820 | r0 = BIO_write ();
0x0005c3a8 cmp r0, 0 |
| if (r0 <= 0) {
0x0005c3ac ble 0x5bb60 | goto label_0;
| }
0x0005c3b0 cmn r6, 1 |
0x0005c3b4 ldr r1, [sp, 0x30] | r1 = var_30h;
0x0005c3b8 ldr r2, [sp, 0x38] | r2 = var_38h;
| if (r6 != 1) {
0x0005c3bc beq 0x5c3c8 |
0x0005c3c0 cmp r2, r6 |
| if (r2 >= r6) {
0x0005c3c4 movge r2, r6 | r2 = r6;
| goto label_58;
| }
| }
| label_58:
0x0005c3c8 mov r3, 6 | r3 = 6;
0x0005c3cc mov r0, r4 | r0 = r4;
0x0005c3d0 bl 0x6a508 | r0 = BIO_dump_indent ();
0x0005c3d4 cmp r0, 0 |
| if (r0 <= 0) {
0x0005c3d8 ble 0x5bb60 | goto label_0;
| }
0x0005c3dc cmp fp, 0 |
| if (fp == 0) {
0x0005c3e0 beq 0x5c110 | goto label_23;
| }
0x0005c3e4 mov r5, fp | r5 = fp;
0x0005c3e8 b 0x5bf18 | goto label_14;
| label_41:
0x0005c3ec ldrb r2, [r7], 1 | r2 = *(r7);
| r7++;
0x0005c3f0 ldr r1, [sp, 0x28] | r1 = var_28h;
0x0005c3f4 mov r0, r4 | r0 = r4;
0x0005c3f8 bl 0x6bbc4 | r0 = BIO_printf ()
0x0005c3fc cmp r0, 0 |
| if (r0 > 0) {
0x0005c400 bgt 0x5bf34 | goto label_24;
| }
0x0005c404 b 0x5bb60 | goto label_0;
| }
; 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/libcrypto.so.1.1 @ 0x5d734 */
| #include <stdint.h>
|
; (fcn) fcn.0005d734 () | void fcn_0005d734 (int32_t arg_88h, int32_t arg_8ch) {
| int32_t var_bp_0h;
| int32_t var_0h;
| int32_t var_4h;
| int32_t var_8h;
| int32_t var_ch;
| int32_t var_10h;
| int32_t var_14h;
| int32_t var_18h;
| int32_t var_1ch;
| int32_t var_24h;
| int32_t var_28h;
| int32_t var_2ch;
| int32_t var_30h;
| int32_t var_54h;
0x0005d734 mov r1, 0x20 | r1 = 0x20;
0x0005d738 mov r0, fp | r0 = fp;
0x0005d73c bl 0x13790c | r0 = RAND_bytes ();
0x0005d740 cmp r0, 0 |
| if (r0 <= 0) {
0x0005d744 movgt r2, 0 | r2 = 0;
| }
| if (r0 > 0) {
0x0005d748 bgt 0x5d770 | goto label_8;
| }
| label_5:
0x0005d74c mov r0, 0 | r0 = 0;
| label_3:
0x0005d750 add sp, sp, 0x5c |
0x0005d754 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| do {
| label_8:
0x0005d770 ldrb r3, [fp, r2] | r3 = *((fp + r2));
0x0005d774 and r3, r3, 0xf | r3 &= 0xf;
0x0005d778 cmp r3, 9 |
| if (r3 > 9) {
0x0005d77c addls r3, r3, 0x30 | r3 += 0x30;
| }
| if (r3 <= 9) {
0x0005d780 addhi r3, r3, 0x37 | r3 += 0x37;
| }
0x0005d784 strb r3, [fp, r2] | *((fp + r2)) = r3;
0x0005d788 add r2, r2, 1 | r2++;
0x0005d78c cmp r2, 0x20 |
0x0005d790 bne 0x5d770 |
| } while (r2 != 0x20);
0x0005d794 ldr r1, [pc, 0x55c] | r1 = *(0x5dcf4);
0x0005d798 mov r6, 0 | r6 = 0;
0x0005d79c mov r2, r5 | r2 = r5;
0x0005d7a0 add r1, pc, r1 | r1 = pc + r1;
0x0005d7a4 mov r0, r4 | r0 = r4;
0x0005d7a8 strb r6, [sp, 0x54] | var_54h = r6;
0x0005d7ac bl 0x6bbc4 | BIO_printf ()
0x0005d7b0 ldr r1, [pc, 0x544] | r1 = *(0x5dcf8);
0x0005d7b4 mov r0, r4 | r0 = r4;
0x0005d7b8 add r1, pc, r1 | r1 = pc + r1;
0x0005d7bc bl 0x6bbc4 | BIO_printf ()
0x0005d7c0 ldr r1, [pc, 0x538] | r1 = *(0x5dcfc);
0x0005d7c4 ldr r2, [sp, 8] | r2 = var_8h;
0x0005d7c8 add r1, pc, r1 | r1 = pc + r1;
0x0005d7cc mov r0, r4 | r0 = r4;
0x0005d7d0 bl 0x6bbc4 | BIO_printf ()
0x0005d7d4 ldr r1, [pc, 0x528] | r1 = *(0x5dd00);
0x0005d7d8 mov r0, r4 | r0 = r4;
0x0005d7dc add r1, pc, r1 | r1 = pc + r1;
0x0005d7e0 bl 0x6e860 | BIO_puts ();
0x0005d7e4 ldr r3, [pc, 0x51c] | r3 = PEM_read_bio_DHparams;
0x0005d7e8 mov sl, r6 | sl = r6;
0x0005d7ec add r3, pc, r3 | r3 = pc + r3;
0x0005d7f0 str r3, [sp, 0x14] | var_14h = r3;
0x0005d7f4 ldr r3, [pc, 0x510] | r3 = *(0x5dd08);
0x0005d7f8 mov sb, r6 | sb = r6;
0x0005d7fc add r3, pc, r3 | r3 = pc + r3;
0x0005d800 str r3, [sp, 0x18] | var_18h = r3;
0x0005d804 ldr r3, [pc, 0x504] | r3 = *(0x5dd0c);
0x0005d808 add r3, pc, r3 | r3 = pc + r3;
0x0005d80c str r3, [sp, 0x1c] | var_1ch = r3;
| do {
0x0005d810 ldr r0, [sp, 0x88] | r0 = *(arg_88h);
0x0005d814 bl 0x154518 | r0 = OPENSSL_sk_num ();
0x0005d818 cmp sb, r0 |
| if (sb >= r0) {
0x0005d81c bge 0x5d924 | goto label_9;
| }
0x0005d820 cmp r6, 0 |
| if (r6 != 0) {
0x0005d824 beq 0x5d838 |
0x0005d828 mov r2, 1 | r2 = 1;
0x0005d82c ldr r1, [sp, 0x14] | r1 = var_14h;
0x0005d830 mov r0, r4 | r0 = r4;
0x0005d834 bl 0x6e820 | BIO_write ();
| }
0x0005d838 mov r1, sb | r1 = sb;
0x0005d83c ldr r0, [sp, 0x88] | r0 = *(arg_88h);
0x0005d840 bl 0x154528 | r0 = OPENSSL_sk_value ();
0x0005d844 ldr r0, [r0] | r0 = *(r0);
0x0005d848 bl 0x120878 | r0 = OBJ_obj2nid ();
0x0005d84c mov r6, r0 | r6 = r0;
0x0005d850 bl 0x1205a4 | OBJ_nid2sn ();
0x0005d854 bl 0x10cd54 | r0 = EVP_get_digestbyname ();
0x0005d858 cmp r0, 0 |
| if (r0 == 0) {
0x0005d85c beq 0x5d8bc | goto label_10;
| }
0x0005d860 ldr r8, [r0, 0x2c] | r8 = *((r0 + 0x2c));
0x0005d864 cmp r8, 0 |
| if (r8 == 0) {
0x0005d868 beq 0x5d8bc | goto label_10;
| }
0x0005d86c mov r2, 0 | r2 = 0;
0x0005d870 add r3, sp, 0x28 | r3 += var_28h;
0x0005d874 mov r1, 2 | r1 = 2;
0x0005d878 mov r0, r2 | r0 = r2;
0x0005d87c blx r8 | r0 = uint32_t (*r8)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x0005d880 cmp r0, 0 |
| if (r0 <= 0) {
0x0005d884 ble 0x5d8b4 | goto label_11;
| }
0x0005d888 ldr r1, [sp, 0x28] | r1 = var_28h;
0x0005d88c mov r0, r4 | r0 = r4;
0x0005d890 bl 0x6e860 | BIO_puts ();
0x0005d894 ldr r1, [pc, 0x478] | r1 = *(0x5dd10);
0x0005d898 mov r2, 0xaa | r2 = 0xaa;
0x0005d89c add r1, pc, r1 | r1 = pc + r1;
0x0005d8a0 ldr r0, [sp, 0x28] | r0 = var_28h;
0x0005d8a4 bl 0x11842c | CRYPTO_free ();
| label_1:
0x0005d8a8 mov r6, 1 | r6 = 1;
| label_0:
0x0005d8ac add sb, sb, 1 | sb++;
0x0005d8b0 b 0x5d810 |
| } while (1);
| label_11:
0x0005d8b4 cmn r0, 2 |
| if (r0 != 2) {
0x0005d8b8 bne 0x5d924 | goto label_9;
| }
| label_10:
0x0005d8bc cmp r6, 0x2a0 |
| if (r6 == 0x2a0) {
0x0005d8c0 beq 0x5da7c | goto label_12;
| }
| if (r6 > 0x2a0) {
0x0005d8c4 bgt 0x5d8f8 | goto label_13;
| }
0x0005d8c8 cmp r6, 4 |
| if (r6 == 4) {
0x0005d8cc beq 0x5da70 | goto label_14;
| }
0x0005d8d0 cmp r6, 0x40 |
| if (r6 == 0x40) {
0x0005d8d4 beq 0x5da5c | goto label_15;
| }
| label_2:
0x0005d8d8 cmp sl, 0 |
| if (sl != 0) {
0x0005d8dc movne r6, 0 | r6 = 0;
| goto label_16;
| }
| if (sl != 0) {
| label_16:
0x0005d8e0 bne 0x5d8ac | goto label_0;
| }
0x0005d8e4 ldr r1, [sp, 0x1c] | r1 = var_1ch;
0x0005d8e8 mov r0, r4 | r0 = r4;
0x0005d8ec bl 0x6e860 | BIO_puts ();
0x0005d8f0 mov sl, 1 | sl = 1;
0x0005d8f4 b 0x5d8a8 | goto label_1;
| label_13:
0x0005d8f8 ldr r3, [pc, 0x418] | r3 = *(0x5dd14);
0x0005d8fc cmp r6, r3 |
| if (r6 == r3) {
0x0005d900 beq 0x5da90 | goto label_17;
| }
| if (r6 < r3) {
0x0005d904 blt 0x5da84 | goto label_18;
| }
0x0005d908 add r3, r3, 0x87 | r3 += 0x87;
0x0005d90c cmp r6, r3 |
| if (r6 != r3) {
0x0005d910 bne 0x5d8d8 | goto label_2;
| }
0x0005d914 ldr r1, [pc, 0x400] | r1 = *(0x5dd18);
0x0005d918 mov r0, r4 | r0 = r4;
0x0005d91c add r1, pc, r1 | r1 = pc + r1;
0x0005d920 bl 0x6e860 | BIO_puts ();
| label_9:
0x0005d924 ldr r1, [pc, 0x3f4] | r1 = *(0x5dd1c);
0x0005d928 mov r3, r5 | r3 = r5;
0x0005d92c mov r2, fp | r2 = fp;
0x0005d930 add r1, pc, r1 | r1 = pc + r1;
0x0005d934 str r5, [sp] | *(sp) = r5;
0x0005d938 mov r0, r4 | r0 = r4;
0x0005d93c bl 0x6bbc4 | BIO_printf ()
0x0005d940 ldr r1, [pc, 0x3dc] | r1 = *(0x5dd20);
0x0005d944 mov r3, r5 | r3 = r5;
0x0005d948 mov r2, r5 | r2 = r5;
0x0005d94c add r1, pc, r1 | r1 = pc + r1;
0x0005d950 mov r0, r4 | r0 = r4;
0x0005d954 bl 0x6bbc4 | BIO_printf ()
0x0005d958 ldr r1, [pc, 0x3c8] | r1 = *(0x5dd24);
0x0005d95c mov r3, r5 | r3 = r5;
0x0005d960 mov r2, fp | r2 = fp;
0x0005d964 add r1, pc, r1 | r1 = pc + r1;
0x0005d968 mov r0, r4 | r0 = r4;
0x0005d96c bl 0x6bbc4 | BIO_printf ()
0x0005d970 ldr r3, [sp, 0x10] | r3 = var_10h;
0x0005d974 str r3, [sp, 0x24] | var_24h = r3;
0x0005d978 ldr r3, [pc, 0x3ac] | r3 = *(0x5dd28);
0x0005d97c and r3, r7, r3 | r3 = r7 & r3;
0x0005d980 cmp r3, 0x40 |
| if (r3 == 0x40) {
0x0005d984 beq 0x5da9c | goto label_19;
| }
0x0005d988 mov r2, r7 | r2 = r7;
0x0005d98c mov r1, r4 | r1 = r4;
0x0005d990 ldr r0, [sp, 0xc] | r0 = var_ch;
0x0005d994 bl 0x5d368 | SMIME_crlf_copy ();
| label_6:
0x0005d998 ldr r1, [pc, 0x390] | r1 = *(0x5dd2c);
0x0005d99c mov r3, fp | r3 = fp;
0x0005d9a0 mov r2, r5 | r2 = r5;
0x0005d9a4 add r1, pc, r1 | r1 = pc + r1;
0x0005d9a8 str r5, [sp] | *(sp) = r5;
0x0005d9ac mov r0, r4 | r0 = r4;
0x0005d9b0 bl 0x6bbc4 | BIO_printf ()
0x0005d9b4 ldr r1, [pc, 0x378] | r1 = *(0x5dd30);
0x0005d9b8 ldr r2, [sp, 8] | r2 = var_8h;
0x0005d9bc add r1, pc, r1 | r1 = pc + r1;
0x0005d9c0 mov r0, r4 | r0 = r4;
0x0005d9c4 bl 0x6bbc4 | BIO_printf ()
0x0005d9c8 ldr r1, [pc, 0x368] | r1 = *(0x5dd34);
0x0005d9cc mov r2, r5 | r2 = r5;
0x0005d9d0 add r1, pc, r1 | r1 = pc + r1;
0x0005d9d4 mov r0, r4 | r0 = r4;
0x0005d9d8 bl 0x6bbc4 | BIO_printf ()
0x0005d9dc ldr r1, [pc, 0x358] | r1 = *(0x5dd38);
0x0005d9e0 mov r2, r5 | r2 = r5;
0x0005d9e4 add r1, pc, r1 | r1 = pc + r1;
0x0005d9e8 mov r0, r4 | r0 = r4;
0x0005d9ec bl 0x6bbc4 | BIO_printf ()
0x0005d9f0 ldr r1, [pc, 0x348] | r1 = *(0x5dd3c);
0x0005d9f4 mov r0, r4 | r0 = r4;
0x0005d9f8 add r1, pc, r1 | r1 = pc + r1;
0x0005d9fc bl 0x6bbc4 | BIO_printf ()
0x0005da00 ldr r1, [pc, 0x33c] | r1 = *(0x5dd40);
0x0005da04 mov r3, r5 | r3 = r5;
0x0005da08 mov r2, r5 | r2 = r5;
0x0005da0c add r1, pc, r1 | r1 = pc + r1;
0x0005da10 mov r0, r4 | r0 = r4;
0x0005da14 bl 0x6bbc4 | BIO_printf ()
0x0005da18 ldr r3, [sp, 0x8c] | r3 = *(arg_8ch);
0x0005da1c ldr r1, [sp, 0x10] | r1 = var_10h;
0x0005da20 str r3, [sp] | *(sp) = r3;
0x0005da24 mov r3, 0 | r3 = 0;
0x0005da28 mov r2, r3 | r2 = r3;
0x0005da2c mov r0, r4 | r0 = r4;
0x0005da30 bl 0x5d5c8 | fcn_0005d5c8 (r0, r1, r2);
0x0005da34 ldr r1, [pc, 0x30c] | r1 = *(0x5dd44);
0x0005da38 str r5, [sp, 4] | var_4h = r5;
0x0005da3c str r5, [sp] | *(sp) = r5;
0x0005da40 mov r3, fp | r3 = fp;
0x0005da44 mov r2, r5 | r2 = r5;
0x0005da48 add r1, pc, r1 | r1 = pc + r1;
0x0005da4c mov r0, r4 | r0 = r4;
0x0005da50 bl 0x6bbc4 | BIO_printf ()
0x0005da54 mov r0, 1 | r0 = 1;
0x0005da58 b 0x5d750 | goto label_3;
| label_15:
0x0005da5c ldr r1, [pc, 0x2e8] | r1 = *(0x5dd48);
0x0005da60 add r1, pc, r1 | r1 = pc + r1;
| do {
| label_4:
0x0005da64 mov r0, r4 | r0 = r4;
0x0005da68 bl 0x6e860 | BIO_puts ();
0x0005da6c b 0x5d8a8 | goto label_1;
| label_14:
0x0005da70 ldr r1, [pc, 0x2d8] | r1 = *(0x5dd4c);
0x0005da74 add r1, pc, r1 | r1 = pc + r1;
0x0005da78 b 0x5da64 |
| } while (1);
| label_12:
0x0005da7c ldr r1, [sp, 0x18] | r1 = var_18h;
0x0005da80 b 0x5da64 | goto label_4;
| label_18:
0x0005da84 ldr r1, [pc, 0x2c8] | r1 = *(0x5dd50);
0x0005da88 add r1, pc, r1 | r1 = pc + r1;
0x0005da8c b 0x5da64 | goto label_4;
| label_17:
0x0005da90 ldr r1, [pc, 0x2c0] | r1 = *(0x5dd54);
0x0005da94 add r1, pc, r1 | r1 = pc + r1;
0x0005da98 b 0x5da64 | goto label_4;
| label_19:
0x0005da9c ldr r3, [sp, 0x8c] | r3 = *(arg_8ch);
0x0005daa0 ldr r8, [r3, 0x10] | r8 = *((r3 + 0x10));
0x0005daa4 cmp r8, 0 |
| if (r8 != 0) {
0x0005daa8 beq 0x5dab8 |
0x0005daac ldr r3, [r8, 0x10] | r3 = *((r8 + 0x10));
0x0005dab0 subs ip, r3, 0 |
| if (ip != r3) {
0x0005dab4 bne 0x5dadc | goto label_20;
| }
| }
0x0005dab8 mov r3, 0x14c | r3 = 0x14c;
0x0005dabc str r3, [sp] | *(sp) = r3;
0x0005dac0 ldr r3, [pc, 0x294] | r3 = *(0x5dd58);
0x0005dac4 mov r2, 0xca | r2 = 0xca;
0x0005dac8 add r3, pc, r3 | r3 = pc + r3;
0x0005dacc mov r1, 0xd6 | r1 = 0xd6;
0x0005dad0 mov r0, 0xd | r0 = 0xd;
0x0005dad4 bl 0xfc7b8 | ERR_put_error ();
0x0005dad8 b 0x5d74c | goto label_5;
| label_20:
0x0005dadc mov r6, 0 | r6 = 0;
0x0005dae0 add sl, sp, 0x28 | sl += var_28h;
0x0005dae4 add sb, sp, 0x24 | sb += var_24h;
0x0005dae8 str r4, [sp, 0x28] | var_28h = r4;
0x0005daec str r6, [sp, 0x2c] | var_2ch = r6;
0x0005daf0 str r6, [sp, 0x30] | var_30h = r6;
0x0005daf4 mov r3, sl | r3 = sl;
0x0005daf8 ldr r2, [sp, 0x8c] | r2 = *(arg_8ch);
0x0005dafc mov r1, sb | r1 = sb;
0x0005db00 mov r0, 0xc | r0 = 0xc;
0x0005db04 blx ip | r0 = ip (r0, r1, r2, r3);
0x0005db08 cmp r0, r6 |
| if (r0 <= r6) {
0x0005db0c ble 0x5d74c | goto label_5;
| }
0x0005db10 mov r2, r7 | r2 = r7;
0x0005db14 ldr r1, [sp, 0x2c] | r1 = var_2ch;
0x0005db18 ldr r0, [sp, 0xc] | r0 = var_ch;
0x0005db1c bl 0x5d368 | SMIME_crlf_copy ();
0x0005db20 ldr r6, [r8, 0x10] | r6 = *((r8 + 0x10));
0x0005db24 mov r3, sl | r3 = sl;
0x0005db28 ldr r2, [sp, 0x8c] | r2 = *(arg_8ch);
0x0005db2c mov r1, sb | r1 = sb;
0x0005db30 mov r0, 0xd | r0 = 0xd;
0x0005db34 blx r6 | r0 = uint32_t (*r6)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x0005db38 mov r6, r0 | r6 = r0;
| label_7:
0x0005db3c ldr r0, [sp, 0x2c] | r0 = var_2ch;
0x0005db40 cmp r4, r0 |
| if (r4 != r0) {
0x0005db44 bne 0x5db54 | goto label_21;
| }
0x0005db48 cmp r6, 0 |
| if (r6 > 0) {
0x0005db4c bgt 0x5d998 | goto label_6;
| }
0x0005db50 b 0x5d74c | goto label_5;
| label_21:
0x0005db54 bl 0x6eec0 | r0 = BIO_pop ();
0x0005db58 mov r7, r0 | r7 = r0;
0x0005db5c ldr r0, [sp, 0x2c] | r0 = var_2ch;
0x0005db60 bl 0x6e63c | BIO_free ();
0x0005db64 str r7, [sp, 0x2c] | var_2ch = r7;
0x0005db68 b 0x5db3c | goto label_7;
| }
; 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/libcrypto.so.1.1 @ 0x64b90 */
| #include <stdint.h>
|
; (fcn) fcn.00064b90 () | void fcn_00064b90 (int32_t arg_18h, int32_t arg1, int32_t arg2) {
| r0 = arg1;
| r1 = arg2;
0x00064b90 push {r4, r5, r6, r7, r8, lr} |
0x00064b94 ldr r8, [pc, 0x104] | r8 = *(0x64c9c);
0x00064b98 mov r5, r0 | r5 = r0;
0x00064b9c mov r7, r1 | r7 = r1;
0x00064ba0 mov r6, r2 | r6 = r2;
0x00064ba4 mov r4, r3 | r4 = r3;
0x00064ba8 add r8, pc, r8 | r8 = pc + r8;
| do {
0x00064bac cmp r7, 0x14 |
| if (r7 <= 0x14) {
0x00064bb0 bgt 0x64c58 |
0x00064bb4 ldr r1, [pc, 0xe8] | r1 = *(0x64ca0);
0x00064bb8 mov r2, r7 | r2 = r7;
0x00064bbc add r1, pc, r1 | r1 = pc + r1;
0x00064bc0 mov r0, r5 | r0 = r5;
0x00064bc4 bl 0x6e820 | r0 = BIO_write ();
0x00064bc8 cmp r7, r0 |
| if (r7 != r0) {
0x00064bcc bne 0x64c70 | goto label_2;
| }
0x00064bd0 ldr r3, [sp, 0x18] | r3 = *(arg_18h);
0x00064bd4 ldr r3, [r3] | r3 = *(r3);
0x00064bd8 tst r3, 0x100 |
| if ((r3 & 0x100) == 0) {
0x00064bdc movne r4, 0 | r4 = 0;
| }
0x00064be0 tst r3, 0x40 |
| if ((r3 & 0x40) == 0) {
0x00064be4 movne r6, 0 | r6 = 0;
| }
0x00064be8 cmp r4, 0 |
0x00064bec cmpeq r6, 0 | __asm ("cmpeq r6, 0");
| if (r4 == 0) {
0x00064bf0 beq 0x64c80 | goto label_3;
| }
0x00064bf4 cmp r6, 0 |
| if (r6 == 0) {
0x00064bf8 beq 0x64c88 | goto label_4;
| }
0x00064bfc mov r1, r6 | r1 = r6;
0x00064c00 mov r0, r5 | r0 = r5;
0x00064c04 bl 0x6e860 | r0 = BIO_puts ();
0x00064c08 cmp r0, 0 |
| if (r0 <= 0) {
0x00064c0c ble 0x64c70 | goto label_2;
| }
0x00064c10 cmp r4, 0 |
| if (r4 != 0) {
0x00064c14 beq 0x64c34 |
0x00064c18 ldr r1, [pc, 0x88] | r1 = *(0x64ca4);
0x00064c1c mov r2, r4 | r2 = r4;
0x00064c20 add r1, pc, r1 | r1 = pc + r1;
0x00064c24 mov r0, r5 | r0 = r5;
0x00064c28 bl 0x6bbc4 | r0 = BIO_printf ()
| label_1:
0x00064c2c cmp r0, 0 |
| if (r0 <= 0) {
0x00064c30 ble 0x64c70 | goto label_2;
| }
| }
| label_0:
0x00064c34 ldr r1, [pc, 0x70] | r1 = *(0x64ca8);
0x00064c38 mov r2, 2 | r2 = 2;
0x00064c3c add r1, pc, r1 | r1 = pc + r1;
0x00064c40 mov r0, r5 | r0 = r5;
0x00064c44 bl 0x6e820 | r0 = BIO_write ();
0x00064c48 sub r0, r0, 2 | r0 -= 2;
0x00064c4c clz r0, r0 | r0 &= r0;
0x00064c50 lsr r0, r0, 5 | r0 >>= 5;
0x00064c54 pop {r4, r5, r6, r7, r8, pc} |
| }
0x00064c58 mov r2, 0x14 | r2 = 0x14;
0x00064c5c mov r1, r8 | r1 = r8;
0x00064c60 mov r0, r5 | r0 = r5;
0x00064c64 bl 0x6e820 | r0 = BIO_write ();
0x00064c68 cmp r0, 0x14 |
| if (r0 != 0x14) {
0x00064c6c beq 0x64c78 |
| label_2:
0x00064c70 mov r0, 0 | r0 = 0;
0x00064c74 pop {r4, r5, r6, r7, r8, pc} |
| }
0x00064c78 sub r7, r7, 0x14 | r7 -= 0x14;
0x00064c7c b 0x64bac |
| } while (1);
| label_3:
0x00064c80 mov r0, 1 | r0 = 1;
0x00064c84 pop {r4, r5, r6, r7, r8, pc} |
| label_4:
0x00064c88 cmp r4, 0 |
| if (r4 == 0) {
0x00064c8c beq 0x64c34 | goto label_0;
| }
0x00064c90 mov r1, r4 | r1 = r4;
0x00064c94 mov r0, r5 | r0 = r5;
0x00064c98 bl 0x6e860 | BIO_puts ();
0x00064c9c b 0x64c2c | goto label_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/libcrypto.so.1.1 @ 0x64cb0 */
| #include <stdint.h>
|
; (fcn) fcn.00064cb0 () | void fcn_00064cb0 (int32_t arg_10h, int32_t arg_1ch, int32_t arg_a0h, int32_t arg_a4h, int32_t arg_a8h, int32_t arg_ach, int32_t arg1, int32_t arg2) {
| int32_t var_0h;
| int32_t var_ch;
| int32_t var_10h;
| int32_t var_14h;
| int32_t var_1ch;
| int32_t var_20h;
| int32_t var_24h;
| int32_t var_28h;
| int32_t var_7ch;
| r0 = arg1;
| r1 = arg2;
0x00064cb0 push {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00064cb4 mov r6, r3 | r6 = r3;
0x00064cb8 ldr fp, [r6, 0x10] | fp = *((r6 + 0x10));
0x00064cbc sub sp, sp, 0x7c |
0x00064cc0 cmp fp, 0 |
0x00064cc4 mov r4, r0 | r4 = r0;
0x00064cc8 mov r5, r1 | r5 = r1;
0x00064ccc mov r8, r2 | r8 = r2;
0x00064cd0 ldr sb, [sp, 0xa4] | sb = *(arg_a4h);
0x00064cd4 ldr r3, [sp, 0xa8] | r3 = *(arg_a8h);
0x00064cd8 ldr r7, [sp, 0xac] | r7 = *(arg_ach);
| if (fp != 0) {
0x00064cdc moveq sl, fp | sl = fp;
| }
| if (fp != 0) {
0x00064ce0 beq 0x64cf8 |
0x00064ce4 ldr sl, [fp, 0x10] | sl = *(arg_10h);
0x00064ce8 cmp sl, 0 |
| if (sl == 0) {
0x00064cec strne r0, [sp, 0x1c] | var_1ch = r0;
| }
| if (sl == 0) {
0x00064cf0 strne r2, [sp, 0x20] | var_20h = r2;
| }
| if (sl != 0) {
0x00064cf4 strne r7, [sp, 0x24] | var_24h = r7;
| goto label_21;
| }
| }
| label_21:
0x00064cf8 ldrb r2, [r6] | r2 = *(r6);
0x00064cfc cmp r2, 0 |
| if (r2 == 0) {
0x00064d00 bne 0x64d10 |
0x00064d04 ldr r1, [r6, 4] | r1 = *((r6 + 4));
0x00064d08 cmp r1, 1 |
| if (r1 == 1) {
0x00064d0c beq 0x64da0 | goto label_22;
| }
| }
0x00064d10 ldr r1, [r5] | r1 = *(r5);
0x00064d14 cmp r1, 0 |
| if (r1 != 0) {
0x00064d18 bne 0x64d78 | goto label_23;
| }
0x00064d1c ldr r2, [r7] | r2 = *(r7);
0x00064d20 tst r2, 1 |
| if ((r2 & 1) == 0) {
0x00064d24 bne 0x64d34 |
| label_7:
0x00064d28 mov r0, 1 | r0 = 1;
| label_0:
0x00064d2c add sp, sp, 0x7c |
0x00064d30 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| }
0x00064d34 cmp r3, 0 |
0x00064d38 beq 0x64d50 |
| while (r0 != 0) {
0x00064d3c ldr r1, [pc, 0x658] | r1 = *(0x65398);
0x00064d40 add r1, pc, r1 | r1 = pc + r1;
| label_1:
0x00064d44 mov r0, r4 | r0 = r4;
0x00064d48 bl 0x6e860 | BIO_puts ();
0x00064d4c b 0x650b0 | goto label_9;
0x00064d50 str r7, [sp] | *(sp) = r7;
0x00064d54 mov r3, sb | r3 = sb;
0x00064d58 ldr r2, [sp, 0xa0] | r2 = *(arg_a0h);
0x00064d5c mov r1, r8 | r1 = r8;
0x00064d60 mov r0, r4 | r0 = r4;
0x00064d64 bl 0x64b90 | r0 = fcn_00064b90 (r0, r1, r2);
0x00064d68 cmp r0, 0 |
0x00064d6c bne 0x64d3c |
| }
| do {
| label_3:
0x00064d70 mov r0, 0 | r0 = 0;
0x00064d74 b 0x64d2c | goto label_0;
| label_23:
0x00064d78 cmp r2, 6 |
| if (r2 > 6) {
| /* switch table (7 cases) at 0x64d84 */
0x00064d7c addls pc, pc, r2, lsl 2 | pc += (r2 << 2);
| }
0x00064d80 b 0x65388 | goto label_24;
0x00064d84 b 0x64da0 | goto label_22;
0x00064d88 b 0x6521c | goto label_25;
0x00064d8c b 0x651bc | goto label_26;
0x00064d90 b 0x65388 | goto label_24;
0x00064d94 b 0x65120 | goto label_27;
0x00064d98 b 0x64db8 | goto label_28;
0x00064d9c b 0x6521c | goto label_25;
| label_22:
0x00064da0 ldr r3, [r6, 8] | r3 = *((r6 + 8));
0x00064da4 cmp r3, 0 |
| if (r3 == 0) {
0x00064da8 strne r7, [sp] | *(sp) = r7;
| }
| if (r3 == 0) {
0x00064dac movne r2, r8 | r2 = r8;
| }
| if (r3 == 0) {
0x00064db0 movne r1, r5 | r1 = r5;
| }
| if (r3 != 0) {
0x00064db4 bne 0x65210 | goto label_29;
| }
| label_28:
0x00064db8 str r7, [sp] | *(sp) = r7;
0x00064dbc mov r3, sb | r3 = sb;
0x00064dc0 ldr r2, [sp, 0xa0] | r2 = *(arg_a0h);
0x00064dc4 mov r1, r8 | r1 = r8;
0x00064dc8 mov r0, r4 | r0 = r4;
0x00064dcc bl 0x64b90 | r0 = fcn_00064b90 (r0, r1, r2);
0x00064dd0 cmp r0, 0 |
0x00064dd4 beq 0x64d70 |
| } while (r0 == 0);
0x00064dd8 cmp fp, 0 |
| if (fp != 0) {
0x00064ddc beq 0x64e10 |
0x00064de0 ldr sb, [fp, 0x1c] | sb = *(arg_1ch);
0x00064de4 cmp sb, 0 |
| if (sb == 0) {
0x00064de8 beq 0x64e10 | goto label_30;
| }
0x00064dec str r7, [sp] | *(sp) = r7;
0x00064df0 mov r3, r8 | r3 = r8;
0x00064df4 mov r2, r6 | r2 = r6;
0x00064df8 mov r1, r5 | r1 = r5;
0x00064dfc mov r0, r4 | r0 = r4;
0x00064e00 blx sb | r0 = sb (r0, r1, r2, r3);
| label_14:
0x00064e04 adds r0, r0, 0 | r0 += 0;
| if (r0 == r0) {
0x00064e08 movne r0, 1 | r0 = 1;
| }
0x00064e0c b 0x64d2c | goto label_0;
| }
| label_30:
0x00064e10 ldrb r3, [r6] | r3 = *(r6);
0x00064e14 cmp r3, 5 |
| if (r3 != 5) {
0x00064e18 ldreq sb, [r5] | sb = *(r5);
| }
0x00064e1c ldr r3, [r7] | r3 = *(r7);
| if (r3 != 5) {
0x00064e20 ldreq sl, [sb, 4] | sl = *((sb + 4));
| }
0x00064e24 biceq sl, sl, 0x100 | __asm ("biceq sl, sl, aav.0x000000ff");
| if (r3 != 5) {
0x00064e28 beq 0x64e3c |
0x00064e2c ldr sl, [r6, 4] | sl = *((r6 + 4));
0x00064e30 cmp sl, 1 |
| if (sl == 1) {
0x00064e34 beq 0x64e74 | goto label_31;
| }
0x00064e38 ldr sb, [r5] | sb = *(r5);
| }
0x00064e3c cmn sl, 4 |
| if (sl != 4) {
0x00064e40 bne 0x64e78 | goto label_32;
| }
0x00064e44 mov r5, sb | r5 = sb;
0x00064e48 tst r3, 0x10 |
0x00064e4c ldr sl, [r5], 4 | sl = *(r5);
| r5 += 4;
0x00064e50 ldr sb, [sb, 4] | sb = *((sb + 4));
| if ((r3 & 0x10) != 0) {
0x00064e54 bne 0x64e80 | goto label_33;
| }
| do {
0x00064e58 mov r0, sl | r0 = sl;
0x00064e5c bl 0x5ba08 | ASN1_tag2str ();
0x00064e60 cmp sl, 5 |
| if (sl != 5) {
0x00064e64 bne 0x64e8c | goto label_34;
| }
| label_2:
0x00064e68 ldr r1, [pc, 0x530] | r1 = *(0x6539c);
0x00064e6c add r1, pc, r1 | r1 = pc + r1;
0x00064e70 b 0x64d44 | goto label_1;
| label_31:
0x00064e74 mov sb, 0 | sb = 0;
| label_32:
0x00064e78 tst r3, 8 |
0x00064e7c bne 0x64e58 |
| } while ((r3 & 8) != 0);
| label_33:
0x00064e80 cmp sl, 5 |
| if (sl != 5) {
0x00064e84 bne 0x64ec0 | goto label_35;
| }
0x00064e88 b 0x64e68 | goto label_2;
| label_34:
0x00064e8c cmp r0, 0 |
| if (r0 == 0) {
0x00064e90 beq 0x64ec0 | goto label_35;
| }
0x00064e94 mov r1, r0 | r1 = r0;
0x00064e98 mov r0, r4 | r0 = r4;
0x00064e9c bl 0x6e860 | r0 = BIO_puts ();
0x00064ea0 cmp r0, 0 |
| if (r0 <= 0) {
0x00064ea4 ble 0x64d70 | goto label_3;
| }
0x00064ea8 ldr r1, [pc, 0x4f4] | r1 = *(0x653a0);
0x00064eac mov r0, r4 | r0 = r4;
0x00064eb0 add r1, pc, r1 | r1 = pc + r1;
0x00064eb4 bl 0x6e860 | r0 = BIO_puts ();
0x00064eb8 cmp r0, 0 |
| if (r0 <= 0) {
0x00064ebc ble 0x64d70 | goto label_3;
| }
| label_35:
0x00064ec0 add sl, sl, 3 | sl += 3;
0x00064ec4 cmp sl, 0x1b |
| if (sl > 0x1b) {
| /* switch table (28 cases) at 0x64ed0 */
0x00064ec8 addls pc, pc, sl, lsl 2 | pc += (sl << 2);
| }
0x00064ecc b 0x6510c | goto label_36;
0x00064ed0 b 0x650d4 | goto label_37;
0x00064ed4 b 0x6510c | goto label_36;
0x00064ed8 b 0x6510c | goto label_36;
0x00064edc b 0x6510c | goto label_36;
0x00064ee0 b 0x64f40 | goto label_38;
0x00064ee4 b 0x64f9c | goto label_39;
0x00064ee8 b 0x65068 | goto label_40;
0x00064eec b 0x65068 | goto label_40;
0x00064ef0 b 0x6510c | goto label_36;
0x00064ef4 b 0x6500c | goto label_41;
0x00064ef8 b 0x6510c | goto label_36;
0x00064efc b 0x6510c | goto label_36;
0x00064f00 b 0x6510c | goto label_36;
0x00064f04 b 0x64f9c | goto label_39;
0x00064f08 b 0x6510c | goto label_36;
0x00064f0c b 0x6510c | goto label_36;
0x00064f10 b 0x6510c | goto label_36;
0x00064f14 b 0x6510c | goto label_36;
0x00064f18 b 0x6510c | goto label_36;
0x00064f1c b 0x650d4 | goto label_37;
0x00064f20 b 0x650d4 | goto label_37;
0x00064f24 b 0x6510c | goto label_36;
0x00064f28 b 0x6510c | goto label_36;
0x00064f2c b 0x6510c | goto label_36;
0x00064f30 b 0x6510c | goto label_36;
0x00064f34 b 0x6510c | goto label_36;
0x00064f38 b 0x64fe8 | goto label_42;
0x00064f3c b 0x64ffc | goto label_43;
| label_38:
0x00064f40 ldr r3, [r5] | r3 = *(r5);
0x00064f44 cmn r3, 1 |
| if (r3 == 1) {
0x00064f48 bne 0x64f58 |
0x00064f4c ldr r3, [r6, 0x14] | r3 = *((r6 + 0x14));
0x00064f50 cmn r3, 1 |
| if (r3 == 1) {
0x00064f54 beq 0x64f6c | goto label_44;
| }
| }
0x00064f58 cmp r3, 0 |
| if (r3 == 0) {
0x00064f5c beq 0x64f90 | goto label_45;
| }
0x00064f60 ldr r1, [pc, 0x440] | r1 = *(0x653a4);
0x00064f64 add r1, pc, r1 | r1 = pc + r1;
0x00064f68 b 0x64f74 | goto label_4;
| label_44:
0x00064f6c ldr r1, [pc, 0x438] | r1 = *(0x653a8);
0x00064f70 add r1, pc, r1 | r1 = pc + r1;
| label_4:
0x00064f74 mov r0, r4 | r0 = r4;
0x00064f78 bl 0x6e860 | r0 = BIO_puts ();
0x00064f7c cmp r0, 0 |
| if (r0 <= 0) {
0x00064f80 ble 0x64d70 | goto label_3;
| }
| label_5:
0x00064f84 ldr r1, [pc, 0x424] | r1 = *(0x653ac);
0x00064f88 add r1, pc, r1 | r1 = pc + r1;
0x00064f8c b 0x64d44 | goto label_1;
| label_45:
0x00064f90 ldr r1, [pc, 0x41c] | r1 = *(0x653b0);
0x00064f94 add r1, pc, r1 | r1 = pc + r1;
0x00064f98 b 0x64f74 | goto label_4;
| label_39:
0x00064f9c mov r1, sb | r1 = sb;
0x00064fa0 mov r0, 0 | r0 = 0;
0x00064fa4 bl 0x18207c | r0 = i2s_ASN1_INTEGER ();
0x00064fa8 subs r6, r0, 0 | r6 = r0 - 0;
| if (r6 == r0) {
0x00064fac beq 0x64d70 | goto label_3;
| }
0x00064fb0 mov r1, r6 | r1 = r6;
0x00064fb4 mov r0, r4 | r0 = r4;
0x00064fb8 bl 0x6e860 | BIO_puts ();
0x00064fbc ldr r1, [pc, 0x3f4] | r1 = *(0x653b4);
0x00064fc0 ldr r2, [pc, 0x3f4] | r2 = *(0x653b8);
0x00064fc4 add r1, pc, r1 | r1 = pc + r1;
0x00064fc8 cmp r0, 0 |
0x00064fcc mov r0, r6 | r0 = r6;
| if (r0 > 0) {
0x00064fd0 movle r5, 0 | r5 = 0;
| }
| if (r0 <= 0) {
0x00064fd4 movgt r5, 1 | r5 = 1;
| }
0x00064fd8 bl 0x11842c | CRYPTO_free ();
| label_6:
0x00064fdc cmp r5, 0 |
| if (r5 != 0) {
0x00064fe0 bne 0x64f84 | goto label_5;
| }
0x00064fe4 b 0x64d70 | goto label_3;
| label_42:
0x00064fe8 mov r1, sb | r1 = sb;
0x00064fec mov r0, r4 | r0 = r4;
0x00064ff0 bl 0x590b4 | r0 = ASN1_UTCTIME_print ();
| do {
| label_10:
0x00064ff4 mov r5, r0 | r5 = r0;
0x00064ff8 b 0x64fdc | goto label_6;
| label_43:
0x00064ffc mov r1, sb | r1 = sb;
0x00065000 mov r0, r4 | r0 = r4;
0x00065004 bl 0x5438c | ASN1_GENERALIZEDTIME_print ();
0x00065008 b 0x64ff4 |
| } while (1);
| label_41:
0x0006500c ldr r5, [r5] | r5 = *(r5);
0x00065010 mov r0, r5 | r0 = r5;
0x00065014 bl 0x120878 | OBJ_obj2nid ();
0x00065018 bl 0x120690 | r0 = OBJ_nid2ln ();
0x0006501c subs r6, r0, 0 | r6 = r0 - 0;
| if (r6 != r0) {
0x00065020 ldreq r6, [pc, 0x398] | r6 = *((pc + 0x398));
| }
| if (r6 != r0) {
0x00065024 addeq r6, pc, r6 | r6 = pc + r6;
| }
0x00065028 mov r2, r5 | r2 = r5;
0x0006502c add r5, sp, 0x28 | r5 += var_28h;
0x00065030 mov r0, r5 | r0 = r5;
0x00065034 mov r3, 1 | r3 = 1;
0x00065038 mov r1, 0x50 | r1 = 0x50;
0x0006503c bl 0x12093c | OBJ_obj2txt ();
0x00065040 ldr r1, [pc, 0x37c] | r1 = *(0x653c0);
0x00065044 mov r3, r5 | r3 = r5;
0x00065048 mov r2, r6 | r2 = r6;
0x0006504c add r1, pc, r1 | r1 = pc + r1;
0x00065050 mov r0, r4 | r0 = r4;
0x00065054 bl 0x6bbc4 | r0 = BIO_printf ()
0x00065058 cmp r0, 0 |
| if (r0 > 0) {
0x0006505c movle r5, 0 | r5 = 0;
| }
| if (r0 <= 0) {
0x00065060 movgt r5, 1 | r5 = 1;
| }
0x00065064 b 0x64fdc | goto label_6;
| label_40:
0x00065068 ldr r3, [sb, 4] | r3 = *((sb + 4));
0x0006506c cmp r3, 3 |
| if (r3 != 3) {
0x00065070 bne 0x650c0 | goto label_46;
| }
0x00065074 ldr r2, [sb, 0xc] | r2 = *((sb + 0xc));
0x00065078 ldr r1, [pc, 0x348] | r1 = *(0x653c4);
0x0006507c and r2, r2, 7 | r2 &= 7;
0x00065080 add r1, pc, r1 | r1 = pc + r1;
0x00065084 mov r0, r4 | r0 = r4;
0x00065088 bl 0x6bbc4 | r0 = BIO_printf ()
| label_8:
0x0006508c cmp r0, 0 |
| if (r0 <= 0) {
0x00065090 ble 0x64d70 | goto label_3;
| }
0x00065094 ldr r2, [sb] | r2 = *(sb);
0x00065098 cmp r2, 0 |
| if (r2 <= 0) {
0x0006509c ble 0x64d28 | goto label_7;
| }
0x000650a0 add r3, r8, 2 | r3 = r8 + 2;
0x000650a4 ldr r1, [sb, 8] | r1 = *((sb + 8));
0x000650a8 mov r0, r4 | r0 = r4;
0x000650ac bl 0x6a508 | r0 = BIO_dump_indent ();
| label_9:
0x000650b0 cmp r0, 0 |
| if (r0 > 0) {
0x000650b4 movle r0, 0 | r0 = 0;
| }
| if (r0 <= 0) {
0x000650b8 movgt r0, 1 | r0 = 1;
| }
0x000650bc b 0x64d2c | goto label_0;
| label_46:
0x000650c0 ldr r1, [pc, 0x304] | r1 = *(0x653c8);
0x000650c4 mov r0, r4 | r0 = r4;
0x000650c8 add r1, pc, r1 | r1 = pc + r1;
0x000650cc bl 0x6e860 | BIO_puts ();
0x000650d0 b 0x6508c | goto label_8;
| label_37:
0x000650d4 ldr r1, [pc, 0x2f4] | r1 = *(0x653cc);
0x000650d8 mov r0, r4 | r0 = r4;
0x000650dc add r1, pc, r1 | r1 = pc + r1;
0x000650e0 bl 0x6e860 | r0 = BIO_puts ();
0x000650e4 cmp r0, 0 |
| if (r0 <= 0) {
0x000650e8 ble 0x64d70 | goto label_3;
| }
0x000650ec mov r3, 0 | r3 = 0;
0x000650f0 str r3, [sp] | *(sp) = r3;
0x000650f4 mov r0, r4 | r0 = r4;
0x000650f8 mov r3, r8 | r3 = r8;
0x000650fc ldr r2, [sb] | r2 = *(sb);
0x00065100 ldr r1, [sb, 8] | r1 = *((sb + 8));
0x00065104 bl 0x5c4dc | ASN1_parse_dump ();
0x00065108 b 0x650b0 | goto label_9;
| label_36:
0x0006510c ldr r2, [r7, 0x10] | r2 = *((r7 + 0x10));
0x00065110 mov r1, sb | r1 = sb;
0x00065114 mov r0, r4 | r0 = r4;
0x00065118 bl 0x57a30 | ASN1_STRING_print_ex ();
0x0006511c b 0x64ff4 | goto label_10;
| label_27:
0x00065120 cmp r3, 0 |
| if (r3 == 0) {
0x00065124 beq 0x65154 | goto label_47;
| }
| label_11:
0x00065128 ldr r3, [r6, 0x10] | r3 = *((r6 + 0x10));
0x0006512c cmp r3, 0 |
| if (r3 != 0) {
0x00065130 bne 0x65178 | goto label_48;
| }
| label_12:
0x00065134 cmp sb, 0 |
| if (sb == 0) {
0x00065138 beq 0x64d28 | goto label_7;
| }
0x0006513c ldr r1, [pc, 0x290] | r1 = *(0x653d0);
0x00065140 mov r2, sb | r2 = sb;
0x00065144 add r1, pc, r1 | r1 = pc + r1;
| label_13:
0x00065148 mov r0, r4 | r0 = r4;
0x0006514c bl 0x6bbc4 | BIO_printf ()
0x00065150 b 0x650b0 | goto label_9;
| label_47:
0x00065154 str r7, [sp] | *(sp) = r7;
0x00065158 mov r3, sb | r3 = sb;
0x0006515c ldr r2, [sp, 0xa0] | r2 = *(arg_a0h);
0x00065160 mov r1, r8 | r1 = r8;
0x00065164 mov r0, r4 | r0 = r4;
0x00065168 bl 0x64b90 | r0 = fcn_00064b90 (r0, r1, r2);
0x0006516c cmp r0, 0 |
| if (r0 != 0) {
0x00065170 bne 0x65128 | goto label_11;
| }
0x00065174 b 0x64d70 | goto label_3;
| label_48:
0x00065178 ldr r6, [r3, 0x18] | r6 = *((r3 + 0x18));
0x0006517c cmp r6, 0 |
| if (r6 == 0) {
0x00065180 beq 0x65134 | goto label_12;
| }
0x00065184 ldr r3, [pc, 0x24c] | r3 = *(0x653d4);
0x00065188 str r7, [sp] | *(sp) = r7;
0x0006518c add r3, pc, r3 | r3 = pc + r3;
0x00065190 mov r2, r8 | r2 = r8;
0x00065194 mov r1, r5 | r1 = r5;
0x00065198 mov r0, r4 | r0 = r4;
0x0006519c blx r6 | r0 = uint32_t (*r6)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x000651a0 cmp r0, 0 |
| if (r0 == 0) {
0x000651a4 beq 0x64d70 | goto label_3;
| }
0x000651a8 cmp r0, 2 |
| if (r0 != 2) {
0x000651ac bne 0x64d28 | goto label_7;
| }
0x000651b0 ldr r1, [pc, 0x224] | r1 = *(0x653d8);
0x000651b4 add r1, pc, r1 | r1 = pc + r1;
0x000651b8 b 0x64d44 | goto label_1;
| label_26:
0x000651bc mov r1, r6 | r1 = r6;
0x000651c0 mov r0, r5 | r0 = r5;
0x000651c4 bl 0x6616c | r0 = fcn_0006616c (r0, r1);
0x000651c8 subs r2, r0, 0 | r2 = r0 - 0;
| if (r2 >= r0) {
0x000651cc blt 0x651dc |
0x000651d0 ldr r3, [r6, 0xc] | r3 = *((r6 + 0xc));
0x000651d4 cmp r3, r2 |
| if (r3 > r2) {
0x000651d8 bgt 0x651e8 | goto label_49;
| }
| }
0x000651dc ldr r1, [pc, 0x1fc] | r1 = *(0x653dc);
0x000651e0 add r1, pc, r1 | r1 = pc + r1;
0x000651e4 b 0x65148 | goto label_13;
| label_49:
0x000651e8 ldr r6, [r6, 8] | r6 = *((r6 + 8));
0x000651ec mov r3, 0x14 | r3 = 0x14;
0x000651f0 mla sb, r3, r2, r6 | __asm ("mla sb, r3, r2, r6");
0x000651f4 mov r0, r5 | r0 = r5;
0x000651f8 mov r1, sb | r1 = sb;
0x000651fc bl 0x663e8 | fcn_000663e8 (r0, r1);
0x00065200 mov r3, sb | r3 = sb;
0x00065204 mov r2, r8 | r2 = r8;
0x00065208 str r7, [sp] | *(sp) = r7;
0x0006520c mov r1, r0 | r1 = r0;
| label_29:
0x00065210 mov r0, r4 | r0 = r4;
0x00065214 bl 0x653f8 | fcn_000653f8 (r0, r1, r2);
0x00065218 b 0x64e04 | goto label_14;
| label_25:
0x0006521c cmp r3, 0 |
| if (r3 == 0) {
0x00065220 beq 0x65294 | goto label_50;
| }
| label_15:
0x00065224 ldr r3, [sp, 0xa0] | r3 = *(arg_a0h);
0x00065228 cmp sb, 0 |
0x0006522c cmpeq r3, 0 | __asm ("cmpeq r3, 0");
| if (sb != 0) {
0x00065230 bne 0x652b8 | goto label_51;
| }
| label_16:
0x00065234 cmp sl, 0 |
| if (sl != 0) {
0x00065238 bne 0x652ec | goto label_52;
| }
| label_18:
0x0006523c ldr r3, [r6, 8] | r3 = *((r6 + 8));
0x00065240 mov sb, 0 | sb = 0;
0x00065244 str r3, [sp, 0xc] | var_ch = r3;
0x00065248 mov fp, 0x14 |
0x0006524c add r3, r8, 2 | r3 = r8 + 2;
0x00065250 str r3, [sp, 0x10] | var_10h = r3;
| label_19:
0x00065254 ldr r3, [r6, 0xc] | r3 = *((r6 + 0xc));
0x00065258 ldr r1, [sp, 0xc] | r1 = var_ch;
0x0006525c cmp r3, sb |
0x00065260 mla r1, fp, sb, r1 | __asm ("mla r1, fp, sb, r1");
| if (r3 > sb) {
0x00065264 bgt 0x65314 | goto label_53;
| }
0x00065268 ldr r3, [r7] | r3 = *(r7);
0x0006526c tst r3, 2 |
| if ((r3 & 2) != 0) {
0x00065270 bne 0x65360 | goto label_54;
| }
| label_20:
0x00065274 cmp sl, 0 |
| if (sl == 0) {
0x00065278 beq 0x64d28 | goto label_7;
| }
0x0006527c add r3, sp, 0x1c | r3 += var_1ch;
0x00065280 mov r2, r6 | r2 = r6;
0x00065284 mov r1, r5 | r1 = r5;
0x00065288 mov r0, 9 | r0 = 9;
0x0006528c blx sl | sl (r0, r1, r2, r3);
0x00065290 b 0x64e04 | goto label_14;
| label_50:
0x00065294 str r7, [sp] | *(sp) = r7;
0x00065298 mov r3, sb | r3 = sb;
0x0006529c ldr r2, [sp, 0xa0] | r2 = *(arg_a0h);
0x000652a0 mov r1, r8 | r1 = r8;
0x000652a4 mov r0, r4 | r0 = r4;
0x000652a8 bl 0x64b90 | r0 = fcn_00064b90 (r0, r1, r2);
0x000652ac cmp r0, 0 |
| if (r0 != 0) {
0x000652b0 bne 0x65224 | goto label_15;
| }
0x000652b4 b 0x64d70 | goto label_3;
| label_51:
0x000652b8 ldr r3, [r7] | r3 = *(r7);
0x000652bc tst r3, 2 |
| if ((r3 & 2) == 0) {
0x000652c0 beq 0x652e0 | goto label_55;
| }
0x000652c4 ldr r1, [pc, 0x118] | r1 = *(0x653e0);
0x000652c8 add r1, pc, r1 | r1 = pc + r1;
| label_17:
0x000652cc mov r0, r4 | r0 = r4;
0x000652d0 bl 0x6e860 | r0 = BIO_puts ();
0x000652d4 cmp r0, 0 |
| if (r0 > 0) {
0x000652d8 bgt 0x65234 | goto label_16;
| }
0x000652dc b 0x64d70 | goto label_3;
| label_55:
0x000652e0 ldr r1, [pc, 0x100] | r1 = *(0x653e4);
0x000652e4 add r1, pc, r1 | r1 = pc + r1;
0x000652e8 b 0x652cc | goto label_17;
| label_52:
0x000652ec add r3, sp, 0x1c | r3 += var_1ch;
0x000652f0 mov r2, r6 | r2 = r6;
0x000652f4 mov r1, r5 | r1 = r5;
0x000652f8 mov r0, 8 | r0 = 8;
0x000652fc blx sl | r0 = sl (r0, r1, r2, r3);
0x00065300 cmp r0, 0 |
| if (r0 == 0) {
0x00065304 beq 0x64d70 | goto label_3;
| }
0x00065308 cmp r0, 2 |
| if (r0 != 2) {
0x0006530c bne 0x6523c | goto label_18;
| }
0x00065310 b 0x64d28 | goto label_7;
| label_53:
0x00065314 mov r2, 1 | r2 = 1;
0x00065318 mov r0, r5 | r0 = r5;
0x0006531c bl 0x663f8 | r0 = fcn_000663f8 (r0, r1);
0x00065320 subs r3, r0, 0 | r3 = r0 - 0;
| if (r3 == r0) {
0x00065324 beq 0x64d70 | goto label_3;
| }
0x00065328 mov r1, r3 | r1 = r3;
0x0006532c mov r0, r5 | r0 = r5;
0x00065330 str r3, [sp, 0x14] | var_14h = r3;
0x00065334 bl 0x663e8 | fcn_000663e8 (r0, r1);
0x00065338 str r7, [sp] | *(sp) = r7;
0x0006533c ldr r3, [sp, 0x14] | r3 = var_14h;
0x00065340 ldr r2, [sp, 0x10] | r2 = var_10h;
0x00065344 mov r1, r0 | r1 = r0;
0x00065348 mov r0, r4 | r0 = r4;
0x0006534c bl 0x653f8 | r0 = fcn_000653f8 (r0, r1, r2);
0x00065350 cmp r0, 0 |
| if (r0 == 0) {
0x00065354 beq 0x64d70 | goto label_3;
| }
0x00065358 add sb, sb, 1 | sb++;
0x0006535c b 0x65254 | goto label_19;
| label_54:
0x00065360 ldr r3, [pc, 0x84] | r3 = *(0x653e8);
0x00065364 ldr r1, [pc, 0x84] | r1 = *(0x653ec);
0x00065368 add r3, pc, r3 | r3 = pc + r3;
0x0006536c mov r2, r8 | r2 = r8;
0x00065370 add r1, pc, r1 | r1 = pc + r1;
0x00065374 mov r0, r4 | r0 = r4;
0x00065378 bl 0x6bbc4 | r0 = BIO_printf ()
0x0006537c cmp r0, 0 |
| if (r0 >= 0) {
0x00065380 bge 0x65274 | goto label_20;
| }
0x00065384 b 0x64d70 | goto label_3;
| label_24:
0x00065388 ldr r1, [pc, 0x64] | r1 = *(0x653f0);
0x0006538c mov r0, r4 | r0 = r4;
0x00065390 add r1, pc, r1 | r1 = pc + r1;
0x00065394 bl 0x6bbc4 | BIO_printf ()
0x00065398 b 0x64d70 | goto label_3;
| }
; 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/libcrypto.so.1.1 @ 0x653f8 */
| #include <stdint.h>
|
; (fcn) fcn.000653f8 () | void fcn_000653f8 (int32_t arg_48h, int32_t arg1, int32_t arg2) {
| int32_t var_0h;
| int32_t var_4h;
| int32_t var_8h;
| int32_t var_ch;
| int32_t var_14h;
| int32_t var_18h;
| int32_t var_1ch;
| int32_t var_24h;
| r0 = arg1;
| r1 = arg2;
0x000653f8 push {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x000653fc sub sp, sp, 0x24 |
0x00065400 ldr r8, [sp, 0x48] | r8 = *(arg_48h);
0x00065404 mov r4, r0 | r4 = r0;
0x00065408 ldr r0, [r8] | r0 = *(r8);
0x0006540c mov r5, r2 | r5 = r2;
0x00065410 ands r2, r0, 0x80 | r2 = r0 & 0x80;
0x00065414 mov r7, r1 | r7 = r1;
0x00065418 mov r6, r3 | r6 = r3;
0x0006541c ldr r1, [r3] | r1 = *(r3);
| if (r2 == r0) {
0x00065420 ldrne r3, [r3, 0x10] | r3 = *((r3 + 0x10));
| }
| if (r2 == r0) {
0x00065424 ldrne r2, [r3, 0x18] | r2 = *((r3 + 0x18));
| }
0x00065428 tst r0, 0x40 |
| if ((r0 & 0x40) != 0) {
0x0006542c ldreq r3, [r6, 0xc] | r3 = *((r6 + 0xc));
| }
| if ((r0 & 0x40) == 0) {
0x00065430 movne r3, 0 | r3 = 0;
| }
0x00065434 tst r1, 0x1000 |
| if ((r1 & 0x1000) == 0) {
0x00065438 strne r7, [sp, 0x18] | var_18h = r7;
| }
| if ((r1 & 0x1000) == 0) {
0x0006543c addne r7, sp, 0x18 | r7 += var_18h;
| }
0x00065440 ands ip, r1, 6 |
| if (ip == r1) {
0x00065444 beq 0x655f8 | goto label_8;
| }
0x00065448 cmp r3, 0 |
0x0006544c bne 0x654c0 |
| while (r0 > 0) {
0x00065450 ldr r3, [pc, 0x1c4] | r3 = *(0x65618);
0x00065454 ldr sb, [r7] | sb = *(r7);
0x00065458 add r3, pc, r3 | r3 = pc + r3;
0x0006545c mov r7, 0 | r7 = 0;
0x00065460 add sl, r5, 2 | sl = r5 + 2;
0x00065464 add fp, sp, 0x1c |
0x00065468 str r3, [sp, 0x14] | var_14h = r3;
| label_2:
0x0006546c mov r0, sb | r0 = sb;
0x00065470 bl 0x154518 | r0 = OPENSSL_sk_num ();
0x00065474 cmp r7, r0 |
| if (r7 < r0) {
0x00065478 blt 0x65544 | goto label_9;
| }
0x0006547c cmp r7, 0 |
| if (r7 == 0) {
0x00065480 beq 0x655b0 | goto label_10;
| }
| label_5:
0x00065484 ldr r3, [r8] | r3 = *(r8);
0x00065488 tst r3, 2 |
| if ((r3 & 2) != 0) {
0x0006548c moveq r0, 1 | r0 = 1;
| }
| if ((r3 & 2) == 0) {
0x00065490 beq 0x6550c | goto label_7;
| }
0x00065494 ldr r3, [pc, 0x184] | r3 = *(0x6561c);
0x00065498 ldr r1, [pc, 0x184] | r1 = *(0x65620);
0x0006549c add r3, pc, r3 | r3 = pc + r3;
0x000654a0 mov r2, r5 | r2 = r5;
0x000654a4 add r1, pc, r1 | r1 = pc + r1;
0x000654a8 mov r0, r4 | r0 = r4;
0x000654ac bl 0x6bbc4 | r0 = BIO_printf ()
0x000654b0 cmp r0, 0 |
| if (r0 > 0) {
0x000654b4 movle r0, 0 | r0 = 0;
| }
| if (r0 <= 0) {
0x000654b8 movgt r0, 1 | r0 = 1;
| }
0x000654bc b 0x6550c | goto label_7;
0x000654c0 tst r0, 4 |
| if ((r0 & 4) == 0) {
0x000654c4 beq 0x65520 | goto label_11;
| }
0x000654c8 tst r1, 2 |
| if ((r1 & 2) != 0) {
0x000654cc bne 0x65514 | goto label_12;
| }
0x000654d0 ldr r3, [pc, 0x150] | r3 = *(0x65624);
0x000654d4 add r3, pc, r3 | r3 = pc + r3;
| label_0:
0x000654d8 ldr r2, [r6, 0xc] | r2 = *((r6 + 0xc));
0x000654dc str r3, [sp] | *(sp) = r3;
0x000654e0 ldr r1, [pc, 0x144] | r1 = *(0x65628);
0x000654e4 ldr r3, [pc, 0x144] | r3 = *(0x6562c);
0x000654e8 str r2, [sp, 4] | var_4h = r2;
0x000654ec add r3, pc, r3 | r3 = pc + r3;
0x000654f0 mov r2, r5 | r2 = r5;
0x000654f4 add r1, pc, r1 | r1 = pc + r1;
0x000654f8 mov r0, r4 | r0 = r4;
0x000654fc bl 0x6bbc4 | r0 = BIO_printf ()
| label_1:
0x00065500 cmp r0, 0 |
0x00065504 bgt 0x65450 |
| }
| do {
| label_4:
0x00065508 mov r0, 0 | r0 = 0;
| label_7:
0x0006550c add sp, sp, 0x24 |
0x00065510 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_12:
0x00065514 ldr r3, [pc, 0x118] | r3 = *(0x65630);
0x00065518 add r3, pc, r3 | r3 = pc + r3;
0x0006551c b 0x654d8 | goto label_0;
| label_11:
0x00065520 str r3, [sp] | *(sp) = r3;
0x00065524 ldr r1, [pc, 0x10c] | r1 = *(0x65634);
0x00065528 ldr r3, [pc, 0x10c] | r3 = *(0x65638);
0x0006552c mov r2, r5 | r2 = r5;
0x00065530 add r3, pc, r3 | r3 = pc + r3;
0x00065534 add r1, pc, r1 | r1 = pc + r1;
0x00065538 mov r0, r4 | r0 = r4;
0x0006553c bl 0x6bbc4 | BIO_printf ()
0x00065540 b 0x65500 | goto label_1;
| label_9:
0x00065544 cmp r7, 0 |
| if (r7 > 0) {
0x00065548 bgt 0x65598 | goto label_13;
| }
| label_3:
0x0006554c mov r1, r7 | r1 = r7;
0x00065550 mov r0, sb | r0 = sb;
0x00065554 bl 0x154528 | OPENSSL_sk_value ();
0x00065558 mov r3, 1 | r3 = 1;
0x0006555c str r3, [sp, 8] | var_8h = r3;
0x00065560 mov r3, 0 | r3 = 0;
0x00065564 str r3, [sp, 4] | var_4h = r3;
0x00065568 str r3, [sp] | *(sp) = r3;
0x0006556c str r8, [sp, 0xc] | var_ch = r8;
0x00065570 ldr r3, [r6, 0x10] | r3 = *((r6 + 0x10));
0x00065574 mov r2, sl | r2 = sl;
0x00065578 mov r1, fp | r1 = fp;
0x0006557c str r0, [sp, 0x1c] | var_1ch = r0;
0x00065580 mov r0, r4 | r0 = r4;
0x00065584 bl 0x64cb0 | r0 = fcn_00064cb0 (r0, r1, r2, r3, r4, r5, r6);
0x00065588 cmp r0, 0 |
0x0006558c beq 0x65508 |
| } while (r0 == 0);
0x00065590 add r7, r7, 1 | r7++;
0x00065594 b 0x6546c | goto label_2;
| label_13:
0x00065598 ldr r1, [sp, 0x14] | r1 = var_14h;
0x0006559c mov r0, r4 | r0 = r4;
0x000655a0 bl 0x6e860 | r0 = BIO_puts ();
0x000655a4 cmp r0, 0 |
| if (r0 > 0) {
0x000655a8 bgt 0x6554c | goto label_3;
| }
0x000655ac b 0x65508 | goto label_4;
| label_10:
0x000655b0 cmp sb, 0 |
0x000655b4 add r2, r5, 2 | r2 = r5 + 2;
| if (sb == 0) {
0x000655b8 beq 0x655ec | goto label_14;
| }
0x000655bc ldr r3, [pc, 0x7c] | r3 = *(0x6563c);
0x000655c0 add r3, pc, r3 | r3 = pc + r3;
| label_6:
0x000655c4 str r3, [sp] | *(sp) = r3;
0x000655c8 ldr r1, [pc, 0x74] | r1 = *(0x65640);
0x000655cc ldr r3, [pc, 0x74] | r3 = *(0x65644);
0x000655d0 add r1, pc, r1 | r1 = pc + r1;
0x000655d4 add r3, pc, r3 | r3 = pc + r3;
0x000655d8 mov r0, r4 | r0 = r4;
0x000655dc bl 0x6bbc4 | r0 = BIO_printf ()
0x000655e0 cmp r0, 0 |
| if (r0 > 0) {
0x000655e4 bgt 0x65484 | goto label_5;
| }
0x000655e8 b 0x65508 | goto label_4;
| label_14:
0x000655ec ldr r3, [pc, 0x58] | r3 = *(0x65648);
0x000655f0 add r3, pc, r3 | r3 = pc + r3;
0x000655f4 b 0x655c4 | goto label_6;
| label_8:
0x000655f8 stmib sp, {r2, ip} | __asm ("stmib sp, {r2, ip}");
0x000655fc str r3, [sp] | *(sp) = r3;
0x00065600 str r8, [sp, 0xc] | var_ch = r8;
0x00065604 ldr r3, [r6, 0x10] | r3 = *((r6 + 0x10));
0x00065608 mov r2, r5 | r2 = r5;
0x0006560c mov r1, r7 | r1 = r7;
0x00065610 mov r0, r4 | r0 = r4;
0x00065614 bl 0x64cb0 | fcn_00064cb0 (r0, r1, r2, r3, r4, r5, r6);
0x00065618 b 0x6550c | goto label_7;
| }
; 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/libcrypto.so.1.1 @ 0x9da64 */
| #include <stdint.h>
|
; (fcn) fcn.0009da64 () | void fcn_0009da64 () {
| int32_t var_0h;
| do {
0x0009d848 mov r2, 0x10 | r2 = 0x10;
0x0009d84c mov r1, r6 | r1 = r6;
0x0009d850 mov r0, r4 | r0 = r4;
0x0009d854 bl 0x6a534 | BIO_hex_string ();
0x0009d858 add sp, sp, 0x24 |
0x0009d85c pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_0:
0x0009d9f4 ldr r3, [pc, 0xe0] | r3 = *(0x9dad8);
0x0009d9f8 ldr r1, [pc, 0xe0] | r1 = *(0x9dadc);
0x0009d9fc add r3, pc, r3 | r3 = pc + r3;
0x0009da00 mov r2, r7 | r2 = r7;
0x0009da04 add r1, pc, r1 | r1 = pc + r1;
0x0009da08 mov r0, r4 | r0 = r4;
0x0009da0c bl 0x6bbc4 | BIO_printf ()
0x0009da10 mov r0, r5 | r0 = r5;
0x0009da14 bl 0x9e0a8 | r0 = SCT_get_signature_nid ();
0x0009da18 cmp r0, 0 |
| if (r0 != 0) {
0x0009da1c bne 0x9da80 | goto label_2;
| }
0x0009da20 ldr r1, [pc, 0xbc] | r1 = *(0x9dae0);
0x0009da24 ldrb r3, [r5, 0x29] | r3 = *((r5 + 0x29));
0x0009da28 ldrb r2, [r5, 0x28] | r2 = *((r5 + 0x28));
0x0009da2c add r1, pc, r1 | r1 = pc + r1;
0x0009da30 mov r0, r4 | r0 = r4;
0x0009da34 bl 0x6bbc4 | BIO_printf ()
| label_1:
0x0009da38 ldr r3, [pc, 0xa8] | r3 = *(0x9dae4);
0x0009da3c ldr r1, [pc, 0xa8] | r1 = *(0x9dae8);
0x0009da40 add r3, pc, r3 | r3 = pc + r3;
0x0009da44 mov r2, r7 | r2 = r7;
0x0009da48 add r1, pc, r1 | r1 = pc + r1;
0x0009da4c mov r0, r4 | r0 = r4;
0x0009da50 bl 0x6bbc4 | BIO_printf ()
0x0009da54 ldr r3, [r5, 0x30] | r3 = *((r5 + 0x30));
0x0009da58 str r3, [sp] | *(sp) = r3;
0x0009da5c ldr r3, [r5, 0x2c] | r3 = *((r5 + 0x2c));
0x0009da60 b 0x9d848 |
| } while (1);
0x0009da64 str r3, [sp] | *(sp) = r3;
0x0009da68 mov r2, 0x10 | r2 = 0x10;
0x0009da6c ldr r3, [r5, 0x20] | r3 = *((r5 + 0x20));
0x0009da70 mov r1, r6 | r1 = r6;
0x0009da74 mov r0, r4 | r0 = r4;
0x0009da78 bl 0x6a534 | BIO_hex_string ();
0x0009da7c b 0x9d9f4 | goto label_0;
| label_2:
0x0009da80 bl 0x120690 | OBJ_nid2ln ();
0x0009da84 ldr r1, [pc, 0x64] | r1 = *(0x9daec);
0x0009da88 add r1, pc, r1 | r1 = pc + r1;
0x0009da8c mov r2, r0 | r2 = r0;
0x0009da90 mov r0, r4 | r0 = r4;
0x0009da94 bl 0x6bbc4 | BIO_printf ()
0x0009da98 b 0x9da38 | goto label_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/libcrypto.so.1.1 @ 0x10db04 */
| #include <stdint.h>
|
; (fcn) fcn.0010db04 () | void fcn_0010db04 (int32_t arg1, int32_t arg2) {
| r0 = arg1;
| r1 = arg2;
0x0010db04 push {r4, r5, r6, lr} |
0x0010db08 mov r6, r1 | r6 = r1;
0x0010db0c mov r1, r2 | r1 = r2;
0x0010db10 mov r2, 0x80 | r2 = 0x80;
0x0010db14 mov r5, r3 | r5 = r3;
0x0010db18 mov r4, r0 | r4 = r0;
0x0010db1c bl 0x6eb94 | BIO_indent ();
0x0010db20 ldr r0, [r6] | r0 = *(r6);
0x0010db24 bl 0x120690 | OBJ_nid2ln ();
0x0010db28 ldr r1, [pc, 0x18] | r1 = *(0x10db44);
0x0010db2c mov r2, r5 | r2 = r5;
0x0010db30 add r1, pc, r1 | r1 = pc + r1;
0x0010db34 mov r3, r0 | r3 = r0;
0x0010db38 mov r0, r4 | r0 = r4;
0x0010db3c bl 0x6bbc4 | BIO_printf ()
0x0010db40 mov r0, 1 | r0 = 1;
0x0010db44 pop {r4, r5, r6, pc} |
| }
; 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/libcrypto.so.1.1 @ 0x123cb0 */
| #include <stdint.h>
|
; (fcn) fcn.00123cb0 () | void fcn_00123cb0 (int32_t arg1, int32_t arg2) {
| r0 = arg1;
| r1 = arg2;
0x00123cb0 push {r4, r5, r6, r7, r8, lr} |
0x00123cb4 ldr r6, [pc, 0xd4] | r6 = *(0x123d8c);
0x00123cb8 mov r7, r1 | r7 = r1;
0x00123cbc ldr r1, [pc, 0xd0] | r1 = *(0x123d90);
0x00123cc0 add r6, pc, r6 | r6 = pc + r6;
0x00123cc4 mov r3, r6 | r3 = r6;
0x00123cc8 add r1, pc, r1 | r1 = pc + r1;
0x00123ccc mov r4, r0 | r4 = r0;
0x00123cd0 mov r5, r2 | r5 = r2;
0x00123cd4 bl 0x6bbc4 | BIO_printf ()
0x00123cd8 ldr r1, [pc, 0xb8] | r1 = *(0x123d94);
0x00123cdc add r5, r5, 2 | r5 += 2;
0x00123ce0 mov r3, r6 | r3 = r6;
0x00123ce4 mov r2, r5 | r2 = r5;
0x00123ce8 mov r8, r7 | r8 = r7;
0x00123cec add r1, pc, r1 | r1 = pc + r1;
0x00123cf0 mov r0, r4 | r0 = r4;
0x00123cf4 bl 0x6bbc4 | BIO_printf ()
0x00123cf8 ldr r1, [r8], 8 | r1 = *(r8);
| r8 += 8;
0x00123cfc mov r0, r4 | r0 = r4;
0x00123d00 bl 0x55f58 | i2a_ASN1_OBJECT ();
0x00123d04 ldr r1, [pc, 0x90] | r1 = *(0x123d98);
0x00123d08 mov r3, r6 | r3 = r6;
0x00123d0c mov r2, r5 | r2 = r5;
0x00123d10 add r1, pc, r1 | r1 = pc + r1;
0x00123d14 mov r0, r4 | r0 = r4;
0x00123d18 bl 0x6bbc4 | BIO_printf ()
0x00123d1c mov r1, r8 | r1 = r8;
0x00123d20 mov r2, 0 | r2 = 0;
0x00123d24 mov r0, r4 | r0 = r4;
0x00123d28 bl 0x5fb6c | i2a_ASN1_STRING ();
0x00123d2c ldr r1, [pc, 0x6c] | r1 = *(0x123d9c);
0x00123d30 mov r3, r6 | r3 = r6;
0x00123d34 mov r2, r5 | r2 = r5;
0x00123d38 add r1, pc, r1 | r1 = pc + r1;
0x00123d3c mov r0, r4 | r0 = r4;
0x00123d40 bl 0x6bbc4 | BIO_printf ()
0x00123d44 add r1, r7, 0x18 | r1 = r7 + 0x18;
0x00123d48 mov r2, 0 | r2 = 0;
0x00123d4c mov r0, r4 | r0 = r4;
0x00123d50 bl 0x5fb6c | i2a_ASN1_STRING ();
0x00123d54 ldr r1, [pc, 0x48] | r1 = *(0x123da0);
0x00123d58 mov r3, r6 | r3 = r6;
0x00123d5c mov r2, r5 | r2 = r5;
0x00123d60 add r1, pc, r1 | r1 = pc + r1;
0x00123d64 mov r0, r4 | r0 = r4;
0x00123d68 bl 0x6bbc4 | BIO_printf ()
0x00123d6c add r1, r7, 0x28 | r1 = r7 + 0x28;
0x00123d70 mov r0, r4 | r0 = r4;
0x00123d74 bl 0x5f764 | i2a_ASN1_INTEGER ();
0x00123d78 ldr r1, [pc, 0x28] | r1 = *(0x123da4);
0x00123d7c mov r0, r4 | r0 = r4;
0x00123d80 add r1, pc, r1 | r1 = pc + r1;
0x00123d84 bl 0x6bbc4 | BIO_printf ()
0x00123d88 mov r0, 1 | r0 = 1;
0x00123d8c pop {r4, r5, r6, r7, r8, pc} |
| }
; 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/libcrypto.so.1.1 @ 0x13b384 */
| #include <stdint.h>
|
; (fcn) fcn.0013b384 () | void fcn_0013b384 (int32_t arg1, int32_t arg2) {
| r0 = arg1;
| r1 = arg2;
0x0013b384 push {r4, r5, r6, r7, r8, sb, sl, lr} |
0x0013b388 mov sb, r1 | sb = r1;
0x0013b38c mov r6, r2 | r6 = r2;
0x0013b390 mov r1, r3 | r1 = r3;
0x0013b394 mov r2, 0x80 | r2 = 0x80;
0x0013b398 mov r4, r0 | r4 = r0;
0x0013b39c mov r7, r3 | r7 = r3;
0x0013b3a0 bl 0x6eb94 | r0 = BIO_indent ();
0x0013b3a4 cmp r0, 0 |
| if (r0 == 0) {
0x0013b3a8 bne 0x13b3b8 |
| label_1:
0x0013b3ac mov r8, 0 | r8 = 0;
| label_2:
0x0013b3b0 mov r5, 0 | r5 = 0;
0x0013b3b4 b 0x13b67c | goto label_10;
| }
0x0013b3b8 cmp sb, 0 |
| if (sb == 0) {
0x0013b3bc beq 0x13b40c | goto label_11;
| }
0x0013b3c0 cmp r6, 0 |
| if (r6 != 0) {
0x0013b3c4 bne 0x13b3ec | goto label_12;
| }
0x0013b3c8 ldr r1, [pc, 0x2d4] | r1 = *(0x13b6a0);
0x0013b3cc add r1, pc, r1 | r1 = pc + r1;
| label_0:
0x0013b3d0 mov r0, r4 | r0 = r4;
0x0013b3d4 bl 0x6e860 | r0 = BIO_puts ();
0x0013b3d8 cmp r0, 0 |
| if (r0 > 0) {
0x0013b3dc movle r5, 0 | r5 = 0;
| }
0x0013b3e0 movgt r5, 1 | r5 = 1;
| while (1) {
| label_8:
0x0013b3e4 mov r0, r5 | r0 = r5;
0x0013b3e8 pop {r4, r5, r6, r7, r8, sb, sl, pc} |
| label_12:
0x0013b3ec ldr r1, [pc, 0x2b4] | r1 = *(0x13b6a4);
0x0013b3f0 mov r0, r4 | r0 = r4;
0x0013b3f4 add r1, pc, r1 | r1 = pc + r1;
0x0013b3f8 bl 0x6e860 | r0 = BIO_puts ();
0x0013b3fc cmp r0, 0 |
| if (r0 > 0) {
0x0013b400 bgt 0x13b41c | goto label_13;
| }
0x0013b404 mov r5, 0 | r5 = 0;
0x0013b408 b 0x13b3e4 |
| }
| label_11:
0x0013b40c cmp r6, 0 |
| if (r6 != 0) {
0x0013b410 ldreq r1, [pc, 0x294] | r1 = *((pc + 0x294));
| }
| if (r6 == 0) {
0x0013b414 addeq r1, pc, r1 | r1 = pc + r1;
| goto label_14;
| }
| if (r6 == 0) {
| label_14:
0x0013b418 beq 0x13b3d0 | goto label_0;
| }
| label_13:
0x0013b41c ldr r1, [pc, 0x28c] | r1 = *(0x13b6ac);
0x0013b420 mov r0, r4 | r0 = r4;
0x0013b424 add r1, pc, r1 | r1 = pc + r1;
0x0013b428 bl 0x6e860 | r0 = BIO_puts ();
0x0013b42c cmp r0, 0 |
| if (r0 <= 0) {
0x0013b430 ble 0x13b3ac | goto label_1;
| }
0x0013b434 cmp sb, 0 |
| if (sb == 0) {
0x0013b438 addne r7, r7, 2 | r7 += 2;
| }
0x0013b43c mov r2, 0x80 | r2 = 0x80;
0x0013b440 mov r1, r7 | r1 = r7;
0x0013b444 mov r0, r4 | r0 = r4;
0x0013b448 bl 0x6eb94 | r0 = BIO_indent ();
0x0013b44c cmp r0, 0 |
| if (r0 == 0) {
0x0013b450 beq 0x13b3ac | goto label_1;
| }
0x0013b454 ldr r1, [pc, 0x258] | r1 = *(0x13b6b0);
0x0013b458 mov r0, r4 | r0 = r4;
0x0013b45c add r1, pc, r1 | r1 = pc + r1;
0x0013b460 bl 0x6e860 | r0 = BIO_puts ();
0x0013b464 cmp r0, 0 |
| if (r0 <= 0) {
0x0013b468 ble 0x13b3ac | goto label_1;
| }
0x0013b46c ldr r3, [r6] | r3 = *(r6);
0x0013b470 cmp r3, 0 |
| if (r3 == 0) {
0x0013b474 beq 0x13b618 | goto label_15;
| }
0x0013b478 ldr r1, [r3] | r1 = *(r3);
0x0013b47c mov r0, r4 | r0 = r4;
0x0013b480 bl 0x55f58 | r0 = i2a_ASN1_OBJECT ();
| label_3:
0x0013b484 cmp r0, 0 |
| if (r0 <= 0) {
0x0013b488 ble 0x13b3ac | goto label_1;
| }
0x0013b48c ldr r1, [pc, 0x224] | r1 = *(0x13b6b4);
0x0013b490 mov r0, r4 | r0 = r4;
0x0013b494 add r1, pc, r1 | r1 = pc + r1;
0x0013b498 bl 0x6e860 | r0 = BIO_puts ();
0x0013b49c cmp r0, 0 |
| if (r0 <= 0) {
0x0013b4a0 ble 0x13b3ac | goto label_1;
| }
0x0013b4a4 mov r2, 0x80 | r2 = 0x80;
0x0013b4a8 mov r1, r7 | r1 = r7;
0x0013b4ac mov r0, r4 | r0 = r4;
0x0013b4b0 bl 0x6eb94 | r0 = BIO_indent ();
0x0013b4b4 cmp r0, 0 |
| if (r0 == 0) {
0x0013b4b8 beq 0x13b3ac | goto label_1;
| }
0x0013b4bc ldr r1, [pc, 0x1f8] | r1 = *(0x13b6b8);
0x0013b4c0 mov r0, r4 | r0 = r4;
0x0013b4c4 add r1, pc, r1 | r1 = pc + r1;
0x0013b4c8 bl 0x6e860 | r0 = BIO_puts ();
0x0013b4cc cmp r0, 0 |
| if (r0 <= 0) {
0x0013b4d0 ble 0x13b3ac | goto label_1;
| }
0x0013b4d4 ldr r3, [r6, 4] | r3 = *((r6 + 4));
0x0013b4d8 cmp r3, 0 |
| if (r3 == 0) {
0x0013b4dc beq 0x13b64c | goto label_16;
| }
0x0013b4e0 ldr r1, [r3] | r1 = *(r3);
0x0013b4e4 mov r0, r4 | r0 = r4;
0x0013b4e8 bl 0x55f58 | r0 = i2a_ASN1_OBJECT ();
0x0013b4ec cmp r0, 0 |
| if (r0 <= 0) {
0x0013b4f0 ble 0x13b3ac | goto label_1;
| }
0x0013b4f4 ldr r1, [pc, 0x1c4] | r1 = *(0x13b6bc);
0x0013b4f8 mov r0, r4 | r0 = r4;
0x0013b4fc add r1, pc, r1 | r1 = pc + r1;
0x0013b500 bl 0x6e860 | r0 = BIO_puts ();
0x0013b504 cmp r0, 0 |
| if (r0 <= 0) {
0x0013b508 ble 0x13b3ac | goto label_1;
| }
0x0013b50c ldr r0, [r6, 4] | r0 = *((r6 + 4));
0x0013b510 bl 0x13b318 | r0 = fcn_0013b318 (r0);
0x0013b514 subs r8, r0, 0 | r8 = r0 - 0;
| if (r8 == r0) {
0x0013b518 beq 0x13b62c | goto label_17;
| }
0x0013b51c ldr r1, [r8] | r1 = *(r8);
0x0013b520 mov r0, r4 | r0 = r4;
0x0013b524 bl 0x55f58 | r0 = i2a_ASN1_OBJECT ();
0x0013b528 cmp r0, 0 |
| if (r0 <= 0) {
0x0013b52c ble 0x13b3b0 | goto label_2;
| }
| label_4:
0x0013b530 ldr r1, [pc, 0x18c] | r1 = *(0x13b6c0);
0x0013b534 mov r0, r4 | r0 = r4;
0x0013b538 add r1, pc, r1 | r1 = pc + r1;
0x0013b53c bl 0x6e860 | BIO_puts ();
0x0013b540 mov r2, 0x80 | r2 = 0x80;
0x0013b544 mov r1, r7 | r1 = r7;
0x0013b548 mov r0, r4 | r0 = r4;
0x0013b54c bl 0x6eb94 | r0 = BIO_indent ();
0x0013b550 subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 == r0) {
0x0013b554 beq 0x13b67c | goto label_10;
| }
0x0013b558 cmp sb, 0 |
| if (sb != 0) {
0x0013b55c bne 0x13b658 | goto label_18;
| }
0x0013b560 ldr r2, [pc, 0x160] | r2 = *(0x13b6c4);
0x0013b564 add r2, pc, r2 | r2 = pc + r2;
| label_6:
0x0013b568 ldr r1, [pc, 0x15c] | r1 = *(0x13b6c8);
0x0013b56c mov r0, r4 | r0 = r4;
0x0013b570 add r1, pc, r1 | r1 = pc + r1;
0x0013b574 bl 0x6bbc4 | r0 = BIO_printf ()
0x0013b578 cmp r0, 0 |
| if (r0 <= 0) {
0x0013b57c ble 0x13b3b0 | goto label_2;
| }
0x0013b580 ldr r5, [r6, 8] | r5 = *((r6 + 8));
0x0013b584 cmp r5, 0 |
| if (r5 == 0) {
0x0013b588 beq 0x13b664 | goto label_19;
| }
0x0013b58c mov r1, r5 | r1 = r5;
0x0013b590 mov r0, r4 | r0 = r4;
0x0013b594 bl 0x5f764 | r0 = i2a_ASN1_INTEGER ();
0x0013b598 cmp r0, 0 |
| if (r0 <= 0) {
0x0013b59c ble 0x13b3b0 | goto label_2;
| }
| label_7:
0x0013b5a0 ldr r1, [pc, 0x128] | r1 = *(0x13b6cc);
0x0013b5a4 mov r0, r4 | r0 = r4;
0x0013b5a8 add r1, pc, r1 | r1 = pc + r1;
0x0013b5ac bl 0x6e860 | BIO_puts ();
0x0013b5b0 mov r2, 0x80 | r2 = 0x80;
0x0013b5b4 mov r1, r7 | r1 = r7;
0x0013b5b8 mov r0, r4 | r0 = r4;
0x0013b5bc bl 0x6eb94 | r0 = BIO_indent ();
0x0013b5c0 subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 == r0) {
0x0013b5c4 beq 0x13b67c | goto label_10;
| }
0x0013b5c8 ldr r1, [pc, 0x104] | r1 = *(0x13b6d0);
0x0013b5cc mov r0, r4 | r0 = r4;
0x0013b5d0 add r1, pc, r1 | r1 = pc + r1;
0x0013b5d4 bl 0x6e860 | r0 = BIO_puts ();
0x0013b5d8 cmp r0, 0 |
| if (r0 <= 0) {
0x0013b5dc ble 0x13b3b0 | goto label_2;
| }
0x0013b5e0 ldr r5, [r6, 0xc] | r5 = *((r6 + 0xc));
0x0013b5e4 cmp r5, 0 |
| if (r5 == 0) {
0x0013b5e8 beq 0x13b688 | goto label_20;
| }
0x0013b5ec mov r1, r5 | r1 = r5;
0x0013b5f0 mov r0, r4 | r0 = r4;
0x0013b5f4 bl 0x5f764 | r0 = i2a_ASN1_INTEGER ();
0x0013b5f8 cmp r0, 0 |
| if (r0 <= 0) {
0x0013b5fc ble 0x13b3b0 | goto label_2;
| }
| label_9:
0x0013b600 ldr r1, [pc, 0xd0] | r1 = *(0x13b6d4);
0x0013b604 mov r0, r4 | r0 = r4;
0x0013b608 add r1, pc, r1 | r1 = pc + r1;
0x0013b60c bl 0x6e860 | BIO_puts ();
0x0013b610 mov r5, 1 | r5 = 1;
0x0013b614 b 0x13b67c | goto label_10;
| label_15:
0x0013b618 ldr r1, [pc, 0xbc] | r1 = *(0x13b6d8);
0x0013b61c mov r0, r4 | r0 = r4;
0x0013b620 add r1, pc, r1 | r1 = pc + r1;
0x0013b624 bl 0x6e860 | BIO_puts ();
0x0013b628 b 0x13b484 | goto label_3;
| label_17:
0x0013b62c ldr r1, [pc, 0xac] | r1 = *(0x13b6dc);
0x0013b630 add r1, pc, r1 | r1 = pc + r1;
| label_5:
0x0013b634 mov r0, r4 | r0 = r4;
0x0013b638 bl 0x6e860 | r0 = BIO_puts ();
0x0013b63c cmp r0, 0 |
| if (r0 > 0) {
0x0013b640 movgt r8, 0 | r8 = 0;
| goto label_21;
| }
| if (r0 > 0) {
| label_21:
0x0013b644 bgt 0x13b530 | goto label_4;
| }
0x0013b648 b 0x13b3ac | goto label_1;
| label_16:
0x0013b64c ldr r1, [pc, 0x90] | r1 = *(0x13b6e0);
0x0013b650 add r1, pc, r1 | r1 = pc + r1;
0x0013b654 b 0x13b634 | goto label_5;
| label_18:
0x0013b658 ldr r2, [pc, 0x88] | r2 = *(0x13b6e4);
0x0013b65c add r2, pc, r2 | r2 = pc + r2;
0x0013b660 b 0x13b568 | goto label_6;
| label_19:
0x0013b664 ldr r1, [pc, 0x80] | r1 = *(0x13b6e8);
0x0013b668 mov r0, r4 | r0 = r4;
0x0013b66c add r1, pc, r1 | r1 = pc + r1;
0x0013b670 bl 0x6e860 | r0 = BIO_puts ();
0x0013b674 cmp r0, 0 |
| if (r0 > 0) {
0x0013b678 bgt 0x13b5a0 | goto label_7;
| }
| label_10:
0x0013b67c mov r0, r8 | r0 = r8;
0x0013b680 bl 0x66578 | X509_ALGOR_free ();
0x0013b684 b 0x13b3e4 | goto label_8;
| label_20:
0x0013b688 ldr r1, [pc, 0x60] | r1 = *(0x13b6ec);
0x0013b68c mov r0, r4 | r0 = r4;
0x0013b690 add r1, pc, r1 | r1 = pc + r1;
0x0013b694 bl 0x6e860 | r0 = BIO_puts ();
0x0013b698 cmp r0, 0 |
| if (r0 > 0) {
0x0013b69c bgt 0x13b600 | goto label_9;
| }
0x0013b6a0 b 0x13b67c | goto label_10;
| }
; 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/libcrypto.so.1.1 @ 0x1729fc */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) fcn.001729fc () | void fcn_001729fc (int32_t arg1, uint32_t arg2) {
| int32_t var_0h;
| int32_t var_4h;
| int32_t var_8h;
| int32_t var_9h;
| int32_t var_ah;
| int32_t var_bh;
| int8_t var_0h_2;
| int8_t var_1h;
| int32_t var_18h;
| r0 = arg1;
| r1 = arg2;
0x001729fc cmp r1, 1 |
0x00172a00 push {r4, r5, r6, r7, r8, sb, sl, lr} |
0x00172a04 mov r5, r0 | r5 = r0;
0x00172a08 sub sp, sp, 0x18 |
0x00172a0c mov r4, r1 | r4 = r1;
0x00172a10 mov r6, r3 | r6 = r3;
| if (r1 != 1) {
0x00172a14 beq 0x172a40 |
0x00172a18 cmp r1, 2 |
| if (r1 == 2) {
0x00172a1c beq 0x172a98 | goto label_3;
| }
0x00172a20 ldr r7, [pc, 0x198] | r7 = *(0x172bbc);
0x00172a24 ldr r8, [pc, 0x198] | r8 = *(0x172bc0);
0x00172a28 ldr sb, [pc, 0x198] | sb = *(0x00172bc8);
0x00172a2c mov r4, 0 | r4 = 0;
0x00172a30 add r7, pc, r7 | r7 = pc + r7;
0x00172a34 add r8, pc, r8 | r8 = pc + r8;
0x00172a38 add sb, pc, sb | sb = pc + sb;
0x00172a3c b 0x172b98 | goto label_4;
| }
0x00172a40 mov r3, r2 | r3 = r2;
0x00172a44 mov r1, r6 | r1 = r6;
0x00172a48 mov r2, 4 | r2 = 4;
0x00172a4c add r0, sp, 8 | r0 += var_8h;
0x00172a50 bl 0x17256c | r0 = fcn_0017256c (r0, r1);
0x00172a54 cmp r0, 0 |
| if (r0 != 0) {
0x00172a58 bne 0x172a68 | goto label_5;
| }
| label_0:
0x00172a5c mov r0, 0 | r0 = 0;
| do {
0x00172a60 add sp, sp, 0x18 |
0x00172a64 pop {r4, r5, r6, r7, r8, sb, sl, pc} |
| label_5:
0x00172a68 ldrb r1, [sp, 0xb] | r1 = var_bh;
0x00172a6c ldrb r3, [sp, 9] | r3 = var_9h;
0x00172a70 str r1, [sp, 4] | var_4h = r1;
0x00172a74 ldrb r1, [sp, 0xa] | r1 = var_ah;
0x00172a78 ldrb r2, [sp, 8] | r2 = var_8h;
0x00172a7c str r1, [sp] | *(sp) = r1;
0x00172a80 ldr r1, [pc, 0x144] | r1 = *(0x172bc8);
0x00172a84 mov r0, r5 | r0 = r5;
0x00172a88 add r1, pc, r1 | r1 = pc + r1;
0x00172a8c bl 0x6bbc4 | BIO_printf ()
| label_1:
0x00172a90 mov r0, 1 | r0 = 1;
0x00172a94 b 0x172a60 |
| } while (1);
| label_3:
0x00172a98 add r7, sp, 8 | r7 += var_8h;
0x00172a9c mov r3, r2 | r3 = r2;
0x00172aa0 mov r1, r6 | r1 = r6;
0x00172aa4 mov r2, 0x10 | r2 = 0x10;
0x00172aa8 mov r0, r7 | r0 = r7;
0x00172aac bl 0x17256c | r0 = fcn_0017256c (r0, r1);
0x00172ab0 cmp r0, 0 |
| if (r0 != 0) {
0x00172ab4 movne r4, 0x10 | r4 = 0x10;
| goto label_6;
| }
| if (r0 == 0) {
| label_6:
0x00172ab8 beq 0x172a5c | goto label_0;
| }
| do {
0x00172abc add r3, r7, r4 | r3 = r7 + r4;
0x00172ac0 ldrb r3, [r3, -1] | r3 = var_1h;
0x00172ac4 cmp r3, 0 |
| if (r3 != 0) {
0x00172ac8 bne 0x172ae4 | goto label_7;
| }
0x00172acc sub r3, r4, 2 | r3 = r4 - 2;
0x00172ad0 ldrb r2, [r7, r3] | r2 = *((r7 + r3));
0x00172ad4 cmp r2, 0 |
| if (r2 != 0) {
0x00172ad8 bne 0x172ae4 | goto label_7;
| }
0x00172adc subs r4, r3, 0 | r4 = r3 - 0;
0x00172ae0 bne 0x172abc |
| } while (r4 != r3);
| label_7:
0x00172ae4 ldr r8, [pc, 0xe4] | r8 = *(0x172bcc);
0x00172ae8 ldr sb, [pc, 0xe4] | sb = *(0x172bd0);
0x00172aec ldr sl, [pc, 0xe4] | sl = *(0x172bd4);
0x00172af0 mov r6, 0 | r6 = 0;
0x00172af4 add r8, pc, r8 | r8 = pc + r8;
0x00172af8 add sb, pc, sb | sb = pc + sb;
0x00172afc add sl, pc, sl | sl = pc + sl;
| label_2:
0x00172b00 cmp r6, r4 |
| if (r6 < r4) {
0x00172b04 blt 0x172b44 | goto label_8;
| }
0x00172b08 add r4, r4, 1 | r4++;
0x00172b0c bic r4, r4, 1 | r4 = BIT_MASK (r4, 1);
0x00172b10 cmp r4, 0x10 |
| if (r4 == 0x10) {
0x00172b14 beq 0x172a90 | goto label_1;
| }
0x00172b18 ldr r6, [pc, 0xbc] | r6 = *(0x172bd8);
0x00172b1c mov r0, r5 | r0 = r5;
0x00172b20 add r6, pc, r6 | r6 = pc + r6;
0x00172b24 mov r1, r6 | r1 = r6;
0x00172b28 bl 0x6e860 | BIO_puts ();
0x00172b2c cmp r4, 0 |
| if (r4 != 0) {
0x00172b30 bne 0x172a90 | goto label_1;
| }
0x00172b34 mov r1, r6 | r1 = r6;
0x00172b38 mov r0, r5 | r0 = r5;
0x00172b3c bl 0x6e860 | BIO_puts ();
0x00172b40 b 0x172a90 | goto label_1;
| label_8:
0x00172b44 mov r3, r7 | r3 = r7;
0x00172b48 ldrb r1, [r3, r6]! | r1 = *((r3 += r6));
0x00172b4c cmp r6, 0xe |
0x00172b50 ldrb r2, [r3, 1] | r2 = var_9h;
0x00172b54 mov r0, r5 | r0 = r5;
0x00172b58 orr r2, r2, r1, lsl 8 | r2 |= (r1 << 8);
| if (r6 >= 0xe) {
0x00172b5c movlt r3, r8 | r3 = r8;
| }
| if (r6 < 0xe) {
0x00172b60 movge r3, sb | r3 = sb;
| }
0x00172b64 mov r1, sl | r1 = sl;
0x00172b68 bl 0x6bbc4 | BIO_printf ()
0x00172b6c add r6, r6, 2 | r6 += 2;
0x00172b70 b 0x172b00 | goto label_2;
| do {
0x00172b74 ldr r3, [r6, 8] | r3 = *((r6 + 8));
0x00172b78 cmp r4, 0 |
0x00172b7c ldrb r3, [r3, r4] | r3 = *((r3 + r4));
| if (r4 <= 0) {
0x00172b80 movgt r2, r7 | r2 = r7;
| }
| if (r4 > 0) {
0x00172b84 movle r2, r8 | r2 = r8;
| }
0x00172b88 mov r1, sb | r1 = sb;
0x00172b8c mov r0, r5 | r0 = r5;
0x00172b90 bl 0x6bbc4 | BIO_printf ()
0x00172b94 add r4, r4, 1 | r4++;
| label_4:
0x00172b98 ldr r3, [r6] | r3 = *(r6);
0x00172b9c cmp r4, r3 |
0x00172ba0 blt 0x172b74 |
| } while (r4 < r3);
0x00172ba4 ldr r2, [r6, 0xc] | r2 = *((r6 + 0xc));
0x00172ba8 ldr r1, [pc, 0x30] | r1 = *(0x172bdc);
0x00172bac and r2, r2, 7 | r2 &= 7;
0x00172bb0 add r1, pc, r1 | r1 = pc + r1;
0x00172bb4 mov r0, r5 | r0 = r5;
0x00172bb8 bl 0x6bbc4 | BIO_printf ()
0x00172bbc b 0x172a90 | goto label_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/libcrypto.so.1.1 @ 0x174c98 */
| #include <stdint.h>
|
; (fcn) fcn.00174c98 () | void fcn_00174c98 (int32_t arg1, int32_t arg2) {
| int32_t var_0h;
| int32_t var_4h;
| int32_t var_8h;
| int32_t var_8ch;
| r0 = arg1;
| r1 = arg2;
0x00174c98 push {r4, r5, r6, r7, r8, sb, lr} |
0x00174c9c subs r5, r0, 0 | r5 = r0 - 0;
0x00174ca0 sub sp, sp, 0x8c |
0x00174ca4 bne 0x174cb4 |
| while (r3 == 0) {
| label_0:
0x00174ca8 mov r0, 0 | r0 = 0;
| label_1:
0x00174cac add sp, sp, 0x8c |
0x00174cb0 pop {r4, r5, r6, r7, r8, sb, pc} |
0x00174cb4 ldr r3, [r5] | r3 = *(r5);
0x00174cb8 cmp r3, 0 |
| if (r3 != 0) {
0x00174cbc bne 0x174cd8 | goto label_3;
| }
0x00174cc0 ldr r3, [r5, 8] | r3 = *((r5 + 8));
0x00174cc4 cmp r3, 0 |
| if (r3 != 0) {
0x00174cc8 bne 0x174cd8 | goto label_3;
| }
0x00174ccc ldr r3, [r5, 4] | r3 = *((r5 + 4));
0x00174cd0 cmp r3, 0 |
0x00174cd4 beq 0x174ca8 |
| }
| label_3:
0x00174cd8 ldr r6, [pc, 0x180] | r6 = *(0x174e5c);
0x00174cdc mov r4, r1 | r4 = r1;
0x00174ce0 ldr r1, [pc, 0x17c] | r1 = *(0x174e60);
0x00174ce4 add r6, pc, r6 | r6 = pc + r6;
0x00174ce8 mov r3, r6 | r3 = r6;
0x00174cec add r1, pc, r1 | r1 = pc + r1;
0x00174cf0 mov r0, r4 | r0 = r4;
0x00174cf4 mov r7, r2 | r7 = r2;
0x00174cf8 bl 0x6bbc4 | r0 = BIO_printf ()
0x00174cfc cmp r0, 0 |
| if (r0 <= 0) {
0x00174d00 ble 0x174ca8 | goto label_0;
| }
0x00174d04 ldr r0, [r5] | r0 = *(r5);
0x00174d08 cmp r0, 0 |
| if (r0 == 0) {
0x00174d0c beq 0x174d98 | goto label_4;
| }
0x00174d10 bl 0x120878 | OBJ_obj2nid ();
0x00174d14 bl 0x120690 | OBJ_nid2ln ();
0x00174d18 ldr r1, [pc, 0x148] | r1 = *(0x174e64);
0x00174d1c mov r3, r6 | r3 = r6;
0x00174d20 mov r2, r7 | r2 = r7;
0x00174d24 add r1, pc, r1 | r1 = pc + r1;
0x00174d28 mov r8, r0 | r8 = r0;
0x00174d2c mov r0, r4 | r0 = r4;
0x00174d30 bl 0x6bbc4 | r0 = BIO_printf ()
0x00174d34 cmp r0, 0 |
| if (r0 <= 0) {
0x00174d38 ble 0x174ca8 | goto label_0;
| }
0x00174d3c add sb, sp, 8 | sb += var_8h;
0x00174d40 mov r3, 1 | r3 = 1;
0x00174d44 ldr r2, [r5] | r2 = *(r5);
0x00174d48 mov r1, 0x80 | r1 = 0x80;
0x00174d4c mov r0, sb | r0 = sb;
0x00174d50 bl 0x12093c | OBJ_obj2txt ();
0x00174d54 cmp r8, 0 |
| if (r8 != 0) {
0x00174d58 moveq r3, r6 | r3 = r6;
| }
| if (r8 != 0) {
0x00174d5c moveq r8, r3 | r8 = r3;
| }
| if (r8 != 0) {
0x00174d60 moveq r2, r3 | r2 = r3;
| }
| if (r8 == 0) {
0x00174d64 ldrne r3, [pc, 0x100] | r3 = *((pc + 0x100));
| }
| if (r8 == 0) {
0x00174d68 ldrne r2, [pc, 0x100] | r2 = *((pc + 0x100));
| }
| if (r8 == 0) {
0x00174d6c addne r3, pc, r3 | r3 = pc + r3;
| }
| if (r8 == 0) {
0x00174d70 addne r2, pc, r2 | r2 = pc + r2;
| }
0x00174d74 ldr r1, [pc, 0xf8] | r1 = *(0x174e70);
0x00174d78 str r2, [sp, 4] | var_4h = r2;
0x00174d7c str sb, [sp] | *(sp) = sb;
0x00174d80 mov r2, r8 | r2 = r8;
0x00174d84 add r1, pc, r1 | r1 = pc + r1;
0x00174d88 mov r0, r4 | r0 = r4;
0x00174d8c bl 0x6bbc4 | r0 = BIO_printf ()
0x00174d90 cmp r0, 0 |
| if (r0 <= 0) {
0x00174d94 ble 0x174ca8 | goto label_0;
| }
| label_4:
0x00174d98 ldr r3, [r5, 8] | r3 = *((r5 + 8));
0x00174d9c cmp r3, 0 |
| if (r3 != 0) {
0x00174da0 bne 0x174e0c | goto label_5;
| }
| label_2:
0x00174da4 ldr r3, [r5, 4] | r3 = *((r5 + 4));
0x00174da8 cmp r3, 0 |
| if (r3 == 0) {
0x00174dac moveq r0, 1 | r0 = 1;
| goto label_6;
| }
| if (r3 == 0) {
| label_6:
0x00174db0 beq 0x174cac | goto label_1;
| }
0x00174db4 ldr r3, [pc, 0xbc] | r3 = *(0x174e74);
0x00174db8 ldr r1, [pc, 0xbc] | r1 = *(0x174e78);
0x00174dbc add r3, pc, r3 | r3 = pc + r3;
0x00174dc0 mov r2, r7 | r2 = r7;
0x00174dc4 add r1, pc, r1 | r1 = pc + r1;
0x00174dc8 mov r0, r4 | r0 = r4;
0x00174dcc bl 0x6bbc4 | r0 = BIO_printf ()
0x00174dd0 cmp r0, 0 |
| if (r0 <= 0) {
0x00174dd4 ble 0x174ca8 | goto label_0;
| }
0x00174dd8 ldr r1, [r5, 4] | r1 = *((r5 + 4));
0x00174ddc mov r0, r4 | r0 = r4;
0x00174de0 bl 0x565e8 | r0 = ASN1_STRING_print ();
0x00174de4 cmp r0, 0 |
| if (r0 <= 0) {
0x00174de8 ble 0x174ca8 | goto label_0;
| }
0x00174dec ldr r1, [pc, 0x8c] | r1 = *(0x174e7c);
0x00174df0 mov r0, r4 | r0 = r4;
0x00174df4 add r1, pc, r1 | r1 = pc + r1;
0x00174df8 bl 0x6bbc4 | r0 = BIO_printf ()
0x00174dfc cmp r0, 0 |
| if (r0 > 0) {
0x00174e00 movle r0, 0 | r0 = 0;
| }
| if (r0 <= 0) {
0x00174e04 movgt r0, 1 | r0 = 1;
| }
0x00174e08 b 0x174cac | goto label_1;
| label_5:
0x00174e0c ldr r3, [pc, 0x70] | r3 = *(0x174e80);
0x00174e10 ldr r1, [pc, 0x70] | r1 = *(0x174e84);
0x00174e14 add r3, pc, r3 | r3 = pc + r3;
0x00174e18 mov r2, r7 | r2 = r7;
0x00174e1c add r1, pc, r1 | r1 = pc + r1;
0x00174e20 mov r0, r4 | r0 = r4;
0x00174e24 bl 0x6bbc4 | r0 = BIO_printf ()
0x00174e28 cmp r0, 0 |
| if (r0 <= 0) {
0x00174e2c ble 0x174ca8 | goto label_0;
| }
0x00174e30 ldr r1, [r5, 8] | r1 = *((r5 + 8));
0x00174e34 mov r0, r4 | r0 = r4;
0x00174e38 bl 0x565e8 | r0 = ASN1_STRING_print ();
0x00174e3c cmp r0, 0 |
| if (r0 <= 0) {
0x00174e40 ble 0x174ca8 | goto label_0;
| }
0x00174e44 ldr r1, [pc, 0x40] | r1 = *(0x174e88);
0x00174e48 mov r0, r4 | r0 = r4;
0x00174e4c add r1, pc, r1 | r1 = pc + r1;
0x00174e50 bl 0x6bbc4 | r0 = BIO_printf ()
0x00174e54 cmp r0, 0 |
| if (r0 > 0) {
0x00174e58 bgt 0x174da4 | goto label_2;
| }
0x00174e5c b 0x174ca8 | goto label_0;
| }
; 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/libcrypto.so.1.1 @ 0x1770d4 */
| #include <stdint.h>
|
; (fcn) fcn.001770d4 () | void fcn_001770d4 (int32_t arg1, int32_t arg2) {
| int32_t var_0h;
| int32_t var_8h;
| int32_t var_ch;
| int32_t var_14h;
| r0 = arg1;
| r1 = arg2;
0x001770d4 push {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x001770d8 subs r6, r1, 0 | r6 = r1 - 0;
0x001770dc sub sp, sp, 0x14 |
| if (r6 == r1) {
0x001770e0 bne 0x1770ec |
| label_0:
0x001770e4 mov r0, 1 | r0 = 1;
0x001770e8 b 0x177128 | goto label_5;
| }
0x001770ec ldr r7, [pc, 0x178] | r7 = *(0x177268);
0x001770f0 ldr r1, [pc, 0x178] | r1 = *(0x17726c);
0x001770f4 add r7, pc, r7 | r7 = pc + r7;
0x001770f8 str r3, [sp] | *(sp) = r3;
0x001770fc add r1, pc, r1 | r1 = pc + r1;
0x00177100 mov r3, r7 | r3 = r7;
0x00177104 mov r4, r0 | r4 = r0;
0x00177108 mov r5, r2 | r5 = r2;
0x0017710c bl 0x6bbc4 | BIO_printf ()
0x00177110 ldr r3, [r6] | r3 = *(r6);
0x00177114 cmp r3, 0 |
| if (r3 == 0) {
0x00177118 beq 0x177250 | goto label_6;
| }
0x0017711c cmp r3, 1 |
| if (r3 == 1) {
0x00177120 beq 0x177228 | goto label_7;
| }
| do {
| label_2:
0x00177124 mov r0, 0 | r0 = 0;
| label_5:
0x00177128 add sp, sp, 0x14 |
0x0017712c pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_1:
0x00177130 ldr r1, [r8, 4] | r1 = *((r8 + 4));
0x00177134 bl 0x18207c | r0 = i2s_ASN1_INTEGER ();
0x00177138 subs r8, r0, 0 | r8 = r0 - 0;
0x0017713c beq 0x177124 |
| } while (r8 == r0);
0x00177140 add r2, r5, 2 | r2 = r5 + 2;
0x00177144 ldr r1, [sp, 0xc] | r1 = var_ch;
0x00177148 str r8, [sp] | *(sp) = r8;
0x0017714c ldr r3, [sp, 8] | r3 = var_8h;
0x00177150 mov r0, r4 | r0 = r4;
0x00177154 bl 0x6bbc4 | BIO_printf ()
0x00177158 mov r2, 0x53 | r2 = 0x53;
0x0017715c mov r1, fp | r1 = fp;
| label_3:
0x00177160 mov r0, r8 | r0 = r8;
0x00177164 bl 0x11842c | CRYPTO_free ();
0x00177168 add r7, r7, 1 | r7++;
| label_4:
0x0017716c ldr r0, [r6, 4] | r0 = *((r6 + 4));
0x00177170 bl 0x154518 | r0 = OPENSSL_sk_num ();
0x00177174 cmp r7, r0 |
| if (r7 >= r0) {
0x00177178 bge 0x1770e4 | goto label_0;
| }
0x0017717c mov r1, r7 | r1 = r7;
0x00177180 ldr r0, [r6, 4] | r0 = *((r6 + 4));
0x00177184 bl 0x154528 | r0 = OPENSSL_sk_value ();
0x00177188 mov r8, r0 | r8 = r0;
0x0017718c ldr r0, [r0] | r0 = *(r0);
0x00177190 cmp r0, 0 |
| if (r0 == 0) {
0x00177194 beq 0x177130 | goto label_1;
| }
0x00177198 cmp r0, 1 |
| if (r0 != 1) {
0x0017719c bne 0x177124 | goto label_2;
| }
0x001771a0 ldr r3, [r8, 4] | r3 = *((r8 + 4));
0x001771a4 mov r0, 0 | r0 = 0;
0x001771a8 ldr r1, [r3] | r1 = *(r3);
0x001771ac bl 0x18207c | r0 = i2s_ASN1_INTEGER ();
0x001771b0 subs sl, r0, 0 | sl = r0 - 0;
| if (sl == r0) {
0x001771b4 beq 0x177124 | goto label_2;
| }
0x001771b8 ldr r3, [pc, 0xb4] | r3 = *(0x177270);
0x001771bc ldr r1, [pc, 0xb4] | r1 = *(0x177274);
0x001771c0 ldr sb, [pc, 0xb4] | sb = *(0x0017727c);
0x001771c4 add r3, pc, r3 | r3 = pc + r3;
0x001771c8 add r2, r5, 2 | r2 = r5 + 2;
0x001771cc add r1, pc, r1 | r1 = pc + r1;
0x001771d0 str sl, [sp] | *(sp) = sl;
0x001771d4 mov r0, r4 | r0 = r4;
0x001771d8 add sb, pc, sb | sb = pc + sb;
0x001771dc bl 0x6bbc4 | BIO_printf ()
0x001771e0 mov r2, 0x59 | r2 = 0x59;
0x001771e4 mov r1, sb | r1 = sb;
0x001771e8 mov r0, sl | r0 = sl;
0x001771ec bl 0x11842c | CRYPTO_free ();
0x001771f0 ldr r3, [r8, 4] | r3 = *((r8 + 4));
0x001771f4 mov r0, 0 | r0 = 0;
0x001771f8 ldr r1, [r3, 4] | r1 = *(0x177274);
0x001771fc bl 0x18207c | r0 = i2s_ASN1_INTEGER ();
0x00177200 subs r8, r0, 0 | r8 = r0 - 0;
| if (r8 == r0) {
0x00177204 beq 0x177124 | goto label_2;
| }
0x00177208 ldr r1, [pc, 0x70] | r1 = *(0x17727c);
0x0017720c mov r2, r8 | r2 = r8;
0x00177210 add r1, pc, r1 | r1 = pc + r1;
0x00177214 mov r0, r4 | r0 = r4;
0x00177218 bl 0x6bbc4 | BIO_printf ()
0x0017721c mov r2, 0x5d | r2 = 0x5d;
0x00177220 mov r1, sb | r1 = sb;
0x00177224 b 0x177160 | goto label_3;
| label_7:
0x00177228 ldr r3, [pc, 0x54] | r3 = *(0x177280);
0x0017722c ldr fp, [pc, 0x54] | fp = *(0x00177288);
0x00177230 add r3, pc, r3 | r3 = pc + r3;
0x00177234 str r3, [sp, 8] | var_8h = r3;
0x00177238 ldr r3, [pc, 0x4c] | r3 = *(0x177288);
0x0017723c mov r7, 0 | r7 = 0;
0x00177240 add r3, pc, r3 | r3 = pc + r3;
0x00177244 str r3, [sp, 0xc] | var_ch = r3;
0x00177248 add fp, pc, fp |
0x0017724c b 0x17716c | goto label_4;
| label_6:
0x00177250 ldr r1, [pc, 0x38] | r1 = *(0x17728c);
0x00177254 mov r3, r7 | r3 = r7;
0x00177258 add r2, r5, 2 | r2 = r5 + 2;
0x0017725c add r1, pc, r1 | r1 = pc + r1;
0x00177260 mov r0, r4 | r0 = r4;
0x00177264 bl 0x6bbc4 | BIO_printf ()
0x00177268 b 0x1770e4 | goto label_0;
| }
; 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/libcrypto.so.1.1 @ 0x179620 */
| #include <stdint.h>
|
; (fcn) fcn.00179620 () | void fcn_00179620 (int32_t arg_0h, int32_t arg_4h, int32_t arg1, int32_t arg2) {
| int32_t var_0h_2;
| int32_t var_8h;
| int32_t var_ch_2;
| int32_t var_10h_2;
| int32_t var_14h;
| r0 = arg1;
| r1 = arg2;
0x00179620 ldr r3, [pc, 0x240] | r3 = *(0x179864);
0x00179624 push {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00179628 add r3, pc, r3 | r3 = pc + r3;
0x0017962c sub sp, sp, 0x1c |
0x00179630 str r3, [sp, 0xc] | var_ch_2 = r3;
0x00179634 ldr r3, [pc, 0x230] | r3 = *(0x179868);
0x00179638 mov r4, r0 | r4 = r0;
0x0017963c add r3, pc, r3 | r3 = pc + r3;
0x00179640 mov sl, r1 | sl = r1;
0x00179644 mov sb, r2 | sb = r2;
0x00179648 mov r7, 0 | r7 = 0;
0x0017964c str r3, [sp, 0x10] | var_10h_2 = r3;
| do {
0x00179650 mov r0, sl | r0 = sl;
0x00179654 bl 0x154518 | r0 = OPENSSL_sk_num ();
0x00179658 cmp r7, r0 |
| if (r7 >= r0) {
0x0017965c blt 0x179668 |
0x00179660 add sp, sp, 0x1c |
0x00179664 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| }
0x00179668 mov r1, r7 | r1 = r7;
0x0017966c mov r0, sl | r0 = sl;
0x00179670 bl 0x154528 | r0 = OPENSSL_sk_value ();
0x00179674 mov r6, r0 | r6 = r0;
0x00179678 ldr r0, [r0] | r0 = *(r0);
0x0017967c bl 0x120878 | r0 = OBJ_obj2nid ();
0x00179680 cmp r0, 0xa4 |
| if (r0 != 0xa4) {
0x00179684 beq 0x1796d0 |
0x00179688 cmp r0, 0xa5 |
0x0017968c add r8, sb, 2 | r8 = sb + 2;
| if (r0 == 0xa5) {
0x00179690 beq 0x1796fc | goto label_4;
| }
0x00179694 ldr r3, [pc, 0x1d4] | r3 = *(0x17986c);
0x00179698 ldr r1, [pc, 0x1d4] | r1 = *(0x179870);
0x0017969c add r3, pc, r3 | r3 = pc + r3;
0x001796a0 mov r2, r8 | r2 = r8;
0x001796a4 add r1, pc, r1 | r1 = pc + r1;
0x001796a8 mov r0, r4 | r0 = r4;
0x001796ac bl 0x6bbc4 | BIO_printf ()
0x001796b0 ldr r1, [r6] | r1 = *(r6);
0x001796b4 mov r0, r4 | r0 = r4;
0x001796b8 bl 0x55f58 | i2a_ASN1_OBJECT ();
0x001796bc ldr r1, [pc, 0x1b4] | r1 = *(0x179874);
0x001796c0 mov r0, r4 | r0 = r4;
0x001796c4 add r1, pc, r1 | r1 = pc + r1;
0x001796c8 bl 0x6e860 | BIO_puts ();
0x001796cc b 0x1796f4 |
| } else {
0x001796d0 ldr r3, [r6, 4] | r3 = *((r6 + 4));
0x001796d4 ldr r1, [pc, 0x1a0] | r1 = *(0x179878);
0x001796d8 ldr r3, [r3, 8] | r3 = *((r3 + 8));
0x001796dc mov r2, sb | r2 = sb;
0x001796e0 str r3, [sp] | *(sp) = r3;
0x001796e4 ldr r3, [sp, 0xc] | r3 = var_ch_2;
0x001796e8 add r1, pc, r1 | r1 = pc + r1;
| label_1:
0x001796ec mov r0, r4 | r0 = r4;
0x001796f0 bl 0x6bbc4 | BIO_printf ()
| }
| label_0:
0x001796f4 add r7, r7, 1 | r7++;
0x001796f8 b 0x179650 |
| } while (1);
| label_4:
0x001796fc ldr r5, [pc, 0x17c] | r5 = *(0x17987c);
0x00179700 ldr r1, [pc, 0x17c] | r1 = *(0x179880);
0x00179704 add r5, pc, r5 | r5 = pc + r5;
0x00179708 mov r3, r5 | r3 = r5;
0x0017970c mov r2, sb | r2 = sb;
0x00179710 add r1, pc, r1 | r1 = pc + r1;
0x00179714 mov r0, r4 | r0 = r4;
0x00179718 bl 0x6bbc4 | BIO_printf ()
0x0017971c ldr fp, [r6, 4] | fp = *((r6 + 4));
0x00179720 ldr r6, [fp] | r6 = *(fp);
0x00179724 cmp r6, 0 |
| if (r6 != 0) {
0x00179728 beq 0x1797b4 |
0x0017972c ldr r3, [r6] | r3 = *(r6);
0x00179730 ldr r1, [pc, 0x150] | r1 = "_";
0x00179734 ldr r3, [r3, 8] | r3 = *((r3 + 8));
0x00179738 mov r2, r8 | r2 = r8;
0x0017973c str r3, [sp] | *(sp) = r3;
0x00179740 add r1, pc, r1 | r1 = pc + r1;
0x00179744 mov r3, r5 | r3 = r5;
0x00179748 mov r0, r4 | r0 = r4;
0x0017974c bl 0x6bbc4 | BIO_printf ()
0x00179750 ldr r0, [r6, 4] | r0 = *((r6 + 4));
0x00179754 bl 0x154518 | r0 = OPENSSL_sk_num ();
0x00179758 cmp r0, 1 |
| if (r0 <= 1) {
0x0017975c ldrgt r5, [pc, 0x128] | r5 = *(0x0017988c);
| }
| if (r0 <= 1) {
0x00179760 addgt r5, pc, r5 | r5 = pc + r5;
| }
0x00179764 ldr r3, [pc, 0x124] | r3 = *(0x17988c);
0x00179768 ldr r1, [pc, 0x124] | r1 = *(0x179890);
0x0017976c str r5, [sp] | *(sp) = r5;
0x00179770 add r3, pc, r3 | r3 = pc + r3;
0x00179774 mov r2, r8 | r2 = r8;
0x00179778 add r1, pc, r1 | r1 = pc + r1;
0x0017977c mov r0, r4 | r0 = r4;
0x00179780 bl 0x6bbc4 | BIO_printf ()
0x00179784 ldr r3, [pc, 0x10c] | r3 = *(0x179894);
0x00179788 mov r5, 0 | r5 = 0;
0x0017978c add r3, pc, r3 | r3 = pc + r3;
0x00179790 str r3, [sp, 8] | var_8h = r3;
| label_2:
0x00179794 ldr r0, [r6, 4] | r0 = *((r6 + 4));
0x00179798 bl 0x154518 | r0 = OPENSSL_sk_num ();
0x0017979c cmp r5, r0 |
| if (r5 < r0) {
0x001797a0 blt 0x1797e0 | goto label_5;
| }
0x001797a4 ldr r1, [pc, 0xf0] | r1 = *(0x179898);
0x001797a8 mov r0, r4 | r0 = r4;
0x001797ac add r1, pc, r1 | r1 = pc + r1;
0x001797b0 bl 0x6e860 | BIO_puts ();
| }
0x001797b4 ldr r3, [fp, 4] | r3 = *(arg_4h);
0x001797b8 cmp r3, 0 |
| if (r3 == 0) {
0x001797bc beq 0x1796f4 | goto label_0;
| }
0x001797c0 ldr r3, [r3, 8] | r3 = *((r3 + 8));
0x001797c4 ldr r1, [pc, 0xd4] | r1 = *(0x17989c);
0x001797c8 str r3, [sp] | *(sp) = r3;
0x001797cc ldr r3, [pc, 0xd0] | r3 = *(0x1798a0);
0x001797d0 mov r2, r8 | r2 = r8;
0x001797d4 add r3, pc, r3 | r3 = pc + r3;
0x001797d8 add r1, pc, r1 | r1 = pc + r1;
0x001797dc b 0x1796ec | goto label_1;
| label_5:
0x001797e0 mov r1, r5 | r1 = r5;
0x001797e4 ldr r0, [r6, 4] | r0 = *((r6 + 4));
0x001797e8 bl 0x154528 | OPENSSL_sk_value ();
0x001797ec cmp r5, 0 |
0x001797f0 mov r3, r0 | r3 = r0;
| if (r5 != 0) {
0x001797f4 beq 0x17980c |
0x001797f8 str r0, [sp, 0x14] | var_14h = r0;
0x001797fc ldr r1, [sp, 8] | r1 = var_8h;
0x00179800 mov r0, r4 | r0 = r4;
0x00179804 bl 0x6e860 | BIO_puts ();
0x00179808 ldr r3, [sp, 0x14] | r3 = var_14h;
| }
0x0017980c cmp r3, 0 |
| if (r3 == 0) {
0x00179810 bne 0x17982c |
0x00179814 ldr r1, [pc, 0x8c] | r1 = *(0x1798a4);
0x00179818 mov r0, r4 | r0 = r4;
0x0017981c add r1, pc, r1 | r1 = pc + r1;
0x00179820 bl 0x6e860 | BIO_puts ();
| label_3:
0x00179824 add r5, r5, 1 | r5++;
0x00179828 b 0x179794 | goto label_2;
| }
0x0017982c mov r1, r3 | r1 = r3;
0x00179830 mov r0, 0 | r0 = 0;
0x00179834 bl 0x18207c | r0 = i2s_ASN1_INTEGER ();
0x00179838 subs r3, r0, 0 | r3 = r0 - 0;
| if (r3 == r0) {
0x0017983c beq 0x1796f4 | goto label_0;
| }
0x00179840 mov r1, r3 | r1 = r3;
0x00179844 mov r0, r4 | r0 = r4;
0x00179848 str r3, [sp, 0x14] | var_14h = r3;
0x0017984c bl 0x6e860 | BIO_puts ();
0x00179850 ldr r3, [sp, 0x14] | r3 = var_14h;
0x00179854 ldr r2, [pc, 0x50] | r2 = "_";
0x00179858 ldr r1, [sp, 0x10] | r1 = var_10h_2;
0x0017985c mov r0, r3 | r0 = r3;
0x00179860 bl 0x11842c | CRYPTO_free ();
0x00179864 b 0x179824 | goto label_3;
| }
; 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/libcrypto.so.1.1 @ 0x17a9e8 */
| #include <stdint.h>
|
; (fcn) fcn.0017a9e8 () | void fcn_0017a9e8 (int32_t arg1) {
| int32_t var_8h;
| int32_t var_10h;
| r0 = arg1;
0x0017a9e8 push {r0, r1, r2, r3, r4, r5, r6, r7, r8, lr} |
0x0017a9ec ldr r4, [pc, 0xb8] |
0x0017a9f0 mov r7, r2 | r7 = r2;
0x0017a9f4 mov r2, r3 | r2 = r3;
0x0017a9f8 add ip, r2, 2 |
0x0017a9fc ldr r3, [pc, 0xac] | r3 = *(0x17aaac);
0x0017aa00 stm sp, {r1, ip} | *(sp) = r1;
| *((sp + 4)) = ip;
0x0017aa04 ldr r1, [pc, 0xa8] | r1 = *(0x17aab0);
0x0017aa08 add r3, pc, r3 | r3 = pc + r3;
0x0017aa0c str r3, [sp, 8] | var_8h = r3;
0x0017aa10 add r1, pc, r1 | r1 = pc + r1;
0x0017aa14 mov r5, r0 | r5 = r0;
0x0017aa18 bl 0x6bbc4 | BIO_printf ()
0x0017aa1c ldr r8, [pc, 0x94] | r8 = *(0x17aab4);
0x0017aa20 add r4, pc, r4 | r4 = pc + r4;
0x0017aa24 add r4, r4, 0xc | r4 = 0x17aab4;
0x0017aa28 mov r6, 1 | r6 = 1;
0x0017aa2c add r8, pc, r8 | r8 = pc + r8;
| do {
0x0017aa30 ldr r3, [r4, -8] | r3 = *((r4 - 8));
0x0017aa34 cmp r3, 0 |
| if (r3 == 0) {
0x0017aa38 bne 0x17aa60 |
0x0017aa3c cmp r6, 0 |
| if (r6 == 0) {
0x0017aa40 beq 0x17aaa0 | goto label_1;
| }
0x0017aa44 ldr r1, [pc, 0x70] | r1 = *(0x17aab8);
0x0017aa48 add r1, pc, r1 | r1 = pc + r1;
| label_0:
0x0017aa4c mov r0, r5 | r0 = r5;
0x0017aa50 bl 0x6e860 | BIO_puts ();
0x0017aa54 mov r0, 1 | r0 = 1;
0x0017aa58 add sp, sp, 0x10 |
0x0017aa5c pop {r4, r5, r6, r7, r8, pc} |
| }
0x0017aa60 ldr r1, [r4, -0xc] | r1 = *((r4 - 0xc));
0x0017aa64 mov r0, r7 | r0 = r7;
0x0017aa68 bl 0x53a14 | r0 = ASN1_BIT_STRING_get_bit ();
0x0017aa6c cmp r0, 0 |
| if (r0 != 0) {
0x0017aa70 beq 0x17aa98 |
0x0017aa74 cmp r6, 0 |
| if (r6 == 0) {
0x0017aa78 bne 0x17aa88 |
0x0017aa7c mov r1, r8 | r1 = r8;
0x0017aa80 mov r0, r5 | r0 = r5;
0x0017aa84 bl 0x6e860 | BIO_puts ();
| }
0x0017aa88 ldr r1, [r4, -8] | r1 = *((r4 - 8));
0x0017aa8c mov r0, r5 | r0 = r5;
0x0017aa90 bl 0x6e860 | BIO_puts ();
0x0017aa94 mov r6, 0 | r6 = 0;
| }
0x0017aa98 add r4, r4, 0xc | r4 += 0xc;
0x0017aa9c b 0x17aa30 |
| } while (1);
| label_1:
0x0017aaa0 ldr r1, [pc, 0x18] | r1 = *(0x17aabc);
0x0017aaa4 add r1, pc, r1 | r1 = pc + r1;
0x0017aaa8 b 0x17aa4c | goto label_0;
| }
; 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/libcrypto.so.1.1 @ 0x17aac4 */
| #include <stdint.h>
|
; (fcn) fcn.0017aac4 () | void fcn_0017aac4 (int32_t arg1, int32_t arg2) {
| r0 = arg1;
| r1 = arg2;
0x0017aac4 push {r4, r5, r6, r7, r8, sb, sl, lr} |
0x0017aac8 ldr r8, [pc, 0x78] | r8 = *(0x17ab44);
0x0017aacc ldr sb, [pc, 0x78] | sb = *(0x17ab48);
0x0017aad0 ldr sl, [pc, 0x78] | sl = *(0x17ab4c);
0x0017aad4 mov r5, r0 | r5 = r0;
0x0017aad8 mov r6, r1 | r6 = r1;
0x0017aadc mov r7, r2 | r7 = r2;
0x0017aae0 mov r4, 0 | r4 = 0;
0x0017aae4 add r8, pc, r8 | r8 = pc + r8;
0x0017aae8 add sb, pc, sb | sb = pc + sb;
0x0017aaec add sl, pc, sl | sl = pc + sl;
| do {
0x0017aaf0 mov r0, r6 | r0 = r6;
0x0017aaf4 bl 0x154518 | r0 = OPENSSL_sk_num ();
0x0017aaf8 cmp r4, r0 |
| if (r4 >= r0) {
0x0017aafc blt 0x17ab08 |
0x0017ab00 mov r0, 1 | r0 = 1;
0x0017ab04 pop {r4, r5, r6, r7, r8, sb, sl, pc} |
| }
0x0017ab08 mov r3, r8 | r3 = r8;
0x0017ab0c add r2, r7, 2 | r2 = r7 + 2;
0x0017ab10 mov r1, sb | r1 = sb;
0x0017ab14 mov r0, r5 | r0 = r5;
0x0017ab18 bl 0x6bbc4 | BIO_printf ()
0x0017ab1c mov r1, r4 | r1 = r4;
0x0017ab20 mov r0, r6 | r0 = r6;
0x0017ab24 bl 0x154528 | OPENSSL_sk_value ();
0x0017ab28 add r4, r4, 1 | r4++;
0x0017ab2c mov r1, r0 | r1 = r0;
0x0017ab30 mov r0, r5 | r0 = r5;
0x0017ab34 bl 0x176104 | GENERAL_NAME_print ();
0x0017ab38 mov r1, sl | r1 = sl;
0x0017ab3c mov r0, r5 | r0 = r5;
0x0017ab40 bl 0x6e860 | BIO_puts ();
0x0017ab44 b 0x17aaf0 |
| } while (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/libcrypto.so.1.1 @ 0x17acc0 */
| #include <stdint.h>
|
; (fcn) fcn.0017acc0 () | void fcn_0017acc0 (int32_t arg1, int32_t arg2) {
| int32_t var_0h;
| int32_t var_4h;
| int32_t var_14h;
| int32_t var_20h;
| r0 = arg1;
| r1 = arg2;
0x0017acc0 ldr r3, [r1] | r3 = *(r1);
0x0017acc4 push {r4, r5, r6, lr} |
0x0017acc8 cmp r3, 0 |
0x0017accc sub sp, sp, 0x20 |
0x0017acd0 mov r5, r0 | r5 = r0;
0x0017acd4 mov r6, r1 | r6 = r1;
0x0017acd8 mov r4, r2 | r4 = r2;
| if (r3 != 0) {
0x0017acdc bne 0x17ad10 | goto label_0;
| }
0x0017ace0 ldr r3, [pc, 0x7c] | r3 = *(0x17ad60);
0x0017ace4 ldr r1, [pc, 0x7c] | r1 = *(0x17ad64);
0x0017ace8 add r3, pc, r3 | r3 = pc + r3;
0x0017acec add r1, pc, r1 | r1 = pc + r1;
0x0017acf0 bl 0x6bbc4 | BIO_printf ()
0x0017acf4 mov r2, r4 | r2 = r4;
0x0017acf8 ldr r1, [r6, 4] | r1 = *((r6 + 4));
0x0017acfc mov r0, r5 | r0 = r5;
0x0017ad00 bl 0x17aac4 | fcn_0017aac4 (r0, r1);
| do {
0x0017ad04 mov r0, 1 | r0 = 1;
0x0017ad08 add sp, sp, 0x20 |
0x0017ad0c pop {r4, r5, r6, pc} |
| label_0:
0x0017ad10 ldr r3, [r1, 4] | r3 = *((r1 + 4));
0x0017ad14 add r6, sp, 0x20 | r6 += var_20h;
0x0017ad18 str r3, [r6, -0x14]! | *((r6 -= 0x14)) = r3;
0x0017ad1c ldr r3, [pc, 0x48] | r3 = *(0x17ad68);
0x0017ad20 ldr r1, [pc, 0x48] | r1 = *(0x17ad6c);
0x0017ad24 add r4, r2, 2 | r4 = r2 + 2;
0x0017ad28 add r3, pc, r3 | r3 = pc + r3;
0x0017ad2c str r3, [sp, 4] | var_4h = r3;
0x0017ad30 str r4, [sp] | *(sp) = r4;
0x0017ad34 add r1, pc, r1 | r1 = pc + r1;
0x0017ad38 bl 0x6bbc4 | BIO_printf ()
0x0017ad3c mov r1, r6 | r1 = r6;
0x0017ad40 ldr r3, [pc, 0x2c] | r3 = *(0x17ad70);
0x0017ad44 mov r2, 0 | r2 = 0;
0x0017ad48 mov r0, r5 | r0 = r5;
0x0017ad4c bl 0x57980 | X509_NAME_print_ex ();
0x0017ad50 ldr r1, [pc, 0x20] | r1 = *(0x17ad74);
0x0017ad54 mov r0, r5 | r0 = r5;
0x0017ad58 add r1, pc, r1 | r1 = pc + r1;
0x0017ad5c bl 0x6e860 | BIO_puts ();
0x0017ad60 b 0x17ad04 |
| } while (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/libcrypto.so.1.1 @ 0x17ce68 */
| #include <stdint.h>
|
; (fcn) fcn.0017ce68 () | void fcn_0017ce68 (int32_t arg1, int32_t arg2) {
| int32_t var_0h;
| int32_t var_4h;
| int32_t var_8h;
| int32_t var_ch;
| int32_t var_10h;
| int32_t var_14h;
| int32_t var_18h;
| int32_t var_1ch;
| int32_t var_24h;
| r0 = arg1;
| r1 = arg2;
0x0017ce68 push {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0017ce6c sub sp, sp, 0x24 |
0x0017ce70 mov r7, r0 | r7 = r0;
0x0017ce74 mov r5, r1 | r5 = r1;
0x0017ce78 mov r8, r2 | r8 = r2;
0x0017ce7c mov r4, r3 | r4 = r3;
0x0017ce80 bl 0x154518 | r0 = OPENSSL_sk_num ();
0x0017ce84 cmp r0, 0 |
| if (r0 > 0) {
0x0017ce88 ble 0x17ceac |
0x0017ce8c ldr r3, [pc, 0x1a4] | r3 = *(0x17d034);
0x0017ce90 ldr r1, [pc, 0x1a4] | r1 = *(0x17d038);
0x0017ce94 str r4, [sp] | *(sp) = r4;
0x0017ce98 add r3, pc, r3 | r3 = pc + r3;
0x0017ce9c mov r2, r8 | r2 = r8;
0x0017cea0 add r1, pc, r1 | r1 = pc + r1;
0x0017cea4 mov r0, r5 | r0 = r5;
0x0017cea8 bl 0x6bbc4 | BIO_printf ()
| }
0x0017ceac ldr r3, [pc, 0x18c] | r3 = *(0x17d03c);
0x0017ceb0 mov r6, 0 | r6 = 0;
0x0017ceb4 add r3, pc, r3 | r3 = pc + r3;
0x0017ceb8 str r3, [sp, 0x18] | var_18h = r3;
0x0017cebc ldr r3, [pc, 0x180] | r3 = *(0x17d040);
0x0017cec0 add r3, pc, r3 | r3 = pc + r3;
0x0017cec4 str r3, [sp, 0x1c] | var_1ch = r3;
| do {
0x0017cec8 mov r0, r7 | r0 = r7;
0x0017cecc bl 0x154518 | r0 = OPENSSL_sk_num ();
0x0017ced0 cmp r6, r0 |
| if (r6 >= r0) {
0x0017ced4 blt 0x17cee4 |
0x0017ced8 mov r0, 1 | r0 = 1;
0x0017cedc add sp, sp, 0x24 |
0x0017cee0 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| }
0x0017cee4 mov r1, r6 | r1 = r6;
0x0017cee8 mov r0, r7 | r0 = r7;
0x0017ceec bl 0x154528 | OPENSSL_sk_value ();
0x0017cef0 ldr r1, [pc, 0x150] | r1 = *(0x17d044);
0x0017cef4 ldr r3, [sp, 0x18] | r3 = var_18h;
0x0017cef8 add r1, pc, r1 | r1 = pc + r1;
0x0017cefc add r2, r8, 2 | r2 = r8 + 2;
0x0017cf00 mov r4, r0 | r4 = r0;
0x0017cf04 mov r0, r5 | r0 = r5;
0x0017cf08 bl 0x6bbc4 | BIO_printf ()
0x0017cf0c ldr r1, [r4] | r1 = *(r4);
0x0017cf10 ldr r3, [r1] | r3 = *(0x17d044);
0x0017cf14 cmp r3, 7 |
| if (r3 != 7) {
0x0017cf18 bne 0x17d02c | goto label_1;
| }
0x0017cf1c ldr r3, [r1, 4] | r3 = *((r1 + 4));
0x0017cf20 ldr r1, [pc, 0x124] | r1 = *(0x17d048);
0x0017cf24 ldr sl, [r3] | sl = *(r3);
0x0017cf28 add r1, pc, r1 | r1 = pc + r1;
0x0017cf2c mov r0, r5 | r0 = r5;
0x0017cf30 ldr r4, [r3, 8] | r4 = *((r3 + 8));
0x0017cf34 bl 0x6e860 | BIO_puts ();
0x0017cf38 cmp sl, 8 |
| if (sl != 8) {
0x0017cf3c bne 0x17cfa0 | goto label_2;
| }
0x0017cf40 ldrb r1, [r4, 7] | r1 = *((r4 + 7));
0x0017cf44 ldrb r3, [r4, 1] | r3 = *((r4 + 1));
0x0017cf48 ldrb r2, [r4] | r2 = *(r4);
0x0017cf4c str r1, [sp, 0x14] | var_14h = r1;
0x0017cf50 ldrb r1, [r4, 6] | r1 = *((r4 + 6));
0x0017cf54 mov r0, r5 | r0 = r5;
0x0017cf58 str r1, [sp, 0x10] | var_10h = r1;
0x0017cf5c ldrb r1, [r4, 5] | r1 = *((r4 + 5));
0x0017cf60 str r1, [sp, 0xc] | var_ch = r1;
0x0017cf64 ldrb r1, [r4, 4] | r1 = *((r4 + 4));
0x0017cf68 str r1, [sp, 8] | var_8h = r1;
0x0017cf6c ldrb r1, [r4, 3] | r1 = *((r4 + 3));
0x0017cf70 str r1, [sp, 4] | var_4h = r1;
0x0017cf74 ldrb r1, [r4, 2] | r1 = *((r4 + 2));
0x0017cf78 str r1, [sp] | *(sp) = r1;
0x0017cf7c ldr r1, [pc, 0xcc] | r1 = *(0x17d04c);
0x0017cf80 add r1, pc, r1 | r1 = pc + r1;
0x0017cf84 bl 0x6bbc4 | BIO_printf ()
| label_0:
0x0017cf88 ldr r1, [pc, 0xc4] | r1 = *(0x17d050);
0x0017cf8c mov r0, r5 | r0 = r5;
0x0017cf90 add r1, pc, r1 | r1 = pc + r1;
0x0017cf94 bl 0x6e860 | BIO_puts ();
0x0017cf98 add r6, r6, 1 | r6++;
0x0017cf9c b 0x17cec8 |
| } while (1);
| label_2:
0x0017cfa0 cmp sl, 0x20 |
| if (sl != 0x20) {
0x0017cfa4 bne 0x17d018 | goto label_3;
| }
0x0017cfa8 ldr sl, [pc, 0xa8] | sl = *(0x17d054);
0x0017cfac ldr fp, [pc, 0xa8] | fp = *(0x17d058);
0x0017cfb0 mov sb, 0 | sb = 0;
0x0017cfb4 add sl, pc, sl | sl = pc + sl;
0x0017cfb8 add fp, pc, fp |
| do {
0x0017cfbc ldrb r1, [r4, 1] | r1 = *((r4 + 1));
0x0017cfc0 ldrb r2, [r4] | r2 = *(r4);
0x0017cfc4 mov r0, r5 | r0 = r5;
0x0017cfc8 orr r2, r2, r1, lsl 8 | r2 |= (r1 << 8);
0x0017cfcc lsr r1, r2, 8 | r1 = r2 >> 8;
0x0017cfd0 orr r2, r1, r2, lsl 8 | r2 = r1 | (r2 << 8);
0x0017cfd4 lsl r2, r2, 0x10 | r2 <<= 0x10;
0x0017cfd8 mov r1, sl | r1 = sl;
0x0017cfdc lsr r2, r2, 0x10 | r2 >>= 0x10;
0x0017cfe0 bl 0x6bbc4 | BIO_printf ()
0x0017cfe4 cmp sb, 7 |
0x0017cfe8 add r4, r4, 2 | r4 += 2;
| if (sb != 7) {
0x0017cfec moveq r1, fp | r1 = fp;
| }
| if (sb != 7) {
0x0017cff0 beq 0x17d000 |
0x0017cff4 cmp sb, 0xf |
| if (sb == 0xf) {
0x0017cff8 beq 0x17d008 | goto label_4;
| }
0x0017cffc ldr r1, [sp, 0x1c] | r1 = var_1ch;
| }
0x0017d000 mov r0, r5 | r0 = r5;
0x0017d004 bl 0x6e860 | BIO_puts ();
| label_4:
0x0017d008 add sb, sb, 1 | sb++;
0x0017d00c cmp sb, 0x10 |
0x0017d010 bne 0x17cfbc |
| } while (sb != 0x10);
0x0017d014 b 0x17cf88 | goto label_0;
| label_3:
0x0017d018 ldr r1, [pc, 0x40] | r1 = *(0x17d05c);
0x0017d01c mov r0, r5 | r0 = r5;
0x0017d020 add r1, pc, r1 | r1 = pc + r1;
0x0017d024 bl 0x6bbc4 | BIO_printf ()
0x0017d028 b 0x17cf88 | goto label_0;
| label_1:
0x0017d02c mov r0, r5 | r0 = r5;
0x0017d030 bl 0x176104 | GENERAL_NAME_print ();
0x0017d034 b 0x17cf88 | goto label_0;
| }
; 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/libcrypto.so.1.1 @ 0x17e73c */
| #include <stdint.h>
|
; (fcn) fcn.0017e73c () | void fcn_0017e73c (int32_t arg_0h) {
| if (? != ?) {
0x0017e73c beq 0x17e75c |
0x0017e740 ldr r1, [pc, 0x48] | r1 = *(0x17e78c);
0x0017e744 str r3, [sp] | *(sp) = r3;
0x0017e748 mov r2, r5 | r2 = r5;
0x0017e74c mov r3, r7 | r3 = r7;
0x0017e750 add r1, pc, r1 | r1 = pc + r1;
0x0017e754 mov r0, r4 | r0 = r4;
0x0017e758 bl 0x6bbc4 | BIO_printf ()
| }
0x0017e75c mov r0, 1 | r0 = 1;
0x0017e760 add sp, sp, 8 |
0x0017e764 pop {r4, r5, r6, r7, r8, pc} |
| }
; 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/libcrypto.so.1.1 @ 0x17ef80 */
| #include <stdint.h>
|
; (fcn) fcn.0017ef80 () | void fcn_0017ef80 (int32_t arg_8h, int32_t arg_ch, int32_t arg1) {
| r0 = arg1;
0x0017ef80 and r3, r3, 0xf0000 | r3 &= 0xf0000;
0x0017ef84 push {r4, lr} |
0x0017ef88 ldr ip, [sp, 8] | ip = *(arg_8h);
0x0017ef8c cmp r3, 0x10000 |
0x0017ef90 ldr r4, [sp, 0xc] | r4 = *(arg_ch);
| if (r3 == 0x10000) {
0x0017ef94 beq 0x17efcc | goto label_1;
| }
| if (r3 > 0x10000) {
0x0017ef98 bhi 0x17efb0 | goto label_2;
| }
0x0017ef9c cmp r3, 0 |
| if (r3 != 0) {
0x0017efa0 moveq r4, r3 | r4 = r3;
| }
| if (r3 == 0) {
0x0017efa4 beq 0x17efec | goto label_3;
| }
| do {
| label_0:
0x0017efa8 mov r4, 1 | r4 = 1;
0x0017efac b 0x17efec | goto label_3;
| label_2:
0x0017efb0 cmp r3, 0x20000 |
| if (r3 == 0x20000) {
0x0017efb4 beq 0x17f010 | goto label_4;
| }
0x0017efb8 cmp r3, 0x30000 |
0x0017efbc bne 0x17efa8 |
| } while (r3 != 0x30000);
0x0017efc0 mov r3, ip | r3 = ip;
0x0017efc4 pop {r4, lr} |
0x0017efc8 b 0x6a508 | void (*0x6a508)() ();
| label_1:
0x0017efcc cmp r4, 0 |
| if (r4 != 0) {
0x0017efd0 beq 0x17eff4 |
0x0017efd4 ldr r3, [pc, 0x48] | r3 = *(0x17f020);
0x0017efd8 ldr r1, [pc, 0x48] | r1 = "_";
0x0017efdc add r3, pc, r3 | r3 = pc + r3;
0x0017efe0 mov r2, ip | r2 = ip;
0x0017efe4 add r1, pc, r1 | r1 = pc + r1;
0x0017efe8 bl 0x6bbc4 | BIO_printf ()
| label_3:
0x0017efec mov r0, r4 | r0 = r4;
0x0017eff0 pop {r4, pc} |
| }
0x0017eff4 ldr r3, [pc, 0x30] | r3 = *(0x17f028);
0x0017eff8 ldr r1, [pc, 0x30] | r1 = "_";
0x0017effc add r3, pc, r3 | r3 = pc + r3;
0x0017f000 mov r2, ip | r2 = ip;
0x0017f004 add r1, pc, r1 | r1 = pc + r1;
0x0017f008 bl 0x6bbc4 | BIO_printf ()
0x0017f00c b 0x17efa8 | goto label_0;
| label_4:
0x0017f010 mvn r3, 0 | r3 = ~0;
0x0017f014 str r3, [sp, 8] | *(arg_8h) = r3;
0x0017f018 mov r3, ip | r3 = ip;
0x0017f01c pop {r4, lr} |
0x0017f020 b 0x5c4dc | return void (*0x5c4dc)() ();
| }
; 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/libcrypto.so.1.1 @ 0x61328 */
| #include <stdint.h>
|
; (fcn) sym.ASN1_BIT_STRING_name_print () | void ASN1_BIT_STRING_name_print (int32_t arg1, int32_t arg2) {
| r0 = arg1;
| r1 = arg2;
0x00061328 push {r4, r5, r6, r7, r8, lr} |
0x0006132c ldr r8, [pc, 0x90] | r8 = *(0x613c0);
0x00061330 mov r4, r2 | r4 = r2;
0x00061334 mov r7, r1 | r7 = r1;
0x00061338 mov r2, r3 | r2 = r3;
0x0006133c ldr r1, [pc, 0x84] | r1 = *(0x613c4);
0x00061340 ldr r3, [pc, 0x84] | r3 = *(0x613c8);
0x00061344 add r1, pc, r1 | r1 = pc + r1;
0x00061348 add r3, pc, r3 | r3 = pc + r3;
0x0006134c mov r5, r0 | r5 = r0;
0x00061350 bl 0x6bbc4 | BIO_printf ()
0x00061354 add r4, r4, 0xc | r4 += 0xc;
0x00061358 mov r6, 1 | r6 = 1;
0x0006135c add r8, pc, r8 | r8 = pc + r8;
| do {
0x00061360 ldr r3, [r4, -8] | r3 = *((r4 - 8));
0x00061364 cmp r3, 0 |
| if (r3 == 0) {
0x00061368 bne 0x61384 |
0x0006136c ldr r1, [pc, 0x5c] | r1 = *(0x613cc);
0x00061370 mov r0, r5 | r0 = r5;
0x00061374 add r1, pc, r1 | r1 = pc + r1;
0x00061378 bl 0x6e860 | BIO_puts ();
0x0006137c mov r0, 1 | r0 = 1;
0x00061380 pop {r4, r5, r6, r7, r8, pc} |
| }
0x00061384 ldr r1, [r4, -0xc] | r1 = *((r4 - 0xc));
0x00061388 mov r0, r7 | r0 = r7;
0x0006138c bl 0x53a14 | r0 = ASN1_BIT_STRING_get_bit ();
0x00061390 cmp r0, 0 |
| if (r0 != 0) {
0x00061394 beq 0x613bc |
0x00061398 cmp r6, 0 |
| if (r6 == 0) {
0x0006139c bne 0x613ac |
0x000613a0 mov r1, r8 | r1 = r8;
0x000613a4 mov r0, r5 | r0 = r5;
0x000613a8 bl 0x6e860 | BIO_puts ();
| }
0x000613ac ldr r1, [r4, -8] | r1 = *((r4 - 8));
0x000613b0 mov r0, r5 | r0 = r5;
0x000613b4 bl 0x6e860 | BIO_puts ();
0x000613b8 mov r6, 0 | r6 = 0;
| }
0x000613bc add r4, r4, 0xc | r4 += 0xc;
0x000613c0 b 0x61360 |
| } while (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/libcrypto.so.1.1 @ 0x58a40 */
| #include <stdint.h>
|
; (fcn) sym.ASN1_TIME_print () | void ASN1_TIME_print (int32_t arg1, int32_t arg2) {
| int32_t var_8h;
| int32_t var_ch;
| int32_t var_10h;
| int32_t var_14h;
| int32_t var_18h;
| int32_t var_24h;
| int32_t var_28h;
| int32_t var_2ch;
| int32_t var_30h;
| int32_t var_34h;
| int32_t var_38h;
| r0 = arg1;
| r1 = arg2;
0x00058a40 push {r4, r5, r6, r7, r8, sb, sl, lr} |
0x00058a44 sub sp, sp, 0x50 |
0x00058a48 mov r4, r0 | r4 = r0;
0x00058a4c add r0, sp, 0x24 | r0 += var_24h;
0x00058a50 mov r6, r1 | r6 = r1;
0x00058a54 bl 0x58000 | fcn_00058000 (r0, r1, r2, r3);
0x00058a58 subs r5, r0, 0 | r5 -= var_24h;
| if (r5 == var_24h) {
0x00058a5c beq 0x58bc4 | goto label_3;
| }
0x00058a60 ldr sl, [r6] | sl = *(r6);
0x00058a64 ldr sb, [r6, 8] | sb = *((r6 + 8));
0x00058a68 add r3, sb, sl | r3 = sb + sl;
0x00058a6c ldrb r5, [r3, -1] | r5 = *((r3 - 1));
0x00058a70 ldr r3, [r6, 4] | r3 = *((r6 + 4));
0x00058a74 cmp r3, 0x18 |
| if (r3 != 0x18) {
0x00058a78 bne 0x58b54 | goto label_4;
| }
0x00058a7c cmp sl, 0xf |
| if (sl <= 0xf) {
0x00058a80 ble 0x58b3c | goto label_5;
| }
0x00058a84 ldrb r3, [sb, 0xe] | r3 = *((sb + 0xe));
0x00058a88 cmp r3, 0x2e |
| if (r3 != 0x2e) {
0x00058a8c bne 0x58b3c | goto label_5;
| }
0x00058a90 add r8, sb, 0xe | r8 = sb + 0xe;
0x00058a94 mov r7, 0xf | r7 = 0xf;
| do {
0x00058a98 cmp sl, r7 |
0x00058a9c sub r6, r7, 0xe | r6 = r7 - 0xe;
| if (sl == r7) {
0x00058aa0 beq 0x58abc | goto label_6;
| }
0x00058aa4 ldrb r0, [sb, r7] | r0 = *((sb + r7));
0x00058aa8 mov r1, 4 | r1 = 4;
0x00058aac bl 0x9ecc0 | fcn_0009ecc0 (r0, r1);
0x00058ab0 add r7, r7, 1 | r7++;
0x00058ab4 cmp r0, 0 |
0x00058ab8 bne 0x58a98 |
| } while (r0 != 0);
| do {
| label_6:
0x00058abc ldr r2, [pc, 0x118] |
0x00058ac0 ldr r1, [sp, 0x38] | r1 = var_38h;
0x00058ac4 ldr r3, [sp, 0x34] | r3 = var_34h;
0x00058ac8 add r2, pc, r2 | r2 = pc + r2;
0x00058acc add r2, r2, 0xa8 | r2 = 0x58c80;
0x00058ad0 add r1, r1, 0x760 | r1 += 0x760;
0x00058ad4 cmp r5, 0x5a |
0x00058ad8 add r2, r2, r3, lsl 2 | r2 += (r3 << 2);
0x00058adc ldr ip, [sp, 0x2c] | ip = var_2ch;
0x00058ae0 ldr r3, [sp, 0x30] | r3 = var_30h;
0x00058ae4 ldr lr, [sp, 0x28] | lr = var_28h;
0x00058ae8 ldr r7, [sp, 0x24] | r7 = var_24h;
0x00058aec add r1, r1, 0xc | r1 += 0xc;
| if (r5 == 0x5a) {
0x00058af0 beq 0x58b48 | goto label_7;
| }
0x00058af4 ldr r0, [pc, 0xe4] | r0 = *(0x58bdc);
0x00058af8 add r0, pc, r0 | r0 = pc + r0;
| label_0:
0x00058afc str r1, [sp, 0x14] | var_14h = r1;
0x00058b00 ldr r1, [pc, 0xdc] | r1 = *(0x58be0);
0x00058b04 str r0, [sp, 0x18] | var_18h = r0;
0x00058b08 str r8, [sp, 0x10] | var_10h = r8;
0x00058b0c str r6, [sp, 0xc] | var_ch = r6;
0x00058b10 str r7, [sp, 8] | var_8h = r7;
0x00058b14 stm sp, {ip, lr} | *(sp) = ip;
| *((sp + 4)) = lr;
0x00058b18 add r1, pc, r1 | r1 = pc + r1;
0x00058b1c mov r0, r4 | r0 = r4;
0x00058b20 bl 0x6bbc4 | r0 = BIO_printf ()
| label_1:
0x00058b24 cmp r0, 0 |
| if (r0 > 0) {
0x00058b28 movle r5, 0 | r5 = 0;
| }
| if (r0 <= 0) {
0x00058b2c movgt r5, 1 | r5 = 1;
| }
| label_2:
0x00058b30 mov r0, r5 | r0 = r5;
0x00058b34 add sp, sp, 0x50 |
0x00058b38 pop {r4, r5, r6, r7, r8, sb, sl, pc} |
| label_5:
0x00058b3c mov r6, 0 | r6 = 0;
0x00058b40 mov r8, r6 | r8 = r6;
0x00058b44 b 0x58abc |
| } while (1);
| label_7:
0x00058b48 ldr r0, [pc, 0x98] | r0 = *(0x58be4);
0x00058b4c add r0, pc, r0 | r0 = pc + r0;
0x00058b50 b 0x58afc | goto label_0;
| label_4:
0x00058b54 ldr r2, [pc, 0x90] |
0x00058b58 ldr r1, [sp, 0x38] | r1 = var_38h;
0x00058b5c ldr r3, [sp, 0x34] | r3 = var_34h;
0x00058b60 add r2, pc, r2 | r2 = pc + r2;
0x00058b64 add r2, r2, 0xa8 | r2 = ASN1_TIME_normalize;
0x00058b68 add r1, r1, 0x760 | r1 += 0x760;
0x00058b6c cmp r5, 0x5a |
0x00058b70 add r2, r2, r3, lsl 2 | r2 += (r3 << 2);
0x00058b74 ldr ip, [sp, 0x2c] | ip = var_2ch;
0x00058b78 ldr r3, [sp, 0x30] | r3 = var_30h;
0x00058b7c ldr lr, [sp, 0x28] | lr = var_28h;
0x00058b80 ldr r6, [sp, 0x24] | r6 = var_24h;
0x00058b84 add r1, r1, 0xc | r1 += 0xc;
| if (r5 == 0x5a) {
0x00058b88 beq 0x58bb8 | goto label_8;
| }
0x00058b8c ldr r0, [pc, 0x5c] | r0 = *(0x58bec);
0x00058b90 add r0, pc, r0 | r0 = pc + r0;
| do {
0x00058b94 str r1, [sp, 0xc] | var_ch = r1;
0x00058b98 ldr r1, [pc, 0x54] | r1 = *(0x58bf0);
0x00058b9c str r0, [sp, 0x10] | var_10h = r0;
0x00058ba0 str r6, [sp, 8] | var_8h = r6;
0x00058ba4 stm sp, {ip, lr} | *(sp) = ip;
| *((sp + 4)) = lr;
0x00058ba8 add r1, pc, r1 | r1 = pc + r1;
0x00058bac mov r0, r4 | r0 = r4;
0x00058bb0 bl 0x6bbc4 | BIO_printf ()
0x00058bb4 b 0x58b24 | goto label_1;
| label_8:
0x00058bb8 ldr r0, [pc, 0x38] | r0 = *(0x58bf4);
0x00058bbc add r0, pc, r0 | r0 = pc + r0;
0x00058bc0 b 0x58b94 |
| } while (1);
| label_3:
0x00058bc4 ldr r1, [pc, 0x30] | r1 = *(0x58bf8);
0x00058bc8 mov r2, 0xe | r2 = 0xe;
0x00058bcc add r1, pc, r1 | r1 = pc + r1;
0x00058bd0 mov r0, r4 | r0 = r4;
0x00058bd4 bl 0x6e820 | BIO_write ();
0x00058bd8 b 0x58b30 | goto label_2;
| }
; 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/libcrypto.so.1.1 @ 0x61578 */
| #include <stdint.h>
|
; (fcn) sym.ASN1_bn_print () | void ASN1_bn_print (int32_t arg_4h, int32_t arg_38h, int32_t arg1, int32_t arg2) {
| int32_t var_8h;
| int32_t var_14h;
| r0 = arg1;
| r1 = arg2;
0x00061578 push {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0006157c subs r4, r2, 0 | r4 = r2 - 0;
0x00061580 sub sp, sp, 0x14 |
0x00061584 ldr fp, [sp, 0x38] | fp = *(arg_38h);
| if (r4 != r2) {
0x00061588 moveq r6, 1 | r6 = 1;
| }
| if (r4 == r2) {
0x0006158c beq 0x615f8 | goto label_1;
| }
0x00061590 mov r7, r0 | r7 = r0;
0x00061594 mov r0, r4 | r0 = r4;
0x00061598 mov sb, r1 | sb = r1;
0x0006159c bl 0x841e8 | r0 = BN_is_negative ();
0x000615a0 cmp r0, 0 |
| if (r0 != 0) {
0x000615a4 bne 0x61604 | goto label_2;
| }
0x000615a8 ldr sl, [pc, 0x174] | sl = *(0x61720);
0x000615ac add sl, pc, sl | sl = pc + sl;
| do {
0x000615b0 mov r2, 0x80 | r2 = 0x80;
0x000615b4 mov r1, fp | r1 = fp;
0x000615b8 mov r0, r7 | r0 = r7;
0x000615bc bl 0x6eb94 | r0 = BIO_indent ();
0x000615c0 subs r6, r0, 0 | r6 = r0 - 0;
| if (r6 != r0) {
0x000615c4 beq 0x615f8 |
0x000615c8 mov r0, r4 | r0 = r4;
0x000615cc bl 0x8407c | r0 = BN_is_zero ();
0x000615d0 subs r6, r0, 0 | r6 = r0 - 0;
| if (r6 == r0) {
0x000615d4 beq 0x61610 | goto label_3;
| }
0x000615d8 ldr r1, [pc, 0x148] | r1 = *(0x61724);
0x000615dc mov r2, sb | r2 = sb;
0x000615e0 add r1, pc, r1 | r1 = pc + r1;
0x000615e4 mov r0, r7 | r0 = r7;
0x000615e8 bl 0x6bbc4 | r0 = BIO_printf ()
| label_0:
0x000615ec cmp r0, 0 |
| if (r0 > 0) {
0x000615f0 movle r6, 0 | r6 = 0;
| }
| if (r0 > 0) {
0x000615f4 movgt r6, 1 | r6 = 1;
| goto label_1;
| }
| }
| label_1:
0x000615f8 mov r0, r6 | r0 = r6;
0x000615fc add sp, sp, 0x14 |
0x00061600 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_2:
0x00061604 ldr sl, [pc, 0x120] | sl = *(0x61728);
0x00061608 add sl, pc, sl | sl = pc + sl;
0x0006160c b 0x615b0 |
| } while (1);
| label_3:
0x00061610 mov r0, r4 | r0 = r4;
0x00061614 bl 0x8408c | r0 = BN_num_bits ();
0x00061618 cmp r0, 0x20 |
0x0006161c mov r0, r4 | r0 = r4;
| if (r0 <= 0x20) {
0x00061620 bgt 0x6165c |
0x00061624 bl 0x836d4 | r0 = fcn_000836d4 (r0);
0x00061628 ldr r5, [r0] | r5 = *(r0);
0x0006162c mov r0, r4 | r0 = r4;
0x00061630 bl 0x836d4 | fcn_000836d4 (r0);
0x00061634 ldr r1, [pc, 0xf4] | r1 = *(0x6172c);
0x00061638 mov r2, sb | r2 = sb;
0x0006163c add r1, pc, r1 | r1 = pc + r1;
0x00061640 ldr r3, [r0] | r3 = *(r0);
0x00061644 stm sp, {r5, sl} | *(sp) = r5;
| *((sp + 4)) = sl;
0x00061648 str r3, [sp, 8] | var_8h = r3;
0x0006164c mov r0, r7 | r0 = r7;
0x00061650 mov r3, sl | r3 = sl;
0x00061654 bl 0x6bbc4 | BIO_printf ()
0x00061658 b 0x615ec | goto label_0;
| }
0x0006165c bl 0x8408c | BN_num_bits ();
0x00061660 ldr r1, [pc, 0xcc] | r1 = *(0x61730);
0x00061664 mov r2, 0x49 | r2 = 0x49;
0x00061668 add r1, pc, r1 | r1 = pc + r1;
0x0006166c adds r5, r0, 7 | r5 = r0 + 7;
| if (r5 >= r0) {
0x00061670 addmi r5, r0, 0xe | r5 = r0 + 0xe;
| }
0x00061674 asr r5, r5, 3 | r5 >>= 3;
0x00061678 add r5, r5, 1 | r5++;
0x0006167c mov r0, r5 | r0 = r5;
0x00061680 bl 0x118474 | r0 = CRYPTO_malloc ();
0x00061684 subs r8, r0, 0 | r8 = r0 - 0;
| if (r8 == r0) {
0x00061688 beq 0x616fc | goto label_4;
| }
0x0006168c ldrb r3, [sl] | r3 = *(sl);
0x00061690 strb r6, [r8] | *(r8) = r6;
0x00061694 cmp r3, 0x2d |
| if (r3 == 0x2d) {
0x00061698 beq 0x61718 | goto label_5;
| }
0x0006169c ldr r3, [pc, 0x94] | r3 = *(0x61734);
0x000616a0 add r3, pc, r3 | r3 = pc + r3;
| do {
0x000616a4 ldr r1, [pc, 0x90] | r1 = *(0x61738);
0x000616a8 mov r2, sb | r2 = sb;
0x000616ac add r1, pc, r1 | r1 = pc + r1;
0x000616b0 mov r0, r7 | r0 = r7;
0x000616b4 bl 0x6bbc4 | r0 = BIO_printf ()
0x000616b8 cmp r0, 0 |
| if (r0 > 0) {
0x000616bc ble 0x616fc |
0x000616c0 add r6, r8, 1 | r6 = r8 + 1;
0x000616c4 mov r1, r6 | r1 = r6;
0x000616c8 mov r0, r4 | r0 = r4;
0x000616cc bl 0x8493c | BN_bn2bin ();
0x000616d0 ldrsb r3, [r8, 1] | r3 = *((r8 + 1));
0x000616d4 cmp r3, 0 |
| if (r3 >= 0) {
0x000616d8 movlt r6, r8 | r6 = r8;
| }
0x000616dc mov r1, r6 | r1 = r6;
0x000616e0 add r3, fp, 4 | r3 += arg_4h;
0x000616e4 mov r2, r0 | r2 = r0;
| if (r3 >= 0) {
0x000616e8 addlt r2, r0, 1 | r2 = r0 + 1;
| }
0x000616ec mov r0, r7 | r0 = r7;
0x000616f0 bl 0x6147c | r0 = ASN1_buf_print ();
0x000616f4 adds r6, r0, 0 | r6 = r0 + 0;
| if (r6 != r0) {
0x000616f8 movne r6, 1 | r6 = 1;
| goto label_4;
| }
| }
| label_4:
0x000616fc ldr r2, [pc, 0x3c] | r2 = *(0x6173c);
0x00061700 mov r3, 0x5b | r3 = 0x5b;
0x00061704 add r2, pc, r2 | r2 = pc + r2;
0x00061708 mov r1, r5 | r1 = r5;
0x0006170c mov r0, r8 | r0 = r8;
0x00061710 bl 0x11866c | CRYPTO_clear_free ();
0x00061714 b 0x615f8 | goto label_1;
| label_5:
0x00061718 ldr r3, [pc, 0x24] | r3 = *(0x61740);
0x0006171c add r3, pc, r3 | r3 = pc + r3;
0x00061720 b 0x616a4 |
| } while (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/libcrypto.so.1.1 @ 0x6147c */
| #include <stdint.h>
|
; (fcn) sym.ASN1_buf_print () | void ASN1_buf_print (int32_t arg1, int32_t arg2) {
| r0 = arg1;
| r1 = arg2;
0x0006147c push {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00061480 ldr sb, [pc, 0xdc] | sb = *(0x61560);
0x00061484 ldr sl, [pc, 0xdc] | sl = *(0x61564);
0x00061488 ldr fp, [pc, 0xdc] | fp = *(0x61568);
0x0006148c mov r5, r0 | r5 = r0;
0x00061490 mov r7, r1 | r7 = r1;
0x00061494 mov r6, r2 | r6 = r2;
0x00061498 mov r8, r3 | r8 = r3;
0x0006149c mov r4, 0 | r4 = 0;
0x000614a0 add sb, pc, sb | sb = pc + sb;
0x000614a4 add sl, pc, sl | sl = pc + sl;
0x000614a8 add fp, pc, fp |
| label_2:
0x000614ac cmp r4, r6 |
| if (r4 == r6) {
0x000614b0 bne 0x614d8 |
0x000614b4 ldr r1, [pc, 0xb4] | r1 = *(0x6156c);
0x000614b8 mov r2, 1 | r2 = 1;
0x000614bc add r1, pc, r1 | r1 = pc + r1;
0x000614c0 mov r0, r5 | r0 = r5;
0x000614c4 bl 0x6e820 | r0 = BIO_write ();
0x000614c8 cmp r0, 0 |
| if (r0 > 0) {
0x000614cc movle r0, 0 | r0 = 0;
| }
| if (r0 <= 0) {
0x000614d0 movgt r0, 1 | r0 = 1;
| }
0x000614d4 pop {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| }
0x000614d8 mov r1, 0xf | r1 = 0xf;
0x000614dc mov r0, r4 | r0 = r4;
0x000614e0 bl 0x18315c | fcn_0018315c (r0, r1);
0x000614e4 cmp r1, 0 |
0x000614e8 beq 0x61520 |
| while (r0 != 0) {
0x000614ec ldr r1, [pc, 0x80] | r1 = *(0x61570);
0x000614f0 sub r3, r6, 1 | r3 = r6 - 1;
0x000614f4 cmp r3, r4 |
| if (r3 != r4) {
0x000614f8 moveq r3, sl | r3 = sl;
| }
| if (r3 == r4) {
0x000614fc movne r3, fp | r3 = fp;
| }
0x00061500 ldrb r2, [r7, r4] | r2 = *((r7 + r4));
0x00061504 add r1, pc, r1 | r1 = pc + r1;
0x00061508 mov r0, r5 | r0 = r5;
0x0006150c bl 0x6bbc4 | r0 = BIO_printf ()
0x00061510 cmp r0, 0 |
| if (r0 > 0) {
0x00061514 bgt 0x6155c | goto label_3;
| }
| label_0:
0x00061518 mov r0, 0 | r0 = 0;
0x0006151c pop {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} |
0x00061520 cmp r4, 0 |
| if (r4 != 0) {
0x00061524 bne 0x61544 | goto label_4;
| }
| label_1:
0x00061528 mov r2, 0x80 | r2 = 0x80;
0x0006152c mov r1, r8 | r1 = r8;
0x00061530 mov r0, r5 | r0 = r5;
0x00061534 bl 0x6eb94 | r0 = BIO_indent ();
0x00061538 cmp r0, 0 |
0x0006153c bne 0x614ec |
| }
0x00061540 b 0x61518 | goto label_0;
| label_4:
0x00061544 mov r1, sb | r1 = sb;
0x00061548 mov r0, r5 | r0 = r5;
0x0006154c bl 0x6e860 | r0 = BIO_puts ();
0x00061550 cmp r0, 0 |
| if (r0 > 0) {
0x00061554 bgt 0x61528 | goto label_1;
| }
0x00061558 b 0x61518 | goto label_0;
| label_3:
0x0006155c add r4, r4, 1 | r4++;
0x00061560 b 0x614ac | goto label_2;
| }
; 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/libcrypto.so.1.1 @ 0x6a534 */
| #include <stdint.h>
|
; (fcn) sym.BIO_hex_string () | void BIO_hex_string (int32_t arg_30h, int32_t arg1, int32_t arg2) {
| int32_t var_4h;
| int32_t var_ch;
| r0 = arg1;
| r1 = arg2;
0x0006a534 push {r0, r1, r2, r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0006a538 ldr ip, [sp, 0x30] | ip = *(arg_30h);
0x0006a53c cmp ip, 0 |
| if (ip <= 0) {
0x0006a540 ble 0x6a5d8 | goto label_0;
| }
0x0006a544 mov r5, r3 | r5 = r3;
0x0006a548 ldr sl, [pc, 0xec] | sl = *(0x6a638);
0x0006a54c ldr r3, [pc, 0xec] | r3 = *(0x6a63c);
0x0006a550 ldr fp, [pc, 0xec] | fp = *(0x0006a644);
0x0006a554 mov r8, 0 | r8 = 0;
0x0006a558 add r3, pc, r3 | r3 = pc + r3;
0x0006a55c mov sb, r2 | sb = r2;
0x0006a560 mov r7, r1 | r7 = r1;
0x0006a564 mov r4, r0 | r4 = r0;
0x0006a568 mov r6, r8 | r6 = r8;
0x0006a56c add sl, pc, sl | sl = pc + sl;
0x0006a570 add fp, pc, fp |
0x0006a574 str r3, [sp, 4] | var_4h = r3;
| do {
0x0006a578 ldr r2, [sp, 0x30] | r2 = *(arg_30h);
0x0006a57c adds r3, r6, 0 | r3 = r6 + 0;
| if (r3 == r6) {
0x0006a580 movne r3, 1 | r3 = 1;
| }
0x0006a584 sub r2, r2, 1 | r2--;
0x0006a588 cmp r8, 0 |
| if (r8 == 0) {
0x0006a58c movne r3, 0 | r3 = 0;
| }
0x0006a590 cmp r2, r6 |
| if (r2 <= r6) {
0x0006a594 bgt 0x6a5e4 |
0x0006a598 cmp r3, 0 |
| if (r3 != 0) {
0x0006a59c beq 0x6a5bc |
0x0006a5a0 ldr r3, [pc, 0xa0] | r3 = *(0x6a644);
0x0006a5a4 ldr r1, [pc, 0xa0] | r1 = *(0x6a648);
0x0006a5a8 add r3, pc, r3 | r3 = pc + r3;
0x0006a5ac mov r2, r7 | r2 = r7;
0x0006a5b0 add r1, pc, r1 | r1 = pc + r1;
0x0006a5b4 mov r0, r4 | r0 = r4;
0x0006a5b8 bl 0x6bbc4 | BIO_printf ()
| }
0x0006a5bc ldr r3, [sp, 0x30] | r3 = *(arg_30h);
0x0006a5c0 ldr r1, [pc, 0x88] | r1 = *(0x6a64c);
0x0006a5c4 add r5, r5, r3 | r5 += r3;
0x0006a5c8 ldrb r2, [r5, -1] | r2 = *((r5 - 1));
0x0006a5cc add r1, pc, r1 | r1 = pc + r1;
0x0006a5d0 mov r0, r4 | r0 = r4;
0x0006a5d4 bl 0x6bbc4 | BIO_printf ()
| label_0:
0x0006a5d8 mov r0, 1 | r0 = 1;
0x0006a5dc add sp, sp, 0xc |
0x0006a5e0 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| }
0x0006a5e4 cmp r3, 0 |
| if (r3 != 0) {
0x0006a5e8 beq 0x6a600 |
0x0006a5ec ldr r3, [sp, 4] | r3 = var_4h;
0x0006a5f0 mov r2, r7 | r2 = r7;
0x0006a5f4 mov r1, sl | r1 = sl;
0x0006a5f8 mov r0, r4 | r0 = r4;
0x0006a5fc bl 0x6bbc4 | BIO_printf ()
| }
0x0006a600 ldrb r2, [r5, r6] | r2 = *((r5 + r6));
0x0006a604 mov r1, fp | r1 = fp;
0x0006a608 mov r0, r4 | r0 = r4;
0x0006a60c bl 0x6bbc4 | BIO_printf ()
0x0006a610 add r0, r8, 1 | r0 = r8 + 1;
0x0006a614 mov r1, sb | r1 = sb;
0x0006a618 bl 0x183258 | fcn_00183258 (r0, r1);
0x0006a61c subs r8, r1, 0 | r8 = r1 - 0;
| if (r8 == r1) {
0x0006a620 bne 0x6a634 |
0x0006a624 ldr r1, [pc, 0x28] | r1 = *(0x6a650);
0x0006a628 mov r0, r4 | r0 = r4;
0x0006a62c add r1, pc, r1 | r1 = pc + r1;
0x0006a630 bl 0x6bbc4 | BIO_printf ()
| }
0x0006a634 add r6, r6, 1 | r6++;
0x0006a638 b 0x6a578 |
| } while (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/libcrypto.so.1.1 @ 0xa77b8 */
| #include <stdint.h>
|
; (fcn) sym.DHparams_print () | void DHparams_print (int32_t arg1, int32_t arg2) {
| int32_t var_0h;
| r0 = arg1;
| r1 = arg2;
| label_10:
0x000a6238 cmp r3, 2 |
0x000a623c push {r0, r1, r2, r4, r5, r6, r7, r8, sb, sl, fp, lr} |
| if (r3 != 2) {
0x000a6240 ldreq r7, [r1, 0x18] | r7 = *((r1 + 0x18));
| }
0x000a6244 mov r4, r0 | r4 = r0;
0x000a6248 mov r5, r1 | r5 = r1;
0x000a624c mov r8, r2 | r8 = r2;
| if (r3 != 2) {
0x000a6250 beq 0xa6268 |
0x000a6254 cmp r3, 0 |
| if (r3 != 0) {
0x000a6258 moveq r7, r3 | r7 = r3;
| }
| if (r3 != 0) {
0x000a625c moveq sb, r3 | sb = r3;
| }
| if (r3 == 0) {
0x000a6260 beq 0xa626c | goto label_11;
| }
0x000a6264 mov r7, 0 | r7 = 0;
| }
0x000a6268 ldr sb, [r5, 0x14] | sb = *((r5 + 0x14));
| label_11:
0x000a626c ldr r2, [r5, 8] | r2 = *((r5 + 8));
0x000a6270 cmp r2, 0 |
| if (r2 == 0) {
0x000a6274 beq 0xa6588 | goto label_12;
| }
0x000a6278 cmp r3, 2 |
0x000a627c cmpeq r7, 0 | __asm ("cmpeq r7, 0");
| if (r3 == 2) {
0x000a6280 beq 0xa6588 | goto label_12;
| }
0x000a6284 cmp r3, 0 |
| if (r3 > 0) {
0x000a6288 movle r2, 0 | r2 = 0;
| }
| if (r3 <= 0) {
0x000a628c movgt r2, 1 | r2 = 1;
| }
0x000a6290 cmp sb, 0 |
| if (sb == 0) {
0x000a6294 movne r2, 0 | r2 = 0;
| }
0x000a6298 cmp r2, 0 |
| if (r2 != 0) {
0x000a629c bne 0xa6588 | goto label_12;
| }
0x000a62a0 cmp r3, 2 |
| if (r3 == 2) {
0x000a62a4 beq 0xa6314 | goto label_13;
| }
0x000a62a8 cmp r3, 1 |
| if (r3 == 1) {
0x000a62ac beq 0xa6320 | goto label_14;
| }
0x000a62b0 ldr r6, [pc, 0x2d8] | r6 = *(0xa658c);
0x000a62b4 add r6, pc, r6 | r6 = pc + r6;
| do {
| label_0:
0x000a62b8 mov r2, 0x80 | r2 = 0x80;
0x000a62bc mov r1, r8 | r1 = r8;
0x000a62c0 mov r0, r4 | r0 = r4;
0x000a62c4 bl 0x6eb94 | BIO_indent ();
0x000a62c8 ldr r0, [r5, 8] | r0 = *((r5 + 8));
0x000a62cc bl 0x8408c | BN_num_bits ();
0x000a62d0 ldr r1, [pc, 0x2bc] | r1 = *(0xa6590);
0x000a62d4 mov r2, r6 | r2 = r6;
0x000a62d8 add r1, pc, r1 | r1 = pc + r1;
0x000a62dc mov r3, r0 | r3 = r0;
0x000a62e0 mov r0, r4 | r0 = r4;
0x000a62e4 bl 0x6bbc4 | r0 = BIO_printf ()
0x000a62e8 cmp r0, 0 |
| if (r0 > 0) {
0x000a62ec bgt 0xa632c | goto label_15;
| }
| label_1:
0x000a62f0 mov r2, 7 | r2 = 7;
| label_9:
0x000a62f4 ldr r3, [pc, 0x29c] | r3 = *(0xa6594);
0x000a62f8 mov r1, 0x64 | r1 = 0x64;
0x000a62fc str r3, [sp] | *(sp) = r3;
0x000a6300 ldr r3, [pc, 0x294] | r3 = *(0xa6598);
0x000a6304 mov r0, 5 | r0 = 5;
0x000a6308 add r3, pc, r3 | r3 = pc + r3;
0x000a630c bl 0xfc7b8 | ERR_put_error ();
0x000a6310 b 0xa64e0 | goto label_16;
| label_13:
0x000a6314 ldr r6, [pc, 0x284] | r6 = *(0xa659c);
0x000a6318 add r6, pc, r6 | r6 = pc + r6;
0x000a631c b 0xa62b8 |
| } while (1);
| label_14:
0x000a6320 ldr r6, [pc, 0x27c] | r6 = *(0xa65a0);
0x000a6324 add r6, pc, r6 | r6 = pc + r6;
0x000a6328 b 0xa62b8 | goto label_0;
| label_15:
0x000a632c ldr r1, [pc, 0x274] | r1 = *(0xa65a4);
0x000a6330 add r6, r8, 4 | r6 = r8 + 4;
0x000a6334 str r6, [sp] | *(sp) = r6;
0x000a6338 mov r3, 0 | r3 = 0;
0x000a633c mov r2, r7 | r2 = r7;
0x000a6340 add r1, pc, r1 | r1 = pc + r1;
0x000a6344 mov r0, r4 | r0 = r4;
0x000a6348 bl 0x61578 | r0 = ASN1_bn_print ();
0x000a634c cmp r0, 0 |
| if (r0 == 0) {
0x000a6350 beq 0xa62f0 | goto label_1;
| }
0x000a6354 ldr r1, [pc, 0x250] | r1 = *(0xa65a8);
0x000a6358 str r6, [sp] | *(sp) = r6;
0x000a635c mov r3, 0 | r3 = 0;
0x000a6360 mov r2, sb | r2 = sb;
0x000a6364 add r1, pc, r1 | r1 = pc + r1;
0x000a6368 mov r0, r4 | r0 = r4;
0x000a636c bl 0x61578 | r0 = ASN1_bn_print ();
0x000a6370 cmp r0, 0 |
| if (r0 == 0) {
0x000a6374 beq 0xa62f0 | goto label_1;
| }
0x000a6378 ldr r1, [pc, 0x230] | r1 = *(0xa65ac);
0x000a637c str r6, [sp] | *(sp) = r6;
0x000a6380 mov r3, 0 | r3 = 0;
0x000a6384 ldr r2, [r5, 8] | r2 = *((r5 + 8));
0x000a6388 add r1, pc, r1 | r1 = pc + r1;
0x000a638c mov r0, r4 | r0 = r4;
0x000a6390 bl 0x61578 | r0 = ASN1_bn_print ();
0x000a6394 cmp r0, 0 |
| if (r0 == 0) {
0x000a6398 beq 0xa62f0 | goto label_1;
| }
0x000a639c ldr r1, [pc, 0x210] | r1 = *(0xa65b0);
0x000a63a0 str r6, [sp] | *(sp) = r6;
0x000a63a4 mov r3, 0 | r3 = 0;
0x000a63a8 ldr r2, [r5, 0xc] | r2 = *((r5 + 0xc));
0x000a63ac add r1, pc, r1 | r1 = pc + r1;
0x000a63b0 mov r0, r4 | r0 = r4;
0x000a63b4 bl 0x61578 | r0 = ASN1_bn_print ();
0x000a63b8 cmp r0, 0 |
| if (r0 == 0) {
0x000a63bc beq 0xa62f0 | goto label_1;
| }
0x000a63c0 ldr r2, [r5, 0x24] | r2 = *((r5 + 0x24));
0x000a63c4 cmp r2, 0 |
| if (r2 != 0) {
0x000a63c8 bne 0xa6434 | goto label_17;
| }
| label_2:
0x000a63cc ldr r2, [r5, 0x28] | r2 = *((r5 + 0x28));
0x000a63d0 cmp r2, 0 |
| if (r2 != 0) {
0x000a63d4 bne 0xa6458 | goto label_18;
| }
| label_3:
0x000a63d8 ldr r3, [r5, 0x2c] | r3 = *((r5 + 0x2c));
0x000a63dc cmp r3, 0 |
| if (r3 != 0) {
0x000a63e0 bne 0xa647c | goto label_19;
| }
| label_4:
0x000a63e4 ldr r2, [r5, 0x34] | r2 = *((r5 + 0x34));
0x000a63e8 cmp r2, 0 |
| if (r2 != 0) {
0x000a63ec bne 0xa6564 | goto label_20;
| }
| label_8:
0x000a63f0 ldr r3, [r5, 0x10] | r3 = *((r5 + 0x10));
0x000a63f4 cmp r3, 0 |
| if (r3 == 0) {
0x000a63f8 beq 0xa6428 | goto label_21;
| }
0x000a63fc mov r2, 0x80 | r2 = 0x80;
0x000a6400 mov r1, r6 | r1 = r6;
0x000a6404 mov r0, r4 | r0 = r4;
0x000a6408 bl 0x6eb94 | BIO_indent ();
0x000a640c ldr r1, [pc, 0x1a4] | r1 = *(0xa65b4);
0x000a6410 ldr r2, [r5, 0x10] | r2 = *((r5 + 0x10));
0x000a6414 add r1, pc, r1 | r1 = pc + r1;
0x000a6418 mov r0, r4 | r0 = r4;
0x000a641c bl 0x6bbc4 | r0 = BIO_printf ()
0x000a6420 cmp r0, 0 |
| if (r0 <= 0) {
0x000a6424 ble 0xa62f0 | goto label_1;
| }
| label_21:
0x000a6428 mov r0, 1 | r0 = 1;
| label_5:
0x000a642c add sp, sp, 0xc |
0x000a6430 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_17:
0x000a6434 ldr r1, [pc, 0x180] | r1 = *(0xa65b8);
0x000a6438 str r6, [sp] | *(sp) = r6;
0x000a643c mov r3, 0 | r3 = 0;
0x000a6440 add r1, pc, r1 | r1 = pc + r1;
0x000a6444 mov r0, r4 | r0 = r4;
0x000a6448 bl 0x61578 | r0 = ASN1_bn_print ();
0x000a644c cmp r0, 0 |
| if (r0 == 0) {
0x000a6450 beq 0xa62f0 | goto label_1;
| }
0x000a6454 b 0xa63cc | goto label_2;
| label_18:
0x000a6458 ldr r1, [pc, 0x160] | r1 = *(0xa65bc);
0x000a645c str r6, [sp] | *(sp) = r6;
0x000a6460 mov r3, 0 | r3 = 0;
0x000a6464 add r1, pc, r1 | r1 = pc + r1;
0x000a6468 mov r0, r4 | r0 = r4;
0x000a646c bl 0x61578 | r0 = ASN1_bn_print ();
0x000a6470 cmp r0, 0 |
| if (r0 == 0) {
0x000a6474 beq 0xa62f0 | goto label_1;
| }
0x000a6478 b 0xa63d8 | goto label_3;
| label_19:
0x000a647c mov r2, 0x80 | r2 = 0x80;
0x000a6480 mov r1, r6 | r1 = r6;
0x000a6484 mov r0, r4 | r0 = r4;
0x000a6488 bl 0x6eb94 | BIO_indent ();
0x000a648c ldr r1, [pc, 0x130] | r1 = *(0xa65c0);
0x000a6490 mov r0, r4 | r0 = r4;
0x000a6494 add r1, pc, r1 | r1 = pc + r1;
0x000a6498 bl 0x6e860 | BIO_puts ();
0x000a649c ldr sb, [pc, 0x124] | sb = *(0xa65c4);
0x000a64a0 ldr sl, [pc, 0x124] | sl = *(0xa65c8);
0x000a64a4 ldr fp, [pc, 0x124] | fp = *(0xa65cc);
0x000a64a8 mov r7, 0 | r7 = 0;
0x000a64ac add sb, pc, sb | sb = pc + sb;
0x000a64b0 add sl, pc, sl | sl = pc + sl;
0x000a64b4 add fp, pc, fp |
| label_6:
0x000a64b8 ldr r3, [r5, 0x30] | r3 = *((r5 + 0x30));
0x000a64bc cmp r3, r7 |
| if (r3 > r7) {
0x000a64c0 bgt 0xa64e8 | goto label_22;
| }
0x000a64c4 ldr r1, [pc, 0x108] | r1 = *(0xa65d0);
0x000a64c8 mov r2, 1 | r2 = 1;
0x000a64cc add r1, pc, r1 | r1 = pc + r1;
0x000a64d0 mov r0, r4 | r0 = r4;
0x000a64d4 bl 0x6e820 | r0 = BIO_write ();
0x000a64d8 cmp r0, 0 |
| if (r0 > 0) {
0x000a64dc bgt 0xa63e4 | goto label_4;
| }
| label_16:
0x000a64e0 mov r0, 0 | r0 = 0;
0x000a64e4 b 0xa642c | goto label_5;
| label_22:
0x000a64e8 mov r1, 0xf | r1 = 0xf;
0x000a64ec mov r0, r7 | r0 = r7;
0x000a64f0 bl 0x183258 | fcn_00183258 (r0, r1);
0x000a64f4 cmp r1, 0 |
| if (r1 == 0) {
0x000a64f8 beq 0xa6534 | goto label_23;
| }
| label_7:
0x000a64fc ldr r3, [r5, 0x2c] | r3 = *((r5 + 0x2c));
0x000a6500 ldr r1, [pc, 0xd0] | r1 = *(0xa65d4);
0x000a6504 ldrb r2, [r3, r7] | r2 = *((r3 + r7));
0x000a6508 ldr r3, [r5, 0x30] | r3 = *((r5 + 0x30));
0x000a650c add r7, r7, 1 | r7++;
0x000a6510 cmp r7, r3 |
| if (r7 != r3) {
0x000a6514 moveq r3, sl | r3 = sl;
| }
| if (r7 == r3) {
0x000a6518 movne r3, fp | r3 = fp;
| }
0x000a651c add r1, pc, r1 | r1 = pc + r1;
0x000a6520 mov r0, r4 | r0 = r4;
0x000a6524 bl 0x6bbc4 | r0 = BIO_printf ()
0x000a6528 cmp r0, 0 |
| if (r0 > 0) {
0x000a652c bgt 0xa64b8 | goto label_6;
| }
0x000a6530 b 0xa62f0 | goto label_1;
| label_23:
0x000a6534 mov r1, sb | r1 = sb;
0x000a6538 mov r0, r4 | r0 = r4;
0x000a653c bl 0x6e860 | r0 = BIO_puts ();
0x000a6540 cmp r0, 0 |
| if (r0 <= 0) {
0x000a6544 ble 0xa62f0 | goto label_1;
| }
0x000a6548 mov r2, 0x80 | r2 = 0x80;
0x000a654c add r1, r8, 8 | r1 = r8 + 8;
0x000a6550 mov r0, r4 | r0 = r4;
0x000a6554 bl 0x6eb94 | r0 = BIO_indent ();
0x000a6558 cmp r0, 0 |
| if (r0 != 0) {
0x000a655c bne 0xa64fc | goto label_7;
| }
0x000a6560 b 0xa62f0 | goto label_1;
| label_20:
0x000a6564 ldr r1, [pc, 0x70] | r1 = *(0xa65d8);
0x000a6568 str r6, [sp] | *(sp) = r6;
0x000a656c mov r3, 0 | r3 = 0;
0x000a6570 add r1, pc, r1 | r1 = pc + r1;
0x000a6574 mov r0, r4 | r0 = r4;
0x000a6578 bl 0x61578 | r0 = ASN1_bn_print ();
0x000a657c cmp r0, 0 |
| if (r0 == 0) {
0x000a6580 beq 0xa62f0 | goto label_1;
| }
0x000a6584 b 0xa63f0 | goto label_8;
| label_12:
0x000a6588 mov r2, 0x43 | r2 = 0x43;
0x000a658c b 0xa62f4 | goto label_9;
0x000a77b8 mov r3, 0 | r3 = 0;
0x000a77bc mov r2, 4 | r2 = 4;
0x000a77c0 b 0xa6238 | goto label_10;
| }
; 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/libcrypto.so.1.1 @ 0xa9d38 */
| #include <stdint.h>
|
; (fcn) sym.DHparams_print_fp () | void DHparams_print_fp (int32_t arg1, int32_t arg2) {
| int32_t var_0h;
| int32_t var_8h;
| r0 = arg1;
| r1 = arg2;
0x000a9d38 push {r0, r1, r4, r5, r6, lr} |
0x000a9d3c mov r5, r1 | r5 = r1;
0x000a9d40 mov r6, r0 | r6 = r0;
0x000a9d44 bl 0x7270c | BIO_s_file ();
0x000a9d48 bl 0x6e4f0 | r0 = BIO_new ();
0x000a9d4c subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 != r0) {
0x000a9d50 bne 0xa9d84 | goto label_0;
| }
0x000a9d54 mov r3, 0x16 | r3 = 0x16;
0x000a9d58 str r3, [sp] | *(sp) = r3;
0x000a9d5c ldr r3, [pc, 0x4c] | r3 = *(0xa9dac);
0x000a9d60 mov r2, 7 | r2 = 7;
0x000a9d64 add r3, pc, r3 | r3 = pc + r3;
0x000a9d68 mov r1, 0x65 | r1 = 0x65;
0x000a9d6c mov r0, 5 | r0 = 5;
0x000a9d70 bl 0xfc7b8 | ERR_put_error ();
0x000a9d74 mov r5, r4 | r5 = r4;
| do {
0x000a9d78 mov r0, r5 | r0 = r5;
0x000a9d7c add sp, sp, 8 |
0x000a9d80 pop {r4, r5, r6, pc} |
| label_0:
0x000a9d84 mov r3, r6 | r3 = r6;
0x000a9d88 mov r2, 0 | r2 = 0;
0x000a9d8c mov r1, 0x6a | r1 = 0x6a;
0x000a9d90 bl 0x6ebe8 | BIO_ctrl ();
0x000a9d94 mov r1, r5 | r1 = r5;
0x000a9d98 mov r0, r4 | r0 = r4;
0x000a9d9c bl 0xa77b8 | r0 = DHparams_print ();
0x000a9da0 mov r5, r0 | r5 = r0;
0x000a9da4 mov r0, r4 | r0 = r4;
0x000a9da8 bl 0x6e63c | BIO_free ();
0x000a9dac b 0xa9d78 |
| } while (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/libcrypto.so.1.1 @ 0xc8818 */
| #include <stdint.h>
|
; (fcn) sym.ECPKParameters_print () | void ECPKParameters_print (int32_t arg1, int32_t arg2) {
| int32_t var_0h;
| int32_t var_ch;
| int32_t var_10h;
| int32_t var_14h;
| int32_t var_18h;
| int32_t var_1ch;
| int32_t var_20h;
| int32_t var_24h;
| void * s;
| void * var_29h;
| int32_t var_b0h;
| int32_t var_b4h;
| r0 = arg1;
| r1 = arg2;
0x000c8818 push {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x000c881c subs sl, r1, 0 | sl = r1 - 0;
0x000c8820 sub sp, sp, 0xb4 |
| if (sl == r1) {
0x000c8824 beq 0xc8d10 | goto label_8;
| }
0x000c8828 mov r5, r0 | r5 = r0;
0x000c882c mov sb, r2 | sb = r2;
0x000c8830 bl 0x7e72c | r0 = BN_CTX_new ();
0x000c8834 subs fp, r0, 0 |
| if (fp == r0) {
0x000c8838 beq 0xc8d7c | goto label_9;
| }
0x000c883c mov r0, sl | r0 = sl;
0x000c8840 bl 0xc2ef4 | r0 = EC_GROUP_get_asn1_flag ();
0x000c8844 subs r3, r0, 0 | r3 = r0 - 0;
0x000c8848 str r3, [sp, 0xc] | var_ch = r3;
| if (r3 != r0) {
0x000c884c beq 0xc890c |
0x000c8850 mov r2, 0x80 | r2 = 0x80;
0x000c8854 mov r1, sb | r1 = sb;
0x000c8858 mov r0, r5 | r0 = r5;
0x000c885c bl 0x6eb94 | r0 = BIO_indent ();
0x000c8860 subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 == r0) {
0x000c8864 beq 0xc8d98 | goto label_10;
| }
0x000c8868 mov r0, sl | r0 = sl;
0x000c886c bl 0xc2ee4 | r0 = EC_GROUP_get_curve_name ();
0x000c8870 subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 == r0) {
0x000c8874 beq 0xc8d98 | goto label_10;
| }
0x000c8878 bl 0x1205a4 | OBJ_nid2sn ();
0x000c887c ldr r1, [pc, 0x564] | r1 = *(0xc8de4);
0x000c8880 add r1, pc, r1 | r1 = pc + r1;
0x000c8884 mov r2, r0 | r2 = r0;
0x000c8888 mov r0, r5 | r0 = r5;
0x000c888c bl 0x6bbc4 | r0 = BIO_printf ()
0x000c8890 cmp r0, 0 |
| if (r0 <= 0) {
0x000c8894 ble 0xc8d94 | goto label_11;
| }
0x000c8898 ldr r1, [pc, 0x54c] | r1 = *(0xc8de8);
0x000c889c mov r0, r5 | r0 = r5;
0x000c88a0 add r1, pc, r1 | r1 = pc + r1;
0x000c88a4 bl 0x6bbc4 | r0 = BIO_printf ()
0x000c88a8 cmp r0, 0 |
| if (r0 <= 0) {
0x000c88ac ble 0xc8d94 | goto label_11;
| }
0x000c88b0 mov r0, r4 | r0 = r4;
0x000c88b4 bl 0xc1654 | r0 = EC_curve_nid2nist ();
0x000c88b8 subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 == r0) {
0x000c88bc beq 0xc8dd8 | goto label_12;
| }
0x000c88c0 mov r2, 0x80 | r2 = 0x80;
0x000c88c4 mov r1, sb | r1 = sb;
0x000c88c8 mov r0, r5 | r0 = r5;
0x000c88cc bl 0x6eb94 | r0 = BIO_indent ();
0x000c88d0 cmp r0, 0 |
| if (r0 != 0) {
0x000c88d4 moveq r4, r0 | r4 = r0;
| }
| if (r0 == 0) {
0x000c88d8 beq 0xc8d98 | goto label_10;
| }
0x000c88dc ldr r1, [pc, 0x50c] | r1 = *(0xc8dec);
0x000c88e0 mov r2, r4 | r2 = r4;
0x000c88e4 add r1, pc, r1 | r1 = pc + r1;
0x000c88e8 mov r0, r5 | r0 = r5;
0x000c88ec bl 0x6bbc4 | BIO_printf ()
0x000c88f0 mov r4, 0 | r4 = 0;
0x000c88f4 mov r8, r4 | r8 = r4;
0x000c88f8 mov r7, r4 | r7 = r4;
0x000c88fc mov r6, r4 | r6 = r4;
| label_3:
0x000c8900 cmp r0, 0 |
| if (r0 > 0) {
0x000c8904 bgt 0xc8b58 | goto label_7;
| }
0x000c8908 b 0xc8bc8 | goto label_2;
| }
0x000c890c mov r0, sl | r0 = sl;
0x000c8910 bl 0xc2e20 | EC_GROUP_method_of ();
0x000c8914 bl 0xc2e28 | EC_METHOD_get_field_type ();
0x000c8918 str r0, [sp, 0x20] | var_20h = r0;
0x000c891c bl 0x83ba0 | r0 = BN_new ();
0x000c8920 subs r6, r0, 0 | r6 = r0 - 0;
| if (r6 == r0) {
0x000c8924 beq 0xc8da8 | goto label_13;
| }
0x000c8928 bl 0x83ba0 | r0 = BN_new ();
0x000c892c subs r7, r0, 0 | r7 = r0 - 0;
| if (r7 == r0) {
0x000c8930 beq 0xc8db8 | goto label_14;
| }
0x000c8934 bl 0x83ba0 | r0 = BN_new ();
0x000c8938 subs r8, r0, 0 | r8 = r0 - 0;
| if (r8 == r0) {
0x000c893c beq 0xc8dc4 | goto label_15;
| }
0x000c8940 str fp, [sp] | *(sp) = fp;
0x000c8944 mov r3, r8 | r3 = r8;
0x000c8948 mov r2, r7 | r2 = r7;
0x000c894c mov r1, r6 | r1 = r6;
0x000c8950 mov r0, sl | r0 = sl;
0x000c8954 bl 0xc302c | r0 = EC_GROUP_get_curve ();
0x000c8958 subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 == r0) {
0x000c895c beq 0xc8dd0 | goto label_16;
| }
0x000c8960 mov r0, sl | r0 = sl;
0x000c8964 bl 0xc2e30 | r0 = EC_GROUP_get0_generator ();
0x000c8968 subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 == r0) {
0x000c896c beq 0xc8dd0 | goto label_16;
| }
0x000c8970 mov r0, sl | r0 = sl;
0x000c8974 bl 0xc2e80 | EC_GROUP_get0_order ();
0x000c8978 str r0, [sp, 0x14] | var_14h = r0;
0x000c897c mov r0, sl | r0 = sl;
0x000c8980 bl 0xc2ed4 | EC_GROUP_get0_cofactor ();
0x000c8984 ldr r3, [sp, 0x14] | r3 = var_14h;
0x000c8988 cmp r3, 0 |
0x000c898c str r0, [sp, 0x24] | var_24h = r0;
| if (r3 == 0) {
0x000c8990 beq 0xc8dcc | goto label_17;
| }
0x000c8994 mov r0, sl | r0 = sl;
0x000c8998 bl 0xc2f04 | EC_GROUP_get_point_conversion_form ();
0x000c899c mov r1, r4 | r1 = r4;
0x000c89a0 str fp, [sp] | *(sp) = fp;
0x000c89a4 ldr r3, [sp, 0xc] | r3 = var_ch;
0x000c89a8 str r0, [sp, 0x18] | var_18h = r0;
0x000c89ac mov r2, r0 | r2 = r0;
0x000c89b0 mov r0, sl | r0 = sl;
0x000c89b4 bl 0xc70a4 | r0 = EC_POINT_point2bn ();
0x000c89b8 subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 == r0) {
0x000c89bc beq 0xc8dd0 | goto label_16;
| }
0x000c89c0 mov r0, sl | r0 = sl;
0x000c89c4 bl 0xc2fc4 | r0 = EC_GROUP_get0_seed ();
0x000c89c8 subs r3, r0, 0 | r3 = r0 - 0;
0x000c89cc str r3, [sp, 0x1c] | var_1ch = r3;
| if (r3 != r0) {
0x000c89d0 ldreq r3, [sp, 0x1c] | r3 = var_1ch;
| }
| if (r3 != r0) {
0x000c89d4 streq r3, [sp, 0x10] | var_10h = r3;
| }
| if (r3 != r0) {
0x000c89d8 beq 0xc89e8 |
0x000c89dc mov r0, sl | r0 = sl;
0x000c89e0 bl 0xc2fcc | EC_GROUP_get_seed_len ();
0x000c89e4 str r0, [sp, 0x10] | var_10h = r0;
| }
0x000c89e8 mov r2, 0x80 | r2 = 0x80;
0x000c89ec mov r1, sb | r1 = sb;
0x000c89f0 mov r0, r5 | r0 = r5;
0x000c89f4 bl 0x6eb94 | r0 = BIO_indent ();
0x000c89f8 cmp r0, 0 |
| if (r0 == 0) {
0x000c89fc beq 0xc8bc8 | goto label_2;
| }
0x000c8a00 ldr r0, [sp, 0x20] | r0 = var_20h;
0x000c8a04 bl 0x1205a4 | OBJ_nid2sn ();
0x000c8a08 ldr r1, [pc, 0x3e4] | r1 = *(0xc8df0);
0x000c8a0c add r1, pc, r1 | r1 = pc + r1;
0x000c8a10 mov r2, r0 | r2 = r0;
0x000c8a14 mov r0, r5 | r0 = r5;
0x000c8a18 bl 0x6bbc4 | r0 = BIO_printf ()
0x000c8a1c cmp r0, 0 |
| if (r0 <= 0) {
0x000c8a20 ble 0xc8bc8 | goto label_2;
| }
0x000c8a24 ldr r3, [pc, 0x3cc] | r3 = *(0xc8df4);
0x000c8a28 ldr r2, [sp, 0x20] | r2 = var_20h;
0x000c8a2c cmp r2, r3 |
| if (r2 != r3) {
0x000c8a30 bne 0xc8b60 | goto label_18;
| }
0x000c8a34 mov r0, sl | r0 = sl;
0x000c8a38 bl 0xbee18 | r0 = EC_GROUP_get_basis_type ();
0x000c8a3c subs sl, r0, 0 | sl = r0 - 0;
| if (sl == r0) {
0x000c8a40 beq 0xc8bc8 | goto label_2;
| }
0x000c8a44 mov r2, 0x80 | r2 = 0x80;
0x000c8a48 mov r1, sb | r1 = sb;
0x000c8a4c mov r0, r5 | r0 = r5;
0x000c8a50 bl 0x6eb94 | r0 = BIO_indent ();
0x000c8a54 cmp r0, 0 |
| if (r0 == 0) {
0x000c8a58 beq 0xc8bc8 | goto label_2;
| }
0x000c8a5c mov r0, sl | r0 = sl;
0x000c8a60 bl 0x1205a4 | OBJ_nid2sn ();
0x000c8a64 ldr r1, [pc, 0x390] | r1 = *(0xc8df8);
0x000c8a68 add r1, pc, r1 | r1 = pc + r1;
0x000c8a6c mov r2, r0 | r2 = r0;
0x000c8a70 mov r0, r5 | r0 = r5;
0x000c8a74 bl 0x6bbc4 | r0 = BIO_printf ()
0x000c8a78 cmp r0, 0 |
| if (r0 <= 0) {
0x000c8a7c ble 0xc8bc8 | goto label_2;
| }
0x000c8a80 ldr r1, [pc, 0x378] | r1 = *(0xc8dfc);
0x000c8a84 mov r3, 0 | r3 = 0;
0x000c8a88 mov r2, r6 | r2 = r6;
0x000c8a8c add r1, pc, r1 | r1 = pc + r1;
0x000c8a90 str sb, [sp] | *(sp) = sb;
| do {
0x000c8a94 mov r0, r5 | r0 = r5;
0x000c8a98 bl 0x61578 | r0 = ASN1_bn_print ();
0x000c8a9c cmp r0, 0 |
| if (r0 == 0) {
0x000c8aa0 beq 0xc8bc8 | goto label_2;
| }
0x000c8aa4 ldr r1, [pc, 0x358] | r1 = *(0xc8e00);
0x000c8aa8 str sb, [sp] | *(sp) = sb;
0x000c8aac mov r3, 0 | r3 = 0;
0x000c8ab0 mov r2, r7 | r2 = r7;
0x000c8ab4 add r1, pc, r1 | r1 = pc + r1;
0x000c8ab8 mov r0, r5 | r0 = r5;
0x000c8abc bl 0x61578 | r0 = ASN1_bn_print ();
0x000c8ac0 cmp r0, 0 |
| if (r0 == 0) {
0x000c8ac4 beq 0xc8bc8 | goto label_2;
| }
0x000c8ac8 ldr r1, [pc, 0x338] | r1 = *(0xc8e04);
0x000c8acc str sb, [sp] | *(sp) = sb;
0x000c8ad0 mov r3, 0 | r3 = 0;
0x000c8ad4 mov r2, r8 | r2 = r8;
0x000c8ad8 add r1, pc, r1 | r1 = pc + r1;
0x000c8adc mov r0, r5 | r0 = r5;
0x000c8ae0 bl 0x61578 | r0 = ASN1_bn_print ();
0x000c8ae4 cmp r0, 0 |
| if (r0 == 0) {
0x000c8ae8 beq 0xc8bc8 | goto label_2;
| }
0x000c8aec ldr r3, [sp, 0x18] | r3 = var_18h;
0x000c8af0 cmp r3, 2 |
| if (r3 != 2) {
0x000c8af4 bne 0xc8b78 | goto label_19;
| }
0x000c8af8 ldr r1, [pc, 0x30c] | r1 = *(0xc8e08);
0x000c8afc mov r3, 0 | r3 = 0;
0x000c8b00 mov r2, r4 | r2 = r4;
0x000c8b04 add r1, pc, r1 | r1 = pc + r1;
0x000c8b08 str sb, [sp] | *(sp) = sb;
| label_0:
0x000c8b0c mov r0, r5 | r0 = r5;
0x000c8b10 bl 0x61578 | r0 = ASN1_bn_print ();
0x000c8b14 cmp r0, 0 |
| if (r0 == 0) {
0x000c8b18 beq 0xc8bc8 | goto label_2;
| }
0x000c8b1c ldr r1, [pc, 0x2ec] | r1 = *(0xc8e0c);
0x000c8b20 str sb, [sp] | *(sp) = sb;
0x000c8b24 mov r3, 0 | r3 = 0;
0x000c8b28 ldr r2, [sp, 0x14] | r2 = var_14h;
0x000c8b2c add r1, pc, r1 | r1 = pc + r1;
0x000c8b30 mov r0, r5 | r0 = r5;
0x000c8b34 bl 0x61578 | r0 = ASN1_bn_print ();
0x000c8b38 cmp r0, 0 |
| if (r0 == 0) {
0x000c8b3c beq 0xc8bc8 | goto label_2;
| }
0x000c8b40 ldr r3, [sp, 0x24] | r3 = var_24h;
0x000c8b44 cmp r3, 0 |
| if (r3 != 0) {
0x000c8b48 bne 0xc8ba4 | goto label_20;
| }
| label_1:
0x000c8b4c ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x000c8b50 cmp r3, 0 |
| if (r3 != 0) {
0x000c8b54 bne 0xc8bd0 | goto label_21;
| }
| label_7:
0x000c8b58 mov r5, 1 | r5 = 1;
0x000c8b5c b 0xc8d48 | goto label_22;
| label_18:
0x000c8b60 ldr r1, [pc, 0x2ac] | r1 = *(0xc8e10);
0x000c8b64 str sb, [sp] | *(sp) = sb;
0x000c8b68 mov r3, 0 | r3 = 0;
0x000c8b6c mov r2, r6 | r2 = r6;
0x000c8b70 add r1, pc, r1 | r1 = pc + r1;
0x000c8b74 b 0xc8a94 |
| } while (1);
| label_19:
0x000c8b78 ldr r3, [sp, 0x18] | r3 = var_18h;
0x000c8b7c str sb, [sp] | *(sp) = sb;
0x000c8b80 cmp r3, 4 |
0x000c8b84 mov r2, r4 | r2 = r4;
0x000c8b88 mov r3, 0 | r3 = 0;
| if (r3 != 4) {
0x000c8b8c ldreq r1, [pc, 0x284] | r1 = *((pc + 0x284));
| }
| if (r3 == 4) {
0x000c8b90 addeq r1, pc, r1 | r1 = pc + r1;
| goto label_23;
| }
| if (r3 == 4) {
| label_23:
0x000c8b94 beq 0xc8b0c | goto label_0;
| }
0x000c8b98 ldr r1, [pc, 0x27c] | r1 = *(0xc8e18);
0x000c8b9c add r1, pc, r1 | r1 = pc + r1;
0x000c8ba0 b 0xc8b0c | goto label_0;
| label_20:
0x000c8ba4 ldr r1, [pc, 0x274] | r1 = *(0xc8e1c);
0x000c8ba8 str sb, [sp] | *(sp) = sb;
0x000c8bac mov r3, 0 | r3 = 0;
0x000c8bb0 ldr r2, [sp, 0x24] | r2 = var_24h;
0x000c8bb4 add r1, pc, r1 | r1 = pc + r1;
0x000c8bb8 mov r0, r5 | r0 = r5;
0x000c8bbc bl 0x61578 | r0 = ASN1_bn_print ();
0x000c8bc0 cmp r0, 0 |
| if (r0 != 0) {
0x000c8bc4 bne 0xc8b4c | goto label_1;
| }
| do {
| label_2:
0x000c8bc8 mov r2, 0x20 | r2 = 0x20;
0x000c8bcc b 0xc8d28 | goto label_6;
| label_21:
0x000c8bd0 cmp sb, 0 |
| if (sb <= 0) {
0x000c8bd4 ble 0xc8c14 | goto label_24;
| }
0x000c8bd8 cmp sb, 0x80 |
| if (sb >= 0x80) {
0x000c8bdc movlt r3, sb | r3 = sb;
| }
| if (sb < 0x80) {
0x000c8be0 movge r3, 0x80 | r3 = 0x80;
| }
0x000c8be4 mov r2, r3 | r2 = r3;
0x000c8be8 str r3, [sp, 0xc] | var_ch = r3;
0x000c8bec add r3, sp, 0x28 | r3 += s;
0x000c8bf0 mov r1, 0x20 | r1 = 0x20;
0x000c8bf4 mov r0, r3 | r0 = r3;
0x000c8bf8 bl 0x4f4ac | memset (r0, r1, r2);
0x000c8bfc ldr r2, [sp, 0xc] | r2 = var_ch;
0x000c8c00 mov r1, r0 | r1 = r0;
0x000c8c04 mov r0, r5 | r0 = r5;
0x000c8c08 bl 0x6e820 | r0 = BIO_write ();
0x000c8c0c cmp r0, 0 |
0x000c8c10 ble 0xc8bc8 |
| } while (r0 <= 0);
| label_24:
0x000c8c14 ldr r2, [pc, 0x208] | r2 = *(0xc8e20);
0x000c8c18 ldr r1, [pc, 0x208] | r1 = *(0xc8e24);
0x000c8c1c add r2, pc, r2 | r2 = pc + r2;
0x000c8c20 add r1, pc, r1 | r1 = pc + r1;
0x000c8c24 mov r0, r5 | r0 = r5;
0x000c8c28 bl 0x6bbc4 | r0 = BIO_printf ()
0x000c8c2c cmp r0, 0 |
| if (r0 <= 0) {
0x000c8c30 ble 0xc8bc8 | goto label_2;
| }
0x000c8c34 ldr r3, [pc, 0x1f0] | r3 = *(0xc8e28);
0x000c8c38 ldr sl, [pc, 0x1f0] | sl = *(0xc8e2c);
0x000c8c3c add r3, pc, r3 | r3 = pc + r3;
0x000c8c40 str r3, [sp, 0x14] | var_14h = r3;
0x000c8c44 ldr r3, [pc, 0x1e8] | r3 = *(0xc8e30);
0x000c8c48 mov sb, 0 | sb = 0;
0x000c8c4c add r3, pc, r3 | r3 = pc + r3;
0x000c8c50 add sl, pc, sl | sl = pc + sl;
0x000c8c54 str r3, [sp, 0x18] | var_18h = r3;
| do {
0x000c8c58 ldr r3, [sp, 0x10] | r3 = var_10h;
0x000c8c5c cmp r3, sb |
| if (r3 == sb) {
0x000c8c60 bne 0xc8c7c |
0x000c8c64 ldr r1, [pc, 0x1cc] | r1 = *(0xc8e34);
0x000c8c68 mov r2, 1 | r2 = 1;
0x000c8c6c add r1, pc, r1 | r1 = pc + r1;
0x000c8c70 mov r0, r5 | r0 = r5;
0x000c8c74 bl 0x6e820 | BIO_write ();
0x000c8c78 b 0xc8900 | goto label_3;
| }
0x000c8c7c mov r1, 0xf | r1 = 0xf;
0x000c8c80 mov r0, sb | r0 = sb;
0x000c8c84 bl 0x18315c | fcn_0018315c (r0, r1);
0x000c8c88 cmp r1, 0 |
| if (r1 == 0) {
0x000c8c8c beq 0xc8cc4 | goto label_25;
| }
| label_4:
0x000c8c90 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x000c8c94 ldr r1, [sp, 0x18] | r1 = var_18h;
0x000c8c98 ldrb r2, [r3, sb] | r2 = *((r3 + sb));
0x000c8c9c ldr r3, [sp, 0x10] | r3 = var_10h;
0x000c8ca0 add sb, sb, 1 | sb++;
0x000c8ca4 cmp r3, sb |
0x000c8ca8 mov r0, r5 | r0 = r5;
0x000c8cac ldr r3, [sp, 0x14] | r3 = var_14h;
| if (r3 == sb) {
0x000c8cb0 movne r3, sl | r3 = sl;
| }
0x000c8cb4 bl 0x6bbc4 | r0 = BIO_printf ()
0x000c8cb8 cmp r0, 0 |
0x000c8cbc bgt 0xc8c58 |
| } while (r0 > 0);
0x000c8cc0 b 0xc8bc8 | goto label_2;
| label_25:
0x000c8cc4 add r3, sp, 0xb0 | r3 += var_b0h;
0x000c8cc8 mov r2, 0xa | r2 = 0xa;
0x000c8ccc strb r2, [r3, -0x88]! | *((r3 -= 0x88)) = r2;
0x000c8cd0 str r3, [sp, 0x20] | var_20h = r3;
0x000c8cd4 str r3, [sp, 0x24] | var_24h = r3;
0x000c8cd8 ldr r3, [sp, 0xc] | r3 = var_ch;
0x000c8cdc mov r1, 0x20 | r1 = 0x20;
0x000c8ce0 add r2, r3, 4 | r2 = r3 + 4;
0x000c8ce4 add r0, sp, 0x29 | r0 += var_29h;
0x000c8ce8 bl 0x4f4ac | memset (r0, r1, r2);
0x000c8cec ldr r3, [sp, 0xc] | r3 = var_ch;
0x000c8cf0 mov r0, r5 | r0 = r5;
0x000c8cf4 add r2, r3, 5 | r2 = r3 + 5;
0x000c8cf8 ldr r3, [sp, 0x20] | r3 = var_20h;
0x000c8cfc mov r1, r3 | r1 = r3;
0x000c8d00 bl 0x6e820 | r0 = BIO_write ();
0x000c8d04 cmp r0, 0 |
| if (r0 > 0) {
0x000c8d08 bgt 0xc8c90 | goto label_4;
| }
0x000c8d0c b 0xc8bc8 | goto label_2;
| label_8:
0x000c8d10 mov r4, sl | r4 = sl;
0x000c8d14 mov r8, sl | r8 = sl;
0x000c8d18 mov r7, sl | r7 = sl;
0x000c8d1c mov r6, sl | r6 = sl;
0x000c8d20 mov fp, sl |
0x000c8d24 mov r2, 0x43 | r2 = 0x43;
| do {
| label_6:
0x000c8d28 mov r3, 0xd6 | r3 = 0xd6;
0x000c8d2c str r3, [sp] | *(sp) = r3;
0x000c8d30 ldr r3, [pc, 0x104] | r3 = *(0xc8e38);
0x000c8d34 mov r1, 0x95 | r1 = 0x95;
0x000c8d38 add r3, pc, r3 | r3 = pc + r3;
0x000c8d3c mov r0, 0x10 | r0 = 0x10;
0x000c8d40 bl 0xfc7b8 | ERR_put_error ();
0x000c8d44 mov r5, 0 | r5 = 0;
| label_22:
0x000c8d48 mov r0, r6 | r0 = r6;
0x000c8d4c bl 0x843b8 | BN_free ();
0x000c8d50 mov r0, r7 | r0 = r7;
0x000c8d54 bl 0x843b8 | BN_free ();
0x000c8d58 mov r0, r8 | r0 = r8;
0x000c8d5c bl 0x843b8 | BN_free ();
0x000c8d60 mov r0, r4 | r0 = r4;
0x000c8d64 bl 0x843b8 | BN_free ();
0x000c8d68 mov r0, fp | r0 = fp;
0x000c8d6c bl 0x7e7bc | BN_CTX_free ();
0x000c8d70 mov r0, r5 | r0 = r5;
0x000c8d74 add sp, sp, 0xb4 |
0x000c8d78 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_9:
0x000c8d7c mov r4, fp | r4 = fp;
0x000c8d80 mov r8, fp | r8 = fp;
0x000c8d84 mov r7, fp | r7 = fp;
0x000c8d88 mov r6, fp | r6 = fp;
| label_5:
0x000c8d8c mov r2, 0x41 | r2 = 0x41;
0x000c8d90 b 0xc8d28 |
| } while (1);
| label_11:
0x000c8d94 mov r4, 0 | r4 = 0;
| label_10:
0x000c8d98 mov r8, r4 | r8 = r4;
0x000c8d9c mov r7, r4 | r7 = r4;
0x000c8da0 mov r6, r4 | r6 = r4;
0x000c8da4 b 0xc8bc8 | goto label_2;
| label_13:
0x000c8da8 mov r4, r6 | r4 = r6;
0x000c8dac mov r8, r6 | r8 = r6;
0x000c8db0 mov r7, r6 | r7 = r6;
0x000c8db4 b 0xc8d8c | goto label_5;
| label_14:
0x000c8db8 mov r4, r7 | r4 = r7;
0x000c8dbc mov r8, r7 | r8 = r7;
0x000c8dc0 b 0xc8d8c | goto label_5;
| label_15:
0x000c8dc4 mov r4, r8 | r4 = r8;
0x000c8dc8 b 0xc8d8c | goto label_5;
| label_17:
0x000c8dcc ldr r4, [sp, 0x14] | r4 = var_14h;
| label_16:
0x000c8dd0 mov r2, 0x10 | r2 = 0x10;
0x000c8dd4 b 0xc8d28 | goto label_6;
| label_12:
0x000c8dd8 mov r8, r4 | r8 = r4;
0x000c8ddc mov r7, r4 | r7 = r4;
0x000c8de0 mov r6, r4 | r6 = r4;
0x000c8de4 b 0xc8b58 | goto label_7;
| }
; 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/libcrypto.so.1.1 @ 0xc8e40 */
| #include <stdint.h>
|
; (fcn) sym.ECPKParameters_print_fp () | void ECPKParameters_print_fp (int32_t arg1, int32_t arg2) {
| int32_t var_0h;
| int32_t var_ch;
| r0 = arg1;
| r1 = arg2;
0x000c8e40 push {r0, r1, r2, r4, r5, r6, r7, lr} |
0x000c8e44 mov r5, r1 | r5 = r1;
0x000c8e48 mov r6, r2 | r6 = r2;
0x000c8e4c mov r7, r0 | r7 = r0;
0x000c8e50 bl 0x7270c | BIO_s_file ();
0x000c8e54 bl 0x6e4f0 | r0 = BIO_new ();
0x000c8e58 subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 != r0) {
0x000c8e5c bne 0xc8e90 | goto label_0;
| }
0x000c8e60 mov r3, 0x18 | r3 = 0x18;
0x000c8e64 str r3, [sp] | *(sp) = r3;
0x000c8e68 ldr r3, [pc, 0x50] | r3 = *(0xc8ebc);
0x000c8e6c mov r2, 7 | r2 = 7;
0x000c8e70 add r3, pc, r3 | r3 = pc + r3;
0x000c8e74 mov r1, 0x96 | r1 = 0x96;
0x000c8e78 mov r0, 0x10 | r0 = 0x10;
0x000c8e7c bl 0xfc7b8 | ERR_put_error ();
0x000c8e80 mov r5, r4 | r5 = r4;
| do {
0x000c8e84 mov r0, r5 | r0 = r5;
0x000c8e88 add sp, sp, 0xc |
0x000c8e8c pop {r4, r5, r6, r7, pc} |
| label_0:
0x000c8e90 mov r3, r7 | r3 = r7;
0x000c8e94 mov r2, 0 | r2 = 0;
0x000c8e98 mov r1, 0x6a | r1 = 0x6a;
0x000c8e9c bl 0x6ebe8 | BIO_ctrl ();
0x000c8ea0 mov r1, r5 | r1 = r5;
0x000c8ea4 mov r2, r6 | r2 = r6;
0x000c8ea8 mov r0, r4 | r0 = r4;
0x000c8eac bl 0xc8818 | r0 = ECPKParameters_print ();
0x000c8eb0 mov r5, r0 | r5 = r0;
0x000c8eb4 mov r0, r4 | r0 = r4;
0x000c8eb8 bl 0x6e63c | BIO_free ();
0x000c8ebc b 0xc8e84 |
| } while (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/libcrypto.so.1.1 @ 0xbedd8 */
| #include <stdint.h>
|
; (fcn) sym.EC_KEY_print () | void EC_KEY_print (int32_t arg1, int32_t arg2) {
| int32_t var_0h;
| int32_t var_8h;
| int32_t var_ch;
| r0 = arg1;
| r1 = arg2;
| label_6:
0x000be2cc push {r0, r1, r2, r3, r4, r5, r6, r7, r8, sb, sl, lr} |
0x000be2d0 mov sl, 0 | sl = 0;
0x000be2d4 subs r8, r1, 0 | r8 = r1 - 0;
0x000be2d8 str sl, [sp, 8] | var_8h = sl;
0x000be2dc str sl, [sp, 0xc] | var_ch = sl;
0x000be2e0 bne 0xbe314 |
| while (sb == r0) {
0x000be2e4 ldr r3, [pc, 0x234] | r3 = *(0xbe51c);
0x000be2e8 mov r2, 0x43 | r2 = 0x43;
0x000be2ec str r3, [sp] | *(sp) = r3;
0x000be2f0 ldr r3, [pc, 0x22c] | r3 = *(0xbe520);
0x000be2f4 mov r1, 0xdd | r1 = 0xdd;
0x000be2f8 add r3, pc, r3 | r3 = pc + r3;
0x000be2fc mov r0, 0x10 | r0 = 0x10;
0x000be300 bl 0xfc7b8 | ERR_put_error ();
0x000be304 mov r6, 0 | r6 = 0;
| label_1:
0x000be308 mov r0, r6 | r0 = r6;
0x000be30c add sp, sp, 0x10 |
0x000be310 pop {r4, r5, r6, r7, r8, sb, sl, pc} |
0x000be314 mov r6, r0 | r6 = r0;
0x000be318 mov r0, r8 | r0 = r8;
0x000be31c mov r7, r2 | r7 = r2;
0x000be320 mov r4, r3 | r4 = r3;
0x000be324 bl 0xc2068 | r0 = EC_KEY_get0_group ();
0x000be328 subs sb, r0, 0 | sb = r0 - 0;
0x000be32c beq 0xbe2e4 |
| }
0x000be330 cmp r4, 2 |
| if (r4 == 2) {
0x000be334 beq 0xbe460 | goto label_7;
| }
0x000be338 mov r0, r8 | r0 = r8;
0x000be33c bl 0xc2158 | r0 = EC_KEY_get0_public_key ();
0x000be340 subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 == r0) {
0x000be344 beq 0xbe508 | goto label_8;
| }
0x000be348 mov r0, r8 | r0 = r8;
0x000be34c bl 0xc2370 | EC_KEY_get_conv_form ();
0x000be350 mov r3, sl | r3 = sl;
0x000be354 add r2, sp, 0xc | r2 += var_ch;
0x000be358 mov r1, r0 | r1 = r0;
0x000be35c mov r0, r8 | r0 = r8;
0x000be360 bl 0xc23d4 | r0 = EC_KEY_key2buf ();
0x000be364 subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 != r0) {
0x000be368 bne 0xbe508 | goto label_8;
| }
| do {
0x000be36c mov r4, 0 | r4 = 0;
| label_0:
0x000be370 ldr r3, [pc, 0x1b0] | r3 = *(0xbe524);
0x000be374 mov r2, 0x10 | r2 = 0x10;
0x000be378 str r3, [sp] | *(sp) = r3;
0x000be37c ldr r3, [pc, 0x1a8] | r3 = *(0xbe528);
0x000be380 mov r1, 0xdd | r1 = 0xdd;
0x000be384 add r3, pc, r3 | r3 = pc + r3;
0x000be388 mov r0, r2 | r0 = r2;
0x000be38c bl 0xfc7b8 | ERR_put_error ();
0x000be390 mov r6, 0 | r6 = 0;
0x000be394 b 0xbe430 | goto label_9;
| label_5:
0x000be398 mov r0, r8 | r0 = r8;
0x000be39c bl 0xc20bc | r0 = EC_KEY_get0_private_key ();
0x000be3a0 cmp r0, 0 |
| if (r0 == 0) {
0x000be3a4 beq 0xbe474 | goto label_10;
| }
0x000be3a8 add r1, sp, 8 | r1 += var_8h;
0x000be3ac mov r0, r8 | r0 = r8;
0x000be3b0 bl 0xc26b4 | r0 = EC_KEY_priv2buf ();
0x000be3b4 subs r4, r0, 0 | r4 = r0 - 0;
0x000be3b8 beq 0xbe36c |
| } while (r4 == r0);
0x000be3bc ldr r8, [pc, 0x16c] | r8 = *(0xbe52c);
0x000be3c0 add r8, pc, r8 | r8 = pc + r8;
| label_2:
0x000be3c4 mov r2, 0x80 | r2 = 0x80;
0x000be3c8 mov r1, r7 | r1 = r7;
0x000be3cc mov r0, r6 | r0 = r6;
0x000be3d0 bl 0x6eb94 | r0 = BIO_indent ();
0x000be3d4 cmp r0, 0 |
| if (r0 == 0) {
0x000be3d8 beq 0xbe370 | goto label_0;
| }
0x000be3dc mov r0, sb | r0 = sb;
0x000be3e0 bl 0xc2e88 | EC_GROUP_order_bits ();
0x000be3e4 ldr r1, [pc, 0x148] | r1 = *(0xbe530);
0x000be3e8 mov r2, r8 | r2 = r8;
0x000be3ec add r1, pc, r1 | r1 = pc + r1;
0x000be3f0 mov r3, r0 | r3 = r0;
0x000be3f4 mov r0, r6 | r0 = r6;
0x000be3f8 bl 0x6bbc4 | r0 = BIO_printf ()
0x000be3fc cmp r0, 0 |
| if (r0 <= 0) {
0x000be400 ble 0xbe370 | goto label_0;
| }
0x000be404 cmp r4, 0 |
| if (r4 != 0) {
0x000be408 bne 0xbe480 | goto label_11;
| }
| label_3:
0x000be40c cmp r5, 0 |
| if (r5 != 0) {
0x000be410 bne 0xbe4c4 | goto label_12;
| }
| label_4:
0x000be414 mov r0, r6 | r0 = r6;
0x000be418 mov r2, r7 | r2 = r7;
0x000be41c mov r1, sb | r1 = sb;
0x000be420 bl 0xc8818 | r0 = ECPKParameters_print ();
0x000be424 cmp r0, 0 |
| if (r0 != 0) {
0x000be428 movne r6, 1 | r6 = 1;
| goto label_13;
| }
| if (r0 == 0) {
| label_13:
0x000be42c beq 0xbe370 | goto label_0;
| }
| label_9:
0x000be430 ldr r5, [pc, 0x100] | r5 = *(0xbe534);
0x000be434 mov r1, r4 | r1 = r4;
0x000be438 add r5, pc, r5 | r5 = pc + r5;
0x000be43c mov r2, r5 | r2 = r5;
0x000be440 ldr r0, [sp, 8] | r0 = var_8h;
0x000be444 mov r3, 0x190 | r3 = 0x190;
0x000be448 bl 0x11866c | CRYPTO_clear_free ();
0x000be44c ldr r2, [pc, 0xe8] | r2 = *(0xbe538);
0x000be450 mov r1, r5 | r1 = r5;
0x000be454 ldr r0, [sp, 0xc] | r0 = var_ch;
0x000be458 bl 0x11842c | CRYPTO_free ();
0x000be45c b 0xbe308 | goto label_1;
| label_7:
0x000be460 ldr r8, [pc, 0xd8] | r8 = *(0xbe53c);
0x000be464 mov r5, sl | r5 = sl;
0x000be468 mov r4, sl | r4 = sl;
0x000be46c add r8, pc, r8 | r8 = pc + r8;
0x000be470 b 0xbe3c4 | goto label_2;
| label_10:
0x000be474 ldr r8, [pc, 0xc8] | r8 = *(0xbe540);
0x000be478 add r8, pc, r8 | r8 = pc + r8;
0x000be47c b 0xbe3c4 | goto label_2;
| label_11:
0x000be480 ldr r3, [pc, 0xc0] | r3 = *(0xbe544);
0x000be484 ldr r1, [pc, 0xc0] | r1 = *(0xbe548);
0x000be488 add r3, pc, r3 | r3 = pc + r3;
0x000be48c mov r2, r7 | r2 = r7;
0x000be490 add r1, pc, r1 | r1 = pc + r1;
0x000be494 mov r0, r6 | r0 = r6;
0x000be498 bl 0x6bbc4 | r0 = BIO_printf ()
0x000be49c cmp r0, 0 |
| if (r0 <= 0) {
0x000be4a0 ble 0xbe370 | goto label_0;
| }
0x000be4a4 add r3, r7, 4 | r3 = r7 + 4;
0x000be4a8 mov r2, r4 | r2 = r4;
0x000be4ac ldr r1, [sp, 8] | r1 = var_8h;
0x000be4b0 mov r0, r6 | r0 = r6;
0x000be4b4 bl 0x6147c | r0 = ASN1_buf_print ();
0x000be4b8 cmp r0, 0 |
| if (r0 == 0) {
0x000be4bc beq 0xbe370 | goto label_0;
| }
0x000be4c0 b 0xbe40c | goto label_3;
| label_12:
0x000be4c4 ldr r3, [pc, 0x84] | r3 = *(0xbe54c);
0x000be4c8 ldr r1, [pc, 0x84] | r1 = *(0xbe550);
0x000be4cc add r3, pc, r3 | r3 = pc + r3;
0x000be4d0 mov r2, r7 | r2 = r7;
0x000be4d4 add r1, pc, r1 | r1 = pc + r1;
0x000be4d8 mov r0, r6 | r0 = r6;
0x000be4dc bl 0x6bbc4 | r0 = BIO_printf ()
0x000be4e0 cmp r0, 0 |
| if (r0 <= 0) {
0x000be4e4 ble 0xbe370 | goto label_0;
| }
0x000be4e8 add r3, r7, 4 | r3 = r7 + 4;
0x000be4ec mov r2, r5 | r2 = r5;
0x000be4f0 ldr r1, [sp, 0xc] | r1 = var_ch;
0x000be4f4 mov r0, r6 | r0 = r6;
0x000be4f8 bl 0x6147c | r0 = ASN1_buf_print ();
0x000be4fc cmp r0, 0 |
| if (r0 != 0) {
0x000be500 bne 0xbe414 | goto label_4;
| }
0x000be504 b 0xbe370 | goto label_0;
| label_8:
0x000be508 cmp r4, 0 |
| if (r4 == 0) {
0x000be50c beq 0xbe398 | goto label_5;
| }
0x000be510 ldr r8, [pc, 0x40] | r8 = *(0xbe554);
0x000be514 mov r4, 0 | r4 = 0;
0x000be518 add r8, pc, r8 | r8 = pc + r8;
0x000be51c b 0xbe3c4 | goto label_2;
0x000bedd8 push {r4, r5, r6, lr} |
0x000beddc mov r5, r0 | r5 = r0;
0x000bede0 mov r0, r1 | r0 = r1;
0x000bede4 mov r4, r1 | r4 = r1;
0x000bede8 mov r6, r2 | r6 = r2;
0x000bedec bl 0xc20bc | EC_KEY_get0_private_key ();
0x000bedf0 mov r2, r6 | r2 = r6;
0x000bedf4 mov r1, r4 | r1 = r4;
0x000bedf8 clz r3, r0 | r3 &= r0;
0x000bedfc mov r0, r5 | r0 = r5;
0x000bee00 lsr r3, r3, 5 | r3 >>= 5;
0x000bee04 pop {r4, r5, r6, lr} |
0x000bee08 b 0xbe2cc | goto label_6;
| }
; 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/libcrypto.so.1.1 @ 0xc8718 */
| #include <stdint.h>
|
; (fcn) sym.EC_KEY_print_fp () | void EC_KEY_print_fp (int32_t arg1, int32_t arg2) {
| int32_t var_0h;
| int32_t var_ch;
| r0 = arg1;
| r1 = arg2;
0x000c8718 push {r0, r1, r2, r4, r5, r6, r7, lr} |
0x000c871c mov r5, r1 | r5 = r1;
0x000c8720 mov r6, r2 | r6 = r2;
0x000c8724 mov r7, r0 | r7 = r0;
0x000c8728 bl 0x7270c | BIO_s_file ();
0x000c872c bl 0x6e4f0 | r0 = BIO_new ();
0x000c8730 subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 != r0) {
0x000c8734 bne 0xc8768 | goto label_0;
| }
0x000c8738 mov r3, 0x27 | r3 = 0x27;
0x000c873c str r3, [sp] | *(sp) = r3;
0x000c8740 ldr r3, [pc, 0x50] | r3 = *(0xc8794);
0x000c8744 mov r2, 0x20 | r2 = 0x20;
0x000c8748 add r3, pc, r3 | r3 = pc + r3;
0x000c874c mov r1, 0xb5 | r1 = 0xb5;
0x000c8750 mov r0, 0x10 | r0 = 0x10;
0x000c8754 bl 0xfc7b8 | ERR_put_error ();
0x000c8758 mov r5, r4 | r5 = r4;
| do {
0x000c875c mov r0, r5 | r0 = r5;
0x000c8760 add sp, sp, 0xc |
0x000c8764 pop {r4, r5, r6, r7, pc} |
| label_0:
0x000c8768 mov r3, r7 | r3 = r7;
0x000c876c mov r2, 0 | r2 = 0;
0x000c8770 mov r1, 0x6a | r1 = 0x6a;
0x000c8774 bl 0x6ebe8 | BIO_ctrl ();
0x000c8778 mov r1, r5 | r1 = r5;
0x000c877c mov r2, r6 | r2 = r6;
0x000c8780 mov r0, r4 | r0 = r4;
0x000c8784 bl 0xbedd8 | r0 = EC_KEY_print ();
0x000c8788 mov r5, r0 | r5 = r0;
0x000c878c mov r0, r4 | r0 = r4;
0x000c8790 bl 0x6e63c | BIO_free ();
0x000c8794 b 0xc875c |
| } while (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/libcrypto.so.1.1 @ 0x176104 */
| #include <stdint.h>
|
; (fcn) sym.GENERAL_NAME_print () | void GENERAL_NAME_print (int32_t arg1, int32_t arg2) {
| int32_t var_0h_2;
| int32_t var_4h_2;
| int32_t var_ch;
| int32_t var_0h;
| int32_t var_4h;
| r0 = arg1;
| r1 = arg2;
0x00176104 ldr r3, [r1] | r3 = *(r1);
0x00176108 push {r0, r1, r2, r4, r5, r6, r7, lr} |
0x0017610c mov r4, r0 | r4 = r0;
0x00176110 mov r5, r1 | r5 = r1;
0x00176114 cmp r3, 8 |
| if (r3 > 8) {
| /* switch table (9 cases) at 0x176120 */
0x00176118 addls pc, pc, r3, lsl 2 | pc += (r3 << 2);
| }
0x0017611c b 0x176154 | goto label_1;
0x00176120 b 0x176144 | goto label_3;
0x00176124 b 0x176178 | goto label_4;
0x00176128 b 0x176194 | goto label_5;
0x0017612c b 0x176160 | goto label_6;
0x00176130 b 0x1761bc | goto label_7;
0x00176134 b 0x17616c | goto label_8;
0x00176138 b 0x1761a8 | goto label_9;
0x0017613c b 0x1761e0 | goto label_10;
0x00176140 b 0x176290 | goto label_11;
| label_3:
0x00176144 ldr r1, [pc, 0x160] | r1 = *(0x1762a8);
0x00176148 add r1, pc, r1 | r1 = pc + r1;
| do {
| label_0:
0x0017614c mov r0, r4 | r0 = r4;
0x00176150 bl 0x6bbc4 | BIO_printf ()
| label_1:
0x00176154 mov r0, 1 | r0 = 1;
0x00176158 add sp, sp, 0xc |
0x0017615c pop {r4, r5, r6, r7, pc} |
| label_6:
0x00176160 ldr r1, [pc, 0x148] | r1 = *(0x1762ac);
0x00176164 add r1, pc, r1 | r1 = pc + r1;
0x00176168 b 0x17614c |
| } while (1);
| label_8:
0x0017616c ldr r1, [pc, 0x140] | r1 = "_";
0x00176170 add r1, pc, r1 | r1 = pc + r1;
0x00176174 b 0x17614c | goto label_0;
| label_4:
0x00176178 ldr r3, [r1, 4] | r3 = *((r1 + 4));
0x0017617c ldr r1, [pc, 0x134] | r1 = *(0x1762b4);
0x00176180 ldr r2, [r3, 8] | r2 = *((r3 + 8));
0x00176184 add r1, pc, r1 | r1 = pc + r1;
| do {
| label_2:
0x00176188 mov r0, r4 | r0 = r4;
0x0017618c bl 0x6bbc4 | BIO_printf ()
0x00176190 b 0x176154 | goto label_1;
| label_5:
0x00176194 ldr r3, [r1, 4] | r3 = *((r1 + 4));
0x00176198 ldr r1, [pc, 0x11c] | r1 = *(0x1762b8);
0x0017619c ldr r2, [r3, 8] | r2 = *((r3 + 8));
0x001761a0 add r1, pc, r1 | r1 = pc + r1;
0x001761a4 b 0x176188 |
| } while (1);
| label_9:
0x001761a8 ldr r3, [r1, 4] | r3 = *((r1 + 4));
0x001761ac ldr r1, [pc, 0x10c] | r1 = *(0x1762bc);
0x001761b0 ldr r2, [r3, 8] | r2 = *((r3 + 8));
0x001761b4 add r1, pc, r1 | r1 = pc + r1;
0x001761b8 b 0x176188 | goto label_2;
| label_7:
0x001761bc ldr r1, [pc, 0x100] | r1 = *(0x1762c0);
0x001761c0 add r1, pc, r1 | r1 = pc + r1;
0x001761c4 bl 0x6bbc4 | BIO_printf ()
0x001761c8 ldr r3, [pc, 0xf8] | r3 = *(0x1762c4);
0x001761cc mov r2, 0 | r2 = 0;
0x001761d0 ldr r1, [r5, 4] | r1 = *((r5 + 4));
0x001761d4 mov r0, r4 | r0 = r4;
0x001761d8 bl 0x57980 | X509_NAME_print_ex ();
0x001761dc b 0x176154 | goto label_1;
| label_10:
0x001761e0 ldr r3, [r1, 4] | r3 = *((r1 + 4));
0x001761e4 ldr r5, [r3, 8] | r5 = *((r3 + 8));
0x001761e8 ldr r3, [r3] | r3 = *(r3);
0x001761ec cmp r3, 4 |
| if (r3 == 4) {
0x001761f0 bne 0x17621c |
0x001761f4 ldrb r1, [r5, 3] | r1 = *((r5 + 3));
0x001761f8 ldrb r3, [r5, 1] | r3 = *((r5 + 1));
0x001761fc ldrb r2, [r5] | r2 = *(r5);
0x00176200 str r1, [sp, 4] | var_4h = r1;
0x00176204 ldrb r1, [r5, 2] | r1 = *((r5 + 2));
0x00176208 str r1, [sp] | *(sp) = r1;
0x0017620c ldr r1, [pc, 0xb8] | r1 = *(0x1762c8);
0x00176210 add r1, pc, r1 | r1 = pc + r1;
0x00176214 bl 0x6bbc4 | BIO_printf ()
0x00176218 b 0x176154 | goto label_1;
| }
0x0017621c cmp r3, 0x10 |
| if (r3 != 0x10) {
0x00176220 bne 0x176284 | goto label_12;
| }
0x00176224 ldr r1, [pc, 0xa4] | r1 = *(0x1762cc);
0x00176228 ldr r7, [pc, 0xa4] | r7 = *(0x1762d0);
0x0017622c add r1, pc, r1 | r1 = pc + r1;
0x00176230 bl 0x6bbc4 | BIO_printf ()
0x00176234 add r6, r5, 0x10 | r6 = r5 + 0x10;
0x00176238 add r7, pc, r7 | r7 = pc + r7;
| do {
0x0017623c ldrb r3, [r5, 1] | r3 = *((r5 + 1));
0x00176240 ldrb r2, [r5] | r2 = *(r5);
0x00176244 mov r1, r7 | r1 = r7;
0x00176248 orr r2, r2, r3, lsl 8 | r2 |= (r3 << 8);
0x0017624c lsr r3, r2, 8 | r3 = r2 >> 8;
0x00176250 orr r2, r3, r2, lsl 8 | r2 = r3 | (r2 << 8);
0x00176254 lsl r2, r2, 0x10 | r2 <<= 0x10;
0x00176258 lsr r2, r2, 0x10 | r2 >>= 0x10;
0x0017625c mov r0, r4 | r0 = r4;
0x00176260 add r5, r5, 2 | r5 += 2;
0x00176264 bl 0x6bbc4 | BIO_printf ()
0x00176268 cmp r6, r5 |
0x0017626c bne 0x17623c |
| } while (r6 != r5);
0x00176270 ldr r1, [pc, 0x60] | r1 = *(0x1762d4);
0x00176274 mov r0, r4 | r0 = r4;
0x00176278 add r1, pc, r1 | r1 = pc + r1;
0x0017627c bl 0x6e860 | BIO_puts ();
0x00176280 b 0x176154 | goto label_1;
| label_12:
0x00176284 ldr r1, [pc, 0x50] | r1 = *(0x1762d8);
0x00176288 add r1, pc, r1 | r1 = pc + r1;
0x0017628c b 0x17614c | goto label_0;
| label_11:
0x00176290 ldr r1, [pc, 0x48] | r1 = *(0x1762dc);
0x00176294 add r1, pc, r1 | r1 = pc + r1;
0x00176298 bl 0x6bbc4 | BIO_printf ()
0x0017629c ldr r1, [r5, 4] | r1 = *((r5 + 4));
0x001762a0 mov r0, r4 | r0 = r4;
0x001762a4 bl 0x55f58 | i2a_ASN1_OBJECT ();
0x001762a8 b 0x176154 | goto label_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/libcrypto.so.1.1 @ 0x61748 */
| #include <stdint.h>
|
; (fcn) sym.NETSCAPE_SPKI_print () | void NETSCAPE_SPKI_print (int32_t arg1, int32_t arg2) {
| int32_t var_0h;
| int32_t var_ch;
| int32_t var_10h;
| r0 = arg1;
| r1 = arg2;
0x00061748 push {r0, r1, r2, r3, r4, r5, r6, r7, r8, sb, sl, lr} |
0x0006174c mov r5, r1 | r5 = r1;
0x00061750 ldr r1, [pc, 0x198] | r1 = *(0x618ec);
0x00061754 mov r4, r0 | r4 = r0;
0x00061758 add r1, pc, r1 | r1 = pc + r1;
0x0006175c bl 0x6bbc4 | BIO_printf ()
0x00061760 ldr r3, [r5] | r3 = *(r5);
0x00061764 add r0, sp, 0xc | r0 += var_ch;
0x00061768 ldr r3, [r3] | r3 = *(r3);
0x0006176c str r3, [sp] | *(sp) = r3;
0x00061770 mov r3, 0 | r3 = 0;
0x00061774 mov r2, r3 | r2 = r3;
0x00061778 mov r1, r3 | r1 = r3;
0x0006177c bl 0x1702d8 | X509_PUBKEY_get0_param ();
0x00061780 ldr r0, [sp, 0xc] | r0 = var_ch;
0x00061784 bl 0x120878 | r0 = OBJ_obj2nid ();
0x00061788 cmp r0, 0 |
| if (r0 == 0) {
0x0006178c beq 0x6186c | goto label_3;
| }
0x00061790 bl 0x120690 | r0 = OBJ_nid2ln ();
0x00061794 mov r2, r0 | r2 = r0;
| do {
0x00061798 ldr r1, [pc, 0x154] | r1 = *(0x618f0);
0x0006179c mov r0, r4 | r0 = r4;
0x000617a0 add r1, pc, r1 | r1 = pc + r1;
0x000617a4 bl 0x6bbc4 | BIO_printf ()
0x000617a8 ldr r3, [r5] | r3 = *(r5);
0x000617ac ldr r0, [r3] | r0 = *(r3);
0x000617b0 bl 0x16fedc | r0 = X509_PUBKEY_get ();
0x000617b4 subs r6, r0, 0 | r6 = r0 - 0;
| if (r6 != r0) {
0x000617b8 bne 0x61878 | goto label_4;
| }
0x000617bc ldr r1, [pc, 0x134] | r1 = *(0x618f4);
0x000617c0 mov r0, r4 | r0 = r4;
0x000617c4 add r1, pc, r1 | r1 = pc + r1;
0x000617c8 bl 0x6bbc4 | BIO_printf ()
| label_0:
0x000617cc ldr r3, [r5] | r3 = *(r5);
0x000617d0 ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x000617d4 ldr r2, [r3] | r2 = *(r3);
0x000617d8 cmp r2, 0 |
| if (r2 != 0) {
0x000617dc beq 0x617f4 |
0x000617e0 ldr r1, [pc, 0x114] | r1 = *(0x618f8);
0x000617e4 ldr r2, [r3, 8] | r2 = *((r3 + 8));
0x000617e8 add r1, pc, r1 | r1 = pc + r1;
0x000617ec mov r0, r4 | r0 = r4;
0x000617f0 bl 0x6bbc4 | BIO_printf ()
| }
0x000617f4 ldr r0, [r5, 4] | r0 = *((r5 + 4));
0x000617f8 bl 0x120878 | r0 = OBJ_obj2nid ();
0x000617fc cmp r0, 0 |
| if (r0 == 0) {
0x00061800 beq 0x61898 | goto label_5;
| }
0x00061804 bl 0x120690 | r0 = OBJ_nid2ln ();
0x00061808 mov r2, r0 | r2 = r0;
| label_1:
0x0006180c ldr r1, [pc, 0xec] | r1 = *(0x618fc);
0x00061810 mov r0, r4 | r0 = r4;
0x00061814 add r1, pc, r1 | r1 = pc + r1;
0x00061818 bl 0x6bbc4 | BIO_printf ()
0x0006181c ldr r3, [r5, 0xc] | r3 = *((r5 + 0xc));
0x00061820 ldr r8, [pc, 0xdc] | r8 = *(0x61900);
0x00061824 ldr sb, [pc, 0xdc] | sb = *(0x61904);
0x00061828 ldr sl, [pc, 0xdc] | sl = *(0x61908);
0x0006182c ldr r6, [r3] | r6 = *(r3);
0x00061830 ldr r7, [r3, 8] | r7 = *((r3 + 8));
0x00061834 mov r5, 0 | r5 = 0;
0x00061838 add r8, pc, r8 | r8 = pc + r8;
0x0006183c add sb, pc, sb | sb = pc + sb;
0x00061840 add sl, pc, sl | sl = pc + sl;
| label_2:
0x00061844 cmp r5, r6 |
| if (r5 < r6) {
0x00061848 blt 0x618a4 | goto label_6;
| }
0x0006184c ldr r1, [pc, 0xbc] | r1 = *(0x6190c);
0x00061850 mov r2, 1 | r2 = 1;
0x00061854 add r1, pc, r1 | r1 = pc + r1;
0x00061858 mov r0, r4 | r0 = r4;
0x0006185c bl 0x6e820 | BIO_write ();
0x00061860 mov r0, 1 | r0 = 1;
0x00061864 add sp, sp, 0x10 |
0x00061868 pop {r4, r5, r6, r7, r8, sb, sl, pc} |
| label_3:
0x0006186c ldr r2, [pc, 0xa0] | r2 = *(0x61910);
0x00061870 add r2, pc, r2 | r2 = pc + r2;
0x00061874 b 0x61798 |
| } while (1);
| label_4:
0x00061878 mov r3, 0 | r3 = 0;
0x0006187c mov r2, 4 | r2 = 4;
0x00061880 mov r1, r6 | r1 = r6;
0x00061884 mov r0, r4 | r0 = r4;
0x00061888 bl 0x10e7ac | EVP_PKEY_print_public ();
0x0006188c mov r0, r6 | r0 = r6;
0x00061890 bl 0x10e4d0 | EVP_PKEY_free ();
0x00061894 b 0x617cc | goto label_0;
| label_5:
0x00061898 ldr r2, [pc, 0x78] | r2 = *(0x61914);
0x0006189c add r2, pc, r2 | r2 = pc + r2;
0x000618a0 b 0x6180c | goto label_1;
| label_6:
0x000618a4 mov r1, 0x12 | r1 = 0x12;
0x000618a8 mov r0, r5 | r0 = r5;
0x000618ac bl 0x183258 | fcn_00183258 (r0, r1);
0x000618b0 cmp r1, 0 |
| if (r1 == 0) {
0x000618b4 bne 0x618c8 |
0x000618b8 mov r2, 7 | r2 = 7;
0x000618bc mov r1, r8 | r1 = r8;
0x000618c0 mov r0, r4 | r0 = r4;
0x000618c4 bl 0x6e820 | BIO_write ();
| }
0x000618c8 ldr r1, [pc, 0x4c] | r1 = *(0x61918);
0x000618cc ldrb r2, [r7, r5] | r2 = *((r7 + r5));
0x000618d0 add r5, r5, 1 | r5++;
0x000618d4 cmp r5, r6 |
| if (r5 != r6) {
0x000618d8 moveq r3, sb | r3 = sb;
| }
| if (r5 == r6) {
0x000618dc movne r3, sl | r3 = sl;
| }
0x000618e0 add r1, pc, r1 | r1 = pc + r1;
0x000618e4 mov r0, r4 | r0 = r4;
0x000618e8 bl 0x6bbc4 | BIO_printf ()
0x000618ec b 0x61844 | goto label_2;
| }
; 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/libcrypto.so.1.1 @ 0x123ea0 */
| #include <stdint.h>
|
; (fcn) sym.OCSP_REQUEST_print () | void OCSP_REQUEST_print (int32_t arg1, int32_t arg2) {
| int32_t var_0h;
| int32_t var_ch;
| r0 = arg1;
| r1 = arg2;
0x00123ea0 push {r0, r1, r2, r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00123ea4 ldr r6, [r1, 0x10] | r6 = *((r1 + 0x10));
0x00123ea8 mov r5, r1 | r5 = r1;
0x00123eac ldr r1, [pc, 0x198] | r1 = *(0x124048);
0x00123eb0 mov r8, r2 | r8 = r2;
0x00123eb4 add r1, pc, r1 | r1 = pc + r1;
0x00123eb8 mov r2, 0x13 | r2 = 0x13;
0x00123ebc mov r4, r0 | r4 = r0;
0x00123ec0 bl 0x6e820 | r0 = BIO_write ();
0x00123ec4 cmp r0, 0 |
0x00123ec8 bgt 0x123ed8 |
| while (r0 <= 0) {
| label_0:
0x00123ecc mov r0, 0 | r0 = 0;
| label_1:
0x00123ed0 add sp, sp, 0xc |
0x00123ed4 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
0x00123ed8 ldr r0, [r5] | r0 = *(r5);
0x00123edc bl 0x550bc | ASN1_INTEGER_get ();
0x00123ee0 ldr r1, [pc, 0x168] | r1 = *(0x12404c);
0x00123ee4 add r1, pc, r1 | r1 = pc + r1;
0x00123ee8 mov r3, r0 | r3 = r0;
0x00123eec add r2, r0, 1 | r2 = r0 + 1;
0x00123ef0 mov r0, r4 | r0 = r4;
0x00123ef4 bl 0x6bbc4 | r0 = BIO_printf ()
0x00123ef8 cmp r0, 0 |
0x00123efc ble 0x123ecc |
| }
0x00123f00 ldr r3, [r5, 4] | r3 = *((r5 + 4));
0x00123f04 cmp r3, 0 |
| if (r3 == 0) {
0x00123f08 beq 0x123f34 | goto label_5;
| }
0x00123f0c ldr r1, [pc, 0x140] | r1 = *(0x124050);
0x00123f10 mov r2, 0x15 | r2 = 0x15;
0x00123f14 add r1, pc, r1 | r1 = pc + r1;
0x00123f18 mov r0, r4 | r0 = r4;
0x00123f1c bl 0x6e820 | r0 = BIO_write ();
0x00123f20 cmp r0, 0 |
| if (r0 <= 0) {
0x00123f24 ble 0x123ecc | goto label_0;
| }
0x00123f28 ldr r1, [r5, 4] | r1 = *((r5 + 4));
0x00123f2c mov r0, r4 | r0 = r4;
0x00123f30 bl 0x176104 | GENERAL_NAME_print ();
| label_5:
0x00123f34 ldr r1, [pc, 0x11c] | r1 = *(0x124054);
0x00123f38 mov r2, 0x15 | r2 = 0x15;
0x00123f3c add r1, pc, r1 | r1 = pc + r1;
0x00123f40 mov r0, r4 | r0 = r4;
0x00123f44 bl 0x6e820 | r0 = BIO_write ();
0x00123f48 cmp r0, 0 |
| if (r0 <= 0) {
0x00123f4c ble 0x123ecc | goto label_0;
| }
0x00123f50 ldr fp, [pc, 0x104] | fp = *(0x0012405c);
0x00123f54 mov r7, 0 | r7 = 0;
0x00123f58 mov sl, 8 | sl = 8;
0x00123f5c add fp, pc, fp |
| label_2:
0x00123f60 ldr r0, [r5, 8] | r0 = *((r5 + 8));
0x00123f64 bl 0x154518 | r0 = OPENSSL_sk_num ();
0x00123f68 cmp r7, r0 |
| if (r7 < r0) {
0x00123f6c blt 0x123fa8 | goto label_6;
| }
0x00123f70 ldr r1, [pc, 0xe8] | r1 = *(0x12405c);
0x00123f74 mov r3, 4 | r3 = 4;
0x00123f78 str r3, [sp] | *(sp) = r3;
0x00123f7c add r1, pc, r1 | r1 = pc + r1;
0x00123f80 mov r3, r8 | r3 = r8;
0x00123f84 ldr r2, [r5, 0xc] | r2 = *((r5 + 0xc));
0x00123f88 mov r0, r4 | r0 = r4;
0x00123f8c bl 0x17f384 | r0 = X509V3_extensions_print ();
0x00123f90 cmp r0, 0 |
| if (r0 == 0) {
0x00123f94 beq 0x123ecc | goto label_0;
| }
0x00123f98 cmp r6, 0 |
| if (r6 != 0) {
0x00123f9c bne 0x123ff0 | goto label_7;
| }
| label_3:
0x00123fa0 mov r0, 1 | r0 = 1;
0x00123fa4 b 0x123ed0 | goto label_1;
| label_6:
0x00123fa8 mov r1, r7 | r1 = r7;
0x00123fac ldr r0, [r5, 8] | r0 = *((r5 + 8));
0x00123fb0 bl 0x154528 | OPENSSL_sk_value ();
0x00123fb4 mov r2, 8 | r2 = 8;
0x00123fb8 ldr r1, [r0] | r1 = *(r0);
0x00123fbc mov sb, r0 | sb = r0;
0x00123fc0 mov r0, r4 | r0 = r4;
0x00123fc4 bl 0x123cb0 | fcn_00123cb0 (r0, r1);
0x00123fc8 str sl, [sp] | *(sp) = sl;
0x00123fcc mov r3, r8 | r3 = r8;
0x00123fd0 ldr r2, [sb, 4] | r2 = *((sb + 4));
0x00123fd4 mov r1, fp | r1 = fp;
0x00123fd8 mov r0, r4 | r0 = r4;
0x00123fdc bl 0x17f384 | r0 = X509V3_extensions_print ();
0x00123fe0 cmp r0, 0 |
| if (r0 == 0) {
0x00123fe4 beq 0x123ecc | goto label_0;
| }
0x00123fe8 add r7, r7, 1 | r7++;
0x00123fec b 0x123f60 | goto label_2;
| label_7:
0x00123ff0 ldr r2, [r6, 8] | r2 = *((r6 + 8));
0x00123ff4 mov r1, r6 | r1 = r6;
0x00123ff8 mov r0, r4 | r0 = r4;
0x00123ffc bl 0x162a3c | X509_signature_print ();
0x00124000 mov r5, 0 | r5 = 0;
| label_4:
0x00124004 ldr r0, [r6, 0xc] | r0 = *((r6 + 0xc));
0x00124008 bl 0x154518 | r0 = OPENSSL_sk_num ();
0x0012400c cmp r5, r0 |
| if (r5 >= r0) {
0x00124010 bge 0x123fa0 | goto label_3;
| }
0x00124014 mov r1, r5 | r1 = r5;
0x00124018 ldr r0, [r6, 0xc] | r0 = *((r6 + 0xc));
0x0012401c bl 0x154528 | r0 = OPENSSL_sk_value ();
0x00124020 mov r1, r0 | r1 = r0;
0x00124024 mov r0, r4 | r0 = r4;
0x00124028 bl 0x16354c | X509_print ();
0x0012402c mov r1, r5 | r1 = r5;
0x00124030 ldr r0, [r6, 0xc] | r0 = *((r6 + 0xc));
0x00124034 bl 0x154528 | OPENSSL_sk_value ();
0x00124038 add r5, r5, 1 | r5++;
0x0012403c mov r1, r0 | r1 = r0;
0x00124040 mov r0, r4 | r0 = r4;
0x00124044 bl 0x12a478 | PEM_write_bio_X509 ();
0x00124048 b 0x124004 | goto label_4;
| }
; 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/libcrypto.so.1.1 @ 0x122f94 */
| #include <stdint.h>
|
; (fcn) sym.OCSP_REQ_CTX_http () | void OCSP_REQ_CTX_http (int32_t arg1, int32_t arg2) {
| r0 = arg1;
| r1 = arg2;
0x00122f94 subs r3, r2, 0 | r3 = r2 - 0;
0x00122f98 push {r4, lr} |
0x00122f9c mov r4, r0 | r4 = r0;
| if (r3 != r2) {
0x00122fa0 ldreq r3, [pc, 0x30] | r3 = *((pc + 0x30));
| }
| if (r3 != r2) {
0x00122fa4 addeq r3, pc, r3 | r3 = pc + r3;
| }
0x00122fa8 mov r2, r1 | r2 = r1;
0x00122fac ldr r1, [pc, 0x28] |
0x00122fb0 ldr r0, [r4, 0x10] | r0 = *((r4 + 0x10));
0x00122fb4 add r1, pc, r1 | r1 = pc + r1;
0x00122fb8 add r1, r1, 0x3f | r1 = 0x123017;
0x00122fbc bl 0x6bbc4 | r0 = BIO_printf ()
0x00122fc0 cmp r0, 0 |
| if (r0 <= 0) {
0x00122fc4 ldrgt r3, [pc, 0x14] | r3 = *((pc + 0x14));
| }
| if (r0 <= 0) {
0x00122fc8 movgt r0, 1 | r0 = 1;
| }
| if (r0 <= 0) {
0x00122fcc strgt r3, [r4] | *(r4) = r3;
| }
| if (r0 > 0) {
0x00122fd0 movle r0, 0 | r0 = 0;
| }
0x00122fd4 pop {r4, pc} |
| }
; 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/libcrypto.so.1.1 @ 0x122f20 */
| #include <stdint.h>
|
; (fcn) sym.OCSP_REQ_CTX_i2d () | void OCSP_REQ_CTX_i2d (int32_t arg1, int32_t arg2) {
| r0 = arg1;
| r1 = arg2;
0x00122f20 push {r4, r5, r6, lr} |
0x00122f24 mov r6, r2 | r6 = r2;
0x00122f28 mov r4, r0 | r4 = r0;
0x00122f2c mov r2, r1 | r2 = r1;
0x00122f30 mov r5, r1 | r5 = r1;
0x00122f34 mov r0, r6 | r0 = r6;
0x00122f38 mov r1, 0 | r1 = 0;
0x00122f3c bl 0x63ba8 | ASN1_item_i2d ();
0x00122f40 ldr r1, [pc, 0x44] | r1 = *(0x122f88);
0x00122f44 add r1, pc, r1 | r1 = pc + r1;
0x00122f48 mov r2, r0 | r2 = r0;
0x00122f4c ldr r0, [r4, 0x10] | r0 = *((r4 + 0x10));
0x00122f50 bl 0x6bbc4 | r0 = BIO_printf ()
0x00122f54 cmp r0, 0 |
0x00122f58 bgt 0x122f64 |
| while (r0 <= 0) {
0x00122f5c mov r0, 0 | r0 = 0;
0x00122f60 pop {r4, r5, r6, pc} |
0x00122f64 mov r2, r6 | r2 = r6;
0x00122f68 ldr r1, [r4, 0x10] | r1 = *((r4 + 0x10));
0x00122f6c mov r0, r5 | r0 = r5;
0x00122f70 bl 0x54504 | r0 = ASN1_item_i2d_bio ();
0x00122f74 cmp r0, 0 |
0x00122f78 ble 0x122f5c |
| }
0x00122f7c ldr r3, [pc, 0xc] | r3 = *(0x122f8c);
0x00122f80 mov r0, 1 | r0 = 1;
0x00122f84 str r3, [r4] | *(r4) = r3;
0x00122f88 pop {r4, r5, r6, pc} |
| }
; 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/libcrypto.so.1.1 @ 0x124064 */
| #include <stdint.h>
|
; (fcn) sym.OCSP_RESPONSE_print () | void OCSP_RESPONSE_print (int32_t arg1, int32_t arg2) {
| int32_t var_0h;
| int32_t var_ch;
| int32_t var_14h;
| r0 = arg1;
| r1 = arg2;
0x00124064 push {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00124068 ldr r6, [r1, 4] | r6 = *((r1 + 4));
0x0012406c mov r5, r1 | r5 = r1;
0x00124070 ldr r1, [pc, 0x408] | r1 = *(0x12447c);
0x00124074 sub sp, sp, 0x14 |
0x00124078 add r1, pc, r1 | r1 = pc + r1;
0x0012407c mov r4, r0 | r4 = r0;
0x00124080 mov r8, r2 | r8 = r2;
0x00124084 bl 0x6e860 | r0 = BIO_puts ();
0x00124088 cmp r0, 0 |
0x0012408c bgt 0x12409c |
| while (r0 <= 0) {
| label_0:
0x00124090 mov r5, 0 | r5 = 0;
| label_1:
0x00124094 mov r3, 0 | r3 = 0;
0x00124098 b 0x12442c | goto label_8;
0x0012409c ldr r0, [r5] | r0 = *(r5);
0x001240a0 bl 0x55144 | r0 = ASN1_ENUMERATED_get ();
0x001240a4 mov r7, r0 | r7 = r0;
0x001240a8 bl 0x123dac | OCSP_response_status_str ();
0x001240ac ldr r1, [pc, 0x3d0] | r1 = *(0x124480);
0x001240b0 mov r3, r7 | r3 = r7;
0x001240b4 add r1, pc, r1 | r1 = pc + r1;
0x001240b8 mov r2, r0 | r2 = r0;
0x001240bc mov r0, r4 | r0 = r4;
0x001240c0 bl 0x6bbc4 | r0 = BIO_printf ()
0x001240c4 cmp r0, 0 |
0x001240c8 ble 0x124090 |
| }
0x001240cc cmp r6, 0 |
| if (r6 == 0) {
0x001240d0 beq 0x124124 | goto label_9;
| }
0x001240d4 ldr r1, [pc, 0x3ac] | r1 = *(0x124484);
0x001240d8 mov r0, r4 | r0 = r4;
0x001240dc add r1, pc, r1 | r1 = pc + r1;
0x001240e0 bl 0x6e860 | r0 = BIO_puts ();
0x001240e4 cmp r0, 0 |
| if (r0 <= 0) {
0x001240e8 ble 0x124090 | goto label_0;
| }
0x001240ec ldr r1, [r6] | r1 = *(r6);
0x001240f0 mov r0, r4 | r0 = r4;
0x001240f4 bl 0x55f58 | r0 = i2a_ASN1_OBJECT ();
0x001240f8 cmp r0, 0 |
| if (r0 <= 0) {
0x001240fc ble 0x124090 | goto label_0;
| }
0x00124100 ldr r0, [r6] | r0 = *(r6);
0x00124104 bl 0x120878 | OBJ_obj2nid ();
0x00124108 ldr r3, [pc, 0x37c] | r3 = "_";
0x0012410c cmp r0, r3 |
| if (r0 != r3) {
0x00124110 beq 0x12412c |
0x00124114 ldr r1, [pc, 0x374] | r1 = *(0x12448c);
0x00124118 mov r0, r4 | r0 = r4;
0x0012411c add r1, pc, r1 | r1 = pc + r1;
0x00124120 bl 0x6e860 | BIO_puts ();
| label_9:
0x00124124 mov r3, 1 | r3 = 1;
0x00124128 b 0x12443c | goto label_10;
| }
0x0012412c mov r0, r5 | r0 = r5;
0x00124130 bl 0x1222b4 | r0 = OCSP_response_get1_basic ();
0x00124134 subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 == r0) {
0x00124138 beq 0x124090 | goto label_0;
| }
0x0012413c ldr r0, [r5] | r0 = *(r5);
0x00124140 bl 0x550bc | ASN1_INTEGER_get ();
0x00124144 ldr r1, [pc, 0x348] | r1 = *(0x124490);
0x00124148 add r1, pc, r1 | r1 = pc + r1;
0x0012414c mov r3, r0 | r3 = r0;
0x00124150 add r2, r0, 1 | r2 = r0 + 1;
0x00124154 mov r0, r4 | r0 = r4;
0x00124158 bl 0x6bbc4 | r0 = BIO_printf ()
0x0012415c cmp r0, 0 |
| if (r0 <= 0) {
0x00124160 ble 0x124094 | goto label_1;
| }
0x00124164 ldr r1, [pc, 0x32c] | r1 = *(0x124494);
0x00124168 mov r0, r4 | r0 = r4;
0x0012416c add r1, pc, r1 | r1 = pc + r1;
0x00124170 bl 0x6e860 | r0 = BIO_puts ();
0x00124174 cmp r0, 0 |
| if (r0 <= 0) {
0x00124178 ble 0x124094 | goto label_1;
| }
0x0012417c ldr r3, [r5, 4] | r3 = *((r5 + 4));
0x00124180 cmp r3, 0 |
| if (r3 == 0) {
0x00124184 beq 0x124260 | goto label_11;
| }
0x00124188 cmp r3, 1 |
| if (r3 == 1) {
0x0012418c beq 0x124278 | goto label_12;
| }
| label_2:
0x00124190 ldr r1, [pc, 0x304] | r1 = *(0x124498);
0x00124194 mov r0, r4 | r0 = r4;
0x00124198 add r1, pc, r1 | r1 = pc + r1;
0x0012419c bl 0x6bbc4 | r0 = BIO_printf ()
0x001241a0 cmp r0, 0 |
| if (r0 <= 0) {
0x001241a4 ble 0x124094 | goto label_1;
| }
0x001241a8 ldr r1, [r5, 0xc] | r1 = *((r5 + 0xc));
0x001241ac mov r0, r4 | r0 = r4;
0x001241b0 bl 0x5438c | r0 = ASN1_GENERALIZEDTIME_print ();
0x001241b4 subs r3, r0, 0 | r3 = r0 - 0;
| if (r3 == r0) {
0x001241b8 beq 0x12442c | goto label_8;
| }
0x001241bc ldr r1, [pc, 0x2dc] | r1 = *(0x12449c);
0x001241c0 mov r0, r4 | r0 = r4;
0x001241c4 add r1, pc, r1 | r1 = pc + r1;
0x001241c8 bl 0x6bbc4 | r0 = BIO_printf ()
0x001241cc cmp r0, 0 |
| if (r0 <= 0) {
0x001241d0 ble 0x124094 | goto label_1;
| }
0x001241d4 ldr r3, [pc, 0x2c8] | r3 = *(0x1244a0);
0x001241d8 ldr sl, [pc, 0x2c8] | sl = *(0x1244a4);
0x001241dc ldr fp, [pc, 0x2c8] | fp = *(0x1244a8);
0x001241e0 add r3, pc, r3 | r3 = pc + r3;
0x001241e4 mov r7, 0 | r7 = 0;
0x001241e8 add sl, pc, sl | sl = pc + sl;
0x001241ec add fp, pc, fp |
0x001241f0 str r3, [sp, 0xc] | var_ch = r3;
| label_3:
0x001241f4 ldr r0, [r5, 0x10] | r0 = *((r5 + 0x10));
0x001241f8 bl 0x154518 | r0 = OPENSSL_sk_num ();
0x001241fc cmp r7, r0 |
| if (r7 < r0) {
0x00124200 blt 0x12428c | goto label_13;
| }
0x00124204 ldr r1, [pc, 0x2a4] | r1 = *(0x1244ac);
0x00124208 mov r3, 4 | r3 = 4;
0x0012420c str r3, [sp] | *(sp) = r3;
0x00124210 add r1, pc, r1 | r1 = pc + r1;
0x00124214 mov r3, r8 | r3 = r8;
0x00124218 ldr r2, [r5, 0x14] | r2 = *((r5 + 0x14));
0x0012421c mov r0, r4 | r0 = r4;
0x00124220 bl 0x17f384 | r0 = X509V3_extensions_print ();
0x00124224 subs r3, r0, 0 | r3 = r0 - 0;
| if (r3 == r0) {
0x00124228 beq 0x12442c | goto label_8;
| }
0x0012422c ldr r2, [r5, 0x20] | r2 = *((r5 + 0x20));
0x00124230 add r1, r5, 0x18 | r1 = r5 + 0x18;
0x00124234 mov r0, r4 | r0 = r4;
0x00124238 bl 0x162a3c | r0 = X509_signature_print ();
0x0012423c cmp r0, 0 |
| if (r0 > 0) {
0x00124240 movgt r6, 0 | r6 = 0;
| goto label_14;
| }
| if (r0 <= 0) {
| label_14:
0x00124244 ble 0x124094 | goto label_1;
| }
| label_7:
0x00124248 ldr r0, [r5, 0x24] | r0 = *((r5 + 0x24));
0x0012424c bl 0x154518 | r0 = OPENSSL_sk_num ();
0x00124250 cmp r6, r0 |
| if (r6 < r0) {
0x00124254 blt 0x124448 | goto label_15;
| }
0x00124258 mov r3, 1 | r3 = 1;
0x0012425c b 0x12442c | goto label_8;
| label_11:
0x00124260 ldr r3, [pc, 0x24c] | r3 = *(0x1244b0);
0x00124264 mov r2, 0 | r2 = 0;
0x00124268 ldr r1, [r5, 8] | r1 = *((r5 + 8));
0x0012426c mov r0, r4 | r0 = r4;
0x00124270 bl 0x57980 | X509_NAME_print_ex ();
0x00124274 b 0x124190 | goto label_2;
| label_12:
0x00124278 mov r2, 0 | r2 = 0;
0x0012427c ldr r1, [r5, 8] | r1 = *((r5 + 8));
0x00124280 mov r0, r4 | r0 = r4;
0x00124284 bl 0x5fb6c | i2a_ASN1_STRING ();
0x00124288 b 0x124190 | goto label_2;
| label_13:
0x0012428c mov r1, r7 | r1 = r7;
0x00124290 ldr r0, [r5, 0x10] | r0 = *((r5 + 0x10));
0x00124294 bl 0x154528 | r0 = OPENSSL_sk_value ();
0x00124298 cmp r0, 0 |
| if (r0 == 0) {
0x0012429c bne 0x1242a8 |
| label_4:
0x001242a0 add r7, r7, 1 | r7++;
0x001242a4 b 0x1241f4 | goto label_3;
| }
0x001242a8 mov r1, r7 | r1 = r7;
0x001242ac ldr r0, [r5, 0x10] | r0 = *((r5 + 0x10));
0x001242b0 bl 0x154528 | OPENSSL_sk_value ();
0x001242b4 mov r2, 4 | r2 = 4;
0x001242b8 ldr r1, [r0] | r1 = *(r0);
0x001242bc mov r6, r0 | r6 = r0;
0x001242c0 mov r0, r4 | r0 = r4;
0x001242c4 bl 0x123cb0 | r0 = fcn_00123cb0 (r0, r1);
0x001242c8 cmp r0, 0 |
| if (r0 <= 0) {
0x001242cc ble 0x124094 | goto label_1;
| }
0x001242d0 ldr sb, [r6, 4] | sb = *((r6 + 4));
0x001242d4 ldr r0, [sb] | r0 = *(sb);
0x001242d8 bl 0x123df0 | OCSP_cert_status_str ();
0x001242dc ldr r1, [sp, 0xc] | r1 = var_ch;
0x001242e0 mov r2, r0 | r2 = r0;
0x001242e4 mov r0, r4 | r0 = r4;
0x001242e8 bl 0x6bbc4 | r0 = BIO_printf ()
0x001242ec cmp r0, 0 |
| if (r0 <= 0) {
0x001242f0 ble 0x124094 | goto label_1;
| }
0x001242f4 ldr r3, [sb] | r3 = *(sb);
0x001242f8 cmp r3, 1 |
| if (r3 == 1) {
0x001242fc beq 0x12439c | goto label_16;
| }
| label_5:
0x00124300 ldr r1, [pc, 0x1b0] | r1 = *(0x1244b4);
0x00124304 mov r0, r4 | r0 = r4;
0x00124308 add r1, pc, r1 | r1 = pc + r1;
0x0012430c bl 0x6bbc4 | r0 = BIO_printf ()
0x00124310 cmp r0, 0 |
| if (r0 <= 0) {
0x00124314 ble 0x124094 | goto label_1;
| }
0x00124318 ldr r1, [r6, 8] | r1 = *((r6 + 8));
0x0012431c mov r0, r4 | r0 = r4;
0x00124320 bl 0x5438c | r0 = ASN1_GENERALIZEDTIME_print ();
0x00124324 subs r3, r0, 0 | r3 = r0 - 0;
| if (r3 == r0) {
0x00124328 beq 0x12442c | goto label_8;
| }
0x0012432c ldr r3, [r6, 0xc] | r3 = *((r6 + 0xc));
0x00124330 cmp r3, 0 |
| if (r3 != 0) {
0x00124334 bne 0x124400 | goto label_17;
| }
| label_6:
0x00124338 ldr sb, [pc, 0x17c] | sb = *(0x1244b8);
0x0012433c mov r2, 1 | r2 = 1;
0x00124340 add sb, pc, sb | sb = pc + sb;
0x00124344 mov r1, sb | r1 = sb;
0x00124348 mov r0, r4 | r0 = r4;
0x0012434c bl 0x6e820 | r0 = BIO_write ();
0x00124350 cmp r0, 0 |
| if (r0 <= 0) {
0x00124354 ble 0x124094 | goto label_1;
| }
0x00124358 ldr r1, [pc, 0x160] | r1 = *(0x1244bc);
0x0012435c mov r3, 8 | r3 = 8;
0x00124360 str r3, [sp] | *(sp) = r3;
0x00124364 add r1, pc, r1 | r1 = pc + r1;
0x00124368 mov r3, r8 | r3 = r8;
0x0012436c ldr r2, [r6, 0x10] | r2 = *((r6 + 0x10));
0x00124370 mov r0, r4 | r0 = r4;
0x00124374 bl 0x17f384 | r0 = X509V3_extensions_print ();
0x00124378 subs r3, r0, 0 | r3 = r0 - 0;
| if (r3 == r0) {
0x0012437c beq 0x12442c | goto label_8;
| }
0x00124380 mov r2, 1 | r2 = 1;
0x00124384 mov r1, sb | r1 = sb;
0x00124388 mov r0, r4 | r0 = r4;
0x0012438c bl 0x6e820 | r0 = BIO_write ();
0x00124390 cmp r0, 0 |
| if (r0 > 0) {
0x00124394 bgt 0x1242a0 | goto label_4;
| }
0x00124398 b 0x124094 | goto label_1;
| label_16:
0x0012439c mov r1, sl | r1 = sl;
0x001243a0 mov r0, r4 | r0 = r4;
0x001243a4 ldr sb, [sb, 4] | sb = *((sb + 4));
0x001243a8 bl 0x6bbc4 | r0 = BIO_printf ()
0x001243ac cmp r0, 0 |
| if (r0 <= 0) {
0x001243b0 ble 0x124094 | goto label_1;
| }
0x001243b4 ldr r1, [sb] | r1 = *(sb);
0x001243b8 mov r0, r4 | r0 = r4;
0x001243bc bl 0x5438c | r0 = ASN1_GENERALIZEDTIME_print ();
0x001243c0 subs r3, r0, 0 | r3 = r0 - 0;
| if (r3 == r0) {
0x001243c4 beq 0x12442c | goto label_8;
| }
0x001243c8 ldr r0, [sb, 4] | r0 = *((sb + 4));
0x001243cc cmp r0, 0 |
| if (r0 == 0) {
0x001243d0 beq 0x124300 | goto label_5;
| }
0x001243d4 bl 0x55144 | r0 = ASN1_ENUMERATED_get ();
0x001243d8 mov sb, r0 | sb = r0;
0x001243dc bl 0x123e58 | OCSP_crl_reason_str ();
0x001243e0 mov r3, sb | r3 = sb;
0x001243e4 mov r1, fp | r1 = fp;
0x001243e8 mov r2, r0 | r2 = r0;
0x001243ec mov r0, r4 | r0 = r4;
0x001243f0 bl 0x6bbc4 | r0 = BIO_printf ()
0x001243f4 cmp r0, 0 |
| if (r0 > 0) {
0x001243f8 bgt 0x124300 | goto label_5;
| }
0x001243fc b 0x124094 | goto label_1;
| label_17:
0x00124400 ldr r1, [pc, 0xbc] | r1 = *(0x1244c0);
0x00124404 mov r0, r4 | r0 = r4;
0x00124408 add r1, pc, r1 | r1 = pc + r1;
0x0012440c bl 0x6bbc4 | r0 = BIO_printf ()
0x00124410 cmp r0, 0 |
| if (r0 <= 0) {
0x00124414 ble 0x124094 | goto label_1;
| }
0x00124418 ldr r1, [r6, 0xc] | r1 = *((r6 + 0xc));
0x0012441c mov r0, r4 | r0 = r4;
0x00124420 bl 0x5438c | r0 = ASN1_GENERALIZEDTIME_print ();
0x00124424 subs r3, r0, 0 | r3 = r0 - 0;
| if (r3 != r0) {
0x00124428 bne 0x124338 | goto label_6;
| }
| label_8:
0x0012442c mov r0, r5 | r0 = r5;
0x00124430 str r3, [sp, 0xc] | var_ch = r3;
0x00124434 bl 0x121eb8 | OCSP_BASICRESP_free ();
0x00124438 ldr r3, [sp, 0xc] | r3 = var_ch;
| label_10:
0x0012443c mov r0, r3 | r0 = r3;
0x00124440 add sp, sp, 0x14 |
0x00124444 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_15:
0x00124448 mov r1, r6 | r1 = r6;
0x0012444c ldr r0, [r5, 0x24] | r0 = *((r5 + 0x24));
0x00124450 bl 0x154528 | r0 = OPENSSL_sk_value ();
0x00124454 mov r1, r0 | r1 = r0;
0x00124458 mov r0, r4 | r0 = r4;
0x0012445c bl 0x16354c | X509_print ();
0x00124460 mov r1, r6 | r1 = r6;
0x00124464 ldr r0, [r5, 0x24] | r0 = *((r5 + 0x24));
0x00124468 bl 0x154528 | OPENSSL_sk_value ();
0x0012446c add r6, r6, 1 | r6++;
0x00124470 mov r1, r0 | r1 = r0;
0x00124474 mov r0, r4 | r0 = r4;
0x00124478 bl 0x12a478 | PEM_write_bio_X509 ();
0x0012447c b 0x124248 | goto label_7;
| }
; 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/libcrypto.so.1.1 @ 0x115df4 */
| #include <stdint.h>
|
; (fcn) sym.OPENSSL_LH_node_stats_bio () | void OPENSSL_LH_node_stats_bio (int32_t arg1, int32_t arg2) {
| r0 = arg1;
| r1 = arg2;
0x00115df4 push {r4, r5, r6, r7, r8, lr} |
0x00115df8 ldr r7, [pc, 0x50] | r7 = *(0x115e4c);
0x00115dfc mov r5, r0 | r5 = r0;
0x00115e00 mov r6, r1 | r6 = r1;
0x00115e04 mov r4, 0 | r4 = 0;
0x00115e08 add r7, pc, r7 | r7 = pc + r7;
| do {
0x00115e0c ldr r3, [r5, 0xc] | r3 = *((r5 + 0xc));
0x00115e10 cmp r3, r4 |
| if (r3 > r4) {
0x00115e14 popls {r4, r5, r6, r7, r8, pc} |
| }
0x00115e18 ldr r3, [r5] | r3 = *(r5);
0x00115e1c ldr r2, [r3, r4, lsl 2] | offset_0 = r4 << 2;
| r2 = *((r3 + offset_0));
0x00115e20 mov r3, 0 | r3 = 0;
| label_0:
0x00115e24 cmp r2, 0 |
| if (r2 != 0) {
0x00115e28 bne 0x115e44 | goto label_1;
| }
0x00115e2c mov r2, r4 | r2 = r4;
0x00115e30 mov r1, r7 | r1 = r7;
0x00115e34 mov r0, r6 | r0 = r6;
0x00115e38 bl 0x6bbc4 | BIO_printf ()
0x00115e3c add r4, r4, 1 | r4++;
0x00115e40 b 0x115e0c |
| } while (1);
| label_1:
0x00115e44 add r3, r3, 1 | r3++;
0x00115e48 ldr r2, [r2, 4] | r2 = *((r2 + 4));
0x00115e4c b 0x115e24 | goto label_0;
| }
; 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/libcrypto.so.1.1 @ 0x115e98 */
| #include <stdint.h>
|
; (fcn) sym.OPENSSL_LH_node_usage_stats_bio () | void OPENSSL_LH_node_usage_stats_bio (int32_t arg1, int32_t arg2) {
| int32_t var_0h;
| int32_t var_4h;
| int32_t var_ch;
| r0 = arg1;
| r1 = arg2;
0x00115e98 ldr r3, [r0, 0xc] | r3 = *((r0 + 0xc));
0x00115e9c push {r0, r1, r2, r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00115ea0 mov r4, 0 | r4 = 0;
0x00115ea4 mov r7, r0 | r7 = r0;
0x00115ea8 mov r6, r1 | r6 = r1;
0x00115eac mov r5, r4 | r5 = r4;
0x00115eb0 mov r2, r4 | r2 = r4;
| do {
0x00115eb4 cmp r3, r2 |
| if (r3 == r2) {
0x00115eb8 bne 0x115f60 |
0x00115ebc ldr r1, [pc, 0xd0] | r1 = *(0x115f90);
0x00115ec0 mov r2, r4 | r2 = r4;
0x00115ec4 add r1, pc, r1 | r1 = pc + r1;
0x00115ec8 mov r0, r6 | r0 = r6;
0x00115ecc bl 0x6bbc4 | BIO_printf ()
0x00115ed0 ldr r1, [pc, 0xc0] | r1 = *(0x115f94);
0x00115ed4 mov r2, r5 | r2 = r5;
0x00115ed8 add r1, pc, r1 | r1 = pc + r1;
0x00115edc mov r0, r6 | r0 = r6;
0x00115ee0 bl 0x6bbc4 | BIO_printf ()
0x00115ee4 cmp r4, 0 |
| if (r4 != 0) {
0x00115ee8 beq 0x115f58 |
0x00115eec ldr r7, [r7, 0xc] | r7 = *((r7 + 0xc));
0x00115ef0 mov r0, r5 | r0 = r5;
0x00115ef4 mov r1, r7 | r1 = r7;
0x00115ef8 bl 0x18315c | r0 = fcn_0018315c (r0, r1);
0x00115efc mov r8, r0 | r8 = r0;
0x00115f00 mov fp, r1 |
0x00115f04 mov r0, r5 | r0 = r5;
0x00115f08 mov r1, r4 | r1 = r4;
0x00115f0c bl 0x18315c | fcn_0018315c (r0, r1);
0x00115f10 mov r5, 0x64 | r5 = 0x64;
0x00115f14 mov sb, r0 | sb = r0;
0x00115f18 mov sl, r1 | sl = r1;
0x00115f1c mul r0, r5, fp | r0 = r5 * fp;
0x00115f20 mov r1, r7 | r1 = r7;
0x00115f24 bl 0x1830b4 | fcn_001830b4 (r0, r1);
0x00115f28 mov r1, r4 | r1 = r4;
0x00115f2c mov r7, r0 | r7 = r0;
0x00115f30 mul r0, r5, sl | r0 = r5 * sl;
0x00115f34 bl 0x1830b4 | fcn_001830b4 (r0, r1);
0x00115f38 ldr r1, [pc, 0x5c] | r1 = *(0x115f98);
0x00115f3c str sb, [sp] | *(sp) = sb;
0x00115f40 mov r3, r7 | r3 = r7;
0x00115f44 mov r2, r8 | r2 = r8;
0x00115f48 add r1, pc, r1 | r1 = pc + r1;
0x00115f4c str r0, [sp, 4] | var_4h = r0;
0x00115f50 mov r0, r6 | r0 = r6;
0x00115f54 bl 0x6bbc4 | BIO_printf ()
| }
0x00115f58 add sp, sp, 0xc |
0x00115f5c pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| }
0x00115f60 ldr r1, [r7] | r1 = *(r7);
0x00115f64 ldr r0, [r1, r2, lsl 2] | offset_0 = r2 << 2;
| r0 = *((r1 + offset_0));
0x00115f68 mov r1, 0 | r1 = 0;
| label_0:
0x00115f6c cmp r0, 0 |
| if (r0 != 0) {
0x00115f70 bne 0x115f88 | goto label_1;
| }
0x00115f74 cmp r1, 0 |
| if (r1 == 0) {
0x00115f78 addne r4, r4, 1 | r4++;
| }
| if (r1 == 0) {
0x00115f7c addne r5, r5, r1 | r5 += r1;
| }
0x00115f80 add r2, r2, 1 | r2++;
0x00115f84 b 0x115eb4 |
| } while (1);
| label_1:
0x00115f88 add r1, r1, 1 | r1++;
0x00115f8c ldr r0, [r0, 4] | r0 = *((r0 + 4));
0x00115f90 b 0x115f6c | goto label_0;
| }
; 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/libcrypto.so.1.1 @ 0x115c20 */
| #include <stdint.h>
|
; (fcn) sym.OPENSSL_LH_stats_bio () | void OPENSSL_LH_stats_bio (int32_t arg1, int32_t arg2) {
| r0 = arg1;
| r1 = arg2;
0x00115c20 push {r4, r5, r6, lr} |
0x00115c24 ldr r2, [r0, 0x24] | r2 = *((r0 + 0x24));
0x00115c28 mov r4, r1 | r4 = r1;
0x00115c2c ldr r1, [pc, 0x13c] | r1 = *(0x115d6c);
0x00115c30 mov r5, r0 | r5 = r0;
0x00115c34 add r1, pc, r1 | r1 = pc + r1;
0x00115c38 mov r0, r4 | r0 = r4;
0x00115c3c bl 0x6bbc4 | BIO_printf ()
0x00115c40 ldr r1, [pc, 0x12c] | r1 = *(0x115d70);
0x00115c44 ldr r2, [r5, 0xc] | r2 = *((r5 + 0xc));
0x00115c48 add r1, pc, r1 | r1 = pc + r1;
0x00115c4c mov r0, r4 | r0 = r4;
0x00115c50 bl 0x6bbc4 | BIO_printf ()
0x00115c54 ldr r1, [pc, 0x11c] | r1 = *(0x115d74);
0x00115c58 ldr r2, [r5, 0x10] | r2 = *((r5 + 0x10));
0x00115c5c add r1, pc, r1 | r1 = pc + r1;
0x00115c60 mov r0, r4 | r0 = r4;
0x00115c64 bl 0x6bbc4 | BIO_printf ()
0x00115c68 ldr r1, [pc, 0x10c] | r1 = *(0x115d78);
0x00115c6c ldr r2, [r5, 0x28] | r2 = *((r5 + 0x28));
0x00115c70 add r1, pc, r1 | r1 = pc + r1;
0x00115c74 mov r0, r4 | r0 = r4;
0x00115c78 bl 0x6bbc4 | BIO_printf ()
0x00115c7c ldr r1, [pc, 0xfc] | r1 = *(0x115d7c);
0x00115c80 ldr r2, [r5, 0x2c] | r2 = *((r5 + 0x2c));
0x00115c84 add r1, pc, r1 | r1 = pc + r1;
0x00115c88 mov r0, r4 | r0 = r4;
0x00115c8c bl 0x6bbc4 | BIO_printf ()
0x00115c90 ldr r1, [pc, 0xec] | r1 = *(0x115d80);
0x00115c94 ldr r2, [r5, 0x30] | r2 = *((r5 + 0x30));
0x00115c98 add r1, pc, r1 | r1 = pc + r1;
0x00115c9c mov r0, r4 | r0 = r4;
0x00115ca0 bl 0x6bbc4 | BIO_printf ()
0x00115ca4 ldr r1, [pc, 0xdc] | r1 = *(0x115d84);
0x00115ca8 ldr r2, [r5, 0x34] | r2 = *((r5 + 0x34));
0x00115cac add r1, pc, r1 | r1 = pc + r1;
0x00115cb0 mov r0, r4 | r0 = r4;
0x00115cb4 bl 0x6bbc4 | BIO_printf ()
0x00115cb8 ldr r1, [pc, 0xcc] | r1 = *(0x115d88);
0x00115cbc ldr r2, [r5, 0x38] | r2 = *((r5 + 0x38));
0x00115cc0 add r1, pc, r1 | r1 = pc + r1;
0x00115cc4 mov r0, r4 | r0 = r4;
0x00115cc8 bl 0x6bbc4 | BIO_printf ()
0x00115ccc ldr r1, [pc, 0xbc] | r1 = *(0x115d8c);
0x00115cd0 ldr r2, [r5, 0x3c] | r2 = *((r5 + 0x3c));
0x00115cd4 add r1, pc, r1 | r1 = pc + r1;
0x00115cd8 mov r0, r4 | r0 = r4;
0x00115cdc bl 0x6bbc4 | BIO_printf ()
0x00115ce0 ldr r1, [pc, 0xac] | r1 = *(0x115d90);
0x00115ce4 ldr r2, [r5, 0x40] | r2 = *((r5 + 0x40));
0x00115ce8 add r1, pc, r1 | r1 = pc + r1;
0x00115cec mov r0, r4 | r0 = r4;
0x00115cf0 bl 0x6bbc4 | BIO_printf ()
0x00115cf4 ldr r1, [pc, 0x9c] | r1 = *(0x115d94);
0x00115cf8 ldr r2, [r5, 0x44] | r2 = *((r5 + 0x44));
0x00115cfc add r1, pc, r1 | r1 = pc + r1;
0x00115d00 mov r0, r4 | r0 = r4;
0x00115d04 bl 0x6bbc4 | BIO_printf ()
0x00115d08 ldr r1, [pc, 0x8c] | r1 = *(0x115d98);
0x00115d0c ldr r2, [r5, 0x48] | r2 = *((r5 + 0x48));
0x00115d10 add r1, pc, r1 | r1 = pc + r1;
0x00115d14 mov r0, r4 | r0 = r4;
0x00115d18 bl 0x6bbc4 | BIO_printf ()
0x00115d1c ldr r1, [pc, 0x7c] | r1 = *(0x115d9c);
0x00115d20 ldr r2, [r5, 0x4c] | r2 = *((r5 + 0x4c));
0x00115d24 add r1, pc, r1 | r1 = pc + r1;
0x00115d28 mov r0, r4 | r0 = r4;
0x00115d2c bl 0x6bbc4 | BIO_printf ()
0x00115d30 ldr r1, [pc, 0x6c] | r1 = *(0x115da0);
0x00115d34 ldr r2, [r5, 0x50] | r2 = *((r5 + 0x50));
0x00115d38 add r1, pc, r1 | r1 = pc + r1;
0x00115d3c mov r0, r4 | r0 = r4;
0x00115d40 bl 0x6bbc4 | BIO_printf ()
0x00115d44 ldr r1, [pc, 0x5c] | r1 = *(0x115da4);
0x00115d48 ldr r2, [r5, 0x54] | r2 = *((r5 + 0x54));
0x00115d4c add r1, pc, r1 | r1 = pc + r1;
0x00115d50 mov r0, r4 | r0 = r4;
0x00115d54 bl 0x6bbc4 | BIO_printf ()
0x00115d58 ldr r1, [pc, 0x4c] | r1 = *(0x115da8);
0x00115d5c ldr r2, [r5, 0x58] | r2 = *((r5 + 0x58));
0x00115d60 mov r0, r4 | r0 = r4;
0x00115d64 add r1, pc, r1 | r1 = pc + r1;
0x00115d68 pop {r4, r5, r6, lr} |
0x00115d6c b 0x6bbc4 | return void (*0x6bbc4)() ();
| }
; 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/libcrypto.so.1.1 @ 0x5d670 */
| #include <stdint.h>
|
; (fcn) sym.PEM_write_bio_ASN1_stream () | void PEM_write_bio_ASN1_stream (int32_t arg_20h, int32_t arg_24h, int32_t arg1, int32_t arg2) {
| int32_t var_0h;
| int32_t var_ch;
| r0 = arg1;
| r1 = arg2;
0x0005d670 push {r0, r1, r2, r4, r5, r6, r7, lr} |
0x0005d674 mov r5, r1 | r5 = r1;
0x0005d678 ldr r1, [pc, 0x54] | r1 = *(0x5d6d0);
0x0005d67c mov r6, r2 | r6 = r2;
0x0005d680 add r1, pc, r1 | r1 = pc + r1;
0x0005d684 ldr r2, [sp, 0x20] | r2 = *(arg_20h);
0x0005d688 mov r4, r0 | r4 = r0;
0x0005d68c mov r7, r3 | r7 = r3;
0x0005d690 bl 0x6bbc4 | BIO_printf ()
0x0005d694 ldr r3, [sp, 0x24] | r3 = *(arg_24h);
0x0005d698 mov r2, r6 | r2 = r6;
0x0005d69c str r3, [sp] | *(sp) = r3;
0x0005d6a0 mov r1, r5 | r1 = r5;
0x0005d6a4 mov r3, r7 | r3 = r7;
0x0005d6a8 mov r0, r4 | r0 = r4;
0x0005d6ac bl 0x5d5c8 | fcn_0005d5c8 (r0, r1, r2);
0x0005d6b0 ldr r1, [pc, 0x20] | r1 = *(0x5d6d4);
0x0005d6b4 ldr r2, [sp, 0x20] | r2 = *(arg_20h);
0x0005d6b8 add r1, pc, r1 | r1 = pc + r1;
0x0005d6bc mov r5, r0 | r5 = r0;
0x0005d6c0 mov r0, r4 | r0 = r4;
0x0005d6c4 bl 0x6bbc4 | BIO_printf ()
0x0005d6c8 mov r0, r5 | r0 = r5;
0x0005d6cc add sp, sp, 0xc |
0x0005d6d0 pop {r4, r5, r6, r7, pc} |
| }
; 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/libcrypto.so.1.1 @ 0x9daf4 */
| #include <stdint.h>
|
; (fcn) sym.SCT_LIST_print () | void SCT_LIST_print (int32_t arg_20h, int32_t arg1, int32_t arg2) {
| r0 = arg1;
| r1 = arg2;
0x0009daf4 push {r4, r5, r6, r7, r8, sb, sl, lr} |
0x0009daf8 ldr sl, [pc, 0x6c] | sl = *(0x9db68);
0x0009dafc mov r5, r0 | r5 = r0;
0x0009db00 mov r6, r1 | r6 = r1;
0x0009db04 mov r8, r2 | r8 = r2;
0x0009db08 mov sb, r3 | sb = r3;
0x0009db0c bl 0x154518 | OPENSSL_sk_num ();
0x0009db10 mov r4, 0 | r4 = 0;
0x0009db14 add sl, pc, sl | sl = pc + sl;
0x0009db18 mov r7, r0 | r7 = r0;
| do {
0x0009db1c cmp r4, r7 |
| if (r4 < r7) {
0x0009db20 popge {r4, r5, r6, r7, r8, sb, sl, pc} |
| }
0x0009db24 mov r1, r4 | r1 = r4;
0x0009db28 mov r0, r5 | r0 = r5;
0x0009db2c bl 0x154528 | OPENSSL_sk_value ();
0x0009db30 ldr r3, [sp, 0x20] | r3 = *(arg_20h);
0x0009db34 mov r2, r8 | r2 = r8;
0x0009db38 mov r1, r6 | r1 = r6;
0x0009db3c bl 0x9d7ac | SCT_print ();
0x0009db40 mov r0, r5 | r0 = r5;
0x0009db44 bl 0x154518 | r0 = OPENSSL_sk_num ();
0x0009db48 sub r0, r0, 1 | r0--;
0x0009db4c cmp r0, r4 |
| if (r0 > r4) {
0x0009db50 ble 0x9db64 |
0x0009db54 mov r2, sb | r2 = sb;
0x0009db58 mov r1, sl | r1 = sl;
0x0009db5c mov r0, r6 | r0 = r6;
0x0009db60 bl 0x6bbc4 | BIO_printf ()
| }
0x0009db64 add r4, r4, 1 | r4++;
0x0009db68 b 0x9db1c |
| } while (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/libcrypto.so.1.1 @ 0x9d7ac */
| #include <stdint.h>
|
; (fcn) sym.SCT_print () | void SCT_print (int32_t arg1, int32_t arg2) {
| int32_t var_0h;
| int32_t var_ch;
| r0 = arg1;
| r1 = arg2;
0x0009d7ac push {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0009d7b0 mov r5, r0 | r5 = r0;
0x0009d7b4 subs r0, r3, 0 | r0 = r3 - 0;
0x0009d7b8 sub sp, sp, 0x24 |
0x0009d7bc mov r4, r1 | r4 = r1;
0x0009d7c0 mov r6, r2 | r6 = r2;
| if (r0 != r3) {
0x0009d7c4 beq 0x9d7d4 |
0x0009d7c8 ldr r2, [r5, 0x10] | r2 = *((r5 + 0x10));
0x0009d7cc ldr r1, [r5, 0xc] | r1 = *((r5 + 0xc));
0x0009d7d0 bl 0x9ca48 | CTLOG_STORE_get0_log_by_id ();
| }
0x0009d7d4 ldr sb, [pc, 0x2cc] | sb = OPENSSL_1_1_0a;
0x0009d7d8 ldr r1, [pc, 0x2cc] | r1 = *(0x9daa8);
0x0009d7dc add sb, pc, sb | sb = pc + sb;
0x0009d7e0 mov r2, r6 | r2 = r6;
0x0009d7e4 mov r3, sb | r3 = sb;
0x0009d7e8 add r1, pc, r1 | r1 = pc + r1;
0x0009d7ec mov r8, r0 | r8 = r0;
0x0009d7f0 mov r0, r4 | r0 = r4;
0x0009d7f4 bl 0x6bbc4 | BIO_printf ()
0x0009d7f8 ldr r1, [pc, 0x2b0] | r1 = *(0x9daac);
0x0009d7fc add r7, r6, 4 | r7 = r6 + 4;
0x0009d800 mov r3, sb | r3 = sb;
0x0009d804 mov r2, r7 | r2 = r7;
0x0009d808 add r1, pc, r1 | r1 = pc + r1;
0x0009d80c mov r0, r4 | r0 = r4;
0x0009d810 bl 0x6bbc4 | BIO_printf ()
0x0009d814 ldr r3, [r5] | r3 = *(r5);
0x0009d818 add r6, r6, 0x10 | r6 += 0x10;
0x0009d81c cmp r3, 0 |
| if (r3 != 0) {
0x0009d820 beq 0x9d860 |
0x0009d824 ldr r1, [pc, 0x288] | r1 = *(0x9dab0);
0x0009d828 mov r3, sb | r3 = sb;
0x0009d82c mov r2, r6 | r2 = r6;
0x0009d830 add r1, pc, r1 | r1 = pc + r1;
0x0009d834 mov r0, r4 | r0 = r4;
0x0009d838 bl 0x6bbc4 | BIO_printf ()
0x0009d83c ldr r3, [r5, 8] | r3 = *((r5 + 8));
0x0009d840 str r3, [sp] | *(sp) = r3;
0x0009d844 ldr r3, [r5, 4] | r3 = *((r5 + 4));
| }
0x0009d860 ldr r1, [pc, 0x250] | r1 = *(0x9dab4);
0x0009d864 mov r0, r4 | r0 = r4;
0x0009d868 add r1, pc, r1 | r1 = pc + r1;
0x0009d86c bl 0x6bbc4 | BIO_printf ()
0x0009d870 cmp r8, 0 |
| if (r8 != 0) {
0x0009d874 beq 0x9d89c |
0x0009d878 mov r0, r8 | r0 = r8;
0x0009d87c bl 0x9ca24 | CTLOG_get0_name ();
0x0009d880 ldr r1, [pc, 0x234] | r1 = *(0x9dab8);
0x0009d884 mov r3, sb | r3 = sb;
0x0009d888 mov r2, r7 | r2 = r7;
0x0009d88c add r1, pc, r1 | r1 = pc + r1;
0x0009d890 str r0, [sp] | *(sp) = r0;
0x0009d894 mov r0, r4 | r0 = r4;
0x0009d898 bl 0x6bbc4 | BIO_printf ()
| }
0x0009d89c ldr r8, [pc, 0x21c] | r8 = *(0x9dabc);
0x0009d8a0 ldr r1, [pc, 0x21c] | r1 = *(0x9dac0);
0x0009d8a4 add r8, pc, r8 | r8 = pc + r8;
0x0009d8a8 mov r3, r8 | r3 = r8;
0x0009d8ac mov r2, r7 | r2 = r7;
0x0009d8b0 add r1, pc, r1 | r1 = pc + r1;
0x0009d8b4 mov r0, r4 | r0 = r4;
0x0009d8b8 bl 0x6bbc4 | BIO_printf ()
0x0009d8bc ldr r3, [r5, 0x10] | r3 = *((r5 + 0x10));
0x0009d8c0 mov r2, 0x10 | r2 = 0x10;
0x0009d8c4 str r3, [sp] | *(sp) = r3;
0x0009d8c8 mov r1, r6 | r1 = r6;
0x0009d8cc ldr r3, [r5, 0xc] | r3 = *((r5 + 0xc));
0x0009d8d0 mov r0, r4 | r0 = r4;
0x0009d8d4 bl 0x6a534 | BIO_hex_string ();
0x0009d8d8 ldr r1, [pc, 0x1e8] | r1 = *(0x9dac4);
0x0009d8dc mov r3, r8 | r3 = r8;
0x0009d8e0 mov r2, r7 | r2 = r7;
0x0009d8e4 add r1, pc, r1 | r1 = pc + r1;
0x0009d8e8 mov r0, r4 | r0 = r4;
0x0009d8ec bl 0x6bbc4 | BIO_printf ()
0x0009d8f0 ldrd r8, sb, [r5, 0x18] | __asm ("ldrd r8, sb, [r5, 0x18]");
0x0009d8f4 bl 0x65bf8 | r0 = ASN1_GENERALIZEDTIME_new ();
0x0009d8f8 subs sl, r0, 0 | sl = r0 - 0;
| if (sl != r0) {
0x0009d8fc beq 0x9d9bc |
0x0009d900 mov r0, r8 | r0 = r8;
0x0009d904 add r3, pc, 0x194 | r3 = pc + 0x194;
0x0009d908 ldrd r2, r3, [r3] | __asm ("ldrd r2, r3, [r3]");
0x0009d90c mov r1, sb | r1 = sb;
0x0009d910 bl 0x183d58 | fcn_00183d58 (r0, r1);
0x0009d914 mov r0, r2 | r0 = r2;
0x0009d918 mov r1, r3 | r1 = r3;
0x0009d91c mov r2, 0x3e8 | r2 = 0x3e8;
0x0009d920 mov r3, 0 | r3 = 0;
0x0009d924 bl 0x183d58 | fcn_00183d58 (r0, r1);
0x0009d928 add r3, pc, 0x170 | r3 = pc + 0x170;
0x0009d92c ldrd r2, r3, [r3] | __asm ("ldrd r2, r3, [r3]");
0x0009d930 mov r1, sb | r1 = sb;
0x0009d934 mov fp, r0 |
0x0009d938 mov r0, r8 | r0 = r8;
0x0009d93c bl 0x183d58 | fcn_00183d58 (r0, r1);
0x0009d940 mov r3, fp | r3 = fp;
0x0009d944 mov r1, 0 | r1 = 0;
0x0009d948 mov r2, r0 | r2 = r0;
0x0009d94c mov r0, sl | r0 = sl;
0x0009d950 bl 0x54314 | ASN1_GENERALIZEDTIME_adj ();
0x0009d954 mov r0, sl | r0 = sl;
0x0009d958 bl 0x5b9f8 | ASN1_STRING_get0_data ();
0x0009d95c mov r2, 0x3e8 | r2 = 0x3e8;
0x0009d960 mov r3, 0 | r3 = 0;
0x0009d964 mov r1, sb | r1 = sb;
0x0009d968 mov fp, r0 |
0x0009d96c mov r0, r8 | r0 = r8;
0x0009d970 bl 0x183d58 | fcn_00183d58 (r0, r1);
0x0009d974 add r8, sp, 0xc | r8 += var_ch;
0x0009d978 mov r3, fp | r3 = fp;
0x0009d97c mov r1, 0x14 | r1 = 0x14;
0x0009d980 mov r0, r8 | r0 = r8;
0x0009d984 str r2, [sp] | *(sp) = r2;
0x0009d988 ldr r2, [pc, 0x13c] | r2 = *(0x9dac8);
0x0009d98c add r2, pc, r2 | r2 = pc + r2;
0x0009d990 bl 0x6bc48 | BIO_snprintf ()
0x0009d994 mov r1, r8 | r1 = r8;
0x0009d998 mov r0, sl | r0 = sl;
0x0009d99c bl 0x542a8 | r0 = ASN1_GENERALIZEDTIME_set_string ();
0x0009d9a0 cmp r0, 0 |
| if (r0 != 0) {
0x0009d9a4 beq 0x9d9b4 |
0x0009d9a8 mov r1, sl | r1 = sl;
0x0009d9ac mov r0, r4 | r0 = r4;
0x0009d9b0 bl 0x5438c | ASN1_GENERALIZEDTIME_print ();
| }
0x0009d9b4 mov r0, sl | r0 = sl;
0x0009d9b8 bl 0x65c00 | ASN1_GENERALIZEDTIME_free ();
| }
0x0009d9bc ldr r3, [pc, 0x10c] | r3 = *(0x9dacc);
0x0009d9c0 ldr r1, [pc, 0x10c] | r1 = *(0x9dad0);
0x0009d9c4 add r3, pc, r3 | r3 = pc + r3;
0x0009d9c8 mov r2, r7 | r2 = r7;
0x0009d9cc add r1, pc, r1 | r1 = pc + r1;
0x0009d9d0 mov r0, r4 | r0 = r4;
0x0009d9d4 bl 0x6bbc4 | BIO_printf ()
0x0009d9d8 ldr r3, [r5, 0x24] | r3 = *((r5 + 0x24));
0x0009d9dc cmp r3, 0 |
| if (r3 != 0) {
0x0009d9e0 bne 0x9da64 | void (*0x9da64)() ();
| }
0x0009d9e4 ldr r1, [pc, 0xec] | r1 = *(0x9dad4);
0x0009d9e8 mov r0, r4 | r0 = r4;
0x0009d9ec add r1, pc, r1 | r1 = pc + r1;
0x0009d9f0 bl 0x6bbc4 | BIO_printf ()
| }
; 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/libcrypto.so.1.1 @ 0x5d368 */
| #include <stdint.h>
|
; (fcn) sym.SMIME_crlf_copy () | void SMIME_crlf_copy (int32_t arg1, int32_t arg2) {
| int32_t var_0h;
| int32_t var_4h;
| int32_t var_ch;
| int32_t var_10h;
| int32_t var_410h;
| int32_t var_4h_2;
| r0 = arg1;
| r1 = arg2;
0x0005d368 push {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0005d36c sub sp, sp, 0x410 |
0x0005d370 sub sp, sp, 4 |
0x0005d374 mov r4, r1 | r4 = r1;
0x0005d378 mov r8, r2 | r8 = r2;
0x0005d37c mov sb, r0 | sb = r0;
0x0005d380 bl 0x6d3ec | BIO_f_buffer ();
0x0005d384 bl 0x6e4f0 | r0 = BIO_new ();
0x0005d388 subs r6, r0, 0 | r6 = r0 - 0;
| if (r6 != r0) {
0x0005d38c moveq r0, r6 | r0 = r6;
| }
| if (r6 == r0) {
0x0005d390 beq 0x5d47c | goto label_2;
| }
0x0005d394 mov r1, r4 | r1 = r4;
0x0005d398 bl 0x6ee74 | BIO_push ();
0x0005d39c tst r8, 0x80 |
0x0005d3a0 add r5, sp, 0x10 | r5 += var_10h;
0x0005d3a4 mov r4, r0 | r4 = r0;
| if ((r8 & 0x80) != 0) {
0x0005d3a8 bne 0x5d434 | goto label_3;
| }
0x0005d3ac tst r8, 1 |
| if ((r8 & 1) != 0) {
0x0005d3b0 beq 0x5d3c0 |
0x0005d3b4 ldr r1, [pc, 0x144] | r1 = *(0x5d4fc);
0x0005d3b8 add r1, pc, r1 | r1 = pc + r1;
0x0005d3bc bl 0x6bbc4 | BIO_printf ()
| }
0x0005d3c0 ldr r3, [pc, 0x13c] | r3 = *(0x5d500);
0x0005d3c4 ldr fp, [pc, 0x13c] | fp = *(0x5d504);
0x0005d3c8 add r3, pc, r3 | r3 = pc + r3;
0x0005d3cc mov r7, 0 | r7 = 0;
0x0005d3d0 add fp, pc, fp |
0x0005d3d4 str r3, [sp] | *(sp) = r3;
| label_0:
0x0005d3d8 mov r2, 0x400 | r2 = 0x400;
0x0005d3dc mov r1, r5 | r1 = r5;
0x0005d3e0 mov r0, sb | r0 = sb;
0x0005d3e4 bl 0x6e9f4 | r0 = BIO_gets ();
0x0005d3e8 cmp r0, 0 |
0x0005d3ec str r0, [sp, 0xc] | var_ch = r0;
| if (r0 <= 0) {
0x0005d3f0 ble 0x5d454 | goto label_4;
| }
0x0005d3f4 mov r2, r8 | r2 = r8;
0x0005d3f8 sub r1, r5, 4 | r1 -= var_ch;
0x0005d3fc mov r0, r5 | r0 = r5;
0x0005d400 bl 0x5c50c | fcn_0005c50c (r0, r1);
0x0005d404 ldr r2, [sp, 0xc] | r2 = var_ch;
0x0005d408 and r3, r8, 0x80000 | r3 = r8 & 0x80000;
0x0005d40c cmp r2, 0 |
0x0005d410 and sl, r0, 0xff | sl = r0 & 0xff;
| if (r2 == 0) {
0x0005d414 beq 0x5d4e0 | goto label_5;
| }
0x0005d418 cmp r3, 0 |
| if (r3 == 0) {
0x0005d41c beq 0x5d4b0 | goto label_6;
| }
0x0005d420 mov r3, 0 | r3 = 0;
0x0005d424 b 0x5d4a4 | goto label_7;
| do {
0x0005d428 mov r1, r5 | r1 = r5;
0x0005d42c mov r0, r4 | r0 = r4;
0x0005d430 bl 0x6e820 | BIO_write ();
| label_3:
0x0005d434 mov r2, 0x400 | r2 = 0x400;
0x0005d438 mov r1, r5 | r1 = r5;
0x0005d43c mov r0, sb | r0 = sb;
0x0005d440 bl 0x6e7e0 | r0 = BIO_read ();
0x0005d444 cmp r0, 0 |
0x0005d448 mov r2, r0 | r2 = r0;
0x0005d44c str r0, [sp, 0xc] | var_ch = r0;
0x0005d450 bgt 0x5d428 |
| } while (r0 > 0);
| label_4:
0x0005d454 mov r3, 0 | r3 = 0;
0x0005d458 mov r2, r3 | r2 = r3;
0x0005d45c mov r1, 0xb | r1 = 0xb;
0x0005d460 mov r0, r4 | r0 = r4;
0x0005d464 bl 0x6ebe8 | BIO_ctrl ();
0x0005d468 mov r0, r4 | r0 = r4;
0x0005d46c bl 0x6eec0 | BIO_pop ();
0x0005d470 mov r0, r6 | r0 = r6;
0x0005d474 bl 0x6e63c | BIO_free ();
0x0005d478 mov r0, 1 | r0 = 1;
| label_2:
0x0005d47c add sp, sp, 0x410 |
0x0005d480 add sp, sp, 4 |
0x0005d484 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| do {
0x0005d488 mov r2, 2 | r2 = 2;
0x0005d48c mov r1, fp | r1 = fp;
0x0005d490 mov r0, r4 | r0 = r4;
0x0005d494 str r3, [sp, 4] | var_4h = r3;
0x0005d498 bl 0x6e820 | BIO_write ();
0x0005d49c ldr r3, [sp, 4] | r3 = var_4h;
0x0005d4a0 add r3, r3, 1 | r3++;
| label_7:
0x0005d4a4 cmp r7, r3 |
0x0005d4a8 bne 0x5d488 |
| } while (r7 != r3);
0x0005d4ac mov r7, 0 | r7 = 0;
| label_6:
0x0005d4b0 ldr r2, [sp, 0xc] | r2 = var_ch;
0x0005d4b4 mov r1, r5 | r1 = r5;
0x0005d4b8 mov r0, r4 | r0 = r4;
0x0005d4bc bl 0x6e820 | BIO_write ();
0x0005d4c0 cmp sl, 0 |
| if (sl == 0) {
0x0005d4c4 beq 0x5d3d8 | goto label_0;
| }
0x0005d4c8 ldr r1, [pc, 0x3c] | r1 = *(0x5d508);
0x0005d4cc mov r2, 2 | r2 = 2;
0x0005d4d0 add r1, pc, r1 | r1 = pc + r1;
| label_1:
0x0005d4d4 mov r0, r4 | r0 = r4;
0x0005d4d8 bl 0x6e820 | BIO_write ();
0x0005d4dc b 0x5d3d8 | goto label_0;
| label_5:
0x0005d4e0 cmp r3, 0 |
| if (r3 != 0) {
0x0005d4e4 addne r7, r7, 1 | r7++;
| goto label_8;
| }
| if (r3 != 0) {
| label_8:
0x0005d4e8 bne 0x5d3d8 | goto label_0;
| }
0x0005d4ec cmp sl, 0 |
| if (sl == 0) {
0x0005d4f0 beq 0x5d3d8 | goto label_0;
| }
0x0005d4f4 mov r2, 2 | r2 = 2;
0x0005d4f8 ldr r1, [sp] | r1 = *(sp);
0x0005d4fc b 0x5d4d4 | goto label_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/libcrypto.so.1.1 @ 0x5d6dc */
| #include <stdint.h>
|
; (fcn) sym.SMIME_write_ASN1 () | void SMIME_write_ASN1 (int32_t arg_80h, int32_t arg_84h, int32_t arg_88h, int32_t arg_8ch, int32_t arg1, int32_t arg2) {
| int32_t var_0h;
| int32_t var_8h;
| int32_t var_ch;
| int32_t var_10h;
| int32_t var_34h;
| r0 = arg1;
| r1 = arg2;
0x0005d6dc push {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0005d6e0 mov r7, r3 | r7 = r3;
0x0005d6e4 sub sp, sp, 0x5c |
0x0005d6e8 tst r7, 0x400 |
0x0005d6ec mov r4, r0 | r4 = r0;
0x0005d6f0 str r1, [sp, 0x10] | var_10h = r1;
0x0005d6f4 str r2, [sp, 0xc] | var_ch = r2;
0x0005d6f8 ldr r3, [sp, 0x80] | r3 = *(arg_80h);
| if ((r7 & 0x400) != 0) {
0x0005d6fc bne 0x5d758 | goto label_2;
| }
0x0005d700 ldr r2, [pc, 0x5e0] | r2 = *(0x5dce4);
0x0005d704 add r2, pc, r2 | r2 = pc + r2;
| do {
0x0005d708 tst r7, 0x800 |
0x0005d70c str r2, [sp, 8] | var_8h = r2;
| if ((r7 & 0x800) != 0) {
0x0005d710 bne 0x5d764 | goto label_3;
| }
0x0005d714 ldr r5, [pc, 0x5d0] | r5 = *(0x5dce8);
0x0005d718 add r5, pc, r5 | r5 = pc + r5;
| label_0:
0x0005d71c ldr r2, [sp, 0xc] | r2 = var_ch;
0x0005d720 adds r6, r2, 0 | r6 = r2 + 0;
| if (r6 == r2) {
0x0005d724 movne r6, 1 | r6 = 1;
| }
0x0005d728 ands r6, r6, r7, lsr 6 | r6 &= (r7 >> 6);
| if (r6 == r6) {
0x0005d72c beq 0x5db6c | goto label_4;
| }
0x0005d730 add fp, sp, 0x34 |
| label_2:
0x0005d758 ldr r2, [pc, 0x590] | r2 = *(0x5dcec);
0x0005d75c add r2, pc, r2 | r2 = pc + r2;
0x0005d760 b 0x5d708 |
| } while (1);
| label_3:
0x0005d764 ldr r5, [pc, 0x588] | r5 = *(0x5dcf0);
0x0005d768 add r5, pc, r5 | r5 = pc + r5;
0x0005d76c b 0x5d71c | goto label_0;
| label_4:
0x0005db6c cmp r3, 0x17 |
| if (r3 == 0x17) {
0x0005db70 beq 0x5dca0 | goto label_5;
| }
0x0005db74 cmp r3, 0x16 |
| if (r3 != 0x16) {
0x0005db78 bne 0x5dc80 | goto label_6;
| }
0x0005db7c ldr r3, [sp, 0x84] | r3 = *(arg_84h);
0x0005db80 cmp r3, 0xcc |
| if (r3 == 0xcc) {
0x0005db84 beq 0x5dcb4 | goto label_7;
| }
0x0005db88 ldr r0, [sp, 0x88] | r0 = *(arg_88h);
0x0005db8c bl 0x154518 | r0 = OPENSSL_sk_num ();
0x0005db90 cmp r0, 0 |
| if (r0 >= 0) {
0x0005db94 bge 0x5dcc8 | goto label_8;
| }
0x0005db98 ldr r6, [pc, 0x1c0] | r6 = *(0x5dd5c);
0x0005db9c ldr r8, [pc, 0x1c0] | r8 = *(0x5dd60);
0x0005dba0 add r6, pc, r6 | r6 = pc + r6;
0x0005dba4 add r8, pc, r8 | r8 = pc + r8;
| label_1:
0x0005dba8 ldr r1, [pc, 0x1b8] | r1 = *(0x5dd64);
0x0005dbac mov r2, r5 | r2 = r5;
0x0005dbb0 add r1, pc, r1 | r1 = pc + r1;
0x0005dbb4 mov r0, r4 | r0 = r4;
0x0005dbb8 bl 0x6bbc4 | BIO_printf ()
0x0005dbbc ldr r1, [pc, 0x1a8] | r1 = *(0x5dd68);
0x0005dbc0 mov r0, r4 | r0 = r4;
0x0005dbc4 add r1, pc, r1 | r1 = pc + r1;
0x0005dbc8 bl 0x6bbc4 | BIO_printf ()
0x0005dbcc ldr r1, [pc, 0x19c] | r1 = *(0x5dd6c);
0x0005dbd0 mov r3, r5 | r3 = r5;
0x0005dbd4 mov r2, r8 | r2 = r8;
0x0005dbd8 add r1, pc, r1 | r1 = pc + r1;
0x0005dbdc mov r0, r4 | r0 = r4;
0x0005dbe0 bl 0x6bbc4 | BIO_printf ()
0x0005dbe4 ldr r1, [pc, 0x188] | r1 = *(0x5dd70);
0x0005dbe8 ldr r2, [sp, 8] | r2 = var_8h;
0x0005dbec add r1, pc, r1 | r1 = pc + r1;
0x0005dbf0 mov r0, r4 | r0 = r4;
0x0005dbf4 bl 0x6bbc4 | BIO_printf ()
0x0005dbf8 cmp r6, 0 |
| if (r6 != 0) {
0x0005dbfc beq 0x5dc14 |
0x0005dc00 ldr r1, [pc, 0x170] | r1 = *(0x5dd74);
0x0005dc04 mov r2, r6 | r2 = r6;
0x0005dc08 add r1, pc, r1 | r1 = pc + r1;
0x0005dc0c mov r0, r4 | r0 = r4;
0x0005dc10 bl 0x6bbc4 | BIO_printf ()
| }
0x0005dc14 ldr r1, [pc, 0x160] | r1 = *(0x5dd78);
0x0005dc18 mov r3, r5 | r3 = r5;
0x0005dc1c mov r2, r8 | r2 = r8;
0x0005dc20 add r1, pc, r1 | r1 = pc + r1;
0x0005dc24 mov r0, r4 | r0 = r4;
0x0005dc28 bl 0x6bbc4 | BIO_printf ()
0x0005dc2c ldr r1, [pc, 0x14c] | r1 = *(0x5dd7c);
0x0005dc30 mov r3, r5 | r3 = r5;
0x0005dc34 mov r2, r5 | r2 = r5;
0x0005dc38 add r1, pc, r1 | r1 = pc + r1;
0x0005dc3c mov r0, r4 | r0 = r4;
0x0005dc40 bl 0x6bbc4 | BIO_printf ()
0x0005dc44 ldr r3, [sp, 0x8c] | r3 = *(arg_8ch);
0x0005dc48 ldr r2, [sp, 0xc] | r2 = var_ch;
0x0005dc4c str r3, [sp] | *(sp) = r3;
0x0005dc50 ldr r1, [sp, 0x10] | r1 = var_10h;
0x0005dc54 mov r3, r7 | r3 = r7;
0x0005dc58 mov r0, r4 | r0 = r4;
0x0005dc5c bl 0x5d5c8 | r0 = fcn_0005d5c8 (r0, r1, r2);
0x0005dc60 cmp r0, 0 |
| if (r0 == 0) {
0x0005dc64 beq 0x5d74c | void (*0x5d74c)() ();
| }
0x0005dc68 ldr r1, [pc, 0x114] | r1 = *(0x5dd80);
0x0005dc6c mov r2, r5 | r2 = r5;
0x0005dc70 add r1, pc, r1 | r1 = pc + r1;
0x0005dc74 mov r0, r4 | r0 = r4;
0x0005dc78 bl 0x6bbc4 | BIO_printf ()
0x0005dc7c b 0x5da54 | void (*0x5da54)() ();
| label_6:
0x0005dc80 ldr r2, [pc, 0x100] | r2 = *(0x5dd84);
0x0005dc84 cmp r3, r2 |
| if (r3 == r2) {
0x0005dc88 bne 0x5dcdc |
0x0005dc8c ldr r6, [pc, 0xf8] | r6 = *(0x5dd88);
0x0005dc90 ldr r8, [pc, 0xf8] | r8 = *(0x5dd8c);
0x0005dc94 add r6, pc, r6 | r6 = pc + r6;
0x0005dc98 add r8, pc, r8 | r8 = pc + r8;
0x0005dc9c b 0x5dba8 | goto label_1;
| label_5:
0x0005dca0 ldr r6, [pc, 0xec] | r6 = *(0x5dd90);
0x0005dca4 ldr r8, [pc, 0xec] | r8 = *(0x5dd94);
0x0005dca8 add r6, pc, r6 | r6 = pc + r6;
0x0005dcac add r8, pc, r8 | r8 = pc + r8;
0x0005dcb0 b 0x5dba8 | goto label_1;
| label_7:
0x0005dcb4 ldr r6, [pc, 0xe0] | r6 = *(0x5dd98);
0x0005dcb8 ldr r8, [pc, 0xe0] | r8 = *(0x5dd9c);
0x0005dcbc add r6, pc, r6 | r6 = pc + r6;
0x0005dcc0 add r8, pc, r8 | r8 = pc + r8;
0x0005dcc4 b 0x5dba8 | goto label_1;
| label_8:
0x0005dcc8 ldr r6, [pc, 0xd4] | r6 = *(0x5dda0);
0x0005dccc ldr r8, [pc, 0xd4] | r8 = *(0x5dda4);
0x0005dcd0 add r6, pc, r6 | r6 = pc + r6;
0x0005dcd4 add r8, pc, r8 | r8 = pc + r8;
0x0005dcd8 b 0x5dba8 | goto label_1;
| }
0x0005dcdc ldr r8, [pc, 0xc8] | r8 = *(0x5dda8);
0x0005dce0 add r8, pc, r8 | r8 = pc + r8;
0x0005dce4 b 0x5dba8 | goto label_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/libcrypto.so.1.1 @ 0x159188 */
| #include <stdint.h>
|
; (fcn) sym.TS_MSG_IMPRINT_print_bio () | void TS_MSG_IMPRINT_print_bio (int32_t arg1, int32_t arg2) {
| r0 = arg1;
| r1 = arg2;
0x00159188 push {r4, r5, r6, lr} |
0x0015918c mov r5, r1 | r5 = r1;
0x00159190 ldr r1, [r1] | r1 = *(r1);
0x00159194 mov r4, r0 | r4 = r0;
0x00159198 bl 0x159140 | TS_X509_ALGOR_print_bio ();
0x0015919c ldr r1, [pc, 0x3c] | r1 = *(0x1591dc);
0x001591a0 mov r0, r4 | r0 = r4;
0x001591a4 add r1, pc, r1 | r1 = pc + r1;
0x001591a8 bl 0x6bbc4 | BIO_printf ()
0x001591ac ldr r5, [r5, 4] | r5 = *((r5 + 4));
0x001591b0 mov r0, r5 | r0 = r5;
0x001591b4 bl 0x5b9f8 | r0 = ASN1_STRING_get0_data ();
0x001591b8 mov r6, r0 | r6 = r0;
0x001591bc mov r0, r5 | r0 = r5;
0x001591c0 bl 0x5b9e0 | ASN1_STRING_length ();
0x001591c4 mov r3, 4 | r3 = 4;
0x001591c8 mov r1, r6 | r1 = r6;
0x001591cc mov r2, r0 | r2 = r0;
0x001591d0 mov r0, r4 | r0 = r4;
0x001591d4 bl 0x6a508 | BIO_dump_indent ();
0x001591d8 mov r0, 1 | r0 = 1;
0x001591dc pop {r4, r5, r6, pc} |
| }
; 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/libcrypto.so.1.1 @ 0x158fd8 */
| #include <stdint.h>
|
; (fcn) sym.TS_OBJ_print_bio () | void TS_OBJ_print_bio (int32_t arg1, int32_t arg2) {
| int32_t var_0h;
| int32_t var_84h;
| r0 = arg1;
| r1 = arg2;
0x00158fd8 push {r4, r5, lr} |
0x00158fdc sub sp, sp, 0x84 |
0x00158fe0 mov r4, sp | r4 = sp;
0x00158fe4 mov r5, r0 | r5 = r0;
0x00158fe8 mov r3, 0 | r3 = 0;
0x00158fec mov r2, r1 | r2 = r1;
0x00158ff0 mov r0, r4 | r0 = r4;
0x00158ff4 mov r1, 0x80 | r1 = 0x80;
0x00158ff8 bl 0x12093c | OBJ_obj2txt ();
0x00158ffc ldr r1, [pc, 0x18] | r1 = *(0x159018);
0x00159000 mov r2, r4 | r2 = r4;
0x00159004 add r1, pc, r1 | r1 = pc + r1;
0x00159008 mov r0, r5 | r0 = r5;
0x0015900c bl 0x6bbc4 | BIO_printf ()
0x00159010 mov r0, 1 | r0 = 1;
0x00159014 add sp, sp, 0x84 |
0x00159018 pop {r4, r5, pc} |
| }
; 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/libcrypto.so.1.1 @ 0x1591e4 */
| #include <stdint.h>
|
; (fcn) sym.TS_REQ_print_bio () | void TS_REQ_print_bio (int32_t arg1, int32_t arg2) {
| r0 = arg1;
| r1 = arg2;
0x001591e4 push {r4, r5, r6, lr} |
0x001591e8 subs r5, r1, 0 | r5 = r1 - 0;
| if (r5 == r1) {
0x001591ec beq 0x1592e8 | goto label_2;
| }
0x001591f0 mov r4, r0 | r4 = r0;
0x001591f4 mov r0, r5 | r0 = r5;
0x001591f8 bl 0x15931c | TS_REQ_get_version ();
0x001591fc ldr r1, [pc, 0xec] | r1 = *(0x1592ec);
0x00159200 add r1, pc, r1 | r1 = pc + r1;
0x00159204 mov r2, r0 | r2 = r0;
0x00159208 mov r0, r4 | r0 = r4;
0x0015920c bl 0x6bbc4 | BIO_printf ()
0x00159210 ldr r1, [r5, 4] | r1 = *((r5 + 4));
0x00159214 mov r0, r4 | r0 = r4;
0x00159218 bl 0x159188 | TS_MSG_IMPRINT_print_bio ();
0x0015921c ldr r1, [pc, 0xd0] | r1 = *(0x1592f0);
0x00159220 mov r0, r4 | r0 = r4;
0x00159224 add r1, pc, r1 | r1 = pc + r1;
0x00159228 bl 0x6bbc4 | BIO_printf ()
0x0015922c mov r0, r5 | r0 = r5;
0x00159230 bl 0x15947c | r0 = TS_REQ_get_policy_id ();
0x00159234 subs r1, r0, 0 | r1 = r0 - 0;
| if (r1 != r0) {
0x00159238 bne 0x1592c4 | goto label_3;
| }
0x0015923c ldr r1, [pc, 0xb4] | r1 = *(0x1592f4);
0x00159240 mov r0, r4 | r0 = r4;
0x00159244 add r1, pc, r1 | r1 = pc + r1;
0x00159248 bl 0x6bbc4 | BIO_printf ()
| do {
0x0015924c ldr r1, [pc, 0xa8] | r1 = *(0x1592f8);
0x00159250 mov r0, r4 | r0 = r4;
0x00159254 add r1, pc, r1 | r1 = pc + r1;
0x00159258 bl 0x6bbc4 | BIO_printf ()
0x0015925c ldr r1, [r5, 0xc] | r1 = *((r5 + 0xc));
0x00159260 cmp r1, 0 |
| if (r1 != 0) {
0x00159264 bne 0x1592d0 | goto label_4;
| }
0x00159268 ldr r1, [pc, 0x90] | r1 = *(0x1592fc);
0x0015926c mov r0, r4 | r0 = r4;
0x00159270 add r1, pc, r1 | r1 = pc + r1;
0x00159274 bl 0x6bbc4 | BIO_printf ()
| label_0:
0x00159278 ldr r1, [pc, 0x84] | r1 = *(0x159300);
0x0015927c mov r2, 1 | r2 = 1;
0x00159280 add r1, pc, r1 | r1 = pc + r1;
0x00159284 mov r0, r4 | r0 = r4;
0x00159288 bl 0x6e820 | BIO_write ();
0x0015928c ldr r3, [r5, 0x10] | r3 = *((r5 + 0x10));
0x00159290 cmp r3, 0 |
| if (r3 != 0) {
0x00159294 bne 0x1592dc | goto label_5;
| }
0x00159298 ldr r2, [pc, 0x68] | r2 = *(0x159304);
0x0015929c add r2, pc, r2 | r2 = pc + r2;
| label_1:
0x001592a0 ldr r1, [pc, 0x64] | r1 = *(0x159308);
0x001592a4 mov r0, r4 | r0 = r4;
0x001592a8 add r1, pc, r1 | r1 = pc + r1;
0x001592ac bl 0x6bbc4 | BIO_printf ()
0x001592b0 ldr r1, [r5, 0x14] | r1 = *((r5 + 0x14));
0x001592b4 mov r0, r4 | r0 = r4;
0x001592b8 bl 0x159020 | TS_ext_print_bio ();
0x001592bc mov r0, 1 | r0 = 1;
0x001592c0 pop {r4, r5, r6, pc} |
| label_3:
0x001592c4 mov r0, r4 | r0 = r4;
0x001592c8 bl 0x158fd8 | TS_OBJ_print_bio ();
0x001592cc b 0x15924c |
| } while (1);
| label_4:
0x001592d0 mov r0, r4 | r0 = r4;
0x001592d4 bl 0x158f38 | TS_ASN1_INTEGER_print_bio ();
0x001592d8 b 0x159278 | goto label_0;
| label_5:
0x001592dc ldr r2, [pc, 0x2c] | r2 = *(0x15930c);
0x001592e0 add r2, pc, r2 | r2 = pc + r2;
0x001592e4 b 0x1592a0 | goto label_1;
| label_2:
0x001592e8 mov r0, r5 | r0 = r5;
0x001592ec pop {r4, r5, r6, pc} |
| }
; 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/libcrypto.so.1.1 @ 0x159ad0 */
| #include <stdint.h>
|
; (fcn) sym.TS_RESP_print_bio () | void TS_RESP_print_bio (int32_t arg1, int32_t arg2) {
| r0 = arg1;
| r1 = arg2;
0x00159ad0 push {r4, r5, r6, lr} |
0x00159ad4 mov r5, r1 | r5 = r1;
0x00159ad8 ldr r1, [pc, 0x54] | r1 = *(0x159b30);
0x00159adc mov r4, r0 | r4 = r0;
0x00159ae0 add r1, pc, r1 | r1 = pc + r1;
0x00159ae4 bl 0x6bbc4 | BIO_printf ()
0x00159ae8 ldr r1, [r5] | r1 = *(r5);
0x00159aec mov r0, r4 | r0 = r4;
0x00159af0 bl 0x1595b8 | TS_STATUS_INFO_print_bio ();
0x00159af4 ldr r1, [pc, 0x3c] | r1 = *(0x159b34);
0x00159af8 mov r0, r4 | r0 = r4;
0x00159afc add r1, pc, r1 | r1 = pc + r1;
0x00159b00 bl 0x6bbc4 | BIO_printf ()
0x00159b04 ldr r1, [r5, 8] | r1 = *((r5 + 8));
0x00159b08 cmp r1, 0 |
| if (r1 == 0) {
0x00159b0c beq 0x159b20 | goto label_0;
| }
0x00159b10 mov r0, r4 | r0 = r4;
0x00159b14 bl 0x159790 | TS_TST_INFO_print_bio ();
| do {
0x00159b18 mov r0, 1 | r0 = 1;
0x00159b1c pop {r4, r5, r6, pc} |
| label_0:
0x00159b20 ldr r1, [pc, 0x14] | r1 = *(0x159b38);
0x00159b24 mov r0, r4 | r0 = r4;
0x00159b28 add r1, pc, r1 | r1 = pc + r1;
0x00159b2c bl 0x6bbc4 | BIO_printf ()
0x00159b30 b 0x159b18 |
| } while (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/libcrypto.so.1.1 @ 0x1595b8 */
| #include <stdint.h>
|
; (fcn) sym.TS_STATUS_INFO_print_bio () | void TS_STATUS_INFO_print_bio (int32_t arg1, int32_t arg2) {
| r0 = arg1;
| r1 = arg2;
0x001595b8 push {r4, r5, r6, r7, r8, sb, sl, lr} |
0x001595bc mov r6, r1 | r6 = r1;
0x001595c0 ldr r1, [pc, 0x190] | r1 = *(0x159754);
0x001595c4 mov r4, r0 | r4 = r0;
0x001595c8 add r1, pc, r1 | r1 = pc + r1;
0x001595cc bl 0x6bbc4 | BIO_printf ()
0x001595d0 ldr r0, [r6] | r0 = *(r6);
0x001595d4 bl 0x550bc | r0 = ASN1_INTEGER_get ();
0x001595d8 cmp r0, 5 |
| if (r0 > 5) {
0x001595dc bhi 0x1596c0 | goto label_2;
| }
0x001595e0 ldr r3, [pc, 0x174] | r3 = *(0x159758);
0x001595e4 ldr r1, [pc, 0x174] | r1 = *(0x15975c);
0x001595e8 add r3, pc, r3 | r3 = pc + r3;
0x001595ec ldr r2, [r3, r0, lsl 2] | r2 = *(0x159758);
0x001595f0 add r1, pc, r1 | r1 = pc + r1;
0x001595f4 mov r0, r4 | r0 = r4;
0x001595f8 bl 0x6bbc4 | BIO_printf ()
| do {
0x001595fc ldr r1, [pc, 0x160] | r1 = *(0x159760);
0x00159600 mov r0, r4 | r0 = r4;
0x00159604 add r1, pc, r1 | r1 = pc + r1;
0x00159608 bl 0x6bbc4 | BIO_printf ()
0x0015960c ldr r7, [pc, 0x154] | r7 = *(0x159764);
0x00159610 ldr r8, [pc, 0x154] | r8 = *(0x159768);
0x00159614 mov r5, 0 | r5 = 0;
0x00159618 add r7, pc, r7 | r7 = pc + r7;
0x0015961c add r8, pc, r8 | r8 = pc + r8;
| label_0:
0x00159620 ldr r0, [r6, 4] | r0 = *((r6 + 4));
0x00159624 bl 0x154518 | r0 = OPENSSL_sk_num ();
0x00159628 cmp r5, r0 |
| if (r5 < r0) {
0x0015962c blt 0x1596d4 | goto label_3;
| }
0x00159630 cmp r5, 0 |
| if (r5 == 0) {
0x00159634 bne 0x159648 |
0x00159638 ldr r1, [pc, 0x130] | r1 = *(0x15976c);
0x0015963c mov r0, r4 | r0 = r4;
0x00159640 add r1, pc, r1 | r1 = pc + r1;
0x00159644 bl 0x6bbc4 | BIO_printf ()
| }
0x00159648 ldr r1, [pc, 0x124] | r1 = *(0x159770);
0x0015964c mov r0, r4 | r0 = r4;
0x00159650 add r1, pc, r1 | r1 = pc + r1;
0x00159654 bl 0x6bbc4 | BIO_printf ()
0x00159658 ldr r7, [r6, 8] | r7 = *((r6 + 8));
0x0015965c cmp r7, 0 |
| if (r7 != 0) {
0x00159660 beq 0x159698 |
0x00159664 ldr r5, [pc, 0x10c] |
0x00159668 ldr r8, [pc, 0x10c] | r8 = *(0x159778);
0x0015966c ldr sb, [pc, 0x10c] | sb = *(0x15977c);
0x00159670 add r5, pc, r5 | r5 = pc + r5;
0x00159674 add r5, r5, 0x20 | r5 = 0x159794;
0x00159678 mov r6, 0 | r6 = 0;
0x0015967c add r8, pc, r8 | r8 = pc + r8;
0x00159680 add sb, pc, sb | sb = pc + sb;
| label_1:
0x00159684 ldr r1, [r5, -8] | r1 = *((r5 - 8));
0x00159688 cmp r1, 0 |
| if (r1 >= 0) {
0x0015968c bge 0x159718 | goto label_4;
| }
0x00159690 cmp r6, 0 |
| if (r6 != 0) {
0x00159694 bne 0x1596a8 | goto label_5;
| }
| }
0x00159698 ldr r1, [pc, 0xe4] | r1 = *(0x159780);
0x0015969c mov r0, r4 | r0 = r4;
0x001596a0 add r1, pc, r1 | r1 = pc + r1;
0x001596a4 bl 0x6bbc4 | BIO_printf ()
| label_5:
0x001596a8 ldr r1, [pc, 0xd8] | r1 = *(0x159784);
0x001596ac mov r0, r4 | r0 = r4;
0x001596b0 add r1, pc, r1 | r1 = pc + r1;
0x001596b4 bl 0x6bbc4 | BIO_printf ()
0x001596b8 mov r0, 1 | r0 = 1;
0x001596bc pop {r4, r5, r6, r7, r8, sb, sl, pc} |
| label_2:
0x001596c0 ldr r1, [pc, 0xc4] | r1 = *(0x159788);
0x001596c4 mov r0, r4 | r0 = r4;
0x001596c8 add r1, pc, r1 | r1 = pc + r1;
0x001596cc bl 0x6bbc4 | BIO_printf ()
0x001596d0 b 0x1595fc |
| } while (1);
| label_3:
0x001596d4 cmp r5, 0 |
| if (r5 > 0) {
0x001596d8 ble 0x1596e8 |
0x001596dc mov r1, r7 | r1 = r7;
0x001596e0 mov r0, r4 | r0 = r4;
0x001596e4 bl 0x6e860 | BIO_puts ();
| }
0x001596e8 mov r1, r5 | r1 = r5;
0x001596ec ldr r0, [r6, 4] | r0 = *((r6 + 4));
0x001596f0 bl 0x154528 | OPENSSL_sk_value ();
0x001596f4 mov r2, 0 | r2 = 0;
0x001596f8 add r5, r5, 1 | r5++;
0x001596fc mov r1, r0 | r1 = r0;
0x00159700 mov r0, r4 | r0 = r4;
0x00159704 bl 0x57a30 | ASN1_STRING_print_ex ();
0x00159708 mov r1, r8 | r1 = r8;
0x0015970c mov r0, r4 | r0 = r4;
0x00159710 bl 0x6e860 | BIO_puts ();
0x00159714 b 0x159620 | goto label_0;
| label_4:
0x00159718 mov r0, r7 | r0 = r7;
0x0015971c bl 0x53a14 | r0 = ASN1_BIT_STRING_get_bit ();
0x00159720 cmp r0, 0 |
| if (r0 != 0) {
0x00159724 beq 0x159750 |
0x00159728 add r6, r6, 1 | r6++;
0x0015972c cmp r6, 1 |
| if (r6 != 1) {
0x00159730 beq 0x159740 |
0x00159734 mov r1, sb | r1 = sb;
0x00159738 mov r0, r4 | r0 = r4;
0x0015973c bl 0x6bbc4 | BIO_printf ()
| }
0x00159740 ldr r2, [r5, -4] | r2 = *((r5 - 4));
0x00159744 mov r1, r8 | r1 = r8;
0x00159748 mov r0, r4 | r0 = r4;
0x0015974c bl 0x6bbc4 | BIO_printf ()
| }
0x00159750 add r5, r5, 8 | r5 += 8;
0x00159754 b 0x159684 | goto label_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/libcrypto.so.1.1 @ 0x159790 */
| #include <stdint.h>
|
; (fcn) sym.TS_TST_INFO_print_bio () | void TS_TST_INFO_print_bio (int32_t arg2) {
| int32_t var_4h;
| int32_t var_ch;
| r1 = arg2;
0x00159790 push {r0, r1, r2, r4, r5, r6, r7, lr} |
0x00159794 ldr r7, [pc, 0x2cc] | r7 = *(0x159a64);
0x00159798 subs r5, r1, 0 | r5 = r1 - 0;
0x0015979c add r7, pc, r7 | r7 = pc + r7;
| if (r5 != r1) {
0x001597a0 moveq r0, r5 | r0 = r5;
| }
| if (r5 == r1) {
0x001597a4 beq 0x159954 | goto label_6;
| }
0x001597a8 mov r4, r0 | r4 = r0;
0x001597ac ldr r0, [r5] | r0 = *(r5);
0x001597b0 bl 0x550bc | ASN1_INTEGER_get ();
0x001597b4 ldr r1, [pc, 0x2b0] | r1 = *(0x159a68);
0x001597b8 add r1, pc, r1 | r1 = pc + r1;
0x001597bc mov r2, r0 | r2 = r0;
0x001597c0 mov r0, r4 | r0 = r4;
0x001597c4 bl 0x6bbc4 | BIO_printf ()
0x001597c8 ldr r1, [pc, 0x2a0] | r1 = *(0x159a6c);
0x001597cc mov r0, r4 | r0 = r4;
0x001597d0 add r1, pc, r1 | r1 = pc + r1;
0x001597d4 bl 0x6bbc4 | BIO_printf ()
0x001597d8 ldr r1, [r5, 4] | r1 = *((r5 + 4));
0x001597dc mov r0, r4 | r0 = r4;
0x001597e0 bl 0x158fd8 | TS_OBJ_print_bio ();
0x001597e4 ldr r1, [r5, 8] | r1 = *((r5 + 8));
0x001597e8 mov r0, r4 | r0 = r4;
0x001597ec bl 0x159188 | TS_MSG_IMPRINT_print_bio ();
0x001597f0 ldr r1, [pc, 0x27c] | r1 = *(0x159a70);
0x001597f4 mov r0, r4 | r0 = r4;
0x001597f8 add r1, pc, r1 | r1 = pc + r1;
0x001597fc bl 0x6bbc4 | BIO_printf ()
0x00159800 ldr r1, [r5, 0xc] | r1 = *((r5 + 0xc));
0x00159804 cmp r1, 0 |
| if (r1 != 0) {
0x00159808 bne 0x15995c | goto label_7;
| }
0x0015980c ldr r1, [pc, 0x264] | r1 = *(0x159a74);
0x00159810 mov r0, r4 | r0 = r4;
0x00159814 add r1, pc, r1 | r1 = pc + r1;
0x00159818 bl 0x6bbc4 | BIO_printf ()
| do {
0x0015981c ldr r6, [pc, 0x258] | r6 = *(0x159a78);
0x00159820 mov r2, 1 | r2 = 1;
0x00159824 add r6, pc, r6 | r6 = pc + r6;
0x00159828 mov r1, r6 | r1 = r6;
0x0015982c mov r0, r4 | r0 = r4;
0x00159830 bl 0x6e820 | BIO_write ();
0x00159834 ldr r1, [pc, 0x244] | r1 = *(0x159a7c);
0x00159838 mov r0, r4 | r0 = r4;
0x0015983c add r1, pc, r1 | r1 = pc + r1;
0x00159840 bl 0x6bbc4 | BIO_printf ()
0x00159844 ldr r1, [r5, 0x10] | r1 = *((r5 + 0x10));
0x00159848 mov r0, r4 | r0 = r4;
0x0015984c bl 0x5438c | ASN1_GENERALIZEDTIME_print ();
0x00159850 mov r1, r6 | r1 = r6;
0x00159854 mov r2, 1 | r2 = 1;
0x00159858 mov r0, r4 | r0 = r4;
0x0015985c bl 0x6e820 | BIO_write ();
0x00159860 ldr r1, [pc, 0x21c] | r1 = *(0x159a80);
0x00159864 mov r0, r4 | r0 = r4;
0x00159868 add r1, pc, r1 | r1 = pc + r1;
0x0015986c bl 0x6bbc4 | BIO_printf ()
0x00159870 ldr r6, [r5, 0x14] | r6 = *((r5 + 0x14));
0x00159874 cmp r6, 0 |
| if (r6 != 0) {
0x00159878 bne 0x159968 | goto label_8;
| }
0x0015987c ldr r1, [pc, 0x204] | r1 = *(0x159a84);
0x00159880 add r1, pc, r1 | r1 = pc + r1;
| label_0:
0x00159884 mov r0, r4 | r0 = r4;
0x00159888 bl 0x6bbc4 | BIO_printf ()
0x0015988c ldr r1, [pc, 0x1f8] | r1 = *(0x159a88);
0x00159890 mov r2, 1 | r2 = 1;
0x00159894 add r1, pc, r1 | r1 = pc + r1;
0x00159898 mov r0, r4 | r0 = r4;
0x0015989c bl 0x6e820 | BIO_write ();
0x001598a0 ldr r3, [r5, 0x18] | r3 = *((r5 + 0x18));
0x001598a4 cmp r3, 0 |
| if (r3 != 0) {
0x001598a8 bne 0x159a0c | goto label_9;
| }
0x001598ac ldr r2, [pc, 0x1dc] | r2 = ASN1_TYPE_set_octetstring;
0x001598b0 add r2, pc, r2 | r2 = pc + r2;
| label_3:
0x001598b4 ldr r1, [pc, 0x1d8] | r1 = *(0x159a90);
0x001598b8 mov r0, r4 | r0 = r4;
0x001598bc add r1, pc, r1 | r1 = pc + r1;
0x001598c0 bl 0x6bbc4 | BIO_printf ()
0x001598c4 ldr r1, [pc, 0x1cc] | r1 = *(0x159a94);
0x001598c8 mov r0, r4 | r0 = r4;
0x001598cc add r1, pc, r1 | r1 = pc + r1;
0x001598d0 bl 0x6bbc4 | BIO_printf ()
0x001598d4 ldr r1, [r5, 0x1c] | r1 = *((r5 + 0x1c));
0x001598d8 cmp r1, 0 |
| if (r1 != 0) {
0x001598dc bne 0x159a18 | goto label_10;
| }
0x001598e0 ldr r1, [pc, 0x1b4] | r1 = *(0x159a98);
0x001598e4 mov r0, r4 | r0 = r4;
0x001598e8 add r1, pc, r1 | r1 = pc + r1;
0x001598ec bl 0x6bbc4 | BIO_printf ()
| label_4:
0x001598f0 ldr r1, [pc, 0x1a8] | r1 = *(0x159a9c);
0x001598f4 mov r2, 1 | r2 = 1;
0x001598f8 add r1, pc, r1 | r1 = pc + r1;
0x001598fc mov r0, r4 | r0 = r4;
0x00159900 bl 0x6e820 | BIO_write ();
0x00159904 ldr r1, [pc, 0x198] | r1 = *(0x159aa0);
0x00159908 mov r0, r4 | r0 = r4;
0x0015990c add r1, pc, r1 | r1 = pc + r1;
0x00159910 bl 0x6bbc4 | BIO_printf ()
0x00159914 ldr r1, [r5, 0x20] | r1 = *((r5 + 0x20));
0x00159918 cmp r1, 0 |
| if (r1 != 0) {
0x0015991c bne 0x159a24 | goto label_11;
| }
0x00159920 ldr r1, [pc, 0x180] | r1 = *(0x159aa4);
0x00159924 mov r0, r4 | r0 = r4;
0x00159928 add r1, pc, r1 | r1 = pc + r1;
0x0015992c bl 0x6bbc4 | BIO_printf ()
| label_5:
0x00159930 ldr r1, [pc, 0x174] | r1 = *(0x159aa8);
0x00159934 mov r2, 1 | r2 = 1;
0x00159938 add r1, pc, r1 | r1 = pc + r1;
0x0015993c mov r0, r4 | r0 = r4;
0x00159940 bl 0x6e820 | BIO_write ();
0x00159944 ldr r1, [r5, 0x24] | r1 = *((r5 + 0x24));
0x00159948 mov r0, r4 | r0 = r4;
0x0015994c bl 0x159020 | TS_ext_print_bio ();
0x00159950 mov r0, 1 | r0 = 1;
| label_6:
0x00159954 add sp, sp, 0xc |
0x00159958 pop {r4, r5, r6, r7, pc} |
| label_7:
0x0015995c mov r0, r4 | r0 = r4;
0x00159960 bl 0x158f38 | TS_ASN1_INTEGER_print_bio ();
0x00159964 b 0x15981c |
| } while (1);
| label_8:
0x00159968 ldr r1, [r6] | r1 = *(r6);
0x0015996c cmp r1, 0 |
| if (r1 == 0) {
0x00159970 beq 0x1599d0 | goto label_12;
| }
0x00159974 mov r0, r4 | r0 = r4;
0x00159978 bl 0x158f38 | TS_ASN1_INTEGER_print_bio ();
| do {
0x0015997c ldr r1, [pc, 0x12c] | r1 = *(0x159aac);
0x00159980 mov r0, r4 | r0 = r4;
0x00159984 add r1, pc, r1 | r1 = pc + r1;
0x00159988 bl 0x6bbc4 | BIO_printf ()
0x0015998c ldr r1, [r6, 4] | r1 = *((r6 + 4));
0x00159990 cmp r1, 0 |
| if (r1 == 0) {
0x00159994 beq 0x1599e4 | goto label_13;
| }
0x00159998 mov r0, r4 | r0 = r4;
0x0015999c bl 0x158f38 | TS_ASN1_INTEGER_print_bio ();
| label_1:
0x001599a0 ldr r1, [pc, 0x10c] | r1 = *(0x159ab0);
0x001599a4 mov r0, r4 | r0 = r4;
0x001599a8 add r1, pc, r1 | r1 = pc + r1;
0x001599ac bl 0x6bbc4 | BIO_printf ()
0x001599b0 ldr r1, [r6, 8] | r1 = *((r6 + 8));
0x001599b4 cmp r1, 0 |
| if (r1 == 0) {
0x001599b8 beq 0x1599f8 | goto label_14;
| }
0x001599bc mov r0, r4 | r0 = r4;
0x001599c0 bl 0x158f38 | TS_ASN1_INTEGER_print_bio ();
| label_2:
0x001599c4 ldr r1, [pc, 0xec] | r1 = *(0x159ab4);
0x001599c8 add r1, pc, r1 | r1 = pc + r1;
0x001599cc b 0x159884 | goto label_0;
| label_12:
0x001599d0 ldr r1, [pc, 0xe4] | r1 = *(0x159ab8);
0x001599d4 mov r0, r4 | r0 = r4;
0x001599d8 add r1, pc, r1 | r1 = pc + r1;
0x001599dc bl 0x6bbc4 | BIO_printf ()
0x001599e0 b 0x15997c |
| } while (1);
| label_13:
0x001599e4 ldr r1, [pc, 0xd4] | r1 = *(0x159abc);
0x001599e8 mov r0, r4 | r0 = r4;
0x001599ec add r1, pc, r1 | r1 = pc + r1;
0x001599f0 bl 0x6bbc4 | BIO_printf ()
0x001599f4 b 0x1599a0 | goto label_1;
| label_14:
0x001599f8 ldr r1, [pc, 0xc4] | r1 = *(0x159ac0);
0x001599fc mov r0, r4 | r0 = r4;
0x00159a00 add r1, pc, r1 | r1 = pc + r1;
0x00159a04 bl 0x6bbc4 | BIO_printf ()
0x00159a08 b 0x1599c4 | goto label_2;
| label_9:
0x00159a0c ldr r2, [pc, 0xb4] | r2 = *(0x159ac4);
0x00159a10 add r2, pc, r2 | r2 = pc + r2;
0x00159a14 b 0x1598b4 | goto label_3;
| label_10:
0x00159a18 mov r0, r4 | r0 = r4;
0x00159a1c bl 0x158f38 | TS_ASN1_INTEGER_print_bio ();
0x00159a20 b 0x1598f0 | goto label_4;
| label_11:
0x00159a24 mov r2, 0 | r2 = 0;
0x00159a28 mov r0, r2 | r0 = r2;
0x00159a2c bl 0x175e1c | r0 = i2v_GENERAL_NAME ();
0x00159a30 subs r6, r0, 0 | r6 = r0 - 0;
| if (r6 != r0) {
0x00159a34 beq 0x159a4c |
0x00159a38 mov r3, 0 | r3 = 0;
0x00159a3c mov r2, r3 | r2 = r3;
0x00159a40 mov r1, r6 | r1 = r6;
0x00159a44 mov r0, r4 | r0 = r4;
0x00159a48 bl 0x17f034 | X509V3_EXT_val_prn ();
| }
0x00159a4c ldr r3, [pc, 0x78] | r3 = *(0x159ac8);
0x00159a50 mov r0, r6 | r0 = r6;
0x00159a54 ldr r3, [r7, r3] | r3 = *((r7 + r3));
0x00159a58 mov r1, r3 | r1 = r3;
0x00159a5c str r3, [sp, 4] | var_4h = r3;
0x00159a60 bl 0x1544d0 | OPENSSL_sk_pop_free ();
0x00159a64 b 0x159930 | goto label_5;
| }
; 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/libcrypto.so.1.1 @ 0x159140 */
| #include <stdint.h>
|
; (fcn) sym.TS_X509_ALGOR_print_bio () | void TS_X509_ALGOR_print_bio (int32_t arg1, int32_t arg2) {
| r0 = arg1;
| r1 = arg2;
0x00159140 push {r4, lr} |
0x00159144 mov r4, r0 | r4 = r0;
0x00159148 ldr r0, [r1] | r0 = *(r1);
0x0015914c bl 0x120878 | r0 = OBJ_obj2nid ();
0x00159150 cmp r0, 0 |
| if (r0 == 0) {
0x00159154 beq 0x159174 | goto label_0;
| }
0x00159158 bl 0x120690 | r0 = OBJ_nid2ln ();
0x0015915c mov r2, r0 | r2 = r0;
| do {
0x00159160 ldr r1, [pc, 0x18] | r1 = *(0x15917c);
0x00159164 mov r0, r4 | r0 = r4;
0x00159168 add r1, pc, r1 | r1 = pc + r1;
0x0015916c pop {r4, lr} |
0x00159170 b 0x6bbc4 | void (*0x6bbc4)() ();
| label_0:
0x00159174 ldr r2, [pc, 8] | r2 = "VP_PKEY_meth_set_copy";
0x00159178 add r2, pc, r2 | r2 = pc + r2;
0x0015917c b 0x159160 |
| } while (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/libcrypto.so.1.1 @ 0x159020 */
| #include <stdint.h>
|
; (fcn) sym.TS_ext_print_bio () | void TS_ext_print_bio (int32_t arg1, int32_t arg2) {
| r0 = arg1;
| r1 = arg2;
0x00159020 push {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00159024 ldr sb, [pc, 0xf8] | sb = *(0x159120);
0x00159028 mov r7, r1 | r7 = r1;
0x0015902c ldr r1, [pc, 0xf4] | r1 = *(0x159124);
0x00159030 mov r4, r0 | r4 = r0;
0x00159034 add r1, pc, r1 | r1 = pc + r1;
0x00159038 bl 0x6bbc4 | BIO_printf ()
0x0015903c mov r0, r7 | r0 = r7;
0x00159040 bl 0x1672bc | X509v3_get_ext_count ();
0x00159044 ldr sl, [pc, 0xe0] | sl = *(0x159128);
0x00159048 ldr fp, [pc, 0xe0] | fp = *(0x15912c);
0x0015904c mov r5, 0 | r5 = 0;
0x00159050 add sb, pc, sb | sb = pc + sb;
0x00159054 add sl, pc, sl | sl = pc + sl;
0x00159058 add fp, pc, fp |
0x0015905c mov r8, r0 | r8 = r0;
| do {
0x00159060 cmp r5, r8 |
| if (r5 >= r8) {
0x00159064 blt 0x159070 |
0x00159068 mov r0, 1 | r0 = 1;
0x0015906c pop {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| }
0x00159070 mov r1, r5 | r1 = r5;
0x00159074 mov r0, r7 | r0 = r7;
0x00159078 bl 0x1673c0 | r0 = X509v3_get_ext ();
0x0015907c mov r6, r0 | r6 = r0;
0x00159080 bl 0x167724 | r0 = X509_EXTENSION_get_object ();
0x00159084 mov r1, r0 | r1 = r0;
0x00159088 mov r0, r4 | r0 = r4;
0x0015908c bl 0x55f58 | r0 = i2a_ASN1_OBJECT ();
0x00159090 cmp r0, 0 |
| if (r0 < 0) {
0x00159094 blt 0x15911c | goto label_0;
| }
0x00159098 mov r0, r6 | r0 = r6;
0x0015909c bl 0x16773c | X509_EXTENSION_get_critical ();
0x001590a0 mov r1, fp | r1 = fp;
0x001590a4 cmp r0, 0 |
| if (r0 == 0) {
0x001590a8 movne r2, sb | r2 = sb;
| }
| if (r0 != 0) {
0x001590ac moveq r2, sl | r2 = sl;
| }
0x001590b0 mov r0, r4 | r0 = r4;
0x001590b4 bl 0x6bbc4 | BIO_printf ()
0x001590b8 mov r3, 4 | r3 = 4;
0x001590bc mov r2, 0 | r2 = 0;
0x001590c0 mov r1, r6 | r1 = r6;
0x001590c4 mov r0, r4 | r0 = r4;
0x001590c8 bl 0x17f18c | r0 = X509V3_EXT_print ();
0x001590cc cmp r0, 0 |
| if (r0 == 0) {
0x001590d0 bne 0x159100 |
0x001590d4 ldr r2, [pc, 0x58] | r2 = *(0x159130);
0x001590d8 ldr r1, [pc, 0x58] | r1 = *(0x159134);
0x001590dc add r2, pc, r2 | r2 = pc + r2;
0x001590e0 add r1, pc, r1 | r1 = pc + r1;
0x001590e4 mov r0, r4 | r0 = r4;
0x001590e8 bl 0x6bbc4 | BIO_printf ()
0x001590ec mov r0, r6 | r0 = r6;
0x001590f0 bl 0x167730 | r0 = X509_EXTENSION_get_data ();
0x001590f4 mov r1, r0 | r1 = r0;
0x001590f8 mov r0, r4 | r0 = r4;
0x001590fc bl 0x565e8 | ASN1_STRING_print ();
| }
0x00159100 ldr r1, [pc, 0x34] | r1 = *(0x159138);
0x00159104 mov r2, 1 | r2 = 1;
0x00159108 add r1, pc, r1 | r1 = pc + r1;
0x0015910c mov r0, r4 | r0 = r4;
0x00159110 bl 0x6e820 | BIO_write ();
0x00159114 add r5, r5, 1 | r5++;
0x00159118 b 0x159060 |
| } while (1);
| label_0:
0x0015911c mov r0, 0 | r0 = 0;
0x00159120 pop {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| }
; 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/libcrypto.so.1.1 @ 0x17f18c */
| #include <stdint.h>
|
; (fcn) sym.X509V3_EXT_print () | void X509V3_EXT_print (int32_t arg1, int32_t arg2) {
| int32_t var_0h;
| int32_t var_4h;
| int32_t var_ch;
| int32_t var_14h;
| int32_t var_1ch;
| r0 = arg1;
| r1 = arg2;
0x0017f18c push {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0017f190 ldr sl, [pc, 0x1d8] | sl = *(0x17f36c);
0x0017f194 sub sp, sp, 0x1c |
0x0017f198 mov sb, r0 | sb = r0;
0x0017f19c mov r0, r1 | r0 = r1;
0x0017f1a0 mov r6, r1 | r6 = r1;
0x0017f1a4 mov r5, r2 | r5 = r2;
0x0017f1a8 mov fp, r3 |
0x0017f1ac bl 0x167730 | X509_EXTENSION_get_data ();
0x0017f1b0 add sl, pc, sl | sl = pc + sl;
0x0017f1b4 mov r4, r0 | r4 = r0;
0x0017f1b8 bl 0x5b9f8 | ASN1_STRING_get0_data ();
0x0017f1bc str r0, [sp, 0x14] | var_14h = r0;
0x0017f1c0 mov r0, r4 | r0 = r4;
0x0017f1c4 bl 0x5b9e0 | r0 = ASN1_STRING_length ();
0x0017f1c8 mov r4, r0 | r4 = r0;
0x0017f1cc mov r0, r6 | r0 = r6;
0x0017f1d0 bl 0x17c9cc | r0 = X509V3_EXT_get ();
0x0017f1d4 subs r7, r0, 0 | r7 = r0 - 0;
| if (r7 != r0) {
0x0017f1d8 streq r7, [sp, 4] | var_4h = r7;
| }
| if (r7 == r0) {
0x0017f1dc beq 0x17f210 | goto label_2;
| }
0x0017f1e0 ldr r3, [r7, 8] | r3 = *((r7 + 8));
0x0017f1e4 add r1, sp, 0x14 | r1 += var_14h;
0x0017f1e8 cmp r3, 0 |
| if (r3 == 0) {
0x0017f1ec beq 0x17f238 | goto label_3;
| }
0x0017f1f0 mov r2, r4 | r2 = r4;
0x0017f1f4 mov r0, 0 | r0 = 0;
0x0017f1f8 bl 0x633ec | r0 = ASN1_item_d2i ();
| do {
0x0017f1fc cmp r0, 0 |
0x0017f200 mov r8, r0 | r8 = r0;
| if (r0 != 0) {
0x0017f204 bne 0x17f24c | goto label_4;
| }
0x0017f208 mov r3, 1 | r3 = 1;
0x0017f20c str r3, [sp, 4] | var_4h = r3;
| label_2:
0x0017f210 mov r2, r4 | r2 = r4;
0x0017f214 str fp, [sp] | *(sp) = fp;
0x0017f218 mov r3, r5 | r3 = r5;
0x0017f21c ldr r1, [sp, 0x14] | r1 = var_14h;
0x0017f220 mov r0, sb | r0 = sb;
0x0017f224 bl 0x17ef80 | r0 = fcn_0017ef80 (r0, r1, r2);
0x0017f228 mov r4, r0 | r4 = r0;
| label_0:
0x0017f22c mov r0, r4 | r0 = r4;
0x0017f230 add sp, sp, 0x1c |
0x0017f234 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_3:
0x0017f238 ldr r6, [r7, 0x14] | r6 = *((r7 + 0x14));
0x0017f23c mov r2, r4 | r2 = r4;
0x0017f240 mov r0, r3 | r0 = r3;
0x0017f244 blx r6 | uint32_t (*r6)(uint32_t, uint32_t) (r0, r2);
0x0017f248 b 0x17f1fc |
| } while (1);
| label_4:
0x0017f24c ldr r5, [r7, 0x1c] | r5 = *((r7 + 0x1c));
0x0017f250 cmp r5, 0 |
| if (r5 == 0) {
0x0017f254 beq 0x17f2dc | goto label_5;
| }
0x0017f258 mov r1, r0 | r1 = r0;
0x0017f25c mov r0, r7 | r0 = r7;
0x0017f260 blx r5 | r0 = uint32_t (*r5)(uint32_t, uint32_t) (r0, r1);
0x0017f264 subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 != r0) {
0x0017f268 moveq r4, r5 | r4 = r5;
| }
| if (r5 != r0) {
0x0017f26c beq 0x17f294 |
0x0017f270 ldr r3, [pc, 0xfc] | r3 = *(0x17f370);
0x0017f274 ldr r1, [pc, 0xfc] | r1 = "_";
0x0017f278 str r5, [sp] | *(sp) = r5;
0x0017f27c add r3, pc, r3 | r3 = pc + r3;
0x0017f280 mov r2, fp | r2 = fp;
0x0017f284 add r1, pc, r1 | r1 = pc + r1;
0x0017f288 mov r0, sb | r0 = sb;
0x0017f28c bl 0x6bbc4 | BIO_printf ()
0x0017f290 mov r4, 1 | r4 = 1;
| }
0x0017f294 mov r6, 0 | r6 = 0;
| do {
| label_1:
0x0017f298 ldr r3, [pc, 0xdc] | r3 = *(0x17f378);
0x0017f29c mov r0, r6 | r0 = r6;
0x0017f2a0 ldr r3, [sl, r3] | r3 = *((sl + r3));
0x0017f2a4 mov r1, r3 | r1 = r3;
0x0017f2a8 str r3, [sp, 0xc] | var_ch = r3;
0x0017f2ac bl 0x1544d0 | OPENSSL_sk_pop_free ();
0x0017f2b0 ldr r1, [pc, 0xc8] | r1 = *(0x17f37c);
0x0017f2b4 mov r2, 0x82 | r2 = 0x82;
0x0017f2b8 add r1, pc, r1 | r1 = pc + r1;
0x0017f2bc mov r0, r5 | r0 = r5;
0x0017f2c0 bl 0x11842c | CRYPTO_free ();
0x0017f2c4 ldr r1, [r7, 8] | r1 = *((r7 + 8));
0x0017f2c8 cmp r1, 0 |
| if (r1 == 0) {
0x0017f2cc beq 0x17f360 | goto label_6;
| }
0x0017f2d0 mov r0, r8 | r0 = r8;
0x0017f2d4 bl 0x644b8 | ASN1_item_free ();
0x0017f2d8 b 0x17f22c | goto label_0;
| label_5:
0x0017f2dc ldr r6, [r7, 0x24] | r6 = *((r7 + 0x24));
0x0017f2e0 cmp r6, 0 |
| if (r6 == 0) {
0x0017f2e4 beq 0x17f320 | goto label_7;
| }
0x0017f2e8 mov r1, r0 | r1 = r0;
0x0017f2ec mov r2, r5 | r2 = r5;
0x0017f2f0 mov r0, r7 | r0 = r7;
0x0017f2f4 blx r6 | r0 = uint32_t (*r6)(uint32_t, uint32_t, uint32_t) (r0, r1, r2);
0x0017f2f8 subs r6, r0, 0 | r6 = r0 - 0;
| if (r6 == r0) {
0x0017f2fc beq 0x17f358 | goto label_8;
| }
0x0017f300 ldr r3, [r7, 4] | r3 = *((r7 + 4));
0x0017f304 mov r2, fp | r2 = fp;
0x0017f308 and r3, r3, 4 | r3 &= 4;
0x0017f30c mov r1, r6 | r1 = r6;
0x0017f310 mov r0, sb | r0 = sb;
0x0017f314 bl 0x17f034 | X509V3_EXT_val_prn ();
0x0017f318 mov r4, 1 | r4 = 1;
0x0017f31c b 0x17f298 |
| } while (1);
| label_7:
0x0017f320 ldr r4, [r7, 0x2c] | r4 = *((r7 + 0x2c));
0x0017f324 cmp r4, 0 |
| if (r4 != 0) {
0x0017f328 moveq r6, r4 | r6 = r4;
| }
| if (r4 == 0) {
0x0017f32c moveq r5, r4 | r5 = r4;
| goto label_9;
| }
| if (r4 == 0) {
| label_9:
0x0017f330 beq 0x17f298 | goto label_1;
| }
0x0017f334 mov r1, r0 | r1 = r0;
0x0017f338 mov r3, fp | r3 = fp;
0x0017f33c mov r2, sb | r2 = sb;
0x0017f340 mov r0, r7 | r0 = r7;
0x0017f344 blx r4 | r0 = uint32_t (*r4)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x0017f348 adds r4, r0, 0 | r4 = r0 + 0;
0x0017f34c movne r4, 1 | r4 = 1;
| while (1) {
0x0017f350 mov r5, r6 | r5 = r6;
0x0017f354 b 0x17f298 | goto label_1;
| label_8:
0x0017f358 mov r4, r6 | r4 = r6;
0x0017f35c b 0x17f350 |
| }
| label_6:
0x0017f360 ldr r3, [r7, 0x10] | r3 = *((r7 + 0x10));
0x0017f364 mov r0, r8 | r0 = r8;
0x0017f368 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x0017f36c b 0x17f22c | goto label_0;
| }
; 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/libcrypto.so.1.1 @ 0x17f538 */
| #include <stdint.h>
|
; (fcn) sym.X509V3_EXT_print_fp () | void X509V3_EXT_print_fp (int32_t arg1, int32_t arg2) {
| r0 = arg1;
| r1 = arg2;
0x0017f538 push {r4, r5, r6, r7, r8, lr} |
0x0017f53c mov r4, r1 | r4 = r1;
0x0017f540 mov r1, 0 | r1 = 0;
0x0017f544 mov r6, r2 | r6 = r2;
0x0017f548 mov r7, r3 | r7 = r3;
0x0017f54c bl 0x7283c | r0 = BIO_new_fp ();
0x0017f550 subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 != r0) {
0x0017f554 moveq r4, r5 | r4 = r5;
| }
| if (r5 != r0) {
0x0017f558 beq 0x17f578 |
0x0017f55c mov r1, r4 | r1 = r4;
0x0017f560 mov r3, r7 | r3 = r7;
0x0017f564 mov r2, r6 | r2 = r6;
0x0017f568 bl 0x17f18c | r0 = X509V3_EXT_print ();
0x0017f56c mov r4, r0 | r4 = r0;
0x0017f570 mov r0, r5 | r0 = r5;
0x0017f574 bl 0x6e63c | BIO_free ();
| }
0x0017f578 mov r0, r4 | r0 = r4;
0x0017f57c pop {r4, r5, r6, r7, r8, pc} |
| }
; 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/libcrypto.so.1.1 @ 0x17f034 */
| #include <stdint.h>
|
; (fcn) sym.X509V3_EXT_val_prn () | void X509V3_EXT_val_prn (int32_t arg1, int32_t arg2) {
| r0 = arg1;
| r1 = arg2;
0x0017f034 push {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0017f038 subs r5, r1, 0 | r5 = r1 - 0;
0x0017f03c popeq {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} |
0x0017f040 cmp r3, 0 |
0x0017f044 mov r7, r3 | r7 = r3;
0x0017f048 mov r8, r2 | r8 = r2;
0x0017f04c mov r4, r0 | r4 = r0;
0x0017f050 bne 0x17f094 |
| while (r0 == 0) {
0x0017f054 ldr r3, [pc, 0x110] | r3 = *(0x17f168);
0x0017f058 ldr r1, [pc, 0x110] | r1 = "_";
0x0017f05c add r3, pc, r3 | r3 = pc + r3;
0x0017f060 mov r2, r8 | r2 = r8;
0x0017f064 add r1, pc, r1 | r1 = pc + r1;
0x0017f068 mov r0, r4 | r0 = r4;
0x0017f06c bl 0x6bbc4 | BIO_printf ()
0x0017f070 mov r0, r5 | r0 = r5;
0x0017f074 bl 0x154518 | r0 = OPENSSL_sk_num ();
0x0017f078 cmp r0, 0 |
| if (r0 != 0) {
0x0017f07c bne 0x17f0a4 | goto label_2;
| }
0x0017f080 ldr r1, [pc, 0xec] | r1 = *(0x17f170);
0x0017f084 mov r0, r4 | r0 = r4;
0x0017f088 add r1, pc, r1 | r1 = pc + r1;
0x0017f08c bl 0x6e860 | BIO_puts ();
0x0017f090 b 0x17f0a4 | goto label_2;
0x0017f094 mov r0, r5 | r0 = r5;
0x0017f098 bl 0x154518 | r0 = OPENSSL_sk_num ();
0x0017f09c cmp r0, 0 |
0x0017f0a0 beq 0x17f054 |
| }
| label_2:
0x0017f0a4 ldr sb, [pc, 0xcc] | sb = *(0x17f174);
0x0017f0a8 ldr sl, [pc, 0xcc] | sl = *(0x17f178);
0x0017f0ac ldr fp, [pc, 0xcc] | fp = "_";
0x0017f0b0 mov r6, 0 | r6 = 0;
0x0017f0b4 add sb, pc, sb | sb = pc + sb;
0x0017f0b8 add sl, pc, sl | sl = pc + sl;
0x0017f0bc add fp, pc, fp |
| do {
0x0017f0c0 mov r0, r5 | r0 = r5;
0x0017f0c4 bl 0x154518 | r0 = OPENSSL_sk_num ();
0x0017f0c8 cmp r6, r0 |
| if (r6 < r0) {
0x0017f0cc popge {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| }
0x0017f0d0 cmp r7, 0 |
| if (r7 == 0) {
0x0017f0d4 beq 0x17f140 | goto label_3;
| }
0x0017f0d8 mov r3, sl | r3 = sl;
0x0017f0dc mov r2, r8 | r2 = r8;
0x0017f0e0 mov r1, fp | r1 = fp;
0x0017f0e4 mov r0, r4 | r0 = r4;
0x0017f0e8 bl 0x6bbc4 | BIO_printf ()
| label_0:
0x0017f0ec mov r1, r6 | r1 = r6;
0x0017f0f0 mov r0, r5 | r0 = r5;
0x0017f0f4 bl 0x154528 | OPENSSL_sk_value ();
0x0017f0f8 ldr r2, [r0, 4] | r2 = *((r0 + 4));
0x0017f0fc cmp r2, 0 |
| if (r2 != 0) {
0x0017f100 ldreq r1, [r0, 8] | r1 = *((r0 + 8));
| }
| if (r2 != 0) {
0x0017f104 beq 0x17f118 |
0x0017f108 ldr r3, [r0, 8] | r3 = *((r0 + 8));
0x0017f10c cmp r3, 0 |
| if (r3 != 0) {
0x0017f110 bne 0x17f158 | goto label_4;
| }
0x0017f114 mov r1, r2 | r1 = r2;
| }
0x0017f118 mov r0, r4 | r0 = r4;
0x0017f11c bl 0x6e860 | BIO_puts ();
| label_1:
0x0017f120 cmp r7, 0 |
| if (r7 != 0) {
0x0017f124 beq 0x17f138 |
0x0017f128 ldr r1, [pc, 0x54] | r1 = *(0x17f180);
0x0017f12c mov r0, r4 | r0 = r4;
0x0017f130 add r1, pc, r1 | r1 = pc + r1;
0x0017f134 bl 0x6e860 | BIO_puts ();
| }
0x0017f138 add r6, r6, 1 | r6++;
0x0017f13c b 0x17f0c0 |
| } while (1);
| label_3:
0x0017f140 cmp r6, 0 |
| if (r6 <= 0) {
0x0017f144 ble 0x17f0ec | goto label_0;
| }
0x0017f148 mov r1, sb | r1 = sb;
0x0017f14c mov r0, r4 | r0 = r4;
0x0017f150 bl 0x6bbc4 | BIO_printf ()
0x0017f154 b 0x17f0ec | goto label_0;
| label_4:
0x0017f158 ldr r1, [pc, 0x28] | r1 = "_";
0x0017f15c mov r0, r4 | r0 = r4;
0x0017f160 add r1, pc, r1 | r1 = pc + r1;
0x0017f164 bl 0x6bbc4 | BIO_printf ()
0x0017f168 b 0x17f120 | goto label_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/libcrypto.so.1.1 @ 0x17f384 */
| #include <stdint.h>
|
; (fcn) sym.X509V3_extensions_print () | void X509V3_extensions_print (int32_t arg_38h, int32_t arg1, int32_t arg2) {
| int32_t var_0h;
| int32_t var_8h;
| int32_t var_ch;
| int32_t var_14h;
| r0 = arg1;
| r1 = arg2;
0x0017f384 push {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0017f388 mov r4, r0 | r4 = r0;
0x0017f38c sub sp, sp, 0x14 |
0x0017f390 mov r0, r2 | r0 = r2;
0x0017f394 mov r6, r1 | r6 = r1;
0x0017f398 mov r8, r2 | r8 = r2;
0x0017f39c mov sl, r3 | sl = r3;
0x0017f3a0 ldr r5, [sp, 0x38] | r5 = *(arg_38h);
0x0017f3a4 bl 0x154518 | r0 = OPENSSL_sk_num ();
0x0017f3a8 cmp r0, 0 |
0x0017f3ac bgt 0x17f3bc |
| while (r6 >= r0) {
0x0017f3b0 mov r0, 1 | r0 = 1;
| label_1:
0x0017f3b4 add sp, sp, 0x14 |
0x0017f3b8 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
0x0017f3bc cmp r6, 0 |
| if (r6 != 0) {
0x0017f3c0 beq 0x17f3e8 |
0x0017f3c4 ldr r3, [pc, 0x144] | r3 = *(0x17f50c);
0x0017f3c8 ldr r1, [pc, 0x144] | r1 = "_";
0x0017f3cc mov r2, r5 | r2 = r5;
0x0017f3d0 str r6, [sp] | *(sp) = r6;
0x0017f3d4 add r3, pc, r3 | r3 = pc + r3;
0x0017f3d8 add r1, pc, r1 | r1 = pc + r1;
0x0017f3dc mov r0, r4 | r0 = r4;
0x0017f3e0 bl 0x6bbc4 | BIO_printf ()
0x0017f3e4 add r5, r5, 4 | r5 += 4;
| }
0x0017f3e8 ldr r3, [pc, 0x128] | r3 = *(0x17f514);
0x0017f3ec ldr fp, [pc, 0x128] | fp = "_";
0x0017f3f0 add r3, pc, r3 | r3 = pc + r3;
0x0017f3f4 str r3, [sp, 8] | var_8h = r3;
0x0017f3f8 ldr r3, [pc, 0x120] | r3 = *(0x17f51c);
0x0017f3fc mov r6, 0 | r6 = 0;
0x0017f400 add r3, pc, r3 | r3 = pc + r3;
0x0017f404 add fp, pc, fp |
0x0017f408 str r3, [sp, 0xc] | var_ch = r3;
| label_0:
0x0017f40c mov r0, r8 | r0 = r8;
0x0017f410 bl 0x154518 | r0 = OPENSSL_sk_num ();
0x0017f414 cmp r6, r0 |
0x0017f418 bge 0x17f3b0 |
| }
0x0017f41c mov r1, r6 | r1 = r6;
0x0017f420 mov r0, r8 | r0 = r8;
0x0017f424 bl 0x154528 | OPENSSL_sk_value ();
0x0017f428 cmp r5, 0 |
0x0017f42c mov r7, r0 | r7 = r0;
0x0017f430 bne 0x17f4ec |
| while (r0 > 0) {
0x0017f434 mov r0, r7 | r0 = r7;
0x0017f438 bl 0x167724 | r0 = X509_EXTENSION_get_object ();
0x0017f43c mov r1, r0 | r1 = r0;
0x0017f440 mov r0, r4 | r0 = r4;
0x0017f444 bl 0x55f58 | i2a_ASN1_OBJECT ();
0x0017f448 mov r0, r7 | r0 = r7;
0x0017f44c bl 0x16773c | r0 = X509_EXTENSION_get_critical ();
0x0017f450 cmp r0, 0 |
| if (r0 == 0) {
0x0017f454 movne r2, fp | r2 = fp;
| }
| if (r0 != 0) {
0x0017f458 ldreq r2, [pc, 0xc4] | r2 = *((pc + 0xc4));
| }
| if (r0 != 0) {
0x0017f45c addeq r2, pc, r2 | r2 = pc + r2;
| }
0x0017f460 ldr r1, [pc, 0xc0] | r1 = "_";
0x0017f464 mov r0, r4 | r0 = r4;
0x0017f468 add r1, pc, r1 | r1 = pc + r1;
0x0017f46c bl 0x6bbc4 | r0 = BIO_printf ()
0x0017f470 cmp r0, 0 |
| if (r0 <= 0) {
0x0017f474 ble 0x17f508 | goto label_2;
| }
0x0017f478 add sb, r5, 4 | sb = r5 + 4;
0x0017f47c mov r3, sb | r3 = sb;
0x0017f480 mov r2, sl | r2 = sl;
0x0017f484 mov r1, r7 | r1 = r7;
0x0017f488 mov r0, r4 | r0 = r4;
0x0017f48c bl 0x17f18c | r0 = X509V3_EXT_print ();
0x0017f490 cmp r0, 0 |
| if (r0 == 0) {
0x0017f494 bne 0x17f4c8 |
0x0017f498 ldr r3, [pc, 0x8c] | r3 = "gest_create";
0x0017f49c ldr r1, [pc, 0x8c] | r1 = "_";
0x0017f4a0 add r3, pc, r3 | r3 = pc + r3;
0x0017f4a4 add r1, pc, r1 | r1 = pc + r1;
0x0017f4a8 mov r2, sb | r2 = sb;
0x0017f4ac mov r0, r4 | r0 = r4;
0x0017f4b0 bl 0x6bbc4 | BIO_printf ()
0x0017f4b4 mov r0, r7 | r0 = r7;
0x0017f4b8 bl 0x167730 | r0 = X509_EXTENSION_get_data ();
0x0017f4bc mov r1, r0 | r1 = r0;
0x0017f4c0 mov r0, r4 | r0 = r4;
0x0017f4c4 bl 0x565e8 | ASN1_STRING_print ();
| }
0x0017f4c8 ldr r1, [pc, 0x64] | r1 = *(0x17f530);
0x0017f4cc mov r2, 1 | r2 = 1;
0x0017f4d0 add r1, pc, r1 | r1 = pc + r1;
0x0017f4d4 mov r0, r4 | r0 = r4;
0x0017f4d8 bl 0x6e820 | r0 = BIO_write ();
0x0017f4dc cmp r0, 0 |
| if (r0 <= 0) {
0x0017f4e0 ble 0x17f508 | goto label_2;
| }
0x0017f4e4 add r6, r6, 1 | r6++;
0x0017f4e8 b 0x17f40c | goto label_0;
0x0017f4ec ldr r3, [sp, 8] | r3 = var_8h;
0x0017f4f0 mov r2, r5 | r2 = r5;
0x0017f4f4 ldr r1, [sp, 0xc] | r1 = var_ch;
0x0017f4f8 mov r0, r4 | r0 = r4;
0x0017f4fc bl 0x6bbc4 | r0 = BIO_printf ()
0x0017f500 cmp r0, 0 |
0x0017f504 bgt 0x17f434 |
| }
| label_2:
0x0017f508 mov r0, 0 | r0 = 0;
0x0017f50c b 0x17f3b4 | goto label_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/libcrypto.so.1.1 @ 0x161d4c */
| #include <stdint.h>
|
; (fcn) sym.X509_CRL_print_ex () | void X509_CRL_print_ex (int32_t arg1, int32_t arg2) {
| int32_t var_0h;
| int32_t var_8h;
| int32_t var_ch;
| r0 = arg1;
| r1 = arg2;
0x00161d4c push {r0, r1, r2, r3, r4, r5, r6, r7, r8, sb, sl, lr} |
0x00161d50 mov r5, r1 | r5 = r1;
0x00161d54 ldr r1, [pc, 0x288] | r1 = *(0x161fe0);
0x00161d58 mov r7, r2 | r7 = r2;
0x00161d5c add r1, pc, r1 | r1 = pc + r1;
0x00161d60 mov r4, r0 | r4 = r0;
0x00161d64 bl 0x6bbc4 | BIO_printf ()
0x00161d68 mov r0, r5 | r0 = r5;
0x00161d6c bl 0x16c0b4 | r0 = X509_CRL_get_version ();
0x00161d70 cmp r0, 1 |
0x00161d74 mov r3, r0 | r3 = r0;
| if (r0 > 1) {
0x00161d78 bhi 0x161f1c | goto label_3;
| }
0x00161d7c ldr r2, [pc, 0x264] | r2 = *(0x161fe4);
0x00161d80 ldr r1, [pc, 0x264] | r1 = *(0x161fe8);
0x00161d84 str r0, [sp] | *(sp) = r0;
0x00161d88 add r3, r0, 1 | r3 = r0 + 1;
0x00161d8c add r2, pc, r2 | r2 = pc + r2;
0x00161d90 add r1, pc, r1 | r1 = pc + r1;
0x00161d94 mov r0, r4 | r0 = r4;
0x00161d98 bl 0x6bbc4 | BIO_printf ()
| do {
0x00161d9c add r2, sp, 8 | r2 += var_8h;
0x00161da0 add r1, sp, 0xc | r1 += var_ch;
0x00161da4 mov r0, r5 | r0 = r5;
0x00161da8 bl 0x16c0f4 | X509_CRL_get0_signature ();
0x00161dac ldr r1, [pc, 0x23c] | r1 = *(0x161fec);
0x00161db0 mov r0, r4 | r0 = r4;
0x00161db4 add r1, pc, r1 | r1 = pc + r1;
0x00161db8 bl 0x6e860 | BIO_puts ();
0x00161dbc ldr r6, [pc, 0x230] | r6 = "sc";
0x00161dc0 mov r2, 0 | r2 = 0;
0x00161dc4 ldr r1, [sp, 8] | r1 = var_8h;
0x00161dc8 mov r0, r4 | r0 = r4;
0x00161dcc bl 0x162a3c | X509_signature_print ();
0x00161dd0 ldr r1, [pc, 0x220] | r1 = *(0x161ff4);
0x00161dd4 add r6, pc, r6 | r6 = pc + r6;
0x00161dd8 mov r2, r6 | r2 = r6;
0x00161ddc add r1, pc, r1 | r1 = pc + r1;
0x00161de0 mov r0, r4 | r0 = r4;
0x00161de4 bl 0x6bbc4 | BIO_printf ()
0x00161de8 mov r0, r5 | r0 = r5;
0x00161dec bl 0x16c0dc | X509_CRL_get_issuer ();
0x00161df0 mov r3, r7 | r3 = r7;
0x00161df4 mov r2, 0 | r2 = 0;
0x00161df8 mov r1, r0 | r1 = r0;
0x00161dfc mov r0, r4 | r0 = r4;
0x00161e00 bl 0x57980 | X509_NAME_print_ex ();
0x00161e04 ldr r1, [pc, 0x1f0] | r1 = *(0x161ff8);
0x00161e08 mov r0, r4 | r0 = r4;
0x00161e0c add r1, pc, r1 | r1 = pc + r1;
0x00161e10 bl 0x6e860 | BIO_puts ();
0x00161e14 ldr r1, [pc, 0x1e4] | r1 = *(0x161ffc);
0x00161e18 mov r2, r6 | r2 = r6;
0x00161e1c add r1, pc, r1 | r1 = pc + r1;
0x00161e20 mov r0, r4 | r0 = r4;
0x00161e24 bl 0x6bbc4 | BIO_printf ()
0x00161e28 mov r0, r5 | r0 = r5;
0x00161e2c bl 0x16c0bc | r0 = X509_CRL_get0_lastUpdate ();
0x00161e30 mov r1, r0 | r1 = r0;
0x00161e34 mov r0, r4 | r0 = r4;
0x00161e38 bl 0x58a40 | ASN1_TIME_print ();
0x00161e3c ldr r1, [pc, 0x1c0] | r1 = *(0x162000);
0x00161e40 mov r2, r6 | r2 = r6;
0x00161e44 add r1, pc, r1 | r1 = pc + r1;
0x00161e48 mov r0, r4 | r0 = r4;
0x00161e4c bl 0x6bbc4 | BIO_printf ()
0x00161e50 mov r0, r5 | r0 = r5;
0x00161e54 bl 0x16c0c4 | r0 = X509_CRL_get0_nextUpdate ();
0x00161e58 cmp r0, 0 |
| if (r0 == 0) {
0x00161e5c beq 0x161f38 | goto label_4;
| }
0x00161e60 mov r0, r5 | r0 = r5;
0x00161e64 bl 0x16c0c4 | r0 = X509_CRL_get0_nextUpdate ();
0x00161e68 mov r1, r0 | r1 = r0;
0x00161e6c mov r0, r4 | r0 = r4;
0x00161e70 bl 0x58a40 | ASN1_TIME_print ();
| label_0:
0x00161e74 ldr r1, [pc, 0x18c] | r1 = *(0x162004);
0x00161e78 mov r0, r4 | r0 = r4;
0x00161e7c add r1, pc, r1 | r1 = pc + r1;
0x00161e80 bl 0x6bbc4 | BIO_printf ()
0x00161e84 mov r0, r5 | r0 = r5;
0x00161e88 bl 0x16c0e4 | X509_CRL_get0_extensions ();
0x00161e8c ldr r1, [pc, 0x178] | r1 = *(0x162008);
0x00161e90 mov r3, 8 | r3 = 8;
0x00161e94 add r1, pc, r1 | r1 = pc + r1;
0x00161e98 str r3, [sp] | *(sp) = r3;
0x00161e9c mov r3, 0 | r3 = 0;
0x00161ea0 mov r2, r0 | r2 = r0;
0x00161ea4 mov r0, r4 | r0 = r4;
0x00161ea8 bl 0x17f384 | X509V3_extensions_print ();
0x00161eac mov r0, r5 | r0 = r5;
0x00161eb0 bl 0x16c0ec | r0 = X509_CRL_get_REVOKED ();
0x00161eb4 mov r7, r0 | r7 = r0;
0x00161eb8 bl 0x154518 | r0 = OPENSSL_sk_num ();
0x00161ebc cmp r0, 0 |
| if (r0 <= 0) {
0x00161ec0 ble 0x161f4c | goto label_5;
| }
0x00161ec4 ldr r1, [pc, 0x144] | r1 = *(0x16200c);
0x00161ec8 add r1, pc, r1 | r1 = pc + r1;
| label_1:
0x00161ecc mov r0, r4 | r0 = r4;
0x00161ed0 bl 0x6bbc4 | BIO_printf ()
0x00161ed4 ldr r8, [pc, 0x138] | r8 = *(0x162010);
0x00161ed8 ldr sb, [pc, 0x138] | sb = *(0x00162018);
0x00161edc ldr sl, [pc, 0x138] | sl = "SS";
0x00161ee0 mov r5, 0 | r5 = 0;
0x00161ee4 add r8, pc, r8 | r8 = pc + r8;
0x00161ee8 add sb, pc, sb | sb = pc + sb;
0x00161eec add sl, pc, sl | sl = pc + sl;
| label_2:
0x00161ef0 mov r0, r7 | r0 = r7;
0x00161ef4 bl 0x154518 | r0 = OPENSSL_sk_num ();
0x00161ef8 cmp r5, r0 |
| if (r5 < r0) {
0x00161efc blt 0x161f58 | goto label_6;
| }
0x00161f00 ldr r2, [sp, 0xc] | r2 = var_ch;
0x00161f04 ldr r1, [sp, 8] | r1 = var_8h;
0x00161f08 mov r0, r4 | r0 = r4;
0x00161f0c bl 0x162a3c | X509_signature_print ();
0x00161f10 mov r0, 1 | r0 = 1;
0x00161f14 add sp, sp, 0x10 |
0x00161f18 pop {r4, r5, r6, r7, r8, sb, sl, pc} |
| label_3:
0x00161f1c ldr r2, [pc, 0xfc] | r2 = "SS";
0x00161f20 ldr r1, [pc, 0xfc] | r1 = *(0x162020);
0x00161f24 add r2, pc, r2 | r2 = pc + r2;
0x00161f28 add r1, pc, r1 | r1 = pc + r1;
0x00161f2c mov r0, r4 | r0 = r4;
0x00161f30 bl 0x6bbc4 | BIO_printf ()
0x00161f34 b 0x161d9c |
| } while (1);
| label_4:
0x00161f38 ldr r1, [pc, 0xe8] | r1 = *(0x162024);
0x00161f3c mov r0, r4 | r0 = r4;
0x00161f40 add r1, pc, r1 | r1 = pc + r1;
0x00161f44 bl 0x6bbc4 | BIO_printf ()
0x00161f48 b 0x161e74 | goto label_0;
| label_5:
0x00161f4c ldr r1, [pc, 0xd8] | r1 = *(0x162028);
0x00161f50 add r1, pc, r1 | r1 = pc + r1;
0x00161f54 b 0x161ecc | goto label_1;
| label_6:
0x00161f58 mov r1, r5 | r1 = r5;
0x00161f5c mov r0, r7 | r0 = r7;
0x00161f60 bl 0x154528 | OPENSSL_sk_value ();
0x00161f64 mov r1, r8 | r1 = r8;
0x00161f68 add r5, r5, 1 | r5++;
0x00161f6c mov r6, r0 | r6 = r0;
0x00161f70 mov r0, r4 | r0 = r4;
0x00161f74 bl 0x6bbc4 | BIO_printf ()
0x00161f78 mov r0, r6 | r0 = r6;
0x00161f7c bl 0x16c16c | r0 = X509_REVOKED_get0_serialNumber ();
0x00161f80 mov r1, r0 | r1 = r0;
0x00161f84 mov r0, r4 | r0 = r4;
0x00161f88 bl 0x5f764 | i2a_ASN1_INTEGER ();
0x00161f8c mov r1, sb | r1 = sb;
0x00161f90 mov r0, r4 | r0 = r4;
0x00161f94 bl 0x6bbc4 | BIO_printf ()
0x00161f98 mov r0, r6 | r0 = r6;
0x00161f9c bl 0x16c118 | r0 = X509_REVOKED_get0_revocationDate ();
0x00161fa0 mov r1, r0 | r1 = r0;
0x00161fa4 mov r0, r4 | r0 = r4;
0x00161fa8 bl 0x58a40 | ASN1_TIME_print ();
0x00161fac mov r1, sl | r1 = sl;
0x00161fb0 mov r0, r4 | r0 = r4;
0x00161fb4 bl 0x6bbc4 | BIO_printf ()
0x00161fb8 mov r0, r6 | r0 = r6;
0x00161fbc bl 0x16c194 | X509_REVOKED_get0_extensions ();
0x00161fc0 ldr r1, [pc, 0x68] | r1 = *(0x16202c);
0x00161fc4 mov r3, 8 | r3 = 8;
0x00161fc8 str r3, [sp] | *(sp) = r3;
0x00161fcc add r1, pc, r1 | r1 = pc + r1;
0x00161fd0 mov r3, 0 | r3 = 0;
0x00161fd4 mov r2, r0 | r2 = r0;
0x00161fd8 mov r0, r4 | r0 = r4;
0x00161fdc bl 0x17f384 | X509V3_extensions_print ();
0x00161fe0 b 0x161ef0 | goto label_2;
| }
; 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/libcrypto.so.1.1 @ 0x17a900 */
| #include <stdint.h>
|
; (fcn) sym.X509_POLICY_NODE_print () | void X509_POLICY_NODE_print (int32_t arg1, int32_t arg2) {
| int32_t var_0h;
| int32_t var_ch;
| r0 = arg1;
| r1 = arg2;
0x0017a900 push {r0, r1, r2, r4, r5, r6, r7, lr} |
0x0017a904 ldr r3, [pc, 0xbc] | r3 = *(0x17a9c4);
0x0017a908 ldr r6, [r1] | r6 = *(r1);
0x0017a90c ldr r1, [pc, 0xb8] | r1 = *(0x17a9c8);
0x0017a910 add r3, pc, r3 | r3 = pc + r3;
0x0017a914 mov r4, r0 | r4 = r0;
0x0017a918 add r1, pc, r1 | r1 = pc + r1;
0x0017a91c mov r5, r2 | r5 = r2;
0x0017a920 bl 0x6bbc4 | BIO_printf ()
0x0017a924 ldr r1, [r6, 4] | r1 = *((r6 + 4));
0x0017a928 mov r0, r4 | r0 = r4;
0x0017a92c bl 0x55f58 | i2a_ASN1_OBJECT ();
0x0017a930 ldr r1, [pc, 0x98] | r1 = *(0x17a9cc);
0x0017a934 mov r0, r4 | r0 = r4;
0x0017a938 add r1, pc, r1 | r1 = pc + r1;
0x0017a93c bl 0x6e860 | BIO_puts ();
0x0017a940 ldr r3, [r6] | r3 = *(r6);
0x0017a944 add r5, r5, 2 | r5 += 2;
0x0017a948 tst r3, 0x10 |
| if ((r3 & 0x10) != 0) {
0x0017a94c bne 0x17a99c | goto label_0;
| }
0x0017a950 ldr r3, [pc, 0x7c] | r3 = *(0x17a9d0);
0x0017a954 add r3, pc, r3 | r3 = pc + r3;
| do {
0x0017a958 ldr r7, [pc, 0x78] | r7 = *(0x17a9d4);
0x0017a95c ldr r1, [pc, 0x78] | r1 = *(0x17a9d8);
0x0017a960 add r7, pc, r7 | r7 = pc + r7;
0x0017a964 str r3, [sp] | *(sp) = r3;
0x0017a968 add r1, pc, r1 | r1 = pc + r1;
0x0017a96c mov r3, r7 | r3 = r7;
0x0017a970 mov r2, r5 | r2 = r5;
0x0017a974 mov r0, r4 | r0 = r4;
0x0017a978 bl 0x6bbc4 | BIO_printf ()
0x0017a97c ldr r1, [r6, 8] | r1 = *((r6 + 8));
0x0017a980 cmp r1, 0 |
| if (r1 == 0) {
0x0017a984 beq 0x17a9a8 | goto label_1;
| }
0x0017a988 mov r2, r5 | r2 = r5;
0x0017a98c mov r0, r4 | r0 = r4;
0x0017a990 add sp, sp, 0xc |
0x0017a994 pop {r4, r5, r6, r7, lr} |
0x0017a998 b 0x179620 | void (*0x179620)() ();
| label_0:
0x0017a99c ldr r3, [pc, 0x3c] | r3 = *(0x17a9dc);
0x0017a9a0 add r3, pc, r3 | r3 = pc + r3;
0x0017a9a4 b 0x17a958 |
| } while (1);
| label_1:
0x0017a9a8 ldr r1, [pc, 0x34] | r1 = *(0x17a9e0);
0x0017a9ac mov r3, r7 | r3 = r7;
0x0017a9b0 mov r2, r5 | r2 = r5;
0x0017a9b4 add r1, pc, r1 | r1 = pc + r1;
0x0017a9b8 mov r0, r4 | r0 = r4;
0x0017a9bc add sp, sp, 0xc |
0x0017a9c0 pop {r4, r5, r6, r7, lr} |
0x0017a9c4 b 0x6bbc4 | return void (*0x6bbc4)() ();
| }
; 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/libcrypto.so.1.1 @ 0x1620b8 */
| #include <stdint.h>
|
; (fcn) sym.X509_REQ_print_ex () | void X509_REQ_print_ex (int32_t arg1, int32_t arg2) {
| int32_t var_0h;
| int32_t var_ch;
| int32_t var_10h;
| int32_t var_14h;
| int32_t var_18h;
| int32_t var_1ch;
| int32_t var_20h;
| int32_t var_24h;
| int32_t var_2ch;
| r0 = arg1;
| r1 = arg2;
0x001620b8 push {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x001620bc mov r5, r3 | r5 = r3;
0x001620c0 ldr r3, [pc, 0x5bc] | r3 = *(0x162680);
0x001620c4 sub sp, sp, 0x2c |
0x001620c8 add r3, pc, r3 | r3 = pc + r3;
0x001620cc str r3, [sp, 0x14] | var_14h = r3;
0x001620d0 and r3, r2, 0xf0000 | r3 = r2 & 0xf0000;
0x001620d4 cmp r3, 0x40000 |
0x001620d8 mov r4, r0 | r4 = r0;
0x001620dc mov r6, r1 | r6 = r1;
0x001620e0 mov r7, r2 | r7 = r2;
| if (r3 != 0x40000) {
0x001620e4 moveq sb, 0xa | sb = 0xa;
| }
| if (r3 != 0x40000) {
0x001620e8 moveq r8, 0xc | r8 = 0xc;
| }
| if (r3 != 0x40000) {
0x001620ec beq 0x162100 |
0x001620f0 cmp r2, 0 |
0x001620f4 mov sb, 0x20 | sb = 0x20;
| if (r2 == 0) {
0x001620f8 movne r8, 0 | r8 = 0;
| }
| if (r2 == 0) {
0x001620fc moveq r8, 0x10 | r8 = 0x10;
| goto label_11;
| }
| }
| label_11:
0x00162100 tst r5, 1 |
0x00162104 beq 0x162338 |
| while (r0 > 0) {
0x00162108 tst r5, 2 |
| if ((r5 & 2) == 0) {
0x0016210c bne 0x16214c |
0x00162110 mov r0, r6 | r0 = r6;
0x00162114 bl 0x1663a8 | r0 = X509_REQ_get_version ();
0x00162118 cmp r0, 2 |
0x0016211c mov r3, r0 | r3 = r0;
| if (r0 > 2) {
0x00162120 bhi 0x16239c | goto label_12;
| }
0x00162124 ldr r2, [pc, 0x55c] | r2 = *(0x162684);
0x00162128 ldr r1, [pc, 0x55c] | r1 = *(0x162688);
0x0016212c str r0, [sp] | *(sp) = r0;
0x00162130 add r3, r0, 1 | r3 = r0 + 1;
0x00162134 add r2, pc, r2 | r2 = pc + r2;
0x00162138 add r1, pc, r1 | r1 = pc + r1;
0x0016213c mov r0, r4 | r0 = r4;
0x00162140 bl 0x6bbc4 | r0 = BIO_printf ()
| label_0:
0x00162144 cmp r0, 0 |
| if (r0 <= 0) {
0x00162148 ble 0x162370 | goto label_2;
| }
| }
0x0016214c tst r5, 0x40 |
| if ((r5 & 0x40) == 0) {
0x00162150 bne 0x1621b0 |
0x00162154 ldr r1, [pc, 0x534] | r1 = *(0x16268c);
0x00162158 mov r2, sb | r2 = sb;
0x0016215c add r1, pc, r1 | r1 = pc + r1;
0x00162160 mov r0, r4 | r0 = r4;
0x00162164 bl 0x6bbc4 | r0 = BIO_printf ()
0x00162168 cmp r0, 0 |
| if (r0 <= 0) {
0x0016216c ble 0x162370 | goto label_2;
| }
0x00162170 mov r0, r6 | r0 = r6;
0x00162174 bl 0x1663b0 | X509_REQ_get_subject_name ();
0x00162178 mov r3, r7 | r3 = r7;
0x0016217c mov r2, r8 | r2 = r8;
0x00162180 mov r1, r0 | r1 = r0;
0x00162184 mov r0, r4 | r0 = r4;
0x00162188 bl 0x57980 | r0 = X509_NAME_print_ex ();
0x0016218c cmp r0, 0 |
| if (r0 < 0) {
0x00162190 blt 0x162370 | goto label_2;
| }
0x00162194 ldr r1, [pc, 0x4f8] | r1 = *(0x162690);
0x00162198 mov r2, 1 | r2 = 1;
0x0016219c add r1, pc, r1 | r1 = pc + r1;
0x001621a0 mov r0, r4 | r0 = r4;
0x001621a4 bl 0x6e820 | r0 = BIO_write ();
0x001621a8 cmp r0, 0 |
| if (r0 <= 0) {
0x001621ac ble 0x162370 | goto label_2;
| }
| }
0x001621b0 ands r7, r5, 0x80 | r7 = r5 & 0x80;
| if (r7 == r5) {
0x001621b4 bne 0x162278 |
0x001621b8 ldr r1, [pc, 0x4d8] | r1 = *(0x162694);
0x001621bc mov r2, 0x21 | r2 = 0x21;
0x001621c0 add r1, pc, r1 | r1 = pc + r1;
0x001621c4 mov r0, r4 | r0 = r4;
0x001621c8 bl 0x6e820 | r0 = BIO_write ();
0x001621cc cmp r0, 0 |
| if (r0 <= 0) {
0x001621d0 ble 0x162370 | goto label_2;
| }
0x001621d4 ldr r8, [pc, 0x4c0] | r8 = *(0x162698);
0x001621d8 ldr r1, [pc, 0x4c0] | r1 = *(0x16269c);
0x001621dc add r8, pc, r8 | r8 = pc + r8;
0x001621e0 mov r2, r8 | r2 = r8;
0x001621e4 add r1, pc, r1 | r1 = pc + r1;
0x001621e8 mov r0, r4 | r0 = r4;
0x001621ec bl 0x6bbc4 | r0 = BIO_printf ()
0x001621f0 cmp r0, 0 |
| if (r0 <= 0) {
0x001621f4 ble 0x162370 | goto label_2;
| }
0x001621f8 mov r0, r6 | r0 = r6;
0x001621fc bl 0x166044 | X509_REQ_get_X509_PUBKEY ();
0x00162200 mov r3, r7 | r3 = r7;
0x00162204 mov r2, r7 | r2 = r7;
0x00162208 mov r1, r7 | r1 = r7;
0x0016220c str r0, [sp] | *(sp) = r0;
0x00162210 add r0, sp, 0x24 | r0 += var_24h;
0x00162214 bl 0x1702d8 | X509_PUBKEY_get0_param ();
0x00162218 ldr r1, [sp, 0x24] | r1 = var_24h;
0x0016221c mov r0, r4 | r0 = r4;
0x00162220 bl 0x55f58 | r0 = i2a_ASN1_OBJECT ();
0x00162224 cmp r0, 0 |
| if (r0 <= 0) {
0x00162228 ble 0x162370 | goto label_2;
| }
0x0016222c ldr r1, [pc, 0x470] | r1 = *(0x1626a0);
0x00162230 mov r0, r4 | r0 = r4;
0x00162234 add r1, pc, r1 | r1 = pc + r1;
0x00162238 bl 0x6e860 | r0 = BIO_puts ();
0x0016223c cmp r0, 0 |
| if (r0 <= 0) {
0x00162240 ble 0x162370 | goto label_2;
| }
0x00162244 mov r0, r6 | r0 = r6;
0x00162248 bl 0x166034 | r0 = X509_REQ_get0_pubkey ();
0x0016224c subs r1, r0, 0 | r1 = r0 - 0;
| if (r1 != r0) {
0x00162250 bne 0x1623b8 | goto label_13;
| }
0x00162254 ldr r1, [pc, 0x44c] | r1 = *(0x1626a4);
0x00162258 mov r2, r8 | r2 = r8;
0x0016225c add r1, pc, r1 | r1 = pc + r1;
0x00162260 mov r0, r4 | r0 = r4;
0x00162264 bl 0x6bbc4 | r0 = BIO_printf ()
0x00162268 cmp r0, 0 |
| if (r0 <= 0) {
0x0016226c ble 0x162370 | goto label_2;
| }
0x00162270 mov r0, r4 | r0 = r4;
0x00162274 bl 0xfd378 | ERR_print_errors ();
| }
| label_1:
0x00162278 ands r8, r5, 0x800 | r8 = r5 & 0x800;
| if (r8 == r5) {
0x0016227c beq 0x1623d4 | goto label_14;
| }
| label_3:
0x00162280 ands r7, r5, 0x100 | r7 = r5 & 0x100;
| if (r7 == r5) {
0x00162284 bne 0x162300 |
0x00162288 mov r0, r6 | r0 = r6;
0x0016228c bl 0x1661d4 | r0 = X509_REQ_get_extensions ();
0x00162290 subs sb, r0, 0 | sb = r0 - 0;
| if (sb == r0) {
0x00162294 beq 0x162300 | goto label_15;
| }
0x00162298 ldr r2, [pc, 0x40c] | r2 = *(0x1626a8);
0x0016229c ldr r1, [pc, 0x40c] | r1 = *(0x1626ac);
0x001622a0 add r2, pc, r2 | r2 = pc + r2;
0x001622a4 add r1, pc, r1 | r1 = pc + r1;
0x001622a8 mov r0, r4 | r0 = r4;
0x001622ac bl 0x6bbc4 | r0 = BIO_printf ()
0x001622b0 cmp r0, 0 |
| if (r0 <= 0) {
0x001622b4 ble 0x162370 | goto label_2;
| }
0x001622b8 ldr sl, [pc, 0x3f4] | sl = *(0x1626b0);
0x001622bc ldr r3, [pc, 0x3f4] | r3 = *(0x1626b4);
0x001622c0 ldr fp, [pc, 0x3f4] | fp = *(0x1626b8);
0x001622c4 add r3, pc, r3 | r3 = pc + r3;
0x001622c8 add sl, pc, sl | sl = pc + sl;
0x001622cc add fp, pc, fp |
0x001622d0 str r3, [sp, 0xc] | var_ch = r3;
| label_9:
0x001622d4 mov r0, sb | r0 = sb;
0x001622d8 bl 0x154518 | r0 = OPENSSL_sk_num ();
0x001622dc cmp r7, r0 |
| if (r7 < r0) {
0x001622e0 blt 0x162594 | goto label_16;
| }
0x001622e4 ldr r3, [pc, 0x3d4] | r3 = *(0x1626bc);
0x001622e8 ldr r2, [sp, 0x14] | r2 = var_14h;
0x001622ec mov r0, sb | r0 = sb;
0x001622f0 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x001622f4 mov r1, r3 | r1 = r3;
0x001622f8 str r3, [sp, 0xc] | var_ch = r3;
0x001622fc bl 0x1544d0 | OPENSSL_sk_pop_free ();
| }
| label_15:
0x00162300 tst r5, 0x200 |
| if ((r5 & 0x200) == 0) {
0x00162304 bne 0x162330 |
0x00162308 add r2, sp, 0x20 | r2 += var_20h;
0x0016230c add r1, sp, 0x24 | r1 += var_24h;
0x00162310 mov r0, r6 | r0 = r6;
0x00162314 bl 0x1663b8 | X509_REQ_get0_signature ();
0x00162318 ldr r2, [sp, 0x24] | r2 = var_24h;
0x0016231c ldr r1, [sp, 0x20] | r1 = var_20h;
0x00162320 mov r0, r4 | r0 = r4;
0x00162324 bl 0x162a3c | r0 = X509_signature_print ();
0x00162328 cmp r0, 0 |
| if (r0 == 0) {
0x0016232c beq 0x162370 | goto label_2;
| }
| }
0x00162330 mov r0, 1 | r0 = 1;
0x00162334 b 0x162394 | goto label_17;
0x00162338 ldr r1, [pc, 0x384] | r1 = "_";
0x0016233c mov r2, 0x15 | r2 = 0x15;
0x00162340 add r1, pc, r1 | r1 = pc + r1;
0x00162344 mov r0, r4 | r0 = r4;
0x00162348 bl 0x6e820 | r0 = BIO_write ();
0x0016234c cmp r0, 0 |
| if (r0 <= 0) {
0x00162350 ble 0x162370 | goto label_2;
| }
0x00162354 ldr r1, [pc, 0x36c] | r1 = *(0x1626c4);
0x00162358 mov r2, 0xa | r2 = 0xa;
0x0016235c add r1, pc, r1 | r1 = pc + r1;
0x00162360 mov r0, r4 | r0 = r4;
0x00162364 bl 0x6e820 | r0 = BIO_write ();
0x00162368 cmp r0, 0 |
0x0016236c bgt 0x162108 |
| }
| label_2:
0x00162370 mov r3, 0xcb | r3 = 0xcb;
0x00162374 str r3, [sp] | *(sp) = r3;
0x00162378 ldr r3, [pc, 0x34c] | r3 = *(0x1626c8);
0x0016237c mov r0, 0xb | r0 = 0xb;
0x00162380 add r3, pc, r3 | r3 = pc + r3;
0x00162384 mov r2, 7 | r2 = 7;
0x00162388 mov r1, 0x79 | r1 = 0x79;
0x0016238c bl 0xfc7b8 | ERR_put_error ();
0x00162390 mov r0, 0 | r0 = 0;
| label_17:
0x00162394 add sp, sp, 0x2c |
0x00162398 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_12:
0x0016239c ldr r2, [pc, 0x32c] | r2 = *(0x1626cc);
0x001623a0 ldr r1, [pc, 0x32c] | r1 = *(0x1626d0);
0x001623a4 add r2, pc, r2 | r2 = pc + r2;
0x001623a8 add r1, pc, r1 | r1 = pc + r1;
0x001623ac mov r0, r4 | r0 = r4;
0x001623b0 bl 0x6bbc4 | BIO_printf ()
0x001623b4 b 0x162144 | goto label_0;
| label_13:
0x001623b8 mov r3, r7 | r3 = r7;
0x001623bc mov r2, 0x10 | r2 = 0x10;
0x001623c0 mov r0, r4 | r0 = r4;
0x001623c4 bl 0x10e7ac | r0 = EVP_PKEY_print_public ();
0x001623c8 cmp r0, 0 |
| if (r0 > 0) {
0x001623cc bgt 0x162278 | goto label_1;
| }
0x001623d0 b 0x162370 | goto label_2;
| label_14:
0x001623d4 ldr r7, [pc, 0x2fc] | r7 = *(0x1626d4);
0x001623d8 ldr r1, [pc, 0x2fc] | r1 = *(0x1626d8);
0x001623dc add r7, pc, r7 | r7 = pc + r7;
0x001623e0 mov r2, r7 | r2 = r7;
0x001623e4 add r1, pc, r1 | r1 = pc + r1;
0x001623e8 mov r0, r4 | r0 = r4;
0x001623ec bl 0x6bbc4 | r0 = BIO_printf ()
0x001623f0 cmp r0, 0 |
| if (r0 <= 0) {
0x001623f4 ble 0x162370 | goto label_2;
| }
0x001623f8 mov r0, r6 | r0 = r6;
0x001623fc bl 0x1661b4 | r0 = X509_REQ_get_attr_count ();
0x00162400 cmp r0, 0 |
| if (r0 != 0) {
0x00162404 bne 0x162578 | goto label_18;
| }
0x00162408 ldr r1, [pc, 0x2d0] | r1 = *(0x1626dc);
0x0016240c mov r2, r7 | r2 = r7;
0x00162410 add r1, pc, r1 | r1 = pc + r1;
0x00162414 mov r0, r4 | r0 = r4;
0x00162418 bl 0x6bbc4 | r0 = BIO_printf ()
0x0016241c cmp r0, 0 |
| if (r0 > 0) {
0x00162420 bgt 0x162280 | goto label_3;
| }
0x00162424 b 0x162370 | goto label_2;
| do {
0x00162428 mov r1, r8 | r1 = r8;
0x0016242c mov r0, r6 | r0 = r6;
0x00162430 bl 0x1661cc | X509_REQ_get_attr ();
0x00162434 str r0, [sp, 0x10] | var_10h = r0;
0x00162438 bl 0x163bd8 | r0 = X509_ATTRIBUTE_get0_object ();
0x0016243c mov sb, r0 | sb = r0;
0x00162440 bl 0x120878 | OBJ_obj2nid ();
0x00162444 bl 0x166160 | r0 = X509_REQ_extension_nid ();
0x00162448 subs r7, r0, 0 | r7 = r0 - 0;
| if (r7 == r0) {
0x0016244c beq 0x162468 | goto label_19;
| }
| label_4:
0x00162450 add r8, r8, 1 | r8++;
| label_8:
0x00162454 mov r0, r6 | r0 = r6;
0x00162458 bl 0x1661b4 | r0 = X509_REQ_get_attr_count ();
0x0016245c cmp r0, r8 |
0x00162460 bgt 0x162428 |
| } while (r0 > r8);
0x00162464 b 0x162280 | goto label_3;
| label_19:
0x00162468 ldr r1, [pc, 0x274] | r1 = *(0x1626e0);
0x0016246c ldr r2, [sp, 0x18] | r2 = var_18h;
0x00162470 add r1, pc, r1 | r1 = pc + r1;
0x00162474 mov r0, r4 | r0 = r4;
0x00162478 bl 0x6bbc4 | r0 = BIO_printf ()
0x0016247c cmp r0, 0 |
| if (r0 <= 0) {
0x00162480 ble 0x162370 | goto label_2;
| }
0x00162484 mov r1, sb | r1 = sb;
0x00162488 mov r0, r4 | r0 = r4;
0x0016248c bl 0x55f58 | r0 = i2a_ASN1_OBJECT ();
0x00162490 subs sb, r0, 0 | sb = r0 - 0;
| if (sb > r0) {
0x00162494 strle r7, [sp, 0xc] | var_ch = r7;
| }
| if (sb > r0) {
0x00162498 movle fp, 1 |
| }
| if (sb > r0) {
0x0016249c movle sl, r7 | sl = r7;
| }
| if (sb > r0) {
0x001624a0 ble 0x1624c8 |
0x001624a4 ldr r0, [sp, 0x10] | r0 = var_10h;
0x001624a8 bl 0x163bc8 | r0 = X509_ATTRIBUTE_count ();
0x001624ac mov fp, r0 |
| label_5:
0x001624b0 mov r1, r7 | r1 = r7;
0x001624b4 ldr r0, [sp, 0x10] | r0 = var_10h;
0x001624b8 bl 0x163be4 | X509_ATTRIBUTE_get0_type ();
0x001624bc str r7, [sp, 0xc] | var_ch = r7;
0x001624c0 ldr sl, [r0, 4] | sl = *((r0 + 4));
0x001624c4 ldr r7, [r0] | r7 = *(r0);
| }
0x001624c8 rsb sb, sb, 0x19 | sb = 0x19 - sb;
| label_6:
0x001624cc cmp sb, 0 |
| if (sb > 0) {
0x001624d0 bgt 0x16254c | goto label_20;
| }
0x001624d4 ldr r1, [pc, 0x20c] | r1 = *(0x1626e4);
0x001624d8 mov r0, r4 | r0 = r4;
0x001624dc add r1, pc, r1 | r1 = pc + r1;
0x001624e0 bl 0x6e860 | r0 = BIO_puts ();
0x001624e4 cmp r0, 0 |
| if (r0 <= 0) {
0x001624e8 ble 0x162370 | goto label_2;
| }
0x001624ec cmp r7, 0x16 |
| if (r7 > 0x16) {
0x001624f0 bhi 0x16256c | goto label_21;
| }
0x001624f4 ldr r3, [pc, 0x1f0] | r3 = *(0x1626e8);
0x001624f8 mov r2, 1 | r2 = 1;
0x001624fc ands r3, r3, r2, lsl r7 | r3 &= (r2 << r7);
| if (r3 == r3) {
0x00162500 beq 0x16256c | goto label_21;
| }
0x00162504 ldr r2, [sl] | r2 = *(sl);
0x00162508 ldr r1, [sl, 8] | r1 = *((sl + 8));
0x0016250c mov r0, r4 | r0 = r4;
0x00162510 bl 0x6e820 | BIO_write ();
0x00162514 ldr r3, [sl] | r3 = *(sl);
0x00162518 cmp r0, r3 |
| if (r0 != r3) {
0x0016251c bne 0x162370 | goto label_2;
| }
0x00162520 ldr r1, [pc, 0x1c8] | r1 = *(0x1626ec);
0x00162524 add r1, pc, r1 | r1 = pc + r1;
| label_7:
0x00162528 mov r0, r4 | r0 = r4;
0x0016252c bl 0x6e860 | r0 = BIO_puts ();
0x00162530 cmp r0, 0 |
| if (r0 <= 0) {
0x00162534 ble 0x162370 | goto label_2;
| }
0x00162538 ldr r3, [sp, 0xc] | r3 = var_ch;
0x0016253c add r7, r3, 1 | r7 = r3 + 1;
0x00162540 cmp fp, r7 |
| if (fp <= r7) {
0x00162544 ble 0x162450 | goto label_4;
| }
0x00162548 b 0x1624b0 | goto label_5;
| label_20:
0x0016254c mov r2, 1 | r2 = 1;
0x00162550 ldr r1, [sp, 0x1c] | r1 = var_1ch;
0x00162554 mov r0, r4 | r0 = r4;
0x00162558 bl 0x6e820 | r0 = BIO_write ();
0x0016255c cmp r0, 1 |
| if (r0 != 1) {
0x00162560 bne 0x162370 | goto label_2;
| }
0x00162564 sub sb, sb, 1 | sb--;
0x00162568 b 0x1624cc | goto label_6;
| label_21:
0x0016256c ldr r1, [pc, 0x180] | r1 = *(0x1626f0);
0x00162570 add r1, pc, r1 | r1 = pc + r1;
0x00162574 b 0x162528 | goto label_7;
| label_18:
0x00162578 ldr r3, [pc, 0x178] | r3 = *(0x1626f4);
0x0016257c add r3, pc, r3 | r3 = pc + r3;
0x00162580 str r3, [sp, 0x18] | var_18h = r3;
0x00162584 ldr r3, [pc, 0x170] | r3 = *(0x1626f8);
0x00162588 add r3, pc, r3 | r3 = pc + r3;
0x0016258c str r3, [sp, 0x1c] | var_1ch = r3;
0x00162590 b 0x162454 | goto label_8;
| label_16:
0x00162594 mov r1, r7 | r1 = r7;
0x00162598 mov r0, sb | r0 = sb;
0x0016259c bl 0x154528 | OPENSSL_sk_value ();
0x001625a0 mov r2, sl | r2 = sl;
0x001625a4 ldr r1, [sp, 0xc] | r1 = var_ch;
0x001625a8 mov r8, r0 | r8 = r0;
0x001625ac mov r0, r4 | r0 = r4;
0x001625b0 bl 0x6bbc4 | r0 = BIO_printf ()
0x001625b4 cmp r0, 0 |
| if (r0 <= 0) {
0x001625b8 ble 0x162370 | goto label_2;
| }
0x001625bc mov r0, r8 | r0 = r8;
0x001625c0 bl 0x167724 | r0 = X509_EXTENSION_get_object ();
0x001625c4 mov r1, r0 | r1 = r0;
0x001625c8 mov r0, r4 | r0 = r4;
0x001625cc bl 0x55f58 | r0 = i2a_ASN1_OBJECT ();
0x001625d0 cmp r0, 0 |
| if (r0 <= 0) {
0x001625d4 ble 0x162370 | goto label_2;
| }
0x001625d8 mov r0, r8 | r0 = r8;
0x001625dc bl 0x16773c | X509_EXTENSION_get_critical ();
0x001625e0 ldr r1, [pc, 0x118] | r1 = *(0x1626fc);
0x001625e4 add r1, pc, r1 | r1 = pc + r1;
0x001625e8 cmp r0, 0 |
| if (r0 == 0) {
0x001625ec movne r2, fp | r2 = fp;
| }
| if (r0 != 0) {
0x001625f0 moveq r2, sl | r2 = sl;
| }
0x001625f4 mov r0, r4 | r0 = r4;
0x001625f8 bl 0x6bbc4 | r0 = BIO_printf ()
0x001625fc cmp r0, 0 |
| if (r0 <= 0) {
0x00162600 ble 0x162370 | goto label_2;
| }
0x00162604 mov r3, 0x10 | r3 = 0x10;
0x00162608 mov r2, r5 | r2 = r5;
0x0016260c mov r1, r8 | r1 = r8;
0x00162610 mov r0, r4 | r0 = r4;
0x00162614 bl 0x17f18c | r0 = X509V3_EXT_print ();
0x00162618 cmp r0, 0 |
| if (r0 == 0) {
0x0016261c beq 0x162644 | goto label_22;
| }
| label_10:
0x00162620 ldr r1, [pc, 0xdc] | r1 = *(0x162700);
0x00162624 mov r2, 1 | r2 = 1;
0x00162628 add r1, pc, r1 | r1 = pc + r1;
0x0016262c mov r0, r4 | r0 = r4;
0x00162630 bl 0x6e820 | r0 = BIO_write ();
0x00162634 cmp r0, 0 |
| if (r0 <= 0) {
0x00162638 ble 0x162370 | goto label_2;
| }
0x0016263c add r7, r7, 1 | r7++;
0x00162640 b 0x1622d4 | goto label_9;
| label_22:
0x00162644 ldr r2, [pc, 0xbc] | r2 = *(0x162704);
0x00162648 ldr r1, [pc, 0xbc] | r1 = *(0x162708);
0x0016264c add r2, pc, r2 | r2 = pc + r2;
0x00162650 add r1, pc, r1 | r1 = pc + r1;
0x00162654 mov r0, r4 | r0 = r4;
0x00162658 bl 0x6bbc4 | r0 = BIO_printf ()
0x0016265c cmp r0, 0 |
| if (r0 <= 0) {
0x00162660 ble 0x162370 | goto label_2;
| }
0x00162664 mov r0, r8 | r0 = r8;
0x00162668 bl 0x167730 | r0 = X509_EXTENSION_get_data ();
0x0016266c mov r1, r0 | r1 = r0;
0x00162670 mov r0, r4 | r0 = r4;
0x00162674 bl 0x565e8 | r0 = ASN1_STRING_print ();
0x00162678 cmp r0, 0 |
| if (r0 > 0) {
0x0016267c bgt 0x162620 | goto label_10;
| }
0x00162680 b 0x162370 | goto label_2;
| }
; 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/libcrypto.so.1.1 @ 0x162b2c */
| #include <stdint.h>
|
; (fcn) sym.X509_aux_print () | void X509_aux_print (int32_t arg1, int32_t arg2) {
| int32_t var_0h;
| int32_t var_4h;
| int32_t var_ch;
| int32_t var_14h;
| int32_t var_18h;
| int32_t var_6ch;
| r0 = arg1;
| r1 = arg2;
0x00162b2c push {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00162b30 mov r4, r0 | r4 = r0;
0x00162b34 sub sp, sp, 0x6c |
0x00162b38 mov r0, r1 | r0 = r1;
0x00162b3c mov r6, r1 | r6 = r1;
0x00162b40 mov r5, r2 | r5 = r2;
0x00162b44 bl 0x170ac0 | r0 = X509_trusted ();
0x00162b48 cmp r0, 0 |
| if (r0 == 0) {
0x00162b4c beq 0x162cd8 | goto label_4;
| }
0x00162b50 mov r0, r6 | r0 = r6;
0x00162b54 bl 0x170dd8 | r0 = X509_get0_trust_objects ();
0x00162b58 mov sb, r0 | sb = r0;
0x00162b5c mov r0, r6 | r0 = r6;
0x00162b60 bl 0x170de8 | X509_get0_reject_objects ();
0x00162b64 cmp sb, 0 |
0x00162b68 mov r8, r0 | r8 = r0;
| if (sb == 0) {
0x00162b6c beq 0x162d30 | goto label_5;
| }
0x00162b70 ldr r3, [pc, 0x268] | r3 = *(0x162ddc);
0x00162b74 ldr r1, [pc, 0x268] | r1 = *(0x162de0);
0x00162b78 ldr fp, [pc, 0x268] | fp = *(0x162de4);
0x00162b7c add r3, pc, r3 | r3 = pc + r3;
0x00162b80 add r2, r5, 2 | r2 = r5 + 2;
0x00162b84 str r3, [sp, 4] | var_4h = r3;
0x00162b88 str r2, [sp] | *(sp) = r2;
0x00162b8c add r1, pc, r1 | r1 = pc + r1;
0x00162b90 mov r2, r5 | r2 = r5;
0x00162b94 mov r0, r4 | r0 = r4;
0x00162b98 bl 0x6bbc4 | BIO_printf ()
0x00162b9c mov r7, 0 | r7 = 0;
0x00162ba0 mov r3, 1 | r3 = 1;
0x00162ba4 add fp, pc, fp |
0x00162ba8 add sl, sp, 0x18 | sl += var_18h;
| do {
0x00162bac mov r0, sb | r0 = sb;
0x00162bb0 str r3, [sp, 0xc] | var_ch = r3;
0x00162bb4 bl 0x154518 | OPENSSL_sk_num ();
0x00162bb8 ldr r3, [sp, 0xc] | r3 = var_ch;
0x00162bbc cmp r7, r0 |
| if (r7 >= r0) {
0x00162bc0 blt 0x162ce4 |
0x00162bc4 ldr r1, [pc, 0x220] | r1 = *(0x162de8);
0x00162bc8 mov r0, r4 | r0 = r4;
0x00162bcc add r1, pc, r1 | r1 = pc + r1;
0x00162bd0 bl 0x6e860 | BIO_puts ();
| label_0:
0x00162bd4 cmp r8, 0 |
| if (r8 == 0) {
0x00162bd8 beq 0x162d9c | goto label_6;
| }
0x00162bdc ldr r3, [pc, 0x20c] | r3 = *(0x162dec);
0x00162be0 ldr r1, [pc, 0x20c] | r1 = *(0x162df0);
0x00162be4 add r3, pc, r3 | r3 = pc + r3;
0x00162be8 add r2, r5, 2 | r2 = r5 + 2;
0x00162bec str r2, [sp] | *(sp) = r2;
0x00162bf0 str r3, [sp, 4] | var_4h = r3;
0x00162bf4 mov r2, r5 | r2 = r5;
0x00162bf8 add r1, pc, r1 | r1 = pc + r1;
0x00162bfc mov r0, r4 | r0 = r4;
0x00162c00 bl 0x6bbc4 | BIO_printf ()
0x00162c04 ldr fp, [pc, 0x1ec] | fp = *(0x162df4);
0x00162c08 mov r7, 0 | r7 = 0;
0x00162c0c mov sb, 1 | sb = 1;
0x00162c10 add fp, pc, fp |
0x00162c14 add sl, sp, 0x18 | sl += var_18h;
| label_1:
0x00162c18 mov r0, r8 | r0 = r8;
0x00162c1c bl 0x154518 | r0 = OPENSSL_sk_num ();
0x00162c20 cmp r7, r0 |
| if (r7 < r0) {
0x00162c24 blt 0x162d50 | goto label_7;
| }
0x00162c28 ldr r1, [pc, 0x1cc] | r1 = *(0x162df8);
0x00162c2c mov r0, r4 | r0 = r4;
0x00162c30 add r1, pc, r1 | r1 = pc + r1;
0x00162c34 bl 0x6e860 | BIO_puts ();
| label_2:
0x00162c38 mov r1, 0 | r1 = 0;
0x00162c3c mov r0, r6 | r0 = r6;
0x00162c40 bl 0x170bf0 | r0 = X509_alias_get0 ();
0x00162c44 cmp r0, 0 |
| if (r0 != 0) {
0x00162c48 beq 0x162c6c |
0x00162c4c ldr r3, [pc, 0x1ac] | r3 = *(0x162dfc);
0x00162c50 ldr r1, [pc, 0x1ac] | r1 = *(0x162e00);
0x00162c54 str r0, [sp] | *(sp) = r0;
0x00162c58 add r3, pc, r3 | r3 = pc + r3;
0x00162c5c mov r2, r5 | r2 = r5;
0x00162c60 add r1, pc, r1 | r1 = pc + r1;
0x00162c64 mov r0, r4 | r0 = r4;
0x00162c68 bl 0x6bbc4 | BIO_printf ()
| }
0x00162c6c mov r0, r6 | r0 = r6;
0x00162c70 add r1, sp, 0x14 | r1 += var_14h;
0x00162c74 bl 0x170c1c | r0 = X509_keyid_get0 ();
0x00162c78 subs r6, r0, 0 | r6 = r0 - 0;
| if (r6 != r0) {
0x00162c7c beq 0x162cd8 |
0x00162c80 ldr r3, [pc, 0x180] | r3 = *(0x162e04);
0x00162c84 ldr r1, [pc, 0x180] | r1 = *(0x162e08);
0x00162c88 mov r2, r5 | r2 = r5;
0x00162c8c add r3, pc, r3 | r3 = pc + r3;
0x00162c90 add r1, pc, r1 | r1 = pc + r1;
0x00162c94 mov r0, r4 | r0 = r4;
0x00162c98 bl 0x6bbc4 | BIO_printf ()
0x00162c9c ldr r7, [pc, 0x16c] | r7 = *(0x162e0c);
0x00162ca0 ldr r8, [pc, 0x16c] | r8 = *(0x162e10);
0x00162ca4 ldr sb, [pc, 0x16c] | sb = *(0x162e14);
0x00162ca8 mov r5, 0 | r5 = 0;
0x00162cac add r7, pc, r7 | r7 = pc + r7;
0x00162cb0 add r8, pc, r8 | r8 = pc + r8;
0x00162cb4 add sb, pc, sb | sb = pc + sb;
| label_3:
0x00162cb8 ldr r3, [sp, 0x14] | r3 = var_14h;
0x00162cbc cmp r5, r3 |
| if (r5 < r3) {
0x00162cc0 blt 0x162dbc | goto label_8;
| }
0x00162cc4 ldr r1, [pc, 0x150] | r1 = *(0x162e18);
0x00162cc8 mov r2, 1 | r2 = 1;
0x00162ccc add r1, pc, r1 | r1 = pc + r1;
0x00162cd0 mov r0, r4 | r0 = r4;
0x00162cd4 bl 0x6e820 | BIO_write ();
| }
| label_4:
0x00162cd8 mov r0, 1 | r0 = 1;
0x00162cdc add sp, sp, 0x6c |
0x00162ce0 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| }
0x00162ce4 cmp r3, 0 |
| if (r3 == 0) {
0x00162ce8 bne 0x162cf8 |
0x00162cec mov r1, fp | r1 = fp;
0x00162cf0 mov r0, r4 | r0 = r4;
0x00162cf4 bl 0x6e860 | BIO_puts ();
| }
0x00162cf8 mov r1, r7 | r1 = r7;
0x00162cfc mov r0, sb | r0 = sb;
0x00162d00 bl 0x154528 | OPENSSL_sk_value ();
0x00162d04 mov r3, 0 | r3 = 0;
0x00162d08 mov r1, 0x50 | r1 = 0x50;
0x00162d0c add r7, r7, 1 | r7++;
0x00162d10 mov r2, r0 | r2 = r0;
0x00162d14 mov r0, sl | r0 = sl;
0x00162d18 bl 0x12093c | OBJ_obj2txt ();
0x00162d1c mov r1, sl | r1 = sl;
0x00162d20 mov r0, r4 | r0 = r4;
0x00162d24 bl 0x6e860 | BIO_puts ();
0x00162d28 mov r3, 0 | r3 = 0;
0x00162d2c b 0x162bac |
| } while (1);
| label_5:
0x00162d30 ldr r3, [pc, 0xe8] | r3 = *(0x162e1c);
0x00162d34 ldr r1, [pc, 0xe8] | r1 = *(0x162e20);
0x00162d38 add r3, pc, r3 | r3 = pc + r3;
0x00162d3c mov r2, r5 | r2 = r5;
0x00162d40 add r1, pc, r1 | r1 = pc + r1;
0x00162d44 mov r0, r4 | r0 = r4;
0x00162d48 bl 0x6bbc4 | BIO_printf ()
0x00162d4c b 0x162bd4 | goto label_0;
| label_7:
0x00162d50 cmp sb, 0 |
| if (sb == 0) {
0x00162d54 bne 0x162d64 |
0x00162d58 mov r1, fp | r1 = fp;
0x00162d5c mov r0, r4 | r0 = r4;
0x00162d60 bl 0x6e860 | BIO_puts ();
| }
0x00162d64 mov r1, r7 | r1 = r7;
0x00162d68 mov r0, r8 | r0 = r8;
0x00162d6c bl 0x154528 | OPENSSL_sk_value ();
0x00162d70 mov r3, 0 | r3 = 0;
0x00162d74 mov r1, 0x50 | r1 = 0x50;
0x00162d78 add r7, r7, 1 | r7++;
0x00162d7c mov sb, 0 | sb = 0;
0x00162d80 mov r2, r0 | r2 = r0;
0x00162d84 mov r0, sl | r0 = sl;
0x00162d88 bl 0x12093c | OBJ_obj2txt ();
0x00162d8c mov r1, sl | r1 = sl;
0x00162d90 mov r0, r4 | r0 = r4;
0x00162d94 bl 0x6e860 | BIO_puts ();
0x00162d98 b 0x162c18 | goto label_1;
| label_6:
0x00162d9c ldr r3, [pc, 0x84] | r3 = *(0x162e24);
0x00162da0 ldr r1, [pc, 0x84] | r1 = *(0x162e28);
0x00162da4 add r3, pc, r3 | r3 = pc + r3;
0x00162da8 mov r2, r5 | r2 = r5;
0x00162dac add r1, pc, r1 | r1 = pc + r1;
0x00162db0 mov r0, r4 | r0 = r4;
0x00162db4 bl 0x6bbc4 | BIO_printf ()
0x00162db8 b 0x162c38 | goto label_2;
| label_8:
0x00162dbc cmp r5, 0 |
0x00162dc0 ldrb r3, [r6, r5] | r3 = *((r6 + r5));
| if (r5 == 0) {
0x00162dc4 movne r2, r7 | r2 = r7;
| }
| if (r5 != 0) {
0x00162dc8 moveq r2, r8 | r2 = r8;
| }
0x00162dcc mov r1, sb | r1 = sb;
0x00162dd0 mov r0, r4 | r0 = r4;
0x00162dd4 bl 0x6bbc4 | BIO_printf ()
0x00162dd8 add r5, r5, 1 | r5++;
0x00162ddc b 0x162cb8 | goto label_3;
| }
; 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/libcrypto.so.1.1 @ 0x162798 */
| #include <stdint.h>
|
; (fcn) sym.X509_ocspid_print () | void X509_ocspid_print (int32_t arg1, int32_t arg2) {
| int32_t var_8h;
| int32_t var_ch;
| int32_t var_24h;
| r0 = arg1;
| r1 = arg2;
0x00162798 push {r4, r5, r6, r7, r8, sb, lr} |
0x0016279c mov sb, r1 | sb = r1;
0x001627a0 ldr r1, [pc, 0x188] | r1 = *(0x16292c);
0x001627a4 sub sp, sp, 0x24 |
0x001627a8 add r1, pc, r1 | r1 = pc + r1;
0x001627ac mov r6, r0 | r6 = r0;
0x001627b0 bl 0x6bbc4 | r0 = BIO_printf ()
0x001627b4 cmp r0, 0 |
| if (r0 <= 0) {
0x001627b8 ble 0x162910 | goto label_0;
| }
0x001627bc mov r0, sb | r0 = sb;
0x001627c0 bl 0x163e94 | X509_get_subject_name ();
0x001627c4 mov r1, 0 | r1 = 0;
0x001627c8 mov r4, r0 | r4 = r0;
0x001627cc bl 0x16f6c8 | i2d_X509_NAME ();
0x001627d0 ldr r1, [pc, 0x15c] | r1 = *(0x162930);
0x001627d4 mov r2, 0xee | r2 = 0xee;
0x001627d8 add r1, pc, r1 | r1 = pc + r1;
0x001627dc mov r8, r0 | r8 = r0;
0x001627e0 bl 0x118474 | r0 = CRYPTO_malloc ();
0x001627e4 cmp r0, 0 |
0x001627e8 mov r5, r0 | r5 = r0;
0x001627ec str r0, [sp, 8] | var_8h = r0;
| if (r0 == 0) {
0x001627f0 beq 0x162910 | goto label_0;
| }
0x001627f4 add r1, sp, 8 | r1 += var_8h;
0x001627f8 mov r0, r4 | r0 = r4;
0x001627fc bl 0x16f6c8 | i2d_X509_NAME ();
0x00162800 bl 0x10c238 | EVP_sha1 ();
0x00162804 mov r4, 0 | r4 = 0;
0x00162808 add r7, sp, 0xc | r7 += var_ch;
0x0016280c mov r3, r4 | r3 = r4;
0x00162810 mov r2, r7 | r2 = r7;
0x00162814 mov r1, r8 | r1 = r8;
0x00162818 stm sp, {r0, r4} | *(sp) = r0;
| *((sp + 4)) = r4;
0x0016281c mov r0, r5 | r0 = r5;
0x00162820 bl 0x100be8 | r0 = EVP_Digest ();
0x00162824 cmp r0, r4 |
| if (r0 == r4) {
0x00162828 beq 0x162914 | goto label_1;
| }
0x0016282c ldr r8, [pc, 0x104] | r8 = *(0x162934);
0x00162830 add r8, pc, r8 | r8 = pc + r8;
| do {
0x00162834 ldrb r2, [r7, r4] | r2 = *((r7 + r4));
0x00162838 mov r1, r8 | r1 = r8;
0x0016283c mov r0, r6 | r0 = r6;
0x00162840 bl 0x6bbc4 | r0 = BIO_printf ()
0x00162844 cmp r0, 0 |
| if (r0 <= 0) {
0x00162848 ble 0x162914 | goto label_1;
| }
0x0016284c add r4, r4, 1 | r4++;
0x00162850 cmp r4, 0x14 |
0x00162854 bne 0x162834 |
| } while (r4 != 0x14);
0x00162858 ldr r1, [pc, 0xdc] | r1 = *(0x162938);
0x0016285c mov r2, 0xf8 | r2 = 0xf8;
0x00162860 add r1, pc, r1 | r1 = pc + r1;
0x00162864 mov r0, r5 | r0 = r5;
0x00162868 bl 0x11842c | CRYPTO_free ();
0x0016286c ldr r1, [pc, 0xcc] | r1 = *(0x16293c);
0x00162870 mov r0, r6 | r0 = r6;
0x00162874 add r1, pc, r1 | r1 = pc + r1;
0x00162878 bl 0x6bbc4 | r0 = BIO_printf ()
0x0016287c cmp r0, 0 |
| if (r0 <= 0) {
0x00162880 ble 0x162910 | goto label_0;
| }
0x00162884 mov r0, sb | r0 = sb;
0x00162888 bl 0x17031c | r0 = X509_get0_pubkey_bitstr ();
0x0016288c subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 == r0) {
0x00162890 beq 0x162910 | goto label_0;
| }
0x00162894 bl 0x5b9f8 | r0 = ASN1_STRING_get0_data ();
0x00162898 mov r5, r0 | r5 = r0;
0x0016289c mov r0, r4 | r0 = r4;
0x001628a0 bl 0x5b9e0 | ASN1_STRING_length ();
0x001628a4 mov r4, 0 | r4 = 0;
0x001628a8 mov sb, r0 | sb = r0;
0x001628ac bl 0x10c238 | EVP_sha1 ();
0x001628b0 mov r3, r4 | r3 = r4;
0x001628b4 mov r2, r7 | r2 = r7;
0x001628b8 mov r1, sb | r1 = sb;
0x001628bc stm sp, {r0, r4} | *(sp) = r0;
| *((sp + 4)) = r4;
0x001628c0 mov r0, r5 | r0 = r5;
0x001628c4 bl 0x100be8 | r0 = EVP_Digest ();
0x001628c8 cmp r0, r4 |
| if (r0 == r4) {
0x001628cc beq 0x162910 | goto label_0;
| }
| do {
0x001628d0 ldrb r2, [r7, r4] | r2 = *((r7 + r4));
0x001628d4 mov r1, r8 | r1 = r8;
0x001628d8 mov r0, r6 | r0 = r6;
0x001628dc bl 0x6bbc4 | r0 = BIO_printf ()
0x001628e0 cmp r0, 0 |
| if (r0 <= 0) {
0x001628e4 ble 0x162910 | goto label_0;
| }
0x001628e8 add r4, r4, 1 | r4++;
0x001628ec cmp r4, 0x14 |
0x001628f0 bne 0x1628d0 |
| } while (r4 != 0x14);
0x001628f4 ldr r1, [pc, 0x48] | r1 = *(0x162940);
0x001628f8 mov r0, r6 | r0 = r6;
0x001628fc add r1, pc, r1 | r1 = pc + r1;
0x00162900 bl 0x6bbc4 | BIO_printf ()
0x00162904 mov r0, 1 | r0 = 1;
| do {
0x00162908 add sp, sp, 0x24 |
0x0016290c pop {r4, r5, r6, r7, r8, sb, pc} |
| label_0:
0x00162910 mov r5, 0 | r5 = 0;
| label_1:
0x00162914 ldr r1, [pc, 0x2c] | r1 = *(0x162944);
0x00162918 mov r0, r5 | r0 = r5;
0x0016291c ldr r2, [pc, 0x28] | r2 = *(0x162948);
0x00162920 add r1, pc, r1 | r1 = pc + r1;
0x00162924 bl 0x11842c | CRYPTO_free ();
0x00162928 mov r0, 0 | r0 = 0;
0x0016292c b 0x162908 |
| } while (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/libcrypto.so.1.1 @ 0x162e30 */
| #include <stdint.h>
|
; (fcn) sym.X509_print_ex () | void X509_print_ex (int32_t arg1, int32_t arg2) {
| int32_t var_0h;
| int32_t var_ch;
| int32_t var_10h;
| int32_t var_14h;
| int32_t var_1ch;
| r0 = arg1;
| r1 = arg2;
0x00162e30 push {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00162e34 mov r5, r3 | r5 = r3;
0x00162e38 and r3, r2, 0xf0000 | r3 = r2 & 0xf0000;
0x00162e3c cmp r3, 0x40000 |
0x00162e40 sub sp, sp, 0x1c |
0x00162e44 mov r4, r0 | r4 = r0;
0x00162e48 mov r6, r1 | r6 = r1;
0x00162e4c mov sb, r2 | sb = r2;
| if (r3 != 0x40000) {
0x00162e50 moveq fp, 0xa |
| }
| if (r3 != 0x40000) {
0x00162e54 moveq sl, 0xc | sl = 0xc;
| }
| if (r3 != 0x40000) {
0x00162e58 beq 0x162e6c |
0x00162e5c cmp r2, 0 |
0x00162e60 mov fp, 0x20 |
| if (r2 != 0) {
0x00162e64 moveq sl, 0x10 | sl = 0x10;
| }
| if (r2 != 0) {
0x00162e68 movne sl, 0 | sl = 0;
| goto label_9;
| }
| }
| label_9:
0x00162e6c tst r5, 1 |
0x00162e70 beq 0x163284 |
| while (r0 > 0) {
0x00162e74 tst r5, 2 |
| if ((r5 & 2) == 0) {
0x00162e78 bne 0x162eb8 |
0x00162e7c mov r0, r6 | r0 = r6;
0x00162e80 bl 0x166518 | r0 = X509_get_version ();
0x00162e84 cmp r0, 2 |
0x00162e88 mov r3, r0 | r3 = r0;
| if (r0 > 2) {
0x00162e8c bhi 0x1632e4 | goto label_10;
| }
0x00162e90 ldr r2, [pc, 0x58c] | r2 = *(0x163420);
0x00162e94 ldr r1, [pc, 0x58c] | r1 = *(0x163424);
0x00162e98 str r0, [sp] | *(sp) = r0;
0x00162e9c add r3, r0, 1 | r3 = r0 + 1;
0x00162ea0 add r2, pc, r2 | r2 = pc + r2;
0x00162ea4 add r1, pc, r1 | r1 = pc + r1;
0x00162ea8 mov r0, r4 | r0 = r4;
0x00162eac bl 0x6bbc4 | r0 = BIO_printf ()
| label_1:
0x00162eb0 cmp r0, 0 |
| if (r0 <= 0) {
0x00162eb4 ble 0x1632a0 | goto label_0;
| }
| }
0x00162eb8 tst r5, 4 |
| if ((r5 & 4) == 0) {
0x00162ebc bne 0x162f54 |
0x00162ec0 ldr r1, [pc, 0x564] | r1 = *(0x163428);
0x00162ec4 mov r2, 0x16 | r2 = 0x16;
0x00162ec8 add r1, pc, r1 | r1 = pc + r1;
0x00162ecc mov r0, r4 | r0 = r4;
0x00162ed0 bl 0x6e820 | r0 = BIO_write ();
0x00162ed4 cmp r0, 0 |
| if (r0 <= 0) {
0x00162ed8 ble 0x1632a0 | goto label_0;
| }
0x00162edc mov r0, r6 | r0 = r6;
0x00162ee0 bl 0x163e9c | X509_get_serialNumber ();
0x00162ee4 ldr r2, [pc, 0x544] | r2 = "__";
0x00162ee8 ldr r3, [r0] | r3 = *(r0);
0x00162eec mov r7, r0 | r7 = r0;
0x00162ef0 cmp r3, 4 |
| if (r3 > 4) {
0x00162ef4 bgt 0x16330c | goto label_11;
| }
0x00162ef8 str r2, [sp, 0xc] | var_ch = r2;
0x00162efc bl 0xfcfac | ERR_set_mark ();
0x00162f00 mov r0, r7 | r0 = r7;
0x00162f04 bl 0x550bc | r0 = ASN1_INTEGER_get ();
0x00162f08 mov r8, r0 | r8 = r0;
0x00162f0c bl 0xfcfe0 | ERR_pop_to_mark ();
0x00162f10 cmn r8, 1 |
0x00162f14 ldr r2, [sp, 0xc] | r2 = var_ch;
| if (r8 == 1) {
0x00162f18 beq 0x16330c | goto label_11;
| }
0x00162f1c ldr r1, [r7, 4] | r1 = *((r7 + 4));
0x00162f20 mov r3, r8 | r3 = r8;
0x00162f24 cmp r1, r2 |
| if (r1 != r2) {
0x00162f28 bne 0x163300 | goto label_12;
| }
0x00162f2c ldr r2, [pc, 0x500] | r2 = *(0x163430);
0x00162f30 rsb r3, r8, 0 | r3 = r8 - ;
0x00162f34 add r2, pc, r2 | r2 = pc + r2;
| label_2:
0x00162f38 ldr r1, [pc, 0x4f8] | r1 = *(0x163434);
0x00162f3c stm sp, {r2, r3} | *(sp) = r2;
| *((sp + 4)) = r3;
0x00162f40 add r1, pc, r1 | r1 = pc + r1;
0x00162f44 mov r0, r4 | r0 = r4;
0x00162f48 bl 0x6bbc4 | r0 = BIO_printf ()
0x00162f4c cmp r0, 0 |
| if (r0 <= 0) {
0x00162f50 ble 0x1632a0 | goto label_0;
| }
| }
| label_3:
0x00162f54 ands r8, r5, 8 | r8 = r5 & 8;
| if (r8 == r5) {
0x00162f58 bne 0x162f98 |
0x00162f5c mov r0, r6 | r0 = r6;
0x00162f60 bl 0x166580 | X509_get0_tbs_sigalg ();
0x00162f64 ldr r1, [pc, 0x4d0] | r1 = *(0x163438);
0x00162f68 add r1, pc, r1 | r1 = pc + r1;
0x00162f6c mov r7, r0 | r7 = r0;
0x00162f70 mov r0, r4 | r0 = r4;
0x00162f74 bl 0x6e860 | r0 = BIO_puts ();
0x00162f78 cmp r0, 0 |
| if (r0 <= 0) {
0x00162f7c ble 0x1632a0 | goto label_0;
| }
0x00162f80 mov r2, r8 | r2 = r8;
0x00162f84 mov r1, r7 | r1 = r7;
0x00162f88 mov r0, r4 | r0 = r4;
0x00162f8c bl 0x162a3c | r0 = X509_signature_print ();
0x00162f90 cmp r0, 0 |
| if (r0 <= 0) {
0x00162f94 ble 0x1632a0 | goto label_0;
| }
| }
0x00162f98 tst r5, 0x10 |
| if ((r5 & 0x10) == 0) {
0x00162f9c bne 0x162ffc |
0x00162fa0 ldr r1, [pc, 0x498] | r1 = "it";
0x00162fa4 mov r2, fp | r2 = fp;
0x00162fa8 add r1, pc, r1 | r1 = pc + r1;
0x00162fac mov r0, r4 | r0 = r4;
0x00162fb0 bl 0x6bbc4 | r0 = BIO_printf ()
0x00162fb4 cmp r0, 0 |
| if (r0 <= 0) {
0x00162fb8 ble 0x1632a0 | goto label_0;
| }
0x00162fbc mov r0, r6 | r0 = r6;
0x00162fc0 bl 0x163e8c | X509_get_issuer_name ();
0x00162fc4 mov r3, sb | r3 = sb;
0x00162fc8 mov r2, sl | r2 = sl;
0x00162fcc mov r1, r0 | r1 = r0;
0x00162fd0 mov r0, r4 | r0 = r4;
0x00162fd4 bl 0x57980 | r0 = X509_NAME_print_ex ();
0x00162fd8 cmp r0, 0 |
| if (r0 < 0) {
0x00162fdc blt 0x1632a0 | goto label_0;
| }
0x00162fe0 ldr r1, [pc, 0x45c] | r1 = *(0x163440);
0x00162fe4 mov r2, 1 | r2 = 1;
0x00162fe8 add r1, pc, r1 | r1 = pc + r1;
0x00162fec mov r0, r4 | r0 = r4;
0x00162ff0 bl 0x6e820 | r0 = BIO_write ();
0x00162ff4 cmp r0, 0 |
| if (r0 <= 0) {
0x00162ff8 ble 0x1632a0 | goto label_0;
| }
| }
0x00162ffc tst r5, 0x20 |
| if ((r5 & 0x20) == 0) {
0x00163000 bne 0x1630ac |
0x00163004 ldr r1, [pc, 0x43c] | r1 = *(0x163444);
0x00163008 mov r2, 0x11 | r2 = 0x11;
0x0016300c add r1, pc, r1 | r1 = pc + r1;
0x00163010 mov r0, r4 | r0 = r4;
0x00163014 bl 0x6e820 | r0 = BIO_write ();
0x00163018 cmp r0, 0 |
| if (r0 <= 0) {
0x0016301c ble 0x1632a0 | goto label_0;
| }
0x00163020 ldr r1, [pc, 0x424] | r1 = *(0x163448);
0x00163024 mov r2, 0x18 | r2 = 0x18;
0x00163028 add r1, pc, r1 | r1 = pc + r1;
0x0016302c mov r0, r4 | r0 = r4;
0x00163030 bl 0x6e820 | r0 = BIO_write ();
0x00163034 cmp r0, 0 |
| if (r0 <= 0) {
0x00163038 ble 0x1632a0 | goto label_0;
| }
0x0016303c mov r0, r6 | r0 = r6;
0x00163040 bl 0x166520 | r0 = X509_get0_notBefore ();
0x00163044 mov r1, r0 | r1 = r0;
0x00163048 mov r0, r4 | r0 = r4;
0x0016304c bl 0x58a40 | r0 = ASN1_TIME_print ();
0x00163050 cmp r0, 0 |
| if (r0 == 0) {
0x00163054 beq 0x1632a0 | goto label_0;
| }
0x00163058 ldr r1, [pc, 0x3f0] | r1 = *(0x16344c);
0x0016305c mov r2, 0x19 | r2 = 0x19;
0x00163060 add r1, pc, r1 | r1 = pc + r1;
0x00163064 mov r0, r4 | r0 = r4;
0x00163068 bl 0x6e820 | r0 = BIO_write ();
0x0016306c cmp r0, 0 |
| if (r0 <= 0) {
0x00163070 ble 0x1632a0 | goto label_0;
| }
0x00163074 mov r0, r6 | r0 = r6;
0x00163078 bl 0x166528 | r0 = X509_get0_notAfter ();
0x0016307c mov r1, r0 | r1 = r0;
0x00163080 mov r0, r4 | r0 = r4;
0x00163084 bl 0x58a40 | r0 = ASN1_TIME_print ();
0x00163088 cmp r0, 0 |
| if (r0 == 0) {
0x0016308c beq 0x1632a0 | goto label_0;
| }
0x00163090 ldr r1, [pc, 0x3bc] | r1 = *(0x163450);
0x00163094 mov r2, 1 | r2 = 1;
0x00163098 add r1, pc, r1 | r1 = pc + r1;
0x0016309c mov r0, r4 | r0 = r4;
0x001630a0 bl 0x6e820 | r0 = BIO_write ();
0x001630a4 cmp r0, 0 |
| if (r0 <= 0) {
0x001630a8 ble 0x1632a0 | goto label_0;
| }
| }
0x001630ac tst r5, 0x40 |
| if ((r5 & 0x40) == 0) {
0x001630b0 bne 0x163110 |
0x001630b4 ldr r1, [pc, 0x39c] | r1 = *(0x163454);
0x001630b8 mov r2, fp | r2 = fp;
0x001630bc add r1, pc, r1 | r1 = pc + r1;
0x001630c0 mov r0, r4 | r0 = r4;
0x001630c4 bl 0x6bbc4 | r0 = BIO_printf ()
0x001630c8 cmp r0, 0 |
| if (r0 <= 0) {
0x001630cc ble 0x1632a0 | goto label_0;
| }
0x001630d0 mov r0, r6 | r0 = r6;
0x001630d4 bl 0x163e94 | X509_get_subject_name ();
0x001630d8 mov r3, sb | r3 = sb;
0x001630dc mov r2, sl | r2 = sl;
0x001630e0 mov r1, r0 | r1 = r0;
0x001630e4 mov r0, r4 | r0 = r4;
0x001630e8 bl 0x57980 | r0 = X509_NAME_print_ex ();
0x001630ec cmp r0, 0 |
| if (r0 < 0) {
0x001630f0 blt 0x1632a0 | goto label_0;
| }
0x001630f4 ldr r1, [pc, 0x360] | r1 = *(0x163458);
0x001630f8 mov r2, 1 | r2 = 1;
0x001630fc add r1, pc, r1 | r1 = pc + r1;
0x00163100 mov r0, r4 | r0 = r4;
0x00163104 bl 0x6e820 | r0 = BIO_write ();
0x00163108 cmp r0, 0 |
| if (r0 <= 0) {
0x0016310c ble 0x1632a0 | goto label_0;
| }
| }
0x00163110 ands r7, r5, 0x80 | r7 = r5 & 0x80;
| if (r7 == r5) {
0x00163114 bne 0x1631d0 |
0x00163118 mov r0, r6 | r0 = r6;
0x0016311c bl 0x166554 | X509_get_X509_PUBKEY ();
0x00163120 mov r3, r7 | r3 = r7;
0x00163124 mov r2, r7 | r2 = r7;
0x00163128 mov r1, r7 | r1 = r7;
0x0016312c str r0, [sp] | *(sp) = r0;
0x00163130 add r0, sp, 0x14 | r0 += var_14h;
0x00163134 bl 0x1702d8 | X509_PUBKEY_get0_param ();
0x00163138 ldr r1, [pc, 0x320] | r1 = *(0x16345c);
0x0016313c mov r2, 0x21 | r2 = 0x21;
0x00163140 add r1, pc, r1 | r1 = pc + r1;
0x00163144 mov r0, r4 | r0 = r4;
0x00163148 bl 0x6e820 | r0 = BIO_write ();
0x0016314c cmp r0, 0 |
| if (r0 <= 0) {
0x00163150 ble 0x1632a0 | goto label_0;
| }
0x00163154 ldr r8, [pc, 0x308] | r8 = *(0x163460);
0x00163158 ldr r1, [pc, 0x308] | r1 = *(0x163464);
0x0016315c add r8, pc, r8 | r8 = pc + r8;
0x00163160 mov r2, r8 | r2 = r8;
0x00163164 add r1, pc, r1 | r1 = pc + r1;
0x00163168 mov r0, r4 | r0 = r4;
0x0016316c bl 0x6bbc4 | r0 = BIO_printf ()
0x00163170 cmp r0, 0 |
| if (r0 <= 0) {
0x00163174 ble 0x1632a0 | goto label_0;
| }
0x00163178 ldr r1, [sp, 0x14] | r1 = var_14h;
0x0016317c mov r0, r4 | r0 = r4;
0x00163180 bl 0x55f58 | r0 = i2a_ASN1_OBJECT ();
0x00163184 cmp r0, 0 |
| if (r0 <= 0) {
0x00163188 ble 0x1632a0 | goto label_0;
| }
0x0016318c ldr r1, [pc, 0x2d8] | r1 = *(0x163468);
0x00163190 mov r0, r4 | r0 = r4;
0x00163194 add r1, pc, r1 | r1 = pc + r1;
0x00163198 bl 0x6e860 | r0 = BIO_puts ();
0x0016319c cmp r0, 0 |
| if (r0 <= 0) {
0x001631a0 ble 0x1632a0 | goto label_0;
| }
0x001631a4 mov r0, r6 | r0 = r6;
0x001631a8 bl 0x1641fc | r0 = X509_get0_pubkey ();
0x001631ac subs r1, r0, 0 | r1 = r0 - 0;
| if (r1 != r0) {
0x001631b0 bne 0x163398 | goto label_13;
| }
0x001631b4 ldr r1, [pc, 0x2b4] | r1 = *(0x16346c);
0x001631b8 mov r2, r8 | r2 = r8;
0x001631bc add r1, pc, r1 | r1 = pc + r1;
0x001631c0 mov r0, r4 | r0 = r4;
0x001631c4 bl 0x6bbc4 | BIO_printf ()
0x001631c8 mov r0, r4 | r0 = r4;
0x001631cc bl 0xfd378 | ERR_print_errors ();
| }
| label_6:
0x001631d0 tst r5, 0x1000 |
| if ((r5 & 0x1000) == 0) {
0x001631d4 bne 0x163200 |
0x001631d8 add r2, sp, 0x14 | r2 += var_14h;
0x001631dc add r1, sp, 0x10 | r1 += var_10h;
0x001631e0 mov r0, r6 | r0 = r6;
0x001631e4 bl 0x166564 | X509_get0_uids ();
0x001631e8 ldr r3, [sp, 0x10] | r3 = var_10h;
0x001631ec cmp r3, 0 |
| if (r3 != 0) {
0x001631f0 bne 0x1633ac | goto label_14;
| }
| label_7:
0x001631f4 ldr r3, [sp, 0x14] | r3 = var_14h;
0x001631f8 cmp r3, 0 |
| if (r3 != 0) {
0x001631fc bne 0x1633e8 | goto label_15;
| }
| }
| label_8:
0x00163200 tst r5, 0x100 |
| if ((r5 & 0x100) == 0) {
0x00163204 bne 0x163230 |
0x00163208 mov r0, r6 | r0 = r6;
0x0016320c bl 0x16655c | X509_get0_extensions ();
0x00163210 ldr r1, [pc, 0x25c] | r1 = *(0x163470);
0x00163214 mov r3, 8 | r3 = 8;
0x00163218 str r3, [sp] | *(sp) = r3;
0x0016321c add r1, pc, r1 | r1 = pc + r1;
0x00163220 mov r3, r5 | r3 = r5;
0x00163224 mov r2, r0 | r2 = r0;
0x00163228 mov r0, r4 | r0 = r4;
0x0016322c bl 0x17f384 | X509V3_extensions_print ();
| }
0x00163230 ands r7, r5, 0x200 | r7 = r5 & 0x200;
| if (r7 == r5) {
0x00163234 bne 0x163260 |
0x00163238 mov r2, r6 | r2 = r6;
0x0016323c add r1, sp, 0x10 | r1 += var_10h;
0x00163240 add r0, sp, 0x14 | r0 += var_14h;
0x00163244 bl 0x1709b4 | X509_get0_signature ();
0x00163248 ldr r2, [sp, 0x14] | r2 = var_14h;
0x0016324c ldr r1, [sp, 0x10] | r1 = var_10h;
0x00163250 mov r0, r4 | r0 = r4;
0x00163254 bl 0x162a3c | r0 = X509_signature_print ();
0x00163258 cmp r0, 0 |
| if (r0 <= 0) {
0x0016325c ble 0x1632a4 | goto label_16;
| }
| }
0x00163260 ands r2, r5, 0x400 | r2 = r5 & 0x400;
| if (r2 == r5) {
0x00163264 movne r7, 1 | r7 = 1;
| }
| if (r2 == r5) {
0x00163268 bne 0x1632a4 |
0x0016326c mov r1, r6 | r1 = r6;
0x00163270 mov r0, r4 | r0 = r4;
0x00163274 bl 0x162b2c | r0 = X509_aux_print ();
0x00163278 adds r7, r0, 0 | r7 = r0 + 0;
| if (r7 == r0) {
0x0016327c movne r7, 1 | r7 = 1;
| }
0x00163280 b 0x1632a4 | goto label_16;
0x00163284 ldr r1, [pc, 0x1ec] | r1 = *(0x163474);
0x00163288 mov r2, 0xd | r2 = 0xd;
0x0016328c add r1, pc, r1 | r1 = pc + r1;
0x00163290 mov r0, r4 | r0 = r4;
0x00163294 bl 0x6e820 | r0 = BIO_write ();
0x00163298 cmp r0, 0 |
| if (r0 > 0) {
0x0016329c bgt 0x1632c4 | goto label_17;
| }
| label_0:
0x001632a0 mov r7, 0 | r7 = 0;
| }
| label_16:
0x001632a4 ldr r1, [pc, 0x1d0] | r1 = *(0x163478);
0x001632a8 mov r2, 0xd9 | r2 = 0xd9;
0x001632ac add r1, pc, r1 | r1 = pc + r1;
0x001632b0 mov r0, 0 | r0 = 0;
0x001632b4 bl 0x11842c | CRYPTO_free ();
0x001632b8 mov r0, r7 | r0 = r7;
0x001632bc add sp, sp, 0x1c |
0x001632c0 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_17:
0x001632c4 ldr r1, [pc, 0x1b4] | r1 = *(0x16347c);
0x001632c8 mov r2, 0xa | r2 = 0xa;
0x001632cc add r1, pc, r1 | r1 = pc + r1;
0x001632d0 mov r0, r4 | r0 = r4;
0x001632d4 bl 0x6e820 | r0 = BIO_write ();
0x001632d8 cmp r0, 0 |
0x001632dc bgt 0x162e74 |
| }
0x001632e0 b 0x1632a0 | goto label_0;
| label_10:
0x001632e4 ldr r2, [pc, 0x198] | r2 = *(0x163480);
0x001632e8 ldr r1, [pc, 0x198] | r1 = *(0x163484);
0x001632ec add r2, pc, r2 | r2 = pc + r2;
0x001632f0 add r1, pc, r1 | r1 = pc + r1;
0x001632f4 mov r0, r4 | r0 = r4;
0x001632f8 bl 0x6bbc4 | BIO_printf ()
0x001632fc b 0x162eb0 | goto label_1;
| label_12:
0x00163300 ldr r2, [pc, 0x184] | r2 = *(0x163488);
0x00163304 add r2, pc, r2 | r2 = pc + r2;
0x00163308 b 0x162f38 | goto label_2;
| label_11:
0x0016330c ldr r3, [r7, 4] | r3 = *((r7 + 4));
0x00163310 cmp r3, r2 |
| if (r3 != r2) {
0x00163314 bne 0x16338c | goto label_18;
| }
0x00163318 ldr r3, [pc, 0x170] | r3 = *(0x16348c);
0x0016331c add r3, pc, r3 | r3 = pc + r3;
| label_5:
0x00163320 ldr r2, [pc, 0x16c] | r2 = *(0x163490);
0x00163324 ldr r1, [pc, 0x16c] | r1 = *(0x163494);
0x00163328 add r2, pc, r2 | r2 = pc + r2;
0x0016332c add r1, pc, r1 | r1 = pc + r1;
0x00163330 mov r0, r4 | r0 = r4;
0x00163334 bl 0x6bbc4 | r0 = BIO_printf ()
0x00163338 cmp r0, 0 |
| if (r0 <= 0) {
0x0016333c ble 0x1632a0 | goto label_0;
| }
0x00163340 ldr r3, [pc, 0x154] | r3 = *(0x163498);
0x00163344 mov r8, 0 | r8 = 0;
0x00163348 add r3, pc, r3 | r3 = pc + r3;
0x0016334c str r3, [sp, 0xc] | var_ch = r3;
| label_4:
0x00163350 ldr r3, [r7] | r3 = *(r7);
0x00163354 cmp r3, r8 |
| if (r3 <= r8) {
0x00163358 ble 0x162f54 | goto label_3;
| }
0x0016335c ldr r2, [r7, 8] | r2 = *((r7 + 8));
0x00163360 ldr r1, [sp, 0xc] | r1 = var_ch;
0x00163364 ldrb r2, [r2, r8] | r2 = *((r2 + r8));
0x00163368 add r8, r8, 1 | r8++;
0x0016336c cmp r8, r3 |
| if (r8 == r3) {
0x00163370 movne r3, 0x3a | r3 = 0x3a;
| }
| if (r8 != r3) {
0x00163374 moveq r3, 0xa | r3 = 0xa;
| }
0x00163378 mov r0, r4 | r0 = r4;
0x0016337c bl 0x6bbc4 | r0 = BIO_printf ()
0x00163380 cmp r0, 0 |
| if (r0 > 0) {
0x00163384 bgt 0x163350 | goto label_4;
| }
0x00163388 b 0x1632a0 | goto label_0;
| label_18:
0x0016338c ldr r3, [pc, 0x10c] | r3 = *(0x16349c);
0x00163390 add r3, pc, r3 | r3 = pc + r3;
0x00163394 b 0x163320 | goto label_5;
| label_13:
0x00163398 mov r3, r7 | r3 = r7;
0x0016339c mov r2, 0x10 | r2 = 0x10;
0x001633a0 mov r0, r4 | r0 = r4;
0x001633a4 bl 0x10e7ac | EVP_PKEY_print_public ();
0x001633a8 b 0x1631d0 | goto label_6;
| label_14:
0x001633ac ldr r2, [pc, 0xf0] | r2 = *(0x1634a0);
0x001633b0 ldr r1, [pc, 0xf0] | r1 = *(0x1634a4);
0x001633b4 add r2, pc, r2 | r2 = pc + r2;
0x001633b8 add r1, pc, r1 | r1 = pc + r1;
0x001633bc mov r0, r4 | r0 = r4;
0x001633c0 bl 0x6bbc4 | r0 = BIO_printf ()
0x001633c4 cmp r0, 0 |
| if (r0 <= 0) {
0x001633c8 ble 0x1632a0 | goto label_0;
| }
0x001633cc mov r2, 0xc | r2 = 0xc;
0x001633d0 ldr r1, [sp, 0x10] | r1 = var_10h;
0x001633d4 mov r0, r4 | r0 = r4;
0x001633d8 bl 0x162950 | r0 = X509_signature_dump ();
0x001633dc cmp r0, 0 |
| if (r0 != 0) {
0x001633e0 bne 0x1631f4 | goto label_7;
| }
0x001633e4 b 0x1632a0 | goto label_0;
| label_15:
0x001633e8 ldr r2, [pc, 0xbc] | r2 = *(0x1634a8);
0x001633ec ldr r1, [pc, 0xbc] | r1 = *(0x1634ac);
0x001633f0 add r2, pc, r2 | r2 = pc + r2;
0x001633f4 add r1, pc, r1 | r1 = pc + r1;
0x001633f8 mov r0, r4 | r0 = r4;
0x001633fc bl 0x6bbc4 | r0 = BIO_printf ()
0x00163400 cmp r0, 0 |
| if (r0 <= 0) {
0x00163404 ble 0x1632a0 | goto label_0;
| }
0x00163408 mov r2, 0xc | r2 = 0xc;
0x0016340c ldr r1, [sp, 0x14] | r1 = var_14h;
0x00163410 mov r0, r4 | r0 = r4;
0x00163414 bl 0x162950 | r0 = X509_signature_dump ();
0x00163418 cmp r0, 0 |
| if (r0 != 0) {
0x0016341c bne 0x163200 | goto label_8;
| }
0x00163420 b 0x1632a0 | goto label_0;
| }
; 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/libcrypto.so.1.1 @ 0x1634b4 */
| #include <stdint.h>
|
; (fcn) sym.X509_print_ex_fp () | void X509_print_ex_fp (int32_t arg1, int32_t arg2) {
| int32_t var_0h;
| r0 = arg1;
| r1 = arg2;
0x001634b4 push {r0, r1, r4, r5, r6, r7, r8, lr} |
0x001634b8 mov r5, r1 | r5 = r1;
0x001634bc mov r6, r2 | r6 = r2;
0x001634c0 mov r7, r3 | r7 = r3;
0x001634c4 mov r8, r0 | r8 = r0;
0x001634c8 bl 0x7270c | BIO_s_file ();
0x001634cc bl 0x6e4f0 | r0 = BIO_new ();
0x001634d0 subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 != r0) {
0x001634d4 bne 0x163508 | goto label_0;
| }
0x001634d8 mov r3, 0x20 | r3 = 0x20;
0x001634dc str r3, [sp] | *(sp) = r3;
0x001634e0 ldr r3, [pc, 0x54] | r3 = *(0x163538);
0x001634e4 mov r2, 7 | r2 = 7;
0x001634e8 add r3, pc, r3 | r3 = pc + r3;
0x001634ec mov r1, 0x76 | r1 = 0x76;
0x001634f0 mov r0, 0xb | r0 = 0xb;
0x001634f4 bl 0xfc7b8 | ERR_put_error ();
0x001634f8 mov r5, r4 | r5 = r4;
| do {
0x001634fc mov r0, r5 | r0 = r5;
0x00163500 add sp, sp, 8 |
0x00163504 pop {r4, r5, r6, r7, r8, pc} |
| label_0:
0x00163508 mov r3, r8 | r3 = r8;
0x0016350c mov r2, 0 | r2 = 0;
0x00163510 mov r1, 0x6a | r1 = 0x6a;
0x00163514 bl 0x6ebe8 | BIO_ctrl ();
0x00163518 mov r1, r5 | r1 = r5;
0x0016351c mov r3, r7 | r3 = r7;
0x00163520 mov r2, r6 | r2 = r6;
0x00163524 mov r0, r4 | r0 = r4;
0x00163528 bl 0x162e30 | r0 = X509_print_ex ();
0x0016352c mov r5, r0 | r5 = r0;
0x00163530 mov r0, r4 | r0 = r4;
0x00163534 bl 0x6e63c | BIO_free ();
0x00163538 b 0x1634fc |
| } while (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/libcrypto.so.1.1 @ 0x162950 */
| #include <stdint.h>
|
; (fcn) sym.X509_signature_dump () | void X509_signature_dump (int32_t arg1, int32_t arg2) {
| r0 = arg1;
| r1 = arg2;
0x00162950 push {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00162954 ldr sb, [pc, 0xcc] | sb = *(0x162a24);
0x00162958 ldr sl, [pc, 0xcc] | sl = *(0x162a28);
0x0016295c ldr fp, [pc, 0xcc] | fp = *(0x162a2c);
0x00162960 ldr r6, [r1] | r6 = *(r1);
0x00162964 ldr r8, [r1, 8] | r8 = *((r1 + 8));
0x00162968 mov r5, r0 | r5 = r0;
0x0016296c mov r7, r2 | r7 = r2;
0x00162970 mov r4, 0 | r4 = 0;
0x00162974 add sb, pc, sb | sb = pc + sb;
0x00162978 add sl, pc, sl | sl = pc + sl;
0x0016297c add fp, pc, fp |
| do {
0x00162980 cmp r4, r6 |
| if (r4 >= r6) {
0x00162984 blt 0x1629ac |
0x00162988 ldr r1, [pc, 0xa4] | r1 = *(0x162a30);
0x0016298c mov r2, 1 | r2 = 1;
0x00162990 add r1, pc, r1 | r1 = pc + r1;
0x00162994 mov r0, r5 | r0 = r5;
0x00162998 bl 0x6e820 | r0 = BIO_write ();
0x0016299c sub r0, r0, 1 | r0--;
0x001629a0 clz r0, r0 | r0 &= r0;
0x001629a4 lsr r0, r0, 5 | r0 >>= 5;
0x001629a8 pop {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| }
0x001629ac mov r1, 0x12 | r1 = 0x12;
0x001629b0 mov r0, r4 | r0 = r4;
0x001629b4 bl 0x183258 | fcn_00183258 (r0, r1);
0x001629b8 cmp r1, 0 |
| if (r1 == 0) {
0x001629bc beq 0x1629f4 | goto label_2;
| }
| label_0:
0x001629c0 ldr r1, [pc, 0x70] | r1 = *(0x162a34);
0x001629c4 ldrb r2, [r8, r4] | r2 = *((r8 + r4));
0x001629c8 add r4, r4, 1 | r4++;
0x001629cc cmp r4, r6 |
| if (r4 != r6) {
0x001629d0 moveq r3, sl | r3 = sl;
| }
| if (r4 == r6) {
0x001629d4 movne r3, fp | r3 = fp;
| }
0x001629d8 add r1, pc, r1 | r1 = pc + r1;
0x001629dc mov r0, r5 | r0 = r5;
0x001629e0 bl 0x6bbc4 | r0 = BIO_printf ()
0x001629e4 cmp r0, 0 |
0x001629e8 bgt 0x162980 |
| } while (r0 > 0);
| do {
| label_1:
0x001629ec mov r0, 0 | r0 = 0;
0x001629f0 pop {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_2:
0x001629f4 mov r2, 1 | r2 = 1;
0x001629f8 mov r1, sb | r1 = sb;
0x001629fc mov r0, r5 | r0 = r5;
0x00162a00 bl 0x6e820 | r0 = BIO_write ();
0x00162a04 cmp r0, 0 |
0x00162a08 ble 0x1629ec |
| } while (r0 <= 0);
0x00162a0c mov r2, r7 | r2 = r7;
0x00162a10 mov r1, r7 | r1 = r7;
0x00162a14 mov r0, r5 | r0 = r5;
0x00162a18 bl 0x6eb94 | r0 = BIO_indent ();
0x00162a1c cmp r0, 0 |
| if (r0 > 0) {
0x00162a20 bgt 0x1629c0 | goto label_0;
| }
0x00162a24 b 0x1629ec | goto label_1;
| }
[*] Function printf used 271 times libcrypto.so.1.1