[*] 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