[*] Binary protection state of libuClibc-0.9.33.2.so

  
  	No RELRO       Canary found      NX disabled  DSO          No RPATH     No RUNPATH   No Symbols


[*] Function strcat tear down of libuClibc-0.9.33.2.so

    ; assembly                           | /* r2dec pseudo code output */
                                         | /* /logs/firmware/unblob_extracted/firmware_extract/11108416-13869836.lzma_extract/lzma.uncompressed_extract/3761304-11775640.cpio_portable_ascii_extract/lib/libuClibc-0.9.33.2.so @ 0x45598 */
                                         | #include <stdint.h>
                                         |  
    ; (fcn) fcn.00045598 ()              | void fcn_00045598 () {
    0x00045598 lui gp, 7                 |     
    0x0004559c addiu gp, gp, 0x148       |     
    0x000455a0 addu gp, gp, t9           |     gp += t9;
    0x000455a4 addiu sp, sp, -0x68       |     
    0x000455a8 sw fp, 0x60(sp)           |     *(var_60h) = fp;
    0x000455ac move fp, sp               |     fp = sp;
    0x000455b0 sw s5, 0x58(sp)           |     *(var_58h) = s5;
    0x000455b4 sw s4, 0x54(sp)           |     *(var_54h) = s4;
    0x000455b8 sw s3, 0x50(sp)           |     *(var_50h) = s3;
    0x000455bc sw s2, 0x4c(sp)           |     *(var_4ch) = s2;
    0x000455c0 sw ra, 0x64(sp)           |     *(var_64h) = ra;
    0x000455c4 sw s6, 0x5c(sp)           |     *(var_5ch) = s6;
    0x000455c8 sw s1, 0x48(sp)           |     *(var_48h) = s1;
    0x000455cc sw s0, 0x44(sp)           |     *(var_44h) = s0;
    0x000455d0 sw gp, 0x18(sp)           |     *(var_18h) = gp;
    0x000455d4 move s5, a0               |     s5 = a0;
    0x000455d8 move s3, a1               |     s3 = a1;
    0x000455dc move s4, a2               |     s4 = a2;
    0x000455e0 move s2, a3               |     s2 = a3;
    0x000455e4 beqz a1, 0x455f0          |     
                                         |     while (v0 == 0) {
    0x000455e8 addiu s0, zero, -1        |         s0 = -1;
    0x000455ec b 0x45648                 |         goto label_0;
    0x000455f0 lw a0, -0x7fa8(gp)        |         a0 = *((gp - 8170));
    0x000455f4 lw t9, -0x7b0c(gp)        |         t9 = *((gp - 7875));
    0x000455f8 addiu t9, t9, 0x5000      |         t9 += 0x5000;
    0x000455fc addiu a0, a0, -0x5518     |         a0 += -0x5518;
    0x00045600 bal 0x45000               |         fcn_00045000 ();
    0x00045604 move s1, v0               |         s1 = v0;
    0x00045608 lw gp, 0x18(fp)           |         gp = *(var_18h);
    0x0004560c beqz v0, 0x455e8          |         
                                         |     }
    0x00045610 lw t9, -0x7b0c(gp)        |     t9 = *((gp - 7875));
    0x00045614 move a0, v0               |     a0 = v0;
    0x00045618 move a1, s5               |     a1 = s5;
    0x0004561c move a2, s2               |     a2 = s2;
    0x00045620 addiu t9, t9, 0x50fc      |     t9 += 0x50fc;
    0x00045624 move a3, s4               |     a3 = s4;
    0x00045628 bal 0x450fc               |     fcn_000450fc ();
    0x0004562c lw gp, 0x18(fp)           |     gp = *(var_18h);
    0x00045630 move s0, v0               |     s0 = v0;
    0x00045634 lw t9, -0x7dcc(gp)        |     t9 = *((gp - 8051));
    0x00045638 move a0, s1               |     a0 = s1;
    0x0004563c bal 0x2de40               |     sym_fclose ();
    0x00045640 lw gp, 0x18(fp)           |     gp = *(var_18h);
                                         |     if (s0 != 0) {
    0x00045644 beqz s0, 0x457a4          |         
                                         | label_0:
    0x00045648 lw v0, -0x760c(gp)        |         v0 = *((gp - 7555));
    0x0004564c lw v0, (v0)               |         v0 = *(v0);
    0x00045650 or s3, s3, v0             |         s3 |= v0;
    0x00045654 lw t9, -0x7ef0(gp)        |         t9 = *((gp - 8124));
                                         |         if (s3 != 0) {
    0x00045658 beqz s3, 0x457a0          |             
    0x0004565c addiu a0, zero, 0x46      |             a0 = 0x46;
    0x00045660 bal 0x60b2c               |             sym_sysconf ();
    0x00045664 lw gp, 0x18(fp)           |             gp = *(var_18h);
    0x00045668 addiu v1, v0, 0xe         |             v1 = v0 + 0xe;
    0x0004566c srl v1, v1, 3             |             v1 >>= 3;
    0x00045670 sll v1, v1, 3             |             v1 <<= 3;
    0x00045674 lw t9, -0x7f78(gp)        |             t9 = *((gp - 8158));
    0x00045678 subu sp, sp, v1           |             
    0x0004567c addiu v1, fp, 0x3c        |             v1 = fp + 0x3c;
    0x00045680 sw v1, 0x10(sp)           |             *(var_10h) = v1;
    0x00045684 move a0, s2               |             a0 = s2;
    0x00045688 addiu a1, fp, 0x20        |             a1 = fp + 0x20;
    0x0004568c addiu a2, sp, 0x18        |             a2 = sp + 0x18;
    0x00045690 move a3, v0               |             a3 = v0;
    0x00045694 bal 0x2c820               |             sym_getpwnam_r ();
    0x00045698 lw gp, 0x18(fp)           |             gp = *(var_18h);
                                         |             if (v0 != 0) {
    0x0004569c bnez v0, 0x457a0          |                 goto label_1;
                                         |             }
    0x000456a0 lw v0, 0x3c(fp)           |             v0 = *(arg_3ch);
    0x000456a4 lw t9, -0x7fdc(gp)        |             t9 = *(var_7fdch);
                                         |             if (v0 == 0) {
    0x000456a8 beqz v0, 0x457a0          |                 goto label_1;
                                         |             }
    0x000456ac lw a0, 0x14(v0)           |             a0 = *((v0 + 5));
    0x000456b0 bal 0x3b6b0               |             sym_strlen ();
    0x000456b4 lw gp, 0x18(fp)           |             gp = *(var_18h);
    0x000456b8 lw t9, -0x75a0(gp)        |             t9 = *(var_75a0h);
    0x000456bc addiu a0, v0, 9           |             a0 = v0 + 9;
    0x000456c0 jalr t9                   |             t9 ();
    0x000456c4 move s1, v0               |             s1 = v0;
    0x000456c8 lw gp, 0x18(fp)           |             gp = *(var_18h);
    0x000456cc move a0, v0               |             a0 = v0;
    0x000456d0 lw v0, 0x3c(fp)           |             v0 = *(arg_3ch);
    0x000456d4 lw t9, -0x7f44(gp)        |             t9 = *(var_7f44h);
    0x000456d8 lw a1, 0x14(v0)           |             a1 = *((v0 + 5));
    0x000456dc bal 0x3b600               |             sym_strcpy ();
    0x000456e0 lw gp, 0x18(fp)           |             gp = *(var_18h);
    0x000456e4 move a0, s1               |             a0 = s1;
    0x000456e8 lw a1, -0x7fa8(gp)        |             a1 = *(s2);
    0x000456ec lw t9, -0x7dfc(gp)        |             t9 = *(var_7dfch);
    0x000456f0 addiu a1, a1, -0x5504     |             a1 += -0x5504;
    0x000456f4 bal 0x3b3a0               |             sym_strcat ()
    0x000456f8 lw gp, 0x18(fp)           |             gp = *(var_18h);
    0x000456fc lw t9, -0x7aa4(gp)        |             t9 = *(var_7aa4h);
    0x00045700 jalr t9                   |             t9 ();
    0x00045704 nop                       |             
    0x00045708 move s6, v0               |             s6 = v0;
    0x0004570c lw gp, 0x18(fp)           |             gp = *(var_18h);
    0x00045710 lw v0, 0x3c(fp)           |             v0 = *(arg_3ch);
    0x00045714 lw t9, -0x79b4(gp)        |             t9 = *(var_79b4h);
    0x00045718 lw a0, 8(v0)              |             a0 = *((v0 + 2));
    0x0004571c jalr t9                   |             t9 ();
    0x00045720 lw gp, 0x18(fp)           |             gp = *(var_18h);
    0x00045724 lw v0, 0x3c(fp)           |             v0 = *(arg_3ch);
    0x00045728 move a0, s1               |             a0 = s1;
    0x0004572c lw t9, -0x7b0c(gp)        |             t9 = *(var_7b0ch);
    0x00045730 addiu t9, t9, 0x5000      |             t9 += 0x5000;
    0x00045734 lw a1, 8(v0)              |             a1 = *((v0 + 2));
    0x00045738 bal 0x45000               |             fcn_00045000 ();
    0x0004573c lw gp, 0x18(fp)           |             gp = *(var_18h);
    0x00045740 move s3, v0               |             s3 = v0;
    0x00045744 lw t9, -0x7668(gp)        |             t9 = *(var_7668h);
    0x00045748 move a0, s1               |             a0 = s1;
    0x0004574c jalr t9                   |             t9 ();
    0x00045750 lw gp, 0x18(fp)           |             gp = *(var_18h);
                                         |             if (s3 != 0) {
    0x00045754 beqz s3, 0x4578c          |                 
    0x00045758 lw t9, -0x7b0c(gp)        |                 t9 = *(var_7b0ch);
    0x0004575c move a0, s3               |                 a0 = s3;
    0x00045760 move a1, s5               |                 a1 = s5;
    0x00045764 move a2, s2               |                 a2 = s2;
    0x00045768 addiu t9, t9, 0x50fc      |                 t9 += 0x50fc;
    0x0004576c move a3, s4               |                 a3 = s4;
    0x00045770 bal 0x450fc               |                 fcn_000450fc ();
    0x00045774 lw gp, 0x18(fp)           |                 gp = *(var_18h);
    0x00045778 move a0, s3               |                 a0 = s3;
    0x0004577c lw t9, -0x7dcc(gp)        |                 t9 = *(var_7dcch);
    0x00045780 move s0, v0               |                 s0 = v0;
    0x00045784 bal 0x2de40               |                 sym_fclose ();
    0x00045788 lw gp, 0x18(fp)           |                 gp = *(var_18h);
                                         |             }
    0x0004578c lw t9, -0x79b4(gp)        |             t9 = *(var_79b4h);
    0x00045790 move a0, s6               |             a0 = s6;
    0x00045794 jalr t9                   |             t9 ();
    0x00045798 move sp, fp               |             
    0x0004579c b 0x457a8                 |             goto label_2;
                                         |         }
                                         | label_1:
    0x000457a0 addiu s0, zero, -1        |         s0 = -1;
                                         |     }
    0x000457a4 move sp, fp               |     
                                         | label_2:
    0x000457a8 lw ra, 0x64(sp)           |     ra = *(var_64h);
    0x000457ac move v0, s0               |     v0 = s0;
    0x000457b0 lw fp, 0x60(sp)           |     fp = *(var_60h);
    0x000457b4 lw s6, 0x5c(sp)           |     s6 = *(var_5ch);
    0x000457b8 lw s5, 0x58(sp)           |     s5 = *(var_58h);
    0x000457bc lw s4, 0x54(sp)           |     s4 = *(var_54h);
    0x000457c0 lw s3, 0x50(sp)           |     s3 = *(var_50h);
    0x000457c4 lw s2, 0x4c(sp)           |     s2 = *(var_4ch);
    0x000457c8 lw s1, 0x48(sp)           |     s1 = *(var_48h);
    0x000457cc lw s0, 0x44(sp)           |     s0 = *(var_44h);
    0x000457d0 addiu sp, sp, 0x68        |     
    0x000457d4 jr ra                     |     return v0;
                                         | }
    ; assembly                               | /* r2dec pseudo code output */
                                             | /* /logs/firmware/unblob_extracted/firmware_extract/11108416-13869836.lzma_extract/lzma.uncompressed_extract/3761304-11775640.cpio_portable_ascii_extract/lib/libuClibc-0.9.33.2.so @ 0x47a0c */
                                             | #include <stdint.h>
                                             |  
    ; (fcn) sym.ruserpass ()                 | void ruserpass () {
    0x00047a0c lui gp, 7                     |     
    0x00047a10 addiu gp, gp, -0x232c         |     
    0x00047a14 addu gp, gp, t9               |     gp += t9;
    0x00047a18 lw t9, -0x7f80(gp)            |     t9 = *((gp - 8160));
    0x00047a1c addiu sp, sp, -0x4e0          |     
    0x00047a20 sw ra, 0x4dc(sp)              |     *(var_4dch) = ra;
    0x00047a24 sw fp, 0x4d8(sp)              |     *(var_4d8h) = fp;
    0x00047a28 sw s7, 0x4d4(sp)              |     *(var_4d4h) = s7;
    0x00047a2c move fp, sp                   |     fp = sp;
    0x00047a30 sw s5, 0x4cc(sp)              |     *(var_4cch) = s5;
    0x00047a34 sw s2, 0x4c0(sp)              |     *(var_4c0h) = s2;
    0x00047a38 sw s0, 0x4b8(sp)              |     *(var_4b8h) = s0;
    0x00047a3c sw gp, 0x10(sp)               |     *(dest) = gp;
    0x00047a40 sw s6, 0x4d0(sp)              |     *(var_4d0h) = s6;
    0x00047a44 sw s4, 0x4c8(sp)              |     *(var_4c8h) = s4;
    0x00047a48 sw s3, 0x4c4(sp)              |     *(var_4c4h) = s3;
    0x00047a4c sw s1, 0x4bc(sp)              |     *(var_4bch) = s1;
    0x00047a50 move s2, a0                   |     s2 = a0;
    0x00047a54 move s5, a1                   |     s5 = a1;
    0x00047a58 move s7, a2                   |     s7 = a2;
    0x00047a5c jalr t9                       |     t9 ();
    0x00047a60 lw gp, 0x10(fp)               |     gp = *(dest);
    0x00047a64 lw t9, -0x7aa4(gp)            |     t9 = *((gp - 7849));
    0x00047a68 move s0, v0                   |     s0 = v0;
    0x00047a6c jalr t9                       |     t9 ();
    0x00047a70 lw gp, 0x10(fp)               |     gp = *(dest);
                                             |     if (s0 != v0) {
    0x00047a74 beq s0, v0, 0x47a80           |         
    0x00047a78 addiu s1, zero, -1            |         s1 = -1;
    0x00047a7c b 0x47edc                     |         goto label_3;
                                             |     }
    0x00047a80 lw t9, -0x795c(gp)            |     t9 = *((gp - 7767));
    0x00047a84 jalr t9                       |     t9 ();
    0x00047a88 nop                           |     
    0x00047a8c lw gp, 0x10(fp)               |     gp = *(dest);
    0x00047a90 lw t9, -0x7aa0(gp)            |     t9 = *((gp - 7848));
    0x00047a94 move s0, v0                   |     s0 = v0;
    0x00047a98 jalr t9                       |     t9 ();
    0x00047a9c lw gp, 0x10(fp)               |     gp = *(dest);
                                             |     if (s0 != v0) {
    0x00047aa0 bne s0, v0, 0x47ed8           |         goto label_4;
                                             |     }
    0x00047aa4 lw a0, -0x7fa8(gp)            |     a0 = *((gp - 8170));
    0x00047aa8 lw t9, -0x7f84(gp)            |     t9 = *((gp - 8161));
    0x00047aac addiu a0, a0, -0x71b0         |     a0 += -0x71b0;
    0x00047ab0 bal 0x5b4e0                   |     sym_getenv ();
    0x00047ab4 move s1, v0                   |     s1 = v0;
    0x00047ab8 lw gp, 0x10(fp)               |     gp = *(dest);
                                             |     if (v0 == 0) {
    0x00047abc beqz v0, 0x47ed8              |         goto label_4;
                                             |     }
    0x00047ac0 lw t9, -0x7fdc(gp)            |     t9 = *((gp - 8183));
    0x00047ac4 move a0, v0                   |     a0 = v0;
    0x00047ac8 bal 0x3b6b0                   |     sym_strlen ();
    0x00047acc addiu v0, v0, 0x16            |     v0 += 0x16;
    0x00047ad0 lw gp, 0x10(fp)               |     gp = *(dest);
    0x00047ad4 srl v0, v0, 3                 |     v0 >>= 3;
    0x00047ad8 sll v0, v0, 3                 |     v0 <<= 3;
    0x00047adc subu sp, sp, v0               |     
    0x00047ae0 lw t9, -0x7f44(gp)            |     t9 = *((gp - 8145));
    0x00047ae4 addiu s0, sp, 0x10            |     s0 = sp + 0x10;
    0x00047ae8 move a0, s0                   |     a0 = s0;
    0x00047aec move a1, s1                   |     a1 = s1;
    0x00047af0 bal 0x3b600                   |     sym_strcpy ();
    0x00047af4 lw gp, 0x10(fp)               |     gp = *(dest);
    0x00047af8 move a0, s0                   |     a0 = s0;
    0x00047afc lw a1, -0x7fa8(gp)            |     a1 = *((gp - 8170));
    0x00047b00 lw t9, -0x7dfc(gp)            |     t9 = *((gp - 8063));
    0x00047b04 addiu a1, a1, -0x5380         |     a1 += -0x5380;
    0x00047b08 bal 0x3b3a0                   |     sym_strcat ()
    0x00047b0c lw gp, 0x10(fp)               |     gp = *(dest);
    0x00047b10 move a0, s0                   |     a0 = s0;
    0x00047b14 lw a1, -0x7fa8(gp)            |     a1 = *((gp - 8170));
    0x00047b18 lw t9, -0x7dd0(gp)            |     t9 = *((gp - 8052));
    0x00047b1c addiu a1, a1, -0x7aa4         |     a1 += -0x7aa4;
    0x00047b20 bal 0x2e600                   |     sym_fopen ();
    0x00047b24 lw gp, 0x10(fp)               |     gp = *(dest);
    0x00047b28 lw s3, -0x7ecc(gp)            |     s3 = *((gp - 8115));
    0x00047b2c sw v0, 0x1be0(s3)             |     *((s3 + 1784)) = v0;
                                             |     if (v0 == 0) {
    0x00047b30 bnez v0, 0x47b70              |         
    0x00047b34 rdhwr v1, 29                  |         __asm ("rdhwr v1, 29");
    0x00047b38 move v0, v1                   |         v0 = v1;
    0x00047b3c lw v1, -0x7564(gp)            |         v1 = *((gp - 7513));
    0x00047b40 addu v0, v1, v0               |         v0 = v1 + v0;
    0x00047b44 lw v1, (v0)                   |         v1 = *(v0);
    0x00047b48 addiu v0, zero, 2             |         v0 = 2;
    0x00047b4c move s1, zero                 |         s1 = 0;
                                             |         if (v1 == v0) {
    0x00047b50 beq v1, v0, 0x47edc           |             goto label_3;
                                             |         }
    0x00047b54 lw a0, -0x7fa8(gp)            |         a0 = *((gp - 8170));
    0x00047b58 lw t9, -0x7958(gp)            |         t9 = *((gp - 7766));
    0x00047b5c move a1, s0                   |         a1 = s0;
    0x00047b60 addiu a0, a0, -0x7a14         |         a0 += -0x7a14;
    0x00047b64 bal 0x2f780                   |         sym_printf ();
    0x00047b68 move sp, fp                   |         
    0x00047b6c b 0x47ee0                     |         goto label_5;
                                             |     }
    0x00047b70 lw t9, -0x7cd0(gp)            |     t9 = *((gp - 7988));
    0x00047b74 move a0, v0                   |     a0 = v0;
    0x00047b78 addiu a1, zero, 2             |     a1 = 2;
    0x00047b7c bal 0x327e0                   |     sym_fsetlocking ();
    0x00047b80 lw gp, 0x10(fp)               |     gp = *(dest);
    0x00047b84 addiu a0, fp, 0x18            |     a0 = fp + 0x18;
    0x00047b88 lw t9, -0x7aa8(gp)            |     t9 = *((gp - 7850));
    0x00047b8c addiu a1, zero, 0x400         |     a1 = aav.0x00000400;
    0x00047b90 jalr t9                       |     t9 ();
    0x00047b94 lw gp, 0x10(fp)               |     gp = *(dest);
                                             |     if (v0 < 0) {
    0x00047b98 bgez v0, 0x47ba0              |         
    0x00047b9c sb zero, 0x18(fp)             |         *(var_18h) = 0;
                                             |     }
    0x00047ba0 lw t9, -0x7f90(gp)            |     t9 = *((gp - 8164));
    0x00047ba4 addiu a0, fp, 0x18            |     a0 = fp + 0x18;
    0x00047ba8 addiu a1, zero, 0x2e          |     a1 = 0x2e;
    0x00047bac bal 0x3b3e0                   |     sym_index ();
    0x00047bb0 move s4, v0                   |     s4 = v0;
    0x00047bb4 lw gp, 0x10(fp)               |     gp = *(dest);
                                             |     if (v0 == 0) {
    0x00047bb8 bnez v0, 0x47bd4              |         
    0x00047bbc lw t9, -0x7fdc(gp)            |         t9 = *((gp - 8183));
    0x00047bc0 addiu a0, fp, 0x18            |         a0 = fp + 0x18;
    0x00047bc4 bal 0x3b6b0                   |         sym_strlen ();
    0x00047bc8 lw gp, 0x10(fp)               |         gp = *(dest);
    0x00047bcc addiu v1, fp, 0x18            |         v1 = fp + 0x18;
    0x00047bd0 addu s4, v1, v0               |         s4 = v1 + v0;
                                             |     }
    0x00047bd4 lw s0, -0x7ecc(gp)            |     s0 = *((gp - 8115));
    0x00047bd8 move s1, zero                 |     s1 = 0;
    0x00047bdc addiu s0, s0, 0x1be4          |     s0 += 0x1be4;
    0x00047be0 b 0x47ea4                     |     goto label_6;
                                             | label_2:
    0x00047be4 addiu v1, zero, 1             |     v1 = 1;
    0x00047be8 addiu v1, zero, 0xb           |     v1 = 0xb;
                                             |     if (v0 != v1) {
    0x00047bec beq v0, v1, 0x47c34           |         
    0x00047bf0 lw v1, -0x7b0c(gp)            |         v1 = *((gp - 7875));
                                             |         if (v0 != v1) {
    0x00047bf4 bne v0, v1, 0x47ea8           |             goto label_7;
                                             |         }
    0x00047bf8 addiu t9, s6, 0x7740          |         t9 = s6 + 0x7740;
                                             |         if (s1 == 0) {
    0x00047bfc bnel s1, zero, 0x47e5c        |             goto label_8;
                                             |         }
    0x00047c00 jalr t9                       |         t9 ();
    0x00047c04 nop                           |         
    0x00047c08 addiu v1, zero, 0xa           |         v1 = 0xa;
    0x00047c0c lw gp, 0x10(fp)               |         gp = *(dest);
                                             |         if (v0 != v1) {
    0x00047c10 bne v0, v1, 0x47ea4           |             goto label_6;
                                             |         }
    0x00047c14 lw t9, -0x7d9c(gp)            |         t9 = *((gp - 8039));
    0x00047c18 move a0, s2                   |         a0 = s2;
    0x00047c1c move a1, s0                   |         a1 = s0;
    0x00047c20 bal 0x3c160                   |         sym_strcasecmp ();
    0x00047c24 lw gp, 0x10(fp)               |         gp = *(dest);
                                             |         if (v0 != 0) {
    0x00047c28 bnez v0, 0x47c3c              |             goto label_9;
                                             |         }
    0x00047c2c addiu t9, s6, 0x7740          |         t9 = s6 + 0x7740;
    0x00047c30 b 0x47e5c                     |         goto label_8;
                                             |     }
    0x00047c34 addiu s1, zero, 1             |     s1 = 1;
    0x00047c38 b 0x47e58                     |     goto label_10;
                                             | label_9:
    0x00047c3c lw t9, -0x7f90(gp)            |     t9 = *((gp - 8164));
    0x00047c40 move a0, s2                   |     a0 = s2;
    0x00047c44 addiu a1, zero, 0x2e          |     a1 = 0x2e;
    0x00047c48 bal 0x3b3e0                   |     sym_index ();
    0x00047c4c lw gp, 0x10(fp)               |     gp = *(dest);
                                             |     if (v0 == 0) {
    0x00047c50 beqz v0, 0x47ea4              |         goto label_6;
                                             |     }
    0x00047c54 lw t9, -0x7d9c(gp)            |     t9 = *((gp - 8039));
    0x00047c58 move a0, v0                   |     a0 = v0;
    0x00047c5c move a1, s4                   |     a1 = s4;
    0x00047c60 sw v0, 0x4b0(fp)              |     *(var_4b0h) = v0;
    0x00047c64 bal 0x3c160                   |     sym_strcasecmp ();
    0x00047c68 lw gp, 0x10(fp)               |     gp = *(dest);
    0x00047c6c lw a2, 0x4b0(fp)              |     a2 = *(var_4b0h);
                                             |     if (v0 != 0) {
    0x00047c70 bnez v0, 0x47ea4              |         goto label_6;
                                             |     }
    0x00047c74 lw t9, -0x7cec(gp)            |     t9 = *((gp - 7995));
    0x00047c78 subu v1, a2, s2               |     __asm ("subu v1, a2, s2");
    0x00047c7c move a2, v1                   |     a2 = v1;
    0x00047c80 sw v1, 0x4b0(fp)              |     *(var_4b0h) = v1;
    0x00047c84 move a0, s2                   |     a0 = s2;
    0x00047c88 move a1, s0                   |     a1 = s0;
    0x00047c8c bal 0x3c3c0                   |     sym_strncasecmp ();
    0x00047c90 lw gp, 0x10(fp)               |     gp = *(dest);
    0x00047c94 lw v1, 0x4b0(fp)              |     v1 = *(var_4b0h);
                                             |     if (v0 != 0) {
    0x00047c98 bnez v0, 0x47ea4              |         goto label_6;
                                             |     }
    0x00047c9c addu v1, v1, s0               |     v1 += s0;
    0x00047ca0 lbu v0, (v1)                  |     v0 = *(v1);
    0x00047ca4 move s1, zero                 |     s1 = 0;
    0x00047ca8 b 0x47d54                     |     goto label_11;
                                             | label_0:
    0x00047cac slti v1, v0, 4                |     v1 = (v0 < 4) ? 1 : 0;
                                             |     if (v0 == v1) {
    0x00047cb0 beq v0, v1, 0x47d64           |         goto label_12;
                                             |     }
                                             |     if (v1 != 0) {
    0x00047cb4 beql v1, zero, 0x47cd0        |         
    0x00047cb8 slti v0, v0, 6                |         v0 = (v0 < 6) ? 1 : 0;
    0x00047cbc addiu v1, zero, 2             |         v1 = 2;
    0x00047cc0 lw v0, -0x7fa8(gp)            |         v0 = *((gp - 8170));
                                             |         if (v0 != v1) {
    0x00047cc4 bne v0, v1, 0x47e48           |             goto label_13;
                                             |         }
    0x00047cc8 b 0x47ce0                     |         goto label_14;
    0x00047ccc nop                           |         
                                             |     }
    0x00047cd0 lw v0, -0x7fa8(gp)            |     v0 = *((gp - 8170));
                                             |     if (v0 == 0) {
    0x00047cd4 beqz v0, 0x47e48              |         goto label_13;
                                             |     }
    0x00047cd8 addiu t9, s6, 0x7740          |     t9 = s6 + 0x7740;
    0x00047cdc b 0x47e5c                     |     goto label_8;
                                             | label_14:
    0x00047ce0 jalr t9                       |     t9 ();
    0x00047ce4 nop                           |     
    0x00047ce8 lw gp, 0x10(fp)               |     gp = *(dest);
                                             |     if (v0 == 0) {
    0x00047cec beqz v0, 0x47e58              |         goto label_10;
                                             |     }
    0x00047cf0 lw a0, (s5)                   |     a0 = *(s5);
    0x00047cf4 lw t9, -0x7e94(gp)            |     t9 = *((gp - 8101));
                                             |     if (a0 != 0) {
    0x00047cf8 bnez a0, 0x47d48              |         goto label_15;
                                             |     }
    0x00047cfc lw t9, -0x7fdc(gp)            |     t9 = *((gp - 8183));
    0x00047d00 move a0, s0                   |     a0 = s0;
    0x00047d04 bal 0x3b6b0                   |     sym_strlen ();
    0x00047d08 lw gp, 0x10(fp)               |     gp = *(dest);
    0x00047d0c lw t9, -0x75a0(gp)            |     t9 = *((gp - 7528));
    0x00047d10 addiu a0, v0, 1               |     a0 = v0 + 1;
    0x00047d14 jalr t9                       |     t9 ();
    0x00047d18 lw gp, 0x10(fp)               |     gp = *(dest);
    0x00047d1c bnez v0, 0x47d30              |     
                                             |     while (v0 == 0) {
    0x00047d20 lw a0, -0x7fa8(gp)            |         a0 = *((gp - 8170));
    0x00047d24 lw t9, -0x7958(gp)            |         t9 = *((gp - 7766));
    0x00047d28 addiu a0, a0, -0x5378         |         a0 += -0x5378;
    0x00047d2c b 0x47ddc                     |         goto label_16;
    0x00047d30 lw t9, -0x7f44(gp)            |         t9 = *((gp - 8145));
    0x00047d34 move a0, v0                   |         a0 = v0;
    0x00047d38 move a1, s0                   |         a1 = s0;
    0x00047d3c bal 0x3b600                   |         sym_strcpy ();
    0x00047d40 sw v0, (s5)                   |         *(s5) = v0;
    0x00047d44 b 0x47e58                     |         goto label_10;
                                             | label_15:
    0x00047d48 move a1, s0                   |         a1 = s0;
    0x00047d4c bal 0x3b5d0                   |         sym_strcmp ();
    0x00047d50 lw gp, 0x10(fp)               |         gp = *(dest);
                                             | label_11:
    0x00047d54 addiu t9, s6, 0x7740          |         t9 = s6 + 0x7740;
                                             |         if (v0 == 0) {
    0x00047d58 beqz v0, 0x47e5c              |             goto label_8;
                                             |         }
    0x00047d5c lw v1, -0x7b0c(gp)            |         v1 = *((gp - 7875));
    0x00047d60 b 0x47ea8                     |         goto label_7;
                                             | label_12:
    0x00047d64 lw a1, -0x7fa8(gp)            |         a1 = *((gp - 8170));
    0x00047d68 lw t9, -0x7e94(gp)            |         t9 = *((gp - 8101));
    0x00047d6c lw a0, (s5)                   |         a0 = *(s5);
    0x00047d70 addiu a1, a1, -0x5368         |         a1 += -0x5368;
    0x00047d74 bal 0x3b5d0                   |         sym_strcmp ();
    0x00047d78 lw gp, 0x10(fp)               |         gp = *(dest);
                                             |         if (v0 != 0) {
    0x00047d7c beqz v0, 0x47dec              |             
    0x00047d80 lw t9, -0x79c0(gp)            |             t9 = *((gp - 7792));
    0x00047d84 lw a0, 0x1be0(s3)             |             a0 = *((s3 + 1784));
    0x00047d88 bal 0x387c0                   |             sym_fileno ();
    0x00047d8c lw gp, 0x10(fp)               |             gp = *(dest);
    0x00047d90 move a0, v0                   |             a0 = v0;
    0x00047d94 lw t9, -0x7e90(gp)            |             t9 = *((gp - 8100));
    0x00047d98 addiu a1, fp, 0x418           |             a1 = fp + aav.0x00000418;
    0x00047d9c jalr t9                       |             t9 ();
    0x00047da0 lw gp, 0x10(fp)               |             gp = *(dest);
                                             |             if (v0 < 0) {
    0x00047da4 bltz v0, 0x47dec              |                 goto label_17;
                                             |             }
    0x00047da8 lw v0, 0x42c(fp)              |             v0 = *(var_42ch);
    0x00047dac andi v0, v0, 0x3f             |             v0 &= 0x3f;
    0x00047db0 addiu t9, s6, 0x7740          |             t9 = s6 + 0x7740;
                                             |             if (v0 == 0) {
    0x00047db4 beqz v0, 0x47df0              |                 goto label_18;
                                             |             }
    0x00047db8 lw s0, -0x7958(gp)            |             s0 = *((gp - 7766));
    0x00047dbc lw a0, -0x7fa8(gp)            |             a0 = *((gp - 8170));
    0x00047dc0 move t9, s0                   |             t9 = s0;
    0x00047dc4 addiu a0, a0, -0x535c         |             a0 += -0x535c;
    0x00047dc8 bal 0x2f780                   |             sym_printf ();
    0x00047dcc lw gp, 0x10(fp)               |             gp = *(dest);
    0x00047dd0 move t9, s0                   |             t9 = s0;
    0x00047dd4 lw a0, -0x7fa8(gp)            |             a0 = *((gp - 8170));
    0x00047dd8 addiu a0, a0, -0x5330         |             a0 += -0x5330;
                                             | label_16:
    0x00047ddc bal 0x2f780                   |             sym_printf ();
    0x00047de0 nop                           |             
    0x00047de4 lw gp, 0x10(fp)               |             gp = *(dest);
    0x00047de8 b 0x47ecc                     |             goto label_19;
                                             |         }
                                             | label_17:
    0x00047dec addiu t9, s6, 0x7740          |         t9 = s6 + 0x7740;
                                             | label_18:
    0x00047df0 bal 0x47740                   |         fcn_00047740 ();
    0x00047df4 nop                           |         
    0x00047df8 lw gp, 0x10(fp)               |         gp = *(dest);
                                             |         if (v0 == 0) {
    0x00047dfc beqz v0, 0x47e58              |             goto label_10;
                                             |         }
    0x00047e00 lw v0, (s7)                   |         v0 = *(s7);
    0x00047e04 addiu t9, s6, 0x7740          |         t9 = s6 + 0x7740;
                                             |         if (v0 != 0) {
    0x00047e08 bnez v0, 0x47e5c              |             goto label_8;
                                             |         }
    0x00047e0c lw t9, -0x7fdc(gp)            |         t9 = *((gp - 8183));
    0x00047e10 move a0, s0                   |         a0 = s0;
    0x00047e14 bal 0x3b6b0                   |         sym_strlen ();
    0x00047e18 lw gp, 0x10(fp)               |         gp = *(dest);
    0x00047e1c lw t9, -0x75a0(gp)            |         t9 = *((gp - 7528));
    0x00047e20 addiu a0, v0, 1               |         a0 = v0 + 1;
    0x00047e24 jalr t9                       |         t9 ();
    0x00047e28 lw gp, 0x10(fp)               |         gp = *(dest);
    0x00047e2c beqz v0, 0x47d20              |         
                                             |     }
    0x00047e30 lw t9, -0x7f44(gp)            |     t9 = *((gp - 8145));
    0x00047e34 move a0, v0                   |     a0 = v0;
    0x00047e38 move a1, s0                   |     a1 = s0;
    0x00047e3c bal 0x3b600                   |     sym_strcpy ();
    0x00047e40 sw v0, (s7)                   |     *(s7) = v0;
    0x00047e44 b 0x47e58                     |     goto label_10;
                                             | label_13:
    0x00047e48 lw t9, -0x7958(gp)            |     t9 = *((gp - 7766));
    0x00047e4c move a1, s0                   |     a1 = s0;
    0x00047e50 addiu a0, v0, -0x52fc         |     a0 = v0 + -0x52fc;
    0x00047e54 bal 0x2f780                   |     sym_printf ();
                                             | label_10:
    0x00047e58 addiu t9, s6, 0x7740          |     t9 = s6 + 0x7740;
                                             | label_8:
    0x00047e5c sw t9, 0x4b0(fp)              |     *(var_4b0h) = t9;
    0x00047e60 bal 0x47740                   |     fcn_00047740 ();
    0x00047e64 lw gp, 0x10(fp)               |     gp = *(dest);
    0x00047e68 lw t9, 0x4b0(fp)              |     t9 = *(var_4b0h);
    0x00047e6c bnez v0, 0x47e88              |     
                                             |     while (v0 == v1) {
    0x00047e70 lw a0, 0x1be0(s3)             |         a0 = *((s3 + 1784));
                                             | label_1:
    0x00047e74 lw t9, -0x7dcc(gp)            |         t9 = *((gp - 8051));
    0x00047e78 move s1, zero                 |         s1 = 0;
    0x00047e7c bal 0x2de40                   |         sym_fclose ();
    0x00047e80 move sp, fp                   |         
    0x00047e84 b 0x47ee0                     |         goto label_5;
    0x00047e88 addiu v1, zero, 0xb           |         v1 = 0xb;
    0x00047e8c addiu v1, zero, 1             |         v1 = 1;
    0x00047e90 beq v0, v1, 0x47e70           |         
                                             |     }
    0x00047e94 addiu v1, zero, 3             |     v1 = 3;
                                             |     if (v0 != v1) {
    0x00047e98 bne v0, v1, 0x47cac           |         goto label_0;
                                             |     }
    0x00047e9c lw a0, 0x1be0(s3)             |     a0 = *((s3 + 1784));
    0x00047ea0 b 0x47e74                     |     goto label_1;
                                             | label_6:
    0x00047ea4 lw v1, -0x7b0c(gp)            |     v1 = *((gp - 7875));
                                             | label_7:
    0x00047ea8 addiu t9, v1, 0x7740          |     t9 = v1 + 0x7740;
    0x00047eac sw t9, 0x4b0(fp)              |     *(var_4b0h) = t9;
    0x00047eb0 bal 0x47740                   |     fcn_00047740 ();
    0x00047eb4 lw gp, 0x10(fp)               |     gp = *(dest);
    0x00047eb8 lw t9, 0x4b0(fp)              |     t9 = *(var_4b0h);
    0x00047ebc lw s6, -0x7b0c(gp)            |     s6 = *((gp - 7875));
                                             |     if (v0 != 0) {
    0x00047ec0 bnez v0, 0x47be4              |         goto label_2;
                                             |     }
    0x00047ec4 lw a0, 0x1be0(s3)             |     a0 = *((s3 + 1784));
    0x00047ec8 b 0x47e74                     |     goto label_1;
                                             | label_19:
    0x00047ecc lw t9, -0x7dcc(gp)            |     t9 = *((gp - 8051));
    0x00047ed0 lw a0, 0x1be0(s3)             |     a0 = *((s3 + 1784));
    0x00047ed4 bal 0x2de40                   |     sym_fclose ();
                                             | label_4:
    0x00047ed8 addiu s1, zero, -1            |     s1 = -1;
                                             | label_3:
    0x00047edc move sp, fp                   |     
                                             | label_5:
    0x00047ee0 lw ra, 0x4dc(sp)              |     ra = *(var_4dch);
    0x00047ee4 move v0, s1                   |     v0 = s1;
    0x00047ee8 lw fp, 0x4d8(sp)              |     fp = *(var_4d8h);
    0x00047eec lw s7, 0x4d4(sp)              |     s7 = *(var_4d4h);
    0x00047ef0 lw s6, 0x4d0(sp)              |     s6 = *(var_4d0h);
    0x00047ef4 lw s5, 0x4cc(sp)              |     s5 = *(var_4cch);
    0x00047ef8 lw s4, 0x4c8(sp)              |     s4 = *(var_4c8h);
    0x00047efc lw s3, 0x4c4(sp)              |     s3 = *(var_4c4h);
    0x00047f00 lw s2, 0x4c0(sp)              |     s2 = *(var_4c0h);
    0x00047f04 lw s1, 0x4bc(sp)              |     s1 = *(var_4bch);
    0x00047f08 lw s0, 0x4b8(sp)              |     s0 = *(var_4b8h);
    0x00047f0c addiu sp, sp, 0x4e0           |     
    0x00047f10 jr ra                         |     return v0;
                                             | }

[*] Function strcat used 3 times libuClibc-0.9.33.2.so