[*] Binary protection state of mDNSResponderPosix

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


[*] Function strcat tear down of mDNSResponderPosix

    ; assembly                                   | /* r2dec pseudo code output */
                                                 | /* /logs/firmware/unblob_extracted/firmware_extract/4325012-58052244.squashfs_v4_le_extract/usr/bin/mDNSResponderPosix @ 0x32830 */
                                                 | #include <stdint.h>
                                                 |  
    ; (fcn) sym.mDNS_AddRecordToService ()       | void mDNS_AddRecordToService () {
    0x00032830 lui gp, 3                         |     
    0x00032834 addiu gp, gp, -0x7a0              |     
    0x00032838 addu gp, gp, t9                   |     gp += t9;
    0x0003283c addiu sp, sp, -0x60               |     
    0x00032840 lw t9, -0x7da0(gp)                |     t9 = *(gp);
    0x00032844 sw s0, 0x3c(sp)                   |     *(var_3ch) = s0;
    0x00032848 move s0, a1                       |     s0 = a1;
    0x0003284c sw ra, 0x5c(sp)                   |     *(var_5ch) = ra;
    0x00032850 sw gp, 0x28(sp)                   |     *(var_28h) = gp;
    0x00032854 sw s5, 0x50(sp)                   |     *(var_50h) = s5;
    0x00032858 sw s3, 0x48(sp)                   |     *(var_48h) = s3;
    0x0003285c sw s1, 0x40(sp)                   |     *(var_40h) = s1;
    0x00032860 sw s7, 0x58(sp)                   |     *(var_58h) = s7;
    0x00032864 sw s6, 0x54(sp)                   |     *(var_54h) = s6;
    0x00032868 sw s4, 0x4c(sp)                   |     *(var_4ch) = s4;
    0x0003286c sw s2, 0x44(sp)                   |     *(var_44h) = s2;
    0x00032870 lw a1, 0x74(sp)                   |     a1 = *(arg_74h);
    0x00032874 move s3, a0                       |     s3 = a0;
    0x00032878 lw a0, 0x3c0(s0)                  |     a0 = *((s0 + 240));
                                                 |     /* fcn.00019924 */
    0x0003287c addiu t9, t9, -0x66dc             |     t9 += -0x66dc;
    0x00032880 move t0, a3                       |     t0 = a3;
    0x00032884 move s1, a2                       |     s1 = a2;
    0x00032888 bal 0x19924                       |     fcn_00019924 ();
    0x0003288c lw gp, 0x28(sp)                   |     gp = *(var_28h);
    0x00032890 sw zero, (a2)                     |     *(a2) = 0;
    0x00032894 sw v0, 0x18(sp)                   |     *(var_18h) = v0;
    0x00032898 lw v1, -0x7cc8(gp)                |     v1 = *(gp);
    0x0003289c addiu v0, zero, 2                 |     v0 = 2;
    0x000328a0 sw v0, 0x14(sp)                   |     *(var_14h) = v0;
    0x000328a4 lw v0, 0x70(sp)                   |     v0 = *(arg_70h);
    0x000328a8 addiu v1, v1, 0x2d1c              |     v1 += 0x2d1c;
    0x000328ac sw v1, 0x1c(sp)                   |     *(var_1ch) = v1;
    0x000328b0 sw v0, 0x10(sp)                   |     *(var_10h) = v0;
    0x000328b4 sw s0, 0x20(sp)                   |     *(var_20h) = s0;
    0x000328b8 lhu a3, 0xe(a2)                   |     a3 = *((a2 + 7));
    0x000328bc lw t9, -0x7ef0(gp)                |     t9 = sym.mDNS_SetupResourceRecord;
    0x000328c0 addiu s5, a2, 8                   |     s5 = a2 + 8;
    0x000328c4 lw a2, 0x3c0(s0)                  |     a2 = *((s0 + 240));
    0x000328c8 move a1, t0                       |     a1 = t0;
    0x000328cc move a0, s5                       |     a0 = s5;
    0x000328d0 jalr t9                           |     t9 ();
    0x000328d4 lw gp, 0x28(sp)                   |     gp = *(var_28h);
    0x000328d8 lw a0, 0x748(s0)                  |     a0 = *((s0 + 466));
    0x000328dc lw t9, -0x7eec(gp)                |     t9 = sym.DomainNameLengthLimit;
    0x000328e0 addiu a1, a0, 0x100               |     a1 = a0 + aav.0x00000100;
    0x000328e4 jalr t9                           |     t9 ();
    0x000328e8 sltiu v1, v0, 0x101               |     v1 = (v0 < 0x101) ? 1 : 0;
    0x000328ec lw gp, 0x28(sp)                   |     gp = *(var_28h);
                                                 |     if (v1 == 0) {
    0x000328f0 beqz v1, 0x329c4                  |         goto label_6;
                                                 |     }
    0x000328f4 lw t9, -0x7fac(gp)                |     t9 = sym.mDNSPlatformMemCopy;
    0x000328f8 lw a1, 0x748(s0)                  |     a1 = *((s0 + 466));
    0x000328fc move a2, v0                       |     a2 = v0;
    0x00032900 addiu a0, s1, 0x180               |     a0 = s1 + aav.0x00000180;
    0x00032904 jalr t9                           |     t9 ();
    0x00032908 lw gp, 0x28(sp)                   |     gp = *(var_28h);
                                                 |     do {
    0x0003290c lw s4, -0x7fd8(gp)                |         s4 = *((gp - 8182));
    0x00032910 lw t9, -0x7e08(gp)                |         t9 = sym.mDNS_Lock_;
                                                 |         /* str.mDNS_AddRecordToService */
    0x00032914 addiu a1, s4, -0x74e8             |         a1 = s4 + -0x74e8;
    0x00032918 move a0, s3                       |         a0 = s3;
    0x0003291c jalr t9                           |         t9 ();
    0x00032920 lhu v1, 0xe(s1)                   |         v1 = *((s1 + 7));
    0x00032924 addiu v0, zero, 0x10              |         v0 = 0x10;
    0x00032928 lw gp, 0x28(sp)                   |         gp = *(var_28h);
                                                 |         if (v1 != v0) {
    0x0003292c bne v1, v0, 0x329cc               |             goto label_7;
                                                 |         }
    0x00032930 lbu v0, 0xab0(s0)                 |         v0 = *((s0 + 2736));
    0x00032934 andi v0, v0, 0x32                 |         v0 &= 0x32;
    0x00032938 addiu s2, s0, 0xab0               |         s2 = s0 + 0xab0;
                                                 |         if (v0 != 0) {
    0x0003293c bnez v0, 0x329e8                  |             goto label_4;
                                                 |         }
                                                 | label_1:
    0x00032940 lw v0, 0xc(s0)                    |         v0 = *((s0 + 3));
                                                 | label_0:
    0x00032944 lhu a0, 0xe(v0)                   |         a0 = *((v0 + 7));
                                                 |         if (v0 == 0) {
    0x00032948 bnel v0, zero, 0x32a44            |             goto label_8;
                                                 |         }
                                                 | label_3:
    0x0003294c lw v0, 0xc(s0)                    |         v0 = *((s0 + 3));
                                                 | label_2:
    0x00032950 addiu s2, s0, 0xc                 |         s2 = s0 + 0xc;
                                                 | label_5:
    0x00032954 move s2, v0                       |         s2 = v0;
                                                 |         if (v0 == 0) {
    0x00032958 bnel v0, zero, 0x32a64            |             goto label_9;
                                                 |         }
    0x0003295c lw t9, -0x7cc4(gp)                |         t9 = sym.mDNS_Register_internal;
    0x00032960 addiu s0, s0, 0x728               |         s0 += 0x728;
    0x00032964 sw s0, 0x40(s1)                   |         *((s1 + 16)) = s0;
    0x00032968 move a1, s5                       |         a1 = s5;
    0x0003296c move a0, s3                       |         a0 = s3;
    0x00032970 bal 0x20160                       |         sym_mDNS_Register_internal ();
    0x00032974 lw gp, 0x28(sp)                   |         gp = *(var_28h);
                                                 |         if (v0 == 0) {
    0x00032978 bnez v0, 0x32980                  |             
    0x0003297c sw s1, (s2)                       |             *(s2) = s1;
                                                 |         }
    0x00032980 lw t9, -0x7e04(gp)                |         t9 = sym.mDNS_Unlock_;
    0x00032984 sw v0, 0x34(sp)                   |         *(var_34h) = v0;
                                                 |         /* str.mDNS_AddRecordToService */
    0x00032988 addiu a1, s4, -0x74e8             |         a1 = s4 + -0x74e8;
    0x0003298c move a0, s3                       |         a0 = s3;
    0x00032990 jalr t9                           |         t9 ();
    0x00032994 lw ra, 0x5c(sp)                   |         ra = *(var_5ch);
    0x00032998 lw v0, 0x34(sp)                   |         v0 = *(var_34h);
    0x0003299c lw s7, 0x58(sp)                   |         s7 = *(var_58h);
    0x000329a0 lw s6, 0x54(sp)                   |         s6 = *(var_54h);
    0x000329a4 lw s5, 0x50(sp)                   |         s5 = *(var_50h);
    0x000329a8 lw s4, 0x4c(sp)                   |         s4 = *(var_4ch);
    0x000329ac lw s3, 0x48(sp)                   |         s3 = *(var_48h);
    0x000329b0 lw s2, 0x44(sp)                   |         s2 = *(var_44h);
    0x000329b4 lw s1, 0x40(sp)                   |         s1 = *(var_40h);
    0x000329b8 lw s0, 0x3c(sp)                   |         s0 = *(var_3ch);
    0x000329bc addiu sp, sp, 0x60                |         
    0x000329c0 jr ra                             |         return v0;
                                                 | label_6:
    0x000329c4 sb zero, 0x180(s1)                |         *(s1) = 0;
    0x000329c8 b 0x3290c                         |         
                                                 |     } while (1);
                                                 | label_7:
    0x000329cc addiu v0, zero, 0x21              |     v0 = 0x21;
    0x000329d0 lw v0, 0xc(s0)                    |     v0 = *((s0 + 3));
                                                 |     if (v1 == v0) {
    0x000329d4 bnel v1, v0, 0x32944              |         goto label_0;
                                                 |     }
    0x000329d8 lbu v0, 0x72c(s0)                 |     v0 = *((s0 + 1836));
    0x000329dc andi v0, v0, 0x32                 |     v0 &= 0x32;
    0x000329e0 addiu s2, s0, 0x72c               |     s2 = s0 + 0x72c;
                                                 |     if (v0 == 0) {
    0x000329e4 beqz v0, 0x32940                  |         goto label_1;
                                                 |     }
                                                 | label_4:
    0x000329e8 lw s6, 0x14(s1)                   |     s6 = *((s1 + 5));
    0x000329ec lw s7, 8(s2)                      |     s7 = *((s2 + 2));
                                                 |     if (s6 == s7) {
    0x000329f0 beql s6, s7, 0x32950              |         goto label_2;
                                                 |     }
    0x000329f4 lw v0, 0xc(s0)                    |     v0 = *((s0 + 3));
    0x000329f8 lw a1, 0x2c(s1)                   |     a1 = *((s1 + 11));
    0x000329fc lw t9, -0x7e1c(gp)                |     t9 = sym.GetRRDisplayString_rdb;
    0x00032a00 addiu a2, s3, 0x2f                |     a2 = s3 + 0x2f;
    0x00032a04 addiu a1, a1, 4                   |     a1 += 4;
    0x00032a08 addiu a0, s1, 0xc                 |     a0 = s1 + 0xc;
    0x00032a0c bal 0x12af0                       |     sym_GetRRDisplayString_rdb ();
    0x00032a10 lw gp, 0x28(sp)                   |     gp = *(var_28h);
    0x00032a14 sw v0, 0x10(sp)                   |     *(var_10h) = v0;
    0x00032a18 move a3, s7                       |     a3 = s7;
    0x00032a1c lw a1, -0x7fc0(gp)                |     a1 = *(gp);
    0x00032a20 lw t9, -0x7f74(gp)                |     t9 = sym.LogMsgWithLevel;
    0x00032a24 move a2, s6                       |     a2 = s6;
                                                 |     /* str.mDNS_AddRecordToService:_Correcting_TTL_from__4d_to__4d_for__s */
    0x00032a28 addiu a1, a1, 0x6740              |     a1 += 0x6740;
    0x00032a2c addiu a0, zero, 1                 |     a0 = 1;
    0x00032a30 jalr t9                           |     t9 ();
    0x00032a34 lw v0, 8(s2)                      |     v0 = *((s2 + 2));
    0x00032a38 lw gp, 0x28(sp)                   |     gp = *(var_28h);
    0x00032a3c sw v0, 0x14(s1)                   |     *((s1 + 5)) = v0;
    0x00032a40 b 0x3294c                         |     goto label_3;
                                                 | label_8:
    0x00032a44 lw v0, (v0)                       |     v0 = *(v0);
                                                 |     if (a0 == v1) {
    0x00032a48 bnel a0, v1, 0x32944              |         goto label_0;
                                                 |     }
    0x00032a4c lbu a0, 0xc(v0)                   |     a0 = *((v0 + 12));
    0x00032a50 andi a0, a0, 0x32                 |     a0 &= 0x32;
                                                 |     if (a0 == 0) {
    0x00032a54 beql a0, zero, 0x32944            |         goto label_0;
                                                 |     }
    0x00032a58 lw v0, (v0)                       |     v0 = *(v0);
    0x00032a5c addiu s2, v0, 0xc                 |     s2 = v0 + 0xc;
    0x00032a60 b 0x329e8                         |     goto label_4;
                                                 | label_9:
    0x00032a64 lw v0, (v0)                       |     v0 = *(v0);
    0x00032a68 b 0x32954                         |     goto label_5;
                                                 | }

[*] Function strcat used 1 times mDNSResponderPosix