[*] Binary protection state of tc.iproute2
Full RELRO Canary found NX disabled PIE enabled No RPATH No RUNPATH No Symbols
[*] Function strcat 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 @ 0x47fc4 */
| #include <stdint.h>
|
; (fcn) sym.getcmdline () | void getcmdline () {
0x00047fc4 lui gp, 4 |
0x00047fc8 addiu gp, gp, -0x7834 |
0x00047fcc addu gp, gp, t9 | gp += t9;
0x00047fd0 lw v0, -0x7a1c(gp) | v0 = *((gp - 7815));
0x00047fd4 addiu sp, sp, -0x60 |
0x00047fd8 lw t9, -0x7a6c(gp) | t9 = sym.imp.__getdelim;
0x00047fdc sw v0, 0x24(sp) | *(var_24h_2) = v0;
0x00047fe0 lw v0, (v0) | v0 = *(v0);
0x00047fe4 sw gp, 0x10(sp) | *(var_10h_2) = gp;
0x00047fe8 sw s5, 0x4c(sp) | *(var_4ch) = s5;
0x00047fec sw s2, 0x40(sp) | *(var_40h) = s2;
0x00047ff0 sw s1, 0x3c(sp) | *(var_3ch) = s1;
0x00047ff4 move a3, a2 | a3 = a2;
0x00047ff8 sw ra, 0x5c(sp) | *(var_5ch_2) = ra;
0x00047ffc sw fp, 0x58(sp) | *(var_58h_2) = fp;
0x00048000 sw s7, 0x54(sp) | *(var_54h_2) = s7;
0x00048004 sw s6, 0x50(sp) | *(var_50h) = s6;
0x00048008 sw s4, 0x48(sp) | *(var_48h) = s4;
0x0004800c sw s3, 0x44(sp) | *(var_44h) = s3;
0x00048010 sw s0, 0x38(sp) | *(var_38h) = s0;
0x00048014 move s5, a2 | s5 = a2;
0x00048018 sw a1, 0x1c(sp) | *(var_1ch) = a1;
0x0004801c addiu a2, zero, 0xa | a2 = 0xa;
0x00048020 sw v0, 0x34(sp) | *(var_34h) = v0;
0x00048024 move s1, a0 | s1 = a0;
0x00048028 jalr t9 | t9 ();
0x0004802c move s2, v0 | s2 = v0;
0x00048030 lw gp, 0x10(sp) | gp = *(var_10h_2);
| if (v0 < 0) {
0x00048034 bltz v0, 0x48180 | goto label_0;
| }
0x00048038 lw s3, -0x7fa4(gp) | s3 = *(gp);
0x0004803c lw s0, (s1) | s0 = *(s1);
0x00048040 lw t9, -0x7ad8(gp) | t9 = sym.imp.strchr;
0x00048044 lw v0, (s3) | v0 = *(s3);
0x00048048 addiu a1, zero, 0x23 | a1 = 0x23;
0x0004804c addiu v0, v0, 1 | v0++;
0x00048050 move a0, s0 | a0 = s0;
0x00048054 sw v0, (s3) | *(s3) = v0;
0x00048058 jalr t9 | t9 ();
0x0004805c lw gp, 0x10(sp) | gp = *(var_10h_2);
| if (v0 != 0) {
0x00048060 beqz v0, 0x4806c |
0x00048064 sb zero, (v0) | *(v0) = 0;
0x00048068 lw s0, (s1) | s0 = *(s1);
| }
0x0004806c lw s4, -0x7fd0(gp) | s4 = *(gp);
0x00048070 addiu s6, sp, 0x30 | s6 = sp + 0x30;
| /* esilref: '\
' */
0x00048074 addiu v0, s4, 0x1c60 | v0 = s4 + 0x1c60;
0x00048078 sw v0, 0x20(sp) | *(var_20h_2) = v0;
0x0004807c addiu s7, sp, 0x2c | s7 = sp + 0x2c;
0x00048080 b 0x48164 |
| while (v0 != 0) {
0x00048084 lw t9, -0x7a6c(gp) | t9 = sym.imp.__getdelim;
0x00048088 move a3, s5 | a3 = s5;
0x0004808c addiu a2, zero, 0xa | a2 = 0xa;
0x00048090 move a1, s6 | a1 = s6;
0x00048094 move a0, s7 | a0 = s7;
0x00048098 sw zero, 0x2c(sp) | *(var_2ch_2) = 0;
0x0004809c sw zero, 0x30(sp) | *(var_30h_2) = 0;
0x000480a0 jalr t9 | t9 ();
0x000480a4 move s0, v0 | s0 = v0;
0x000480a8 lw gp, 0x10(sp) | gp = *(var_10h_2);
| if (v0 < 0) {
0x000480ac bltz v0, 0x481c4 | goto label_1;
| }
0x000480b0 lw v0, (s3) | v0 = *(s3);
0x000480b4 lw t9, -0x7ad8(gp) | t9 = sym.imp.strchr;
0x000480b8 addiu v0, v0, 1 | v0++;
0x000480bc sw v0, (s3) | *(s3) = v0;
0x000480c0 sb zero, (fp) | *(fp) = 0;
0x000480c4 lw fp, 0x2c(sp) | fp = *(var_2ch_2);
0x000480c8 addiu a1, zero, 0x23 | a1 = 0x23;
0x000480cc move a0, fp | a0 = fp;
0x000480d0 jalr t9 | t9 ();
0x000480d4 lw gp, 0x10(sp) | gp = *(var_10h_2);
| if (v0 != 0) {
0x000480d8 beqz v0, 0x480e4 |
0x000480dc sb zero, (v0) | *(v0) = 0;
0x000480e0 lw fp, 0x2c(sp) | fp = *(var_2ch_2);
| }
0x000480e4 lw s4, (s1) | s4 = *(s1);
0x000480e8 lw t9, -0x7ae4(gp) | t9 = sym.imp.strlen;
0x000480ec move a0, s4 | a0 = s4;
0x000480f0 jalr t9 | t9 ();
0x000480f4 lw gp, 0x10(sp) | gp = *(var_10h_2);
0x000480f8 move a0, fp | a0 = fp;
0x000480fc lw t9, -0x7ae4(gp) | t9 = sym.imp.strlen;
0x00048100 move fp, v0 | fp = v0;
0x00048104 jalr t9 | t9 ();
0x00048108 lw gp, 0x10(sp) | gp = *(var_10h_2);
0x0004810c addu a1, fp, v0 | a1 = fp + v0;
0x00048110 lw v0, 0x1c(sp) | v0 = *(var_1ch);
0x00048114 addiu a1, a1, 1 | a1++;
0x00048118 lw t9, -0x7aa4(gp) | t9 = sym.imp.realloc;
0x0004811c sw a1, (v0) | *(v0) = a1;
0x00048120 move a0, s4 | a0 = s4;
0x00048124 jalr t9 | t9 ();
0x00048128 lw gp, 0x10(sp) | gp = *(var_10h_2);
0x0004812c sw v0, (s1) | *(s1) = v0;
| if (v0 == 0) {
0x00048130 beqz v0, 0x481f0 | goto label_2;
| }
0x00048134 lw t9, -0x7a84(gp) | t9 = sym.imp.strcat
0x00048138 lw a1, 0x2c(sp) | a1 = *(var_2ch_2);
0x0004813c move a0, v0 | a0 = v0;
0x00048140 jalr t9 | t9 ();
0x00048144 lw gp, 0x10(sp) | gp = *(var_10h_2);
0x00048148 lw a0, 0x2c(sp) | a0 = *(var_2ch_2);
0x0004814c addiu s0, s0, -2 | s0 += -2;
0x00048150 lw t9, -0x7a08(gp) | t9 = sym.imp.free;
0x00048154 addu s2, s2, s0 | s2 += s0;
0x00048158 jalr t9 | t9 ();
0x0004815c lw gp, 0x10(sp) | gp = *(var_10h_2);
0x00048160 lw s0, (s1) | s0 = *(s1);
0x00048164 lw t9, -0x79cc(gp) | t9 = sym.imp.strstr;
0x00048168 lw a1, 0x20(sp) | a1 = *(var_20h_2);
0x0004816c move a0, s0 | a0 = s0;
0x00048170 jalr t9 | t9 ();
0x00048174 move fp, v0 | fp = v0;
0x00048178 lw gp, 0x10(sp) | gp = *(var_10h_2);
0x0004817c bnez v0, 0x48084 |
| }
| do {
| label_0:
0x00048180 lw v0, 0x24(sp) | v0 = *(var_24h_2);
0x00048184 lw a0, 0x34(sp) | a0 = *(var_34h);
0x00048188 lw v1, (v0) | v1 = *(v0);
0x0004818c move v0, s2 | v0 = s2;
| if (a0 != v1) {
0x00048190 bne a0, v1, 0x48224 | goto label_3;
| }
0x00048194 lw ra, 0x5c(sp) | ra = *(var_5ch_2);
0x00048198 lw fp, 0x58(sp) | fp = *(var_58h_2);
0x0004819c lw s7, 0x54(sp) | s7 = *(var_54h_2);
0x000481a0 lw s6, 0x50(sp) | s6 = *(var_50h);
0x000481a4 lw s5, 0x4c(sp) | s5 = *(var_4ch);
0x000481a8 lw s4, 0x48(sp) | s4 = *(var_48h);
0x000481ac lw s3, 0x44(sp) | s3 = *(var_44h);
0x000481b0 lw s2, 0x40(sp) | s2 = *(var_40h);
0x000481b4 lw s1, 0x3c(sp) | s1 = *(var_3ch);
0x000481b8 lw s0, 0x38(sp) | s0 = *(var_38h);
0x000481bc addiu sp, sp, 0x60 |
0x000481c0 jr ra | return v0;
| label_1:
0x000481c4 lw v0, -0x79fc(gp) | v0 = *((gp - 7807));
0x000481c8 lw a0, -0x7fd0(gp) | a0 = *(gp);
0x000481cc lw t9, -0x7a7c(gp) | t9 = sym.imp.fwrite;
0x000481d0 lw a3, (v0) | a3 = *(v0);
0x000481d4 addiu a2, zero, 0x1a | a2 = 0x1a;
0x000481d8 addiu a1, zero, 1 | a1 = 1;
| /* str.Missing_continuation_line_n */
0x000481dc addiu a0, a0, 0x1c34 | a0 += 0x1c34;
0x000481e0 jalr t9 | t9 ();
0x000481e4 move s2, s0 | s2 = s0;
0x000481e8 lw gp, 0x10(sp) | gp = *(var_10h_2);
0x000481ec b 0x48180 |
| } while (1);
| label_2:
0x000481f0 lw v0, -0x79fc(gp) | v0 = *((gp - 7807));
0x000481f4 lw a0, -0x7fd0(gp) | a0 = *(gp);
0x000481f8 lw t9, -0x7a7c(gp) | t9 = sym.imp.fwrite;
0x000481fc lw a3, (v0) | a3 = *(v0);
0x00048200 addiu a2, zero, 0xe | a2 = 0xe;
0x00048204 addiu a1, zero, 1 | a1 = 1;
| /* str.Out_of_memory_n */
0x00048208 addiu a0, a0, 0x1c50 | a0 += 0x1c50;
0x0004820c jalr t9 | t9 ();
0x00048210 lw v0, 0x1c(sp) | v0 = *(var_1ch);
0x00048214 lw gp, 0x10(sp) | gp = *(var_10h_2);
0x00048218 addiu s2, zero, -1 | s2 = -1;
0x0004821c sw zero, (v0) | *(v0) = 0;
0x00048220 b 0x48180 | goto label_0;
| label_3:
0x00048224 lw t9, -0x7a48(gp) | t9 = sym.imp.__stack_chk_fail;
0x00048228 jalr t9 | t9 ();
0x0004822c nop |
| }
; 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 strcat used 3 times tc.iproute2