[*] Binary protection state of htpasswd

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


[*] Function printf tear down of htpasswd

    ; assembly                           | /* r2dec pseudo code output */
                                         | /* /logs/firmware/unblob_extracted/firmware_extract/4325012-58052244.squashfs_v4_le_extract/usr/bin/htpasswd @ 0x1e80 */
                                         | #include <stdint.h>
                                         |  
    ; (fcn) fcn.00001e80 ()              | void fcn_00001e80 () {
    0x00001e80 lui gp, 2                 |     
    0x00001e84 addiu gp, gp, -0x5e70     |     
    0x00001e88 addu gp, gp, t9           |     gp += t9;
    0x00001e8c lw v0, -0x7fdc(gp)        |     v0 = *(gp);
    0x00001e90 addiu sp, sp, -0x20       |     
    0x00001e94 lw a1, -0x7fd8(gp)        |     a1 = *((gp - 8182));
    0x00001e98 lw t9, -0x7f84(gp)        |     t9 = sym.imp.apr_file_printf
    0x00001e9c lw a0, (v0)               |     a0 = *(v0);
    0x00001ea0 addiu a2, zero, 5         |     a2 = 5;
    0x00001ea4 sw gp, 0x10(sp)           |     *(var_10h) = gp;
    0x00001ea8 sw ra, 0x1c(sp)           |     *(var_1ch) = ra;
    0x00001eac addiu a1, a1, 0x2e74      |     a1 += str.Usage:_n_thtpasswd___cimBdpsDv____C_cost__passwordfile_username_n_thtpasswd__b_cmBdpsDv____C_cost__passwordfile_username_password_n_n_thtpasswd__n_imBdps____C_cost__username_n_thtpasswd__nb_mBdps____C_cost__username_password_n__c__Create_a_new_file._n__n__Dont_update_file__display_results_on_stdout._n__b__Use_the_password_from_the_command_line_rather_than_prompting_for_it._n__i__Read_password_from_stdin_without_verification__for_script_usage_._n__m__Force_MD5_encryption_of_the_password__;
    0x00001eb0 jalr t9                   |     t9 ();
    0x00001eb4 lw gp, 0x10(sp)           |     gp = *(var_10h);
    0x00001eb8 lw t9, -0x7f28(gp)        |     t9 = sym.imp.exit;
    0x00001ebc addiu a0, zero, 2         |     a0 = 2;
    0x00001ec0 jalr t9                   |     return t9 ();
                                         | }
    ; assembly                           | /* r2dec pseudo code output */
                                         | /* /logs/firmware/unblob_extracted/firmware_extract/4325012-58052244.squashfs_v4_le_extract/usr/bin/htpasswd @ 0x10d0 */
                                         | #include <stdint.h>
                                         |  
    ; (fcn) main ()                      | int32_t main () {
                                         |     /* [13] -r-x section size 6800 named .text */
    0x000010d0 lui gp, 2                 |     
    0x000010d4 addiu gp, gp, -0x50c0     |     
    0x000010d8 addu gp, gp, t9           |     gp += t9;
    0x000010dc lw v1, -0x7fd8(gp)        |     v1 = *((gp - 8182));
    0x000010e0 lw a2, -0x7f04(gp)        |     a2 = *((gp - 8129));
    0x000010e4 addiu v0, v1, 0x35f0      |     v0 = v1 + str.htpasswd.tmp.XXXXXX;
    0x000010e8 addiu sp, sp, -0x310      |     
    0x000010ec lw t1, 0x35f0(v1)         |     t1 = *(v1);
    0x000010f0 lw t2, (a2)               |     t2 = *(a2);
    0x000010f4 lw t0, 4(v0)              |     t0 = *((v0 + 1));
    0x000010f8 lw v1, 0xc(v0)            |     v1 = *((v0 + 3));
    0x000010fc lw a3, 8(v0)              |     a3 = *((v0 + 2));
    0x00001100 lw v0, 0x10(v0)           |     v0 = *((v0 + 4));
    0x00001104 lw t9, -0x7ef0(gp)        |     t9 = sym.imp.apr_app_initialize;
    0x00001108 sw gp, 0x18(sp)           |     *(var_18h) = gp;
    0x0000110c sw ra, 0x30c(sp)          |     *(var_30ch) = ra;
    0x00001110 sw t2, 0x2e4(sp)          |     *(var_2e4h) = t2;
    0x00001114 sw t1, 0xd0(sp)           |     *(var_d0h) = t1;
    0x00001118 sw t0, 0xd4(sp)           |     *(var_d4h) = t0;
    0x0000111c sw v1, 0xdc(sp)           |     *(var_dch) = v1;
    0x00001120 sw a3, 0xd8(sp)           |     *(var_d8h) = a3;
    0x00001124 sw s0, 0x2e8(sp)          |     *(var_2e8h) = s0;
    0x00001128 sw a2, 0x30(sp)           |     *(var_30h) = a2;
    0x0000112c sw a0, 0x310(sp)          |     *(arg_310h) = a0;
    0x00001130 move a2, zero             |     a2 = 0;
    0x00001134 sw a1, 0x34(sp)           |     *(var_34h) = a1;
    0x00001138 addiu a0, sp, 0x310       |     a0 = sp + 0x310;
    0x0000113c addiu a1, sp, 0x34        |     a1 = sp + 0x34;
    0x00001140 sw v0, 0xe0(sp)           |     *(var_e0h) = v0;
    0x00001144 sw fp, 0x308(sp)          |     *(var_308h) = fp;
    0x00001148 sw s7, 0x304(sp)          |     *(var_304h) = s7;
    0x0000114c sw s6, 0x300(sp)          |     *(var_300h) = s6;
    0x00001150 sw s5, 0x2fc(sp)          |     *(var_2fch) = s5;
    0x00001154 sw s4, 0x2f8(sp)          |     *(var_2f8h) = s4;
    0x00001158 sw s3, 0x2f4(sp)          |     *(var_2f4h) = s3;
    0x0000115c sw s2, 0x2f0(sp)          |     *(var_2f0h) = s2;
    0x00001160 sw s1, 0x2ec(sp)          |     *(var_2ech) = s1;
    0x00001164 sw zero, 0x3c(sp)         |     *(var_3ch) = 0;
    0x00001168 sw zero, 0x48(sp)         |     *(var_48h) = 0;
    0x0000116c sw zero, 0x4c(sp)         |     *(var_4ch) = 0;
    0x00001170 sw zero, 0x50(sp)         |     *(var_50h) = 0;
    0x00001174 sw zero, 0x54(sp)         |     *(var_54h) = 0;
    0x00001178 sw zero, 0x58(sp)         |     *(var_58h) = 0;
    0x0000117c sw zero, 0x5c(sp)         |     *(var_5ch) = 0;
    0x00001180 sw zero, 0x60(sp)         |     *(var_60h) = 0;
    0x00001184 sw zero, 0x64(sp)         |     *(var_64h) = 0;
    0x00001188 jalr t9                   |     t9 ();
    0x0000118c lw gp, 0x18(sp)           |     gp = *(var_18h);
    0x00001190 addiu s0, sp, 0x44        |     s0 = sp + 0x44;
    0x00001194 lw a0, -0x7fd8(gp)        |     a0 = *((gp - 8182));
    0x00001198 lw t9, -0x7fd4(gp)        |     t9 = *(gp);
    0x0000119c addiu a0, a0, 0x1f54      |     a0 += 0x1f54;
    0x000011a0 bal 0x2b40                |     fcn_00002b40 ();
    0x000011a4 lw gp, 0x18(sp)           |     gp = *(var_18h);
    0x000011a8 move a3, zero             |     a3 = 0;
    0x000011ac move a2, zero             |     a2 = 0;
    0x000011b0 lw t9, -0x7efc(gp)        |     t9 = sym.imp.apr_pool_create_ex;
    0x000011b4 move a1, zero             |     a1 = 0;
    0x000011b8 addiu a0, sp, 0x40        |     a0 = sp + 0x40;
    0x000011bc jalr t9                   |     t9 ();
    0x000011c0 lw gp, 0x18(sp)           |     gp = *(var_18h);
    0x000011c4 lw a1, 0x40(sp)           |     a1 = *(var_40h);
    0x000011c8 lw t9, -0x7f00(gp)        |     t9 = sym.imp.apr_pool_abort_set;
    0x000011cc lw a0, -0x7fd0(gp)        |     a0 = sym.abort_on_oom;
    0x000011d0 sw s0, 0x2c(sp)           |     *(var_2ch) = s0;
    0x000011d4 jalr t9                   |     t9 ();
    0x000011d8 lw gp, 0x18(sp)           |     gp = *(var_18h);
    0x000011dc lw t9, -0x7f0c(gp)        |     t9 = sym.imp.apr_file_open_stderr;
    0x000011e0 lw a0, -0x7fdc(gp)        |     a0 = *(gp);
    0x000011e4 lw a1, 0x40(sp)           |     a1 = *(var_40h);
    0x000011e8 jalr t9                   |     t9 ();
    0x000011ec lw gp, 0x18(sp)           |     gp = *(var_18h);
    0x000011f0 lw v0, 0x40(sp)           |     v0 = *(var_40h);
    0x000011f4 lw v1, 0x34(sp)           |     v1 = *(var_34h);
    0x000011f8 lw a2, 0x310(sp)          |     a2 = *(arg_310h);
    0x000011fc sw v0, 0x20(sp)           |     *(var_20h) = v0;
    0x00001200 lw t9, -0x7ed0(gp)        |     t9 = sym.imp.apr_getopt_init;
    0x00001204 move a1, v0               |     a1 = v0;
    0x00001208 sw v0, 0x48(sp)           |     *(var_48h) = v0;
    0x0000120c addiu v0, zero, 2         |     v0 = 2;
    0x00001210 sw a2, 0x28(sp)           |     *(var_28h) = a2;
    0x00001214 sw v1, 0x24(sp)           |     *(var_24h) = v1;
    0x00001218 move a3, v1               |     a3 = v1;
    0x0000121c move a0, s0               |     a0 = s0;
    0x00001220 sw v0, 0x5c(sp)           |     *(var_5ch) = v0;
    0x00001224 jalr t9                   |     t9 ();
    0x00001228 lw gp, 0x18(sp)           |     gp = *(var_18h);
                                         |     if (v0 != 0) {
    0x0000122c bnez v0, 0x1a84           |         goto label_18;
                                         |     }
    0x00001230 lw s1, -0x7fd8(gp)        |     s1 = *((gp - 8182));
    0x00001234 move s0, zero             |     s0 = 0;
    0x00001238 addiu s6, zero, 2         |     s6 = 2;
    0x0000123c addiu s2, sp, 0x68        |     s2 = sp + 0x68;
    0x00001240 addiu s7, sp, 0x3b        |     s7 = sp + 0x3b;
    0x00001244 addiu s1, s1, 0x32c4      |     s1 += str.cnmspdBbDiC:v;
    0x00001248 addiu s5, zero, 0x63      |     s5 = 0x63;
    0x0000124c addiu fp, sp, 0x48        |     fp = sp + 0x48;
    0x00001250 addiu s4, zero, 0x6e      |     s4 = 0x6e;
    0x00001254 addiu s3, zero, 0x76      |     s3 = 0x76;
                                         |     do {
                                         | label_0:
    0x00001258 lw t9, -0x7f88(gp)        |         t9 = sym.imp.apr_getopt;
    0x0000125c lw a0, 0x44(sp)           |         a0 = *(var_44h);
    0x00001260 move a3, s2               |         a3 = s2;
    0x00001264 move a2, s7               |         a2 = s7;
    0x00001268 move a1, s1               |         a1 = s1;
    0x0000126c jalr t9                   |         t9 ();
    0x00001270 lw gp, 0x18(sp)           |         gp = *(var_18h);
                                         |         if (v0 != 0) {
    0x00001274 bnez v0, 0x1314           |             goto label_19;
                                         |         }
    0x00001278 lb a1, 0x3b(sp)           |         a1 = *(var_3bh);
    0x0000127c slti v0, a1, 0x64         |         v0 = (a1 < 0x64) ? 1 : 0;
                                         |         if (a1 == s5) {
    0x00001280 beq a1, s5, 0x12b4        |             goto label_20;
                                         |         }
    0x00001284 addiu v0, zero, 0x44      |         v0 = 0x44;
                                         |         if (v0 == 0) {
    0x00001288 bnel v0, zero, 0x12a4     |             goto label_21;
                                         |         }
                                         |         if (a1 == s4) {
    0x0000128c beql a1, s4, 0x130c       |             goto label_22;
                                         |         }
    0x00001290 addiu s6, s6, -1          |         s6 += -1;
    0x00001294 lw t9, -0x7fcc(gp)        |         t9 = sym.parse_common_options;
                                         |         if (a1 != s3) {
    0x00001298 bne a1, s3, 0x12bc        |             goto label_23;
                                         |         }
    0x0000129c ori s0, s0, 8             |         s0 |= 8;
    0x000012a0 b 0x1258                  |         
                                         |     } while (1);
                                         | label_21:
    0x000012a4 lw t9, -0x7fcc(gp)        |     t9 = sym.parse_common_options;
                                         |     if (a1 == v0) {
    0x000012a8 bne a1, v0, 0x12bc        |         
    0x000012ac ori s0, s0, 4             |         s0 |= 4;
    0x000012b0 b 0x1258                  |         goto label_0;
                                         | label_20:
    0x000012b4 ori s0, s0, 1             |         s0 |= 1;
    0x000012b8 b 0x1258                  |         goto label_0;
                                         |     }
                                         | label_23:
    0x000012bc lw a2, 0x68(sp)           |     a2 = *(var_68h);
    0x000012c0 move a0, fp               |     a0 = fp;
    0x000012c4 bal 0x290c                |     sym_parse_common_options ();
    0x000012c8 lw gp, 0x18(sp)           |     gp = *(var_18h);
                                         |     if (v0 == 0) {
    0x000012cc beqz v0, 0x1258           |         goto label_0;
                                         |     }
    0x000012d0 sw v0, 0x20(sp)           |     *(var_20h) = v0;
    0x000012d4 lw v0, -0x7fdc(gp)        |     v0 = *(gp);
    0x000012d8 lw a1, -0x7fd8(gp)        |     a1 = *((gp - 8182));
    0x000012dc lw t9, -0x7f84(gp)        |     t9 = sym.imp.apr_file_printf
    0x000012e0 lw a0, (v0)               |     a0 = *(v0);
    0x000012e4 lw v0, 0x24(sp)           |     v0 = *(var_24h);
    0x000012e8 lw a3, 0x4c(sp)           |     a3 = *(var_4ch);
    0x000012ec addiu a1, a1, 0x32bc      |     a1 += str._s:__s_n;
    0x000012f0 lw a2, (v0)               |     a2 = *(v0);
    0x000012f4 jalr t9                   |     t9 ();
    0x000012f8 lw gp, 0x18(sp)           |     gp = *(var_18h);
    0x000012fc lw t0, 0x20(sp)           |     t0 = *(var_20h);
    0x00001300 lw t9, -0x7f28(gp)        |     t9 = sym.imp.exit;
    0x00001304 move a0, t0               |     a0 = t0;
    0x00001308 jalr t9                   |     t9 ();
                                         | label_22:
    0x0000130c ori s0, s0, 2             |     s0 |= 2;
    0x00001310 b 0x1258                  |     goto label_0;
                                         | label_19:
    0x00001314 lw a0, 0x64(sp)           |     a0 = *(var_64h);
    0x00001318 addiu v1, zero, 1         |     v1 = 1;
                                         |     if (a0 != v1) {
    0x0000131c beql a0, v1, 0x1324       |         
    0x00001320 addiu s6, s6, 1           |         s6++;
                                         |     }
    0x00001324 lui v1, 1                 |     v1 = 0x1117e;
    0x00001328 addiu v1, v1, 0x117e      |     
    0x0000132c addiu v0, s0, -1          |     v0 = s0 + -1;
                                         |     if (v0 != v1) {
    0x00001330 bne v0, v1, 0x1bb4        |         goto label_24;
                                         |     }
    0x00001334 and v0, v0, s0            |     v0 &= s0;
    0x00001338 andi s4, s0, 8            |     s4 = s0 & 8;
                                         |     if (v0 != 0) {
    0x0000133c bnez v0, 0x1a60           |         goto label_25;
                                         |     }
    0x00001340 lw v0, 0x44(sp)           |     v0 = *(var_44h);
                                         |     if (s4 != 0) {
    0x00001344 beqz s4, 0x135c           |         
    0x00001348 lw s1, 0xc(v0)            |         s1 = *((v0 + 3));
                                         |         if (a0 == 0) {
    0x0000134c bnel a0, zero, 0x1360     |             goto label_26;
                                         |         }
    0x00001350 addiu v0, zero, 3         |         v0 = 3;
    0x00001354 sw v0, 0x64(sp)           |         *(var_64h) = v0;
    0x00001358 lw v0, 0x44(sp)           |         v0 = *(var_44h);
                                         |     }
    0x0000135c lw s1, 0xc(v0)            |     s1 = *((v0 + 3));
                                         | label_26:
    0x00001360 lw v0, 0x28(sp)           |     v0 = *(var_28h);
    0x00001364 subu v0, v0, s1           |     __asm ("subu v0, v0, s1");
    0x00001368 andi s5, s0, 2            |     s5 = s0 & 2;
                                         |     if (v0 != s6) {
    0x0000136c bne v0, s6, 0x1bb4        |         goto label_24;
                                         |     }
    0x00001370 lw v0, 0x24(sp)           |     v0 = *(var_24h);
                                         |     if (s5 == 0) {
    0x00001374 beqz s5, 0x1434           |         goto label_27;
                                         |     }
    0x00001378 sw zero, 0x28(sp)         |     *(var_28h) = 0;
                                         |     do {
    0x0000137c lw v0, 0x24(sp)           |         v0 = *(var_24h);
    0x00001380 sll s1, s1, 2             |         s1 <<= 2;
    0x00001384 addu s1, v0, s1           |         s1 = v0 + s1;
    0x00001388 lw t9, -0x7f38(gp)        |         t9 = sym.imp.strlen;
    0x0000138c lw s3, (s1)               |         s3 = *(s1);
    0x00001390 move a0, s3               |         a0 = s3;
    0x00001394 jalr t9                   |         t9 ();
    0x00001398 sltiu v0, v0, 0x100       |         v0 = (v0 < 0x100) ? 1 : 0;
    0x0000139c lw gp, 0x18(sp)           |         gp = *(var_18h);
                                         |         if (v0 == 0) {
    0x000013a0 beqz v0, 0x1a90           |             goto label_28;
                                         |         }
    0x000013a4 lw t9, -0x7f30(gp)        |         t9 = sym.imp.apr_pstrdup;
    0x000013a8 lw a0, 0x20(sp)           |         a0 = *(var_20h);
    0x000013ac move a1, s3               |         a1 = s3;
    0x000013b0 jalr t9                   |         t9 ();
    0x000013b4 lw gp, 0x18(sp)           |         gp = *(var_18h);
    0x000013b8 addiu a1, zero, 0x3a      |         a1 = 0x3a;
    0x000013bc move a0, v0               |         a0 = v0;
    0x000013c0 lw t9, -0x7f34(gp)        |         t9 = sym.imp.strchr;
    0x000013c4 move s3, v0               |         s3 = v0;
    0x000013c8 jalr t9                   |         t9 ();
    0x000013cc lw gp, 0x18(sp)           |         gp = *(var_18h);
                                         |         if (v0 != 0) {
    0x000013d0 bnez v0, 0x1ac8           |             goto label_29;
                                         |         }
    0x000013d4 lw v1, 0x64(sp)           |         v1 = *(var_64h);
    0x000013d8 addiu v0, zero, 1         |         v0 = 1;
                                         |         if (v1 == v0) {
    0x000013dc beql v1, v0, 0x1474       |             goto label_30;
                                         |         }
    0x000013e0 lw s1, 4(s1)              |         s1 = *((s1 + 1));
                                         | label_1:
    0x000013e4 lw t9, -0x7f5c(gp)        |         t9 = sym.imp.apr_stat;
                                         |         if (s5 == 0) {
    0x000013e8 beqz s5, 0x14a8           |             goto label_31;
                                         |         }
                                         | label_2:
    0x000013ec andi v0, s0, 0xc          |         v0 = s0 & 0xc;
                                         |         if (v0 == 0) {
    0x000013f0 beql v0, zero, 0x1558     |             goto label_13;
                                         |         }
    0x000013f4 move s1, zero             |         s1 = 0;
    0x000013f8 lw v0, -0x7fdc(gp)        |         v0 = *(gp);
                                         |         if (s4 == 0) {
    0x000013fc beqz s4, 0x15bc           |             goto label_32;
                                         |         }
    0x00001400 andi s0, s0, 4            |         s0 &= 4;
    0x00001404 lw a0, (v0)               |         a0 = *(v0);
                                         |         if (s0 == 0) {
    0x00001408 beqz s0, 0x1afc           |             goto label_33;
                                         |         }
                                         | label_3:
    0x0000140c lw a1, -0x7fd8(gp)        |         a1 = *((gp - 8182));
    0x00001410 lw t9, -0x7f84(gp)        |         t9 = sym.imp.apr_file_printf
    0x00001414 move a2, s3               |         a2 = s3;
    0x00001418 addiu a1, a1, 0x357c      |         a1 += str.User__s_not_found_n;
                                         | label_10:
    0x0000141c jalr t9                   |         t9 ();
    0x00001420 nop                       |         
    0x00001424 lw gp, 0x18(sp)           |         gp = *(var_18h);
    0x00001428 lw t9, -0x7f28(gp)        |         t9 = sym.imp.exit;
    0x0000142c move a0, zero             |         a0 = 0;
    0x00001430 jalr t9                   |         t9 ();
                                         | label_27:
    0x00001434 sll s3, s1, 2             |         s3 = s1 << 2;
    0x00001438 lw t9, -0x7f38(gp)        |         t9 = sym.imp.strlen;
    0x0000143c lwx s3, s3(v0)            |         __asm ("lwx s3, s3(v0)");
    0x00001440 move a0, s3               |         a0 = s3;
    0x00001444 jalr t9                   |         t9 ();
    0x00001448 sltiu v0, v0, 0x1000      |         v0 = (v0 < 0x1000) ? 1 : 0;
    0x0000144c lw gp, 0x18(sp)           |         gp = *(var_18h);
                                         |         if (v0 == 0) {
    0x00001450 beqz v0, 0x1b20           |             goto label_34;
                                         |         }
    0x00001454 lw t9, -0x7f30(gp)        |         t9 = sym.imp.apr_pstrdup;
    0x00001458 lw a0, 0x20(sp)           |         a0 = *(var_20h);
    0x0000145c move a1, s3               |         a1 = s3;
    0x00001460 jalr t9                   |         t9 ();
    0x00001464 addiu s1, s1, 1           |         s1++;
    0x00001468 lw gp, 0x18(sp)           |         gp = *(var_18h);
    0x0000146c sw v0, 0x28(sp)           |         *(var_28h) = v0;
    0x00001470 b 0x137c                  |         
                                         |     } while (1);
                                         | label_30:
    0x00001474 lw t9, -0x7f38(gp)        |     t9 = sym.imp.strlen;
    0x00001478 move a0, s1               |     a0 = s1;
    0x0000147c jalr t9                   |     t9 ();
    0x00001480 sltiu v0, v0, 0x100       |     v0 = (v0 < 0x100) ? 1 : 0;
    0x00001484 lw gp, 0x18(sp)           |     gp = *(var_18h);
                                         |     if (v0 == 0) {
    0x00001488 beqz v0, 0x1bc4           |         goto label_35;
                                         |     }
    0x0000148c lw t9, -0x7f30(gp)        |     t9 = sym.imp.apr_pstrdup;
    0x00001490 lw a0, 0x20(sp)           |     a0 = *(var_20h);
    0x00001494 move a1, s1               |     a1 = s1;
    0x00001498 jalr t9                   |     t9 ();
    0x0000149c sw v0, 0x58(sp)           |     *(var_58h) = v0;
    0x000014a0 lw gp, 0x18(sp)           |     gp = *(var_18h);
    0x000014a4 b 0x13e4                  |     goto label_1;
                                         | label_31:
    0x000014a8 lw a3, 0x40(sp)           |     a3 = *(var_40h);
    0x000014ac lw a1, 0x28(sp)           |     a1 = *(var_28h);
    0x000014b0 ori a2, zero, 0x8000      |     a2 = 0x8000;
    0x000014b4 move a0, s2               |     a0 = s2;
    0x000014b8 jalr t9                   |     t9 ();
    0x000014bc lw gp, 0x18(sp)           |     gp = *(var_18h);
                                         |     if (v0 == 0) {
    0x000014c0 bnez v0, 0x150c           |         
    0x000014c4 lw v1, 0x74(sp)           |         v1 = *(var_74h);
    0x000014c8 addiu v0, zero, 1         |         v0 = 1;
    0x000014cc andi v0, s0, 1            |         v0 = s0 & 1;
                                         |         if (v1 != v0) {
    0x000014d0 bne v1, v0, 0x1510        |             goto label_36;
                                         |         }
    0x000014d4 lw a0, 0x40(sp)           |         a0 = *(var_40h);
                                         |         if (s4 == 0) {
    0x000014d8 beqz s4, 0x1a1c           |             goto label_37;
                                         |         }
    0x000014dc lw t9, -0x7fd8(gp)        |         t9 = *((gp - 8182));
    0x000014e0 lw a1, 0x28(sp)           |         a1 = *(var_28h);
    0x000014e4 addiu t9, t9, 0x1ec4      |         t9 += fcn.00001ec4;
    0x000014e8 addiu a2, zero, 1         |         a2 = 1;
    0x000014ec bal 0x1ec4                |         fcn_00001ec4 ();
    0x000014f0 lw gp, 0x18(sp)           |         gp = *(var_18h);
                                         |         if (v0 == 0) {
    0x000014f4 beqz v0, 0x1c3c           |             goto label_38;
                                         |         }
    0x000014f8 andi v0, s0, 0xc          |         v0 = s0 & 0xc;
    0x000014fc andi v0, s0, 1            |         v0 = s0 & 1;
                                         |         if (v0 != 0) {
    0x00001500 bnez v0, 0x1624           |             goto label_39;
                                         |         }
    0x00001504 addiu s1, zero, 1         |         s1 = 1;
    0x00001508 b 0x1558                  |         goto label_13;
                                         |     }
    0x0000150c andi v0, s0, 1            |     v0 = s0 & 1;
                                         | label_36:
    0x00001510 lw t9, -0x7fd8(gp)        |     t9 = *((gp - 8182));
                                         |     if (v0 == 0) {
    0x00001514 beqz v0, 0x1b50           |         goto label_40;
                                         |     }
    0x00001518 lw a0, 0x40(sp)           |     a0 = *(var_40h);
    0x0000151c lw a1, 0x28(sp)           |     a1 = *(var_28h);
    0x00001520 addiu t9, t9, 0x1ec4      |     t9 += fcn.00001ec4;
    0x00001524 addiu a2, zero, 6         |     a2 = 6;
    0x00001528 bal 0x1ec4                |     fcn_00001ec4 ();
    0x0000152c lw gp, 0x18(sp)           |     gp = *(var_18h);
                                         |     if (v0 != 0) {
    0x00001530 bnez v0, 0x13ec           |         goto label_2;
                                         |     }
    0x00001534 lw v0, -0x7fdc(gp)        |     v0 = *(gp);
    0x00001538 lw a1, -0x7fd8(gp)        |     a1 = *((gp - 8182));
    0x0000153c lw t9, -0x7f84(gp)        |     t9 = sym.imp.apr_file_printf
    0x00001540 lw a0, (v0)               |     a0 = *(v0);
    0x00001544 lw v0, 0x34(sp)           |     v0 = *(var_34h);
    0x00001548 lw a3, 0x28(sp)           |     a3 = *(var_28h);
    0x0000154c addiu a1, a1, 0x341c      |     a1 += str._s:_cannot_create_file__s_n;
    0x00001550 lw a2, (v0)               |     a2 = *(v0);
    0x00001554 b 0x1b70                  |     goto label_17;
                                         | label_13:
    0x00001558 lw t9, -0x7fc8(gp)        |     t9 = sym.mkhash;
    0x0000155c addiu v0, zero, 0x100     |     v0 = 0x100;
    0x00001560 addiu s7, sp, 0x1e4       |     s7 = sp + 0x1e4;
    0x00001564 addiu a0, sp, 0x48        |     a0 = sp + 0x48;
    0x00001568 sw s7, 0x50(sp)           |     *(var_50h) = s7;
    0x0000156c sw v0, 0x54(sp)           |     *(var_54h) = v0;
    0x00001570 bal 0x2484                |     sym_mkhash ();
    0x00001574 move fp, v0               |     fp = v0;
    0x00001578 lw gp, 0x18(sp)           |     gp = *(var_18h);
                                         |     if (v0 == 0) {
    0x0000157c beqz v0, 0x1700           |         goto label_41;
                                         |     }
    0x00001580 sw zero, 0x50(sp)         |     *(var_50h) = 0;
    0x00001584 sw zero, 0x54(sp)         |     *(var_54h) = 0;
                                         | label_15:
    0x00001588 lw v0, -0x7fdc(gp)        |     v0 = *(gp);
    0x0000158c lw a1, -0x7fd8(gp)        |     a1 = *((gp - 8182));
    0x00001590 lw t9, -0x7f84(gp)        |     t9 = sym.imp.apr_file_printf
    0x00001594 lw a0, (v0)               |     a0 = *(v0);
    0x00001598 lw v0, 0x34(sp)           |     v0 = *(var_34h);
    0x0000159c lw a3, 0x4c(sp)           |     a3 = *(var_4ch);
    0x000015a0 addiu a1, a1, 0x32bc      |     a1 += str._s:__s_n;
    0x000015a4 lw a2, (v0)               |     a2 = *(v0);
    0x000015a8 jalr t9                   |     t9 ();
    0x000015ac lw gp, 0x18(sp)           |     gp = *(var_18h);
    0x000015b0 lw t9, -0x7f28(gp)        |     t9 = sym.imp.exit;
    0x000015b4 move a0, fp               |     a0 = fp;
    0x000015b8 jalr t9                   |     t9 ();
                                         | label_32:
    0x000015bc move s1, zero             |     s1 = 0;
    0x000015c0 lw t9, -0x7f08(gp)        |     t9 = sym.imp.apr_temp_dir_get;
                                         | label_14:
    0x000015c4 lw a1, 0x40(sp)           |     a1 = *(var_40h);
                                         | label_5:
    0x000015c8 lw a0, 0x2c(sp)           |     a0 = *(var_2ch);
    0x000015cc jalr t9                   |     t9 ();
    0x000015d0 lw gp, 0x18(sp)           |     gp = *(var_18h);
                                         |     if (v0 != 0) {
    0x000015d4 bnez v0, 0x1be8           |         goto label_42;
                                         |     }
    0x000015d8 lw a1, -0x7fd8(gp)        |     a1 = *((gp - 8182));
    0x000015dc lw t9, -0x7f44(gp)        |     t9 = sym.imp.apr_psprintf
    0x000015e0 lw a2, 0x44(sp)           |     a2 = *(var_44h);
    0x000015e4 lw a0, 0x40(sp)           |     a0 = *(var_40h);
    0x000015e8 addiu a3, sp, 0xd0        |     a3 = sp + 0xd0;
    0x000015ec addiu a1, a1, 0x347c      |     a1 += str._s__s;
    0x000015f0 jalr t9                   |     t9 ();
    0x000015f4 lw gp, 0x18(sp)           |     gp = *(var_18h);
    0x000015f8 lw a3, 0x40(sp)           |     a3 = *(var_40h);
    0x000015fc move a2, zero             |     a2 = 0;
    0x00001600 lw t9, -0x7eec(gp)        |     t9 = sym.imp.apr_file_mktemp;
    0x00001604 lw a0, -0x7fc4(gp)        |     a0 = *(gp);
    0x00001608 move a1, v0               |     a1 = v0;
    0x0000160c sw v0, 0x44(sp)           |     *(var_44h) = v0;
    0x00001610 jalr t9                   |     t9 ();
    0x00001614 lw gp, 0x18(sp)           |     gp = *(var_18h);
                                         |     if (v0 != 0) {
    0x00001618 bnez v0, 0x1c18           |         goto label_43;
                                         |     }
                                         | label_4:
    0x0000161c andi v0, s0, 1            |     v0 = s0 & 1;
                                         |     if (s1 != 0) {
    0x00001620 beqz s1, 0x162c           |         
                                         | label_39:
    0x00001624 lw v0, 0x40(sp)           |         v0 = *(var_40h);
                                         |         if (v0 == 0) {
    0x00001628 beqz v0, 0x176c           |             goto label_44;
                                         |         }
                                         |     }
    0x0000162c lw s5, -0x7fdc(gp)        |     s5 = *(gp);
                                         | label_8:
    0x00001630 andi s0, s0, 4            |     s0 &= 4;
    0x00001634 lw a0, (s5)               |     a0 = *(s5);
                                         |     if (s0 != 0) {
    0x00001638 bnez s0, 0x140c           |         goto label_3;
                                         |     }
    0x0000163c lw t9, -0x7f84(gp)        |     t9 = sym.imp.apr_file_printf
                                         |     if (s4 != 0) {
    0x00001640 bnez s4, 0x1afc           |         goto label_33;
                                         |     }
    0x00001644 lw a1, -0x7fd8(gp)        |     a1 = *((gp - 8182));
    0x00001648 addiu a1, a1, 0x3590      |     a1 += str.Adding_;
    0x0000164c jalr t9                   |     t9 ();
    0x00001650 lw gp, 0x18(sp)           |     gp = *(var_18h);
    0x00001654 lw a1, 0x50(sp)           |     a1 = *(var_50h);
    0x00001658 lw v0, -0x7fc4(gp)        |     v0 = *(gp);
    0x0000165c lw t9, -0x7fc0(gp)        |     t9 = sym.putline;
    0x00001660 lw a0, (v0)               |     a0 = *(v0);
    0x00001664 bal 0x213c                |     sym_putline ();
    0x00001668 lw gp, 0x18(sp)           |     gp = *(var_18h);
                                         | label_9:
    0x0000166c lw a1, -0x7fd8(gp)        |     a1 = *((gp - 8182));
    0x00001670 lw t9, -0x7f84(gp)        |     t9 = sym.imp.apr_file_printf
    0x00001674 lw a0, (s5)               |     a0 = *(s5);
    0x00001678 move a2, s3               |     a2 = s3;
    0x0000167c addiu a1, a1, 0x35b8      |     a1 += str.password_for_user__s_n;
    0x00001680 jalr t9                   |     t9 ();
    0x00001684 lw gp, 0x18(sp)           |     gp = *(var_18h);
    0x00001688 lw a3, 0x40(sp)           |     a3 = *(var_40h);
    0x0000168c lw a0, 0x44(sp)           |     a0 = *(var_44h);
    0x00001690 lw t9, -0x7f90(gp)        |     t9 = sym.imp.apr_file_copy;
    0x00001694 lw a1, 0x28(sp)           |     a1 = *(var_28h);
    0x00001698 addiu a2, zero, 0xfff     |     a2 = 0xfff;
    0x0000169c jalr t9                   |     t9 ();
    0x000016a0 lw gp, 0x18(sp)           |     gp = *(var_18h);
                                         |     if (v0 != 0) {
    0x000016a4 bnez v0, 0x1b88           |         goto label_45;
                                         |     }
    0x000016a8 lw v0, -0x7fc4(gp)        |     v0 = *(gp);
    0x000016ac lw t9, -0x7f2c(gp)        |     t9 = sym.imp.apr_file_close;
    0x000016b0 lw a0, (v0)               |     a0 = *(v0);
    0x000016b4 jalr t9                   |     t9 ();
    0x000016b8 lw v0, 0x30(sp)           |     v0 = *(var_30h);
    0x000016bc lw a0, 0x2e4(sp)          |     a0 = *(var_2e4h);
    0x000016c0 lw gp, 0x18(sp)           |     gp = *(var_18h);
    0x000016c4 lw v1, (v0)               |     v1 = *(v0);
    0x000016c8 move v0, zero             |     v0 = 0;
                                         |     if (a0 != v1) {
    0x000016cc bne a0, v1, 0x1ba8        |         goto label_46;
                                         |     }
    0x000016d0 lw ra, 0x30c(sp)          |     ra = *(var_30ch);
    0x000016d4 lw fp, 0x308(sp)          |     fp = *(var_308h);
    0x000016d8 lw s7, 0x304(sp)          |     s7 = *(var_304h);
    0x000016dc lw s6, 0x300(sp)          |     s6 = *(var_300h);
    0x000016e0 lw s5, 0x2fc(sp)          |     s5 = *(var_2fch);
    0x000016e4 lw s4, 0x2f8(sp)          |     s4 = *(var_2f8h);
    0x000016e8 lw s3, 0x2f4(sp)          |     s3 = *(var_2f4h);
    0x000016ec lw s2, 0x2f0(sp)          |     s2 = *(var_2f0h);
    0x000016f0 lw s1, 0x2ec(sp)          |     s1 = *(var_2ech);
    0x000016f4 lw s0, 0x2e8(sp)          |     s0 = *(var_2e8h);
    0x000016f8 addiu sp, sp, 0x310       |     
    0x000016fc jr ra                     |     return v0;
                                         | label_41:
    0x00001700 lw v0, -0x7fd8(gp)        |     v0 = *((gp - 8182));
    0x00001704 lw a2, -0x7fd8(gp)        |     a2 = *((gp - 8182));
    0x00001708 lw t9, -0x7f6c(gp)        |     t9 = sym.imp.apr_pstrcat;
    0x0000170c lw a0, 0x48(sp)           |     a0 = *(var_48h);
    0x00001710 addiu v0, v0, 0x3368      |     v0 += 0x3368;
    0x00001714 move a3, s7               |     a3 = s7;
    0x00001718 addiu a2, a2, 0x3438      |     a2 += 0x3438;
    0x0000171c move a1, s3               |     a1 = s3;
    0x00001720 sw zero, 0x14(sp)         |     *(var_14h) = 0;
    0x00001724 sw v0, 0x10(sp)           |     *(var_10h) = v0;
    0x00001728 jalr t9                   |     t9 ();
    0x0000172c lw gp, 0x18(sp)           |     gp = *(var_18h);
    0x00001730 move a0, v0               |     a0 = v0;
    0x00001734 sw v0, 0x50(sp)           |     *(var_50h) = v0;
    0x00001738 lw t9, -0x7f38(gp)        |     t9 = sym.imp.strlen;
    0x0000173c move s7, v0               |     s7 = v0;
    0x00001740 jalr t9                   |     t9 ();
    0x00001744 sltiu v1, v0, 0x100       |     v1 = (v0 < 0x100) ? 1 : 0;
    0x00001748 lw gp, 0x18(sp)           |     gp = *(var_18h);
    0x0000174c sw v0, 0x54(sp)           |     *(var_54h) = v0;
                                         |     if (v1 == 0) {
    0x00001750 beqz v1, 0x1a4c           |         goto label_47;
                                         |     }
    0x00001754 lw t9, -0x7f1c(gp)        |     t9 = sym.imp.puts;
                                         |     if (s5 != 0) {
    0x00001758 bnez s5, 0x1a04           |         goto label_48;
                                         |     }
    0x0000175c lw t9, -0x7f08(gp)        |     t9 = sym.imp.apr_temp_dir_get;
                                         |     if (s4 != 0) {
    0x00001760 bnez s4, 0x161c           |         goto label_4;
                                         |     }
    0x00001764 lw a1, 0x40(sp)           |     a1 = *(var_40h);
    0x00001768 b 0x15c8                  |     goto label_5;
                                         | label_44:
    0x0000176c lw t9, -0x7f60(gp)        |     t9 = sym.imp.apr_file_open;
    0x00001770 lw a1, 0x28(sp)           |     a1 = *(var_28h);
    0x00001774 sw v0, 0x10(sp)           |     *(var_10h) = v0;
    0x00001778 addiu a3, zero, 0xfff     |     a3 = 0xfff;
    0x0000177c addiu a2, zero, 0x81      |     a2 = 0x81;
    0x00001780 addiu a0, sp, 0x3c        |     a0 = sp + 0x3c;
    0x00001784 jalr t9                   |     t9 ();
    0x00001788 lw gp, 0x18(sp)           |     gp = *(var_18h);
                                         |     if (v0 != 0) {
    0x0000178c bnez v0, 0x1cc8           |         goto label_49;
                                         |     }
    0x00001790 lw v0, -0x7fd8(gp)        |     v0 = *((gp - 8182));
    0x00001794 lw s7, -0x7fd8(gp)        |     s7 = *((gp - 8182));
    0x00001798 sw v0, 0x24(sp)           |     *(var_24h) = v0;
    0x0000179c lw v0, -0x7fd8(gp)        |     v0 = *((gp - 8182));
    0x000017a0 lw s5, -0x7fdc(gp)        |     s5 = *(gp);
    0x000017a4 addiu v0, v0, 0x3570      |     v0 += str.Updating_;
    0x000017a8 sw v0, 0x2c(sp)           |     *(var_2ch) = v0;
    0x000017ac addiu v0, s7, 0x3514      |     v0 = s7 + 0x3514;
    0x000017b0 move s1, zero             |     s1 = 0;
    0x000017b4 addiu fp, sp, 0xe4        |     fp = sp + 0xe4;
    0x000017b8 sw v0, 0x20(sp)           |     *(var_20h) = v0;
                                         | label_6:
    0x000017bc lw t9, -0x7f70(gp)        |     t9 = sym.imp.apr_file_gets;
    0x000017c0 lw a2, 0x3c(sp)           |     a2 = *(var_3ch);
    0x000017c4 addiu a1, zero, 0x100     |     a1 = 0x100;
    0x000017c8 move a0, fp               |     a0 = fp;
    0x000017cc jalr t9                   |     t9 ();
    0x000017d0 lw gp, 0x18(sp)           |     gp = *(var_18h);
                                         |     if (v0 != 0) {
    0x000017d4 bnez v0, 0x1954           |         goto label_50;
                                         |     }
                                         | label_7:
    0x000017d8 lw t9, -0x7f58(gp)        |     t9 = sym.imp.__strcpy_chk;
    0x000017dc addiu s6, sp, 0x1e4       |     s6 = sp + 0x1e4;
    0x000017e0 move a1, fp               |     a1 = fp;
    0x000017e4 addiu a2, zero, 0x100     |     a2 = 0x100;
    0x000017e8 move a0, s6               |     a0 = s6;
    0x000017ec jalr t9                   |     t9 ();
    0x000017f0 lw gp, 0x18(sp)           |     gp = *(var_18h);
    0x000017f4 lw t9, -0x7f94(gp)        |     t9 = sym.imp.__ctype_b_loc;
    0x000017f8 jalr t9                   |     t9 ();
    0x000017fc nop                       |     
    0x00001800 lw a1, (v0)               |     a1 = *(v0);
    0x00001804 lw gp, 0x18(sp)           |     gp = *(var_18h);
                                         |     do {
    0x00001808 lb a0, (s6)               |         a0 = *(s6);
    0x0000180c andi v0, a0, 0xff         |         v0 = a0 & 0xff;
    0x00001810 sll v0, v0, 1             |         v0 <<= 1;
    0x00001814 addu v0, a1, v0           |         v0 = a1 + v0;
    0x00001818 lhu v0, (v0)              |         v0 = *(v0);
    0x0000181c andi v0, v0, 0x2000       |         v0 &= 0x2000;
    0x00001820 addiu s6, s6, 1           |         s6++;
    0x00001824 bnel v0, zero, 0x1808     |         
                                         |     } while (v0 == 0);
    0x00001828 addiu v0, zero, 0x23      |     v0 = 0x23;
                                         |     if (a0 == 0) {
    0x0000182c beqz a0, 0x1920           |         goto label_51;
                                         |     }
    0x00001830 lw t9, -0x7f34(gp)        |     t9 = sym.imp.strchr;
                                         |     if (a0 == v0) {
    0x00001834 beq a0, v0, 0x1920        |         goto label_51;
                                         |     }
    0x00001838 addiu a1, zero, 0x3a      |     a1 = 0x3a;
    0x0000183c move a0, s6               |     a0 = s6;
    0x00001840 jalr t9                   |     t9 ();
    0x00001844 move s7, v0               |     s7 = v0;
    0x00001848 lw gp, 0x18(sp)           |     gp = *(var_18h);
                                         |     if (v0 == 0) {
    0x0000184c beqz v0, 0x1c88           |         goto label_52;
                                         |     }
    0x00001850 lw t9, -0x7ed4(gp)        |     t9 = sym.imp.strcmp;
    0x00001854 sb zero, (v0)             |     *(v0) = 0;
    0x00001858 move a1, s6               |     a1 = s6;
    0x0000185c move a0, s3               |     a0 = s3;
    0x00001860 jalr t9                   |     t9 ();
    0x00001864 lw gp, 0x18(sp)           |     gp = *(var_18h);
                                         |     if (v0 != 0) {
    0x00001868 bnez v0, 0x1920           |         goto label_51;
                                         |     }
    0x0000186c andi v0, s0, 4            |     v0 = s0 & 4;
    0x00001870 addiu s1, s1, 1           |     s1++;
                                         |     if (v0 != 0) {
    0x00001874 bnez v0, 0x1984           |         goto label_53;
                                         |     }
    0x00001878 lw t9, -0x7ee8(gp)        |     t9 = sym.imp.strcspn;
                                         |     if (s4 == 0) {
    0x0000187c beqz s4, 0x19a0           |         goto label_54;
                                         |     }
    0x00001880 addiu s7, s7, 1           |     s7++;
    0x00001884 lw a1, 0x20(sp)           |     a1 = *(var_20h);
    0x00001888 move a0, s7               |     a0 = s7;
    0x0000188c jalr t9                   |     t9 ();
    0x00001890 lw gp, 0x18(sp)           |     gp = *(var_18h);
                                         |     if (v0 == 0) {
    0x00001894 beqz v0, 0x1c60           |         goto label_55;
                                         |     }
    0x00001898 addu v0, s7, v0           |     v0 = s7 + v0;
    0x0000189c lw a0, 0x58(sp)           |     a0 = *(var_58h);
    0x000018a0 sb zero, (v0)             |     *(v0) = 0;
                                         |     if (a0 == 0) {
    0x000018a4 beqz a0, 0x19d0           |         goto label_56;
                                         |     }
                                         | label_12:
    0x000018a8 lw t9, -0x7f10(gp)        |     t9 = sym.imp.apr_password_validate;
    0x000018ac move a1, s7               |     a1 = s7;
    0x000018b0 jalr t9                   |     t9 ();
    0x000018b4 sw v0, 0x68(sp)           |     *(var_68h) = v0;
    0x000018b8 lw gp, 0x18(sp)           |     gp = *(var_18h);
                                         |     if (v0 == 0) {
    0x000018bc beqz v0, 0x17bc           |         goto label_6;
                                         |     }
    0x000018c0 lui v1, 1                 |     v1 = 0x11188;
    0x000018c4 addiu v1, v1, 0x1188      |     
    0x000018c8 lw t9, -0x7f44(gp)        |     t9 = sym.imp.apr_psprintf
                                         |     if (v0 == v1) {
    0x000018cc beq v0, v1, 0x19f0        |         goto label_57;
                                         |     }
    0x000018d0 lw a1, -0x7fd8(gp)        |     a1 = *((gp - 8182));
    0x000018d4 lw a0, 0x48(sp)           |     a0 = *(var_48h);
    0x000018d8 move a2, s2               |     a2 = s2;
    0x000018dc addiu a1, a1, 0x3550      |     a1 += str.Could_not_verify_password:__pm;
    0x000018e0 jalr t9                   |     t9 ();
    0x000018e4 lw gp, 0x18(sp)           |     gp = *(var_18h);
    0x000018e8 sw v0, 0x4c(sp)           |     *(var_4ch) = v0;
    0x000018ec addiu v1, zero, 9         |     v1 = 9;
                                         | label_11:
    0x000018f0 lw a1, -0x7fd8(gp)        |     a1 = *((gp - 8182));
    0x000018f4 lw t9, -0x7f84(gp)        |     t9 = sym.imp.apr_file_printf
    0x000018f8 lw a0, (s5)               |     a0 = *(s5);
    0x000018fc lw a2, 0x4c(sp)           |     a2 = *(var_4ch);
    0x00001900 sw v1, 0x20(sp)           |     *(var_20h) = v1;
    0x00001904 addiu a1, a1, 0x32c0      |     a1 += 0x32c0;
    0x00001908 jalr t9                   |     t9 ();
    0x0000190c lw gp, 0x18(sp)           |     gp = *(var_18h);
    0x00001910 lw v1, 0x20(sp)           |     v1 = *(var_20h);
    0x00001914 lw t9, -0x7f28(gp)        |     t9 = sym.imp.exit;
    0x00001918 move a0, v1               |     a0 = v1;
    0x0000191c jalr t9                   |     t9 ();
                                         | label_51:
    0x00001920 lw v0, -0x7fc4(gp)        |     v0 = *(gp);
    0x00001924 lw t9, -0x7fc0(gp)        |     t9 = sym.putline;
    0x00001928 move a1, fp               |     a1 = fp;
    0x0000192c lw a0, (v0)               |     a0 = *(v0);
    0x00001930 bal 0x213c                |     sym_putline ();
    0x00001934 lw gp, 0x18(sp)           |     gp = *(var_18h);
    0x00001938 lw a2, 0x3c(sp)           |     a2 = *(var_3ch);
    0x0000193c addiu a1, zero, 0x100     |     a1 = 0x100;
    0x00001940 lw t9, -0x7f70(gp)        |     t9 = sym.imp.apr_file_gets;
    0x00001944 move a0, fp               |     a0 = fp;
    0x00001948 jalr t9                   |     t9 ();
    0x0000194c lw gp, 0x18(sp)           |     gp = *(var_18h);
                                         |     if (v0 == 0) {
    0x00001950 beqz v0, 0x17d8           |         goto label_7;
                                         |     }
                                         | label_50:
    0x00001954 lw t9, -0x7f2c(gp)        |     t9 = sym.imp.apr_file_close;
    0x00001958 lw a0, 0x3c(sp)           |     a0 = *(var_3ch);
    0x0000195c jalr t9                   |     t9 ();
    0x00001960 lw gp, 0x18(sp)           |     gp = *(var_18h);
                                         |     if (s1 == 0) {
    0x00001964 beqz s1, 0x1630           |         goto label_8;
                                         |     }
    0x00001968 lw a0, (s5)               |     a0 = *(s5);
                                         |     if (s4 == 0) {
    0x0000196c beqz s4, 0x166c           |         goto label_9;
                                         |     }
    0x00001970 lw a1, -0x7fd8(gp)        |     a1 = *((gp - 8182));
    0x00001974 lw t9, -0x7f84(gp)        |     t9 = sym.imp.apr_file_printf
    0x00001978 move a2, s3               |     a2 = s3;
    0x0000197c addiu a1, a1, 0x3598      |     a1 += str.Password_for_user__s_correct._n;
    0x00001980 b 0x141c                  |     goto label_10;
                                         | label_53:
    0x00001984 lw v0, 0x24(sp)           |     v0 = *(var_24h);
    0x00001988 lw t9, -0x7f84(gp)        |     t9 = sym.imp.apr_file_printf
    0x0000198c lw a0, (s5)               |     a0 = *(s5);
    0x00001990 addiu a1, v0, 0x3508      |     a1 = v0 + str.Deleting_;
    0x00001994 jalr t9                   |     t9 ();
    0x00001998 lw gp, 0x18(sp)           |     gp = *(var_18h);
    0x0000199c b 0x17bc                  |     goto label_6;
                                         | label_54:
    0x000019a0 lw t9, -0x7f84(gp)        |     t9 = sym.imp.apr_file_printf
    0x000019a4 lw a0, (s5)               |     a0 = *(s5);
    0x000019a8 lw a1, 0x2c(sp)           |     a1 = *(var_2ch);
    0x000019ac jalr t9                   |     t9 ();
    0x000019b0 lw gp, 0x18(sp)           |     gp = *(var_18h);
    0x000019b4 lw a1, 0x50(sp)           |     a1 = *(var_50h);
    0x000019b8 lw v0, -0x7fc4(gp)        |     v0 = *(gp);
    0x000019bc lw t9, -0x7fc0(gp)        |     t9 = sym.putline;
    0x000019c0 lw a0, (v0)               |     a0 = *(v0);
    0x000019c4 bal 0x213c                |     sym_putline ();
    0x000019c8 lw gp, 0x18(sp)           |     gp = *(var_18h);
    0x000019cc b 0x17bc                  |     goto label_6;
                                         | label_56:
    0x000019d0 lw t9, -0x7fbc(gp)        |     t9 = sym.get_password;
    0x000019d4 addiu a0, sp, 0x48        |     a0 = sp + 0x48;
    0x000019d8 bal 0x21f4                |     sym_get_password ();
    0x000019dc move v1, v0               |     v1 = v0;
    0x000019e0 lw gp, 0x18(sp)           |     gp = *(var_18h);
                                         |     if (v0 != 0) {
    0x000019e4 bnez v0, 0x18f0           |         goto label_11;
                                         |     }
    0x000019e8 lw a0, 0x58(sp)           |     a0 = *(var_58h);
    0x000019ec b 0x18a8                  |     goto label_12;
                                         | label_57:
    0x000019f0 lw v0, -0x7fd8(gp)        |     v0 = *((gp - 8182));
    0x000019f4 addiu v1, zero, 3         |     v1 = 3;
    0x000019f8 addiu v0, v0, 0x3530      |     v0 += str.password_verification_failed;
    0x000019fc sw v0, 0x4c(sp)           |     *(var_4ch) = v0;
    0x00001a00 b 0x18f0                  |     goto label_11;
                                         | label_48:
    0x00001a04 move a0, s7               |     a0 = s7;
    0x00001a08 jalr t9                   |     t9 ();
    0x00001a0c lw gp, 0x18(sp)           |     gp = *(var_18h);
    0x00001a10 lw t9, -0x7f28(gp)        |     t9 = sym.imp.exit;
    0x00001a14 move a0, zero             |     a0 = 0;
    0x00001a18 jalr t9                   |     t9 ();
                                         | label_37:
    0x00001a1c lw t9, -0x7fd8(gp)        |     t9 = *((gp - 8182));
    0x00001a20 lw a1, 0x28(sp)           |     a1 = *(var_28h);
    0x00001a24 addiu t9, t9, 0x1ec4      |     t9 += fcn.00001ec4;
    0x00001a28 addiu a2, zero, 3         |     a2 = 3;
    0x00001a2c bal 0x1ec4                |     fcn_00001ec4 ();
    0x00001a30 lw gp, 0x18(sp)           |     gp = *(var_18h);
                                         |     if (v0 == 0) {
    0x00001a34 beqz v0, 0x1cec           |         goto label_58;
                                         |     }
    0x00001a38 andi v0, s0, 0xc          |     v0 = s0 & 0xc;
    0x00001a3c addiu s1, zero, 1         |     s1 = 1;
                                         |     if (v0 == 0) {
    0x00001a40 beqz v0, 0x1558           |         goto label_13;
                                         |     }
    0x00001a44 lw t9, -0x7f08(gp)        |     t9 = sym.imp.apr_temp_dir_get;
    0x00001a48 b 0x15c4                  |     goto label_14;
                                         | label_47:
    0x00001a4c lw v0, -0x7fd8(gp)        |     v0 = *((gp - 8182));
    0x00001a50 addiu fp, zero, 5         |     fp = 5;
    0x00001a54 addiu v0, v0, 0x343c      |     v0 += str.resultant_record_too_long;
    0x00001a58 sw v0, 0x4c(sp)           |     *(var_4ch) = v0;
    0x00001a5c b 0x1588                  |     goto label_15;
                                         | label_25:
    0x00001a60 lw v0, -0x7fdc(gp)        |     v0 = *(gp);
    0x00001a64 lw a1, -0x7fd8(gp)        |     a1 = *((gp - 8182));
    0x00001a68 lw t9, -0x7f84(gp)        |     t9 = sym.imp.apr_file_printf
    0x00001a6c lw a0, (v0)               |     a0 = *(v0);
    0x00001a70 lw v0, 0x24(sp)           |     v0 = *(var_24h);
    0x00001a74 addiu a1, a1, 0x32d4      |     a1 += str._s:_only_one_of__c__n__v__D_may_be_specified_n;
    0x00001a78 lw a2, (v0)               |     a2 = *(v0);
    0x00001a7c jalr t9                   |     t9 ();
    0x00001a80 lw gp, 0x18(sp)           |     gp = *(var_18h);
                                         | label_18:
    0x00001a84 lw t9, -0x7f28(gp)        |     t9 = sym.imp.exit;
    0x00001a88 addiu a0, zero, 2         |     a0 = 2;
    0x00001a8c jalr t9                   |     t9 ();
                                         | label_28:
    0x00001a90 lw v0, -0x7fdc(gp)        |     v0 = *(gp);
    0x00001a94 lw a1, -0x7fd8(gp)        |     a1 = *((gp - 8182));
    0x00001a98 lw t9, -0x7f84(gp)        |     t9 = sym.imp.apr_file_printf
    0x00001a9c lw a0, (v0)               |     a0 = *(v0);
    0x00001aa0 lw v0, 0x24(sp)           |     v0 = *(var_24h);
    0x00001aa4 addiu a3, zero, 0xff      |     a3 = 0xff;
    0x00001aa8 addiu a1, a1, 0x331c      |     a1 += str._s:_username_too_long_____d__n;
    0x00001aac lw a2, (v0)               |     a2 = *(v0);
                                         | label_16:
    0x00001ab0 jalr t9                   |     t9 ();
    0x00001ab4 nop                       |     
    0x00001ab8 lw gp, 0x18(sp)           |     gp = *(var_18h);
    0x00001abc lw t9, -0x7f28(gp)        |     t9 = sym.imp.exit;
    0x00001ac0 addiu a0, zero, 5         |     a0 = 5;
    0x00001ac4 jalr t9                   |     t9 ();
                                         | label_29:
    0x00001ac8 lw v1, -0x7fdc(gp)        |     v1 = *(gp);
    0x00001acc lb a3, (v0)               |     a3 = *(v0);
    0x00001ad0 lw v0, 0x24(sp)           |     v0 = *(var_24h);
    0x00001ad4 lw a1, -0x7fd8(gp)        |     a1 = *((gp - 8182));
    0x00001ad8 lw t9, -0x7f84(gp)        |     t9 = sym.imp.apr_file_printf
    0x00001adc lw a0, (v1)               |     a0 = *(v1);
    0x00001ae0 lw a2, (v0)               |     a2 = *(v0);
    0x00001ae4 addiu a1, a1, 0x333c      |     a1 += str._s:_username_contains_illegal_character__c_n;
    0x00001ae8 jalr t9                   |     t9 ();
    0x00001aec lw gp, 0x18(sp)           |     gp = *(var_18h);
    0x00001af0 lw t9, -0x7f28(gp)        |     t9 = sym.imp.exit;
    0x00001af4 addiu a0, zero, 6         |     a0 = 6;
    0x00001af8 jalr t9                   |     t9 ();
                                         | label_33:
    0x00001afc lw a1, -0x7fd8(gp)        |     a1 = *((gp - 8182));
    0x00001b00 lw t9, -0x7f84(gp)        |     t9 = sym.imp.apr_file_printf
    0x00001b04 move a2, s3               |     a2 = s3;
    0x00001b08 addiu a1, a1, 0x357c      |     a1 += str.User__s_not_found_n;
    0x00001b0c jalr t9                   |     t9 ();
    0x00001b10 lw gp, 0x18(sp)           |     gp = *(var_18h);
    0x00001b14 lw t9, -0x7f28(gp)        |     t9 = sym.imp.exit;
    0x00001b18 addiu a0, zero, 6         |     a0 = 6;
    0x00001b1c jalr t9                   |     t9 ();
                                         | label_34:
    0x00001b20 lw v0, -0x7fdc(gp)        |     v0 = *(gp);
    0x00001b24 lw a1, -0x7fd8(gp)        |     a1 = *((gp - 8182));
    0x00001b28 lw t9, -0x7f84(gp)        |     t9 = sym.imp.apr_file_printf
    0x00001b2c lw a0, (v0)               |     a0 = *(v0);
    0x00001b30 lw v0, 0x24(sp)           |     v0 = *(var_24h);
    0x00001b34 addiu a1, a1, 0x3304      |     a1 += str._s:_filename_too_long_n;
    0x00001b38 lw a2, (v0)               |     a2 = *(v0);
    0x00001b3c jalr t9                   |     t9 ();
    0x00001b40 lw gp, 0x18(sp)           |     gp = *(var_18h);
    0x00001b44 lw t9, -0x7f28(gp)        |     t9 = sym.imp.exit;
    0x00001b48 addiu a0, zero, 5         |     a0 = 5;
    0x00001b4c jalr t9                   |     t9 ();
                                         | label_40:
    0x00001b50 lw v0, -0x7fdc(gp)        |     v0 = *(gp);
    0x00001b54 lw a1, -0x7fd8(gp)        |     a1 = *((gp - 8182));
    0x00001b58 lw t9, -0x7f84(gp)        |     t9 = sym.imp.apr_file_printf
    0x00001b5c lw a0, (v0)               |     a0 = *(v0);
    0x00001b60 lw v0, 0x34(sp)           |     v0 = *(var_34h);
    0x00001b64 lw a3, 0x28(sp)           |     a3 = *(var_28h);
    0x00001b68 addiu a1, a1, 0x33e8      |     a1 += str._s:_cannot_modify_file__s__use__c_to_create_it_n;
    0x00001b6c lw a2, (v0)               |     a2 = *(v0);
                                         |     do {
                                         | label_17:
    0x00001b70 jalr t9                   |         t9 ();
    0x00001b74 nop                       |         
    0x00001b78 lw gp, 0x18(sp)           |         gp = *(var_18h);
    0x00001b7c lw t9, -0x7f28(gp)        |         t9 = sym.imp.exit;
    0x00001b80 addiu a0, zero, 1         |         a0 = 1;
    0x00001b84 jalr t9                   |         t9 ();
                                         | label_45:
    0x00001b88 lw v0, 0x34(sp)           |         v0 = *(var_34h);
    0x00001b8c lw a1, -0x7fd8(gp)        |         a1 = *((gp - 8182));
    0x00001b90 lw a0, (s5)               |         a0 = *(s5);
    0x00001b94 lw t9, -0x7f84(gp)        |         t9 = sym.imp.apr_file_printf
    0x00001b98 lw a2, (v0)               |         a2 = *(v0);
    0x00001b9c lw a3, 0x28(sp)           |         a3 = *(var_28h);
    0x00001ba0 addiu a1, a1, 0x35d0      |         a1 += str._s:_unable_to_update_file__s_n;
    0x00001ba4 b 0x1b70                  |         
                                         |     } while (1);
                                         | label_46:
    0x00001ba8 lw t9, -0x7f14(gp)        |     t9 = sym.imp.__stack_chk_fail;
    0x00001bac jalr t9                   |     t9 ();
    0x00001bb0 nop                       |     
                                         | label_24:
    0x00001bb4 lw t9, -0x7fd8(gp)        |     t9 = *((gp - 8182));
    0x00001bb8 addiu t9, t9, 0x1e80      |     t9 += fcn.00001e80;
    0x00001bbc bal 0x1e80                |     fcn_00001e80 ();
    0x00001bc0 nop                       |     
                                         | label_35:
    0x00001bc4 lw v0, -0x7fdc(gp)        |     v0 = *(gp);
    0x00001bc8 lw a1, -0x7fd8(gp)        |     a1 = *((gp - 8182));
    0x00001bcc lw t9, -0x7f84(gp)        |     t9 = sym.imp.apr_file_printf
    0x00001bd0 lw a0, (v0)               |     a0 = *(v0);
    0x00001bd4 lw v0, 0x24(sp)           |     v0 = *(var_24h);
    0x00001bd8 addiu a3, zero, 0x100     |     a3 = 0x100;
    0x00001bdc addiu a1, a1, 0x336c      |     a1 += str._s:_password_too_long_____d__n;
    0x00001be0 lw a2, (v0)               |     a2 = *(v0);
    0x00001be4 b 0x1ab0                  |     goto label_16;
                                         | label_42:
    0x00001be8 lw v0, -0x7fdc(gp)        |     v0 = *(gp);
    0x00001bec lw a1, -0x7fd8(gp)        |     a1 = *((gp - 8182));
    0x00001bf0 lw t9, -0x7f84(gp)        |     t9 = sym.imp.apr_file_printf
    0x00001bf4 lw a0, (v0)               |     a0 = *(v0);
    0x00001bf8 lw v0, 0x34(sp)           |     v0 = *(var_34h);
    0x00001bfc addiu a1, a1, 0x3458      |     a1 += str._s:_could_not_determine_temp_dir_n;
    0x00001c00 lw a2, (v0)               |     a2 = *(v0);
    0x00001c04 jalr t9                   |     t9 ();
    0x00001c08 lw gp, 0x18(sp)           |     gp = *(var_18h);
    0x00001c0c lw t9, -0x7f28(gp)        |     t9 = sym.imp.exit;
    0x00001c10 addiu a0, zero, 1         |     a0 = 1;
    0x00001c14 jalr t9                   |     t9 ();
                                         | label_43:
    0x00001c18 lw v0, -0x7fdc(gp)        |     v0 = *(gp);
    0x00001c1c lw a1, -0x7fd8(gp)        |     a1 = *((gp - 8182));
    0x00001c20 lw t9, -0x7f84(gp)        |     t9 = sym.imp.apr_file_printf
    0x00001c24 lw a0, (v0)               |     a0 = *(v0);
    0x00001c28 lw v0, 0x34(sp)           |     v0 = *(var_34h);
    0x00001c2c lw a3, 0x44(sp)           |     a3 = *(var_44h);
    0x00001c30 addiu a1, a1, 0x3484      |     a1 += str._s:_unable_to_create_temporary_file__s_n;
    0x00001c34 lw a2, (v0)               |     a2 = *(v0);
    0x00001c38 b 0x1b70                  |     goto label_17;
                                         | label_38:
    0x00001c3c lw v0, -0x7fdc(gp)        |     v0 = *(gp);
    0x00001c40 lw a1, -0x7fd8(gp)        |     a1 = *((gp - 8182));
    0x00001c44 lw t9, -0x7f84(gp)        |     t9 = sym.imp.apr_file_printf
    0x00001c48 lw a0, (v0)               |     a0 = *(v0);
    0x00001c4c lw v0, 0x34(sp)           |     v0 = *(var_34h);
    0x00001c50 lw a3, 0x28(sp)           |     a3 = *(var_28h);
    0x00001c54 addiu a1, a1, 0x33bc      |     a1 += str._s:_cannot_open_file__s_for_read_access_n;
    0x00001c58 lw a2, (v0)               |     a2 = *(v0);
    0x00001c5c b 0x1b70                  |     goto label_17;
                                         | label_55:
    0x00001c60 lw a1, -0x7fd8(gp)        |     a1 = *((gp - 8182));
    0x00001c64 lw t9, -0x7f84(gp)        |     t9 = sym.imp.apr_file_printf
    0x00001c68 lw a0, (s5)               |     a0 = *(s5);
    0x00001c6c move a2, s3               |     a2 = s3;
    0x00001c70 addiu a1, a1, 0x3518      |     a1 += str.Empty_hash_for_user__s_n;
    0x00001c74 jalr t9                   |     t9 ();
    0x00001c78 lw gp, 0x18(sp)           |     gp = *(var_18h);
    0x00001c7c lw t9, -0x7f28(gp)        |     t9 = sym.imp.exit;
    0x00001c80 addiu a0, zero, 7         |     a0 = 7;
    0x00001c84 jalr t9                   |     t9 ();
                                         | label_52:
    0x00001c88 lw v0, 0x34(sp)           |     v0 = *(var_34h);
    0x00001c8c lw a1, -0x7fd8(gp)        |     a1 = *((gp - 8182));
    0x00001c90 lw t9, -0x7f84(gp)        |     t9 = sym.imp.apr_file_printf
    0x00001c94 lw a0, (s5)               |     a0 = *(s5);
    0x00001c98 lw a2, (v0)               |     a2 = *(v0);
    0x00001c9c lw a3, 0x28(sp)           |     a3 = *(var_28h);
    0x00001ca0 addiu a1, a1, 0x34c8      |     a1 += str._s:_The_file__s_does_not_appear_to_be_a_valid_htpasswd_file._n;
    0x00001ca4 jalr t9                   |     t9 ();
    0x00001ca8 lw gp, 0x18(sp)           |     gp = *(var_18h);
    0x00001cac lw t9, -0x7f2c(gp)        |     t9 = sym.imp.apr_file_close;
    0x00001cb0 lw a0, 0x3c(sp)           |     a0 = *(var_3ch);
    0x00001cb4 jalr t9                   |     t9 ();
    0x00001cb8 lw gp, 0x18(sp)           |     gp = *(var_18h);
    0x00001cbc lw t9, -0x7f28(gp)        |     t9 = sym.imp.exit;
    0x00001cc0 addiu a0, zero, 7         |     a0 = 7;
    0x00001cc4 jalr t9                   |     t9 ();
                                         | label_49:
    0x00001cc8 lw v0, -0x7fdc(gp)        |     v0 = *(gp);
    0x00001ccc lw a1, -0x7fd8(gp)        |     a1 = *((gp - 8182));
    0x00001cd0 lw t9, -0x7f84(gp)        |     t9 = sym.imp.apr_file_printf
    0x00001cd4 lw a0, (v0)               |     a0 = *(v0);
    0x00001cd8 lw v0, 0x34(sp)           |     v0 = *(var_34h);
    0x00001cdc lw a3, 0x28(sp)           |     a3 = *(var_28h);
    0x00001ce0 addiu a1, a1, 0x34ac      |     a1 += str._s:_unable_to_read_file__s_n;
    0x00001ce4 lw a2, (v0)               |     a2 = *(v0);
    0x00001ce8 b 0x1b70                  |     goto label_17;
                                         | label_58:
    0x00001cec lw v0, -0x7fdc(gp)        |     v0 = *(gp);
    0x00001cf0 lw a1, -0x7fd8(gp)        |     a1 = *((gp - 8182));
    0x00001cf4 lw t9, -0x7f84(gp)        |     t9 = sym.imp.apr_file_printf
    0x00001cf8 lw a0, (v0)               |     a0 = *(v0);
    0x00001cfc lw v0, 0x34(sp)           |     v0 = *(var_34h);
    0x00001d00 lw a3, 0x28(sp)           |     a3 = *(var_28h);
    0x00001d04 addiu a1, a1, 0x338c      |     a1 += str._s:_cannot_open_file__s_for_read_write_access_n;
    0x00001d08 lw a2, (v0)               |     a2 = *(v0);
    0x00001d0c b 0x1b70                  |     goto label_17;
                                         | }
    ; assembly                           | /* r2dec pseudo code output */
                                         | /* /logs/firmware/unblob_extracted/firmware_extract/4325012-58052244.squashfs_v4_le_extract/usr/bin/htpasswd @ 0x2484 */
                                         | #include <stdint.h>
                                         |  
    ; (fcn) sym.mkhash ()                | void mkhash () {
    0x00002484 lui gp, 2                 |     
    0x00002488 addiu gp, gp, -0x6474     |     
    0x0000248c addu gp, gp, t9           |     gp += t9;
    0x00002490 addiu sp, sp, -0x58       |     
    0x00002494 lw v0, 0x18(a0)           |     v0 = *((a0 + 6));
    0x00002498 sw s3, 0x48(sp)           |     *(var_48h) = s3;
    0x0000249c lw s3, -0x7f04(gp)        |     s3 = *((gp - 8129));
    0x000024a0 sw gp, 0x18(sp)           |     *(var_18h_3) = gp;
    0x000024a4 sw s0, 0x3c(sp)           |     *(var_3ch) = s0;
    0x000024a8 lw v1, (s3)               |     v1 = *(s3);
    0x000024ac sw ra, 0x54(sp)           |     *(var_54h) = ra;
    0x000024b0 sw s5, 0x50(sp)           |     *(var_50h) = s5;
    0x000024b4 sw s4, 0x4c(sp)           |     *(var_4ch) = s4;
    0x000024b8 sw s2, 0x44(sp)           |     *(var_44h) = s2;
    0x000024bc sw s1, 0x40(sp)           |     *(var_40h) = s1;
    0x000024c0 move s0, a0               |     s0 = a0;
    0x000024c4 sw v1, 0x34(sp)           |     *(var_34h) = v1;
                                         |     if (v0 != 0) {
    0x000024c8 beql v0, zero, 0x2588     |         
    0x000024cc lw s1, 0x10(s0)           |         s1 = *((s0 + 4));
    0x000024d0 lw v1, 0x14(a0)           |         v1 = *((a0 + 5));
    0x000024d4 addiu v0, zero, 4         |         v0 = 4;
    0x000024d8 lw v0, -0x7fdc(gp)        |         v0 = *(gp);
                                         |         if (v1 == v0) {
    0x000024dc bne v1, v0, 0x256c        |             
    0x000024e0 lw s1, 0x10(a0)           |             s1 = *((a0 + 4));
    0x000024e4 lw t9, -0x7fbc(gp)        |             t9 = sym.get_password;
                                         |             if (s1 == 0) {
    0x000024e8 beqz s1, 0x2718           |                 goto label_2;
                                         |             }
    0x000024ec lw t9, -0x7f7c(gp)        |             t9 = sym.imp.apr_generate_random_bytes;
    0x000024f0 addiu s2, sp, 0x24        |             s2 = sp + 0x24;
    0x000024f4 addiu a1, zero, 0x10      |             a1 = 0x10;
    0x000024f8 move a0, s2               |             a0 = s2;
    0x000024fc jalr t9                   |             t9 ();
    0x00002500 sw v0, 0x20(sp)           |             *(var_20h_2) = v0;
    0x00002504 lw gp, 0x18(sp)           |             gp = *(var_18h_3);
                                         |             if (v0 != 0) {
    0x00002508 bnez v0, 0x2734           |                 goto label_3;
                                         |             }
    0x0000250c lw a1, 0x18(s0)           |             a1 = *((s0 + 6));
    0x00002510 lw v1, 0xc(s0)            |             v1 = *((s0 + 3));
                                         |             if (a1 != 0) {
    0x00002514 bnel a1, zero, 0x2528     |                 
    0x00002518 addiu v0, zero, 5         |                 v0 = 5;
    0x0000251c sw v0, 0x18(s0)           |                 *((s0 + 6)) = v0;
    0x00002520 addiu a1, zero, 5         |                 a1 = 5;
    0x00002524 lw v1, 0xc(s0)            |                 v1 = *((s0 + 3));
                                         |             }
    0x00002528 lw v0, 8(s0)              |             v0 = *((s0 + 2));
    0x0000252c lw t9, -0x7f74(gp)        |             t9 = sym.imp.apr_bcrypt_encode;
    0x00002530 sw v1, 0x14(sp)           |             *(var_14h) = v1;
    0x00002534 sw v0, 0x10(sp)           |             *(var_10h_5) = v0;
    0x00002538 addiu a3, zero, 0x10      |             a3 = 0x10;
    0x0000253c move a2, s2               |             a2 = s2;
    0x00002540 move a0, s1               |             a0 = s1;
    0x00002544 jalr t9                   |             t9 ();
    0x00002548 sw v0, 0x20(sp)           |             *(var_20h_2) = v0;
    0x0000254c lw gp, 0x18(sp)           |             gp = *(var_18h_3);
                                         |             if (v0 != 0) {
    0x00002550 bnez v0, 0x287c           |                 goto label_4;
                                         |             }
    0x00002554 lw t9, -0x7f38(gp)        |             t9 = sym.imp.strlen;
    0x00002558 move a0, s1               |             a0 = s1;
    0x0000255c jalr t9                   |             t9 ();
    0x00002560 move s2, zero             |             s2 = 0;
    0x00002564 lw gp, 0x18(sp)           |             gp = *(var_18h_3);
    0x00002568 b 0x25e0                  |             goto label_1;
                                         |         }
    0x0000256c lw a1, -0x7fd8(gp)        |         a1 = *((gp - 8182));
    0x00002570 lw t9, -0x7f84(gp)        |         t9 = sym.imp.apr_file_printf
    0x00002574 lw a0, (v0)               |         a0 = *(v0);
    0x00002578 addiu a1, a1, 0x36f0      |         a1 += str.Warning:_Ignoring__C_argument_for_this_algorithm._n;
    0x0000257c jalr t9                   |         t9 ();
    0x00002580 lw gp, 0x18(sp)           |         gp = *(var_18h_3);
    0x00002584 lw s1, 0x10(s0)           |         s1 = *((s0 + 4));
                                         |     }
    0x00002588 lw t9, -0x7fbc(gp)        |     t9 = sym.get_password;
                                         |     if (s1 == 0) {
    0x0000258c beqz s1, 0x2718           |         goto label_2;
                                         |     }
                                         | label_0:
    0x00002590 lw s2, 0x14(s0)           |     s2 = *((s0 + 5));
    0x00002594 sltiu v0, s2, 5           |     v0 = (s2 < 5) ? 1 : 0;
    0x00002598 lw v1, -0x7fd8(gp)        |     v1 = *((gp - 8182));
                                         |     if (v0 == 0) {
    0x0000259c beqz v0, 0x28d4           |         goto label_5;
                                         |     }
    0x000025a0 sll v0, s2, 2             |     v0 = s2 << 2;
    0x000025a4 addiu v1, v1, 0x3890      |     v1 += 0x3890;
    0x000025a8 lwx v0, v0(v1)            |     __asm ("lwx v0, v0(v1)");
    0x000025ac addu v0, v0, gp           |     v0 += gp;
    0x000025b0 jr v0                     |     v0 ();
    0x000025b4 nop                       |     
                                         | label_1:
    0x000025e0 lw t9, -0x7f50(gp)        |     t9 = sym.imp.memset;
    0x000025e4 move a2, v0               |     a2 = v0;
    0x000025e8 move a1, zero             |     a1 = 0;
    0x000025ec move a0, s1               |     a0 = s1;
    0x000025f0 jalr t9                   |     t9 ();
    0x000025f4 lw gp, 0x18(sp)           |     gp = *(var_18h_3);
                                         |     do {
    0x000025f8 lw a0, 0x34(sp)           |         a0 = *(var_34h);
    0x000025fc lw v1, (s3)               |         v1 = *(s3);
    0x00002600 move v0, s2               |         v0 = s2;
                                         |         if (a0 != v1) {
    0x00002604 bne a0, v1, 0x2900        |             goto label_6;
                                         |         }
    0x00002608 lw ra, 0x54(sp)           |         ra = *(var_54h);
    0x0000260c lw s5, 0x50(sp)           |         s5 = *(var_50h);
    0x00002610 lw s4, 0x4c(sp)           |         s4 = *(var_4ch);
    0x00002614 lw s3, 0x48(sp)           |         s3 = *(var_48h);
    0x00002618 lw s2, 0x44(sp)           |         s2 = *(var_44h);
    0x0000261c lw s1, 0x40(sp)           |         s1 = *(var_40h);
    0x00002620 lw s0, 0x3c(sp)           |         s0 = *(var_3ch);
    0x00002624 addiu sp, sp, 0x58        |         
    0x00002628 jr ra                     |         return v0;
                                         | label_2:
    0x00002718 move a0, s0               |         a0 = s0;
    0x0000271c bal 0x21f4                |         sym_get_password ();
    0x00002720 move s2, v0               |         s2 = v0;
    0x00002724 lw gp, 0x18(sp)           |         gp = *(var_18h_3);
    0x00002728 bnez v0, 0x25f8           |         
                                         |     } while (v0 != 0);
    0x0000272c lw s1, 0x10(s0)           |     s1 = *((s0 + 4));
    0x00002730 b 0x2590                  |     goto label_0;
                                         | label_3:
    0x00002734 lw a1, -0x7fd8(gp)        |     a1 = *((gp - 8182));
    0x00002738 lw t9, -0x7f44(gp)        |     t9 = sym.imp.apr_psprintf
    0x0000273c lw a0, (s0)               |     a0 = *(s0);
    0x00002740 addiu a2, sp, 0x20        |     a2 = sp + 0x20;
    0x00002744 addiu a1, a1, 0x3604      |     a1 += str.Unable_to_generate_random_bytes:__pm;
    0x00002748 jalr t9                   |     t9 ();
    0x0000274c lw gp, 0x18(sp)           |     gp = *(var_18h_3);
    0x00002750 sw v0, 4(s0)              |     *((s0 + 1)) = v0;
    0x00002754 move a0, s1               |     a0 = s1;
    0x00002758 lw t9, -0x7f38(gp)        |     t9 = sym.imp.strlen;
    0x0000275c addiu s2, zero, 8         |     s2 = 8;
    0x00002760 jalr t9                   |     t9 ();
    0x00002764 lw gp, 0x18(sp)           |     gp = *(var_18h_3);
    0x00002768 b 0x25e0                  |     goto label_1;
                                         | label_4:
    0x0000287c lw a1, -0x7fd8(gp)        |     a1 = *((gp - 8182));
    0x00002880 lw t9, -0x7f44(gp)        |     t9 = sym.imp.apr_psprintf
    0x00002884 lw a0, (s0)               |     a0 = *(s0);
    0x00002888 addiu a2, sp, 0x20        |     a2 = sp + 0x20;
    0x0000288c addiu a1, a1, 0x379c      |     a1 += str.Unable_to_encode_with_bcrypt:__pm;
    0x00002890 jalr t9                   |     t9 ();
    0x00002894 lw gp, 0x18(sp)           |     gp = *(var_18h_3);
    0x00002898 sw v0, 4(s0)              |     *((s0 + 1)) = v0;
    0x0000289c move a0, s1               |     a0 = s1;
    0x000028a0 lw t9, -0x7f38(gp)        |     t9 = sym.imp.strlen;
    0x000028a4 addiu s2, zero, 3         |     s2 = 3;
    0x000028a8 jalr t9                   |     t9 ();
    0x000028ac lw gp, 0x18(sp)           |     gp = *(var_18h_3);
    0x000028b0 b 0x25e0                  |     goto label_1;
                                         | label_5:
    0x000028d4 lw v0, -0x7fdc(gp)        |     v0 = *(gp);
    0x000028d8 lw a1, -0x7fd8(gp)        |     a1 = *((gp - 8182));
    0x000028dc lw t9, -0x7f84(gp)        |     t9 = sym.imp.apr_file_printf
    0x000028e0 lw a0, (v0)               |     a0 = *(v0);
    0x000028e4 move a2, s2               |     a2 = s2;
    0x000028e8 addiu a1, a1, 0x37c0      |     a1 += str.mkhash__:_BUG:_invalid_algorithm__d;
    0x000028ec jalr t9                   |     t9 ();
    0x000028f0 lw gp, 0x18(sp)           |     gp = *(var_18h_3);
    0x000028f4 lw t9, -0x7f80(gp)        |     t9 = sym.imp.abort;
    0x000028f8 jalr t9                   |     t9 ();
    0x000028fc nop                       |     
                                         | label_6:
    0x00002900 lw t9, -0x7f14(gp)        |     t9 = sym.imp.__stack_chk_fail;
    0x00002904 jalr t9                   |     t9 ();
    0x00002908 nop                       |     
                                         | }
    ; assembly                               | /* r2dec pseudo code output */
                                             | /* /logs/firmware/unblob_extracted/firmware_extract/4325012-58052244.squashfs_v4_le_extract/usr/bin/htpasswd @ 0x290c */
                                             | #include <stdint.h>
                                             |  
    ; (fcn) sym.parse_common_options ()      | void parse_common_options () {
    0x0000290c lui gp, 2                     |     
    0x00002910 addiu gp, gp, -0x68fc         |     
    0x00002914 addu gp, gp, t9               |     gp += t9;
    0x00002918 addiu sp, sp, -0x30           |     
    0x0000291c addiu v0, a1, -0x42           |     v0 = a1 + -0x42;
    0x00002920 sw s0, 0x24(sp)               |     *(var_24h_2) = s0;
    0x00002924 lw s0, -0x7f04(gp)            |     s0 = *((gp - 8129));
    0x00002928 andi v0, v0, 0xff             |     v0 &= 0xff;
    0x0000292c sw gp, 0x10(sp)               |     *(var_10h_3) = gp;
    0x00002930 lw a3, (s0)                   |     a3 = *(s0);
    0x00002934 sltiu v1, v0, 0x32            |     v1 = (v0 < 0x32) ? 1 : 0;
    0x00002938 sw ra, 0x2c(sp)               |     *(var_2ch_2) = ra;
    0x0000293c sw s1, 0x28(sp)               |     *(var_28h_2) = s1;
    0x00002940 sw a3, 0x1c(sp)               |     *(var_1ch_2) = a3;
    0x00002944 sll v1, v0, 2                 |     v1 = v0 << 2;
                                             |     if (v1 == 0) {
    0x00002948 beqz v1, 0x2a40               |         goto label_0;
                                             |     }
    0x0000294c lw v0, -0x7fd8(gp)            |     v0 = *((gp - 8182));
    0x00002950 addiu v0, v0, 0x38a4          |     v0 += 0x38a4;
    0x00002954 lwx v0, v1(v0)                |     __asm ("lwx v0, v1(v0)");
    0x00002958 addu v0, v0, gp               |     v0 += gp;
    0x0000295c move s1, a0                   |     s1 = a0;
    0x00002960 jr v0                         |     v0 ();
                                             |     do {
    0x00002970 lw a0, 0x1c(sp)               |         a0 = *(var_1ch_2);
    0x00002974 lw v1, (s0)                   |         v1 = *(s0);
    0x00002978 lw ra, 0x2c(sp)               |         ra = *(var_2ch_2);
                                             |         if (a0 != v1) {
    0x0000297c bne a0, v1, 0x2a80            |             goto label_1;
                                             |         }
    0x00002980 lw s1, 0x28(sp)               |         s1 = *(var_28h_2);
    0x00002984 lw s0, 0x24(sp)               |         s0 = *(var_24h_2);
    0x00002988 addiu sp, sp, 0x30            |         
    0x0000298c jr ra                         |         return v1;
                                             | label_0:
    0x00002a40 lw v0, -0x7fdc(gp)            |         v0 = *(gp);
    0x00002a44 move a2, a1                   |         a2 = a1;
    0x00002a48 lw a1, -0x7fd8(gp)            |         a1 = *((gp - 8182));
    0x00002a4c lw t9, -0x7f84(gp)            |         t9 = sym.imp.apr_file_printf
    0x00002a50 lw a0, (v0)                   |         a0 = *(v0);
    0x00002a54 addiu a1, a1, 0x3860          |         a1 += str.parse_common_options__:_BUG:_invalid_option__c;
    0x00002a58 jalr t9                       |         t9 ();
    0x00002a5c lw gp, 0x10(sp)               |         gp = *(var_10h_3);
    0x00002a60 lw t9, -0x7f80(gp)            |         t9 = sym.imp.abort;
    0x00002a64 jalr t9                       |         t9 ();
    0x00002a68 nop                           |         
    0x00002a6c lw v1, -0x7fd8(gp)            |         v1 = *((gp - 8182));
    0x00002a70 addiu v0, zero, 2             |         v0 = 2;
    0x00002a74 addiu v1, v1, 0x3834          |         v1 += str.argument_to__C_must_be_a_positive_integer;
    0x00002a78 sw v1, 4(s1)                  |         *((s1 + 1)) = v1;
    0x00002a7c b 0x2970                      |         
                                             |     } while (1);
                                             | label_1:
    0x00002a80 lw t9, -0x7f14(gp)            |     t9 = sym.imp.__stack_chk_fail;
    0x00002a84 jalr t9                       |     t9 ();
    0x00002a88 nop                           |     
    0x00002a8c nop                           |     
                                             | }
    ; assembly                           | /* r2dec pseudo code output */
                                         | /* /logs/firmware/unblob_extracted/firmware_extract/4325012-58052244.squashfs_v4_le_extract/usr/bin/htpasswd @ 0x213c */
                                         | #include <stdint.h>
                                         |  
    ; (fcn) sym.putline ()               | void putline () {
    0x0000213c lui gp, 2                 |     
    0x00002140 addiu gp, gp, -0x612c     |     
    0x00002144 addu gp, gp, t9           |     gp += t9;
    0x00002148 addiu sp, sp, -0x30       |     
    0x0000214c sw s0, 0x24(sp)           |     *(var_24h) = s0;
    0x00002150 lw s0, -0x7f04(gp)        |     s0 = *((gp - 8129));
    0x00002154 sw gp, 0x10(sp)           |     *(var_10h) = gp;
    0x00002158 sw s1, 0x28(sp)           |     *(var_28h) = s1;
    0x0000215c lw v0, (s0)               |     v0 = *(s0);
    0x00002160 sw ra, 0x2c(sp)           |     *(var_2ch) = ra;
    0x00002164 move s1, a0               |     s1 = a0;
    0x00002168 sw v0, 0x1c(sp)           |     *(var_1ch) = v0;
    0x0000216c lw t9, -0x7f64(gp)        |     t9 = sym.imp.apr_file_puts;
                                         |     if (a0 != 0) {
    0x00002170 beqz a0, 0x218c           |         
    0x00002174 move a0, a1               |         a0 = a1;
    0x00002178 move a1, s1               |         a1 = s1;
    0x0000217c jalr t9                   |         t9 ();
    0x00002180 sw v0, 0x18(sp)           |         *(var_18h) = v0;
    0x00002184 lw gp, 0x10(sp)           |         gp = *(var_10h);
                                         |         if (v0 != 0) {
    0x00002188 bnez v0, 0x21b8           |             goto label_0;
                                         |         }
                                         |     }
    0x0000218c lw v1, 0x1c(sp)           |     v1 = *(var_1ch);
    0x00002190 lw v0, (s0)               |     v0 = *(s0);
    0x00002194 lw ra, 0x2c(sp)           |     ra = *(var_2ch);
                                         |     if (v1 == v0) {
    0x00002198 bne v1, v0, 0x21ac        |         
    0x0000219c lw s1, 0x28(sp)           |         s1 = *(var_28h);
    0x000021a0 lw s0, 0x24(sp)           |         s0 = *(var_24h);
    0x000021a4 addiu sp, sp, 0x30        |         
    0x000021a8 jr ra                     |         return v0;
                                         |     }
    0x000021ac lw t9, -0x7f14(gp)        |     t9 = sym.imp.__stack_chk_fail;
    0x000021b0 jalr t9                   |     t9 ();
    0x000021b4 nop                       |     
                                         | label_0:
    0x000021b8 lw v0, -0x7fdc(gp)        |     v0 = *(gp);
    0x000021bc lw a1, -0x7fd8(gp)        |     a1 = *((gp - 8182));
    0x000021c0 lw t9, -0x7f84(gp)        |     t9 = sym.imp.apr_file_printf
    0x000021c4 lw a0, (v0)               |     a0 = *(v0);
    0x000021c8 addiu a2, sp, 0x18        |     a2 = sp + 0x18;
    0x000021cc addiu a1, a1, 0x3644      |     a1 += str.Error_writing_temp_file:__pm;
    0x000021d0 jalr t9                   |     t9 ();
    0x000021d4 lw gp, 0x10(sp)           |     gp = *(var_10h);
    0x000021d8 lw t9, -0x7f2c(gp)        |     t9 = sym.imp.apr_file_close;
    0x000021dc move a0, s1               |     a0 = s1;
    0x000021e0 jalr t9                   |     t9 ();
    0x000021e4 lw gp, 0x10(sp)           |     gp = *(var_10h);
    0x000021e8 lw t9, -0x7f28(gp)        |     t9 = sym.imp.exit;
    0x000021ec addiu a0, zero, 1         |     a0 = 1;
    0x000021f0 jalr t9                   |     return t9 ();
                                         | }

[*] Function printf used 35 times htpasswd