[*] Binary protection state of libcardformat-parse.so.0.0.1
Full RELRO Canary found NX enabled DSO No RPATH No RUNPATH No Symbols
[*] Function printf tear down of libcardformat-parse.so.0.0.1
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/libcardformat-parse.so.0.0.1 @ 0x19a4 */
| #include <stdint.h>
|
; (fcn) sym.cardformat_util_hex_array_to_ascii () | void cardformat_util_hex_array_to_ascii (uint32_t arg1, int16_t arg2, int16_t arg3, uint32_t arg4) {
| int16_t var_18h;
| int16_t var_4h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x000019a4 mvnsmi lr, 0xb4000 | __asm ("mvnsmi lr, 0xb4000");
0x000019a8 sub sp, 0xc |
0x000019aa ldr r6, [pc, 0xc8] |
0x000019ac mov r5, r0 | r5 = r0;
0x000019ae ldr r4, [pc, 0xc8] | r4 = *(0x1a7a);
0x000019b0 add r6, pc | r6 = 0x342a;
0x000019b2 ldr r4, [r6, r4] |
0x000019b4 ldr r4, [r4] | r4 = *(0x342a);
0x000019b6 str r4, [sp, 4] | var_4h = r4;
0x000019b8 mov.w r4, 0 | r4 = 0;
0x000019bc cmp r0, 0 |
| if (r0 == 0) {
0x000019be beq 0x1a6c | goto label_2;
| }
0x000019c0 cmp r3, 1 |
| if (r3 == 1) {
0x000019c2 beq 0x1a42 | goto label_3;
| }
0x000019c4 lsrs r7, r2, 2 | r7 = r2 >> 2;
0x000019c6 lsls r2, r2, 0x1e | r2 <<= 0x1e;
0x000019c8 mov sb, r1 | sb = r1;
| if (r2 != r2) {
0x000019ca bne 0x1a1a | goto label_4;
| }
0x000019cc adds r0, r7, 1 | r0 = r7 + 1;
0x000019ce subs r4, r7, 1 | r4 = r7 - 1;
0x000019d0 blx 0xe3c | r0 = fcn_00000e3c ();
0x000019d4 mov r6, r0 | r6 = r0;
0x000019d6 cbz r7, 0x19fe |
| while (1) {
0x000019d8 ldr.w r8, [pc, 0xa0] |
0x000019dc add r5, sb | r5 += sb;
0x000019de mov r7, sp | r7 = sp;
0x000019e0 add.w sb, r6, -1 | sb = r6 + -1;
0x000019e4 add r8, pc | r8 = 0x3464;
| label_0:
0x000019e6 ldrb r2, [r5, -0x1]! | r2 = *((r5 -= 0x1));
0x000019ea mov r1, r8 | r1 = r8;
0x000019ec mov r0, r7 | r0 = r7;
0x000019ee and r2, r2, 0xf | r2 &= 0xf;
0x000019f2 blx 0xe60 | fcn_00000e60 ();
0x000019f6 ldrb.w r3, [sp] | r3 = *(sp);
0x000019fa strb r3, [r6, r4] | *((r6 + r4)) = r3;
| if (r4 != 0) {
0x000019fc cbnz r4, 0x1a26 | goto label_5;
| }
| label_1:
0x000019fe ldr r2, [pc, 0x80] |
0x00001a00 ldr r3, [pc, 0x74] | r3 = *(0x1a78);
0x00001a02 add r2, pc | r2 = 0x3488;
0x00001a04 ldr r3, [r2, r3] | r3 = *(0x3488);
0x00001a06 ldr r2, [r3] | r2 = *(0x3488);
0x00001a08 ldr r3, [sp, 4] | r3 = var_4h;
0x00001a0a eors r2, r3 | r2 ^= r3;
0x00001a0c mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00001a10 bne 0x1a70 | goto label_6;
| }
0x00001a12 mov r0, r6 | r0 = r6;
0x00001a14 add sp, 0xc |
0x00001a16 pop.w {r4, r5, r6, r7, r8, sb, pc} |
| label_4:
0x00001a1a adds r0, r7, 2 | r0 = r7 + 2;
0x00001a1c mov r4, r7 | r4 = r7;
0x00001a1e blx 0xe3c | r0 = fcn_00000e3c ();
0x00001a22 mov r6, r0 | r6 = r0;
0x00001a24 b 0x19d8 |
| }
| label_5:
0x00001a26 ldrb r2, [r5] | r2 = *(r5);
0x00001a28 mov r1, r8 | r1 = r8;
0x00001a2a mov r0, r7 | r0 = r7;
0x00001a2c lsrs r2, r2, 4 | r2 >>= 4;
0x00001a2e blx 0xe60 | fcn_00000e60 ();
0x00001a32 ldrb.w r3, [sp] | r3 = *(sp);
0x00001a36 strb.w r3, [sb, r4] | *((sb + r4)) = r3;
0x00001a3a subs r4, 2 | r4 -= 2;
0x00001a3c adds r3, r4, 1 | r3 = r4 + 1;
| if (r3 != r4) {
0x00001a3e bne 0x19e6 | goto label_0;
| }
0x00001a40 b 0x19fe | goto label_1;
| label_3:
0x00001a42 blx 0xd14 | r0 = fcn_00000d14 ();
0x00001a46 mov r2, r0 | r2 = r0;
0x00001a48 ldr r0, [pc, 0x38] |
0x00001a4a mov r3, r1 | r3 = r1;
0x00001a4c ldr r1, [pc, 0x28] | r1 = *(0x1a78);
0x00001a4e add r0, pc | r0 = 0x34d6;
0x00001a50 ldr r1, [r0, r1] | r1 = *(0x34d6);
0x00001a52 ldr r0, [r1] | r0 = *(0x34d6);
0x00001a54 ldr r1, [sp, 4] | r1 = var_4h;
0x00001a56 eors r0, r1 | r0 ^= r1;
0x00001a58 mov.w r1, 0 | r1 = 0;
| if (r0 == r1) {
0x00001a5c bne 0x1a70 |
0x00001a5e ldr r0, [pc, 0x28] |
0x00001a60 add r0, pc | r0 = 0x34ee;
0x00001a62 add sp, 0xc |
0x00001a64 pop.w {r4, r5, r6, r7, r8, sb, lr} |
0x00001a68 b.w 0xd80 | void (*0xd80)() ();
| label_2:
0x00001a6c mov r6, r0 | r6 = r0;
0x00001a6e b 0x19fe | goto label_1;
| }
| label_6:
0x00001a70 blx 0xe24 | fcn_00000e24 ();
0x00001a74 asrs r0, r6, 0x15 | r0 = r6 >> 0x15;
0x00001a76 movs r0, r0 |
0x00001a78 lsls r4, r2, 3 | r4 = r2 << 3;
0x00001a7a movs r0, r0 |
0x00001a7c lsls r0, r2, 0x12 | r0 = r2 << 0x12;
0x00001a7e movs r0, r0 |
0x00001a80 asrs r6, r3, 0x14 | r6 = r3 >> 0x14;
0x00001a82 movs r0, r0 |
0x00001a84 asrs r2, r2, 0x13 | r2 >>= 0x13;
0x00001a86 movs r0, r0 |
0x00001a88 lsls r4, r1, 0x10 | r4 = r1 << 0x10;
0x00001a8a movs r0, r0 |
| }
[*] Function printf used 1 times libcardformat-parse.so.0.0.1