[*] Binary protection state of mdnsd
Full RELRO Canary found NX disabled PIE enabled No RPATH No RUNPATH No Symbols
[*] Function fprintf tear down of mdnsd
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/4325012-58052244.squashfs_v4_le_extract/usr/sbin/mdnsd @ 0x5fc8 */
| #include <stdint.h>
|
; (fcn) fcn.00005fc8 () | void fcn_00005fc8 () {
0x00005fc8 lui gp, 7 |
0x00005fcc addiu gp, gp, -0xf58 |
0x00005fd0 addu gp, gp, t9 | gp += t9;
0x00005fd4 addiu sp, sp, -0x23d8 |
0x00005fd8 sw s0, 0x23b0(sp) | *(arg_23b0h) = s0;
0x00005fdc lw s0, -0x794c(gp) | s0 = *((gp - 7763));
0x00005fe0 sw s7, 0x23cc(sp) | *(arg_23cch) = s7;
0x00005fe4 sw s6, 0x23c8(sp) | *(arg_23c8h) = s6;
0x00005fe8 sw s3, 0x23bc(sp) | *(arg_23bch) = s3;
0x00005fec sw gp, 0x20(sp) | *(arg_20h) = gp;
0x00005ff0 sw ra, 0x23d4(sp) | *(arg_23d4h) = ra;
0x00005ff4 sw fp, 0x23d0(sp) | *(arg_23d0h) = fp;
0x00005ff8 sw s5, 0x23c4(sp) | *(arg_23c4h) = s5;
0x00005ffc sw s4, 0x23c0(sp) | *(arg_23c0h) = s4;
0x00006000 sw s2, 0x23b8(sp) | *(arg_23b8h) = s2;
0x00006004 sw s1, 0x23b4(sp) | *(arg_23b4h) = s1;
0x00006008 lw v0, (s0) | v0 = *(s0);
0x0000600c move s3, a0 | s3 = a0;
0x00006010 move s7, a1 | s7 = a1;
0x00006014 move a0, a2 | a0 = a2;
0x00006018 sw v0, 0x23ac(sp) | *(arg_23ach) = v0;
0x0000601c move s6, zero | s6 = 0;
| if (a1 != 0) {
0x00006020 beqz a1, 0x6028 |
0x00006024 lw s6, 0x19a0(a1) | s6 = *((a1 + 1640));
| }
0x00006028 lw a3, -0x7fc4(gp) | a3 = *(gp);
| if (s3 != 0) {
0x0000602c bnez s3, 0x6054 | goto label_1;
| }
0x00006030 lw a1, -0x7fc4(gp) | a1 = *(gp);
0x00006034 lw a0, -0x7fc4(gp) | a0 = *(gp);
| /* str.SocketDataReady */
0x00006038 addiu a3, a3, -0x4650 | a3 += -0x4650;
0x0000603c addiu a2, zero, 0xf6 | a2 = 0xf6;
| /* str.mDNSPosix.c */
0x00006040 addiu a1, a1, -0x4ad0 | a1 += -0x4ad0;
| /* str.m___NULL */
0x00006044 addiu a0, a0, -0x4ac4 | a0 += -0x4ac4;
| do {
0x00006048 lw t9, -0x7a4c(gp) | t9 = sym.imp.__assert_fail;
0x0000604c jalr t9 | t9 ();
0x00006050 nop |
| label_1:
0x00006054 addiu v0, zero, 0x1c | v0 = 0x1c;
| if (a0 >= 0) {
0x00006058 bgez a0, 0x607c | goto label_2;
| }
0x0000605c lw a3, -0x7fc4(gp) | a3 = *(gp);
0x00006060 lw a1, -0x7fc4(gp) | a1 = *(gp);
0x00006064 lw a0, -0x7fc4(gp) | a0 = *(gp);
| /* str.SocketDataReady */
0x00006068 addiu a3, a3, -0x4650 | a3 += -0x4650;
0x0000606c addiu a2, zero, 0xf7 | a2 = 0xf7;
| /* str.mDNSPosix.c */
0x00006070 addiu a1, a1, -0x4ad0 | a1 += -0x4ad0;
| /* str.skt___0 */
0x00006074 addiu a0, a0, -0x4ab8 | a0 += -0x4ab8;
0x00006078 b 0x6048 |
| } while (1);
| label_2:
0x0000607c sw v0, 0x34(sp) | *(arg_34h) = v0;
0x00006080 addiu v0, sp, 0x33 | v0 = sp + 0x33;
0x00006084 lw t9, -0x7f5c(gp) | t9 = sym.recvfrom_flags;
0x00006088 sw v0, 0x1c(sp) | *(arg_1ch) = v0;
0x0000608c addiu s1, sp, 0xb4 | s1 = sp + 0xb4;
0x00006090 addiu v0, sp, 0x34 | v0 = sp + 0x34;
0x00006094 addiu fp, sp, 0x84 | fp = sp + 0x84;
0x00006098 addiu s2, sp, 0x68 | s2 = sp + 0x68;
0x0000609c sw zero, 0x38(sp) | *(arg_38h) = 0;
0x000060a0 sw fp, 0x18(sp) | *(arg_18h) = fp;
0x000060a4 sw v0, 0x14(sp) | *(arg_14h) = v0;
0x000060a8 sw s2, 0x10(sp) | *(arg_10h) = s2;
0x000060ac addiu a3, sp, 0x38 | a3 = sp + 0x38;
0x000060b0 addiu a2, zero, 0x22f8 | a2 = 0x22f8;
0x000060b4 move a1, s1 | a1 = s1;
0x000060b8 bal 0x98f4 | sym_recvfrom_flags ();
0x000060bc move s4, v0 | s4 = v0;
0x000060c0 lw gp, 0x20(sp) | gp = *(arg_20h);
| if (v0 < 0) {
0x000060c4 bltz v0, 0x61ec | goto label_3;
| }
0x000060c8 lw t9, -0x7f9c(gp) | t9 = *((gp - 8167));
0x000060cc addiu s5, sp, 0x40 | s5 = sp + 0x40;
0x000060d0 addiu t9, t9, 0x5f10 | t9 += fcn.00005f10;
0x000060d4 move a0, s2 | a0 = s2;
0x000060d8 addiu a2, sp, 0x3c | a2 = sp + 0x3c;
0x000060dc move a1, s5 | a1 = s5;
0x000060e0 sw t9, 0x2c(sp) | *(arg_2ch) = t9;
0x000060e4 bal 0x5f10 | fcn_00005f10 ();
0x000060e8 addiu s2, sp, 0x54 | s2 = sp + 0x54;
0x000060ec lw t9, 0x2c(sp) | t9 = *(arg_2ch);
0x000060f0 move a2, zero | a2 = 0;
0x000060f4 move a1, s2 | a1 = s2;
0x000060f8 move a0, fp | a0 = fp;
0x000060fc jalr t9 | t9 ();
0x00006100 lw gp, 0x20(sp) | gp = *(arg_20h);
| if (s7 == 0) {
0x00006104 bnez s7, 0x6158 |
0x00006108 lw t9, -0x7f58(gp) | t9 = sym.mDNSAddrIsDNSMulticast;
0x0000610c move a0, s2 | a0 = s2;
0x00006110 jalr t9 | t9 ();
0x00006114 lw gp, 0x20(sp) | gp = *(arg_20h);
| if (v0 != 0) {
0x00006118 bnez v0, 0x61ec | goto label_3;
| }
| label_0:
0x0000611c lw v0, -0x7f54(gp) | v0 = *((gp - 8149));
0x00006120 lw t9, -0x7f50(gp) | t9 = sym.mDNSCoreReceive;
0x00006124 sw s6, 0x1c(sp) | *(arg_1ch) = s6;
0x00006128 lhu v0, (v0) | v0 = *(v0);
0x0000612c sw s2, 0x14(sp) | *(arg_14h) = s2;
0x00006130 sh v0, 0x18(sp) | *(arg_18h) = v0;
0x00006134 lhu v0, 0x3c(sp) | v0 = *(arg_3ch);
0x00006138 move a3, s5 | a3 = s5;
0x0000613c sh v0, 0x10(sp) | *(arg_10h) = v0;
0x00006140 addu a2, s1, s4 | a2 = s1 + s4;
0x00006144 move a1, s1 | a1 = s1;
0x00006148 move a0, s3 | a0 = s3;
0x0000614c bal 0x211f8 | sym_mDNSCoreReceive ();
0x00006150 lw gp, 0x20(sp) | gp = *(arg_20h);
0x00006154 b 0x61ec | goto label_3;
| }
0x00006158 lb v0, 0xa4(sp) | v0 = *(arg_a4h);
0x0000615c lw fp, -0x7fc8(gp) | fp = *((gp - 8178));
| if (v0 == 0) {
0x00006160 beqz v0, 0x6208 | goto label_4;
| }
0x00006164 lw t9, -0x791c(gp) | t9 = sym.imp.strcmp;
0x00006168 lw a1, 0x1a20(s7) | a1 = *((s7 + 1672));
0x0000616c addiu a0, sp, 0xa4 | a0 = sp + 0xa4;
0x00006170 jalr t9 | t9 ();
0x00006174 lw gp, 0x20(sp) | gp = *(arg_20h);
| do {
0x00006178 sltu v0, zero, v0 | v0 = (0 < v0) ? 1 : 0;
0x0000617c lw v0, 0x392c(fp) | v0 = *(arg_392ch);
| if (v0 == 0) {
0x00006180 beqz v0, 0x6224 | goto label_5;
| }
0x00006184 lw v0, -0x7fc8(gp) | v0 = *((gp - 8178));
0x00006188 lw a3, 0x392c(fp) | a3 = *(arg_392ch);
0x0000618c lw s1, -0x7fc8(gp) | s1 = *((gp - 8178));
0x00006190 lw v0, 0x3930(v0) | v0 = *((v0 + 3660));
0x00006194 addiu a0, a3, 1 | a0 = a3 + 1;
0x00006198 addiu v0, v0, 1 | v0++;
0x0000619c mul v0, v0, a0 | __asm ("mul v0, v0, a0");
0x000061a0 lw v1, 0x3928(s1) | v1 = *((s1 + 3658));
0x000061a4 addiu v1, v1, 1 | v1++;
0x000061a8 sll v0, v0, 1 | v0 <<= 1;
0x000061ac slt v0, v0, v1 | v0 = (v0 < v1) ? 1 : 0;
0x000061b0 sw v1, 0x3928(s1) | *((s1 + 3658)) = v1;
| if (v0 != 0) {
0x000061b4 beqz v0, 0x61ec |
0x000061b8 lw v0, -0x7934(gp) | v0 = *((gp - 7757));
0x000061bc sw a3, 0x10(sp) | *(arg_10h) = a3;
0x000061c0 lw a2, -0x7fc4(gp) | a2 = *(gp);
0x000061c4 sw v1, 0x14(sp) | *(arg_14h) = v1;
0x000061c8 lw t9, -0x7a20(gp) | t9 = *(gp);
0x000061cc lw a0, (v0) | a0 = *(v0);
0x000061d0 addu a3, v1, a3 | a3 = v1 + a3;
| /* str._WARNING:_Received__d_packets__Accepted__d_packets__Rejected__d_packets_because_of_interface_mismatch_n */
0x000061d4 addiu a2, a2, -0x4aac | a2 += -0x4aac;
0x000061d8 addiu a1, zero, 1 | a1 = 1;
0x000061dc jalr t9 | t9 ();
0x000061e0 lw gp, 0x20(sp) | gp = *(arg_20h);
0x000061e4 sw zero, 0x392c(fp) | *(arg_392ch) = 0;
0x000061e8 sw zero, 0x3928(s1) | *((s1 + 3658)) = 0;
| }
| label_3:
0x000061ec lw v1, 0x23ac(sp) | v1 = *(arg_23ach);
0x000061f0 lw v0, (s0) | v0 = *(s0);
0x000061f4 lw ra, 0x23d4(sp) | ra = *(arg_23d4h);
| if (v1 == v0) {
0x000061f8 beq v1, v0, 0x6230 | goto label_6;
| }
0x000061fc lw t9, -0x7964(gp) | t9 = *(gp);
0x00006200 jalr t9 | t9 ();
0x00006204 nop |
| label_4:
0x00006208 lw v1, 0xa0(sp) | v1 = *(arg_a0h);
0x0000620c addiu v0, zero, -1 | v0 = -1;
| if (v1 == v0) {
0x00006210 beql v1, v0, 0x6224 | goto label_5;
| }
0x00006214 lw v0, 0x392c(fp) | v0 = *(arg_392ch);
0x00006218 lw v0, 0x1a28(s7) | v0 = *((s7 + 1674));
0x0000621c xor v0, v0, v1 | v0 ^= v1;
0x00006220 b 0x6178 |
| } while (1);
| label_5:
0x00006224 addiu v0, v0, 1 | v0++;
0x00006228 sw v0, 0x392c(fp) | *(arg_392ch) = v0;
0x0000622c b 0x611c | goto label_0;
| label_6:
0x00006230 lw fp, 0x23d0(sp) | fp = *(arg_23d0h);
0x00006234 lw s7, 0x23cc(sp) | s7 = *(arg_23cch);
0x00006238 lw s6, 0x23c8(sp) | s6 = *(arg_23c8h);
0x0000623c lw s5, 0x23c4(sp) | s5 = *(arg_23c4h);
0x00006240 lw s4, 0x23c0(sp) | s4 = *(arg_23c0h);
0x00006244 lw s3, 0x23bc(sp) | s3 = *(arg_23bch);
0x00006248 lw s2, 0x23b8(sp) | s2 = *(arg_23b8h);
0x0000624c lw s1, 0x23b4(sp) | s1 = *(arg_23b4h);
0x00006250 lw s0, 0x23b0(sp) | s0 = *(arg_23b0h);
0x00006254 addiu sp, sp, 0x23d8 |
0x00006258 jr ra | return v0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/4325012-58052244.squashfs_v4_le_extract/usr/sbin/mdnsd @ 0x7538 */
| #include <stdint.h>
|
; (fcn) fcn.00007538 () | void fcn_00007538 () {
0x00007538 lui gp, 7 |
0x0000753c addiu gp, gp, -0x24c8 |
0x00007540 addu gp, gp, t9 | gp += t9;
0x00007544 addiu sp, sp, -0x38 |
0x00007548 sw gp, 0x10(sp) | *(var_10h) = gp;
0x0000754c sw s5, 0x2c(sp) | *(var_2ch) = s5;
0x00007550 sw ra, 0x34(sp) | *(var_34h) = ra;
0x00007554 sw s6, 0x30(sp) | *(var_30h) = s6;
0x00007558 sw s4, 0x28(sp) | *(var_28h) = s4;
0x0000755c sw s3, 0x24(sp) | *(var_24h) = s3;
0x00007560 sw s2, 0x20(sp) | *(var_20h) = s2;
0x00007564 sw s1, 0x1c(sp) | *(var_1ch) = s1;
0x00007568 sw s0, 0x18(sp) | *(var_18h) = s0;
0x0000756c lw s5, 0x48(sp) | s5 = *(arg_48h);
| if (a0 != 0) {
0x00007570 bnez a0, 0x759c | goto label_3;
| }
0x00007574 lw a3, -0x7fc4(gp) | a3 = *(gp);
0x00007578 lw a1, -0x7fc4(gp) | a1 = *(gp);
0x0000757c lw a0, -0x7fc4(gp) | a0 = *(gp);
| /* str.SetupOneInterface */
0x00007580 addiu a3, a3, -0x45e4 | a3 += -0x45e4;
0x00007584 addiu a2, zero, 0x379 | a2 = 0x379;
| /* str.mDNSPosix.c */
0x00007588 addiu a1, a1, -0x4ad0 | a1 += -0x4ad0;
| /* str.m___NULL */
0x0000758c addiu a0, a0, -0x4ac4 | a0 += -0x4ac4;
| do {
| label_0:
0x00007590 lw t9, -0x7a4c(gp) | t9 = sym.imp.__assert_fail;
0x00007594 jalr t9 | t9 ();
0x00007598 nop |
| label_3:
0x0000759c move s3, a1 | s3 = a1;
| if (a1 != 0) {
0x000075a0 bnez a1, 0x75c4 | goto label_4;
| }
0x000075a4 lw a3, -0x7fc4(gp) | a3 = *(gp);
0x000075a8 lw a1, -0x7fc4(gp) | a1 = *(gp);
0x000075ac lw a0, -0x7fc4(gp) | a0 = *(gp);
| /* str.SetupOneInterface */
0x000075b0 addiu a3, a3, -0x45e4 | a3 += -0x45e4;
0x000075b4 addiu a2, zero, 0x37a | a2 = 0x37a;
| /* str.mDNSPosix.c */
0x000075b8 addiu a1, a1, -0x4ad0 | a1 += -0x4ad0;
| /* str.intfAddr___NULL */
0x000075bc addiu a0, a0, -0x4914 | a0 += -0x4914;
0x000075c0 b 0x7590 |
| } while (1);
| label_4:
0x000075c4 move s6, a2 | s6 = a2;
| if (a2 == 0) {
0x000075c8 bnez a2, 0x75ec |
0x000075cc lw a3, -0x7fc4(gp) | a3 = *(gp);
0x000075d0 lw a1, -0x7fc4(gp) | a1 = *(gp);
0x000075d4 lw a0, -0x7fc4(gp) | a0 = *(gp);
| /* str.SetupOneInterface */
0x000075d8 addiu a3, a3, -0x45e4 | a3 += -0x45e4;
0x000075dc addiu a2, zero, 0x37c | a2 = 0x37c;
| /* str.mDNSPosix.c */
0x000075e0 addiu a1, a1, -0x4ad0 | a1 += -0x4ad0;
| /* str.intfMask___NULL */
0x000075e4 addiu a0, a0, -0x4718 | a0 += -0x4718;
0x000075e8 b 0x7590 | goto label_0;
| }
0x000075ec lw t9, -0x7a54(gp) | t9 = sym.imp.calloc;
0x000075f0 move s4, a0 | s4 = a0;
0x000075f4 addiu a1, zero, 0x1a34 | a1 = 0x1a34;
0x000075f8 addiu a0, zero, 1 | a0 = 1;
0x000075fc move s2, a3 | s2 = a3;
0x00007600 jalr t9 | t9 ();
0x00007604 move s0, v0 | s0 = v0;
0x00007608 lw gp, 0x10(sp) | gp = *(var_10h);
| if (v0 != 0) {
0x0000760c bnez v0, 0x7630 | goto label_5;
| }
0x00007610 lw a3, -0x7fc4(gp) | a3 = *(gp);
0x00007614 addiu a2, zero, 0x380 | a2 = 0x380;
| /* str.SetupOneInterface */
0x00007618 addiu a3, a3, -0x45e4 | a3 += -0x45e4;
| do {
0x0000761c lw a1, -0x7fc4(gp) | a1 = *(gp);
0x00007620 lw a0, -0x7fc4(gp) | a0 = *(gp);
| /* str.mDNSPosix.c */
0x00007624 addiu a1, a1, -0x4ad0 | a1 += -0x4ad0;
| /* esilref: ' ' */
0x00007628 addiu a0, a0, -0x44c0 | a0 += -0x44c0;
0x0000762c b 0x7590 | goto label_0;
| label_5:
0x00007630 lw t9, -0x7940(gp) | t9 = sym.imp.strdup;
0x00007634 move a0, s2 | a0 = s2;
0x00007638 jalr t9 | t9 ();
0x0000763c sw v0, 0x1a20(s0) | *((s0 + 1672)) = v0;
0x00007640 lw gp, 0x10(sp) | gp = *(var_10h);
| if (v0 != 0) {
0x00007644 bnez v0, 0x7658 | goto label_6;
| }
0x00007648 lw a3, -0x7fc4(gp) | a3 = *(gp);
0x0000764c addiu a2, zero, 0x386 | a2 = 0x386;
| /* str.SetupOneInterface */
0x00007650 addiu a3, a3, -0x45e4 | a3 += -0x45e4;
0x00007654 b 0x761c |
| } while (1);
| label_6:
0x00007658 lw s1, -0x7f9c(gp) | s1 = *((gp - 8167));
0x0000765c move a2, zero | a2 = 0;
0x00007660 addiu s1, s1, 0x5f10 | s1 += fcn.00005f10;
0x00007664 addiu a1, s0, 0x19a4 | a1 = s0 + 0x19a4;
0x00007668 move t9, s1 | t9 = s1;
0x0000766c move a0, s3 | a0 = s3;
0x00007670 bal 0x5f10 | fcn_00005f10 ();
0x00007674 move a2, zero | a2 = 0;
0x00007678 addiu a1, s0, 0x19b8 | a1 = s0 + 0x19b8;
0x0000767c move t9, s1 | t9 = s1;
0x00007680 move a0, s6 | a0 = s6;
0x00007684 bal 0x5f10 | fcn_00005f10 ();
0x00007688 lw gp, 0x10(sp) | gp = *(var_10h);
0x0000768c move a1, s2 | a1 = s2;
0x00007690 addiu a2, zero, 0x40 | a2 = 0x40;
0x00007694 lw t9, -0x79dc(gp) | t9 = sym.imp.strncpy;
0x00007698 addiu a0, s0, 0x19d2 | a0 = s0 + 0x19d2;
0x0000769c jalr t9 | t9 ();
0x000076a0 lbu v0, 9(s4) | v0 = *((s4 + 9));
0x000076a4 lw s2, 0x1a20(s0) | s2 = *((s0 + 1672));
0x000076a8 sb v0, 0x1a12(s0) | *((s0 + 6674)) = v0;
0x000076ac addiu v0, zero, 1 | v0 = 1;
0x000076b0 lw gp, 0x10(sp) | gp = *(var_10h);
0x000076b4 sb zero, 0x1a11(s0) | *((s0 + 6673)) = 0;
0x000076b8 sb v0, 0x1a13(s0) | *((s0 + 6675)) = v0;
| if (s2 == 0) {
0x000076bc bnez s2, 0x76e0 |
0x000076c0 lw a3, -0x7fc4(gp) | a3 = *(gp);
0x000076c4 lw a1, -0x7fc4(gp) | a1 = *(gp);
0x000076c8 lw a0, -0x7fc4(gp) | a0 = *(gp);
| /* str.SetupOneInterface */
0x000076cc addiu a3, a3, -0x45e4 | a3 += -0x45e4;
0x000076d0 addiu a2, zero, 0x396 | a2 = 0x396;
| /* str.mDNSPosix.c */
0x000076d4 addiu a1, a1, -0x4ad0 | a1 += -0x4ad0;
| /* str.intf__intfName___NULL */
0x000076d8 addiu a0, a0, -0x4704 | a0 += -0x4704;
0x000076dc b 0x7590 | goto label_0;
| }
0x000076e0 addiu v0, zero, -1 | v0 = -1;
0x000076e4 lw s1, 0x216c(s4) | s1 = *((s4 + 2139));
0x000076e8 sw s5, 0x1a28(s0) | *((s0 + 1674)) = s5;
0x000076ec sw v0, 0x1a2c(s0) | *((s0 + 1675)) = v0;
0x000076f0 sw v0, 0x1a30(s0) | *((s0 + 1676)) = v0;
| do {
0x000076f4 lw t9, -0x791c(gp) | t9 = sym.imp.strcmp;
| if (s1 == 0) {
0x000076f8 beqz s1, 0x781c | goto label_7;
| }
0x000076fc lw a0, 0x1a20(s1) | a0 = *((s1 + 1672));
0x00007700 move a1, s2 | a1 = s2;
0x00007704 jalr t9 | t9 ();
0x00007708 lw gp, 0x10(sp) | gp = *(var_10h);
| if (v0 == 0) {
0x0000770c bnez v0, 0x7814 |
| label_1:
0x00007710 sw s1, 0x19a0(s0) | *((s0 + 1640)) = s1;
0x00007714 lw v1, 0x1a2c(s1) | v1 = *((s1 + 1675));
0x00007718 addiu v0, zero, -1 | v0 = -1;
0x0000771c lw v1, 0x1a30(s1) | v1 = *((s1 + 1676));
| if (v1 != v0) {
0x00007720 bnel v1, v0, 0x773c |
0x00007724 lhu v1, (s3) | v1 = *(s3);
0x00007728 addiu v0, zero, 2 | v0 = 2;
0x0000772c addiu a3, s1, 0x1a2c | a3 = s1 + 0x1a2c;
| if (v1 == v0) {
0x00007730 beq v1, v0, 0x7758 | goto label_8;
| }
0x00007734 lw v1, 0x1a30(s1) | v1 = *((s1 + 1676));
0x00007738 addiu v0, zero, -1 | v0 = -1;
| }
0x0000773c move s2, zero | s2 = 0;
| if (v1 == v0) {
0x00007740 bne v1, v0, 0x777c |
0x00007744 lhu v1, (s3) | v1 = *(s3);
0x00007748 addiu v0, zero, 0xa | v0 = 0xa;
0x0000774c addiu v0, zero, 0x100 | v0 = aav.0x00000100;
| if (v1 != v0) {
0x00007750 bne v1, v0, 0x7780 | goto label_9;
| }
0x00007754 addiu a3, s1, 0x1a30 | a3 = s1 + 0x1a30;
| label_8:
0x00007758 lw v0, -0x7f54(gp) | v0 = *((gp - 8149));
0x0000775c lw t9, -0x7f9c(gp) | t9 = *((gp - 8167));
0x00007760 move a2, s5 | a2 = s5;
0x00007764 lhu a1, (v0) | a1 = *(v0);
0x00007768 addiu t9, t9, 0x69d0 | t9 += fcn.000069d0;
0x0000776c move a0, s3 | a0 = s3;
0x00007770 bal 0x69d0 | fcn_000069d0 ();
0x00007774 lw gp, 0x10(sp) | gp = *(var_10h);
0x00007778 move s2, v0 | s2 = v0;
| }
0x0000777c addiu v0, zero, 0x100 | v0 = aav.0x00000100;
| label_9:
0x00007780 sh v0, 0x1a18(s0) | *((s0 + 3340)) = v0;
| if (s2 != 0) {
0x00007784 bnez s2, 0x7824 | goto label_10;
| }
0x00007788 lw t9, -0x7f30(gp) | t9 = sym.mDNS_RegisterInterface;
0x0000778c addiu a2, zero, 1 | a2 = 1;
0x00007790 move a1, s0 | a1 = s0;
0x00007794 move a0, s4 | a0 = s4;
0x00007798 bal 0x240d0 | sym_mDNS_RegisterInterface ();
0x0000779c move s2, v0 | s2 = v0;
0x000077a0 lw gp, 0x10(sp) | gp = *(var_10h);
| if (v0 != 0) {
0x000077a4 bnez v0, 0x7824 | goto label_10;
| }
0x000077a8 lw v1, -0x7fc8(gp) | v1 = *((gp - 8178));
0x000077ac lw v0, 0x3930(v1) | v0 = *((v1 + 3660));
0x000077b0 addiu v0, v0, 1 | v0++;
0x000077b4 sw v0, 0x3930(v1) | *((v1 + 3660)) = v0;
0x000077b8 lw v0, -0x7f2c(gp) | v0 = *(gp);
0x000077bc lw v0, (v0) | v0 = *(v0);
0x000077c0 lw ra, 0x34(sp) | ra = *(var_34h);
| if (v0 > 0) {
0x000077c4 blez v0, 0x77ec |
0x000077c8 lw v0, -0x7934(gp) | v0 = *((gp - 7757));
0x000077cc lw a2, -0x7fc4(gp) | a2 = *(gp);
0x000077d0 lw a3, 0x1a20(s0) | a3 = *((s0 + 1672));
0x000077d4 lw a0, (v0) | a0 = *(v0);
0x000077d8 lw t9, -0x7a20(gp) | t9 = *(gp);
| /* str.Registered_interface__s_n */
0x000077dc addiu a2, a2, -0x46ec | a2 += -0x46ec;
0x000077e0 addiu a1, zero, 1 | a1 = 1;
0x000077e4 jalr t9 | t9 ();
| label_2:
0x000077e8 lw ra, 0x34(sp) | ra = *(var_34h);
| }
0x000077ec move v0, s2 | v0 = s2;
0x000077f0 lw s6, 0x30(sp) | s6 = *(var_30h);
0x000077f4 lw s5, 0x2c(sp) | s5 = *(var_2ch);
0x000077f8 lw s4, 0x28(sp) | s4 = *(var_28h);
0x000077fc lw s3, 0x24(sp) | s3 = *(var_24h);
0x00007800 lw s2, 0x20(sp) | s2 = *(var_20h);
0x00007804 lw s1, 0x1c(sp) | s1 = *(var_1ch);
0x00007808 lw s0, 0x18(sp) | s0 = *(var_18h);
0x0000780c addiu sp, sp, 0x38 |
0x00007810 jr ra | return v0;
| }
0x00007814 lw s1, (s1) | s1 = *(s1);
0x00007818 b 0x76f4 |
| } while (1);
| label_7:
0x0000781c move s1, s0 | s1 = s0;
0x00007820 b 0x7710 | goto label_1;
| label_10:
0x00007824 lw t9, -0x7f9c(gp) | t9 = *((gp - 8167));
0x00007828 addiu t9, t9, 0x742c | t9 += fcn.0000742c;
0x0000782c move a0, s0 | a0 = s0;
0x00007830 bal 0x742c | fcn_0000742c ();
0x00007834 b 0x77e8 | goto label_2;
0x00007838 nop |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/4325012-58052244.squashfs_v4_le_extract/usr/sbin/mdnsd @ 0x783c */
| #include <stdint.h>
|
; (fcn) fcn.0000783c () | void fcn_0000783c () {
0x0000783c lui gp, 7 |
0x00007840 addiu gp, gp, -0x27cc |
0x00007844 addu gp, gp, t9 | gp += t9;
0x00007848 addiu sp, sp, -0x30 |
0x0000784c sw gp, 0x10(sp) | *(var_10h) = gp;
| if (a1 == ra) {
0x00007850 beql a1, ra, 0x7904 | goto label_0;
| }
| if (0 == 0) {
0x00007854 beql zero, zero, 0xf858 | void (*0xf858)() ();
| }
| if (0 == 0) {
0x00007858 beql zero, zero, 0xf85c | void (*0xf85c)() ();
| }
0x0000785c sw zero, 0x2000(t8) | *((t8 + 8192)) = 0;
0x00007860 sw s1, 0x1c(sp) | *(var_1ch) = s1;
0x00007864 sw s0, 0x18(sp) | *(var_18h) = s0;
0x00007868 lw s2, -0x7fc4(gp) | s2 = *(gp);
| if (a0 == 0) {
0x0000786c beqz a0, 0x78c8 | goto label_1;
| }
0x00007870 lw s3, -0x7f9c(gp) | s3 = *((gp - 8167));
0x00007874 lw s4, -0x7f2c(gp) | s4 = *(gp);
0x00007878 move s1, a0 | s1 = a0;
| /* str.Deregistered_interface__s_n */
0x0000787c addiu s2, s2, -0x46d0 | s2 += -0x46d0;
0x00007880 addiu s3, s3, 0x742c | s3 += fcn.0000742c;
| do {
0x00007884 lw s0, 0x216c(s1) | s0 = *((s1 + 2139));
0x00007888 lw t9, -0x7f28(gp) | t9 = sym.mDNSPosixGetFDSet;
| if (s0 == 0) {
0x0000788c bnez s0, 0x78ec |
0x00007890 lw v0, -0x7fc8(gp) | v0 = *((gp - 8178));
0x00007894 lw ra, 0x2c(sp) | ra = *(var_2ch);
0x00007898 lw s4, 0x28(sp) | s4 = *(var_28h);
0x0000789c sw zero, 0x3930(v0) | *((v0 + 3660)) = 0;
0x000078a0 lw v0, -0x7fc8(gp) | v0 = *((gp - 8178));
0x000078a4 lw s3, 0x24(sp) | s3 = *(var_24h);
0x000078a8 lw s2, 0x20(sp) | s2 = *(var_20h);
0x000078ac sw zero, 0x392c(v0) | *((v0 + 3659)) = 0;
0x000078b0 lw v0, -0x7fc8(gp) | v0 = *((gp - 8178));
0x000078b4 lw s1, 0x1c(sp) | s1 = *(var_1ch);
0x000078b8 lw s0, 0x18(sp) | s0 = *(var_18h);
0x000078bc sw zero, 0x3928(v0) | *((v0 + 3658)) = 0;
0x000078c0 addiu sp, sp, 0x30 |
0x000078c4 jr ra | return v0;
| label_1:
0x000078c8 lw a3, -0x7fc4(gp) | a3 = *(gp);
0x000078cc lw a1, -0x7fc4(gp) | a1 = *(gp);
0x000078d0 lw a0, -0x7fc4(gp) | a0 = *(gp);
0x000078d4 lw t9, -0x7a4c(gp) | t9 = sym.imp.__assert_fail;
| /* str.ClearInterfaceList */
0x000078d8 addiu a3, a3, -0x4628 | a3 += -0x4628;
0x000078dc addiu a2, zero, 0x267 | a2 = 0x267;
| /* str.mDNSPosix.c */
0x000078e0 addiu a1, a1, -0x4ad0 | a1 += -0x4ad0;
| /* str.m___NULL */
0x000078e4 addiu a0, a0, -0x4ac4 | a0 += -0x4ac4;
0x000078e8 jalr t9 | t9 ();
| }
0x000078ec addiu a2, zero, 1 | a2 = 1;
0x000078f0 move a1, s0 | a1 = s0;
0x000078f4 move a0, s1 | a0 = s1;
0x000078f8 bal 0x24748 | sym_mDNS_DeregisterInterface ();
0x000078fc lw v0, (s4) | v0 = *(s4);
0x00007900 lw gp, 0x10(sp) | gp = *(var_10h);
| if (v0 > 0) {
| label_0:
0x00007904 blez v0, 0x7924 |
0x00007908 lw v0, -0x7934(gp) | v0 = *((gp - 7757));
0x0000790c lw t9, -0x7a20(gp) | t9 = *(gp);
0x00007910 lw a3, 0x1a20(s0) | a3 = *((s0 + 1672));
0x00007914 lw a0, (v0) | a0 = *(v0);
0x00007918 move a2, s2 | a2 = s2;
0x0000791c addiu a1, zero, 1 | a1 = 1;
0x00007920 jalr t9 | t9 ();
| }
0x00007924 move t9, s3 | t9 = s3;
0x00007928 move a0, s0 | a0 = s0;
0x0000792c bal 0x742c | fcn_0000742c ();
0x00007930 lw gp, 0x10(sp) | gp = *(var_10h);
0x00007934 b 0x7884 |
| } while (1);
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/4325012-58052244.squashfs_v4_le_extract/usr/sbin/mdnsd @ 0x851c */
| #include <stdint.h>
|
; (fcn) sym.mDNSPlatformInit () | void mDNSPlatformInit () {
0x0000851c lui gp, 7 |
0x00008520 addiu gp, gp, -0x34ac |
0x00008524 addu gp, gp, t9 | gp += t9;
0x00008528 addiu sp, sp, -0x60 |
0x0000852c sw s2, 0x4c(sp) | *(var_4ch) = s2;
0x00008530 lw s2, -0x794c(gp) | s2 = *((gp - 7763));
0x00008534 sw gp, 0x18(sp) | *(var_18h) = gp;
0x00008538 sw ra, 0x5c(sp) | *(var_5ch) = ra;
0x0000853c sw s5, 0x58(sp) | *(var_58h) = s5;
0x00008540 sw s4, 0x54(sp) | *(var_54h) = s4;
0x00008544 sw s3, 0x50(sp) | *(var_50h) = s3;
0x00008548 sw s1, 0x48(sp) | *(var_48h) = s1;
0x0000854c sw s0, 0x44(sp) | *(var_44h) = s0;
0x00008550 lw v0, (s2) | v0 = *(s2);
0x00008554 sw v0, 0x3c(sp) | *(var_3ch) = v0;
0x00008558 lw t9, -0x7a18(gp) | t9 = sym.imp.socket;
| if (a0 == 0) {
0x0000855c bnez a0, 0x8584 |
0x00008560 lw a3, -0x7fc4(gp) | a3 = *(gp);
0x00008564 lw a1, -0x7fc4(gp) | a1 = *(gp);
0x00008568 lw a0, -0x7fc4(gp) | a0 = *(gp);
0x0000856c lw t9, -0x7a4c(gp) | t9 = sym.imp.__assert_fail;
| /* str.mDNSPlatformInit */
0x00008570 addiu a3, a3, -0x45a8 | a3 += -0x45a8;
0x00008574 addiu a2, zero, 0x51f | a2 = 0x51f;
| /* str.mDNSPosix.c */
0x00008578 addiu a1, a1, -0x4ad0 | a1 += -0x4ad0;
| /* str.m___NULL */
0x0000857c addiu a0, a0, -0x4ac4 | a0 += -0x4ac4;
0x00008580 jalr t9 | t9 ();
| }
0x00008584 addiu a2, zero, 0x11 | a2 = 0x11;
0x00008588 addiu a1, zero, 1 | a1 = 1;
0x0000858c move s0, a0 | s0 = a0;
0x00008590 addiu a0, zero, 2 | a0 = 2;
0x00008594 jalr t9 | t9 ();
0x00008598 lw gp, 0x18(sp) | gp = *(var_18h);
0x0000859c move s1, v0 | s1 = v0;
0x000085a0 addiu v0, zero, 2 | v0 = 2;
0x000085a4 sh v0, 0x2c(sp) | *(var_2ch) = v0;
0x000085a8 lw v0, -0x7f54(gp) | v0 = *((gp - 8149));
0x000085ac addiu s3, sp, 0x2c | s3 = sp + 0x2c;
0x000085b0 lw t9, -0x79d0(gp) | t9 = sym.imp.bind;
0x000085b4 lhu v0, (v0) | v0 = *(v0);
0x000085b8 addiu a2, zero, 0x10 | a2 = 0x10;
0x000085bc move a1, s3 | a1 = s3;
0x000085c0 move a0, s1 | a0 = s1;
0x000085c4 sh v0, 0x2e(sp) | *(var_2eh) = v0;
0x000085c8 sw zero, 0x30(sp) | *(var_30h) = 0;
0x000085cc jalr t9 | t9 ();
0x000085d0 lw gp, 0x18(sp) | gp = *(var_18h);
0x000085d4 move s4, v0 | s4 = v0;
0x000085d8 lw t9, -0x7a48(gp) | t9 = sym.imp.close;
0x000085dc move a0, s1 | a0 = s1;
0x000085e0 jalr t9 | t9 ();
0x000085e4 lw gp, 0x18(sp) | gp = *(var_18h);
| if (s4 == 0) {
0x000085e8 bnez s4, 0x85f4 |
0x000085ec addiu v0, zero, 1 | v0 = 1;
0x000085f0 sb v0, 8(s0) | *((s0 + 8)) = v0;
| }
0x000085f4 lw s1, -0x7f9c(gp) | s1 = *((gp - 8167));
0x000085f8 addiu s4, s0, 0x1a54 | s4 = s0 + 0x1a54;
0x000085fc addiu s1, s1, 0x5c64 | s1 += fcn.00005c64;
0x00008600 sb zero, 0x1a54(s0) | *((s0 + 6740)) = 0;
0x00008604 move t9, s1 | t9 = s1;
0x00008608 move a0, s4 | a0 = s4;
0x0000860c bal 0x5c64 | fcn_00005c64 ();
0x00008610 lbu v0, 0x1a54(s0) | v0 = *((s0 + 6740));
0x00008614 lw gp, 0x18(sp) | gp = *(var_18h);
| if (v0 == 0) {
0x00008618 bnez v0, 0x8630 |
0x0000861c lw a1, -0x7fc4(gp) | a1 = *(gp);
0x00008620 lw t9, -0x7f10(gp) | t9 = sym.mDNSPlatformInterfaceIsD2D;
| /* str.Computer */
0x00008624 addiu a1, a1, -0x46a4 | a1 += -0x46a4;
0x00008628 move a0, s4 | a0 = s4;
0x0000862c jalr t9 | t9 ();
| }
0x00008630 addiu s4, s0, 0x1a94 | s4 = s0 + 0x1a94;
0x00008634 sb zero, 0x1a94(s0) | *((s0 + 6804)) = 0;
0x00008638 move t9, s1 | t9 = s1;
0x0000863c move a0, s4 | a0 = s4;
0x00008640 bal 0x5c64 | fcn_00005c64 ();
0x00008644 lbu v0, 0x1a94(s0) | v0 = *((s0 + 6804));
0x00008648 lw gp, 0x18(sp) | gp = *(var_18h);
| if (v0 == 0) {
0x0000864c bnez v0, 0x8668 |
0x00008650 lw a1, -0x7fc4(gp) | a1 = *(gp);
0x00008654 lw t9, -0x7f10(gp) | t9 = sym.mDNSPlatformInterfaceIsD2D;
| /* str.Computer */
0x00008658 addiu a1, a1, -0x46a4 | a1 += -0x46a4;
0x0000865c move a0, s4 | a0 = s4;
0x00008660 jalr t9 | t9 ();
0x00008664 lw gp, 0x18(sp) | gp = *(var_18h);
| }
0x00008668 lw t9, -0x7f0c(gp) | t9 = sym.mDNS_SetFQDN;
0x0000866c move a0, s0 | a0 = s0;
0x00008670 bal 0x23a3c | sym_mDNS_SetFQDN ();
0x00008674 addiu v0, zero, 2 | v0 = 2;
0x00008678 lw gp, 0x18(sp) | gp = *(var_18h);
0x0000867c sh v0, 0x2c(sp) | *(var_2ch) = v0;
0x00008680 lw v0, (s0) | v0 = *(s0);
0x00008684 addiu s5, zero, -1 | s5 = -1;
0x00008688 lw s1, -0x7f9c(gp) | s1 = *((gp - 8167));
0x0000868c sw s5, (v0) | *(v0) = s5;
0x00008690 lw v0, -0x7f08(gp) | v0 = sym.mDNSPlatformGetUDPPort;
0x00008694 lw a3, (s0) | a3 = *(s0);
0x00008698 addiu s1, s1, 0x69d0 | s1 += fcn.000069d0;
0x0000869c lhu s4, (v0) | s4 = *(v0);
0x000086a0 move a2, zero | a2 = 0;
0x000086a4 move a1, s4 | a1 = s4;
0x000086a8 move t9, s1 | t9 = s1;
0x000086ac move a0, s3 | a0 = s3;
0x000086b0 bal 0x69d0 | fcn_000069d0 ();
0x000086b4 addiu v1, zero, 0xa | v1 = 0xa;
0x000086b8 sh v1, 0x2c(sp) | *(var_2ch) = v1;
0x000086bc lw v1, (s0) | v1 = *(s0);
0x000086c0 lw gp, 0x18(sp) | gp = *(var_18h);
0x000086c4 sw s5, 4(v1) | *((v1 + 1)) = s5;
0x000086c8 beqz v0, 0x86f0 |
| while (v0 != 0) {
| label_0:
0x000086cc lui v0, 0xfffe | v0 = 0xfffeffff;
0x000086d0 ori v0, v0, 0xffff |
| label_2:
0x000086d4 lw a0, 0x3c(sp) | a0 = *(var_3ch);
0x000086d8 lw v1, (s2) | v1 = *(s2);
0x000086dc lw ra, 0x5c(sp) | ra = *(var_5ch);
| if (a0 == v1) {
0x000086e0 beq a0, v1, 0x8868 | goto label_3;
| }
0x000086e4 lw t9, -0x7964(gp) | t9 = *(gp);
0x000086e8 jalr t9 | t9 ();
0x000086ec nop |
0x000086f0 lw a3, (s0) | a3 = *(s0);
0x000086f4 move a2, zero | a2 = 0;
0x000086f8 addiu a3, a3, 4 | a3 += 4;
0x000086fc move a1, s4 | a1 = s4;
0x00008700 move t9, s1 | t9 = s1;
0x00008704 move a0, s3 | a0 = s3;
0x00008708 bal 0x69d0 | fcn_000069d0 ();
0x0000870c lw gp, 0x18(sp) | gp = *(var_18h);
0x00008710 bnez v0, 0x86cc |
| }
0x00008714 lw t9, -0x7f9c(gp) | t9 = *((gp - 8167));
0x00008718 addiu t9, t9, 0x7a20 | t9 += fcn.00007a20;
0x0000871c move a0, s0 | a0 = s0;
0x00008720 bal 0x7a20 | fcn_00007a20 ();
0x00008724 lw gp, 0x18(sp) | gp = *(var_18h);
| if (v0 != 0) {
0x00008728 bnez v0, 0x86cc | goto label_0;
| }
0x0000872c lw t9, -0x799c(gp) | t9 = sym.imp.malloc;
0x00008730 addiu a0, zero, 8 | a0 = 8;
0x00008734 jalr t9 | t9 ();
0x00008738 move s3, v0 | s3 = v0;
0x0000873c lw gp, 0x18(sp) | gp = *(var_18h);
| if (v0 == 0) {
0x00008740 beqz v0, 0x885c | goto label_4;
| }
0x00008744 lw t9, -0x7a18(gp) | t9 = sym.imp.socket;
0x00008748 sw s0, 4(v0) | *((v0 + 1)) = s0;
0x0000874c move a2, zero | a2 = 0;
0x00008750 addiu a1, zero, 3 | a1 = 3;
0x00008754 addiu a0, zero, 0x10 | a0 = 0x10;
0x00008758 jalr t9 | t9 ();
0x0000875c move s1, v0 | s1 = v0;
0x00008760 lw gp, 0x18(sp) | gp = *(var_18h);
0x00008764 bgez v0, 0x87bc |
| while (v0 != 0) {
0x00008768 lw t9, -0x79d8(gp) | t9 = sym.imp.__errno_location;
0x0000876c jalr t9 | t9 ();
0x00008770 nop |
0x00008774 lw s1, (v0) | s1 = *(v0);
0x00008778 lw gp, 0x18(sp) | gp = *(var_18h);
| if (s1 == 0) {
0x0000877c beqz s1, 0x881c | goto label_5;
| }
| label_1:
0x00008780 lw v0, -0x7934(gp) | v0 = *((gp - 7757));
0x00008784 lw t9, -0x7990(gp) | t9 = sym.imp.getpid;
0x00008788 lw s3, (v0) | s3 = *(v0);
0x0000878c jalr t9 | t9 ();
0x00008790 lw gp, 0x18(sp) | gp = *(var_18h);
0x00008794 sw s1, 0x10(sp) | *(var_10h) = s1;
0x00008798 move a3, v0 | a3 = v0;
0x0000879c lw a2, -0x7fc4(gp) | a2 = *(gp);
0x000087a0 lw t9, -0x7a20(gp) | t9 = *(gp);
| /* str.mDNS__d__WARNING:_Unable_to_detect_interface_changes___d_._n */
0x000087a4 addiu a2, a2, -0x4698 | a2 += -0x4698;
0x000087a8 addiu a1, zero, 1 | a1 = 1;
0x000087ac move a0, s3 | a0 = s3;
0x000087b0 jalr t9 | t9 ();
0x000087b4 lw gp, 0x18(sp) | gp = *(var_18h);
0x000087b8 b 0x8840 | goto label_6;
0x000087bc lw t9, -0x79c8(gp) | t9 = sym.imp.fcntl;
0x000087c0 addiu a2, zero, 0x80 | a2 = 0x80;
0x000087c4 addiu a1, zero, 4 | a1 = 4;
0x000087c8 move a0, v0 | a0 = v0;
0x000087cc jalr t9 | t9 ();
0x000087d0 lw gp, 0x18(sp) | gp = *(var_18h);
0x000087d4 addiu s4, sp, 0x20 | s4 = sp + 0x20;
0x000087d8 addiu a1, zero, 0xc | a1 = 0xc;
0x000087dc lw t9, -0x7f3c(gp) | t9 = sym.mDNSPlatformMemZero;
0x000087e0 move a0, s4 | a0 = s4;
0x000087e4 bal 0x65d8 | sym_mDNSPlatformMemZero ();
0x000087e8 lw gp, 0x18(sp) | gp = *(var_18h);
0x000087ec addiu v0, zero, 0x10 | v0 = 0x10;
0x000087f0 sh v0, 0x20(sp) | *(var_20h) = v0;
0x000087f4 lw t9, -0x79d0(gp) | t9 = sym.imp.bind;
0x000087f8 addiu v0, zero, 0x11 | v0 = 0x11;
0x000087fc sw v0, 0x28(sp) | *(var_28h) = v0;
0x00008800 addiu a2, zero, 0xc | a2 = 0xc;
0x00008804 move a1, s4 | a1 = s4;
0x00008808 move a0, s1 | a0 = s1;
0x0000880c jalr t9 | t9 ();
0x00008810 lw gp, 0x18(sp) | gp = *(var_18h);
0x00008814 bnez v0, 0x8768 |
| }
0x00008818 sw s1, (s3) | *(s3) = s1;
| label_5:
0x0000881c lw a1, -0x7f9c(gp) | a1 = *((gp - 8167));
0x00008820 lw t9, -0x7fb4(gp) | t9 = sym.mDNSPosixAddFDToEventLoop;
0x00008824 lw a0, (s3) | a0 = *(s3);
0x00008828 move a2, s3 | a2 = s3;
0x0000882c addiu a1, a1, 0x7d68 | a1 += 0x7d68;
0x00008830 bal 0x8400 | sym_mDNSPosixAddFDToEventLoop ();
0x00008834 move s1, v0 | s1 = v0;
0x00008838 lw gp, 0x18(sp) | gp = *(var_18h);
| if (v0 != 0) {
0x0000883c bnez v0, 0x8780 | goto label_1;
| }
| label_6:
0x00008840 lw t9, -0x7f04(gp) | t9 = sym.mDNSCoreInitComplete;
0x00008844 move a1, zero | a1 = 0;
0x00008848 move a0, s0 | a0 = s0;
0x0000884c jalr t9 | t9 ();
0x00008850 lw gp, 0x18(sp) | gp = *(var_18h);
0x00008854 move v0, zero | v0 = 0;
0x00008858 b 0x86d4 | goto label_2;
| label_4:
0x0000885c lui s1, 0xfffe | s1 = 0xfffefffd;
0x00008860 ori s1, s1, 0xfffd |
0x00008864 b 0x8780 | goto label_1;
| label_3:
0x00008868 lw s5, 0x58(sp) | s5 = *(var_58h);
0x0000886c lw s4, 0x54(sp) | s4 = *(var_54h);
0x00008870 lw s3, 0x50(sp) | s3 = *(var_50h);
0x00008874 lw s2, 0x4c(sp) | s2 = *(var_4ch);
0x00008878 lw s1, 0x48(sp) | s1 = *(var_48h);
0x0000887c lw s0, 0x44(sp) | s0 = *(var_44h);
0x00008880 addiu sp, sp, 0x60 |
0x00008884 jr ra | return v0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/4325012-58052244.squashfs_v4_le_extract/usr/sbin/mdnsd @ 0x49924 */
| #include <stdint.h>
|
; (fcn) sym.mDNSPlatformWriteLogMsg () | void mDNSPlatformWriteLogMsg () {
0x00049924 lui gp, 3 |
0x00049928 addiu gp, gp, -0x48b4 |
0x0004992c addu gp, gp, t9 | gp += t9;
0x00049930 addiu sp, sp, -0x30 |
0x00049934 lw v0, -0x7fac(gp) | v0 = *(gp);
0x00049938 sw s2, 0x24(sp) | *(var_24h) = s2;
0x0004993c sw gp, 0x10(sp) | *(var_10h) = gp;
0x00049940 sw ra, 0x2c(sp) | *(var_2ch) = ra;
0x00049944 sw s3, 0x28(sp) | *(var_28h) = s3;
0x00049948 sw s1, 0x20(sp) | *(var_20h) = s1;
0x0004994c sw s0, 0x1c(sp) | *(var_1ch) = s0;
0x00049950 lw v0, (v0) | v0 = *(v0);
0x00049954 move s2, a1 | s2 = a1;
| if (v0 != 0) {
0x00049958 beqz v0, 0x499a4 |
0x0004995c lw s0, -0x7934(gp) | s0 = *((gp - 7757));
0x00049960 lw a2, -0x7b74(gp) | a2 = *((gp - 7901));
0x00049964 lw t9, -0x7a20(gp) | t9 = *(gp);
0x00049968 lw a0, (s0) | a0 = *(s0);
0x0004996c move a3, a1 | a3 = a1;
| /* esilref: '&s
' */
0x00049970 addiu a2, a2, -0x4204 | a2 += -0x4204;
0x00049974 addiu a1, zero, 1 | a1 = 1;
0x00049978 jalr t9 | t9 ();
0x0004997c lw gp, 0x10(sp) | gp = *(var_10h);
0x00049980 lw a0, (s0) | a0 = *(s0);
0x00049984 lw ra, 0x2c(sp) | ra = *(var_2ch);
0x00049988 lw s3, 0x28(sp) | s3 = *(var_28h);
0x0004998c lw s2, 0x24(sp) | s2 = *(var_24h);
0x00049990 lw s1, 0x20(sp) | s1 = *(var_20h);
0x00049994 lw s0, 0x1c(sp) | s0 = *(var_1ch);
0x00049998 lw t9, -0x792c(gp) | t9 = sym.imp.fflush;
0x0004999c addiu sp, sp, 0x30 |
0x000499a0 jr t9 | t9 ();
| }
0x000499a4 sltiu v0, a2, 5 | v0 = (a2 < 5) ? 1 : 0;
0x000499a8 move s3, a0 | s3 = a0;
0x000499ac move a3, a2 | a3 = a2;
| if (v0 == 0) {
0x000499b0 beqz v0, 0x49a2c | goto label_0;
| }
0x000499b4 lw a2, -0x7b74(gp) | a2 = *((gp - 7901));
0x000499b8 addiu a2, a2, -0x41d0 | a2 += -0x41d0;
0x000499bc addu a3, a3, a2 | a3 += a2;
0x000499c0 lb s1, (a3) | s1 = *(a3);
| do {
0x000499c4 lw s0, -0x7fc8(gp) | s0 = *((gp - 8178));
0x000499c8 lw v0, 0x3b80(s0) | v0 = *((s0 + 3808));
0x000499cc lw a2, -0x7fc4(gp) | a2 = *(gp);
| if (v0 == 0) {
0x000499d0 bnez v0, 0x499fc |
0x000499d4 lw t9, -0x7a04(gp) | t9 = sym.imp.openlog;
0x000499d8 addiu a2, zero, 0x18 | a2 = 0x18;
0x000499dc addiu a1, zero, 2 | a1 = 2;
0x000499e0 move a0, s3 | a0 = s3;
0x000499e4 jalr t9 | t9 ();
0x000499e8 lw v0, 0x3b80(s0) | v0 = *((s0 + 3808));
0x000499ec lw gp, 0x10(sp) | gp = *(var_10h);
0x000499f0 addiu v0, v0, 1 | v0++;
0x000499f4 sw v0, 0x3b80(s0) | *((s0 + 3808)) = v0;
0x000499f8 lw a2, -0x7fc4(gp) | a2 = *(gp);
| }
0x000499fc lw ra, 0x2c(sp) | ra = *(var_2ch);
0x00049a00 lw s3, 0x28(sp) | s3 = *(var_28h);
0x00049a04 lw s0, 0x1c(sp) | s0 = *(var_1ch);
0x00049a08 move a3, s2 | a3 = s2;
0x00049a0c move a0, s1 | a0 = s1;
0x00049a10 lw s2, 0x24(sp) | s2 = *(var_24h);
0x00049a14 lw s1, 0x20(sp) | s1 = *(var_20h);
0x00049a18 lw t9, -0x79e8(gp) | t9 = sym.imp.__syslog_chk;
| /* esilref: '&s' */
0x00049a1c addiu a2, a2, 0x24cc | a2 += 0x24cc;
0x00049a20 addiu a1, zero, 1 | a1 = 1;
0x00049a24 addiu sp, sp, 0x30 |
0x00049a28 jr t9 | t9 ();
| label_0:
0x00049a2c lw s0, -0x7934(gp) | s0 = *((gp - 7757));
0x00049a30 lw a2, -0x7b74(gp) | a2 = *((gp - 7901));
0x00049a34 lw t9, -0x7a20(gp) | t9 = *(gp);
0x00049a38 lw a0, (s0) | a0 = *(s0);
| /* str.Unknown_loglevel__d__assuming_LOG_ERR_n */
0x00049a3c addiu a2, a2, -0x4200 | a2 += -0x4200;
0x00049a40 addiu a1, zero, 1 | a1 = 1;
0x00049a44 jalr t9 | t9 ();
0x00049a48 lw gp, 0x10(sp) | gp = *(var_10h);
0x00049a4c lw a0, (s0) | a0 = *(s0);
0x00049a50 lw t9, -0x792c(gp) | t9 = sym.imp.fflush;
0x00049a54 addiu s1, zero, 3 | s1 = 3;
0x00049a58 jalr t9 | t9 ();
0x00049a5c lw gp, 0x10(sp) | gp = *(var_10h);
0x00049a60 b 0x499c4 |
| } while (1);
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/4325012-58052244.squashfs_v4_le_extract/usr/sbin/mdnsd @ 0x46250 */
| #include <stdint.h>
|
; (fcn) sym.udsserver_init () | void udsserver_init () {
0x00046250 lui gp, 3 |
0x00046254 addiu gp, gp, -0x11e0 |
0x00046258 addu gp, gp, t9 | gp += t9;
0x0004625c addiu sp, sp, -0xc8 |
0x00046260 sw s1, 0xb4(sp) | *(var_b4h) = s1;
0x00046264 lw s1, -0x794c(gp) | s1 = *((gp - 7763));
0x00046268 sw s4, 0xc0(sp) | *(var_c0h) = s4;
0x0004626c sw s3, 0xbc(sp) | *(var_bch) = s3;
0x00046270 sw gp, 0x20(sp) | *(var_20h) = gp;
0x00046274 sw ra, 0xc4(sp) | *(var_c4h) = ra;
0x00046278 sw s2, 0xb8(sp) | *(var_b8h) = s2;
0x0004627c sw s0, 0xb0(sp) | *(var_b0h) = s0;
0x00046280 lw v0, (s1) | v0 = *(s1);
0x00046284 move s3, a0 | s3 = a0;
0x00046288 sw v0, 0xac(sp) | *(var_ach) = v0;
0x0004628c lw v0, -0x7fa8(gp) | v0 = *(gp);
0x00046290 lw v0, (v0) | v0 = *(v0);
0x00046294 move s4, a1 | s4 = a1;
| if (v0 != 0) {
0x00046298 beqz v0, 0x462c4 |
0x0004629c lw v0, -0x7fd0(gp) | v0 = *(gp);
0x000462a0 lw a1, -0x7b74(gp) | a1 = *((gp - 7901));
0x000462a4 lw t9, -0x7fa0(gp) | t9 = sym.LogMsgWithLevel;
0x000462a8 lw a3, 0x217c(v0) | a3 = *((v0 + 2143));
0x000462ac lui a2, 0x86 | a2 = 0x865e71;
0x000462b0 addiu a2, a2, 0x5e71 |
| /* str.udsserver_init:__d__d */
0x000462b4 addiu a1, a1, -0x59e0 | a1 += -0x59e0;
0x000462b8 addiu a0, zero, 3 | a0 = 3;
0x000462bc bal 0x48aac | sym_LogMsgWithLevel ();
0x000462c0 lw gp, 0x20(sp) | gp = *(var_20h);
| }
0x000462c4 lw a1, -0x7fc4(gp) | a1 = *(gp);
0x000462c8 lw a0, -0x7b74(gp) | a0 = *((gp - 7901));
0x000462cc lw t9, -0x7930(gp) | t9 = sym.imp.fopen;
0x000462d0 addiu a1, a1, 0x1e2c | a1 += 0x1e2c;
| /* str._var_run_mdnsd_mdnsd.pid */
0x000462d4 addiu a0, a0, -0x59c8 | a0 += -0x59c8;
0x000462d8 jalr t9 | t9 ();
0x000462dc move s0, v0 | s0 = v0;
0x000462e0 lw gp, 0x20(sp) | gp = *(var_20h);
| if (v0 != 0) {
0x000462e4 beqz v0, 0x46328 |
0x000462e8 lw t9, -0x7990(gp) | t9 = sym.imp.getpid;
0x000462ec jalr t9 | t9 ();
0x000462f0 nop |
0x000462f4 lw gp, 0x20(sp) | gp = *(var_20h);
0x000462f8 move a3, v0 | a3 = v0;
0x000462fc addiu a1, zero, 1 | a1 = 1;
0x00046300 lw a2, -0x7b74(gp) | a2 = *((gp - 7901));
0x00046304 lw t9, -0x7a20(gp) | t9 = *(gp);
| /* esilref: '&d
' */
0x00046308 addiu a2, a2, -0x59ac | a2 += -0x59ac;
0x0004630c move a0, s0 | a0 = s0;
0x00046310 jalr t9 | t9 ();
0x00046314 lw gp, 0x20(sp) | gp = *(var_20h);
0x00046318 lw t9, -0x7a08(gp) | t9 = sym.imp.fclose;
0x0004631c move a0, s0 | a0 = s0;
0x00046320 jalr t9 | t9 ();
0x00046324 lw gp, 0x20(sp) | gp = *(var_20h);
| }
0x00046328 move s0, zero | s0 = 0;
| if (s3 == 0) {
0x0004632c beqz s3, 0x463dc | goto label_7;
| }
0x00046330 lw s2, -0x7b64(gp) | s2 = *(gp);
| /* fcn.0003ddf8 */
0x00046334 addiu s2, s2, -0x2208 | s2 += -0x2208;
| do {
0x00046338 sll a0, s0, 2 | a0 = s0 << 2;
| if (s0 == s4) {
0x0004633c bne s0, s4, 0x46398 |
| label_3:
0x00046340 lw t9, -0x7968(gp) | t9 = sym.imp.getrlimit;
0x00046344 addiu s0, sp, 0x2c | s0 = sp + 0x2c;
0x00046348 move a1, s0 | a1 = s0;
0x0004634c addiu a0, zero, 5 | a0 = 5;
0x00046350 jalr t9 | t9 ();
0x00046354 lw gp, 0x20(sp) | gp = *(var_20h);
| if (v0 >= 0) {
0x00046358 bgez v0, 0x464e0 | goto label_8;
| }
| label_5:
0x0004635c lw a0, -0x7b74(gp) | a0 = *((gp - 7901));
0x00046360 lw t9, -0x7b64(gp) | t9 = *(gp);
| /* str.ERROR:_Unable_to_get_file_descriptor_limit */
0x00046364 addiu a0, a0, -0x5914 | a0 += -entry.fini0;
| /* fcn.0003b220 */
0x00046368 addiu t9, t9, -0x4de0 | t9 += -0x4de0;
| label_6:
0x0004636c jalr t9 | t9 ();
0x00046370 nop |
0x00046374 lw gp, 0x20(sp) | gp = *(var_20h);
0x00046378 move v0, zero | v0 = 0;
| label_1:
0x0004637c lw a0, 0xac(sp) | a0 = *(var_ach);
0x00046380 lw v1, (s1) | v1 = *(s1);
0x00046384 lw ra, 0xc4(sp) | ra = *(var_c4h);
| if (a0 == v1) {
0x00046388 beq a0, v1, 0x46644 | goto label_9;
| }
0x0004638c lw t9, -0x7964(gp) | t9 = *(gp);
0x00046390 jalr t9 | t9 ();
0x00046394 nop |
| }
0x00046398 lwx a0, a0(s3) | __asm ("lwx a0, a0(s3)");
0x0004639c move t9, s2 | t9 = s2;
| if (a0 >= 0) {
0x000463a0 bgez a0, 0x463ac | goto label_10;
| }
| label_0:
0x000463a4 addiu s0, s0, 1 | s0++;
0x000463a8 b 0x46338 |
| } while (1);
| label_10:
0x000463ac bal 0x3ddf8 | fcn_0003ddf8 ();
0x000463b0 nop |
0x000463b4 lw gp, 0x20(sp) | gp = *(var_20h);
| if (v0 != 0) {
0x000463b8 bnez v0, 0x463a4 | goto label_0;
| }
| do {
0x000463bc lw a0, -0x7b74(gp) | a0 = *((gp - 7901));
| label_4:
0x000463c0 lw t9, -0x7b64(gp) | t9 = *(gp);
| /* fcn.0003b220 */
0x000463c4 addiu t9, t9, -0x4de0 | t9 += -0x4de0;
| /* str.ERROR:_udsserver_init */
0x000463c8 addiu a0, a0, -0x58b4 | a0 += -0x58b4;
0x000463cc bal 0x3b220 | fcn_0003b220 ();
0x000463d0 lw gp, 0x20(sp) | gp = *(var_20h);
0x000463d4 addiu v0, zero, -1 | v0 = -1;
0x000463d8 b 0x4637c | goto label_1;
| label_7:
0x000463dc lw t9, -0x7a18(gp) | t9 = sym.imp.socket;
0x000463e0 move a2, zero | a2 = 0;
0x000463e4 addiu a1, zero, 2 | a1 = 2;
0x000463e8 addiu a0, zero, 1 | a0 = 1;
0x000463ec jalr t9 | t9 ();
0x000463f0 lw gp, 0x20(sp) | gp = *(var_20h);
0x000463f4 lw s2, -0x7f94(gp) | s2 = *((gp - 8165));
0x000463f8 sw v0, -0x2fa0(s2) | *((s2 - 3048)) = v0;
| if (v0 >= 0) {
0x000463fc bgez v0, 0x46420 | goto label_11;
| }
0x00046400 lw a0, -0x7b74(gp) | a0 = *((gp - 7901));
| /* str.ERROR:_socket_AF_DNSSD__SOCK_STREAM__0___failed */
0x00046404 addiu a0, a0, -0x59a8 | a0 += -0x59a8;
| label_2:
0x00046408 lw t9, -0x7b64(gp) | t9 = *(gp);
| /* fcn.0003b220 */
0x0004640c addiu t9, t9, -0x4de0 | t9 += -0x4de0;
0x00046410 bal 0x3b220 | fcn_0003b220 ();
0x00046414 nop |
0x00046418 lw gp, 0x20(sp) | gp = *(var_20h);
0x0004641c b 0x463bc |
| } while (1);
| label_11:
0x00046420 lw t9, -0x7f3c(gp) | t9 = sym.mDNSPlatformMemZero;
0x00046424 addiu s0, sp, 0x3c | s0 = sp + 0x3c;
0x00046428 addiu a1, zero, 0x6e | a1 = 0x6e;
0x0004642c move a0, s0 | a0 = s0;
0x00046430 jalr t9 | t9 ();
0x00046434 lw gp, 0x20(sp) | gp = *(var_20h);
0x00046438 lw t9, -0x7a3c(gp) | t9 = sym.imp.umask;
0x0004643c move a0, zero | a0 = 0;
0x00046440 jalr t9 | t9 ();
0x00046444 lw gp, 0x20(sp) | gp = *(var_20h);
0x00046448 move s4, v0 | s4 = v0;
0x0004644c lw s3, -0x7b74(gp) | s3 = *((gp - 7901));
0x00046450 lw t9, -0x7970(gp) | t9 = sym.imp.unlink;
| /* str._var_run_mdnsd_mdnsd */
0x00046454 addiu a0, s3, -0x5978 | a0 = s3 + -0x5978;
0x00046458 jalr t9 | t9 ();
0x0004645c lw gp, 0x20(sp) | gp = *(var_20h);
0x00046460 addiu v0, zero, 1 | v0 = 1;
0x00046464 addiu a2, zero, 0x6c | a2 = 0x6c;
0x00046468 lw t9, -0x7b34(gp) | t9 = sym.mDNSPlatformStrLCopy;
| /* str._var_run_mdnsd_mdnsd */
0x0004646c addiu a1, s3, -0x5978 | a1 = s3 + -0x5978;
0x00046470 addiu a0, sp, 0x3e | a0 = sp + 0x3e;
0x00046474 sh v0, 0x3c(sp) | *(var_3ch) = v0;
0x00046478 jalr t9 | t9 ();
0x0004647c lw gp, 0x20(sp) | gp = *(var_20h);
0x00046480 lw s2, -0x2fa0(s2) | s2 = *((s2 - 3048));
0x00046484 move a1, s0 | a1 = s0;
0x00046488 lw t9, -0x79d0(gp) | t9 = sym.imp.bind;
0x0004648c addiu a2, zero, 0x6e | a2 = 0x6e;
0x00046490 move a0, s2 | a0 = s2;
0x00046494 jalr t9 | t9 ();
0x00046498 lw gp, 0x20(sp) | gp = *(var_20h);
0x0004649c move s0, v0 | s0 = v0;
0x000464a0 lw t9, -0x7a3c(gp) | t9 = sym.imp.umask;
0x000464a4 move a0, s4 | a0 = s4;
0x000464a8 jalr t9 | t9 ();
0x000464ac lw gp, 0x20(sp) | gp = *(var_20h);
| if (s0 < 0) {
0x000464b0 bgez s0, 0x464c0 |
0x000464b4 lw a0, -0x7b74(gp) | a0 = *((gp - 7901));
| /* str.ERROR:_bind_listenfd___struct_sockaddr___laddr__sizeof_laddr____failed */
0x000464b8 addiu a0, a0, -0x5960 | a0 += -0x5960;
0x000464bc b 0x46408 | goto label_2;
| }
0x000464c0 lw t9, -0x7b64(gp) | t9 = *(gp);
| /* fcn.0003ddf8 */
0x000464c4 addiu t9, t9, -0x2208 | t9 += -0x2208;
0x000464c8 move a0, s2 | a0 = s2;
0x000464cc bal 0x3ddf8 | fcn_0003ddf8 ();
0x000464d0 lw gp, 0x20(sp) | gp = *(var_20h);
| if (v0 != 0) {
0x000464d4 bnez v0, 0x46340 | goto label_3;
| }
0x000464d8 lw a0, -0x7b74(gp) | a0 = *((gp - 7901));
0x000464dc b 0x463c0 | goto label_4;
| label_8:
0x000464e0 lw t9, -0x79f0(gp) | t9 = sym.imp.setrlimit;
0x000464e4 move a1, s0 | a1 = s0;
0x000464e8 addiu a0, zero, 5 | a0 = 5;
0x000464ec jalr t9 | t9 ();
0x000464f0 lw gp, 0x20(sp) | gp = *(var_20h);
| if (v0 < 0) {
0x000464f4 bgez v0, 0x46510 |
0x000464f8 lw a0, -0x7b74(gp) | a0 = *((gp - 7901));
0x000464fc lw t9, -0x7b64(gp) | t9 = *(gp);
| /* fcn.0003b220 */
0x00046500 addiu t9, t9, -0x4de0 | t9 += -0x4de0;
| /* str.ERROR:_Unable_to_set_maximum_file_descriptor_limit */
0x00046504 addiu a0, a0, -0x58e8 | a0 += -0x58e8;
0x00046508 bal 0x3b220 | fcn_0003b220 ();
0x0004650c lw gp, 0x20(sp) | gp = *(var_20h);
| }
0x00046510 lw t9, -0x7968(gp) | t9 = sym.imp.getrlimit;
0x00046514 move a1, s0 | a1 = s0;
0x00046518 addiu a0, zero, 5 | a0 = 5;
0x0004651c jalr t9 | t9 ();
0x00046520 lw gp, 0x20(sp) | gp = *(var_20h);
| if (v0 < 0) {
0x00046524 bltz v0, 0x4635c | goto label_5;
| }
0x00046528 lw v1, 0x30(sp) | v1 = *(var_30h);
0x0004652c addiu a1, zero, 0x2800 | a1 = 0x2800;
0x00046530 sltiu v0, v1, 0x2800 | v0 = (v1 < 0x2800) ? 1 : 0;
0x00046534 move a0, a1 | a0 = a1;
| if (v0 != 0) {
0x00046538 movz a0, v1, v0 | a0 = v1;
| }
0x0004653c lw v0, 0x2c(sp) | v0 = *(var_2ch);
0x00046540 sw a0, 0x38(sp) | *(var_38h) = a0;
0x00046544 sltiu a0, v0, 0x2800 | a0 = (v0 < 0x2800) ? 1 : 0;
| if (a0 != 0) {
0x00046548 movz a1, v0, a0 | a1 = v0;
| }
0x0004654c sltiu v1, v1, 0x2800 | v1 = (v1 < 0x2800) ? 1 : 0;
0x00046550 sw a1, 0x34(sp) | *(var_34h) = a1;
| if (v1 == 0) {
0x00046554 bnez v1, 0x46564 |
0x00046558 sltiu v0, v0, 0x2800 | v0 = (v0 < 0x2800) ? 1 : 0;
0x0004655c lw t9, -0x7968(gp) | t9 = sym.imp.getrlimit;
| if (v0 == 0) {
0x00046560 beqz v0, 0x46598 | goto label_12;
| }
| }
0x00046564 lw t9, -0x79f0(gp) | t9 = sym.imp.setrlimit;
0x00046568 addiu a1, sp, 0x34 | a1 = sp + 0x34;
0x0004656c addiu a0, zero, 5 | a0 = 5;
0x00046570 jalr t9 | t9 ();
0x00046574 lw gp, 0x20(sp) | gp = *(var_20h);
| if (v0 < 0) {
0x00046578 bgez v0, 0x46594 |
0x0004657c lw a0, -0x7b74(gp) | a0 = *((gp - 7901));
0x00046580 lw t9, -0x7b64(gp) | t9 = *(gp);
| /* fcn.0003b220 */
0x00046584 addiu t9, t9, -0x4de0 | t9 += -0x4de0;
| /* str.ERROR:_Unable_to_set_maximum_file_descriptor_limit */
0x00046588 addiu a0, a0, -0x58e8 | a0 += -0x58e8;
0x0004658c bal 0x3b220 | fcn_0003b220 ();
0x00046590 lw gp, 0x20(sp) | gp = *(var_20h);
| }
0x00046594 lw t9, -0x7968(gp) | t9 = sym.imp.getrlimit;
| label_12:
0x00046598 move a1, s0 | a1 = s0;
0x0004659c addiu a0, zero, 5 | a0 = 5;
0x000465a0 jalr t9 | t9 ();
0x000465a4 lw gp, 0x20(sp) | gp = *(var_20h);
| if (v0 < 0) {
0x000465a8 bltz v0, 0x4635c | goto label_5;
| }
0x000465ac lw v0, -0x7b64(gp) | v0 = *(gp);
0x000465b0 lw s0, -0x7fd0(gp) | s0 = *(gp);
0x000465b4 addiu v0, v0, 0xec0 | v0 += 0xec0;
0x000465b8 sw v0, 0x14(sp) | *(var_14h) = v0;
0x000465bc lw v0, -0x7f4c(gp) | v0 = *(gp);
0x000465c0 lw t9, -0x7ab8(gp) | t9 = sym.mDNS_GetDomains;
0x000465c4 move a3, zero | a3 = 0;
0x000465c8 lw v0, (v0) | v0 = *(v0);
0x000465cc addiu a2, zero, 2 | a2 = 2;
0x000465d0 addiu a1, s0, 0x2580 | a1 = s0 + 0x2580;
0x000465d4 move a0, s0 | a0 = s0;
0x000465d8 sw zero, 0x18(sp) | *(var_18h) = 0;
0x000465dc sw v0, 0x10(sp) | *(var_10h) = v0;
0x000465e0 jalr t9 | t9 ();
0x000465e4 lw gp, 0x20(sp) | gp = *(var_20h);
0x000465e8 addiu a2, zero, 3 | a2 = 3;
0x000465ec move a0, s0 | a0 = s0;
0x000465f0 lw s2, -0x7b64(gp) | s2 = *(gp);
0x000465f4 lw s3, -0x7fc4(gp) | s3 = *(gp);
| /* fcn.0003b4d8 */
0x000465f8 addiu s2, s2, -0x4b28 | s2 += -0x4b28;
0x000465fc move t9, s2 | t9 = s2;
0x00046600 addiu a1, s3, 0xf14 | a1 = s3 + 0xf14;
0x00046604 bal 0x3b4d8 | fcn_0003b4d8 ();
0x00046608 move a2, zero | a2 = 0;
0x0004660c addiu a1, s3, 0xf14 | a1 = s3 + 0xf14;
0x00046610 move t9, s2 | t9 = s2;
0x00046614 move a0, s0 | a0 = s0;
0x00046618 bal 0x3b4d8 | fcn_0003b4d8 ();
0x0004661c lw gp, 0x20(sp) | gp = *(var_20h);
0x00046620 move a0, zero | a0 = 0;
0x00046624 lw t9, -0x7b64(gp) | t9 = *(gp);
| /* fcn.00040c20 */
0x00046628 addiu t9, t9, 0xc20 | t9 += aav.0x00000c20;
0x0004662c addiu a1, s3, 0xf14 | a1 = s3 + 0xf14;
0x00046630 bal 0x40c20 | fcn_00040c20 ();
0x00046634 lw gp, 0x20(sp) | gp = *(var_20h);
0x00046638 move a0, s0 | a0 = s0;
0x0004663c lw t9, -0x7fdc(gp) | t9 = sym.udsserver_handle_configchange;
0x00046640 b 0x4636c | goto label_6;
| label_9:
0x00046644 lw s4, 0xc0(sp) | s4 = *(var_c0h);
0x00046648 lw s3, 0xbc(sp) | s3 = *(var_bch);
0x0004664c lw s2, 0xb8(sp) | s2 = *(var_b8h);
0x00046650 lw s1, 0xb4(sp) | s1 = *(var_b4h);
0x00046654 lw s0, 0xb0(sp) | s0 = *(var_b0h);
0x00046658 addiu sp, sp, 0xc8 |
0x0004665c jr ra | return v0;
| }
[*] Function fprintf used 1 times mdnsd