[*] Binary protection state of mdnsd
Full RELRO Canary found NX enabled PIE enabled No RPATH No RUNPATH No Symbols
[*] Function printf tear down of mdnsd
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/sbin/mdnsd @ 0x204c */
| #include <stdint.h>
|
; (fcn) fcn.0000204c () | void fcn_0000204c (char * arg1, int16_t arg2, char * arg3, int16_t arg4) {
| int16_t var_0h;
| int16_t var_ch_3;
| int16_t var_10h_2;
| int16_t var_0h_2;
| int16_t var_24h_3;
| char * src;
| int16_t var_2ah;
| int16_t var_2ch;
| int16_t var_30h_2;
| int16_t var_40h;
| int16_t var_44h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x0000204c push.w {r4, r5, r6, r7, r8, sb, sl, lr} |
0x00002050 mov r8, r2 | r8 = r2;
0x00002052 ldr.w r2, [pc, 0] | r2 = *(0x00002054);
0x00002054 movs r0, 0 | r0 = 0;
0x00002056 movs r0, r0 |
0x00002058 sub sp, 0x48 |
0x0000205a ldr.w r3, [pc, 0x528] |
0x0000205e add r2, pc | r2 += pc;
0x00002060 ldr.w sb, [pc, 0x524] |
0x00002064 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x00002066 add sb, pc | sb = 0x45f2;
0x00002068 ldr r3, [r3] | r3 = *(0x2586);
0x0000206a str r3, [sp, 0x44] | var_44h = r3;
0x0000206c mov.w r3, 0 | r3 = 0;
0x0000206e lsls r0, r0, 0xc | r0 <<= 0xc;
0x00002070 cmp r0, 0 |
| if (r0 == 0) {
0x00002072 beq.w 0x2504 | goto label_23;
| }
0x00002074 strh r7, [r0, 0x12] | *((r0 + 0x12)) = r7;
0x00002076 cmp r4, 0 |
| if (r4 == 0) {
0x00002078 beq.w 0x2552 | goto label_24;
| }
0x0000207c ldr r3, [r4] | r3 = *(r4);
0x0000207e adds r3, 1 | r3++;
| if (r3 != 1) {
0x00002080 bne.w 0x253c | goto label_25;
| }
0x00002084 mov r6, r0 | r6 = r0;
0x00002086 ldrh r0, [r0] | r0 = *(r0);
0x00002088 uxth.w sl, r1 | sl = (int16_t) r1;
0x0000208c mov r7, r1 | r7 = r1;
0x0000208e cmp r0, 2 |
| if (r0 == 2) {
0x00002090 beq 0x20bc | goto label_26;
| }
0x00002092 cmp r0, 0xa |
0x00002094 it ne |
| if (r0 == 0xa) {
0x00002096 movne r5, 0x16 | r5 = 0x16;
| }
0x00002098 beq 0x20bc |
| while (ip != -1) {
| label_1:
0x0000209a ldr.w r2, [pc, 0x4f0] |
0x0000209e ldr.w r3, [pc, 0x4e4] | r3 = *(0x2586);
0x000020a2 add r2, pc | r2 = 0x4634;
0x000020a4 ldr r3, [r2, r3] | r3 = *(0x4634);
0x000020a6 ldr r2, [r3] | r2 = *(0x4634);
0x000020a8 ldr r3, [sp, 0x44] | r3 = var_44h;
0x000020aa eors r2, r3 | r2 ^= r3;
0x000020ac mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x000020b0 bne.w 0x2538 | goto label_27;
| }
0x000020b4 mov r0, r5 | r0 = r5;
0x000020b6 add sp, 0x48 |
0x000020b8 pop.w {r4, r5, r6, r7, r8, sb, sl, pc} |
| label_26:
0x000020bc movs r2, 0x11 | r2 = 0x11;
0x000020be movs r1, 2 | r1 = 2;
0x000020c0 blx 0x152c | r0 = strncmp (r0, r1, r2);
0x000020c4 cmp r0, 0 |
0x000020c6 str r0, [r4] | *(r4) = r0;
| if (r0 < 0) {
0x000020c8 blt 0x211a | goto label_28;
| }
| label_0:
0x000020ca cmp.w sl, 0 |
| if (sl != 0) {
0x000020ce bne 0x215a | goto label_29;
| }
0x000020d0 ldrh r3, [r6] | r3 = *(r6);
0x000020d2 cmp r3, 2 |
| if (r3 == 2) {
0x000020d4 beq.w 0x22d4 | goto label_30;
| }
0x000020d8 cmp r3, 0xa |
| if (r3 == 0xa) {
0x000020da beq 0x2188 | goto label_31;
| }
| label_5:
0x000020dc movs r2, 0 | r2 = 0;
0x000020de ldr r0, [r4] | r0 = *(r4);
0x000020e0 movs r1, 3 | r1 = 3;
0x000020e2 blx 0x143c | r0 = printf_chk ()
0x000020e6 subs r2, r0, 0 | r2 = r0 - 0;
| if (r2 >= r0) {
0x000020e8 bge.w 0x241e | goto label_32;
| }
| label_9:
0x000020ec blx 0x1424 | r0 = memset (r0, r1, r2);
0x000020f0 ldr r5, [r0] | r5 = *(r0);
| label_8:
0x000020f2 ldr.w ip, [r4] | ip = *(r4);
| if (r5 != 0) {
0x000020f6 cbnz r5, 0x2138 | goto label_4;
| }
0x000020f8 cmp.w ip, -1 |
0x000020fc bne 0x209a |
| }
0x000020fe ldr.w r3, [pc, 0x490] |
0x00002102 mov.w r2, 0x4b8 | r2 = 0x4b8;
0x00002106 ldr.w r1, [pc, 0x48c] |
0x0000210a ldr.w r0, [pc, 0x48c] |
0x0000210e add r3, pc | r3 = 0x46a4;
0x00002110 add r1, pc | r1 = 0x46aa;
0x00002112 adds r3, 0x2c | r3 += 0x2c;
0x00002114 add r0, pc | r0 = 0x46b2;
0x00002116 blx 0x15b4 | fcn_000015b4 ();
| label_28:
0x0000211a blx 0x131c | strcasecmp (r0, r1);
0x0000211e ldrh r3, [r6] | r3 = *(r6);
0x00002120 ldr r5, [r0] | r5 = *(r0);
0x00002122 cmp r3, 2 |
| if (r3 == 2) {
0x00002124 beq 0x2152 | goto label_33;
| }
0x00002126 ldr.w r0, [pc, 0x474] |
0x0000212a add r0, pc | r0 = 0x46cc;
| label_2:
0x0000212c blx 0x1340 | sigaction ();
0x00002130 cmp r5, 0 |
| if (r5 == 0) {
0x00002132 beq 0x20ca | goto label_0;
| }
| label_3:
0x00002134 ldr.w ip, [r4] | ip = *(r4);
| label_4:
0x00002138 cmp.w ip, -1 |
| if (ip == -1) {
0x0000213c beq 0x209a | goto label_1;
| }
0x0000213e mov r0, ip | r0 = ip;
0x00002140 blx 0x1584 | r0 = fcn_00001584 ();
0x00002144 cmp r0, 0 |
| if (r0 != 0) {
0x00002146 bne.w 0x2568 | goto label_34;
| }
0x0000214a mov.w r3, -1 | r3 = -1;
0x0000214e str r3, [r4] | *(r4) = r3;
0x00002150 b 0x209a | goto label_1;
| label_33:
0x00002152 ldr.w r0, [pc, 0x44c] |
0x00002156 add r0, pc | r0 = 0x46fc;
0x00002158 b 0x212c | goto label_2;
| label_29:
0x0000215a ldr.w r3, [pc, 0x448] |
0x0000215e movs r2, 4 | r2 = 4;
0x00002160 str r2, [sp] | *(sp) = r2;
0x00002162 movs r1, 1 | r1 = 1;
0x00002164 ldr r0, [r4] | r0 = *(r4);
0x00002166 movs r2, 2 | r2 = 2;
0x00002168 add r3, pc | r3 = 0x4712;
0x0000216a adds r3, 0x38 | r3 += 0x38;
0x0000216c blx 0x11f4 | fcn_000011f4 ();
0x0000216e strex lr, r1, [r2, 0x14] | __asm ("strex lr, r1, [r2, 0x14]");
| if (r3 < 0x38) {
0x00002172 blt.w 0x240e | goto label_35;
| }
0x00002174 strh r4, [r1, 0xa] | *((r1 + 0xa)) = r4;
0x00002176 ldrh r3, [r6] | r3 = *(r6);
0x00002178 cmp r3, 2 |
| if (r3 == 2) {
0x0000217a beq.w 0x22ce | goto label_36;
| }
0x0000217c strh r0, [r5, 4] | *((r5 + 4)) = r0;
0x0000217e cmp r3, 0xa |
| if (r3 != 0xa) {
0x00002180 bne.w 0x23de | goto label_37;
| }
0x00002184 cmp r5, 0 |
| if (r5 != 0) {
0x00002186 bne 0x2134 | goto label_3;
| }
| label_31:
0x00002188 ldr.w r3, [pc, 0x41c] |
0x0000218c movs r2, 4 | r2 = 4;
0x0000218e str r2, [sp] | *(sp) = r2;
0x00002190 movs r1, 0x29 | r1 = 0x29;
0x00002192 ldr r0, [r4] | r0 = *(r4);
0x00002194 movs r2, 0x31 | r2 = 0x31;
0x00002196 add r3, pc | r3 = 0x4742;
0x00002198 adds r3, 0x38 | r3 += 0x38;
0x0000219a blx 0x11f4 | r0 = fcn_000011f4 ();
0x0000219e subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 < r0) {
0x000021a0 blt.w 0x2476 | goto label_38;
| }
| label_14:
0x000021a4 ldr.w ip, [r4] | ip = *(r4);
0x000021a8 cmp r5, 0 |
| if (r5 != 0) {
0x000021aa bne 0x2138 | goto label_4;
| }
0x000021ac ldr r3, [pc, 0x3fc] |
0x000021ae movs r2, 4 | r2 = 4;
0x000021b0 str r2, [sp] | *(sp) = r2;
0x000021b2 mov r0, ip | r0 = ip;
0x000021b4 movs r2, 0x33 | r2 = 0x33;
0x000021b6 movs r1, 0x29 | r1 = 0x29;
0x000021b8 add r3, pc | r3 = 0x4768;
0x000021ba adds r3, 0x38 | r3 += 0x38;
0x000021bc blx 0x11f4 | r0 = fcn_000011f4 ();
0x000021c0 subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 < r0) {
0x000021c2 blt.w 0x24c0 | goto label_39;
| }
| label_18:
0x000021c6 subs.w r3, sl, 0 | r3 = sl - 0;
0x000021ca ldr.w ip, [r4] | ip = *(r4);
0x000021ce it ne |
| if (r3 == sl) {
0x000021d0 movne r3, 1 | r3 = 1;
| }
0x000021d2 cmp r5, 0 |
0x000021d4 it ne |
| if (r5 == 0) {
0x000021d6 movne r3, 0 | r3 = 0;
| }
| if (r3 == 0) {
0x000021d8 cbz r3, 0x2228 | goto label_40;
| }
0x000021da ldr r3, [pc, 0x3d4] | r3 = *(0x25b2);
0x000021dc movs r6, 0x14 | r6 = 0x14;
0x000021de add.w r5, sp, r6 | r5 = sp + r6;
0x000021e2 ldr.w r3, [sb, r3] | r3 = *((sb + r3));
0x000021e6 str r6, [sp] | *(sp) = r6;
0x000021e8 str.w r8, [sp, 0x24] | __asm ("str.w r8, [var_24h_3]");
0x000021ec adds r3, 4 | r3 += 4;
0x000021ee ldm r3, {r0, r1, r2, r3} | r0 = *(r3);
| r1 = *((r3 + 4));
| r2 = *((r3 + 8));
| r3 = *((r3 + 12));
0x000021f0 stm.w r5, {r0, r1, r2, r3} | *(r5) = r0;
| *((r5 + 4)) = r1;
| *((r5 + 8)) = r2;
| *((r5 + 12)) = r3;
0x000021f4 mov r3, r5 | r3 = r5;
0x000021f6 mov r2, r6 | r2 = r6;
0x000021f8 mov r0, ip | r0 = ip;
0x000021fa movs r1, 0x29 | r1 = 0x29;
0x000021fc blx 0x11f4 | r0 = fcn_000011f4 ();
0x00002200 subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 < r0) {
0x00002202 blt.w 0x23e6 | goto label_41;
| }
| label_6:
0x00002206 cmp r5, 0 |
| if (r5 != 0) {
0x00002208 bne 0x2134 | goto label_3;
| }
0x0000220a movs r3, 4 | r3 = 4;
0x0000220c movs r2, 0x11 | r2 = 0x11;
0x0000220e str r3, [sp] | *(sp) = r3;
0x00002210 movs r1, 0x29 | r1 = 0x29;
0x00002212 ldr r0, [r4] | r0 = *(r4);
0x00002214 add r3, sp, 0xc | r3 += var_ch_3;
0x00002216 str.w r8, [sp, 0xc] | __asm ("str.w r8, [var_ch_3]");
0x0000221a blx 0x11f4 | r0 = fcn_000011f4 ();
0x0000221e subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 < r0) {
0x00002220 blt.w 0x2486 | goto label_42;
| }
| label_15:
0x00002224 ldr.w ip, [r4] | ip = *(r4);
| label_40:
0x00002228 cmp r5, 0 |
| if (r5 != 0) {
0x0000222a bne 0x2138 | goto label_4;
| }
0x0000222c ldr r3, [pc, 0x384] |
0x0000222e movs r2, 4 | r2 = 4;
0x00002230 str r2, [sp] | *(sp) = r2;
0x00002232 mov r0, ip | r0 = ip;
0x00002234 movs r2, 0x1a | r2 = 0x1a;
0x00002236 movs r1, 0x29 | r1 = 0x29;
0x00002238 add r3, pc | r3 = 0x47f0;
0x0000223a adds r3, 0x38 | r3 += 0x38;
0x0000223c blx 0x11f4 | r0 = fcn_000011f4 ();
0x00002240 subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 < r0) {
0x00002242 blt.w 0x2498 | goto label_43;
| }
| label_16:
0x00002246 ldr.w ip, [r4] | ip = *(r4);
0x0000224a cmp r5, 0 |
| if (r5 != 0) {
0x0000224c bne.w 0x2138 | goto label_4;
| }
0x00002250 ldr r3, [pc, 0x364] |
0x00002252 movs r2, 4 | r2 = 4;
0x00002254 str r2, [sp] | *(sp) = r2;
0x00002256 mov r0, ip | r0 = ip;
0x00002258 movs r2, 0x10 | r2 = 0x10;
0x0000225a movs r1, 0x29 | r1 = 0x29;
0x0000225c add r3, pc | r3 = 0x4818;
0x0000225e adds r3, 0x3c | r3 += 0x3c;
0x00002260 blx 0x11f4 | r0 = fcn_000011f4 ();
0x00002264 subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 < r0) {
0x00002266 blt.w 0x24d0 | goto label_44;
| }
| label_19:
0x0000226a ldr.w ip, [r4] | ip = *(r4);
0x0000226e cmp r5, 0 |
| if (r5 != 0) {
0x00002270 bne.w 0x2138 | goto label_4;
| }
0x00002274 ldr r6, [pc, 0x344] |
0x00002276 movs r3, 1 | r3 = 1;
0x00002278 str r3, [sp] | *(sp) = r3;
0x0000227a mov r0, ip | r0 = ip;
0x0000227c movs r2, 0x12 | r2 = 0x12;
0x0000227e movs r1, 0x29 | r1 = 0x29;
0x00002280 add r6, pc | r6 = 0x4840;
0x00002282 add.w r3, r6, 0x40 | r3 = r6 + 0x40;
0x00002286 blx 0x11f4 | r0 = fcn_000011f4 ();
0x0000228a subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 < r0) {
0x0000228c blt.w 0x23f6 | goto label_45;
| }
| label_7:
0x00002290 cmp r5, 0 |
| if (r5 != 0) {
0x00002292 bne.w 0x2134 | goto label_3;
| }
0x00002296 movs r3, 0xa | r3 = 0xa;
0x00002298 str r5, [sp, 0x2c] | var_2ch = r5;
0x0000229a strh.w r3, [sp, 0x28] | src = r3;
0x0000229e ldr r3, [pc, 0x320] | r3 = *(0x25c2);
0x000022a0 str r5, [sp, 0x40] | var_40h = r5;
0x000022a2 add r5, sp, 0x30 | r5 += var_30h_2;
0x000022a4 strh.w r7, [sp, 0x2a] | var_2ah = r7;
0x000022a8 ldr.w r3, [sb, r3] | r3 = *((sb + r3));
0x000022ac ldm r3, {r0, r1, r2, r3} | r0 = *(r3);
| r1 = *((r3 + 4));
| r2 = *((r3 + 8));
| r3 = *((r3 + 12));
0x000022ae stm.w r5, {r0, r1, r2, r3} | *(r5) = r0;
| *((r5 + 4)) = r1;
| *((r5 + 8)) = r2;
| *((r5 + 12)) = r3;
0x000022b0 movs r7, r1 | r7 = r1;
0x000022b2 movs r2, 0x1c | r2 = 0x1c;
0x000022b4 ldr r0, [r4] | r0 = *(r4);
0x000022b6 add r1, sp, 0x28 | r1 += src;
0x000022b8 blx 0x1430 | r0 = strncpy (r0, r1, r2);
0x000022bc subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 >= r0) {
0x000022be bge.w 0x23de | goto label_37;
| }
0x000022c2 blx 0x1424 | r0 = memset (r0, r1, r2);
0x000022c6 mov r3, r0 | r3 = r0;
0x000022c8 ldr r0, [pc, 0x2f8] |
0x000022ca add r0, pc | r0 = 0x4892;
0x000022cc b 0x23cc | goto label_46;
| label_36:
0x000022ce cmp r5, 0 |
| if (r5 != 0) {
0x000022d0 bne.w 0x2134 | goto label_3;
| }
| label_30:
0x000022d4 ldr r3, [pc, 0x2f0] |
0x000022d6 movs r2, 4 | r2 = 4;
0x000022d8 str r2, [sp] | *(sp) = r2;
0x000022da movs r1, 0 | r1 = 0;
0x000022dc ldr r0, [r4] | r0 = *(r4);
0x000022de movs r2, 8 | r2 = 8;
0x000022e0 add r3, pc | r3 = 0x48ac;
0x000022e2 adds r3, 0x38 | r3 += 0x38;
0x000022e4 blx 0x11f4 | r0 = fcn_000011f4 ();
0x000022e8 subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 < r0) {
0x000022ea blt.w 0x2432 | goto label_47;
| }
| label_10:
0x000022ee ldr.w ip, [r4] | ip = *(r4);
0x000022f2 cmp r5, 0 |
| if (r5 != 0) {
0x000022f4 bne.w 0x2138 | goto label_4;
| }
0x000022f8 ldr r3, [pc, 0x2d0] | r3 = *(0x25cc);
0x000022fa movs r2, 4 | r2 = 4;
0x000022fc str r2, [sp] | *(sp) = r2;
0x000022fe mov r0, ip | r0 = ip;
0x00002300 movs r2, 0xc | r2 = 0xc;
0x00002302 mov r1, r5 | r1 = r5;
0x00002304 movs r0, r0 |
0x00002306 movs r0, r0 |
0x00002308 blx 0x11f4 | fcn_000011f4 ();
0x0000230c cmp.w sl, 0 |
| if (sl == 0) {
0x00002310 beq.w 0x2500 | goto label_48;
| }
0x00002314 ldr r3, [pc, 0x2b8] |
0x00002316 mov r1, r5 | r1 = r5;
0x00002318 movs r2, 0x23 | r2 = 0x23;
0x0000231a ldr.w r3, [sb, r3] | r3 = *((sb + r3));
0x0000231e ldr r3, [r3, 4] | r3 = *(0x25d4);
0x00002320 str r3, [sp, 0xc] | var_ch_3 = r3;
0x00002322 ldr r3, [r6, 4] | r3 = *((r6 + 4));
0x00002324 str r3, [sp, 0x10] | var_10h_2 = r3;
0x00002326 movs r3, 8 | r3 = 8;
0x00002328 str r3, [sp] | *(sp) = r3;
0x0000232a add r3, sp, 0xc | r3 += var_ch_3;
0x0000232c ldr r0, [r4] | r0 = *(r4);
0x0000232e blx 0x11f4 | fcn_000011f4 ();
0x00002330 invalid |
| if (r3 < 8) {
0x00002334 blt.w 0x2466 | goto label_49;
| }
| label_13:
0x00002338 ldr.w ip, [r4] | ip = *(r4);
0x0000233c cmp r5, 0 |
| if (r5 != 0) {
0x0000233e bne.w 0x2138 | goto label_4;
| }
0x00002342 movs r2, 4 | r2 = 4;
0x00002344 mov r1, r5 | r1 = r5;
0x00002346 str r2, [sp] | *(sp) = r2;
0x00002348 adds r3, r6, 4 | r3 = r6 + 4;
0x0000234a mov r0, ip | r0 = ip;
0x0000234c movs r2, 0x20 | r2 = 0x20;
0x0000234e blx 0x11f4 | r0 = fcn_000011f4 ();
0x00002352 subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 < r0) {
0x00002354 blt 0x2454 | goto label_50;
| }
| label_12:
0x00002356 ldr.w ip, [r4] | ip = *(r4);
0x0000235a mov r0, ip | r0 = ip;
0x0000235c cmp r5, 0 |
| if (r5 != 0) {
0x0000235e bne.w 0x2138 | goto label_4;
| }
| label_21:
0x00002362 ldr r3, [pc, 0x270] |
0x00002364 movs r2, 4 | r2 = 4;
0x00002366 str r2, [sp] | *(sp) = r2;
0x00002368 movs r1, 0 | r1 = 0;
0x0000236a movs r2, 2 | r2 = 2;
0x0000236c add r3, pc | r3 = 0x4946;
0x0000236e adds r3, 0x3c | r3 += 0x3c;
0x00002370 blx 0x11f4 | r0 = fcn_000011f4 ();
0x00002374 subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 < r0) {
0x00002376 blt 0x2442 | goto label_51;
| }
| label_11:
0x00002378 ldr.w ip, [r4] | ip = *(r4);
0x0000237c cmp r5, 0 |
| if (r5 != 0) {
0x0000237e bne.w 0x2138 | goto label_4;
| }
0x00002382 ldr r6, [pc, 0x254] |
0x00002384 movs r3, 1 | r3 = 1;
0x00002386 mov r1, r5 | r1 = r5;
0x00002388 str r3, [sp] | *(sp) = r3;
0x0000238a mov r0, ip | r0 = ip;
0x0000238c movs r2, 0x21 | r2 = 0x21;
0x0000238e add r6, pc | r6 = 0x496c;
0x00002390 add.w r3, r6, 0x40 | r3 = r6 + 0x40;
0x00002394 blx 0x11f4 | r0 = fcn_000011f4 ();
0x00002398 subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 < r0) {
0x0000239a blt.w 0x24aa | goto label_52;
| }
| label_17:
0x0000239e ldr.w ip, [r4] | ip = *(r4);
0x000023a2 cmp r5, 0 |
| if (r5 != 0) {
0x000023a4 bne.w 0x2138 | goto label_4;
| }
0x000023a8 movs r3, 2 | r3 = 2;
0x000023aa movs r2, 0x10 | r2 = 0x10;
0x000023ac mov r0, ip | r0 = ip;
0x000023ae add r1, sp, 0x28 | r1 += src;
0x000023b0 str r5, [sp, 0x2c] | var_2ch = r5;
0x000023b2 strh.w r7, [sp, 0x2a] | var_2ah = r7;
0x000023b6 strh.w r3, [sp, 0x28] | src = r3;
0x000023ba blx 0x1430 | r0 = strncpy (r0, r1, r2);
0x000023be subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 < r0) {
0x000023c0 bge 0x23de |
0x000023c2 blx 0x1424 | r0 = memset (r0, r1, r2);
0x000023c6 mov r3, r0 | r3 = r0;
0x000023c8 ldr r0, [pc, 0x210] |
0x000023ca add r0, pc | r0 = 0x49aa;
| label_46:
0x000023cc ldr r5, [r3] | r5 = *(r3);
0x000023ce blx 0x1340 | sigaction ();
0x000023d2 ldr r3, [pc, 0x20c] | r3 = *(0x25e2);
0x000023d4 ldr.w r3, [sb, r3] | r3 = *((sb + r3));
0x000023d8 ldr r0, [r3] | r0 = *(0x25e2);
0x000023da blx 0x1228 | fcn_00001228 ();
| }
| label_37:
0x000023de cmp r5, 0 |
| if (r5 != 0) {
0x000023e0 bne.w 0x2134 | goto label_3;
| }
0x000023e4 b 0x20dc | goto label_5;
| label_41:
0x000023e6 blx 0x1424 | r0 = memset (r0, r1, r2);
0x000023ea ldr r5, [r0] | r5 = *(r0);
0x000023ec ldr r0, [pc, 0x1f4] |
0x000023ee add r0, pc | r0 = 0x49d6;
0x000023f0 blx 0x1340 | sigaction ();
0x000023f4 b 0x2206 | goto label_6;
| label_45:
0x000023f6 blx 0x1424 | r0 = memset (r0, r1, r2);
0x000023fa ldr r5, [r0] | r5 = *(r0);
0x000023fc mov r8, r0 | r8 = r0;
0x000023fe cmp r5, 0x16 |
| if (r5 == 0x16) {
0x00002400 beq.w 0x251a | goto label_53;
| }
| label_22:
0x00002404 ldr r0, [pc, 0x1e0] |
0x00002406 add r0, pc | r0 = 0x49f2;
0x00002408 blx 0x1340 | sigaction ();
0x0000240c b 0x2290 | goto label_7;
| label_35:
0x0000240e blx 0x1424 | r0 = memset (r0, r1, r2);
0x00002412 ldr r5, [r0] | r5 = *(r0);
0x00002414 ldr r0, [pc, 0x1d4] |
0x00002416 add r0, pc | r0 = 0x4a06;
0x00002418 blx 0x1340 | sigaction ();
0x0000241a invalid |
| label_32:
0x0000241e ldr r0, [r4] | r0 = *(r4);
0x00002420 orr r2, r2, 0x800 | r2 |= 0x800;
0x00002424 movs r1, 4 | r1 = 4;
0x00002426 blx 0x143c | r0 = printf_chk ()
0x0000242a subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 >= r0) {
0x0000242c bge.w 0x20f2 | goto label_8;
| }
0x00002430 b 0x20ec | goto label_9;
| label_47:
0x00002432 blx 0x1424 | r0 = memset (r0, r1, r2);
0x00002436 ldr r5, [r0] | r5 = *(r0);
0x00002438 ldr r0, [pc, 0x1b4] |
0x0000243a add r0, pc | r0 = 0x4a2e;
0x0000243c blx 0x1340 | sigaction ();
0x00002440 b 0x22ee | goto label_10;
| label_51:
0x00002442 blx 0x1424 | r0 = memset (r0, r1, r2);
0x00002446 mov r3, r0 | r3 = r0;
0x00002448 ldr r0, [pc, 0x1a8] |
0x0000244a ldr r5, [r3] | r5 = *(r3);
0x0000244c add r0, pc | r0 = 0x4a44;
0x0000244e blx 0x1340 | sigaction ();
0x00002452 b 0x2378 | goto label_11;
| label_50:
0x00002454 blx 0x1424 | r0 = memset (r0, r1, r2);
0x00002458 mov r3, r0 | r3 = r0;
0x0000245a ldr r0, [pc, 0x19c] |
0x0000245c ldr r5, [r3] | r5 = *(r3);
0x0000245e add r0, pc | r0 = 0x4a5c;
0x00002460 blx 0x1340 | sigaction ();
0x00002464 b 0x2356 | goto label_12;
| label_49:
0x00002466 blx 0x1424 | r0 = memset (r0, r1, r2);
0x0000246a ldr r5, [r0] | r5 = *(r0);
0x0000246c ldr r0, [pc, 0x18c] |
0x0000246e add r0, pc | r0 = 0x4a6e;
0x00002470 blx 0x1340 | sigaction ();
0x00002474 b 0x2338 | goto label_13;
| label_38:
0x00002476 blx 0x1424 | r0 = memset (r0, r1, r2);
0x0000247a ldr r5, [r0] | r5 = *(r0);
0x0000247c ldr r0, [pc, 0x180] |
0x0000247e add r0, pc | r0 = 0x4a82;
0x00002480 blx 0x1340 | sigaction ();
0x00002484 b 0x21a4 | goto label_14;
| label_42:
0x00002486 blx 0x1424 | r0 = memset (r0, r1, r2);
0x0000248a mov r3, r0 | r3 = r0;
0x0000248c ldr r0, [pc, 0x174] |
0x0000248e ldr r5, [r3] | r5 = *(r3);
0x00002490 add r0, pc | r0 = 0x4a98;
0x00002492 blx 0x1340 | sigaction ();
0x00002496 b 0x2224 | goto label_15;
| label_43:
0x00002498 blx 0x1424 | r0 = memset (r0, r1, r2);
0x0000249c mov r3, r0 | r3 = r0;
0x0000249e ldr r0, [pc, 0x168] |
0x000024a0 ldr r5, [r3] | r5 = *(r3);
0x000024a2 add r0, pc | r0 = 0x4ab0;
0x000024a4 blx 0x1340 | sigaction ();
0x000024a8 b 0x2246 | goto label_16;
| label_52:
0x000024aa blx 0x1424 | r0 = memset (r0, r1, r2);
0x000024ae ldr r5, [r0] | r5 = *(r0);
0x000024b0 mov r8, r0 | r8 = r0;
0x000024b2 cmp r5, 0x16 |
| if (r5 != 0x16) {
0x000024b4 beq 0x24e2 |
| label_20:
0x000024b6 ldr r0, [pc, 0x154] |
0x000024b8 add r0, pc | r0 = 0x4aca;
0x000024ba blx 0x1340 | sigaction ();
0x000024be b 0x239e | goto label_17;
| label_39:
0x000024c0 blx 0x1424 | r0 = memset (r0, r1, r2);
0x000024c4 ldr r5, [r0] | r5 = *(r0);
0x000024c6 ldr r0, [pc, 0x148] |
0x000024c8 add r0, pc | r0 = 0x4ade;
0x000024ca blx 0x1340 | sigaction ();
0x000024ce b 0x21c6 | goto label_18;
| label_44:
0x000024d0 blx 0x1424 | r0 = memset (r0, r1, r2);
0x000024d4 mov r3, r0 | r3 = r0;
0x000024d6 ldr r0, [pc, 0x13c] |
0x000024d8 ldr r5, [r3] | r5 = *(r3);
0x000024da add r0, pc | r0 = 0x4af4;
0x000024dc blx 0x1340 | sigaction ();
0x000024e0 b 0x226a | goto label_19;
| }
0x000024e2 movs r2, 4 | r2 = 4;
0x000024e4 add.w r3, r6, 0x3c | r3 = r6 + 0x3c;
0x000024e8 str r2, [sp] | *(sp) = r2;
0x000024ea movs r1, 0 | r1 = 0;
0x000024ec ldr r0, [r4] | r0 = *(r4);
0x000024ee movs r2, 0x21 | r2 = 0x21;
0x000024f0 blx 0x11f4 | r0 = fcn_000011f4 ();
0x000024f4 subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 >= r0) {
0x000024f6 bge.w 0x239e | goto label_17;
| }
0x000024fa ldr.w r5, [r8] | r5 = *(r8);
0x000024fe b 0x24b6 | goto label_20;
| label_48:
0x00002500 ldr r0, [r4] | r0 = *(r4);
0x00002502 b 0x2362 | goto label_21;
| label_23:
0x00002504 ldr r3, [pc, 0x110] |
0x00002506 movw r2, 0x3c2 | r2 = 0x3c2;
0x0000250a ldr r1, [pc, 0x110] |
0x0000250c ldr r0, [pc, 0x110] |
0x0000250e add r3, pc | r3 = 0x4b2a;
0x00002510 add r1, pc | r1 = 0x4b32;
0x00002512 adds r3, 0x2c | r3 += 0x2c;
0x00002514 add r0, pc | r0 = 0x4b38;
0x00002516 blx 0x15b4 | fcn_000015b4 ();
| label_53:
0x0000251a movs r2, 4 | r2 = 4;
0x0000251c add.w r3, r6, 0x3c | r3 = r6 + 0x3c;
0x00002520 str r2, [sp] | *(sp) = r2;
0x00002522 movs r1, 0x29 | r1 = 0x29;
0x00002524 ldr r0, [r4] | r0 = *(r4);
0x00002526 movs r2, 0x12 | r2 = 0x12;
0x00002528 blx 0x11f4 | r0 = fcn_000011f4 ();
0x0000252c subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 >= r0) {
0x0000252e bge.w 0x2290 | goto label_7;
| }
0x00002532 ldr.w r5, [r8] | r5 = *(r8);
0x00002536 b 0x2404 | goto label_22;
| label_27:
0x00002538 blx 0x12ec | getrlimit ();
| label_25:
0x0000253c ldr r3, [pc, 0xe4] |
0x0000253e mov.w r2, 0x3c4 | r2 = 0x3c4;
0x00002542 ldr r1, [pc, 0xe4] |
0x00002544 ldr r0, [pc, 0xe4] |
0x00002546 add r3, pc | r3 = 0x4b6e;
0x00002548 add r1, pc | r1 = 0x4b76;
0x0000254a adds r3, 0x2c | r3 += 0x2c;
0x0000254c add r0, pc | r0 = 0x4b7c;
0x0000254e blx 0x15b4 | fcn_000015b4 ();
| label_24:
0x00002552 ldr r3, [pc, 0xdc] |
0x00002554 movw r2, 0x3c3 | r2 = 0x3c3;
0x00002558 ldr r1, [pc, 0xd8] |
0x0000255a ldr r0, [pc, 0xdc] |
0x0000255c add r3, pc | r3 = 0x4b92;
0x0000255e add r1, pc | r1 = 0x4b96;
0x00002560 adds r3, 0x2c | r3 += 0x2c;
0x00002562 add r0, pc | r0 = 0x4ba0;
0x00002564 blx 0x15b4 | fcn_000015b4 ();
| label_34:
0x00002568 ldr r3, [pc, 0xd0] |
0x0000256a movw r2, 0x4b5 | r2 = 0x4b5;
0x0000256e ldr r1, [pc, 0xd0] |
0x00002570 ldr r0, [pc, 0xd0] |
0x00002572 add r3, pc | r3 = 0x4bb2;
0x00002574 add r1, pc | r1 = 0x4bba;
0x00002576 adds r3, 0x2c | r3 += 0x2c;
0x00002578 add r0, pc | r0 = 0x4bc0;
0x0000257a blx 0x15b4 | fcn_000015b4 ();
0x0000257c invalid |
0x00002580 ldr r5, [pc, 0x1e8] | r5 = *(0x276c);
0x00002582 movs r4, r0 | r4 = r0;
0x00002584 lsls r0, r7, 5 | r0 = r7 << 5;
0x00002586 movs r0, r0 |
0x00002588 ldr r5, [pc, 0x1c8] | r5 = *(0x2754);
0x0000258a movs r4, r0 | r4 = r0;
0x0000258c ldr r5, [pc, 0xd8] | r5 = *(0x2668);
0x0000258e movs r4, r0 | r4 = r0;
0x00002590 adds r2, 0x4a | r2 += 0x4a;
0x00002592 movs r3, r0 | r3 = r0;
0x00002594 cmp r2, 0 |
0x00002596 movs r3, r0 | r3 = r0;
0x00002598 cmp r5, 0x38 |
0x0000259a movs r3, r0 | r3 = r0;
0x0000259c cmp r3, 0x4e |
0x0000259e movs r3, r0 | r3 = r0;
0x000025a0 cmp r3, 0x12 |
0x000025a2 movs r3, r0 | r3 = r0;
0x000025a4 adds r1, 0xf0 | r1 += 0xf0;
0x000025a6 movs r3, r0 | r3 = r0;
0x000025a8 adds r1, 0xc2 | r1 += 0xc2;
0x000025aa movs r3, r0 | r3 = r0;
0x000025ac adds r1, 0xa0 | r1 += 0xa0;
0x000025ae movs r3, r0 | r3 = r0;
0x000025b0 lsls r4, r6, 7 | r4 = r6 << 7;
0x000025b2 movs r0, r0 |
0x000025b4 adds r1, 0x20 | r1 += 0x20;
0x000025b6 movs r3, r0 | r3 = r0;
0x000025b8 adds r0, 0xfc | r0 += 0xfc;
0x000025ba movs r3, r0 | r3 = r0;
0x000025bc adds r0, 0xd8 | r0 += 0xd8;
0x000025be movs r3, r0 | r3 = r0;
0x000025c0 lsls r4, r7, 7 | r4 = r7 << 7;
0x000025c2 movs r0, r0 |
0x000025c4 cmp r2, 0x9a |
0x000025c6 movs r3, r0 | r3 = r0;
0x000025c8 adds r0, 0x78 | r0 += 0x78;
0x000025ca movs r3, r0 | r3 = r0;
0x000025cc adds r0, 0x54 | r0 += 0x54;
0x000025ce movs r3, r0 | r3 = r0;
0x000025d0 lsls r0, r6, 7 | r0 = r6 << 7;
0x000025d2 movs r0, r0 |
0x000025d4 cmp r7, 0xec |
0x000025d6 movs r3, r0 | r3 = r0;
0x000025d8 cmp r7, 0xca |
0x000025da movs r3, r0 | r3 = r0;
0x000025dc cmp r1, 0x9a |
0x000025de movs r3, r0 | r3 = r0;
0x000025e0 lsls r4, r3, 6 | r4 = r3 << 6;
0x000025e2 movs r0, r0 |
0x000025e4 cmp r1, 0xbe |
0x000025e6 movs r3, r0 | r3 = r0;
0x000025e8 cmp r2, 0x22 |
0x000025ea movs r3, r0 | r3 = r0;
0x000025ec cmp r0, 0xa6 |
0x000025ee movs r3, r0 | r3 = r0;
0x000025f0 cmp r0, 0x9e |
0x000025f2 movs r3, r0 | r3 = r0;
0x000025f4 cmp r0, 0xe4 |
0x000025f6 movs r3, r0 | r3 = r0;
0x000025f8 cmp r0, 0xb2 |
0x000025fa movs r3, r0 | r3 = r0;
0x000025fc cmp r0, 0x82 |
0x000025fe movs r3, r0 | r3 = r0;
0x00002600 cmp r0, 0xee |
0x00002602 movs r3, r0 | r3 = r0;
0x00002604 cmp r1, 0x3c |
0x00002606 movs r3, r0 | r3 = r0;
0x00002608 cmp r1, 0x4a |
0x0000260a movs r3, r0 | r3 = r0;
0x0000260c cmp r0, 0x8c |
0x0000260e movs r3, r0 | r3 = r0;
0x00002610 cmp r0, 0xc4 |
0x00002612 movs r3, r0 | r3 = r0;
0x00002614 cmp r1, 0x2e |
0x00002616 movs r3, r0 | r3 = r0;
0x00002618 cmp r6, 0x4a |
0x0000261a movs r3, r0 | r3 = r0;
0x0000261c movs r6, 0 | r6 = 0;
0x0000261e movs r3, r0 | r3 = r0;
0x00002620 movs r7, 0x74 | r7 = 0x74;
0x00002622 movs r3, r0 | r3 = r0;
0x00002624 cmp r6, 0x12 |
0x00002626 movs r3, r0 | r3 = r0;
0x00002628 movs r5, 0xc8 | r5 = 0xc8;
0x0000262a movs r3, r0 | r3 = r0;
0x0000262c movs r7, 0x60 | r7 = 0x60;
0x0000262e movs r3, r0 | r3 = r0;
0x00002630 cmp r5, 0xfc |
0x00002632 movs r3, r0 | r3 = r0;
0x00002634 movs r5, 0xb2 | r5 = 0xb2;
0x00002636 movs r3, r0 | r3 = r0;
0x00002638 movs r7, 0x3a | r7 = 0x3a;
0x0000263a movs r3, r0 | r3 = r0;
0x0000263c cmp r5, 0xe6 |
0x0000263e movs r3, r0 | r3 = r0;
0x00002640 movs r5, 0x9c | r5 = 0x9c;
0x00002642 movs r3, r0 | r3 = r0;
0x00002644 movs r6, 0xe8 | r6 = 0xe8;
0x00002646 movs r3, r0 | r3 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/sbin/mdnsd @ 0x3314 */
| #include <stdint.h>
|
; (fcn) fcn.00003314 () | void fcn_00003314 (int16_t arg_50h, int16_t arg_54h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_10h;
| int16_t var_12h;
| int16_t var_14h;
| int16_t var_18h;
| int32_t var_ch;
| int32_t var_ch_2;
| int32_t var_14h_2;
| int32_t var_14h_3;
| int16_t var_2ch;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x00003314 mvnsmi lr, 0xb4000 | __asm ("mvnsmi lr, aav.0x000000ff");
0x00003318 sub sp, 0x34 |
0x0000331a ldr r5, [sp, 0x50] | r5 = *(arg_50h);
0x0000331c mov r6, r3 | r6 = r3;
0x0000331e mov r4, r0 | r4 = r0;
0x00003320 mov r7, r2 | r7 = r2;
0x00003322 ldr r3, [pc, 0x1d4] | r3 = *(0x34fa);
0x00003324 str r5, [r0, 8] | *((r0 + 8)) = r5;
0x00003326 mov r5, r1 | r5 = r1;
0x00003328 ldr r1, [pc, 0x1d0] |
0x0000332a movs r0, 0 | r0 = 0;
0x0000332c strh.w r0, [r4, 0x50] | *((r4 + 0x50)) = r0;
0x0000332e lsls r0, r2, 1 | r0 = r2 << 1;
0x00003330 mov r2, r0 | r2 = r0;
0x00003332 str r0, [r4, 0x54] | *((r4 + 0x54)) = r0;
0x00003334 add r1, pc | r1 = 0x6834;
0x00003336 ldr r0, [r4, 0x28] | r0 = *((r4 + 0x28));
0x00003338 ldr r3, [r1, r3] |
0x0000333a movs r1, 3 | r1 = 3;
0x0000333c ldr.w r8, [pc, 0x1c0] |
0x00003340 ldr r3, [r3] | r3 = *(0x6834);
0x00003342 str r3, [sp, 0x2c] | var_2ch = r3;
0x00003344 mov.w r3, 0 | r3 = 0;
0x00003348 ldr r3, [sp, 0x54] | r3 = *(arg_54h);
0x0000334a add r8, pc | r8 = 0x684e;
0x0000334c str r3, [r4, 0x4c] | *((r4 + 0x4c)) = r3;
0x0000334e blx 0x143c | r0 = printf_chk ()
0x00003352 cmp r0, 0 |
| if (r0 < 0) {
0x00003354 blt.w 0x348c | goto label_3;
| }
0x00003358 orr r2, r0, 0x800 | r2 = r0 | 0x800;
0x0000335c movs r1, 4 | r1 = 4;
0x0000335e ldr r0, [r4, 0x28] | r0 = *((r4 + 0x28));
0x00003360 blx 0x143c | r0 = printf_chk ()
0x00003364 cmp r0, 0 |
| if (r0 < 0) {
0x00003366 blt.w 0x34ac | goto label_4;
| }
| if (r6 != 0) {
0x0000336a cbz r6, 0x338e |
0x0000336c add.w sb, r6, 0x1000 | sb = r6 + 0x1000;
0x00003370 ldr.w r6, [sb, 0x594] | r6 = *((sb + 0x594));
0x00003374 mov r0, r6 | r0 = r6;
0x00003376 blx 0x1418 | fcntl ();
0x0000337a mov r3, r6 | r3 = r6;
0x0000337c str r0, [sp] | *(sp) = r0;
0x0000337e movs r2, 0x19 | r2 = 0x19;
0x00003380 ldr r0, [r4, 0x28] | r0 = *((r4 + 0x28));
0x00003382 movs r1, 1 | r1 = 1;
0x00003384 blx 0x11f4 | r0 = fcn_000011f4 ();
0x00003388 cmp r0, 0 |
| if (r0 < 0) {
0x0000338a blt.w 0x34c8 | goto label_5;
| }
| }
0x0000338e ldr r2, [r5] | r2 = *(r5);
0x00003390 add.w ip, sp, 0x10 |
0x00003394 movs r3, 0 | r3 = 0;
0x00003396 strd r3, r3, [ip, 4] | __asm ("strd r3, r3, [var_14h]");
0x0000339a cmp r2, 4 |
0x0000339c strd r3, r3, [ip, 0xc] | __asm ("strd r3, r3, [var_ch]");
0x000033a0 strd r3, r3, [ip, 0x14] | __asm ("strd r3, r3, [var_14h_2]");
| if (r2 == 4) {
0x000033a4 beq 0x3420 | goto label_6;
| }
0x000033a6 ldr r3, [r5, 0x10] | r3 = *((r5 + 0x10));
0x000033a8 add r6, sp, 0x18 | r6 += var_18h;
0x000033aa ldr r0, [r5, 4] | r0 = *((r5 + 4));
0x000033ac ldr r1, [r5, 8] | r1 = *((r5 + 8));
0x000033ae ldr r2, [r5, 0xc] | r2 = *((r5 + 0xc));
0x000033b0 strh.w r7, [sp, 0x12] | var_12h = r7;
0x000033b4 stm r6!, {r0, r1, r2, r3} | *(r6!) = r0;
| *((r6! + 4)) = r1;
| *((r6! + 8)) = r2;
| *((r6! + 12)) = r3;
0x000033b6 movs r3, 0xa | r3 = 0xa;
0x000033b8 movs r6, 0x1c | r6 = 0x1c;
| label_0:
0x000033ba mov r1, ip | r1 = ip;
0x000033bc mov r2, r6 | r2 = r6;
0x000033be ldr r0, [r4, 0x28] | r0 = *((r4 + 0x28));
0x000033c0 strh.w r3, [sp, 0x10] | var_10h = r3;
0x000033c4 blx 0x159c | r0 = fcn_0000159c ();
0x000033c8 cmp r0, 0 |
| if (r0 >= 0) {
0x000033ca bge 0x340e | goto label_7;
| }
0x000033cc blx 0x1424 | r0 = memset (r0, r1, r2);
0x000033d0 ldr r5, [r0] | r5 = *(r0);
0x000033d2 cmp r5, 0x73 |
| if (r5 == 0x73) {
0x000033d4 beq 0x342e | goto label_8;
| }
0x000033d6 sub.w r3, r5, 0x63 | r3 = r5 - 0x63;
0x000033da cmp r5, 0x71 |
0x000033dc it ne |
| if (r5 != 0x71) {
0x000033de cmpne r3, 1 | __asm ("cmpne r3, 1");
| }
| if (r5 > 0x71) {
0x000033e0 bhi 0x346c | goto label_9;
| }
0x000033e2 ldr r3, [pc, 0x120] |
0x000033e4 ldr.w r3, [r8, r3] | r3 = *((r8 + r3));
0x000033e8 ldr r3, [r3] | r3 = *(0x3506);
| if (r3 != 0) {
0x000033ea cbnz r3, 0x344e | goto label_10;
| }
| label_2:
0x000033ec movw r0, 0xff04 |
0x000033f0 movt r0, 0xfffe | r0 = 0xfffeff04;
| do {
| label_1:
0x000033f4 ldr r2, [pc, 0x110] |
0x000033f6 ldr r3, [pc, 0x100] | r3 = *(0x34fa);
0x000033f8 add r2, pc | r2 = 0x6904;
0x000033fa ldr r3, [r2, r3] | r3 = *(0x6904);
0x000033fc ldr r2, [r3] | r2 = *(0x6904);
0x000033fe ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x00003400 eors r2, r3 | r2 ^= r3;
0x00003402 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00003406 bne 0x34f4 | goto label_11;
| }
0x00003408 add sp, 0x34 |
0x0000340a pop.w {r4, r5, r6, r7, r8, sb, pc} |
0x0000340c strh r0, [r6, 0x1e] | *((r6 + 0x1e)) = r0;
| label_7:
0x0000340e ldr r2, [pc, 0xfc] |
0x00003410 movs r1, 4 | r1 = 4;
0x00003412 ldr r0, [pc, 0xfc] |
0x00003414 add r2, pc | r2 = 0x6926;
0x00003416 add r0, pc | r0 = 0x692c;
0x00003418 bl 0x2f4bc | fcn_0002f4bc ();
0x0000341c movs r0, 0 | r0 = 0;
0x0000341e b 0x33f4 |
| } while (1);
| label_6:
0x00003420 ldr r2, [r5, 4] | r2 = *((r5 + 4));
0x00003422 movs r3, 2 | r3 = 2;
0x00003424 movs r6, 0x10 | r6 = 0x10;
0x00003426 strh.w r7, [sp, 0x12] | var_12h = r7;
0x0000342a str r2, [sp, 0x14] | var_14h = r2;
0x0000342c b 0x33ba | goto label_0;
| label_8:
0x0000342e ldr r2, [pc, 0xe4] |
0x00003430 movs r5, 4 | r5 = 4;
0x00003432 ldr r1, [pc, 0xe4] |
0x00003434 add.w r0, r4, 0xc | r0 = r4 + 0xc;
0x00003438 mov r3, r4 | r3 = r4;
0x0000343a str r5, [sp] | *(sp) = r5;
0x0000343c add r2, pc | r2 = 0x6956;
0x0000343e add r1, pc | r1 = 0x695c;
0x00003440 bl 0x1b78 | fcn_00001b78 (r0, r1, r2, r3, r4);
0x00003444 movw r0, 0xff05 |
0x00003448 movt r0, 0xfffe | r0 = 0xfffeff05;
0x0000344c b 0x33f4 | goto label_1;
| label_10:
0x0000344e mov r0, r5 | r0 = r5;
0x00003450 ldr r4, [r4, 0x28] | r4 = *((r4 + 0x28));
0x00003452 blx 0x13cc | fcn_000013cc ();
0x00003456 ldr r2, [pc, 0xc4] |
0x00003458 movs r1, 5 | r1 = 5;
0x0000345a strd r5, r0, [sp] | __asm ("strd r5, r0, [sp]");
0x0000345e mov r3, r4 | r3 = r4;
0x00003460 ldr r0, [pc, 0xbc] |
0x00003462 add r2, pc | r2 = 0x6984;
0x00003464 add r0, pc | r0 = 0x6988;
0x00003466 bl 0x2f4bc | fcn_0002f4bc ();
0x0000346a b 0x33ec | goto label_2;
| label_9:
0x0000346c mov r0, r5 | r0 = r5;
0x0000346e ldr r4, [r4, 0x28] | r4 = *((r4 + 0x28));
0x00003470 blx 0x13cc | fcn_000013cc ();
0x00003474 ldr r2, [pc, 0xac] |
0x00003476 movs r1, 4 | r1 = 4;
0x00003478 str r0, [sp, 4] | var_4h = r0;
0x0000347a mov r3, r4 | r3 = r4;
0x0000347c ldr r0, [pc, 0xa8] |
0x0000347e add r2, pc | r2 = 0x69a6;
0x00003480 str r6, [sp, 8] | var_8h = r6;
0x00003482 str r5, [sp] | *(sp) = r5;
0x00003484 add r0, pc | r0 = 0x69b0;
0x00003486 bl 0x2f4bc | fcn_0002f4bc ();
0x0000348a b 0x33ec | goto label_2;
| label_3:
0x0000348c blx 0x1424 | r0 = memset (r0, r1, r2);
0x00003490 ldr r0, [r0] | r0 = *(r0);
0x00003492 blx 0x13cc | fcn_000013cc ();
0x00003496 ldr r2, [pc, 0x94] |
0x00003498 mov r3, r0 | r3 = r0;
0x0000349a ldr r0, [pc, 0x94] |
0x0000349c movs r1, 4 | r1 = 4;
0x0000349e add r2, pc | r2 = 0x69d0;
0x000034a0 add r0, pc | r0 = 0x69d6;
0x000034a2 bl 0x2f4bc | fcn_0002f4bc ();
| do {
0x000034a6 mvn r0, 0x10000 | r0 = ~0x10000;
0x000034aa b 0x33f4 | goto label_1;
| label_4:
0x000034ac blx 0x1424 | r0 = memset (r0, r1, r2);
0x000034b0 ldr r0, [r0] | r0 = *(r0);
0x000034b2 blx 0x13cc | fcn_000013cc ();
0x000034b6 ldr r2, [pc, 0x7c] |
0x000034b8 mov r3, r0 | r3 = r0;
0x000034ba ldr r0, [pc, 0x7c] |
0x000034bc movs r1, 4 | r1 = 4;
0x000034be add r2, pc | r2 = 0x69f8;
0x000034c0 add r0, pc | r0 = 0x69fe;
0x000034c2 bl 0x2f4bc | fcn_0002f4bc ();
0x000034c6 b 0x34a6 |
| } while (1);
| label_5:
0x000034c8 blx 0x1424 | r0 = memset (r0, r1, r2);
0x000034cc ldr r0, [r0] | r0 = *(r0);
0x000034ce ldr.w r5, [sb, 0x594] | r5 = *((sb + 0x594));
0x000034d2 blx 0x13cc | fcn_000013cc ();
0x000034d6 ldr r2, [pc, 0x64] |
0x000034d8 mov r4, r0 | r4 = r0;
0x000034da ldr r0, [pc, 0x64] |
0x000034dc mov r3, r5 | r3 = r5;
0x000034de movs r1, 4 | r1 = 4;
0x000034e0 str r4, [sp] | *(sp) = r4;
0x000034e2 add r2, pc | r2 = 0x6a24;
0x000034e4 add r0, pc | r0 = 0x6a2a;
0x000034e6 bl 0x2f4bc | fcn_0002f4bc ();
0x000034ea movw r0, 0xfffc |
0x000034ee movt r0, 0xfffe | r0 = 0xfffefffc;
0x000034f2 b 0x33f4 | goto label_1;
| label_11:
0x000034f4 blx 0x12ec | getrlimit ();
0x000034f8 lsls r0, r7, 5 | r0 = r7 << 5;
0x000034fa movs r0, r0 |
0x000034fc subs r2, 0xa4 | r2 -= 0xa4;
0x000034fe movs r4, r0 | r4 = r0;
0x00003500 subs r2, 0x8e | r2 -= 0x8e;
0x00003502 movs r4, r0 | r4 = r0;
0x00003504 lsls r4, r0, 6 | r4 = r0 << 6;
0x00003506 movs r0, r0 |
0x00003508 subs r1, 0xe0 | r1 -= 0xe0;
0x0000350a movs r4, r0 | r4 = r0;
0x0000350c subs r4, r5, 0 | r4 = r5 - 0;
0x0000350e movs r3, r0 | r3 = r0;
0x00003510 asrs r2, r5, 0x12 | r2 = r5 >> 0x12;
0x00003512 movs r3, r0 | r3 = r0;
0x00003514 invalid |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/sbin/mdnsd @ 0x3744 */
| #include <stdint.h>
|
; (fcn) fcn.00003744 () | void fcn_00003744 (uint32_t arg1, uint32_t arg2) {
| int16_t var_0h;
| char * var_8h;
| int16_t var_ah;
| int16_t var_eh;
| int16_t var_10h;
| char * src;
| int16_t var_16h;
| int16_t var_18h;
| int16_t var_24h;
| r0 = arg1;
| r1 = arg2;
0x00003744 blmi 0x9b0b6c | __asm ("blmi aav.0x000000ff");
0x00003748 add r3, pc | r3 += pc;
0x0000374a cmp r0, 0 |
| if (r0 == 0) {
0x0000374c beq 0x37c8 | goto label_8;
| }
0x0000374e ldr r2, [pc, 0x94] |
0x00003750 ldr r2, [r3, r2] | r2 = *((r3 + r2));
0x00003752 ldr r2, [r2] | r2 = *(0x37e6);
0x00003754 cmp r2, r1 |
| if (r2 == r1) {
0x00003756 beq 0x37bc | goto label_9;
| }
0x00003758 ldr r2, [pc, 0x8c] |
0x0000375a ldr r2, [r3, r2] | r2 = *((r3 + r2));
0x0000375c ldr r2, [r2] | r2 = *(0x37e8);
0x0000375e cmp r2, r1 |
| if (r2 == r1) {
0x00003760 beq 0x37c2 | goto label_10;
| }
0x00003762 ldr r2, [pc, 0x88] | r2 = *(0x37ee);
0x00003764 ldr r3, [r3, r2] | r3 = *((r3 + r2));
0x00003766 ldr r3, [r3] | r3 = *(r3);
0x00003768 cmp r3, r1 |
0x0000376a it eq |
| if (r3 != r1) {
0x0000376c moveq r0, 0 | r0 = 0;
| }
| if (r3 == r1) {
0x0000376e beq 0x3794 | goto label_0;
| }
0x00003770 add.w r0, r0, 0x1000 | r0 += 0x1000;
0x00003774 ldr.w r3, [r0, 0xf68] | r3 = *((r0 + 0xf68));
0x00003778 cmp r1, r3 |
0x0000377a it ne |
| if (r1 != r3) {
0x0000377c cmpne r3, 0 | __asm ("cmpne r3, 0");
| }
| if (r1 == r3) {
0x0000377e beq 0x378a | goto label_11;
| }
| do {
0x00003780 ldr r3, [r3] | r3 = *(r3);
0x00003782 cmp r3, 0 |
0x00003784 it ne |
| if (r3 != 0) {
0x00003786 cmpne r1, r3 | __asm ("cmpne r1, r3");
| }
0x00003788 bne 0x3780 |
| } while (r3 != 0);
| if (r3 != 0) {
| label_11:
0x0000378a cbz r3, 0x3796 |
0x0000378c add.w r3, r3, 0x1000 | r3 += 0x1000;
0x00003790 ldr.w r0, [r3, 0x59c] | r0 = *((r3 + 0x59c));
| label_0:
0x00003794 pop {r3, pc} |
| }
0x00003796 ldr r3, [pc, 0x58] |
0x00003798 add r3, pc | r3 = 0x6f8e;
0x0000379a ldr r0, [r3, 4] | r0 = *(0x6f92);
0x0000379c cmp r0, 0 |
0x0000379e it ne |
| if (r0 != 0) {
0x000037a0 cmpne r1, r0 | __asm ("cmpne r1, r0");
| }
| if (r0 == 0) {
0x000037a2 beq 0x37ae | goto label_12;
| }
| do {
0x000037a4 ldr r0, [r0] | r0 = *(r0);
0x000037a6 cmp r0, 0 |
0x000037a8 it ne |
| if (r0 != 0) {
0x000037aa cmpne r1, r0 | __asm ("cmpne r1, r0");
| }
0x000037ac bne 0x37a4 |
| } while (r0 != 0);
| label_12:
0x000037ae cmp r0, 0 |
| if (r0 == 0) {
0x000037b0 beq 0x3794 | goto label_0;
| }
0x000037b2 add.w r0, r0, 0x1000 | r0 += 0x1000;
0x000037b6 ldr.w r0, [r0, 0x59c] | r0 = *((r0 + 0x59c));
0x000037ba pop {r3, pc} |
| label_9:
0x000037bc mov.w r0, -1 | r0 = -1;
0x000037c0 pop {r3, pc} |
| label_10:
0x000037c2 mvn r0, 2 | r0 = ~2;
0x000037c6 pop {r3, pc} |
| label_8:
0x000037c8 ldr r3, [pc, 0x28] |
0x000037ca movw r2, 0x377 | r2 = 0x377;
0x000037ce ldr r1, [pc, 0x28] |
0x000037d0 ldr r0, [pc, 0x28] |
0x000037d2 add r3, pc | r3 = 0x6fca;
0x000037d4 add r1, pc | r1 = 0x6fd2;
0x000037d6 adds r3, 0xd0 | r3 += 0xd0;
0x000037d8 add r0, pc | r0 = 0x6fd8;
0x000037da blx 0x15b4 | fcn_000015b4 ();
0x000037de nop |
0x000037e0 adds r6, 0x90 | r6 += 0x90;
0x000037e2 movs r4, r0 | r4 = r0;
0x000037e4 lsls r0, r2, 7 | r0 = r2 << 7;
0x000037e6 movs r0, r0 |
0x000037e8 lsls r4, r3, 5 | r4 = r3 << 5;
0x000037ea movs r0, r0 |
0x000037ec lsls r4, r1, 7 | r4 = r1 << 7;
0x000037ee movs r0, r0 |
0x000037f0 ldrh r4, [r5, 0x14] | r4 = *((r5 + 0x14));
0x000037f2 movs r5, r0 | r5 = r0;
0x000037f4 subs r6, r0, r6 | r6 = r0 - r6;
0x000037f6 movs r3, r0 | r3 = r0;
0x000037f8 asrs r4, r7, 0xc | r4 = r7 >> 0xc;
0x000037fa movs r3, r0 | r3 = r0;
0x000037fc asrs r4, r2, 0x1a | r4 = r2 >> 0x1a;
0x000037fe movs r3, r0 | r3 = r0;
0x00003800 ldr r2, [pc, 0x1ec] |
0x00003802 ldr r3, [pc, 0x1f0] | r3 = *(0x39f6);
0x00003804 push.w {r4, r5, r6, r7, r8, lr} |
0x00003808 sub sp, 0x28 |
0x0000380a add r2, pc | r2 = 0x71fe;
0x0000380c ldr r7, [pc, 0x1e8] |
0x0000380e ldr r3, [r2, r3] |
0x00003810 add r7, pc | r7 = 0x720c;
0x00003812 ldr r3, [r3] | r3 = *(0x71fe);
0x00003814 str r3, [sp, 0x24] | var_24h = r3;
0x00003816 mov.w r3, 0 | r3 = 0;
0x0000381a cmp r0, 0 |
| if (r0 == 0) {
0x0000381c beq.w 0x39cc | goto label_13;
| }
0x00003820 movs r1, 2 | r1 = 2;
0x00003822 movs r2, 0x11 | r2 = 0x11;
0x00003824 mov r4, r0 | r4 = r0;
0x00003826 mov r0, r1 | r0 = r1;
0x00003828 blx 0x152c | strncmp (r0, r1, r2);
0x0000382c movs r3, 2 | r3 = 2;
0x0000382e add.w r8, sp, 0x14 | r8 += src;
0x00003832 strh.w r3, [sp, 0x14] | src = r3;
0x00003836 movs r2, 0x10 | r2 = 0x10;
0x00003838 ldr r3, [pc, 0x1c0] | r3 = *(0x39fc);
0x0000383a mov r1, r8 | r1 = r8;
0x0000383c mov r6, r0 | r6 = r0;
0x0000383e ldr r3, [r7, r3] | r3 = *((r7 + r3));
0x00003840 ldrh r3, [r3] | r3 = *(r3);
0x00003842 strh.w r3, [sp, 0x16] | var_16h = r3;
0x00003846 movs r3, 0 | r3 = 0;
0x00003848 str r3, [sp, 0x1c] | *((sp + 0x1c)) = r3;
0x0000384a blx 0x1430 | r0 = strncpy (r0, r1, r2);
0x0000384e mov r5, r0 | r5 = r0;
0x00003850 mov r0, r6 | r0 = r6;
0x00003852 blx 0x1584 | fcn_00001584 ();
0x00003856 cmp r5, 0 |
0x00003858 beq 0x38e8 |
| while (1) {
0x0000385a add.w r6, r4, 0x1840 | r6 = r4 + 0x1840;
0x0000385e movs r3, 0 | r3 = 0;
0x00003860 add.w r5, r4, 0x1000 | r5 = r4 + 0x1000;
0x00003864 adds r6, 0xc | r6 += 0xc;
0x00003866 strb.w r3, [r5, 0x84c] | *((r5 + 0x84c)) = r3;
0x0000386a mov r0, r6 | r0 = r6;
0x0000386c bl 0x1e5c | fcn_00001e5c (r0);
0x00003870 ldrb.w r3, [r5, 0x84c] | r3 = *((r5 + 0x84c));
0x00003874 cmp r3, 0 |
| if (r3 == 0) {
0x00003876 beq.w 0x39b4 | goto label_14;
| }
| label_4:
0x0000387a add.w r6, r4, 0x18c0 | r6 = r4 + 0x18c0;
0x0000387e movs r3, 0 | r3 = 0;
0x00003880 adds r6, 0xd | r6 += 0xd;
0x00003882 strb.w r3, [r5, 0x88c] | *((r5 + 0x88c)) = r3;
0x00003886 bx r6 | return uint32_t (*r6)() ();
0x00003888 bl 0x1e5c | r0 = fcn_00001e5c (r0);
0x0000388c movs r2, r0 | r2 = r0;
0x0000388e movs r0, r0 |
0x00003890 cmp r3, 1 |
| if (r3 == 1) {
0x00003892 beq.w 0x39a6 | goto label_15;
| }
| label_3:
0x00003896 mov r0, r4 | r0 = r4;
0x00003898 mov.w r5, -1 | r5 = -1;
0x0000389c bl 0x15a9c | fcn_00015a9c (r0);
0x000038a0 ldr r3, [r4] | r3 = *(r4);
0x000038a2 movs r2, 2 | r2 = 2;
0x000038a4 strh.w r2, [sp, 0x14] | src = r2;
0x000038a8 mov r1, r8 | r1 = r8;
0x000038aa ldr r2, [pc, 0x154] | r2 = *(0x3a02);
0x000038ac str r5, [r3] | *(r3) = r5;
0x000038ae ldr r2, [r7, r2] | r2 = *((r7 + r2));
0x000038b0 ldrh r7, [r2] | r7 = *(r2);
0x000038b2 movs r2, 0 | r2 = 0;
0x000038b4 mov r1, r6 | r1 = r6;
0x000038b6 bl 0x204e | void (*0x204e)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x000038ba ldr r3, [r4] | r3 = *(r4);
0x000038bc movs r2, 0xb | r2 = 0xb;
0x000038be strh.w r2, [sp, 0x15] | *((sp + 0x15)) = r2;
0x000038c2 str r5, [r3, 4] | *((r3 + 4)) = r5;
| if (r0 == 0) {
0x000038c4 cbz r0, 0x38ee | goto label_16;
| }
| label_1:
0x000038c6 mvn r8, 0x10000 | r8 = ~0x10000;
| label_2:
0x000038ca ldr r2, [pc, 0x138] |
0x000038cc ldr r3, [pc, 0x124] | r3 = *(0x39f4);
0x000038ce add r2, pc | r2 = 0x72d8;
0x000038d0 ldr r3, [r2, r3] | r3 = *(0x72d8);
0x000038d2 ldr r2, [r3] | r2 = *(0x72d8);
0x000038d4 ldr r3, [sp, 0x24] | r3 = var_24h;
0x000038d6 eors r2, r3 | r2 ^= r3;
0x000038d8 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x000038dc bne.w 0x39e2 | goto label_17;
| }
0x000038e0 mov r0, r8 | r0 = r8;
0x000038e2 add sp, 0x28 |
0x000038e4 pop.w {r4, r5, r6, r7, r8, pc} |
0x000038e8 movs r3, 1 | r3 = 1;
0x000038ea strb r3, [r4, 8] | *((r4 + 8)) = r3;
0x000038ec b 0x385a |
| }
| label_16:
0x000038ee mov r2, r0 | r2 = r0;
0x000038f0 adds r3, 4 | r3 += 4;
0x000038f2 mov r1, r6 | r1 = r6;
0x000038f4 mov r0, r8 | r0 = r8;
0x000038f6 bl 0x204c | r0 = fcn_0000204c (r0, r1, r2, r3);
0x000038fa cmp r0, 0 |
| if (r0 != 0) {
0x000038fc bne 0x38c6 | goto label_1;
| }
0x000038fe mov r0, r4 | r0 = r4;
0x00003900 bl 0x29b0 | r0 = fcn_000029b0 (r0, r1);
0x00003904 mov r8, r0 | r8 = r0;
0x00003906 cmp r0, 0 |
| if (r0 != 0) {
0x00003908 bne 0x38c6 | goto label_1;
| }
0x0000390a movs r1, 8 | r1 = 8;
0x0000390c movs r0, 1 | r0 = 1;
0x0000390e blx 0x11ac | r0 = fcn_000011ac ();
0x00003912 mov r5, r0 | r5 = r0;
0x00003914 cmp r0, 0 |
| if (r0 == 0) {
0x00003916 beq 0x39c2 | goto label_18;
| }
0x00003918 str r4, [r0, 4] | *((r0 + 4)) = r4;
0x0000391a mov r2, r8 | r2 = r8;
0x0000391c movs r1, 3 | r1 = 3;
0x0000391e movs r0, 0x10 | r0 = 0x10;
0x00003920 blx 0x152c | r0 = strncmp (r0, r1, r2);
0x00003924 subs r6, r0, 0 | r6 = r0 - 0;
| if (r6 < r0) {
0x00003926 blt 0x397c | goto label_19;
| }
0x00003928 mov.w r2, 0x800 | r2 = 0x800;
0x0000392c movs r1, 4 | r1 = 4;
0x0000392e blx 0x143c | printf_chk ()
0x00003932 movs r3, 0x10 | r3 = 0x10;
0x00003934 movs r2, 0xc | r2 = 0xc;
0x00003936 strh.w r3, [sp, 8] | var_8h = r3;
0x0000393a add r1, sp, 8 | r1 += var_8h;
0x0000393c movs r3, 0x11 | r3 = 0x11;
0x0000393e mov r0, r6 | r0 = r6;
0x00003940 str.w r8, [sp, 0xa] | __asm ("str.w r8, [var_ah]");
0x00003944 strh.w r8, [sp, 0xe] | var_eh = r8;
0x00003948 str r3, [sp, 0x10] | var_10h = r3;
0x0000394a blx 0x1430 | r0 = strncpy (r0, r1, r2);
| if (r0 != 0) {
0x0000394e cbnz r0, 0x397c | goto label_19;
| }
0x00003950 str r6, [r5] | *(r5) = r6;
| label_5:
0x00003952 movs r1, 1 | r1 = 1;
0x00003954 movs r0, 0x24 | r0 = 0x24;
0x00003956 blx 0x11ac | r0 = fcn_000011ac ();
0x0000395a cmp r0, 0 |
| if (r0 == 0) {
0x0000395c beq 0x39e6 | goto label_20;
| }
0x0000395e movs r2, 2 | r2 = 2;
0x00003960 ldr r1, [pc, 0xa4] |
0x00003962 str r6, [r0, 0x1c] | *((r0 + 0x1c)) = r6;
0x00003964 mov r3, r5 | r3 = r5;
0x00003966 str r2, [sp] | *(sp) = r2;
0x00003968 ldr r2, [pc, 0xa0] |
0x0000396a add r1, pc | r1 = 0x7376;
0x0000396c add r2, pc | r2 = 0x737c;
0x0000396e bl 0x1b78 | fcn_00001b78 (r0, r1, r2, r3, r4);
| do {
0x00003972 movs r1, 0 | r1 = 0;
0x00003974 mov r0, r4 | r0 = r4;
0x00003976 bl 0x1d128 | fcn_0001d128 (r0, r1);
0x0000397a b 0x38ca | goto label_2;
| label_19:
0x0000397c blx 0x1424 | r0 = memset (r0, r1, r2);
0x00003980 ldr r6, [r0] | r6 = *(r0);
| if (r6 == 0) {
0x00003982 cbz r6, 0x39be | goto label_21;
| }
| label_7:
0x00003984 mov r0, r5 | r0 = r5;
0x00003986 blx 0x125c | fgets (r0, r1, r2);
| label_6:
0x0000398a ldr r3, [pc, 0x84] | r3 = *(0x3a12);
0x0000398c ldr r3, [r7, r3] | r3 = *((r7 + r3));
0x0000398e ldr r5, [r3] | r5 = *(0x3a12);
0x00003990 blx 0x13fc | fcn_000013fc ();
0x00003992 vldmdb r4!, {s8, s9, s10, s11, s12, s13, s14, s15, s16, s17, s18, s19, s20, s21, s22, s23, s24, s25, s26, s27, s28, s29, s30, s31} | __asm ("vldmdb r4!, {s8, s9, s10, s11, s12, s13, s14, s15, s16, s17, s18, s19, s20, s21, s22, s23, s24, s25, s26, s27, s28, s29, s30, s31}");
0x00003996 mov r3, r0 | r3 = r0;
0x00003998 movs r1, 1 | r1 = 1;
0x0000399a mov r0, r5 | r0 = r5;
0x0000399c str r6, [sp] | *(sp) = r6;
0x0000399e add r2, pc | r2 += pc;
0x000039a0 blx 0x1488 | fcn_00001488 ();
0x000039a4 b 0x3972 |
| } while (1);
| label_15:
0x000039a6 ldr r1, [pc, 0x70] |
0x000039a8 mov r0, r6 | r0 = r6;
0x000039aa add r1, pc | r1 = 0x73c8;
0x000039ac bl 0x1f980 | fcn_0001f980 (r0, r1);
0x000039b0 b 0x3896 | goto label_3;
0x000039b2 ldr r1, [pc, 0x68] |
| label_14:
0x000039b4 mov r0, r6 | r0 = r6;
0x000039b6 add r1, pc | r1 = 0x73d8;
0x000039b8 bl 0x1f980 | fcn_0001f980 (r0, r1);
0x000039bc b 0x387a | goto label_4;
| label_21:
0x000039be ldr r6, [r5] | r6 = *(r5);
0x000039c0 b 0x3952 | goto label_5;
| label_18:
0x000039c2 movw r6, 0xfffd |
0x000039c6 movt r6, 0xfffe | r6 = 0xfffefffd;
0x000039ca b 0x398a | goto label_6;
| label_13:
0x000039cc ldr r3, [pc, 0x50] |
0x000039ce mov.w r2, 0x688 | r2 = 0x688;
0x000039d2 ldr r1, [pc, 0x50] |
0x000039d4 ldr r0, [pc, 0x50] |
0x000039d6 add r3, pc | r3 = 0x73fa;
0x000039d8 add r1, pc | r1 = 0x7402;
0x000039da adds r3, 0xfc | r3 += 0xfc;
0x000039dc add r0, pc | r0 = 0x7408;
0x000039de blx 0x15b4 | fcn_000015b4 ();
| label_17:
0x000039e2 blx 0x12ec | getrlimit ();
| label_20:
0x000039e6 movw r6, 0xfffd |
0x000039ea movt r6, 0xfffe | r6 = 0xfffefffd;
0x000039ee b 0x3984 | goto label_7;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/sbin/mdnsd @ 0x28b80 */
| #include <stdint.h>
|
; (fcn) fcn.00028b80 () | void fcn_00028b80 (int16_t arg1) {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_8h;
| int32_t var_8h_3;
| int32_t var_ch_2;
| int16_t var_18h;
| int32_t var_18h_2;
| int16_t var_20h;
| int32_t var_0h_2;
| int32_t var_8h_2;
| int32_t var_ch;
| int32_t var_10h;
| int32_t var_14h;
| int32_t var_18h_3;
| int32_t var_18h_4;
| int16_t var_78h;
| int16_t var_7ah;
| int16_t var_e8h;
| int16_t var_154h;
| r0 = arg1;
0x00028b80 ldr.w r2, [pc, 0x45c] |
0x00028b84 ldr.w r3, [pc, 0x45c] | r3 = *(0x28fe4);
0x00028b88 push.w {r4, r5, r6, r7, r8, lr} |
0x00028b8c sub sp, 0x158 |
0x00028b8e add r2, pc | r2 = 0x51b72;
0x00028b90 ldr r5, [r0, 0x44] | r5 = *((r0 + 0x44));
0x00028b92 mov r4, r0 | r4 = r0;
0x00028b94 ldr r3, [r2, r3] |
0x00028b96 ldr.w r6, [pc, 0x450] |
0x00028b9a ldr r3, [r3] | r3 = imp.__aeabi_unwind_cpp_pr0;
0x00028b9c str r3, [sp, 0x154] | var_154h = r3;
0x00028b9e mov.w r3, 0 | r3 = 0;
0x00028ba2 subs r3, r5, 3 | r3 = r5 - 3;
0x00028ba4 cmp r3, 1 |
0x00028ba6 add r6, pc | r6 = 0x51b94;
| if (r3 < 1) {
0x00028ba8 bls 0x28c70 | goto label_9;
| }
0x00028baa cmp r5, 2 |
| if (r5 == 2) {
0x00028bac beq.w 0x28d3c | goto label_10;
| }
0x00028bb0 cmp r5, 1 |
| if (r5 == 1) {
0x00028bb2 beq 0x28be6 | goto label_11;
| }
0x00028bb4 ldr.w r3, [pc, 0x434] |
0x00028bb8 ldr r3, [r6, r3] | r3 = *((r6 + r3));
0x00028bba ldr r3, [r3] | r3 = *(0x28fec);
0x00028bbc cmp r3, 0 |
| if (r3 != 0) {
0x00028bbe bne.w 0x28cee | goto label_12;
| }
| label_1:
0x00028bc2 movs r3, 3 | r3 = 3;
| label_3:
0x00028bc4 str r3, [r4, 0x44] | *((r4 + 0x44)) = r3;
| do {
| label_0:
0x00028bc6 ldr.w r2, [pc, 0x428] |
0x00028bca ldr.w r3, [pc, 0x418] | r3 = *(0x28fe6);
0x00028bce add r2, pc | r2 = 0x51bc4;
0x00028bd0 ldr r3, [r2, r3] | r3 = imp.__aeabi_unwind_cpp_pr0;
0x00028bd2 ldr r2, [r3] | r2 = imp.__aeabi_unwind_cpp_pr0;
0x00028bd4 ldr r3, [sp, 0x154] | r3 = var_154h;
0x00028bd6 eors r2, r3 | r2 ^= r3;
0x00028bd8 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00028bdc bne.w 0x28f78 | goto label_13;
| }
0x00028be0 add sp, 0x158 |
0x00028be2 pop.w {r4, r5, r6, r7, r8, pc} |
| label_11:
0x00028be6 ldr r5, [r0, 0x48] | r5 = *((r0 + 0x48));
0x00028be8 cmp r5, 0x1b |
| if (r5 < 0x1b) {
0x00028bea bls 0x28c8c | goto label_14;
| }
| label_6:
0x00028bec cmp r5, 0x1c |
0x00028bee bne 0x28bc6 |
| } while (r5 != 0x1c);
0x00028bf0 ldr r3, [r4, 0x68] | r3 = *((r4 + 0x68));
0x00028bf2 ldr r2, [r4, 0x50] | r2 = *((r4 + 0x50));
0x00028bf4 cmp r3, r2 |
| if (r3 <= r2) {
0x00028bf6 blo.w 0x28d74 | goto label_15;
| }
| label_4:
0x00028bfa cmp r2, r3 |
| if (r2 != r3) {
0x00028bfc bne 0x28bc6 | goto label_0;
| }
0x00028bfe ldr.w r3, [r4, 0x88] | r3 = *((r4 + 0x88));
| if (r3 != 0) {
0x00028c02 cbz r3, 0x28c6a |
0x00028c04 ldr r3, [r4, 0x58] | r3 = *((r4 + 0x58));
0x00028c06 cmp r3, 0x3f |
| if (r3 == 0x3f) {
0x00028c08 beq 0x28c6a | goto label_16;
| }
0x00028c0a add r5, sp, 0xe8 | r5 += var_e8h;
0x00028c0c movs r3, 0x6c | r3 = 0x6c;
0x00028c0e mov r2, r5 | r2 = r5;
0x00028c10 ldr r1, [r4, 0x74] | r1 = *((r4 + 0x74));
0x00028c12 add.w r0, r4, 0x70 | r0 = r4 + 0x70;
0x00028c16 add r7, sp, 0x78 | r7 += var_78h;
0x00028c18 bl 0x2f614 | fcn_0002f614 (r0, r1, r2, r3);
0x00028c1c movs r1, 0x6e | r1 = 0x6e;
0x00028c1e mov r0, r7 | r0 = r7;
0x00028c20 bl 0x3b4c | fcn_00003b4c (r0);
0x00028c24 mov r1, r5 | r1 = r5;
0x00028c26 add.w r5, sp, 0x7a | r5 += var_7ah;
0x00028c2a mov.w r8, 1 | r8 = 1;
0x00028c2e movs r2, 0x6c | r2 = 0x6c;
0x00028c30 mov r0, r5 | r0 = r5;
0x00028c32 strh.w r8, [sp, 0x78] | var_78h = r8;
0x00028c36 bl 0x3ae4 | fcn_00003ae4 (r0, r1, r2);
0x00028c3a ldrb.w r3, [sp, 0xe8] | r3 = var_e8h;
0x00028c3e cmp r3, 0 |
| if (r3 != 0) {
0x00028c40 bne.w 0x28e36 | goto label_17;
| }
0x00028c44 ldr r5, [r4, 0x34] | r5 = *((r4 + 0x34));
0x00028c46 ldr r3, [r4, 8] | r3 = *((r4 + 8));
0x00028c48 cmp r5, r3 |
| if (r5 == r3) {
0x00028c4a beq.w 0x28e56 | goto label_18;
| }
| label_5:
0x00028c4e movs r2, 0 | r2 = 0;
0x00028c50 movs r1, 3 | r1 = 3;
0x00028c52 mov r0, r5 | r0 = r5;
0x00028c54 blx 0x143c | printf_chk ()
0x00028c58 movs r1, 4 | r1 = 4;
0x00028c5a orr r2, r0, 0x800 | r2 = r0 | 0x800;
0x00028c5e mov r0, r5 | r0 = r5;
0x00028c60 blx 0x143c | r0 = printf_chk ()
0x00028c64 cmp r0, 0 |
| if (r0 != 0) {
0x00028c66 bne.w 0x28e74 | goto label_19;
| }
| }
| label_16:
0x00028c6a movs r3, 2 | r3 = 2;
0x00028c6c str r3, [r4, 0x44] | *((r4 + 0x44)) = r3;
0x00028c6e b 0x28bc6 | goto label_0;
| label_9:
0x00028c70 ldr r3, [pc, 0x378] |
0x00028c72 ldr r3, [r6, r3] | r3 = *((r6 + r3));
0x00028c74 ldr r3, [r3] | r3 = *(0x28fec);
0x00028c76 cmp r3, 0 |
| if (r3 == 0) {
0x00028c78 beq 0x28bc2 | goto label_1;
| }
0x00028c7a ldr r3, [r0, 0x3c] | r3 = *((r0 + 0x3c));
0x00028c7c movs r1, 2 | r1 = 2;
0x00028c7e ldr r2, [pc, 0x374] |
0x00028c80 ldr r0, [pc, 0x374] |
0x00028c82 add r2, pc | r2 = 0x51c7c;
0x00028c84 add r0, pc | r0 = 0x51c80;
0x00028c86 bl 0x2f4bc | fcn_0002f4bc ();
0x00028c8a b 0x28bc2 | goto label_1;
| label_14:
0x00028c8c ldr r3, [r0, 0x40] | r3 = *((r0 + 0x40));
0x00028c8e add.w r7, r0, 0x4c | r7 = r0 + 0x4c;
0x00028c92 rsb.w r2, r5, 0x1c | r2 = 0x1c - r5;
0x00028c96 adds r1, r7, r5 | r1 = r7 + r5;
0x00028c98 str r3, [sp] | *(sp) = r3;
0x00028c9a movs r3, 0 | r3 = 0;
0x00028c9c ldr r0, [r0, 8] | r0 = *((r0 + 8));
0x00028c9e bl 0x1b5c | r0 = fcn_00001b5c ();
0x00028ca2 cmp r0, 0 |
0x00028ca4 itt eq |
| if (r0 != 0) {
0x00028ca6 moveq r3, 4 | r3 = 4;
| }
| if (r0 == 0) {
0x00028ca8 streq r3, [r4, 0x44] | *((r4 + 0x44)) = r3;
| goto label_20;
| }
| if (r0 == 0) {
| label_20:
0x00028caa beq 0x28bc6 | goto label_0;
| }
| if (r0 < 0) {
0x00028cac blt 0x28d02 | goto label_2;
| }
0x00028cae ldr r3, [r4, 0x48] | r3 = *((r4 + 0x48));
0x00028cb0 add r0, r3 | r0 += r3;
0x00028cb2 cmp r0, 0x1c |
0x00028cb4 str r0, [r4, 0x48] | *((r4 + 0x48)) = r0;
| if (r0 > 0x1c) {
0x00028cb6 bhi.w 0x28dca | goto label_21;
| }
| if (r0 != 0x1c) {
0x00028cba bne 0x28bc6 | goto label_0;
| }
0x00028cbc mov r0, r7 | r0 = r7;
0x00028cbe bl 0x2f694 | fcn_0002f694 (r0);
0x00028cc2 ldr r1, [r4, 0x4c] | r1 = *((r4 + 0x4c));
0x00028cc4 cmp r1, 1 |
| if (r1 == 1) {
0x00028cc6 beq.w 0x28e06 | goto label_22;
| }
0x00028cca ldr r3, [pc, 0x320] |
0x00028ccc ldr r3, [r6, r3] | r3 = *((r6 + r3));
0x00028cce ldr r3, [r3] | r3 = *(0x28fee);
0x00028cd0 cmp r3, 0 |
| if (r3 == 0) {
0x00028cd2 beq.w 0x28bc2 | goto label_1;
| }
0x00028cd6 movs r0, 1 | r0 = 1;
0x00028cd8 ldr r3, [r4, 0x3c] | r3 = *((r4 + 0x3c));
0x00028cda ldr r2, [pc, 0x320] |
0x00028cdc strd r1, r0, [sp] | __asm ("strd r1, r0, [sp]");
0x00028ce0 movs r1, 2 | r1 = 2;
0x00028ce2 ldr r0, [pc, 0x31c] |
0x00028ce4 add r2, pc | r2 = 0x51ce6;
0x00028ce6 add r0, pc | r0 = 0x51cec;
0x00028ce8 bl 0x2f4bc | fcn_0002f4bc ();
0x00028cec b 0x28bc2 | goto label_1;
| label_12:
0x00028cee ldr r3, [r0, 0x3c] | r3 = *((r0 + 0x3c));
0x00028cf0 movs r1, 2 | r1 = 2;
0x00028cf2 ldr r2, [pc, 0x310] |
0x00028cf4 ldr r0, [pc, 0x310] |
0x00028cf6 str r5, [sp] | *(sp) = r5;
0x00028cf8 add r2, pc | r2 = 0x51d02;
0x00028cfa add r0, pc | r0 = 0x51d06;
0x00028cfc bl 0x2f4bc | fcn_0002f4bc ();
0x00028d00 b 0x28bc2 | goto label_1;
| label_2:
0x00028d02 blx 0x1424 | r0 = memset (r0, r1, r2);
0x00028d06 ldr r5, [r0] | r5 = *(r0);
0x00028d08 cmp r5, 4 |
0x00028d0a it ne |
| if (r5 == 4) {
0x00028d0c cmpne r5, 0xb | __asm ("cmpne r5, 0xb");
| goto label_23;
| }
| if (r5 == 4) {
| label_23:
0x00028d0e beq.w 0x28bc6 | goto label_0;
| }
0x00028d12 ldr r3, [pc, 0x2d8] |
0x00028d14 ldr r3, [r6, r3] | r3 = *((r6 + r3));
0x00028d16 ldr r3, [r3] | r3 = *(0x28fee);
0x00028d18 cmp r3, 0 |
| if (r3 == 0) {
0x00028d1a beq.w 0x28bc2 | goto label_1;
| }
0x00028d1e mov r0, r5 | r0 = r5;
0x00028d20 ldr r6, [r4, 0x3c] | r6 = *((r4 + 0x3c));
0x00028d22 blx 0x13cc | fcn_000013cc ();
0x00028d26 ldr r2, [pc, 0x2e4] |
0x00028d28 movs r1, 2 | r1 = 2;
0x00028d2a str r0, [sp, 4] | var_4h = r0;
0x00028d2c mov r3, r6 | r3 = r6;
0x00028d2e ldr r0, [pc, 0x2e0] |
0x00028d30 add r2, pc | r2 = 0x51d42;
0x00028d32 str r5, [sp] | *(sp) = r5;
0x00028d34 add r0, pc | r0 = 0x51d4a;
0x00028d36 bl 0x2f4bc | fcn_0002f4bc ();
0x00028d3a b 0x28bc2 | goto label_1;
| label_10:
0x00028d3c ldr r2, [r0, 0x40] | r2 = *((r0 + 0x40));
0x00028d3e movs r3, 0 | r3 = 0;
0x00028d40 add r1, sp, 0xe8 | r1 += var_e8h;
0x00028d42 str r2, [sp] | *(sp) = r2;
0x00028d44 movs r2, 4 | r2 = 4;
0x00028d46 ldr r0, [r0, 8] | r0 = *((r0 + 8));
0x00028d48 bl 0x1b5c | r0 = fcn_00001b5c ();
0x00028d4c cmp r0, 0 |
| if (r0 == 0) {
0x00028d4e beq 0x28d70 | goto label_24;
| }
| if (r0 < 0) {
0x00028d50 blt 0x28d02 | goto label_2;
| }
0x00028d52 ldr r3, [pc, 0x298] |
0x00028d54 ldr r3, [r6, r3] | r3 = *((r6 + r3));
0x00028d56 ldr r3, [r3] | r3 = *(0x28fee);
0x00028d58 cmp r3, 0 |
| if (r3 == 0) {
0x00028d5a beq.w 0x28bc2 | goto label_1;
| }
0x00028d5e ldr r2, [pc, 0x2b4] |
0x00028d60 mov r1, r5 | r1 = r5;
0x00028d62 ldr r0, [pc, 0x2b4] |
0x00028d64 ldr r3, [r4, 0x3c] | r3 = *((r4 + 0x3c));
0x00028d66 add r2, pc | r2 = 0x51d80;
0x00028d68 add r0, pc | r0 = 0x51d86;
0x00028d6a bl 0x2f4bc | fcn_0002f4bc ();
0x00028d6e b 0x28bc2 | goto label_1;
| do {
| label_24:
0x00028d70 movs r3, 4 | r3 = 4;
0x00028d72 b 0x28bc4 | goto label_3;
| label_15:
0x00028d74 subs r0, r2, r3 | r0 = r2 - r3;
0x00028d76 ldr r2, [r4, 0x6c] | r2 = *((r4 + 0x6c));
0x00028d78 add r7, sp, 0x20 | r7 += var_20h;
0x00028d7a str r5, [r7, 0x14] | var_14h = r5;
0x00028d7c adds r1, r2, r3 | r1 = r2 + r3;
0x00028d7e add r3, sp, 0x18 | r3 += var_18h;
0x00028d80 str r3, [r7, 8] | var_8h_2 = r3;
0x00028d82 movs r3, 1 | r3 = 1;
0x00028d84 movs r2, 0 | r2 = 0;
0x00028d86 str r3, [r7, 0xc] | var_ch = r3;
0x00028d88 add r3, sp, 0xe8 | r3 += var_e8h;
0x00028d8a strd r1, r0, [sp, 0x18] | __asm ("strd r1, r0, [var_18h]");
0x00028d8e strd r2, r2, [r7] | __asm ("strd r2, r2, [r7]");
0x00028d92 mov r1, r7 | r1 = r7;
0x00028d94 ldr r0, [r4, 8] | r0 = *((r4 + 8));
0x00028d96 str r2, [r7, 0x18] | var_18h_3 = r2;
0x00028d98 str r3, [r7, 0x10] | var_10h = r3;
0x00028d9a blx 0x1504 | r0 = fcn_00001504 ();
0x00028d9e cmp r0, 0 |
0x00028da0 beq 0x28d70 |
| } while (r0 == 0);
| if (r0 < 0) {
0x00028da2 blt 0x28d02 | goto label_2;
| }
0x00028da4 ldr r3, [r4, 0x68] | r3 = *((r4 + 0x68));
0x00028da6 ldr r2, [r4, 0x50] | r2 = *((r4 + 0x50));
0x00028da8 add r3, r0 | r3 += r0;
0x00028daa cmp r3, r2 |
0x00028dac str r3, [r4, 0x68] | *((r4 + 0x68)) = r3;
| if (r3 > r2) {
0x00028dae bhi 0x28de8 | goto label_25;
| }
0x00028db0 ldr r1, [r7, 0x14] | r1 = var_14h;
0x00028db2 cmp r1, 0xb |
| if (r1 >= 0xb) {
0x00028db4 bls 0x28dc0 |
0x00028db6 ldr r1, [r7, 0x10] | r1 = var_10h;
| if (r1 == 0) {
0x00028db8 cbz r1, 0x28dc0 | goto label_7;
| }
0x00028dba ldr r0, [r1, 4] | r0 = *((r1 + 4));
0x00028dbc cmp r0, 1 |
| if (r0 == 1) {
0x00028dbe beq 0x28ebe | goto label_26;
| }
| }
| label_7:
0x00028dc0 ldr r1, [r4, 0x48] | r1 = *((r4 + 0x48));
0x00028dc2 cmp r1, 0x1c |
| if (r1 == 0x1c) {
0x00028dc4 beq.w 0x28bfa | goto label_4;
| }
0x00028dc8 b 0x28bc6 | goto label_0;
| label_21:
0x00028dca ldr r3, [pc, 0x220] |
0x00028dcc ldr r3, [r6, r3] | r3 = *((r6 + r3));
0x00028dce ldr r3, [r3] | r3 = *(0x28fee);
0x00028dd0 cmp r3, 0 |
| if (r3 == 0) {
0x00028dd2 beq.w 0x28bc2 | goto label_1;
| }
0x00028dd6 ldr r2, [pc, 0x244] |
0x00028dd8 movs r1, 2 | r1 = 2;
0x00028dda ldr r0, [pc, 0x244] |
0x00028ddc ldr r3, [r4, 0x3c] | r3 = *((r4 + 0x3c));
0x00028dde add r2, pc | r2 = 0x51e00;
0x00028de0 add r0, pc | r0 = 0x51e06;
0x00028de2 bl 0x2f4bc | fcn_0002f4bc ();
0x00028de6 b 0x28bc2 | goto label_1;
| label_25:
0x00028de8 ldr r3, [pc, 0x200] |
0x00028dea ldr r3, [r6, r3] | r3 = *((r6 + r3));
0x00028dec ldr r3, [r3] | r3 = *(0x28fec);
0x00028dee cmp r3, 0 |
| if (r3 == 0) {
0x00028df0 beq.w 0x28bc2 | goto label_1;
| }
0x00028df4 ldr r2, [pc, 0x22c] |
0x00028df6 movs r1, 2 | r1 = 2;
0x00028df8 ldr r0, [pc, 0x22c] |
0x00028dfa ldr r3, [r4, 0x3c] | r3 = *((r4 + 0x3c));
0x00028dfc add r2, pc | r2 = 0x51e24;
0x00028dfe add r0, pc | r0 = 0x51e2a;
0x00028e00 bl 0x2f4bc | fcn_0002f4bc ();
0x00028e04 b 0x28bc2 | goto label_1;
| label_22:
0x00028e06 ldr r7, [r4, 0x50] | r7 = *((r4 + 0x50));
0x00028e08 movw r3, 0x1170 |
0x00028e0c movt r3, 1 | r3 = 0x11170;
0x00028e10 cmp r7, r3 |
| if (r7 < r3) {
0x00028e12 bls 0x28ea4 | goto label_27;
| }
0x00028e14 ldr r3, [pc, 0x1d4] |
0x00028e16 ldr r3, [r6, r3] | r3 = *((r6 + r3));
0x00028e18 ldr r3, [r3] | r3 = *(0x28fec);
0x00028e1a cmp r3, 0 |
| if (r3 == 0) {
0x00028e1c beq.w 0x28bc2 | goto label_1;
| }
0x00028e20 ldr r2, [pc, 0x208] |
0x00028e22 movs r1, 2 | r1 = 2;
0x00028e24 ldr r0, [pc, 0x208] |
0x00028e26 ldr r3, [r4, 0x3c] | r3 = *((r4 + 0x3c));
0x00028e28 add r2, pc | r2 = 0x51e58;
0x00028e2a strd r7, r7, [sp] | __asm ("strd r7, r7, [sp]");
0x00028e2e add r0, pc | r0 = 0x51e62;
0x00028e30 bl 0x2f4bc | fcn_0002f4bc ();
0x00028e34 b 0x28bc2 | goto label_1;
| label_17:
0x00028e36 movs r2, 0 | r2 = 0;
0x00028e38 mov r1, r8 | r1 = r8;
0x00028e3a mov r0, r8 | r0 = r8;
0x00028e3c blx 0x152c | r0 = strncmp (r0, r1, r2);
0x00028e40 cmp r0, 0 |
0x00028e42 str r0, [r4, 0x34] | *((r4 + 0x34)) = r0;
| if (r0 < 0) {
0x00028e44 blt 0x28efe | goto label_28;
| }
0x00028e46 mov r1, r7 | r1 = r7;
0x00028e48 movs r2, 0x6e | r2 = 0x6e;
0x00028e4a blx 0x159c | r0 = fcn_0000159c ();
0x00028e4e cmp r0, 0 |
| if (r0 < 0) {
0x00028e50 blt 0x28f38 | goto label_29;
| }
0x00028e52 ldr r5, [r4, 0x34] | r5 = *((r4 + 0x34));
0x00028e54 b 0x28c4e | goto label_5;
| label_18:
0x00028e56 ldr r3, [pc, 0x194] |
0x00028e58 ldr r3, [r6, r3] | r3 = *((r6 + r3));
0x00028e5a ldr r3, [r3] | r3 = *(0x28fee);
0x00028e5c cmp r3, 0 |
| if (r3 == 0) {
0x00028e5e beq.w 0x28bc2 | goto label_1;
| }
0x00028e62 ldr r2, [pc, 0x1d0] |
0x00028e64 movs r1, 2 | r1 = 2;
0x00028e66 ldr r0, [pc, 0x1d0] |
0x00028e68 ldr r3, [r4, 0x3c] | r3 = *((r4 + 0x3c));
0x00028e6a add r2, pc | r2 = 0x51ea4;
0x00028e6c add r0, pc | r0 = 0x51eaa;
0x00028e6e bl 0x2f4bc | fcn_0002f4bc ();
0x00028e72 b 0x28bc2 | goto label_1;
| label_19:
0x00028e74 ldr r3, [pc, 0x174] |
0x00028e76 ldr r3, [r6, r3] | r3 = *((r6 + r3));
0x00028e78 ldr r3, [r3] | r3 = *(0x28fec);
0x00028e7a cmp r3, 0 |
| if (r3 == 0) {
0x00028e7c beq.w 0x28bc2 | goto label_1;
| }
0x00028e80 blx 0x1424 | r0 = memset (r0, r1, r2);
0x00028e84 ldr r5, [r0] | r5 = *(r0);
0x00028e86 ldr r6, [r4, 0x3c] | r6 = *((r4 + 0x3c));
0x00028e88 mov r0, r5 | r0 = r5;
0x00028e8a blx 0x13cc | fcn_000013cc ();
0x00028e8e ldr r2, [pc, 0x1ac] |
0x00028e90 mov r3, r6 | r3 = r6;
0x00028e92 strd r5, r0, [sp] | __asm ("strd r5, r0, [sp]");
0x00028e96 movs r1, 2 | r1 = 2;
0x00028e98 ldr r0, [pc, 0x1a4] |
0x00028e9a add r2, pc | r2 = 0x51edc;
0x00028e9c add r0, pc | r0 = 0x51ee0;
0x00028e9e bl 0x2f4bc | fcn_0002f4bc ();
0x00028ea2 b 0x28bc2 | goto label_1;
| label_27:
0x00028ea4 adds r1, r7, 5 | r1 = r7 + 5;
0x00028ea6 movs r0, 1 | r0 = 1;
0x00028ea8 blx 0x11ac | fcn_000011ac ();
0x00028eac str r0, [r4, 0x6c] | *((r4 + 0x6c)) = r0;
0x00028eae cmp r0, 0 |
| if (r0 == 0) {
0x00028eb0 beq.w 0x28fd0 | goto label_30;
| }
0x00028eb4 add r7, r0 | r7 += r0;
0x00028eb6 ldr r5, [r4, 0x48] | r5 = *((r4 + 0x48));
0x00028eb8 strd r0, r7, [r4, 0x70] | __asm ("strd r0, r7, [r4, 0x70]");
0x00028ebc b 0x28bec | goto label_6;
| label_26:
0x00028ebe ldr r0, [r1, 8] | r0 = *((r1 + 8));
0x00028ec0 cmp r0, 1 |
| if (r0 != 1) {
0x00028ec2 bne.w 0x28dc0 | goto label_7;
| }
0x00028ec6 ldr r1, [r1, 0xc] | r1 = *((r1 + 0xc));
0x00028ec8 cmp r3, r2 |
0x00028eca str r1, [r4, 0x34] | *((r4 + 0x34)) = r1;
| if (r3 >= r2) {
0x00028ecc bhs.w 0x28dc0 | goto label_7;
| }
0x00028ed0 ldr r0, [pc, 0x118] |
0x00028ed2 ldr r0, [r6, r0] | r0 = *((r6 + r0));
0x00028ed4 ldr r0, [r0] | r0 = *(0x28fec);
0x00028ed6 cmp r0, 0 |
| if (r0 == 0) {
0x00028ed8 beq.w 0x28bc2 | goto label_1;
| }
0x00028edc ldr r0, [r4, 0xc] | r0 = *((r4 + 0xc));
0x00028ede add.w r5, r4, 0x10 | r5 = r4 + 0x10;
0x00028ee2 strd r3, r2, [sp, 0xc] | __asm ("strd r3, r2, [var_8h_3]");
0x00028ee6 str r5, [sp, 4] | var_4h = r5;
0x00028ee8 ldr r2, [pc, 0x158] |
0x00028eea ldr r3, [r4, 0x3c] | r3 = *((r4 + 0x3c));
0x00028eec str r0, [sp] | *(sp) = r0;
0x00028eee ldr r0, [pc, 0x158] |
0x00028ef0 add r2, pc | r2 = 0x51f38;
0x00028ef2 str r1, [sp, 8] | var_8h = r1;
0x00028ef4 movs r1, 6 | r1 = 6;
0x00028ef6 add r0, pc | r0 = 0x51f44;
0x00028ef8 bl 0x2f4bc | fcn_0002f4bc ();
0x00028efc b 0x28bc2 | goto label_1;
| label_28:
0x00028efe ldr r3, [pc, 0x14c] |
0x00028f00 movs r1, 0xfa | r1 = 0xfa;
0x00028f02 add r3, pc | r3 = 0x51f54;
0x00028f04 ldr r0, [r3, 0x14] | r0 = imp.__aeabi_unwind_cpp_pr0;
0x00028f06 adds r2, r0, 1 | r2 = r0 + 1;
0x00028f08 str r2, [r3, 0x14] | *((r3 + 0x14)) = r2;
0x00028f0a bl 0x347ac | fcn_000347ac (r0, r1);
0x00028f0e cmp r1, 0 |
| if (r1 != 0) {
0x00028f10 bne.w 0x28bc2 | goto label_1;
| }
0x00028f14 blx 0x1424 | r0 = memset (r0, r1, r2);
0x00028f18 ldr r5, [r0] | r5 = *(r0);
0x00028f1a mov r0, r5 | r0 = r5;
0x00028f1c blx 0x13cc | fcn_000013cc ();
0x00028f1e orrs.w fp, r6, fp, lsl 17 |
0x00028f22 movs r1, 4 | r1 = 4;
0x00028f24 strd r5, r0, [sp] | __asm ("strd r5, r0, [sp]");
0x00028f28 ldr r2, [pc, 0x128] |
0x00028f2a ldr r0, [pc, 0x12c] |
0x00028f2c add r3, pc | r3 += pc;
0x00028f2e add r2, pc | r2 = 0x51f86;
0x00028f30 add r0, pc | r0 = 0x51f8e;
0x00028f32 bl 0x2f4bc | fcn_0002f4bc ();
0x00028f36 b 0x28bc2 | goto label_1;
| label_29:
0x00028f38 ldr r3, [pc, 0xb0] | r3 = *(0x28fec);
0x00028f3a ldr r7, [r6, r3] | r7 = *((r6 + r3));
0x00028f3c ldr r3, [r7] | r3 = *(r7);
0x00028f3e cmp r3, 0 |
| if (r3 != 0) {
0x00028f40 bne 0x28fa8 | goto label_31;
| }
| label_8:
0x00028f42 add r6, sp, 0x20 | r6 += var_20h;
0x00028f44 mov r0, r5 | r0 = r5;
0x00028f46 mov r1, r6 | r1 = r6;
0x00028f48 blx 0x13f0 | r0 = fcn_000013f0 ();
0x00028f4c cmp r0, 0 |
0x00028f4e ldr r3, [r7] | r3 = *(r7);
| if (r0 < 0) {
0x00028f50 blt 0x28f7c | goto label_32;
| }
0x00028f52 cmp r3, 0 |
| if (r3 == 0) {
0x00028f54 beq.w 0x28bc2 | goto label_1;
| }
0x00028f58 ldrd r2, r1, [r6, 0x18] | __asm ("ldrd r2, r1, [var_18h_3]");
0x00028f5c ldr r0, [r6, 0x10] | r0 = var_10h;
0x00028f5e str r5, [sp] | *(sp) = r5;
0x00028f60 ldr r3, [r4, 0x3c] | r3 = *((r4 + 0x3c));
0x00028f62 strd r2, r1, [sp, 8] | __asm ("strd r2, r1, [var_8h]");
0x00028f66 movs r1, 2 | r1 = 2;
0x00028f68 str r0, [sp, 4] | var_4h = r0;
0x00028f6a ldr r2, [pc, 0xf0] |
0x00028f6c ldr r0, [pc, 0xf0] |
0x00028f6e add r2, pc | r2 = 0x51fd0;
0x00028f70 add r0, pc | r0 = 0x51fd4;
0x00028f72 bl 0x2f4bc | fcn_0002f4bc ();
0x00028f76 b 0x28bc2 | goto label_1;
| label_13:
0x00028f78 blx 0x12ec | getrlimit ();
| label_32:
0x00028f7c cmp r3, 0 |
| if (r3 == 0) {
0x00028f7e beq.w 0x28bc2 | goto label_1;
| }
0x00028f82 blx 0x1424 | r0 = memset (r0, r1, r2);
0x00028f86 ldr r6, [r0] | r6 = *(r0);
0x00028f88 ldr r7, [r4, 0x3c] | r7 = *((r4 + 0x3c));
0x00028f8a mov r0, r6 | r0 = r6;
0x00028f8c blx 0x13cc | fcn_000013cc ();
0x00028f90 ldr r2, [pc, 0xd0] |
0x00028f92 mov r3, r7 | r3 = r7;
0x00028f94 str r0, [sp, 8] | var_8h = r0;
0x00028f96 movs r1, 2 | r1 = 2;
0x00028f98 ldr r0, [pc, 0xcc] |
0x00028f9a add r2, pc | r2 = 0x52002;
0x00028f9c strd r5, r6, [sp] | __asm ("strd r5, r6, [sp]");
0x00028fa0 add r0, pc | r0 = 0x5200c;
0x00028fa2 bl 0x2f4bc | fcn_0002f4bc ();
0x00028fa6 b 0x28bc2 | goto label_1;
| label_31:
0x00028fa8 blx 0x1424 | r0 = memset (r0, r1, r2);
0x00028fac ldr r6, [r0] | r6 = *(r0);
0x00028fae ldr.w r8, [r4, 0x3c] | r8 = *((r4 + 0x3c));
0x00028fb2 mov r0, r6 | r0 = r6;
0x00028fb4 blx 0x13cc | fcn_000013cc ();
0x00028fb8 ldr r2, [pc, 0xb0] |
0x00028fba mov r3, r8 | r3 = r8;
0x00028fbc str r0, [sp, 8] | var_8h = r0;
0x00028fbe movs r1, 2 | r1 = 2;
0x00028fc0 ldr r0, [pc, 0xac] |
0x00028fc2 add r2, pc | r2 = 0x52032;
0x00028fc4 str r6, [sp, 4] | var_4h = r6;
0x00028fc6 str r5, [sp] | *(sp) = r5;
0x00028fc8 add r0, pc | r0 = 0x5203c;
0x00028fca bl 0x2f4bc | fcn_0002f4bc ();
0x00028fce b 0x28f42 | goto label_8;
| label_30:
0x00028fd0 ldr r0, [pc, 0xa0] |
0x00028fd2 add r0, pc | r0 = 0x5204a;
0x00028fd4 bl 0x263a8 | fcn_000263a8 (r0);
0x00028fd8 movs r3, 3 | r3 = 3;
0x00028fda str r3, [r4, 0x44] | *((r4 + 0x44)) = r3;
0x00028fdc b 0x28bc6 | goto label_0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/sbin/mdnsd @ 0x29698 */
| #include <stdint.h>
|
; (fcn) fcn.00029698 () | void fcn_00029698 (int16_t arg1) {
| int32_t var_0h;
| int32_t var_0h_2;
| r0 = arg1;
0x00029698 push {r4, r5, lr} |
0x0002969a movs r2, 0 | r2 = 0;
0x0002969c ldr r5, [pc, 0xd0] |
0x0002969e sub sp, 0xc |
0x000296a0 movs r1, 3 | r1 = 3;
0x000296a2 mov r4, r0 | r4 = r0;
0x000296a4 blx 0x143c | printf_chk ()
0x000296a8 movs r1, 4 | r1 = 4;
0x000296aa orr r2, r0, 0x800 | r2 = r0 | 0x800;
0x000296ae mov r0, r4 | r0 = r4;
0x000296b0 add r5, pc | r5 = 0x52e24;
0x000296b2 blx 0x143c | r0 = printf_chk ()
| if (r0 != 0) {
0x000296b6 cbnz r0, 0x29716 | goto label_2;
| }
0x000296b8 movs r1, 0x64 | r1 = 0x64;
0x000296ba mov r0, r4 | r0 = r4;
0x000296bc blx 0x14d4 | r0 = fcn_000014d4 ();
0x000296c0 mov r3, r0 | r3 = r0;
| if (r0 == 0) {
0x000296c2 cbnz r0, 0x296ee |
0x000296c4 ldr r1, [pc, 0xac] |
0x000296c6 mov r2, r0 | r2 = r0;
0x000296c8 mov r0, r4 | r0 = r4;
0x000296ca add r1, pc | r1 = 0x52e42;
0x000296cc bl 0x1b58 | r0 = fcn_00001b58 (r0, r1, r2);
0x000296d0 cmp r0, 0 |
| if (r0 != 0) {
0x000296d2 bne 0x2974c | goto label_3;
| }
0x000296d4 ldr r3, [pc, 0xa0] |
0x000296d6 ldr r3, [r5, r3] | r3 = *((r5 + r3));
0x000296d8 ldr r3, [r3] | r3 = *(0x29778);
| if (r3 != 0) {
0x000296da cbnz r3, 0x2973a | goto label_4;
| }
| label_0:
0x000296dc ldr r3, [pc, 0x9c] |
0x000296de movs r0, 1 | r0 = 1;
0x000296e0 add r3, pc |
0x000296e2 add.w r3, r3, 0x3000 | r3 = 0x55e60;
0x000296e6 str.w r4, [r3, 0x868] | __asm ("str.w r4, aav.0x000000ff");
0x000296ea add sp, 0xc |
0x000296ec pop {r4, r5, pc} |
| }
0x000296ee blx 0x1424 | r0 = memset (r0, r1, r2);
0x000296f2 ldr r4, [r0] | r4 = *(r0);
0x000296f4 mov r0, r4 | r0 = r4;
0x000296f6 blx 0x13cc | fcn_000013cc ();
0x000296fa ldr r3, [pc, 0x84] |
0x000296fc movs r1, 4 | r1 = 4;
0x000296fe ldr r2, [pc, 0x84] |
0x00029700 strd r4, r0, [sp] | __asm ("strd r4, r0, [sp]");
0x00029704 ldr r0, [pc, 0x80] |
0x00029706 add r3, pc | r3 = 0x52e8c;
0x00029708 add r2, pc | r2 = 0x52e92;
0x0002970a add r0, pc | r0 = 0x52e96;
0x0002970c bl 0x2f4bc | fcn_0002f4bc ();
| do {
| label_1:
0x00029710 movs r0, 0 | r0 = 0;
0x00029712 add sp, 0xc |
0x00029714 pop {r4, r5, pc} |
| label_2:
0x00029716 blx 0x1424 | r0 = memset (r0, r1, r2);
0x0002971a ldr r4, [r0] | r4 = *(r0);
0x0002971c mov r0, r4 | r0 = r4;
0x0002971e blx 0x13cc | fcn_000013cc ();
0x00029722 ldr r3, [pc, 0x68] |
0x00029724 movs r1, 4 | r1 = 4;
0x00029726 strd r4, r0, [sp] | __asm ("strd r4, r0, [sp]");
0x0002972a ldr r2, [pc, 0x64] |
0x0002972c ldr r0, [pc, 0x64] |
0x0002972e add r3, pc | r3 = 0x52ec0;
0x00029730 add r2, pc | r2 = 0x52ec6;
0x00029732 add r0, pc | r0 = 0x52eca;
0x00029734 bl 0x2f4bc | fcn_0002f4bc ();
0x00029738 b 0x29710 |
| } while (1);
| label_4:
0x0002973a ldr r2, [pc, 0x5c] |
0x0002973c mov r3, r4 | r3 = r4;
0x0002973e ldr r0, [pc, 0x5c] |
0x00029740 movs r1, 5 | r1 = 5;
0x00029742 add r2, pc | r2 = 0x52ee0;
0x00029744 add r0, pc | r0 = 0x52ee6;
0x00029746 bl 0x2f4bc | fcn_0002f4bc ();
0x0002974a b 0x296dc | goto label_0;
| label_3:
0x0002974c blx 0x1424 | r0 = memset (r0, r1, r2);
0x00029750 ldr r4, [r0] | r4 = *(r0);
0x00029752 mov r0, r4 | r0 = r4;
0x00029754 blx 0x13cc | fcn_000013cc ();
0x00029758 ldr r3, [pc, 0x44] |
0x0002975a movs r1, 4 | r1 = 4;
0x0002975c strd r4, r0, [sp] | __asm ("strd r4, r0, [sp]");
0x00029760 ldr r2, [pc, 0x40] |
0x00029762 ldr r0, [pc, 0x44] |
0x00029764 add r3, pc | r3 = 0x52f08;
0x00029766 add r2, pc | r2 = 0x52f0e;
0x00029768 add r0, pc | r0 = 0x52f16;
0x0002976a bl 0x2f4bc | fcn_0002f4bc ();
0x0002976e b 0x29710 | goto label_1;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/sbin/mdnsd @ 0x2fff0 */
| #include <stdint.h>
|
; (fcn) fcn.0002fff0 () | void fcn_0002fff0 (int16_t arg_a0h, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_0h;
| int16_t var_0h_2;
| int16_t var_4h;
| int16_t var_8h;
| size_t var_ch;
| char * src;
| int16_t var_12h;
| int16_t var_14h;
| long var_18h;
| int16_t var_28h;
| int16_t var_2ah;
| long offset;
| int16_t var_2fh;
| long var_30h;
| int16_t var_39h;
| int16_t var_3ah;
| long var_3ch;
| int16_t whence;
| int16_t var_0h_3;
| int16_t var_50h;
| int16_t var_54h;
| int16_t var_7ch;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x0002fff0 push.w {r4, r5, r6, r7, r8, sb, lr} |
0x0002fff4 mov r7, r2 | r7 = r2;
0x0002fff6 ldr r2, [pc, 0x230] |
0x0002fff8 mov r8, r3 | r8 = r3;
0x0002fffa sub sp, 0x84 |
0x0002fffc invalid |
0x00030000 add r1, sp, 0x28 | r1 += var_28h;
0x00030002 add r2, pc | r2 = 0x60230;
0x00030004 ldr.w sb, [sp, 0xa0] | sb = *(arg_a0h);
0x00030006 str r0, [sp, 0x280] | *((sp + 0x280)) = r0;
0x00030008 ldr r3, [r2, r3] |
0x0003000a movs r2, 0x1c | r2 = 0x1c;
0x0003000c ldr r3, [r3] | r3 = imp.__aeabi_unwind_cpp_pr0;
0x0003000e str r3, [sp, 0x7c] | var_7ch = r3;
0x00030010 mov.w r3, 0 | r3 = 0;
0x00030014 mov.w r3, 0x4000 | r3 = 0x4000;
0x00030018 strd r2, r3, [sp, 8] | __asm ("strd r2, r3, [var_8h]");
0x0003001c add r2, sp, 8 | r2 += var_8h;
0x0003001e blx 0x134c | r0 = getsockopt ();
0x00030022 subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 < r0) {
0x00030024 blt.w 0x30142 | goto label_11;
| }
0x00030028 mov.w r2, 0x800 | r2 = 0x800;
0x0003002c movs r1, 4 | r1 = 4;
0x0003002e blx 0x143c | r0 = printf_chk ()
0x00030032 cmp r0, 0 |
| if (r0 < 0) {
0x00030034 blt.w 0x30154 | goto label_12;
| }
0x00030036 strh r6, [r1, 4] | *((r1 + 4)) = r6;
0x00030038 movs r6, 4 | r6 = 4;
0x0003003a add r3, sp, 0xc | r3 += var_ch;
0x0003003c movs r2, 0x19 | r2 = 0x19;
0x0003003e movs r1, 6 | r1 = 6;
0x00030040 mov r0, r4 | r0 = r4;
0x00030042 str r6, [sp] | *(sp) = r6;
0x00030044 blx 0x11f4 | r0 = fcn_000011f4 ();
0x00030048 cmp r0, 0 |
| if (r0 < 0) {
0x0003004a blt.w 0x3019e | goto label_13;
| }
0x0003004e ldrh.w r0, [sp, 0x28] | r0 = var_28h;
0x00030052 cmp r0, 0xa |
| if (r0 != 0xa) {
0x00030054 beq 0x300de |
0x00030056 cmp r0, 2 |
| if (r0 != 2) {
0x00030058 bne 0x30128 | goto label_14;
| }
0x0003005a ldr r3, [sp, 0x2c] | r3 = offset;
0x0003005c add r5, sp, 0x44 | r5 += whence;
0x0003005e mov r2, r5 | r2 = r5;
0x00030060 add r1, sp, 0x2c | r1 += offset;
0x00030062 str r6, [sp, 0x14] | var_14h = r6;
0x00030064 str r3, [sp, 0x18] | var_18h = r3;
0x00030066 ldrh.w r3, [sp, 0x2a] | r3 = var_2ah;
0x0003006a strh.w r3, [sp, 0x10] | src = r3;
0x0003006e movs r3, 0x2f | r3 = 0x2f;
0x00030070 blx 0x1520 | fseek (r0, r1, r2);
0x00030074 ldrh.w r6, [sp, 0x10] | r6 = src;
0x00030078 cmp r0, 0 |
| if (r0 == 0) {
0x0003007a beq 0x30170 | goto label_15;
| }
| label_0:
0x0003007c mov r0, r5 | r0 = r5;
0x0003007e rev16 r6, r6 | __asm ("rev16 r6, r6");
0x00030080 blx 0x1418 | fcntl ();
0x00030084 ldr r3, [pc, 0x1a8] |
0x00030086 uxth r6, r6 | r6 = (int16_t) r6;
0x00030088 mov r1, r0 | r1 = r0;
0x0003008a str r6, [sp, 4] | var_4h = r6;
0x0003008c adds r0, r5, r0 | r0 = r5 + r0;
0x0003008e add r3, pc | r3 = 0x602c2;
0x00030090 movs r6, 0x25 | r6 = 0x25;
0x00030092 str r3, [sp] | *(sp) = r3;
0x00030094 movs r2, 1 | r2 = 1;
0x00030096 strb r6, [r5, r1] | *((r5 + r1)) = r6;
0x00030098 mov.w r3, -1 | r3 = -1;
0x0003009c movs r1, 6 | r1 = 6;
0x0003009e adds r0, 1 | r0++;
0x000300a0 blx 0x15a8 | fcn_000015a8 ();
0x000300a4 mov r1, r4 | r1 = r4;
0x000300a6 mov r0, r7 | r0 = r7;
0x000300a8 bl 0x3220 | r0 = fcn_00003220 (r0, r1);
0x000300ac mov r6, r0 | r6 = r0;
0x000300ae cmp r0, 0 |
| if (r0 == 0) {
0x000300b0 beq.w 0x301f0 | goto label_16;
| }
0x000300b4 mov r3, r5 | r3 = r5;
0x000300b6 add r2, sp, 0x10 | r2 += src;
0x000300b8 add r1, sp, 0x14 | r1 += var_14h;
0x000300ba str.w sb, [sp] | __asm ("str.w sb, [sp]");
0x000300be blx r8 | uint32_t (*r8)(uint32_t, uint32_t, uint32_t) (r1, r2, r3);
| label_1:
0x000300c0 ldr r2, [pc, 0x170] |
0x000300c2 ldr r3, [pc, 0x168] | r3 = *(0x3022e);
0x000300c4 add r2, pc | r2 = 0x602fc;
0x000300c6 ldr r3, [r2, r3] | r3 = imp.__aeabi_unwind_cpp_pr0;
0x000300c8 ldr r2, [r3] | r2 = imp.__aeabi_unwind_cpp_pr0;
0x000300ca ldr r3, [sp, 0x7c] | r3 = var_7ch;
0x000300cc eors r2, r3 | r2 ^= r3;
0x000300ce mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x000300d2 bne.w 0x30224 | goto label_17;
| }
0x000300d6 mov r0, r6 | r0 = r6;
0x000300d8 add sp, 0x84 |
0x000300da pop.w {r4, r5, r6, r7, r8, sb, pc} |
| }
0x000300de add.w ip, sp, 0x2f |
0x000300e2 add.w r2, sp, 0x39 | r2 += var_39h;
| do {
0x000300e6 ldrb r3, [ip, 1]! | r3 = var_30h;
| if (r3 != 0) {
0x000300ea cbnz r3, 0x300fc | goto label_18;
| }
0x000300ec cmp r2, ip |
0x000300ee bne 0x300e6 |
| } while (r2 != ip);
0x000300f0 ldrh.w r2, [sp, 0x3a] | r2 = var_3ah;
0x000300f4 movw r3, 0xffff | r3 = 0xffff;
0x000300f8 cmp r2, r3 |
| if (r2 == r3) {
0x000300fa beq 0x30182 | goto label_19;
| }
| label_18:
0x000300fc movs r3, 6 | r3 = 6;
0x000300fe add r5, sp, 0x44 | r5 += whence;
0x00030100 add r6, sp, 0x30 | r6 += var_30h;
0x00030102 str r3, [sp, 0x14] | var_14h = r3;
0x00030104 mov r2, r5 | r2 = r5;
0x00030106 movs r3, 0x2f | r3 = 0x2f;
0x00030108 mov r1, r6 | r1 = r6;
0x0003010a movs r0, 0xa | r0 = 0xa;
0x0003010c blx 0x1520 | r0 = fseek (r0, r1, r2);
0x00030110 cmp r0, 0 |
| if (r0 == 0) {
0x00030112 beq 0x30208 | goto label_20;
| }
| label_4:
0x00030114 ldm.w r6, {r0, r1, r2, r3} | r0 = *(r6);
| r1 = *((r6 + 4));
| r2 = *((r6 + 8));
| r3 = *((r6 + 12));
0x00030118 add r6, sp, 0x18 | r6 += var_18h;
0x0003011a stm.w r6, {r0, r1, r2, r3} | *(r6) = r0;
| *((r6 + 4)) = r1;
| *((r6 + 8)) = r2;
| *((r6 + 12)) = r3;
| label_3:
0x0003011e ldrh.w r6, [sp, 0x2a] | r6 = var_2ah;
0x00030122 strh.w r6, [sp, 0x10] | src = r6;
0x00030126 b 0x3007c | goto label_0;
| label_14:
0x00030128 mov r3, r0 | r3 = r0;
0x0003012a ldr r2, [pc, 0x10c] |
0x0003012c ldr r0, [pc, 0x10c] |
0x0003012e mov r1, r6 | r1 = r6;
0x00030130 add r2, pc | r2 = 0x6036e;
0x00030132 add r0, pc | r0 = 0x60372;
0x00030134 bl 0x2f4bc | fcn_0002f4bc ();
0x00030136 vst3.16 {d20[0], d22[0], d24[0]}, [r2], r0 | __asm ("vst3.16 {d20[0], d22[0], d24[0]}, [r2], r0");
0x0003013a blx 0x1584 | fcn_00001584 ();
| do {
| label_2:
0x0003013e movs r6, 0 | r6 = 0;
0x00030140 b 0x300c0 | goto label_1;
| label_11:
0x00030142 ldr r2, [pc, 0xfc] |
0x00030144 mov r3, r4 | r3 = r4;
0x00030146 ldr r0, [pc, 0xfc] |
0x00030148 movs r1, 4 | r1 = 4;
0x0003014a add r2, pc | r2 = 0x60390;
0x0003014c add r0, pc | r0 = 0x60396;
0x0003014e bl 0x2f4bc | fcn_0002f4bc ();
0x00030152 b 0x3013e |
| } while (1);
| label_12:
0x00030154 mov r0, r4 | r0 = r4;
0x00030156 blx 0x1584 | fcn_00001584 ();
0x0003015a blx 0x1424 | memset (r0, r1, r2);
0x0003015c strd r4, sl, [r4, -0xe8]! | __asm ("strd r4, sl, [r4, -0xe8]!");
0x00030160 movs r1, 4 | r1 = 4;
0x00030162 ldr r3, [r0] | r3 = *(r0);
0x00030164 ldr r0, [pc, 0xe4] |
0x00030166 add r2, pc | r2 += pc;
0x00030168 add r0, pc | r0 = 0x603b8;
0x0003016a bl 0x2f4bc | fcn_0002f4bc ();
0x0003016e b 0x3013e | goto label_2;
| label_15:
0x00030170 ldr r2, [pc, 0xdc] |
0x00030172 mov r3, r5 | r3 = r5;
0x00030174 ldrh.w r6, [sp, 0x10] | r6 = src;
0x00030178 add r2, pc | r2 = 0x603cc;
0x0003017a ldm r2, {r0, r1, r2} | r0 = *(r2);
| r1 = *((r2 + 4));
| r2 = *((r2 + 8));
0x0003017c stm r3!, {r0, r1} | *(r3!) = r0;
| *((r3! + 4)) = r1;
0x0003017e strh r2, [r3] | *(r3) = r2;
0x00030180 b 0x3007c | goto label_0;
| if (r5 != 0) {
| label_19:
0x00030182 cbnz r5, 0x301ba | goto label_21;
| }
0x00030184 movs r3, 4 | r3 = 4;
0x00030186 add r5, sp, 0x44 | r5 += whence;
0x00030188 str r3, [sp, 0x14] | var_14h = r3;
0x0003018a mov r2, r5 | r2 = r5;
0x0003018c movs r3, 0x2f | r3 = 0x2f;
0x0003018e add r1, sp, 0x3c | r1 += var_3ch;
0x00030190 movs r0, 2 | r0 = 2;
0x00030192 blx 0x1520 | r0 = fseek (r0, r1, r2);
0x00030196 cbz r0, 0x301e2 |
| while (1) {
0x00030198 ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x0003019a str r3, [sp, 0x18] | var_18h = r3;
0x0003019c b 0x3011e | goto label_3;
| label_13:
0x0003019e mov r0, r4 | r0 = r4;
0x000301a0 blx 0x1584 | fcn_00001584 ();
0x000301a4 blx 0x1424 | memset (r0, r1, r2);
0x000301a8 ldr r2, [pc, 0xa8] |
0x000301aa mov r1, r6 | r1 = r6;
0x000301ac ldr r3, [r0] | r3 = *(r0);
0x000301ae ldr r0, [pc, 0xa8] |
0x000301b0 add r2, pc | r2 = 0x60408;
0x000301b2 add r0, pc | r0 = 0x60410;
0x000301b4 bl 0x2f4bc | fcn_0002f4bc ();
0x000301b8 b 0x3013e | goto label_2;
| label_21:
0x000301ba add r5, sp, 0x44 | r5 += whence;
0x000301bc movs r3, 0x2f | r3 = 0x2f;
0x000301be mov r2, r5 | r2 = r5;
0x000301c0 add r1, sp, 0x3c | r1 += var_3ch;
0x000301c2 movs r0, 2 | r0 = 2;
0x000301c4 blx 0x1520 | r0 = fseek (r0, r1, r2);
| if (r0 == 0) {
0x000301c8 cbz r0, 0x30216 | goto label_22;
| }
| label_5:
0x000301ca ldr r2, [pc, 0x90] |
0x000301cc mov r3, r5 | r3 = r5;
0x000301ce ldr r0, [pc, 0x90] |
0x000301d0 movs r1, 4 | r1 = 4;
0x000301d2 add r2, pc | r2 = 0x60434;
0x000301d4 add r0, pc | r0 = 0x6043a;
0x000301d6 bl 0x2f4bc | fcn_0002f4bc ();
0x000301da mov r0, r4 | r0 = r4;
0x000301dc blx 0x1584 | fcn_00001584 ();
0x000301e0 b 0x3013e | goto label_2;
0x000301e2 ldr r2, [pc, 0x80] |
0x000301e4 mov r3, r5 | r3 = r5;
0x000301e6 add r2, pc | r2 = 0x60450;
0x000301e8 ldm r2, {r0, r1, r2} | r0 = *(r2);
| r1 = *((r2 + 4));
| r2 = *((r2 + 8));
0x000301ea stm r3!, {r0, r1} | *(r3!) = r0;
| *((r3! + 4)) = r1;
0x000301ec strh r2, [r3] | *(r3) = r2;
0x000301ee b 0x30198 |
| }
| label_16:
0x000301f0 ldr r2, [pc, 0x74] |
0x000301f2 mov r3, r5 | r3 = r5;
0x000301f4 ldr r0, [pc, 0x74] |
0x000301f6 movs r1, 4 | r1 = 4;
0x000301f8 add r2, pc | r2 = 0x60464;
0x000301fa add r0, pc | r0 = 0x6046a;
0x000301fc bl 0x2f4bc | fcn_0002f4bc ();
0x00030200 mov r0, r4 | r0 = r4;
0x00030202 blx 0x1584 | fcn_00001584 ();
0x00030206 b 0x3013e | goto label_2;
| label_20:
0x00030208 ldr r2, [pc, 0x64] |
0x0003020a mov r3, r5 | r3 = r5;
0x0003020c add r2, pc | r2 = 0x60480;
0x0003020e ldm r2, {r0, r1, r2} | r0 = *(r2);
| r1 = *((r2 + 4));
| r2 = *((r2 + 8));
0x00030210 stm r3!, {r0, r1} | *(r3!) = r0;
| *((r3! + 4)) = r1;
0x00030212 strh r2, [r3] | *(r3) = r2;
0x00030214 b 0x30114 | goto label_4;
| label_22:
0x00030216 ldr r2, [pc, 0x5c] |
0x00030218 mov r3, r5 | r3 = r5;
0x0003021a add r2, pc | r2 = 0x60494;
0x0003021c ldm r2, {r0, r1, r2} | r0 = *(r2);
| r1 = *((r2 + 4));
| r2 = *((r2 + 8));
0x0003021e stm r3!, {r0, r1} | *(r3!) = r0;
| *((r3! + 4)) = r1;
0x00030220 strh r2, [r3] | *(r3) = r2;
0x00030222 b 0x301ca | goto label_5;
| label_17:
0x00030224 blx 0x12ec | getrlimit ();
0x00030228 ldr r6, [r2, 0x5c] | r6 = *((r2 + 0x5c));
0x0003022a movs r1, r0 | r1 = r0;
0x0003022c lsls r0, r7, 5 | r0 = r7 << 5;
0x0003022e movs r0, r0 |
| if (r0 >= r0) {
0x00030230 bls 0x30288 |
0x00030232 movs r0, r0 |
0x00030234 ldr r4, [r2, 0x50] | r4 = *((r2 + 0x50));
0x00030236 movs r1, r0 | r1 = r0;
0x00030238 adds r1, 0x54 | r1 += 0x54;
0x0003023a movs r1, r0 | r1 = r0;
0x0003023c invalid |
| }
0x00030288 mov r4, r3 | r4 = r3;
0x0003028a add r1, pc | r1 += pc;
0x0003028c ldrb.w r8, [sp, 0x50] | r8 = var_50h;
0x00030290 ldr r2, [r1, r2] | r2 = *((r1 + r2));
0x00030292 ldr r2, [r2] | r2 = *(r2);
0x00030294 str r2, [sp, 0x2c] | offset = r2;
0x00030296 mov.w r2, 0 | r2 = 0;
0x0003029a movs r2, 1 | r2 = 1;
0x0003029c str r2, [sp, 8] | var_8h = r2;
| if (r3 != 0) {
0x0003029e cbz r3, 0x302a6 |
0x000302a0 ldr r3, [r3] | r3 = *(r3);
0x000302a2 cmp r3, r5 |
| if (r3 != r5) {
0x000302a4 bne 0x3035c | goto label_23;
| }
| }
0x000302a6 cmp r6, 0 |
| if (r6 == 0) {
0x000302a8 beq 0x3038e | goto label_24;
| }
0x000302aa add.w sb, sp, 0x10 | sb += src;
0x000302ae movs r1, 0x1c | r1 = 0x1c;
0x000302b0 mov r0, sb | r0 = sb;
0x000302b2 bl 0x3b4c | fcn_00003b4c (r0);
0x000302b6 cmp r5, 6 |
0x000302b8 it ne |
| if (r5 != 6) {
0x000302ba cmpne r5, 0 | __asm ("cmpne r5, 0");
| }
| if (r5 != 6) {
0x000302bc bne 0x30340 | goto label_25;
| }
| if (r4 != 0) {
0x000302be cbz r4, 0x302cc |
0x000302c0 ldr r0, [r4, 4] | r0 = *((r4 + 4));
0x000302c2 ldr r1, [r4, 8] | r1 = *((r4 + 8));
0x000302c4 ldr r2, [r4, 0xc] | r2 = *((r4 + 0xc));
0x000302c6 ldr r3, [r4, 0x10] | r3 = *((r4 + 0x10));
0x000302c8 add r4, sp, 0x18 | r4 += var_18h;
0x000302ca stm r4!, {r0, r1, r2, r3} | *(r4!) = r0;
| *((r4! + 4)) = r1;
| *((r4! + 8)) = r2;
| *((r4! + 12)) = r3;
| }
0x000302cc ldrh r3, [r6] | r3 = *(r6);
0x000302ce movs r0, 0xa | r0 = 0xa;
0x000302d0 strh.w r0, [sp, 0x10] | src = r0;
0x000302d4 strh.w r3, [sp, 0x12] | var_12h = r3;
0x000302d8 movs r3, 0x1c | r3 = 0x1c;
0x000302da str r3, [sp, 0xc] | var_ch = r3;
| do {
0x000302dc movs r2, 6 | r2 = 6;
0x000302de movs r1, 1 | r1 = 1;
0x000302e0 blx 0x152c | r0 = strncmp (r0, r1, r2);
0x000302e4 subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 < r0) {
0x000302e6 blt 0x303b0 | goto label_26;
| }
0x000302e8 str r4, [r7] | *(r7) = r4;
0x000302ea cmp.w r8, 0 |
| if (r8 != 0) {
0x000302ee beq 0x30302 |
0x000302f0 movs r5, 4 | r5 = 4;
0x000302f2 add r3, sp, 8 | r3 += var_8h;
0x000302f4 movs r2, 2 | r2 = 2;
0x000302f6 movs r1, 1 | r1 = 1;
0x000302f8 str r5, [sp] | *(sp) = r5;
0x000302fa blx 0x11f4 | r0 = fcn_000011f4 ();
0x000302fe cmp r0, 0 |
| if (r0 < 0) {
0x00030300 blt 0x303e8 | goto label_27;
| }
| }
0x00030302 ldr r2, [sp, 0xc] | r2 = var_ch;
0x00030304 mov r1, sb | r1 = sb;
0x00030306 mov r0, r4 | r0 = r4;
0x00030308 blx 0x1430 | r0 = strncpy (r0, r1, r2);
0x0003030c cmp r0, 0 |
| if (r0 < 0) {
0x0003030e blt 0x303cc | goto label_28;
| }
0x00030310 ldrh r3, [r6] | r3 = *(r6);
| if (r3 == 0) {
0x00030312 cbz r3, 0x30370 | goto label_29;
| }
| label_7:
0x00030314 ldr r1, [sp, 0x54] | r1 = var_54h;
0x00030316 mov r0, r4 | r0 = r4;
0x00030318 blx 0x14d4 | r0 = fcn_000014d4 ();
0x0003031c cmp r0, 0 |
0x0003031e it ge |
| if (r0 < 0) {
0x00030320 movge r0, 1 | r0 = 1;
| }
| if (r0 < 0) {
0x00030322 blt 0x30404 | goto label_30;
| }
| label_6:
0x00030324 ldr r2, [pc, 0x120] |
0x00030326 ldr r3, [pc, 0x11c] | r3 = *(0x30446);
0x00030328 add r2, pc | r2 = 0x60774;
0x0003032a ldr r3, [r2, r3] | r3 = imp.__aeabi_unwind_cpp_pr0;
0x0003032c ldr r2, [r3] | r2 = imp.__aeabi_unwind_cpp_pr0;
0x0003032e ldr r3, [sp, 0x2c] | r3 = offset;
0x00030330 eors r2, r3 | r2 ^= r3;
0x00030332 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00030336 bne.w 0x3043c | goto label_31;
| }
0x0003033a add sp, 0x34 |
0x0003033c pop.w {r4, r5, r6, r7, r8, sb, pc} |
| label_25:
0x00030340 cmp r5, 4 |
| if (r5 != 4) {
0x00030342 bne 0x3039e | goto label_32;
| }
| if (r4 != 0) {
0x00030344 cbz r4, 0x3034a |
0x00030346 ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x00030348 str r3, [sp, 0x14] | var_14h = r3;
| }
0x0003034a ldrh r3, [r6] | r3 = *(r6);
0x0003034c movs r0, 2 | r0 = 2;
0x0003034e strh.w r0, [sp, 0x10] | src = r0;
0x00030352 strh.w r3, [sp, 0x12] | var_12h = r3;
0x00030356 movs r3, 0x10 | r3 = 0x10;
0x00030358 str r3, [sp, 0xc] | var_ch = r3;
0x0003035a b 0x302dc |
| } while (1);
| label_23:
0x0003035c ldr r2, [pc, 0xec] |
0x0003035e movs r1, 4 | r1 = 4;
0x00030360 ldr r0, [pc, 0xec] |
0x00030362 str r5, [sp] | *(sp) = r5;
0x00030364 add r2, pc | r2 = 0x607b4;
0x00030366 add r0, pc | r0 = 0x607ba;
0x00030368 bl 0x2f4bc | fcn_0002f4bc ();
| do {
| label_8:
0x0003036c movs r0, 0 | r0 = 0;
0x0003036e b 0x30324 | goto label_6;
| label_29:
0x00030370 movs r1, 0x1c | r1 = 0x1c;
0x00030372 mov r0, sb | r0 = sb;
0x00030374 bl 0x3b4c | fcn_00003b4c (r0);
0x00030378 add r2, sp, 0xc | r2 += var_ch;
0x0003037a mov r1, sb | r1 = sb;
0x0003037c mov r0, r4 | r0 = r4;
0x0003037e blx 0x14f8 | r0 = fcn_000014f8 ();
0x00030382 cmp r0, 0 |
| if (r0 < 0) {
0x00030384 blt 0x30420 | goto label_33;
| }
0x00030386 ldrh.w r3, [sp, 0x12] | r3 = var_12h;
0x0003038a strh r3, [r6] | *(r6) = r3;
0x0003038c b 0x30314 | goto label_7;
| label_24:
0x0003038e ldr r2, [pc, 0xc4] |
0x00030390 movs r1, 4 | r1 = 4;
0x00030392 ldr r0, [pc, 0xc4] |
0x00030394 add r2, pc | r2 = 0x607ee;
0x00030396 add r0, pc | r0 = 0x607f4;
0x00030398 bl 0x2f4bc | fcn_0002f4bc ();
0x0003039c b 0x3036c |
| } while (1);
| label_32:
0x0003039e ldr r2, [pc, 0xbc] |
0x000303a0 mov r3, r5 | r3 = r5;
0x000303a2 ldr r0, [pc, 0xbc] |
0x000303a4 movs r1, 4 | r1 = 4;
0x000303a6 add r2, pc | r2 = 0x60808;
0x000303a8 add r0, pc | r0 = 0x6080e;
0x000303aa bl 0x2f4bc | fcn_0002f4bc ();
0x000303ae b 0x3036c | goto label_8;
| label_26:
0x000303b0 blx 0x1424 | r0 = memset (r0, r1, r2);
0x000303b4 ldr r0, [r0] | r0 = *(r0);
0x000303b6 blx 0x13cc | fcn_000013cc ();
0x000303ba ldr r2, [pc, 0xa8] |
0x000303bc mov r3, r0 | r3 = r0;
0x000303be ldr r0, [pc, 0xa8] |
0x000303c0 movs r1, 4 | r1 = 4;
0x000303c2 add r2, pc | r2 = 0x6082c;
0x000303c4 add r0, pc | r0 = 0x60832;
0x000303c6 bl 0x2f4bc | fcn_0002f4bc ();
0x000303ca b 0x3036c | goto label_8;
| label_28:
0x000303cc blx 0x1424 | r0 = memset (r0, r1, r2);
0x000303d0 ldr r0, [r0] | r0 = *(r0);
0x000303d2 blx 0x13cc | fcn_000013cc ();
0x000303d6 ldr r2, [pc, 0x94] |
0x000303d8 mov r3, r0 | r3 = r0;
0x000303da ldr r0, [pc, 0x94] |
0x000303dc movs r1, 4 | r1 = 4;
0x000303de add r2, pc | r2 = 0x60850;
0x000303e0 add r0, pc | r0 = 0x60856;
0x000303e2 bl 0x2f4bc | fcn_0002f4bc ();
0x000303e6 b 0x3036c | goto label_8;
| label_27:
0x000303e8 blx 0x1424 | r0 = memset (r0, r1, r2);
0x000303ec ldr r0, [r0] | r0 = *(r0);
0x000303ee blx 0x13cc | fcn_000013cc ();
0x000303f2 ldr r2, [pc, 0x80] |
0x000303f4 mov r3, r0 | r3 = r0;
0x000303f6 ldr r0, [pc, 0x80] |
0x000303f8 mov r1, r5 | r1 = r5;
0x000303fa add r2, pc | r2 = 0x60874;
0x000303fc add r0, pc | r0 = 0x6087a;
0x000303fe bl 0x2f4bc | fcn_0002f4bc ();
0x00030402 b 0x3036c | goto label_8;
| label_30:
0x00030404 blx 0x1424 | r0 = memset (r0, r1, r2);
0x00030408 ldr r0, [r0] | r0 = *(r0);
0x0003040a blx 0x13cc | fcn_000013cc ();
0x0003040e ldr r2, [pc, 0x6c] |
0x00030410 mov r3, r0 | r3 = r0;
0x00030412 ldr r0, [pc, 0x6c] |
0x00030414 movs r1, 4 | r1 = 4;
0x00030416 add r2, pc | r2 = 0x60898;
0x00030418 add r0, pc | r0 = 0x6089e;
0x0003041a bl 0x2f4bc | fcn_0002f4bc ();
0x0003041e b 0x3036c | goto label_8;
| label_33:
0x00030420 blx 0x1424 | r0 = memset (r0, r1, r2);
0x00030424 ldr r0, [r0] | r0 = *(r0);
0x00030426 blx 0x13cc | fcn_000013cc ();
0x0003042a ldr r2, [pc, 0x58] |
0x0003042c mov r3, r0 | r3 = r0;
0x0003042e ldr r0, [pc, 0x58] |
0x00030430 movs r1, 4 | r1 = 4;
0x00030432 add r2, pc | r2 = 0x608bc;
0x00030434 add r0, pc | r0 = 0x608c2;
0x00030436 bl 0x2f4bc | fcn_0002f4bc ();
0x0003043a b 0x3036c | goto label_8;
| label_31:
0x0003043c blx 0x12ec | getrlimit ();
0x00030440 ldr r6, [r1, 0x34] | r6 = *((r1 + 0x34));
0x00030442 movs r1, r0 | r1 = r0;
0x00030444 lsls r0, r7, 5 | r0 = r7 << 5;
0x00030446 movs r0, r0 |
0x00030448 ldr r0, [r6, 0x28] | r0 = *((r6 + 0x28));
0x0003044a movs r1, r0 | r1 = r0;
0x0003044c cmp r7, 0xc8 |
0x0003044e movs r1, r0 | r1 = r0;
0x00030450 cmp r2, fp |
0x00030452 movs r0, r0 |
0x00030454 cmp r7, 0xcc |
0x00030456 movs r1, r0 | r1 = r0;
0x00030458 cmp r2, r5 |
0x0003045a movs r0, r0 |
0x0003045c cmp r7, 0xea |
0x0003045e movs r1, r0 | r1 = r0;
0x00030460 cmp r0, r3 |
0x00030462 movs r0, r0 |
0x00030464 cmp r7, 0xfe |
0x00030466 movs r1, r0 | r1 = r0;
0x00030468 add ip, pc |
0x0003046a movs r0, r0 |
0x0003046c adds r0, 0x42 | r0 += 0x42;
0x0003046e movs r1, r0 | r1 = r0;
0x00030470 add r8, ip | r8 += ip;
0x00030472 movs r0, r0 |
0x00030474 cmp r7, 0xf6 |
0x00030476 movs r1, r0 | r1 = r0;
0x00030478 add ip, r8 |
0x0003047a movs r0, r0 |
0x0003047c adds r0, 0x56 | r0 += 0x56;
0x0003047e movs r1, r0 | r1 = r0;
0x00030480 add r8, r5 | r8 += r5;
0x00030482 movs r0, r0 |
0x00030484 adds r0, 0x16 | r0 += 0x16;
0x00030486 movs r1, r0 | r1 = r0;
0x00030488 add ip, r1 |
0x0003048a movs r0, r0 |
0x0003048c push {r4, r5, r6, lr} |
0x0003048e mov r4, r3 | r4 = r3;
0x00030490 sub sp, 8 |
0x00030492 movs r3, 0 | r3 = 0;
0x00030494 mov r5, r0 | r5 = r0;
0x00030496 blx 0x1578 | r0 = fcn_00001578 ();
0x0003049a cmp r0, 0 |
| if (r0 <= 0) {
0x0003049c ble 0x304ac | goto label_34;
| }
0x0003049e ldr r3, [pc, 0xec] |
0x000304a0 movs r2, 0 | r2 = 0;
0x000304a2 add r3, pc | r3 = 0x60a34;
0x000304a4 strd r2, r2, [r3, 4] | __asm ("strd r2, r2, [r3, 4]");
| do {
| label_10:
0x000304a8 add sp, 8 |
0x000304aa pop {r4, r5, r6, pc} |
| if (r2 != 0) {
| label_34:
0x000304ac bne 0x304e2 | goto label_35;
| }
0x000304ae ldr r6, [pc, 0xe0] |
0x000304b0 movs r1, 1 | r1 = 1;
0x000304b2 movw r2, 0xcccd |
0x000304b6 movw r3, 0x9998 |
0x000304ba movt r2, 0xcccc | r2 = 0xcccccccd;
0x000304be movt r3, 0x1999 | r3 = 0x19999998;
0x000304c2 add r6, pc | r6 = 0x60a58;
0x000304c4 strb r1, [r4] | *(r4) = r1;
0x000304c6 ldr r0, [r6, 4] | r0 = imp.__aeabi_unwind_cpp_pr0;
0x000304c8 add r0, r1 | r0 += r1;
0x000304ca mla r3, r2, r0, r3 | __asm ("mla r3, r2, r0, r3");
0x000304ce str r0, [r6, 4] | *((r6 + 4)) = r0;
0x000304d0 movw r2, 0xcccc |
0x000304d4 movt r2, 0xccc | r2 = 0xccccccc;
0x000304d8 cmp.w r2, r3, ror 2 |
| if (r2 >= r3) {
0x000304dc bhs 0x3053c | goto label_36;
| }
| label_9:
0x000304de movs r0, 0 | r0 = 0;
0x000304e0 b 0x304a8 |
| } while (1);
| label_35:
0x000304e2 blx 0x1424 | r0 = memset (r0, r1, r2);
0x000304e6 ldr r6, [r0] | r6 = *(r0);
0x000304e8 cmp r6, 0x68 |
| if (r6 == 0x68) {
0x000304ea beq 0x30536 | goto label_37;
| }
0x000304ec cmp r6, 0xb |
| if (r6 != 0xb) {
0x000304ee bne 0x3056c | goto label_38;
| }
0x000304f0 ldr r1, [pc, 0xa0] |
0x000304f2 movw r0, 0x78d5 |
0x000304f6 movw r3, 0x24d8 |
0x000304fa movt r0, 0x26e9 | r0 = 0x26e978d5;
0x000304fe movt r3, 0x106 | r3 = 0x10624d8;
0x00030502 movw r2, 0x8936 |
0x00030506 add r1, pc | r1 = 0x60a9e;
0x00030508 movt r2, 0x41 | r2 = 0x418936;
0x0003050c subs r0, r3, r5 | r0 = r3 - r5;
0x0003050e adds r4, 1 | r4++;
0x00030510 mla r3, r0, r4, r3 | __asm ("mla r3, r0, r4, r3");
0x00030514 str r4, [r1, 8] | *((r1 + 8)) = r4;
0x00030516 cmp.w r2, r3, ror 3 |
| if (r2 <= r3) {
0x0003051a blo 0x304de | goto label_9;
| }
0x0003051c ldr r2, [pc, 0x78] |
0x0003051e mov r3, r5 | r3 = r5;
0x00030520 ldr r0, [pc, 0x78] |
0x00030522 movs r1, 4 | r1 = 4;
0x00030524 str r4, [sp] | *(sp) = r4;
0x00030526 add r2, pc | r2 = 0x60ac2;
0x00030528 add r0, pc | r0 = 0x60ac8;
0x0003052a bl 0x2f4bc | fcn_0002f4bc ();
0x0003052e movs r0, 1 | r0 = 1;
0x00030530 blx 0x12c8 | strdup (r0);
0x00030534 b 0x304de | goto label_9;
| label_37:
0x00030536 movs r3, 1 | r3 = 1;
0x00030538 strb r3, [r4] | *(r4) = r3;
0x0003053a b 0x304de | goto label_9;
| label_36:
0x0003053c str r0, [sp] | *(sp) = r0;
0x0003053e mov r3, r5 | r3 = r5;
0x00030540 ldr r2, [pc, 0x5c] |
0x00030542 movs r1, 4 | r1 = 4;
0x00030544 ldr r0, [pc, 0x5c] |
0x00030546 add r2, pc | r2 = 0x60aea;
0x00030548 add r0, pc | r0 = 0x60af0;
0x0003054a bl 0x2f4bc | fcn_0002f4bc ();
0x0003054e ldr r3, [r6, 4] | r3 = *((r6 + 4));
0x00030550 cmp.w r3, 0x3e8 |
| if (r3 < 0x3e8) {
0x00030554 blt 0x304de | goto label_9;
| }
0x00030556 ldr r3, [pc, 0x50] |
0x00030558 movw r2, 0x2a6 | r2 = 0x2a6;
0x0003055c ldr r1, [pc, 0x4c] |
0x0003055e ldr r0, [pc, 0x50] |
0x00030560 add r3, pc | r3 = 0x60b0e;
0x00030562 add r1, pc | r1 = 0x60b12;
0x00030564 adds r3, 0x18 | r3 += 0x18;
0x00030566 add r0, pc | r0 = 0x60b1c;
0x00030568 blx 0x15b4 | fcn_000015b4 ();
| label_38:
0x0003056c mov r0, r6 | r0 = r6;
0x0003056e blx 0x13cc | fcn_000013cc ();
0x00030572 ldr r2, [pc, 0x40] |
0x00030574 mov r4, r0 | r4 = r0;
0x00030576 ldr r0, [pc, 0x40] |
0x00030578 mov r3, r6 | r3 = r6;
0x0003057a movs r1, 4 | r1 = 4;
0x0003057c str r4, [sp] | *(sp) = r4;
0x0003057e add r2, pc | r2 = 0x60b38;
0x00030580 add r0, pc | r0 = 0x60b3e;
0x00030582 bl 0x2f4bc | fcn_0002f4bc ();
0x00030586 mov.w r0, -1 | r0 = -1;
0x0003058a b 0x304a8 | goto label_10;
| }
[*] Function printf used 11 times mdnsd