[*] Binary protection state of libasound.so.2.0.0
Full RELRO Canary found NX enabled DSO No RPATH No RUNPATH No Symbols
[*] Function fprintf 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 @ 0x6362c */
| #include <stdint.h>
|
; (fcn) fcn.0006362c () | void fcn_0006362c (int16_t arg1, uint32_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_1h;
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_ch;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x0006362c svcmi 0xf0e92d | __asm ("svcmi aav.0x000000ff");
0x00063630 sub sp, 0x14 |
0x00063632 cmp r1, 0 |
| if (r1 == 0) {
0x00063634 beq 0x6370a | goto label_1;
| }
0x00063636 mov r8, r1 | r8 = r1;
0x00063638 mov sb, r0 | sb = r0;
0x0006363a movs r1, 1 | r1 = 1;
0x0006363c mov r0, r8 | r0 = r8;
0x0006363e mov r5, r2 | r5 = r2;
0x00063640 mov r7, r3 | r7 = r3;
0x00063642 blx 0x1df48 | r0 = vfprintf_chk ()
0x00063646 mov r6, r0 | r6 = r0;
0x00063648 cmp r0, 0 |
| if (r0 == 0) {
0x0006364a beq 0x636f6 | goto label_2;
| }
0x0006364c ldr r1, [pc, 0xd8] |
0x0006364e add r1, pc | r1 = 0xc6d7a;
0x00063650 blx 0x1ec74 | r0 = fcn_0001ec74 ();
0x00063654 mov fp, r0 |
0x00063656 cmp r0, 0 |
| if (r0 == 0) {
0x00063658 beq 0x636f0 | goto label_3;
| }
0x0006365a mov.w sl, 0 | sl = 0;
0x0006365e str r6, [sp, 8] | var_8h = r6;
| do {
0x00063660 mov r0, sl | r0 = sl;
0x00063662 blx fp | r0 = fp (r0);
0x00063664 mov r6, r0 | r6 = r0;
0x00063666 cmp r0, 0 |
| if (r0 == 0) {
0x00063668 beq 0x636ee | goto label_4;
| }
| if (r5 != 0) {
0x0006366a cbz r5, 0x636be |
0x0006366c blx 0x1de10 | fcn_0001de10 ();
0x00063670 str r0, [sp, 0xc] | var_ch = r0;
0x00063672 mov r0, r5 | r0 = r5;
0x00063674 blx 0x1dbfc | r0 = fcn_0001dbfc ();
0x00063678 adds r2, r0, 1 | r2 = r0 + 1;
0x0006367a mov r0, r2 | r0 = r2;
0x0006367c str r2, [sp, 4] | var_4h = r2;
0x0006367e blx 0x1e4f8 | fcn_0001e4f8 ();
0x00063682 ldr r2, [sp, 4] | r2 = var_4h;
0x00063684 mov r4, r0 | r4 = r0;
0x00063686 cmp r0, 0 |
| if (r0 == 0) {
0x00063688 beq 0x636fc | goto label_5;
| }
0x0006368a mov r1, r5 | r1 = r5;
0x0006368c blx 0x1dd08 | fcn_0001dd08 ();
0x00063690 movs r1, 0x2e | r1 = 0x2e;
0x00063692 mov r0, r4 | r0 = r4;
0x00063694 blx 0x1d4a8 | r0 = fcn_0001d4a8 ();
| if (r0 != 0) {
0x00063698 cbz r0, 0x636a2 |
0x0006369a ldr r3, [sp, 0xc] | r3 = var_ch;
0x0006369c ldr r2, [r3] | r2 = *(r3);
0x0006369e ldrb r2, [r2] | r2 = *(r2);
0x000636a0 strb r2, [r0] | *(r0) = r2;
| }
0x000636a2 ldr r1, [r6, 4] | r1 = *((r6 + 4));
0x000636a4 mov r0, r5 | r0 = r5;
0x000636a6 str r1, [sp, 4] | var_4h = r1;
0x000636a8 blx 0x1ef94 | r0 = fcn_0001ef94 ();
| if (r0 != 0) {
0x000636ac cbz r0, 0x636b8 |
0x000636ae ldr r1, [sp, 4] | r1 = var_4h;
0x000636b0 mov r0, r4 | r0 = r4;
0x000636b2 blx 0x1ef94 | r0 = fcn_0001ef94 ();
| if (r0 != 0) {
0x000636b6 cbnz r0, 0x636e2 | goto label_6;
| }
| }
0x000636b8 mov r0, r4 | r0 = r4;
0x000636ba blx 0x1d854 | fcn_0001d854 ();
| }
| if (r7 != 0) {
0x000636be cbz r7, 0x636c6 |
0x000636c0 ldr r2, [r6] | r2 = *(r6);
0x000636c2 cmp r2, r7 |
| if (r2 != r7) {
0x000636c4 bne 0x636e8 | goto label_7;
| }
| }
0x000636c6 mov r0, r8 | r0 = r8;
0x000636c8 mov r4, r6 | r4 = r6;
0x000636ca ldr r6, [sp, 8] | r6 = var_8h;
0x000636cc blx 0x1e4ec | fcn_0001e4ec ();
0x000636d0 str.w r0, [sb, 0xc] | __asm ("str.w r0, [sb, 0xc]");
| if (r0 == 0) {
0x000636d4 cbz r0, 0x63720 | goto label_8;
| }
0x000636d6 movs r0, 1 | r0 = 1;
0x000636d8 strd r6, r4, [sb, 0x10] | __asm ("strd r6, r4, [sb, 0x10]");
| label_0:
0x000636dc add sp, 0x14 |
0x000636de pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_6:
0x000636e2 mov r0, r4 | r0 = r4;
0x000636e4 blx 0x1d854 | fcn_0001d854 ();
| label_7:
0x000636e8 add.w sl, sl, 1 | sl++;
0x000636ec b 0x63660 |
| } while (1);
| label_4:
0x000636ee ldr r6, [sp, 8] | r6 = var_8h;
| label_3:
0x000636f0 mov r0, r6 | r0 = r6;
0x000636f2 blx 0x1f0f8 | fcn_0001f0f8 ();
| label_2:
0x000636f6 mvn r0, 1 | r0 = ~1;
0x000636fa b 0x636dc | goto label_0;
| label_5:
0x000636fc ldr r6, [sp, 8] | r6 = var_8h;
0x000636fe mov r0, r6 | r0 = r6;
0x00063700 blx 0x1f0f8 | fcn_0001f0f8 ();
| do {
0x00063704 mvn r0, 0xb | r0 = ~0xb;
0x00063708 b 0x636dc | goto label_0;
| label_1:
0x0006370a ldr r3, [pc, 0x20] |
0x0006370c movw r2, 0x446 | r2 = 0x446;
0x00063710 ldr r1, [pc, 0x1c] |
0x00063712 ldr r0, [pc, 0x20] |
0x00063714 add r3, pc | r3 = 0xc6e46;
0x00063716 add r1, pc | r1 = 0xc6e4a;
0x00063718 adds r3, 0x20 | r3 += 0x20;
0x0006371a add r0, pc | r0 = 0xc6e54;
0x0006371c blx 0x1d5b4 | fcn_0001d5b4 ();
| label_8:
0x00063720 mov r0, r6 | r0 = r6;
0x00063722 blx 0x1f0f8 | fcn_0001f0f8 ();
0x00063726 b 0x63704 |
| } while (1);
| }
[*] Function fprintf used 2 times libasound.so.2.0.0