[*] Binary protection state of tc.iproute2

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


[*] Function sprintf tear down of tc.iproute2

    ; assembly                               | /* r2dec pseudo code output */
                                             | /* /logs/firmware/unblob_extracted/firmware_extract/4325012-58052244.squashfs_v4_le_extract/usr/sbin/tc.iproute2 @ 0x47a7c */
                                             | #include <stdint.h>
                                             |  
    ; (fcn) sym.hexstring_n2a ()             | void hexstring_n2a () {
    0x00047a7c lui gp, 4                     |     
    0x00047a80 addiu gp, gp, -0x72ec         |     
    0x00047a84 addu gp, gp, t9               |     gp += t9;
    0x00047a88 addiu sp, sp, -0x40           |     
    0x00047a8c sw gp, 0x18(sp)               |     *(var_18h) = gp;
    0x00047a90 sw s3, 0x30(sp)               |     *(var_30h) = s3;
    0x00047a94 sw ra, 0x3c(sp)               |     *(var_3ch) = ra;
    0x00047a98 sw s5, 0x38(sp)               |     *(var_38h) = s5;
    0x00047a9c sw s4, 0x34(sp)               |     *(var_34h) = s4;
    0x00047aa0 sw s2, 0x2c(sp)               |     *(var_2ch) = s2;
    0x00047aa4 sw s1, 0x28(sp)               |     *(var_28h) = s1;
    0x00047aa8 sw s0, 0x24(sp)               |     *(var_24h) = s0;
    0x00047aac move s3, a2                   |     s3 = a2;
                                             |     if (a1 <= 0) {
    0x00047ab0 blez a1, 0x47b20              |         goto label_0;
                                             |     }
    0x00047ab4 slti v0, a3, 3                |     v0 = (a3 < 3) ? 1 : 0;
    0x00047ab8 addiu a3, a3, -3              |     a3 += -3;
                                             |     if (v0 != 0) {
    0x00047abc bnez v0, 0x47b20              |         goto label_0;
                                             |     }
    0x00047ac0 lw s5, -0x7fdc(gp)            |     s5 = *(gp);
    0x00047ac4 sll a1, a1, 1                 |     a1 <<= 1;
    0x00047ac8 srl a3, a3, 1                 |     a3 >>= 1;
    0x00047acc addiu s2, a0, 1               |     s2 = a0 + 1;
    0x00047ad0 move s0, a0                   |     s0 = a0;
    0x00047ad4 addu s4, a2, a1               |     s4 = a2 + a1;
    0x00047ad8 addu s2, a3, s2               |     s2 = a3 + s2;
    0x00047adc move s1, a2                   |     s1 = a2;
                                             |     /* str._02x */
    0x00047ae0 addiu s5, s5, 0x7734          |     s5 += 0x7734;
    0x00047ae4 b 0x47af0                     |     
                                             |     while (s1 != s4) {
    0x00047ae8 lw ra, 0x3c(sp)               |         ra = *(var_3ch);
                                             |         if (s0 == s2) {
    0x00047aec beq s0, s2, 0x47b24           |             goto label_1;
                                             |         }
    0x00047af0 lbu v0, (s0)                  |         v0 = *(s0);
    0x00047af4 lw t9, -0x7be4(gp)            |         t9 = sym.imp.__sprintf_chk
    0x00047af8 move a0, s1                   |         a0 = s1;
    0x00047afc sw v0, 0x10(sp)               |         *(var_10h) = v0;
    0x00047b00 move a3, s5                   |         a3 = s5;
    0x00047b04 addiu a2, zero, -1            |         a2 = -1;
    0x00047b08 addiu a1, zero, 1             |         a1 = 1;
    0x00047b0c addiu s1, s1, 2               |         s1 += 2;
    0x00047b10 jalr t9                       |         t9 ();
    0x00047b14 addiu s0, s0, 1               |         s0++;
    0x00047b18 lw gp, 0x18(sp)               |         gp = *(var_18h);
    0x00047b1c bne s1, s4, 0x47ae8           |         
                                             |     }
                                             | label_0:
    0x00047b20 lw ra, 0x3c(sp)               |     ra = *(var_3ch);
                                             | label_1:
    0x00047b24 move v0, s3                   |     v0 = s3;
    0x00047b28 lw s5, 0x38(sp)               |     s5 = *(var_38h);
    0x00047b2c lw s4, 0x34(sp)               |     s4 = *(var_34h);
    0x00047b30 lw s3, 0x30(sp)               |     s3 = *(var_30h);
    0x00047b34 lw s2, 0x2c(sp)               |     s2 = *(var_2ch);
    0x00047b38 lw s1, 0x28(sp)               |     s1 = *(var_28h);
    0x00047b3c lw s0, 0x24(sp)               |     s0 = *(var_24h);
    0x00047b40 addiu sp, sp, 0x40            |     
    0x00047b44 jr ra                         |     return v0;
                                             | }
    ; assembly                           | /* r2dec pseudo code output */
                                         | /* /logs/firmware/unblob_extracted/firmware_extract/4325012-58052244.squashfs_v4_le_extract/usr/sbin/tc.iproute2 @ 0x485b4 */
                                         | #include <stdint.h>
                                         |  
    ; (fcn) sym.int_to_str ()            | void int_to_str () {
    0x000485b4 lui gp, 4                 |     
    0x000485b8 addiu gp, gp, -0x7e24     |     
    0x000485bc addu gp, gp, t9           |     gp += t9;
    0x000485c0 addiu sp, sp, -0x28       |     
    0x000485c4 lw a3, -0x7fd0(gp)        |     a3 = *(gp);
    0x000485c8 lw t9, -0x7be4(gp)        |     t9 = sym.imp.__sprintf_chk
    0x000485cc sw s0, 0x20(sp)           |     *(var_20h_2) = s0;
    0x000485d0 move s0, a1               |     s0 = a1;
    0x000485d4 sw ra, 0x24(sp)           |     *(var_24h_2) = ra;
    0x000485d8 sw gp, 0x18(sp)           |     *(var_18h) = gp;
    0x000485dc sw a0, 0x10(sp)           |     *(var_10h_2) = a0;
                                         |     /* esilref: '&d' */
    0x000485e0 addiu a3, a3, -0x668c     |     a3 += -0x668c;
    0x000485e4 move a0, s0               |     a0 = s0;
    0x000485e8 addiu a2, zero, -1        |     a2 = -1;
    0x000485ec addiu a1, zero, 1         |     a1 = 1;
    0x000485f0 jalr t9                   |     t9 ();
    0x000485f4 lw ra, 0x24(sp)           |     ra = *(var_24h_2);
    0x000485f8 move v0, s0               |     v0 = s0;
    0x000485fc lw s0, 0x20(sp)           |     s0 = *(var_20h_2);
    0x00048600 addiu sp, sp, 0x28        |     
    0x00048604 jr ra                     |     return v0;
                                         | }
    ; assembly                           | /* r2dec pseudo code output */
                                         | /* /logs/firmware/unblob_extracted/firmware_extract/4325012-58052244.squashfs_v4_le_extract/usr/sbin/tc.iproute2 @ 0x949c */
                                         | #include <stdint.h>
                                         |  
    ; (fcn) sym.print_class ()           | void print_class () {
    0x0000949c lui gp, 7                 |     
    0x000094a0 addiu gp, gp, 0x72f4      |     
    0x000094a4 addu gp, gp, t9           |     gp += t9;
    0x000094a8 addiu sp, sp, -0x170      |     
    0x000094ac lhu v0, 4(a1)             |     v0 = *((a1 + 2));
    0x000094b0 sw s3, 0x15c(sp)          |     *(var_15ch) = s3;
    0x000094b4 lw s3, -0x7a1c(gp)        |     s3 = *((gp - 7815));
    0x000094b8 addiu v0, v0, -0x28       |     v0 += -0x28;
    0x000094bc sw gp, 0x18(sp)           |     *(var_18h) = gp;
    0x000094c0 lw v1, (s3)               |     v1 = *(s3);
    0x000094c4 sltiu v0, v0, 2           |     v0 = (v0 < 2) ? 1 : 0;
    0x000094c8 sw ra, 0x16c(sp)          |     *(var_16ch) = ra;
    0x000094cc sw s6, 0x168(sp)          |     *(var_168h) = s6;
    0x000094d0 sw s5, 0x164(sp)          |     *(var_164h) = s5;
    0x000094d4 sw s4, 0x160(sp)          |     *(var_160h) = s4;
    0x000094d8 sw s2, 0x158(sp)          |     *(var_158h) = s2;
    0x000094dc sw s1, 0x154(sp)          |     *(var_154h) = s1;
    0x000094e0 sw s0, 0x150(sp)          |     *(var_150h) = s0;
    0x000094e4 sw v1, 0x14c(sp)          |     *(var_14ch) = v1;
                                         |     if (v0 == 0) {
    0x000094e8 beql v0, zero, 0x9758     |         goto label_17;
                                         |     }
    0x000094ec lw v0, -0x79fc(gp)        |     v0 = *((gp - 7807));
    0x000094f0 lw s1, (a1)               |     s1 = *(a1);
    0x000094f4 addiu s1, s1, -0x24       |     s1 += -0x24;
    0x000094f8 move s0, a1               |     s0 = a1;
                                         |     if (s1 < 0) {
    0x000094fc bltz s1, 0x9960           |         goto label_18;
                                         |     }
    0x00009500 lw v0, -0x7f6c(gp)        |     v0 = *(gp);
    0x00009504 lw s4, (v0)               |     s4 = *(v0);
    0x00009508 lw s5, -0x7ef0(gp)        |     s5 = *(gp);
                                         |     if (s4 != 0) {
    0x0000950c bnez s4, 0x97a8           |         goto label_19;
                                         |     }
    0x00009510 lw v0, (s5)               |     v0 = *(s5);
    0x00009514 move s2, a2               |     s2 = a2;
                                         |     if (v0 != 0) {
    0x00009518 bnez v0, 0x9738           |         goto label_20;
                                         |     }
    0x0000951c lw v0, -0x7eec(gp)        |     v0 = *(gp);
                                         |     do {
    0x00009520 lw v0, (v0)               |         v0 = *(v0);
    0x00009524 lw t9, -0x7f4c(gp)        |         t9 = sym.parse_rtattr;
                                         |         if (v0 != 0) {
    0x00009528 beqz v0, 0x9538           |             
    0x0000952c lw v1, 0x18(s0)           |             v1 = *((s0 + 6));
                                         |             if (v0 != v1) {
    0x00009530 bne v0, v1, 0x9700        |                 goto label_0;
                                         |             }
    0x00009534 nop                       |             
                                         |         }
    0x00009538 addiu s6, sp, 0x24        |         s6 = sp + 0x24;
    0x0000953c move a3, s1               |         a3 = s1;
    0x00009540 addiu a2, s0, 0x24        |         a2 = s0 + 0x24;
    0x00009544 addiu a1, zero, 9         |         a1 = 9;
    0x00009548 move a0, s6               |         a0 = s6;
    0x0000954c jalr t9                   |         t9 ();
    0x00009550 lw v0, 0x28(sp)           |         v0 = *(var_28h_2);
    0x00009554 lw gp, 0x18(sp)           |         gp = *(var_18h);
                                         |         if (v0 == 0) {
    0x00009558 beqz v0, 0x998c           |             goto label_21;
                                         |         }
    0x0000955c lhu v1, 4(s0)             |         v1 = *((s0 + 2));
    0x00009560 addiu v0, zero, 0x29      |         v0 = 0x29;
                                         |         if (v1 == v0) {
    0x00009564 beql v1, v0, 0x98e4       |             goto label_22;
                                         |         }
    0x00009568 lw a0, -0x7fdc(gp)        |         a0 = *(gp);
                                         | label_11:
    0x0000956c lw a2, 0x18(s0)           |         a2 = *((s0 + 6));
    0x00009570 sb zero, 0x4c(sp)         |         *(var_4ch) = 0;
                                         |         if (a2 != 0) {
    0x00009574 bnez a2, 0x9780           |             goto label_23;
                                         |         }
    0x00009578 addiu s1, sp, 0x4c        |         s1 = sp + 0x4c;
                                         | label_1:
    0x0000957c lw a2, -0x7fdc(gp)        |         a2 = *(gp);
    0x00009580 lw a3, 0x28(sp)           |         a3 = *(var_28h_2);
    0x00009584 lw t9, -0x7b90(gp)        |         t9 = sym.imp.__fprintf_chk;
    0x00009588 sw s1, 0x10(sp)           |         *(var_10h_2) = s1;
    0x0000958c addiu a3, a3, 4           |         a3 += 4;
                                         |         /* str.class__s__s_ */
    0x00009590 addiu a2, a2, 0x5fc4      |         a2 += 0x5fc4;
    0x00009594 addiu a1, zero, 1         |         a1 = 1;
    0x00009598 move a0, s2               |         a0 = s2;
    0x0000959c jalr t9                   |         t9 ();
    0x000095a0 lw gp, 0x18(sp)           |         gp = *(var_18h);
    0x000095a4 lw v0, -0x7ee8(gp)        |         v0 = *(gp);
    0x000095a8 lw v0, (v0)               |         v0 = *(v0);
    0x000095ac lw t9, -0x7f38(gp)        |         t9 = sym.ll_index_to_name;
                                         |         if (v0 == 0) {
    0x000095b0 beqz v0, 0x9838           |             goto label_24;
                                         |         }
                                         | label_4:
    0x000095b4 lw a2, 0x1c(s0)           |         a2 = *((s0 + 7));
    0x000095b8 addiu v0, zero, -1        |         v0 = -1;
    0x000095bc lw a0, -0x7fdc(gp)        |         a0 = *(gp);
                                         |         if (a2 == v0) {
    0x000095c0 beq a2, v0, 0x98c4        |             goto label_25;
                                         |         }
    0x000095c4 lw v0, (s5)               |         v0 = *(s5);
    0x000095c8 lw t9, -0x7f48(gp)        |         t9 = sym.print_tc_classid;
                                         |         if (v0 == 0) {
    0x000095cc beqz v0, 0x9804           |             goto label_26;
                                         |         }
    0x000095d0 andi a2, a2, 0xffff       |         a2 &= 0xffff;
    0x000095d4 addiu a1, zero, 0x100     |         a1 = aav.0x00000100;
    0x000095d8 move a0, s1               |         a0 = s1;
    0x000095dc bal 0xcfc0                |         sym_print_tc_classid ();
    0x000095e0 lw gp, 0x18(sp)           |         gp = *(var_18h);
                                         | label_2:
    0x000095e4 lw a2, -0x7fdc(gp)        |         a2 = *(gp);
    0x000095e8 lw t9, -0x7b90(gp)        |         t9 = sym.imp.__fprintf_chk;
    0x000095ec move a3, s1               |         a3 = s1;
                                         |         /* str.parent__s_ */
    0x000095f0 addiu a2, a2, 0x5bd0      |         a2 += 0x5bd0;
    0x000095f4 addiu a1, zero, 1         |         a1 = 1;
    0x000095f8 move a0, s2               |         a0 = s2;
    0x000095fc jalr t9                   |         t9 ();
    0x00009600 lw gp, 0x18(sp)           |         gp = *(var_18h);
                                         | label_10:
    0x00009604 lw a3, 0x20(s0)           |         a3 = *((s0 + 8));
    0x00009608 lw a2, -0x7fdc(gp)        |         a2 = *(gp);
                                         |         if (a3 != 0) {
    0x0000960c bnez a3, 0x9818           |             goto label_27;
                                         |         }
                                         | label_3:
    0x00009610 lw a0, 0x28(sp)           |         a0 = *(var_28h_2);
    0x00009614 lw t9, -0x7f44(gp)        |         t9 = sym.get_qdisc_kind;
    0x00009618 addiu a0, a0, 4           |         a0 += 4;
    0x0000961c bal 0x7838                |         sym_get_qdisc_kind ();
    0x00009620 lw a2, 0x2c(sp)           |         a2 = *(var_2ch_2);
    0x00009624 lw gp, 0x18(sp)           |         gp = *(var_18h);
    0x00009628 move s0, v0               |         s0 = v0;
                                         |         if (a2 != 0) {
    0x0000962c beqz a2, 0x9650           |             
                                         |             if (v0 == 0) {
    0x00009630 beql v0, zero, 0x986c     |                 goto label_28;
                                         |             }
    0x00009634 lw a0, -0x7fdc(gp)        |             a0 = *(gp);
    0x00009638 lw t9, 0x18(v0)           |             t9 = *((v0 + 6));
    0x0000963c move a1, s2               |             a1 = s2;
                                         |             if (t9 == 0) {
    0x00009640 beqz t9, 0x9868           |                 goto label_29;
                                         |             }
    0x00009644 move a0, v0               |             a0 = v0;
    0x00009648 jalr t9                   |             t9 ();
    0x0000964c lw gp, 0x18(sp)           |             gp = *(var_18h);
                                         |         }
                                         | label_5:
    0x00009650 lw t9, -0x7b60(gp)        |         t9 = sym.imp.fputc;
    0x00009654 move a1, s2               |         a1 = s2;
    0x00009658 addiu a0, zero, 0xa       |         a0 = 0xa;
    0x0000965c jalr t9                   |         t9 ();
    0x00009660 lw gp, 0x18(sp)           |         gp = *(var_18h);
    0x00009664 lw v0, -0x7f84(gp)        |         v0 = *(gp);
    0x00009668 lw v0, (v0)               |         v0 = *(v0);
    0x0000966c lw t9, -0x79f8(gp)        |         t9 = sym.imp.fflush;
                                         |         if (v0 != 0) {
    0x00009670 beqz v0, 0x96f4           |             
    0x00009674 lw v0, 0x30(sp)           |             v0 = *(var_30h_2);
    0x00009678 sw zero, 0x20(sp)         |             *(var_20h_2) = 0;
                                         |             if (v0 == 0) {
    0x0000967c beqz v0, 0x98a0           |                 goto label_30;
                                         |             }
    0x00009680 lw a2, -0x7fdc(gp)        |             a2 = *(gp);
                                         | label_6:
    0x00009684 lw t9, -0x7f3c(gp)        |             t9 = sym.print_tcstats_attr;
    0x00009688 addiu a3, sp, 0x20        |             a3 = sp + 0x20;
    0x0000968c addiu a2, a2, 0x600c      |             a2 += 0x600c;
    0x00009690 move a1, s6               |             a1 = s6;
    0x00009694 move a0, s2               |             a0 = s2;
    0x00009698 bal 0xec48                |             sym_print_tcstats_attr ();
    0x0000969c lw gp, 0x18(sp)           |             gp = *(var_18h);
    0x000096a0 move a1, s2               |             a1 = s2;
    0x000096a4 lw t9, -0x7b60(gp)        |             t9 = sym.imp.fputc;
    0x000096a8 addiu a0, zero, 0xa       |             a0 = 0xa;
    0x000096ac jalr t9                   |             t9 ();
    0x000096b0 lw gp, 0x18(sp)           |             gp = *(var_18h);
                                         |             if (s0 != 0) {
    0x000096b4 beqz s0, 0x96f0           |                 
    0x000096b8 lw a2, 0x20(sp)           |                 a2 = *(var_20h_2);
                                         |                 if (a2 == 0) {
    0x000096bc beql a2, zero, 0x98b4     |                     goto label_31;
                                         |                 }
    0x000096c0 lw a2, 0x34(sp)           |                 a2 = *(var_34h);
    0x000096c4 lw t9, 0x10(s0)           |                 t9 = *((s0 + 4));
                                         | label_8:
    0x000096c8 move a1, s2               |                 a1 = s2;
                                         |                 if (t9 == 0) {
    0x000096cc beqz t9, 0x96f0           |                     goto label_7;
                                         |                 }
    0x000096d0 move a0, s0               |                 a0 = s0;
    0x000096d4 jalr t9                   |                 t9 ();
    0x000096d8 lw gp, 0x18(sp)           |                 gp = *(var_18h);
    0x000096dc move a1, s2               |                 a1 = s2;
    0x000096e0 lw t9, -0x7b60(gp)        |                 t9 = sym.imp.fputc;
    0x000096e4 addiu a0, zero, 0xa       |                 a0 = 0xa;
    0x000096e8 jalr t9                   |                 t9 ();
    0x000096ec lw gp, 0x18(sp)           |                 gp = *(var_18h);
                                         |             }
                                         | label_7:
    0x000096f0 lw t9, -0x79f8(gp)        |             t9 = sym.imp.fflush;
                                         |         }
                                         | label_9:
    0x000096f4 move a0, s2               |         a0 = s2;
    0x000096f8 jalr t9                   |         t9 ();
    0x000096fc lw gp, 0x18(sp)           |         gp = *(var_18h);
                                         | label_0:
    0x00009700 lw a0, 0x14c(sp)          |         a0 = *(var_14ch);
    0x00009704 lw v1, (s3)               |         v1 = *(s3);
    0x00009708 move v0, s4               |         v0 = s4;
                                         |         if (a0 != v1) {
    0x0000970c bne a0, v1, 0x99b8        |             goto label_32;
                                         |         }
    0x00009710 lw ra, 0x16c(sp)          |         ra = *(var_16ch);
    0x00009714 lw s6, 0x168(sp)          |         s6 = *(var_168h);
    0x00009718 lw s5, 0x164(sp)          |         s5 = *(var_164h);
    0x0000971c lw s4, 0x160(sp)          |         s4 = *(var_160h);
    0x00009720 lw s3, 0x15c(sp)          |         s3 = *(var_15ch);
    0x00009724 lw s2, 0x158(sp)          |         s2 = *(var_158h);
    0x00009728 lw s1, 0x154(sp)          |         s1 = *(var_154h);
    0x0000972c lw s0, 0x150(sp)          |         s0 = *(var_150h);
    0x00009730 addiu sp, sp, 0x170       |         
    0x00009734 jr ra                     |         return v0;
                                         | label_20:
    0x00009738 lw v1, 0x18(a1)           |         v1 = *((a1 + 6));
    0x0000973c xor v0, v0, v1            |         v0 ^= v1;
    0x00009740 lui v1, 0xffff            |         v1 = 0xffff0000;
    0x00009744 and v0, v0, v1            |         v0 &= v1;
    0x00009748 beql v0, zero, 0x9520     |         
                                         |     } while (v0 == 0);
    0x0000974c lw v0, -0x7eec(gp)        |     v0 = *(gp);
    0x00009750 b 0x9700                  |     goto label_0;
    0x00009754 nop                       |     
                                         | label_17:
    0x00009758 lw a0, -0x7fdc(gp)        |     a0 = *(gp);
    0x0000975c lw t9, -0x7a7c(gp)        |     t9 = sym.imp.fwrite;
    0x00009760 lw a3, (v0)               |     a3 = *(v0);
    0x00009764 addiu a2, zero, 0xc       |     a2 = 0xc;
    0x00009768 addiu a1, zero, 1         |     a1 = 1;
                                         |     /* str.Not_a_class_n */
    0x0000976c addiu a0, a0, 0x5f9c      |     a0 += 0x5f9c;
    0x00009770 jalr t9                   |     t9 ();
    0x00009774 move s4, zero             |     s4 = 0;
    0x00009778 lw gp, 0x18(sp)           |     gp = *(var_18h);
    0x0000977c b 0x9700                  |     goto label_0;
                                         | label_23:
    0x00009780 lw v0, (s5)               |     v0 = *(s5);
    0x00009784 lw t9, -0x7f48(gp)        |     t9 = sym.print_tc_classid;
    0x00009788 addiu s1, sp, 0x4c        |     s1 = sp + 0x4c;
                                         |     if (v0 != 0) {
    0x0000978c beqz v0, 0x988c           |         
    0x00009790 andi a2, a2, 0xffff       |         a2 &= 0xffff;
    0x00009794 addiu a1, zero, 0x100     |         a1 = aav.0x00000100;
    0x00009798 move a0, s1               |         a0 = s1;
    0x0000979c bal 0xcfc0                |         sym_print_tc_classid ();
    0x000097a0 lw gp, 0x18(sp)           |         gp = *(var_18h);
    0x000097a4 b 0x957c                  |         goto label_1;
                                         | label_19:
    0x000097a8 lw t9, -0x7be0(gp)        |         t9 = sym.imp.calloc;
    0x000097ac lw s4, 0x1c(s0)           |         s4 = *((s0 + 7));
    0x000097b0 lw s5, 0x18(s0)           |         s5 = *((s0 + 6));
    0x000097b4 addiu a1, zero, 0x24      |         a1 = 0x24;
    0x000097b8 addiu a0, zero, 1         |         a0 = 1;
    0x000097bc jalr t9                   |         t9 ();
    0x000097c0 move s2, v0               |         s2 = v0;
    0x000097c4 lw gp, 0x18(sp)           |         gp = *(var_18h);
    0x000097c8 sw s5, 8(v0)              |         *((v0 + 2)) = s5;
    0x000097cc sw s4, 0xc(v0)            |         *((v0 + 3)) = s4;
                                         |         if (s1 != 0) {
    0x000097d0 bnez s1, 0x992c           |             goto label_33;
                                         |         }
                                         | label_12:
    0x000097d4 addiu v0, zero, -1        |         v0 = -1;
    0x000097d8 lw v0, -0x7f88(gp)        |         v0 = *((gp - 8162));
                                         |         if (s4 == v0) {
    0x000097dc beq s4, v0, 0x9904        |             goto label_34;
                                         |         }
    0x000097e0 lw v1, -0x716c(v0)        |         v1 = *((v0 - 7259));
    0x000097e4 sw v1, (s2)               |         *(s2) = v1;
                                         |         if (v1 != 0) {
    0x000097e8 beqz v1, 0x97f0           |             
    0x000097ec sw s2, 4(v1)              |             *((v1 + 1)) = s2;
                                         |         }
    0x000097f0 addiu v1, v0, -0x716c     |         v1 = v0 + -0x716c;
    0x000097f4 sw s2, -0x716c(v0)        |         *((v0 - 7259)) = s2;
    0x000097f8 sw v1, 4(s2)              |         *((s2 + 1)) = v1;
    0x000097fc move s4, zero             |         s4 = 0;
    0x00009800 b 0x9700                  |         goto label_0;
                                         | label_26:
    0x00009804 addiu a1, zero, 0x100     |         a1 = aav.0x00000100;
    0x00009808 move a0, s1               |         a0 = s1;
    0x0000980c bal 0xcfc0                |         sym_print_tc_classid ();
    0x00009810 lw gp, 0x18(sp)           |         gp = *(var_18h);
    0x00009814 b 0x95e4                  |         goto label_2;
                                         | label_27:
    0x00009818 lw t9, -0x7b90(gp)        |         t9 = sym.imp.__fprintf_chk;
    0x0000981c srl a3, a3, 0x10          |         a3 >>= 0x10;
                                         |         /* str.leaf__x:_ */
    0x00009820 addiu a2, a2, 0x5fd4      |         a2 += 0x5fd4;
    0x00009824 addiu a1, zero, 1         |         a1 = 1;
    0x00009828 move a0, s2               |         a0 = s2;
    0x0000982c jalr t9                   |         t9 ();
    0x00009830 lw gp, 0x18(sp)           |         gp = *(var_18h);
    0x00009834 b 0x9610                  |         goto label_3;
                                         | label_24:
    0x00009838 lw a0, 0x14(s0)           |         a0 = *((s0 + 5));
    0x0000983c jalr t9                   |         t9 ();
    0x00009840 lw gp, 0x18(sp)           |         gp = *(var_18h);
    0x00009844 move a3, v0               |         a3 = v0;
    0x00009848 addiu a1, zero, 1         |         a1 = 1;
    0x0000984c lw a2, -0x7fdc(gp)        |         a2 = *(gp);
    0x00009850 lw t9, -0x7b90(gp)        |         t9 = sym.imp.__fprintf_chk;
                                         |         /* str.dev__s_ */
    0x00009854 addiu a2, a2, 0x5bc0      |         a2 += 0x5bc0;
    0x00009858 move a0, s2               |         a0 = s2;
    0x0000985c jalr t9                   |         t9 ();
    0x00009860 lw gp, 0x18(sp)           |         gp = *(var_18h);
    0x00009864 b 0x95b4                  |         goto label_4;
                                         | label_29:
    0x00009868 lw a0, -0x7fdc(gp)        |         a0 = *(gp);
                                         | label_28:
    0x0000986c lw t9, -0x7a7c(gp)        |         t9 = sym.imp.fwrite;
    0x00009870 move a3, s2               |         a3 = s2;
    0x00009874 addiu a2, zero, 0x1f      |         a2 = 0x1f;
    0x00009878 addiu a1, zero, 1         |         a1 = 1;
                                         |         /* str._cannot_parse_class_parameters_ */
    0x0000987c addiu a0, a0, 0x5fe0      |         a0 += 0x5fe0;
    0x00009880 jalr t9                   |         t9 ();
    0x00009884 lw gp, 0x18(sp)           |         gp = *(var_18h);
    0x00009888 b 0x9650                  |         goto label_5;
                                         |     }
    0x0000988c addiu a1, zero, 0x100     |     a1 = aav.0x00000100;
    0x00009890 move a0, s1               |     a0 = s1;
    0x00009894 bal 0xcfc0                |     sym_print_tc_classid ();
    0x00009898 lw gp, 0x18(sp)           |     gp = *(var_18h);
    0x0000989c b 0x957c                  |     goto label_1;
                                         | label_30:
    0x000098a0 lw v0, 0x40(sp)           |     v0 = *(var_40h);
    0x000098a4 lw a2, -0x7fdc(gp)        |     a2 = *(gp);
                                         |     if (v0 != 0) {
    0x000098a8 bnez v0, 0x9684           |         goto label_6;
                                         |     }
    0x000098ac lw a2, 0x34(sp)           |     a2 = *(var_34h);
                                         |     if (s0 == 0) {
    0x000098b0 beqz s0, 0x96f0           |         goto label_7;
                                         |     }
                                         | label_31:
    0x000098b4 lw t9, 0x10(s0)           |     t9 = *((s0 + 4));
                                         |     if (a2 == 0) {
    0x000098b8 bnel a2, zero, 0x96c8     |         goto label_8;
                                         |     }
    0x000098bc lw t9, -0x79f8(gp)        |     t9 = sym.imp.fflush;
    0x000098c0 b 0x96f4                  |     goto label_9;
                                         | label_25:
    0x000098c4 lw t9, -0x7a7c(gp)        |     t9 = sym.imp.fwrite;
    0x000098c8 move a3, s2               |     a3 = s2;
    0x000098cc addiu a2, zero, 5         |     a2 = 5;
    0x000098d0 addiu a1, zero, 1         |     a1 = 1;
                                         |     /* str.root_ */
    0x000098d4 addiu a0, a0, 0x5bc8      |     a0 += 0x5bc8;
    0x000098d8 jalr t9                   |     t9 ();
    0x000098dc lw gp, 0x18(sp)           |     gp = *(var_18h);
    0x000098e0 b 0x9604                  |     goto label_10;
                                         | label_22:
    0x000098e4 lw t9, -0x7a7c(gp)        |     t9 = sym.imp.fwrite;
    0x000098e8 move a3, s2               |     a3 = s2;
    0x000098ec addiu a2, zero, 8         |     a2 = 8;
    0x000098f0 addiu a1, zero, 1         |     a1 = 1;
                                         |     /* str.deleted_ */
    0x000098f4 addiu a0, a0, 0x5b8c      |     a0 += 0x5b8c;
    0x000098f8 jalr t9                   |     t9 ();
    0x000098fc lw gp, 0x18(sp)           |     gp = *(var_18h);
    0x00009900 b 0x956c                  |     goto label_11;
                                         | label_34:
    0x00009904 lw v0, -0x7f88(gp)        |     v0 = *((gp - 8162));
    0x00009908 lw v1, -0x7170(v0)        |     v1 = *((v0 - 7260));
    0x0000990c sw v1, (s2)               |     *(s2) = v1;
                                         |     if (v1 != 0) {
    0x00009910 beqz v1, 0x9918           |         
    0x00009914 sw s2, 4(v1)              |         *((v1 + 1)) = s2;
                                         |     }
    0x00009918 addiu v1, v0, -0x7170     |     v1 = v0 + -0x7170;
    0x0000991c sw s2, -0x7170(v0)        |     *((v0 - 7260)) = s2;
    0x00009920 sw v1, 4(s2)              |     *((s2 + 1)) = v1;
    0x00009924 move s4, zero             |     s4 = 0;
    0x00009928 b 0x9700                  |     goto label_0;
                                         | label_33:
    0x0000992c lw t9, -0x7aac(gp)        |     t9 = sym.imp.malloc;
    0x00009930 move a0, s1               |     a0 = s1;
    0x00009934 jalr t9                   |     t9 ();
    0x00009938 lw gp, 0x18(sp)           |     gp = *(var_18h);
    0x0000993c sw v0, 0x18(s2)           |     *((s2 + 6)) = v0;
    0x00009940 sw s1, 0x1c(s2)           |     *((s2 + 7)) = s1;
    0x00009944 lw t9, -0x7a18(gp)        |     t9 = sym.imp.memcpy;
    0x00009948 move a2, s1               |     a2 = s1;
    0x0000994c addiu a1, s0, 0x24        |     a1 = s0 + 0x24;
    0x00009950 move a0, v0               |     a0 = v0;
    0x00009954 jalr t9                   |     t9 ();
    0x00009958 lw gp, 0x18(sp)           |     gp = *(var_18h);
    0x0000995c b 0x97d4                  |     goto label_12;
                                         | label_18:
    0x00009960 lw v0, -0x79fc(gp)        |     v0 = *((gp - 7807));
    0x00009964 lw a2, -0x7fdc(gp)        |     a2 = *(gp);
    0x00009968 lw t9, -0x7b90(gp)        |     t9 = sym.imp.__fprintf_chk;
    0x0000996c lw a0, (v0)               |     a0 = *(v0);
    0x00009970 move a3, s1               |     a3 = s1;
                                         |     /* str.Wrong_len__d_n */
    0x00009974 addiu a2, a2, 0x5b64      |     a2 += 0x5b64;
    0x00009978 addiu a1, zero, 1         |     a1 = 1;
    0x0000997c jalr t9                   |     t9 ();
    0x00009980 addiu s4, zero, -1        |     s4 = -1;
    0x00009984 lw gp, 0x18(sp)           |     gp = *(var_18h);
    0x00009988 b 0x9700                  |     goto label_0;
                                         | label_21:
    0x0000998c lw v0, -0x79fc(gp)        |     v0 = *((gp - 7807));
    0x00009990 lw a0, -0x7fdc(gp)        |     a0 = *(gp);
    0x00009994 lw t9, -0x7a7c(gp)        |     t9 = sym.imp.fwrite;
    0x00009998 lw a3, (v0)               |     a3 = *(v0);
    0x0000999c addiu a2, zero, 0x17      |     a2 = 0x17;
    0x000099a0 addiu a1, zero, 1         |     a1 = 1;
                                         |     /* str.print_class:_NULL_kind_n */
    0x000099a4 addiu a0, a0, 0x5fac      |     a0 += 0x5fac;
    0x000099a8 jalr t9                   |     t9 ();
    0x000099ac addiu s4, zero, -1        |     s4 = -1;
    0x000099b0 lw gp, 0x18(sp)           |     gp = *(var_18h);
    0x000099b4 b 0x9700                  |     goto label_0;
                                         | label_32:
    0x000099b8 lw t9, -0x7a48(gp)        |     t9 = sym.imp.__stack_chk_fail;
    0x000099bc jalr t9                   |     t9 ();
    0x000099c0 nop                       |     
    0x000099c4 lui gp, 7                 |     
    0x000099c8 addiu gp, gp, 0x6dcc      |     
    0x000099cc addu gp, gp, t9           |     gp += t9;
    0x000099d0 addiu sp, sp, -0xb8       |     
    0x000099d4 addiu v0, sp, 0x28        |     v0 = sp + 0x28;
    0x000099d8 sw s5, 0xa4(sp)           |     *(var_a4h) = s5;
    0x000099dc lw s5, -0x7a1c(gp)        |     s5 = *((gp - 7815));
    0x000099e0 move v1, v0               |     v1 = v0;
    0x000099e4 sw v0, 0x24(sp)           |     *(var_24h) = v0;
    0x000099e8 lw v0, (s5)               |     v0 = *(s5);
    0x000099ec lw t9, -0x7b0c(gp)        |     t9 = sym.imp.memset;
    0x000099f0 sw gp, 0x18(sp)           |     *(var_18h_2) = gp;
    0x000099f4 sw fp, 0xb0(sp)           |     *(var_b0h) = fp;
    0x000099f8 sw s7, 0xac(sp)           |     *(var_ach) = s7;
    0x000099fc sw s2, 0x98(sp)           |     *(var_98h) = s2;
    0x00009a00 sw s1, 0x94(sp)           |     *(var_94h) = s1;
    0x00009a04 sw ra, 0xb4(sp)           |     *(var_b4h) = ra;
    0x00009a08 sw s6, 0xa8(sp)           |     *(var_a8h) = s6;
    0x00009a0c sw s4, 0xa0(sp)           |     *(var_a0h) = s4;
    0x00009a10 sw s3, 0x9c(sp)           |     *(var_9ch) = s3;
    0x00009a14 sw s0, 0x90(sp)           |     *(var_90h) = s0;
    0x00009a18 move s1, a0               |     s1 = a0;
    0x00009a1c move s2, a1               |     s2 = a1;
    0x00009a20 move fp, a2               |     fp = a2;
    0x00009a24 move a1, zero             |     a1 = 0;
    0x00009a28 addiu a2, zero, 0x64      |     a2 = 0x64;
    0x00009a2c move a0, v1               |     a0 = v1;
    0x00009a30 sw v0, 0x8c(sp)           |     *(var_8ch) = v0;
    0x00009a34 move s7, a3               |     s7 = a3;
    0x00009a38 jalr t9                   |     t9 ();
    0x00009a3c lw gp, 0x18(sp)           |     gp = *(var_18h_2);
                                         |     if (s2 == 0) {
    0x00009a40 beqz s2, 0x9af0           |         goto label_35;
                                         |     }
    0x00009a44 lw s0, 0x10(s2)           |     s0 = *((s2 + 4));
    0x00009a48 lw v0, 0x10(s0)           |     v0 = *((s0 + 4));
                                         |     if (s0 == 0) {
    0x00009a4c bnel s0, zero, 0x9a60     |         goto label_36;
                                         |     }
    0x00009a50 lw v0, 0x14(s2)           |     v0 = *((s2 + 5));
    0x00009a54 b 0x9c04                  |     goto label_37;
                                         |     do {
    0x00009a58 move s0, v0               |         s0 = v0;
    0x00009a5c lw v0, 0x10(s0)           |         v0 = *((s0 + 4));
                                         | label_36:
    0x00009a60 sw s2, 0x14(s0)           |         *((s0 + 5)) = s2;
    0x00009a64 move s2, s0               |         s2 = s0;
    0x00009a68 bnez v0, 0x9a58           |         
                                         |     } while (v0 != 0);
    0x00009a6c lw v0, -0x7fdc(gp)        |     v0 = *(gp);
                                         | label_16:
    0x00009a70 lw a1, -0x7fdc(gp)        |     a1 = *(gp);
                                         |     /* esilref: '     ' */
    0x00009a74 addiu s4, v0, 0x6008      |     s4 = v0 + 0x6008;
    0x00009a78 lw s3, 0x6008(v0)         |     s3 = *((v0 + 6146));
    0x00009a7c lw s2, 0x6000(a1)         |     s2 = *((a1 + 6144));
                                         |     /* esilref: '|    ' */
    0x00009a80 addiu s6, a1, 0x6000      |     s6 = a1 + 0x6000;
    0x00009a84 b 0x9ab8                  |     
                                         |     while (v1 != 0) {
    0x00009a88 lbu a0, 4(s6)             |         a0 = *((s6 + 4));
    0x00009a8c lbu v1, 5(s6)             |         v1 = *((s6 + 5));
    0x00009a90 swl s2, 3(v0)             |         __asm ("swl s2, 3(v0)");
    0x00009a94 swr s2, (v0)              |         __asm ("swr s2, (v0)");
    0x00009a98 sb a0, 4(v0)              |         *((v0 + 4)) = a0;
    0x00009a9c sb v1, 5(v0)              |         *((v0 + 5)) = v1;
                                         | label_13:
    0x00009aa0 lw s0, 0x14(s0)           |         s0 = *((s0 + 5));
                                         |         if (s0 == 0) {
    0x00009aa4 beql s0, zero, 0x9af4     |             goto label_15;
                                         |         }
    0x00009aa8 move s0, zero             |         s0 = 0;
    0x00009aac lw v0, 0x14(s0)           |         v0 = *((s0 + 5));
                                         |         if (v0 == 0) {
    0x00009ab0 beqz v0, 0x9af4           |             goto label_15;
                                         |         }
    0x00009ab4 nop                       |         
    0x00009ab8 lw t9, -0x7ae4(gp)        |         t9 = sym.imp.strlen;
    0x00009abc move a0, s1               |         a0 = s1;
    0x00009ac0 jalr t9                   |         t9 ();
    0x00009ac4 lw v1, (s0)               |         v1 = *(s0);
    0x00009ac8 lw gp, 0x18(sp)           |         gp = *(var_18h_2);
    0x00009acc addu v0, s1, v0           |         v0 = s1 + v0;
    0x00009ad0 bnez v1, 0x9a88           |         
                                         |     }
    0x00009ad4 lbu a0, 4(s4)             |     a0 = *((s4 + 4));
    0x00009ad8 lbu v1, 5(s4)             |     v1 = *((s4 + 5));
    0x00009adc swl s3, 3(v0)             |     __asm ("swl s3, 3(v0)");
    0x00009ae0 swr s3, (v0)              |     __asm ("swr s3, (v0)");
    0x00009ae4 sb a0, 4(v0)              |     *((v0 + 4)) = a0;
    0x00009ae8 sb v1, 5(v0)              |     *((v0 + 5)) = v1;
    0x00009aec b 0x9aa0                  |     goto label_13;
                                         | label_35:
    0x00009af0 move s0, zero             |     s0 = 0;
                                         | label_15:
    0x00009af4 lw t9, -0x7ae4(gp)        |     t9 = sym.imp.strlen;
                                         |     if (fp == 0) {
    0x00009af8 beqz fp, 0x9b4c           |         goto label_38;
                                         |     }
    0x00009afc move a0, s1               |     a0 = s1;
    0x00009b00 jalr t9                   |     t9 ();
    0x00009b04 lw a0, (s0)               |     a0 = *(s0);
    0x00009b08 lw gp, 0x18(sp)           |     gp = *(var_18h_2);
    0x00009b0c lw v1, 0x20(s0)           |     v1 = *((s0 + 8));
    0x00009b10 addu v0, s1, v0           |     v0 = s1 + v0;
                                         |     if (a0 == 0) {
    0x00009b14 beqz a0, 0x9bd4           |         goto label_39;
                                         |     }
    0x00009b18 lw a0, -0x7fdc(gp)        |     a0 = *(gp);
                                         |     if (v1 != 0) {
    0x00009b1c bnez v1, 0x9bec           |         goto label_40;
                                         |     }
    0x00009b20 lw a0, -0x7fdc(gp)        |     a0 = *(gp);
                                         |     /* esilref: '|     ' */
    0x00009b24 addiu v1, a0, 0x6018      |     v1 = a0 + 0x6018;
    0x00009b28 lw a0, 0x6018(a0)         |     a0 = *((a0 + 6150));
                                         |     do {
                                         | label_14:
    0x00009b2c lbu a2, 4(v1)             |         a2 = *((v1 + 4));
    0x00009b30 lbu a1, 5(v1)             |         a1 = *((v1 + 5));
    0x00009b34 lbu v1, 6(v1)             |         v1 = *((v1 + 6));
    0x00009b38 swl a0, 3(v0)             |         __asm ("swl a0, 3(v0)");
    0x00009b3c swr a0, (v0)              |         __asm ("swr a0, (v0)");
    0x00009b40 sb a2, 4(v0)              |         *((v0 + 4)) = a2;
    0x00009b44 sb a1, 5(v0)              |         *((v0 + 5)) = a1;
    0x00009b48 sb v1, 6(v0)              |         *((v0 + 6)) = v1;
                                         | label_38:
    0x00009b4c lw v0, -0x7fd0(gp)        |         v0 = *(gp);
                                         |         if (s7 > 0) {
    0x00009b50 blez s7, 0x9b98           |             
    0x00009b54 lw a3, -0x7fdc(gp)        |             a3 = *(gp);
    0x00009b58 lw s0, 0x24(sp)           |             s0 = *(var_24h);
    0x00009b5c lw t9, -0x7be4(gp)        |             t9 = sym.imp.__sprintf_chk
    0x00009b60 addiu v0, v0, -0x312c     |             v0 += -0x312c;
                                         |             /* str.__s */
    0x00009b64 addiu a3, a3, 0x6030      |             a3 += 0x6030;
    0x00009b68 addiu a2, zero, 0x64      |             a2 = 0x64;
    0x00009b6c addiu a1, zero, 1         |             a1 = 1;
    0x00009b70 move a0, s0               |             a0 = s0;
    0x00009b74 sw v0, 0x14(sp)           |             *(var_14h) = v0;
    0x00009b78 sw s7, 0x10(sp)           |             *(var_10h) = s7;
    0x00009b7c jalr t9                   |             t9 ();
    0x00009b80 lw gp, 0x18(sp)           |             gp = *(var_18h_2);
    0x00009b84 move a1, s0               |             a1 = s0;
    0x00009b88 lw t9, -0x7a84(gp)        |             t9 = sym.imp.strcat;
    0x00009b8c move a0, s1               |             a0 = s1;
    0x00009b90 jalr t9                   |             t9 ();
    0x00009b94 lw gp, 0x18(sp)           |             gp = *(var_18h_2);
                                         |         }
    0x00009b98 lw v1, 0x8c(sp)           |         v1 = *(var_8ch);
    0x00009b9c lw v0, (s5)               |         v0 = *(s5);
    0x00009ba0 lw ra, 0xb4(sp)           |         ra = *(var_b4h);
                                         |         if (v1 != v0) {
    0x00009ba4 bne v1, v0, 0x9c14        |             goto label_41;
                                         |         }
    0x00009ba8 lw fp, 0xb0(sp)           |         fp = *(var_b0h);
    0x00009bac lw s7, 0xac(sp)           |         s7 = *(var_ach);
    0x00009bb0 lw s6, 0xa8(sp)           |         s6 = *(var_a8h);
    0x00009bb4 lw s5, 0xa4(sp)           |         s5 = *(var_a4h);
    0x00009bb8 lw s4, 0xa0(sp)           |         s4 = *(var_a0h);
    0x00009bbc lw s3, 0x9c(sp)           |         s3 = *(var_9ch);
    0x00009bc0 lw s2, 0x98(sp)           |         s2 = *(var_98h);
    0x00009bc4 lw s1, 0x94(sp)           |         s1 = *(var_94h);
    0x00009bc8 lw s0, 0x90(sp)           |         s0 = *(var_90h);
    0x00009bcc addiu sp, sp, 0xb8        |         
    0x00009bd0 jr ra                     |         return v0;
                                         |         if (v1 == 0) {
                                         | label_39:
    0x00009bd4 beql v1, zero, 0x9bf8     |             goto label_42;
                                         |         }
    0x00009bd8 lw a0, -0x7fdc(gp)        |         a0 = *(gp);
    0x00009bdc lw a0, -0x7fdc(gp)        |         a0 = *(gp);
                                         |         /* str._____ */
    0x00009be0 addiu v1, a0, 0x6020      |         v1 = a0 + 0x6020;
    0x00009be4 lw a0, 0x6020(a0)         |         a0 = *((a0 + 6152));
    0x00009be8 b 0x9b2c                  |         
                                         |     } while (1);
                                         |     /* str.____ */
                                         | label_40:
    0x00009bec addiu v1, a0, 0x6010      |     v1 = a0 + 0x6010;
    0x00009bf0 lw a0, 0x6010(a0)         |     a0 = *((a0 + 6148));
    0x00009bf4 b 0x9b2c                  |     goto label_14;
                                         |     /* esilref: '      ' */
                                         | label_42:
    0x00009bf8 addiu v1, a0, 0x6028      |     v1 = a0 + 0x6028;
    0x00009bfc lw a0, 0x6028(a0)         |     a0 = *((a0 + 6154));
    0x00009c00 b 0x9b2c                  |     goto label_14;
                                         | label_37:
    0x00009c04 move s0, s2               |     s0 = s2;
                                         |     if (v0 == 0) {
    0x00009c08 beqz v0, 0x9af4           |         goto label_15;
                                         |     }
    0x00009c0c lw v0, -0x7fdc(gp)        |     v0 = *(gp);
    0x00009c10 b 0x9a70                  |     goto label_16;
                                         | label_41:
    0x00009c14 lw t9, -0x7a48(gp)        |     t9 = sym.imp.__stack_chk_fail;
    0x00009c18 jalr t9                   |     t9 ();
    0x00009c1c nop                       |     
                                         | }

[*] Function sprintf used 4 times tc.iproute2