[*] Binary protection state of gpgv
Full RELRO Canary found NX disabled PIE enabled No RPATH No RUNPATH No Symbols
[*] Function strcpy tear down of gpgv
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/4325012-58052244.squashfs_v4_le_extract/usr/bin/gpgv @ 0x12b44 */
| #include <stdint.h>
|
; (fcn) fcn.00012b44 () | void fcn_00012b44 () {
0x00012b44 lui gp, 5 |
0x00012b48 addiu gp, gp, -0xa14 |
0x00012b4c addu gp, gp, t9 | gp += t9;
0x00012b50 lhu v0, (a0) | v0 = *(a0);
0x00012b54 andi a2, v0, 0x400 | a2 = v0 & aav.0x00000400;
0x00012b58 lw a1, 0x28(a0) | a1 = *((a0 + 10));
| if (a2 != 0) {
0x00012b5c beqz a2, 0x12b70 |
| if (a1 == 0) {
0x00012b60 beqz a1, 0x12d30 | goto label_0;
| }
0x00012b64 nop |
0x00012b68 lw v0, 8(a1) | v0 = *((a1 + 2));
0x00012b6c jr ra | return v0;
| }
0x00012b70 addiu sp, sp, -0x30 |
0x00012b74 sw gp, 0x10(sp) | *(var_10h) = gp;
0x00012b78 sw ra, 0x2c(sp) | *(var_2ch) = ra;
0x00012b7c sw s3, 0x28(sp) | *(var_28h_2) = s3;
0x00012b80 sw s2, 0x24(sp) | *(var_24h) = s2;
0x00012b84 sw s1, 0x20(sp) | *(var_20h) = s1;
0x00012b88 sw s0, 0x1c(sp) | *(var_1ch) = s0;
0x00012b8c addiu v1, zero, 1 | v1 = 1;
| if (a1 != 0) {
0x00012b90 bnez a1, 0x12d04 | goto label_1;
| }
0x00012b94 lw t9, -0x7cc4(gp) | t9 = sym.sig_to_notation;
0x00012b98 ins v0, v1, 0xa, 1 | __asm ("ins v0, v1, 0xa, 1");
0x00012b9c sh v0, (a0) | *(a0) = v0;
0x00012ba0 move s1, a0 | s1 = a0;
0x00012ba4 bal 0x7a7c | sym_sig_to_notation ();
0x00012ba8 move s3, v0 | s3 = v0;
0x00012bac lw gp, 0x10(sp) | gp = *(var_10h);
| if (v0 == 0) {
0x00012bb0 beqz v0, 0x12bf8 | goto label_2;
| }
0x00012bb4 lw s2, -0x7fdc(gp) | s2 = *(gp);
0x00012bb8 move s0, v0 | s0 = v0;
| /* str.pka_address_gnupg.org */
0x00012bbc addiu s2, s2, 0x4110 | s2 += 0x4110;
0x00012bc0 lw t9, -0x77e0(gp) | t9 = sym.imp.strcmp;
| do {
0x00012bc4 lw a0, (s0) | a0 = *(s0);
0x00012bc8 move a1, s2 | a1 = s2;
0x00012bcc jalr t9 | t9 ();
0x00012bd0 lw gp, 0x10(sp) | gp = *(var_10h);
| if (v0 == 0) {
0x00012bd4 bnez v0, 0x12bec |
0x00012bd8 lw t9, -0x7cc0(gp) | t9 = sym.is_valid_mailbox;
0x00012bdc lw a0, 4(s0) | a0 = *((s0 + 1));
0x00012be0 bal 0x18320 | sym_is_valid_mailbox ();
0x00012be4 lw gp, 0x10(sp) | gp = *(var_10h);
| if (v0 != 0) {
0x00012be8 bnez v0, 0x12c28 | goto label_3;
| }
| }
0x00012bec lw s0, 0x18(s0) | s0 = *((s0 + 6));
0x00012bf0 lw t9, -0x77e0(gp) | t9 = sym.imp.strcmp;
0x00012bf4 bnez s0, 0x12bc4 |
| } while (s0 != 0);
| label_2:
0x00012bf8 lw t9, -0x7cbc(gp) | t9 = sym.free_notation;
0x00012bfc move a0, s3 | a0 = s3;
0x00012c00 bal 0x7d70 | sym_free_notation ();
0x00012c04 sw zero, 0x28(s1) | *((s1 + 10)) = 0;
0x00012c08 move v0, zero | v0 = 0;
| do {
0x00012c0c lw ra, 0x2c(sp) | ra = *(var_2ch);
0x00012c10 lw s3, 0x28(sp) | s3 = *(var_28h_2);
0x00012c14 lw s2, 0x24(sp) | s2 = *(var_24h);
0x00012c18 lw s1, 0x20(sp) | s1 = *(var_20h);
0x00012c1c lw s0, 0x1c(sp) | s0 = *(var_1ch);
0x00012c20 addiu sp, sp, 0x30 |
0x00012c24 jr ra | return v0;
| label_3:
0x00012c28 lw t9, -0x78a0(gp) | t9 = sym.imp.strlen;
0x00012c2c lw a0, 4(s0) | a0 = *((s0 + 1));
0x00012c30 jalr t9 | t9 ();
0x00012c34 lw gp, 0x10(sp) | gp = *(var_10h);
0x00012c38 lw t9, -0x7f28(gp) | t9 = sym.xmalloc;
0x00012c3c addiu a0, v0, 0x24 | a0 = v0 + 0x24;
0x00012c40 jalr t9 | t9 ();
0x00012c44 lw gp, 0x10(sp) | gp = *(var_10h);
0x00012c48 lw a1, 4(s0) | a1 = *((s0 + 1));
0x00012c4c addiu s0, v0, 0x20 | s0 = v0 + 0x20;
0x00012c50 lw t9, -0x7854(gp) | t9 = sym.imp.strcpy
0x00012c54 move a0, s0 | a0 = s0;
0x00012c58 sw zero, (v0) | *(v0) = 0;
0x00012c5c sw zero, 4(v0) | *((v0 + 1)) = 0;
0x00012c60 sw zero, 8(v0) | *((v0 + 2)) = 0;
0x00012c64 move s2, v0 | s2 = v0;
0x00012c68 jalr t9 | t9 ();
0x00012c6c lw gp, 0x10(sp) | gp = *(var_10h);
0x00012c70 lw t9, -0x7cbc(gp) | t9 = sym.free_notation;
0x00012c74 move a0, s3 | a0 = s3;
0x00012c78 bal 0x7d70 | sym_free_notation ();
0x00012c7c lw gp, 0x10(sp) | gp = *(var_10h);
0x00012c80 sw s2, 0x28(s1) | *((s1 + 10)) = s2;
0x00012c84 addiu a1, s2, 0xc | a1 = s2 + 0xc;
0x00012c88 lw t9, -0x7cb8(gp) | t9 = sym.get_pka_info;
0x00012c8c move a0, s0 | a0 = s0;
0x00012c90 jalr t9 | t9 ();
0x00012c94 lw gp, 0x10(sp) | gp = *(var_10h);
| if (v0 != 0) {
0x00012c98 beqz v0, 0x12cdc |
0x00012c9c lw v1, 0x28(s1) | v1 = *((s1 + 10));
0x00012ca0 addiu a0, zero, 1 | a0 = 1;
0x00012ca4 sw a0, (v1) | *(v1) = a0;
0x00012ca8 lb a0, (v0) | a0 = *(v0);
0x00012cac lw ra, 0x2c(sp) | ra = *(var_2ch);
| if (a0 != 0) {
0x00012cb0 beqz a0, 0x12cd0 |
0x00012cb4 lw s3, 0x28(sp) | s3 = *(var_28h_2);
0x00012cb8 lw s2, 0x24(sp) | s2 = *(var_24h);
0x00012cbc lw s1, 0x20(sp) | s1 = *(var_20h);
0x00012cc0 lw s0, 0x1c(sp) | s0 = *(var_1ch);
0x00012cc4 sw v0, 8(v1) | *((v1 + 2)) = v0;
0x00012cc8 addiu sp, sp, 0x30 |
0x00012ccc jr ra | return v0;
| }
0x00012cd0 lw t9, -0x7f24(gp) | t9 = sym.xfree;
0x00012cd4 move a0, v0 | a0 = v0;
0x00012cd8 jalr t9 | t9 ();
| }
0x00012cdc lw a1, 0x28(s1) | a1 = *((s1 + 10));
0x00012ce0 lw ra, 0x2c(sp) | ra = *(var_2ch);
| if (a1 != 0) {
0x00012ce4 beqz a1, 0x12d28 |
0x00012ce8 lw v0, 8(a1) | v0 = *((a1 + 2));
0x00012cec lw s3, 0x28(sp) | s3 = *(var_28h_2);
0x00012cf0 lw s2, 0x24(sp) | s2 = *(var_24h);
0x00012cf4 lw s1, 0x20(sp) | s1 = *(var_20h);
0x00012cf8 lw s0, 0x1c(sp) | s0 = *(var_1ch);
0x00012cfc addiu sp, sp, 0x30 |
0x00012d00 jr ra | return v0;
| label_1:
0x00012d04 lw a3, -0x7fdc(gp) | a3 = *(gp);
0x00012d08 lw a1, -0x7fdc(gp) | a1 = *(gp);
0x00012d0c lw a0, -0x7fdc(gp) | a0 = *(gp);
0x00012d10 lw t9, -0x7944(gp) | t9 = sym.imp.__assert_fail;
| /* str.pka_uri_from_sig */
0x00012d14 addiu a3, a3, 0x48e4 | a3 += 0x48e4;
0x00012d18 addiu a2, zero, 0x577 | a2 = 0x577;
| /* str..._.._gnupg_1.4.7_g10_mainproc.c */
0x00012d1c addiu a1, a1, 0x3eac | a1 += 0x3eac;
| /* str._sig__pka_info */
0x00012d20 addiu a0, a0, 0x4100 | a0 += 0x4100;
0x00012d24 jalr t9 | t9 ();
| }
0x00012d28 move v0, zero | v0 = 0;
0x00012d2c b 0x12c0c |
| } while (1);
| label_0:
0x00012d30 move v0, zero | v0 = 0;
0x00012d34 jr ra | return v0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/4325012-58052244.squashfs_v4_le_extract/usr/bin/gpgv @ 0x39a58 */
| #include <stdint.h>
|
; (fcn) sym.add_to_strlist () | void add_to_strlist () {
0x00039a58 lui gp, 3 |
0x00039a5c addiu gp, gp, -0x7928 |
0x00039a60 addu gp, gp, t9 | gp += t9;
0x00039a64 addiu sp, sp, -0x28 |
0x00039a68 lw t9, -0x78a0(gp) | t9 = sym.imp.strlen;
0x00039a6c sw ra, 0x24(sp) | *(var_24h) = ra;
0x00039a70 sw s1, 0x20(sp) | *(var_20h) = s1;
0x00039a74 sw s0, 0x1c(sp) | *(var_1ch) = s0;
0x00039a78 sw gp, 0x10(sp) | *(var_10h) = gp;
0x00039a7c move s1, a0 | s1 = a0;
0x00039a80 sw a1, 0x2c(sp) | *(arg_2ch) = a1;
0x00039a84 move a0, a1 | a0 = a1;
0x00039a88 jalr t9 | t9 ();
0x00039a8c lw gp, 0x10(sp) | gp = *(var_10h);
0x00039a90 lw t9, -0x7f28(gp) | t9 = sym.xmalloc;
0x00039a94 addiu a0, v0, 0xc | a0 = v0 + 0xc;
0x00039a98 bal 0x3cb1c | sym_xmalloc ();
0x00039a9c lw gp, 0x10(sp) | gp = *(var_10h);
0x00039aa0 lw a1, 0x2c(sp) | a1 = *(arg_2ch);
0x00039aa4 addiu a0, v0, 8 | a0 = v0 + 8;
0x00039aa8 lw t9, -0x7854(gp) | t9 = sym.imp.strcpy
0x00039aac sw zero, 4(v0) | *((v0 + 1)) = 0;
0x00039ab0 move s0, v0 | s0 = v0;
0x00039ab4 jalr t9 | t9 ();
0x00039ab8 lw v1, (s1) | v1 = *(s1);
0x00039abc lw ra, 0x24(sp) | ra = *(var_24h);
0x00039ac0 sw v1, (s0) | *(s0) = v1;
0x00039ac4 move v0, s0 | v0 = s0;
0x00039ac8 sw s0, (s1) | *(s1) = s0;
0x00039acc lw s1, 0x20(sp) | s1 = *(var_20h);
0x00039ad0 lw s0, 0x1c(sp) | s0 = *(var_1ch);
0x00039ad4 addiu sp, sp, 0x28 |
0x00039ad8 jr ra | return v0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/4325012-58052244.squashfs_v4_le_extract/usr/bin/gpgv @ 0x39adc */
| #include <stdint.h>
|
; (fcn) sym.append_to_strlist () | void append_to_strlist () {
0x00039adc lui gp, 3 |
0x00039ae0 addiu gp, gp, -0x79ac |
0x00039ae4 addu gp, gp, t9 | gp += t9;
0x00039ae8 addiu sp, sp, -0x28 |
0x00039aec lw t9, -0x78a0(gp) | t9 = sym.imp.strlen;
0x00039af0 sw ra, 0x24(sp) | *(var_24h) = ra;
0x00039af4 sw gp, 0x10(sp) | *(var_10h) = gp;
0x00039af8 sw a1, 0x2c(sp) | *(arg_2ch) = a1;
0x00039afc sw s1, 0x20(sp) | *(var_20h) = s1;
0x00039b00 sw s0, 0x1c(sp) | *(var_1ch) = s0;
0x00039b04 move s1, a0 | s1 = a0;
0x00039b08 move a0, a1 | a0 = a1;
0x00039b0c jalr t9 | t9 ();
0x00039b10 lw gp, 0x10(sp) | gp = *(var_10h);
0x00039b14 lw t9, -0x7f28(gp) | t9 = sym.xmalloc;
0x00039b18 addiu a0, v0, 0xc | a0 = v0 + 0xc;
0x00039b1c bal 0x3cb1c | sym_xmalloc ();
0x00039b20 lw gp, 0x10(sp) | gp = *(var_10h);
0x00039b24 move s0, v0 | s0 = v0;
0x00039b28 lw a1, 0x2c(sp) | a1 = *(arg_2ch);
0x00039b2c lw t9, -0x7854(gp) | t9 = sym.imp.strcpy
0x00039b30 sw zero, 4(v0) | *((v0 + 1)) = 0;
0x00039b34 addiu a0, v0, 8 | a0 = v0 + 8;
0x00039b38 jalr t9 | t9 ();
0x00039b3c sw zero, (s0) | *(s0) = 0;
0x00039b40 lw v1, (s1) | v1 = *(s1);
0x00039b44 lw v0, (v1) | v0 = *(v1);
| if (v1 == 0) {
0x00039b48 bnel v1, zero, 0x39b58 | goto label_0;
| }
0x00039b4c lw ra, 0x24(sp) | ra = *(var_24h);
0x00039b50 b 0x39b7c | goto label_1;
| do {
0x00039b54 lw v0, (v1) | v0 = *(v1);
| label_0:
0x00039b58 move v1, v0 | v1 = v0;
0x00039b5c bnel v0, zero, 0x39b54 |
| } while (v0 == 0);
0x00039b60 lw ra, 0x24(sp) | ra = *(var_24h);
0x00039b64 sw s0, (v1) | *(v1) = s0;
0x00039b68 move v0, s0 | v0 = s0;
0x00039b6c lw s1, 0x20(sp) | s1 = *(var_20h);
0x00039b70 lw s0, 0x1c(sp) | s0 = *(var_1ch);
0x00039b74 addiu sp, sp, 0x28 |
0x00039b78 jr ra | return v0;
| label_1:
0x00039b7c sw s0, (s1) | *(s1) = s0;
0x00039b80 move v0, s0 | v0 = s0;
0x00039b84 lw s1, 0x20(sp) | s1 = *(var_20h);
0x00039b88 lw s0, 0x1c(sp) | s0 = *(var_1ch);
0x00039b8c addiu sp, sp, 0x28 |
0x00039b90 jr ra | return v0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/4325012-58052244.squashfs_v4_le_extract/usr/bin/gpgv @ 0x41634 */
| #include <stdint.h>
|
; (fcn) sym.get_pka_info () | void get_pka_info () {
0x00041634 lui gp, 2 |
0x00041638 addiu gp, gp, 0xafc |
0x0004163c addu gp, gp, t9 | gp += t9;
0x00041640 addiu sp, sp, -0x248 |
0x00041644 lw t9, -0x7900(gp) | t9 = sym.imp.strrchr;
0x00041648 sw s1, 0x22c(sp) | *(var_22ch) = s1;
0x0004164c lw s1, -0x781c(gp) | s1 = *((gp - 7687));
0x00041650 sw gp, 0x18(sp) | *(var_18h) = gp;
0x00041654 sw s4, 0x238(sp) | *(var_238h) = s4;
0x00041658 lw v0, (s1) | v0 = *(s1);
0x0004165c sw s2, 0x230(sp) | *(var_230h) = s2;
0x00041660 sw ra, 0x244(sp) | *(var_244h) = ra;
0x00041664 sw s6, 0x240(sp) | *(var_240h) = s6;
0x00041668 sw s5, 0x23c(sp) | *(var_23ch) = s5;
0x0004166c sw s3, 0x234(sp) | *(var_234h) = s3;
0x00041670 sw s0, 0x228(sp) | *(var_228h) = s0;
0x00041674 move s2, a1 | s2 = a1;
0x00041678 sw v0, 0x224(sp) | *(var_224h) = v0;
0x0004167c addiu a1, zero, 0x40 | a1 = 0x40;
0x00041680 move s4, a0 | s4 = a0;
0x00041684 jalr t9 | t9 ();
0x00041688 lw gp, 0x18(sp) | gp = *(var_18h);
| if (v0 == 0) {
0x0004168c beqz v0, 0x417e4 | goto label_1;
| }
0x00041690 move s3, v0 | s3 = v0;
| if (s4 == v0) {
0x00041694 beq s4, v0, 0x417e4 | goto label_1;
| }
0x00041698 lb v0, 1(v0) | v0 = *((v0 + 1));
0x0004169c lw t9, -0x78a0(gp) | t9 = sym.imp.strlen;
| if (v0 == 0) {
0x000416a0 beqz v0, 0x417e4 | goto label_1;
| }
0x000416a4 move a0, s4 | a0 = s4;
0x000416a8 jalr t9 | t9 ();
0x000416ac lw gp, 0x18(sp) | gp = *(var_18h);
0x000416b0 addiu a0, v0, 6 | a0 = v0 + 6;
0x000416b4 subu s0, s3, s4 | __asm ("subu s0, s3, s4");
0x000416b8 lw t9, -0x786c(gp) | t9 = sym.imp.malloc;
0x000416bc addiu s5, sp, 0x24 | s5 = sp + 0x24;
0x000416c0 jalr t9 | t9 ();
0x000416c4 lw gp, 0x18(sp) | gp = *(var_18h);
0x000416c8 move a2, s0 | a2 = s0;
0x000416cc move a1, s4 | a1 = s4;
0x000416d0 lw t9, -0x7818(gp) | t9 = sym.imp.memcpy;
0x000416d4 move a0, v0 | a0 = v0;
0x000416d8 move s6, v0 | s6 = v0;
0x000416dc jalr t9 | t9 ();
0x000416e0 lw gp, 0x18(sp) | gp = *(var_18h);
0x000416e4 addu a2, s6, s0 | a2 = s6 + s0;
0x000416e8 addiu a0, a2, 6 | a0 = a2 + 6;
0x000416ec lw v0, -0x7d90(gp) | v0 = *((gp - 8036));
0x000416f0 lw t9, -0x7854(gp) | t9 = sym.imp.strcpy
| /* str.._pka. */
0x000416f4 addiu v1, v0, -0x6590 | v1 = v0 + -0x6590;
0x000416f8 lw v0, -0x6590(v0) | v0 = *((v0 - 6500));
0x000416fc lbu a3, 4(v1) | a3 = *((v1 + 4));
0x00041700 lbu v1, 5(v1) | v1 = *((v1 + 5));
0x00041704 swl v0, 3(a2) | __asm ("swl v0, 3(a2)");
0x00041708 swr v0, (a2) | __asm ("swr v0, (a2)");
0x0004170c addiu a1, s3, 1 | a1 = s3 + 1;
0x00041710 sb v1, 5(a2) | *((a2 + 5)) = v1;
0x00041714 sb a3, 4(a2) | *((a2 + 4)) = a3;
0x00041718 jalr t9 | t9 ();
0x0004171c lw gp, 0x18(sp) | gp = *(var_18h);
0x00041720 addiu v0, zero, 0x200 | v0 = aav.0x00000200;
0x00041724 move a3, s5 | a3 = s5;
0x00041728 lw t9, -0x790c(gp) | t9 = sym.imp.__res_query;
0x0004172c addiu a2, zero, 0x10 | a2 = 0x10;
0x00041730 addiu a1, zero, 1 | a1 = 1;
0x00041734 move a0, s6 | a0 = s6;
0x00041738 sw v0, 0x10(sp) | *(var_10h_2) = v0;
0x0004173c jalr t9 | t9 ();
0x00041740 lw gp, 0x18(sp) | gp = *(var_18h);
0x00041744 move s0, v0 | s0 = v0;
0x00041748 lw t9, -0x7f24(gp) | t9 = sym.xfree;
0x0004174c move a0, s6 | a0 = s6;
0x00041750 bal 0x3cd20 | sym_xfree ();
0x00041754 sltiu v0, s0, 0xc | v0 = (s0 < 0xc) ? 1 : 0;
0x00041758 lw gp, 0x18(sp) | gp = *(var_18h);
| if (v0 != 0) {
0x0004175c bnez v0, 0x417e4 | goto label_1;
| }
0x00041760 lw v1, 0x24(sp) | v1 = *(var_24h_2);
0x00041764 ext v1, v1, 0x18, 4 | __asm ("ext v1, v1, 0x18, 4");
0x00041768 move s3, zero | s3 = 0;
| if (v1 == 0) {
0x0004176c bnel v1, zero, 0x417e8 | goto label_0;
| }
0x00041770 slti v0, s0, 0x201 | v0 = (s0 < 0x201) ? 1 : 0;
0x00041774 lhu s3, 0x28(sp) | s3 = *(var_28h_2);
| if (v0 == 0) {
0x00041778 beqz v0, 0x417e4 | goto label_1;
| }
0x0004177c lhu s4, 0x2a(sp) | s4 = *(var_2ah);
0x00041780 wsbh s4, s4 | __asm ("wsbh s4, s4");
0x00041784 wsbh s3, s3 | __asm ("wsbh s3, s3");
0x00041788 andi s4, s4, 0xffff | s4 &= 0xffff;
0x0004178c andi s3, s3, 0xffff | s3 &= 0xffff;
| if (s4 == 0) {
0x00041790 beqz s4, 0x417e4 | goto label_1;
| }
0x00041794 addu s5, s5, s0 | s5 += s0;
0x00041798 addiu s0, sp, 0x30 | s0 = sp + 0x30;
| if (s3 == 0) {
0x0004179c beqz s3, 0x41820 | goto label_10;
| }
0x000417a0 sltu v0, s0, s5 | v0 = (s0 < s5) ? 1 : 0;
0x000417a4 addiu s3, s3, -2 | s3 += -2;
| if (v0 == 0) {
0x000417a8 beqz v0, 0x41820 | goto label_10;
| }
0x000417ac addiu s6, zero, -1 | s6 = -1;
0x000417b0 b 0x417cc |
| while (v0 != s6) {
0x000417b4 addiu v0, v0, 4 | v0 += 4;
0x000417b8 addu s0, s0, v0 | s0 += v0;
| if (s3 == s6) {
0x000417bc beq s3, s6, 0x41820 | goto label_10;
| }
0x000417c0 sltu v1, s0, s5 | v1 = (s0 < s5) ? 1 : 0;
0x000417c4 addiu s3, s3, -1 | s3 += -1;
| if (v1 == 0) {
0x000417c8 beqz v1, 0x41820 | goto label_10;
| }
0x000417cc lw t9, -0x791c(gp) | t9 = sym.imp.__dn_skipname;
0x000417d0 move a1, s5 | a1 = s5;
0x000417d4 move a0, s0 | a0 = s0;
0x000417d8 jalr t9 | t9 ();
0x000417dc lw gp, 0x18(sp) | gp = *(var_18h);
0x000417e0 bne v0, s6, 0x417b4 |
| }
| label_1:
0x000417e4 move s3, zero | s3 = 0;
| do {
| label_0:
0x000417e8 lw a0, 0x224(sp) | a0 = *(var_224h);
0x000417ec lw v1, (s1) | v1 = *(s1);
0x000417f0 move v0, s3 | v0 = s3;
| if (a0 != v1) {
0x000417f4 bne a0, v1, 0x41b44 | goto label_11;
| }
0x000417f8 lw ra, 0x244(sp) | ra = *(var_244h);
0x000417fc lw s6, 0x240(sp) | s6 = *(var_240h);
0x00041800 lw s5, 0x23c(sp) | s5 = *(var_23ch);
0x00041804 lw s4, 0x238(sp) | s4 = *(var_238h);
0x00041808 lw s3, 0x234(sp) | s3 = *(var_234h);
0x0004180c lw s2, 0x230(sp) | s2 = *(var_230h);
0x00041810 lw s1, 0x22c(sp) | s1 = *(var_22ch);
0x00041814 lw s0, 0x228(sp) | s0 = *(var_228h);
0x00041818 addiu sp, sp, 0x248 |
0x0004181c jr ra | return v0;
| label_10:
0x00041820 addiu v0, zero, 1 | v0 = 1;
0x00041824 move s3, zero | s3 = 0;
0x00041828 bne s4, v0, 0x417e8 |
| } while (s4 != v0);
0x0004182c sltu v0, s5, s0 | v0 = (s5 < s0) ? 1 : 0;
0x00041830 lw t9, -0x791c(gp) | t9 = sym.imp.__dn_skipname;
| if (v0 != 0) {
0x00041834 bnez v0, 0x417e8 | goto label_0;
| }
0x00041838 move a1, s5 | a1 = s5;
0x0004183c move a0, s0 | a0 = s0;
0x00041840 jalr t9 | t9 ();
0x00041844 addiu v1, zero, -1 | v1 = -1;
0x00041848 lw gp, 0x18(sp) | gp = *(var_18h);
| if (v0 == v1) {
0x0004184c beq v0, v1, 0x417e4 | goto label_1;
| }
0x00041850 addu s0, s0, v0 | s0 += v0;
0x00041854 addiu v0, s5, -0xa | v0 = s5 + -0xa;
0x00041858 sltu v0, s0, v0 | v0 = (s0 < v0) ? 1 : 0;
0x0004185c move s3, zero | s3 = 0;
| if (v0 == 0) {
0x00041860 beqz v0, 0x417e8 | goto label_0;
| }
0x00041864 lbu v0, 1(s0) | v0 = *((s0 + 1));
0x00041868 lbu v1, (s0) | v1 = *(s0);
0x0004186c sll v0, v0, 8 | v0 <<= 8;
0x00041870 or v0, v0, v1 | v0 |= v1;
0x00041874 wsbh v0, v0 | __asm ("wsbh v0, v0");
0x00041878 andi v0, v0, 0xffff | v0 &= 0xffff;
0x0004187c addiu v1, zero, 0x10 | v1 = 0x10;
| if (v0 != v1) {
0x00041880 bne v0, v1, 0x417e8 | goto label_0;
| }
0x00041884 nop |
0x00041888 lbu v0, 3(s0) | v0 = *((s0 + 3));
0x0004188c lbu v1, 2(s0) | v1 = *((s0 + 2));
0x00041890 sll v0, v0, 8 | v0 <<= 8;
0x00041894 or v0, v0, v1 | v0 |= v1;
0x00041898 wsbh v0, v0 | __asm ("wsbh v0, v0");
0x0004189c andi v0, v0, 0xffff | v0 &= 0xffff;
0x000418a0 lw t9, -0x7f28(gp) | t9 = sym.xmalloc;
| if (v0 != s4) {
0x000418a4 bne v0, s4, 0x417e8 | goto label_0;
| }
0x000418a8 lbu s4, 9(s0) | s4 = *((s0 + 9));
0x000418ac lbu v0, 8(s0) | v0 = *((s0 + 8));
0x000418b0 sll s4, s4, 8 | s4 <<= 8;
0x000418b4 or s4, s4, v0 | s4 |= v0;
0x000418b8 wsbh s4, s4 | __asm ("wsbh s4, s4");
0x000418bc andi s4, s4, 0xffff | s4 &= 0xffff;
0x000418c0 addiu a0, s4, 1 | a0 = s4 + 1;
0x000418c4 bal 0x3cb1c | sym_xmalloc ();
0x000418c8 move s3, v0 | s3 = v0;
0x000418cc lw gp, 0x18(sp) | gp = *(var_18h);
| if (s4 == 0) {
0x000418d0 beqz s4, 0x41b3c | goto label_12;
| }
0x000418d4 addiu v1, s0, 0xa | v1 = s0 + 0xa;
0x000418d8 sltu v0, v1, s5 | v0 = (v1 < s5) ? 1 : 0;
0x000418dc move v0, s3 | v0 = s3;
| if (v0 == 0) {
0x000418e0 beqz v0, 0x41940 | goto label_9;
| }
0x000418e4 addiu a0, s4, -1 | a0 = s4 + -1;
| label_4:
0x000418e8 addiu a3, v1, 1 | a3 = v1 + 1;
0x000418ec lbu a2, (v1) | a2 = *(v1);
| if (a0 == 0) {
0x000418f0 beqz a0, 0x41940 | goto label_9;
| }
| if (a2 == 0) {
0x000418f4 beql a2, zero, 0x41ae8 | goto label_13;
| }
0x000418f8 move s4, a0 | s4 = a0;
0x000418fc sltu a0, a3, s5 | a0 = (a3 < s5) ? 1 : 0;
0x00041900 addiu a0, v1, 2 | a0 = v1 + 2;
| if (a0 == 0) {
0x00041904 beqz a0, 0x41940 | goto label_9;
| }
0x00041908 addu a1, v1, s4 | a1 = v1 + s4;
0x0004190c addu a3, a3, a2 | a3 += a2;
0x00041910 b 0x41928 |
| while (a0 != a1) {
| if (a0 == a3) {
0x00041914 beql a0, a3, 0x41af0 | goto label_14;
| }
0x00041918 sltu a0, v1, s5 | a0 = (v1 < s5) ? 1 : 0;
0x0004191c addiu v1, a0, 1 | v1 = a0 + 1;
| if (s5 == a0) {
0x00041920 beq s5, a0, 0x41940 | goto label_9;
| }
0x00041924 move a0, v1 | a0 = v1;
0x00041928 addiu v0, v0, 1 | v0++;
0x0004192c lbu a2, -1(a0) | a2 = *((a0 - 1));
0x00041930 move v1, a0 | v1 = a0;
0x00041934 sb a2, -1(v0) | *((v0 - 1)) = a2;
0x00041938 subu s4, a1, a0 | __asm ("subu s4, a1, a0");
0x0004193c bne a0, a1, 0x41914 |
| }
| label_9:
0x00041940 lw t9, -0x789c(gp) | t9 = sym.imp.strchr;
| label_5:
0x00041944 sb zero, (v0) | *(v0) = 0;
0x00041948 addiu a1, zero, 0x3b | a1 = 0x3b;
0x0004194c move a0, s3 | a0 = s3;
0x00041950 jalr t9 | t9 ();
0x00041954 move s4, v0 | s4 = v0;
0x00041958 lw gp, 0x18(sp) | gp = *(var_18h);
| if (v0 != 0) {
0x0004195c beqz v0, 0x419fc |
0x00041960 lw a1, -0x7d90(gp) | a1 = *((gp - 8036));
0x00041964 lw t9, -0x77e0(gp) | t9 = sym.imp.strcmp;
0x00041968 sb zero, (v0) | *(v0) = 0;
| /* str.vpka1 */
0x0004196c addiu a1, a1, -0x6588 | a1 += -0x6588;
0x00041970 move a0, s3 | a0 = s3;
0x00041974 jalr t9 | t9 ();
0x00041978 addiu s5, s4, 1 | s5 = s4 + 1;
0x0004197c lw gp, 0x18(sp) | gp = *(var_18h);
| if (v0 != 0) {
0x00041980 bnez v0, 0x419fc | goto label_3;
| }
0x00041984 lw t9, -0x789c(gp) | t9 = sym.imp.strchr;
0x00041988 addiu a1, zero, 0x3b | a1 = 0x3b;
0x0004198c move a0, s5 | a0 = s5;
0x00041990 jalr t9 | t9 ();
0x00041994 lw gp, 0x18(sp) | gp = *(var_18h);
| if (v0 == 0) {
0x00041998 beqz v0, 0x41b34 | goto label_15;
| }
0x0004199c addiu s0, v0, 1 | s0 = v0 + 1;
0x000419a0 sb zero, (v0) | *(v0) = 0;
| label_8:
0x000419a4 lw a1, -0x7d90(gp) | a1 = *((gp - 8036));
0x000419a8 lw t9, -0x792c(gp) | t9 = sym.imp.strncmp;
0x000419ac addiu a2, zero, 4 | a2 = 4;
| /* str.fpr */
0x000419b0 addiu a1, a1, -0x6580 | a1 += -fcn.00006580;
0x000419b4 move a0, s5 | a0 = s5;
0x000419b8 jalr t9 | t9 ();
0x000419bc lw gp, 0x18(sp) | gp = *(var_18h);
| if (v0 != 0) {
0x000419c0 bnez v0, 0x419fc | goto label_3;
| }
0x000419c4 addiu a0, s4, 5 | a0 = s4 + 5;
0x000419c8 addiu a2, s4, 0x2d | a2 = s4 + 0x2d;
0x000419cc addiu a3, zero, -0x21 | a3 = -0x21;
| label_2:
0x000419d0 lb v0, (a0) | v0 = *(a0);
0x000419d4 andi v1, v0, 0xff | v1 = v0 & 0xff;
0x000419d8 addiu a1, v1, -0x30 | a1 = v1 + -0x30;
0x000419dc sltiu a1, a1, 0xa | a1 = (a1 < 0xa) ? 1 : 0;
0x000419e0 lb a1, 1(a0) | a1 = *((a0 + 1));
| if (a1 == 0) {
0x000419e4 bnel a1, zero, 0x41a14 | goto label_16;
| }
0x000419e8 and v1, v1, a3 | v1 &= a3;
0x000419ec addiu v1, v1, -0x41 | v1 += -0x41;
0x000419f0 sltiu v1, v1, 6 | v1 = (v1 < 6) ? 1 : 0;
0x000419f4 lb a1, 1(a0) | a1 = *((a0 + 1));
| if (v1 == 0) {
0x000419f8 bnel v1, zero, 0x41a14 | goto label_16;
| }
| }
| label_3:
0x000419fc lw t9, -0x7f24(gp) | t9 = sym.xfree;
| do {
0x00041a00 move a0, s3 | a0 = s3;
0x00041a04 bal 0x3cd20 | sym_xfree ();
0x00041a08 move s3, zero | s3 = 0;
0x00041a0c lw gp, 0x18(sp) | gp = *(var_18h);
0x00041a10 b 0x417e8 | goto label_0;
| label_16:
0x00041a14 andi t0, a1, 0xff | t0 = a1 & 0xff;
0x00041a18 addiu v1, t0, -0x30 | v1 = t0 + -0x30;
0x00041a1c andi v1, v1, 0xff | v1 &= 0xff;
0x00041a20 sltiu t1, v1, 0xa | t1 = (v1 < 0xa) ? 1 : 0;
0x00041a24 slti t1, v0, 0x3a | t1 = (v0 < 0x3a) ? 1 : 0;
| if (t1 != 0) {
0x00041a28 bnez t1, 0x41a44 | goto label_17;
| }
0x00041a2c and t1, t0, a3 | t1 = t0 & a3;
0x00041a30 addiu t1, t1, -0x41 | t1 += -0x41;
0x00041a34 sltiu t1, t1, 6 | t1 = (t1 < 6) ? 1 : 0;
0x00041a38 lw t9, -0x7f24(gp) | t9 = sym.xfree;
0x00041a3c beqz t1, 0x41a00 |
| } while (t1 == 0);
0x00041a40 slti t1, v0, 0x3a | t1 = (v0 < 0x3a) ? 1 : 0;
| label_17:
0x00041a44 slti t1, v0, 0x47 | t1 = (v0 < 0x47) ? 1 : 0;
| if (t1 == 0) {
0x00041a48 beqz t1, 0x41b00 | goto label_18;
| }
0x00041a4c sll v0, v0, 4 | v0 <<= 4;
0x00041a50 andi v0, v0, 0xf0 | v0 &= 0xf0;
| label_6:
0x00041a54 slti t1, a1, 0x3a | t1 = (a1 < 0x3a) ? 1 : 0;
0x00041a58 addu v0, v0, v1 | v0 += v1;
| if (t1 != 0) {
0x00041a5c bnel t1, zero, 0x41a78 |
0x00041a60 slti a1, a1, 0x47 | a1 = (a1 < 0x47) ? 1 : 0;
0x00041a64 addiu v1, t0, -0x57 | v1 = t0 + -0x57;
| if (a1 == 0) {
0x00041a68 beqz a1, 0x41b18 | goto label_19;
| }
0x00041a6c addiu v1, t0, -0x37 | v1 = t0 + -0x37;
0x00041a70 andi v1, v1, 0xff | v1 &= 0xff;
| label_7:
0x00041a74 addu v0, v0, v1 | v0 += v1;
| }
0x00041a78 addiu a0, a0, 2 | a0 += 2;
0x00041a7c sb v0, (s2) | *(s2) = v0;
0x00041a80 addiu s2, s2, 1 | s2++;
| if (a2 != a0) {
0x00041a84 bne a2, a0, 0x419d0 | goto label_2;
| }
| if (s0 == 0) {
0x00041a88 beql s0, zero, 0x417e8 | goto label_0;
| }
0x00041a8c sb zero, (s3) | *(s3) = 0;
0x00041a90 lb v0, (s0) | v0 = *(s0);
0x00041a94 lw a1, -0x7d90(gp) | a1 = *((gp - 8036));
| if (v0 == 0) {
0x00041a98 beqz v0, 0x41b2c | goto label_20;
| }
0x00041a9c lw t9, -0x792c(gp) | t9 = sym.imp.strncmp;
0x00041aa0 addiu a2, zero, 4 | a2 = 4;
| /* str.uri */
0x00041aa4 addiu a1, a1, -0x6578 | a1 += -0x6578;
0x00041aa8 move a0, s0 | a0 = s0;
0x00041aac jalr t9 | t9 ();
0x00041ab0 lw gp, 0x18(sp) | gp = *(var_18h);
| if (v0 != 0) {
0x00041ab4 bnez v0, 0x419fc | goto label_3;
| }
0x00041ab8 lb v1, 4(s0) | v1 = *((s0 + 4));
0x00041abc move v0, s3 | v0 = s3;
0x00041ac0 addiu s0, s0, 4 | s0 += 4;
| if (v1 == 0) {
0x00041ac4 beqz v1, 0x41ae0 | goto label_21;
| }
0x00041ac8 addiu v0, v0, 1 | v0++;
| do {
0x00041acc addiu s0, s0, 1 | s0++;
0x00041ad0 sb v1, -1(v0) | *((v0 - 1)) = v1;
0x00041ad4 lb v1, (s0) | v1 = *(s0);
0x00041ad8 addiu v0, v0, 1 | v0++;
0x00041adc bnel v1, zero, 0x41acc |
| } while (v1 == 0);
| label_21:
0x00041ae0 sb zero, (v0) | *(v0) = 0;
0x00041ae4 b 0x417e8 | goto label_0;
| label_13:
0x00041ae8 move v1, a3 | v1 = a3;
0x00041aec sltu a0, v1, s5 | a0 = (v1 < s5) ? 1 : 0;
| label_14:
0x00041af0 addiu a0, s4, -1 | a0 = s4 + -1;
| if (a0 != 0) {
0x00041af4 bnez a0, 0x418e8 | goto label_4;
| }
0x00041af8 lw t9, -0x789c(gp) | t9 = sym.imp.strchr;
0x00041afc b 0x41944 | goto label_5;
| if (t1 != 0) {
| label_18:
0x00041b00 beql t1, zero, 0x41b20 |
0x00041b04 addiu v0, v0, -0x57 | v0 += -0x57;
0x00041b08 addiu v0, v0, -0x37 | v0 += -0x37;
0x00041b0c sll v0, v0, 4 | v0 <<= 4;
0x00041b10 andi v0, v0, 0xff | v0 &= 0xff;
0x00041b14 b 0x41a54 | goto label_6;
| label_19:
0x00041b18 andi v1, v1, 0xff | v1 &= 0xff;
0x00041b1c b 0x41a74 | goto label_7;
| }
0x00041b20 sll v0, v0, 4 | v0 <<= 4;
0x00041b24 andi v0, v0, 0xff | v0 &= 0xff;
0x00041b28 b 0x41a54 | goto label_6;
| label_20:
0x00041b2c sb zero, (s3) | *(s3) = 0;
0x00041b30 b 0x417e8 | goto label_0;
| label_15:
0x00041b34 move s0, zero | s0 = 0;
0x00041b38 b 0x419a4 | goto label_8;
| label_12:
0x00041b3c move v0, s3 | v0 = s3;
0x00041b40 b 0x41940 | goto label_9;
| label_11:
0x00041b44 lw t9, -0x7834(gp) | t9 = sym.imp.__stack_chk_fail;
0x00041b48 jalr t9 | t9 ();
0x00041b4c nop |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/4325012-58052244.squashfs_v4_le_extract/usr/bin/gpgv @ 0x22cb4 */
| #include <stdint.h>
|
; (fcn) sym.handle_plaintext () | void handle_plaintext () {
0x00022cb4 lui gp, 4 |
0x00022cb8 addiu gp, gp, -0xb84 |
0x00022cbc addu gp, gp, t9 | gp += t9;
0x00022cc0 lw v0, -0x781c(gp) | v0 = *((gp - 7687));
0x00022cc4 addiu sp, sp, -0x88 |
0x00022cc8 lw v1, (v0) | v1 = *(v0);
0x00022ccc sw v0, 0x20(sp) | *(var_20h) = v0;
0x00022cd0 lw v0, 0xc(a0) | v0 = *((a0 + 3));
0x00022cd4 sw gp, 0x18(sp) | *(var_18h) = gp;
0x00022cd8 sw s5, 0x74(sp) | *(var_74h) = s5;
0x00022cdc sw s4, 0x70(sp) | *(var_70h) = s4;
0x00022ce0 sw s2, 0x68(sp) | *(var_68h) = s2;
0x00022ce4 sw s0, 0x60(sp) | *(var_60h) = s0;
0x00022ce8 sw ra, 0x84(sp) | *(var_84h) = ra;
0x00022cec sw fp, 0x80(sp) | *(var_80h) = fp;
0x00022cf0 sw s7, 0x7c(sp) | *(var_7ch) = s7;
0x00022cf4 sw s6, 0x78(sp) | *(var_78h) = s6;
0x00022cf8 sw s3, 0x6c(sp) | *(var_6ch) = s3;
0x00022cfc sw s1, 0x64(sp) | *(var_64h) = s1;
0x00022d00 move s0, a0 | s0 = a0;
0x00022d04 move s2, a1 | s2 = a1;
0x00022d08 move s5, a3 | s5 = a3;
0x00022d0c sw v1, 0x5c(sp) | *(var_5ch) = v1;
0x00022d10 addiu s4, v0, -0x74 | s4 = v0 + -0x74;
| if (a2 == 0) {
0x00022d14 beqz a2, 0x230cc | goto label_35;
| }
0x00022d18 move s3, zero | s3 = 0;
0x00022d1c move s1, zero | s1 = 0;
| label_5:
0x00022d20 lbu v0, 9(s0) | v0 = *((s0 + 9));
| if (v0 != 0) {
| label_6:
0x00022d24 bnez v0, 0x22e9c | goto label_36;
| }
0x00022d28 nop |
0x00022d2c sltiu v0, s4, 2 | v0 = (s4 < 2) ? 1 : 0;
| if (s5 != 0) {
0x00022d30 bnez s5, 0x23868 | goto label_37;
| }
0x00022d34 lw t9, -0x7f28(gp) | t9 = sym.xmalloc;
| if (v0 == 0) {
0x00022d38 beqz v0, 0x23618 | goto label_38;
| }
0x00022d3c lw v0, (s0) | v0 = *(s0);
0x00022d40 lw s6, -0x7fc8(gp) | s6 = *(gp);
| if (v0 == 0) {
0x00022d44 beqz v0, 0x2300c | goto label_14;
| }
0x00022d48 lw s4, -0x7fb4(gp) | s4 = *((gp - 8173));
0x00022d4c addiu s5, zero, -1 | s5 = -1;
0x00022d50 addiu s7, zero, 0xd | s7 = 0xd;
0x00022d54 b 0x22e20 |
| while (v1 == 0) {
0x00022d58 lw a3, 0x14(a0) | a3 = *((a0 + 5));
0x00022d5c addiu a1, v1, 1 | a1 = v1 + 1;
0x00022d60 sltu v1, a1, v1 | v1 = (a1 < v1) ? 1 : 0;
0x00022d64 lw a2, 0x34(a0) | a2 = *((a0 + 13));
0x00022d68 addu v1, v1, a3 | v1 += a3;
0x00022d6c addiu a3, v0, 1 | a3 = v0 + 1;
0x00022d70 sw a1, 0x10(a0) | *((a0 + 4)) = a1;
0x00022d74 sw v1, 0x14(a0) | *((a0 + 5)) = v1;
0x00022d78 sw a3, 0x2c(a0) | *((a0 + 11)) = a3;
0x00022d7c lbux v0, v0(a2) | __asm ("lbux v0, v0(a2)");
| label_0:
0x00022d80 lw a0, (s2) | a0 = *(s2);
| if (a0 != 0) {
0x00022d84 beqz a0, 0x22dac |
0x00022d88 nop |
0x00022d8c lw v1, 0x10(a0) | v1 = *((a0 + 4));
0x00022d90 lw a1, 0x14(a0) | a1 = *((a0 + 5));
0x00022d94 lw t9, -0x7be4(gp) | t9 = sym.md_write;
| if (v1 == a1) {
0x00022d98 beq v1, a1, 0x22fd8 | goto label_39;
| }
| label_4:
0x00022d9c addu a1, a0, v1 | a1 = a0 + v1;
0x00022da0 addiu v1, v1, 1 | v1++;
0x00022da4 sw v1, 0x10(a0) | *((a0 + 4)) = v1;
0x00022da8 sb v0, 0x18(a1) | *((a1 + 24)) = v0;
| }
| if (v0 != s7) {
0x00022dac beql v0, s7, 0x22e14 |
0x00022db0 lw v0, (s0) | v0 = *(s0);
| if (s1 == 0) {
0x00022db4 beql s1, zero, 0x22e14 | goto label_40;
| }
0x00022db8 lw v0, (s0) | v0 = *(s0);
0x00022dbc lw a2, 0x18(s6) | a2 = *((s6 + 6));
0x00022dc0 lw a0, 0x1c(s6) | a0 = *((s6 + 7));
0x00022dc4 or v1, a2, a0 | v1 = a2 | a0;
0x00022dc8 lw v1, -0x4c98(s4) | v1 = *((s4 - 4902));
| if (v1 != 0) {
0x00022dcc beqz v1, 0x22df8 |
0x00022dd0 lw a3, -0x4c94(s4) | a3 = *((s4 - 4901));
0x00022dd4 addiu a1, v1, 1 | a1 = v1 + 1;
0x00022dd8 sltu v1, a1, v1 | v1 = (a1 < v1) ? 1 : 0;
0x00022ddc addu v1, v1, a3 | v1 += a3;
0x00022de0 slt a3, a0, v1 | a3 = (a0 < v1) ? 1 : 0;
0x00022de4 sw a1, -0x4c98(s4) | *((s4 - 4902)) = a1;
0x00022de8 sw v1, -0x4c94(s4) | *((s4 - 4901)) = v1;
| if (a3 != 0) {
0x00022dec bnez a3, 0x237f0 | goto label_41;
| }
0x00022df0 sltu a1, a2, a1 | a1 = (a2 < a1) ? 1 : 0;
| if (v1 == a0) {
0x00022df4 beq v1, a0, 0x23924 | goto label_42;
| }
| }
0x00022df8 lw t9, -0x7840(gp) | t9 = sym.imp._IO_putc;
| label_30:
0x00022dfc move a1, s1 | a1 = s1;
0x00022e00 move a0, v0 | a0 = v0;
0x00022e04 jalr t9 | t9 ();
0x00022e08 lw gp, 0x18(sp) | gp = *(var_18h);
| if (v0 == s5) {
0x00022e0c beq v0, s5, 0x22f98 | goto label_10;
| }
0x00022e10 lw v0, (s0) | v0 = *(s0);
| }
| label_40:
0x00022e14 addiu v0, v0, -1 | v0 += -1;
0x00022e18 sw v0, (s0) | *(s0) = v0;
| if (v0 == 0) {
0x00022e1c beqz v0, 0x2300c | goto label_14;
| }
0x00022e20 lw a0, 4(s0) | a0 = *((s0 + 1));
0x00022e24 lw v0, 0x20(a0) | v0 = *((a0 + 8));
0x00022e28 lw t9, -0x7c38(gp) | t9 = sym.iobuf_readbyte;
| if (v0 != 0) {
0x00022e2c bnez v0, 0x22e48 | goto label_43;
| }
0x00022e30 lw v0, 0x2c(a0) | v0 = *((a0 + 11));
0x00022e34 lw v1, 0x30(a0) | v1 = *((a0 + 12));
0x00022e38 sltu v1, v0, v1 | v1 = (v0 < v1) ? 1 : 0;
0x00022e3c lw v1, 0x10(a0) | v1 = *((a0 + 4));
0x00022e40 bnel v1, zero, 0x22d58 |
| }
0x00022e44 lw t9, -0x7c38(gp) | t9 = sym.iobuf_readbyte;
| label_43:
0x00022e48 bal 0x3fb3c | sym_iobuf_readbyte ();
0x00022e4c nop |
0x00022e50 lw gp, 0x18(sp) | gp = *(var_18h);
| if (v0 != s5) {
0x00022e54 bne v0, s5, 0x22d80 | goto label_0;
| }
0x00022e58 lw a0, -0x7fdc(gp) | a0 = *(gp);
0x00022e5c lw t9, -0x7f84(gp) | t9 = sym.g10_log_error;
0x00022e60 lw a1, (s0) | a1 = *(s0);
| /* str.Problem_reading_source___u_bytes_remaining__n */
0x00022e64 addiu a0, a0, 0x6da4 | a0 += 0x6da4;
0x00022e68 bal 0x38550 | sym_g10_log_error ();
0x00022e6c lw gp, 0x18(sp) | gp = *(var_18h);
0x00022e70 addiu s0, zero, 0x15 | s0 = 0x15;
| label_27:
0x00022e74 lw t9, -0x7f24(gp) | t9 = sym.xfree;
| if (s1 == 0) {
0x00022e78 beqz s1, 0x2307c | goto label_44;
| }
| label_3:
0x00022e7c lw v0, -0x78e0(gp) | v0 = *((gp - 7736));
0x00022e80 lw v0, (v0) | v0 = *(v0);
0x00022e84 lw t9, -0x7910(gp) | t9 = sym.imp.fclose;
| if (v0 == s1) {
0x00022e88 beq v0, s1, 0x23078 | goto label_9;
| }
0x00022e8c move a0, s1 | a0 = s1;
0x00022e90 jalr t9 | t9 ();
0x00022e94 lw gp, 0x18(sp) | gp = *(var_18h);
0x00022e98 b 0x23078 | goto label_9;
| label_36:
0x00022e9c lw s6, -0x7fc8(gp) | s6 = *(gp);
| if (s5 != 0) {
0x00022ea0 bnez s5, 0x23268 | goto label_45;
| }
0x00022ea4 sltiu v0, s4, 2 | v0 = (s4 < 2) ? 1 : 0;
0x00022ea8 lw s4, -0x7fb4(gp) | s4 = *((gp - 8173));
| if (v0 == 0) {
0x00022eac beqz v0, 0x23468 | goto label_46;
| }
0x00022eb0 addiu s5, zero, -1 | s5 = -1;
0x00022eb4 addiu s7, zero, 0xd | s7 = 0xd;
| label_2:
0x00022eb8 lw a0, 4(s0) | a0 = *((s0 + 1));
| do {
| label_1:
0x00022ebc lw v0, 0x20(a0) | v0 = *((a0 + 8));
0x00022ec0 lw t9, -0x7c38(gp) | t9 = sym.iobuf_readbyte;
| if (v0 != 0) {
0x00022ec4 bnez v0, 0x235dc | goto label_47;
| }
0x00022ec8 lw v0, 0x2c(a0) | v0 = *((a0 + 11));
0x00022ecc lw v1, 0x30(a0) | v1 = *((a0 + 12));
0x00022ed0 sltu v1, v0, v1 | v1 = (v0 < v1) ? 1 : 0;
| if (v1 == 0) {
0x00022ed4 beqz v1, 0x235dc | goto label_47;
| }
0x00022ed8 nop |
0x00022edc lw v1, 0x10(a0) | v1 = *((a0 + 4));
0x00022ee0 lw a3, 0x14(a0) | a3 = *((a0 + 5));
0x00022ee4 addiu a1, v1, 1 | a1 = v1 + 1;
0x00022ee8 sltu v1, a1, v1 | v1 = (a1 < v1) ? 1 : 0;
0x00022eec lw a2, 0x34(a0) | a2 = *((a0 + 13));
0x00022ef0 addu v1, v1, a3 | v1 += a3;
0x00022ef4 addiu a3, v0, 1 | a3 = v0 + 1;
0x00022ef8 sw a1, 0x10(a0) | *((a0 + 4)) = a1;
0x00022efc sw v1, 0x14(a0) | *((a0 + 5)) = v1;
0x00022f00 sw a3, 0x2c(a0) | *((a0 + 11)) = a3;
0x00022f04 lbux v0, v0(a2) | __asm ("lbux v0, v0(a2)");
| label_18:
0x00022f08 lw a0, (s2) | a0 = *(s2);
| if (a0 != 0) {
0x00022f0c beqz a0, 0x22f34 |
0x00022f10 nop |
0x00022f14 lw v1, 0x10(a0) | v1 = *((a0 + 4));
0x00022f18 lw a1, 0x14(a0) | a1 = *((a0 + 5));
| if (v1 == a1) {
0x00022f1c beql v1, a1, 0x235f4 | goto label_48;
| }
0x00022f20 lw t9, -0x7be4(gp) | t9 = sym.md_write;
| label_19:
0x00022f24 addu a1, a0, v1 | a1 = a0 + v1;
0x00022f28 addiu v1, v1, 1 | v1++;
0x00022f2c sw v1, 0x10(a0) | *((a0 + 4)) = v1;
0x00022f30 sb v0, 0x18(a1) | *((a1 + 24)) = v0;
| }
0x00022f34 beql v0, s7, 0x22ebc |
| } while (v0 == s7);
0x00022f38 lw a0, 4(s0) | a0 = *((s0 + 1));
| if (s1 == 0) {
0x00022f3c beql s1, zero, 0x22ebc | goto label_1;
| }
0x00022f40 lw a0, 4(s0) | a0 = *((s0 + 1));
0x00022f44 lw a2, 0x18(s6) | a2 = *((s6 + 6));
0x00022f48 lw a0, 0x1c(s6) | a0 = *((s6 + 7));
0x00022f4c or v1, a2, a0 | v1 = a2 | a0;
0x00022f50 lw v1, -0x4c98(s4) | v1 = *((s4 - 4902));
| if (v1 != 0) {
0x00022f54 beqz v1, 0x22f80 |
0x00022f58 lw a3, -0x4c94(s4) | a3 = *((s4 - 4901));
0x00022f5c addiu a1, v1, 1 | a1 = v1 + 1;
0x00022f60 sltu v1, a1, v1 | v1 = (a1 < v1) ? 1 : 0;
0x00022f64 addu v1, v1, a3 | v1 += a3;
0x00022f68 slt a3, a0, v1 | a3 = (a0 < v1) ? 1 : 0;
0x00022f6c sw a1, -0x4c98(s4) | *((s4 - 4902)) = a1;
0x00022f70 sw v1, -0x4c94(s4) | *((s4 - 4901)) = v1;
| if (a3 != 0) {
0x00022f74 bnez a3, 0x237f0 | goto label_41;
| }
0x00022f78 sltu a1, a2, a1 | a1 = (a2 < a1) ? 1 : 0;
| if (v1 == a0) {
0x00022f7c beq v1, a0, 0x23934 | goto label_49;
| }
| }
0x00022f80 lw t9, -0x7840(gp) | t9 = sym.imp._IO_putc;
| label_32:
0x00022f84 move a1, s1 | a1 = s1;
0x00022f88 move a0, v0 | a0 = v0;
0x00022f8c jalr t9 | t9 ();
0x00022f90 lw gp, 0x18(sp) | gp = *(var_18h);
| if (v0 != s5) {
0x00022f94 bne v0, s5, 0x22eb8 | goto label_2;
| }
| label_10:
0x00022f98 lw t9, -0x78c4(gp) | t9 = sym.imp.__errno_location;
0x00022f9c addiu s0, zero, 0x16 | s0 = 0x16;
0x00022fa0 jalr t9 | t9 ();
0x00022fa4 lw gp, 0x18(sp) | gp = *(var_18h);
0x00022fa8 lw t9, -0x787c(gp) | t9 = sym.imp.strerror;
0x00022fac lw a0, (v0) | a0 = *(v0);
0x00022fb0 jalr t9 | t9 ();
0x00022fb4 lw gp, 0x18(sp) | gp = *(var_18h);
0x00022fb8 move a2, v0 | a2 = v0;
0x00022fbc move a1, s3 | a1 = s3;
0x00022fc0 lw a0, -0x7fdc(gp) | a0 = *(gp);
0x00022fc4 lw t9, -0x7f84(gp) | t9 = sym.g10_log_error;
| /* str.Error_writing_to___s:__s_n */
0x00022fc8 addiu a0, a0, 0x6df4 | a0 += 0x6df4;
0x00022fcc bal 0x38550 | sym_g10_log_error ();
0x00022fd0 lw gp, 0x18(sp) | gp = *(var_18h);
0x00022fd4 b 0x22e7c | goto label_3;
| label_39:
0x00022fd8 sw v0, 0x24(sp) | *(var_24h) = v0;
0x00022fdc move a2, zero | a2 = 0;
0x00022fe0 move a1, zero | a1 = 0;
0x00022fe4 bal 0x28014 | sym_md_write ();
0x00022fe8 lw a0, (s2) | a0 = *(s2);
0x00022fec lw gp, 0x18(sp) | gp = *(var_18h);
0x00022ff0 lw v0, 0x24(sp) | v0 = *(var_24h);
0x00022ff4 lw v1, 0x10(a0) | v1 = *((a0 + 4));
0x00022ff8 b 0x22d9c | goto label_4;
| label_20:
0x00022ffc lw t9, -0x7f24(gp) | t9 = sym.xfree;
0x00023000 move a0, s4 | a0 = s4;
0x00023004 bal 0x3cd20 | sym_xfree ();
0x00023008 lw gp, 0x18(sp) | gp = *(var_18h);
| label_14:
0x0002300c move s0, zero | s0 = 0;
| if (s1 != 0) {
0x00023010 beqz s1, 0x23078 |
0x00023014 lw v0, -0x78e0(gp) | v0 = *((gp - 7736));
0x00023018 lw v0, (v0) | v0 = *(v0);
0x0002301c lw t9, -0x7910(gp) | t9 = sym.imp.fclose;
| if (v0 == s1) {
0x00023020 beq v0, s1, 0x23078 | goto label_9;
| }
0x00023024 move a0, s1 | a0 = s1;
0x00023028 jalr t9 | t9 ();
0x0002302c move s0, v0 | s0 = v0;
0x00023030 lw gp, 0x18(sp) | gp = *(var_18h);
| if (v0 == 0) {
0x00023034 beqz v0, 0x23078 | goto label_9;
| }
0x00023038 lw t9, -0x78c4(gp) | t9 = sym.imp.__errno_location;
0x0002303c addiu s0, zero, 0x16 | s0 = 0x16;
0x00023040 jalr t9 | t9 ();
0x00023044 lw gp, 0x18(sp) | gp = *(var_18h);
0x00023048 lw t9, -0x787c(gp) | t9 = sym.imp.strerror;
0x0002304c lw a0, (v0) | a0 = *(v0);
0x00023050 jalr t9 | t9 ();
0x00023054 lw gp, 0x18(sp) | gp = *(var_18h);
0x00023058 move a2, v0 | a2 = v0;
0x0002305c move a1, s3 | a1 = s3;
0x00023060 lw a0, -0x7fdc(gp) | a0 = *(gp);
0x00023064 lw t9, -0x7f84(gp) | t9 = sym.g10_log_error;
| /* str.Error_closing___s:__s_n */
0x00023068 addiu a0, a0, 0x6e10 | a0 += 0x6e10;
0x0002306c bal 0x38550 | sym_g10_log_error ();
0x00023070 lw gp, 0x18(sp) | gp = *(var_18h);
0x00023074 b 0x23078 |
| }
| label_9:
0x00023078 lw t9, -0x7f24(gp) | t9 = sym.xfree;
| label_44:
0x0002307c move a0, s3 | a0 = s3;
0x00023080 bal 0x3cd20 | sym_xfree ();
0x00023084 lw v0, 0x20(sp) | v0 = *(var_20h);
0x00023088 lw a0, 0x5c(sp) | a0 = *(var_5ch);
0x0002308c lw gp, 0x18(sp) | gp = *(var_18h);
0x00023090 lw v1, (v0) | v1 = *(v0);
0x00023094 move v0, s0 | v0 = s0;
| if (a0 != v1) {
0x00023098 bne a0, v1, 0x23954 | goto label_50;
| }
0x0002309c lw ra, 0x84(sp) | ra = *(var_84h);
0x000230a0 lw fp, 0x80(sp) | fp = *(var_80h);
0x000230a4 lw s7, 0x7c(sp) | s7 = *(var_7ch);
0x000230a8 lw s6, 0x78(sp) | s6 = *(var_78h);
0x000230ac lw s5, 0x74(sp) | s5 = *(var_74h);
0x000230b0 lw s4, 0x70(sp) | s4 = *(var_70h);
0x000230b4 lw s3, 0x6c(sp) | s3 = *(var_6ch);
0x000230b8 lw s2, 0x68(sp) | s2 = *(var_68h);
0x000230bc lw s1, 0x64(sp) | s1 = *(var_64h);
0x000230c0 lw s0, 0x60(sp) | s0 = *(var_60h);
0x000230c4 addiu sp, sp, 0x88 |
0x000230c8 jr ra | return v0;
| label_35:
0x000230cc lw t9, -0x7d88(gp) | t9 = sym.is_status_enabled;
0x000230d0 bal 0x21b70 | sym_is_status_enabled ();
0x000230d4 nop |
0x000230d8 lw gp, 0x18(sp) | gp = *(var_18h);
| if (v0 != 0) {
0x000230dc bnez v0, 0x2374c | goto label_51;
| }
| label_25:
0x000230e0 lw s1, -0x7fc8(gp) | s1 = *(gp);
0x000230e4 lw s3, 0x10(s1) | s3 = *((s1 + 4));
0x000230e8 lw t9, -0x78a0(gp) | t9 = sym.imp.strlen;
| if (s3 == 0) {
0x000230ec beqz s3, 0x231fc | goto label_52;
| }
0x000230f0 move a0, s3 | a0 = s3;
0x000230f4 jalr t9 | t9 ();
0x000230f8 lw gp, 0x18(sp) | gp = *(var_18h);
0x000230fc lw t9, -0x7f28(gp) | t9 = sym.xmalloc;
0x00023100 addiu a0, v0, 1 | a0 = v0 + 1;
0x00023104 bal 0x3cb1c | sym_xmalloc ();
0x00023108 lw gp, 0x18(sp) | gp = *(var_18h);
0x0002310c lw a1, 0x10(s1) | a1 = *((s1 + 4));
0x00023110 move a0, v0 | a0 = v0;
0x00023114 lw t9, -0x7854(gp) | t9 = sym.imp.strcpy
0x00023118 move s3, v0 | s3 = v0;
0x0002311c jalr t9 | t9 ();
0x00023120 lw gp, 0x18(sp) | gp = *(var_18h);
| label_8:
0x00023124 lw t9, -0x7c2c(gp) | t9 = sym.iobuf_is_pipe_filename;
0x00023128 move a0, s3 | a0 = s3;
0x0002312c bal 0x3e7c0 | sym_iobuf_is_pipe_filename ();
0x00023130 lw gp, 0x18(sp) | gp = *(var_18h);
| if (v0 != 0) {
0x00023134 bnez v0, 0x231e4 | goto label_53;
| }
0x00023138 lb v0, (s3) | v0 = *(s3);
0x0002313c lw t9, -0x7b64(gp) | t9 = sym.overwrite_filep;
| if (v0 != 0) {
0x00023140 bnez v0, 0x23184 | goto label_54;
| }
0x00023144 lw v0, -0x78e0(gp) | v0 = *((gp - 7736));
0x00023148 b 0x231e8 | goto label_55;
| do {
0x0002314c lw t9, -0x7b60(gp) | t9 = sym.ask_outfile_name;
0x00023150 move a1, zero | a1 = 0;
0x00023154 move a0, zero | a0 = 0;
0x00023158 bal 0x186f4 | sym_ask_outfile_name ();
0x0002315c lw gp, 0x18(sp) | gp = *(var_18h);
0x00023160 lw t9, -0x7f24(gp) | t9 = sym.xfree;
| if (v0 == 0) {
0x00023164 beqz v0, 0x23884 | goto label_56;
| }
0x00023168 lb v1, (v0) | v1 = *(v0);
0x0002316c move a0, s3 | a0 = s3;
| if (v1 == 0) {
0x00023170 beqz v1, 0x23884 | goto label_56;
| }
0x00023174 move s3, v0 | s3 = v0;
0x00023178 bal 0x3cd20 | sym_xfree ();
0x0002317c lw gp, 0x18(sp) | gp = *(var_18h);
0x00023180 lw t9, -0x7b64(gp) | t9 = sym.overwrite_filep;
| label_54:
0x00023184 move a0, s3 | a0 = s3;
0x00023188 bal 0x18440 | sym_overwrite_filep ();
0x0002318c lw gp, 0x18(sp) | gp = *(var_18h);
0x00023190 beqz v0, 0x2314c |
| } while (v0 == 0);
0x00023194 lw t9, -0x7e08(gp) | t9 = sym.is_secured_filename;
| label_7:
0x00023198 move a0, s3 | a0 = s3;
0x0002319c bal 0x180cc | sym_is_secured_filename ();
0x000231a0 lw gp, 0x18(sp) | gp = *(var_18h);
| if (v0 != 0) {
0x000231a4 bnez v0, 0x23590 | goto label_57;
| }
0x000231a8 lw a1, -0x7fdc(gp) | a1 = *(gp);
0x000231ac lw t9, -0x7918(gp) | t9 = sym.imp.fopen64;
| /* esilref: 'wb' */
0x000231b0 addiu a1, a1, 0x6d74 | a1 += 0x6d74;
0x000231b4 move a0, s3 | a0 = s3;
0x000231b8 jalr t9 | t9 ();
0x000231bc move s1, v0 | s1 = v0;
0x000231c0 lw gp, 0x18(sp) | gp = *(var_18h);
| if (v0 != 0) {
0x000231c4 bnez v0, 0x22d20 | goto label_5;
| }
0x000231c8 lw t9, -0x78c4(gp) | t9 = sym.imp.__errno_location;
0x000231cc addiu s0, zero, 0x19 | s0 = 0x19;
0x000231d0 jalr t9 | t9 ();
0x000231d4 lw gp, 0x18(sp) | gp = *(var_18h);
0x000231d8 lw a0, (v0) | a0 = *(v0);
0x000231dc lw t9, -0x787c(gp) | t9 = sym.imp.strerror;
0x000231e0 b 0x235b0 | goto label_58;
| label_53:
0x000231e4 lw v0, -0x78e0(gp) | v0 = *((gp - 7736));
| label_55:
0x000231e8 lw s1, (v0) | s1 = *(v0);
0x000231ec lbu v0, 9(s0) | v0 = *((s0 + 9));
| if (s1 == 0) {
0x000231f0 bnel s1, zero, 0x22d24 | goto label_6;
| }
0x000231f4 lw t9, -0x7e08(gp) | t9 = sym.is_secured_filename;
0x000231f8 b 0x23198 | goto label_7;
| label_52:
0x000231fc lw s6, 0x14(s0) | s6 = *((s0 + 5));
0x00023200 addiu v0, zero, 8 | v0 = 8;
0x00023204 lw a1, -0x7fdc(gp) | a1 = *(gp);
| if (s6 == v0) {
0x00023208 beq s6, v0, 0x23558 | goto label_59;
| }
| label_17:
0x0002320c lbu v0, 0x228(s1) | v0 = *(s1);
0x00023210 andi v0, v0, 2 | v0 &= 2;
0x00023214 lw t9, -0x7e2c(gp) | t9 = sym.utf8_to_native;
| if (v0 != 0) {
0x00023218 bnez v0, 0x2344c | goto label_60;
| }
0x0002321c lw t9, -0x7c60(gp) | t9 = sym.iobuf_get_real_fname;
0x00023220 lw a0, 4(s0) | a0 = *((s0 + 1));
0x00023224 bal 0x41108 | sym_iobuf_get_real_fname ();
0x00023228 lw gp, 0x18(sp) | gp = *(var_18h);
0x0002322c lw t9, -0x7b5c(gp) | t9 = sym.make_outfile_name;
0x00023230 move a0, v0 | a0 = v0;
0x00023234 bal 0x18540 | sym_make_outfile_name ();
0x00023238 move s3, v0 | s3 = v0;
0x0002323c lw gp, 0x18(sp) | gp = *(var_18h);
| if (v0 != 0) {
0x00023240 bnez v0, 0x23124 | goto label_8;
| }
0x00023244 lw t9, -0x7b60(gp) | t9 = sym.ask_outfile_name;
0x00023248 lw a1, 0x14(s0) | a1 = *((s0 + 5));
0x0002324c addiu a0, s0, 0x18 | a0 = s0 + 0x18;
0x00023250 bal 0x186f4 | sym_ask_outfile_name ();
0x00023254 move s3, v0 | s3 = v0;
0x00023258 lw gp, 0x18(sp) | gp = *(var_18h);
| if (v0 != 0) {
0x0002325c bnez v0, 0x23124 | goto label_8;
| }
0x00023260 addiu s0, zero, 0x19 | s0 = 0x19;
0x00023264 b 0x23078 | goto label_9;
| label_45:
0x00023268 lw s5, -0x7fb4(gp) | s5 = *((gp - 8173));
0x0002326c move s4, zero | s4 = 0;
0x00023270 addiu s7, zero, -1 | s7 = -1;
| label_11:
0x00023274 lw a0, 4(s0) | a0 = *((s0 + 1));
0x00023278 lw v0, 0x20(a0) | v0 = *((a0 + 8));
0x0002327c lw t9, -0x7c38(gp) | t9 = sym.iobuf_readbyte;
| if (v0 != 0) {
0x00023280 bnez v0, 0x233b0 | goto label_61;
| }
| label_12:
0x00023284 lw v1, 0x2c(a0) | v1 = *((a0 + 11));
0x00023288 lw v0, 0x30(a0) | v0 = *((a0 + 12));
0x0002328c sltu v0, v1, v0 | v0 = (v1 < v0) ? 1 : 0;
0x00023290 lw t9, -0x7c38(gp) | t9 = sym.iobuf_readbyte;
| if (v0 == 0) {
0x00023294 beqz v0, 0x233b0 | goto label_61;
| }
0x00023298 lw v0, 0x10(a0) | v0 = *((a0 + 4));
0x0002329c lw a3, 0x14(a0) | a3 = *((a0 + 5));
0x000232a0 addiu a1, v0, 1 | a1 = v0 + 1;
0x000232a4 sltu v0, a1, v0 | v0 = (a1 < v0) ? 1 : 0;
0x000232a8 lw a2, 0x34(a0) | a2 = *((a0 + 13));
0x000232ac addu v0, v0, a3 | v0 += a3;
0x000232b0 addiu a3, v1, 1 | a3 = v1 + 1;
0x000232b4 sw a1, 0x10(a0) | *((a0 + 4)) = a1;
0x000232b8 sw v0, 0x14(a0) | *((a0 + 5)) = v0;
0x000232bc sw a3, 0x2c(a0) | *((a0 + 11)) = a3;
0x000232c0 lbux fp, v1(a2) | __asm ("lbux fp, v1(a2)");
| if (s1 == 0) {
| label_13:
0x000232c4 beql s1, zero, 0x23324 | goto label_62;
| }
0x000232c8 lw a0, (s2) | a0 = *(s2);
0x000232cc lw a2, 0x18(s6) | a2 = *((s6 + 6));
0x000232d0 lw a0, 0x1c(s6) | a0 = *((s6 + 7));
0x000232d4 or v0, a2, a0 | v0 = a2 | a0;
0x000232d8 lw v0, -0x4c98(s5) | v0 = *((s5 - 4902));
| if (v0 != 0) {
0x000232dc beqz v0, 0x23308 |
0x000232e0 lw a3, -0x4c94(s5) | a3 = *((s5 - 4901));
0x000232e4 addiu a1, v0, 1 | a1 = v0 + 1;
0x000232e8 sltu v0, a1, v0 | v0 = (a1 < v0) ? 1 : 0;
0x000232ec addu v0, v0, a3 | v0 += a3;
0x000232f0 slt a3, a0, v0 | a3 = (a0 < v0) ? 1 : 0;
0x000232f4 sw a1, -0x4c98(s5) | *((s5 - 4902)) = a1;
0x000232f8 sw v0, -0x4c94(s5) | *((s5 - 4901)) = v0;
| if (a3 != 0) {
0x000232fc bnez a3, 0x237f0 | goto label_41;
| }
0x00023300 sltu a1, a2, a1 | a1 = (a2 < a1) ? 1 : 0;
| if (v0 == a0) {
0x00023304 beq v0, a0, 0x237e8 | goto label_63;
| }
| }
0x00023308 lw t9, -0x7840(gp) | t9 = sym.imp._IO_putc;
| label_26:
0x0002330c move a1, s1 | a1 = s1;
0x00023310 move a0, fp | a0 = fp;
0x00023314 jalr t9 | t9 ();
0x00023318 lw gp, 0x18(sp) | gp = *(var_18h);
| if (v0 == s7) {
0x0002331c beq v0, s7, 0x22f98 | goto label_10;
| }
0x00023320 lw a0, (s2) | a0 = *(s2);
| label_62:
0x00023324 addiu v0, zero, 2 | v0 = 2;
| if (a0 == 0) {
0x00023328 beqz a0, 0x23274 | goto label_11;
| }
| if (s4 == v0) {
0x0002332c beql s4, v0, 0x233cc | goto label_64;
| }
0x00023330 lw v0, 0x10(a0) | v0 = *((a0 + 4));
0x00023334 addiu v0, zero, 0xd | v0 = 0xd;
| if (s4 == 0) {
0x00023338 beqz s4, 0x23408 | goto label_65;
| }
0x0002333c addiu v0, zero, 0xa | v0 = 0xa;
| if (fp != v0) {
0x00023340 beql fp, v0, 0x233a0 |
0x00023344 lw a0, 4(s0) | a0 = *((s0 + 1));
0x00023348 lw v0, 0x10(a0) | v0 = *((a0 + 4));
0x0002334c lw a1, 0x14(a0) | a1 = *((a0 + 5));
0x00023350 lw t9, -0x7be4(gp) | t9 = sym.md_write;
| if (v0 == a1) {
0x00023354 beq v0, a1, 0x23908 | goto label_66;
| }
| label_29:
0x00023358 addu a2, a0, v0 | a2 = a0 + v0;
0x0002335c addiu a3, zero, 0xd | a3 = 0xd;
0x00023360 addiu v0, v0, 1 | v0++;
0x00023364 addiu a1, zero, 0xd | a1 = 0xd;
0x00023368 sw v0, 0x10(a0) | *((a0 + 4)) = v0;
0x0002336c sb a3, 0x18(a2) | *((a2 + 24)) = a3;
| if (fp == a1) {
0x00023370 beq fp, a1, 0x23444 | goto label_67;
| }
0x00023374 lw a1, 0x14(a0) | a1 = *((a0 + 5));
0x00023378 addu a1, a0, v0 | a1 = a0 + v0;
| if (v0 != a1) {
0x0002337c bne v0, a1, 0x23430 | goto label_68;
| }
0x00023380 lw t9, -0x7be4(gp) | t9 = sym.md_write;
| label_16:
0x00023384 move a2, zero | a2 = 0;
0x00023388 move a1, zero | a1 = 0;
0x0002338c bal 0x28014 | sym_md_write ();
0x00023390 lw a0, (s2) | a0 = *(s2);
0x00023394 lw gp, 0x18(sp) | gp = *(var_18h);
0x00023398 lw v0, 0x10(a0) | v0 = *((a0 + 4));
0x0002339c b 0x2342c | goto label_69;
| }
| label_15:
0x000233a0 lw v0, 0x20(a0) | v0 = *((a0 + 8));
0x000233a4 addiu s4, zero, 2 | s4 = 2;
| if (v0 == 0) {
0x000233a8 beqz v0, 0x23284 | goto label_12;
| }
0x000233ac lw t9, -0x7c38(gp) | t9 = sym.iobuf_readbyte;
| label_61:
0x000233b0 bal 0x3fb3c | sym_iobuf_readbyte ();
0x000233b4 nop |
0x000233b8 move fp, v0 | fp = v0;
0x000233bc lw gp, 0x18(sp) | gp = *(var_18h);
| if (v0 != s7) {
0x000233c0 bne v0, s7, 0x232c4 | goto label_13;
| }
0x000233c4 sw zero, 4(s0) | *((s0 + 1)) = 0;
0x000233c8 b 0x2300c | goto label_14;
| label_64:
0x000233cc lw a1, 0x14(a0) | a1 = *((a0 + 5));
0x000233d0 lw t9, -0x7be4(gp) | t9 = sym.md_write;
| if (v0 == a1) {
0x000233d4 beq v0, a1, 0x2372c | goto label_70;
| }
| label_24:
0x000233d8 addu a2, a0, v0 | a2 = a0 + v0;
0x000233dc addiu a3, zero, 0xd | a3 = 0xd;
0x000233e0 addiu v0, v0, 1 | v0++;
0x000233e4 sw v0, 0x10(a0) | *((a0 + 4)) = v0;
0x000233e8 sb a3, 0x18(a2) | *((a2 + 24)) = a3;
| if (v0 == a1) {
0x000233ec beq v0, a1, 0x2370c | goto label_71;
| }
| label_23:
0x000233f0 addu a1, a0, v0 | a1 = a0 + v0;
0x000233f4 addiu v0, v0, 1 | v0++;
0x000233f8 sw v0, 0x10(a0) | *((a0 + 4)) = v0;
0x000233fc addiu v0, zero, 0xa | v0 = 0xa;
0x00023400 sb v0, 0x18(a1) | *((a1 + 24)) = v0;
0x00023404 addiu v0, zero, 0xd | v0 = 0xd;
| label_65:
0x00023408 addiu v0, zero, 0xa | v0 = 0xa;
| if (fp == v0) {
0x0002340c beq fp, v0, 0x23444 | goto label_67;
| }
| if (fp == v0) {
0x00023410 beql fp, v0, 0x233a0 | goto label_15;
| }
0x00023414 lw a0, 4(s0) | a0 = *((s0 + 1));
0x00023418 lw a0, (s2) | a0 = *(s2);
0x0002341c lw v0, 0x10(a0) | v0 = *((a0 + 4));
0x00023420 lw a1, 0x14(a0) | a1 = *((a0 + 5));
0x00023424 lw t9, -0x7be4(gp) | t9 = sym.md_write;
| if (v0 == a1) {
0x00023428 beq v0, a1, 0x23384 | goto label_16;
| }
| label_69:
0x0002342c addu a1, a0, v0 | a1 = a0 + v0;
| label_68:
0x00023430 addiu v0, v0, 1 | v0++;
0x00023434 sw v0, 0x10(a0) | *((a0 + 4)) = v0;
0x00023438 move s4, zero | s4 = 0;
0x0002343c sb fp, 0x18(a1) | *((a1 + 24)) = fp;
0x00023440 b 0x23274 | goto label_11;
| label_67:
0x00023444 addiu s4, zero, 1 | s4 = 1;
0x00023448 b 0x23274 | goto label_11;
| label_60:
0x0002344c move a2, zero | a2 = 0;
0x00023450 move a1, s6 | a1 = s6;
0x00023454 addiu a0, s0, 0x18 | a0 = s0 + 0x18;
0x00023458 bal 0x3a610 | sym_utf8_to_native ();
0x0002345c move s3, v0 | s3 = v0;
0x00023460 lw gp, 0x18(sp) | gp = *(var_18h);
0x00023464 b 0x23124 | goto label_8;
| label_46:
0x00023468 lw t9, -0x7f28(gp) | t9 = sym.xmalloc;
0x0002346c ori a0, zero, 0x8000 | a0 = 0x8000;
0x00023470 bal 0x3cb1c | sym_xmalloc ();
0x00023474 lw gp, 0x18(sp) | gp = *(var_18h);
0x00023478 move s4, v0 | s4 = v0;
0x0002347c addiu s7, zero, -1 | s7 = -1;
0x00023480 lw s6, -0x7fc8(gp) | s6 = *(gp);
0x00023484 lw s5, -0x7fb4(gp) | s5 = *((gp - 8173));
0x00023488 lw t9, -0x7f64(gp) | t9 = sym.iobuf_read;
| do {
0x0002348c lw a0, 4(s0) | a0 = *((s0 + 1));
0x00023490 ori a2, zero, 0x8000 | a2 = 0x8000;
0x00023494 move a1, s4 | a1 = s4;
0x00023498 bal 0x3fc68 | sym_iobuf_read ();
0x0002349c move fp, v0 | fp = v0;
0x000234a0 lw gp, 0x18(sp) | gp = *(var_18h);
| if (v0 == s7) {
0x000234a4 beq v0, s7, 0x23540 | goto label_72;
| }
0x000234a8 lw a0, (s2) | a0 = *(s2);
0x000234ac lw t9, -0x7be4(gp) | t9 = sym.md_write;
| if (a0 != 0) {
0x000234b0 beqz a0, 0x234c4 |
0x000234b4 move a2, v0 | a2 = v0;
0x000234b8 move a1, s4 | a1 = s4;
0x000234bc bal 0x28014 | sym_md_write ();
0x000234c0 lw gp, 0x18(sp) | gp = *(var_18h);
| }
0x000234c4 ori v0, zero, 0x8000 | v0 = 0x8000;
| if (s1 != 0) {
0x000234c8 beqz s1, 0x23534 |
0x000234cc lw a3, 0x18(s6) | a3 = *((s6 + 6));
0x000234d0 lw a2, 0x1c(s6) | a2 = *((s6 + 7));
0x000234d4 or v0, a3, a2 | v0 = a3 | a2;
0x000234d8 lw a1, -0x4c98(s5) | a1 = *((s5 - 4902));
| if (v0 != 0) {
0x000234dc beqz v0, 0x23510 |
0x000234e0 lw t0, -0x4c94(s5) | t0 = *((s5 - 4901));
0x000234e4 addu a1, fp, a1 | a1 = fp + a1;
0x000234e8 sra v0, fp, 0x1f | v0 = fp >> 0x1f;
0x000234ec sltu a0, a1, fp | a0 = (a1 < fp) ? 1 : 0;
0x000234f0 addu v0, v0, t0 | v0 += t0;
0x000234f4 addu v0, a0, v0 | v0 = a0 + v0;
0x000234f8 slt a0, a2, v0 | a0 = (a2 < v0) ? 1 : 0;
0x000234fc sw a1, -0x4c98(s5) | *((s5 - 4902)) = a1;
0x00023500 sw v0, -0x4c94(s5) | *((s5 - 4901)) = v0;
| if (a0 != 0) {
0x00023504 bnez a0, 0x238d0 | goto label_73;
| }
0x00023508 sltu a1, a3, a1 | a1 = (a3 < a1) ? 1 : 0;
| if (v0 == a2) {
0x0002350c beq v0, a2, 0x238c8 | goto label_74;
| }
| }
0x00023510 lw t9, -0x7848(gp) | t9 = sym.imp.fwrite;
| label_28:
0x00023514 move a3, s1 | a3 = s1;
0x00023518 move a2, fp | a2 = fp;
0x0002351c addiu a1, zero, 1 | a1 = 1;
0x00023520 move a0, s4 | a0 = s4;
0x00023524 jalr t9 | t9 ();
0x00023528 lw gp, 0x18(sp) | gp = *(var_18h);
| if (fp != v0) {
0x0002352c bne fp, v0, 0x23818 | goto label_75;
| }
0x00023530 ori v0, zero, 0x8000 | v0 = 0x8000;
| }
0x00023534 slt v1, fp, v0 | v1 = (fp < v0) ? 1 : 0;
0x00023538 lw t9, -0x7f64(gp) | t9 = sym.iobuf_read;
0x0002353c beqz v1, 0x2348c |
| } while (v1 == 0);
| label_72:
0x00023540 lw t9, -0x7f24(gp) | t9 = sym.xfree;
0x00023544 move a0, s4 | a0 = s4;
0x00023548 bal 0x3cd20 | sym_xfree ();
0x0002354c lw gp, 0x18(sp) | gp = *(var_18h);
0x00023550 sw zero, 4(s0) | *((s0 + 1)) = 0;
0x00023554 b 0x2300c | goto label_14;
| label_59:
0x00023558 lw t9, -0x782c(gp) | t9 = sym.imp.memcmp;
0x0002355c addiu a2, zero, 8 | a2 = 8;
| /* str._CONSOLE */
0x00023560 addiu a1, a1, 0x3d94 | a1 += 0x3d94;
0x00023564 addiu a0, s0, 0x18 | a0 = s0 + 0x18;
0x00023568 jalr t9 | t9 ();
0x0002356c lw gp, 0x18(sp) | gp = *(var_18h);
| if (v0 != 0) {
0x00023570 bnez v0, 0x2320c | goto label_17;
| }
0x00023574 lw a0, -0x7fdc(gp) | a0 = *(gp);
0x00023578 lw t9, -0x7f30(gp) | t9 = sym.g10_log_info;
| /* str.data_not_saved__use_option____output__to_save_it_n */
0x0002357c addiu a0, a0, 0x6d24 | a0 += 0x6d24;
0x00023580 bal 0x384ac | sym_g10_log_info ();
0x00023584 move s1, zero | s1 = 0;
0x00023588 lw gp, 0x18(sp) | gp = *(var_18h);
0x0002358c b 0x22d20 | goto label_5;
| label_57:
0x00023590 lw t9, -0x78c4(gp) | t9 = sym.imp.__errno_location;
0x00023594 addiu s0, zero, 0x19 | s0 = 0x19;
0x00023598 jalr t9 | t9 ();
0x0002359c lw gp, 0x18(sp) | gp = *(var_18h);
0x000235a0 addiu v1, zero, 1 | v1 = 1;
0x000235a4 addiu a0, zero, 1 | a0 = 1;
0x000235a8 lw t9, -0x787c(gp) | t9 = sym.imp.strerror;
0x000235ac sw v1, (v0) | *(v0) = v1;
| label_58:
0x000235b0 jalr t9 | t9 ();
0x000235b4 nop |
0x000235b8 lw gp, 0x18(sp) | gp = *(var_18h);
0x000235bc move a2, v0 | a2 = v0;
0x000235c0 move a1, s3 | a1 = s3;
0x000235c4 lw a0, -0x7fdc(gp) | a0 = *(gp);
0x000235c8 lw t9, -0x7f84(gp) | t9 = sym.g10_log_error;
| /* str.error_creating___s:__s_n */
0x000235cc addiu a0, a0, 0x6d58 | a0 += 0x6d58;
0x000235d0 bal 0x38550 | sym_g10_log_error ();
0x000235d4 lw gp, 0x18(sp) | gp = *(var_18h);
0x000235d8 b 0x23078 | goto label_9;
| label_47:
0x000235dc bal 0x3fb3c | sym_iobuf_readbyte ();
0x000235e0 nop |
0x000235e4 lw gp, 0x18(sp) | gp = *(var_18h);
| if (v0 != s5) {
0x000235e8 bne v0, s5, 0x22f08 | goto label_18;
| }
0x000235ec sw zero, 4(s0) | *((s0 + 1)) = 0;
0x000235f0 b 0x2300c | goto label_14;
| label_48:
0x000235f4 sw v0, 0x24(sp) | *(var_24h) = v0;
0x000235f8 move a2, zero | a2 = 0;
0x000235fc move a1, zero | a1 = 0;
0x00023600 bal 0x28014 | sym_md_write ();
0x00023604 lw a0, (s2) | a0 = *(s2);
0x00023608 lw gp, 0x18(sp) | gp = *(var_18h);
0x0002360c lw v0, 0x24(sp) | v0 = *(var_24h);
0x00023610 lw v1, 0x10(a0) | v1 = *((a0 + 4));
0x00023614 b 0x22f24 | goto label_19;
| label_38:
0x00023618 ori a0, zero, 0x8000 | a0 = 0x8000;
0x0002361c bal 0x3cb1c | sym_xmalloc ();
0x00023620 lw v1, (s0) | v1 = *(s0);
0x00023624 lw gp, 0x18(sp) | gp = *(var_18h);
0x00023628 move s4, v0 | s4 = v0;
| if (v1 == 0) {
0x0002362c beqz v1, 0x22ffc | goto label_20;
| }
0x00023630 ori s7, zero, 0x8000 | s7 = 0x8000;
0x00023634 lw s6, -0x7fc8(gp) | s6 = *(gp);
0x00023638 lw s5, -0x7fb4(gp) | s5 = *((gp - 8173));
0x0002363c b 0x236b0 | goto label_76;
| label_21:
0x00023640 lw a1, 0x1c(s6) | a1 = *((s6 + 7));
0x00023644 or v0, a2, a1 | v0 = a2 | a1;
0x00023648 lw a0, -0x4c98(s5) | a0 = *((s5 - 4902));
| if (v0 != 0) {
0x0002364c beqz v0, 0x23680 |
0x00023650 lw a3, -0x4c94(s5) | a3 = *((s5 - 4901));
0x00023654 addu a0, fp, a0 | a0 = fp + a0;
0x00023658 sra v0, fp, 0x1f | v0 = fp >> 0x1f;
0x0002365c sltu v1, a0, fp | v1 = (a0 < fp) ? 1 : 0;
0x00023660 addu v0, v0, a3 | v0 += a3;
0x00023664 addu v0, v1, v0 | v0 = v1 + v0;
0x00023668 slt v1, a1, v0 | v1 = (a1 < v0) ? 1 : 0;
0x0002366c sw a0, -0x4c98(s5) | *((s5 - 4902)) = a0;
0x00023670 sw v0, -0x4c94(s5) | *((s5 - 4901)) = v0;
| if (v1 != 0) {
0x00023674 bnez v1, 0x238d0 | goto label_73;
| }
0x00023678 sltu a0, a2, a0 | a0 = (a2 < a0) ? 1 : 0;
| if (v0 == a1) {
0x0002367c beq v0, a1, 0x23944 | goto label_77;
| }
| }
0x00023680 lw t9, -0x7848(gp) | t9 = sym.imp.fwrite;
| label_33:
0x00023684 move a3, s1 | a3 = s1;
0x00023688 move a2, fp | a2 = fp;
0x0002368c addiu a1, zero, 1 | a1 = 1;
0x00023690 move a0, s4 | a0 = s4;
0x00023694 jalr t9 | t9 ();
0x00023698 lw gp, 0x18(sp) | gp = *(var_18h);
| if (fp != v0) {
0x0002369c bne fp, v0, 0x23818 | goto label_75;
| }
| label_22:
0x000236a0 lw v1, (s0) | v1 = *(s0);
0x000236a4 subu v1, v1, v0 | __asm ("subu v1, v1, v0");
0x000236a8 sw v1, (s0) | *(s0) = v1;
| if (v1 == 0) {
0x000236ac beqz v1, 0x22ffc | goto label_20;
| }
| label_76:
0x000236b0 ori v0, zero, 0x8001 | v0 = 0x8001;
0x000236b4 sltu a2, v1, v0 | a2 = (v1 < v0) ? 1 : 0;
0x000236b8 lw t9, -0x7f64(gp) | t9 = sym.iobuf_read;
| if (a2 != 0) {
0x000236bc movz v1, s7, a2 | v1 = s7;
| }
0x000236c0 lw a0, 4(s0) | a0 = *((s0 + 1));
0x000236c4 move a2, v1 | a2 = v1;
0x000236c8 move a1, s4 | a1 = s4;
0x000236cc bal 0x3fc68 | sym_iobuf_read ();
0x000236d0 move fp, v0 | fp = v0;
0x000236d4 addiu v0, zero, -1 | v0 = -1;
0x000236d8 lw gp, 0x18(sp) | gp = *(var_18h);
| if (fp == v0) {
0x000236dc beq fp, v0, 0x23898 | goto label_78;
| }
0x000236e0 lw a0, (s2) | a0 = *(s2);
0x000236e4 lw t9, -0x7be4(gp) | t9 = sym.md_write;
| if (a0 != 0) {
0x000236e8 beqz a0, 0x236fc |
0x000236ec move a2, fp | a2 = fp;
0x000236f0 move a1, s4 | a1 = s4;
0x000236f4 bal 0x28014 | sym_md_write ();
0x000236f8 lw gp, 0x18(sp) | gp = *(var_18h);
| }
0x000236fc lw a2, 0x18(s6) | a2 = *((s6 + 6));
| if (s1 == 0) {
0x00023700 bnel s1, zero, 0x23640 | goto label_21;
| }
0x00023704 move v0, fp | v0 = fp;
0x00023708 b 0x236a0 | goto label_22;
| label_71:
0x0002370c lw t9, -0x7be4(gp) | t9 = sym.md_write;
0x00023710 move a2, zero | a2 = 0;
0x00023714 move a1, zero | a1 = 0;
0x00023718 bal 0x28014 | sym_md_write ();
0x0002371c lw a0, (s2) | a0 = *(s2);
0x00023720 lw gp, 0x18(sp) | gp = *(var_18h);
0x00023724 lw v0, 0x10(a0) | v0 = *((a0 + 4));
0x00023728 b 0x233f0 | goto label_23;
| label_70:
0x0002372c move a1, zero | a1 = 0;
0x00023730 move a2, zero | a2 = 0;
0x00023734 bal 0x28014 | sym_md_write ();
0x00023738 lw a0, (s2) | a0 = *(s2);
0x0002373c lw gp, 0x18(sp) | gp = *(var_18h);
0x00023740 lw v0, 0x10(a0) | v0 = *((a0 + 4));
0x00023744 lw a1, 0x14(a0) | a1 = *((a0 + 5));
0x00023748 b 0x233d8 | goto label_24;
| label_51:
0x0002374c lw v1, 0x10(s0) | v1 = *((s0 + 4));
0x00023750 lbu v0, 0xc(s0) | v0 = *((s0 + 12));
0x00023754 lw a3, -0x7fdc(gp) | a3 = *(gp);
0x00023758 lw t9, -0x794c(gp) | t9 = sym.imp.__sprintf_chk;
0x0002375c addiu s1, sp, 0x28 | s1 = sp + 0x28;
| /* str._X__lu_ */
0x00023760 addiu a3, a3, 0x6d1c | a3 += 0x6d1c;
0x00023764 addiu a2, zero, 0x32 | a2 = 0x32;
0x00023768 addiu a1, zero, 1 | a1 = 1;
0x0002376c move a0, s1 | a0 = s1;
0x00023770 sw v1, 0x14(sp) | *(var_14h) = v1;
0x00023774 sw v0, 0x10(sp) | *(var_10h) = v0;
0x00023778 jalr t9 | t9 ();
0x0002377c lw gp, 0x18(sp) | gp = *(var_18h);
0x00023780 lw a3, 0x14(s0) | a3 = *((s0 + 5));
0x00023784 addiu a2, s0, 0x18 | a2 = s0 + 0x18;
0x00023788 lw t9, -0x7c9c(gp) | t9 = sym.write_status_text_and_buffer;
0x0002378c sw zero, 0x10(sp) | *(var_10h) = 0;
0x00023790 move a1, s1 | a1 = s1;
0x00023794 addiu a0, zero, 0x49 | a0 = 0x49;
0x00023798 bal 0x22334 | sym_write_status_text_and_buffer ();
0x0002379c lbu v0, 9(s0) | v0 = *((s0 + 9));
0x000237a0 lw gp, 0x18(sp) | gp = *(var_18h);
| if (v0 != 0) {
0x000237a4 bnez v0, 0x230e0 | goto label_25;
| }
0x000237a8 lw a3, -0x7fdc(gp) | a3 = *(gp);
0x000237ac lw v0, (s0) | v0 = *(s0);
0x000237b0 lw t9, -0x794c(gp) | t9 = sym.imp.__sprintf_chk;
| /* esilref: '&lu' */
0x000237b4 addiu a3, a3, 0x4eb0 | a3 += 0x4eb0;
0x000237b8 addiu a2, zero, 0x32 | a2 = 0x32;
0x000237bc addiu a1, zero, 1 | a1 = 1;
0x000237c0 move a0, s1 | a0 = s1;
0x000237c4 sw v0, 0x10(sp) | *(var_10h) = v0;
0x000237c8 jalr t9 | t9 ();
0x000237cc lw gp, 0x18(sp) | gp = *(var_18h);
0x000237d0 move a1, s1 | a1 = s1;
0x000237d4 lw t9, -0x7d80(gp) | t9 = sym.write_status_text;
0x000237d8 addiu a0, zero, 0x4a | a0 = 0x4a;
0x000237dc bal 0x21b8c | sym_write_status_text ();
0x000237e0 lw gp, 0x18(sp) | gp = *(var_18h);
0x000237e4 b 0x230e0 | goto label_25;
| label_63:
0x000237e8 lw t9, -0x7840(gp) | t9 = sym.imp._IO_putc;
| if (a1 == 0) {
0x000237ec beqz a1, 0x2330c | goto label_26;
| }
| label_41:
0x000237f0 lw a2, -0x7fdc(gp) | a2 = *(gp);
| label_31:
0x000237f4 lw a0, -0x7fdc(gp) | a0 = *(gp);
0x000237f8 lw t9, -0x7f84(gp) | t9 = sym.g10_log_error;
| /* str.exceeded___max_output_limit_n */
0x000237fc addiu a2, a2, 0x6dd4 | a2 += 0x6dd4;
0x00023800 move a1, s3 | a1 = s3;
| /* str.Error_writing_to___s:__s_n */
0x00023804 addiu a0, a0, 0x6df4 | a0 += 0x6df4;
0x00023808 bal 0x38550 | sym_g10_log_error ();
0x0002380c addiu s0, zero, 0x16 | s0 = 0x16;
0x00023810 lw gp, 0x18(sp) | gp = *(var_18h);
0x00023814 b 0x22e7c | goto label_3;
| label_75:
0x00023818 lw t9, -0x78c4(gp) | t9 = sym.imp.__errno_location;
0x0002381c addiu s0, zero, 0x16 | s0 = 0x16;
0x00023820 jalr t9 | t9 ();
0x00023824 lw gp, 0x18(sp) | gp = *(var_18h);
0x00023828 lw t9, -0x787c(gp) | t9 = sym.imp.strerror;
0x0002382c lw a0, (v0) | a0 = *(v0);
0x00023830 jalr t9 | t9 ();
0x00023834 lw gp, 0x18(sp) | gp = *(var_18h);
0x00023838 move a2, v0 | a2 = v0;
0x0002383c move a1, s3 | a1 = s3;
0x00023840 lw a0, -0x7fdc(gp) | a0 = *(gp);
0x00023844 lw t9, -0x7f84(gp) | t9 = sym.g10_log_error;
| /* str.Error_writing_to___s:__s_n */
0x00023848 addiu a0, a0, 0x6df4 | a0 += 0x6df4;
0x0002384c bal 0x38550 | sym_g10_log_error ();
0x00023850 lw gp, 0x18(sp) | gp = *(var_18h);
0x00023854 lw t9, -0x7f24(gp) | t9 = sym.xfree;
0x00023858 move a0, s4 | a0 = s4;
0x0002385c bal 0x3cd20 | sym_xfree ();
0x00023860 lw gp, 0x18(sp) | gp = *(var_18h);
0x00023864 b 0x22e7c | goto label_3;
| label_37:
0x00023868 lw a0, -0x7fdc(gp) | a0 = *(gp);
0x0002386c lw t9, -0x7f84(gp) | t9 = sym.g10_log_error;
| /* str.clearsig_encountered_while_not_expected_n */
0x00023870 addiu a0, a0, 0x6d78 | a0 += 0x6d78;
0x00023874 bal 0x38550 | sym_g10_log_error ();
0x00023878 addiu s0, zero, 0x27 | s0 = 0x27;
0x0002387c lw gp, 0x18(sp) | gp = *(var_18h);
0x00023880 b 0x22e74 | goto label_27;
| label_56:
0x00023884 move a0, v0 | a0 = v0;
0x00023888 bal 0x3cd20 | sym_xfree ();
0x0002388c addiu s0, zero, 0x19 | s0 = 0x19;
0x00023890 lw gp, 0x18(sp) | gp = *(var_18h);
0x00023894 b 0x23078 | goto label_9;
| label_78:
0x00023898 lw a0, -0x7fdc(gp) | a0 = *(gp);
0x0002389c lw t9, -0x7f84(gp) | t9 = sym.g10_log_error;
0x000238a0 lw a1, (s0) | a1 = *(s0);
| /* str.Problem_reading_source___u_bytes_remaining__n */
0x000238a4 addiu a0, a0, 0x6da4 | a0 += 0x6da4;
0x000238a8 bal 0x38550 | sym_g10_log_error ();
0x000238ac lw gp, 0x18(sp) | gp = *(var_18h);
0x000238b0 move a0, s4 | a0 = s4;
0x000238b4 lw t9, -0x7f24(gp) | t9 = sym.xfree;
0x000238b8 addiu s0, zero, 0x15 | s0 = 0x15;
0x000238bc bal 0x3cd20 | sym_xfree ();
0x000238c0 lw gp, 0x18(sp) | gp = *(var_18h);
0x000238c4 b 0x22e74 | goto label_27;
| label_74:
0x000238c8 lw t9, -0x7848(gp) | t9 = sym.imp.fwrite;
| if (a1 == 0) {
0x000238cc beqz a1, 0x23514 | goto label_28;
| }
| label_73:
0x000238d0 lw a2, -0x7fdc(gp) | a2 = *(gp);
| label_34:
0x000238d4 lw a0, -0x7fdc(gp) | a0 = *(gp);
0x000238d8 lw t9, -0x7f84(gp) | t9 = sym.g10_log_error;
| /* str.exceeded___max_output_limit_n */
0x000238dc addiu a2, a2, 0x6dd4 | a2 += 0x6dd4;
0x000238e0 move a1, s3 | a1 = s3;
| /* str.Error_writing_to___s:__s_n */
0x000238e4 addiu a0, a0, 0x6df4 | a0 += 0x6df4;
0x000238e8 bal 0x38550 | sym_g10_log_error ();
0x000238ec lw gp, 0x18(sp) | gp = *(var_18h);
0x000238f0 move a0, s4 | a0 = s4;
0x000238f4 lw t9, -0x7f24(gp) | t9 = sym.xfree;
0x000238f8 addiu s0, zero, 0x16 | s0 = 0x16;
0x000238fc bal 0x3cd20 | sym_xfree ();
0x00023900 lw gp, 0x18(sp) | gp = *(var_18h);
0x00023904 b 0x22e7c | goto label_3;
| label_66:
0x00023908 move a2, zero | a2 = 0;
0x0002390c move a1, zero | a1 = 0;
0x00023910 bal 0x28014 | sym_md_write ();
0x00023914 lw a0, (s2) | a0 = *(s2);
0x00023918 lw gp, 0x18(sp) | gp = *(var_18h);
0x0002391c lw v0, 0x10(a0) | v0 = *((a0 + 4));
0x00023920 b 0x23358 | goto label_29;
| label_42:
0x00023924 lw t9, -0x7840(gp) | t9 = sym.imp._IO_putc;
| if (a1 == 0) {
0x00023928 beqz a1, 0x22dfc | goto label_30;
| }
0x0002392c lw a2, -0x7fdc(gp) | a2 = *(gp);
0x00023930 b 0x237f4 | goto label_31;
| label_49:
0x00023934 lw t9, -0x7840(gp) | t9 = sym.imp._IO_putc;
| if (a1 == 0) {
0x00023938 beqz a1, 0x22f84 | goto label_32;
| }
0x0002393c lw a2, -0x7fdc(gp) | a2 = *(gp);
0x00023940 b 0x237f4 | goto label_31;
| label_77:
0x00023944 lw t9, -0x7848(gp) | t9 = sym.imp.fwrite;
| if (a0 == 0) {
0x00023948 beqz a0, 0x23684 | goto label_33;
| }
0x0002394c lw a2, -0x7fdc(gp) | a2 = *(gp);
0x00023950 b 0x238d4 | goto label_34;
| label_50:
0x00023954 lw t9, -0x7834(gp) | t9 = sym.imp.__stack_chk_fail;
0x00023958 jalr t9 | t9 ();
0x0002395c nop |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/4325012-58052244.squashfs_v4_le_extract/usr/bin/gpgv @ 0x3ecdc */
| #include <stdint.h>
|
; (fcn) sym.iobuf_create () | void iobuf_create () {
0x0003ecdc lui gp, 2 |
0x0003ece0 addiu gp, gp, 0x3454 |
0x0003ece4 addu gp, gp, t9 | gp += t9;
0x0003ece8 addiu sp, sp, -0x30 |
0x0003ecec sw gp, 0x10(sp) | *(var_10h) = gp;
0x0003ecf0 sw ra, 0x2c(sp) | *(var_2ch) = ra;
0x0003ecf4 sw s3, 0x28(sp) | *(var_28h) = s3;
0x0003ecf8 sw s2, 0x24(sp) | *(var_24h) = s2;
0x0003ecfc sw s1, 0x20(sp) | *(var_20h) = s1;
0x0003ed00 sw s0, 0x1c(sp) | *(var_1ch) = s0;
0x0003ed04 addiu v0, zero, 0x2d | v0 = 0x2d;
| if (a0 != 0) {
0x0003ed08 beqz a0, 0x3ed24 |
0x0003ed0c lb v1, (a0) | v1 = *(a0);
0x0003ed10 move s1, a0 | s1 = a0;
| if (v1 != v0) {
0x0003ed14 bne v1, v0, 0x3eddc | goto label_1;
| }
0x0003ed18 lb v0, 1(a0) | v0 = *((a0 + 1));
0x0003ed1c lw t9, -0x7fdc(gp) | t9 = *(gp);
| if (v0 != 0) {
0x0003ed20 bnez v0, 0x3ede0 | goto label_2;
| }
| }
0x0003ed24 lw t9, -0x7970(gp) | t9 = sym.iobuf_alloc;
0x0003ed28 addiu a1, zero, 0x2000 | a1 = 0x2000;
0x0003ed2c addiu a0, zero, 2 | a0 = 2;
0x0003ed30 bal 0x3e698 | sym_iobuf_alloc ();
0x0003ed34 lw gp, 0x10(sp) | gp = *(var_10h);
0x0003ed38 addiu a0, zero, 0x20 | a0 = 0x20;
0x0003ed3c lw t9, -0x7f28(gp) | t9 = sym.xmalloc;
0x0003ed40 move s2, v0 | s2 = v0;
0x0003ed44 bal 0x3cb1c | sym_xmalloc ();
0x0003ed48 lw gp, 0x10(sp) | gp = *(var_10h);
0x0003ed4c move s0, v0 | s0 = v0;
0x0003ed50 addiu v0, zero, 1 | v0 = 1;
0x0003ed54 lw v1, -0x7fdc(gp) | v1 = *(gp);
0x0003ed58 sw v0, (s0) | *(s0) = v0;
0x0003ed5c sw v0, 0x10(s0) | *((s0 + 4)) = v0;
0x0003ed60 lw a1, 0x5034(v1) | a1 = *((v1 + 5133));
| /* str._stdout_ */
0x0003ed64 addiu v1, v1, 0x5034 | v1 += 0x5034;
0x0003ed68 addiu v0, s0, 0x14 | v0 = s0 + 0x14;
0x0003ed6c swl a1, 0x17(s0) | __asm ("swl a1, 0x17(s0)");
0x0003ed70 lw a0, 4(v1) | a0 = *((v1 + 1));
0x0003ed74 swr a1, (v0) | __asm ("swr a1, (v0)");
0x0003ed78 lbu v1, 8(v1) | v1 = *((v1 + 8));
0x0003ed7c swl a0, 7(v0) | __asm ("swl a0, 7(v0)");
0x0003ed80 swr a0, 4(v0) | __asm ("swr a0, 4(v0)");
0x0003ed84 sb v1, 8(v0) | *((v0 + 8)) = v1;
0x0003ed88 lw v0, -0x7974(gp) | v0 = *(gp);
0x0003ed8c lw a3, -0x7d90(gp) | a3 = *((gp - 8036));
0x0003ed90 sw s0, 0x44(s2) | *((s2 + 17)) = s0;
0x0003ed94 lw v1, (v0) | v1 = *(v0);
0x0003ed98 lw v0, -0x7fdc(gp) | v0 = *(gp);
| /* str.file_filter_fd_ */
0x0003ed9c addiu a3, a3, -0x6ed8 | a3 += -0x6ed8;
0x0003eda0 addiu v0, v0, -0x2884 | v0 += -0x2884;
0x0003eda4 sw v0, 0x40(s2) | *((s2 + 16)) = v0;
0x0003eda8 sw a3, 0x5c(s2) | *((s2 + 23)) = a3;
0x0003edac sw zero, 0xc(s0) | *((s0 + 3)) = 0;
0x0003edb0 sw zero, 4(s0) | *((s0 + 1)) = 0;
0x0003edb4 sw zero, 8(s0) | *((s0 + 2)) = 0;
| if (v1 != 0) {
0x0003edb8 bnez v1, 0x3eec0 | goto label_3;
| }
| do {
| label_0:
0x0003edbc lw ra, 0x2c(sp) | ra = *(var_2ch);
0x0003edc0 move v0, s2 | v0 = s2;
0x0003edc4 lw s3, 0x28(sp) | s3 = *(var_28h);
0x0003edc8 lw s2, 0x24(sp) | s2 = *(var_24h);
0x0003edcc lw s1, 0x20(sp) | s1 = *(var_20h);
0x0003edd0 lw s0, 0x1c(sp) | s0 = *(var_1ch);
0x0003edd4 addiu sp, sp, 0x30 |
0x0003edd8 jr ra | return v0;
| label_1:
0x0003eddc lw t9, -0x7fdc(gp) | t9 = *(gp);
| /* fcn.0003d6e8 */
| label_2:
0x0003ede0 addiu t9, t9, -0x2918 | t9 += -0x2918;
0x0003ede4 move a0, s1 | a0 = s1;
0x0003ede8 bal 0x3d6e8 | fcn_0003d6e8 ();
0x0003edec lw gp, 0x10(sp) | gp = *(var_10h);
0x0003edf0 move s0, v0 | s0 = v0;
0x0003edf4 addiu v0, zero, -1 | v0 = -1;
0x0003edf8 lw a1, -0x7fdc(gp) | a1 = *(gp);
| /* esilref: 'wb' */
0x0003edfc addiu a1, a1, 0x6d74 | a1 += 0x6d74;
| if (s0 != v0) {
0x0003ee00 bne s0, v0, 0x3eef8 | goto label_4;
| }
0x0003ee04 lw t9, -0x7fdc(gp) | t9 = *(gp);
| /* fcn.0003e3d0 */
0x0003ee08 addiu t9, t9, -0x1c30 | t9 += -0x1c30;
0x0003ee0c move a0, s1 | a0 = s1;
0x0003ee10 bal 0x3e3d0 | fcn_0003e3d0 ();
0x0003ee14 move s3, v0 | s3 = v0;
0x0003ee18 lw gp, 0x10(sp) | gp = *(var_10h);
| if (v0 == s0) {
0x0003ee1c beq v0, s0, 0x3ef1c | goto label_5;
| }
0x0003ee20 lw t9, -0x7970(gp) | t9 = sym.iobuf_alloc;
0x0003ee24 addiu a1, zero, 0x2000 | a1 = 0x2000;
0x0003ee28 addiu a0, zero, 2 | a0 = 2;
0x0003ee2c bal 0x3e698 | sym_iobuf_alloc ();
0x0003ee30 lw gp, 0x10(sp) | gp = *(var_10h);
0x0003ee34 move a0, s1 | a0 = s1;
0x0003ee38 lw t9, -0x78a0(gp) | t9 = sym.imp.strlen;
0x0003ee3c move s2, v0 | s2 = v0;
0x0003ee40 jalr t9 | t9 ();
0x0003ee44 lw gp, 0x10(sp) | gp = *(var_10h);
0x0003ee48 lw t9, -0x7f28(gp) | t9 = sym.xmalloc;
0x0003ee4c addiu a0, v0, 0x18 | a0 = v0 + 0x18;
0x0003ee50 bal 0x3cb1c | sym_xmalloc ();
0x0003ee54 lw gp, 0x10(sp) | gp = *(var_10h);
0x0003ee58 move a1, s1 | a1 = s1;
0x0003ee5c addiu a0, v0, 0x14 | a0 = v0 + 0x14;
0x0003ee60 lw t9, -0x7854(gp) | t9 = sym.imp.strcpy
0x0003ee64 sw s3, (v0) | *(v0) = s3;
0x0003ee68 sw zero, 0x10(v0) | *((v0 + 4)) = 0;
0x0003ee6c move s0, v0 | s0 = v0;
0x0003ee70 jalr t9 | t9 ();
0x0003ee74 lw gp, 0x10(sp) | gp = *(var_10h);
0x0003ee78 lw t9, -0x7e4c(gp) | t9 = sym.xstrdup;
0x0003ee7c move a0, s1 | a0 = s1;
0x0003ee80 bal 0x3cdc8 | sym_xstrdup ();
0x0003ee84 lw gp, 0x10(sp) | gp = *(var_10h);
0x0003ee88 sw v0, 0x4c(s2) | *((s2 + 19)) = v0;
0x0003ee8c sw s0, 0x44(s2) | *((s2 + 17)) = s0;
0x0003ee90 lw v0, -0x7974(gp) | v0 = *(gp);
0x0003ee94 lw a3, -0x7d90(gp) | a3 = *((gp - 8036));
0x0003ee98 lw v1, (v0) | v1 = *(v0);
0x0003ee9c lw v0, -0x7fdc(gp) | v0 = *(gp);
| /* str.file_filter_fd_ */
0x0003eea0 addiu a3, a3, -0x6ed8 | a3 += -0x6ed8;
0x0003eea4 addiu v0, v0, -0x2884 | v0 += -0x2884;
0x0003eea8 sw v0, 0x40(s2) | *((s2 + 16)) = v0;
0x0003eeac sw a3, 0x5c(s2) | *((s2 + 23)) = a3;
0x0003eeb0 sw zero, 0xc(s0) | *((s0 + 3)) = 0;
0x0003eeb4 sw zero, 4(s0) | *((s0 + 1)) = 0;
0x0003eeb8 sw zero, 8(s0) | *((s0 + 2)) = 0;
0x0003eebc beqz v1, 0x3edbc |
| } while (v1 == 0);
| label_3:
0x0003eec0 lw a0, -0x7d90(gp) | a0 = *((gp - 8036));
0x0003eec4 lw t9, -0x7f5c(gp) | t9 = sym.g10_log_debug;
0x0003eec8 lw a2, 0x58(s2) | a2 = *((s2 + 22));
0x0003eecc lw a1, 0x54(s2) | a1 = *((s2 + 21));
| /* str.iobuf__d._d:_create___s_n */
0x0003eed0 addiu a0, a0, -0x6b44 | a0 += -0x6b44;
0x0003eed4 bal 0x388a0 | sym_g10_log_debug ();
0x0003eed8 lw ra, 0x2c(sp) | ra = *(var_2ch);
0x0003eedc move v0, s2 | v0 = s2;
0x0003eee0 lw s3, 0x28(sp) | s3 = *(var_28h);
0x0003eee4 lw s2, 0x24(sp) | s2 = *(var_24h);
0x0003eee8 lw s1, 0x20(sp) | s1 = *(var_20h);
0x0003eeec lw s0, 0x1c(sp) | s0 = *(var_1ch);
0x0003eef0 addiu sp, sp, 0x30 |
0x0003eef4 jr ra | return v0;
| label_4:
0x0003eef8 lw ra, 0x2c(sp) | ra = *(var_2ch);
0x0003eefc lw s3, 0x28(sp) | s3 = *(var_28h);
0x0003ef00 lw s2, 0x24(sp) | s2 = *(var_24h);
0x0003ef04 lw s1, 0x20(sp) | s1 = *(var_20h);
0x0003ef08 move a0, s0 | a0 = s0;
0x0003ef0c lw t9, -0x796c(gp) | t9 = sym.iobuf_fdopen;
0x0003ef10 lw s0, 0x1c(sp) | s0 = *(var_1ch);
0x0003ef14 addiu sp, sp, 0x30 |
0x0003ef18 b 0x3e830 | void (*0x3e830)() ();
| label_5:
0x0003ef1c move s2, zero | s2 = 0;
0x0003ef20 b 0x3edbc | goto label_0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/4325012-58052244.squashfs_v4_le_extract/usr/bin/gpgv @ 0x3e974 */
| #include <stdint.h>
|
; (fcn) sym.iobuf_open () | void iobuf_open () {
0x0003e974 lui gp, 2 |
0x0003e978 addiu gp, gp, 0x37bc |
0x0003e97c addu gp, gp, t9 | gp += t9;
0x0003e980 addiu sp, sp, -0x38 |
0x0003e984 sw gp, 0x18(sp) | *(var_18h) = gp;
0x0003e988 sw ra, 0x34(sp) | *(var_34h) = ra;
0x0003e98c sw s4, 0x30(sp) | *(var_30h) = s4;
0x0003e990 sw s3, 0x2c(sp) | *(var_2ch) = s3;
0x0003e994 sw s2, 0x28(sp) | *(var_28h) = s2;
0x0003e998 sw s1, 0x24(sp) | *(var_24h) = s1;
0x0003e99c sw s0, 0x20(sp) | *(var_20h) = s0;
0x0003e9a0 addiu v0, zero, 0x2d | v0 = 0x2d;
| if (a0 != 0) {
0x0003e9a4 beqz a0, 0x3e9c0 |
0x0003e9a8 lb v1, (a0) | v1 = *(a0);
0x0003e9ac move s0, a0 | s0 = a0;
| if (v1 != v0) {
0x0003e9b0 bne v1, v0, 0x3ea78 | goto label_6;
| }
0x0003e9b4 lb v0, 1(a0) | v0 = *((a0 + 1));
0x0003e9b8 lw t9, -0x7fdc(gp) | t9 = *(gp);
| if (v0 != 0) {
0x0003e9bc bnez v0, 0x3ea7c | goto label_7;
| }
| }
0x0003e9c0 lw t9, -0x7970(gp) | t9 = sym.iobuf_alloc;
0x0003e9c4 addiu a1, zero, 0x2000 | a1 = 0x2000;
0x0003e9c8 addiu a0, zero, 1 | a0 = 1;
0x0003e9cc bal 0x3e698 | sym_iobuf_alloc ();
0x0003e9d0 lw gp, 0x18(sp) | gp = *(var_18h);
0x0003e9d4 addiu a0, zero, 0x1f | a0 = 0x1f;
0x0003e9d8 lw t9, -0x7f28(gp) | t9 = sym.xmalloc;
0x0003e9dc move s2, v0 | s2 = v0;
0x0003e9e0 bal 0x3cb1c | sym_xmalloc ();
0x0003e9e4 lw gp, 0x18(sp) | gp = *(var_18h);
0x0003e9e8 move s1, v0 | s1 = v0;
0x0003e9ec sw zero, (v0) | *(v0) = 0;
0x0003e9f0 lw v1, -0x7d90(gp) | v1 = *((gp - 8036));
0x0003e9f4 addiu v0, zero, 1 | v0 = 1;
| /* str._stdin_ */
0x0003e9f8 addiu s0, v1, -0x7e0c | s0 = v1 + -0x7e0c;
0x0003e9fc lw a0, -0x7e0c(v1) | a0 = *((v1 - 8067));
0x0003ea00 sw v0, 0x10(s1) | *((s1 + 4)) = v0;
0x0003ea04 addiu v0, s1, 0x14 | v0 = s1 + 0x14;
0x0003ea08 swl a0, 0x17(s1) | __asm ("swl a0, 0x17(s1)");
0x0003ea0c lw v1, 4(s0) | v1 = *((s0 + 1));
0x0003ea10 swr a0, (v0) | __asm ("swr a0, (v0)");
0x0003ea14 swl v1, 7(v0) | __asm ("swl v1, 7(v0)");
0x0003ea18 swr v1, 4(v0) | __asm ("swr v1, 4(v0)");
0x0003ea1c lw v0, -0x7fdc(gp) | v0 = *(gp);
0x0003ea20 lw s4, -0x7974(gp) | s4 = *(gp);
0x0003ea24 addiu v0, v0, -0x2884 | v0 += -0x2884;
0x0003ea28 sw v0, 0x40(s2) | *((s2 + 16)) = v0;
0x0003ea2c lw v0, -0x7d90(gp) | v0 = *((gp - 8036));
0x0003ea30 lw v1, (s4) | v1 = *(s4);
| /* str.file_filter_fd_ */
0x0003ea34 addiu v0, v0, -0x6ed8 | v0 += -0x6ed8;
0x0003ea38 sw s1, 0x44(s2) | *((s2 + 17)) = s1;
0x0003ea3c sw v0, 0x5c(s2) | *((s2 + 23)) = v0;
0x0003ea40 move a0, zero | a0 = 0;
0x0003ea44 sw zero, 0xc(s1) | *((s1 + 3)) = 0;
0x0003ea48 sw zero, 4(s1) | *((s1 + 1)) = 0;
0x0003ea4c sw zero, 8(s1) | *((s1 + 2)) = 0;
| if (v1 != 0) {
0x0003ea50 bnez v1, 0x3ebb0 | goto label_8;
| }
| label_0:
0x0003ea54 lw ra, 0x34(sp) | ra = *(var_34h);
| label_3:
0x0003ea58 move v0, s2 | v0 = s2;
0x0003ea5c lw s4, 0x30(sp) | s4 = *(var_30h);
0x0003ea60 lw s3, 0x2c(sp) | s3 = *(var_2ch);
0x0003ea64 lw s2, 0x28(sp) | s2 = *(var_28h);
0x0003ea68 lw s1, 0x24(sp) | s1 = *(var_24h);
0x0003ea6c lw s0, 0x20(sp) | s0 = *(var_20h);
0x0003ea70 addiu sp, sp, 0x38 |
0x0003ea74 jr ra | return v1;
| label_6:
0x0003ea78 lw t9, -0x7fdc(gp) | t9 = *(gp);
| /* fcn.0003d6e8 */
| label_7:
0x0003ea7c addiu t9, t9, -0x2918 | t9 += -0x2918;
0x0003ea80 move a0, s0 | a0 = s0;
0x0003ea84 bal 0x3d6e8 | fcn_0003d6e8 ();
0x0003ea88 addiu v1, zero, -1 | v1 = -1;
0x0003ea8c lw gp, 0x18(sp) | gp = *(var_18h);
| if (v0 != v1) {
0x0003ea90 bne v0, v1, 0x3ebf4 | goto label_9;
| }
0x0003ea94 lw v0, -0x7fb4(gp) | v0 = *((gp - 8173));
0x0003ea98 lw s1, -0x48c0(v0) | s1 = *((v0 - 4656));
0x0003ea9c lw s4, -0x7974(gp) | s4 = *(gp);
| if (s1 == 0) {
0x0003eaa0 beqz s1, 0x3eadc | goto label_10;
| }
0x0003eaa4 addiu s2, zero, -1 | s2 = -1;
0x0003eaa8 lw s3, 4(s1) | s3 = *((s1 + 1));
| do {
0x0003eaac lw t9, -0x77e0(gp) | t9 = sym.imp.strcmp;
0x0003eab0 addiu a0, s1, 8 | a0 = s1 + 8;
0x0003eab4 move a1, s0 | a1 = s0;
| if (s3 != s2) {
0x0003eab8 beq s3, s2, 0x3eacc |
0x0003eabc jalr t9 | t9 ();
0x0003eac0 nop |
0x0003eac4 lw gp, 0x18(sp) | gp = *(var_18h);
| if (v0 == 0) {
0x0003eac8 beqz v0, 0x3ec24 | goto label_11;
| }
| }
0x0003eacc lw s1, (s1) | s1 = *(s1);
0x0003ead0 lw s3, 4(s1) | s3 = *((s1 + 1));
0x0003ead4 bnel s1, zero, 0x3eaac |
| } while (s1 == 0);
0x0003ead8 lw s4, -0x7974(gp) | s4 = *(gp);
| label_10:
0x0003eadc lw v0, (s4) | v0 = *(s4);
0x0003eae0 lw a0, -0x7d90(gp) | a0 = *((gp - 8036));
| if (v0 != 0) {
0x0003eae4 bnez v0, 0x3eca4 | goto label_12;
| }
| label_4:
0x0003eae8 lw a1, -0x7fdc(gp) | a1 = *(gp);
0x0003eaec lw t9, -0x7fdc(gp) | t9 = *(gp);
| /* esilref: 'rb' */
0x0003eaf0 addiu a1, a1, 0x31f8 | a1 += 0x31f8;
| /* fcn.0003e3d0 */
0x0003eaf4 addiu t9, t9, -0x1c30 | t9 += -0x1c30;
0x0003eaf8 move a0, s0 | a0 = s0;
0x0003eafc bal 0x3e3d0 | fcn_0003e3d0 ();
0x0003eb00 move s3, v0 | s3 = v0;
0x0003eb04 addiu v0, zero, -1 | v0 = -1;
0x0003eb08 lw gp, 0x18(sp) | gp = *(var_18h);
| if (s3 == v0) {
0x0003eb0c beq s3, v0, 0x3ecd4 | goto label_13;
| }
| label_1:
0x0003eb10 lw t9, -0x7970(gp) | t9 = sym.iobuf_alloc;
| label_2:
0x0003eb14 addiu a1, zero, 0x2000 | a1 = 0x2000;
0x0003eb18 addiu a0, zero, 1 | a0 = 1;
0x0003eb1c bal 0x3e698 | sym_iobuf_alloc ();
0x0003eb20 lw gp, 0x18(sp) | gp = *(var_18h);
0x0003eb24 move a0, s0 | a0 = s0;
0x0003eb28 lw t9, -0x78a0(gp) | t9 = sym.imp.strlen;
0x0003eb2c move s2, v0 | s2 = v0;
0x0003eb30 jalr t9 | t9 ();
0x0003eb34 lw gp, 0x18(sp) | gp = *(var_18h);
0x0003eb38 lw t9, -0x7f28(gp) | t9 = sym.xmalloc;
0x0003eb3c addiu a0, v0, 0x18 | a0 = v0 + 0x18;
0x0003eb40 bal 0x3cb1c | sym_xmalloc ();
0x0003eb44 lw gp, 0x18(sp) | gp = *(var_18h);
0x0003eb48 move a1, s0 | a1 = s0;
0x0003eb4c addiu a0, v0, 0x14 | a0 = v0 + 0x14;
0x0003eb50 lw t9, -0x7854(gp) | t9 = sym.imp.strcpy
0x0003eb54 sw s3, (v0) | *(v0) = s3;
0x0003eb58 sw zero, 0x10(v0) | *((v0 + 4)) = 0;
0x0003eb5c move s1, v0 | s1 = v0;
0x0003eb60 jalr t9 | t9 ();
0x0003eb64 lw gp, 0x18(sp) | gp = *(var_18h);
0x0003eb68 lw t9, -0x7e4c(gp) | t9 = sym.xstrdup;
0x0003eb6c move a0, s0 | a0 = s0;
0x0003eb70 bal 0x3cdc8 | sym_xstrdup ();
0x0003eb74 lw gp, 0x18(sp) | gp = *(var_18h);
0x0003eb78 sw v0, 0x4c(s2) | *((s2 + 19)) = v0;
0x0003eb7c lw a0, (s1) | a0 = *(s1);
0x0003eb80 lw v0, -0x7fdc(gp) | v0 = *(gp);
0x0003eb84 lw v1, (s4) | v1 = *(s4);
0x0003eb88 addiu v0, v0, -0x2884 | v0 += -0x2884;
0x0003eb8c sw v0, 0x40(s2) | *((s2 + 16)) = v0;
0x0003eb90 lw v0, -0x7d90(gp) | v0 = *((gp - 8036));
0x0003eb94 sw s1, 0x44(s2) | *((s2 + 17)) = s1;
| /* str.file_filter_fd_ */
0x0003eb98 addiu v0, v0, -0x6ed8 | v0 += -0x6ed8;
0x0003eb9c sw v0, 0x5c(s2) | *((s2 + 23)) = v0;
0x0003eba0 sw zero, 0xc(s1) | *((s1 + 3)) = 0;
0x0003eba4 sw zero, 4(s1) | *((s1 + 1)) = 0;
0x0003eba8 sw zero, 8(s1) | *((s1 + 2)) = 0;
| if (v1 == 0) {
0x0003ebac beqz v1, 0x3ea54 | goto label_0;
| }
| label_8:
0x0003ebb0 lw a2, 0x58(s2) | a2 = *((s2 + 22));
0x0003ebb4 lw a1, 0x54(s2) | a1 = *((s2 + 21));
0x0003ebb8 sw a0, 0x10(sp) | *(var_10h) = a0;
0x0003ebbc lw a0, -0x7d90(gp) | a0 = *((gp - 8036));
0x0003ebc0 lw t9, -0x7f5c(gp) | t9 = sym.g10_log_debug;
0x0003ebc4 move a3, s0 | a3 = s0;
| /* str.iobuf__d._d:_open___s_fd_d_n */
0x0003ebc8 addiu a0, a0, -0x6b64 | a0 += -0x6b64;
0x0003ebcc bal 0x388a0 | sym_g10_log_debug ();
0x0003ebd0 lw ra, 0x34(sp) | ra = *(var_34h);
0x0003ebd4 move v0, s2 | v0 = s2;
0x0003ebd8 lw s4, 0x30(sp) | s4 = *(var_30h);
0x0003ebdc lw s3, 0x2c(sp) | s3 = *(var_2ch);
0x0003ebe0 lw s2, 0x28(sp) | s2 = *(var_28h);
0x0003ebe4 lw s1, 0x24(sp) | s1 = *(var_24h);
0x0003ebe8 lw s0, 0x20(sp) | s0 = *(var_20h);
0x0003ebec addiu sp, sp, 0x38 |
0x0003ebf0 jr ra | return v1;
| label_9:
0x0003ebf4 lw a1, -0x7fdc(gp) | a1 = *(gp);
0x0003ebf8 lw ra, 0x34(sp) | ra = *(var_34h);
0x0003ebfc lw s4, 0x30(sp) | s4 = *(var_30h);
0x0003ec00 lw s3, 0x2c(sp) | s3 = *(var_2ch);
0x0003ec04 lw s2, 0x28(sp) | s2 = *(var_28h);
0x0003ec08 lw s1, 0x24(sp) | s1 = *(var_24h);
0x0003ec0c lw s0, 0x20(sp) | s0 = *(var_20h);
0x0003ec10 lw t9, -0x796c(gp) | t9 = sym.iobuf_fdopen;
| /* esilref: 'rb' */
0x0003ec14 addiu a1, a1, 0x31f8 | a1 += 0x31f8;
0x0003ec18 move a0, v0 | a0 = v0;
0x0003ec1c addiu sp, sp, 0x38 |
0x0003ec20 b 0x3e830 | void (*0x3e830)() ();
| label_11:
0x0003ec24 lw s4, -0x7974(gp) | s4 = *(gp);
0x0003ec28 sw s2, 4(s1) | *((s1 + 1)) = s2;
0x0003ec2c lw v0, (s4) | v0 = *(s4);
0x0003ec30 lw a0, -0x7d90(gp) | a0 = *((gp - 8036));
| if (v0 != 0) {
0x0003ec34 bnez v0, 0x3ecbc | goto label_14;
| }
| label_5:
0x0003ec38 lw t9, -0x7858(gp) | t9 = sym.imp.lseek64;
0x0003ec3c move a0, s3 | a0 = s3;
0x0003ec40 sw zero, 0x10(sp) | *(var_10h) = 0;
0x0003ec44 move a2, zero | a2 = 0;
0x0003ec48 move a3, zero | a3 = 0;
0x0003ec4c jalr t9 | t9 ();
0x0003ec50 addiu a0, zero, -1 | a0 = -1;
0x0003ec54 lw gp, 0x18(sp) | gp = *(var_18h);
| if (v0 != a0) {
0x0003ec58 bne v0, a0, 0x3eb10 | goto label_1;
| }
0x0003ec5c lw t9, -0x7970(gp) | t9 = sym.iobuf_alloc;
| if (v1 != v0) {
0x0003ec60 bne v1, v0, 0x3eb14 | goto label_2;
| }
0x0003ec64 lw t9, -0x78c4(gp) | t9 = sym.imp.__errno_location;
0x0003ec68 move s2, zero | s2 = 0;
0x0003ec6c jalr t9 | t9 ();
0x0003ec70 lw gp, 0x18(sp) | gp = *(var_18h);
0x0003ec74 lw t9, -0x787c(gp) | t9 = sym.imp.strerror;
0x0003ec78 lw a0, (v0) | a0 = *(v0);
0x0003ec7c jalr t9 | t9 ();
0x0003ec80 lw gp, 0x18(sp) | gp = *(var_18h);
0x0003ec84 move a2, v0 | a2 = v0;
0x0003ec88 move a1, s3 | a1 = s3;
0x0003ec8c lw a0, -0x7d90(gp) | a0 = *((gp - 8036));
0x0003ec90 lw t9, -0x7f84(gp) | t9 = sym.g10_log_error;
| /* str.cant_rewind_fd__d:__s_n */
0x0003ec94 addiu a0, a0, -0x6b9c | a0 += -0x6b9c;
0x0003ec98 bal 0x38550 | sym_g10_log_error ();
0x0003ec9c lw ra, 0x34(sp) | ra = *(var_34h);
0x0003eca0 b 0x3ea58 | goto label_3;
| label_12:
0x0003eca4 lw t9, -0x7f5c(gp) | t9 = sym.g10_log_debug;
0x0003eca8 move a1, s0 | a1 = s0;
| /* str.fd_cache_open___s__not_cached_n */
0x0003ecac addiu a0, a0, -0x6b84 | a0 += -0x6b84;
0x0003ecb0 bal 0x388a0 | sym_g10_log_debug ();
0x0003ecb4 lw gp, 0x18(sp) | gp = *(var_18h);
0x0003ecb8 b 0x3eae8 | goto label_4;
| label_14:
0x0003ecbc lw t9, -0x7f5c(gp) | t9 = sym.g10_log_debug;
0x0003ecc0 move a1, s0 | a1 = s0;
| /* str.fd_cache_open___s__using_cached_fp_n */
0x0003ecc4 addiu a0, a0, -0x6bc0 | a0 += -0x6bc0;
0x0003ecc8 bal 0x388a0 | sym_g10_log_debug ();
0x0003eccc lw gp, 0x18(sp) | gp = *(var_18h);
0x0003ecd0 b 0x3ec38 | goto label_5;
| label_13:
0x0003ecd4 move s2, zero | s2 = 0;
0x0003ecd8 b 0x3ea54 | goto label_0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/4325012-58052244.squashfs_v4_le_extract/usr/bin/gpgv @ 0xdf94 */
| #include <stdint.h>
|
; (fcn) sym.keyring_register_filename () | void keyring_register_filename () {
0x0000df94 lui gp, 5 |
0x0000df98 addiu gp, gp, 0x419c |
0x0000df9c addu gp, gp, t9 | gp += t9;
0x0000dfa0 lw v0, -0x7fb4(gp) | v0 = *((gp - 8173));
0x0000dfa4 addiu sp, sp, -0x38 |
0x0000dfa8 lw v0, -0x5394(v0) | v0 = *((v0 - 5349));
0x0000dfac sw gp, 0x10(sp) | *(var_10h) = gp;
0x0000dfb0 sw ra, 0x34(sp) | *(var_34h) = ra;
0x0000dfb4 sw s5, 0x30(sp) | *(var_30h) = s5;
0x0000dfb8 sw s4, 0x2c(sp) | *(var_2ch) = s4;
0x0000dfbc sw s3, 0x28(sp) | *(var_28h) = s3;
0x0000dfc0 sw s2, 0x24(sp) | *(var_24h) = s2;
0x0000dfc4 sw s1, 0x20(sp) | *(var_20h) = s1;
0x0000dfc8 sw s0, 0x1c(sp) | *(var_1ch) = s0;
0x0000dfcc lw s3, -0x7fb4(gp) | s3 = *((gp - 8173));
| if (v0 != 0) {
0x0000dfd0 bnez v0, 0xe0f8 | goto label_1;
| }
0x0000dfd4 move s1, a0 | s1 = a0;
0x0000dfd8 move s2, a1 | s2 = a1;
0x0000dfdc lw s0, -0x5390(s3) | s0 = *((s3 - 5348));
0x0000dfe0 move s4, a2 | s4 = a2;
| if (s0 != 0) {
0x0000dfe4 bnez s0, 0xdffc | goto label_2;
| }
0x0000dfe8 b 0xe03c | goto label_3;
0x0000dfec nop |
| do {
0x0000dff0 lw s0, (s0) | s0 = *(s0);
| if (s0 == 0) {
0x0000dff4 beqz s0, 0xe03c | goto label_3;
| }
0x0000dff8 nop |
| label_2:
0x0000dffc lw t9, -0x7dec(gp) | t9 = sym.compare_filenames;
0x0000e000 move a1, s1 | a1 = s1;
0x0000e004 addiu a0, s0, 0x14 | a0 = s0 + 0x14;
0x0000e008 jalr t9 | t9 ();
0x0000e00c lw gp, 0x10(sp) | gp = *(var_10h);
0x0000e010 bnez v0, 0xdff0 |
| } while (v0 != 0);
0x0000e014 lw ra, 0x34(sp) | ra = *(var_34h);
0x0000e018 sw s0, (s4) | *(s4) = s0;
0x0000e01c lw s5, 0x30(sp) | s5 = *(var_30h);
0x0000e020 lw s4, 0x2c(sp) | s4 = *(var_2ch);
0x0000e024 lw s3, 0x28(sp) | s3 = *(var_28h);
0x0000e028 lw s2, 0x24(sp) | s2 = *(var_24h);
0x0000e02c lw s1, 0x20(sp) | s1 = *(var_20h);
0x0000e030 lw s0, 0x1c(sp) | s0 = *(var_1ch);
0x0000e034 addiu sp, sp, 0x38 |
0x0000e038 jr ra | return v0;
| label_3:
0x0000e03c lw t9, -0x7de8(gp) | t9 = sym.register_secured_file;
0x0000e040 bnez s2, 0xe0d4 |
| while (1) {
0x0000e044 lw t9, -0x78a0(gp) | t9 = sym.imp.strlen;
0x0000e048 move a0, s1 | a0 = s1;
0x0000e04c jalr t9 | t9 ();
0x0000e050 lw gp, 0x10(sp) | gp = *(var_10h);
0x0000e054 addiu a0, v0, 0x18 | a0 = v0 + 0x18;
0x0000e058 lw t9, -0x7f28(gp) | t9 = sym.xmalloc;
0x0000e05c sltu s2, zero, s2 | s2 = (0 < s2) ? 1 : 0;
0x0000e060 jalr t9 | t9 ();
0x0000e064 lw gp, 0x10(sp) | gp = *(var_10h);
0x0000e068 move a1, s1 | a1 = s1;
0x0000e06c addiu a0, v0, 0x14 | a0 = v0 + 0x14;
0x0000e070 lw s5, -0x7fb4(gp) | s5 = *((gp - 8173));
0x0000e074 lw t9, -0x7854(gp) | t9 = sym.imp.strcpy
0x0000e078 move s0, v0 | s0 = v0;
0x0000e07c jalr t9 | t9 ();
0x0000e080 lw v1, -0x5390(s3) | v1 = *((s3 - 5348));
0x0000e084 lw v0, -0x5398(s5) | v0 = *((s5 - 5350));
0x0000e088 lw gp, 0x10(sp) | gp = *(var_10h);
0x0000e08c sw s2, 4(s0) | *((s0 + 1)) = s2;
0x0000e090 sw zero, 8(s0) | *((s0 + 2)) = 0;
0x0000e094 sw zero, 0xc(s0) | *((s0 + 3)) = 0;
0x0000e098 sw zero, 0x10(s0) | *((s0 + 4)) = 0;
0x0000e09c sw v1, (s0) | *(s0) = v1;
0x0000e0a0 sw s0, -0x5390(s3) | *((s3 - 5348)) = s0;
| if (v0 == 0) {
0x0000e0a4 beqz v0, 0xe0e4 | goto label_4;
| }
| label_0:
0x0000e0a8 lw ra, 0x34(sp) | ra = *(var_34h);
0x0000e0ac sw s0, (s4) | *(s4) = s0;
0x0000e0b0 lw s5, 0x30(sp) | s5 = *(var_30h);
0x0000e0b4 lw s4, 0x2c(sp) | s4 = *(var_2ch);
0x0000e0b8 lw s3, 0x28(sp) | s3 = *(var_28h);
0x0000e0bc lw s2, 0x24(sp) | s2 = *(var_24h);
0x0000e0c0 lw s1, 0x20(sp) | s1 = *(var_20h);
0x0000e0c4 lw s0, 0x1c(sp) | s0 = *(var_1ch);
0x0000e0c8 addiu v0, zero, 1 | v0 = 1;
0x0000e0cc addiu sp, sp, 0x38 |
0x0000e0d0 jr ra | return v0;
0x0000e0d4 move a0, s1 | a0 = s1;
0x0000e0d8 bal 0x180bc | sym_register_secured_file ();
0x0000e0dc lw gp, 0x10(sp) | gp = *(var_10h);
0x0000e0e0 b 0xe044 |
| }
| label_4:
0x0000e0e4 lw t9, -0x7f2c(gp) | t9 = sym.xmalloc_clear;
0x0000e0e8 addiu a0, zero, 0x2000 | a0 = 0x2000;
0x0000e0ec jalr t9 | t9 ();
0x0000e0f0 sw v0, -0x5398(s5) | *((s5 - 5350)) = v0;
0x0000e0f4 b 0xe0a8 | goto label_0;
| label_1:
0x0000e0f8 lw a2, -0x7fdc(gp) | a2 = *(gp);
0x0000e0fc lw a0, -0x7fdc(gp) | a0 = *(gp);
0x0000e100 lw t9, -0x7f18(gp) | t9 = sym.g10_log_bug0;
| /* str.keyring_register_filename */
0x0000e104 addiu a2, a2, 0x35c8 | a2 += 0x35c8;
0x0000e108 addiu a1, zero, 0xce | a1 = 0xce;
| /* str..._.._gnupg_1.4.7_g10_keyring.c */
0x0000e10c addiu a0, a0, 0x337c | a0 += 0x337c;
0x0000e110 jalr t9 | return t9 ();
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/4325012-58052244.squashfs_v4_le_extract/usr/bin/gpgv @ 0x3a2fc */
| #include <stdint.h>
|
; (fcn) sym.native_to_utf8 () | void native_to_utf8 () {
| label_5:
0x0003a2fc lui gp, 2 |
0x0003a300 addiu gp, gp, 0x7e34 |
0x0003a304 addu gp, gp, t9 | gp += t9;
0x0003a308 addiu sp, sp, -0x58 |
0x0003a30c lw v0, -0x7fb4(gp) | v0 = *((gp - 8173));
0x0003a310 sw s2, 0x40(sp) | *(var_40h) = s2;
0x0003a314 lw s2, -0x781c(gp) | s2 = *((gp - 7687));
0x0003a318 lw v0, -0x493c(v0) | v0 = *((v0 - 4687));
0x0003a31c sw gp, 0x18(sp) | *(var_18h) = gp;
0x0003a320 lw v1, (s2) | v1 = *(s2);
0x0003a324 sw ra, 0x54(sp) | *(var_54h) = ra;
0x0003a328 sw s6, 0x50(sp) | *(var_50h) = s6;
0x0003a32c sw s5, 0x4c(sp) | *(var_4ch) = s5;
0x0003a330 sw s4, 0x48(sp) | *(var_48h) = s4;
0x0003a334 sw s3, 0x44(sp) | *(var_44h) = s3;
0x0003a338 sw s1, 0x3c(sp) | *(var_3ch) = s1;
0x0003a33c sw s0, 0x38(sp) | *(var_38h) = s0;
0x0003a340 sw v1, 0x34(sp) | *(var_34h) = v1;
0x0003a344 lw t9, -0x7e4c(gp) | t9 = sym.xstrdup;
| if (v0 != 0) {
0x0003a348 bnez v0, 0x3a538 | goto label_9;
| }
0x0003a34c lw v0, -0x7fb4(gp) | v0 = *((gp - 8173));
0x0003a350 lw v0, -0x4938(v0) | v0 = *((v0 - 4686));
0x0003a354 move s1, a0 | s1 = a0;
| if (v0 == 0) {
0x0003a358 beqz v0, 0x3a470 | goto label_10;
| }
0x0003a35c lw s5, -0x7fb4(gp) | s5 = *((gp - 8173));
| label_1:
0x0003a360 lw s4, -0x7d90(gp) | s4 = *((gp - 8036));
0x0003a364 lw t9, -0x7870(gp) | t9 = sym.imp.iconv_open;
0x0003a368 lw a1, -0x5ecc(s5) | a1 = *((s5 - 6067));
| /* str.utf_8 */
0x0003a36c addiu a0, s4, -0x7dd0 | a0 = s4 + -0x7dd0;
0x0003a370 jalr t9 | t9 ();
0x0003a374 move s3, v0 | s3 = v0;
0x0003a378 addiu v0, zero, -1 | v0 = -1;
0x0003a37c lw gp, 0x18(sp) | gp = *(var_18h);
| if (s3 == v0) {
0x0003a380 beq s3, v0, 0x3a54c | goto label_11;
| }
0x0003a384 lbu v0, (s1) | v0 = *(s1);
0x0003a388 move v1, s1 | v1 = s1;
| if (v0 == 0) {
0x0003a38c beqz v0, 0x3a5f0 | goto label_12;
| }
0x0003a390 move s0, zero | s0 = 0;
0x0003a394 b 0x3a3a4 |
| while (v0 >= 0) {
0x0003a398 lbu v0, (v1) | v0 = *(v1);
0x0003a39c addiu s0, s0, 1 | s0++;
| if (v0 == 0) {
0x0003a3a0 beqz v0, 0x3a3bc | goto label_13;
| }
| label_0:
0x0003a3a4 seb v0, v0 | __asm ("seb v0, v0");
0x0003a3a8 addiu v1, v1, 1 | v1++;
0x0003a3ac bgez v0, 0x3a398 |
| }
0x0003a3b0 lbu v0, (v1) | v0 = *(v1);
0x0003a3b4 addiu s0, s0, 6 | s0 += 6;
| if (v0 != 0) {
0x0003a3b8 bnez v0, 0x3a3a4 | goto label_0;
| }
| label_13:
0x0003a3bc addiu a0, s0, 1 | a0 = s0 + 1;
| label_7:
0x0003a3c0 lw t9, -0x7f28(gp) | t9 = sym.xmalloc;
0x0003a3c4 bal 0x3cb1c | sym_xmalloc ();
0x0003a3c8 nop |
0x0003a3cc lw gp, 0x18(sp) | gp = *(var_18h);
0x0003a3d0 move a0, s1 | a0 = s1;
0x0003a3d4 sw s1, 0x24(sp) | *(var_24h_2) = s1;
0x0003a3d8 lw t9, -0x78a0(gp) | t9 = sym.imp.strlen;
0x0003a3dc move s6, v0 | s6 = v0;
0x0003a3e0 jalr t9 | t9 ();
0x0003a3e4 lw gp, 0x18(sp) | gp = *(var_18h);
0x0003a3e8 addiu v1, sp, 0x30 | v1 = sp + 0x30;
0x0003a3ec sw v1, 0x10(sp) | *(var_10h) = v1;
0x0003a3f0 lw t9, -0x77dc(gp) | t9 = sym.imp.iconv;
0x0003a3f4 addiu a3, sp, 0x28 | a3 = sp + 0x28;
0x0003a3f8 addiu a2, sp, 0x2c | a2 = sp + 0x2c;
0x0003a3fc addiu a1, sp, 0x24 | a1 = sp + 0x24;
0x0003a400 move a0, s3 | a0 = s3;
0x0003a404 sw v0, 0x2c(sp) | *(var_2ch_2) = v0;
0x0003a408 sw s6, 0x28(sp) | *(var_28h) = s6;
0x0003a40c sw s0, 0x30(sp) | *(var_30h_2) = s0;
0x0003a410 jalr t9 | t9 ();
0x0003a414 addiu v1, zero, -1 | v1 = -1;
0x0003a418 lw gp, 0x18(sp) | gp = *(var_18h);
| if (v0 == v1) {
0x0003a41c beq v0, v1, 0x3a580 | goto label_14;
| }
0x0003a420 lw v0, 0x28(sp) | v0 = *(var_28h);
0x0003a424 sb zero, (v0) | *(v0) = 0;
| label_6:
0x0003a428 lw t9, -0x77d8(gp) | t9 = sym.imp.iconv_close;
0x0003a42c move a0, s3 | a0 = s3;
0x0003a430 jalr t9 | t9 ();
0x0003a434 lw gp, 0x18(sp) | gp = *(var_18h);
| label_4:
0x0003a438 lw a0, 0x34(sp) | a0 = *(var_34h);
0x0003a43c lw v1, (s2) | v1 = *(s2);
0x0003a440 move v0, s6 | v0 = s6;
| if (a0 != v1) {
0x0003a444 bne a0, v1, 0x3a604 | goto label_15;
| }
0x0003a448 lw ra, 0x54(sp) | ra = *(var_54h);
0x0003a44c lw s6, 0x50(sp) | s6 = *(var_50h);
0x0003a450 lw s5, 0x4c(sp) | s5 = *(var_4ch);
0x0003a454 lw s4, 0x48(sp) | s4 = *(var_48h);
0x0003a458 lw s3, 0x44(sp) | s3 = *(var_44h);
0x0003a45c lw s2, 0x40(sp) | s2 = *(var_40h);
0x0003a460 lw s1, 0x3c(sp) | s1 = *(var_3ch);
0x0003a464 lw s0, 0x38(sp) | s0 = *(var_38h);
0x0003a468 addiu sp, sp, 0x58 |
0x0003a46c jr ra | return v0;
| label_10:
0x0003a470 lw v0, -0x7fb4(gp) | v0 = *((gp - 8173));
0x0003a474 lw v0, -0x4940(v0) | v0 = *((v0 - 4688));
0x0003a478 lw s5, -0x7fb4(gp) | s5 = *((gp - 8173));
| if (v0 != 0) {
0x0003a47c bnez v0, 0x3a360 | goto label_1;
| }
0x0003a480 lbu v0, (a0) | v0 = *(a0);
0x0003a484 move v1, a0 | v1 = a0;
| if (v0 == 0) {
0x0003a488 beqz v0, 0x3a5fc | goto label_16;
| }
0x0003a48c move a0, zero | a0 = 0;
0x0003a490 b 0x3a4a0 |
| while (v0 >= 0) {
0x0003a494 lbu v0, (v1) | v0 = *(v1);
0x0003a498 addiu a0, a0, 1 | a0++;
| if (v0 == 0) {
0x0003a49c beqz v0, 0x3a4b8 | goto label_17;
| }
| label_2:
0x0003a4a0 seb v0, v0 | __asm ("seb v0, v0");
0x0003a4a4 addiu v1, v1, 1 | v1++;
0x0003a4a8 bgez v0, 0x3a494 |
| }
0x0003a4ac lbu v0, (v1) | v0 = *(v1);
0x0003a4b0 addiu a0, a0, 2 | a0 += 2;
| if (v0 != 0) {
0x0003a4b4 bnez v0, 0x3a4a0 | goto label_2;
| }
| label_17:
0x0003a4b8 addiu a0, a0, 1 | a0++;
| label_8:
0x0003a4bc lw t9, -0x7f28(gp) | t9 = sym.xmalloc;
0x0003a4c0 bal 0x3cb1c | sym_xmalloc ();
0x0003a4c4 nop |
0x0003a4c8 lbu v1, (s1) | v1 = *(s1);
0x0003a4cc lw gp, 0x18(sp) | gp = *(var_18h);
0x0003a4d0 move s6, v0 | s6 = v0;
| if (v1 == 0) {
0x0003a4d4 beqz v1, 0x3a530 | goto label_18;
| }
0x0003a4d8 addiu a2, zero, -0x40 | a2 = -0x40;
0x0003a4dc addiu a1, zero, -0x80 | a1 = -0x80;
0x0003a4e0 b 0x3a4f4 |
| while (a0 >= 0) {
0x0003a4e4 sb v1, (v0) | *(v0) = v1;
0x0003a4e8 lbu v1, (s1) | v1 = *(s1);
0x0003a4ec addiu v0, v0, 1 | v0++;
| if (v1 == 0) {
0x0003a4f0 beqz v1, 0x3a530 | goto label_18;
| }
0x0003a4f4 seb a0, v1 | __asm ("seb a0, v1");
| label_3:
0x0003a4f8 bgezl a0, 0x3a4e4 |
| }
0x0003a4fc addiu s1, s1, 1 | s1++;
0x0003a500 srl v1, v1, 6 | v1 >>= 6;
0x0003a504 or v1, v1, a2 | v1 |= a2;
0x0003a508 sb v1, (v0) | *(v0) = v1;
0x0003a50c lbu v1, (s1) | v1 = *(s1);
0x0003a510 addiu v0, v0, 2 | v0 += 2;
0x0003a514 andi v1, v1, 0x3f | v1 &= 0x3f;
0x0003a518 or v1, v1, a1 | v1 |= a1;
0x0003a51c addiu s1, s1, 1 | s1++;
0x0003a520 sb v1, -1(v0) | *((v0 - 1)) = v1;
0x0003a524 lbu v1, (s1) | v1 = *(s1);
0x0003a528 seb a0, v1 | __asm ("seb a0, v1");
| if (v1 != 0) {
0x0003a52c bnez v1, 0x3a4f8 | goto label_3;
| }
| label_18:
0x0003a530 sb zero, (v0) | *(v0) = 0;
0x0003a534 b 0x3a438 | goto label_4;
| label_9:
0x0003a538 bal 0x3cdc8 | sym_xstrdup ();
0x0003a53c nop |
0x0003a540 move s6, v0 | s6 = v0;
0x0003a544 lw gp, 0x18(sp) | gp = *(var_18h);
0x0003a548 b 0x3a438 | goto label_4;
| label_11:
0x0003a54c lw t9, -0x7fdc(gp) | t9 = *(gp);
0x0003a550 lw a1, -0x5ecc(s5) | a1 = *((s5 - 6067));
0x0003a554 addiu a2, zero, 1 | a2 = 1;
| /* fcn.00039814 */
0x0003a558 addiu t9, t9, -0x67ec | t9 += -0x67ec;
| /* str.utf_8 */
0x0003a55c addiu a0, s4, -0x7dd0 | a0 = s4 + -0x7dd0;
0x0003a560 bal 0x39814 | fcn_00039814 ();
0x0003a564 lw gp, 0x18(sp) | gp = *(var_18h);
0x0003a568 lw t9, -0x7e40(gp) | t9 = sym.native_to_utf8;
0x0003a56c move a0, s1 | a0 = s1;
0x0003a570 bal 0x3a2fc | sym_native_to_utf8 ();
| goto label_5;
0x0003a574 move s6, v0 | s6 = v0;
0x0003a578 lw gp, 0x18(sp) | gp = *(var_18h);
0x0003a57c b 0x3a438 | goto label_4;
| label_14:
0x0003a580 lw s0, -0x7fb4(gp) | s0 = *((gp - 8173));
0x0003a584 lw v0, -0x4950(s0) | v0 = *((s0 - 4692));
0x0003a588 lw t9, -0x78c4(gp) | t9 = sym.imp.__errno_location;
0x0003a58c beqz v0, 0x3a5b0 |
| while (1) {
0x0003a590 lw t9, -0x7854(gp) | t9 = sym.imp.strcpy
0x0003a594 addiu v0, zero, 1 | v0 = 1;
0x0003a598 move a1, s1 | a1 = s1;
0x0003a59c move a0, s6 | a0 = s6;
0x0003a5a0 sw v0, -0x4950(s0) | *((s0 - 4692)) = v0;
0x0003a5a4 jalr t9 | t9 ();
0x0003a5a8 lw gp, 0x18(sp) | gp = *(var_18h);
0x0003a5ac b 0x3a428 | goto label_6;
0x0003a5b0 lw s5, -0x5ecc(s5) | s5 = *((s5 - 6067));
0x0003a5b4 jalr t9 | t9 ();
0x0003a5b8 lw gp, 0x18(sp) | gp = *(var_18h);
0x0003a5bc lw t9, -0x787c(gp) | t9 = sym.imp.strerror;
0x0003a5c0 lw a0, (v0) | a0 = *(v0);
0x0003a5c4 jalr t9 | t9 ();
0x0003a5c8 lw gp, 0x18(sp) | gp = *(var_18h);
0x0003a5cc move a3, v0 | a3 = v0;
| /* str.utf_8 */
0x0003a5d0 addiu a2, s4, -0x7dd0 | a2 = s4 + -0x7dd0;
0x0003a5d4 lw a0, -0x7d90(gp) | a0 = *((gp - 8036));
0x0003a5d8 lw t9, -0x7f30(gp) | t9 = sym.g10_log_info;
0x0003a5dc move a1, s5 | a1 = s5;
| /* str.conversion_from___s_to___s_failed:__s_n */
0x0003a5e0 addiu a0, a0, -0x7d50 | a0 += -0x7d50;
0x0003a5e4 bal 0x384ac | sym_g10_log_info ();
0x0003a5e8 lw gp, 0x18(sp) | gp = *(var_18h);
0x0003a5ec b 0x3a590 |
| }
| label_12:
0x0003a5f0 addiu a0, zero, 1 | a0 = 1;
0x0003a5f4 move s0, zero | s0 = 0;
0x0003a5f8 b 0x3a3c0 | goto label_7;
| label_16:
0x0003a5fc addiu a0, zero, 1 | a0 = 1;
0x0003a600 b 0x3a4bc | goto label_8;
| label_15:
0x0003a604 lw t9, -0x7834(gp) | t9 = sym.imp.__stack_chk_fail;
0x0003a608 jalr t9 | t9 ();
0x0003a60c nop |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/4325012-58052244.squashfs_v4_le_extract/usr/bin/gpgv @ 0x3cdc8 */
| #include <stdint.h>
|
; (fcn) sym.xstrdup () | void xstrdup () {
0x0003cdc8 lui gp, 2 |
0x0003cdcc addiu gp, gp, 0x5368 |
0x0003cdd0 addu gp, gp, t9 | gp += t9;
0x0003cdd4 addiu sp, sp, -0x20 |
0x0003cdd8 lw t9, -0x78a0(gp) | t9 = sym.imp.strlen;
0x0003cddc sw ra, 0x1c(sp) | *(var_1ch) = ra;
0x0003cde0 sw s0, 0x18(sp) | *(var_18h) = s0;
0x0003cde4 sw gp, 0x10(sp) | *(var_10h) = gp;
0x0003cde8 move s0, a0 | s0 = a0;
0x0003cdec jalr t9 | t9 ();
0x0003cdf0 lw gp, 0x10(sp) | gp = *(var_10h);
0x0003cdf4 lw t9, -0x7f28(gp) | t9 = sym.xmalloc;
0x0003cdf8 addiu a0, v0, 1 | a0 = v0 + 1;
0x0003cdfc bal 0x3cb1c | sym_xmalloc ();
0x0003ce00 lw gp, 0x10(sp) | gp = *(var_10h);
0x0003ce04 move a1, s0 | a1 = s0;
0x0003ce08 lw t9, -0x7854(gp) | t9 = sym.imp.strcpy
0x0003ce0c move a0, v0 | a0 = v0;
0x0003ce10 jalr t9 | t9 ();
0x0003ce14 lw ra, 0x1c(sp) | ra = *(var_1ch);
0x0003ce18 lw s0, 0x18(sp) | s0 = *(var_18h);
0x0003ce1c addiu sp, sp, 0x20 |
0x0003ce20 jr ra | return;
| }
[*] Function strcpy used 11 times gpgv