[*] Binary protection state of htdbm

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


[*] Function sprintf tear down of htdbm

    ; assembly                           | /* r2dec pseudo code output */
                                         | /* /logs/firmware/unblob_extracted/firmware_extract/4325012-58052244.squashfs_v4_le_extract/usr/bin/htdbm @ 0x2020 */
                                         | #include <stdint.h>
                                         |  
    ; (fcn) fcn.00002020 ()              | void fcn_00002020 () {
    0x00002020 lui gp, 2                 |     
    0x00002024 addiu gp, gp, -0x6010     |     
    0x00002028 addu gp, gp, t9           |     gp += t9;
    0x0000202c addiu sp, sp, -0x58       |     
    0x00002030 lw t9, -0x7f84(gp)        |     t9 = sym.imp.apr_generate_random_bytes;
    0x00002034 sw s1, 0x48(sp)           |     *(var_48h) = s1;
    0x00002038 lw s1, -0x7ee8(gp)        |     s1 = *((gp - 8122));
    0x0000203c sw gp, 0x10(sp)           |     *(var_10h) = gp;
    0x00002040 sw s3, 0x50(sp)           |     *(var_50h) = s3;
    0x00002044 lw v0, (s1)               |     v0 = *(s1);
    0x00002048 sw s2, 0x4c(sp)           |     *(var_4ch) = s2;
    0x0000204c sw s0, 0x44(sp)           |     *(var_44h) = s0;
    0x00002050 sw ra, 0x54(sp)           |     *(var_54h) = ra;
    0x00002054 move s0, a0               |     s0 = a0;
    0x00002058 move s2, a1               |     s2 = a1;
    0x0000205c addiu a0, sp, 0x1c        |     a0 = sp + 0x1c;
    0x00002060 addiu a1, zero, 6         |     a1 = 6;
    0x00002064 sw v0, 0x3c(sp)           |     *(var_3ch) = v0;
    0x00002068 move s3, a2               |     s3 = a2;
    0x0000206c jalr t9                   |     t9 ();
    0x00002070 sw v0, 0x18(sp)           |     *(var_18h) = v0;
    0x00002074 lw gp, 0x10(sp)           |     gp = *(var_10h);
                                         |     if (v0 != 0) {
    0x00002078 bnez v0, 0x2110           |         goto label_0;
                                         |     }
    0x0000207c lw a3, -0x7fd8(gp)        |     a3 = *((gp - 8182));
    0x00002080 addiu t0, s0, 8           |     t0 = s0 + 8;
    0x00002084 move a0, s0               |     a0 = s0;
    0x00002088 move v1, zero             |     v1 = 0;
    0x0000208c move a2, zero             |     a2 = 0;
    0x00002090 move v0, zero             |     v0 = 0;
    0x00002094 addiu a3, a3, 0x3c0c      |     a3 += str.._0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz;
                                         |     do {
    0x00002098 sltiu a1, v0, 6           |         a1 = (v0 < 6) ? 1 : 0;
    0x0000209c andi a1, v1, 0x3f         |         a1 = v1 & 0x3f;
                                         |         if (a1 != 0) {
    0x000020a0 beqz a1, 0x20c4           |             
    0x000020a4 addiu a1, sp, 0x40        |             a1 = sp + 0x40;
    0x000020a8 addu a1, a1, a2           |             a1 += a2;
    0x000020ac addiu a2, a2, 1           |             a2++;
    0x000020b0 lbu a1, -0x24(a1)         |             a1 = *((a1 - 36));
    0x000020b4 sllv a1, a1, v0           |             a1 <<= v0;
    0x000020b8 or v1, v1, a1             |             v1 |= a1;
    0x000020bc addiu v0, v0, 8           |             v0 += 8;
    0x000020c0 andi a1, v1, 0x3f         |             a1 = v1 & 0x3f;
                                         |         }
    0x000020c4 addu a1, a3, a1           |         a1 = a3 + a1;
    0x000020c8 addiu a0, a0, 1           |         a0++;
    0x000020cc lbu a1, (a1)              |         a1 = *(a1);
    0x000020d0 srl v1, v1, 6             |         v1 >>= 6;
    0x000020d4 sb a1, -1(a0)             |         *((a0 - 1)) = a1;
    0x000020d8 addiu v0, v0, -6          |         v0 += -6;
    0x000020dc bne a0, t0, 0x2098        |         
                                         |     } while (a0 != t0);
    0x000020e0 sb zero, 8(s0)            |     *((s0 + 8)) = 0;
    0x000020e4 move v0, zero             |     v0 = 0;
                                         |     do {
    0x000020e8 lw a0, 0x3c(sp)           |         a0 = *(var_3ch);
    0x000020ec lw v1, (s1)               |         v1 = *(s1);
    0x000020f0 lw ra, 0x54(sp)           |         ra = *(var_54h);
                                         |         if (a0 != v1) {
    0x000020f4 bne a0, v1, 0x2138        |             goto label_1;
                                         |         }
    0x000020f8 lw s3, 0x50(sp)           |         s3 = *(var_50h);
    0x000020fc lw s2, 0x4c(sp)           |         s2 = *(var_4ch);
    0x00002100 lw s1, 0x48(sp)           |         s1 = *(var_48h);
    0x00002104 lw s0, 0x44(sp)           |         s0 = *(var_44h);
    0x00002108 addiu sp, sp, 0x58        |         
    0x0000210c jr ra                     |         return v0;
                                         | label_0:
    0x00002110 lw a1, -0x7fd8(gp)        |         a1 = *((gp - 8182));
    0x00002114 lw t9, -0x7f3c(gp)        |         t9 = sym.imp.apr_psprintf
    0x00002118 addiu a2, sp, 0x18        |         a2 = sp + 0x18;
    0x0000211c addiu a1, a1, 0x38a0      |         a1 += str.Unable_to_generate_random_bytes:__pm;
    0x00002120 move a0, s3               |         a0 = s3;
    0x00002124 jalr t9                   |         t9 ();
    0x00002128 lw gp, 0x10(sp)           |         gp = *(var_10h);
    0x0000212c sw v0, (s2)               |         *(s2) = v0;
    0x00002130 addiu v0, zero, 8         |         v0 = 8;
    0x00002134 b 0x20e8                  |         
                                         |     } while (1);
                                         | label_1:
    0x00002138 lw t9, -0x7ef8(gp)        |     t9 = sym.imp.__stack_chk_fail;
    0x0000213c jalr t9                   |     t9 ();
    0x00002140 nop                       |     
                                         | }
    ; assembly                           | /* r2dec pseudo code output */
                                         | /* /logs/firmware/unblob_extracted/firmware_extract/4325012-58052244.squashfs_v4_le_extract/usr/bin/htdbm @ 0x22a4 */
                                         | #include <stdint.h>
                                         |  
    ; (fcn) sym.get_password ()          | void get_password () {
    0x000022a4 lui gp, 2                 |     
    0x000022a8 addiu gp, gp, -0x6294     |     
    0x000022ac addu gp, gp, t9           |     gp += t9;
    0x000022b0 addiu sp, sp, -0x140      |     
    0x000022b4 addiu v1, zero, 2         |     v1 = 2;
    0x000022b8 sw s1, 0x12c(sp)          |     *(var_12ch) = s1;
    0x000022bc lw s1, -0x7ee8(gp)        |     s1 = *((gp - 8122));
    0x000022c0 sw s0, 0x128(sp)          |     *(var_128h) = s0;
    0x000022c4 move s0, a0               |     s0 = a0;
    0x000022c8 lw a0, (s1)               |     a0 = *(s1);
    0x000022cc lw v0, 0x1c(s0)           |     v0 = *((s0 + 7));
    0x000022d0 sw gp, 0x10(sp)           |     *(var_10h) = gp;
    0x000022d4 sw ra, 0x13c(sp)          |     *(var_13ch) = ra;
    0x000022d8 sw s4, 0x138(sp)          |     *(var_138h) = s4;
    0x000022dc sw s3, 0x134(sp)          |     *(var_134h) = s3;
    0x000022e0 sw s2, 0x130(sp)          |     *(var_130h) = s2;
    0x000022e4 sw a0, 0x124(sp)          |     *(var_124h) = a0;
    0x000022e8 addiu v1, zero, 3         |     v1 = 3;
                                         |     if (v0 == v1) {
    0x000022ec beq v0, v1, 0x23f8        |         goto label_2;
                                         |     }
    0x000022f0 lw t9, -0x7f08(gp)        |     t9 = sym.imp.apr_password_get;
                                         |     if (v0 == v1) {
    0x000022f4 beq v0, v1, 0x23a8        |         goto label_3;
                                         |     }
    0x000022f8 lw a0, -0x7fd8(gp)        |     a0 = *((gp - 8182));
    0x000022fc addiu s4, sp, 0x1c        |     s4 = sp + 0x1c;
    0x00002300 addiu s2, sp, 0x20        |     s2 = sp + 0x20;
    0x00002304 addiu s3, zero, 0x101     |     s3 = 0x101;
    0x00002308 move a2, s4               |     a2 = s4;
    0x0000230c move a1, s2               |     a1 = s2;
    0x00002310 addiu a0, a0, 0x3930      |     a0 += str.New_password:_;
    0x00002314 sw s3, 0x1c(sp)           |     *(var_1ch) = s3;
    0x00002318 jalr t9                   |     t9 ();
    0x0000231c lw gp, 0x10(sp)           |     gp = *(var_10h);
                                         |     if (v0 != 0) {
    0x00002320 bnez v0, 0x23d0           |         goto label_0;
                                         |     }
    0x00002324 lw t9, -0x7f20(gp)        |     t9 = sym.imp.apr_pstrdup;
    0x00002328 lw a0, (s0)               |     a0 = *(s0);
    0x0000232c move a1, s2               |     a1 = s2;
    0x00002330 jalr t9                   |     t9 ();
    0x00002334 lw gp, 0x10(sp)           |     gp = *(var_10h);
    0x00002338 move a2, s4               |     a2 = s4;
    0x0000233c move a1, s2               |     a1 = s2;
    0x00002340 lw a0, -0x7fd8(gp)        |     a0 = *((gp - 8182));
    0x00002344 lw t9, -0x7f08(gp)        |     t9 = sym.imp.apr_password_get;
    0x00002348 addiu a0, a0, 0x3940      |     a0 += str.Re_type_new_password:_;
    0x0000234c sw s3, 0x1c(sp)           |     *(var_1ch) = s3;
    0x00002350 sw v0, 0x10(s0)           |     *((s0 + 4)) = v0;
    0x00002354 sb zero, 0x20(sp)         |     *(var_20h) = 0;
    0x00002358 jalr t9                   |     t9 ();
    0x0000235c lw gp, 0x10(sp)           |     gp = *(var_10h);
    0x00002360 lw s3, 0x10(s0)           |     s3 = *((s0 + 4));
    0x00002364 move a1, s2               |     a1 = s2;
    0x00002368 lw t9, -0x7ebc(gp)        |     t9 = sym.imp.strcmp;
    0x0000236c move a0, s3               |     a0 = s3;
    0x00002370 jalr t9                   |     t9 ();
    0x00002374 lw gp, 0x10(sp)           |     gp = *(var_10h);
                                         |     if (v0 != 0) {
    0x00002378 bnez v0, 0x24ec           |         goto label_4;
                                         |     }
                                         |     do {
                                         | label_1:
    0x0000237c lw a0, 0x124(sp)          |         a0 = *(var_124h);
    0x00002380 lw v1, (s1)               |         v1 = *(s1);
    0x00002384 lw ra, 0x13c(sp)          |         ra = *(var_13ch);
                                         |         if (a0 != v1) {
    0x00002388 bne a0, v1, 0x2528        |             goto label_5;
                                         |         }
    0x0000238c lw s4, 0x138(sp)          |         s4 = *(var_138h);
    0x00002390 lw s3, 0x134(sp)          |         s3 = *(var_134h);
    0x00002394 lw s2, 0x130(sp)          |         s2 = *(var_130h);
    0x00002398 lw s1, 0x12c(sp)          |         s1 = *(var_12ch);
    0x0000239c lw s0, 0x128(sp)          |         s0 = *(var_128h);
    0x000023a0 addiu sp, sp, 0x140       |         
    0x000023a4 jr ra                     |         return v0;
                                         | label_3:
    0x000023a8 lw a0, -0x7fd8(gp)        |         a0 = *((gp - 8182));
    0x000023ac addiu v0, zero, 0x101     |         v0 = 0x101;
    0x000023b0 addiu s2, sp, 0x20        |         s2 = sp + 0x20;
    0x000023b4 addiu a2, sp, 0x1c        |         a2 = sp + 0x1c;
    0x000023b8 move a1, s2               |         a1 = s2;
    0x000023bc addiu a0, a0, 0x391c      |         a0 += str.Enter_password:_;
    0x000023c0 sw v0, 0x1c(sp)           |         *(var_1ch) = v0;
    0x000023c4 jalr t9                   |         t9 ();
    0x000023c8 lw gp, 0x10(sp)           |         gp = *(var_10h);
                                         |         if (v0 == 0) {
    0x000023cc beqz v0, 0x24b8           |             goto label_6;
                                         |         }
                                         | label_0:
    0x000023d0 lw a1, -0x7fd8(gp)        |         a1 = *((gp - 8182));
    0x000023d4 lw t9, -0x7f3c(gp)        |         t9 = sym.imp.apr_psprintf
    0x000023d8 lw a0, (s0)               |         a0 = *(s0);
    0x000023dc addiu a2, zero, 0x100     |         a2 = aav.0x00000100;
    0x000023e0 addiu a1, a1, 0x3974      |         a1 += str.password_too_long____u_;
    0x000023e4 jalr t9                   |         t9 ();
    0x000023e8 lw gp, 0x10(sp)           |         gp = *(var_10h);
    0x000023ec sw v0, 4(s0)              |         *((s0 + 1)) = v0;
    0x000023f0 addiu v0, zero, 5         |         v0 = 5;
    0x000023f4 b 0x237c                  |         
                                         |     } while (1);
                                         | label_2:
    0x000023f8 lw t9, -0x7ed8(gp)        |     t9 = sym.imp.apr_file_open_stdin;
    0x000023fc lw a1, (s0)               |     a1 = *(s0);
    0x00002400 addiu a0, sp, 0x18        |     a0 = sp + 0x18;
    0x00002404 jalr t9                   |     t9 ();
    0x00002408 lw gp, 0x10(sp)           |     gp = *(var_10h);
                                         |     if (v0 != 0) {
    0x0000240c bnez v0, 0x24d8           |         goto label_7;
                                         |     }
    0x00002410 lw t9, -0x7ec8(gp)        |     t9 = sym.imp.apr_file_read_full;
    0x00002414 addiu s2, sp, 0x20        |     s2 = sp + 0x20;
    0x00002418 lw a0, 0x18(sp)           |     a0 = *(var_18h);
    0x0000241c addiu a3, sp, 0x1c        |     a3 = sp + 0x1c;
    0x00002420 addiu a2, zero, 0x100     |     a2 = aav.0x00000100;
    0x00002424 move a1, s2               |     a1 = s2;
    0x00002428 jalr t9                   |     t9 ();
    0x0000242c lui v1, 1                 |     v1 = 0x1117e;
    0x00002430 addiu v1, v1, 0x117e      |     
    0x00002434 lw gp, 0x10(sp)           |     gp = *(var_10h);
                                         |     if (v0 != v1) {
    0x00002438 bne v0, v1, 0x23d0        |         goto label_0;
                                         |     }
    0x0000243c lw v0, 0x1c(sp)           |     v0 = *(var_1ch);
    0x00002440 addiu v1, zero, 0x100     |     v1 = aav.0x00000100;
    0x00002444 addiu v1, sp, 0x128       |     v1 = sp + 0x128;
                                         |     if (v0 == v1) {
    0x00002448 beq v0, v1, 0x23d0        |         goto label_0;
                                         |     }
    0x0000244c addu v1, v1, v0           |     v1 += v0;
    0x00002450 sb zero, -0x108(v1)       |     *((v1 - 264)) = 0;
                                         |     if (v0 != 0) {
    0x00002454 beqz v0, 0x249c           |         
    0x00002458 addiu a0, sp, 0x128       |         a0 = sp + 0x128;
    0x0000245c addiu v1, v0, -1          |         v1 = v0 + -1;
    0x00002460 addu v1, a0, v1           |         v1 = a0 + v1;
    0x00002464 addiu a0, zero, 0xa       |         a0 = 0xa;
    0x00002468 lb a1, -0x108(v1)         |         a1 = *((v1 - 264));
    0x0000246c lw t9, -0x7f18(gp)        |         t9 = sym.imp.apr_file_close;
                                         |         if (a1 != a0) {
    0x00002470 bne a1, a0, 0x24a0        |             goto label_8;
                                         |         }
    0x00002474 sltiu a0, v0, 2           |         a0 = (v0 < 2) ? 1 : 0;
    0x00002478 sb zero, -0x108(v1)       |         *((v1 - 264)) = 0;
                                         |         if (a0 != 0) {
    0x0000247c bnez a0, 0x24a0           |             goto label_8;
                                         |         }
    0x00002480 addiu v1, sp, 0x128       |         v1 = sp + 0x128;
    0x00002484 addiu v0, v0, -2          |         v0 += -2;
    0x00002488 addu v0, v1, v0           |         v0 = v1 + v0;
    0x0000248c addiu v1, zero, 0xd       |         v1 = 0xd;
    0x00002490 lb a0, -0x108(v0)         |         a0 = *((v0 - 264));
                                         |         if (a0 == v1) {
    0x00002494 beql a0, v1, 0x24a0       |             goto label_8;
                                         |         }
    0x00002498 sb zero, -0x108(v0)       |         *((v0 - 264)) = 0;
                                         |     }
    0x0000249c lw t9, -0x7f18(gp)        |     t9 = sym.imp.apr_file_close;
                                         | label_8:
    0x000024a0 lw a0, 0x18(sp)           |     a0 = *(var_18h);
    0x000024a4 jalr t9                   |     t9 ();
    0x000024a8 lw gp, 0x10(sp)           |     gp = *(var_10h);
    0x000024ac lw a0, (s0)               |     a0 = *(s0);
    0x000024b0 lw t9, -0x7f20(gp)        |     t9 = sym.imp.apr_pstrdup;
    0x000024b4 b 0x24c0                  |     goto label_9;
                                         | label_6:
    0x000024b8 lw t9, -0x7f20(gp)        |     t9 = sym.imp.apr_pstrdup;
    0x000024bc lw a0, (s0)               |     a0 = *(s0);
                                         | label_9:
    0x000024c0 move a1, s2               |     a1 = s2;
    0x000024c4 jalr t9                   |     t9 ();
    0x000024c8 lw gp, 0x10(sp)           |     gp = *(var_10h);
    0x000024cc sw v0, 0x10(s0)           |     *((s0 + 4)) = v0;
    0x000024d0 move v0, zero             |     v0 = 0;
    0x000024d4 b 0x237c                  |     goto label_1;
                                         | label_7:
    0x000024d8 lw v1, -0x7fd8(gp)        |     v1 = *((gp - 8182));
    0x000024dc addiu v0, zero, 9         |     v0 = 9;
    0x000024e0 addiu v1, v1, 0x3900      |     v1 += str.Unable_to_read_from_stdin.;
    0x000024e4 sw v1, 4(s0)              |     *((s0 + 1)) = v1;
    0x000024e8 b 0x237c                  |     goto label_1;
                                         | label_4:
    0x000024ec lw v0, -0x7fd8(gp)        |     v0 = *((gp - 8182));
    0x000024f0 lw t9, -0x7f2c(gp)        |     t9 = sym.imp.strlen;
    0x000024f4 addiu v0, v0, 0x3958      |     v0 += str.password_verification_error;
    0x000024f8 move a0, s3               |     a0 = s3;
    0x000024fc sw v0, 4(s0)              |     *((s0 + 1)) = v0;
    0x00002500 jalr t9                   |     t9 ();
    0x00002504 lw gp, 0x10(sp)           |     gp = *(var_10h);
    0x00002508 move a2, v0               |     a2 = v0;
    0x0000250c move a1, zero             |     a1 = 0;
    0x00002510 lw t9, -0x7f48(gp)        |     t9 = sym.imp.memset;
    0x00002514 move a0, s3               |     a0 = s3;
    0x00002518 jalr t9                   |     t9 ();
    0x0000251c lw gp, 0x10(sp)           |     gp = *(var_10h);
    0x00002520 addiu v0, zero, 3         |     v0 = 3;
    0x00002524 b 0x237c                  |     goto label_1;
                                         | label_5:
    0x00002528 lw t9, -0x7ef8(gp)        |     t9 = sym.imp.__stack_chk_fail;
    0x0000252c jalr t9                   |     t9 ();
    0x00002530 nop                       |     
                                         | }
    ; assembly                           | /* r2dec pseudo code output */
                                         | /* /logs/firmware/unblob_extracted/firmware_extract/4325012-58052244.squashfs_v4_le_extract/usr/bin/htdbm @ 0x2534 */
                                         | #include <stdint.h>
                                         |  
    ; (fcn) sym.mkhash ()                | void mkhash () {
    0x00002534 lui gp, 2                 |     
    0x00002538 addiu gp, gp, -0x6524     |     
    0x0000253c addu gp, gp, t9           |     gp += t9;
    0x00002540 addiu sp, sp, -0x58       |     
    0x00002544 lw v0, 0x18(a0)           |     v0 = *((a0 + 6));
    0x00002548 sw s3, 0x48(sp)           |     *(var_48h) = s3;
    0x0000254c lw s3, -0x7ee8(gp)        |     s3 = *((gp - 8122));
    0x00002550 sw gp, 0x18(sp)           |     *(var_18h) = gp;
    0x00002554 sw s0, 0x3c(sp)           |     *(var_3ch) = s0;
    0x00002558 lw v1, (s3)               |     v1 = *(s3);
    0x0000255c sw ra, 0x54(sp)           |     *(var_54h) = ra;
    0x00002560 sw s5, 0x50(sp)           |     *(var_50h) = s5;
    0x00002564 sw s4, 0x4c(sp)           |     *(var_4ch) = s4;
    0x00002568 sw s2, 0x44(sp)           |     *(var_44h) = s2;
    0x0000256c sw s1, 0x40(sp)           |     *(var_40h) = s1;
    0x00002570 move s0, a0               |     s0 = a0;
    0x00002574 sw v1, 0x34(sp)           |     *(var_34h) = v1;
                                         |     if (v0 != 0) {
    0x00002578 beql v0, zero, 0x2638     |         
    0x0000257c lw s1, 0x10(s0)           |         s1 = *((s0 + 4));
    0x00002580 lw v1, 0x14(a0)           |         v1 = *((a0 + 5));
    0x00002584 addiu v0, zero, 4         |         v0 = 4;
    0x00002588 lw v0, -0x7fcc(gp)        |         v0 = *(gp);
                                         |         if (v1 == v0) {
    0x0000258c bne v1, v0, 0x261c        |             
    0x00002590 lw s1, 0x10(a0)           |             s1 = *((a0 + 4));
    0x00002594 lw t9, -0x7fc4(gp)        |             t9 = sym.get_password;
                                         |             if (s1 == 0) {
    0x00002598 beqz s1, 0x27c8           |                 goto label_2;
                                         |             }
    0x0000259c lw t9, -0x7f84(gp)        |             t9 = sym.imp.apr_generate_random_bytes;
    0x000025a0 addiu s2, sp, 0x24        |             s2 = sp + 0x24;
    0x000025a4 addiu a1, zero, 0x10      |             a1 = 0x10;
    0x000025a8 move a0, s2               |             a0 = s2;
    0x000025ac jalr t9                   |             t9 ();
    0x000025b0 sw v0, 0x20(sp)           |             *(var_20h_2) = v0;
    0x000025b4 lw gp, 0x18(sp)           |             gp = *(var_18h);
                                         |             if (v0 != 0) {
    0x000025b8 bnez v0, 0x27e4           |                 goto label_3;
                                         |             }
    0x000025bc lw a1, 0x18(s0)           |             a1 = *((s0 + 6));
    0x000025c0 lw v1, 0xc(s0)            |             v1 = *((s0 + 3));
                                         |             if (a1 != 0) {
    0x000025c4 bnel a1, zero, 0x25d8     |                 
    0x000025c8 addiu v0, zero, 5         |                 v0 = 5;
    0x000025cc sw v0, 0x18(s0)           |                 *((s0 + 6)) = v0;
    0x000025d0 addiu a1, zero, 5         |                 a1 = 5;
    0x000025d4 lw v1, 0xc(s0)            |                 v1 = *((s0 + 3));
                                         |             }
    0x000025d8 lw v0, 8(s0)              |             v0 = *((s0 + 2));
    0x000025dc lw t9, -0x7f78(gp)        |             t9 = sym.imp.apr_bcrypt_encode;
    0x000025e0 sw v1, 0x14(sp)           |             *(var_14h) = v1;
    0x000025e4 sw v0, 0x10(sp)           |             *(var_10h_3) = v0;
    0x000025e8 addiu a3, zero, 0x10      |             a3 = 0x10;
    0x000025ec move a2, s2               |             a2 = s2;
    0x000025f0 move a0, s1               |             a0 = s1;
    0x000025f4 jalr t9                   |             t9 ();
    0x000025f8 sw v0, 0x20(sp)           |             *(var_20h_2) = v0;
    0x000025fc lw gp, 0x18(sp)           |             gp = *(var_18h);
                                         |             if (v0 != 0) {
    0x00002600 bnez v0, 0x292c           |                 goto label_4;
                                         |             }
    0x00002604 lw t9, -0x7f2c(gp)        |             t9 = sym.imp.strlen;
    0x00002608 move a0, s1               |             a0 = s1;
    0x0000260c jalr t9                   |             t9 ();
    0x00002610 move s2, zero             |             s2 = 0;
    0x00002614 lw gp, 0x18(sp)           |             gp = *(var_18h);
    0x00002618 b 0x2690                  |             goto label_1;
                                         |         }
    0x0000261c lw a1, -0x7fd8(gp)        |         a1 = *((gp - 8182));
    0x00002620 lw t9, -0x7f90(gp)        |         t9 = sym.imp.apr_file_printf;
    0x00002624 lw a0, (v0)               |         a0 = *(v0);
    0x00002628 addiu a1, a1, 0x398c      |         a1 += str.Warning:_Ignoring__C_argument_for_this_algorithm._n;
    0x0000262c jalr t9                   |         t9 ();
    0x00002630 lw gp, 0x18(sp)           |         gp = *(var_18h);
    0x00002634 lw s1, 0x10(s0)           |         s1 = *((s0 + 4));
                                         |     }
    0x00002638 lw t9, -0x7fc4(gp)        |     t9 = sym.get_password;
                                         |     if (s1 == 0) {
    0x0000263c beqz s1, 0x27c8           |         goto label_2;
                                         |     }
                                         | label_0:
    0x00002640 lw s2, 0x14(s0)           |     s2 = *((s0 + 5));
    0x00002644 sltiu v0, s2, 5           |     v0 = (s2 < 5) ? 1 : 0;
    0x00002648 lw v1, -0x7fd8(gp)        |     v1 = *((gp - 8182));
                                         |     if (v0 == 0) {
    0x0000264c beqz v0, 0x2984           |         goto label_5;
                                         |     }
    0x00002650 sll v0, s2, 2             |     v0 = s2 << 2;
    0x00002654 addiu v1, v1, 0x3b30      |     v1 += 0x3b30;
    0x00002658 lwx v0, v0(v1)            |     __asm ("lwx v0, v0(v1)");
    0x0000265c addu v0, v0, gp           |     v0 += gp;
    0x00002660 jr v0                     |     v0 ();
    0x00002664 nop                       |     
                                         | label_1:
    0x00002690 lw t9, -0x7f48(gp)        |     t9 = sym.imp.memset;
    0x00002694 move a2, v0               |     a2 = v0;
    0x00002698 move a1, zero             |     a1 = 0;
    0x0000269c move a0, s1               |     a0 = s1;
    0x000026a0 jalr t9                   |     t9 ();
    0x000026a4 lw gp, 0x18(sp)           |     gp = *(var_18h);
                                         |     do {
    0x000026a8 lw a0, 0x34(sp)           |         a0 = *(var_34h);
    0x000026ac lw v1, (s3)               |         v1 = *(s3);
    0x000026b0 move v0, s2               |         v0 = s2;
                                         |         if (a0 != v1) {
    0x000026b4 bne a0, v1, 0x29b0        |             goto label_6;
                                         |         }
    0x000026b8 lw ra, 0x54(sp)           |         ra = *(var_54h);
    0x000026bc lw s5, 0x50(sp)           |         s5 = *(var_50h);
    0x000026c0 lw s4, 0x4c(sp)           |         s4 = *(var_4ch);
    0x000026c4 lw s3, 0x48(sp)           |         s3 = *(var_48h);
    0x000026c8 lw s2, 0x44(sp)           |         s2 = *(var_44h);
    0x000026cc lw s1, 0x40(sp)           |         s1 = *(var_40h);
    0x000026d0 lw s0, 0x3c(sp)           |         s0 = *(var_3ch);
    0x000026d4 addiu sp, sp, 0x58        |         
    0x000026d8 jr ra                     |         return v0;
                                         | label_2:
    0x000027c8 move a0, s0               |         a0 = s0;
    0x000027cc bal 0x22a4                |         sym_get_password ();
    0x000027d0 move s2, v0               |         s2 = v0;
    0x000027d4 lw gp, 0x18(sp)           |         gp = *(var_18h);
    0x000027d8 bnez v0, 0x26a8           |         
                                         |     } while (v0 != 0);
    0x000027dc lw s1, 0x10(s0)           |     s1 = *((s0 + 4));
    0x000027e0 b 0x2640                  |     goto label_0;
                                         | label_3:
    0x000027e4 lw a1, -0x7fd8(gp)        |     a1 = *((gp - 8182));
    0x000027e8 lw t9, -0x7f3c(gp)        |     t9 = sym.imp.apr_psprintf
    0x000027ec lw a0, (s0)               |     a0 = *(s0);
    0x000027f0 addiu a2, sp, 0x20        |     a2 = sp + 0x20;
    0x000027f4 addiu a1, a1, 0x38a0      |     a1 += str.Unable_to_generate_random_bytes:__pm;
    0x000027f8 jalr t9                   |     t9 ();
    0x000027fc lw gp, 0x18(sp)           |     gp = *(var_18h);
    0x00002800 sw v0, 4(s0)              |     *((s0 + 1)) = v0;
    0x00002804 move a0, s1               |     a0 = s1;
    0x00002808 lw t9, -0x7f2c(gp)        |     t9 = sym.imp.strlen;
    0x0000280c addiu s2, zero, 8         |     s2 = 8;
    0x00002810 jalr t9                   |     t9 ();
    0x00002814 lw gp, 0x18(sp)           |     gp = *(var_18h);
    0x00002818 b 0x2690                  |     goto label_1;
                                         | label_4:
    0x0000292c lw a1, -0x7fd8(gp)        |     a1 = *((gp - 8182));
    0x00002930 lw t9, -0x7f3c(gp)        |     t9 = sym.imp.apr_psprintf
    0x00002934 lw a0, (s0)               |     a0 = *(s0);
    0x00002938 addiu a2, sp, 0x20        |     a2 = sp + 0x20;
    0x0000293c addiu a1, a1, 0x3a38      |     a1 += str.Unable_to_encode_with_bcrypt:__pm;
    0x00002940 jalr t9                   |     t9 ();
    0x00002944 lw gp, 0x18(sp)           |     gp = *(var_18h);
    0x00002948 sw v0, 4(s0)              |     *((s0 + 1)) = v0;
    0x0000294c move a0, s1               |     a0 = s1;
    0x00002950 lw t9, -0x7f2c(gp)        |     t9 = sym.imp.strlen;
    0x00002954 addiu s2, zero, 3         |     s2 = 3;
    0x00002958 jalr t9                   |     t9 ();
    0x0000295c lw gp, 0x18(sp)           |     gp = *(var_18h);
    0x00002960 b 0x2690                  |     goto label_1;
                                         | label_5:
    0x00002984 lw v0, -0x7fcc(gp)        |     v0 = *(gp);
    0x00002988 lw a1, -0x7fd8(gp)        |     a1 = *((gp - 8182));
    0x0000298c lw t9, -0x7f90(gp)        |     t9 = sym.imp.apr_file_printf;
    0x00002990 lw a0, (v0)               |     a0 = *(v0);
    0x00002994 move a2, s2               |     a2 = s2;
    0x00002998 addiu a1, a1, 0x3a5c      |     a1 += str.mkhash__:_BUG:_invalid_algorithm__d;
    0x0000299c jalr t9                   |     t9 ();
    0x000029a0 lw gp, 0x18(sp)           |     gp = *(var_18h);
    0x000029a4 lw t9, -0x7f88(gp)        |     t9 = sym.imp.abort;
    0x000029a8 jalr t9                   |     t9 ();
    0x000029ac nop                       |     
                                         | label_6:
    0x000029b0 lw t9, -0x7ef8(gp)        |     t9 = sym.imp.__stack_chk_fail;
    0x000029b4 jalr t9                   |     t9 ();
    0x000029b8 nop                       |     
                                         | }

[*] Function sprintf used 5 times htdbm