[*] 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