[*] Binary protection state of libssl.so.1.1
Partial RELRO No Canary found NX disabled DSO No RPATH No RUNPATH No Symbols
[*] Function printf tear down of libssl.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/libssl.so.1.1 @ 0x315e4 */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) sym.SSL_SESSION_print () | void SSL_SESSION_print (int32_t arg1, int32_t arg2) {
| int32_t var_0h;
| int32_t var_14h;
| int32_t var_18h;
| int32_t var_1ch;
| r0 = arg1;
| r1 = arg2;
0x000315e4 push {r4, r5, r6, r7, r8, sb, lr} |
0x000315e8 subs r5, r1, 0 | r5 = r1 - 0;
0x000315ec sub sp, sp, 0x1c |
0x000315f0 bne 0x31600 |
| while (r0 <= 0) {
| label_0:
0x000315f4 mov r0, 0 | r0 = 0;
| label_6:
0x000315f8 add sp, sp, 0x1c |
0x000315fc pop {r4, r5, r6, r7, r8, sb, pc} |
0x00031600 ldr r1, [pc, 0x474] | r1 = *(0x31a78);
0x00031604 mov r4, r0 | r4 = r0;
0x00031608 add r1, pc, r1 | r1 = pc + r1;
0x0003160c ldr r6, [r5] | r6 = *(r5);
0x00031610 bl 0x1108c | r0 = BIO_puts ();
0x00031614 cmp r0, 0 |
0x00031618 ble 0x315f4 |
| }
0x0003161c ldr r0, [r5] | r0 = *(r5);
0x00031620 bl 0x29944 | fcn_00029944 (r0);
0x00031624 ldr r1, [pc, 0x454] | r1 = *(0x31a7c);
0x00031628 add r1, pc, r1 | r1 = pc + r1;
0x0003162c mov r2, r0 | r2 = r0;
0x00031630 mov r0, r4 | r0 = r4;
0x00031634 bl 0x10c24 | r0 = BIO_printf ()
0x00031638 cmp r0, 0 |
| if (r0 <= 0) {
0x0003163c ble 0x315f4 | goto label_0;
| }
0x00031640 ldr r3, [r5, 0x1bc] | r3 = *((r5 + 0x1bc));
0x00031644 cmp r3, 0 |
| if (r3 != 0) {
0x00031648 bne 0x3173c | goto label_13;
| }
0x0003164c ldr r2, [r5, 0x1c0] | r2 = *((r5 + 0x1c0));
0x00031650 and r3, r2, 0xff000000 | r3 = r2 & 0xff000000;
0x00031654 cmp r3, 0x2000000 |
| if (r3 != 0x2000000) {
0x00031658 bne 0x31728 | goto label_14;
| }
0x0003165c ldr r1, [pc, 0x420] | r1 = *(0x31a80);
0x00031660 bic r2, r2, 0xff000000 | r2 = BIT_MASK (r2, 0xff000000);
0x00031664 add r1, pc, r1 | r1 = pc + r1;
| label_1:
0x00031668 mov r0, r4 | r0 = r4;
0x0003166c bl 0x10c24 | r0 = BIO_printf ()
0x00031670 cmp r0, 0 |
| if (r0 <= 0) {
0x00031674 ble 0x315f4 | goto label_0;
| }
0x00031678 ldr r1, [pc, 0x408] | r1 = *(0x31a84);
0x0003167c mov r0, r4 | r0 = r4;
0x00031680 add r1, pc, r1 | r1 = pc + r1;
0x00031684 bl 0x1108c | r0 = BIO_puts ();
0x00031688 cmp r0, 0 |
| if (r0 <= 0) {
0x0003168c ble 0x315f4 | goto label_0;
| }
0x00031690 ldr r8, [pc, 0x3f4] | r8 = *(0x31a88);
0x00031694 ldr sb, [pc, 0x3f4] | sb = *(0x31a8c);
0x00031698 add r7, r5, 0x14c | r7 = r5 + 0x14c;
0x0003169c sub r8, r8, r5 | r8 -= r5;
0x000316a0 add sb, pc, sb | sb = pc + sb;
| label_2:
0x000316a4 ldr r2, [r5, 0x148] | r2 = *((r5 + 0x148));
0x000316a8 add r3, r8, r7 | r3 = r8 + r7;
0x000316ac cmp r2, r3 |
| if (r2 > r3) {
0x000316b0 bhi 0x31758 | goto label_15;
| }
0x000316b4 ldr r1, [pc, 0x3d8] | r1 = *(0x31a90);
0x000316b8 mov r0, r4 | r0 = r4;
0x000316bc add r1, pc, r1 | r1 = pc + r1;
0x000316c0 bl 0x1108c | r0 = BIO_puts ();
0x000316c4 cmp r0, 0 |
| if (r0 <= 0) {
0x000316c8 ble 0x315f4 | goto label_0;
| }
0x000316cc ldr r8, [pc, 0x3c4] | r8 = *(0x31a94);
0x000316d0 ldr sb, [pc, 0x3c4] | sb = *(0x31a98);
0x000316d4 add r7, r5, 0x170 | r7 = r5 + 0x170;
0x000316d8 sub r8, r8, r5 | r8 -= r5;
0x000316dc add sb, pc, sb | sb = pc + sb;
| label_3:
0x000316e0 ldr r2, [r5, 0x16c] | r2 = *((r5 + 0x16c));
0x000316e4 add r3, r8, r7 | r3 = r8 + r7;
0x000316e8 cmp r2, r3 |
| if (r2 > r3) {
0x000316ec bhi 0x31774 | goto label_16;
| }
0x000316f0 cmp r6, 0x304 |
| if (r6 != 0x304) {
0x000316f4 bne 0x31790 | goto label_17;
| }
0x000316f8 ldr r1, [pc, 0x3a0] | r1 = *(0x31a9c);
0x000316fc add r1, pc, r1 | r1 = pc + r1;
| label_4:
0x00031700 mov r0, r4 | r0 = r4;
0x00031704 bl 0x1108c | r0 = BIO_puts ();
0x00031708 cmp r0, 0 |
| if (r0 <= 0) {
0x0003170c ble 0x315f4 | goto label_0;
| }
0x00031710 ldr sb, [pc, 0x38c] | sb = *(0x31aa0);
0x00031714 mvn r8, 0x47 | r8 = ~0x47;
0x00031718 add r7, r5, 0x48 | r7 = r5 + 0x48;
0x0003171c sub r8, r8, r5 | r8 -= r5;
0x00031720 add sb, pc, sb | sb = pc + sb;
0x00031724 b 0x317b4 | goto label_18;
| label_14:
0x00031728 ldr r1, [pc, 0x378] | r1 = *(0x31aa4);
0x0003172c lsl r2, r2, 0x10 | r2 <<= 0x10;
0x00031730 lsr r2, r2, 0x10 | r2 >>= 0x10;
0x00031734 add r1, pc, r1 | r1 = pc + r1;
0x00031738 b 0x31668 | goto label_1;
| label_13:
0x0003173c ldr r2, [r3, 4] | r2 = *((r3 + 4));
0x00031740 cmp r2, 0 |
| if (r2 != 0) {
0x00031744 ldreq r2, [pc, 0x360] | r2 = *((pc + 0x360));
| }
| if (r2 != 0) {
0x00031748 addeq r2, pc, r2 | r2 = pc + r2;
| }
0x0003174c ldr r1, [pc, 0x35c] | r1 = *(0x31aac);
0x00031750 add r1, pc, r1 | r1 = pc + r1;
0x00031754 b 0x31668 | goto label_1;
| label_15:
0x00031758 ldrb r2, [r7], 1 | r2 = *(r7);
| r7++;
0x0003175c mov r1, sb | r1 = sb;
0x00031760 mov r0, r4 | r0 = r4;
0x00031764 bl 0x10c24 | r0 = BIO_printf ()
0x00031768 cmp r0, 0 |
| if (r0 > 0) {
0x0003176c bgt 0x316a4 | goto label_2;
| }
0x00031770 b 0x315f4 | goto label_0;
| label_16:
0x00031774 ldrb r2, [r7], 1 | r2 = *(r7);
| r7++;
0x00031778 mov r1, sb | r1 = sb;
0x0003177c mov r0, r4 | r0 = r4;
0x00031780 bl 0x10c24 | r0 = BIO_printf ()
0x00031784 cmp r0, 0 |
| if (r0 > 0) {
0x00031788 bgt 0x316e0 | goto label_3;
| }
0x0003178c b 0x315f4 | goto label_0;
| label_17:
0x00031790 ldr r1, [pc, 0x31c] | r1 = *(0x31ab0);
0x00031794 add r1, pc, r1 | r1 = pc + r1;
0x00031798 b 0x31700 | goto label_4;
| label_5:
0x0003179c ldrb r2, [r7], 1 | r2 = *(r7);
| r7++;
0x000317a0 mov r1, sb | r1 = sb;
0x000317a4 mov r0, r4 | r0 = r4;
0x000317a8 bl 0x10c24 | r0 = BIO_printf ()
0x000317ac cmp r0, 0 |
| if (r0 <= 0) {
0x000317b0 ble 0x315f4 | goto label_0;
| }
| label_18:
0x000317b4 ldr r2, [r5, 4] | r2 = *((r5 + 4));
0x000317b8 add r3, r8, r7 | r3 = r8 + r7;
0x000317bc cmp r2, r3 |
| if (r2 > r3) {
0x000317c0 bhi 0x3179c | goto label_5;
| }
0x000317c4 ldr r1, [pc, 0x2ec] | r1 = *(0x31ab4);
0x000317c8 mov r0, r4 | r0 = r4;
0x000317cc add r1, pc, r1 | r1 = pc + r1;
0x000317d0 bl 0x1108c | r0 = BIO_puts ();
0x000317d4 cmp r0, 0 |
| if (r0 <= 0) {
0x000317d8 ble 0x315f4 | goto label_0;
| }
0x000317dc ldr r2, [r5, 0x194] | r2 = *((r5 + 0x194));
0x000317e0 cmp r2, 0 |
| if (r2 != 0) {
0x000317e4 ldreq r2, [pc, 0x2d0] | r2 = *((pc + 0x2d0));
| }
| if (r2 != 0) {
0x000317e8 addeq r2, pc, r2 | r2 = pc + r2;
| }
0x000317ec ldr r1, [pc, 0x2cc] | r1 = *(0x31abc);
0x000317f0 mov r0, r4 | r0 = r4;
0x000317f4 add r1, pc, r1 | r1 = pc + r1;
0x000317f8 bl 0x10c24 | r0 = BIO_printf ()
0x000317fc cmp r0, 0 |
| if (r0 <= 0) {
0x00031800 ble 0x315f4 | goto label_0;
| }
0x00031804 ldr r1, [pc, 0x2b8] | r1 = *(0x31ac0);
0x00031808 mov r0, r4 | r0 = r4;
0x0003180c add r1, pc, r1 | r1 = pc + r1;
0x00031810 bl 0x1108c | r0 = BIO_puts ();
0x00031814 cmp r0, 0 |
| if (r0 <= 0) {
0x00031818 ble 0x315f4 | goto label_0;
| }
0x0003181c ldr r2, [r5, 0x190] | r2 = *((r5 + 0x190));
0x00031820 cmp r2, 0 |
| if (r2 != 0) {
0x00031824 ldreq r2, [pc, 0x29c] | r2 = *((pc + 0x29c));
| }
| if (r2 != 0) {
0x00031828 addeq r2, pc, r2 | r2 = pc + r2;
| }
0x0003182c ldr r1, [pc, 0x298] | r1 = *(0x31ac8);
0x00031830 mov r0, r4 | r0 = r4;
0x00031834 add r1, pc, r1 | r1 = pc + r1;
0x00031838 bl 0x10c24 | r0 = BIO_printf ()
0x0003183c cmp r0, 0 |
| if (r0 <= 0) {
0x00031840 ble 0x315f4 | goto label_0;
| }
0x00031844 ldr r1, [pc, 0x284] | r1 = *(0x31acc);
0x00031848 mov r0, r4 | r0 = r4;
0x0003184c add r1, pc, r1 | r1 = pc + r1;
0x00031850 bl 0x1108c | r0 = BIO_puts ();
0x00031854 cmp r0, 0 |
| if (r0 <= 0) {
0x00031858 ble 0x315f4 | goto label_0;
| }
0x0003185c ldr r2, [r5, 0x208] | r2 = *((r5 + 0x208));
0x00031860 cmp r2, 0 |
| if (r2 != 0) {
0x00031864 ldreq r2, [pc, 0x268] | r2 = *((pc + 0x268));
| }
| if (r2 != 0) {
0x00031868 addeq r2, pc, r2 | r2 = pc + r2;
| }
0x0003186c ldr r1, [pc, 0x264] | r1 = *(0x31ad4);
0x00031870 mov r0, r4 | r0 = r4;
0x00031874 add r1, pc, r1 | r1 = pc + r1;
0x00031878 bl 0x10c24 | r0 = BIO_printf ()
0x0003187c cmp r0, 0 |
| if (r0 <= 0) {
0x00031880 ble 0x315f4 | goto label_0;
| }
0x00031884 ldr r2, [r5, 0x1f0] | r2 = *((r5 + 0x1f0));
0x00031888 cmp r2, 0 |
| if (r2 != 0) {
0x0003188c bne 0x319cc | goto label_19;
| }
| label_7:
0x00031890 ldr r3, [r5, 0x1e8] | r3 = *((r5 + 0x1e8));
0x00031894 cmp r3, 0 |
| if (r3 != 0) {
0x00031898 bne 0x319e8 | goto label_20;
| }
| label_8:
0x0003189c ldr r3, [r5, 0x1b8] | r3 = *((r5 + 0x1b8));
0x000318a0 cmp r3, 0 |
| if (r3 == 0) {
0x000318a4 beq 0x318fc | goto label_21;
| }
0x000318a8 mov r3, 0 | r3 = 0;
0x000318ac add r2, sp, 0x18 | r2 += var_18h;
0x000318b0 str r3, [r2, -4]! | *((r2 -= 4)) = r3;
0x000318b4 mov r1, r3 | r1 = r3;
0x000318b8 stmib sp, {r2, r3} | __asm ("stmib sp, {r2, r3}");
0x000318bc str r3, [sp] | *(sp) = r3;
0x000318c0 mov r2, r3 | r2 = r3;
0x000318c4 mov r0, r5 | r0 = r5;
0x000318c8 bl 0x230a0 | r0 = fcn_000230a0 (r0, r1, r2, r3, r4);
0x000318cc cmp r0, 0 |
| if (r0 == 0) {
0x000318d0 beq 0x315f4 | goto label_0;
| }
0x000318d4 ldr r2, [sp, 0x14] | r2 = var_14h;
0x000318d8 cmp r2, 0 |
| if (r2 != 0) {
0x000318dc bne 0x31a20 | goto label_22;
| }
0x000318e0 ldr r1, [pc, 0x1f4] | r1 = *(0x31ad8);
0x000318e4 ldr r2, [r5, 0x1b8] | r2 = *((r5 + 0x1b8));
0x000318e8 add r1, pc, r1 | r1 = pc + r1;
0x000318ec mov r0, r4 | r0 = r4;
0x000318f0 bl 0x10c24 | r0 = BIO_printf ()
| label_9:
0x000318f4 cmp r0, 0 |
| if (r0 <= 0) {
0x000318f8 ble 0x315f4 | goto label_0;
| }
| label_21:
0x000318fc ldr r2, [r5, 0x1b4] | r2 = *((r5 + 0x1b4));
0x00031900 cmp r2, 0 |
| if (r2 != 0) {
0x00031904 bne 0x31a38 | goto label_23;
| }
| label_10:
0x00031908 ldr r2, [r5, 0x1b0] | r2 = *((r5 + 0x1b0));
0x0003190c cmp r2, 0 |
| if (r2 != 0) {
0x00031910 bne 0x31a54 | goto label_24;
| }
| label_11:
0x00031914 ldr r1, [pc, 0x1c4] | r1 = *(0x31adc);
0x00031918 mov r0, r4 | r0 = r4;
0x0003191c add r1, pc, r1 | r1 = pc + r1;
0x00031920 bl 0x1108c | r0 = BIO_puts ();
0x00031924 cmp r0, 0 |
| if (r0 <= 0) {
0x00031928 ble 0x315f4 | goto label_0;
| }
0x0003192c ldr r1, [pc, 0x1b0] | r1 = *(0x31ae0);
0x00031930 mov r0, r4 | r0 = r4;
0x00031934 add r1, pc, r1 | r1 = pc + r1;
0x00031938 bl 0x1108c | r0 = BIO_puts ();
0x0003193c cmp r0, 0 |
| if (r0 <= 0) {
0x00031940 ble 0x315f4 | goto label_0;
| }
0x00031944 ldr r7, [r5, 0x1a8] | r7 = *((r5 + 0x1a8));
0x00031948 mov r0, r7 | r0 = r7;
0x0003194c bl 0x11c38 | X509_verify_cert_error_string ();
0x00031950 ldr r1, [pc, 0x190] | r1 = *(0x31ae4);
0x00031954 mov r2, r7 | r2 = r7;
0x00031958 add r1, pc, r1 | r1 = pc + r1;
0x0003195c mov r3, r0 | r3 = r0;
0x00031960 mov r0, r4 | r0 = r4;
0x00031964 bl 0x10c24 | r0 = BIO_printf ()
0x00031968 cmp r0, 0 |
| if (r0 <= 0) {
0x0003196c ble 0x315f4 | goto label_0;
| }
0x00031970 ldr r3, [r5, 0x214] | r3 = *((r5 + 0x214));
0x00031974 tst r3, 1 |
| if ((r3 & 1) != 0) {
0x00031978 bne 0x31a70 | goto label_25;
| }
0x0003197c ldr r2, [pc, 0x168] | r2 = *(0x31ae8);
0x00031980 add r2, pc, r2 | r2 = pc + r2;
| label_12:
0x00031984 ldr r1, [pc, 0x164] | r1 = *(0x31aec);
0x00031988 mov r0, r4 | r0 = r4;
0x0003198c add r1, pc, r1 | r1 = pc + r1;
0x00031990 bl 0x10c24 | r0 = BIO_printf ()
0x00031994 cmp r0, 0 |
| if (r0 <= 0) {
0x00031998 ble 0x315f4 | goto label_0;
| }
0x0003199c cmp r6, 0x304 |
| if (r6 != 0x304) {
0x000319a0 movne r0, 1 | r0 = 1;
| goto label_26;
| }
| if (r6 != 0x304) {
| label_26:
0x000319a4 bne 0x315f8 | goto label_6;
| }
0x000319a8 ldr r1, [pc, 0x144] | r1 = *(0x31af0);
0x000319ac ldr r2, [r5, 0x1f8] | r2 = *((r5 + 0x1f8));
0x000319b0 add r1, pc, r1 | r1 = pc + r1;
0x000319b4 mov r0, r4 | r0 = r4;
0x000319b8 bl 0x10c24 | r0 = BIO_printf ()
0x000319bc cmp r0, 0 |
| if (r0 > 0) {
0x000319c0 movle r0, 0 | r0 = 0;
| }
| if (r0 <= 0) {
0x000319c4 movgt r0, 1 | r0 = 1;
| }
0x000319c8 b 0x315f8 | goto label_6;
| label_19:
0x000319cc ldr r1, [pc, 0x124] | r1 = *(0x31af4);
0x000319d0 mov r0, r4 | r0 = r4;
0x000319d4 add r1, pc, r1 | r1 = pc + r1;
0x000319d8 bl 0x10c24 | r0 = BIO_printf ()
0x000319dc cmp r0, 0 |
| if (r0 > 0) {
0x000319e0 bgt 0x31890 | goto label_7;
| }
0x000319e4 b 0x315f4 | goto label_0;
| label_20:
0x000319e8 ldr r1, [pc, 0x10c] | r1 = *(0x31af8);
0x000319ec mov r0, r4 | r0 = r4;
0x000319f0 add r1, pc, r1 | r1 = pc + r1;
0x000319f4 bl 0x1108c | r0 = BIO_puts ();
0x000319f8 cmp r0, 0 |
| if (r0 <= 0) {
0x000319fc ble 0x315f4 | goto label_0;
| }
0x00031a00 mov r3, 4 | r3 = 4;
0x00031a04 ldr r2, [r5, 0x1ec] | r2 = *((r5 + 0x1ec));
0x00031a08 ldr r1, [r5, 0x1e8] | r1 = *((r5 + 0x1e8));
0x00031a0c mov r0, r4 | r0 = r4;
0x00031a10 bl 0x10cb4 | r0 = BIO_dump_indent ();
0x00031a14 cmp r0, 0 |
| if (r0 > 0) {
0x00031a18 bgt 0x3189c | goto label_8;
| }
0x00031a1c b 0x315f4 | goto label_0;
| label_22:
0x00031a20 ldr r1, [pc, 0xd8] | r1 = *(0x31afc);
0x00031a24 ldm r2, {r2, r3} | r2 = *(r2);
| r3 = *((r2 + 4));
0x00031a28 add r1, pc, r1 | r1 = pc + r1;
0x00031a2c mov r0, r4 | r0 = r4;
0x00031a30 bl 0x10c24 | BIO_printf ()
0x00031a34 b 0x318f4 | goto label_9;
| label_23:
0x00031a38 ldr r1, [pc, 0xc4] | r1 = *(0x31b00);
0x00031a3c mov r0, r4 | r0 = r4;
0x00031a40 add r1, pc, r1 | r1 = pc + r1;
0x00031a44 bl 0x10c24 | r0 = BIO_printf ()
0x00031a48 cmp r0, 0 |
| if (r0 > 0) {
0x00031a4c bgt 0x31908 | goto label_10;
| }
0x00031a50 b 0x315f4 | goto label_0;
| label_24:
0x00031a54 ldr r1, [pc, 0xac] | r1 = *(0x31b04);
0x00031a58 mov r0, r4 | r0 = r4;
0x00031a5c add r1, pc, r1 | r1 = pc + r1;
0x00031a60 bl 0x10c24 | r0 = BIO_printf ()
0x00031a64 cmp r0, 0 |
| if (r0 > 0) {
0x00031a68 bgt 0x31914 | goto label_11;
| }
0x00031a6c b 0x315f4 | goto label_0;
| label_25:
0x00031a70 ldr r2, [pc, 0x94] | r2 = *(0x31b08);
0x00031a74 add r2, pc, r2 | r2 = pc + r2;
0x00031a78 b 0x31984 | goto label_12;
| }
; 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/libssl.so.1.1 @ 0x31b10 */
| #include <stdint.h>
|
; (fcn) sym.SSL_SESSION_print_fp () | void SSL_SESSION_print_fp (int32_t arg1, int32_t arg2) {
| int32_t var_0h;
| int32_t var_8h;
| r0 = arg1;
| r1 = arg2;
0x00031b10 push {r0, r1, r4, r5, r6, lr} |
0x00031b14 mov r5, r1 | r5 = r1;
0x00031b18 mov r6, r0 | r6 = r0;
0x00031b1c bl 0x11278 | BIO_s_file ();
0x00031b20 bl 0x11398 | r0 = BIO_new ();
0x00031b24 subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 != r0) {
0x00031b28 bne 0x31b5c | goto label_0;
| }
0x00031b2c mov r3, 0x16 | r3 = 0x16;
0x00031b30 str r3, [sp] | *(sp) = r3;
0x00031b34 ldr r3, [pc, 0x4c] | r3 = *(0x31b84);
0x00031b38 mov r2, 7 | r2 = 7;
0x00031b3c add r3, pc, r3 | r3 = pc + r3;
0x00031b40 mov r1, 0xbe | r1 = 0xbe;
0x00031b44 mov r0, 0x14 | r0 = 0x14;
0x00031b48 bl 0x11ab8 | ERR_put_error ();
0x00031b4c mov r5, r4 | r5 = r4;
| do {
0x00031b50 mov r0, r5 | r0 = r5;
0x00031b54 add sp, sp, 8 |
0x00031b58 pop {r4, r5, r6, pc} |
| label_0:
0x00031b5c mov r3, r6 | r3 = r6;
0x00031b60 mov r2, 0 | r2 = 0;
0x00031b64 mov r1, 0x6a | r1 = 0x6a;
0x00031b68 bl 0x11dc4 | BIO_ctrl ();
0x00031b6c mov r1, r5 | r1 = r5;
0x00031b70 mov r0, r4 | r0 = r4;
0x00031b74 bl 0x315e4 | r0 = SSL_SESSION_print ();
0x00031b78 mov r5, r0 | r5 = r0;
0x00031b7c mov r0, r4 | r0 = r4;
0x00031b80 bl 0x11ddc | BIO_free ();
0x00031b84 b 0x31b50 |
| } 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/libssl.so.1.1 @ 0x31b8c */
| #include <stdint.h>
|
; (fcn) sym.SSL_SESSION_print_keylog () | void SSL_SESSION_print_keylog (int32_t arg1, int32_t arg2) {
| r0 = arg1;
| r1 = arg2;
0x00031b8c push {r4, r5, r6, r7, r8, lr} |
0x00031b90 subs r4, r1, 0 | r4 = r1 - 0;
0x00031b94 bne 0x31ba0 |
| while (r3 == 0) {
| label_0:
0x00031b98 mov r0, 0 | r0 = 0;
0x00031b9c pop {r4, r5, r6, r7, r8, pc} |
0x00031ba0 ldr r3, [r4, 0x148] | r3 = *((r4 + 0x148));
0x00031ba4 cmp r3, 0 |
0x00031ba8 beq 0x31b98 |
| }
0x00031bac ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x00031bb0 cmp r3, 0 |
| if (r3 == 0) {
0x00031bb4 beq 0x31b98 | goto label_0;
| }
0x00031bb8 ldr r1, [pc, 0xe0] | r1 = *(0x31c9c);
0x00031bbc mov r5, r0 | r5 = r0;
0x00031bc0 add r1, pc, r1 | r1 = pc + r1;
0x00031bc4 bl 0x1108c | r0 = BIO_puts ();
0x00031bc8 cmp r0, 0 |
| if (r0 <= 0) {
0x00031bcc ble 0x31b98 | goto label_0;
| }
0x00031bd0 ldr r1, [pc, 0xcc] | r1 = *(0x31ca0);
0x00031bd4 mov r0, r5 | r0 = r5;
0x00031bd8 add r1, pc, r1 | r1 = pc + r1;
0x00031bdc bl 0x1108c | r0 = BIO_puts ();
0x00031be0 cmp r0, 0 |
| if (r0 <= 0) {
0x00031be4 ble 0x31b98 | goto label_0;
| }
0x00031be8 ldr r7, [pc, 0xb8] | r7 = *(0x31ca4);
0x00031bec ldr r8, [pc, 0xb8] | r8 = *(0x31ca8);
0x00031bf0 add r6, r4, 0x14c | r6 = r4 + 0x14c;
0x00031bf4 sub r7, r7, r4 | r7 -= r4;
0x00031bf8 add r8, pc, r8 | r8 = pc + r8;
| label_1:
0x00031bfc ldr r2, [r4, 0x148] | r2 = *((r4 + 0x148));
0x00031c00 add r3, r7, r6 | r3 = r7 + r6;
0x00031c04 cmp r2, r3 |
| if (r2 > r3) {
0x00031c08 bhi 0x31c68 | goto label_3;
| }
0x00031c0c ldr r1, [pc, 0x9c] | r1 = *(0x31cac);
0x00031c10 mov r0, r5 | r0 = r5;
0x00031c14 add r1, pc, r1 | r1 = pc + r1;
0x00031c18 bl 0x1108c | r0 = BIO_puts ();
0x00031c1c cmp r0, 0 |
| if (r0 <= 0) {
0x00031c20 ble 0x31b98 | goto label_0;
| }
0x00031c24 ldr r8, [pc, 0x88] | r8 = *(0x31cb0);
0x00031c28 mvn r7, 0x47 | r7 = ~0x47;
0x00031c2c add r6, r4, 0x48 | r6 = r4 + 0x48;
0x00031c30 sub r7, r7, r4 | r7 -= r4;
0x00031c34 add r8, pc, r8 | r8 = pc + r8;
| label_2:
0x00031c38 ldr r2, [r4, 4] | r2 = *((r4 + 4));
0x00031c3c add r3, r7, r6 | r3 = r7 + r6;
0x00031c40 cmp r2, r3 |
| if (r2 > r3) {
0x00031c44 bhi 0x31c84 | goto label_4;
| }
0x00031c48 ldr r1, [pc, 0x68] | r1 = *(0x31cb4);
0x00031c4c mov r0, r5 | r0 = r5;
0x00031c50 add r1, pc, r1 | r1 = pc + r1;
0x00031c54 bl 0x1108c | r0 = BIO_puts ();
0x00031c58 cmp r0, 0 |
| if (r0 > 0) {
0x00031c5c movle r0, 0 | r0 = 0;
| }
| if (r0 <= 0) {
0x00031c60 movgt r0, 1 | r0 = 1;
| }
0x00031c64 pop {r4, r5, r6, r7, r8, pc} |
| label_3:
0x00031c68 ldrb r2, [r6], 1 | r2 = *(r6);
| r6++;
0x00031c6c mov r1, r8 | r1 = r8;
0x00031c70 mov r0, r5 | r0 = r5;
0x00031c74 bl 0x10c24 | r0 = BIO_printf ()
0x00031c78 cmp r0, 0 |
| if (r0 > 0) {
0x00031c7c bgt 0x31bfc | goto label_1;
| }
0x00031c80 b 0x31b98 | goto label_0;
| label_4:
0x00031c84 ldrb r2, [r6], 1 | r2 = *(r6);
| r6++;
0x00031c88 mov r1, r8 | r1 = r8;
0x00031c8c mov r0, r5 | r0 = r5;
0x00031c90 bl 0x10c24 | r0 = BIO_printf ()
0x00031c94 cmp r0, 0 |
| if (r0 > 0) {
0x00031c98 bgt 0x31c38 | goto label_2;
| }
0x00031c9c b 0x31b98 | 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/libssl.so.1.1 @ 0x31b8c */
| #include <stdint.h>
|
; (fcn) sym.SSL_SESSION_print_keylog () | void SSL_SESSION_print_keylog (int32_t arg1, int32_t arg2) {
| r0 = arg1;
| r1 = arg2;
0x00031b8c push {r4, r5, r6, r7, r8, lr} |
0x00031b90 subs r4, r1, 0 | r4 = r1 - 0;
0x00031b94 bne 0x31ba0 |
| while (r3 == 0) {
| label_0:
0x00031b98 mov r0, 0 | r0 = 0;
0x00031b9c pop {r4, r5, r6, r7, r8, pc} |
0x00031ba0 ldr r3, [r4, 0x148] | r3 = *((r4 + 0x148));
0x00031ba4 cmp r3, 0 |
0x00031ba8 beq 0x31b98 |
| }
0x00031bac ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x00031bb0 cmp r3, 0 |
| if (r3 == 0) {
0x00031bb4 beq 0x31b98 | goto label_0;
| }
0x00031bb8 ldr r1, [pc, 0xe0] | r1 = *(0x31c9c);
0x00031bbc mov r5, r0 | r5 = r0;
0x00031bc0 add r1, pc, r1 | r1 = pc + r1;
0x00031bc4 bl 0x1108c | r0 = BIO_puts ();
0x00031bc8 cmp r0, 0 |
| if (r0 <= 0) {
0x00031bcc ble 0x31b98 | goto label_0;
| }
0x00031bd0 ldr r1, [pc, 0xcc] | r1 = *(0x31ca0);
0x00031bd4 mov r0, r5 | r0 = r5;
0x00031bd8 add r1, pc, r1 | r1 = pc + r1;
0x00031bdc bl 0x1108c | r0 = BIO_puts ();
0x00031be0 cmp r0, 0 |
| if (r0 <= 0) {
0x00031be4 ble 0x31b98 | goto label_0;
| }
0x00031be8 ldr r7, [pc, 0xb8] | r7 = *(0x31ca4);
0x00031bec ldr r8, [pc, 0xb8] | r8 = *(0x31ca8);
0x00031bf0 add r6, r4, 0x14c | r6 = r4 + 0x14c;
0x00031bf4 sub r7, r7, r4 | r7 -= r4;
0x00031bf8 add r8, pc, r8 | r8 = pc + r8;
| label_1:
0x00031bfc ldr r2, [r4, 0x148] | r2 = *((r4 + 0x148));
0x00031c00 add r3, r7, r6 | r3 = r7 + r6;
0x00031c04 cmp r2, r3 |
| if (r2 > r3) {
0x00031c08 bhi 0x31c68 | goto label_3;
| }
0x00031c0c ldr r1, [pc, 0x9c] | r1 = *(0x31cac);
0x00031c10 mov r0, r5 | r0 = r5;
0x00031c14 add r1, pc, r1 | r1 = pc + r1;
0x00031c18 bl 0x1108c | r0 = BIO_puts ();
0x00031c1c cmp r0, 0 |
| if (r0 <= 0) {
0x00031c20 ble 0x31b98 | goto label_0;
| }
0x00031c24 ldr r8, [pc, 0x88] | r8 = *(0x31cb0);
0x00031c28 mvn r7, 0x47 | r7 = ~0x47;
0x00031c2c add r6, r4, 0x48 | r6 = r4 + 0x48;
0x00031c30 sub r7, r7, r4 | r7 -= r4;
0x00031c34 add r8, pc, r8 | r8 = pc + r8;
| label_2:
0x00031c38 ldr r2, [r4, 4] | r2 = *((r4 + 4));
0x00031c3c add r3, r7, r6 | r3 = r7 + r6;
0x00031c40 cmp r2, r3 |
| if (r2 > r3) {
0x00031c44 bhi 0x31c84 | goto label_4;
| }
0x00031c48 ldr r1, [pc, 0x68] | r1 = *(0x31cb4);
0x00031c4c mov r0, r5 | r0 = r5;
0x00031c50 add r1, pc, r1 | r1 = pc + r1;
0x00031c54 bl 0x1108c | r0 = BIO_puts ();
0x00031c58 cmp r0, 0 |
| if (r0 > 0) {
0x00031c5c movle r0, 0 | r0 = 0;
| }
| if (r0 <= 0) {
0x00031c60 movgt r0, 1 | r0 = 1;
| }
0x00031c64 pop {r4, r5, r6, r7, r8, pc} |
| label_3:
0x00031c68 ldrb r2, [r6], 1 | r2 = *(r6);
| r6++;
0x00031c6c mov r1, r8 | r1 = r8;
0x00031c70 mov r0, r5 | r0 = r5;
0x00031c74 bl 0x10c24 | r0 = BIO_printf ()
0x00031c78 cmp r0, 0 |
| if (r0 > 0) {
0x00031c7c bgt 0x31bfc | goto label_1;
| }
0x00031c80 b 0x31b98 | goto label_0;
| label_4:
0x00031c84 ldrb r2, [r6], 1 | r2 = *(r6);
| r6++;
0x00031c88 mov r1, r8 | r1 = r8;
0x00031c8c mov r0, r5 | r0 = r5;
0x00031c90 bl 0x10c24 | r0 = BIO_printf ()
0x00031c94 cmp r0, 0 |
| if (r0 > 0) {
0x00031c98 bgt 0x31c38 | goto label_2;
| }
0x00031c9c b 0x31b98 | goto label_0;
| }
[*] Function printf used 21 times libssl.so.1.1