[*] Binary protection state of axfer

  
  	Full RELRO     Canary found      NX disabled  PIE enabled  No RPATH     No RUNPATH   No Symbols


[*] Function sprintf tear down of axfer

    ; assembly                           | /* r2dec pseudo code output */
                                         | /* /logs/firmware/unblob_extracted/firmware_extract/4325012-58052244.squashfs_v4_le_extract/usr/bin/axfer @ 0x4270 */
                                         | #include <stdint.h>
                                         |  
    ; (fcn) sym.subcmd_list ()           | void subcmd_list () {
    0x00004270 lui gp, 2                 |     
    0x00004274 addiu gp, gp, 0x7da0      |     
    0x00004278 addu gp, gp, t9           |     gp += t9;
    0x0000427c addiu sp, sp, -0xa8       |     
    0x00004280 slti v0, a0, 2            |     v0 = (a0 < 2) ? 1 : 0;
    0x00004284 sw s2, 0x88(sp)           |     *(var_88h) = s2;
    0x00004288 lw s2, -0x7d6c(gp)        |     s2 = *((gp - 8027));
    0x0000428c sw gp, 0x20(sp)           |     *(var_20h) = gp;
    0x00004290 sw s5, 0x94(sp)           |     *(var_94h) = s5;
    0x00004294 lw v1, (s2)               |     v1 = *(s2);
    0x00004298 sw s1, 0x84(sp)           |     *(var_84h) = s1;
    0x0000429c sw s0, 0x80(sp)           |     *(var_80h) = s0;
    0x000042a0 sw ra, 0xa4(sp)           |     *(var_a4h) = ra;
    0x000042a4 sw fp, 0xa0(sp)           |     *(var_a0h) = fp;
    0x000042a8 sw s7, 0x9c(sp)           |     *(var_9ch) = s7;
    0x000042ac sw s6, 0x98(sp)           |     *(var_98h) = s6;
    0x000042b0 sw s4, 0x90(sp)           |     *(var_90h) = s4;
    0x000042b4 sw s3, 0x8c(sp)           |     *(var_8ch) = s3;
    0x000042b8 move s0, a0               |     s0 = a0;
    0x000042bc move s1, a1               |     s1 = a1;
    0x000042c0 move s5, a2               |     s5 = a2;
    0x000042c4 sw v1, 0x7c(sp)           |     *(var_7ch) = v1;
    0x000042c8 lw t9, -0x7e80(gp)        |     t9 = sym.imp.strcmp;
                                         |     if (v0 == 0) {
    0x000042cc bnez v0, 0x4308           |         
    0x000042d0 lw s3, 4(a1)              |         s3 = *((a1 + 1));
    0x000042d4 lw a1, -0x7fdc(gp)        |         a1 = sym.imp.snd_pcm_hw_params_set_access_mask;
                                         |         /* str.device */
    0x000042d8 addiu a1, a1, 0x7f0       |         a1 += 0x7f0;
    0x000042dc move a0, s3               |         a0 = s3;
    0x000042e0 jalr t9                   |         t9 ();
    0x000042e4 lw gp, 0x20(sp)           |         gp = *(var_20h);
                                         |         if (v0 == 0) {
    0x000042e8 beqz v0, 0x43c0           |             goto label_9;
                                         |         }
    0x000042ec lw s4, -0x7fdc(gp)        |         s4 = sym.imp.snd_pcm_hw_params_set_access_mask;
    0x000042f0 lw t9, -0x7e80(gp)        |         t9 = sym.imp.strcmp;
                                         |         /* esilref: 'pcm' */
    0x000042f4 addiu a1, s4, 0x98c       |         a1 = s4 + 0x98c;
    0x000042f8 move a0, s3               |         a0 = s3;
    0x000042fc jalr t9                   |         t9 ();
    0x00004300 lw gp, 0x20(sp)           |         gp = *(var_20h);
                                         |         if (v0 == 0) {
    0x00004304 beqz v0, 0x470c           |             goto label_10;
                                         |         }
                                         |     }
    0x00004308 lw v0, -0x7cfc(gp)        |     v0 = *((gp - 7999));
    0x0000430c lw s4, -0x7fd8(gp)        |     s4 = *((gp - 8182));
    0x00004310 lw s3, -0x7fdc(gp)        |     s3 = sym.imp.snd_pcm_hw_params_set_access_mask;
    0x00004314 sw zero, (v0)             |     *(v0) = 0;
    0x00004318 lw v0, -0x7e38(gp)        |     v0 = *((gp - 8078));
                                         |     /* esilref: 'list-devices' */
    0x0000431c addiu s4, s4, 0x3a90      |     s4 += 0x3a90;
                                         |     /* esilref: 'hlL' */
    0x00004320 addiu s3, s3, 0x7f8       |     s3 += 0x7f8;
    0x00004324 sw zero, (v0)             |     *(v0) = 0;
    0x00004328 addiu s7, zero, 0x6c      |     s7 = 0x6c;
    0x0000432c addiu s6, zero, 0x4c      |     s6 = 0x4c;
    0x00004330 b 0x4344                  |     
                                         |     while (v0 >= 0) {
    0x00004334 lw t9, -0x7cf4(gp)        |         t9 = sym.imp.snd_ctl_card_info_malloc;
                                         |         if (v0 == s7) {
    0x00004338 beq v0, s7, 0x43c4        |             goto label_11;
                                         |         }
                                         |         if (v0 == s6) {
    0x0000433c beql v0, s6, 0x470c       |             goto label_10;
                                         |         }
    0x00004340 lw s4, -0x7fdc(gp)        |         s4 = sym.imp.snd_pcm_hw_params_set_access_mask;
    0x00004344 lw t9, -0x7d14(gp)        |         t9 = sym.imp.getopt_long;
    0x00004348 sw zero, 0x10(sp)         |         *(var_10h) = 0;
    0x0000434c move a3, s4               |         a3 = s4;
    0x00004350 move a2, s3               |         a2 = s3;
    0x00004354 move a1, s1               |         a1 = s1;
    0x00004358 move a0, s0               |         a0 = s0;
    0x0000435c jalr t9                   |         t9 ();
    0x00004360 lw gp, 0x20(sp)           |         gp = *(var_20h);
    0x00004364 bgez v0, 0x4334           |         
                                         |     }
    0x00004368 lw a0, -0x7fdc(gp)        |     a0 = sym.imp.snd_pcm_hw_params_set_access_mask;
    0x0000436c lw t9, -0x7e1c(gp)        |     t9 = sym.imp.puts;
                                         |     /* str.Usage:_n__axfer_list_DIRECTION_TARGET_n_n__where:_n____DIRECTION__capture__playback_n____TARGET__device__pcm */
    0x00004370 addiu a0, a0, 0x924       |     a0 += 0x924;
    0x00004374 jalr t9                   |     t9 ();
    0x00004378 lw gp, 0x20(sp)           |     gp = *(var_20h);
    0x0000437c addiu s0, zero, -0x16     |     s0 = -0x16;
                                         |     do {
                                         | label_5:
    0x00004380 lw a0, 0x7c(sp)           |         a0 = *(var_7ch);
    0x00004384 lw v1, (s2)               |         v1 = *(s2);
    0x00004388 move v0, s0               |         v0 = s0;
                                         |         if (a0 != v1) {
    0x0000438c bne a0, v1, 0x49a4        |             goto label_12;
                                         |         }
    0x00004390 lw ra, 0xa4(sp)           |         ra = *(var_a4h);
    0x00004394 lw fp, 0xa0(sp)           |         fp = *(var_a0h);
    0x00004398 lw s7, 0x9c(sp)           |         s7 = *(var_9ch);
    0x0000439c lw s6, 0x98(sp)           |         s6 = *(var_98h);
    0x000043a0 lw s5, 0x94(sp)           |         s5 = *(var_94h);
    0x000043a4 lw s4, 0x90(sp)           |         s4 = *(var_90h);
    0x000043a8 lw s3, 0x8c(sp)           |         s3 = *(var_8ch);
    0x000043ac lw s2, 0x88(sp)           |         s2 = *(var_88h);
    0x000043b0 lw s1, 0x84(sp)           |         s1 = *(var_84h);
    0x000043b4 lw s0, 0x80(sp)           |         s0 = *(var_80h);
    0x000043b8 addiu sp, sp, 0xa8        |         
    0x000043bc jr ra                     |         return v0;
                                         | label_9:
    0x000043c0 lw t9, -0x7cf4(gp)        |         t9 = sym.imp.snd_ctl_card_info_malloc;
                                         | label_11:
    0x000043c4 addiu v0, zero, -1        |         v0 = -1;
    0x000043c8 addiu a0, sp, 0x50        |         a0 = sp + 0x50;
    0x000043cc sw v0, 0x48(sp)           |         *(var_48h) = v0;
    0x000043d0 jalr t9                   |         t9 ();
    0x000043d4 move s0, v0               |         s0 = v0;
    0x000043d8 lw gp, 0x20(sp)           |         gp = *(var_20h);
    0x000043dc bltz v0, 0x4380           |         
                                         |     } while (v0 < 0);
    0x000043e0 lw t9, -0x7e20(gp)        |     t9 = sym.imp.snd_card_next;
    0x000043e4 addiu v0, sp, 0x48        |     v0 = sp + 0x48;
    0x000043e8 sw v0, 0x44(sp)           |     *(var_44h) = v0;
    0x000043ec move a0, v0               |     a0 = v0;
    0x000043f0 jalr t9                   |     t9 ();
    0x000043f4 lw gp, 0x20(sp)           |     gp = *(var_20h);
                                         |     if (v0 < 0) {
    0x000043f8 bltz v0, 0x4940           |         goto label_8;
                                         |     }
    0x000043fc lw v0, 0x48(sp)           |     v0 = *(var_48h);
    0x00004400 lw t9, -0x7da8(gp)        |     t9 = sym.imp.snd_pcm_stream_name;
                                         |     if (v0 < 0) {
    0x00004404 bltz v0, 0x4940           |         goto label_8;
                                         |     }
    0x00004408 move a0, s5               |     a0 = s5;
    0x0000440c jalr t9                   |     t9 ();
    0x00004410 lw gp, 0x20(sp)           |     gp = *(var_20h);
    0x00004414 move a2, v0               |     a2 = v0;
    0x00004418 addiu a0, zero, 1         |     a0 = 1;
    0x0000441c lw a1, -0x7fdc(gp)        |     a1 = sym.imp.snd_pcm_hw_params_set_access_mask;
    0x00004420 lw t9, -0x7c58(gp)        |     t9 = sym.imp.__printf_chk;
                                         |     /* str._List_of__s_Hardware_Devices__n */
    0x00004424 addiu a1, a1, 0x7fc       |     a1 += 0x7fc;
    0x00004428 jalr t9                   |     t9 ();
    0x0000442c lw gp, 0x20(sp)           |     gp = *(var_20h);
    0x00004430 lw v0, -0x7fdc(gp)        |     v0 = sym.imp.snd_pcm_hw_params_set_access_mask;
                                         |     /* str.card__i:__s___s___device__i:__s___s__n */
    0x00004434 addiu v0, v0, 0x864       |     v0 += 0x864;
    0x00004438 sw v0, 0x38(sp)           |     *(var_38h) = v0;
    0x0000443c lw v0, -0x7fdc(gp)        |     v0 = sym.imp.snd_pcm_hw_params_set_access_mask;
                                         |     /* str.__Subdevice__i:__s_n */
    0x00004440 addiu v0, v0, 0x8d4       |     v0 += 0x8d4;
    0x00004444 sw v0, 0x3c(sp)           |     *(var_3ch) = v0;
    0x00004448 lw v0, -0x7fdc(gp)        |     v0 = sym.imp.snd_pcm_hw_params_set_access_mask;
                                         |     /* str.control_digital_audio_playback_info___i_:__s */
    0x0000444c addiu v0, v0, 0x8a4       |     v0 += 0x8a4;
    0x00004450 sw v0, 0x40(sp)           |     *(var_40h) = v0;
                                         | label_7:
    0x00004454 lw v0, 0x48(sp)           |     v0 = *(var_48h);
    0x00004458 lw a3, -0x7fdc(gp)        |     a3 = sym.imp.snd_pcm_hw_params_set_access_mask;
                                         |     if (v0 < 0) {
    0x0000445c bltz v0, 0x4940           |         goto label_8;
                                         |     }
    0x00004460 lw t9, -0x7e40(gp)        |     t9 = sym.imp.__sprintf_chk
    0x00004464 addiu s0, sp, 0x5c        |     s0 = sp + 0x5c;
    0x00004468 move a0, s0               |     a0 = s0;
                                         |     /* str.hw:_d */
    0x0000446c addiu a3, a3, 0x824       |     a3 += 0x824;
    0x00004470 addiu a2, zero, 0x20      |     a2 = 0x20;
    0x00004474 addiu a1, zero, 1         |     a1 = 1;
    0x00004478 sw v0, 0x10(sp)           |     *(var_10h) = v0;
    0x0000447c jalr t9                   |     t9 ();
    0x00004480 lw gp, 0x20(sp)           |     gp = *(var_20h);
    0x00004484 move a1, s0               |     a1 = s0;
    0x00004488 move a2, zero             |     a2 = 0;
    0x0000448c lw t9, -0x7c8c(gp)        |     t9 = sym.imp.snd_ctl_open;
    0x00004490 addiu a0, sp, 0x4c        |     a0 = sp + 0x4c;
    0x00004494 jalr t9                   |     t9 ();
    0x00004498 move s0, v0               |     s0 = v0;
    0x0000449c lw gp, 0x20(sp)           |     gp = *(var_20h);
                                         |     if (v0 < 0) {
    0x000044a0 bltz v0, 0x490c           |         goto label_13;
                                         |     }
    0x000044a4 lw t9, -0x7dcc(gp)        |     t9 = sym.imp.snd_ctl_card_info;
    0x000044a8 lw a1, 0x50(sp)           |     a1 = *(var_50h);
    0x000044ac lw a0, 0x4c(sp)           |     a0 = *(var_4ch);
    0x000044b0 jalr t9                   |     t9 ();
    0x000044b4 move s0, v0               |     s0 = v0;
    0x000044b8 lw gp, 0x20(sp)           |     gp = *(var_20h);
                                         |     if (v0 < 0) {
    0x000044bc bltz v0, 0x4954           |         goto label_14;
                                         |     }
    0x000044c0 lw t9, -0x7d08(gp)        |     t9 = sym.imp.snd_ctl_card_info_get_id;
    0x000044c4 lw a0, 0x50(sp)           |     a0 = *(var_50h);
    0x000044c8 lw s4, 0x4c(sp)           |     s4 = *(var_4ch);
    0x000044cc jalr t9                   |     t9 ();
    0x000044d0 lw gp, 0x20(sp)           |     gp = *(var_20h);
    0x000044d4 lw a0, 0x50(sp)           |     a0 = *(var_50h);
    0x000044d8 lw t9, -0x7cac(gp)        |     t9 = sym.imp.snd_ctl_card_info_get_name;
    0x000044dc sw v0, 0x30(sp)           |     *(var_30h) = v0;
    0x000044e0 jalr t9                   |     t9 ();
    0x000044e4 lw gp, 0x20(sp)           |     gp = *(var_20h);
    0x000044e8 move fp, v0               |     fp = v0;
    0x000044ec addiu v0, zero, -1        |     v0 = -1;
    0x000044f0 lw t9, -0x7e78(gp)        |     t9 = sym.imp.snd_pcm_info_malloc;
    0x000044f4 addiu a0, sp, 0x54        |     a0 = sp + 0x54;
    0x000044f8 sw v0, 0x58(sp)           |     *(var_58h) = v0;
    0x000044fc jalr t9                   |     t9 ();
    0x00004500 move s0, v0               |     s0 = v0;
    0x00004504 lw gp, 0x20(sp)           |     gp = *(var_20h);
                                         |     if (v0 < 0) {
    0x00004508 bltz v0, 0x49b0           |         goto label_15;
                                         |     }
    0x0000450c lw s6, -0x7fdc(gp)        |     s6 = sym.imp.snd_pcm_hw_params_set_access_mask;
    0x00004510 addiu s7, sp, 0x58        |     s7 = sp + 0x58;
                                         |     /* str.__Subdevices:__i__i_n */
    0x00004514 addiu v0, s6, 0x88c       |     v0 = s6 + 0x88c;
    0x00004518 sw v0, 0x34(sp)           |     *(var_34h) = v0;
                                         |     do {
    0x0000451c lw t9, -0x7cb8(gp)        |         t9 = sym.imp.snd_ctl_pcm_next_device;
                                         | label_0:
    0x00004520 move a1, s7               |         a1 = s7;
    0x00004524 move a0, s4               |         a0 = s4;
    0x00004528 jalr t9                   |         t9 ();
    0x0000452c move s0, v0               |         s0 = v0;
    0x00004530 lw gp, 0x20(sp)           |         gp = *(var_20h);
                                         |         if (v0 < 0) {
    0x00004534 bltz v0, 0x48b4           |             goto label_16;
                                         |         }
    0x00004538 lw a1, 0x58(sp)           |         a1 = *(var_58h);
    0x0000453c lw a0, 0x54(sp)           |         a0 = *(var_54h);
                                         |         if (a1 < 0) {
    0x00004540 bltz a1, 0x48b8           |             goto label_17;
                                         |         }
    0x00004544 lw t9, -0x7d24(gp)        |         t9 = sym.imp.snd_pcm_info_set_device;
    0x00004548 jalr t9                   |         t9 ();
    0x0000454c nop                       |         
    0x00004550 lw gp, 0x20(sp)           |         gp = *(var_20h);
    0x00004554 lw a0, 0x54(sp)           |         a0 = *(var_54h);
    0x00004558 lw t9, -0x7e6c(gp)        |         t9 = sym.imp.snd_pcm_info_set_subdevice;
    0x0000455c move a1, zero             |         a1 = 0;
    0x00004560 jalr t9                   |         t9 ();
    0x00004564 lw gp, 0x20(sp)           |         gp = *(var_20h);
    0x00004568 lw a0, 0x54(sp)           |         a0 = *(var_54h);
    0x0000456c lw t9, -0x7e3c(gp)        |         t9 = sym.imp.snd_pcm_info_set_stream;
    0x00004570 move a1, s5               |         a1 = s5;
    0x00004574 jalr t9                   |         t9 ();
    0x00004578 lw gp, 0x20(sp)           |         gp = *(var_20h);
    0x0000457c lw a1, 0x54(sp)           |         a1 = *(var_54h);
    0x00004580 lw t9, -0x7c1c(gp)        |         t9 = sym.imp.snd_ctl_pcm_info;
    0x00004584 move a0, s4               |         a0 = s4;
    0x00004588 jalr t9                   |         t9 ();
    0x0000458c lw gp, 0x20(sp)           |         gp = *(var_20h);
    0x00004590 bltz v0, 0x451c           |         
                                         |     } while (v0 < 0);
    0x00004594 lw s0, 0x54(sp)           |     s0 = *(var_54h);
    0x00004598 lw t9, -0x7c2c(gp)        |     t9 = sym.imp.snd_pcm_info_get_card;
    0x0000459c move a0, s0               |     a0 = s0;
    0x000045a0 jalr t9                   |     t9 ();
    0x000045a4 lw gp, 0x20(sp)           |     gp = *(var_20h);
    0x000045a8 move a0, s0               |     a0 = s0;
    0x000045ac lw t9, -0x7dac(gp)        |     t9 = sym.imp.snd_pcm_info_get_device;
    0x000045b0 sw v0, 0x2c(sp)           |     *(var_2ch) = v0;
    0x000045b4 jalr t9                   |     t9 ();
    0x000045b8 lw gp, 0x20(sp)           |     gp = *(var_20h);
    0x000045bc move a0, s0               |     a0 = s0;
    0x000045c0 lw t9, -0x7c0c(gp)        |     t9 = sym.imp.snd_pcm_info_get_id;
    0x000045c4 move s1, v0               |     s1 = v0;
    0x000045c8 jalr t9                   |     t9 ();
    0x000045cc lw gp, 0x20(sp)           |     gp = *(var_20h);
    0x000045d0 move a0, s0               |     a0 = s0;
    0x000045d4 lw t9, -0x7be0(gp)        |     t9 = sym.imp.snd_pcm_info_get_name;
    0x000045d8 move s3, v0               |     s3 = v0;
    0x000045dc jalr t9                   |     t9 ();
    0x000045e0 lw gp, 0x20(sp)           |     gp = *(var_20h);
    0x000045e4 lw a3, 0x30(sp)           |     a3 = *(var_30h);
    0x000045e8 lw a2, 0x2c(sp)           |     a2 = *(var_2ch);
    0x000045ec lw a1, 0x38(sp)           |     a1 = *(var_38h);
    0x000045f0 lw t9, -0x7c58(gp)        |     t9 = sym.imp.__printf_chk;
    0x000045f4 addiu a0, zero, 1         |     a0 = 1;
    0x000045f8 sw s3, 0x18(sp)           |     *(var_18h) = s3;
    0x000045fc sw s1, 0x14(sp)           |     *(var_14h) = s1;
    0x00004600 sw v0, 0x1c(sp)           |     *(var_1ch) = v0;
    0x00004604 sw fp, 0x10(sp)           |     *(var_10h) = fp;
    0x00004608 jalr t9                   |     t9 ();
    0x0000460c lw gp, 0x20(sp)           |     gp = *(var_20h);
    0x00004610 move a0, s0               |     a0 = s0;
    0x00004614 lw t9, -0x7de4(gp)        |     t9 = sym.imp.snd_pcm_info_get_subdevices_count;
    0x00004618 move s1, zero             |     s1 = 0;
    0x0000461c jalr t9                   |     t9 ();
    0x00004620 lw gp, 0x20(sp)           |     gp = *(var_20h);
    0x00004624 move a0, s0               |     a0 = s0;
    0x00004628 lw t9, -0x7e00(gp)        |     t9 = sym.imp.snd_pcm_info_get_subdevices_avail;
    0x0000462c move s3, v0               |     s3 = v0;
    0x00004630 jalr t9                   |     t9 ();
    0x00004634 lw gp, 0x20(sp)           |     gp = *(var_20h);
    0x00004638 lw a1, 0x34(sp)           |     a1 = *(var_34h);
    0x0000463c move a3, s3               |     a3 = s3;
    0x00004640 lw t9, -0x7c58(gp)        |     t9 = sym.imp.__printf_chk;
    0x00004644 move a2, v0               |     a2 = v0;
    0x00004648 addiu a0, zero, 1         |     a0 = 1;
    0x0000464c jalr t9                   |     t9 ();
    0x00004650 lw gp, 0x20(sp)           |     gp = *(var_20h);
                                         |     if (s3 != 0) {
    0x00004654 bnez s3, 0x4698           |         goto label_18;
                                         |     }
    0x00004658 lw t9, -0x7cb8(gp)        |     t9 = sym.imp.snd_ctl_pcm_next_device;
    0x0000465c b 0x4520                  |     goto label_0;
                                         | label_1:
    0x00004660 lw t9, -0x7d64(gp)        |     t9 = sym.imp.snd_pcm_info_get_subdevice_name;
    0x00004664 move a0, s0               |     a0 = s0;
    0x00004668 jalr t9                   |     t9 ();
    0x0000466c lw gp, 0x20(sp)           |     gp = *(var_20h);
    0x00004670 lw a1, 0x3c(sp)           |     a1 = *(var_3ch);
    0x00004674 move a3, v0               |     a3 = v0;
    0x00004678 lw t9, -0x7c58(gp)        |     t9 = sym.imp.__printf_chk;
    0x0000467c move a2, s1               |     a2 = s1;
    0x00004680 addiu a0, zero, 1         |     a0 = 1;
    0x00004684 jalr t9                   |     t9 ();
    0x00004688 lw gp, 0x20(sp)           |     gp = *(var_20h);
                                         | label_2:
    0x0000468c addiu s1, s1, 1           |     s1++;
    0x00004690 lw t9, -0x7cb8(gp)        |     t9 = sym.imp.snd_ctl_pcm_next_device;
                                         |     if (s1 == s3) {
    0x00004694 beq s1, s3, 0x4520        |         goto label_0;
                                         |     }
                                         | label_18:
    0x00004698 lw t9, -0x7e6c(gp)        |     t9 = sym.imp.snd_pcm_info_set_subdevice;
    0x0000469c move a1, s1               |     a1 = s1;
    0x000046a0 move a0, s0               |     a0 = s0;
    0x000046a4 jalr t9                   |     t9 ();
    0x000046a8 lw gp, 0x20(sp)           |     gp = *(var_20h);
    0x000046ac move a1, s0               |     a1 = s0;
    0x000046b0 lw t9, -0x7c1c(gp)        |     t9 = sym.imp.snd_ctl_pcm_info;
    0x000046b4 move a0, s4               |     a0 = s4;
    0x000046b8 jalr t9                   |     t9 ();
    0x000046bc move s6, v0               |     s6 = v0;
    0x000046c0 lw gp, 0x20(sp)           |     gp = *(var_20h);
                                         |     if (v0 >= 0) {
    0x000046c4 bgez v0, 0x4660           |         goto label_1;
                                         |     }
    0x000046c8 lw t9, -0x7c2c(gp)        |     t9 = sym.imp.snd_pcm_info_get_card;
    0x000046cc move a0, s0               |     a0 = s0;
    0x000046d0 jalr t9                   |     t9 ();
    0x000046d4 lw gp, 0x20(sp)           |     gp = *(var_20h);
    0x000046d8 move a0, s6               |     a0 = s6;
    0x000046dc lw t9, -0x7d54(gp)        |     t9 = sym.imp.snd_strerror;
    0x000046e0 sw v0, 0x2c(sp)           |     *(var_2ch) = v0;
    0x000046e4 jalr t9                   |     t9 ();
    0x000046e8 lw gp, 0x20(sp)           |     gp = *(var_20h);
    0x000046ec lw a2, 0x2c(sp)           |     a2 = *(var_2ch);
    0x000046f0 lw a1, 0x40(sp)           |     a1 = *(var_40h);
    0x000046f4 lw t9, -0x7c58(gp)        |     t9 = sym.imp.__printf_chk;
    0x000046f8 move a3, v0               |     a3 = v0;
    0x000046fc addiu a0, zero, 1         |     a0 = 1;
    0x00004700 jalr t9                   |     t9 ();
    0x00004704 lw gp, 0x20(sp)           |     gp = *(var_20h);
    0x00004708 b 0x468c                  |     goto label_2;
                                         | label_10:
    0x0000470c lw t9, -0x7d38(gp)        |     t9 = sym.imp.snd_device_name_hint;
    0x00004710 addiu a2, sp, 0x58        |     a2 = sp + 0x58;
                                         |     /* esilref: 'pcm' */
    0x00004714 addiu a1, s4, 0x98c       |     a1 = s4 + 0x98c;
    0x00004718 addiu a0, zero, -1        |     a0 = -1;
    0x0000471c jalr t9                   |     t9 ();
    0x00004720 lw gp, 0x20(sp)           |     gp = *(var_20h);
                                         |     if (v0 < 0) {
    0x00004724 bltz v0, 0x499c           |         goto label_19;
                                         |     }
    0x00004728 lw s1, 0x58(sp)           |     s1 = *(var_58h);
    0x0000472c lw v0, -0x7fd8(gp)        |     v0 = *((gp - 8182));
    0x00004730 sll s5, s5, 2             |     s5 <<= 2;
                                         |     /* esilref: 'Output' */
    0x00004734 addiu v0, v0, 0x3a88      |     v0 += 0x3a88;
    0x00004738 lw a0, (s1)               |     a0 = *(s1);
    0x0000473c lwx s5, s5(v0)            |     __asm ("lwx s5, s5(v0)");
                                         |     if (a0 == 0) {
    0x00004740 beqz a0, 0x4874           |         goto label_20;
                                         |     }
    0x00004744 lw v0, -0x7fdc(gp)        |     v0 = sym.imp.snd_pcm_hw_params_set_access_mask;
    0x00004748 lw s6, -0x7fdc(gp)        |     s6 = sym.imp.snd_pcm_hw_params_set_access_mask;
                                         |     /* str.____ */
    0x0000474c addiu v0, v0, 0x914       |     v0 += 0x914;
    0x00004750 sw v0, 0x30(sp)           |     *(var_30h) = v0;
    0x00004754 lw v0, -0x7fdc(gp)        |     v0 = sym.imp.snd_pcm_hw_params_set_access_mask;
    0x00004758 lw fp, -0x7fdc(gp)        |     fp = sym.imp.snd_pcm_hw_params_set_access_mask;
                                         |     /* str._n____ */
    0x0000475c addiu v0, v0, 0x91c       |     v0 += 0x91c;
    0x00004760 lw s7, -0x7fdc(gp)        |     s7 = sym.imp.snd_pcm_hw_params_set_access_mask;
    0x00004764 lw s4, -0x7e0c(gp)        |     s4 = *((gp - 8067));
                                         |     /* str.NAME */
    0x00004768 addiu s6, s6, 0x904       |     s6 += 0x904;
    0x0000476c sw v0, 0x2c(sp)           |     *(var_2ch) = v0;
    0x00004770 lw t9, -0x7bec(gp)        |     t9 = sym.imp.snd_device_name_get_hint;
                                         |     /* str.IOID */
                                         | label_4:
    0x00004774 addiu a1, fp, 0x8fc       |     a1 = fp + 0x8fc;
    0x00004778 jalr t9                   |     t9 ();
    0x0000477c move s0, v0               |     s0 = v0;
    0x00004780 lw gp, 0x20(sp)           |     gp = *(var_20h);
                                         |     if (v0 != 0) {
    0x00004784 beqz v0, 0x47a0           |         
    0x00004788 lw t9, -0x7e80(gp)        |         t9 = sym.imp.strcmp;
    0x0000478c move a1, s5               |         a1 = s5;
    0x00004790 move a0, v0               |         a0 = v0;
    0x00004794 jalr t9                   |         t9 ();
    0x00004798 lw gp, 0x20(sp)           |         gp = *(var_20h);
                                         |         if (v0 != 0) {
    0x0000479c bnez v0, 0x48a0           |             goto label_21;
                                         |         }
                                         |     }
    0x000047a0 lw t9, -0x7bec(gp)        |     t9 = sym.imp.snd_device_name_get_hint;
    0x000047a4 lw a0, (s1)               |     a0 = *(s1);
    0x000047a8 move a1, s6               |     a1 = s6;
    0x000047ac jalr t9                   |     t9 ();
    0x000047b0 lw gp, 0x20(sp)           |     gp = *(var_20h);
    0x000047b4 lw a0, (s1)               |     a0 = *(s1);
                                         |     /* str.DESC */
    0x000047b8 addiu a1, s7, 0x90c       |     a1 = s7 + 0x90c;
    0x000047bc lw t9, -0x7bec(gp)        |     t9 = sym.imp.snd_device_name_get_hint;
    0x000047c0 move s3, v0               |     s3 = v0;
    0x000047c4 jalr t9                   |     t9 ();
    0x000047c8 lw gp, 0x20(sp)           |     gp = *(var_20h);
    0x000047cc move s0, v0               |     s0 = v0;
    0x000047d0 lw t9, -0x7e1c(gp)        |     t9 = sym.imp.puts;
    0x000047d4 move a0, s3               |     a0 = s3;
    0x000047d8 jalr t9                   |     t9 ();
    0x000047dc lw gp, 0x20(sp)           |     gp = *(var_20h);
                                         |     if (s0 == 0) {
    0x000047e0 beqz s0, 0x488c           |         goto label_22;
                                         |     }
    0x000047e4 lw t9, -0x7c58(gp)        |     t9 = sym.imp.__printf_chk;
    0x000047e8 lw a1, 0x30(sp)           |     a1 = *(var_30h);
    0x000047ec addiu a0, zero, 1         |     a0 = 1;
    0x000047f0 jalr t9                   |     t9 ();
    0x000047f4 lb a0, (s0)               |     a0 = *(s0);
    0x000047f8 lw gp, 0x20(sp)           |     gp = *(var_20h);
    0x000047fc addiu s3, zero, 0xa       |     s3 = 0xa;
                                         |     if (a0 != 0) {
    0x00004800 bnez a0, 0x4824           |         goto label_3;
                                         |     }
    0x00004804 lw t9, -0x7e4c(gp)        |     t9 = sym.imp._IO_putc;
    0x00004808 b 0x4850                  |     goto label_23;
                                         |     do {
    0x0000480c lw a1, (s4)               |         a1 = *(s4);
    0x00004810 addiu s0, s0, 1           |         s0++;
    0x00004814 jalr t9                   |         t9 ();
    0x00004818 lb a0, (s0)               |         a0 = *(s0);
    0x0000481c lw gp, 0x20(sp)           |         gp = *(var_20h);
                                         |         if (a0 == 0) {
    0x00004820 beqz a0, 0x484c           |             goto label_24;
                                         |         }
                                         | label_3:
    0x00004824 lw t9, -0x7e4c(gp)        |         t9 = sym.imp._IO_putc;
    0x00004828 bne a0, s3, 0x480c        |         
                                         |     } while (a0 != s3);
    0x0000482c lw t9, -0x7c58(gp)        |     t9 = sym.imp.__printf_chk;
    0x00004830 lw a1, 0x2c(sp)           |     a1 = *(var_2ch);
    0x00004834 addiu s0, s0, 1           |     s0++;
    0x00004838 addiu a0, zero, 1         |     a0 = 1;
    0x0000483c jalr t9                   |     t9 ();
    0x00004840 lb a0, (s0)               |     a0 = *(s0);
    0x00004844 lw gp, 0x20(sp)           |     gp = *(var_20h);
                                         |     if (a0 != 0) {
    0x00004848 bnez a0, 0x4824           |         goto label_3;
                                         |     }
                                         | label_24:
    0x0000484c lw t9, -0x7e4c(gp)        |     t9 = sym.imp._IO_putc;
                                         | label_23:
    0x00004850 lw a1, (s4)               |     a1 = *(s4);
    0x00004854 addiu a0, zero, 0xa       |     a0 = 0xa;
    0x00004858 jalr t9                   |     t9 ();
    0x0000485c lw gp, 0x20(sp)           |     gp = *(var_20h);
                                         | label_6:
    0x00004860 addiu s1, s1, 4           |     s1 += 4;
    0x00004864 lw a0, (s1)               |     a0 = *(s1);
    0x00004868 lw t9, -0x7bec(gp)        |     t9 = sym.imp.snd_device_name_get_hint;
                                         |     if (a0 != 0) {
    0x0000486c bnez a0, 0x4774           |         goto label_4;
                                         |     }
    0x00004870 lw s1, 0x58(sp)           |     s1 = *(var_58h);
                                         | label_20:
    0x00004874 lw t9, -0x7ea4(gp)        |     t9 = sym.imp.snd_device_name_free_hint;
    0x00004878 move a0, s1               |     a0 = s1;
    0x0000487c jalr t9                   |     t9 ();
    0x00004880 move s0, zero             |     s0 = 0;
    0x00004884 lw gp, 0x20(sp)           |     gp = *(var_20h);
    0x00004888 b 0x4380                  |     goto label_5;
                                         | label_22:
    0x0000488c lw t9, -0x7cf8(gp)        |     t9 = sym.imp.free;
    0x00004890 move a0, s3               |     a0 = s3;
    0x00004894 jalr t9                   |     t9 ();
    0x00004898 lw gp, 0x20(sp)           |     gp = *(var_20h);
    0x0000489c b 0x4860                  |     goto label_6;
                                         | label_21:
    0x000048a0 lw t9, -0x7cf8(gp)        |     t9 = sym.imp.free;
    0x000048a4 move a0, s0               |     a0 = s0;
    0x000048a8 jalr t9                   |     t9 ();
    0x000048ac lw gp, 0x20(sp)           |     gp = *(var_20h);
    0x000048b0 b 0x4860                  |     goto label_6;
                                         | label_16:
    0x000048b4 lw a0, 0x54(sp)           |     a0 = *(var_54h);
                                         | label_17:
    0x000048b8 lw t9, -0x7cf8(gp)        |     t9 = sym.imp.free;
    0x000048bc jalr t9                   |     t9 ();
    0x000048c0 nop                       |     
    0x000048c4 lw gp, 0x20(sp)           |     gp = *(var_20h);
    0x000048c8 lw t9, -0x7d0c(gp)        |     t9 = sym.imp.snd_ctl_close;
    0x000048cc lw a0, 0x4c(sp)           |     a0 = *(var_4ch);
    0x000048d0 jalr t9                   |     t9 ();
    0x000048d4 lw gp, 0x20(sp)           |     gp = *(var_20h);
                                         |     if (s0 < 0) {
    0x000048d8 bltz s0, 0x4940           |         goto label_8;
                                         |     }
    0x000048dc lw t9, -0x7e20(gp)        |     t9 = sym.imp.snd_card_next;
    0x000048e0 lw a0, 0x44(sp)           |     a0 = *(var_44h);
    0x000048e4 jalr t9                   |     t9 ();
    0x000048e8 lw gp, 0x20(sp)           |     gp = *(var_20h);
                                         |     if (v0 >= 0) {
    0x000048ec bgez v0, 0x4454           |         goto label_7;
                                         |     }
    0x000048f0 lw a1, -0x7fdc(gp)        |     a1 = sym.imp.snd_pcm_hw_params_set_access_mask;
    0x000048f4 lw t9, -0x7c58(gp)        |     t9 = sym.imp.__printf_chk;
                                         |     /* str.snd_card_next */
    0x000048f8 addiu a1, a1, 0x8ec       |     a1 += aav.0x000008ec;
    0x000048fc addiu a0, zero, 1         |     a0 = 1;
    0x00004900 jalr t9                   |     t9 ();
    0x00004904 lw gp, 0x20(sp)           |     gp = *(var_20h);
    0x00004908 b 0x4940                  |     goto label_8;
                                         | label_13:
    0x0000490c lw t9, -0x7d54(gp)        |     t9 = sym.imp.snd_strerror;
    0x00004910 move a0, v0               |     a0 = v0;
    0x00004914 lw s1, 0x48(sp)           |     s1 = *(var_48h);
    0x00004918 jalr t9                   |     t9 ();
    0x0000491c lw gp, 0x20(sp)           |     gp = *(var_20h);
    0x00004920 move a3, v0               |     a3 = v0;
    0x00004924 move a2, s1               |     a2 = s1;
    0x00004928 lw a1, -0x7fdc(gp)        |     a1 = sym.imp.snd_pcm_hw_params_set_access_mask;
    0x0000492c lw t9, -0x7c58(gp)        |     t9 = sym.imp.__printf_chk;
                                         |     /* str.control_open___i_:__s */
    0x00004930 addiu a1, a1, 0x82c       |     a1 += 0x82c;
    0x00004934 addiu a0, zero, 1         |     a0 = 1;
    0x00004938 jalr t9                   |     t9 ();
    0x0000493c lw gp, 0x20(sp)           |     gp = *(var_20h);
                                         |     do {
                                         | label_8:
    0x00004940 lw t9, -0x7cf8(gp)        |         t9 = sym.imp.free;
    0x00004944 lw a0, 0x50(sp)           |         a0 = *(var_50h);
    0x00004948 jalr t9                   |         t9 ();
    0x0000494c lw gp, 0x20(sp)           |         gp = *(var_20h);
    0x00004950 b 0x4380                  |         goto label_5;
                                         | label_14:
    0x00004954 lw t9, -0x7d54(gp)        |         t9 = sym.imp.snd_strerror;
    0x00004958 move a0, v0               |         a0 = v0;
    0x0000495c lw s1, 0x48(sp)           |         s1 = *(var_48h);
    0x00004960 jalr t9                   |         t9 ();
    0x00004964 lw gp, 0x20(sp)           |         gp = *(var_20h);
    0x00004968 move a3, v0               |         a3 = v0;
    0x0000496c move a2, s1               |         a2 = s1;
    0x00004970 lw a1, -0x7fdc(gp)        |         a1 = sym.imp.snd_pcm_hw_params_set_access_mask;
    0x00004974 lw t9, -0x7c58(gp)        |         t9 = sym.imp.__printf_chk;
                                         |         /* str.control_hardware_info___i_:__s */
    0x00004978 addiu a1, a1, 0x844       |         a1 += 0x844;
    0x0000497c addiu a0, zero, 1         |         a0 = 1;
    0x00004980 jalr t9                   |         t9 ();
    0x00004984 lw gp, 0x20(sp)           |         gp = *(var_20h);
    0x00004988 lw t9, -0x7d0c(gp)        |         t9 = sym.imp.snd_ctl_close;
    0x0000498c lw a0, 0x4c(sp)           |         a0 = *(var_4ch);
    0x00004990 jalr t9                   |         t9 ();
    0x00004994 lw gp, 0x20(sp)           |         gp = *(var_20h);
    0x00004998 b 0x4940                  |         
                                         |     } while (1);
                                         | label_19:
    0x0000499c addiu s0, zero, -0x16     |     s0 = -0x16;
    0x000049a0 b 0x4380                  |     goto label_5;
                                         | label_12:
    0x000049a4 lw t9, -0x7dbc(gp)        |     t9 = sym.imp.__stack_chk_fail;
    0x000049a8 jalr t9                   |     t9 ();
    0x000049ac nop                       |     
                                         | label_15:
    0x000049b0 lw t9, -0x7d0c(gp)        |     t9 = sym.imp.snd_ctl_close;
    0x000049b4 lw a0, 0x4c(sp)           |     a0 = *(var_4ch);
    0x000049b8 jalr t9                   |     t9 ();
    0x000049bc lw gp, 0x20(sp)           |     gp = *(var_20h);
    0x000049c0 b 0x4940                  |     goto label_8;
                                         | }

[*] Function sprintf used 2 times axfer