[*] Binary protection state of audiocontrol
Full RELRO Canary found NX disabled PIE enabled No RPATH No RUNPATH No Symbols
[*] Function strcat tear down of audiocontrol
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/4325012-58052244.squashfs_v4_le_extract/usr/bin/audiocontrol @ 0x14520 */
| #include <stdint.h>
|
; (fcn) fcn.00014520 () | void fcn_00014520 () {
0x00014520 lui gp, 5 |
0x00014524 addiu gp, gp, -0x440 |
0x00014528 addu gp, gp, t9 | gp += t9;
0x0001452c addiu sp, sp, -0x50 |
0x00014530 lw t9, -0x79c8(gp) | t9 = sym.imp.fopen;
0x00014534 sw s3, 0x34(sp) | *(var_34h) = s3;
0x00014538 lw s3, -0x7934(gp) | s3 = *((gp - 7757));
0x0001453c sw s5, 0x3c(sp) | *(var_3ch_2) = s5;
0x00014540 sw s4, 0x38(sp) | *(var_38h) = s4;
0x00014544 lw v0, (s3) | v0 = *(s3);
0x00014548 move s4, a0 | s4 = a0;
0x0001454c move s5, a1 | s5 = a1;
0x00014550 lw a0, -0x7fdc(gp) | a0 = *(gp);
0x00014554 lw a1, -0x7fdc(gp) | a1 = *(gp);
0x00014558 sw gp, 0x10(sp) | *(var_10h_2) = gp;
0x0001455c sw ra, 0x4c(sp) | *(var_4ch_2) = ra;
0x00014560 sw fp, 0x48(sp) | *(var_48h_2) = fp;
0x00014564 sw s7, 0x44(sp) | *(var_44h_2) = s7;
0x00014568 sw s6, 0x40(sp) | *(var_40h_2) = s6;
0x0001456c sw s2, 0x30(sp) | *(var_30h_2) = s2;
0x00014570 sw s1, 0x2c(sp) | *(var_2ch_2) = s1;
0x00014574 sw s0, 0x28(sp) | *(var_28h_2) = s0;
| /* str._sys_devices_soc0_machine */
0x00014578 addiu a0, a0, 0x3e8 | a0 += 0x3e8;
0x0001457c addiu a1, a1, 0x6dbc | a1 += 0x6dbc;
0x00014580 sw v0, 0x24(sp) | *(var_24h_2) = v0;
0x00014584 jalr t9 | t9 ();
0x00014588 nop |
0x0001458c lw gp, 0x10(sp) | gp = *(var_10h_2);
0x00014590 sw zero, 0x20(sp) | *(var_20h_2) = 0;
| if (v0 == 0) {
0x00014594 beqz v0, 0x14710 | goto label_3;
| }
0x00014598 lw a1, -0x7fdc(gp) | a1 = *(gp);
0x0001459c lw t9, -0x7a34(gp) | t9 = sym.imp.fscanf;
0x000145a0 addiu a2, sp, 0x20 | a2 = sp + 0x20;
| /* str._m__n_ */
0x000145a4 addiu a1, a1, 0x424 | a1 += 0x424;
0x000145a8 move a0, v0 | a0 = v0;
0x000145ac move s2, v0 | s2 = v0;
0x000145b0 jalr t9 | t9 ();
0x000145b4 addiu v1, zero, 1 | v1 = 1;
0x000145b8 lw gp, 0x10(sp) | gp = *(var_10h_2);
| if (v0 != v1) {
0x000145bc bne v0, v1, 0x146bc | goto label_4;
| }
0x000145c0 lw a1, -0x7fdc(gp) | a1 = *(gp);
0x000145c4 lw s1, 0x20(sp) | s1 = *(var_20h_2);
0x000145c8 lw s0, -0x7fd8(gp) | s0 = *((gp - 8182));
0x000145cc lw t9, -0x7a40(gp) | t9 = sym.imp.strncmp;
0x000145d0 addiu a2, zero, 8 | a2 = 8;
| /* str.ARTPEC_5 */
0x000145d4 addiu a1, a1, 0x3dc | a1 += aav.0x000003dc;
0x000145d8 move a0, s1 | a0 = s1;
0x000145dc jalr t9 | t9 ();
| /* esilref: 'ARTPEC-5' */
0x000145e0 addiu s0, s0, -0x5440 | s0 += -0x5440;
0x000145e4 move s7, s0 | s7 = s0;
0x000145e8 move s6, zero | s6 = 0;
0x000145ec addiu fp, zero, 6 | fp = 6;
0x000145f0 lw gp, 0x10(sp) | gp = *(var_10h_2);
| if (v0 == 0) {
0x000145f4 beqz v0, 0x14638 | goto label_5;
| }
| do {
0x000145f8 addiu s6, s6, 1 | s6++;
0x000145fc addiu s7, s7, 0xc | s7 += 0xc;
| if (s6 == fp) {
0x00014600 beq s6, fp, 0x146e4 | goto label_6;
| }
0x00014604 lw a1, (s7) | a1 = *(s7);
0x00014608 lw t9, -0x78d8(gp) | t9 = sym.imp.strlen;
0x0001460c move a0, a1 | a0 = a1;
0x00014610 sw a1, 0x1c(sp) | *(var_1ch_2) = a1;
0x00014614 jalr t9 | t9 ();
0x00014618 lw gp, 0x10(sp) | gp = *(var_10h_2);
0x0001461c lw a1, 0x1c(sp) | a1 = *(var_1ch_2);
0x00014620 move a2, v0 | a2 = v0;
0x00014624 lw t9, -0x7a40(gp) | t9 = sym.imp.strncmp;
0x00014628 move a0, s1 | a0 = s1;
0x0001462c jalr t9 | t9 ();
0x00014630 lw gp, 0x10(sp) | gp = *(var_10h_2);
0x00014634 bnez v0, 0x145f8 |
| } while (v0 != 0);
| label_5:
0x00014638 sll v0, s6, 1 | v0 = s6 << 1;
0x0001463c addu v0, v0, s6 | v0 += s6;
0x00014640 sll v0, v0, 2 | v0 <<= 2;
0x00014644 addu v0, s0, v0 | v0 = s0 + v0;
0x00014648 addiu s0, zero, 1 | s0 = 1;
0x0001464c lw v1, 8(v0) | v1 = *((v0 + 2));
0x00014650 lw v0, 4(v0) | v0 = *((v0 + 1));
0x00014654 sw v1, (s5) | *(s5) = v1;
0x00014658 sw v0, (s4) | *(s4) = v0;
| do {
| label_0:
0x0001465c lw t9, -0x785c(gp) | t9 = sym.imp.free;
0x00014660 move a0, s1 | a0 = s1;
0x00014664 jalr t9 | t9 ();
0x00014668 lw gp, 0x10(sp) | gp = *(var_10h_2);
0x0001466c lw t9, -0x78c0(gp) | t9 = sym.imp.fclose;
0x00014670 move a0, s2 | a0 = s2;
0x00014674 jalr t9 | t9 ();
0x00014678 lw gp, 0x10(sp) | gp = *(var_10h_2);
| label_1:
0x0001467c lw a0, 0x24(sp) | a0 = *(var_24h_2);
0x00014680 lw v1, (s3) | v1 = *(s3);
0x00014684 move v0, s0 | v0 = s0;
| if (a0 != v1) {
0x00014688 bne a0, v1, 0x14744 | goto label_7;
| }
0x0001468c lw ra, 0x4c(sp) | ra = *(var_4ch_2);
0x00014690 lw fp, 0x48(sp) | fp = *(var_48h_2);
0x00014694 lw s7, 0x44(sp) | s7 = *(var_44h_2);
0x00014698 lw s6, 0x40(sp) | s6 = *(var_40h_2);
0x0001469c lw s5, 0x3c(sp) | s5 = *(var_3ch_2);
0x000146a0 lw s4, 0x38(sp) | s4 = *(var_38h);
0x000146a4 lw s3, 0x34(sp) | s3 = *(var_34h);
0x000146a8 lw s2, 0x30(sp) | s2 = *(var_30h_2);
0x000146ac lw s1, 0x2c(sp) | s1 = *(var_2ch_2);
0x000146b0 lw s0, 0x28(sp) | s0 = *(var_28h_2);
0x000146b4 addiu sp, sp, 0x50 |
0x000146b8 jr ra | return v0;
| label_4:
0x000146bc lw a2, -0x7fdc(gp) | a2 = *(gp);
0x000146c0 lw t9, -0x7954(gp) | t9 = sym.imp.__syslog_chk;
| /* str.Could_not_read_machine_type. */
0x000146c4 addiu a2, a2, 0x42c | a2 += 0x42c;
0x000146c8 addiu a1, zero, 1 | a1 = 1;
0x000146cc addiu a0, zero, 3 | a0 = 3;
0x000146d0 jalr t9 | t9 ();
0x000146d4 move s0, zero | s0 = 0;
0x000146d8 lw gp, 0x10(sp) | gp = *(var_10h_2);
0x000146dc lw s1, 0x20(sp) | s1 = *(var_20h_2);
0x000146e0 b 0x1465c |
| } while (1);
| label_6:
0x000146e4 lw a2, -0x7fdc(gp) | a2 = *(gp);
0x000146e8 lw t9, -0x7954(gp) | t9 = sym.imp.__syslog_chk;
0x000146ec move a3, s1 | a3 = s1;
| /* str.Unsupported_machine__s. */
0x000146f0 addiu a2, a2, 0x44c | a2 += 0x44c;
0x000146f4 addiu a1, zero, 1 | a1 = 1;
0x000146f8 addiu a0, zero, 3 | a0 = 3;
0x000146fc jalr t9 | t9 ();
0x00014700 move s0, zero | s0 = 0;
0x00014704 lw gp, 0x10(sp) | gp = *(var_10h_2);
0x00014708 lw s1, 0x20(sp) | s1 = *(var_20h_2);
0x0001470c b 0x1465c | goto label_0;
| label_3:
0x00014710 lw a2, -0x7fdc(gp) | a2 = *(gp);
0x00014714 lw t9, -0x7954(gp) | t9 = sym.imp.__syslog_chk;
| /* str.Could_not_open_machine_file. */
0x00014718 addiu a2, a2, 0x404 | a2 += 0x404;
0x0001471c addiu a1, zero, 1 | a1 = 1;
0x00014720 addiu a0, zero, 3 | a0 = 3;
0x00014724 jalr t9 | t9 ();
0x00014728 lw gp, 0x10(sp) | gp = *(var_10h_2);
0x0001472c lw a0, 0x20(sp) | a0 = *(var_20h_2);
0x00014730 lw t9, -0x785c(gp) | t9 = sym.imp.free;
0x00014734 move s0, zero | s0 = 0;
0x00014738 jalr t9 | t9 ();
0x0001473c lw gp, 0x10(sp) | gp = *(var_10h_2);
0x00014740 b 0x1467c | goto label_1;
| label_7:
0x00014744 lw t9, -0x79a8(gp) | t9 = sym.imp.__stack_chk_fail;
0x00014748 jalr t9 | t9 ();
0x0001474c nop |
0x00014750 lui gp, 5 |
0x00014754 addiu gp, gp, -0x670 |
0x00014758 addu gp, gp, t9 | gp += t9;
0x0001475c lw v0, -0x7fd8(gp) | v0 = *((gp - 8182));
0x00014760 addiu sp, sp, -0x30 |
0x00014764 lw a0, -0x352c(v0) | a0 = *((v0 - 3403));
0x00014768 lw v0, -0x7fd8(gp) | v0 = *((gp - 8182));
0x0001476c sw gp, 0x10(sp) | *(var_10h_3) = gp;
0x00014770 sw s4, 0x28(sp) | *(var_28h_3) = s4;
0x00014774 sw ra, 0x2c(sp) | *(var_2ch_3) = ra;
0x00014778 sw s3, 0x24(sp) | *(var_24h_3) = s3;
0x0001477c sw s2, 0x20(sp) | *(var_20h_3) = s2;
0x00014780 sw s1, 0x1c(sp) | *(var_1ch) = s1;
0x00014784 sw s0, 0x18(sp) | *(var_18h_4) = s0;
0x00014788 lw s4, -0x3530(v0) | s4 = *((v0 - 3404));
| if (a0 == 0) {
0x0001478c beqz a0, 0x1488c | goto label_8;
| }
| label_2:
0x00014790 lw t9, -0x7a68(gp) | t9 = sym.imp.strdup;
0x00014794 jalr t9 | t9 ();
0x00014798 nop |
0x0001479c move s2, v0 | s2 = v0;
0x000147a0 lw gp, 0x10(sp) | gp = *(var_10h_3);
| if (s4 == 0) {
0x000147a4 beqz s4, 0x1483c | goto label_9;
| }
0x000147a8 lw s3, (s4) | s3 = *(s4);
0x000147ac move s1, s4 | s1 = s4;
| if (s3 == 0) {
0x000147b0 beqz s3, 0x1483c | goto label_9;
| }
0x000147b4 lw t9, -0x78d8(gp) | t9 = sym.imp.strlen;
0x000147b8 b 0x147e4 |
| while (v0 != 0) {
0x000147bc lw v0, (s4) | v0 = *(s4);
0x000147c0 move s2, s0 | s2 = s0;
0x000147c4 lw a1, 4(v0) | a1 = *((v0 + 1));
0x000147c8 jalr t9 | t9 ();
0x000147cc lw gp, 0x10(sp) | gp = *(var_10h_3);
| if (s1 == 0) {
0x000147d0 beqz s1, 0x14840 | goto label_10;
| }
0x000147d4 lw s3, (s1) | s3 = *(s1);
0x000147d8 lw a0, -0x7fdc(gp) | a0 = *(gp);
| if (s3 == 0) {
0x000147dc beqz s3, 0x14844 | goto label_11;
| }
0x000147e0 lw t9, -0x78d8(gp) | t9 = sym.imp.strlen;
0x000147e4 move a0, s2 | a0 = s2;
0x000147e8 jalr t9 | t9 ();
0x000147ec lw gp, 0x10(sp) | gp = *(var_10h_3);
0x000147f0 lw a0, 4(s3) | a0 = *((s3 + 1));
0x000147f4 move s0, v0 | s0 = v0;
0x000147f8 lw t9, -0x78d8(gp) | t9 = sym.imp.strlen;
0x000147fc addiu s1, s1, 4 | s1 += 4;
0x00014800 jalr t9 | t9 ();
0x00014804 lw gp, 0x10(sp) | gp = *(var_10h_3);
0x00014808 addu v0, s0, v0 | v0 = s0 + v0;
0x0001480c move a0, s2 | a0 = s2;
0x00014810 lw t9, -0x7778(gp) | t9 = sym.imp.realloc;
0x00014814 addiu a1, v0, 2 | a1 = v0 + 2;
0x00014818 jalr t9 | t9 ();
0x0001481c lw gp, 0x10(sp) | gp = *(var_10h_3);
0x00014820 move s0, v0 | s0 = v0;
0x00014824 move a0, v0 | a0 = v0;
0x00014828 lw t9, -0x79f4(gp) | t9 = sym.imp.strcat
0x0001482c bnez v0, 0x147bc |
| }
0x00014830 move s0, s2 | s0 = s2;
0x00014834 move s1, zero | s1 = 0;
0x00014838 b 0x1485c | goto label_12;
| label_9:
0x0001483c move s0, s2 | s0 = s2;
| label_10:
0x00014840 lw a0, -0x7fdc(gp) | a0 = *(gp);
| label_11:
0x00014844 lw t9, -0x7e54(gp) | t9 = sym.file_utils_set_file_content;
0x00014848 move a1, s0 | a1 = s0;
| /* str._run_audiocontrol_asound.conf */
0x0001484c addiu a0, a0, 0x468 | a0 += 0x468;
0x00014850 bal 0x2e1bc | sym_file_utils_set_file_content ();
0x00014854 lw gp, 0x10(sp) | gp = *(var_10h_3);
0x00014858 move s1, v0 | s1 = v0;
| label_12:
0x0001485c lw t9, -0x785c(gp) | t9 = sym.imp.free;
0x00014860 move a0, s0 | a0 = s0;
0x00014864 jalr t9 | t9 ();
0x00014868 lw ra, 0x2c(sp) | ra = *(var_2ch_3);
0x0001486c move v0, s1 | v0 = s1;
0x00014870 lw s4, 0x28(sp) | s4 = *(var_28h_3);
0x00014874 lw s3, 0x24(sp) | s3 = *(var_24h_3);
0x00014878 lw s2, 0x20(sp) | s2 = *(var_20h_3);
0x0001487c lw s1, 0x1c(sp) | s1 = *(var_1ch);
0x00014880 lw s0, 0x18(sp) | s0 = *(var_18h_4);
0x00014884 addiu sp, sp, 0x30 |
0x00014888 jr ra | return v0;
| label_8:
0x0001488c lw a0, -0x7ea4(gp) | a0 = *((gp - 8105));
0x00014890 addiu a0, a0, -0x79f8 | a0 += -0x79f8;
0x00014894 b 0x14790 | goto label_2;
| }
[*] Function strcat used 2 times audiocontrol