[*] Binary protection state of libssl.so.1.1
Full RELRO Canary found NX enabled DSO No RPATH No RUNPATH No Symbols
[*] Function printf tear down of libssl.so.1.1
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libssl.so.1.1 @ 0x281b4 */
| #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 (int16_t arg1, uint32_t arg2) {
| int32_t var_0h;
| int32_t var_0h_2;
| int16_t var_8h;
| int16_t var_10h;
| int16_t var_14h;
| r0 = arg1;
| r1 = arg2;
0x000281b4 blmi 0xff3bacf0 | __asm ("blmi aav.0x00037696");
0x000281b8 push.w {r4, r5, r6, r7, r8, sb, lr} |
0x000281bc sub sp, 0x1c |
0x000281be add r2, pc | r2 += pc;
0x000281c0 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x000281c2 ldr r3, [r3] | r3 = *(r3);
0x000281c4 str r3, [sp, 0x14] | var_14h = r3;
0x000281c6 mov.w r3, 0 | r3 = 0;
0x000281ca cmp r1, 0 |
| if (r1 == 0) {
0x000281cc beq 0x28252 | goto label_2;
| }
0x000281ce mov r4, r1 | r4 = r1;
0x000281d0 ldr r1, [pc, 0x320] |
0x000281d2 ldr.w r8, [r4] | r8 = *(r4);
0x000281d6 mov r6, r0 | r6 = r0;
0x000281d8 add r1, pc | r1 = 0x506d0;
0x000281da blx 0xfd5c | r0 = fcn_0000fd5c ();
0x000281de cmp r0, 0 |
| if (r0 <= 0) {
0x000281e0 ble 0x28252 | goto label_2;
| }
0x000281e2 ldr r0, [r4] | r0 = *(r4);
0x000281e4 bl 0x2299c | fcn_0002299c (r0);
0x000281e8 ldr r1, [pc, 0x30c] |
0x000281ea mov r2, r0 | r2 = r0;
0x000281ec mov r0, r6 | r0 = r6;
0x000281ee add r1, pc | r1 = 0x506ea;
0x000281f0 blx 0xf8cc | r0 = BIO_printf ()
0x000281f4 cmp r0, 0 |
| if (r0 <= 0) {
0x000281f6 ble 0x28252 | goto label_2;
| }
0x000281f8 ldr.w r3, [r4, 0x1b8] | r3 = *((r4 + 0x1b8));
0x000281fc cmp r3, 0 |
| if (r3 == 0) {
0x000281fe beq 0x28276 | goto label_11;
| }
0x00028200 ldr r2, [r3, 4] | r2 = *((r3 + 4));
| if (r2 == 0) {
0x00028202 cbz r2, 0x28270 | goto label_12;
| }
| label_0:
0x00028204 ldr r1, [pc, 0x2f4] |
0x00028206 mov r0, r6 | r0 = r6;
0x00028208 add r1, pc | r1 = 0x50708;
0x0002820a blx 0xf8cc | r0 = BIO_printf ()
0x0002820e cmp r0, 0 |
| if (r0 <= 0) {
0x00028210 ble 0x28252 | goto label_2;
| }
| label_1:
0x00028212 ldr r1, [pc, 0x2ec] |
0x00028214 mov r0, r6 | r0 = r6;
0x00028216 add r1, pc | r1 = 0x5071c;
0x00028218 blx 0xfd5c | r0 = fcn_0000fd5c ();
0x0002821c cmp r0, 0 |
| if (r0 <= 0) {
0x0002821e ble 0x28252 | goto label_2;
| }
0x00028220 ldr.w r3, [r4, 0x148] | r3 = *((r4 + 0x148));
| if (r3 == 0) {
0x00028224 cbz r3, 0x28296 | goto label_13;
| }
0x00028226 ldr.w sb, [pc, 0x2dc] | sb = case.0x2166c.109;
0x0002822a addw r7, r4, 0x14b | __asm ("addw r7, r4, 0x14b");
0x0002822e add sb, pc | sb += pc;
0x00028230 b 0x28240 |
| while (r0 > 0) {
0x00028232 ldr.w r3, [r4, 0x148] | r3 = *((r4 + 0x148));
0x00028236 sub.w r5, r5, 0x14a | r5 -= 0x14a;
0x0002823a subs r5, r5, r4 | r5 -= r4;
0x0002823c cmp r3, r5 |
| if (r3 < r5) {
0x0002823e bls 0x28296 | goto label_13;
| }
0x00028240 mov r5, r7 | r5 = r7;
0x00028242 mov r1, sb | r1 = sb;
0x00028244 ldrb r2, [r7, 1]! | r2 = *((r7 += 1));
0x00028248 mov r0, r6 | r0 = r6;
0x0002824a blx 0xf8cc | r0 = BIO_printf ()
0x0002824e cmp r0, 0 |
0x00028250 bgt 0x28232 |
| }
| label_2:
0x00028252 movs r0, 0 | r0 = 0;
| label_3:
0x00028254 ldr r2, [pc, 0x2b0] |
0x00028256 ldr r3, [pc, 0x298] | r3 = *(0x284f2);
0x00028258 add r2, pc | r2 = 0x50764;
0x0002825a ldr r3, [r2, r3] | r3 = *(0x50764);
0x0002825c ldr r2, [r3] | r2 = *(0x50764);
0x0002825e ldr r3, [sp, 0x14] | r3 = var_14h;
0x00028260 eors r2, r3 | r2 ^= r3;
0x00028262 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00028266 bne.w 0x284b2 | goto label_14;
| }
0x0002826a add sp, 0x1c |
0x0002826c pop.w {r4, r5, r6, r7, r8, sb, pc} |
| label_12:
0x00028270 ldr r2, [pc, 0x298] |
0x00028272 add r2, pc | r2 = 0x50782;
0x00028274 b 0x28204 | goto label_0;
| label_11:
0x00028276 ldr.w r2, [r4, 0x1bc] | r2 = *((r4 + 0x1bc));
0x0002827a and r3, r2, 0xff000000 | r3 = r2 & 0xff000000;
0x0002827e cmp.w r3, 0x2000000 |
| if (r3 == 0x2000000) {
0x00028282 beq 0x2831c | goto label_15;
| }
0x00028284 ldr r1, [pc, 0x288] |
0x00028286 uxth r2, r2 | r2 = (int16_t) r2;
0x00028288 mov r0, r6 | r0 = r6;
0x0002828a add r1, pc | r1 = 0x5079e;
0x0002828c blx 0xf8cc | r0 = BIO_printf ()
0x00028290 cmp r0, 0 |
| if (r0 > 0) {
0x00028292 bgt 0x28212 | goto label_1;
| }
0x00028294 b 0x28252 | goto label_2;
| label_13:
0x00028296 ldr r1, [pc, 0x27c] |
0x00028298 mov r0, r6 | r0 = r6;
0x0002829a add r1, pc | r1 = 0x507b4;
0x0002829c blx 0xfd5c | r0 = fcn_0000fd5c ();
0x000282a0 cmp r0, 0 |
| if (r0 <= 0) {
0x000282a2 ble 0x28252 | goto label_2;
| }
0x000282a4 ldr.w r3, [r4, 0x16c] | r3 = *((r4 + 0x16c));
| if (r3 == 0) {
0x000282a8 cbz r3, 0x282d8 | goto label_16;
| }
0x000282aa ldr.w sb, [pc, 0x26c] |
0x000282ae addw r7, r4, 0x16f | __asm ("addw r7, r4, 0x16f");
0x000282b2 add sb, pc | sb = 0x507d0;
0x000282b4 b 0x282c4 |
| while (r0 > 0) {
0x000282b6 ldr.w r3, [r4, 0x16c] | r3 = *((r4 + 0x16c));
0x000282ba sub.w r5, r5, 0x16e | r5 -= 0x16e;
0x000282be subs r5, r5, r4 | r5 -= r4;
0x000282c0 cmp r3, r5 |
| if (r3 < r5) {
0x000282c2 bls 0x282d8 | goto label_16;
| }
0x000282c4 mov r5, r7 | r5 = r7;
0x000282c6 mov r1, sb | r1 = sb;
0x000282c8 ldrb r2, [r7, 1]! | r2 = *((r7 += 1));
0x000282cc mov r0, r6 | r0 = r6;
0x000282ce blx 0xf8cc | r0 = BIO_printf ()
0x000282d2 cmp r0, 0 |
0x000282d4 bgt 0x282b6 |
| }
0x000282d6 b 0x28252 | goto label_2;
| label_16:
0x000282d8 cmp.w r8, 0x304 |
| if (r8 == 0x304) {
0x000282dc beq.w 0x2843e | goto label_17;
| }
0x000282e0 ldr r1, [pc, 0x238] |
0x000282e2 mov r0, r6 | r0 = r6;
0x000282e4 add r1, pc | r1 = 0x50804;
0x000282e6 blx 0xfd5c | r0 = fcn_0000fd5c ();
0x000282ea cmp r0, 0 |
| if (r0 <= 0) {
0x000282ec ble 0x28252 | goto label_2;
| }
| label_4:
0x000282ee ldr r3, [r4, 4] | r3 = *((r4 + 4));
| if (r3 == 0) {
0x000282f0 cbz r3, 0x28332 | goto label_18;
| }
0x000282f2 ldr.w sb, [pc, 0x22c] |
0x000282f6 add.w r7, r4, 0x47 | r7 = r4 + 0x47;
0x000282fa add sb, pc | sb = 0x50820;
0x000282fc b 0x28308 |
| while (r0 > 0) {
0x000282fe ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x00028300 subs r5, 0x46 | r5 -= 0x46;
0x00028302 subs r5, r5, r4 | r5 -= r4;
0x00028304 cmp r3, r5 |
| if (r3 < r5) {
0x00028306 bls 0x28332 | goto label_18;
| }
0x00028308 mov r5, r7 | r5 = r7;
0x0002830a mov r1, sb | r1 = sb;
0x0002830c ldrb r2, [r7, 1]! | r2 = *((r7 += 1));
0x00028310 mov r0, r6 | r0 = r6;
0x00028312 blx 0xf8cc | r0 = BIO_printf ()
0x00028316 cmp r0, 0 |
0x00028318 bgt 0x282fe |
| }
0x0002831a b 0x28252 | goto label_2;
| label_15:
0x0002831c ldr r1, [pc, 0x204] |
0x0002831e bic r2, r2, 0xff000000 | r2 = BIT_MASK (r2, 0xff000000);
0x00028322 mov r0, r6 | r0 = r6;
0x00028324 add r1, pc | r1 = 0x5084c;
0x00028326 blx 0xf8cc | r0 = BIO_printf ()
0x0002832a cmp r0, 0 |
| if (r0 > 0) {
0x0002832c bgt.w 0x28212 | goto label_1;
| }
0x00028330 b 0x28252 | goto label_2;
| label_18:
0x00028332 ldr r1, [pc, 0x1f4] |
0x00028334 mov r0, r6 | r0 = r6;
0x00028336 add r1, pc | r1 = 0x50864;
0x00028338 blx 0xfd5c | r0 = fcn_0000fd5c ();
0x0002833c cmp r0, 0 |
| if (r0 <= 0) {
0x0002833e ble 0x28252 | goto label_2;
| }
0x00028340 ldr.w r2, [r4, 0x194] | r2 = *((r4 + 0x194));
0x00028344 cmp r2, 0 |
| if (r2 == 0) {
0x00028346 beq.w 0x28450 | goto label_19;
| }
| label_5:
0x0002834a ldr r1, [pc, 0x1e0] |
0x0002834c mov r0, r6 | r0 = r6;
0x0002834e add r1, pc | r1 = 0x50880;
0x00028350 blx 0xf8cc | r0 = BIO_printf ()
0x00028354 cmp r0, 0 |
| if (r0 <= 0) {
0x00028356 ble.w 0x28252 | goto label_2;
| }
0x0002835a ldr r1, [pc, 0x1d4] |
0x0002835c mov r0, r6 | r0 = r6;
0x0002835e add r1, pc | r1 = 0x50894;
0x00028360 blx 0xfd5c | r0 = fcn_0000fd5c ();
0x00028364 cmp r0, 0 |
| if (r0 <= 0) {
0x00028366 ble.w 0x28252 | goto label_2;
| }
0x0002836a ldr.w r2, [r4, 0x190] | r2 = *((r4 + 0x190));
0x0002836e cmp r2, 0 |
| if (r2 == 0) {
0x00028370 beq 0x28456 | goto label_20;
| }
| label_6:
0x00028372 ldr r1, [pc, 0x1c0] |
0x00028374 mov r0, r6 | r0 = r6;
0x00028376 add r1, pc | r1 = 0x508b0;
0x00028378 blx 0xf8cc | r0 = BIO_printf ()
0x0002837c cmp r0, 0 |
| if (r0 <= 0) {
0x0002837e ble.w 0x28252 | goto label_2;
| }
0x00028382 ldr.w r2, [r4, 0x1d8] | r2 = *((r4 + 0x1d8));
0x00028386 cmp r2, 0 |
| if (r2 != 0) {
0x00028388 bne 0x2845c | goto label_21;
| }
| label_7:
0x0002838a ldr.w r3, [r4, 0x1d0] | r3 = *((r4 + 0x1d0));
| if (r3 == 0) {
0x0002838e cbz r3, 0x283b2 | goto label_22;
| }
0x00028390 ldr r1, [pc, 0x1a4] |
0x00028392 mov r0, r6 | r0 = r6;
0x00028394 add r1, pc | r1 = 0x508d0;
0x00028396 blx 0xfd5c | r0 = fcn_0000fd5c ();
0x0002839a cmp r0, 0 |
| if (r0 <= 0) {
0x0002839c ble.w 0x28252 | goto label_2;
| }
0x000283a0 ldrd r1, r2, [r4, 0x1d0] | __asm ("ldrd r1, r2, [r4, 0x1d0]");
0x000283a4 movs r3, 4 | r3 = 4;
0x000283a6 mov r0, r6 | r0 = r6;
0x000283a8 blx 0xf960 | r0 = fcn_0000f960 ();
0x000283ac cmp r0, 0 |
| if (r0 <= 0) {
0x000283ae ble.w 0x28252 | goto label_2;
| }
| label_22:
0x000283b2 ldr.w r3, [r4, 0x1b4] | r3 = *((r4 + 0x1b4));
0x000283b6 cmp r3, 0 |
| if (r3 != 0) {
0x000283b8 bne 0x2846c | goto label_23;
| }
| label_8:
0x000283ba ldr.w r2, [r4, 0x1b0] | r2 = *((r4 + 0x1b0));
0x000283be cmp r2, 0 |
| if (r2 != 0) {
0x000283c0 bne 0x284a0 | goto label_24;
| }
| label_9:
0x000283c2 ldr.w r2, [r4, 0x1ac] | r2 = *((r4 + 0x1ac));
| if (r2 == 0) {
0x000283c6 cbz r2, 0x283da | goto label_25;
| }
0x000283c8 ldr r1, [pc, 0x170] |
0x000283ca asrs r3, r2, 0x1f | r3 = r2 >> 0x1f;
0x000283cc mov r0, r6 | r0 = r6;
0x000283ce add r1, pc | r1 = 0x5090e;
0x000283d0 blx 0xf8cc | r0 = BIO_printf ()
0x000283d4 cmp r0, 0 |
| if (r0 <= 0) {
0x000283d6 ble.w 0x28252 | goto label_2;
| }
| label_25:
0x000283da ldr r1, [pc, 0x164] |
0x000283dc mov r0, r6 | r0 = r6;
0x000283de add r1, pc | r1 = 0x50924;
0x000283e0 blx 0xfd5c | r0 = fcn_0000fd5c ();
0x000283e4 cmp r0, 0 |
| if (r0 <= 0) {
0x000283e6 ble.w 0x28252 | goto label_2;
| }
0x000283ea ldr r1, [pc, 0x158] |
0x000283ec mov r0, r6 | r0 = r6;
0x000283ee add r1, pc | r1 = 0x50938;
0x000283f0 blx 0xfd5c | r0 = fcn_0000fd5c ();
0x000283f4 cmp r0, 0 |
| if (r0 <= 0) {
0x000283f6 ble.w 0x28252 | goto label_2;
| }
0x000283fa ldr.w r5, [r4, 0x1a4] | r5 = *((r4 + 0x1a4));
0x000283fe mov r0, r5 | r0 = r5;
0x00028400 blx 0x108cc | fcn_000108cc ();
0x00028404 ldr r1, [pc, 0x140] |
0x00028406 mov r3, r0 | r3 = r0;
0x00028408 mov r2, r5 | r2 = r5;
0x0002840a mov r0, r6 | r0 = r6;
0x0002840c add r1, pc | r1 = 0x50958;
0x0002840e blx 0xf8cc | r0 = BIO_printf ()
0x00028412 cmp r0, 0 |
| if (r0 <= 0) {
0x00028414 ble.w 0x28252 | goto label_2;
| }
0x00028418 ldr.w r3, [r4, 0x1f8] | r3 = *((r4 + 0x1f8));
0x0002841c lsls r3, r3, 0x1f | r3 <<= 0x1f;
| if (r3 < r3) {
0x0002841e bmi 0x284cc | goto label_26;
| }
0x00028420 ldr r2, [pc, 0x128] |
0x00028422 add r2, pc | r2 = 0x50972;
| label_10:
0x00028424 ldr r1, [pc, 0x128] |
0x00028426 mov r0, r6 | r0 = r6;
0x00028428 add r1, pc | r1 = 0x5097c;
0x0002842a blx 0xf8cc | r0 = BIO_printf ()
0x0002842e cmp r0, 0 |
| if (r0 <= 0) {
0x00028430 ble.w 0x28252 | goto label_2;
| }
0x00028434 cmp.w r8, 0x304 |
| if (r8 == 0x304) {
0x00028438 beq 0x284d2 | goto label_27;
| }
0x0002843a movs r0, 1 | r0 = 1;
0x0002843c b 0x28254 | goto label_3;
| label_17:
0x0002843e ldr r1, [pc, 0x114] |
0x00028440 mov r0, r6 | r0 = r6;
0x00028442 add r1, pc | r1 = 0x5099c;
0x00028444 blx 0xfd5c | r0 = fcn_0000fd5c ();
0x00028448 cmp r0, 0 |
| if (r0 > 0) {
0x0002844a bgt.w 0x282ee | goto label_4;
| }
0x0002844e b 0x28252 | goto label_2;
| label_19:
0x00028450 ldr r2, [pc, 0x104] |
0x00028452 add r2, pc | r2 = 0x509ae;
0x00028454 b 0x2834a | goto label_5;
| label_20:
0x00028456 ldr r2, [pc, 0x104] |
0x00028458 add r2, pc | r2 = 0x509ba;
0x0002845a b 0x28372 | goto label_6;
| label_21:
0x0002845c ldr r1, [pc, 0x100] |
0x0002845e mov r0, r6 | r0 = r6;
0x00028460 add r1, pc | r1 = 0x509c4;
0x00028462 blx 0xf8cc | r0 = BIO_printf ()
0x00028466 cmp r0, 0 |
| if (r0 > 0) {
0x00028468 bgt 0x2838a | goto label_7;
| }
0x0002846a b 0x28252 | goto label_2;
| label_23:
0x0002846c movs r3, 0 | r3 = 0;
0x0002846e add r2, sp, 0x10 | r2 += var_10h;
0x00028470 strd r3, r2, [sp] | __asm ("strd r3, r2, [sp]");
0x00028474 mov r1, r3 | r1 = r3;
0x00028476 mov r2, r3 | r2 = r3;
0x00028478 mov r0, r4 | r0 = r4;
0x0002847a str r3, [sp, 8] | var_8h = r3;
0x0002847c str r3, [sp, 0x10] | var_10h = r3;
0x0002847e bl 0x1d8a8 | r0 = fcn_0001d8a8 (r0, r1, r2, r3, r4, r5, r6);
0x00028482 cmp r0, 0 |
| if (r0 == 0) {
0x00028484 beq.w 0x28252 | goto label_2;
| }
0x00028488 ldr r2, [sp, 0x10] | r2 = var_10h;
| if (r2 == 0) {
0x0002848a cbz r2, 0x284b6 | goto label_28;
| }
0x0002848c ldr r1, [pc, 0xd4] |
0x0002848e mov r0, r6 | r0 = r6;
0x00028490 ldrd r2, r3, [r2] | __asm ("ldrd r2, r3, [r2]");
0x00028494 add r1, pc | r1 = 0x509fc;
0x00028496 blx 0xf8cc | r0 = BIO_printf ()
0x0002849a cmp r0, 0 |
| if (r0 > 0) {
0x0002849c bgt 0x283ba | goto label_8;
| }
0x0002849e b 0x28252 | goto label_2;
| label_24:
0x000284a0 ldr r1, [pc, 0xc4] |
0x000284a2 asrs r3, r2, 0x1f | r3 = r2 >> 0x1f;
0x000284a4 mov r0, r6 | r0 = r6;
0x000284a6 add r1, pc | r1 = 0x50a12;
0x000284a8 blx 0xf8cc | r0 = BIO_printf ()
0x000284ac cmp r0, 0 |
| if (r0 > 0) {
0x000284ae bgt 0x283c2 | goto label_9;
| }
0x000284b0 b 0x28252 | goto label_2;
| label_14:
0x000284b2 blx 0x105f0 | fcn_000105f0 ();
| label_28:
0x000284b6 ldr r1, [pc, 0xb4] |
0x000284b8 mov r0, r6 | r0 = r6;
0x000284ba ldr.w r2, [r4, 0x1b4] | r2 = *((r4 + 0x1b4));
0x000284be add r1, pc | r1 = 0x50a30;
0x000284c0 blx 0xf8cc | r0 = BIO_printf ()
0x000284c4 cmp r0, 0 |
| if (r0 > 0) {
0x000284c6 bgt.w 0x283ba | goto label_8;
| }
0x000284ca b 0x28252 | goto label_2;
| label_26:
0x000284cc ldr r2, [pc, 0xa0] |
0x000284ce add r2, pc | r2 = 0x50a42;
0x000284d0 b 0x28424 | goto label_10;
| label_27:
0x000284d2 ldr r1, [pc, 0xa0] |
0x000284d4 mov r0, r6 | r0 = r6;
0x000284d6 ldr.w r2, [r4, 0x1e0] | r2 = *((r4 + 0x1e0));
0x000284da add r1, pc | r1 = 0x50a54;
0x000284dc blx 0xf8cc | r0 = BIO_printf ()
0x000284e0 cmp r0, 0 |
0x000284e2 ite le |
| if (r0 > 0) {
0x000284e4 movle r0, 0 | r0 = 0;
| }
| if (r0 <= 0) {
0x000284e6 movgt r0, 1 | r0 = 1;
| }
0x000284e8 b 0x28254 | goto label_3;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libssl.so.1.1 @ 0x28578 */
| #include <stdint.h>
|
; (fcn) sym.SSL_SESSION_print_fp () | void SSL_SESSION_print_fp (int16_t arg1, int16_t arg2) {
| int16_t var_0h;
| r0 = arg1;
| r1 = arg2;
0x00028578 push {r4, r5, r6, lr} |
0x0002857a sub sp, 8 |
0x0002857c mov r5, r1 | r5 = r1;
0x0002857e mov r6, r0 | r6 = r0;
0x00028580 blx 0xfef4 | fcn_0000fef4 ();
0x00028584 blx 0xffe8 | r0 = fcn_0000ffe8 ();
0x00028588 mov r4, r0 | r4 = r0;
| if (r0 != 0) {
0x0002858a cbz r0, 0x285ae |
0x0002858c mov r3, r6 | r3 = r6;
0x0002858e movs r2, 0 | r2 = 0;
0x00028590 movs r1, 0x6a | r1 = 0x6a;
0x00028592 blx 0x10a38 | fcn_00010a38 ();
0x00028596 mov r1, r5 | r1 = r5;
0x00028598 mov r0, r4 | r0 = r4;
0x0002859a bl 0x281b4 | r0 = SSL_SESSION_print ();
0x0002859e mov r3, r0 | r3 = r0;
0x000285a0 mov r0, r4 | r0 = r4;
0x000285a2 mov r4, r3 | r4 = r3;
0x000285a4 blx 0x10a44 | fcn_00010a44 ();
0x000285a8 mov r0, r4 | r0 = r4;
0x000285aa add sp, 8 |
0x000285ac pop {r4, r5, r6, pc} |
| }
0x000285ae ldr r3, [pc, 0x18] |
0x000285b0 movs r0, 0x16 | r0 = 0x16;
0x000285b2 str r0, [sp] | *(sp) = r0;
0x000285b4 movs r2, 7 | r2 = 7;
0x000285b6 movs r1, 0xbe | r1 = 0xbe;
0x000285b8 movs r0, 0x14 | r0 = 0x14;
0x000285ba add r3, pc | r3 = 0x50b88;
0x000285bc blx 0x1074c | fcn_0001074c ();
0x000285c0 mov r0, r4 | r0 = r4;
0x000285c2 add sp, 8 |
0x000285c4 pop {r4, r5, r6, pc} |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libssl.so.1.1 @ 0x285cc */
| #include <stdint.h>
|
; (fcn) sym.SSL_SESSION_print_keylog () | uint32_t SSL_SESSION_print_keylog (int16_t arg1, int16_t arg2) {
| r0 = arg1;
| r1 = arg2;
0x000285cc invalid | goto label_2;
0x000285ce ldr.w r3, [r1, 0x148] | r3 = *((r1 + 0x148));
0x000285d2 push.w {r4, r5, r6, r7, r8, lr} |
0x000285d6 mov r4, r1 | r4 = r1;
| if (r3 == 0) {
0x000285d8 cbz r3, 0x285de | goto label_0;
| }
0x000285da ldr r3, [r1, 4] | r3 = *((r1 + 4));
0x000285dc cbnz r3, 0x285e4 |
| while (r8 <= r8) {
| label_0:
0x000285de movs r0, 0 | r0 = 0;
| label_1:
0x000285e0 pop.w {r4, r5, r6, r7, r8, pc} |
0x000285e4 ldr r1, [pc, 0xa8] |
0x000285e6 mov r6, r0 | r6 = r0;
0x000285e8 add r1, pc | r1 = 0x50c7c;
0x000285ea blx 0xfd5c | r0 = fcn_0000fd5c ();
0x000285ec subs.w r8, r8, r0, lsl 8 | r8 -= (r0 << 8);
0x000285f0 ble 0x285de |
| }
0x000285f2 ldr r1, [pc, 0xa0] |
0x000285f4 mov r0, r6 | r0 = r6;
0x000285f6 add r1, pc | r1 = 0x50c90;
0x000285f8 blx 0xfd5c | r0 = fcn_0000fd5c ();
0x000285fc cmp r0, 0 |
| if (r0 <= 0) {
0x000285fe ble 0x285de | goto label_0;
| }
0x00028600 ldr.w r3, [r4, 0x148] | r3 = *((r4 + 0x148));
| if (r3 == 0) {
0x00028604 cbz r3, 0x2863a | goto label_3;
| }
0x00028606 ldr.w r8, [pc, 0x90] |
0x0002860a addw r7, r4, 0x14b | __asm ("addw r7, r4, 0x14b");
0x0002860e add r8, pc | r8 = 0x50cac;
0x00028610 b 0x2861a |
| while (r0 > 0) {
0x00028612 ldr.w r3, [r4, 0x148] | r3 = *((r4 + 0x148));
0x00028616 cmp r3, r5 |
| if (r3 < r5) {
0x00028618 bls 0x2863a | goto label_3;
| }
0x0002861a mov r5, r7 | r5 = r7;
0x0002861c mov r1, r8 | r1 = r8;
0x0002861e ldrb r2, [r7, 1]! | r2 = *((r7 += 1));
0x00028620 cmp r7, 1 |
0x00028622 mov r0, r6 | r0 = r6;
0x00028624 blx 0xf8cc | r0 = BIO_printf ()
0x00028628 cmp r0, 0 |
0x0002862a sub.w r5, r5, 0x14a | r5 -= 0x14a;
0x0002862e sub.w r5, r5, r4 | r5 -= r4;
0x00028632 bgt 0x28612 |
| }
0x00028634 b 0x285de | goto label_0;
| label_2:
0x00028636 movs r0, 0 | r0 = 0;
0x00028638 bx lr | return r0;
| label_3:
0x0002863a ldr r1, [pc, 0x60] |
0x0002863c mov r0, r6 | r0 = r6;
0x0002863e add r1, pc | r1 = 0x50ce0;
0x00028640 blx 0xfd5c | r0 = fcn_0000fd5c ();
0x00028644 cmp r0, 0 |
| if (r0 <= 0) {
0x00028646 ble 0x285de | goto label_0;
| }
0x00028648 ldr r3, [r4, 4] | r3 = *((r4 + 4));
| if (r3 == 0) {
0x0002864a cbz r3, 0x2867a | goto label_4;
| }
0x0002864c ldr.w r8, [pc, 0x50] |
0x00028650 add.w r7, r4, 0x47 | r7 = r4 + 0x47;
0x00028654 add r8, pc | r8 = 0x50cf8;
0x00028656 b 0x2865e |
| while (r0 > 0) {
0x00028658 ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x0002865a cmp r3, r5 |
| if (r3 < r5) {
0x0002865c bls 0x2867a | goto label_4;
| }
0x0002865e mov r5, r7 | r5 = r7;
0x00028660 mov r1, r8 | r1 = r8;
0x00028662 ldrb r2, [r7, 1]! | r2 = *((r7 += 1));
0x00028666 mov r0, r6 | r0 = r6;
0x00028668 blx 0xf8cc | r0 = BIO_printf ()
0x0002866c cmp r0, 0 |
0x0002866e sub.w r5, r5, 0x46 | r5 -= 0x46;
0x00028672 sub.w r5, r5, r4 | r5 -= r4;
0x00028676 bgt 0x28658 |
| }
0x00028678 b 0x285de | goto label_0;
| label_4:
0x0002867a ldr r1, [pc, 0x28] |
0x0002867c mov r0, r6 | r0 = r6;
0x0002867e add r1, pc | r1 = 0x50d28;
0x00028680 blx 0xfd5c | r0 = fcn_0000fd5c ();
0x00028684 cmp r0, 0 |
0x00028686 ite le |
| if (r0 > 0) {
0x00028688 movle r0, 0 | r0 = 0;
| }
| if (r0 <= 0) {
0x0002868a movgt r0, 1 | r0 = 1;
| }
0x0002868c b 0x285e0 | goto label_1;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libssl.so.1.1 @ 0x285cc */
| #include <stdint.h>
|
; (fcn) sym.SSL_SESSION_print_keylog () | uint32_t SSL_SESSION_print_keylog (int16_t arg1, int16_t arg2) {
| r0 = arg1;
| r1 = arg2;
| if (r1 == 0) {
0x000285cc cbz r1, 0x28636 | goto label_2;
| }
0x000285ce ldr.w r3, [r1, 0x148] | r3 = *((r1 + 0x148));
0x000285d2 push.w {r4, r5, r6, r7, r8, lr} |
0x000285d6 mov r4, r1 | r4 = r1;
| if (r3 == 0) {
0x000285d8 cbz r3, 0x285de | goto label_0;
| }
0x000285da ldr r3, [r1, 4] | r3 = *((r1 + 4));
0x000285dc cbnz r3, 0x285e4 |
| while (r8 <= r8) {
| label_0:
0x000285de movs r0, 0 | r0 = 0;
| label_1:
0x000285e0 pop.w {r4, r5, r6, r7, r8, pc} |
0x000285e4 ldr r1, [pc, 0xa8] |
0x000285e6 mov r6, r0 | r6 = r0;
0x000285e8 add r1, pc | r1 = 0x50c7c;
0x000285ea blx 0xfd5c | r0 = fcn_0000fd5c ();
0x000285ec subs.w r8, r8, r0, lsl 8 | r8 -= (r0 << 8);
0x000285f0 ble 0x285de |
| }
0x000285f2 ldr r1, [pc, 0xa0] |
0x000285f4 mov r0, r6 | r0 = r6;
0x000285f6 add r1, pc | r1 = 0x50c90;
0x000285f8 blx 0xfd5c | r0 = fcn_0000fd5c ();
0x000285fc cmp r0, 0 |
| if (r0 <= 0) {
0x000285fe ble 0x285de | goto label_0;
| }
0x00028600 ldr.w r3, [r4, 0x148] | r3 = *((r4 + 0x148));
| if (r3 == 0) {
0x00028604 cbz r3, 0x2863a | goto label_3;
| }
0x00028606 ldr.w r8, [pc, 0x90] |
0x0002860a addw r7, r4, 0x14b | __asm ("addw r7, r4, 0x14b");
0x0002860e add r8, pc | r8 = 0x50cac;
0x00028610 b 0x2861a |
| while (r0 > 0) {
0x00028612 ldr.w r3, [r4, 0x148] | r3 = *((r4 + 0x148));
0x00028616 cmp r3, r5 |
| if (r3 < r5) {
0x00028618 bls 0x2863a | goto label_3;
| }
0x0002861a mov r5, r7 | r5 = r7;
0x0002861c mov r1, r8 | r1 = r8;
0x0002861e ldrb r2, [r7, 1]! | r2 = *((r7 += 1));
0x00028620 cmp r7, 1 |
0x00028622 mov r0, r6 | r0 = r6;
0x00028624 blx 0xf8cc | r0 = BIO_printf ()
0x00028628 cmp r0, 0 |
0x0002862a sub.w r5, r5, 0x14a | r5 -= 0x14a;
0x0002862e sub.w r5, r5, r4 | r5 -= r4;
0x00028632 bgt 0x28612 |
| }
0x00028634 b 0x285de | goto label_0;
| label_2:
0x00028636 movs r0, 0 | r0 = 0;
0x00028638 bx lr | return r0;
| label_3:
0x0002863a ldr r1, [pc, 0x60] |
0x0002863c mov r0, r6 | r0 = r6;
0x0002863e add r1, pc | r1 = 0x50ce0;
0x00028640 blx 0xfd5c | r0 = fcn_0000fd5c ();
0x00028644 cmp r0, 0 |
| if (r0 <= 0) {
0x00028646 ble 0x285de | goto label_0;
| }
0x00028648 ldr r3, [r4, 4] | r3 = *((r4 + 4));
| if (r3 == 0) {
0x0002864a cbz r3, 0x2867a | goto label_4;
| }
0x0002864c ldr.w r8, [pc, 0x50] |
0x00028650 add.w r7, r4, 0x47 | r7 = r4 + 0x47;
0x00028654 add r8, pc | r8 = 0x50cf8;
0x00028656 b 0x2865e |
| while (r0 > 0) {
0x00028658 ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x0002865a cmp r3, r5 |
| if (r3 < r5) {
0x0002865c bls 0x2867a | goto label_4;
| }
0x0002865e mov r5, r7 | r5 = r7;
0x00028660 mov r1, r8 | r1 = r8;
0x00028662 ldrb r2, [r7, 1]! | r2 = *((r7 += 1));
0x00028666 mov r0, r6 | r0 = r6;
0x00028668 blx 0xf8cc | r0 = BIO_printf ()
0x0002866c cmp r0, 0 |
0x0002866e sub.w r5, r5, 0x46 | r5 -= 0x46;
0x00028672 sub.w r5, r5, r4 | r5 -= r4;
0x00028676 bgt 0x28658 |
| }
0x00028678 b 0x285de | goto label_0;
| label_4:
0x0002867a ldr r1, [pc, 0x28] |
0x0002867c mov r0, r6 | r0 = r6;
0x0002867e add r1, pc | r1 = 0x50d28;
0x00028680 blx 0xfd5c | r0 = fcn_0000fd5c ();
0x00028684 cmp r0, 0 |
0x00028686 ite le |
| if (r0 > 0) {
0x00028688 movle r0, 0 | r0 = 0;
| }
| if (r0 <= 0) {
0x0002868a movgt r0, 1 | r0 = 1;
| }
0x0002868c b 0x285e0 | goto label_1;
| }
[*] Function printf used 22 times libssl.so.1.1