[*] 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