[*] Binary protection state of login.shadow

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


[*] Function strcpy tear down of login.shadow

    ; assembly                           | /* r2dec pseudo code output */
                                         | /* /logs/firmware/unblob_extracted/firmware_extract/4325012-58052244.squashfs_v4_le_extract/usr/bin/login.shadow @ 0x688c */
                                         | #include <stdint.h>
                                         |  
    ; (fcn) fcn.0000688c ()              | void fcn_0000688c () {
    0x0000688c lui gp, 2                 |     
    0x00006890 addiu gp, gp, 0x1a94      |     
    0x00006894 addu gp, gp, t9           |     gp += t9;
    0x00006898 addiu sp, sp, -0x1460     |     
    0x0000689c lw t9, -0x7dc0(gp)        |     t9 = sym.imp.memset;
    0x000068a0 sw s7, 0x1454(sp)         |     *(var_1454h) = s7;
    0x000068a4 lw s7, -0x7cb8(gp)        |     s7 = *((gp - 7982));
    0x000068a8 sw s0, 0x1438(sp)         |     *(var_1438h) = s0;
    0x000068ac addiu s0, sp, 0x34        |     s0 = sp + 0x34;
    0x000068b0 lw v0, (s7)               |     v0 = *(s7);
    0x000068b4 sw ra, 0x145c(sp)         |     *(var_145ch) = ra;
    0x000068b8 sw gp, 0x18(sp)           |     *(var_18h_2) = gp;
    0x000068bc sw fp, 0x1458(sp)         |     *(var_1458h) = fp;
    0x000068c0 sw s6, 0x1450(sp)         |     *(var_1450h) = s6;
    0x000068c4 sw s3, 0x1444(sp)         |     *(var_1444h) = s3;
    0x000068c8 sw s2, 0x1440(sp)         |     *(var_1440h) = s2;
    0x000068cc addiu a2, zero, 0x400     |     a2 = 0x400;
    0x000068d0 move a1, zero             |     a1 = 0;
    0x000068d4 sw s5, 0x144c(sp)         |     *(var_144ch) = s5;
    0x000068d8 sw s4, 0x1448(sp)         |     *(var_1448h) = s4;
    0x000068dc sw s1, 0x143c(sp)         |     *(var_143ch) = s1;
    0x000068e0 move s6, a0               |     s6 = a0;
    0x000068e4 sw v0, 0x1434(sp)         |     *(var_1434h) = v0;
    0x000068e8 move a0, s0               |     a0 = s0;
    0x000068ec jalr t9                   |     t9 ();
    0x000068f0 lw gp, 0x18(sp)           |     gp = *(var_18h_2);
    0x000068f4 addiu s3, sp, 0x434       |     s3 = sp + 0x434;
    0x000068f8 addiu a2, zero, 0x400     |     a2 = 0x400;
    0x000068fc lw t9, -0x7dc0(gp)        |     t9 = sym.imp.memset;
    0x00006900 move a1, zero             |     a1 = 0;
    0x00006904 move a0, s3               |     a0 = s3;
    0x00006908 jalr t9                   |     t9 ();
    0x0000690c lw gp, 0x18(sp)           |     gp = *(var_18h_2);
    0x00006910 addiu fp, sp, 0x834       |     fp = sp + 0x834;
    0x00006914 addiu a2, zero, 0x400     |     a2 = 0x400;
    0x00006918 lw t9, -0x7dc0(gp)        |     t9 = sym.imp.memset;
    0x0000691c move a1, zero             |     a1 = 0;
    0x00006920 move a0, fp               |     a0 = fp;
    0x00006924 jalr t9                   |     t9 ();
    0x00006928 lw gp, 0x18(sp)           |     gp = *(var_18h_2);
    0x0000692c addiu v0, sp, 0xc34       |     v0 = sp + 0xc34;
    0x00006930 addiu a2, zero, 0x400     |     a2 = 0x400;
    0x00006934 lw t9, -0x7dc0(gp)        |     t9 = sym.imp.memset;
    0x00006938 move a1, zero             |     a1 = 0;
    0x0000693c move a0, v0               |     a0 = v0;
    0x00006940 sw v0, 0x24(sp)           |     *(var_24h_2) = v0;
    0x00006944 jalr t9                   |     t9 ();
    0x00006948 lw gp, 0x18(sp)           |     gp = *(var_18h_2);
    0x0000694c addiu s2, sp, 0x1034      |     s2 = sp + 0x1034;
    0x00006950 addiu a2, zero, 0x400     |     a2 = 0x400;
    0x00006954 lw t9, -0x7dc0(gp)        |     t9 = sym.imp.memset;
    0x00006958 move a1, zero             |     a1 = 0;
    0x0000695c move a0, s2               |     a0 = s2;
    0x00006960 jalr t9                   |     t9 ();
    0x00006964 lw gp, 0x18(sp)           |     gp = *(var_18h_2);
    0x00006968 lw a1, -0x7fd4(gp)        |     a1 = *((gp - 8181));
    0x0000696c lw a0, -0x7fd4(gp)        |     a0 = *((gp - 8181));
    0x00006970 lw t9, -0x7e30(gp)        |     t9 = sym.imp.fopen64;
    0x00006974 addiu a1, a1, -0x2030     |     a1 += -0x2030;
    0x00006978 addiu a0, a0, -0x1888     |     a0 += -0x1888;
    0x0000697c jalr t9                   |     t9 ();
    0x00006980 lw gp, 0x18(sp)           |     gp = *(var_18h_2);
                                         |     if (v0 == 0) {
    0x00006984 beqz v0, 0x6adc           |         goto label_8;
                                         |     }
    0x00006988 move s1, v0               |     s1 = v0;
    0x0000698c lw s4, -0x7fd4(gp)        |     s4 = *((gp - 8181));
    0x00006990 lw s5, -0x7fd4(gp)        |     s5 = *((gp - 8181));
    0x00006994 lw v0, -0x7fd4(gp)        |     v0 = *((gp - 8181));
    0x00006998 addiu s4, s4, -0x187c     |     s4 += -0x187c;
    0x0000699c addiu s5, s5, -0x1850     |     s5 += -0x1850;
    0x000069a0 sw v0, 0x28(sp)           |     *(var_28h_2) = v0;
                                         |     do {
                                         | label_0:
    0x000069a4 lw t9, -0x7cc0(gp)        |         t9 = sym.imp.fgets;
                                         | label_1:
    0x000069a8 move a2, s1               |         a2 = s1;
    0x000069ac addiu a1, zero, 0x400     |         a1 = 0x400;
    0x000069b0 move a0, s0               |         a0 = s0;
    0x000069b4 jalr t9                   |         t9 ();
    0x000069b8 lw gp, 0x18(sp)           |         gp = *(var_18h_2);
                                         |         if (v0 == 0) {
    0x000069bc beqz v0, 0x6ab8           |             goto label_9;
                                         |         }
    0x000069c0 lb v0, 0x34(sp)           |         v0 = *(var_34h_2);
    0x000069c4 addiu v1, zero, 0x23      |         v1 = 0x23;
    0x000069c8 addiu v1, zero, 0xa       |         v1 = 0xa;
    0x000069cc beq v0, v1, 0x69a4        |         
                                         |     } while (v0 == v1);
    0x000069d0 lw t9, -0x7dc0(gp)        |     t9 = sym.imp.memset;
                                         |     if (v0 == v1) {
    0x000069d4 beq v0, v1, 0x69a4        |         goto label_0;
                                         |     }
    0x000069d8 addiu a2, zero, 0x400     |     a2 = 0x400;
    0x000069dc move a1, zero             |     a1 = 0;
    0x000069e0 move a0, s2               |     a0 = s2;
    0x000069e4 jalr t9                   |     t9 ();
    0x000069e8 lw gp, 0x18(sp)           |     gp = *(var_18h_2);
    0x000069ec move a3, s2               |     a3 = s2;
    0x000069f0 move a2, s3               |     a2 = s3;
    0x000069f4 lw t9, -0x7e20(gp)        |     t9 = sym.imp.sscanf;
    0x000069f8 move a1, s4               |     a1 = s4;
    0x000069fc move a0, s0               |     a0 = s0;
    0x00006a00 jalr t9                   |     t9 ();
    0x00006a04 addiu v1, zero, 2         |     v1 = 2;
    0x00006a08 lw gp, 0x18(sp)           |     gp = *(var_18h_2);
                                         |     if (v0 != v1) {
    0x00006a0c bne v0, v1, 0x69a4        |         goto label_0;
                                         |     }
    0x00006a10 lw t9, -0x7c80(gp)        |     t9 = sym.imp.strcmp;
    0x00006a14 move a1, s6               |     a1 = s6;
    0x00006a18 move a0, s3               |     a0 = s3;
    0x00006a1c jalr t9                   |     t9 ();
    0x00006a20 lw gp, 0x18(sp)           |     gp = *(var_18h_2);
                                         |     if (v0 == 0) {
    0x00006a24 beqz v0, 0x6aa0           |         goto label_10;
                                         |     }
    0x00006a28 lw t9, -0x7c80(gp)        |     t9 = sym.imp.strcmp;
    0x00006a2c move a1, s5               |     a1 = s5;
    0x00006a30 move a0, s3               |     a0 = s3;
    0x00006a34 jalr t9                   |     t9 ();
    0x00006a38 lw gp, 0x18(sp)           |     gp = *(var_18h_2);
                                         |     if (v0 == 0) {
    0x00006a3c beqz v0, 0x6b20           |         goto label_11;
                                         |     }
    0x00006a40 lb v1, 0x434(sp)          |     v1 = *(var_434h);
    0x00006a44 addiu v0, zero, 0x40      |     v0 = 0x40;
    0x00006a48 lw t9, -0x7cc0(gp)        |     t9 = sym.imp.fgets;
                                         |     if (v1 != v0) {
    0x00006a4c bne v1, v0, 0x69a8        |         goto label_1;
                                         |     }
    0x00006a50 lw t9, -0x7e74(gp)        |     t9 = sym.imp.getgrnam;
    0x00006a54 addiu v0, sp, 0x435       |     v0 = sp + 0x435;
    0x00006a58 sw v0, 0x2c(sp)           |     *(var_2ch_3) = v0;
    0x00006a5c move a0, v0               |     a0 = v0;
    0x00006a60 jalr t9                   |     t9 ();
    0x00006a64 lw gp, 0x18(sp)           |     gp = *(var_18h_2);
                                         |     if (v0 == 0) {
    0x00006a68 beqz v0, 0x6f48           |         goto label_12;
                                         |     }
    0x00006a6c lw t9, -0x7ef8(gp)        |     t9 = sym.is_on_list;
    0x00006a70 lw a0, 0xc(v0)            |     a0 = *((v0 + 3));
    0x00006a74 move a1, s6               |     a1 = s6;
    0x00006a78 bal 0x777c                |     sym_is_on_list ();
    0x00006a7c lw gp, 0x18(sp)           |     gp = *(var_18h_2);
                                         |     if (v0 == 0) {
    0x00006a80 beqz v0, 0x69a4           |         goto label_0;
                                         |     }
    0x00006a84 lw t9, -0x7dec(gp)        |     t9 = sym.imp.__strcpy_chk
    0x00006a88 addiu a2, zero, 0x400     |     a2 = 0x400;
    0x00006a8c move a1, s2               |     a1 = s2;
    0x00006a90 move a0, fp               |     a0 = fp;
    0x00006a94 jalr t9                   |     t9 ();
    0x00006a98 lw gp, 0x18(sp)           |     gp = *(var_18h_2);
    0x00006a9c b 0x69a4                  |     goto label_0;
                                         | label_10:
    0x00006aa0 lw t9, -0x7dec(gp)        |     t9 = sym.imp.__strcpy_chk
    0x00006aa4 addiu a2, zero, 0x400     |     a2 = 0x400;
    0x00006aa8 move a1, s2               |     a1 = s2;
    0x00006aac move a0, fp               |     a0 = fp;
    0x00006ab0 jalr t9                   |     t9 ();
    0x00006ab4 lw gp, 0x18(sp)           |     gp = *(var_18h_2);
                                         | label_9:
    0x00006ab8 lw t9, -0x7e2c(gp)        |     t9 = sym.imp.fclose;
    0x00006abc move a0, s1               |     a0 = s1;
    0x00006ac0 jalr t9                   |     t9 ();
    0x00006ac4 lb s0, 0x834(sp)          |     s0 = *(var_834h);
    0x00006ac8 lw gp, 0x18(sp)           |     gp = *(var_18h_2);
                                         |     if (s0 == 0) {
    0x00006acc bnez s0, 0x6b54           |         
    0x00006ad0 lb v0, 0xc34(sp)          |         v0 = *(var_c34h);
    0x00006ad4 lw t9, -0x7dec(gp)        |         t9 = sym.imp.__strcpy_chk
                                         |         if (v0 == 0) {
    0x00006ad8 bnez v0, 0x6b3c           |             
                                         | label_8:
    0x00006adc move s1, zero             |             s1 = 0;
                                         | label_2:
    0x00006ae0 lw a0, 0x1434(sp)         |             a0 = *(var_1434h);
    0x00006ae4 lw v1, (s7)               |             v1 = *(s7);
    0x00006ae8 move v0, s1               |             v0 = s1;
                                         |             if (a0 != v1) {
    0x00006aec bne a0, v1, 0x6f94        |                 goto label_13;
                                         |             }
    0x00006af0 lw ra, 0x145c(sp)         |             ra = *(var_145ch);
    0x00006af4 lw fp, 0x1458(sp)         |             fp = *(var_1458h);
    0x00006af8 lw s7, 0x1454(sp)         |             s7 = *(var_1454h);
    0x00006afc lw s6, 0x1450(sp)         |             s6 = *(var_1450h);
    0x00006b00 lw s5, 0x144c(sp)         |             s5 = *(var_144ch);
    0x00006b04 lw s4, 0x1448(sp)         |             s4 = *(var_1448h);
    0x00006b08 lw s3, 0x1444(sp)         |             s3 = *(var_1444h);
    0x00006b0c lw s2, 0x1440(sp)         |             s2 = *(var_1440h);
    0x00006b10 lw s1, 0x143c(sp)         |             s1 = *(var_143ch);
    0x00006b14 lw s0, 0x1438(sp)         |             s0 = *(var_1438h);
    0x00006b18 addiu sp, sp, 0x1460      |             
    0x00006b1c jr ra                     |             return v0;
                                         | label_11:
    0x00006b20 lw t9, -0x7dec(gp)        |             t9 = sym.imp.__strcpy_chk
    0x00006b24 lw a0, 0x24(sp)           |             a0 = *(var_24h_2);
    0x00006b28 addiu a2, zero, 0x400     |             a2 = 0x400;
    0x00006b2c move a1, s2               |             a1 = s2;
    0x00006b30 jalr t9                   |             t9 ();
    0x00006b34 lw gp, 0x18(sp)           |             gp = *(var_18h_2);
    0x00006b38 b 0x69a4                  |             goto label_0;
                                         |         }
    0x00006b3c lw a1, 0x24(sp)           |         a1 = *(var_24h_2);
    0x00006b40 addiu a2, zero, 0x400     |         a2 = 0x400;
    0x00006b44 move a0, fp               |         a0 = fp;
    0x00006b48 jalr t9                   |         t9 ();
    0x00006b4c lw gp, 0x18(sp)           |         gp = *(var_18h_2);
    0x00006b50 lb s0, 0x834(sp)          |         s0 = *(var_834h);
                                         |     }
    0x00006b54 move s4, fp               |     s4 = fp;
    0x00006b58 addiu v0, zero, 0x20      |     v0 = 0x20;
    0x00006b5c addiu v1, zero, 9         |     v1 = 9;
                                         |     do {
                                         |         if (s0 != v0) {
    0x00006b60 beql s0, v0, 0x6b74       |             
    0x00006b64 addiu s4, s4, 1           |             s4++;
    0x00006b68 lw a1, -0x7fd4(gp)        |             a1 = *((gp - 8181));
                                         |             if (s0 != v1) {
    0x00006b6c bne s0, v1, 0x6b7c        |                 goto label_14;
                                         |             }
    0x00006b70 addiu s4, s4, 1           |             s4++;
                                         |         }
    0x00006b74 lb s0, (s4)               |         s0 = *(s4);
    0x00006b78 b 0x6b60                  |         
                                         |     } while (1);
                                         | label_14:
    0x00006b7c lw t9, -0x7c80(gp)        |     t9 = sym.imp.strcmp;
    0x00006b80 addiu a1, a1, -0x188c     |     a1 += -0x188c;
    0x00006b84 move a0, s4               |     a0 = s4;
    0x00006b88 jalr t9                   |     t9 ();
    0x00006b8c lw gp, 0x18(sp)           |     gp = *(var_18h_2);
                                         |     if (v0 == 0) {
    0x00006b90 beqz v0, 0x6f04           |         goto label_15;
                                         |     }
                                         | label_5:
    0x00006b94 lw v0, -0x7fd4(gp)        |     v0 = *((gp - 8181));
    0x00006b98 lw s2, -0x7fd4(gp)        |     s2 = *((gp - 8181));
    0x00006b9c sw v0, 0x24(sp)           |     *(var_24h_2) = v0;
    0x00006ba0 lw v0, -0x7fd4(gp)        |     v0 = *((gp - 8181));
    0x00006ba4 lw s3, -0x7fc4(gp)        |     s3 = *((gp - 8177));
    0x00006ba8 sw v0, 0x28(sp)           |     *(var_28h_2) = v0;
    0x00006bac lw v0, -0x7fd4(gp)        |     v0 = *((gp - 8181));
    0x00006bb0 move fp, zero             |     fp = 0;
    0x00006bb4 addiu v0, v0, -0x1808     |     v0 += -0x1808;
    0x00006bb8 move s1, zero             |     s1 = 0;
    0x00006bbc addiu s2, s2, -0x1710     |     s2 += -0x1710;
    0x00006bc0 addiu s3, s3, 0x6790      |     s3 += fcn.00006790;
    0x00006bc4 sw v0, 0x2c(sp)           |     *(var_2ch_3) = v0;
                                         |     if (s0 == 0) {
                                         | label_4:
    0x00006bc8 beqz s0, 0x6ae0           |         goto label_2;
                                         |     }
    0x00006bcc nop                       |     
    0x00006bd0 addiu s0, s0, -0x41       |     s0 += -0x41;
    0x00006bd4 andi v0, s0, 0xff         |     v0 = s0 & 0xff;
    0x00006bd8 sltiu v1, v0, 0x35        |     v1 = (v0 < 0x35) ? 1 : 0;
    0x00006bdc addiu s0, s4, 1           |     s0 = s4 + 1;
                                         |     if (v1 == 0) {
    0x00006be0 beqz v1, 0x6f14           |         goto label_16;
                                         |     }
    0x00006be4 sll v0, v0, 2             |     v0 <<= 2;
    0x00006be8 lwx v0, v0(s2)            |     __asm ("lwx v0, v0(s2)");
    0x00006bec addu v0, v0, gp           |     v0 += gp;
    0x00006bf0 jr v0                     |     v0 ();
    0x00006bf4 nop                       |     
                                         | label_7:
    0x00006c14 lw t9, -0x7e88(gp)        |     t9 = sym.imp.__ctype_b_loc;
                                         | label_6:
    0x00006c18 move s4, s0               |     s4 = s0;
    0x00006c1c jalr t9                   |     t9 ();
    0x00006c20 lw a2, (v0)               |     a2 = *(v0);
    0x00006c24 lw gp, 0x18(sp)           |     gp = *(var_18h_2);
    0x00006c28 addiu a1, zero, 0x2d      |     a1 = 0x2d;
    0x00006c2c addiu a0, zero, 0x20      |     a0 = 0x20;
    0x00006c30 addiu v1, zero, 9         |     v1 = 9;
                                         |     do {
                                         | label_3:
    0x00006c34 lb s0, (s4)               |         s0 = *(s4);
    0x00006c38 sll v0, s0, 1             |         v0 = s0 << 1;
    0x00006c3c addu v0, a2, v0           |         v0 = a2 + v0;
    0x00006c40 lhu v0, (v0)              |         v0 = *(v0);
    0x00006c44 andi v0, v0, 0x800        |         v0 &= 0x800;
    0x00006c48 addiu s4, s4, 1           |         s4++;
    0x00006c4c bnel v0, zero, 0x6c34     |         
                                         |     } while (v0 == 0);
                                         |     if (s0 == a1) {
    0x00006c50 beql s0, a1, 0x6c34       |         goto label_3;
                                         |     }
    0x00006c54 addiu s4, s4, 1           |     s4++;
                                         |     if (s0 == a0) {
    0x00006c58 beql s0, a0, 0x6c34       |         goto label_3;
                                         |     }
    0x00006c5c addiu s4, s4, 1           |     s4++;
                                         |     if (s0 != v1) {
    0x00006c60 bne s0, v1, 0x6bc8        |         goto label_4;
                                         |     }
    0x00006c64 nop                       |     
    0x00006c68 addiu s4, s4, 1           |     s4++;
    0x00006c6c b 0x6c34                  |     goto label_3;
                                         | label_15:
    0x00006f04 lw s4, -0x7fd4(gp)        |     s4 = *((gp - 8181));
    0x00006f08 addiu s0, zero, 0x41      |     s0 = 0x41;
    0x00006f0c addiu s4, s4, -0x18b4     |     s4 += -0x18b4;
    0x00006f10 b 0x6b94                  |     goto label_5;
                                         | label_16:
    0x00006f14 lw t9, -0x7e88(gp)        |     t9 = sym.imp.__ctype_b_loc;
                                         |     if (fp != 0) {
    0x00006f18 bnez fp, 0x6c18           |         goto label_6;
                                         |     }
    0x00006f1c lw v0, 0x24(sp)           |     v0 = *(var_24h_2);
    0x00006f20 lw t9, -0x7dfc(gp)        |     t9 = sym.imp.__syslog_chk;
    0x00006f24 move a3, s4               |     a3 = s4;
    0x00006f28 addiu a2, v0, -0x17e4     |     a2 = v0 + -0x17e4;
    0x00006f2c addiu a1, zero, 1         |     a1 = 1;
    0x00006f30 addiu a0, zero, 4         |     a0 = 4;
    0x00006f34 jalr t9                   |     t9 ();
    0x00006f38 ori s1, s1, 1             |     s1 |= 1;
    0x00006f3c lw gp, 0x18(sp)           |     gp = *(var_18h_2);
    0x00006f40 addiu fp, zero, 1         |     fp = 1;
    0x00006f44 b 0x6c14                  |     goto label_7;
                                         | label_12:
    0x00006f48 lw v0, 0x28(sp)           |     v0 = *(var_28h_2);
    0x00006f4c lw t9, -0x7dfc(gp)        |     t9 = sym.imp.__syslog_chk;
    0x00006f50 lw a3, 0x2c(sp)           |     a3 = *(var_2ch_3);
    0x00006f54 addiu a2, v0, -0x184c     |     a2 = v0 + -0x184c;
    0x00006f58 addiu a1, zero, 1         |     a1 = 1;
    0x00006f5c addiu a0, zero, 4         |     a0 = 4;
    0x00006f60 jalr t9                   |     t9 ();
    0x00006f64 lw gp, 0x18(sp)           |     gp = *(var_18h_2);
    0x00006f68 b 0x69a4                  |     goto label_0;
                                         | label_13:
    0x00006f94 lw t9, -0x7cec(gp)        |     t9 = sym.imp.__stack_chk_fail;
    0x00006f98 jalr t9                   |     t9 ();
    0x00006f9c nop                       |     
                                         | }
    ; assembly                           | /* r2dec pseudo code output */
                                         | /* /logs/firmware/unblob_extracted/firmware_extract/4325012-58052244.squashfs_v4_le_extract/usr/bin/login.shadow @ 0x5300 */
                                         | #include <stdint.h>
                                         |  
    ; (fcn) sym.console ()               | void console () {
    0x00005300 lui gp, 2                 |     
    0x00005304 addiu gp, gp, 0x3020      |     
    0x00005308 addu gp, gp, t9           |     gp += t9;
    0x0000530c addiu sp, sp, -0x100      |     
    0x00005310 lw a1, -0x7fd4(gp)        |     a1 = *((gp - 8181));
    0x00005314 sw s2, 0xf4(sp)           |     *(var_f4h) = s2;
    0x00005318 lw s2, -0x7cb8(gp)        |     s2 = *((gp - 7982));
    0x0000531c lw t9, -0x7e48(gp)        |     t9 = sym.imp.strncmp;
    0x00005320 sw gp, 0x10(sp)           |     *(var_10h_2) = gp;
    0x00005324 lw v0, (s2)               |     v0 = *(s2);
    0x00005328 sw s0, 0xec(sp)           |     *(var_ech) = s0;
    0x0000532c sw ra, 0xfc(sp)           |     *(var_fch) = ra;
    0x00005330 sw s3, 0xf8(sp)           |     *(var_f8h) = s3;
    0x00005334 sw s1, 0xf0(sp)           |     *(var_f0h) = s1;
    0x00005338 addiu a2, zero, 5         |     a2 = 5;
    0x0000533c addiu a1, a1, -0x1b54     |     a1 += -0x1b54;
    0x00005340 sw v0, 0xe4(sp)           |     *(var_e4h) = v0;
    0x00005344 move s0, a0               |     s0 = a0;
    0x00005348 jalr t9                   |     t9 ();
    0x0000534c lw gp, 0x10(sp)           |     gp = *(var_10h_2);
                                         |     if (v0 == 0) {
    0x00005350 bnez v0, 0x5358           |         
    0x00005354 addiu s0, s0, 5           |         s0 += 5;
                                         |     }
    0x00005358 lw a0, -0x7fd4(gp)        |     a0 = *((gp - 8181));
    0x0000535c lw t9, -0x7f84(gp)        |     t9 = sym.getdef_str;
    0x00005360 addiu a0, a0, -0x1b4c     |     a0 += -0x1b4c;
    0x00005364 bal 0xaf88                |     sym_getdef_str ();
    0x00005368 lw gp, 0x10(sp)           |     gp = *(var_10h_2);
                                         |     if (v0 == 0) {
    0x0000536c beqz v0, 0x5410           |         goto label_0;
                                         |     }
    0x00005370 lb a0, (v0)               |     a0 = *(v0);
    0x00005374 addiu v1, zero, 0x2f      |     v1 = 0x2f;
    0x00005378 lw t9, -0x7dec(gp)        |     t9 = sym.imp.__strcpy_chk
                                         |     if (a0 == v1) {
    0x0000537c beq a0, v1, 0x5418        |         goto label_4;
                                         |     }
    0x00005380 addiu v1, sp, 0x1c        |     v1 = sp + 0x1c;
    0x00005384 move a0, v1               |     a0 = v1;
    0x00005388 addiu a2, zero, 0xc8      |     a2 = 0xc8;
    0x0000538c move a1, v0               |     a1 = v0;
    0x00005390 jalr t9                   |     t9 ();
    0x00005394 lw gp, 0x10(sp)           |     gp = *(var_10h_2);
    0x00005398 move a0, v0               |     a0 = v0;
    0x0000539c lw s1, -0x7fd4(gp)        |     s1 = *((gp - 8181));
    0x000053a0 addiu s1, s1, -0x1b44     |     s1 += -0x1b44;
    0x000053a4 b 0x53c4                  |     
                                         |     while (v0 != 0) {
    0x000053a8 lw t9, -0x7c80(gp)        |         t9 = sym.imp.strcmp;
    0x000053ac move a0, v0               |         a0 = v0;
    0x000053b0 move a1, s0               |         a1 = s0;
    0x000053b4 jalr t9                   |         t9 ();
    0x000053b8 lw gp, 0x10(sp)           |         gp = *(var_10h_2);
    0x000053bc move a0, zero             |         a0 = 0;
                                         |         if (v0 == 0) {
    0x000053c0 beqz v0, 0x5410           |             goto label_0;
                                         |         }
    0x000053c4 lw t9, -0x7df4(gp)        |         t9 = sym.imp.strtok;
    0x000053c8 move a1, s1               |         a1 = s1;
    0x000053cc jalr t9                   |         t9 ();
    0x000053d0 lw gp, 0x10(sp)           |         gp = *(var_10h_2);
    0x000053d4 bnez v0, 0x53a8           |         
                                         |     }
                                         |     do {
                                         | label_3:
    0x000053d8 lw a0, 0xe4(sp)           |         a0 = *(var_e4h);
    0x000053dc lw v1, (s2)               |         v1 = *(s2);
    0x000053e0 lw ra, 0xfc(sp)           |         ra = *(var_fch);
                                         |         if (a0 != v1) {
    0x000053e4 bne a0, v1, 0x54a8        |             goto label_5;
                                         |         }
    0x000053e8 lw s3, 0xf8(sp)           |         s3 = *(var_f8h);
    0x000053ec lw s2, 0xf4(sp)           |         s2 = *(var_f4h);
    0x000053f0 lw s1, 0xf0(sp)           |         s1 = *(var_f0h);
    0x000053f4 lw s0, 0xec(sp)           |         s0 = *(var_ech);
    0x000053f8 addiu sp, sp, 0x100       |         
    0x000053fc jr ra                     |         return v0;
                                         | label_1:
    0x00005400 lw t9, -0x7e2c(gp)        |         t9 = sym.imp.fclose;
    0x00005404 move a0, s3               |         a0 = s3;
    0x00005408 jalr t9                   |         t9 ();
    0x0000540c lw gp, 0x10(sp)           |         gp = *(var_10h_2);
                                         | label_0:
    0x00005410 addiu v0, zero, 1         |         v0 = 1;
    0x00005414 b 0x53d8                  |         
                                         |     } while (1);
                                         | label_4:
    0x00005418 lw a1, -0x7fd4(gp)        |     a1 = *((gp - 8181));
    0x0000541c lw t9, -0x7e30(gp)        |     t9 = sym.imp.fopen64;
    0x00005420 addiu a1, a1, -0x2030     |     a1 += -0x2030;
    0x00005424 move a0, v0               |     a0 = v0;
    0x00005428 jalr t9                   |     t9 ();
    0x0000542c move s3, v0               |     s3 = v0;
    0x00005430 lw gp, 0x10(sp)           |     gp = *(var_10h_2);
                                         |     if (v0 == 0) {
    0x00005434 beqz v0, 0x5410           |         goto label_0;
                                         |     }
    0x00005438 addiu s1, sp, 0x1c        |     s1 = sp + 0x1c;
    0x0000543c b 0x5474                  |     goto label_6;
                                         | label_2:
    0x00005440 lw t9, -0x7d88(gp)        |     t9 = sym.imp.strlen;
    0x00005444 move a0, s1               |     a0 = s1;
    0x00005448 jalr t9                   |     t9 ();
    0x0000544c lw gp, 0x10(sp)           |     gp = *(var_10h_2);
    0x00005450 addiu v1, sp, 0xe8        |     v1 = sp + 0xe8;
    0x00005454 addu v0, v1, v0           |     v0 = v1 + v0;
    0x00005458 lw t9, -0x7c80(gp)        |     t9 = sym.imp.strcmp;
    0x0000545c move a1, s0               |     a1 = s0;
    0x00005460 move a0, s1               |     a0 = s1;
    0x00005464 sb zero, -0xcd(v0)        |     *((v0 - 205)) = 0;
    0x00005468 jalr t9                   |     t9 ();
    0x0000546c lw gp, 0x10(sp)           |     gp = *(var_10h_2);
                                         |     if (v0 == 0) {
    0x00005470 beqz v0, 0x5400           |         goto label_1;
                                         |     }
                                         | label_6:
    0x00005474 lw t9, -0x7cc0(gp)        |     t9 = sym.imp.fgets;
    0x00005478 move a2, s3               |     a2 = s3;
    0x0000547c addiu a1, zero, 0xc8      |     a1 = 0xc8;
    0x00005480 move a0, s1               |     a0 = s1;
    0x00005484 jalr t9                   |     t9 ();
    0x00005488 lw gp, 0x10(sp)           |     gp = *(var_10h_2);
                                         |     if (v0 != 0) {
    0x0000548c bnez v0, 0x5440           |         goto label_2;
                                         |     }
    0x00005490 lw t9, -0x7e2c(gp)        |     t9 = sym.imp.fclose;
    0x00005494 move a0, s3               |     a0 = s3;
    0x00005498 jalr t9                   |     t9 ();
    0x0000549c lw gp, 0x10(sp)           |     gp = *(var_10h_2);
    0x000054a0 move v0, zero             |     v0 = 0;
    0x000054a4 b 0x53d8                  |     goto label_3;
                                         | label_5:
    0x000054a8 lw t9, -0x7cec(gp)        |     t9 = sym.imp.__stack_chk_fail;
    0x000054ac jalr t9                   |     t9 ();
    0x000054b0 nop                       |     
    0x000054b4 nop                       |     
    0x000054b8 nop                       |     
    0x000054bc nop                       |     
                                         | }
    ; assembly                           | /* r2dec pseudo code output */
                                         | /* /logs/firmware/unblob_extracted/firmware_extract/4325012-58052244.squashfs_v4_le_extract/usr/bin/login.shadow @ 0x9490 */
                                         | #include <stdint.h>
                                         |  
    ; (fcn) sym.tz ()                    | void tz () {
    0x00009490 lui gp, 2                 |     
    0x00009494 addiu gp, gp, -0x1170     |     
    0x00009498 addu gp, gp, t9           |     gp += t9;
    0x0000949c addiu sp, sp, -0x28       |     
    0x000094a0 lw a1, -0x7fd4(gp)        |     a1 = *((gp - 8181));
    0x000094a4 lw t9, -0x7e30(gp)        |     t9 = sym.imp.fopen64;
    0x000094a8 sw gp, 0x10(sp)           |     *(var_10h) = gp;
    0x000094ac sw ra, 0x24(sp)           |     *(var_24h) = ra;
    0x000094b0 sw s2, 0x20(sp)           |     *(var_20h) = s2;
    0x000094b4 sw s1, 0x1c(sp)           |     *(var_1ch) = s1;
    0x000094b8 sw s0, 0x18(sp)           |     *(var_18h) = s0;
    0x000094bc addiu a1, a1, -0x2030     |     a1 += -0x2030;
    0x000094c0 jalr t9                   |     t9 ();
    0x000094c4 lw gp, 0x10(sp)           |     gp = *(var_10h);
                                         |     if (v0 == 0) {
    0x000094c8 beqz v0, 0x9578           |         goto label_1;
                                         |     }
    0x000094cc lw s0, -0x7fdc(gp)        |     s0 = *((gp - 8183));
    0x000094d0 lw t9, -0x7cc0(gp)        |     t9 = sym.imp.fgets;
    0x000094d4 move a2, v0               |     a2 = v0;
    0x000094d8 addiu a1, zero, 0x2000    |     a1 = 0x2000;
    0x000094dc addiu a0, s0, 0xb40       |     a0 = s0 + 0xb40;
    0x000094e0 move s1, v0               |     s1 = v0;
    0x000094e4 jalr t9                   |     t9 ();
    0x000094e8 lw gp, 0x10(sp)           |     gp = *(var_10h);
                                         |     if (v0 == 0) {
    0x000094ec beqz v0, 0x9534           |         goto label_2;
                                         |     }
    0x000094f0 lw t9, -0x7d88(gp)        |     t9 = sym.imp.strlen;
    0x000094f4 addiu a0, s0, 0xb40       |     a0 = s0 + 0xb40;
    0x000094f8 jalr t9                   |     t9 ();
    0x000094fc addiu s2, s0, 0xb40       |     s2 = s0 + 0xb40;
    0x00009500 addu v0, s2, v0           |     v0 = s2 + v0;
    0x00009504 lw gp, 0x10(sp)           |     gp = *(var_10h);
    0x00009508 sb zero, -1(v0)           |     *((v0 - 1)) = 0;
                                         |     do {
                                         | label_0:
    0x0000950c lw t9, -0x7e2c(gp)        |         t9 = sym.imp.fclose;
    0x00009510 move a0, s1               |         a0 = s1;
    0x00009514 jalr t9                   |         t9 ();
    0x00009518 lw ra, 0x24(sp)           |         ra = *(var_24h);
    0x0000951c move v0, s2               |         v0 = s2;
    0x00009520 lw s1, 0x1c(sp)           |         s1 = *(var_1ch);
    0x00009524 lw s2, 0x20(sp)           |         s2 = *(var_20h);
    0x00009528 lw s0, 0x18(sp)           |         s0 = *(var_18h);
    0x0000952c addiu sp, sp, 0x28        |         
    0x00009530 jr ra                     |         return v0;
                                         | label_2:
    0x00009534 lw a0, -0x7fd4(gp)        |         a0 = *((gp - 8181));
    0x00009538 lw t9, -0x7f84(gp)        |         t9 = sym.getdef_str;
    0x0000953c addiu a0, a0, -0x2218     |         a0 += -0x2218;
    0x00009540 bal 0xaf88                |         sym_getdef_str ();
    0x00009544 lw gp, 0x10(sp)           |         gp = *(var_10h);
                                         |         if (v0 == 0) {
    0x00009548 beqz v0, 0x9620           |             goto label_3;
                                         |         }
    0x0000954c lb a0, (v0)               |         a0 = *(v0);
    0x00009550 addiu v1, zero, 0x2f      |         v1 = 0x2f;
    0x00009554 lw t9, -0x7dec(gp)        |         t9 = sym.imp.__strcpy_chk
                                         |         if (a0 == v1) {
    0x00009558 beq a0, v1, 0x9620        |             goto label_3;
                                         |         }
    0x0000955c addiu a2, zero, 0x2000    |         a2 = 0x2000;
    0x00009560 move a1, v0               |         a1 = v0;
    0x00009564 addiu a0, s0, 0xb40       |         a0 = s0 + 0xb40;
    0x00009568 jalr t9                   |         t9 ();
    0x0000956c addiu s2, s0, 0xb40       |         s2 = s0 + 0xb40;
    0x00009570 lw gp, 0x10(sp)           |         gp = *(var_10h);
    0x00009574 b 0x950c                  |         
                                         |     } while (1);
                                         | label_1:
    0x00009578 lw a0, -0x7fd4(gp)        |     a0 = *((gp - 8181));
    0x0000957c lw t9, -0x7f84(gp)        |     t9 = sym.getdef_str;
    0x00009580 addiu a0, a0, -0x2218     |     a0 += -0x2218;
    0x00009584 bal 0xaf88                |     sym_getdef_str ();
    0x00009588 lw gp, 0x10(sp)           |     gp = *(var_10h);
                                         |     if (v0 != 0) {
    0x0000958c beqz v0, 0x95d4           |         
    0x00009590 lb a0, (v0)               |         a0 = *(v0);
    0x00009594 addiu v1, zero, 0x2f      |         v1 = 0x2f;
    0x00009598 lw s0, -0x7fdc(gp)        |         s0 = *((gp - 8183));
                                         |         if (a0 == v1) {
    0x0000959c beq a0, v1, 0x95d4        |             goto label_4;
                                         |         }
    0x000095a0 lw t9, -0x7dec(gp)        |         t9 = sym.imp.__strcpy_chk
    0x000095a4 addiu a0, s0, 0xb40       |         a0 = s0 + 0xb40;
    0x000095a8 addiu a2, zero, 0x2000    |         a2 = 0x2000;
    0x000095ac move a1, v0               |         a1 = v0;
    0x000095b0 jalr t9                   |         t9 ();
    0x000095b4 lw ra, 0x24(sp)           |         ra = *(var_24h);
    0x000095b8 addiu s2, s0, 0xb40       |         s2 = s0 + 0xb40;
    0x000095bc move v0, s2               |         v0 = s2;
    0x000095c0 lw s1, 0x1c(sp)           |         s1 = *(var_1ch);
    0x000095c4 lw s2, 0x20(sp)           |         s2 = *(var_20h);
    0x000095c8 lw s0, 0x18(sp)           |         s0 = *(var_18h);
    0x000095cc addiu sp, sp, 0x28        |         
    0x000095d0 jr ra                     |         return v0;
                                         |     }
                                         | label_4:
    0x000095d4 lw v1, -0x7fd4(gp)        |     v1 = *((gp - 8181));
    0x000095d8 lw s0, -0x7fdc(gp)        |     s0 = *((gp - 8183));
    0x000095dc addiu v0, v1, -0x10f8     |     v0 = v1 + -0x10f8;
    0x000095e0 addiu s2, s0, 0xb40       |     s2 = s0 + 0xb40;
    0x000095e4 lw a1, -0x10f8(v1)        |     a1 = *((v1 - 1086));
    0x000095e8 lw a0, 4(v0)              |     a0 = *((v0 + 1));
    0x000095ec lhu v1, 8(v0)             |     v1 = *((v0 + 4));
    0x000095f0 lw ra, 0x24(sp)           |     ra = *(var_24h);
    0x000095f4 lbu v0, 0xa(v0)           |     v0 = *((v0 + 10));
    0x000095f8 sw a1, 0xb40(s0)          |     *((s0 + 720)) = a1;
    0x000095fc lw s1, 0x1c(sp)           |     s1 = *(var_1ch);
    0x00009600 sb v0, 0xa(s2)            |     *((s2 + 10)) = v0;
    0x00009604 lw s0, 0x18(sp)           |     s0 = *(var_18h);
    0x00009608 move v0, s2               |     v0 = s2;
    0x0000960c sw a0, 4(s2)              |     *((s2 + 1)) = a0;
    0x00009610 sh v1, 8(s2)              |     *((s2 + 4)) = v1;
    0x00009614 lw s2, 0x20(sp)           |     s2 = *(var_20h);
    0x00009618 addiu sp, sp, 0x28        |     
    0x0000961c jr ra                     |     return v0;
                                         | label_3:
    0x00009620 lw v1, -0x7fd4(gp)        |     v1 = *((gp - 8181));
    0x00009624 addiu s2, s0, 0xb40       |     s2 = s0 + 0xb40;
    0x00009628 addiu v0, v1, -0x10f8     |     v0 = v1 + -0x10f8;
    0x0000962c lw a1, -0x10f8(v1)        |     a1 = *((v1 - 1086));
    0x00009630 lw a0, 4(v0)              |     a0 = *((v0 + 1));
    0x00009634 lhu v1, 8(v0)             |     v1 = *((v0 + 4));
    0x00009638 lbu v0, 0xa(v0)           |     v0 = *((v0 + 10));
    0x0000963c sw a1, 0xb40(s0)          |     *((s0 + 720)) = a1;
    0x00009640 sw a0, 4(s2)              |     *((s2 + 1)) = a0;
    0x00009644 sh v1, 8(s2)              |     *((s2 + 4)) = v1;
    0x00009648 sb v0, 0xa(s2)            |     *((s2 + 10)) = v0;
    0x0000964c b 0x950c                  |     goto label_0;
                                         | }

[*] Function strcpy used 8 times login.shadow