[*] Binary protection state of iperf
No RELRO No Canary found NX disabled No PIE No RPATH No RUNPATH Symbols
[*] Function printf tear down of iperf
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/2097216-5451840.squashfs_v4_le_extract/usr/bin/iperf @ 0x404714 */
| #include <stdint.h>
|
; (fcn) sym.reporter_multistats () | void reporter_multistats () {
0x00404714 addiu sp, sp, -0x50 |
0x00404718 sw s2, 0x48(sp) | *(var_48h) = s2;
0x0040471c move s2, a0 | s2 = a0;
0x00404720 lw a1, 0x1c(s2) | a1 = *((s2 + 7));
0x00404724 lw a0, 0x18(a0) | a0 = *((a0 + 6));
0x00404728 sw ra, 0x4c(sp) | *(var_4ch) = ra;
0x0040472c sw s1, 0x44(sp) | *(var_44h) = s1;
0x00404730 sw s0, 0x40(sp) | *(var_40h) = s0;
0x00404734 jal 0x40e270 | fcn_0040e270 ();
0x00404738 lb v0, 0x38(s2) | v0 = *((s2 + 56));
0x0040473c lui v1, 0x42 | v1 = 0x420000;
0x00404740 lw v1, -0x1a30(v1) | v1 = *((v1 - 1676));
0x00404744 sll v0, v0, 1 | v0 <<= 1;
0x00404748 mfc1 a2, f0 | __asm ("mfc1 a2, f0");
0x0040474c addu v0, v1, v0 | v0 = v1 + v0;
0x00404750 lb v0, (v0) | v0 = *(v0);
0x00404754 mfc1 a3, f1 | __asm ("mfc1 a3, f1");
0x00404758 lui s1, 0x42 | s1 = 0x420000;
0x0040475c sw v0, 0x10(sp) | *(var_10h) = v0;
| /* obj.buffer */
0x00404760 addiu a0, s1, -0x1900 | a0 = s1 + -0x1900;
0x00404764 addiu a1, zero, 0x20 | a1 = 0x20;
0x00404768 jal 0x40a10c | sym_byte_snprintf ()
0x0040476c lw a0, 0x18(s2) | a0 = *((s2 + 6));
0x00404770 lw a1, 0x1c(s2) | a1 = *((s2 + 7));
0x00404774 lui s0, 0x42 | s0 = 0x420000;
0x00404778 jal 0x40e270 | fcn_0040e270 ();
0x0040477c ldc1 f2, 0x28(s2) | __asm ("ldc1 f2, 0x28(s2)");
0x00404780 ldc1 f4, 0x30(s2) | __asm ("ldc1 f4, 0x30(s2)");
0x00404784 lb v0, 0x38(s2) | v0 = *((s2 + 56));
0x00404788 addiu a0, s0, -0x18e0 | a0 = s0 + -0x18e0;
0x0040478c sub.d f6, f4, f2 | __asm ("sub.d f6, f4, f2");
0x00404790 sw v0, 0x10(sp) | *(var_10h) = v0;
0x00404794 addiu a1, zero, 0x20 | a1 = 0x20;
0x00404798 mfc1 a2, f6 | __asm ("mfc1 a2, f6");
0x0040479c mfc1 a3, f7 | __asm ("mfc1 a3, f7");
0x004047a0 mtc1 a2, f2 | __asm ("mtc1 a2, f2");
0x004047a4 mtc1 a3, f3 | __asm ("mtc1 a3, f3");
0x004047a8 div.d f2, f0, f2 | __asm ("div.d f2, f0, f2");
0x004047ac mfc1 a2, f2 | __asm ("mfc1 a2, f2");
0x004047b0 mfc1 a3, f3 | __asm ("mfc1 a3, f3");
0x004047b4 jal 0x40a10c | sym_byte_snprintf ()
0x004047b8 lb v1, 0x3a(s2) | v1 = *((s2 + 58));
0x004047bc addiu v0, zero, 1 | v0 = 1;
0x004047c0 lui a0, 0x41 | a0 = 0x410000;
| if (v1 == v0) {
0x004047c4 beq v1, v0, 0x404820 | goto label_1;
| }
0x004047c8 ldc1 f2, 0x28(s2) | __asm ("ldc1 f2, 0x28(s2)");
0x004047cc ldc1 f0, 0x30(s2) | __asm ("ldc1 f0, 0x30(s2)");
| /* obj.buffer */
0x004047d0 addiu s1, s1, -0x1900 | s1 += -0x1900;
0x004047d4 addiu s0, s0, -0x18e0 | s0 += -0x18e0;
0x004047d8 mfc1 a2, f2 | __asm ("mfc1 a2, f2");
0x004047dc mfc1 a3, f3 | __asm ("mfc1 a3, f3");
0x004047e0 sdc1 f0, 0x10(sp) | __asm ("sdc1 f0, 0x10(sp)");
0x004047e4 sw s1, 0x18(sp) | *(var_18h) = s1;
0x004047e8 sw s0, 0x1c(sp) | *(var_1ch) = s0;
| /* obj.report_sum_bw_format */
0x004047ec addiu a0, a0, -0x493c | a0 += -0x493c;
0x004047f0 jal 0x40e330 | fcn_0040e330 ();
| do {
0x004047f4 lw v1, 0x38(s2) | v1 = *((s2 + 14));
0x004047f8 lui v0, 0xffff | v0 = 0xffff0000;
0x004047fc and v1, v1, v0 | v1 &= v0;
0x00404800 lui v0, 0x102 | v0 = 0x1020000;
0x00404804 lw ra, 0x4c(sp) | ra = *(var_4ch);
| if (v1 == v0) {
0x00404808 beq v1, v0, 0x4048e0 | goto label_2;
| }
| label_0:
0x0040480c lw s2, 0x48(sp) | s2 = *(var_48h);
0x00404810 lw s1, 0x44(sp) | s1 = *(var_44h);
0x00404814 lw s0, 0x40(sp) | s0 = *(var_40h);
0x00404818 addiu sp, sp, 0x50 |
0x0040481c jr ra | return v1;
| label_1:
0x00404820 lw v1, 0xc(s2) | v1 = *((s2 + 3));
0x00404824 lui a0, 0x41 | a0 = 0x410000;
0x00404828 ldc1 f0, -0x5180(a0) | __asm ("ldc1 f0, -0x5180(a0)");
0x0040482c mtc1 v1, f3 | __asm ("mtc1 v1, f3");
0x00404830 lw v0, 0x14(s2) | v0 = *((s2 + 5));
0x00404834 cvt.d.w f6, f3 | __asm ("cvt.d.w f6, f3");
0x00404838 mul.d f6, f6, f0 | __asm ("mul.d f6, f6, f0");
0x0040483c mtc1 v0, f0 | __asm ("mtc1 v0, f0");
0x00404840 lui a0, 0x41 | a0 = 0x410000;
0x00404844 cvt.d.w f8, f0 | __asm ("cvt.d.w f8, f0");
0x00404848 ldc1 f4, 0x20(s2) | __asm ("ldc1 f4, 0x20(s2)");
0x0040484c ldc1 f10, -0x3ca8(a0) | __asm ("ldc1 f10, -0x3ca8(a0)");
0x00404850 ldc1 f2, 0x28(s2) | __asm ("ldc1 f2, 0x28(s2)");
0x00404854 ldc1 f0, 0x30(s2) | __asm ("ldc1 f0, 0x30(s2)");
0x00404858 div.d f6, f6, f8 | __asm ("div.d f6, f6, f8");
0x0040485c mul.d f4, f4, f10 | __asm ("mul.d f4, f4, f10");
| /* obj.buffer */
0x00404860 addiu s1, s1, -0x1900 | s1 += -0x1900;
0x00404864 addiu s0, s0, -0x18e0 | s0 += -0x18e0;
0x00404868 mfc1 a2, f2 | __asm ("mfc1 a2, f2");
0x0040486c mfc1 a3, f3 | __asm ("mfc1 a3, f3");
0x00404870 lui a0, 0x41 | a0 = 0x410000;
0x00404874 sdc1 f0, 0x10(sp) | __asm ("sdc1 f0, 0x10(sp)");
0x00404878 sw s1, 0x18(sp) | *(var_18h) = s1;
0x0040487c sw s0, 0x1c(sp) | *(var_1ch) = s0;
0x00404880 sdc1 f4, 0x20(sp) | __asm ("sdc1 f4, 0x20(sp)");
0x00404884 sw v1, 0x28(sp) | *(var_28h) = v1;
0x00404888 sw v0, 0x2c(sp) | *(var_2ch) = v0;
| /* obj.report_sum_bw_jitter_loss_format */
0x0040488c addiu a0, a0, -0x4a10 | a0 += -0x4a10;
0x00404890 sdc1 f6, 0x30(sp) | __asm ("sdc1 f6, 0x30(sp)");
0x00404894 jal 0x40e330 | fcn_0040e330 ();
0x00404898 lw v0, 0x10(s2) | v0 = *((s2 + 4));
0x0040489c blez v0, 0x4047f4 |
| } while (v0 <= 0);
0x004048a0 nop |
0x004048a4 ldc1 f2, 0x28(s2) | __asm ("ldc1 f2, 0x28(s2)");
0x004048a8 ldc1 f0, 0x30(s2) | __asm ("ldc1 f0, 0x30(s2)");
0x004048ac lui a0, 0x41 | a0 = 0x410000;
0x004048b0 mfc1 a2, f2 | __asm ("mfc1 a2, f2");
0x004048b4 mfc1 a3, f3 | __asm ("mfc1 a3, f3");
0x004048b8 sdc1 f0, 0x10(sp) | __asm ("sdc1 f0, 0x10(sp)");
0x004048bc sw v0, 0x18(sp) | *(var_18h) = v0;
| /* obj.report_sum_outoforder */
0x004048c0 addiu a0, a0, -0x4a88 | a0 += -0x4a88;
0x004048c4 jal 0x40e330 | fcn_0040e330 ();
0x004048c8 lw v1, 0x38(s2) | v1 = *((s2 + 14));
0x004048cc lui v0, 0xffff | v0 = 0xffff0000;
0x004048d0 and v1, v1, v0 | v1 &= v0;
0x004048d4 lui v0, 0x102 | v0 = 0x1020000;
0x004048d8 lw ra, 0x4c(sp) | ra = *(var_4ch);
| if (v1 != v0) {
0x004048dc bne v1, v0, 0x40480c | goto label_0;
| }
| label_2:
0x004048e0 lw a1, 0x14(s2) | a1 = *((s2 + 5));
0x004048e4 lui a0, 0x41 | a0 = "[SUM] Sent %d datagrams\n";
| /* obj.report_sum_datagrams */
0x004048e8 addiu a0, a0, -0x4b64 |
0x004048ec jal 0x40e330 | fcn_0040e330 ();
0x004048f0 lw ra, 0x4c(sp) | ra = *(var_4ch);
0x004048f4 lw s2, 0x48(sp) | s2 = *(var_48h);
0x004048f8 lw s1, 0x44(sp) | s1 = *(var_44h);
0x004048fc lw s0, 0x40(sp) | s0 = *(var_40h);
0x00404900 addiu sp, sp, 0x50 |
0x00404904 jr ra | return v1;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/2097216-5451840.squashfs_v4_le_extract/usr/bin/iperf @ 0x404510 */
| #include <stdint.h>
|
; (fcn) sym.reporter_printstats () | void reporter_printstats () {
0x00404510 addiu sp, sp, -0x50 |
0x00404514 sw s2, 0x48(sp) | *(var_48h) = s2;
0x00404518 move s2, a0 | s2 = a0;
0x0040451c lw a1, 0x1c(s2) | a1 = *((s2 + 7));
0x00404520 lw a0, 0x18(a0) | a0 = *((a0 + 6));
0x00404524 sw ra, 0x4c(sp) | *(var_4ch) = ra;
0x00404528 sw s1, 0x44(sp) | *(var_44h) = s1;
0x0040452c sw s0, 0x40(sp) | *(var_40h) = s0;
0x00404530 jal 0x40e270 | fcn_0040e270 ();
0x00404534 lb v0, 0x38(s2) | v0 = *((s2 + 56));
0x00404538 lui v1, 0x42 | v1 = 0x420000;
0x0040453c lw v1, -0x1a30(v1) | v1 = *((v1 - 1676));
0x00404540 sll v0, v0, 1 | v0 <<= 1;
0x00404544 mfc1 a2, f0 | __asm ("mfc1 a2, f0");
0x00404548 addu v0, v1, v0 | v0 = v1 + v0;
0x0040454c lb v0, (v0) | v0 = *(v0);
0x00404550 mfc1 a3, f1 | __asm ("mfc1 a3, f1");
0x00404554 lui s1, 0x42 | s1 = 0x420000;
0x00404558 sw v0, 0x10(sp) | *(var_10h) = v0;
| /* obj.buffer */
0x0040455c addiu a0, s1, -0x1900 | a0 = s1 + -0x1900;
0x00404560 addiu a1, zero, 0x20 | a1 = 0x20;
0x00404564 jal 0x40a10c | sym_byte_snprintf ()
0x00404568 lw a0, 0x18(s2) | a0 = *((s2 + 6));
0x0040456c lw a1, 0x1c(s2) | a1 = *((s2 + 7));
0x00404570 lui s0, 0x42 | s0 = 0x420000;
0x00404574 jal 0x40e270 | fcn_0040e270 ();
0x00404578 ldc1 f2, 0x28(s2) | __asm ("ldc1 f2, 0x28(s2)");
0x0040457c ldc1 f4, 0x30(s2) | __asm ("ldc1 f4, 0x30(s2)");
0x00404580 lb v0, 0x38(s2) | v0 = *((s2 + 56));
0x00404584 addiu a0, s0, -0x18e0 | a0 = s0 + -0x18e0;
0x00404588 sub.d f6, f4, f2 | __asm ("sub.d f6, f4, f2");
0x0040458c sw v0, 0x10(sp) | *(var_10h) = v0;
0x00404590 addiu a1, zero, 0x20 | a1 = 0x20;
0x00404594 mfc1 a2, f6 | __asm ("mfc1 a2, f6");
0x00404598 mfc1 a3, f7 | __asm ("mfc1 a3, f7");
0x0040459c mtc1 a2, f2 | __asm ("mtc1 a2, f2");
0x004045a0 mtc1 a3, f3 | __asm ("mtc1 a3, f3");
0x004045a4 div.d f2, f0, f2 | __asm ("div.d f2, f0, f2");
0x004045a8 mfc1 a2, f2 | __asm ("mfc1 a2, f2");
0x004045ac mfc1 a3, f3 | __asm ("mfc1 a3, f3");
0x004045b0 jal 0x40a10c | sym_byte_snprintf ()
0x004045b4 lb v1, 0x3a(s2) | v1 = *((s2 + 58));
0x004045b8 addiu v0, zero, 1 | v0 = 1;
0x004045bc lui a0, 0x41 | a0 = 0x410000;
| if (v1 == v0) {
0x004045c0 beq v1, v0, 0x404620 | goto label_1;
| }
0x004045c4 ldc1 f2, 0x28(s2) | __asm ("ldc1 f2, 0x28(s2)");
0x004045c8 ldc1 f0, 0x30(s2) | __asm ("ldc1 f0, 0x30(s2)");
0x004045cc lw a1, 4(s2) | a1 = *((s2 + 1));
| /* obj.buffer */
0x004045d0 addiu s1, s1, -0x1900 | s1 += -0x1900;
0x004045d4 addiu s0, s0, -0x18e0 | s0 += -0x18e0;
0x004045d8 mfc1 a2, f2 | __asm ("mfc1 a2, f2");
0x004045dc mfc1 a3, f3 | __asm ("mfc1 a3, f3");
0x004045e0 sdc1 f0, 0x10(sp) | __asm ("sdc1 f0, 0x10(sp)");
0x004045e4 sw s1, 0x18(sp) | *(var_18h) = s1;
0x004045e8 sw s0, 0x1c(sp) | *(var_1ch) = s0;
| /* obj.report_bw_format */
0x004045ec addiu a0, a0, -0x4914 | a0 += -0x4914;
0x004045f0 jal 0x40e330 | fcn_0040e330 ();
| do {
0x004045f4 lw v1, 0x38(s2) | v1 = *((s2 + 14));
0x004045f8 lui v0, 0xffff | v0 = 0xffff0000;
0x004045fc and v1, v1, v0 | v1 &= v0;
0x00404600 lui v0, 0x102 | v0 = 0x1020000;
0x00404604 lw ra, 0x4c(sp) | ra = *(var_4ch);
| if (v1 == v0) {
0x00404608 beq v1, v0, 0x4046e8 | goto label_2;
| }
| label_0:
0x0040460c lw s2, 0x48(sp) | s2 = *(var_48h);
0x00404610 lw s1, 0x44(sp) | s1 = *(var_44h);
0x00404614 lw s0, 0x40(sp) | s0 = *(var_40h);
0x00404618 addiu sp, sp, 0x50 |
0x0040461c jr ra | return v1;
| label_1:
0x00404620 lw v1, 0xc(s2) | v1 = *((s2 + 3));
0x00404624 lui a0, 0x41 | a0 = 0x410000;
0x00404628 ldc1 f0, -0x5180(a0) | __asm ("ldc1 f0, -0x5180(a0)");
0x0040462c mtc1 v1, f3 | __asm ("mtc1 v1, f3");
0x00404630 lw v0, 0x14(s2) | v0 = *((s2 + 5));
0x00404634 cvt.d.w f4, f3 | __asm ("cvt.d.w f4, f3");
0x00404638 mul.d f4, f4, f0 | __asm ("mul.d f4, f4, f0");
0x0040463c mtc1 v0, f6 | __asm ("mtc1 v0, f6");
0x00404640 lui a0, 0x41 | a0 = 0x410000;
0x00404644 cvt.d.w f8, f6 | __asm ("cvt.d.w f8, f6");
0x00404648 ldc1 f0, 0x20(s2) | __asm ("ldc1 f0, 0x20(s2)");
0x0040464c ldc1 f6, -0x3ca8(a0) | __asm ("ldc1 f6, -0x3ca8(a0)");
0x00404650 ldc1 f2, 0x28(s2) | __asm ("ldc1 f2, 0x28(s2)");
0x00404654 lw a1, 4(s2) | a1 = *((s2 + 1));
0x00404658 div.d f4, f4, f8 | __asm ("div.d f4, f4, f8");
0x0040465c mul.d f6, f0, f6 | __asm ("mul.d f6, f0, f6");
0x00404660 ldc1 f0, 0x30(s2) | __asm ("ldc1 f0, 0x30(s2)");
| /* obj.buffer */
0x00404664 addiu s1, s1, -0x1900 | s1 += -0x1900;
0x00404668 addiu s0, s0, -0x18e0 | s0 += -0x18e0;
0x0040466c mfc1 a2, f2 | __asm ("mfc1 a2, f2");
0x00404670 mfc1 a3, f3 | __asm ("mfc1 a3, f3");
0x00404674 lui a0, 0x41 | a0 = 0x410000;
0x00404678 sdc1 f0, 0x10(sp) | __asm ("sdc1 f0, 0x10(sp)");
0x0040467c sw s1, 0x18(sp) | *(var_18h) = s1;
0x00404680 sw s0, 0x1c(sp) | *(var_1ch) = s0;
0x00404684 sdc1 f6, 0x20(sp) | __asm ("sdc1 f6, 0x20(sp)");
0x00404688 sw v1, 0x28(sp) | *(var_28h) = v1;
0x0040468c sw v0, 0x2c(sp) | *(var_2ch) = v0;
| /* obj.report_bw_jitter_loss_format */
0x00404690 addiu a0, a0, -0x49d0 | a0 += -0x49d0;
0x00404694 sdc1 f4, 0x30(sp) | __asm ("sdc1 f4, 0x30(sp)");
0x00404698 jal 0x40e330 | fcn_0040e330 ();
0x0040469c lw v0, 0x10(s2) | v0 = *((s2 + 4));
0x004046a0 blez v0, 0x4045f4 |
| } while (v0 <= 0);
0x004046a4 nop |
0x004046a8 ldc1 f2, 0x28(s2) | __asm ("ldc1 f2, 0x28(s2)");
0x004046ac ldc1 f0, 0x30(s2) | __asm ("ldc1 f0, 0x30(s2)");
0x004046b0 lw a1, 4(s2) | a1 = *((s2 + 1));
0x004046b4 mfc1 a2, f2 | __asm ("mfc1 a2, f2");
0x004046b8 mfc1 a3, f3 | __asm ("mfc1 a3, f3");
0x004046bc lui a0, 0x41 | a0 = 0x410000;
0x004046c0 sdc1 f0, 0x10(sp) | __asm ("sdc1 f0, 0x10(sp)");
0x004046c4 sw v0, 0x18(sp) | *(var_18h) = v0;
| /* obj.report_outoforder */
0x004046c8 addiu a0, a0, -0x4a4c | a0 += -0x4a4c;
0x004046cc jal 0x40e330 | fcn_0040e330 ();
0x004046d0 lw v1, 0x38(s2) | v1 = *((s2 + 14));
0x004046d4 lui v0, 0xffff | v0 = 0xffff0000;
0x004046d8 and v1, v1, v0 | v1 &= v0;
0x004046dc lui v0, 0x102 | v0 = 0x1020000;
0x004046e0 lw ra, 0x4c(sp) | ra = *(var_4ch);
| if (v1 != v0) {
0x004046e4 bne v1, v0, 0x40460c | goto label_0;
| }
| label_2:
0x004046e8 lw a1, 4(s2) | a1 = *((s2 + 1));
0x004046ec lw a2, 0x14(s2) | a2 = *((s2 + 5));
0x004046f0 lui a0, 0x41 | a0 = "[%3d] Sent %d datagrams\n";
| /* obj.report_datagrams */
0x004046f4 addiu a0, a0, -0x4b48 |
0x004046f8 jal 0x40e330 | fcn_0040e330 ();
0x004046fc lw ra, 0x4c(sp) | ra = *(var_4ch);
0x00404700 lw s2, 0x48(sp) | s2 = *(var_48h);
0x00404704 lw s1, 0x44(sp) | s1 = *(var_44h);
0x00404708 lw s0, 0x40(sp) | s0 = *(var_40h);
0x0040470c addiu sp, sp, 0x50 |
0x00404710 jr ra | return v1;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/2097216-5451840.squashfs_v4_le_extract/usr/bin/iperf @ 0x40493c */
| #include <stdint.h>
|
; (fcn) sym.reporter_reportsettings () | void reporter_reportsettings () {
0x0040493c lw a1, 0x38(a0) | a1 = *((a0 + 14));
0x00404940 addiu sp, sp, -0x40 |
0x00404944 sw s0, 0x24(sp) | *(var_24h) = s0;
0x00404948 move s0, a0 | s0 = a0;
0x0040494c lw a0, 0x64(a0) | a0 = *((a0 + 25));
0x00404950 xori a1, a1, 4 | a1 ^= 4;
0x00404954 sw s2, 0x2c(sp) | *(var_2ch) = s2;
0x00404958 sltu a1, zero, a1 | a1 = (0 < a1) ? 1 : 0;
0x0040495c lui s2, 0x41 | s2 = 0x410000;
0x00404960 sw ra, 0x3c(sp) | *(var_3ch) = ra;
0x00404964 sw s4, 0x34(sp) | *(var_34h) = s4;
0x00404968 sw s1, 0x28(sp) | *(var_28h) = s1;
0x0040496c sw s5, 0x38(sp) | *(var_38h) = s5;
0x00404970 sw s3, 0x30(sp) | *(var_30h) = s3;
0x00404974 jal 0x40a3e4 | sym_getsock_tcp_windowsize ();
| /* obj.seperator_line */
0x00404978 addiu a0, s2, -0x46fc | a0 = s2 + -0x46fc;
0x0040497c move s4, v0 | s4 = v0;
0x00404980 lw s1, 0x30(s0) | s1 = *((s0 + 12));
0x00404984 jal 0x40e330 | fcn_0040e330 ();
0x00404988 lw v1, 0x38(s0) | v1 = *((s0 + 14));
0x0040498c addiu v0, zero, 4 | v0 = 4;
| if (v1 == v0) {
0x00404990 beq v1, v0, 0x404b50 | goto label_6;
| }
0x00404994 nop |
0x00404998 lw v0, 0x34(s0) | v0 = *((s0 + 13));
0x0040499c andi v0, v0, 0x800 | v0 &= 0x800;
0x004049a0 lw a1, (s0) | a1 = *(s0);
| if (v0 != 0) {
0x004049a4 bnez v0, 0x404b0c | goto label_7;
| }
0x004049a8 lui a2, 0x41 | a2 = 0x40c360;
| /* esilref: 'TCP' */
0x004049ac addiu a2, a2, -0x3ca0 |
| do {
0x004049b0 lhu a3, 0x58(s0) | a3 = *((s0 + 44));
0x004049b4 lui a0, 0x41 | a0 = "Client connecting to %s, %s port %d\n";
| /* obj.client_port */
0x004049b8 addiu a0, a0, -0x4744 |
0x004049bc jal 0x40e330 | fcn_0040e330 ();
0x004049c0 lw a1, 4(s0) | a1 = *((s0 + 1));
| if (a1 != 0) {
| label_2:
0x004049c4 beqz a1, 0x4049e8 |
0x004049c8 nop |
0x004049cc lui a0, 0x41 | a0 = "Binding to local address %s\n";
| /* obj.bind_address */
0x004049d0 addiu a0, a0, -0x4764 |
0x004049d4 jal 0x40e330 | fcn_0040e330 ();
0x004049d8 addiu a0, s0, 0x124 | a0 = s0 + 0x124;
0x004049dc jal 0x4088a0 | sym_SockAddr_isMulticast ();
| if (v0 != 0) {
0x004049e0 bnez v0, 0x404b80 | goto label_8;
| }
0x004049e4 nop |
| }
0x004049e8 lw v0, 0x34(s0) | v0 = *((s0 + 13));
| label_3:
0x004049ec andi v0, v0, 0x800 | v0 &= 0x800;
0x004049f0 addiu v0, zero, 4 | v0 = 4;
| if (v0 != 0) {
0x004049f4 beqz v0, 0x404a24 |
0x004049f8 lw v1, 0x38(s0) | v1 = *((s0 + 14));
| if (v1 == v0) {
0x004049fc beq v1, v0, 0x404bb8 | goto label_9;
| }
0x00404a00 nop |
0x00404a04 lui a0, 0x41 | a0 = "Sending %d byte datagrams\n";
| /* obj.client_datagram_size */
0x00404a08 addiu a0, a0, -0x47c0 |
| label_5:
0x00404a0c lw a1, 0x28(s0) | a1 = *((s0 + 10));
0x00404a10 jal 0x40e330 | fcn_0040e330 ();
0x00404a14 addiu a0, s0, 0xa0 | a0 = s0 + 0xa0;
0x00404a18 jal 0x4088a0 | sym_SockAddr_isMulticast ();
0x00404a1c lui a0, 0x41 | a0 = 0x410000;
| if (v0 != 0) {
0x00404a20 bnez v0, 0x404ba4 | goto label_10;
| }
| }
0x00404a24 lb v0, 0x98(s0) | v0 = *((s0 + 152));
| label_4:
0x00404a28 lui s5, 0x42 | s5 = 0x420000;
0x00404a2c lw v1, -0x1a30(s5) | v1 = *((s5 - 1676));
0x00404a30 sll v0, v0, 1 | v0 <<= 1;
0x00404a34 mtc1 s4, f1 | __asm ("mtc1 s4, f1");
0x00404a38 addu v0, v1, v0 | v0 = v1 + v0;
0x00404a3c lb v0, (v0) | v0 = *(v0);
0x00404a40 cvt.d.w f0, f1 | __asm ("cvt.d.w f0, f1");
0x00404a44 lui s3, 0x42 | s3 = 0x420000;
0x00404a48 mfc1 a2, f0 | __asm ("mfc1 a2, f0");
0x00404a4c mfc1 a3, f1 | __asm ("mfc1 a3, f1");
0x00404a50 sw v0, 0x10(sp) | *(var_10h) = v0;
| /* obj.buffer */
0x00404a54 addiu a0, s3, -0x1900 | a0 = s3 + -0x1900;
0x00404a58 addiu a1, zero, 0x40 | a1 = 0x40;
0x00404a5c jal 0x40a10c | sym_byte_snprintf ()
0x00404a60 lw v0, 0x34(s0) | v0 = *((s0 + 13));
0x00404a64 andi v0, v0, 0x800 | v0 &= 0x800;
0x00404a68 lui a1, 0x41 | a1 = 0x410000;
| if (v0 == 0) {
0x00404a6c beqz v0, 0x404b18 | goto label_11;
| }
0x00404a70 lui a1, 0x41 | a1 = 0x410000;
0x00404a74 lui a0, 0x41 | a0 = 0x410000;
| /* obj.buffer */
0x00404a78 addiu a2, s3, -0x1900 | a2 = s3 + -0x1900;
| /* obj.udp_buffer_size */
0x00404a7c addiu a1, a1, -0x4800 | a1 += -0x4800;
| /* str._s:__s */
0x00404a80 addiu a0, a0, -0x3c9c | a0 += -0x3c9c;
0x00404a84 jal 0x40e330 | fcn_0040e330 ();
0x00404a88 lui s3, 0x42 | s3 = 0x420000;
| if (s1 == 0) {
0x00404a8c beqz s1, 0x404b34 | goto label_12;
| }
| label_0:
0x00404a90 lw v1, -0x1a30(s5) | v1 = *((s5 - 1676));
| if (s4 != s1) {
0x00404a94 beq s4, s1, 0x404ad8 |
0x00404a98 lb v0, 0x98(s0) | v0 = *((s0 + 152));
0x00404a9c mtc1 s1, f1 | __asm ("mtc1 s1, f1");
0x00404aa0 sll v0, v0, 1 | v0 <<= 1;
0x00404aa4 addu v0, v1, v0 | v0 = v1 + v0;
0x00404aa8 lb v0, (v0) | v0 = *(v0);
0x00404aac cvt.d.w f0, f1 | __asm ("cvt.d.w f0, f1");
0x00404ab0 mfc1 a2, f0 | __asm ("mfc1 a2, f0");
0x00404ab4 mfc1 a3, f1 | __asm ("mfc1 a3, f1");
| /* obj.buffer */
0x00404ab8 addiu a0, s3, -0x1900 | a0 = s3 + -0x1900;
0x00404abc addiu a1, zero, 0x40 | a1 = 0x40;
0x00404ac0 sw v0, 0x10(sp) | *(var_10h) = v0;
0x00404ac4 jal 0x40a10c | sym_byte_snprintf ()
0x00404ac8 lui a0, 0x41 | a0 = " (WARNING: requested %s)";
| /* obj.warn_window_requested */
0x00404acc addiu a0, a0, -0x4bf0 |
| /* obj.buffer */
0x00404ad0 addiu a1, s3, -0x1900 | a1 = s3 + -0x1900;
0x00404ad4 jal 0x40e330 | fcn_0040e330 ();
| }
| label_1:
0x00404ad8 addiu a0, zero, 0xa | a0 = 0xa;
0x00404adc jal 0x40df40 | fcn_0040df40 ();
| /* obj.seperator_line */
0x00404ae0 addiu a0, s2, -0x46fc | a0 = s2 + -0x46fc;
0x00404ae4 jal 0x40e330 | fcn_0040e330 ();
0x00404ae8 lw ra, 0x3c(sp) | ra = *(var_3ch);
0x00404aec lw s5, 0x38(sp) | s5 = *(var_38h);
0x00404af0 lw s4, 0x34(sp) | s4 = *(var_34h);
0x00404af4 lw s3, 0x30(sp) | s3 = *(var_30h);
0x00404af8 lw s2, 0x2c(sp) | s2 = *(var_2ch);
0x00404afc lw s1, 0x28(sp) | s1 = *(var_28h);
0x00404b00 lw s0, 0x24(sp) | s0 = *(var_24h);
0x00404b04 addiu sp, sp, 0x40 |
0x00404b08 jr ra | return v0;
| label_7:
0x00404b0c lui a2, 0x41 | a2 = 0x40af34;
| /* esilref: 'UDP' */
0x00404b10 addiu a2, a2, -0x50cc |
0x00404b14 b 0x4049b0 |
| } while (1);
| label_11:
0x00404b18 lui a0, 0x41 | a0 = 0x410000;
| /* obj.buffer */
0x00404b1c addiu a2, s3, -0x1900 | a2 = s3 + -0x1900;
| /* obj.tcp_window_size */
0x00404b20 addiu a1, a1, -0x47f0 | a1 += -0x47f0;
| /* str._s:__s */
0x00404b24 addiu a0, a0, -0x3c9c | a0 += -0x3c9c;
0x00404b28 jal 0x40e330 | fcn_0040e330 ();
0x00404b2c lui s3, 0x42 | s3 = 0x420000;
| if (s1 != 0) {
0x00404b30 bnez s1, 0x404a90 | goto label_0;
| }
| label_12:
0x00404b34 lui a0, 0x41 | a0 = 0x410000;
0x00404b38 lui a1, 0x41 | a1 = 0x410000;
| /* esilref: ' &s' */
0x00404b3c addiu a0, a0, -0x3c94 | a0 += -0x3c94;
| /* obj.window_default */
0x00404b40 addiu a1, a1, -0x480c | a1 += -0x480c;
0x00404b44 jal 0x40e330 | fcn_0040e330 ();
0x00404b48 b 0x404ad8 | goto label_1;
0x00404b4c nop |
| label_6:
0x00404b50 lw v0, 0x34(s0) | v0 = *((s0 + 13));
0x00404b54 andi v0, v0, 0x800 | v0 &= 0x800;
| if (v0 != 0) {
0x00404b58 bnez v0, 0x404b98 | goto label_13;
| }
0x00404b5c nop |
0x00404b60 lui a1, 0x41 | a1 = 0x40c360;
| /* esilref: 'TCP' */
0x00404b64 addiu a1, a1, -0x3ca0 |
| do {
0x00404b68 lhu a2, 0x58(s0) | a2 = *((s0 + 44));
0x00404b6c lui a0, 0x41 | a0 = "Server listening on %s port %d\n";
| /* obj.server_port */
0x00404b70 addiu a0, a0, -0x471c |
0x00404b74 jal 0x40e330 | fcn_0040e330 ();
0x00404b78 lw a1, 4(s0) | a1 = *((s0 + 1));
0x00404b7c b 0x4049c4 | goto label_2;
| label_8:
0x00404b80 lw a1, 4(s0) | a1 = *((s0 + 1));
0x00404b84 lui a0, 0x41 | a0 = "Joining multicast group %s\n";
| /* obj.join_multicast */
0x00404b88 addiu a0, a0, -0x47a4 |
0x00404b8c jal 0x40e330 | fcn_0040e330 ();
0x00404b90 lw v0, 0x34(s0) | v0 = *((s0 + 13));
0x00404b94 b 0x4049ec | goto label_3;
| label_13:
0x00404b98 lui a1, 0x41 | a1 = 0x40af34;
| /* esilref: 'UDP' */
0x00404b9c addiu a1, a1, -0x50cc |
0x00404ba0 b 0x404b68 |
| } while (1);
| label_10:
0x00404ba4 lbu a1, 0x99(s0) | a1 = *((s0 + 153));
| /* obj.multicast_ttl */
0x00404ba8 addiu a0, a0, -0x4784 | a0 += -0x4784;
0x00404bac jal 0x40e330 | fcn_0040e330 ();
0x00404bb0 lb v0, 0x98(s0) | v0 = *((s0 + 152));
0x00404bb4 b 0x404a28 | goto label_4;
| label_9:
0x00404bb8 lui a0, 0x41 | a0 = "Receiving %d byte datagrams\n";
| /* obj.server_datagram_size */
0x00404bbc addiu a0, a0, -0x47e0 |
0x00404bc0 b 0x404a0c | goto label_5;
| }
[*] Function printf used 7 times iperf