[*] Binary protection state of su.shadow

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


[*] Function fprintf tear down of su.shadow

    ; assembly                               | /* r2dec pseudo code output */
                                             | /* /logs/firmware/unblob_extracted/firmware_extract/4325012-58052244.squashfs_v4_le_extract/usr/bin/su.shadow @ 0x7b30 */
                                             | #include <stdint.h>
                                             |  
    ; (fcn) fcn.00007b30 ()                  | void fcn_00007b30 () {
    0x00007b30 lui gp, 2                     |     
    0x00007b34 addiu gp, gp, -0x37d0         |     
    0x00007b38 addu gp, gp, t9               |     gp += t9;
    0x00007b3c addiu sp, sp, -0x28           |     
    0x00007b40 sw s0, 0x1c(sp)               |     *(var_1ch) = s0;
    0x00007b44 lw s0, -0x7fdc(gp)            |     s0 = *((gp - 8183));
    0x00007b48 sw s1, 0x20(sp)               |     *(var_20h) = s1;
    0x00007b4c move s1, a0                   |     s1 = a0;
    0x00007b50 lw a0, -0x3f1c(s0)            |     a0 = *((s0 - 4039));
    0x00007b54 sw gp, 0x10(sp)               |     *(var_10h_2) = gp;
    0x00007b58 sw ra, 0x24(sp)               |     *(var_24h) = ra;
                                             |     /* esilref: 'CHFN_RESTRICT' */
    0x00007b5c addiu s0, s0, -0x3f1c         |     s0 += -0x3f1c;
                                             |     if (a0 == 0) {
    0x00007b60 beqz a0, 0x7ba8               |         goto label_0;
                                             |     }
    0x00007b64 lw t9, -0x7d3c(gp)            |     t9 = sym.imp.strcmp;
    0x00007b68 b 0x7b80                      |     
                                             |     while (v0 != 0) {
    0x00007b6c addiu s0, s0, 8               |         s0 += 8;
    0x00007b70 lw a0, (s0)                   |         a0 = *(s0);
                                             |         if (a0 == 0) {
    0x00007b74 beql a0, zero, 0x7bac         |             goto label_1;
                                             |         }
    0x00007b78 lw s0, -0x7fdc(gp)            |         s0 = *((gp - 8183));
    0x00007b7c lw t9, -0x7d3c(gp)            |         t9 = sym.imp.strcmp;
    0x00007b80 move a1, s1                   |         a1 = s1;
    0x00007b84 jalr t9                       |         t9 ();
    0x00007b88 lw gp, 0x10(sp)               |         gp = *(var_10h_2);
    0x00007b8c bnez v0, 0x7b6c               |         
                                             |     }
    0x00007b90 lw ra, 0x24(sp)               |     ra = *(var_24h);
    0x00007b94 move v0, s0                   |     v0 = s0;
    0x00007b98 lw s1, 0x20(sp)               |     s1 = *(var_20h);
    0x00007b9c lw s0, 0x1c(sp)               |     s0 = *(var_1ch);
    0x00007ba0 addiu sp, sp, 0x28            |     
    0x00007ba4 jr ra                         |     return v0;
                                             | label_0:
    0x00007ba8 lw s0, -0x7fdc(gp)            |     s0 = *((gp - 8183));
                                             | label_1:
    0x00007bac lw a0, 0x26d4(s0)             |     a0 = *((s0 + 2485));
    0x00007bb0 addiu s0, s0, 0x26d4          |     s0 += 0x26d4;
                                             |     if (a0 == 0) {
    0x00007bb4 beqz a0, 0x7c00               |         goto label_2;
                                             |     }
    0x00007bb8 lw t9, -0x7d3c(gp)            |     t9 = sym.imp.strcmp;
    0x00007bbc b 0x7bd0                      |     
                                             |     while (v0 != 0) {
    0x00007bc0 lw a0, (s0)                   |         a0 = *(s0);
    0x00007bc4 lw v0, -0x7d64(gp)            |         v0 = *((gp - 8025));
                                             |         if (a0 == 0) {
    0x00007bc8 beqz a0, 0x7c04               |             goto label_3;
                                             |         }
    0x00007bcc lw t9, -0x7d3c(gp)            |         t9 = sym.imp.strcmp;
    0x00007bd0 move a1, s1                   |         a1 = s1;
    0x00007bd4 jalr t9                       |         t9 ();
    0x00007bd8 addiu s0, s0, 8               |         s0 += 8;
    0x00007bdc lw gp, 0x10(sp)               |         gp = *(var_10h_2);
    0x00007be0 bnez v0, 0x7bc0               |         
                                             |     }
    0x00007be4 lw ra, 0x24(sp)               |     ra = *(var_24h);
    0x00007be8 move s0, zero                 |     s0 = 0;
    0x00007bec move v0, s0                   |     v0 = s0;
    0x00007bf0 lw s1, 0x20(sp)               |     s1 = *(var_20h);
    0x00007bf4 lw s0, 0x1c(sp)               |     s0 = *(var_1ch);
    0x00007bf8 addiu sp, sp, 0x28            |     
    0x00007bfc jr ra                         |     return v0;
                                             | label_2:
    0x00007c00 lw v0, -0x7d64(gp)            |     v0 = *((gp - 8025));
                                             | label_3:
    0x00007c04 lw a2, -0x7fd0(gp)            |     a2 = *((gp - 8180));
    0x00007c08 lw t9, -0x7ebc(gp)            |     t9 = sym.imp.__fprintf_chk
    0x00007c0c lw a0, (v0)                   |     a0 = *(v0);
    0x00007c10 move a3, s1                   |     a3 = s1;
    0x00007c14 addiu a2, a2, -0x46b8         |     a2 += -0x46b8;
    0x00007c18 addiu a1, zero, 1             |     a1 = 1;
    0x00007c1c jalr t9                       |     t9 ();
    0x00007c20 lw gp, 0x10(sp)               |     gp = *(var_10h_2);
    0x00007c24 move a3, s1                   |     a3 = s1;
    0x00007c28 addiu a1, zero, 1             |     a1 = 1;
    0x00007c2c lw a2, -0x7fd0(gp)            |     a2 = *((gp - 8180));
    0x00007c30 lw t9, -0x7e88(gp)            |     t9 = sym.imp.__syslog_chk;
    0x00007c34 addiu a2, a2, -0x4678         |     a2 += -0x4678;
    0x00007c38 addiu a0, zero, 2             |     a0 = 2;
    0x00007c3c jalr t9                       |     t9 ();
    0x00007c40 lw ra, 0x24(sp)               |     ra = *(var_24h);
    0x00007c44 move s0, zero                 |     s0 = 0;
    0x00007c48 move v0, s0                   |     v0 = s0;
    0x00007c4c lw s1, 0x20(sp)               |     s1 = *(var_20h);
    0x00007c50 lw s0, 0x1c(sp)               |     s0 = *(var_1ch);
    0x00007c54 addiu sp, sp, 0x28            |     
    0x00007c58 jr ra                         |     return v0;
                                             | }
    ; assembly                           | /* r2dec pseudo code output */
                                         | /* /logs/firmware/unblob_extracted/firmware_extract/4325012-58052244.squashfs_v4_le_extract/usr/bin/su.shadow @ 0x2180 */
                                         | #include <stdint.h>
                                         |  
    ; (fcn) main ()                      | int32_t main () {
                                         |     /* [13] -r-x section size 32592 named .text */
    0x00002180 lui gp, 2                 |     
    0x00002184 addiu gp, gp, 0x21e0      |     
    0x00002188 addu gp, gp, t9           |     gp += t9;
    0x0000218c addiu sp, sp, -0x78       |     
    0x00002190 lw v0, -0x7fd0(gp)        |     v0 = *((gp - 8180));
    0x00002194 lw t9, -0x7e94(gp)        |     t9 = sym.imp.setlocale;
    0x00002198 sw ra, 0x74(sp)           |     *(var_74h) = ra;
    0x0000219c sw gp, 0x18(sp)           |     *(var_18h) = gp;
    0x000021a0 sw s7, 0x6c(sp)           |     *(var_6ch) = s7;
    0x000021a4 sw s5, 0x64(sp)           |     *(var_64h) = s5;
    0x000021a8 sw s4, 0x60(sp)           |     *(var_60h) = s4;
    0x000021ac sw s3, 0x5c(sp)           |     *(var_5ch) = s3;
    0x000021b0 sw s2, 0x58(sp)           |     *(var_58h) = s2;
    0x000021b4 sw s1, 0x54(sp)           |     *(var_54h) = s1;
    0x000021b8 sw s0, 0x50(sp)           |     *(var_50h) = s0;
    0x000021bc move s7, a1               |     s7 = a1;
    0x000021c0 sw fp, 0x70(sp)           |     *(var_70h) = fp;
    0x000021c4 addiu a1, v0, -0x4830     |     a1 = v0 + -0x4830;
    0x000021c8 sw s6, 0x68(sp)           |     *(var_68h) = s6;
    0x000021cc sw v0, 0x24(sp)           |     *(var_24h) = v0;
    0x000021d0 move s0, a0               |     s0 = a0;
    0x000021d4 addiu a0, zero, 6         |     a0 = 6;
    0x000021d8 jalr t9                   |     t9 ();
    0x000021dc lw gp, 0x18(sp)           |     gp = *(var_18h);
    0x000021e0 lw a0, (s7)               |     a0 = *(s7);
    0x000021e4 lw s1, -0x7fcc(gp)        |     s1 = *(gp);
    0x000021e8 lw t9, -0x7fc8(gp)        |     t9 = sym.Basename;
    0x000021ec sw s1, 0x4c(sp)           |     *(var_4ch) = s1;
    0x000021f0 bal 0x4510                |     sym_Basename ();
    0x000021f4 lw gp, 0x18(sp)           |     gp = *(var_18h);
    0x000021f8 lw t9, -0x7db0(gp)        |     t9 = sym.imp.getuid;
    0x000021fc lw s2, -0x7fdc(gp)        |     s2 = *((gp - 8183));
    0x00002200 sw v0, (s1)               |     *(s1) = v0;
    0x00002204 jalr t9                   |     t9 ();
    0x00002208 lw gp, 0x18(sp)           |     gp = *(var_18h);
    0x0000220c move s1, v0               |     s1 = v0;
    0x00002210 sltiu v0, v0, 1           |     v0 = (v0 < 1) ? 1 : 0;
    0x00002214 lw s5, -0x7fdc(gp)        |     s5 = *((gp - 8183));
    0x00002218 lw s4, -0x7fdc(gp)        |     s4 = *((gp - 8183));
    0x0000221c lw t9, -0x7e24(gp)        |     t9 = sym.imp.ttyname;
    0x00002220 move a0, zero             |     a0 = 0;
    0x00002224 sw s4, 0x20(sp)           |     *(var_20h) = s4;
    0x00002228 sw s1, 0x698(s2)          |     *((s2 + 422)) = s1;
    0x0000222c sb v0, 0x69c(s5)          |     *((s5 + 1692)) = v0;
    0x00002230 jalr t9                   |     t9 ();
    0x00002234 lw gp, 0x18(sp)           |     gp = *(var_18h);
    0x00002238 move a0, zero             |     a0 = 0;
    0x0000223c sw v0, 0x6a0(s4)          |     *((s4 + 424)) = v0;
    0x00002240 lw t9, -0x7ec8(gp)        |     t9 = sym.imp.isatty;
    0x00002244 move s3, v0               |     s3 = v0;
    0x00002248 jalr t9                   |     t9 ();
    0x0000224c lw gp, 0x18(sp)           |     gp = *(var_18h);
                                         |     if (v0 != 0) {
    0x00002250 beqz v0, 0x2274           |         
    0x00002254 lw t9, -0x7fc4(gp)        |         t9 = sym.console;
                                         |         if (s3 != 0) {
    0x00002258 beqz s3, 0x2274           |             
    0x0000225c move a0, s3               |             a0 = s3;
    0x00002260 bal 0x4570                |             sym_console ();
    0x00002264 lw gp, 0x18(sp)           |             gp = *(var_18h);
    0x00002268 lw v1, -0x7fdc(gp)        |             v1 = *((gp - 8183));
    0x0000226c sb v0, 0x694(v1)          |             *((v1 + 1684)) = v0;
    0x00002270 b 0x2288                  |             
                                         |         }
                                         |     } else {
    0x00002274 lw v0, -0x7fd0(gp)        |         v0 = *((gp - 8180));
                                         |         if (s1 != 0) {
    0x00002278 bnez s1, 0x3278           |             goto label_29;
                                         |         }
    0x0000227c lw v1, 0x20(sp)           |         v1 = *(var_20h);
    0x00002280 addiu v0, v0, -0x584c     |         v0 += -0x584c;
    0x00002284 sw v0, 0x6a0(v1)          |         *((v1 + 424)) = v0;
                                         |     }
    0x00002288 lw t9, -0x7fc0(gp)        |     t9 = sym.get_my_pwent;
    0x0000228c bal 0x61b0                |     sym_get_my_pwent ();
    0x00002290 nop                       |     
    0x00002294 move s1, v0               |     s1 = v0;
    0x00002298 lw gp, 0x18(sp)           |     gp = *(var_18h);
                                         |     if (v0 == 0) {
    0x0000229c beqz v0, 0x322c           |         goto label_30;
                                         |     }
    0x000022a0 lw s2, -0x7fdc(gp)        |     s2 = *((gp - 8183));
    0x000022a4 lw t9, -0x7e60(gp)        |     t9 = sym.imp.strncpy;
    0x000022a8 lw a1, (v0)               |     a1 = *(v0);
    0x000022ac addiu v0, s2, -0x397c     |     v0 = s2 + -0x397c;
    0x000022b0 addiu a2, zero, 0x1fff    |     a2 = 0x1fff;
    0x000022b4 move a0, v0               |     a0 = v0;
    0x000022b8 sw v0, 0x48(sp)           |     *(var_48h) = v0;
    0x000022bc move s3, v0               |     s3 = v0;
    0x000022c0 jalr t9                   |     t9 ();
    0x000022c4 lw gp, 0x18(sp)           |     gp = *(var_18h);
    0x000022c8 sb zero, 0x1fff(s3)       |     *((s3 + 8191)) = 0;
    0x000022cc lw s3, 4(s1)              |     s3 = *((s1 + 1));
    0x000022d0 lw v0, -0x7fd0(gp)        |     v0 = *((gp - 8180));
    0x000022d4 lw t9, -0x7d3c(gp)        |     t9 = sym.imp.strcmp;
    0x000022d8 sw v0, 0x28(sp)           |     *(var_28h) = v0;
    0x000022dc addiu a1, v0, -0x5758     |     a1 = v0 + -0x5758;
    0x000022e0 move a0, s3               |     a0 = s3;
    0x000022e4 jalr t9                   |     t9 ();
    0x000022e8 lw gp, 0x18(sp)           |     gp = *(var_18h);
                                         |     if (v0 == 0) {
    0x000022ec beqz v0, 0x2d38           |         goto label_31;
                                         |     }
                                         | label_11:
    0x000022f0 lw fp, -0x7fdc(gp)        |     fp = *((gp - 8183));
    0x000022f4 lw t9, -0x7d70(gp)        |     t9 = sym.imp.free;
    0x000022f8 sw fp, 0x2c(sp)           |     *(var_2ch) = fp;
    0x000022fc lw s4, -0x7fdc(gp)        |     s4 = *((gp - 8183));
    0x00002300 lw s6, -0x7fd0(gp)        |     s6 = *((gp - 8180));
    0x00002304 lw a0, 0x690(fp)          |     a0 = *(arg_690h);
    0x00002308 jalr t9                   |     t9 ();
    0x0000230c lw gp, 0x18(sp)           |     gp = *(var_18h);
    0x00002310 lw t9, -0x7fbc(gp)        |     t9 = sym.xstrdup;
    0x00002314 move a0, s3               |     a0 = s3;
    0x00002318 bal 0x77e4                |     sym_xstrdup ();
    0x0000231c lw gp, 0x18(sp)           |     gp = *(var_18h);
    0x00002320 sw v0, 0x690(fp)          |     *(arg_690h) = v0;
    0x00002324 lw t9, -0x7fb8(gp)        |     t9 = sym.pw_free;
    0x00002328 move a0, s1               |     a0 = s1;
    0x0000232c bal 0x9b80                |     sym_pw_free ();
    0x00002330 lw gp, 0x18(sp)           |     gp = *(var_18h);
    0x00002334 addiu a2, zero, 0x50      |     a2 = 0x50;
    0x00002338 addiu a1, zero, 1         |     a1 = 1;
    0x0000233c lw a0, -0x7fd0(gp)        |     a0 = *((gp - 8180));
    0x00002340 lw t9, -0x7eb0(gp)        |     t9 = sym.imp.openlog;
    0x00002344 addiu a0, a0, -0x5754     |     a0 += -0x5754;
    0x00002348 jalr t9                   |     t9 ();
    0x0000234c lw gp, 0x18(sp)           |     gp = *(var_18h);
    0x00002350 lw v0, -0x7fdc(gp)        |     v0 = *((gp - 8183));
    0x00002354 lw s3, -0x7fd0(gp)        |     s3 = *((gp - 8180));
    0x00002358 sw v0, 0x30(sp)           |     *(var_30h) = v0;
    0x0000235c lw v0, -0x7fdc(gp)        |     v0 = *((gp - 8183));
    0x00002360 lw s1, -0x7fdc(gp)        |     s1 = *((gp - 8183));
    0x00002364 lw fp, -0x7fdc(gp)        |     fp = *((gp - 8183));
    0x00002368 addiu s3, s3, -0x5300     |     s3 += -0x5300;
    0x0000236c sw v0, 0x34(sp)           |     *(var_34h) = v0;
    0x00002370 lw t9, -0x7e10(gp)        |     t9 = sym.imp.getopt_long;
    0x00002374 sw zero, 0x10(sp)         |     *(var_10h) = 0;
                                         |     /* esilref: 'command' */
    0x00002378 addiu a3, s4, -0x3fe0     |     a3 = s4 + -0x3fe0;
    0x0000237c addiu a2, s6, -0x5560     |     a2 = s6 + -0x5560;
    0x00002380 move a1, s7               |     a1 = s7;
    0x00002384 move a0, s0               |     a0 = s0;
    0x00002388 jalr t9                   |     t9 ();
    0x0000238c addiu v1, zero, -1        |     v1 = -1;
    0x00002390 lw gp, 0x18(sp)           |     gp = *(var_18h);
                                         |     if (v0 != v1) {
    0x00002394 beq v0, v1, 0x23f4        |         
    0x00002398 addiu v0, v0, -0x63       |         v0 += -0x63;
    0x0000239c sltiu v1, v0, 0x11        |         v1 = (v0 < 0x11) ? 1 : 0;
    0x000023a0 sll v0, v0, 2             |         v0 <<= 2;
                                         |         if (v1 == 0) {
    0x000023a4 beqz v1, 0x307c           |             goto label_32;
                                         |         }
    0x000023a8 lwx v0, v0(s3)            |         __asm ("lwx v0, v0(s3)");
    0x000023ac addu v0, v0, gp           |         v0 += gp;
    0x000023b0 jr v0                     |         v0 ();
    0x000023b4 nop                       |         
                                         |     }
    0x000023f4 lw fp, -0x7d9c(gp)        |     fp = *((gp - 8039));
    0x000023f8 lw s3, (fp)               |     s3 = *(fp);
    0x000023fc slt v0, s3, s0            |     v0 = (s3 < s0) ? 1 : 0;
    0x00002400 sll s4, s3, 2             |     s4 = s3 << 2;
                                         |     if (v0 != 0) {
    0x00002404 bnez v0, 0x2c04           |         goto label_33;
                                         |     }
                                         | label_4:
    0x00002408 lw s1, -0x7fdc(gp)        |     s1 = *((gp - 8183));
                                         | label_5:
    0x0000240c lb v0, -0x197c(s1)        |     v0 = *((s1 - 6524));
    0x00002410 lw a0, -0x7fd0(gp)        |     a0 = *((gp - 8180));
                                         |     if (v0 == 0) {
    0x00002414 beqz v0, 0x2d54           |         goto label_34;
                                         |     }
                                         | label_12:
    0x00002418 lw v1, -0x7fdc(gp)        |     v1 = *((gp - 8183));
    0x0000241c lw v0, (fp)               |     v0 = *(fp);
    0x00002420 lw s6, -0x7fdc(gp)        |     s6 = *((gp - 8183));
    0x00002424 xor s0, v0, s0            |     s0 = v0 ^ s0;
    0x00002428 lw v0, 0x684(v1)          |     v0 = *((v1 + 417));
    0x0000242c sltiu s0, s0, 1           |     s0 = (s0 < 1) ? 1 : 0;
    0x00002430 sw v1, 0x44(sp)           |     *(var_44h) = v1;
    0x00002434 sb s0, 0x68d(s6)          |     *((s6 + 1677)) = s0;
                                         |     if (v0 != 0) {
    0x00002438 beqz v0, 0x2440           |         
    0x0000243c sb zero, 0x68d(s6)        |         *((s6 + 1677)) = 0;
                                         |     }
    0x00002440 lw v0, -0x7fd0(gp)        |     v0 = *((gp - 8180));
    0x00002444 lw t9, -0x7fb4(gp)        |     t9 = sym.initenv;
    0x00002448 sw v0, 0x38(sp)           |     *(var_38h) = v0;
    0x0000244c bal 0x4730                |     sym_initenv ();
    0x00002450 lw gp, 0x18(sp)           |     gp = *(var_18h);
    0x00002454 lw v0, -0x7fd0(gp)        |     v0 = *((gp - 8180));
    0x00002458 sw v0, 0x40(sp)           |     *(var_40h) = v0;
    0x0000245c lw v0, -0x7fdc(gp)        |     v0 = *((gp - 8183));
    0x00002460 addiu v0, v0, -0x39b0     |     v0 += -0x39b0;
    0x00002464 sw v0, 0x30(sp)           |     *(var_30h) = v0;
    0x00002468 lw v0, -0x7fb0(gp)        |     v0 = *((gp - 8172));
    0x0000246c addiu v0, v0, 0x3430      |     v0 += 0x3430;
    0x00002470 sw v0, 0x34(sp)           |     *(var_34h) = v0;
    0x00002474 lw v0, -0x7fd0(gp)        |     v0 = *((gp - 8180));
    0x00002478 addiu v0, v0, -0x54b8     |     v0 += -0x54b8;
    0x0000247c sw v0, 0x3c(sp)           |     *(var_3ch) = v0;
    0x00002480 b 0x25b8                  |     goto label_35;
                                         | label_0:
    0x00002484 lw a0, 0x3c(sp)           |     a0 = *(var_3ch);
    0x00002488 jalr t9                   |     t9 ();
    0x0000248c lw v0, 0x2c(sp)           |     v0 = *(var_2ch);
    0x00002490 lw gp, 0x18(sp)           |     gp = *(var_18h);
    0x00002494 lw s4, 0x690(v0)          |     s4 = *((v0 + 420));
                                         | label_2:
    0x00002498 lw t9, -0x7ecc(gp)        |     t9 = sym.imp.tcgetattr;
                                         | label_1:
    0x0000249c lw a1, 0x30(sp)           |     a1 = *(var_30h);
    0x000024a0 move a0, zero             |     a0 = 0;
    0x000024a4 jalr t9                   |     t9 ();
    0x000024a8 lw gp, 0x18(sp)           |     gp = *(var_18h);
    0x000024ac lw a1, 0x34(sp)           |     a1 = *(var_34h);
    0x000024b0 lw t9, -0x7d90(gp)        |     t9 = sym.imp.signal;
    0x000024b4 addiu a0, zero, 3         |     a0 = 3;
    0x000024b8 jalr t9                   |     t9 ();
    0x000024bc lw gp, 0x18(sp)           |     gp = *(var_18h);
    0x000024c0 move a0, s4               |     a0 = s4;
    0x000024c4 move a3, zero             |     a3 = 0;
    0x000024c8 lw t9, -0x7fac(gp)        |     t9 = sym.pw_auth;
    0x000024cc addiu a2, zero, 1         |     a2 = 1;
    0x000024d0 addiu a1, s1, -0x197c     |     a1 = s1 + -0x197c;
    0x000024d4 move s4, v0               |     s4 = v0;
    0x000024d8 bal 0x9990                |     sym_pw_auth ();
    0x000024dc lw gp, 0x18(sp)           |     gp = *(var_18h);
                                         |     if (v0 != 0) {
    0x000024e0 bnez v0, 0x3160           |         goto label_36;
                                         |     }
    0x000024e4 lw t9, -0x7d90(gp)        |     t9 = sym.imp.signal;
    0x000024e8 move a1, s4               |     a1 = s4;
    0x000024ec addiu a0, zero, 3         |     a0 = 3;
    0x000024f0 jalr t9                   |     t9 ();
    0x000024f4 lw gp, 0x18(sp)           |     gp = *(var_18h);
                                         |     if (s3 != 0) {
    0x000024f8 beqz s3, 0x2510           |         
    0x000024fc lw t9, -0x7fa8(gp)        |         t9 = sym.expire;
    0x00002500 move a1, s3               |         a1 = s3;
    0x00002504 move a0, s0               |         a0 = s0;
    0x00002508 bal 0x40f0                |         sym_expire ();
    0x0000250c lw gp, 0x18(sp)           |         gp = *(var_18h);
                                         |     }
    0x00002510 lw t9, -0x7d8c(gp)        |     t9 = sym.imp.time;
    0x00002514 move a0, zero             |     a0 = 0;
    0x00002518 jalr t9                   |     t9 ();
    0x0000251c lw gp, 0x18(sp)           |     gp = *(var_18h);
    0x00002520 move a2, v0               |     a2 = v0;
    0x00002524 lw v0, 0x38(sp)           |     v0 = *(var_38h);
    0x00002528 lw t9, -0x7fa4(gp)        |     t9 = sym.isttytime;
    0x0000252c addiu a1, v0, -0x5460     |     a1 = v0 + -0x5460;
    0x00002530 addiu a0, s1, -0x197c     |     a0 = s1 + -0x197c;
    0x00002534 bal 0x90c8                |     sym_isttytime ();
    0x00002538 lw gp, 0x18(sp)           |     gp = *(var_18h);
                                         |     if (v0 == 0) {
    0x0000253c beqz v0, 0x31d0           |         goto label_37;
                                         |     }
                                         |     do {
    0x00002540 lw t9, -0x7d90(gp)        |         t9 = sym.imp.signal;
    0x00002544 move a1, zero             |         a1 = 0;
    0x00002548 addiu a0, zero, 2         |         a0 = 2;
    0x0000254c jalr t9                   |         t9 ();
    0x00002550 lw gp, 0x18(sp)           |         gp = *(var_18h);
    0x00002554 move a1, zero             |         a1 = 0;
    0x00002558 lw t9, -0x7d90(gp)        |         t9 = sym.imp.signal;
    0x0000255c addiu a0, zero, 3         |         a0 = 3;
    0x00002560 jalr t9                   |         t9 ();
    0x00002564 lw s4, 0x18(s0)           |         s4 = *((s0 + 6));
    0x00002568 addiu v0, zero, 0x2a      |         v0 = 0x2a;
    0x0000256c lb v1, (s4)               |         v1 = *(s4);
    0x00002570 lw gp, 0x18(sp)           |         gp = *(var_18h);
                                         |         if (v1 != v0) {
    0x00002574 bne v1, v0, 0x270c        |             goto label_38;
                                         |         }
    0x00002578 lw t9, -0x7fa0(gp)        |         t9 = sym.subsystem;
    0x0000257c move a0, s0               |         a0 = s0;
    0x00002580 bal 0x6d30                |         sym_subsystem ();
    0x00002584 lw gp, 0x18(sp)           |         gp = *(var_18h);
    0x00002588 lw t9, -0x7ea4(gp)        |         t9 = sym.imp.endpwent;
    0x0000258c jalr t9                   |         t9 ();
    0x00002590 nop                       |         
    0x00002594 lw gp, 0x18(sp)           |         gp = *(var_18h);
    0x00002598 lw t9, -0x7e68(gp)        |         t9 = sym.imp.endspent;
    0x0000259c jalr t9                   |         t9 ();
    0x000025a0 nop                       |         
    0x000025a4 lw gp, 0x18(sp)           |         gp = *(var_18h);
    0x000025a8 lw t9, -0x7fb8(gp)        |         t9 = sym.pw_free;
    0x000025ac move a0, s0               |         a0 = s0;
    0x000025b0 bal 0x9b80                |         sym_pw_free ();
    0x000025b4 lw gp, 0x18(sp)           |         gp = *(var_18h);
                                         | label_35:
    0x000025b8 lw t9, -0x7f9c(gp)        |         t9 = sym.xgetpwnam;
    0x000025bc addiu a0, s1, -0x197c     |         a0 = s1 + -0x197c;
    0x000025c0 bal 0x7300                |         sym_xgetpwnam ();
    0x000025c4 move s0, v0               |         s0 = v0;
    0x000025c8 lw gp, 0x18(sp)           |         gp = *(var_18h);
                                         |         if (v0 == 0) {
    0x000025cc beqz v0, 0x3104           |             goto label_39;
                                         |         }
    0x000025d0 lw t9, -0x7d90(gp)        |         t9 = sym.imp.signal;
    0x000025d4 addiu a1, zero, 1         |         a1 = 1;
    0x000025d8 addiu a0, zero, 2         |         a0 = 2;
    0x000025dc jalr t9                   |         t9 ();
    0x000025e0 lw gp, 0x18(sp)           |         gp = *(var_18h);
    0x000025e4 addiu a1, zero, 1         |         a1 = 1;
    0x000025e8 lw t9, -0x7d90(gp)        |         t9 = sym.imp.signal;
    0x000025ec addiu a0, zero, 3         |         a0 = 3;
    0x000025f0 jalr t9                   |         t9 ();
    0x000025f4 lbu v0, 0x69c(s5)         |         v0 = *((s5 + 1692));
    0x000025f8 lw gp, 0x18(sp)           |         gp = *(var_18h);
    0x000025fc bnez v0, 0x2540           |         
                                         |     } while (v0 != 0);
    0x00002600 lw v0, 8(s0)              |     v0 = *((s0 + 2));
    0x00002604 lw s4, 4(s0)              |     s4 = *((s0 + 1));
                                         |     if (v0 == 0) {
    0x00002608 bnez v0, 0x2624           |         
    0x0000260c lw v0, 0x40(sp)           |         v0 = *(var_40h);
    0x00002610 lw t9, -0x7fd4(gp)        |         t9 = sym.getdef_bool;
    0x00002614 addiu a0, v0, -0x54f4     |         a0 = v0 + -0x54f4;
    0x00002618 bal 0x80b8                |         sym_getdef_bool ();
    0x0000261c lw gp, 0x18(sp)           |         gp = *(var_18h);
                                         |         if (v0 != 0) {
    0x00002620 bnez v0, 0x26c4           |             goto label_40;
                                         |         }
                                         |     }
    0x00002624 lw t9, -0x7d6c(gp)        |     t9 = sym.imp.getspnam;
    0x00002628 addiu a0, s1, -0x197c     |     a0 = s1 + -0x197c;
    0x0000262c jalr t9                   |     t9 ();
    0x00002630 lw gp, 0x18(sp)           |     gp = *(var_18h);
    0x00002634 lw v1, 0x28(sp)           |     v1 = *(var_28h);
    0x00002638 lw a0, 4(s0)              |     a0 = *((s0 + 1));
    0x0000263c lw t9, -0x7d3c(gp)        |     t9 = sym.imp.strcmp;
    0x00002640 addiu a1, v1, -0x5758     |     a1 = v1 + -0x5758;
    0x00002644 move s3, v0               |     s3 = v0;
    0x00002648 jalr t9                   |     t9 ();
    0x0000264c lw gp, 0x18(sp)           |     gp = *(var_18h);
                                         |     if (v0 == 0) {
    0x00002650 bnez v0, 0x265c           |         
    0x00002654 lw s4, 4(s3)              |         s4 = *((s3 + 1));
                                         |         if (s3 == 0) {
    0x00002658 bnel s3, zero, 0x265c     |             goto label_41;
                                         |         }
                                         |     }
                                         | label_41:
    0x0000265c lw a2, 8(s0)              |     a2 = *((s0 + 2));
    0x00002660 lw t9, -0x7f98(gp)        |     t9 = sym.check_su_auth;
    0x00002664 sltiu a2, a2, 1           |     a2 = (a2 < 1) ? 1 : 0;
    0x00002668 addiu a1, s1, -0x197c     |     a1 = s1 + -0x197c;
    0x0000266c addiu a0, s2, -0x397c     |     a0 = s2 + -0x397c;
    0x00002670 bal 0x3ba0                |     sym_check_su_auth ();
    0x00002674 addiu v1, zero, 1         |     v1 = 1;
    0x00002678 lw gp, 0x18(sp)           |     gp = *(var_18h);
                                         |     if (v0 == v1) {
    0x0000267c beq v0, v1, 0x2700        |         goto label_42;
                                         |     }
    0x00002680 addiu v1, zero, 2         |     v1 = 2;
    0x00002684 lw t9, -0x7df0(gp)        |     t9 = sym.imp.puts;
                                         |     if (v0 == v1) {
    0x00002688 beq v0, v1, 0x2484        |         goto label_0;
                                         |     }
    0x0000268c lw t9, -0x7ecc(gp)        |     t9 = sym.imp.tcgetattr;
                                         |     if (v0 == 0) {
    0x00002690 beqz v0, 0x249c           |         goto label_1;
                                         |     }
                                         |     do {
    0x00002694 lw v0, -0x7d64(gp)        |         v0 = *((gp - 8025));
    0x00002698 lw a2, -0x7fd0(gp)        |         a2 = *((gp - 8180));
    0x0000269c lw t9, -0x7ebc(gp)        |         t9 = sym.imp.__fprintf_chk
    0x000026a0 lw a0, (v0)               |         a0 = *(v0);
    0x000026a4 addiu a3, s1, -0x197c     |         a3 = s1 + -0x197c;
    0x000026a8 addiu a2, a2, -0x54dc     |         a2 += -0x54dc;
                                         | label_21:
    0x000026ac addiu a1, zero, 1         |         a1 = 1;
    0x000026b0 jalr t9                   |         t9 ();
    0x000026b4 lw gp, 0x18(sp)           |         gp = *(var_18h);
                                         | label_3:
    0x000026b8 lw t9, -0x7e00(gp)        |         t9 = sym.imp.exit;
    0x000026bc addiu a0, zero, 1         |         a0 = 1;
    0x000026c0 jalr t9                   |         t9 ();
                                         | label_40:
    0x000026c4 lw a0, -0x7fd0(gp)        |         a0 = *((gp - 8180));
    0x000026c8 lw t9, -0x7ee0(gp)        |         t9 = sym.imp.getgrnam;
    0x000026cc addiu a0, a0, -0x54e4     |         a0 += -0x54e4;
    0x000026d0 jalr t9                   |         t9 ();
    0x000026d4 lw gp, 0x18(sp)           |         gp = *(var_18h);
    0x000026d8 beqz v0, 0x2694           |         
                                         |     } while (v0 == 0);
    0x000026dc lw a0, 0xc(v0)            |     a0 = *((v0 + 3));
    0x000026e0 nop                       |     
    0x000026e4 sll a0, zero, 0           |     a0 = 0;
    0x000026e8 addiu a1, s2, -0x397c     |     a1 = s2 + -0x397c;
    0x000026ec bal 0x5f9c                |     sym_is_on_list ();
    0x000026f0 cache 0, -0x34(k0)        |     __asm ("cache 0, -0x34(k0)");
    0x000026f4 invalid                   |     
    0x000026f8 invalid                   |     
    0x000026fc lw ra, -1(ra)             |     ra = *((ra - 0.25));
                                         | label_42:
    0x00002700 lw v0, 0x24(sp)           |     v0 = *(var_24h);
    0x00002704 addiu s4, v0, -0x4830     |     s4 = v0 + -0x4830;
    0x00002708 b 0x2498                  |     goto label_2;
                                         | label_38:
    0x0000270c lw s3, -0x7fdc(gp)        |     s3 = *((gp - 8183));
    0x00002710 nop                       |     
    0x00002714 lbu v1, 0x69c(s5)         |     v1 = *((s5 + 1692));
                                         |     if (v0 == 0) {
    0x00002718 beqz v0, 0x2c70           |         goto label_43;
                                         |     }
    0x0000271c invalid                   |     
    0x00002720 lw t9, -0x7f00(gp)        |     t9 = *((gp - 8128));
    0x00002724 move s4, v0               |     s4 = v0;
                                         | label_18:
    0x00002728 lb v0, (s4)               |     v0 = *(s4);
                                         | label_7:
    0x0000272c lw s4, 0x20(sp)           |     s4 = *(var_20h);
                                         |     if (v0 == 0) {
    0x00002730 bnez v0, 0x2744           |         
                                         | label_8:
    0x00002734 lw v0, -0x7fd0(gp)        |         v0 = *((gp - 8180));
    0x00002738 addiu v0, v0, -0x5400     |         v0 += -0x5400;
    0x0000273c sw v0, 0x688(s3)          |         *((s3 + 418)) = v0;
    0x00002740 lw s4, 0x20(sp)           |         s4 = *(var_20h);
                                         |     }
    0x00002744 lw t9, -0x7fd8(gp)        |     t9 = sym.sulog;
    0x00002748 addiu a3, s1, -0x197c     |     a3 = s1 + -0x197c;
    0x0000274c lw a0, 0x6a0(s4)          |     a0 = *((s4 + 424));
    0x00002750 addiu a2, s2, -0x397c     |     a2 = s2 + -0x397c;
    0x00002754 addiu a1, zero, 1         |     a1 = 1;
    0x00002758 bal 0x6e30                |     sym_sulog ();
    0x0000275c lw gp, 0x18(sp)           |     gp = *(var_18h);
    0x00002760 lw a0, -0x7fd0(gp)        |     a0 = *((gp - 8180));
    0x00002764 lw t9, -0x7fd4(gp)        |     t9 = sym.getdef_bool;
    0x00002768 addiu a0, a0, -0x5848     |     a0 += -0x5848;
    0x0000276c bal 0x80b8                |     sym_getdef_bool ();
    0x00002770 lw gp, 0x18(sp)           |     gp = *(var_18h);
                                         |     if (v0 != 0) {
    0x00002774 beqz v0, 0x27c4           |         
    0x00002778 lb v0, -0x397c(s2)        |         v0 = *((s2 - 14716));
    0x0000277c lw a3, 0x6a0(s4)          |         a3 = *((s4 + 424));
                                         |         if (v0 != 0) {
    0x00002780 bnez v0, 0x2df0           |             goto label_44;
                                         |         }
    0x00002784 lw v0, -0x7fd0(gp)        |         v0 = *((gp - 8180));
    0x00002788 addiu v0, v0, -0x584c     |         v0 += -0x584c;
                                         | label_16:
    0x0000278c lb v1, -0x197c(s1)        |         v1 = *((s1 - 6524));
    0x00002790 addiu s1, s1, -0x197c     |         s1 += -0x197c;
                                         |         if (v1 == 0) {
    0x00002794 bnez v1, 0x27a0           |             
    0x00002798 lw s1, -0x7fd0(gp)        |             s1 = *((gp - 8180));
    0x0000279c addiu s1, s1, -0x584c     |             s1 += -0x584c;
                                         |         }
    0x000027a0 lw a2, -0x7fd0(gp)        |         a2 = *((gp - 8180));
    0x000027a4 lw t9, -0x7e88(gp)        |         t9 = sym.imp.__syslog_chk;
    0x000027a8 sw s1, 0x14(sp)           |         *(var_14h) = s1;
    0x000027ac sw v0, 0x10(sp)           |         *(var_10h) = v0;
    0x000027b0 invalid                   |         
    0x000027b4 addiu a1, zero, 0xff      |         a1 = 0xff;
    0x000027b8 xori zero, t9, 0xf809     |         0 = t9 ^ 0xf809;
    0x000027bc nop                       |         
    0x000027c0 lw zero, (t8)             |         0 = *(t8);
                                         |     }
    0x000027c4 lbu v0, 0x69c(s5)         |     v0 = *((s5 + 1692));
    0x000027c8 lw v0, -0x7fdc(gp)        |     v0 = *((gp - 8183));
                                         |     if (v0 != 0) {
    0x000027cc beqz v0, 0x27dc           |         
    0x000027d0 lbu v0, 0x68c(v0)         |         v0 = *((v0 + 1676));
    0x000027d4 lw v0, -0x7fdc(gp)        |         v0 = *((gp - 8183));
                                         |         if (v0 == 0) {
    0x000027d8 beqz v0, 0x27f0           |             goto label_45;
                                         |         }
                                         |     }
    0x000027dc lw t9, -0x7f90(gp)        |     t9 = sym.setup_limits;
    0x000027e0 move a0, s0               |     a0 = s0;
    0x000027e4 bal 0x57c0                |     sym_setup_limits ();
    0x000027e8 lw gp, 0x18(sp)           |     gp = *(var_18h);
    0x000027ec lw v0, -0x7fdc(gp)        |     v0 = *((gp - 8183));
                                         | label_45:
    0x000027f0 lw t9, -0x7f8c(gp)        |     t9 = sym.setup_uid_gid;
    0x000027f4 move a0, s0               |     a0 = s0;
    0x000027f8 lbu a1, 0x694(v0)         |     a1 = *((v0 + 1684));
    0x000027fc bal 0x6488                |     sym_setup_uid_gid ();
    0x00002800 lw gp, 0x18(sp)           |     gp = *(var_18h);
                                         |     if (v0 != 0) {
    0x00002804 bnez v0, 0x26b8           |         goto label_3;
                                         |     }
    0x00002808 lw s2, -0x7fdc(gp)        |     s2 = *((gp - 8183));
    0x0000280c lbu v0, -0x3ff0(s2)       |     v0 = *((s2 - 16368));
    0x00002810 lw s1, -0x7ed0(gp)        |     s1 = *((gp - 8116));
                                         |     if (v0 != 0) {
    0x00002814 beqz v0, 0x2828           |         
    0x00002818 lw v0, -0x7fdc(gp)        |         v0 = *((gp - 8183));
    0x0000281c lbu v0, 0x68c(v0)         |         v0 = *((v0 + 1676));
    0x00002820 lw s1, -0x7fd0(gp)        |         s1 = *((gp - 8180));
                                         |         if (v0 == 0) {
    0x00002824 bnel v0, zero, 0x2f10     |             goto label_46;
                                         |         }
                                         |     }
    0x00002828 lw s4, (s1)               |     s4 = *(s1);
    0x0000282c lw a0, (s4)               |     a0 = *(s4);
                                         |     if (a0 == 0) {
    0x00002830 beql a0, zero, 0x2858     |         goto label_47;
                                         |     }
    0x00002834 lw v0, 8(s0)              |     v0 = *((s0 + 2));
                                         |     do {
    0x00002838 lw t9, -0x7f88(gp)        |         t9 = sym.addenv;
    0x0000283c addiu s4, s4, 4           |         s4 += 4;
    0x00002840 move a1, zero             |         a1 = 0;
    0x00002844 bal 0x4770                |         sym_addenv ();
    0x00002848 lw a0, (s4)               |         a0 = *(s4);
    0x0000284c lw gp, 0x18(sp)           |         gp = *(var_18h);
    0x00002850 bnez a0, 0x2838           |         
                                         |     } while (a0 != 0);
                                         | label_24:
    0x00002854 lw v0, 8(s0)              |     v0 = *((s0 + 2));
                                         | label_47:
    0x00002858 lw a0, -0x7fd0(gp)        |     a0 = *((gp - 8180));
                                         |     if (v0 == 0) {
    0x0000285c beqz v0, 0x2d1c           |         goto label_48;
                                         |     }
    0x00002860 lw a0, -0x7fd0(gp)        |     a0 = *((gp - 8180));
    0x00002864 addiu a0, a0, -0x5820     |     a0 += -0x5820;
                                         | label_9:
    0x00002868 lw t9, -0x7f84(gp)        |     t9 = sym.getdef_str;
    0x0000286c bal 0x8038                |     sym_getdef_str ();
    0x00002870 nop                       |     
    0x00002874 move s4, v0               |     s4 = v0;
    0x00002878 lw gp, 0x18(sp)           |     gp = *(var_18h);
                                         |     if (v0 == 0) {
    0x0000287c beqz v0, 0x2dc8           |         goto label_49;
                                         |     }
    0x00002880 lw t9, -0x7e20(gp)        |     t9 = sym.imp.strchr;
    0x00002884 addiu a1, zero, 0x3d      |     a1 = 0x3d;
    0x00002888 move a0, v0               |     a0 = v0;
    0x0000288c jalr t9                   |     t9 ();
    0x00002890 lw gp, 0x18(sp)           |     gp = *(var_18h);
    0x00002894 lw t9, -0x7f88(gp)        |     t9 = sym.addenv;
                                         |     if (v0 == 0) {
    0x00002898 beqz v0, 0x2df8           |         goto label_50;
                                         |     }
    0x0000289c move a1, zero             |     a1 = 0;
    0x000028a0 move a0, s4               |     a0 = s4;
    0x000028a4 bal 0x4770                |     sym_addenv ();
    0x000028a8 lw gp, 0x18(sp)           |     gp = *(var_18h);
                                         | label_15:
    0x000028ac lw a0, -0x7fd0(gp)        |     a0 = *((gp - 8180));
    0x000028b0 lw t9, -0x7ddc(gp)        |     t9 = sym.imp.getenv;
    0x000028b4 lwc2 4, -0x53b4(gp)       |     __asm ("lwc2 4, -0x53b4(gp)");
    0x000028b8 jalr t9                   |     t9 ();
    0x000028bc invalid                   |     
    0x000028c0 lw zero, (t8)             |     0 = *(t8);
    0x000028c4 lw a0, -0x7fd0(gp)        |     a0 = *((gp - 8180));
    0x000028c8 lw t9, -0x7f88(gp)        |     t9 = sym.addenv;
    0x000028cc move a1, zero             |     a1 = 0;
    0x000028d0 addiu a0, a0, -0x53b0     |     a0 += -0x53b0;
    0x000028d4 bal 0x4770                |     sym_addenv ();
    0x000028d8 lw gp, 0x18(sp)           |     gp = *(var_18h);
    0x000028dc lw v1, -0x7f80(gp)        |     v1 = *(gp);
    0x000028e0 lbu v0, -0x3ff0(s2)       |     v0 = *((s2 - 16368));
    0x000028e4 lw v1, (v1)               |     v1 = *(v1);
    0x000028e8 sw v1, (s1)               |     *(s1) = v1;
                                         |     if (v0 != 0) {
    0x000028ec beqz v0, 0x2940           |         
    0x000028f0 lw v0, -0x7fdc(gp)        |         v0 = *((gp - 8183));
    0x000028f4 lbu v0, 0x68c(v0)         |         v0 = *((v0 + 1676));
    0x000028f8 lw a0, -0x7fd0(gp)        |         a0 = *((gp - 8180));
                                         |         if (v0 == 0) {
    0x000028fc beqz v0, 0x2eb0           |             goto label_51;
                                         |         }
    0x00002900 lw a0, 0x18(s0)           |         a0 = *((s0 + 6));
    0x00002904 lw s2, 0x688(s3)          |         s2 = *((s3 + 418));
    0x00002908 lw t9, -0x7d70(gp)        |         t9 = sym.imp.free;
                                         |         if (a0 != s2) {
    0x0000290c beq a0, s2, 0x2930        |             
    0x00002910 jalr t9                   |             t9 ();
    0x00002914 nop                       |             
    0x00002918 lw gp, 0x18(sp)           |             gp = *(var_18h);
    0x0000291c lw t9, -0x7fbc(gp)        |             t9 = sym.xstrdup;
    0x00002920 move a0, s2               |             a0 = s2;
    0x00002924 bal 0x77e4                |             sym_xstrdup ();
    0x00002928 lw gp, 0x18(sp)           |             gp = *(var_18h);
    0x0000292c sw v0, 0x18(s0)           |             *((s0 + 6)) = v0;
                                         |         }
    0x00002930 lw t9, -0x7f7c(gp)        |         t9 = sym.setup_env;
    0x00002934 move a0, s0               |         a0 = s0;
    0x00002938 bal 0x6800                |         sym_setup_env ();
    0x0000293c lw gp, 0x18(sp)           |         gp = *(var_18h);
                                         |     }
                                         | label_23:
    0x00002940 lbu v0, 0x68d(s6)         |     v0 = *((s6 + 1677));
    0x00002944 lw t9, -0x7ea4(gp)        |     t9 = sym.imp.endpwent;
                                         |     if (v0 == 0) {
    0x00002948 bnez v0, 0x298c           |         
    0x0000294c lw a0, -0x7fd0(gp)        |         a0 = *((gp - 8180));
    0x00002950 lw t9, -0x7e40(gp)        |         t9 = sym.imp.open64;
    0x00002954 addiu a1, zero, 2         |         a1 = 2;
    0x00002958 addiu a0, a0, -0x5398     |         a0 += -0x5398;
    0x0000295c jalr t9                   |         t9 ();
    0x00002960 move s2, v0               |         s2 = v0;
    0x00002964 lw gp, 0x18(sp)           |         gp = *(var_18h);
                                         |         if (v0 >= 0) {
    0x00002968 bgez v0, 0x2e3c           |             goto label_52;
                                         |         }
    0x0000296c lw t9, -0x7e5c(gp)        |         t9 = sym.imp.__errno_location;
    0x00002970 jalr t9                   |         t9 ();
    0x00002974 nop                       |         
    0x00002978 lw v1, (v0)               |         v1 = *(v0);
    0x0000297c addiu v0, zero, 6         |         v0 = 6;
    0x00002980 lw gp, 0x18(sp)           |         gp = *(var_18h);
                                         |         if (v1 != v0) {
    0x00002984 bne v1, v0, 0x2e70        |             goto label_53;
                                         |         }
                                         | label_20:
    0x00002988 lw t9, -0x7ea4(gp)        |         t9 = sym.imp.endpwent;
                                         |     }
    0x0000298c jalr t9                   |     t9 ();
    0x00002990 nop                       |     
    0x00002994 lw gp, 0x18(sp)           |     gp = *(var_18h);
    0x00002998 lw t9, -0x7e68(gp)        |     t9 = sym.imp.endspent;
    0x0000299c jalr t9                   |     t9 ();
    0x000029a0 nop                       |     
    0x000029a4 lw gp, 0x18(sp)           |     gp = *(var_18h);
    0x000029a8 lw t9, -0x7e18(gp)        |     t9 = sym.imp.closelog;
    0x000029ac jalr t9                   |     t9 ();
    0x000029b0 nop                       |     
    0x000029b4 lw gp, 0x18(sp)           |     gp = *(var_18h);
    0x000029b8 lw v0, -0x7fdc(gp)        |     v0 = *((gp - 8183));
    0x000029bc lbu v0, 0x68c(v0)         |     v0 = *((v0 + 1676));
    0x000029c0 invalid                   |     
    0x000029c4 lw zero, 0x27(t8)         |     0 = *((t8 + 9.75));
    0x000029c8 bgtz t8, 0x29c8           |     
    0x000029cc lw t9, (gp)               |     t9 = *(gp);
    0x000029d0 addiu a0, a0, -0x5360     |     a0 += -0x5360;
    0x000029d4 bal 0x8038                |     sym_getdef_str ();
    0x000029d8 move s2, v0               |     s2 = v0;
    0x000029dc lw gp, 0x18(sp)           |     gp = *(var_18h);
                                         |     if (v0 == 0) {
    0x000029e0 beqz v0, 0x302c           |         goto label_54;
                                         |     }
                                         | label_25:
    0x000029e4 lw t9, -0x7e28(gp)        |     t9 = sym.imp.strlen;
    0x000029e8 move a0, s2               |     a0 = s2;
    0x000029ec jalr t9                   |     t9 ();
    0x000029f0 lw gp, 0x18(sp)           |     gp = *(var_18h);
    0x000029f4 lw t9, -0x7f78(gp)        |     t9 = sym.xmalloc;
    0x000029f8 addiu a0, v0, 2           |     a0 = v0 + 2;
    0x000029fc bal 0x7740                |     sym_xmalloc ();
    0x00002a00 lw gp, 0x18(sp)           |     gp = *(var_18h);
    0x00002a04 move s4, v0               |     s4 = v0;
    0x00002a08 addiu v0, zero, 0x2d      |     v0 = 0x2d;
    0x00002a0c lw t9, -0x7dd4(gp)        |     t9 = sym.imp.strcpy;
    0x00002a10 sb v0, (s4)               |     *(s4) = v0;
    0x00002a14 move a1, s2               |     a1 = s2;
    0x00002a18 addiu a0, s4, 1           |     a0 = s4 + 1;
    0x00002a1c jalr t9                   |     t9 ();
    0x00002a20 lw gp, 0x18(sp)           |     gp = *(var_18h);
                                         | label_10:
    0x00002a24 lbu v0, 0x68d(s6)         |     v0 = *((s6 + 1677));
    0x00002a28 lw s5, 0x688(s3)          |     s5 = *((s3 + 418));
    0x00002a2c lw s1, (s1)               |     s1 = *(s1);
                                         |     if (v0 != 0) {
    0x00002a30 bnez v0, 0x2dac           |         goto label_55;
                                         |     }
    0x00002a34 lw v0, 0x44(sp)           |     v0 = *(var_44h);
    0x00002a38 lw s2, (fp)               |     s2 = *(fp);
    0x00002a3c lw v0, 0x684(v0)          |     v0 = *((v0 + 417));
    0x00002a40 sll s2, s2, 2             |     s2 <<= 2;
    0x00002a44 addu s2, s7, s2           |     s2 = s7 + s2;
                                         |     if (v0 != 0) {
    0x00002a48 beqz v0, 0x2a60           |         
    0x00002a4c sw v0, -4(s2)             |         *((s2 - 1)) = v0;
    0x00002a50 lw v0, -0x7fd0(gp)        |         v0 = *((gp - 8180));
    0x00002a54 addiu s2, s2, -8          |         s2 += -8;
    0x00002a58 addiu v0, v0, -0x5358     |         v0 += -0x5358;
    0x00002a5c sw v0, (s2)               |         *(s2) = v0;
                                         |     }
    0x00002a60 lw t9, -0x7e34(gp)        |     t9 = sym.imp.execve;
    0x00002a64 move a2, s1               |     a2 = s1;
    0x00002a68 addiu a1, s2, -4          |     a1 = s2 + -4;
    0x00002a6c move a0, s5               |     a0 = s5;
    0x00002a70 sw s4, -4(s2)             |     *((s2 - 1)) = s4;
    0x00002a74 jalr t9                   |     t9 ();
    0x00002a78 lw gp, 0x18(sp)           |     gp = *(var_18h);
    0x00002a7c lw t9, -0x7e5c(gp)        |     t9 = sym.imp.__errno_location;
    0x00002a80 jalr t9                   |     t9 ();
    0x00002a84 nop                       |     
    0x00002a88 lw gp, 0x18(sp)           |     gp = *(var_18h);
    0x00002a8c addiu a1, zero, 5         |     a1 = 5;
    0x00002a90 move a0, s5               |     a0 = s5;
    0x00002a94 lw t9, -0x7e74(gp)        |     t9 = sym.imp.access;
    0x00002a98 move s4, v0               |     s4 = v0;
    0x00002a9c lw s6, (v0)               |     s6 = *(v0);
    0x00002aa0 jalr t9                   |     t9 ();
    0x00002aa4 lw gp, 0x18(sp)           |     gp = *(var_18h);
                                         |     if (v0 != 0) {
    0x00002aa8 bnez v0, 0x2da4           |         goto label_56;
                                         |     }
    0x00002aac lw v0, -4(s2)             |     v0 = *((s2 - 1));
    0x00002ab0 move v0, s2               |     v0 = s2;
                                         |     if (v0 == 0) {
    0x00002ab4 beqz v0, 0x30ac           |         goto label_57;
                                         |     }
    0x00002ab8 move a0, zero             |     a0 = 0;
    0x00002abc b 0x2ac4                  |     
                                         |     while (a1 != 0) {
    0x00002ac0 move a0, s7               |         a0 = s7;
    0x00002ac4 addiu v0, v0, 4           |         v0 += 4;
    0x00002ac8 lw a1, 0xfc(v0)           |         a1 = *((v0 + 63));
    0x00002acc addiu s7, a0, 1           |         s7 = a0 + 1;
    0x00002ad0 bnez a1, 0x2ac0           |         
                                         |     }
    0x00002ad4 addiu a0, a0, 4           |     a0 += 4;
    0x00002ad8 lw t9, -0x7f78(gp)        |     t9 = sym.xmalloc;
    0x00002adc sll s6, a0, 2             |     s6 = a0 << 2;
    0x00002ae0 move a0, s6               |     a0 = s6;
    0x00002ae4 bal 0x7740                |     sym_xmalloc ();
    0x00002ae8 lw gp, 0x18(sp)           |     gp = *(var_18h);
    0x00002aec move fp, v0               |     fp = v0;
    0x00002af0 move a0, s5               |     a0 = s5;
    0x00002af4 lw v0, -0x7fd0(gp)        |     v0 = *((gp - 8180));
    0x00002af8 lw t9, -0x7fbc(gp)        |     t9 = sym.xstrdup;
    0x00002afc addiu v0, v0, -0x5354     |     v0 += -0x5354;
    0x00002b00 sw v0, (fp)               |     *(fp) = v0;
    0x00002b04 lw v0, -0x7fd0(gp)        |     v0 = *((gp - 8180));
    0x00002b08 addu s6, fp, s6           |     s6 = fp + s6;
    0x00002b0c addiu v0, v0, -0x4d78     |     v0 += -0x4d78;
    0x00002b10 sw v0, 4(fp)              |     *(arg_4h) = v0;
    0x00002b14 bal 0x77e4                |     sym_xstrdup ();
    0x00002b18 addiu a0, zero, 1         |     a0 = 1;
    0x00002b1c lw gp, 0x18(sp)           |     gp = *(var_18h);
    0x00002b20 sw v0, 8(fp)              |     *(arg_8h) = v0;
    0x00002b24 sw zero, -4(s6)           |     *((s6 - 1)) = 0;
                                         |     if (s7 == a0) {
    0x00002b28 beq s7, a0, 0x2b58        |         goto label_58;
                                         |     }
                                         | label_26:
    0x00002b2c sll s7, s7, 2             |     s7 <<= 2;
    0x00002b30 move v0, s7               |     v0 = s7;
    0x00002b34 addiu s7, s7, -8          |     s7 += -8;
    0x00002b38 addu s7, s2, s7           |     s7 = s2 + s7;
    0x00002b3c addu v0, fp, v0           |     v0 = fp + v0;
    0x00002b40 addiu a1, fp, 4           |     a1 = fp + 4;
                                         |     do {
    0x00002b44 lw a0, (s7)               |         a0 = *(s7);
    0x00002b48 addiu v0, v0, -4          |         v0 += -4;
    0x00002b4c addiu s7, s7, -4          |         s7 += -4;
    0x00002b50 sw a0, 8(v0)              |         *((v0 + 2)) = a0;
    0x00002b54 bne a1, v0, 0x2b44        |         
                                         |     } while (a1 != v0);
                                         | label_58:
    0x00002b58 lw a0, -0x7fd0(gp)        |     a0 = *((gp - 8180));
    0x00002b5c lw t9, -0x7e34(gp)        |     t9 = sym.imp.execve;
    0x00002b60 move a2, s1               |     a2 = s1;
    0x00002b64 move a1, fp               |     a1 = fp;
    0x00002b68 addiu a0, a0, -0x5400     |     a0 += -0x5400;
    0x00002b6c jalr t9                   |     t9 ();
    0x00002b70 lw gp, 0x18(sp)           |     gp = *(var_18h);
                                         | label_13:
    0x00002b74 lw v0, -0x7d64(gp)        |     v0 = *((gp - 8025));
    0x00002b78 lw a2, -0x7fd0(gp)        |     a2 = *((gp - 8180));
    0x00002b7c lw t9, -0x7ebc(gp)        |     t9 = sym.imp.__fprintf_chk
    0x00002b80 lw s1, (s4)               |     s1 = *(s4);
    0x00002b84 lw a3, 0x688(s3)          |     a3 = *((s3 + 418));
    0x00002b88 lw a0, (v0)               |     a0 = *(v0);
    0x00002b8c addiu a2, a2, -0x5350     |     a2 += -aav.0x00005350;
    0x00002b90 addiu a1, zero, 1         |     a1 = 1;
    0x00002b94 jalr t9                   |     t9 ();
    0x00002b98 lw gp, 0x18(sp)           |     gp = *(var_18h);
    0x00002b9c sw s1, (s4)               |     *(s4) = s1;
                                         | label_14:
    0x00002ba0 lw t9, -0x7fb8(gp)        |     t9 = sym.pw_free;
    0x00002ba4 move a0, s0               |     a0 = s0;
    0x00002ba8 bal 0x9b80                |     sym_pw_free ();
    0x00002bac lw gp, 0x18(sp)           |     gp = *(var_18h);
    0x00002bb0 lw t9, -0x7e5c(gp)        |     t9 = sym.imp.__errno_location;
    0x00002bb4 jalr t9                   |     t9 ();
    0x00002bb8 nop                       |     
    0x00002bbc lw v0, (v0)               |     v0 = *(v0);
    0x00002bc0 lw ra, 0x74(sp)           |     ra = *(var_74h);
    0x00002bc4 xori v0, v0, 2            |     v0 ^= 2;
    0x00002bc8 addiu a0, zero, 0x7f      |     a0 = 0x7f;
    0x00002bcc addiu v1, zero, 0x7e      |     v1 = 0x7e;
                                         |     if (v0 != 0) {
    0x00002bd0 movz v1, a0, v0           |         v1 = a0;
                                         |     }
    0x00002bd4 lw fp, 0x70(sp)           |     fp = *(var_70h);
    0x00002bd8 lw s7, 0x6c(sp)           |     s7 = *(var_6ch);
    0x00002bdc lw s6, 0x68(sp)           |     s6 = *(var_68h);
    0x00002be0 lw s5, 0x64(sp)           |     s5 = *(var_64h);
    0x00002be4 lw s4, 0x60(sp)           |     s4 = *(var_60h);
    0x00002be8 lw s3, 0x5c(sp)           |     s3 = *(var_5ch);
    0x00002bec lw s2, 0x58(sp)           |     s2 = *(var_58h);
    0x00002bf0 lw s1, 0x54(sp)           |     s1 = *(var_54h);
    0x00002bf4 lw s0, 0x50(sp)           |     s0 = *(var_50h);
    0x00002bf8 move v0, v1               |     v0 = v1;
    0x00002bfc addiu sp, sp, 0x78        |     
    0x00002c00 jr ra                     |     return v0;
                                         | label_33:
    0x00002c04 lw a1, -0x7fd0(gp)        |     a1 = *((gp - 8180));
    0x00002c08 lw t9, -0x7d3c(gp)        |     t9 = sym.imp.strcmp;
    0x00002c0c lwx a0, s4(s7)            |     __asm ("lwx a0, s4(s7)");
    0x00002c10 addiu a1, a1, -0x4d78     |     a1 += -0x4d78;
    0x00002c14 jalr t9                   |     t9 ();
    0x00002c18 lw gp, 0x18(sp)           |     gp = *(var_18h);
                                         |     if (v0 != 0) {
    0x00002c1c bnez v0, 0x2c40           |         goto label_59;
                                         |     }
    0x00002c20 lw v1, -0x7fdc(gp)        |     v1 = *((gp - 8183));
    0x00002c24 addiu s3, s3, 1           |     s3++;
    0x00002c28 addiu a0, zero, 1         |     a0 = 1;
    0x00002c2c slt v0, s3, s0            |     v0 = (s3 < s0) ? 1 : 0;
    0x00002c30 sb a0, 0x68c(v1)          |     *((v1 + 1676)) = a0;
    0x00002c34 sw s3, (fp)               |     *(fp) = s3;
                                         |     if (v0 == 0) {
    0x00002c38 beqz v0, 0x2408           |         goto label_4;
                                         |     }
    0x00002c3c sll s4, s3, 2             |     s4 = s3 << 2;
                                         | label_59:
    0x00002c40 lw s1, -0x7fdc(gp)        |     s1 = *((gp - 8183));
    0x00002c44 lw t9, -0x7e60(gp)        |     t9 = sym.imp.strncpy;
    0x00002c48 lwx a1, s4(s7)            |     __asm ("lwx a1, s4(s7)");
    0x00002c4c addiu s3, s3, 1           |     s3++;
    0x00002c50 addiu a2, zero, 0x1fff    |     a2 = 0x1fff;
    0x00002c54 addiu a0, s1, -0x197c     |     a0 = s1 + -0x197c;
    0x00002c58 sw s3, (fp)               |     *(fp) = s3;
    0x00002c5c jalr t9                   |     t9 ();
    0x00002c60 addiu v0, s1, -0x197c     |     v0 = s1 + -0x197c;
    0x00002c64 lw gp, 0x18(sp)           |     gp = *(var_18h);
    0x00002c68 sb zero, 0x1fff(v0)       |     *((v0 + 8191)) = 0;
    0x00002c6c b 0x240c                  |     goto label_5;
                                         | label_43:
    0x00002c70 lw v0, -0x7fdc(gp)        |     v0 = *((gp - 8183));
    0x00002c74 lbu v0, -0x3ff0(v0)       |     v0 = *((v0 - 16368));
    0x00002c78 lw a0, -0x7fd0(gp)        |     a0 = *((gp - 8180));
                                         |     if (v0 != 0) {
    0x00002c7c bnez v0, 0x2e10           |         goto label_60;
                                         |     }
    0x00002c80 lw t9, -0x7ddc(gp)        |     t9 = sym.imp.getenv;
    0x00002c84 sw v1, 0x24(sp)           |     *(var_24h) = v1;
    0x00002c88 addiu a0, a0, -0x5408     |     a0 += -0x5408;
    0x00002c8c jalr t9                   |     t9 ();
    0x00002c90 lw v1, 0x24(sp)           |     v1 = *(var_24h);
    0x00002c94 lw gp, 0x18(sp)           |     gp = *(var_18h);
    0x00002c98 sw v0, 0x688(s3)          |     *((s3 + 418)) = v0;
                                         |     if (v1 != 0) {
    0x00002c9c bnez v1, 0x2cfc           |         goto label_61;
                                         |     }
    0x00002ca0 lw s4, 0x18(s0)           |     s4 = *((s0 + 6));
    0x00002ca4 lw t9, -0x7e08(gp)        |     t9 = sym.imp.setusershell;
                                         | label_17:
    0x00002ca8 jalr t9                   |     t9 ();
    0x00002cac nop                       |     
    0x00002cb0 lw gp, 0x18(sp)           |     gp = *(var_18h);
                                         |     do {
                                         | label_6:
    0x00002cb4 lw t9, -0x7d48(gp)        |         t9 = sym.imp.getusershell;
    0x00002cb8 jalr t9                   |         t9 ();
    0x00002cbc nop                       |         
    0x00002cc0 lw gp, 0x18(sp)           |         gp = *(var_18h);
                                         |         if (v0 == 0) {
    0x00002cc4 beqz v0, 0x2e90           |             goto label_62;
                                         |         }
    0x00002cc8 lb v1, (v0)               |         v1 = *(v0);
    0x00002ccc addiu a0, zero, 0x23      |         a0 = 0x23;
    0x00002cd0 lw t9, -0x7d3c(gp)        |         t9 = sym.imp.strcmp;
    0x00002cd4 beq v1, a0, 0x2cb4        |         
                                         |     } while (v1 == a0);
    0x00002cd8 move a1, s4               |     a1 = s4;
    0x00002cdc move a0, v0               |     a0 = v0;
    0x00002ce0 jalr t9                   |     t9 ();
    0x00002ce4 lw gp, 0x18(sp)           |     gp = *(var_18h);
                                         |     if (v0 != 0) {
    0x00002ce8 bnez v0, 0x2cb4           |         goto label_6;
                                         |     }
    0x00002cec lw t9, -0x7d88(gp)        |     t9 = sym.imp.endusershell;
    0x00002cf0 jalr t9                   |     t9 ();
    0x00002cf4 nop                       |     
    0x00002cf8 lw gp, 0x18(sp)           |     gp = *(var_18h);
                                         | label_61:
    0x00002cfc lw s4, 0x688(s3)          |     s4 = *((s3 + 418));
    0x00002d00 lb v0, (s4)               |     v0 = *(s4);
                                         |     if (s4 == 0) {
    0x00002d04 bnel s4, zero, 0x272c     |         goto label_7;
                                         |     }
                                         | label_22:
    0x00002d08 lw s4, 0x18(s0)           |     s4 = *((s0 + 6));
    0x00002d0c sw s4, 0x688(s3)          |     *((s3 + 418)) = s4;
                                         |     if (s4 == 0) {
    0x00002d10 beqz s4, 0x2734           |         goto label_8;
                                         |     }
    0x00002d14 lb v0, (s4)               |     v0 = *(s4);
    0x00002d18 b 0x272c                  |     goto label_7;
                                         | label_48:
    0x00002d1c addiu a0, a0, -0x582c     |     a0 += -0x582c;
    0x00002d20 b 0x2868                  |     goto label_9;
    0x00002d24 lw a0, 0x688(s3)          |     a0 = *((s3 + 418));
    0x00002d28 bal 0x4510                |     sym_Basename ();
    0x00002d2c move s4, v0               |     s4 = v0;
    0x00002d30 lw gp, 0x18(sp)           |     gp = *(var_18h);
    0x00002d34 b 0x2a24                  |     goto label_10;
                                         | label_31:
    0x00002d38 lw t9, -0x7d6c(gp)        |     t9 = sym.imp.getspnam;
    0x00002d3c lw a0, 0x48(sp)           |     a0 = *(var_48h);
    0x00002d40 jalr t9                   |     t9 ();
    0x00002d44 lw gp, 0x18(sp)           |     gp = *(var_18h);
                                         |     if (v0 == 0) {
    0x00002d48 beqz v0, 0x22f0           |         goto label_11;
                                         |     }
    0x00002d4c lw s3, 4(v0)              |     s3 = *((v0 + 1));
    0x00002d50 b 0x22f0                  |     goto label_11;
                                         | label_34:
    0x00002d54 lw t9, -0x7d30(gp)        |     t9 = sym.imp.getpwnam;
    0x00002d58 addiu a0, a0, -0x5554     |     a0 += -0x5554;
    0x00002d5c jalr t9                   |     t9 ();
    0x00002d60 lw gp, 0x18(sp)           |     gp = *(var_18h);
                                         |     if (v0 != 0) {
    0x00002d64 beqz v0, 0x2d74           |         
    0x00002d68 lw v0, 8(v0)              |         v0 = *((v0 + 2));
    0x00002d6c addiu v1, s1, -0x197c     |         v1 = s1 + -0x197c;
                                         |         if (v0 == 0) {
    0x00002d70 beqz v0, 0x2e28           |             goto label_63;
                                         |         }
                                         |     }
    0x00002d74 lw t9, -0x7d54(gp)        |     t9 = sym.imp.getpwuid;
    0x00002d78 move a0, zero             |     a0 = 0;
    0x00002d7c jalr t9                   |     t9 ();
    0x00002d80 lw gp, 0x18(sp)           |     gp = *(var_18h);
                                         |     if (v0 == 0) {
    0x00002d84 beqz v0, 0x3298           |         goto label_64;
                                         |     }
    0x00002d88 lw t9, -0x7e7c(gp)        |     t9 = sym.imp.__strcpy_chk;
    0x00002d8c lw a1, (v0)               |     a1 = *(v0);
    0x00002d90 addiu a2, zero, 0x2000    |     a2 = 0x2000;
    0x00002d94 addiu a0, s1, -0x197c     |     a0 = s1 + -0x197c;
    0x00002d98 jalr t9                   |     t9 ();
    0x00002d9c lw gp, 0x18(sp)           |     gp = *(var_18h);
    0x00002da0 b 0x2418                  |     goto label_12;
                                         | label_56:
    0x00002da4 sw s6, (s4)               |     *(s4) = s6;
    0x00002da8 b 0x2b74                  |     goto label_13;
                                         | label_55:
    0x00002dac lw t9, -0x7f74(gp)        |     t9 = sym.shell;
    0x00002db0 move a2, s1               |     a2 = s1;
    0x00002db4 move a1, s4               |     a1 = s4;
    0x00002db8 move a0, s5               |     a0 = s5;
    0x00002dbc bal 0x6b80                |     sym_shell ();
    0x00002dc0 lw gp, 0x18(sp)           |     gp = *(var_18h);
    0x00002dc4 b 0x2ba0                  |     goto label_14;
                                         | label_49:
    0x00002dc8 lw v0, 8(s0)              |     v0 = *((s0 + 2));
                                         |     if (v0 == 0) {
    0x00002dcc beql v0, zero, 0x2e20     |         goto label_65;
                                         |     }
    0x00002dd0 lw a0, -0x7fd0(gp)        |     a0 = *((gp - 8180));
    0x00002dd4 lw a0, -0x7fd0(gp)        |     a0 = *((gp - 8180));
    0x00002dd8 addiu a0, a0, -0x57f0     |     a0 += -0x57f0;
                                         | label_19:
    0x00002ddc lw t9, -0x7f88(gp)        |     t9 = sym.addenv;
    0x00002de0 move a1, zero             |     a1 = 0;
    0x00002de4 bal 0x4770                |     sym_addenv ();
    0x00002de8 lw gp, 0x18(sp)           |     gp = *(var_18h);
    0x00002dec b 0x28ac                  |     goto label_15;
                                         | label_44:
    0x00002df0 lw v0, 0x48(sp)           |     v0 = *(var_48h);
    0x00002df4 b 0x278c                  |     goto label_16;
                                         | label_50:
    0x00002df8 lw a0, -0x7fd0(gp)        |     a0 = *((gp - 8180));
    0x00002dfc move a1, s4               |     a1 = s4;
    0x00002e00 addiu a0, a0, -0x581c     |     a0 += -0x581c;
    0x00002e04 bal 0x4770                |     sym_addenv ();
    0x00002e08 lw gp, 0x18(sp)           |     gp = *(var_18h);
    0x00002e0c b 0x28ac                  |     goto label_15;
                                         | label_60:
    0x00002e10 lw t9, -0x7e08(gp)        |     t9 = sym.imp.setusershell;
                                         |     if (v1 == 0) {
    0x00002e14 beqz v1, 0x2ca8           |         goto label_17;
                                         |     }
    0x00002e18 sw s4, 0x688(s3)          |     *((s3 + 418)) = s4;
    0x00002e1c b 0x2728                  |     goto label_18;
                                         | label_65:
    0x00002e20 addiu a0, a0, -0x5814     |     a0 += -0x5814;
    0x00002e24 b 0x2ddc                  |     goto label_19;
                                         | label_63:
    0x00002e28 lui v0, 0x746f            |     v0 = 0x746f6f72;
    0x00002e2c addiu v0, v0, 0x6f72      |     
    0x00002e30 sw v0, -0x197c(s1)        |     *((s1 - 1631)) = v0;
    0x00002e34 sb zero, 4(v1)            |     *((v1 + 4)) = 0;
    0x00002e38 b 0x2418                  |     goto label_12;
                                         | label_52:
    0x00002e3c lw t9, -0x7dc4(gp)        |     t9 = sym.imp.ioctl;
    0x00002e40 move a2, zero             |     a2 = 0;
    0x00002e44 addiu a1, zero, 0x5471    |     a1 = 0x5471;
    0x00002e48 move a0, v0               |     a0 = v0;
    0x00002e4c jalr t9                   |     t9 ();
    0x00002e50 lw gp, 0x18(sp)           |     gp = *(var_18h);
    0x00002e54 move a0, s2               |     a0 = s2;
    0x00002e58 lw t9, -0x7ee4(gp)        |     t9 = sym.imp.close;
    0x00002e5c move s2, v0               |     s2 = v0;
    0x00002e60 jalr t9                   |     t9 ();
    0x00002e64 addiu v0, zero, -1        |     v0 = -1;
    0x00002e68 lw gp, 0x18(sp)           |     gp = *(var_18h);
                                         |     if (s2 != v0) {
    0x00002e6c bne s2, v0, 0x2988        |         goto label_20;
                                         |     }
                                         | label_53:
    0x00002e70 lw v0, -0x7d64(gp)        |     v0 = *((gp - 8025));
    0x00002e74 lw a2, -0x7fd0(gp)        |     a2 = *((gp - 8180));
    0x00002e78 lw t9, -0x7ebc(gp)        |     t9 = sym.imp.__fprintf_chk
    0x00002e7c lw a0, (v0)               |     a0 = *(v0);
    0x00002e80 lw v0, 0x4c(sp)           |     v0 = *(var_4ch);
    0x00002e84 addiu a2, a2, -0x538c     |     a2 += -0x538c;
    0x00002e88 lw a3, (v0)               |     a3 = *(v0);
    0x00002e8c b 0x26ac                  |     goto label_21;
                                         | label_62:
    0x00002e90 lw t9, -0x7d88(gp)        |     t9 = sym.imp.endusershell;
    0x00002e94 jalr t9                   |     t9 ();
    0x00002e98 nop                       |     
    0x00002e9c lw gp, 0x18(sp)           |     gp = *(var_18h);
    0x00002ea0 addiu v1, zero, 1         |     v1 = 1;
    0x00002ea4 lw v0, -0x7fdc(gp)        |     v0 = *((gp - 8183));
    0x00002ea8 sb v1, -0x3ff0(v0)        |     *((v0 - 16368)) = v1;
    0x00002eac b 0x2d08                  |     goto label_22;
                                         | label_51:
    0x00002eb0 lw t9, -0x7f88(gp)        |     t9 = sym.addenv;
    0x00002eb4 lw a1, 0x14(s0)           |     a1 = *((s0 + 5));
    0x00002eb8 addiu a0, a0, -0x4978     |     a0 += -0x4978;
    0x00002ebc bal 0x4770                |     sym_addenv ();
    0x00002ec0 lw gp, 0x18(sp)           |     gp = *(var_18h);
    0x00002ec4 lw a1, (s0)               |     a1 = *(s0);
    0x00002ec8 lw a0, -0x7fd0(gp)        |     a0 = *((gp - 8180));
    0x00002ecc lw t9, -0x7f88(gp)        |     t9 = sym.addenv;
    0x00002ed0 addiu a0, a0, -0x53a8     |     a0 += -0x53a8;
    0x00002ed4 bal 0x4770                |     sym_addenv ();
    0x00002ed8 lw gp, 0x18(sp)           |     gp = *(var_18h);
    0x00002edc lw a1, (s0)               |     a1 = *(s0);
    0x00002ee0 lw a0, -0x7fd0(gp)        |     a0 = *((gp - 8180));
    0x00002ee4 lw t9, -0x7f88(gp)        |     t9 = sym.addenv;
    0x00002ee8 addiu a0, a0, -0x53a0     |     a0 += -0x53a0;
    0x00002eec bal 0x4770                |     sym_addenv ();
    0x00002ef0 lw gp, 0x18(sp)           |     gp = *(var_18h);
    0x00002ef4 lw a1, 0x688(s3)          |     a1 = *((s3 + 418));
    0x00002ef8 lw a0, -0x7fd0(gp)        |     a0 = *((gp - 8180));
    0x00002efc lw t9, -0x7f88(gp)        |     t9 = sym.addenv;
    0x00002f00 addiu a0, a0, -0x5408     |     a0 += -0x5408;
    0x00002f04 bal 0x4770                |     sym_addenv ();
    0x00002f08 lw gp, 0x18(sp)           |     gp = *(var_18h);
    0x00002f0c b 0x2940                  |     goto label_23;
                                         | label_46:
    0x00002f10 lw t9, -0x7ddc(gp)        |     t9 = sym.imp.getenv;
    0x00002f14 addiu a0, s1, -0x53ec     |     a0 = s1 + -0x53ec;
    0x00002f18 jalr t9                   |     t9 ();
    0x00002f1c lw gp, 0x18(sp)           |     gp = *(var_18h);
                                         |     if (v0 != 0) {
    0x00002f20 beqz v0, 0x2f38           |         
    0x00002f24 lw t9, -0x7f88(gp)        |         t9 = sym.addenv;
    0x00002f28 move a1, v0               |         a1 = v0;
    0x00002f2c addiu a0, s1, -0x53ec     |         a0 = s1 + -0x53ec;
    0x00002f30 bal 0x4770                |         sym_addenv ();
    0x00002f34 lw gp, 0x18(sp)           |         gp = *(var_18h);
                                         |     }
    0x00002f38 lw s1, -0x7fd0(gp)        |     s1 = *((gp - 8180));
    0x00002f3c lw t9, -0x7ddc(gp)        |     t9 = sym.imp.getenv;
    0x00002f40 addiu a0, s1, -0x53e4     |     a0 = s1 + -0x53e4;
    0x00002f44 jalr t9                   |     t9 ();
    0x00002f48 lw gp, 0x18(sp)           |     gp = *(var_18h);
                                         |     if (v0 != 0) {
    0x00002f4c beqz v0, 0x2f64           |         
    0x00002f50 lw t9, -0x7f88(gp)        |         t9 = sym.addenv;
    0x00002f54 move a1, v0               |         a1 = v0;
    0x00002f58 addiu a0, s1, -0x53e4     |         a0 = s1 + -0x53e4;
    0x00002f5c bal 0x4770                |         sym_addenv ();
    0x00002f60 lw gp, 0x18(sp)           |         gp = *(var_18h);
                                         |     }
    0x00002f64 lw a0, -0x7fd0(gp)        |     a0 = *((gp - 8180));
    0x00002f68 lw t9, -0x7f84(gp)        |     t9 = sym.getdef_str;
    0x00002f6c addiu a0, a0, -0x53d8     |     a0 += -0x53d8;
    0x00002f70 bal 0x8038                |     sym_getdef_str ();
    0x00002f74 lw gp, 0x18(sp)           |     gp = *(var_18h);
                                         |     if (v0 != 0) {
    0x00002f78 beqz v0, 0x2fa0           |         
    0x00002f7c lb a0, (v0)               |         a0 = *(v0);
    0x00002f80 addiu v1, zero, 0x2f      |         v1 = 0x2f;
    0x00002f84 lw t9, -0x7f70(gp)        |         t9 = sym.tz;
                                         |         if (a0 == v1) {
    0x00002f88 beq a0, v1, 0x30f4        |             goto label_66;
                                         |         }
                                         | label_27:
    0x00002f8c lw t9, -0x7f88(gp)        |         t9 = sym.addenv;
    0x00002f90 move a1, zero             |         a1 = 0;
    0x00002f94 move a0, v0               |         a0 = v0;
    0x00002f98 bal 0x4770                |         sym_addenv ();
    0x00002f9c lw gp, 0x18(sp)           |         gp = *(var_18h);
                                         |     }
    0x00002fa0 lw a0, -0x7fd0(gp)        |     a0 = *((gp - 8180));
    0x00002fa4 lw t9, -0x7f84(gp)        |     t9 = sym.getdef_str;
    0x00002fa8 addiu a0, a0, -0x53d0     |     a0 += -0x53d0;
    0x00002fac bal 0x8038                |     sym_getdef_str ();
    0x00002fb0 lw gp, 0x18(sp)           |     gp = *(var_18h);
                                         |     if (v0 != 0) {
    0x00002fb4 beqz v0, 0x2fcc           |         
    0x00002fb8 lw t9, -0x7f88(gp)        |         t9 = sym.addenv;
    0x00002fbc move a1, zero             |         a1 = 0;
    0x00002fc0 move a0, v0               |         a0 = v0;
    0x00002fc4 bal 0x4770                |         sym_addenv ();
    0x00002fc8 lw gp, 0x18(sp)           |         gp = *(var_18h);
                                         |     }
    0x00002fcc lw s1, -0x7fd0(gp)        |     s1 = *((gp - 8180));
    0x00002fd0 lw t9, -0x7ddc(gp)        |     t9 = sym.imp.getenv;
    0x00002fd4 addiu a0, s1, -0x53c8     |     a0 = s1 + -0x53c8;
    0x00002fd8 jalr t9                   |     t9 ();
    0x00002fdc lw gp, 0x18(sp)           |     gp = *(var_18h);
                                         |     if (v0 != 0) {
    0x00002fe0 beqz v0, 0x2ff8           |         
    0x00002fe4 lw t9, -0x7f88(gp)        |         t9 = sym.addenv;
    0x00002fe8 move a1, v0               |         a1 = v0;
    0x00002fec addiu a0, s1, -0x53c8     |         a0 = s1 + -0x53c8;
    0x00002ff0 bal 0x4770                |         sym_addenv ();
    0x00002ff4 lw gp, 0x18(sp)           |         gp = *(var_18h);
                                         |     }
    0x00002ff8 lw s1, -0x7fd0(gp)        |     s1 = *((gp - 8180));
    0x00002ffc lw t9, -0x7ddc(gp)        |     t9 = sym.imp.getenv;
    0x00003000 addiu a0, s1, -0x53c0     |     a0 = s1 + -0x53c0;
    0x00003004 jalr t9                   |     t9 ();
    0x00003008 lw gp, 0x18(sp)           |     gp = *(var_18h);
                                         |     if (v0 != 0) {
    0x0000300c beqz v0, 0x3044           |         
    0x00003010 lw t9, -0x7f88(gp)        |         t9 = sym.addenv;
    0x00003014 addiu a0, s1, -0x53c0     |         a0 = s1 + -0x53c0;
    0x00003018 move a1, v0               |         a1 = v0;
    0x0000301c bal 0x4770                |         sym_addenv ();
    0x00003020 lw gp, 0x18(sp)           |         gp = *(var_18h);
    0x00003024 lw s1, -0x7ed0(gp)        |         s1 = *((gp - 8116));
    0x00003028 b 0x2854                  |         goto label_24;
                                         | label_54:
    0x0000302c lw t9, -0x7fc8(gp)        |         t9 = sym.Basename;
    0x00003030 lw a0, 0x688(s3)          |         a0 = *((s3 + 418));
    0x00003034 bal 0x4510                |         sym_Basename ();
    0x00003038 move s2, v0               |         s2 = v0;
    0x0000303c lw gp, 0x18(sp)           |         gp = *(var_18h);
    0x00003040 b 0x29e4                  |         goto label_25;
                                         |     }
    0x00003044 lw s1, -0x7ed0(gp)        |     s1 = *((gp - 8116));
    0x00003048 b 0x2854                  |     goto label_24;
                                         | label_32:
    0x0000307c lw v0, -0x7d64(gp)        |     v0 = *((gp - 8025));
    0x00003080 lw a0, -0x7fd0(gp)        |     a0 = *((gp - 8180));
    0x00003084 lw t9, -0x7dcc(gp)        |     t9 = sym.imp.fwrite;
    0x00003088 lw a3, (v0)               |     a3 = *(v0);
    0x0000308c addiu a0, a0, -0x5750     |     a0 += -0x5750;
                                         |     while (t8 > 0);
    0x00003090 addiu a2, zero, 0x1ee     |     a2 = 0x1ee;
    0x00003094 addiu a1, zero, 1         |     a1 = 1;
    0x00003098 jalr t9                   |     t9 ();
    0x0000309c lw gp, 0x18(sp)           |     gp = *(var_18h);
    0x000030a0 lw t9, -0x7e00(gp)        |     t9 = sym.imp.exit;
    0x000030a4 addiu a0, zero, 2         |     a0 = 2;
    0x000030a8 jalr t9                   |     t9 ();
                                         | label_57:
    0x000030ac lw t9, -0x7f78(gp)        |     t9 = sym.xmalloc;
    0x000030b0 addiu a0, zero, 0xc       |     a0 = 0xc;
    0x000030b4 bal 0x7740                |     sym_xmalloc ();
    0x000030b8 lw gp, 0x18(sp)           |     gp = *(var_18h);
    0x000030bc move fp, v0               |     fp = v0;
    0x000030c0 move a0, s5               |     a0 = s5;
    0x000030c4 lw v0, -0x7fd0(gp)        |     v0 = *((gp - 8180));
    0x000030c8 lw t9, -0x7fbc(gp)        |     t9 = sym.xstrdup;
    0x000030cc addiu v0, v0, -0x5354     |     v0 += -0x5354;
    0x000030d0 sw v0, (fp)               |     *(fp) = v0;
    0x000030d4 lw v0, -0x7fd0(gp)        |     v0 = *((gp - 8180));
    0x000030d8 move s7, zero             |     s7 = 0;
    0x000030dc addiu v0, v0, -0x4d78     |     v0 += -0x4d78;
    0x000030e0 sw v0, 4(fp)              |     *(arg_4h) = v0;
    0x000030e4 bal 0x77e4                |     sym_xstrdup ();
    0x000030e8 lw gp, 0x18(sp)           |     gp = *(var_18h);
    0x000030ec sw zero, 8(fp)            |     *(arg_8h) = 0;
    0x000030f0 b 0x2b2c                  |     goto label_26;
                                         | label_66:
    0x000030f4 move a0, v0               |     a0 = v0;
    0x000030f8 bal 0x7100                |     sym_tz ();
    0x000030fc lw gp, 0x18(sp)           |     gp = *(var_18h);
    0x00003100 b 0x2f8c                  |     goto label_27;
                                         | label_39:
    0x00003104 lw v0, -0x7d64(gp)        |     v0 = *((gp - 8025));
    0x00003108 lw a2, -0x7fd0(gp)        |     a2 = *((gp - 8180));
    0x0000310c lw t9, -0x7ebc(gp)        |     t9 = sym.imp.__fprintf_chk
    0x00003110 lw a0, (v0)               |     a0 = *(v0);
    0x00003114 addiu a3, s1, -0x197c     |     a3 = s1 + -0x197c;
    0x00003118 addiu a2, a2, -0x5534     |     a2 += -0x5534;
    0x0000311c addiu a1, zero, 1         |     a1 = 1;
    0x00003120 jalr t9                   |     t9 ();
    0x00003124 lw gp, 0x18(sp)           |     gp = *(var_18h);
    0x00003128 addiu a1, zero, 1         |     a1 = 1;
    0x0000312c addiu a0, zero, 5         |     a0 = 5;
    0x00003130 lw a2, -0x7fd0(gp)        |     a2 = *((gp - 8180));
    0x00003134 lw t9, -0x7e88(gp)        |     t9 = sym.imp.__syslog_chk;
    0x00003138 addiu a3, s1, -0x197c     |     a3 = s1 + -0x197c;
    0x0000313c addiu a2, a2, -0x5514     |     a2 += -0x5514;
    0x00003140 jalr t9                   |     t9 ();
    0x00003144 lw gp, 0x18(sp)           |     gp = *(var_18h);
                                         | label_28:
    0x00003148 lw v0, 0x20(sp)           |     v0 = *(var_20h);
    0x0000314c lw t9, -0x7fb0(gp)        |     t9 = *((gp - 8172));
    0x00003150 addiu a1, zero, 1         |     a1 = 1;
    0x00003154 addiu t9, t9, 0x3498      |     t9 += fcn.00003498;
    0x00003158 lw a0, 0x6a0(v0)          |     a0 = *((v0 + 424));
    0x0000315c bal 0x3498                |     fcn_00003498 ();
                                         | label_36:
    0x00003160 lw a0, 8(s0)              |     a0 = *((s0 + 2));
    0x00003164 lw a2, -0x7fd0(gp)        |     a2 = *((gp - 8180));
    0x00003168 lw t9, -0x7e88(gp)        |     t9 = sym.imp.__syslog_chk;
    0x0000316c sltu a0, zero, a0         |     a0 = (0 < a0) ? 1 : 0;
    0x00003170 addiu a3, s1, -0x197c     |     a3 = s1 + -0x197c;
    0x00003174 addiu a2, a2, -0x549c     |     a2 += -0x549c;
    0x00003178 addiu a1, zero, 1         |     a1 = 1;
    0x0000317c addiu a0, a0, 4           |     a0 += 4;
    0x00003180 jalr t9                   |     t9 ();
    0x00003184 lw gp, 0x18(sp)           |     gp = *(var_18h);
    0x00003188 lw v0, 0x4c(sp)           |     v0 = *(var_4ch);
    0x0000318c addiu a1, zero, 1         |     a1 = 1;
    0x00003190 lw a2, -0x7fd0(gp)        |     a2 = *((gp - 8180));
    0x00003194 lw a3, (v0)               |     a3 = *(v0);
    0x00003198 lw v0, -0x7d64(gp)        |     v0 = *((gp - 8025));
    0x0000319c lw t9, -0x7ebc(gp)        |     t9 = sym.imp.__fprintf_chk
    0x000031a0 addiu a2, a2, -0x547c     |     a2 += -0x547c;
    0x000031a4 lw a0, (v0)               |     a0 = *(v0);
                                         |     do {
    0x000031a8 jalr t9                   |         t9 ();
    0x000031ac nop                       |         
    0x000031b0 lw gp, 0x18(sp)           |         gp = *(var_18h);
    0x000031b4 lw v0, 0x20(sp)           |         v0 = *(var_20h);
    0x000031b8 lw a1, 8(s0)              |         a1 = *((s0 + 2));
    0x000031bc lw t9, -0x7fb0(gp)        |         t9 = *((gp - 8172));
    0x000031c0 lw a0, 0x6a0(v0)          |         a0 = *((v0 + 424));
    0x000031c4 addiu t9, t9, 0x3498      |         t9 += fcn.00003498;
    0x000031c8 sltiu a1, a1, 1           |         a1 = (a1 < 1) ? 1 : 0;
    0x000031cc bal 0x3498                |         fcn_00003498 ();
                                         | label_37:
    0x000031d0 lw a0, 8(s0)              |         a0 = *((s0 + 2));
    0x000031d4 lw a2, -0x7fd0(gp)        |         a2 = *((gp - 8180));
    0x000031d8 addiu v1, zero, 4         |         v1 = 4;
    0x000031dc addiu v0, zero, 2         |         v0 = 2;
    0x000031e0 lw t9, -0x7e88(gp)        |         t9 = sym.imp.__syslog_chk;
                                         |         if (a0 == 0) {
    0x000031e4 movn v0, v1, a0           |             v0 = v1;
                                         |         }
    0x000031e8 addiu s1, s1, -0x197c     |         s1 += -0x197c;
    0x000031ec move a0, v0               |         a0 = v0;
    0x000031f0 addiu a3, s2, -0x397c     |         a3 = s2 + -0x397c;
    0x000031f4 addiu a2, a2, -0x545c     |         a2 += -0x545c;
    0x000031f8 addiu a1, zero, 1         |         a1 = 1;
    0x000031fc sw s1, 0x10(sp)           |         *(var_10h) = s1;
    0x00003200 jalr t9                   |         t9 ();
    0x00003204 lw gp, 0x18(sp)           |         gp = *(var_18h);
    0x00003208 lw v0, 0x4c(sp)           |         v0 = *(var_4ch);
    0x0000320c addiu a1, zero, 1         |         a1 = 1;
    0x00003210 lw a2, -0x7fd0(gp)        |         a2 = *((gp - 8180));
    0x00003214 lw a3, (v0)               |         a3 = *(v0);
    0x00003218 lw v0, -0x7d64(gp)        |         v0 = *((gp - 8025));
    0x0000321c lw t9, -0x7ebc(gp)        |         t9 = sym.imp.__fprintf_chk
    0x00003220 addiu a2, a2, -0x5438     |         a2 += -0x5438;
    0x00003224 lw a0, (v0)               |         a0 = *(v0);
    0x00003228 b 0x31a8                  |         
                                         |     } while (1);
                                         | label_30:
    0x0000322c lw v0, 0x4c(sp)           |     v0 = *(var_4ch);
    0x00003230 lw a2, -0x7fd0(gp)        |     a2 = *((gp - 8180));
    0x00003234 lw t9, -0x7ebc(gp)        |     t9 = sym.imp.__fprintf_chk
    0x00003238 lw a3, (v0)               |     a3 = *(v0);
    0x0000323c lw v0, -0x7d64(gp)        |     v0 = *((gp - 8025));
    0x00003240 addiu a2, a2, -0x57b8     |     a2 += -0x57b8;
    0x00003244 addiu a1, zero, 1         |     a1 = 1;
    0x00003248 lw a0, (v0)               |     a0 = *(v0);
    0x0000324c jalr t9                   |     t9 ();
    0x00003250 lw gp, 0x18(sp)           |     gp = *(var_18h);
    0x00003254 lw a3, 0x698(s2)          |     a3 = *((s2 + 422));
    0x00003258 addiu a1, zero, 1         |     a1 = 1;
    0x0000325c lw a2, -0x7fd0(gp)        |     a2 = *((gp - 8180));
    0x00003260 lw t9, -0x7e88(gp)        |     t9 = sym.imp.__syslog_chk;
    0x00003264 addiu a0, zero, 4         |     a0 = 4;
    0x00003268 addiu a2, a2, -0x5790     |     a2 += -0x5790;
    0x0000326c jalr t9                   |     t9 ();
    0x00003270 lw gp, 0x18(sp)           |     gp = *(var_18h);
    0x00003274 b 0x3148                  |     goto label_28;
                                         | label_29:
    0x00003278 lw v0, -0x7d64(gp)        |     v0 = *((gp - 8025));
    0x0000327c lw a2, -0x7fd0(gp)        |     a2 = *((gp - 8180));
    0x00003280 lw t9, -0x7ebc(gp)        |     t9 = sym.imp.__fprintf_chk
    0x00003284 lw a0, (v0)               |     a0 = *(v0);
    0x00003288 lw v0, 0x4c(sp)           |     v0 = *(var_4ch);
    0x0000328c addiu a2, a2, -0x57dc     |     a2 += -0x57dc;
    0x00003290 lw a3, (v0)               |     a3 = *(v0);
    0x00003294 b 0x26ac                  |     goto label_21;
                                         | label_64:
    0x00003298 lw a2, -0x7fd0(gp)        |     a2 = *((gp - 8180));
    0x0000329c lw t9, -0x7e88(gp)        |     t9 = sym.imp.__syslog_chk;
    0x000032a0 addiu a1, zero, 1         |     a1 = 1;
    0x000032a4 addiu a0, zero, 2         |     a0 = 2;
    0x000032a8 addiu a2, a2, -0x554c     |     a2 += -0x554c;
    0x000032ac jalr t9                   |     t9 ();
    0x000032b0 lw gp, 0x18(sp)           |     gp = *(var_18h);
    0x000032b4 b 0x3148                  |     goto label_28;
                                         | }
    ; assembly                           | /* r2dec pseudo code output */
                                         | /* /logs/firmware/unblob_extracted/firmware_extract/4325012-58052244.squashfs_v4_le_extract/usr/bin/su.shadow @ 0x7840 */
                                         | #include <stdint.h>
                                         |  
    ; (fcn) sym.add_groups ()            | void add_groups () {
    0x00007840 lui gp, 2                 |     
    0x00007844 addiu gp, gp, -0x34e0     |     
    0x00007848 addu gp, gp, t9           |     gp += t9;
    0x0000784c addiu sp, sp, -0x448      |     
    0x00007850 lw t9, -0x7e28(gp)        |     t9 = sym.imp.strlen;
    0x00007854 sw s5, 0x434(sp)          |     *(var_434h) = s5;
    0x00007858 lw s5, -0x7d7c(gp)        |     s5 = *((gp - 8031));
    0x0000785c sw gp, 0x10(sp)           |     *(var_10h) = gp;
    0x00007860 sw s0, 0x420(sp)          |     *(var_420h) = s0;
    0x00007864 lw v0, (s5)               |     v0 = *(s5);
    0x00007868 sw ra, 0x444(sp)          |     *(var_444h) = ra;
    0x0000786c sw fp, 0x440(sp)          |     *(var_440h) = fp;
    0x00007870 sw s7, 0x43c(sp)          |     *(var_43ch) = s7;
    0x00007874 sw s6, 0x438(sp)          |     *(var_438h) = s6;
    0x00007878 sw s4, 0x430(sp)          |     *(var_430h) = s4;
    0x0000787c sw s3, 0x42c(sp)          |     *(var_42ch) = s3;
    0x00007880 sw s2, 0x428(sp)          |     *(var_428h) = s2;
    0x00007884 sw s1, 0x424(sp)          |     *(var_424h) = s1;
    0x00007888 sw v0, 0x41c(sp)          |     *(var_41ch) = v0;
    0x0000788c move s0, a0               |     s0 = a0;
    0x00007890 jalr t9                   |     t9 ();
    0x00007894 sltiu v1, v0, 0x400       |     v1 = (v0 < 0x400) ? 1 : 0;
    0x00007898 lw gp, 0x10(sp)           |     gp = *(var_10h);
                                         |     if (v1 == 0) {
    0x0000789c beqz v1, 0x7af8           |         goto label_7;
                                         |     }
    0x000078a0 lw t9, -0x7df8(gp)        |     t9 = sym.imp.__memcpy_chk;
    0x000078a4 addiu s4, sp, 0x1c        |     s4 = sp + 0x1c;
    0x000078a8 addiu a3, zero, 0x400     |     a3 = 0x400;
    0x000078ac addiu a2, v0, 1           |     a2 = v0 + 1;
    0x000078b0 move a1, s0               |     a1 = s0;
    0x000078b4 move a0, s4               |     a0 = s4;
    0x000078b8 jalr t9                   |     t9 ();
    0x000078bc addiu s1, zero, 0x10      |     s1 = 0x10;
    0x000078c0 addiu s2, zero, -1        |     s2 = -1;
    0x000078c4 addiu s3, zero, 0x16      |     s3 = 0x16;
    0x000078c8 lw gp, 0x10(sp)           |     gp = *(var_10h);
    0x000078cc b 0x78f0                  |     
                                         |     while (v0 != s2) {
    0x000078d0 sltu v0, v0, s1           |         v0 = (v0 < s1) ? 1 : 0;
                                         |         if (v0 != 0) {
    0x000078d4 bnez v0, 0x7954           |             goto label_8;
                                         |         }
    0x000078d8 nop                       |         
                                         | label_0:
    0x000078dc lw t9, -0x7d70(gp)        |         t9 = sym.imp.free;
    0x000078e0 move a0, s0               |         a0 = s0;
    0x000078e4 jalr t9                   |         t9 ();
    0x000078e8 lw gp, 0x10(sp)           |         gp = *(var_10h);
    0x000078ec sll s1, s1, 1             |         s1 <<= 1;
    0x000078f0 lw t9, -0x7de4(gp)        |         t9 = sym.imp.malloc;
    0x000078f4 sll a0, s1, 2             |         a0 = s1 << 2;
    0x000078f8 jalr t9                   |         t9 ();
    0x000078fc move s0, v0               |         s0 = v0;
    0x00007900 lw gp, 0x10(sp)           |         gp = *(var_10h);
                                         |         if (v0 == 0) {
    0x00007904 beqz v0, 0x7aac           |             goto label_9;
                                         |         }
    0x00007908 lw t9, -0x7ea0(gp)        |         t9 = sym.imp.getgroups;
    0x0000790c move a1, v0               |         a1 = v0;
    0x00007910 move a0, s1               |         a0 = s1;
    0x00007914 jalr t9                   |         t9 ();
    0x00007918 move s7, v0               |         s7 = v0;
    0x0000791c lw gp, 0x10(sp)           |         gp = *(var_10h);
    0x00007920 bne v0, s2, 0x78d0        |         
                                         |     }
    0x00007924 lw t9, -0x7e5c(gp)        |     t9 = sym.imp.__errno_location;
    0x00007928 jalr t9                   |     t9 ();
    0x0000792c nop                       |     
    0x00007930 lw v0, (v0)               |     v0 = *(v0);
    0x00007934 lw gp, 0x10(sp)           |     gp = *(var_10h);
                                         |     if (v0 == s3) {
    0x00007938 beq v0, s3, 0x78dc        |         goto label_0;
                                         |     }
                                         |     do {
                                         | label_1:
    0x0000793c lw t9, -0x7d70(gp)        |         t9 = sym.imp.free;
    0x00007940 move a0, s0               |         a0 = s0;
    0x00007944 jalr t9                   |         t9 ();
    0x00007948 lw gp, 0x10(sp)           |         gp = *(var_10h);
    0x0000794c addiu v0, zero, -1        |         v0 = -1;
    0x00007950 b 0x7a50                  |         goto label_4;
                                         | label_8:
    0x00007954 lw t9, -0x7e84(gp)        |         t9 = sym.imp.strtok;
    0x00007958 bltz s7, 0x793c           |         
                                         |     } while (s7 < 0);
    0x0000795c lw s2, -0x7fd0(gp)        |     s2 = *((gp - 8180));
    0x00007960 addiu a1, s2, -0x46f4     |     a1 = s2 + -0x46f4;
    0x00007964 move a0, s4               |     a0 = s4;
    0x00007968 jalr t9                   |     t9 ();
    0x0000796c move s1, v0               |     s1 = v0;
    0x00007970 lw gp, 0x10(sp)           |     gp = *(var_10h);
    0x00007974 move s3, zero             |     s3 = 0;
                                         |     if (v0 == 0) {
    0x00007978 beqz v0, 0x7a4c           |         goto label_5;
                                         |     }
    0x0000797c lw s4, -0x7fd0(gp)        |     s4 = *((gp - 8180));
    0x00007980 lw s6, -0x7d64(gp)        |     s6 = *((gp - 8025));
    0x00007984 addiu s4, s4, -0x46f0     |     s4 += -0x46f0;
    0x00007988 addiu s2, s2, -0x46f4     |     s2 += -0x46f4;
                                         | label_2:
    0x0000798c lw t9, -0x7ee0(gp)        |     t9 = sym.imp.getgrnam;
    0x00007990 move a0, s1               |     a0 = s1;
    0x00007994 jalr t9                   |     t9 ();
    0x00007998 move fp, v0               |     fp = v0;
    0x0000799c lw gp, 0x10(sp)           |     gp = *(var_10h);
                                         |     if (v0 == 0) {
    0x000079a0 beqz v0, 0x7a8c           |         goto label_10;
                                         |     }
    0x000079a4 move s1, s7               |     s1 = s7;
                                         |     if (s7 == 0) {
    0x000079a8 beqz s7, 0x79dc           |         goto label_11;
                                         |     }
    0x000079ac lw a1, 8(v0)              |     a1 = *((v0 + 2));
    0x000079b0 lw v0, (s0)               |     v0 = *(s0);
    0x000079b4 addiu v1, s0, 4           |     v1 = s0 + 4;
                                         |     if (a1 == v0) {
    0x000079b8 beq a1, v0, 0x7a28        |         goto label_3;
                                         |     }
    0x000079bc move v0, zero             |     v0 = 0;
    0x000079c0 b 0x79d0                  |     
                                         |     while (v0 != s7) {
    0x000079c4 lw a0, -4(v1)             |         a0 = *((v1 - 1));
    0x000079c8 lw t9, -0x7e84(gp)        |         t9 = sym.imp.strtok;
                                         |         if (a0 == a1) {
    0x000079cc beq a0, a1, 0x7a2c        |             goto label_12;
                                         |         }
    0x000079d0 addiu v0, v0, 1           |         v0++;
    0x000079d4 addiu v1, v1, 4           |         v1 += 4;
    0x000079d8 bne v0, s7, 0x79c4        |         
                                         |     }
                                         | label_11:
    0x000079dc lw t9, -0x7dac(gp)        |     t9 = sym.imp.sysconf;
    0x000079e0 addiu a0, zero, 3         |     a0 = 3;
    0x000079e4 jalr t9                   |     t9 ();
    0x000079e8 slt v0, s7, v0            |     v0 = (s7 < v0) ? 1 : 0;
    0x000079ec lw gp, 0x10(sp)           |     gp = *(var_10h);
                                         |     if (v0 == 0) {
    0x000079f0 beqz v0, 0x7ac8           |         goto label_13;
                                         |     }
    0x000079f4 lw t9, -0x7de0(gp)        |     t9 = sym.imp.realloc;
    0x000079f8 addiu s7, s7, 1           |     s7++;
    0x000079fc sll a1, s7, 2             |     a1 = s7 << 2;
    0x00007a00 move a0, s0               |     a0 = s0;
    0x00007a04 jalr t9                   |     t9 ();
    0x00007a08 lw gp, 0x10(sp)           |     gp = *(var_10h);
                                         |     if (v0 == 0) {
    0x00007a0c beqz v0, 0x793c           |         goto label_1;
                                         |     }
    0x00007a10 sll s1, s1, 2             |     s1 <<= 2;
    0x00007a14 lw v1, 8(fp)              |     v1 = *(arg_8h);
    0x00007a18 addu s1, v0, s1           |     s1 = v0 + s1;
    0x00007a1c move s0, v0               |     s0 = v0;
    0x00007a20 sw v1, (s1)               |     *(s1) = v1;
    0x00007a24 addiu s3, zero, 1         |     s3 = 1;
                                         | label_3:
    0x00007a28 lw t9, -0x7e84(gp)        |     t9 = sym.imp.strtok;
                                         | label_12:
    0x00007a2c move a1, s2               |     a1 = s2;
    0x00007a30 move a0, zero             |     a0 = 0;
    0x00007a34 jalr t9                   |     t9 ();
    0x00007a38 move s1, v0               |     s1 = v0;
    0x00007a3c lw gp, 0x10(sp)           |     gp = *(var_10h);
                                         |     if (v0 != 0) {
    0x00007a40 bnez v0, 0x798c           |         goto label_2;
                                         |     }
    0x00007a44 lw t9, -0x7dc0(gp)        |     t9 = sym.imp.setgroups;
                                         |     if (s3 != 0) {
    0x00007a48 bnez s3, 0x7ab4           |         goto label_6;
                                         |     }
                                         | label_5:
    0x00007a4c move v0, zero             |     v0 = 0;
                                         |     do {
                                         | label_4:
    0x00007a50 lw a0, 0x41c(sp)          |         a0 = *(var_41ch);
    0x00007a54 lw v1, (s5)               |         v1 = *(s5);
    0x00007a58 lw ra, 0x444(sp)          |         ra = *(var_444h);
                                         |         if (a0 != v1) {
    0x00007a5c bne a0, v1, 0x7b18        |             goto label_14;
                                         |         }
    0x00007a60 lw fp, 0x440(sp)          |         fp = *(var_440h);
    0x00007a64 lw s7, 0x43c(sp)          |         s7 = *(var_43ch);
    0x00007a68 lw s6, 0x438(sp)          |         s6 = *(var_438h);
    0x00007a6c lw s5, 0x434(sp)          |         s5 = *(var_434h);
    0x00007a70 lw s4, 0x430(sp)          |         s4 = *(var_430h);
    0x00007a74 lw s3, 0x42c(sp)          |         s3 = *(var_42ch);
    0x00007a78 lw s2, 0x428(sp)          |         s2 = *(var_428h);
    0x00007a7c lw s1, 0x424(sp)          |         s1 = *(var_424h);
    0x00007a80 lw s0, 0x420(sp)          |         s0 = *(var_420h);
    0x00007a84 addiu sp, sp, 0x448       |         
    0x00007a88 jr ra                     |         return v0;
                                         | label_10:
    0x00007a8c lw t9, -0x7ebc(gp)        |         t9 = sym.imp.__fprintf_chk
    0x00007a90 lw a0, (s6)               |         a0 = *(s6);
    0x00007a94 move a3, s1               |         a3 = s1;
    0x00007a98 move a2, s4               |         a2 = s4;
    0x00007a9c addiu a1, zero, 1         |         a1 = 1;
    0x00007aa0 jalr t9                   |         t9 ();
    0x00007aa4 lw gp, 0x10(sp)           |         gp = *(var_10h);
    0x00007aa8 b 0x7a28                  |         goto label_3;
                                         | label_9:
    0x00007aac addiu v0, zero, -1        |         v0 = -1;
    0x00007ab0 b 0x7a50                  |         
                                         |     } while (1);
                                         | label_6:
    0x00007ab4 move a1, s0               |     a1 = s0;
    0x00007ab8 move a0, s7               |     a0 = s7;
    0x00007abc jalr t9                   |     t9 ();
    0x00007ac0 lw gp, 0x10(sp)           |     gp = *(var_10h);
    0x00007ac4 b 0x7a50                  |     goto label_4;
                                         | label_13:
    0x00007ac8 lw v0, -0x7d64(gp)        |     v0 = *((gp - 8025));
    0x00007acc lw a0, -0x7fd0(gp)        |     a0 = *((gp - 8180));
    0x00007ad0 lw t9, -0x7dcc(gp)        |     t9 = sym.imp.fwrite;
    0x00007ad4 lw a3, (v0)               |     a3 = *(v0);
    0x00007ad8 addiu a2, zero, 0x19      |     a2 = 0x19;
    0x00007adc addiu a1, zero, 1         |     a1 = 1;
    0x00007ae0 addiu a0, a0, -0x46d4     |     a0 += -0x46d4;
    0x00007ae4 jalr t9                   |     t9 ();
    0x00007ae8 lw gp, 0x10(sp)           |     gp = *(var_10h);
                                         |     if (s3 == 0) {
    0x00007aec beqz s3, 0x7a4c           |         goto label_5;
                                         |     }
    0x00007af0 lw t9, -0x7dc0(gp)        |     t9 = sym.imp.setgroups;
    0x00007af4 b 0x7ab4                  |     goto label_6;
                                         | label_7:
    0x00007af8 lw t9, -0x7e5c(gp)        |     t9 = sym.imp.__errno_location;
    0x00007afc jalr t9                   |     t9 ();
    0x00007b00 nop                       |     
    0x00007b04 addiu v1, zero, 0x16      |     v1 = 0x16;
    0x00007b08 lw gp, 0x10(sp)           |     gp = *(var_10h);
    0x00007b0c sw v1, (v0)               |     *(v0) = v1;
    0x00007b10 addiu v0, zero, -1        |     v0 = -1;
    0x00007b14 b 0x7a50                  |     goto label_4;
                                         | label_14:
    0x00007b18 lw t9, -0x7da4(gp)        |     t9 = sym.imp.__stack_chk_fail;
    0x00007b1c jalr t9                   |     t9 ();
    0x00007b20 nop                       |     
    0x00007b24 nop                       |     
    0x00007b28 nop                       |     
    0x00007b2c nop                       |     
                                         | }
    ; assembly                           | /* r2dec pseudo code output */
                                         | /* /logs/firmware/unblob_extracted/firmware_extract/4325012-58052244.squashfs_v4_le_extract/usr/bin/su.shadow @ 0x9d60 */
                                         | #include <stdint.h>
                                         |  
    ; (fcn) sym.pw_encrypt ()            | void pw_encrypt () {
    0x00009d60 lui gp, 2                 |     
    0x00009d64 addiu gp, gp, -0x5a00     |     
    0x00009d68 addu gp, gp, t9           |     gp += t9;
    0x00009d6c addiu sp, sp, -0x28       |     
    0x00009d70 lw t9, -0x7e98(gp)        |     t9 = sym.imp.crypt;
    0x00009d74 sw gp, 0x10(sp)           |     *(var_10h) = gp;
    0x00009d78 sw s1, 0x20(sp)           |     *(var_20h) = s1;
    0x00009d7c sw s0, 0x1c(sp)           |     *(var_1ch) = s0;
    0x00009d80 sw ra, 0x24(sp)           |     *(var_24h) = ra;
    0x00009d84 move s1, a1               |     s1 = a1;
    0x00009d88 jalr t9                   |     t9 ();
    0x00009d8c move s0, v0               |     s0 = v0;
    0x00009d90 lw gp, 0x10(sp)           |     gp = *(var_10h);
                                         |     if (v0 != 0) {
    0x00009d94 beqz v0, 0x9dc0           |         
    0x00009d98 lw t9, -0x7e28(gp)        |         t9 = sym.imp.strlen;
    0x00009d9c move a0, v0               |         a0 = v0;
    0x00009da0 jalr t9                   |         t9 ();
    0x00009da4 lb a0, (s1)               |         a0 = *(s1);
    0x00009da8 addiu v1, zero, 0x24      |         v1 = 0x24;
    0x00009dac lw gp, 0x10(sp)           |         gp = *(var_10h);
                                         |         if (a0 == v1) {
    0x00009db0 beq a0, v1, 0x9e2c        |             goto label_1;
                                         |         }
    0x00009db4 addiu v1, zero, 0xd       |         v1 = 0xd;
                                         |         if (v0 == v1) {
    0x00009db8 beql v0, v1, 0x9dd8       |             goto label_2;
                                         |         }
    0x00009dbc lwl a1, 3(s0)             |         __asm ("lwl a1, 3(s0)");
                                         |     }
    0x00009dc0 lw ra, 0x24(sp)           |     ra = *(var_24h);
                                         |     do {
    0x00009dc4 move v0, s0               |         v0 = s0;
    0x00009dc8 lw s1, 0x20(sp)           |         s1 = *(var_20h);
    0x00009dcc lw s0, 0x1c(sp)           |         s0 = *(var_1ch);
    0x00009dd0 addiu sp, sp, 0x28        |         
    0x00009dd4 jr ra                     |         return v0;
                                         | label_2:
    0x00009dd8 lwl a0, 7(s0)             |         __asm ("lwl a0, 7(s0)");
    0x00009ddc lwl v1, 0xb(s0)           |         __asm ("lwl v1, 0xb(s0)");
    0x00009de0 lw a2, -0x7fdc(gp)        |         a2 = *((gp - 8183));
    0x00009de4 lwr a1, (s0)              |         __asm ("lwr a1, (s0)");
    0x00009de8 lwr v1, 8(s0)             |         __asm ("lwr v1, 8(s0)");
    0x00009dec lwr a0, 4(s0)             |         __asm ("lwr a0, 4(s0)");
    0x00009df0 addiu v0, a2, 0x49e0      |         v0 = a2 + 0x49e0;
    0x00009df4 sw a1, 0x49e0(a2)         |         *((a2 + 4728)) = a1;
    0x00009df8 sw a0, 4(v0)              |         *((v0 + 1)) = a0;
    0x00009dfc sw v1, 8(v0)              |         *((v0 + 2)) = v1;
    0x00009e00 lbu v1, 0xc(s0)           |         v1 = *((s0 + 12));
    0x00009e04 sb v1, 0xc(v0)            |         *((v0 + 12)) = v1;
    0x00009e08 lbu v1, 0xd(s0)           |         v1 = *((s0 + 13));
    0x00009e0c move s0, v0               |         s0 = v0;
    0x00009e10 sb v1, 0xd(v0)            |         *((v0 + 13)) = v1;
    0x00009e14 lw ra, 0x24(sp)           |         ra = *(var_24h);
    0x00009e18 move v0, s0               |         v0 = s0;
    0x00009e1c lw s1, 0x20(sp)           |         s1 = *(var_20h);
    0x00009e20 lw s0, 0x1c(sp)           |         s0 = *(var_1ch);
    0x00009e24 addiu sp, sp, 0x28        |         
    0x00009e28 jr ra                     |         return v0;
                                         | label_1:
    0x00009e2c sltiu v0, v0, 0xe         |         v0 = (v0 < 0xe) ? 1 : 0;
    0x00009e30 lw ra, 0x24(sp)           |         ra = *(var_24h);
    0x00009e34 beqz v0, 0x9dc4           |         
                                         |     } while (v0 == 0);
    0x00009e38 lb v1, 1(s1)              |     v1 = *((s1 + 1));
    0x00009e3c addiu v0, zero, 0x35      |     v0 = 0x35;
    0x00009e40 addiu v0, zero, 0x36      |     v0 = 0x36;
                                         |     if (v1 == v0) {
    0x00009e44 beq v1, v0, 0x9e90        |         goto label_3;
                                         |     }
    0x00009e48 addiu v0, zero, 0x31      |     v0 = 0x31;
                                         |     if (v1 == v0) {
    0x00009e4c beq v1, v0, 0x9ea8        |         goto label_4;
                                         |     }
    0x00009e50 lw v0, -0x7fdc(gp)        |     v0 = *((gp - 8183));
                                         |     if (v1 == v0) {
    0x00009e54 beq v1, v0, 0x9e9c        |         goto label_5;
                                         |     }
                                         |     /* esilref: '$x$' */
    0x00009e58 addiu v0, v0, -0x3cb0     |     v0 += -0x3cb0;
    0x00009e5c move a3, v0               |     a3 = v0;
    0x00009e60 sb v1, 1(v0)              |     *((v0 + 1)) = v1;
                                         |     do {
                                         | label_0:
    0x00009e64 lw v0, -0x7d64(gp)        |         v0 = *((gp - 8025));
    0x00009e68 lw a2, -0x7fd0(gp)        |         a2 = *((gp - 8180));
    0x00009e6c lw t9, -0x7ebc(gp)        |         t9 = sym.imp.__fprintf_chk
    0x00009e70 lw a0, (v0)               |         a0 = *(v0);
    0x00009e74 addiu a2, a2, -0x4200     |         a2 += -0x4200;
    0x00009e78 addiu a1, zero, 1         |         a1 = 1;
    0x00009e7c jalr t9                   |         t9 ();
    0x00009e80 lw gp, 0x10(sp)           |         gp = *(var_10h);
    0x00009e84 lw t9, -0x7e00(gp)        |         t9 = sym.imp.exit;
    0x00009e88 addiu a0, zero, 1         |         a0 = 1;
    0x00009e8c jalr t9                   |         t9 ();
                                         | label_3:
    0x00009e90 lw a3, -0x7fd0(gp)        |         a3 = *((gp - 8180));
    0x00009e94 addiu a3, a3, -0x4208     |         a3 += -0x4208;
    0x00009e98 b 0x9e64                  |         
                                         |     } while (1);
                                         | label_5:
    0x00009e9c lw a3, -0x7fd0(gp)        |     a3 = *((gp - 8180));
    0x00009ea0 addiu a3, a3, -0x4214     |     a3 += -0x4214;
    0x00009ea4 b 0x9e64                  |     goto label_0;
                                         | label_4:
    0x00009ea8 lw a3, -0x7fd0(gp)        |     a3 = *((gp - 8180));
    0x00009eac addiu a3, a3, -0x4210     |     a3 += -0x4210;
    0x00009eb0 b 0x9e64                  |     goto label_0;
                                         | }
    ; assembly                           | /* r2dec pseudo code output */
                                         | /* /logs/firmware/unblob_extracted/firmware_extract/4325012-58052244.squashfs_v4_le_extract/usr/bin/su.shadow @ 0x6800 */
                                         | #include <stdint.h>
                                         |  
    ; (fcn) sym.setup_env ()             | void setup_env () {
                                         | label_6:
    0x00006540 lui gp, 2                 |     
    0x00006544 addiu gp, gp, -0x21e0     |     
    0x00006548 addu gp, gp, t9           |     gp += t9;
    0x0000654c addiu sp, sp, -0x440      |     
    0x00006550 lw a1, -0x7fd0(gp)        |     a1 = *((gp - 8180));
    0x00006554 sw s4, 0x434(sp)          |     *(var_24h) = s4;
    0x00006558 lw s4, -0x7d7c(gp)        |     s4 = *((gp - 8031));
    0x0000655c lw t9, -0x7eb8(gp)        |     t9 = sym.imp.fopen64;
    0x00006560 sw gp, 0x10(sp)           |     *(var_10h_3) = gp;
    0x00006564 lw v0, (s4)               |     v0 = *(s4);
    0x00006568 sw ra, 0x43c(sp)          |     *(var_2ch) = ra;
    0x0000656c sw s5, 0x438(sp)          |     *(var_28h) = s5;
    0x00006570 sw s3, 0x430(sp)          |     *(var_430h_2) = s3;
    0x00006574 sw s2, 0x42c(sp)          |     *(var_42ch_2) = s2;
    0x00006578 sw s1, 0x428(sp)          |     *(var_18h) = s1;
    0x0000657c sw s0, 0x424(sp)          |     *(var_424h_2) = s0;
    0x00006580 addiu a1, a1, -0x5200     |     a1 += -0x5200;
    0x00006584 sw v0, 0x41c(sp)          |     *(var_41ch) = v0;
    0x00006588 jalr t9                   |     t9 ();
    0x0000658c nop                       |     
    0x00006590 lw gp, 0x10(sp)           |     gp = *(var_10h_3);
                                         |     if (v0 == 0) {
    0x00006594 beqz v0, 0x66b8           |         goto label_13;
                                         |     }
    0x00006598 move s2, v0               |     s2 = v0;
    0x0000659c addiu s5, sp, 0x1c        |     s5 = sp + 0x1c;
    0x000065a0 addiu s3, zero, 0x23      |     s3 = 0x23;
    0x000065a4 addiu s1, zero, 0x3d      |     s1 = 0x3d;
                                         |     do {
                                         | label_3:
    0x000065a8 lw t9, -0x7d84(gp)        |         t9 = sym.imp.fgets;
                                         | label_0:
    0x000065ac move a2, s2               |         a2 = s2;
                                         | label_2:
    0x000065b0 addiu a1, zero, 0x400     |         a1 = 0x400;
    0x000065b4 move a0, s5               |         a0 = s5;
    0x000065b8 jalr t9                   |         t9 ();
    0x000065bc lw gp, 0x10(sp)           |         gp = *(var_10h_3);
                                         |         if (s5 != v0) {
    0x000065c0 bne s5, v0, 0x66a8        |             goto label_14;
                                         |         }
                                         | label_5:
    0x000065c4 lw t9, -0x7e9c(gp)        |         t9 = sym.imp.strrchr;
    0x000065c8 addiu a1, zero, 0xa       |         a1 = 0xa;
    0x000065cc move a0, s5               |         a0 = s5;
    0x000065d0 jalr t9                   |         t9 ();
    0x000065d4 lw gp, 0x10(sp)           |         gp = *(var_10h_3);
                                         |         if (v0 == 0) {
    0x000065d8 beqz v0, 0x66a8           |             goto label_14;
                                         |         }
    0x000065dc sb zero, (v0)             |         *(v0) = 0;
    0x000065e0 lb s0, 0x1c(sp)           |         s0 = *(var_1ch);
    0x000065e4 lw t9, -0x7ef4(gp)        |         t9 = sym.imp.__ctype_b_loc;
    0x000065e8 beqz s0, 0x65a8           |         
                                         |     } while (s0 == 0);
    0x000065ec jalr t9                   |     t9 ();
    0x000065f0 nop                       |     
    0x000065f4 lw a2, (v0)               |     a2 = *(v0);
    0x000065f8 lw gp, 0x10(sp)           |     gp = *(var_10h_3);
    0x000065fc move a0, s5               |     a0 = s5;
    0x00006600 b 0x6610                  |     goto label_15;
                                         | label_1:
    0x00006604 lb s0, (a0)               |     s0 = *(a0);
    0x00006608 lw t9, -0x7d84(gp)        |     t9 = sym.imp.fgets;
                                         |     if (s0 == 0) {
    0x0000660c beqz s0, 0x65ac           |         goto label_0;
                                         |     }
                                         | label_15:
    0x00006610 sll v0, s0, 1             |     v0 = s0 << 1;
    0x00006614 addu v0, a2, v0           |     v0 = a2 + v0;
    0x00006618 lhu v0, (v0)              |     v0 = *(v0);
    0x0000661c andi v0, v0, 0x2000       |     v0 &= 0x2000;
    0x00006620 addiu a0, a0, 1           |     a0++;
                                         |     if (v0 == 0) {
    0x00006624 bnel v0, zero, 0x6604     |         goto label_1;
                                         |     }
    0x00006628 lw t9, -0x7d84(gp)        |     t9 = sym.imp.fgets;
                                         |     if (s0 == s3) {
    0x0000662c beq s0, s3, 0x65ac        |         goto label_0;
                                         |     }
    0x00006630 lb v0, (a0)               |     v0 = *(a0);
    0x00006634 move a3, a0               |     a3 = a0;
                                         |     if (v0 != 0) {
    0x00006638 bnez v0, 0x6658           |         goto label_16;
                                         |     }
    0x0000663c move a2, s2               |     a2 = s2;
    0x00006640 b 0x65b0                  |     goto label_2;
                                         | label_4:
    0x00006644 addiu a1, a3, 1           |     a1 = a3 + 1;
                                         |     if (v0 == s1) {
    0x00006648 beq v0, s1, 0x667c        |         goto label_17;
                                         |     }
    0x0000664c lb v0, 1(a3)              |     v0 = *((a3 + 1));
    0x00006650 move a3, a1               |     a3 = a1;
                                         |     if (v0 == 0) {
    0x00006654 beqz v0, 0x65a8           |         goto label_3;
                                         |     }
                                         | label_16:
    0x00006658 sll v1, v0, 1             |     v1 = v0 << 1;
    0x0000665c addu v1, a2, v1           |     v1 = a2 + v1;
    0x00006660 lhu v1, (v1)              |     v1 = *(v1);
    0x00006664 andi v1, v1, 0x2000       |     v1 &= 0x2000;
                                         |     if (v1 == 0) {
    0x00006668 beqz v1, 0x6644           |         goto label_4;
                                         |     }
    0x0000666c nop                       |     
    0x00006670 lw t9, -0x7d84(gp)        |     t9 = sym.imp.fgets;
                                         |     if (v0 != s1) {
    0x00006674 bne v0, s1, 0x65ac        |         goto label_0;
                                         |     }
    0x00006678 addiu a1, a3, 1           |     a1 = a3 + 1;
                                         | label_17:
    0x0000667c lw t9, -0x7f88(gp)        |     t9 = sym.addenv;
    0x00006680 sb zero, (a3)             |     *(a3) = 0;
    0x00006684 bal 0x4770                |     sym_addenv ();
    0x00006688 lw gp, 0x10(sp)           |     gp = *(var_10h_3);
    0x0000668c move a2, s2               |     a2 = s2;
    0x00006690 addiu a1, zero, 0x400     |     a1 = 0x400;
    0x00006694 lw t9, -0x7d84(gp)        |     t9 = sym.imp.fgets;
    0x00006698 move a0, s5               |     a0 = s5;
    0x0000669c jalr t9                   |     t9 ();
    0x000066a0 lw gp, 0x10(sp)           |     gp = *(var_10h_3);
                                         |     if (s5 == v0) {
    0x000066a4 beq s5, v0, 0x65c4        |         goto label_5;
                                         |     }
                                         | label_14:
    0x000066a8 lw t9, -0x7eb4(gp)        |     t9 = sym.imp.fclose;
    0x000066ac move a0, s2               |     a0 = s2;
    0x000066b0 jalr t9                   |     t9 ();
    0x000066b4 lw gp, 0x10(sp)           |     gp = *(var_10h_3);
                                         | label_13:
    0x000066b8 lw v1, 0x41c(sp)          |     v1 = *(var_41ch);
    0x000066bc lw v0, (s4)               |     v0 = *(s4);
    0x000066c0 lw ra, 0x43c(sp)          |     ra = *(var_2ch);
                                         |     if (v1 == v0) {
    0x000066c4 bne v1, v0, 0x66e8        |         
    0x000066c8 lw s5, 0x438(sp)          |         s5 = *(var_28h);
    0x000066cc lw s4, 0x434(sp)          |         s4 = *(var_24h);
    0x000066d0 lw s3, 0x430(sp)          |         s3 = *(var_430h_2);
    0x000066d4 lw s2, 0x42c(sp)          |         s2 = *(var_42ch_2);
    0x000066d8 lw s1, 0x428(sp)          |         s1 = *(var_18h);
    0x000066dc lw s0, 0x424(sp)          |         s0 = *(var_424h_2);
    0x000066e0 addiu sp, sp, 0x440       |         
    0x000066e4 jr ra                     |         return v0;
                                         |     }
    0x000066e8 lw t9, -0x7da4(gp)        |     t9 = sym.imp.__stack_chk_fail;
    0x000066ec jalr t9                   |     t9 ();
    0x000066f0 nop                       |     
                                         | label_8:
    0x000066f4 lui gp, 2                 |     
    0x000066f8 addiu gp, gp, -0x2394     |     
    0x000066fc addu gp, gp, t9           |     gp += t9;
    0x00006700 addiu sp, sp, -0x40       |     
    0x00006704 lw t9, -0x7e28(gp)        |     t9 = sym.imp.strlen;
    0x00006708 sw ra, 0x3c(sp)           |     *(var_3ch) = ra;
    0x0000670c sw gp, 0x20(sp)           |     *(var_18h_2) = gp;
    0x00006710 sw s4, 0x38(sp)           |     *(var_38h) = s4;
    0x00006714 sw s3, 0x34(sp)           |     *(var_34h) = s3;
    0x00006718 sw s2, 0x30(sp)           |     *(var_30h) = s2;
    0x0000671c sw s1, 0x2c(sp)           |     *(var_24h_3) = s1;
    0x00006720 sw s0, 0x28(sp)           |     *(var_28h_2) = s0;
    0x00006724 move s3, a1               |     s3 = a1;
    0x00006728 move s4, a0               |     s4 = a0;
    0x0000672c jalr t9                   |     t9 ();
    0x00006730 lw gp, 0x20(sp)           |     gp = *(var_18h_2);
    0x00006734 move a0, s3               |     a0 = s3;
    0x00006738 lw t9, -0x7e28(gp)        |     t9 = sym.imp.strlen;
    0x0000673c move s0, v0               |     s0 = v0;
    0x00006740 jalr t9                   |     t9 ();
    0x00006744 lw gp, 0x20(sp)           |     gp = *(var_18h_2);
    0x00006748 addu s0, s0, v0           |     s0 += v0;
    0x0000674c addiu s2, s0, 2           |     s2 = s0 + 2;
    0x00006750 lw t9, -0x7f78(gp)        |     t9 = sym.xmalloc;
    0x00006754 move a0, s2               |     a0 = s2;
    0x00006758 bal 0x7740                |     sym_xmalloc ();
    0x0000675c lw gp, 0x20(sp)           |     gp = *(var_18h_2);
    0x00006760 move s1, v0               |     s1 = v0;
    0x00006764 sw s3, 0x18(sp)           |     *(var_10h_2) = s3;
    0x00006768 lw v0, -0x7fd0(gp)        |     v0 = *((gp - 8180));
    0x0000676c lw t9, -0x7d38(gp)        |     t9 = sym.imp.__snprintf_chk;
    0x00006770 addiu v0, v0, -0x49cc     |     v0 += -0x49cc;
    0x00006774 sw s4, 0x14(sp)           |     *(var_14h_2) = s4;
    0x00006778 sw v0, 0x10(sp)           |     *(var_10h_4) = v0;
    0x0000677c addiu a3, zero, -1        |     a3 = -1;
    0x00006780 addiu a2, zero, 1         |     a2 = 1;
    0x00006784 move a1, s2               |     a1 = s2;
    0x00006788 move a0, s1               |     a0 = s1;
    0x0000678c jalr t9                   |     t9 ();
    0x00006790 addiu s0, s0, 1           |     s0++;
    0x00006794 lw gp, 0x20(sp)           |     gp = *(var_18h_2);
                                         |     if (v0 == s0) {
    0x00006798 bne v0, s0, 0x67dc        |         
    0x0000679c lw a0, -0x7fd0(gp)        |         a0 = *((gp - 8180));
    0x000067a0 lw t9, -0x7f88(gp)        |         t9 = sym.addenv;
    0x000067a4 addiu a0, a0, -0x4988     |         a0 += -0x4988;
    0x000067a8 move a1, s1               |         a1 = s1;
    0x000067ac bal 0x4770                |         sym_addenv ();
    0x000067b0 lw gp, 0x20(sp)           |         gp = *(var_18h_2);
    0x000067b4 lw ra, 0x3c(sp)           |         ra = *(var_3ch);
    0x000067b8 lw s4, 0x38(sp)           |         s4 = *(var_38h);
    0x000067bc lw s3, 0x34(sp)           |         s3 = *(var_34h);
    0x000067c0 lw s2, 0x30(sp)           |         s2 = *(var_30h);
    0x000067c4 lw s0, 0x28(sp)           |         s0 = *(var_28h_2);
    0x000067c8 move a0, s1               |         a0 = s1;
    0x000067cc lw t9, -0x7d70(gp)        |         t9 = sym.imp.free;
    0x000067d0 lw s1, 0x2c(sp)           |         s1 = *(var_24h_3);
    0x000067d4 addiu sp, sp, 0x40        |         
    0x000067d8 jr t9                     |         t9 ();
                                         |     }
    0x000067dc lw a3, -0x7fd0(gp)        |     a3 = *((gp - 8180));
    0x000067e0 lw a1, -0x7fd0(gp)        |     a1 = *((gp - 8180));
    0x000067e4 lw a0, -0x7fd0(gp)        |     a0 = *((gp - 8180));
    0x000067e8 lw t9, -0x7ef0(gp)        |     t9 = sym.imp.__assert_fail;
    0x000067ec addiu a3, a3, -0x48c0     |     a3 += -0x48c0;
    0x000067f0 addiu a2, zero, 0x3d      |     a2 = 0x3d;
    0x000067f4 addiu a1, a1, -0x49c4     |     a1 += -0x49c4;
    0x000067f8 addiu a0, a0, -0x49a0     |     a0 += -0x49a0;
    0x000067fc jalr t9                   |     t9 ();
    0x00006800 lui gp, 2                 |     
    0x00006804 addiu gp, gp, -0x24a0     |     
    0x00006808 addu gp, gp, t9           |     gp += t9;
    0x0000680c addiu sp, sp, -0x30       |     
    0x00006810 lw t9, -0x7d98(gp)        |     t9 = sym.imp.chdir;
    0x00006814 sw s0, 0x24(sp)           |     *(var_24h) = s0;
    0x00006818 move s0, a0               |     s0 = a0;
    0x0000681c lw a0, 0x14(a0)           |     a0 = *((a0 + 5));
    0x00006820 sw gp, 0x18(sp)           |     *(var_18h) = gp;
    0x00006824 sw s1, 0x28(sp)           |     *(var_28h) = s1;
    0x00006828 sw ra, 0x2c(sp)           |     *(var_2ch) = ra;
    0x0000682c jalr t9                   |     t9 ();
    0x00006830 nop                       |     
    0x00006834 move s1, v0               |     s1 = v0;
    0x00006838 addiu v0, zero, -1        |     v0 = -1;
    0x0000683c lw gp, 0x18(sp)           |     gp = *(var_18h);
                                         |     if (s1 == v0) {
    0x00006840 beq s1, v0, 0x6a34        |         goto label_18;
                                         |     }
    0x00006844 lw a1, 0x14(s0)           |     a1 = *((s0 + 5));
                                         | label_10:
    0x00006848 lw a0, -0x7fd0(gp)        |     a0 = *((gp - 8180));
    0x0000684c lw t9, -0x7f88(gp)        |     t9 = sym.addenv;
    0x00006850 addiu a0, a0, -0x4978     |     a0 += -0x4978;
    0x00006854 bal 0x4770                |     sym_addenv ();
    0x00006858 lw a1, 0x18(s0)           |     a1 = *((s0 + 6));
    0x0000685c lw gp, 0x18(sp)           |     gp = *(var_18h);
                                         |     if (a1 != 0) {
    0x00006860 beqz a1, 0x6870           |         
    0x00006864 lb v0, (a1)               |         v0 = *(a1);
    0x00006868 lw a0, -0x7fd0(gp)        |         a0 = *((gp - 8180));
                                         |         if (v0 == 0) {
    0x0000686c bnel v0, zero, 0x68a0     |             goto label_19;
                                         |         }
                                         |     }
    0x00006870 lw t9, -0x7d70(gp)        |     t9 = sym.imp.free;
    0x00006874 move a0, a1               |     a0 = a1;
    0x00006878 jalr t9                   |     t9 ();
    0x0000687c lw gp, 0x18(sp)           |     gp = *(var_18h);
    0x00006880 lw a0, -0x7fdc(gp)        |     a0 = *((gp - 8183));
    0x00006884 lw t9, -0x7fbc(gp)        |     t9 = sym.xstrdup;
                                         |     /* str._bin_sh */
    0x00006888 addiu a0, a0, -0x3f30     |     a0 += -0x3f30;
    0x0000688c bal 0x77e4                |     sym_xstrdup ();
    0x00006890 move a1, v0               |     a1 = v0;
    0x00006894 lw gp, 0x18(sp)           |     gp = *(var_18h);
    0x00006898 sw v0, 0x18(s0)           |     *((s0 + 6)) = v0;
    0x0000689c lw a0, -0x7fd0(gp)        |     a0 = *((gp - 8180));
                                         | label_19:
    0x000068a0 lw t9, -0x7f88(gp)        |     t9 = sym.addenv;
    0x000068a4 addiu a0, a0, -0x5408     |     a0 += -0x5408;
    0x000068a8 bal 0x4770                |     sym_addenv ();
    0x000068ac lw gp, 0x18(sp)           |     gp = *(var_18h);
    0x000068b0 lw a1, (s0)               |     a1 = *(s0);
    0x000068b4 lw a0, -0x7fd0(gp)        |     a0 = *((gp - 8180));
    0x000068b8 lw t9, -0x7f88(gp)        |     t9 = sym.addenv;
    0x000068bc addiu a0, a0, -0x53a8     |     a0 += -0x53a8;
    0x000068c0 bal 0x4770                |     sym_addenv ();
    0x000068c4 lw gp, 0x18(sp)           |     gp = *(var_18h);
    0x000068c8 lw a1, (s0)               |     a1 = *(s0);
    0x000068cc lw a0, -0x7fd0(gp)        |     a0 = *((gp - 8180));
    0x000068d0 lw t9, -0x7f88(gp)        |     t9 = sym.addenv;
    0x000068d4 addiu a0, a0, -0x53a0     |     a0 += -0x53a0;
    0x000068d8 bal 0x4770                |     sym_addenv ();
    0x000068dc lw v0, 8(s0)              |     v0 = *((s0 + 2));
    0x000068e0 lw gp, 0x18(sp)           |     gp = *(var_18h);
                                         |     if (v0 == 0) {
    0x000068e4 beqz v0, 0x6980           |         goto label_20;
                                         |     }
    0x000068e8 lw a0, -0x7fd0(gp)        |     a0 = *((gp - 8180));
    0x000068ec lw t9, -0x7f84(gp)        |     t9 = sym.getdef_str;
    0x000068f0 addiu a0, a0, -0x5820     |     a0 += -0x5820;
    0x000068f4 bal 0x8038                |     sym_getdef_str ();
    0x000068f8 move s1, v0               |     s1 = v0;
    0x000068fc lw gp, 0x18(sp)           |     gp = *(var_18h);
                                         |     if (v0 == 0) {
    0x00006900 beqz v0, 0x699c           |         goto label_21;
                                         |     }
                                         |     do {
    0x00006904 lw t9, -0x7e20(gp)        |         t9 = sym.imp.strchr;
    0x00006908 addiu a1, zero, 0x3d      |         a1 = 0x3d;
    0x0000690c move a0, v0               |         a0 = v0;
    0x00006910 jalr t9                   |         t9 ();
    0x00006914 lw gp, 0x18(sp)           |         gp = *(var_18h);
    0x00006918 lw t9, -0x7f88(gp)        |         t9 = sym.addenv;
                                         |         if (v0 == 0) {
    0x0000691c beqz v0, 0x6aa8           |             goto label_22;
                                         |         }
    0x00006920 move a1, zero             |         a1 = 0;
    0x00006924 move a0, s1               |         a0 = s1;
    0x00006928 bal 0x4770                |         sym_addenv ();
    0x0000692c lw gp, 0x18(sp)           |         gp = *(var_18h);
                                         | label_11:
    0x00006930 lw a0, -0x7fd0(gp)        |         a0 = *((gp - 8180));
    0x00006934 lw t9, -0x7fd4(gp)        |         t9 = sym.getdef_bool;
    0x00006938 addiu a0, a0, -0x490c     |         a0 += -0x490c;
    0x0000693c bal 0x80b8                |         sym_getdef_bool ();
    0x00006940 lw gp, 0x18(sp)           |         gp = *(var_18h);
                                         |         if (v0 != 0) {
    0x00006944 bnez v0, 0x69d8           |             goto label_23;
                                         |         }
                                         | label_7:
    0x00006948 lw a0, -0x7fd0(gp)        |         a0 = *((gp - 8180));
    0x0000694c lw t9, -0x7f84(gp)        |         t9 = sym.getdef_str;
    0x00006950 addiu a0, a0, -0x48dc     |         a0 += -0x48dc;
    0x00006954 bal 0x8038                |         sym_getdef_str ();
    0x00006958 lw gp, 0x18(sp)           |         gp = *(var_18h);
                                         |         if (v0 == 0) {
    0x0000695c beqz v0, 0x6a20           |             goto label_24;
                                         |         }
                                         | label_9:
    0x00006960 lw t9, -0x7fb0(gp)        |         t9 = *((gp - 8172));
    0x00006964 lw ra, 0x2c(sp)           |         ra = *(var_2ch);
    0x00006968 lw s1, 0x28(sp)           |         s1 = *(var_28h);
    0x0000696c lw s0, 0x24(sp)           |         s0 = *(var_24h);
    0x00006970 move a0, v0               |         a0 = v0;
    0x00006974 addiu t9, t9, 0x6540      |         t9 += 0x6540;
    0x00006978 addiu sp, sp, 0x30        |         
    0x0000697c b 0x6540                  |         goto label_6;
                                         | label_20:
    0x00006980 lw a0, -0x7fd0(gp)        |         a0 = *((gp - 8180));
    0x00006984 lw t9, -0x7f84(gp)        |         t9 = sym.getdef_str;
    0x00006988 addiu a0, a0, -0x582c     |         a0 += -0x582c;
    0x0000698c bal 0x8038                |         sym_getdef_str ();
    0x00006990 move s1, v0               |         s1 = v0;
    0x00006994 lw gp, 0x18(sp)           |         gp = *(var_18h);
    0x00006998 bnez v0, 0x6904           |         
                                         |     } while (v0 != 0);
                                         | label_21:
    0x0000699c lw v0, 8(s0)              |     v0 = *((s0 + 2));
                                         |     if (v0 == 0) {
    0x000069a0 beql v0, zero, 0x6ac0     |         goto label_25;
                                         |     }
    0x000069a4 lw a0, -0x7fd0(gp)        |     a0 = *((gp - 8180));
    0x000069a8 lw a0, -0x7fd0(gp)        |     a0 = *((gp - 8180));
    0x000069ac addiu a0, a0, -0x57f0     |     a0 += -0x57f0;
                                         | label_12:
    0x000069b0 lw t9, -0x7f88(gp)        |     t9 = sym.addenv;
    0x000069b4 move a1, zero             |     a1 = 0;
    0x000069b8 bal 0x4770                |     sym_addenv ();
    0x000069bc lw gp, 0x18(sp)           |     gp = *(var_18h);
    0x000069c0 lw a0, -0x7fd0(gp)        |     a0 = *((gp - 8180));
    0x000069c4 lw t9, -0x7fd4(gp)        |     t9 = sym.getdef_bool;
    0x000069c8 addiu a0, a0, -0x490c     |     a0 += -0x490c;
    0x000069cc bal 0x80b8                |     sym_getdef_bool ();
    0x000069d0 lw gp, 0x18(sp)           |     gp = *(var_18h);
                                         |     if (v0 == 0) {
    0x000069d4 beqz v0, 0x6948           |         goto label_7;
                                         |     }
                                         | label_23:
    0x000069d8 lw a0, -0x7fd0(gp)        |     a0 = *((gp - 8180));
    0x000069dc lw t9, -0x7f84(gp)        |     t9 = sym.getdef_str;
    0x000069e0 addiu a0, a0, -0x48fc     |     a0 += -0x48fc;
    0x000069e4 bal 0x8038                |     sym_getdef_str ();
    0x000069e8 lw gp, 0x18(sp)           |     gp = *(var_18h);
                                         |     if (v0 == 0) {
    0x000069ec beqz v0, 0x6ac8           |         goto label_26;
                                         |     }
    0x000069f0 lw t9, -0x7fb0(gp)        |     t9 = *((gp - 8172));
    0x000069f4 lw a1, (s0)               |     a1 = *(s0);
    0x000069f8 addiu t9, t9, 0x66f4      |     t9 += 0x66f4;
    0x000069fc move a0, v0               |     a0 = v0;
    0x00006a00 bal 0x66f4                |     fcn_66f4 ();
                                         |     goto label_8;
    0x00006a04 lw gp, 0x18(sp)           |     gp = *(var_18h);
    0x00006a08 lw a0, -0x7fd0(gp)        |     a0 = *((gp - 8180));
    0x00006a0c lw t9, -0x7f84(gp)        |     t9 = sym.getdef_str;
    0x00006a10 addiu a0, a0, -0x48dc     |     a0 += -0x48dc;
    0x00006a14 bal 0x8038                |     sym_getdef_str ();
    0x00006a18 lw gp, 0x18(sp)           |     gp = *(var_18h);
                                         |     if (v0 != 0) {
    0x00006a1c bnez v0, 0x6960           |         goto label_9;
                                         |     }
                                         | label_24:
    0x00006a20 lw ra, 0x2c(sp)           |     ra = *(var_2ch);
    0x00006a24 lw s1, 0x28(sp)           |     s1 = *(var_28h);
    0x00006a28 lw s0, 0x24(sp)           |     s0 = *(var_24h);
    0x00006a2c addiu sp, sp, 0x30        |     
    0x00006a30 jr ra                     |     return v0;
                                         | label_18:
    0x00006a34 lw a0, -0x7fd0(gp)        |     a0 = *((gp - 8180));
    0x00006a38 lw t9, -0x7fd4(gp)        |     t9 = sym.getdef_bool;
    0x00006a3c addiu a0, a0, -0x4980     |     a0 += -0x4980;
    0x00006a40 bal 0x80b8                |     sym_getdef_bool ();
    0x00006a44 lw gp, 0x18(sp)           |     gp = *(var_18h);
                                         |     if (v0 != 0) {
    0x00006a48 beqz v0, 0x6b18           |         
    0x00006a4c lw a0, -0x7fd0(gp)        |         a0 = *((gp - 8180));
    0x00006a50 lw t9, -0x7d98(gp)        |         t9 = sym.imp.chdir;
    0x00006a54 addiu a0, a0, -0x4ed0     |         a0 += -0x4ed0;
    0x00006a58 jalr t9                   |         t9 ();
    0x00006a5c lw gp, 0x18(sp)           |         gp = *(var_18h);
                                         |         if (v0 == s1) {
    0x00006a60 beq v0, s1, 0x6b18        |             goto label_27;
                                         |         }
    0x00006a64 lw a0, -0x7fd0(gp)        |         a0 = *((gp - 8180));
    0x00006a68 lw t9, -0x7df0(gp)        |         t9 = sym.imp.puts;
    0x00006a6c addiu a0, a0, -0x4934     |         a0 += -0x4934;
    0x00006a70 jalr t9                   |         t9 ();
    0x00006a74 lw gp, 0x18(sp)           |         gp = *(var_18h);
    0x00006a78 lw t9, -0x7d70(gp)        |         t9 = sym.imp.free;
    0x00006a7c lw a0, 0x14(s0)           |         a0 = *((s0 + 5));
    0x00006a80 jalr t9                   |         t9 ();
    0x00006a84 lw gp, 0x18(sp)           |         gp = *(var_18h);
    0x00006a88 lw a0, -0x7fdc(gp)        |         a0 = *((gp - 8183));
    0x00006a8c lw t9, -0x7fbc(gp)        |         t9 = sym.xstrdup;
    0x00006a90 addiu a0, a0, -0x3f28     |         a0 += -0x3f28;
    0x00006a94 bal 0x77e4                |         sym_xstrdup ();
    0x00006a98 move a1, v0               |         a1 = v0;
    0x00006a9c lw gp, 0x18(sp)           |         gp = *(var_18h);
    0x00006aa0 sw v0, 0x14(s0)           |         *((s0 + 5)) = v0;
    0x00006aa4 b 0x6848                  |         goto label_10;
                                         | label_22:
    0x00006aa8 lw a0, -0x7fd0(gp)        |         a0 = *((gp - 8180));
    0x00006aac move a1, s1               |         a1 = s1;
    0x00006ab0 addiu a0, a0, -0x581c     |         a0 += -0x581c;
    0x00006ab4 bal 0x4770                |         sym_addenv ();
    0x00006ab8 lw gp, 0x18(sp)           |         gp = *(var_18h);
    0x00006abc b 0x6930                  |         goto label_11;
                                         | label_25:
    0x00006ac0 addiu a0, a0, -0x5814     |         a0 += -0x5814;
    0x00006ac4 b 0x69b0                  |         goto label_12;
                                         | label_26:
    0x00006ac8 lw a0, -0x7fd0(gp)        |         a0 = *((gp - 8180));
    0x00006acc lw t9, -0x7f84(gp)        |         t9 = sym.getdef_str;
    0x00006ad0 addiu a0, a0, -0x48f0     |         a0 += -0x48f0;
    0x00006ad4 bal 0x8038                |         sym_getdef_str ();
    0x00006ad8 lw gp, 0x18(sp)           |         gp = *(var_18h);
    0x00006adc lw a0, 0x14(s0)           |         a0 = *((s0 + 5));
                                         |         if (v0 != 0) {
    0x00006ae0 beqz v0, 0x6afc           |             
    0x00006ae4 lw t9, -0x7fb0(gp)        |             t9 = *((gp - 8172));
    0x00006ae8 addiu t9, t9, 0x66f4      |             t9 += 0x66f4;
    0x00006aec move a1, v0               |             a1 = v0;
    0x00006af0 bal 0x66f4                |             fcn_66f4 ();
                                         |             goto label_8;
    0x00006af4 lw gp, 0x18(sp)           |             gp = *(var_18h);
    0x00006af8 b 0x6948                  |             goto label_7;
                                         |         }
    0x00006afc lw a1, -0x7fd0(gp)        |         a1 = *((gp - 8180));
    0x00006b00 lw t9, -0x7fb0(gp)        |         t9 = *((gp - 8172));
    0x00006b04 addiu t9, t9, 0x66f4      |         t9 += 0x66f4;
    0x00006b08 addiu a1, a1, -0x48e4     |         a1 += -0x48e4;
    0x00006b0c bal 0x66f4                |         fcn_66f4 ();
                                         |         goto label_8;
    0x00006b10 lw gp, 0x18(sp)           |         gp = *(var_18h);
    0x00006b14 b 0x6948                  |         goto label_7;
                                         |     }
                                         | label_27:
    0x00006b18 lw v0, -0x7d64(gp)        |     v0 = *((gp - 8025));
    0x00006b1c lw a2, -0x7fd0(gp)        |     a2 = *((gp - 8180));
    0x00006b20 lw t9, -0x7ebc(gp)        |     t9 = sym.imp.__fprintf_chk
    0x00006b24 lw a3, 0x14(s0)           |     a3 = *((s0 + 5));
    0x00006b28 lw a0, (v0)               |     a0 = *(v0);
    0x00006b2c addiu a2, a2, -0x4970     |     a2 += -0x4970;
    0x00006b30 addiu a1, zero, 1         |     a1 = 1;
    0x00006b34 jalr t9                   |     t9 ();
    0x00006b38 lw gp, 0x18(sp)           |     gp = *(var_18h);
    0x00006b3c lw v0, (s0)               |     v0 = *(s0);
    0x00006b40 lw a3, 0x14(s0)           |     a3 = *((s0 + 5));
    0x00006b44 lw a2, -0x7fd0(gp)        |     a2 = *((gp - 8180));
    0x00006b48 lw t9, -0x7e88(gp)        |     t9 = sym.imp.__syslog_chk;
    0x00006b4c addiu a0, zero, 4         |     a0 = 4;
    0x00006b50 addiu a2, a2, -0x4958     |     a2 += -0x4958;
    0x00006b54 addiu a1, zero, 1         |     a1 = 1;
    0x00006b58 sw v0, 0x10(sp)           |     *(var_10h) = v0;
    0x00006b5c jalr t9                   |     t9 ();
    0x00006b60 lw gp, 0x18(sp)           |     gp = *(var_18h);
    0x00006b64 lw t9, -0x7e18(gp)        |     t9 = sym.imp.closelog;
    0x00006b68 jalr t9                   |     t9 ();
    0x00006b6c nop                       |     
    0x00006b70 lw gp, 0x18(sp)           |     gp = *(var_18h);
    0x00006b74 lw t9, -0x7e00(gp)        |     t9 = sym.imp.exit;
    0x00006b78 addiu a0, zero, 1         |     a0 = 1;
    0x00006b7c jalr t9                   |     return t9 ();
                                         | }
    ; assembly                           | /* r2dec pseudo code output */
                                         | /* /logs/firmware/unblob_extracted/firmware_extract/4325012-58052244.squashfs_v4_le_extract/usr/bin/su.shadow @ 0x6e30 */
                                         | #include <stdint.h>
                                         |  
    ; (fcn) sym.sulog ()                 | void sulog () {
    0x00006e30 lui gp, 2                 |     
    0x00006e34 addiu gp, gp, -0x2ad0     |     
    0x00006e38 addu gp, gp, t9           |     gp += t9;
    0x00006e3c addiu sp, sp, -0x68       |     
    0x00006e40 lw t9, -0x7e88(gp)        |     t9 = sym.imp.__syslog_chk;
    0x00006e44 sw s1, 0x48(sp)           |     *(var_48h) = s1;
    0x00006e48 lw s1, -0x7d7c(gp)        |     s1 = *((gp - 8031));
    0x00006e4c sw gp, 0x30(sp)           |     *(var_30h) = gp;
    0x00006e50 sw s6, 0x5c(sp)           |     *(var_5ch) = s6;
    0x00006e54 lw v0, (s1)               |     v0 = *(s1);
    0x00006e58 sw s5, 0x58(sp)           |     *(var_58h) = s5;
    0x00006e5c sw s3, 0x50(sp)           |     *(var_50h) = s3;
    0x00006e60 sw s2, 0x4c(sp)           |     *(var_4ch) = s2;
    0x00006e64 sw ra, 0x64(sp)           |     *(var_64h) = ra;
    0x00006e68 sw s7, 0x60(sp)           |     *(var_60h) = s7;
    0x00006e6c sw s4, 0x54(sp)           |     *(var_54h) = s4;
    0x00006e70 sw s0, 0x44(sp)           |     *(var_44h) = s0;
    0x00006e74 move s2, a1               |     s2 = a1;
    0x00006e78 move s5, a0               |     s5 = a0;
    0x00006e7c move s3, a2               |     s3 = a2;
    0x00006e80 move s6, a3               |     s6 = a3;
    0x00006e84 sw v0, 0x3c(sp)           |     *(var_3ch) = v0;
    0x00006e88 sw a2, 0x10(sp)           |     *(var_10h) = a2;
                                         |     if (a1 == 0) {
    0x00006e8c beqz a1, 0x70ac           |         goto label_2;
                                         |     }
    0x00006e90 lw a2, -0x7fd0(gp)        |     a2 = *((gp - 8180));
    0x00006e94 addiu a1, zero, 1         |     a1 = 1;
    0x00006e98 addiu a2, a2, -0x4804     |     a2 += -0x4804;
    0x00006e9c addiu a0, zero, 6         |     a0 = 6;
    0x00006ea0 jalr t9                   |     t9 ();
    0x00006ea4 lw gp, 0x30(sp)           |     gp = *(var_30h);
                                         | label_0:
    0x00006ea8 lw a0, -0x7fd0(gp)        |     a0 = *((gp - 8180));
    0x00006eac lw t9, -0x7f84(gp)        |     t9 = sym.getdef_str;
    0x00006eb0 addiu a0, a0, -0x47d0     |     a0 += -0x47d0;
    0x00006eb4 bal 0x8038                |     sym_getdef_str ();
    0x00006eb8 move s0, v0               |     s0 = v0;
    0x00006ebc lw gp, 0x30(sp)           |     gp = *(var_30h);
                                         |     if (v0 == 0) {
    0x00006ec0 beqz v0, 0x6fe0           |         goto label_3;
                                         |     }
    0x00006ec4 lw t9, -0x7e50(gp)        |     t9 = sym.imp.getgid;
    0x00006ec8 jalr t9                   |     t9 ();
    0x00006ecc nop                       |     
    0x00006ed0 lw gp, 0x30(sp)           |     gp = *(var_30h);
    0x00006ed4 addiu a0, zero, 0x3f      |     a0 = 0x3f;
    0x00006ed8 lw t9, -0x7ed4(gp)        |     t9 = sym.imp.umask;
    0x00006edc move s4, v0               |     s4 = v0;
    0x00006ee0 jalr t9                   |     t9 ();
    0x00006ee4 move s7, v0               |     s7 = v0;
    0x00006ee8 lw gp, 0x30(sp)           |     gp = *(var_30h);
                                         |     if (s4 != 0) {
    0x00006eec bnez s4, 0x7018           |         goto label_4;
                                         |     }
                                         | label_1:
    0x00006ef0 lw a1, -0x7fd0(gp)        |     a1 = *((gp - 8180));
    0x00006ef4 lw t9, -0x7eb8(gp)        |     t9 = sym.imp.fopen64;
    0x00006ef8 move a0, s0               |     a0 = s0;
    0x00006efc addiu a1, a1, -0x47a8     |     a1 += -0x47a8;
    0x00006f00 jalr t9                   |     t9 ();
    0x00006f04 lw gp, 0x30(sp)           |     gp = *(var_30h);
    0x00006f08 move a0, s7               |     a0 = s7;
    0x00006f0c lw t9, -0x7ed4(gp)        |     t9 = sym.imp.umask;
    0x00006f10 move s0, v0               |     s0 = v0;
    0x00006f14 jalr t9                   |     t9 ();
    0x00006f18 lw gp, 0x30(sp)           |     gp = *(var_30h);
                                         |     do {
    0x00006f1c lw t9, -0x7d8c(gp)        |         t9 = sym.imp.time;
                                         |         if (s0 != 0) {
    0x00006f20 beqz s0, 0x6fe0           |             
    0x00006f24 addiu s4, sp, 0x38        |             s4 = sp + 0x38;
    0x00006f28 move a0, s4               |             a0 = s4;
    0x00006f2c jalr t9                   |             t9 ();
    0x00006f30 lw gp, 0x30(sp)           |             gp = *(var_30h);
    0x00006f34 lw t9, -0x7e14(gp)        |             t9 = sym.imp.localtime;
    0x00006f38 move a0, s4               |             a0 = s4;
    0x00006f3c jalr t9                   |             t9 ();
    0x00006f40 lw gp, 0x30(sp)           |             gp = *(var_30h);
    0x00006f44 lw v1, 0xc(v0)            |             v1 = *((v0 + 3));
    0x00006f48 lw t0, 8(v0)              |             t0 = *((v0 + 2));
    0x00006f4c lw t1, 4(v0)              |             t1 = *((v0 + 1));
    0x00006f50 lw a3, 0x10(v0)           |             a3 = *((v0 + 4));
    0x00006f54 addiu a0, zero, 0x2d      |             a0 = 0x2d;
    0x00006f58 addiu v0, zero, 0x2b      |             v0 = 0x2b;
                                         |             if (s2 == 0) {
    0x00006f5c movn a0, v0, s2           |                 a0 = v0;
                                         |             }
    0x00006f60 lw a2, -0x7fd0(gp)        |             a2 = *((gp - 8180));
    0x00006f64 move s2, a0               |             s2 = a0;
    0x00006f68 lw t9, -0x7ebc(gp)        |             t9 = sym.imp.__fprintf_chk
    0x00006f6c addiu a3, a3, 1           |             a3++;
    0x00006f70 addiu a2, a2, -0x4778     |             a2 += -0x4778;
    0x00006f74 addiu a1, zero, 1         |             a1 = 1;
    0x00006f78 sw t1, 0x18(sp)           |             *(var_18h_2) = t1;
    0x00006f7c sw t0, 0x14(sp)           |             *(var_14h) = t0;
    0x00006f80 sw v1, 0x10(sp)           |             *(var_10h) = v1;
    0x00006f84 move a0, s0               |             a0 = s0;
    0x00006f88 sw s6, 0x28(sp)           |             *(var_28h) = s6;
    0x00006f8c sw s3, 0x24(sp)           |             *(var_24h_2) = s3;
    0x00006f90 sw s5, 0x20(sp)           |             *(var_20h_2) = s5;
    0x00006f94 sw s2, 0x1c(sp)           |             *(var_1ch_2) = s2;
    0x00006f98 jalr t9                   |             t9 ();
    0x00006f9c lw gp, 0x30(sp)           |             gp = *(var_30h);
    0x00006fa0 lw t9, -0x7d5c(gp)        |             t9 = sym.imp.fflush;
    0x00006fa4 move a0, s0               |             a0 = s0;
    0x00006fa8 jalr t9                   |             t9 ();
    0x00006fac lw gp, 0x30(sp)           |             gp = *(var_30h);
    0x00006fb0 lw t9, -0x7e64(gp)        |             t9 = sym.imp.fileno;
    0x00006fb4 move a0, s0               |             a0 = s0;
    0x00006fb8 jalr t9                   |             t9 ();
    0x00006fbc lw gp, 0x30(sp)           |             gp = *(var_30h);
    0x00006fc0 lw t9, -0x7e2c(gp)        |             t9 = sym.imp.fsync;
    0x00006fc4 move a0, v0               |             a0 = v0;
    0x00006fc8 jalr t9                   |             t9 ();
    0x00006fcc lw gp, 0x30(sp)           |             gp = *(var_30h);
    0x00006fd0 lw t9, -0x7eb4(gp)        |             t9 = sym.imp.fclose;
    0x00006fd4 move a0, s0               |             a0 = s0;
    0x00006fd8 jalr t9                   |             t9 ();
    0x00006fdc lw gp, 0x30(sp)           |             gp = *(var_30h);
                                         |         }
                                         | label_3:
    0x00006fe0 lw v1, 0x3c(sp)           |         v1 = *(var_3ch);
    0x00006fe4 lw v0, (s1)               |         v0 = *(s1);
    0x00006fe8 lw ra, 0x64(sp)           |         ra = *(var_64h);
                                         |         if (v1 != v0) {
    0x00006fec bne v1, v0, 0x70ec        |             goto label_5;
                                         |         }
    0x00006ff0 lw s7, 0x60(sp)           |         s7 = *(var_60h);
    0x00006ff4 lw s6, 0x5c(sp)           |         s6 = *(var_5ch);
    0x00006ff8 lw s5, 0x58(sp)           |         s5 = *(var_58h);
    0x00006ffc lw s4, 0x54(sp)           |         s4 = *(var_54h);
    0x00007000 lw s3, 0x50(sp)           |         s3 = *(var_50h);
    0x00007004 lw s2, 0x4c(sp)           |         s2 = *(var_4ch);
    0x00007008 lw s1, 0x48(sp)           |         s1 = *(var_48h);
    0x0000700c lw s0, 0x44(sp)           |         s0 = *(var_44h);
    0x00007010 addiu sp, sp, 0x68        |         
    0x00007014 jr ra                     |         return v0;
                                         | label_4:
    0x00007018 lw t9, -0x7dec(gp)        |         t9 = sym.imp.setgid;
    0x0000701c move a0, zero             |         a0 = 0;
    0x00007020 jalr t9                   |         t9 ();
    0x00007024 lw gp, 0x30(sp)           |         gp = *(var_30h);
                                         |         if (v0 != 0) {
    0x00007028 bnez v0, 0x70c8           |             goto label_6;
                                         |         }
    0x0000702c lw a1, -0x7fd0(gp)        |         a1 = *((gp - 8180));
    0x00007030 lw t9, -0x7eb8(gp)        |         t9 = sym.imp.fopen64;
    0x00007034 addiu a1, a1, -0x47a8     |         a1 += -0x47a8;
    0x00007038 move a0, s0               |         a0 = s0;
    0x0000703c jalr t9                   |         t9 ();
    0x00007040 lw gp, 0x30(sp)           |         gp = *(var_30h);
    0x00007044 move a0, s7               |         a0 = s7;
    0x00007048 lw t9, -0x7ed4(gp)        |         t9 = sym.imp.umask;
    0x0000704c move s0, v0               |         s0 = v0;
    0x00007050 jalr t9                   |         t9 ();
    0x00007054 lw gp, 0x30(sp)           |         gp = *(var_30h);
    0x00007058 lw t9, -0x7dec(gp)        |         t9 = sym.imp.setgid;
    0x0000705c move a0, s4               |         a0 = s4;
    0x00007060 jalr t9                   |         t9 ();
    0x00007064 lw gp, 0x30(sp)           |         gp = *(var_30h);
    0x00007068 beqz v0, 0x6f1c           |         
                                         |     } while (v0 == 0);
    0x0000706c lw a0, -0x7fd0(gp)        |     a0 = *((gp - 8180));
    0x00007070 lw t9, -0x7dc8(gp)        |     t9 = sym.imp.perror;
    0x00007074 addiu a0, a0, -0x4a80     |     a0 += -0x4a80;
    0x00007078 jalr t9                   |     t9 ();
    0x0000707c lw gp, 0x30(sp)           |     gp = *(var_30h);
    0x00007080 addiu a0, zero, 3         |     a0 = 3;
    0x00007084 move a3, s4               |     a3 = s4;
    0x00007088 lw a2, -0x7fd0(gp)        |     a2 = *((gp - 8180));
    0x0000708c lw t9, -0x7e88(gp)        |     t9 = sym.imp.__syslog_chk;
    0x00007090 addiu a2, a2, -0x47a4     |     a2 += -0x47a4;
    0x00007094 addiu a1, zero, 1         |     a1 = 1;
    0x00007098 jalr t9                   |     t9 ();
    0x0000709c lw gp, 0x30(sp)           |     gp = *(var_30h);
    0x000070a0 lw t9, -0x7e00(gp)        |     t9 = sym.imp.exit;
    0x000070a4 addiu a0, zero, 1         |     a0 = 1;
    0x000070a8 jalr t9                   |     t9 ();
                                         | label_2:
    0x000070ac lw a2, -0x7fd0(gp)        |     a2 = *((gp - 8180));
    0x000070b0 addiu a1, zero, 1         |     a1 = 1;
    0x000070b4 addiu a2, a2, -0x47e8     |     a2 += -0x47e8;
    0x000070b8 addiu a0, zero, 5         |     a0 = 5;
    0x000070bc jalr t9                   |     t9 ();
    0x000070c0 lw gp, 0x30(sp)           |     gp = *(var_30h);
    0x000070c4 b 0x6ea8                  |     goto label_0;
                                         | label_6:
    0x000070c8 lw a2, -0x7fd0(gp)        |     a2 = *((gp - 8180));
    0x000070cc lw t9, -0x7e88(gp)        |     t9 = sym.imp.__syslog_chk;
    0x000070d0 move a3, s0               |     a3 = s0;
    0x000070d4 addiu a2, a2, -0x47c4     |     a2 += -0x47c4;
    0x000070d8 addiu a1, zero, 1         |     a1 = 1;
    0x000070dc addiu a0, zero, 6         |     a0 = 6;
    0x000070e0 jalr t9                   |     t9 ();
    0x000070e4 lw gp, 0x30(sp)           |     gp = *(var_30h);
    0x000070e8 b 0x6ef0                  |     goto label_1;
                                         | label_5:
    0x000070ec lw t9, -0x7da4(gp)        |     t9 = sym.imp.__stack_chk_fail;
    0x000070f0 jalr t9                   |     t9 ();
    0x000070f4 nop                       |     
    0x000070f8 nop                       |     
    0x000070fc nop                       |     
                                         | }
    ; assembly                           | /* r2dec pseudo code output */
                                         | /* /logs/firmware/unblob_extracted/firmware_extract/4325012-58052244.squashfs_v4_le_extract/usr/bin/su.shadow @ 0x7300 */
                                         | #include <stdint.h>
                                         |  
    ; (fcn) sym.xgetpwnam ()             | void xgetpwnam () {
    0x00007300 lui gp, 2                 |     
    0x00007304 addiu gp, gp, -0x2fa0     |     
    0x00007308 addu gp, gp, t9           |     gp += t9;
    0x0000730c lw v0, -0x7d7c(gp)        |     v0 = *((gp - 8031));
    0x00007310 addiu sp, sp, -0x58       |     
    0x00007314 lw t9, -0x7de4(gp)        |     t9 = sym.imp.malloc;
    0x00007318 sw v0, 0x20(sp)           |     *(var_20h) = v0;
    0x0000731c lw v0, (v0)               |     v0 = *(v0);
    0x00007320 sw gp, 0x18(sp)           |     *(var_18h) = gp;
    0x00007324 sw s4, 0x40(sp)           |     *(var_40h) = s4;
    0x00007328 sw ra, 0x54(sp)           |     *(var_54h) = ra;
    0x0000732c sw fp, 0x50(sp)           |     *(var_50h) = fp;
    0x00007330 sw s7, 0x4c(sp)           |     *(var_4ch) = s7;
    0x00007334 sw s6, 0x48(sp)           |     *(var_48h) = s6;
    0x00007338 sw s5, 0x44(sp)           |     *(var_44h) = s5;
    0x0000733c sw s3, 0x3c(sp)           |     *(var_3ch) = s3;
    0x00007340 sw s2, 0x38(sp)           |     *(var_38h) = s2;
    0x00007344 sw s1, 0x34(sp)           |     *(var_34h) = s1;
    0x00007348 sw s0, 0x30(sp)           |     *(var_30h) = s0;
    0x0000734c move s4, a0               |     s4 = a0;
    0x00007350 sw v0, 0x2c(sp)           |     *(var_2ch) = v0;
    0x00007354 addiu a0, zero, 0x1c      |     a0 = 0x1c;
    0x00007358 jalr t9                   |     t9 ();
    0x0000735c lw gp, 0x18(sp)           |     gp = *(var_18h);
                                         |     if (v0 == 0) {
    0x00007360 beqz v0, 0x74e0           |         goto label_2;
                                         |     }
    0x00007364 move s2, v0               |     s2 = v0;
    0x00007368 addiu s0, zero, 0x100     |     s0 = aav.0x00000100;
    0x0000736c move s1, zero             |     s1 = 0;
    0x00007370 addiu s3, sp, 0x28        |     s3 = sp + 0x28;
    0x00007374 addiu s5, zero, 0x22      |     s5 = 0x22;
    0x00007378 lui s6, 0x4000            |     s6 = 0x40000000;
    0x0000737c addiu s7, zero, -1        |     s7 = -1;
                                         |     do {
    0x00007380 lw t9, -0x7de0(gp)        |         t9 = sym.imp.realloc;
                                         | label_0:
    0x00007384 move a0, s1               |         a0 = s1;
    0x00007388 move a1, s0               |         a1 = s0;
    0x0000738c sw zero, 0x28(sp)         |         *(var_28h) = 0;
    0x00007390 jalr t9                   |         t9 ();
    0x00007394 move s1, v0               |         s1 = v0;
    0x00007398 lw gp, 0x18(sp)           |         gp = *(var_18h);
                                         |         if (v0 == 0) {
    0x0000739c beqz v0, 0x74e0           |             goto label_2;
                                         |         }
    0x000073a0 lw t9, -0x7e5c(gp)        |         t9 = sym.imp.__errno_location;
    0x000073a4 jalr t9                   |         t9 ();
    0x000073a8 nop                       |         
    0x000073ac lw gp, 0x18(sp)           |         gp = *(var_18h);
    0x000073b0 sw zero, (v0)             |         *(v0) = 0;
    0x000073b4 move a3, s0               |         a3 = s0;
    0x000073b8 lw t9, -0x7e3c(gp)        |         t9 = sym.imp.getpwnam_r;
    0x000073bc sw s3, 0x10(sp)           |         *(var_10h) = s3;
    0x000073c0 move a2, s1               |         a2 = s1;
    0x000073c4 move a1, s2               |         a1 = s2;
    0x000073c8 move a0, s4               |         a0 = s4;
    0x000073cc move fp, v0               |         fp = v0;
    0x000073d0 jalr t9                   |         t9 ();
    0x000073d4 lw gp, 0x18(sp)           |         gp = *(var_18h);
                                         |         if (v0 == 0) {
    0x000073d8 bnez v0, 0x73e8           |             
    0x000073dc lw v0, 0x28(sp)           |             v0 = *(var_28h);
    0x000073e0 lw t9, -0x7f3c(gp)        |             t9 = sym.__pw_dup;
                                         |             if (v0 == s2) {
    0x000073e4 beq v0, s2, 0x7478        |                 goto label_3;
                                         |             }
                                         |         }
    0x000073e8 lw v0, (fp)               |         v0 = *(fp);
    0x000073ec sltu v0, s0, s6           |         v0 = (s0 < s6) ? 1 : 0;
                                         |         if (v0 != s5) {
    0x000073f0 bne v0, s5, 0x7414        |             goto label_4;
                                         |         }
                                         |         if (v0 == 0) {
    0x000073f4 beqz v0, 0x7404           |             goto label_5;
                                         |         }
    0x000073f8 nop                       |         
    0x000073fc sll s0, s0, 2             |         s0 <<= 2;
    0x00007400 b 0x7380                  |         
                                         |     } while (1);
                                         | label_5:
    0x00007404 addiu s0, zero, -1        |     s0 = -1;
                                         |     if (s0 == s7) {
    0x00007408 beq s0, s7, 0x74b0        |         goto label_6;
                                         |     }
    0x0000740c lw t9, -0x7de0(gp)        |     t9 = sym.imp.realloc;
    0x00007410 b 0x7384                  |     goto label_0;
                                         | label_4:
    0x00007414 lw t9, -0x7d70(gp)        |     t9 = sym.imp.free;
    0x00007418 move a0, s1               |     a0 = s1;
    0x0000741c jalr t9                   |     t9 ();
    0x00007420 lw gp, 0x18(sp)           |     gp = *(var_18h);
    0x00007424 lw t9, -0x7d70(gp)        |     t9 = sym.imp.free;
    0x00007428 move a0, s2               |     a0 = s2;
    0x0000742c jalr t9                   |     t9 ();
    0x00007430 lw gp, 0x18(sp)           |     gp = *(var_18h);
    0x00007434 move v0, zero             |     v0 = 0;
                                         |     do {
                                         | label_1:
    0x00007438 lw v1, 0x20(sp)           |         v1 = *(var_20h);
    0x0000743c lw a0, 0x2c(sp)           |         a0 = *(var_2ch);
    0x00007440 lw v1, (v1)               |         v1 = *(v1);
    0x00007444 lw ra, 0x54(sp)           |         ra = *(var_54h);
                                         |         if (a0 != v1) {
    0x00007448 bne a0, v1, 0x7514        |             goto label_7;
                                         |         }
    0x0000744c lw fp, 0x50(sp)           |         fp = *(var_50h);
    0x00007450 lw s7, 0x4c(sp)           |         s7 = *(var_4ch);
    0x00007454 lw s6, 0x48(sp)           |         s6 = *(var_48h);
    0x00007458 lw s5, 0x44(sp)           |         s5 = *(var_44h);
    0x0000745c lw s4, 0x40(sp)           |         s4 = *(var_40h);
    0x00007460 lw s3, 0x3c(sp)           |         s3 = *(var_3ch);
    0x00007464 lw s2, 0x38(sp)           |         s2 = *(var_38h);
    0x00007468 lw s1, 0x34(sp)           |         s1 = *(var_34h);
    0x0000746c lw s0, 0x30(sp)           |         s0 = *(var_30h);
    0x00007470 addiu sp, sp, 0x58        |         
    0x00007474 jr ra                     |         return v0;
                                         | label_3:
    0x00007478 move a0, s2               |         a0 = s2;
    0x0000747c bal 0x9c44                |         sym_pw_dup ();
    0x00007480 lw gp, 0x18(sp)           |         gp = *(var_18h);
    0x00007484 sw v0, 0x24(sp)           |         *(var_24h) = v0;
    0x00007488 lw t9, -0x7d70(gp)        |         t9 = sym.imp.free;
    0x0000748c move a0, s1               |         a0 = s1;
    0x00007490 jalr t9                   |         t9 ();
    0x00007494 lw gp, 0x18(sp)           |         gp = *(var_18h);
    0x00007498 lw t9, -0x7d70(gp)        |         t9 = sym.imp.free;
    0x0000749c move a0, s2               |         a0 = s2;
    0x000074a0 jalr t9                   |         t9 ();
    0x000074a4 lw gp, 0x18(sp)           |         gp = *(var_18h);
    0x000074a8 lw v0, 0x24(sp)           |         v0 = *(var_24h);
    0x000074ac b 0x7438                  |         
                                         |     } while (1);
                                         | label_6:
    0x000074b0 lw t9, -0x7d70(gp)        |     t9 = sym.imp.free;
    0x000074b4 move a0, s1               |     a0 = s1;
    0x000074b8 jalr t9                   |     t9 ();
    0x000074bc lw gp, 0x18(sp)           |     gp = *(var_18h);
    0x000074c0 move v0, zero             |     v0 = 0;
    0x000074c4 sw v0, 0x24(sp)           |     *(var_24h) = v0;
    0x000074c8 lw t9, -0x7d70(gp)        |     t9 = sym.imp.free;
    0x000074cc move a0, s2               |     a0 = s2;
    0x000074d0 jalr t9                   |     t9 ();
    0x000074d4 lw gp, 0x18(sp)           |     gp = *(var_18h);
    0x000074d8 lw v0, 0x24(sp)           |     v0 = *(var_24h);
    0x000074dc b 0x7438                  |     goto label_1;
                                         | label_2:
    0x000074e0 lw v0, -0x7d64(gp)        |     v0 = *((gp - 8025));
    0x000074e4 lw a3, -0x7fd0(gp)        |     a3 = *((gp - 8180));
    0x000074e8 lw a2, -0x7fd0(gp)        |     a2 = *((gp - 8180));
    0x000074ec lw t9, -0x7ebc(gp)        |     t9 = sym.imp.__fprintf_chk
    0x000074f0 lw a0, (v0)               |     a0 = *(v0);
    0x000074f4 addiu a3, a3, -0x4744     |     a3 += -0x4744;
    0x000074f8 addiu a2, a2, -0x4738     |     a2 += -0x4738;
    0x000074fc addiu a1, zero, 1         |     a1 = 1;
    0x00007500 jalr t9                   |     t9 ();
    0x00007504 lw gp, 0x18(sp)           |     gp = *(var_18h);
    0x00007508 lw t9, -0x7e00(gp)        |     t9 = sym.imp.exit;
    0x0000750c addiu a0, zero, 0xd       |     a0 = 0xd;
    0x00007510 jalr t9                   |     t9 ();
                                         | label_7:
    0x00007514 lw t9, -0x7da4(gp)        |     t9 = sym.imp.__stack_chk_fail;
    0x00007518 jalr t9                   |     t9 ();
    0x0000751c nop                       |     
                                         | }
    ; assembly                           | /* r2dec pseudo code output */
                                         | /* /logs/firmware/unblob_extracted/firmware_extract/4325012-58052244.squashfs_v4_le_extract/usr/bin/su.shadow @ 0x7520 */
                                         | #include <stdint.h>
                                         |  
    ; (fcn) sym.xgetpwuid ()             | void xgetpwuid () {
    0x00007520 lui gp, 2                 |     
    0x00007524 addiu gp, gp, -0x31c0     |     
    0x00007528 addu gp, gp, t9           |     gp += t9;
    0x0000752c lw v0, -0x7d7c(gp)        |     v0 = *((gp - 8031));
    0x00007530 addiu sp, sp, -0x58       |     
    0x00007534 lw t9, -0x7de4(gp)        |     t9 = sym.imp.malloc;
    0x00007538 sw v0, 0x20(sp)           |     *(var_20h_7) = v0;
    0x0000753c lw v0, (v0)               |     v0 = *(v0);
    0x00007540 sw gp, 0x18(sp)           |     *(var_18h_2) = gp;
    0x00007544 sw s4, 0x40(sp)           |     *(var_10h_7) = s4;
    0x00007548 sw ra, 0x54(sp)           |     *(var_24h_7) = ra;
    0x0000754c sw fp, 0x50(sp)           |     *(var_20h_6) = fp;
    0x00007550 sw s7, 0x4c(sp)           |     *(var_1ch_6) = s7;
    0x00007554 sw s6, 0x48(sp)           |     *(var_48h_2) = s6;
    0x00007558 sw s5, 0x44(sp)           |     *(var_44h_2) = s5;
    0x0000755c sw s3, 0x3c(sp)           |     *(var_3ch_2) = s3;
    0x00007560 sw s2, 0x38(sp)           |     *(var_38h_2) = s2;
    0x00007564 sw s1, 0x34(sp)           |     *(var_34h_3) = s1;
    0x00007568 sw s0, 0x30(sp)           |     *(var_30h_3) = s0;
    0x0000756c move s4, a0               |     s4 = a0;
    0x00007570 sw v0, 0x2c(sp)           |     *(var_2ch_6) = v0;
    0x00007574 addiu a0, zero, 0x1c      |     a0 = 0x1c;
    0x00007578 jalr t9                   |     t9 ();
    0x0000757c lw gp, 0x18(sp)           |     gp = *(var_18h_2);
                                         |     if (v0 == 0) {
    0x00007580 beqz v0, 0x7700           |         goto label_2;
                                         |     }
    0x00007584 move s2, v0               |     s2 = v0;
    0x00007588 addiu s0, zero, 0x100     |     s0 = aav.0x00000100;
    0x0000758c move s1, zero             |     s1 = 0;
    0x00007590 addiu s3, sp, 0x28        |     s3 = sp + 0x28;
    0x00007594 addiu s5, zero, 0x22      |     s5 = 0x22;
    0x00007598 lui s6, 0x4000            |     s6 = 0x40000000;
    0x0000759c addiu s7, zero, -1        |     s7 = -1;
                                         |     do {
    0x000075a0 lw t9, -0x7de0(gp)        |         t9 = sym.imp.realloc;
                                         | label_0:
    0x000075a4 move a0, s1               |         a0 = s1;
    0x000075a8 move a1, s0               |         a1 = s0;
    0x000075ac sw zero, 0x28(sp)         |         *(var_28h_7) = 0;
    0x000075b0 jalr t9                   |         t9 ();
    0x000075b4 move s1, v0               |         s1 = v0;
    0x000075b8 lw gp, 0x18(sp)           |         gp = *(var_18h_2);
                                         |         if (v0 == 0) {
    0x000075bc beqz v0, 0x7700           |             goto label_2;
                                         |         }
    0x000075c0 lw t9, -0x7e5c(gp)        |         t9 = sym.imp.__errno_location;
    0x000075c4 jalr t9                   |         t9 ();
    0x000075c8 nop                       |         
    0x000075cc lw gp, 0x18(sp)           |         gp = *(var_18h_2);
    0x000075d0 sw zero, (v0)             |         *(v0) = 0;
    0x000075d4 move a3, s0               |         a3 = s0;
    0x000075d8 lw t9, -0x7d2c(gp)        |         t9 = sym.imp.getpwuid_r;
    0x000075dc sw s3, 0x10(sp)           |         *(var_10h_8) = s3;
    0x000075e0 move a2, s1               |         a2 = s1;
    0x000075e4 move a1, s2               |         a1 = s2;
    0x000075e8 move a0, s4               |         a0 = s4;
    0x000075ec move fp, v0               |         fp = v0;
    0x000075f0 jalr t9                   |         t9 ();
    0x000075f4 lw gp, 0x18(sp)           |         gp = *(var_18h_2);
                                         |         if (v0 == 0) {
    0x000075f8 bnez v0, 0x7608           |             
    0x000075fc lw v0, 0x28(sp)           |             v0 = *(var_28h_7);
    0x00007600 lw t9, -0x7f3c(gp)        |             t9 = sym.__pw_dup;
                                         |             if (v0 == s2) {
    0x00007604 beq v0, s2, 0x7698        |                 goto label_3;
                                         |             }
                                         |         }
    0x00007608 lw v0, (fp)               |         v0 = *(fp);
    0x0000760c sltu v0, s0, s6           |         v0 = (s0 < s6) ? 1 : 0;
                                         |         if (v0 != s5) {
    0x00007610 bne v0, s5, 0x7634        |             goto label_4;
                                         |         }
                                         |         if (v0 == 0) {
    0x00007614 beqz v0, 0x7624           |             goto label_5;
                                         |         }
    0x00007618 nop                       |         
    0x0000761c sll s0, s0, 2             |         s0 <<= 2;
    0x00007620 b 0x75a0                  |         
                                         |     } while (1);
                                         | label_5:
    0x00007624 addiu s0, zero, -1        |     s0 = -1;
                                         |     if (s0 == s7) {
    0x00007628 beq s0, s7, 0x76d0        |         goto label_6;
                                         |     }
    0x0000762c lw t9, -0x7de0(gp)        |     t9 = sym.imp.realloc;
    0x00007630 b 0x75a4                  |     goto label_0;
                                         | label_4:
    0x00007634 lw t9, -0x7d70(gp)        |     t9 = sym.imp.free;
    0x00007638 move a0, s1               |     a0 = s1;
    0x0000763c jalr t9                   |     t9 ();
    0x00007640 lw gp, 0x18(sp)           |     gp = *(var_18h_2);
    0x00007644 lw t9, -0x7d70(gp)        |     t9 = sym.imp.free;
    0x00007648 move a0, s2               |     a0 = s2;
    0x0000764c jalr t9                   |     t9 ();
    0x00007650 lw gp, 0x18(sp)           |     gp = *(var_18h_2);
    0x00007654 move v0, zero             |     v0 = 0;
                                         |     do {
                                         | label_1:
    0x00007658 lw v1, 0x20(sp)           |         v1 = *(var_20h_7);
    0x0000765c lw a0, 0x2c(sp)           |         a0 = *(var_2ch_6);
    0x00007660 lw v1, (v1)               |         v1 = *(v1);
    0x00007664 lw ra, 0x54(sp)           |         ra = *(var_24h_7);
                                         |         if (a0 != v1) {
    0x00007668 bne a0, v1, 0x7734        |             goto label_7;
                                         |         }
    0x0000766c lw fp, 0x50(sp)           |         fp = *(var_20h_6);
    0x00007670 lw s7, 0x4c(sp)           |         s7 = *(var_1ch_6);
    0x00007674 lw s6, 0x48(sp)           |         s6 = *(var_48h_2);
    0x00007678 lw s5, 0x44(sp)           |         s5 = *(var_44h_2);
    0x0000767c lw s4, 0x40(sp)           |         s4 = *(var_10h_7);
    0x00007680 lw s3, 0x3c(sp)           |         s3 = *(var_3ch_2);
    0x00007684 lw s2, 0x38(sp)           |         s2 = *(var_38h_2);
    0x00007688 lw s1, 0x34(sp)           |         s1 = *(var_34h_3);
    0x0000768c lw s0, 0x30(sp)           |         s0 = *(var_30h_3);
    0x00007690 addiu sp, sp, 0x58        |         
    0x00007694 jr ra                     |         return v0;
                                         | label_3:
    0x00007698 move a0, s2               |         a0 = s2;
    0x0000769c bal 0x9c44                |         sym_pw_dup ();
    0x000076a0 lw gp, 0x18(sp)           |         gp = *(var_18h_2);
    0x000076a4 sw v0, 0x24(sp)           |         *(var_24h_9) = v0;
    0x000076a8 lw t9, -0x7d70(gp)        |         t9 = sym.imp.free;
    0x000076ac move a0, s1               |         a0 = s1;
    0x000076b0 jalr t9                   |         t9 ();
    0x000076b4 lw gp, 0x18(sp)           |         gp = *(var_18h_2);
    0x000076b8 lw t9, -0x7d70(gp)        |         t9 = sym.imp.free;
    0x000076bc move a0, s2               |         a0 = s2;
    0x000076c0 jalr t9                   |         t9 ();
    0x000076c4 lw gp, 0x18(sp)           |         gp = *(var_18h_2);
    0x000076c8 lw v0, 0x24(sp)           |         v0 = *(var_24h_9);
    0x000076cc b 0x7658                  |         
                                         |     } while (1);
                                         | label_6:
    0x000076d0 lw t9, -0x7d70(gp)        |     t9 = sym.imp.free;
    0x000076d4 move a0, s1               |     a0 = s1;
    0x000076d8 jalr t9                   |     t9 ();
    0x000076dc lw gp, 0x18(sp)           |     gp = *(var_18h_2);
    0x000076e0 move v0, zero             |     v0 = 0;
    0x000076e4 sw v0, 0x24(sp)           |     *(var_24h_9) = v0;
    0x000076e8 lw t9, -0x7d70(gp)        |     t9 = sym.imp.free;
    0x000076ec move a0, s2               |     a0 = s2;
    0x000076f0 jalr t9                   |     t9 ();
    0x000076f4 lw gp, 0x18(sp)           |     gp = *(var_18h_2);
    0x000076f8 lw v0, 0x24(sp)           |     v0 = *(var_24h_9);
    0x000076fc b 0x7658                  |     goto label_1;
                                         | label_2:
    0x00007700 lw v0, -0x7d64(gp)        |     v0 = *((gp - 8025));
    0x00007704 lw a3, -0x7fd0(gp)        |     a3 = *((gp - 8180));
    0x00007708 lw a2, -0x7fd0(gp)        |     a2 = *((gp - 8180));
    0x0000770c lw t9, -0x7ebc(gp)        |     t9 = sym.imp.__fprintf_chk
    0x00007710 lw a0, (v0)               |     a0 = *(v0);
    0x00007714 addiu a3, a3, -0x4724     |     a3 += -0x4724;
    0x00007718 addiu a2, a2, -0x4738     |     a2 += -0x4738;
    0x0000771c addiu a1, zero, 1         |     a1 = 1;
    0x00007720 jalr t9                   |     t9 ();
    0x00007724 lw gp, 0x18(sp)           |     gp = *(var_18h_2);
    0x00007728 lw t9, -0x7e00(gp)        |     t9 = sym.imp.exit;
    0x0000772c addiu a0, zero, 0xd       |     a0 = 0xd;
    0x00007730 jalr t9                   |     t9 ();
                                         | label_7:
    0x00007734 lw t9, -0x7da4(gp)        |     t9 = sym.imp.__stack_chk_fail;
    0x00007738 jalr t9                   |     t9 ();
    0x0000773c nop                       |     
                                         | }
    ; assembly                           | /* r2dec pseudo code output */
                                         | /* /logs/firmware/unblob_extracted/firmware_extract/4325012-58052244.squashfs_v4_le_extract/usr/bin/su.shadow @ 0x7740 */
                                         | #include <stdint.h>
                                         |  
    ; (fcn) sym.xmalloc ()               | void xmalloc () {
    0x00007740 lui gp, 2                 |     
    0x00007744 addiu gp, gp, -0x33e0     |     
    0x00007748 addu gp, gp, t9           |     gp += t9;
    0x0000774c addiu sp, sp, -0x30       |     
    0x00007750 lw t9, -0x7de4(gp)        |     t9 = sym.imp.malloc;
    0x00007754 sw gp, 0x18(sp)           |     *(var_18h) = gp;
    0x00007758 sw ra, 0x2c(sp)           |     *(var_2ch) = ra;
    0x0000775c sw s1, 0x28(sp)           |     *(var_28h) = s1;
    0x00007760 sw s0, 0x24(sp)           |     *(var_24h) = s0;
    0x00007764 jalr t9                   |     t9 ();
    0x00007768 nop                       |     
    0x0000776c lw gp, 0x18(sp)           |     gp = *(var_18h);
                                         |     if (v0 != 0) {
    0x00007770 beqz v0, 0x7788           |         
    0x00007774 lw ra, 0x2c(sp)           |         ra = *(var_2ch);
    0x00007778 lw s1, 0x28(sp)           |         s1 = *(var_28h);
    0x0000777c lw s0, 0x24(sp)           |         s0 = *(var_24h);
    0x00007780 addiu sp, sp, 0x30        |         
    0x00007784 jr ra                     |         return v0;
                                         |     }
    0x00007788 lw v0, -0x7d64(gp)        |     v0 = *((gp - 8025));
    0x0000778c lw t9, -0x7e5c(gp)        |     t9 = sym.imp.__errno_location;
    0x00007790 lw s0, (v0)               |     s0 = *(v0);
    0x00007794 lw v0, -0x7fcc(gp)        |     v0 = *(gp);
    0x00007798 lw s1, (v0)               |     s1 = *(v0);
    0x0000779c jalr t9                   |     t9 ();
    0x000077a0 lw gp, 0x18(sp)           |     gp = *(var_18h);
    0x000077a4 lw t9, -0x7df4(gp)        |     t9 = sym.imp.strerror;
    0x000077a8 lw a0, (v0)               |     a0 = *(v0);
    0x000077ac jalr t9                   |     t9 ();
    0x000077b0 lw gp, 0x18(sp)           |     gp = *(var_18h);
    0x000077b4 move a0, s0               |     a0 = s0;
    0x000077b8 sw v0, 0x10(sp)           |     *(var_10h) = v0;
    0x000077bc lw a2, -0x7fd0(gp)        |     a2 = *((gp - 8180));
    0x000077c0 lw t9, -0x7ebc(gp)        |     t9 = sym.imp.__fprintf_chk
    0x000077c4 move a3, s1               |     a3 = s1;
    0x000077c8 addiu a2, a2, -0x4718     |     a2 += -0x4718;
    0x000077cc addiu a1, zero, 1         |     a1 = 1;
    0x000077d0 jalr t9                   |     t9 ();
    0x000077d4 lw gp, 0x18(sp)           |     gp = *(var_18h);
    0x000077d8 lw t9, -0x7e00(gp)        |     t9 = sym.imp.exit;
    0x000077dc addiu a0, zero, 0xd       |     a0 = 0xd;
    0x000077e0 jalr t9                   |     return t9 ();
                                         | }

[*] Function fprintf used 17 times su.shadow