[*] Binary protection state of libasound.so.2.0.0

  
  	Full RELRO     Canary found      NX enabled   DSO          No RPATH     No RUNPATH   No Symbols


[*] Function strcpy tear down of libasound.so.2.0.0

    ; assembly                                               | /* r2dec pseudo code output */
                                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/libasound.so.2.0.0 @ 0x7779c */
                                                             | #include <stdint.h>
                                                             |  
    ; (fcn) sym.snd_rawmidi_virtual_open ()                  | void snd_rawmidi_virtual_open (int16_t arg_30h, int16_t arg_34h, int16_t arg_38h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
                                                             |     char * src;
                                                             |     int16_t var_ch;
                                                             |     r0 = arg1;
                                                             |     r1 = arg2;
                                                             |     r2 = arg3;
                                                             |     r3 = arg4;
                                                             |     if (? >= ?) {
    0x0007779c ldrbmi lr, [r0, sp, lsr 18]!                  |         
                                                             |     }
    0x000777a0 mov sl, r2                                    |     sl = r2;
    0x000777a2 ldr r2, [pc, 0x1ac]                           |     
    0x000777a4 mov sb, r3                                    |     sb = r3;
    0x000777a6 sub sp, 0x10                                  |     
    0x000777a8 mov r8, r1                                    |     r8 = r1;
    0x000777aa ldr r3, [pc, 0x1a8]                           |     r3 = *(0x77956);
    0x000777ac mov r7, r0                                    |     r7 = r0;
    0x000777ae add r2, pc                                    |     r2 = 0xef104;
    0x000777b0 ldr r3, [r2, r3]                              |     
    0x000777b2 ldr r3, [r3]                                  |     r3 = *(0xef104);
    0x000777b4 str r3, [sp, 0xc]                             |     var_ch = r3;
    0x000777b6 mov.w r3, 0                                   |     r3 = 0;
                                                             |     if (r0 != 0) {
    0x000777ba cbz r0, 0x777c0                               |         
    0x000777bc movs r3, 0                                    |         r3 = 0;
    0x000777be str r3, [r0]                                  |         *(r0) = r3;
                                                             |     }
    0x000777c0 cmp.w r8, 0                                   |     
                                                             |     if (r8 != 0) {
    0x000777c4 beq 0x777cc                                   |         
    0x000777c6 movs r3, 0                                    |         r3 = 0;
    0x000777c8 str.w r3, [r8]                                |         __asm ("str.w r3, [r8]");
                                                             |     }
    0x000777cc movs r1, 0x50                                 |     r1 = 0x50;
    0x000777ce movs r0, 1                                    |     r0 = 1;
    0x000777d0 blx 0x1d2a4                                   |     r0 = fcn_0001d2a4 ();
    0x000777d4 mov r4, r0                                    |     r4 = r0;
    0x000777d6 cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x000777d8 beq.w 0x77914                                 |         goto label_2;
                                                             |     }
    0x000777dc ldr r3, [sp, 0x30]                            |     r3 = *(arg_30h);
    0x000777de add.w r1, r0, 0xc                             |     r1 = r0 + 0xc;
    0x000777e2 str.w sb, [r0, 4]                             |     __asm ("str.w sb, [r0, 4]");
    0x000777e6 str r3, [r0, 8]                               |     *((r0 + 8)) = r3;
    0x000777e8 mov.w r0, 0x100                               |     r0 = 0x100;
    0x000777ec blx 0x1db08                                   |     r0 = fcn_0001db08 ();
    0x000777f0 subs r6, r0, 0                                |     r6 = r0 - 0;
                                                             |     if (r6 >= r0) {
    0x000777f2 blt 0x778b2                                   |         
    0x000777f4 ldr r0, [r4, 0xc]                             |         r0 = *((r4 + 0xc));
    0x000777f6 blx 0x1cee0                                   |         fcn_0001cee0 ();
    0x000777fa ldr r3, [sp, 0x34]                            |         r3 = *(arg_34h);
    0x000777fc ldr r0, [r4, 0xc]                             |         r0 = *((r4 + 0xc));
    0x000777fe clz r1, r3                                    |         r1 &= r3;
    0x00077802 lsrs r1, r1, 5                                |         r1 >>= 5;
    0x00077804 blx 0x1e3f4                                   |         fcn_0001e3f4 ();
                                                             |         if (r7 != 0) {
    0x00077808 cbz r7, 0x77858                               |             
    0x0007780a movs r1, 0x34                                 |             r1 = 0x34;
    0x0007780c movs r0, 1                                    |             r0 = 1;
    0x0007780e blx 0x1d2a4                                   |             r0 = fcn_0001d2a4 ();
    0x00077812 mov r5, r0                                    |             r5 = r0;
    0x00077814 cmp r0, 0                                     |             
                                                             |             if (r0 == 0) {
    0x00077816 beq.w 0x7792c                                 |                 goto label_3;
                                                             |             }
    0x0007781a cmp.w sl, 0                                   |             
                                                             |             if (sl != 0) {
    0x0007781e beq 0x77828                                   |                 
    0x00077820 mov r0, sl                                    |                 r0 = sl;
    0x00077822 blx 0x1e4ec                                   |                 fcn_0001e4ec ();
    0x00077826 str r0, [r5, 4]                               |                 *((r5 + 4)) = r0;
                                                             |             }
    0x00077828 ldr r3, [sp, 0x38]                            |             r3 = *(arg_38h);
    0x0007782a add r1, sp, 4                                 |             r1 += src;
    0x0007782c vldr d16, [pc, 0x110]                         |             __asm ("vldr d16, aav.0x000000ff");
    0x00077830 mov r0, sb                                    |             r0 = sb;
    0x00077832 str r3, [r5, 0x10]                            |             *((r5 + 0x10)) = r3;
    0x00077834 movs r3, 1                                    |             r3 = 1;
    0x00077836 mov r2, r3                                    |             r2 = r3;
    0x00077838 vstr d16, [r5, 8]                             |             __asm ("vstr d16, [r5, 8]");
    0x0007783c blx 0x1de34                                   |             r0 = strcpy (r0, r1)
    0x00077840 subs r6, r0, 0                                |             r6 = r0 - 0;
                                                             |             if (r6 < r0) {
    0x00077842 blt 0x77906                                   |                 goto label_4;
                                                             |             }
    0x00077844 ldr r3, [r4]                                  |             r3 = *(r4);
    0x00077846 str r4, [r5, 0x20]                            |             *((r5 + 0x20)) = r4;
    0x00077848 str r5, [r7]                                  |             *(r7) = r5;
    0x0007784a adds r3, 1                                    |             r3++;
    0x0007784c str r3, [r4]                                  |             *(r4) = r3;
    0x0007784e ldr r3, [sp, 4]                               |             r3 = src;
    0x00077850 str r3, [r5, 0x18]                            |             *((r5 + 0x18)) = r3;
    0x00077852 ldr r3, [pc, 0x104]                           |             
    0x00077854 add r3, pc                                    |             r3 = 0xef1b2;
    0x00077856 str r3, [r5, 0x1c]                            |             *((r5 + 0x1c)) = r3;
                                                             |         }
    0x00077858 cmp.w r8, 0                                   |         
                                                             |         if (r8 != 0) {
    0x0007785c beq 0x778ae                                   |             
    0x0007785e movs r1, 0x34                                 |             r1 = 0x34;
    0x00077860 movs r0, 1                                    |             r0 = 1;
    0x00077862 blx 0x1d2a4                                   |             r0 = fcn_0001d2a4 ();
    0x00077866 mov r5, r0                                    |             r5 = r0;
    0x00077868 cmp r0, 0                                     |             
                                                             |             if (r0 == 0) {
    0x0007786a beq 0x7792c                                   |                 goto label_3;
                                                             |             }
    0x0007786c cmp.w sl, 0                                   |             
                                                             |             if (sl != 0) {
    0x00077870 beq 0x7787a                                   |                 
    0x00077872 mov r0, sl                                    |                 r0 = sl;
    0x00077874 blx 0x1e4ec                                   |                 fcn_0001e4ec ();
    0x00077878 str r0, [r5, 4]                               |                 *((r5 + 4)) = r0;
                                                             |             }
    0x0007787a ldr r3, [sp, 0x38]                            |             r3 = *(arg_38h);
    0x0007787c movs r2, 1                                    |             r2 = 1;
    0x0007787e vldr d16, [pc, 0xc8]                          |             __asm ("vldr d16, aav.0x000000ff");
    0x00077882 mov r0, sb                                    |             r0 = sb;
    0x00077884 str r3, [r5, 0x10]                            |             *((r5 + 0x10)) = r3;
    0x00077886 movs r3, 4                                    |             r3 = 4;
    0x00077888 add.w r1, sp, r3                              |             r1 = sp + r3;
    0x0007788c vstr d16, [r5, 8]                             |             __asm ("vstr d16, [r5, 8]");
    0x00077890 blx 0x1de34                                   |             r0 = strcpy (r0, r1)
    0x00077894 subs r6, r0, 0                                |             r6 = r0 - 0;
                                                             |             if (r6 < r0) {
    0x00077896 blt 0x77906                                   |                 goto label_4;
                                                             |             }
    0x00077898 ldr r3, [r4]                                  |             r3 = *(r4);
    0x0007789a ldr r1, [sp, 4]                               |             r1 = src;
    0x0007789c str r4, [r5, 0x20]                            |             *((r5 + 0x20)) = r4;
    0x0007789e adds r2, r3, 1                                |             r2 = r3 + 1;
    0x000778a0 ldr r3, [pc, 0xb8]                            |             
    0x000778a2 str.w r5, [r8]                                |             __asm ("str.w r5, [r8]");
    0x000778a6 str r1, [r5, 0x18]                            |             *((r5 + 0x18)) = r1;
    0x000778a8 add r3, pc                                    |             r3 = 0xef208;
    0x000778aa str r2, [r4]                                  |             *(r4) = r2;
    0x000778ac str r3, [r5, 0x1c]                            |             *((r5 + 0x1c)) = r3;
                                                             |         }
    0x000778ae movs r6, 0                                    |         r6 = 0;
    0x000778b0 b 0x778ea                                     |         goto label_5;
                                                             |     }
    0x000778b2 cmp.w sb, 0                                   |     
                                                             |     if (sb != 0) {
    0x000778b6 beq 0x778be                                   |         
    0x000778b8 mov r0, sb                                    |         r0 = sb;
    0x000778ba blx 0x1ef34                                   |         fcn_0001ef34 ();
                                                             |     }
    0x000778be movs r5, 0                                    |     r5 = 0;
                                                             |     do {
                                                             | label_0:
    0x000778c0 ldr r0, [r4, 0xc]                             |         r0 = *((r4 + 0xc));
                                                             |         if (r0 != 0) {
    0x000778c2 cbz r0, 0x778c8                               |             
    0x000778c4 blx 0x1da74                                   |             fcn_0001da74 ();
                                                             |         }
    0x000778c8 mov r0, r4                                    |         r0 = r4;
    0x000778ca blx 0x1d854                                   |         fcn_0001d854 ();
                                                             |         if (r7 != 0) {
                                                             | label_1:
    0x000778ce cbz r7, 0x778d6                               |             
    0x000778d0 ldr r0, [r7]                                  |             r0 = *(r7);
    0x000778d2 blx 0x1d854                                   |             fcn_0001d854 ();
                                                             |         }
    0x000778d6 cmp.w r8, 0                                   |         
                                                             |         if (r8 != 0) {
    0x000778da beq 0x778e4                                   |             
    0x000778dc ldr.w r0, [r8]                                |             r0 = *(r8);
    0x000778e0 blx 0x1d854                                   |             fcn_0001d854 ();
                                                             |         }
    0x000778e4 mov r0, r5                                    |         r0 = r5;
    0x000778e6 blx 0x1d854                                   |         fcn_0001d854 ();
                                                             | label_5:
    0x000778ea ldr r2, [pc, 0x74]                            |         
    0x000778ec ldr r3, [pc, 0x64]                            |         r3 = *(0x77954);
    0x000778ee add r2, pc                                    |         r2 = 0xef254;
    0x000778f0 ldr r3, [r2, r3]                              |         r3 = *(0xef254);
    0x000778f2 ldr r2, [r3]                                  |         r2 = *(0xef254);
    0x000778f4 ldr r3, [sp, 0xc]                             |         r3 = var_ch;
    0x000778f6 eors r2, r3                                   |         r2 ^= r3;
    0x000778f8 mov.w r3, 0                                   |         r3 = 0;
                                                             |         if (r2 != r3) {
    0x000778fc bne 0x77928                                   |             goto label_6;
                                                             |         }
    0x000778fe mov r0, r6                                    |         r0 = r6;
    0x00077900 add sp, 0x10                                  |         
    0x00077902 pop.w {r4, r5, r6, r7, r8, sb, sl, pc}        |         
                                                             | label_4:
    0x00077906 cmp.w sb, 0                                   |         
    0x0007790a beq 0x778c0                                   |         
                                                             |     } while (sb == 0);
    0x0007790c mov r0, sb                                    |     r0 = sb;
    0x0007790e blx 0x1ef34                                   |     fcn_0001ef34 ();
    0x00077912 b 0x778c0                                     |     goto label_0;
                                                             | label_2:
    0x00077914 cmp.w sb, 0                                   |     
                                                             |     if (sb != 0) {
    0x00077918 beq 0x77920                                   |         
    0x0007791a mov r0, sb                                    |         r0 = sb;
    0x0007791c blx 0x1ef34                                   |         fcn_0001ef34 ();
                                                             |     }
    0x00077920 movs r5, 0                                    |     r5 = 0;
    0x00077922 mvn r6, 0xb                                   |     r6 = ~0xb;
    0x00077926 b 0x778ce                                     |     goto label_1;
                                                             | label_6:
    0x00077928 blx 0x1e54c                                   |     fcn_0001e54c ();
                                                             | label_3:
    0x0007792c cmp.w sb, 0                                   |     
                                                             |     if (sb != 0) {
    0x00077930 beq 0x77938                                   |         
    0x00077932 mov r0, sb                                    |         r0 = sb;
    0x00077934 blx 0x1ef34                                   |         fcn_0001ef34 ();
                                                             |     }
    0x00077938 movs r5, 0                                    |     r5 = 0;
    0x0007793a mvn r6, 0xb                                   |     r6 = ~0xb;
    0x0007793e b 0x778c0                                     |     goto label_0;
                                                             | }

[*] Function strcpy used 3 times libasound.so.2.0.0