[*] Binary protection state of suexec
Full RELRO Canary found NX enabled PIE enabled No RPATH No RUNPATH No Symbols
[*] Function fprintf tear down of suexec
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/sbin/suexec @ 0x15d0 */
| #include <stdint.h>
|
; (fcn) fcn.000015d0 () | void fcn_000015d0 (int16_t arg_ch, int16_t arg_10h, int16_t arg_14h, int16_t arg_18h, int16_t arg_1ch, int16_t arg_20h, int16_t arg_24h, void * arg_28h, int16_t arg_2ch, void * buf, int16_t arg_10e0h) {
| int16_t var_97h;
| int16_t var_0h;
| int16_t var_4h;
| label_6:
0x00001114 movs r1, 1 | r1 = 1;
0x00001116 ldr r0, [r4] | r0 = *(r4);
0x00001118 add r2, pc | r2 += pc;
0x0000111a blx 0xe9c | fprintf_chk ()
0x0000111e ldr.w r3, [pc, 0x448] |
0x00001122 movs r1, 1 | r1 = 1;
0x00001124 ldr.w r2, [pc, 0x444] |
0x00001128 ldr r0, [r4] | r0 = *(r4);
0x0000112a add r3, pc | r3 = 0x2698;
0x0000112c add r2, pc | r2 = 0x269c;
0x0000112e blx 0xe9c | fprintf_chk ()
0x00001132 ldr.w r2, [pc, 0x43c] |
0x00001136 movs r3, 0xa6 | r3 = 0xa6;
0x00001138 movs r1, 1 | r1 = 1;
0x0000113a ldr r0, [r4] | r0 = *(r4);
0x0000113c add r2, pc | r2 = 0x26b2;
0x0000113e blx 0xe9c | fprintf_chk ()
0x00001142 ldr.w r2, [pc, 0x430] |
0x00001146 movs r3, 0x69 | r3 = 0x69;
0x00001148 ldr r0, [r4] | r0 = *(r4);
0x0000114a movs r1, 1 | r1 = 1;
0x0000114c add r2, pc | r2 = 0x26c6;
0x0000114e blx 0xe9c | fprintf_chk ()
0x00001152 movs r0, 0 | r0 = 0;
0x00001154 blx 0xe6c | exit (r0);
0x00001158 movs r0, 0x66 | r0 = 0x66;
0x0000115a blx 0xe6c | exit (r0);
0x0000115e ldrb r3, [r6] | r3 = *(r6);
0x00001160 ldr.w r1, [pc, 0x414] |
0x00001164 cmp r3, 0x7e |
0x00001166 itt eq |
| if (r3 != 0x7e) {
0x00001168 addeq r6, 1 | r6++;
| }
| if (r3 != 0x7e) {
0x0000116a moveq r3, 1 | r3 = 1;
| }
0x0000116c add r1, pc | r1 = 0x26e8;
0x0000116e mov r0, r6 | r0 = r6;
0x00001170 ite eq |
| if (r3 != 0x7e) {
0x00001172 streq r3, [sp, 0xc] | *(arg_ch) = r3;
| }
| if (r3 == 0x7e) {
0x00001174 strne r5, [sp, 0xc] | *(arg_ch) = r5;
| }
0x00001176 blx 0xefc | r0 = strspn (r0, r1);
0x0000117a mov r8, r0 | r8 = r0;
0x0000117c mov r0, r6 | r0 = r6;
0x0000117e blx 0xe78 | r0 = strlen (r0);
0x00001182 cmp r8, r0 |
0x00001184 mov r0, r6 | r0 = r6;
| if (r8 == r0) {
0x00001186 beq 0x1202 | goto label_7;
| }
0x00001188 blx 0xdac | r0 = getpwnam ();
0x0000118c mov r6, r0 | r6 = r0;
0x0000118e cmp r0, 0 |
| if (r0 == 0) {
0x00001190 beq 0x1248 | goto label_8;
| }
| do {
0x00001192 ldr r1, [pc, 0x3e8] |
0x00001194 mov r0, r7 | r0 = r7;
0x00001196 add r1, pc | r1 = 0x2718;
0x00001198 blx 0xefc | r0 = strspn (r0, r1);
0x0000119c mov r8, r0 | r8 = r0;
0x0000119e mov r0, r7 | r0 = r7;
0x000011a0 blx 0xe78 | r0 = strlen (r0);
0x000011a4 cmp r8, r0 |
0x000011a6 mov r0, r7 | r0 = r7;
| if (r8 == r0) {
0x000011a8 beq 0x121a | goto label_9;
| }
0x000011aa blx 0xee4 | r0 = getgrnam ();
0x000011ae mov r3, r0 | r3 = r0;
0x000011b0 cmp r0, 0 |
| if (r0 == 0) {
0x000011b2 beq 0x122c | goto label_10;
| }
| label_0:
0x000011b4 ldr r0, [r3] | r0 = *(r3);
0x000011b6 ldr r7, [r3, 8] | r7 = *((r3 + 8));
0x000011b8 blx 0xe0c | r0 = strdup (r0);
0x000011bc cmp r0, 0 |
| if (r0 == 0) {
0x000011be beq 0x1242 | goto label_11;
| }
0x000011c0 ldr r0, [r6] | r0 = *(r6);
0x000011c2 ldr.w fp, [r6, 8] | fp = *((r6 + 8));
0x000011c6 blx 0xe0c | r0 = strdup (r0);
0x000011ca mov sl, r0 | sl = r0;
0x000011cc ldr r0, [r6, 0x14] | r0 = *((r6 + 0x14));
0x000011ce blx 0xe0c | strdup (r0);
0x000011d2 str r0, [sp, 0x14] | *(arg_14h) = r0;
0x000011d4 cmp.w sl, 0 |
| if (sl == 0) {
0x000011d8 beq.w 0x1380 | goto label_12;
| }
0x000011dc clz r8, r0 | r8 &= r0;
0x000011e0 lsr.w r8, r8, 5 | r8 >>= 5;
0x000011e4 cmp r0, 0 |
| if (r0 == 0) {
0x000011e6 beq.w 0x1380 | goto label_12;
| }
0x000011ea sub.w r3, fp, 0x97 | r3 = fp - 0x97;
0x000011ee cmp r3, 0xf |
| if (r3 > 0xf) {
0x000011f0 bhi.w 0x137a | goto label_13;
| }
0x000011f4 sub.w r3, r7, 0x65 | r3 = r7 - 0x65;
0x000011f8 cmp r3, 4 |
| if (r3 < 4) {
0x000011fa bls 0x1232 | goto label_14;
| }
0x000011fc movs r0, 0x6c | r0 = 0x6c;
0x000011fe blx 0xe6c | exit (r0);
| label_7:
0x00001202 movs r2, 0xa | r2 = 0xa;
0x00001204 movs r1, 0 | r1 = 0;
0x00001206 blx 0xddc | r0 = strtol (r0, r1, r2);
0x0000120a blx 0xdf4 | r0 = getpwuid ();
0x0000120e mov r6, r0 | r6 = r0;
0x00001210 cmp r0, 0 |
0x00001212 bne 0x1192 |
| } while (r0 != 0);
| label_3:
0x00001214 movs r0, 0x79 | r0 = 0x79;
0x00001216 blx 0xe6c | exit (r0);
| label_9:
0x0000121a movs r2, 0xa | r2 = 0xa;
0x0000121c movs r1, 0 | r1 = 0;
0x0000121e blx 0xddc | r0 = strtol (r0, r1, r2);
0x00001222 blx 0xed8 | r0 = getgrgid ();
0x00001226 mov r3, r0 | r3 = r0;
0x00001228 cmp r0, 0 |
| if (r0 != 0) {
0x0000122a bne 0x11b4 | goto label_0;
| }
| label_10:
0x0000122c movs r0, 0x6a | r0 = 0x6a;
0x0000122e blx 0xe6c | exit (r0);
| label_14:
0x00001232 mov r0, r4 | r0 = r4;
0x00001234 blx 0xde8 | r0 = basename (r0);
0x00001238 cmp r4, r0 |
| if (r4 != r0) {
0x0000123a beq 0x124e |
0x0000123c movs r0, 0x7f | r0 = 0x7f;
0x0000123e blx 0xe6c | exit (r0);
| label_11:
0x00001242 movs r0, 0x7d | r0 = 0x7d;
0x00001244 blx 0xe6c | exit (r0);
| label_8:
0x00001248 movs r0, 0x69 | r0 = 0x69;
0x0000124a blx 0xe6c | exit (r0);
| }
0x0000124e ldr r3, [sp, 0x24] | r3 = *(arg_24h);
0x00001250 mov.w r1, 0x1000 | r1 = 0x1000;
0x00001254 sub.w sb, r3, 4 | sb = r3 - 4;
0x00001258 mov r0, sb | r0 = sb;
0x0000125a blx 0xe60 | r0 = getcwd ();
0x0000125e cmp r0, 0 |
| if (r0 == 0) {
0x00001260 beq 0x12f0 | goto label_15;
| }
0x00001262 ldr r3, [pc, 0x31c] |
0x00001264 mov r2, r8 | r2 = r8;
0x00001266 str r5, [sp, 0x10] | *(arg_10h) = r5;
0x00001268 mov r8, r7 | r8 = r7;
0x0000126a mov r5, r4 | r5 = r4;
0x0000126c mov r7, r2 | r7 = r2;
0x0000126e add r3, pc |
0x00001270 add.w r3, r3, 0x1a8 | r3 = 0x299c;
0x00001274 mov r4, r3 | r4 = r3;
0x00001276 b 0x1296 |
| while (r6 != 0) {
0x00001278 mov r0, r6 | r0 = r6;
0x0000127a blx 0xde8 | r0 = basename (r0);
0x0000127e mov r1, r0 | r1 = r0;
0x00001280 mov r0, r5 | r0 = r5;
0x00001282 blx 0xdc4 | r0 = strcmp (r0, r1);
| if (r0 == 0) {
0x00001286 cbnz r0, 0x1292 |
0x00001288 ldr r1, [r4] | r1 = *(r4);
0x0000128a mov r0, sb | r0 = sb;
0x0000128c blx 0xdc4 | r0 = strcmp (r0, r1);
| if (r0 == 0) {
0x00001290 cbz r0, 0x12f6 | goto label_16;
| }
| }
0x00001292 adds r7, 1 | r7++;
0x00001294 adds r4, 0x18 | r4 += 0x18;
0x00001296 ldr r6, [r4, 4] | r6 = *((r4 + 4));
0x00001298 cmp r6, 0 |
0x0000129a bne 0x1278 |
| }
0x0000129c mov r4, r5 | r4 = r5;
0x0000129e mov r1, r6 | r1 = r6;
0x000012a0 mov r0, r4 | r0 = r4;
0x000012a2 ldr r5, [sp, 0x10] | r5 = *(arg_10h);
0x000012a4 mov r7, r8 | r7 = r8;
0x000012a6 blx 0xecc | r0 = realpath ();
0x000012aa cmp r0, 0 |
| if (r0 == 0) {
0x000012ac beq 0x1386 | goto label_17;
| }
0x000012ae ldr.w ip, [pc, 0x2d4] | ip = *(0x00001584);
0x000012b2 movs r2, 0x14 | r2 = 0x14;
0x000012b4 str.w sb, [sp, 0x10] | __asm ("str.w sb, [arg_10h]");
0x000012b8 add ip, pc |
0x000012ba add.w r1, ip, 0x250 | r1 = ip + 0x250;
0x000012be mov sb, ip | sb = ip;
0x000012c0 strd r1, r5, [sp, 0x18] | __asm ("strd r1, r5, [sp, 0x18]");
0x000012c4 mov r5, r0 | r5 = r0;
0x000012c6 b 0x12da |
| while (r1 != 0) {
0x000012c8 mov r0, r5 | r0 = r5;
0x000012ca str r1, [sp, 0x2c] | *(arg_2ch) = r1;
0x000012cc blx 0xdc4 | strcmp (r0, r1);
0x000012d0 ldr r1, [sp, 0x2c] | r1 = *(arg_2ch);
0x000012d2 movs r2, 0x14 | r2 = 0x14;
0x000012d4 cmp r0, 0 |
| if (r0 == 0) {
0x000012d6 beq 0x138c | goto label_18;
| }
0x000012d8 adds r6, 1 | r6++;
0x000012da mul r8, r2, r6 | r8 = r2 * r6;
0x000012de ldr r3, [sp, 0x18] | r3 = *(arg_18h);
0x000012e0 ldr.w r1, [r8, r3] | r1 = *((r8 + r3));
0x000012e4 cmp r1, 0 |
0x000012e6 bne 0x12c8 |
| }
0x000012e8 ldr r5, [sp, 0x1c] | r5 = *(arg_1ch);
0x000012ea ldr.w sb, [sp, 0x10] | sb = *(arg_10h);
0x000012ee b 0x134a | goto label_19;
| label_15:
0x000012f0 movs r0, 0x6f | r0 = 0x6f;
0x000012f2 blx 0xe6c | exit (r0);
| label_16:
0x000012f6 movs r1, 0x10 | r1 = 0x10;
0x000012f8 movs r0, 1 | r0 = 1;
0x000012fa blx 0xd94 | calloc (r0, r1);
0x000012fe movs r1, 0x10 | r1 = 0x10;
0x00001300 mov r5, r0 | r5 = r0;
0x00001302 movs r0, 1 | r0 = 1;
0x00001304 mov r4, r6 | r4 = r6;
0x00001306 blx 0xd94 | r0 = calloc (r0, r1);
0x0000130a mov r6, r0 | r6 = r0;
0x0000130c mov r0, r5 | r0 = r5;
0x0000130e ldr r5, [pc, 0x278] |
0x00001310 movs r3, 0x18 | r3 = 0x18;
0x00001312 add r5, pc | r5 = 0x28a0;
0x00001314 mla r5, r3, r7, r5 | __asm ("mla r5, r3, r7, r5");
0x00001316 strb r7, [r0, r4] | *((r0 + r4)) = r7;
0x00001318 ldr r7, [pc, 0x270] |
0x0000131a movs r3, 0x10 | r3 = 0x10;
0x0000131c add r7, pc | r7 = 0x28ac;
0x0000131e mov r1, r3 | r1 = r3;
0x00001320 ldr.w r2, [r5, 0x1b4] | r2 = *(0x2a54);
0x00001324 str r7, [sp] | *(sp) = r7;
0x00001326 str r2, [sp, 4] | var_4h = r2;
0x00001328 mov fp, r2 |
0x0000132a movs r2, 1 | r2 = 1;
0x0000132c blx 0xef0 | snprintf_chk ();
0x00001330 str r7, [sp] | *(sp) = r7;
0x00001332 movs r3, 0x10 | r3 = 0x10;
0x00001334 ldr.w r7, [r5, 0x1bc] | r7 = *(0x2a5c);
0x00001338 mov r0, r6 | r0 = r6;
0x0000133a movs r2, 1 | r2 = 1;
0x0000133c mov r1, r3 | r1 = r3;
0x0000133e str r7, [sp, 4] | var_4h = r7;
0x00001340 blx 0xef0 | snprintf_chk ();
0x00001344 ldr.w sl, [r5, 0x1b0] | sl = *(0x2a50);
0x00001348 movs r5, 1 | r5 = 1;
| do {
| label_19:
0x0000134a mov r0, r7 | r0 = r7;
0x0000134c blx 0xe3c | r0 = setgid ();
| if (r0 == 0) {
0x00001350 cbnz r0, 0x135e |
0x00001352 mov r1, r7 | r1 = r7;
0x00001354 mov r0, sl | r0 = sl;
0x00001356 blx 0xe18 | r0 = initgroups ();
0x0000135a cmp r0, 0 |
| if (r0 == 0) {
0x0000135c beq 0x13e8 | goto label_20;
| }
| }
0x0000135e blx 0xe90 | r0 = errno_location ();
0x00001362 ldr r0, [r0] | r0 = *(r0);
0x00001364 blx 0xe48 | strerror (r0);
0x00001368 movs r0, 0x6d | r0 = 0x6d;
0x0000136a blx 0xe6c | exit (r0);
0x0000136e movs r0, 0x7c | r0 = 0x7c;
0x00001370 blx 0xe6c | exit (r0);
0x00001374 movs r0, 0x7b | r0 = 0x7b;
0x00001376 blx 0xe6c | exit (r0);
| label_13:
0x0000137a movs r0, 0x6b | r0 = 0x6b;
0x0000137c blx 0xe6c | exit (r0);
| label_12:
0x00001380 movs r0, 0x7e | r0 = 0x7e;
0x00001382 blx 0xe6c | exit (r0);
| label_17:
0x00001386 movs r0, 0x80 | r0 = 0x80;
0x00001388 blx 0xe6c | exit (r0);
| label_18:
0x0000138c mov ip, sb |
0x0000138e mov r5, r0 | r5 = r0;
0x00001390 mov r4, r1 | r4 = r1;
0x00001392 movs r0, 1 | r0 = 1;
0x00001394 movs r1, 0x10 | r1 = 0x10;
0x00001396 add.w r6, ip, r8 | r6 = ip + r8;
0x0000139a ldr.w sb, [sp, 0x10] | sb = *(arg_10h);
0x0000139e blx 0xd94 | calloc (r0, r1);
0x000013a2 movs r1, 0x10 | r1 = 0x10;
0x000013a4 mov r8, r0 | r8 = r0;
0x000013a6 movs r0, 1 | r0 = 1;
0x000013a8 blx 0xd94 | calloc (r0, r1);
0x000013ac ldr.w r3, [r6, 0x258] | r3 = *((r6 + 0x258));
0x000013b0 mov r7, r0 | r7 = r0;
0x000013b2 mov r0, r8 | r0 = r8;
0x000013b4 ldr.w r8, [pc, 0x1d8] |
0x000013b8 movs r2, 1 | r2 = 1;
0x000013ba str r3, [sp, 4] | var_4h = r3;
0x000013bc mov fp, r3 |
0x000013be add r8, pc | r8 = 0x2952;
0x000013c0 movs r3, 0x10 | r3 = 0x10;
0x000013c2 mov r1, r3 | r1 = r3;
0x000013c4 str.w r8, [sp] | __asm ("str.w r8, [sp]");
0x000013c8 blx 0xef0 | snprintf_chk ();
0x000013cc mov r0, r7 | r0 = r7;
0x000013ce ldr.w r7, [r6, 0x260] | r7 = *((r6 + 0x260));
0x000013d2 movs r3, 0x10 | r3 = 0x10;
0x000013d4 movs r2, 1 | r2 = 1;
0x000013d6 mov r1, r3 | r1 = r3;
0x000013d8 str.w r8, [sp] | __asm ("str.w r8, [sp]");
0x000013dc str r7, [sp, 4] | var_4h = r7;
0x000013de blx 0xef0 | snprintf_chk ();
0x000013e2 ldr.w sl, [r6, 0x254] | sl = *((r6 + 0x254));
0x000013e6 b 0x134a |
| } while (1);
| label_20:
0x000013e8 mov r0, fp | r0 = fp;
0x000013ea blx 0xea8 | r0 = setuid ();
| if (r0 != 0) {
0x000013ee cbnz r0, 0x144a | goto label_21;
| }
0x000013f0 ldr r3, [sp, 0xc] | r3 = *(arg_ch);
| if (r3 == 0) {
0x000013f2 cbz r3, 0x140c | goto label_22;
| }
0x000013f4 ldr r0, [sp, 0x14] | r0 = *(arg_14h);
0x000013f6 blx 0xe24 | r0 = chdir ();
| if (r0 != 0) {
0x000013fa cbnz r0, 0x1406 | goto label_1;
| }
0x000013fc ldr r0, [pc, 0x194] |
0x000013fe add r0, pc | r0 = 0x2996;
0x00001400 blx 0xe24 | r0 = chdir ();
0x00001404 cbz r0, 0x145a |
| while (r0 == 0) {
| label_1:
0x00001406 movs r0, 0x70 | r0 = 0x70;
0x00001408 blx 0xe6c | exit (r0);
| label_22:
0x0000140c ldr r0, [pc, 0x188] |
0x0000140e add r0, pc | r0 = 0x29aa;
0x00001410 blx 0xe24 | r0 = chdir ();
0x00001414 cmp r0, 0 |
| if (r0 != 0) {
0x00001416 bne 0x149a | goto label_23;
| }
0x00001418 add.w r6, sp, 0x10e0 | r6 += arg_10e0h;
0x0000141c mov.w r1, 0x1000 | r1 = 0x1000;
0x00001420 adds r6, 4 | r6 += 4;
0x00001422 mov r0, r6 | r0 = r6;
0x00001424 blx 0xe60 | r0 = getcwd ();
| if (r0 == 0) {
0x00001428 cbz r0, 0x149a | goto label_23;
| }
0x0000142a mov r0, sb | r0 = sb;
0x0000142c blx 0xe24 | r0 = chdir ();
| if (r0 != 0) {
0x00001430 cbnz r0, 0x149a | goto label_23;
| }
| label_2:
0x00001432 mov r0, r6 | r0 = r6;
0x00001434 blx 0xe78 | strlen (r0);
0x00001438 mov r1, r6 | r1 = r6;
0x0000143a mov r2, r0 | r2 = r0;
0x0000143c mov r0, sb | r0 = sb;
0x0000143e blx 0xeb4 | r0 = strncmp (r0, r1, r2);
| if (r0 == 0) {
0x00001442 cbz r0, 0x147a | goto label_24;
| }
0x00001444 movs r0, 0x72 | r0 = 0x72;
0x00001446 blx 0xe6c | r0 = exit (r0);
| label_21:
0x0000144a blx 0xe90 | r0 = errno_location ();
0x0000144e ldr r0, [r0] | r0 = *(r0);
0x00001450 blx 0xe48 | strerror (r0);
0x00001454 movs r0, 0x6e | r0 = 0x6e;
0x00001456 blx 0xe6c | exit (r0);
0x0000145a add.w r6, sp, 0x10e0 | r6 += arg_10e0h;
0x0000145e mov.w r1, 0x1000 | r1 = 0x1000;
0x00001462 adds r6, 4 | r6 += 4;
0x00001464 mov r0, r6 | r0 = r6;
0x00001466 blx 0xe60 | r0 = getcwd ();
0x0000146a cmp r0, 0 |
0x0000146c beq 0x1406 |
| }
0x0000146e mov r0, sb | r0 = sb;
0x00001470 blx 0xe24 | r0 = chdir ();
0x00001474 cmp r0, 0 |
| if (r0 != 0) {
0x00001476 bne 0x1406 | goto label_1;
| }
0x00001478 b 0x1432 | goto label_2;
| label_24:
0x0000147a mov r0, sb | r0 = sb;
0x0000147c add r1, sp, 0x30 | r1 += buf;
0x0000147e blx 0xe30 | r0 = lstat (r0, r1);
| if (r0 == 0) {
0x00001482 cbnz r0, 0x1494 |
0x00001484 ldr r3, [sp, 0x24] | r3 = *(arg_24h);
0x00001486 ldr r3, [r3, -0xa8] | r3 = *((r3 - 0xa8));
0x0000148a and r2, r3, 0xf000 | r2 = r3 & 0xf000;
0x0000148e cmp.w r2, 0x4000 |
| if (r2 == sym..data) {
0x00001492 beq 0x14a0 | goto label_25;
| }
| }
0x00001494 movs r0, 0x73 | r0 = 0x73;
0x00001496 blx 0xe6c | exit (r0);
| label_23:
0x0000149a movs r0, 0x71 | r0 = 0x71;
0x0000149c blx 0xe6c | exit (r0);
| label_25:
0x000014a0 tst.w r3, 0x12 |
| if ((r3 & 0x12) != 0) {
0x000014a4 beq 0x14ac |
0x000014a6 movs r0, 0x74 | r0 = 0x74;
0x000014a8 blx 0xe6c | exit (r0);
| }
0x000014ac ldr r1, [sp, 0x28] | r1 = *(arg_28h);
0x000014ae mov r0, r4 | r0 = r4;
0x000014b0 blx 0xe30 | r0 = lstat (r0, r1);
| if (r0 != 0) {
0x000014b4 cbnz r0, 0x14f4 | goto label_26;
| }
0x000014b6 ldr r3, [sp, 0x24] | r3 = *(arg_24h);
0x000014b8 ldr r3, [r3, -0x50] | r3 = *((r3 - 0x50));
0x000014bc and r2, r3, 0xf000 | r2 = r3 & 0xf000;
| if (r5 != 0) {
0x000014c0 cbnz r5, 0x1506 | goto label_27;
| }
0x000014c2 cmp.w r2, 0xa000 |
| if (r2 == 0xa000) {
0x000014c6 beq 0x14f4 | goto label_26;
| }
| label_5:
0x000014c8 tst.w r3, 0x12 |
| if ((r3 & 0x12) != 0) {
0x000014cc bne 0x1500 | goto label_28;
| }
| label_4:
0x000014ce tst.w r3, 0xc00 |
| if ((r3 & 0xc00) != 0) {
0x000014d2 bne 0x14fa | goto label_29;
| }
0x000014d4 lsls r3, r3, 0x19 | r3 <<= 0x19;
| if (r3 >= r3) {
0x000014d6 bpl.w 0x1214 | goto label_3;
| }
0x000014da ldr r1, [sp, 0x20] | r1 = *(arg_20h);
0x000014dc mov r0, r4 | r0 = r4;
0x000014de adds r1, 0xc | r1 += 0xc;
0x000014e0 blx 0xe84 | execv ();
0x000014e4 blx 0xe90 | r0 = errno_location ();
0x000014e8 ldr r0, [r0] | r0 = *(r0);
0x000014ea blx 0xe48 | strerror (r0);
0x000014ee movs r0, 0xff | r0 = 0xff;
0x000014f0 blx 0xe6c | exit (r0);
| label_26:
0x000014f4 movs r0, 0x75 | r0 = 0x75;
0x000014f6 blx 0xe6c | exit (r0);
| label_29:
0x000014fa movs r0, 0x77 | r0 = 0x77;
0x000014fc blx 0xe6c | exit (r0);
| label_28:
0x00001500 movs r0, 0x76 | r0 = 0x76;
0x00001502 blx 0xe6c | exit (r0);
| label_27:
0x00001506 cmp.w r2, 0xa000 |
| if (r2 == 0xa000) {
0x0000150a beq 0x14ce | goto label_4;
| }
0x0000150c b 0x14c8 | goto label_5;
0x000015d0 adds r0, 0x14 | r0 += 0x14;
0x000015d2 b 0x1114 | goto label_6;
| }
[*] Function fprintf used 5 times suexec