[*] Binary protection state of pcregrep
Partial RELRO No Canary found NX disabled No PIE No RPATH No RUNPATH No Symbols
[*] Function fprintf tear down of pcregrep
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/bin/pcregrep @ 0x10f4c */
| #include <stdint.h>
|
; (fcn) fcn.00010f4c () | void fcn_00010f4c (int32_t arg_2040h, int32_t arg2, char * s) {
| int32_t var_0h;
| int32_t var_4h;
| int32_t var_8h;
| int32_t var_14h;
| int32_t var_18h;
| char * var_1ch;
| int32_t var_2ch;
| int32_t var_2040h;
| r1 = arg2;
| r0 = s;
0x00010f4c push {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00010f50 ldr r5, [r0, 4] | r5 = *((r0 + 4));
0x00010f54 sub sp, sp, 0x2000 |
0x00010f58 sub sp, sp, 0x2c |
0x00010f5c mov r7, r3 | r7 = r3;
0x00010f60 add r3, sp, 0x2040 | r3 += arg_2040h;
0x00010f64 add r3, r3, 0x14 | r3 += 0x14;
0x00010f68 mov sb, r0 | sb = r0;
0x00010f6c mov r0, r5 | r0 = r5;
0x00010f70 ldr r4, [r3] | r4 = *(r3);
0x00010f74 mov r8, r1 | r8 = r1;
0x00010f78 mov sl, r2 | sl = r2;
0x00010f7c bl 0x10e3c | strlen (r0);
0x00010f80 ldr r3, [sb, 8] | r3 = *((sb + 8));
0x00010f84 cmp r3, 0 |
| if (r3 == 0) {
0x00010f88 beq 0x10f9c | goto label_4;
| }
| label_1:
0x00010f8c mov r0, 1 | r0 = 1;
| do {
| label_0:
0x00010f90 add sp, sp, 0x2000 |
0x00010f94 add sp, sp, 0x2c |
0x00010f98 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_4:
0x00010f9c tst sl, 4 |
0x00010fa0 mov r6, r0 | r6 = r0;
| if ((sl & 4) == 0) {
0x00010fa4 beq 0x10fe4 | goto label_5;
| }
0x00010fa8 add r1, r5, r0 | r1 = r5 + r0;
0x00010fac add r2, sp, 0x1c | r2 += var_1ch;
0x00010fb0 mov r0, r5 | r0 = r5;
0x00010fb4 bl 0x1245c | fcn_0001245c ();
0x00010fb8 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x00010fbc cmp r3, 0 |
0x00010fc0 mov fp, r0 |
| if (r3 == 0) {
0x00010fc4 beq 0x10fe4 | goto label_5;
| }
0x00010fc8 mov r1, sb | r1 = sb;
0x00010fcc bl 0x12ac4 | r0 = fcn_00012ac4 (r0, r1);
0x00010fd0 cmp r0, 0 |
0x00010fd4 beq 0x10f90 |
| } while (r0 == 0);
0x00010fd8 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x00010fdc sub fp, fp, r5 |
0x00010fe0 sub r6, fp, r3 | r6 = fp - r3;
| label_5:
0x00010fe4 ldr r2, [pc, 0x188] | r2 = *(0x11170);
0x00010fe8 ldr fp, [pc, 0x188] | fp = *(0x00011178);
0x00010fec add r2, r2, sl, lsl 2 | r2 += (sl << 2);
0x00010ff0 ldr r3, [r2, 0x78] | r3 = *((r2 + 0x78));
0x00010ff4 ldr sl, [r2, 0x58] | sl = *((r2 + 0x58));
0x00010ff8 str r3, [sp, 8] | var_8h = r3;
0x00010ffc str r5, [sp, 4] | var_4h = r5;
0x00011000 str r6, [sp] | *(sp) = r6;
0x00011004 mov r3, sl | r3 = sl;
0x00011008 ldr r2, [pc, 0x16c] | r2 = *(0x11178);
0x0001100c mov r1, fp | r1 = fp;
0x00011010 add r0, sp, 0x1c | r0 += var_1ch;
0x00011014 bl 0x10cb0 | r0 = snprintf (r0, r1, r2, r3);
0x00011018 cmp r0, fp |
| if (r0 > fp) {
0x0001101c ble 0x1103c |
0x00011020 ldr r3, [pc, 0x158] | r3 = "_s_.s_s";
0x00011024 mov r2, r5 | r2 = r5;
0x00011028 ldr r1, [pc, 0x154] | r1 = stderr;
0x0001102c ldr r0, [r3] | r0 = "_s_.s_s";
0x00011030 bl 0x10d34 | fprintf ("_s_.s_s", r1, r2, "_s_.s_s")
| label_2:
0x00011034 mov r0, 0 | r0 = 0;
0x00011038 b 0x10f90 | goto label_0;
| }
0x0001103c ldr r5, [pc, 0x144] | r5 = "pcregrep: Buffer overflow while compiling \"%s\"\n";
0x00011040 add r2, sp, 0x14 | r2 += var_14h;
0x00011044 ldr r3, [r5, 0x24] | r3 = *(0x111a8);
0x00011048 mov r1, r8 | r1 = r8;
0x0001104c str r3, [sp] | *(sp) = r3;
0x00011050 add r0, sp, 0x1c | r0 += var_1ch;
0x00011054 add r3, sp, 0x18 | r3 += var_18h;
0x00011058 bl 0x10d88 | r0 = pcre_compile ();
0x0001105c cmp r0, 0 |
0x00011060 str r0, [sb, 8] | *((sb + 8)) = r0;
| if (r0 != 0) {
0x00011064 bne 0x10f8c | goto label_1;
| }
0x00011068 mov r0, sl | r0 = sl;
0x0001106c bl 0x10e3c | strlen (r0);
0x00011070 ldr r3, [sp, 0x18] | r3 = var_18h;
0x00011074 ldr r2, [pc, 0x104] | r2 = "_s_.s_s";
0x00011078 ldr sb, [r2] | sb = "_s_.s_s";
0x0001107c sub r3, r3, r0 | r3 -= r0;
0x00011080 cmp r3, r6 |
| if (r3 < r6) {
0x00011084 movge r3, r6 | r3 = r6;
| }
0x00011088 cmp r7, 0 |
0x0001108c str r3, [sp, 0x18] | var_18h = r3;
| if (r7 != 0) {
0x00011090 beq 0x110c0 |
0x00011094 ldr r2, [sp, 0x14] | r2 = var_14h;
0x00011098 str r3, [sp] | *(sp) = r3;
0x0001109c add r3, sp, 0x2040 | r3 += arg_2040h;
0x000110a0 add r3, r3, 0x10 | r3 += 0x10;
0x000110a4 str r2, [sp, 4] | var_4h = r2;
0x000110a8 ldr r1, [pc, 0xdc] | r1 = *(0x11188);
0x000110ac ldr r3, [r3] | r3 = *(r3);
0x000110b0 mov r2, r4 | r2 = r4;
| label_3:
0x000110b4 mov r0, sb | r0 = sb;
0x000110b8 bl 0x10d34 | fprintf (r0, r1, r2, r3)
0x000110bc b 0x11034 | goto label_2;
| }
0x000110c0 cmp r4, 0 |
| if (r4 == 0) {
0x000110c4 bne 0x110ec |
0x000110c8 ldr r2, [sp, 0x14] | r2 = var_14h;
0x000110cc ldr r1, [pc, 0xbc] | r1 = "pcregrep: Error in regex in line %d of %s at offset %d: %s\n";
0x000110d0 str r2, [sp] | *(sp) = r2;
0x000110d4 add r2, sp, 0x2040 | r2 += arg_2040h;
0x000110d8 add r2, r2, 0x10 | r2 += 0x10;
0x000110dc ldr r2, [r2] | r2 = *(r2);
0x000110e0 mov r0, sb | r0 = sb;
0x000110e4 bl 0x10d34 | fprintf (r0, "pcregrep: Error in regex in line %d of %s at offset %d: %s\n", r2)
0x000110e8 b 0x11034 | goto label_2;
| }
0x000110ec add r0, r5, 0x28 | r0 = r5 + 0x28;
0x000110f0 mov r2, r4 | r2 = r4;
0x000110f4 ldr r1, [pc, 0x98] | r1 = "pcregrep: Error in %s regex at offset %d: %s\n";
0x000110f8 bl 0x10dd0 | sprintf (r0, "pcregrep: Error in %s regex at offset %d: %s\n", r2);
0x000110fc add r5, r5, 0x28 | r5 += 0x28;
| do {
0x00011100 mov r6, r5 | r6 = r5;
0x00011104 ldrb r3, [r6] | r3 = *(r6);
0x00011108 add r5, r5, 1 | r5++;
0x0001110c cmp r3, 0 |
0x00011110 bne 0x11100 |
| } while (r3 != 0);
0x00011114 mov r1, 0xa | r1 = 0xa;
0x00011118 mov r0, r4 | r0 = r4;
0x0001111c bl 0x14480 | fcn_00014480 (r0, r1);
0x00011120 cmp r1, 2 |
| if (r1 != 2) {
0x00011124 ldreq r1, [pc, 0x6c] | r1 = *((pc + 0x6c));
| }
| if (r1 != 2) {
0x00011128 beq 0x11144 |
0x0001112c cmp r1, 3 |
| if (r1 != 3) {
0x00011130 ldreq r1, [pc, 0x64] | r1 = *((pc + 0x64));
| }
| if (r1 == 3) {
0x00011134 beq 0x11144 | goto label_6;
| }
0x00011138 cmp r1, 1 |
| if (r1 != 1) {
0x0001113c ldreq r1, [pc, 0x5c] | r1 = *(0x000111a0);
| }
| if (r1 != 1) {
0x00011140 ldrne r1, [pc, 0x5c] | r1 = "th";
| goto label_6;
| }
| }
| label_6:
0x00011144 mov r0, r6 | r0 = r6;
0x00011148 bl 0x10c74 | strcpy (r0, "th");
0x0001114c ldr r3, [sp, 0x14] | r3 = var_14h;
0x00011150 ldr r2, [pc, 0x50] | r2 = "th";
0x00011154 str r3, [sp, 4] | var_4h = r3;
0x00011158 ldr r3, [sp, 0x18] | r3 = var_18h;
0x0001115c ldr r1, [pc, 0x48] | r1 = *(0x111a8);
0x00011160 str r3, [sp] | *(sp) = r3;
0x00011164 add r3, sp, 0x2040 | r3 += arg_2040h;
0x00011168 add r3, r3, 0x10 | r3 += 0x10;
0x0001116c ldr r3, [r3] | r3 = *(r3);
0x00011170 b 0x110b4 | goto label_3;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/bin/pcregrep @ 0x111b0 */
| #include <stdint.h>
|
; (fcn) fcn.000111b0 () | void fcn_000111b0 (int32_t arg1, int32_t arg2) {
| int32_t var_2000h;
| int32_t var_ch;
| int32_t var_1ch;
| r0 = arg1;
| r1 = arg2;
0x000111b0 push {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x000111b4 sub sp, sp, 0x2000 |
0x000111b8 sub sp, sp, 0x1c |
0x000111bc mov sb, r1 | sb = r1;
0x000111c0 ldr r1, [pc, 0x198] | r1 = *(0x1135c);
0x000111c4 mov r7, r0 | r7 = r0;
0x000111c8 mov r6, r2 | r6 = r2;
0x000111cc mov sl, r3 | sl = r3;
0x000111d0 bl 0x10db8 | r0 = strcmp (r0, r1);
0x000111d4 cmp r0, 0 |
| if (r0 != 0) {
0x000111d8 bne 0x1122c | goto label_5;
| }
0x000111dc ldr r3, [pc, 0x180] | r3 = *(0x11360);
0x000111e0 ldr r4, [r3] | r4 = *(0x11360);
0x000111e4 ldr r3, [pc, 0x17c] | r3 = stdin;
0x000111e8 ldr r7, [r3] | r7 = stdin;
| do {
0x000111ec mov r8, 0 | r8 = 0;
0x000111f0 add r5, sp, 0xc | r5 += var_ch;
| label_0:
0x000111f4 mov r2, r4 | r2 = r4;
0x000111f8 ldr r1, [pc, 0x16c] | r1 = "_standard_input_";
0x000111fc mov r0, r5 | r0 = r5;
0x00011200 bl 0x10cc8 | r0 = fgets (r0, "_standard_input_", r2);
0x00011204 cmp r0, 0 |
| if (r0 != 0) {
0x00011208 bne 0x1127c | goto label_6;
| }
0x0001120c ldr r3, [pc, 0x150] |
0x00011210 ldr r3, [r3] | r3 = *(0x11360);
0x00011214 cmp r3, r4 |
| if (r3 != r4) {
0x00011218 beq 0x11224 |
0x0001121c mov r0, r4 | r0 = r4;
0x00011220 bl 0x10d94 | fclose (r0);
| }
0x00011224 mov fp, 1 |
0x00011228 b 0x1126c | goto label_2;
| label_5:
0x0001122c ldr r1, [pc, 0x13c] | r1 = *(0x1136c);
0x00011230 mov r0, r7 | r0 = r7;
0x00011234 bl 0x10ea8 | r0 = fopen64 ();
0x00011238 subs r4, r0, 0 | r4 = r0 - 0;
0x0001123c bne 0x111ec |
| } while (r4 != r0);
0x00011240 ldr r3, [pc, 0x12c] | r3 = *(0x11370);
0x00011244 ldr r5, [r3] | r5 = *(0x11370);
0x00011248 bl 0x10e18 | r0 = errno_location ();
0x0001124c ldr r0, [r0] | r0 = *(r0);
0x00011250 bl 0x10c8c | strerror (r0);
0x00011254 mov r2, r7 | r2 = r7;
0x00011258 ldr r1, [pc, 0x118] | r1 = stderr;
0x0001125c mov r3, r0 | r3 = r0;
0x00011260 mov r0, r5 | r0 = r5;
0x00011264 bl 0x10d34 | fprintf (r0, r1, r2, r3)
| label_1:
0x00011268 mov fp, 0 |
| label_2:
0x0001126c mov r0, fp | r0 = fp;
0x00011270 add sp, sp, 0x2000 |
0x00011274 add sp, sp, 0x1c |
0x00011278 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_6:
0x0001127c mov r0, r5 | r0 = r5;
0x00011280 bl 0x10e3c | strlen (r0);
0x00011284 ldr r3, [pc, 0xf0] | r3 = "pcregrep: Failed to open %s: %s\n";
0x00011288 ldr r1, [r3] | r1 = "pcregrep: Failed to open %s: %s\n";
0x0001128c add r0, r5, r0 | r0 = r5 + r0;
| do {
0x00011290 cmp r0, r5 |
0x00011294 mov r2, r0 | r2 = r0;
| if (r0 < r5) {
0x00011298 bls 0x112b0 | goto label_7;
| }
0x0001129c ldrb r3, [r0, -1]! | r3 = *((r0 -= 1));
0x000112a0 lsl r3, r3, 1 | r3 <<= 1;
0x000112a4 ldrh r3, [r1, r3] | r3 = *((r1 + r3));
0x000112a8 tst r3, 0x20 |
0x000112ac bne 0x11290 |
| } while ((r3 & 0x20) != 0);
| label_7:
0x000112b0 mov r3, 0 | r3 = 0;
0x000112b4 strb r3, [r2] | *(r2) = r3;
0x000112b8 ldrb r3, [sp, 0xc] | r3 = var_ch;
0x000112bc add r8, r8, 1 | r8++;
0x000112c0 cmp r3, 0 |
| if (r3 == 0) {
0x000112c4 beq 0x111f4 | goto label_0;
| }
0x000112c8 ldr r1, [r6] | r1 = *(r6);
0x000112cc mov r0, r5 | r0 = r5;
0x000112d0 bl 0x12ac4 | r0 = fcn_00012ac4 (r0, r1);
0x000112d4 cmp r0, 0 |
0x000112d8 mov fp, r0 |
0x000112dc str r0, [r6] | *(r6) = r0;
| if (r0 != 0) {
0x000112e0 bne 0x11300 | goto label_8;
| }
0x000112e4 ldr r3, [pc, 0x78] |
0x000112e8 ldr r3, [r3] | r3 = *(0x11360);
0x000112ec cmp r3, r4 |
| if (r3 == r4) {
| label_3:
0x000112f0 beq 0x11268 | goto label_1;
| }
0x000112f4 mov r0, r4 | r0 = r4;
0x000112f8 bl 0x10d94 | fclose (r0);
0x000112fc b 0x1126c | goto label_2;
| label_8:
0x00011300 ldr r3, [sb] | r3 = *(sb);
0x00011304 cmp r3, 0 |
| if (r3 != 0) {
0x00011308 streq r0, [sb] | *(sb) = r0;
| }
| label_4:
0x0001130c ldr r1, [pc, 0x6c] |
0x00011310 stm sp, {r7, r8} | *(sp) = r7;
| *((sp + 4)) = r8;
0x00011314 ldr r0, [r6] | r0 = *(r6);
0x00011318 mov r3, 1 | r3 = 1;
0x0001131c mov r2, sl | r2 = sl;
0x00011320 ldr r1, [r1, 0x38] | r1 = *(0x113b4);
0x00011324 bl 0x10f4c | r0 = fcn_00010f4c (r0, r1, r2);
0x00011328 subs fp, r0, 0 |
| if (fp == r0) {
0x0001132c bne 0x11340 |
0x00011330 ldr r2, [pc, 0x2c] |
0x00011334 ldr r2, [r2] | r2 = *(0x11360);
0x00011338 cmp r2, r4 |
0x0001133c b 0x112f0 | goto label_3;
| }
0x00011340 ldr r3, [r6] | r3 = *(r6);
0x00011344 mov r2, 0 | r2 = 0;
0x00011348 str r2, [r3, 4] | *((r3 + 4)) = r2;
0x0001134c ldr r3, [r3] | r3 = *(r3);
0x00011350 cmp r3, r2 |
| if (r3 == r2) {
0x00011354 beq 0x111f4 | goto label_0;
| }
0x00011358 str r3, [r6] | *(r6) = r3;
0x0001135c b 0x1130c | goto label_4;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/bin/pcregrep @ 0x127c8 */
| #include <stdint.h>
|
; (fcn) fcn.000127c8 () | void fcn_000127c8 (int32_t arg1) {
| int32_t var_38h;
| r0 = arg1;
0x000127c8 ldr r3, [pc, 0x44] |
0x000127cc push {r0, r1, r2, lr} |
0x000127d0 ldr r3, [r3, 8] | r3 = stderr;
0x000127d4 mov r5, r0 | r5 = r0;
0x000127d8 cmp r3, 0 |
| if (r3 != 0) {
0x000127dc beq 0x1280c |
0x000127e0 ldr r4, [pc, 0x30] | r4 = *(0x12814);
0x000127e4 mvn r3, 0x1a | r3 = ~0x1a;
0x000127e8 str r3, [sp] | *(sp) = r3;
0x000127ec ldr r1, [pc, 0x28] | r1 = stderr;
0x000127f0 mvn r3, 0x14 | r3 = ~0x14;
0x000127f4 mvn r2, 7 | r2 = ~7;
0x000127f8 ldr r0, [r4] | r0 = *(0x12814);
0x000127fc bl 0x10d34 | fprintf (r0, r1, r2, r3, r4)
0x00012800 ldr r1, [r4] | r1 = *(0x12814);
0x00012804 ldr r0, [pc, 0x14] | r0 = "pcregrep:_Error__d___d_or__d_means_that_a_resource_limit_was_exceeded.";
0x00012808 bl 0x10e60 | fputs ("pcregrep:_Error__d___d_or__d_means_that_a_resource_limit_was_exceeded.", r1);
| }
0x0001280c mov r0, r5 | r0 = r5;
0x00012810 bl 0x10e24 | exit (r0);
| if (r3 != 0) {
0x00012814 muleq r2, r4, r5 | r2 = r4 * r5;
| }
| if (r3 != 0) {
0x00012818 andeq r6, r2, r0, ror r5 | r6 = r2 & (r0 >>> r5);
| }
| if (r3 != 0) {
0x0001281c andeq r4, r1, r8, ror r5 | r4 = r1 & (r8 >>> r5);
| }
| /* Beware that this jump is a conditional jump.
| * r2dec transformed it as a return, due being the
| * last instruction. Please, check 'pdda' output
| * for more hints. */
0x00012820 andeq r4, r1, r0, asr 11 | return r4 = r1 & (r0 >> 11);
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/bin/pcregrep @ 0x12824 */
| #include <stdint.h>
|
; (fcn) fcn.00012824 () | void fcn_00012824 (int32_t arg1, uint32_t arg2) {
| int32_t var_0h;
| int32_t var_4h;
| int32_t var_8h;
| int32_t var_ch;
| int32_t var_38h;
| int32_t var_3ch;
| r0 = arg1;
| r1 = arg2;
0x00012824 push {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00012828 ldr r6, [pc, 0x150] | r6 = *(0x1297c);
0x0001282c mov fp, r3 |
0x00012830 ldr r3, [pc, 0x14c] | r3 = "text that starts:\n\n";
0x00012834 cmp r1, 0xc8 |
0x00012838 ldr r4, [r3, 0xc] | r4 = stderr;
0x0001283c ldr r3, [pc, 0x144] | r3 = *(0x12984);
0x00012840 sub sp, sp, 0x14 |
0x00012844 mov r8, r0 | r8 = r0;
0x00012848 mov r7, r1 | r7 = r1;
0x0001284c mov sl, r2 | sl = r2;
| if (r1 > 0xc8) {
0x00012850 movls sb, r1 | sb = r1;
| }
| if (r1 <= 0xc8) {
0x00012854 movhi sb, 0xc8 | sb = 0xc8;
| }
| if (r1 > 0xc8) {
0x00012858 movls r6, r3 | r6 = r3;
| }
0x0001285c mov r5, 1 | r5 = 1;
| do {
0x00012860 cmp r4, 0 |
| if (r4 == 0) {
0x00012864 bne 0x12874 |
0x00012868 mov r0, r4 | r0 = r4;
| label_0:
0x0001286c add sp, sp, 0x14 |
0x00012870 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| }
0x00012874 mov r3, 0x63 | r3 = 0x63;
0x00012878 str r3, [sp, 0xc] | var_ch = r3;
0x0001287c ldr r3, [sp, 0x38] | r3 = var_38h;
0x00012880 str sl, [sp, 4] | var_4h = sl;
0x00012884 str r3, [sp, 8] | var_8h = r3;
0x00012888 str fp, [sp] | *(sp) = fp;
0x0001288c mov r3, r7 | r3 = r7;
0x00012890 mov r2, r8 | r2 = r8;
0x00012894 ldr r1, [r4, 0xc] | r1 = *((r4 + 0xc));
0x00012898 ldr r0, [r4, 8] | r0 = *((r4 + 8));
0x0001289c bl 0x10e78 | pcre_exec ();
0x000128a0 ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x000128a4 cmp r0, 0 |
0x000128a8 mov r2, r0 | r2 = r0;
0x000128ac str r0, [r3] | *(r3) = r0;
| if (r0 >= 0) {
0x000128b0 bge 0x12978 | goto label_1;
| }
0x000128b4 cmn r0, 1 |
| if (r0 != 1) {
0x000128b8 ldreq r4, [r4] | r4 = *(r4);
| }
| if (r0 != 1) {
0x000128bc addeq r5, r5, 1 | r5++;
| }
0x000128c0 beq 0x12860 |
| } while (r0 == 1);
0x000128c4 ldr r4, [pc, 0xc0] | r4 = "this_text:";
0x000128c8 ldr r7, [pc, 0xb4] | r7 = "text that starts:\n\n";
0x000128cc ldr r1, [pc, 0xbc] | r1 = stderr;
0x000128d0 ldr r0, [r4] | r0 = "this_text:";
0x000128d4 bl 0x10d34 | fprintf ("this_text:", r1, r2, r3, "this_text:")
0x000128d8 ldr r3, [r7, 0xc] |
0x000128dc ldr r3, [r3] | r3 = stderr;
0x000128e0 cmp r3, 0 |
| if (r3 != 0) {
0x000128e4 beq 0x128f8 |
0x000128e8 mov r2, r5 | r2 = r5;
0x000128ec ldr r1, [pc, 0xa0] | r1 = "pcregrep: pcre_exec() gave error %d while matching ";
0x000128f0 ldr r0, [r4] | r0 = *(r4);
0x000128f4 bl 0x10d34 | fprintf (r0, "pcregrep: pcre_exec() gave error %d while matching ", r2)
| }
0x000128f8 ldr r1, [r4] | r1 = *(r4);
0x000128fc mov r0, r6 | r0 = r6;
0x00012900 bl 0x10e60 | fputs (r0, r1);
0x00012904 ldr r3, [r4] | r3 = *(r4);
0x00012908 mov r2, sb | r2 = sb;
0x0001290c mov r1, 1 | r1 = 1;
0x00012910 mov r0, r8 | r0 = r8;
0x00012914 bl 0x10e00 | fwrite (r0, r1, r2, r3);
0x00012918 ldr r1, [r4] | r1 = *(r4);
0x0001291c ldr r0, [pc, 0x74] | r0 = "pattern number %d to ";
0x00012920 bl 0x10e60 | fputs ("pattern number %d to ", r1);
0x00012924 ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x00012928 ldr r3, [r3] | r3 = *(r3);
0x0001292c add r3, r3, 0x1b | r3 += 0x1b;
0x00012930 cmp r3, 0x13 |
| if (r3 <= 0x13) {
0x00012934 bhi 0x1294c |
0x00012938 ldr r2, [pc, 0x5c] | r2 = "_";
0x0001293c mvn r3, r2, lsr r3 | r3 = ~r2;
0x00012940 tst r3, 1 |
| if ((r3 & 1) != 0) {
0x00012944 moveq r3, 1 | r3 = 1;
| }
| if ((r3 & 1) == 0) {
0x00012948 streq r3, [r7, 8] | *((r7 + 8)) = r3;
| goto label_2;
| }
| }
| label_2:
0x0001294c ldr r3, [r7, 0x10] | r3 = *((r7 + 0x10));
0x00012950 add r2, r3, 1 | r2 = r3 + 1;
0x00012954 cmp r3, 0x14 |
0x00012958 str r2, [r7, 0x10] | *((r7 + 0x10)) = r2;
| if (r3 <= 0x14) {
0x0001295c ldrle r0, [r7, 0x14] | r0 = *((r7 + 0x14));
| goto label_3;
| }
| if (r3 <= 0x14) {
| label_3:
0x00012960 ble 0x1286c | goto label_0;
| }
0x00012964 ldr r1, [r4] | r1 = *(r4);
0x00012968 ldr r0, [pc, 0x30] | r0 = *(0x1299c);
0x0001296c bl 0x10e60 | fputs (r0, r1);
0x00012970 mov r0, 2 | r0 = 2;
0x00012974 bl 0x127c8 | fcn_000127c8 (r0);
| label_1:
0x00012978 mov r0, 1 | r0 = 1;
0x0001297c b 0x1286c | goto label_0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/bin/pcregrep @ 0x129a4 */
| #include <stdint.h>
|
; (fcn) fcn.000129a4 () | void fcn_000129a4 (uint32_t arg1, int32_t arg2) {
| int32_t var_4h;
| int32_t var_ch;
| int32_t var_14h;
| r0 = arg1;
| r1 = arg2;
0x000129a4 push {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x000129a8 ldr r4, [pc, 0xc8] | r4 = *(0x12a74);
0x000129ac mov sb, r3 | sb = r3;
0x000129b0 ldr r3, [r4, 0x18] | r3 = *(0x12a8c);
0x000129b4 sub sp, sp, 0x14 |
0x000129b8 cmp r0, 0 |
0x000129bc cmpne r3, 0 | __asm ("cmpne r3, 0");
| if (r0 <= 0) {
0x000129c0 ble 0x12a70 | goto label_0;
| }
0x000129c4 mov r5, r1 | r5 = r1;
0x000129c8 mov r8, r2 | r8 = r2;
0x000129cc mov r6, r0 | r6 = r0;
0x000129d0 mov r3, 0 | r3 = 0;
0x000129d4 ldr r7, [pc, 0xa0] | r7 = *(0x12a78);
0x000129d8 ldr fp, [pc, 0xa0] | fp = "%lu-";
0x000129dc b 0x12a4c |
| while (r3 < r2) {
0x000129e0 cmp sb, 0 |
| if (sb != 0) {
0x000129e4 beq 0x129f8 |
0x000129e8 mov r2, sb | r2 = sb;
0x000129ec ldr r1, [pc, 0x90] | r1 = "%lu-";
0x000129f0 ldr r0, [r7] | r0 = *(r7);
0x000129f4 bl 0x10d34 | fprintf (r0, "%lu-", r2)
| }
0x000129f8 ldr r3, [r4, 0x1c] | r3 = *((r4 + 0x1c));
0x000129fc cmp r3, 0 |
| if (r3 != 0) {
0x00012a00 beq 0x12a1c |
0x00012a04 mov r2, r6 | r2 = r6;
0x00012a08 mov r1, fp | r1 = fp;
0x00012a0c ldr r0, [r7] | r0 = *(r7);
0x00012a10 bl 0x10d34 | fprintf (r0, r1, r2)
0x00012a14 add sl, r6, 1 | sl = r6 + 1;
0x00012a18 mov r6, sl | r6 = sl;
| }
0x00012a1c add r2, sp, 0xc | r2 += var_ch;
0x00012a20 mov r1, r8 | r1 = r8;
0x00012a24 mov r0, r5 | r0 = r5;
0x00012a28 bl 0x1245c | fcn_0001245c ();
0x00012a2c ldr r3, [r7] | r3 = *(r7);
0x00012a30 mov r1, 1 | r1 = 1;
0x00012a34 sub r2, r0, r5 | r2 = r0 - r5;
0x00012a38 mov sl, r0 | sl = r0;
0x00012a3c mov r0, r5 | r0 = r5;
0x00012a40 bl 0x10e00 | fwrite (r0, r1, r2, r3);
0x00012a44 ldr r3, [sp, 4] | r3 = var_4h;
0x00012a48 mov r5, sl | r5 = sl;
0x00012a4c cmp r8, r5 |
| if (r8 < r5) {
0x00012a50 bls 0x12a68 | goto label_1;
| }
0x00012a54 add r2, r3, 1 | r2 = r3 + 1;
0x00012a58 str r2, [sp, 4] | var_4h = r2;
0x00012a5c ldr r2, [r4, 0x18] | r2 = *((r4 + 0x18));
0x00012a60 cmp r3, r2 |
0x00012a64 blt 0x129e0 |
| }
| label_1:
0x00012a68 mov r3, 1 | r3 = 1;
0x00012a6c str r3, [r4, 0x20] | *((r4 + 0x20)) = r3;
| label_0:
0x00012a70 add sp, sp, 0x14 |
0x00012a74 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/bin/pcregrep @ 0x12ac4 */
| #include <stdint.h>
|
; (fcn) fcn.00012ac4 () | void fcn_00012ac4 (char * arg1, int32_t arg2) {
| r0 = arg1;
| r1 = arg2;
0x00012ac4 push {r4, r5, r6, lr} |
0x00012ac8 mov r6, r0 | r6 = r0;
0x00012acc mov r0, 0x10 | r0 = 0x10;
0x00012ad0 mov r5, r1 | r5 = r1;
0x00012ad4 bl 0x10ce0 | r0 = malloc (r0);
0x00012ad8 subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 == r0) {
0x00012adc bne 0x12ae4 |
0x00012ae0 bl 0x10f28 | fcn_00010f28 (r0);
| }
0x00012ae4 mov r0, r6 | r0 = r6;
0x00012ae8 bl 0x10e3c | r0 = strlen (r0);
0x00012aec cmp r0, 0x2000 |
| if (r0 < 0x2000) {
0x00012af0 bls 0x12b1c | goto label_0;
| }
0x00012af4 ldr r3, [pc, 0x44] | r3 = *(0x12b3c);
0x00012af8 mov r2, 0x2000 | r2 = 0x2000;
0x00012afc ldr r1, [pc, 0x40] | r1 = stderr;
0x00012b00 ldr r0, [r3] | r0 = *(0x12b3c);
0x00012b04 bl 0x10d34 | fprintf (r0, r1, r2, r3)
0x00012b08 mov r0, r4 | r0 = r4;
0x00012b0c bl 0x10e9c | free (r0);
0x00012b10 mov r4, 0 | r4 = 0;
| do {
0x00012b14 mov r0, r4 | r0 = r4;
0x00012b18 pop {r4, r5, r6, pc} |
| label_0:
0x00012b1c mov r3, 0 | r3 = 0;
0x00012b20 cmp r5, r3 |
0x00012b24 stm r4, {r3, r6} | *(r4) = r3;
| *((r4 + 4)) = r6;
0x00012b28 str r3, [r4, 8] | *((r4 + 8)) = r3;
0x00012b2c str r3, [r4, 0xc] | *((r4 + 0xc)) = r3;
| if (r5 == r3) {
0x00012b30 ldrne r3, [r5] | r3 = *(r5);
| }
| if (r5 == r3) {
0x00012b34 strne r4, [r5] | *(r5) = r4;
| }
| if (r5 == r3) {
0x00012b38 strne r3, [r4] | *(r4) = r3;
| }
0x00012b3c b 0x12b14 |
| } while (1);
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/bin/pcregrep @ 0x12b48 */
| #include <stdint.h>
|
; (fcn) fcn.00012b48 () | void fcn_00012b48 (int32_t arg1, int32_t arg2) {
| int32_t var_0h;
| int32_t var_4h;
| int32_t var_ch;
| int32_t var_10h;
| int32_t var_14h;
| int32_t var_18h;
| int32_t var_1ch;
| int32_t var_20h;
| int32_t var_24h;
| int32_t var_28h;
| int32_t var_2ch;
| int32_t var_30h;
| int32_t var_34h;
| int32_t var_38h;
| int32_t var_3ch;
| int32_t var_40h;
| int32_t var_44h;
| int32_t var_48h;
| int32_t var_4ch;
| int32_t var_50h;
| int32_t var_54h;
| int32_t var_58h;
| int32_t var_5ch;
| int32_t var_60h;
| void * ptr;
| int32_t var_68h;
| int32_t var_0h_2;
| int32_t var_1f0h;
| int32_t var_1f4h;
| r0 = arg1;
| r1 = arg2;
0x00012b48 push {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00012b4c ldr r5, [pc, 0xe30] | r5 = *(0x13980);
0x00012b50 sub sp, sp, 0x1f4 |
0x00012b54 ldr r3, [r5, 0x40] | r3 = *(0x139c0);
0x00012b58 str r1, [sp, 0x3c] | var_3ch = r1;
0x00012b5c str r3, [sp, 0x30] | var_30h = r3;
0x00012b60 mov fp, r2 |
0x00012b64 str r0, [sp, 0x2c] | var_2ch = r0;
0x00012b68 ldr r4, [r5, 0x3c] | r4 = "_c_00m";
0x00012b6c bl 0x10e30 | r0 = fileno (r0);
0x00012b70 bl 0x10cec | isatty (r0);
0x00012b74 ldr r3, [pc, 0xe0c] | r3 = *(0x13984);
0x00012b78 ldr r1, [r3, 4] | r1 = "_standard_input_";
0x00012b7c cmp r0, 0 |
| if (r0 == 0) {
0x00012b80 bne 0x12ba8 |
0x00012b84 ldr r3, [sp, 0x30] | r3 = var_30h;
0x00012b88 cmp r3, 0 |
| if (r3 == 0) {
0x00012b8c bne 0x12bb0 |
0x00012b90 mov r2, r1 | r2 = r1;
0x00012b94 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x00012b98 mov r1, 1 | r1 = 1;
0x00012b9c mov r0, r4 | r0 = r4;
0x00012ba0 bl 0x10d70 | fread (r0, r1, r2, r3);
0x00012ba4 b 0x12bbc |
| } else {
0x00012ba8 mov r3, 1 | r3 = 1;
0x00012bac str r3, [sp, 0x30] | var_30h = r3;
| }
0x00012bb0 ldr r2, [sp, 0x2c] | r2 = var_2ch;
0x00012bb4 mov r0, r4 | r0 = r4;
0x00012bb8 bl 0x12754 | fcn_00012754 (r0, r1);
| }
0x00012bbc str r0, [sp, 0x1c] | var_1ch = r0;
0x00012bc0 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x00012bc4 ldr r0, [r5, 0x3c] | r0 = *((r5 + 0x3c));
0x00012bc8 ldr r5, [r5, 0x44] | r5 = *((r5 + 0x44));
0x00012bcc add r3, r0, r3 | r3 = r0 + r3;
0x00012bd0 cmp r5, 2 |
0x00012bd4 str r3, [sp, 0xc] | var_ch = r3;
| if (r5 == 2) {
0x00012bd8 beq 0x13954 | goto label_23;
| }
0x00012bdc ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x00012be0 mov r1, 0 | r1 = 0;
0x00012be4 cmp r3, 0x400 |
| if (r3 >= 0x400) {
0x00012be8 movlo r2, r3 | r2 = r3;
| }
| if (r3 < 0x400) {
0x00012bec movhs r2, 0x400 | r2 = 0x400;
| }
0x00012bf0 bl 0x10d4c | r0 = memchr (r0, r1, r2);
0x00012bf4 adds r3, r0, 0 | r3 = r0 + 0;
| if (r3 == r0) {
0x00012bf8 movne r3, 1 | r3 = 1;
| }
0x00012bfc str r3, [sp, 0x20] | var_20h = r3;
0x00012c00 cmp r5, 1 |
| if (r5 == 1) {
0x00012c04 movne r3, 0 | r3 = 0;
| }
| if (r5 != 1) {
0x00012c08 andeq r3, r3, 1 | r3 &= 1;
| }
0x00012c0c cmp r3, 0 |
| if (r3 == 0) {
0x00012c10 beq 0x1395c | goto label_24;
| }
| do {
0x00012c14 mov r7, 1 | r7 = 1;
0x00012c18 b 0x12cb4 | goto label_1;
| label_0:
0x00012c1c mov r3, 0 | r3 = 0;
0x00012c20 add r2, sp, 0x58 | r2 += var_58h;
0x00012c24 ldr r1, [sp, 0xc] | r1 = var_ch;
0x00012c28 mov r0, r4 | r0 = r4;
0x00012c2c str r3, [sp, 0x5c] | var_5ch = r3;
0x00012c30 bl 0x1245c | fcn_0001245c ();
0x00012c34 ldr r6, [sp, 0x58] | r6 = var_58h;
0x00012c38 sub r3, r0, r4 | r3 = r0 - r4;
0x00012c3c sub r3, r3, r6 | r3 -= r6;
0x00012c40 str r3, [sp, 0x18] | var_18h = r3;
0x00012c44 ldr r3, [pc, 0xd38] | r3 = *(0x13980);
0x00012c48 ldr r2, [r3, 0x48] | r2 = *(0x139c8);
0x00012c4c cmp r2, 0 |
| if (r2 == 0) {
0x00012c50 ldrne r2, [sp, 0xc] | r2 = var_ch;
| }
| if (r2 != 0) {
0x00012c54 ldreq r2, [sp, 0x18] | r2 = var_18h;
| }
| if (r2 == 0) {
0x00012c58 subne r2, r2, r4 | r2 -= r4;
| }
0x00012c5c cmp r6, 0 |
0x00012c60 str r2, [sp, 0x24] | var_24h = r2;
| if (r6 == 0) {
0x00012c64 bne 0x12cc0 |
0x00012c68 ldr r2, [pc, 0xd18] |
0x00012c6c ldr r3, [r3, 0x3c] | r3 = *((r3 + 0x3c));
0x00012c70 ldr r2, [r2, 4] | r2 = "_standard_input_";
0x00012c74 add r3, r3, r2 | r3 += r2;
0x00012c78 cmp r0, r3 |
| if (r0 != r3) {
0x00012c7c bne 0x12fbc | goto label_25;
| }
0x00012c80 ldr r3, [pc, 0xd04] | r3 = "_standard_input_";
0x00012c84 ldr r1, [pc, 0xd04] | r1 = stderr;
0x00012c88 ldr r0, [r3] | r0 = "_standard_input_";
0x00012c8c ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x00012c90 mov r7, 2 | r7 = 2;
0x00012c94 cmp r3, 0 |
| if (r3 != 0) {
0x00012c98 ldreq r3, [pc, 0xcf4] | r3 = *((pc + 0xcf4));
| }
| if (r3 == 0) {
0x00012c9c ldrne r3, [pc, 0xcf4] | r3 = " of file ";
| }
| if (r3 != 0) {
0x00012ca0 streq r3, [sp, 0x3c] | var_3ch = r3;
| }
0x00012ca4 ldr r2, [sp, 0x3c] | r2 = var_3ch;
0x00012ca8 str r2, [sp] | *(sp) = r2;
0x00012cac ldr r2, [sp, 0x10] | r2 = var_10h;
0x00012cb0 bl 0x10d34 | fprintf ("_standard_input_", r1, r2, "_standard_input_")
| label_1:
0x00012cb4 mov r0, r7 | r0 = r7;
0x00012cb8 add sp, sp, 0x1f4 |
0x00012cbc pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| }
0x00012cc0 mvn r8, 0 | r8 = ~0;
0x00012cc4 mov r6, 0 | r6 = 0;
0x00012cc8 str r8, [sp, 0x40] | var_40h = r8;
| label_2:
0x00012ccc ldr r5, [pc, 0xcb0] | r5 = *(0x13980);
0x00012cd0 mov sb, r6 | sb = r6;
| label_4:
0x00012cd4 add r3, sp, 0x5c | r3 += var_5ch;
0x00012cd8 str r3, [sp, 4] | var_4h = r3;
0x00012cdc add r3, sp, 0x64 | r3 += ptr;
0x00012ce0 str r3, [sp] | *(sp) = r3;
0x00012ce4 mov r2, sb | r2 = sb;
0x00012ce8 mov r3, r6 | r3 = r6;
0x00012cec ldr r1, [sp, 0x24] | r1 = var_24h;
0x00012cf0 mov r0, r4 | r0 = r4;
0x00012cf4 bl 0x12824 | fcn_00012824 (r0, r1);
0x00012cf8 ldr r3, [r5, 0x14] | r3 = *((r5 + 0x14));
0x00012cfc cmp r0, r3 |
0x00012d00 str r0, [sp, 0x44] | var_44h = r0;
| if (r0 == r3) {
0x00012d04 beq 0x12d7c | goto label_26;
| }
0x00012d08 ldr r2, [pc, 0xc78] |
0x00012d0c ldr r2, [r2, 8] | r2 = stderr;
0x00012d10 cmp r2, 3 |
0x00012d14 beq 0x12c14 |
| } while (r2 == 3);
0x00012d18 ldr r1, [r5, 0x4c] | r1 = *((r5 + 0x4c));
0x00012d1c cmp r1, 0 |
| if (r1 != 0) {
0x00012d20 bne 0x13008 | goto label_27;
| }
0x00012d24 ldr r7, [r5, 0x50] | r7 = *((r5 + 0x50));
0x00012d28 cmp r7, 0 |
| if (r7 == 0) {
0x00012d2c beq 0x12fc8 | goto label_28;
| }
0x00012d30 ldr r3, [sp, 0x34] | r3 = var_34h;
0x00012d34 add r3, r3, 1 | r3++;
0x00012d38 str r3, [sp, 0x34] | var_34h = r3;
| label_3:
0x00012d3c ldr r3, [pc, 0xc40] |
0x00012d40 ldr r3, [r3, 0x40] | r3 = *(0x139c0);
0x00012d44 cmp r3, 0 |
| if (r3 != 0) {
0x00012d48 beq 0x12d58 |
0x00012d4c ldr r3, [pc, 0xc48] | r3 = " of file ";
0x00012d50 ldr r0, [r3] | r0 = " of file ";
0x00012d54 bl 0x10cf8 | fflush (" of file ");
| }
0x00012d58 ldr r3, [sp, 0x58] | r3 = var_58h;
0x00012d5c ldr r2, [sp, 0x18] | r2 = var_18h;
0x00012d60 mov r7, 0 | r7 = 0;
0x00012d64 add r3, r2, r3 | r3 = r2 + r3;
0x00012d68 add sl, r4, r3 | sl = r4 + r3;
0x00012d6c ldr r3, [sp, 0x10] | r3 = var_10h;
0x00012d70 add r3, r3, 1 | r3++;
0x00012d74 str r3, [sp, 0x14] | var_14h = r3;
0x00012d78 ldr r3, [sp, 0x44] | r3 = var_44h;
| label_26:
0x00012d7c ldr r2, [pc, 0xc00] | r2 = *(0x13980);
0x00012d80 ldr r1, [r2, 0x48] | r1 = *(0x139c8);
0x00012d84 cmp r1, 0 |
| if (r1 != 0) {
0x00012d88 beq 0x12da8 |
0x00012d8c ldr r2, [r2, 0x14] | r2 = *((r2 + 0x14));
0x00012d90 cmp r2, 0 |
0x00012d94 cmpne r3, 0 | __asm ("cmpne r3, 0");
| if (r2 == 0) {
0x00012d98 ldrne r5, [sp, 0x68] | r5 = var_68h;
| }
| if (r2 == 0) {
0x00012d9c movne r0, r4 | r0 = r4;
| }
| if (r2 == 0) {
0x00012da0 addne r5, r4, r5 | r5 = r4 + r5;
| }
| if (r2 != 0) {
0x00012da4 bne 0x138f0 | goto label_29;
| }
| }
| label_20:
0x00012da8 ldr r3, [sp, 0x18] | r3 = var_18h;
0x00012dac ldr r0, [sp, 0x58] | r0 = var_58h;
0x00012db0 add r0, r3, r0 | r0 = r3 + r0;
0x00012db4 ldr r3, [sp, 0x28] | r3 = var_28h;
0x00012db8 add r4, r4, r0 | r4 += r0;
0x00012dbc add r3, r3, r0 | r3 += r0;
0x00012dc0 str r3, [sp, 0x28] | var_28h = r3;
0x00012dc4 ldr r3, [sp, 0x10] | r3 = var_10h;
0x00012dc8 add r3, r3, 1 | r3++;
0x00012dcc str r3, [sp, 0x10] | var_10h = r3;
0x00012dd0 ldr r3, [sp, 0x30] | r3 = var_30h;
0x00012dd4 cmp r3, 0 |
| if (r3 != 0) {
0x00012dd8 beq 0x12e24 |
0x00012ddc ldr r3, [pc, 0xba4] | r3 = *(0x13984);
0x00012de0 ldr r1, [r3, 4] | r1 = "_standard_input_";
0x00012de4 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x00012de8 cmp r3, r1 |
| if (r3 >= r1) {
0x00012dec bhs 0x12e24 | goto label_30;
| }
0x00012df0 ldr r3, [pc, 0xb8c] |
0x00012df4 ldr r2, [sp, 0x2c] | r2 = var_2ch;
0x00012df8 ldr r3, [r3, 0x3c] | r3 = "_c_00m";
0x00012dfc mov r0, r4 | r0 = r4;
0x00012e00 sub r3, r4, r3 | r3 = r4 - r3;
0x00012e04 sub r1, r1, r3 | r1 -= r3;
0x00012e08 bl 0x12754 | fcn_00012754 (r0, r1);
0x00012e0c ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x00012e10 add r3, r3, r0 | r3 += r0;
0x00012e14 str r3, [sp, 0x1c] | var_1ch = r3;
0x00012e18 ldr r3, [sp, 0xc] | r3 = var_ch;
0x00012e1c add r3, r3, r0 | r3 += r0;
0x00012e20 str r3, [sp, 0xc] | var_ch = r3;
| }
| label_30:
0x00012e24 ldr r3, [pc, 0xb5c] | r3 = *(0x13984);
0x00012e28 ldr r1, [sp, 0x1c] | r1 = var_1ch;
0x00012e2c ldr r2, [r3, 4] | r2 = "_standard_input_";
0x00012e30 cmp r2, r1 |
| if (r2 <= r1) {
0x00012e34 bhi 0x12f00 |
0x00012e38 ldr r5, [pc, 0xb44] | r5 = *(0x13980);
0x00012e3c ldr r2, [r3, 0x14] | r2 = *((r3 + 0x14));
0x00012e40 ldr r3, [r5, 0x3c] | r3 = "_c_00m";
0x00012e44 add r3, r3, r2, lsl 1 | r3 += (r2 << 1);
0x00012e48 cmp r4, r3 |
| if (r4 < r3) {
0x00012e4c bls 0x12f00 | goto label_22;
| }
0x00012e50 ldr r1, [r5, 0x18] | r1 = *((r5 + 0x18));
0x00012e54 cmp r1, 0 |
| if (r1 > 0) {
0x00012e58 ble 0x12e90 |
0x00012e5c ldr r1, [sp, 0x14] | r1 = var_14h;
0x00012e60 cmp r1, 0 |
| if (r1 == 0) {
0x00012e64 beq 0x12e90 | goto label_31;
| }
0x00012e68 sub r3, r3, r2 | r3 -= r2;
0x00012e6c cmp sl, r3 |
| if (sl >= r3) {
0x00012e70 bhs 0x12e90 | goto label_31;
| }
0x00012e74 mov r3, fp | r3 = fp;
0x00012e78 ldr r2, [sp, 0xc] | r2 = var_ch;
0x00012e7c mov r1, sl | r1 = sl;
0x00012e80 ldr r0, [sp, 0x14] | r0 = var_14h;
0x00012e84 bl 0x129a4 | fcn_000129a4 (r0, r1);
0x00012e88 mov r3, 0 | r3 = 0;
0x00012e8c str r3, [sp, 0x14] | var_14h = r3;
| }
| label_31:
0x00012e90 ldr r3, [r5, 0x3c] | r3 = *((r5 + 0x3c));
0x00012e94 ldr r5, [pc, 0xaec] | r5 = *(0x13984);
0x00012e98 mov r0, r3 | r0 = r3;
0x00012e9c ldr r1, [r5, 0x14] | r1 = " of file ";
0x00012ea0 lsl r2, r1, 1 | r2 = r1 << 1;
0x00012ea4 add r1, r3, r1 | r1 = r3 + r1;
0x00012ea8 bl 0x10ca4 | memmove (r0, " of file ", r2);
0x00012eac ldr r1, [r5, 0x14] | r1 = " of file ";
0x00012eb0 ldr r2, [sp, 0x30] | r2 = var_30h;
0x00012eb4 lsl r5, r1, 1 | r5 = r1 << 1;
0x00012eb8 cmp r2, 0 |
0x00012ebc sub r4, r4, r1 | r4 -= r1;
0x00012ec0 add r0, r0, r5 | r0 += r5;
| if (r2 == 0) {
0x00012ec4 beq 0x13940 | goto label_32;
| }
0x00012ec8 ldr r2, [sp, 0x2c] | r2 = var_2ch;
0x00012ecc bl 0x12754 | r0 = fcn_00012754 (r0, r1);
| label_21:
0x00012ed0 add r3, r5, r0 | r3 = r5 + r0;
0x00012ed4 str r3, [sp, 0x1c] | var_1ch = r3;
0x00012ed8 ldr r3, [pc, 0xaa4] |
0x00012edc ldr r2, [sp, 0x1c] | r2 = var_1ch;
0x00012ee0 ldr r3, [r3, 0x3c] | r3 = "_c_00m";
0x00012ee4 add r3, r3, r2 | r3 += r2;
0x00012ee8 str r3, [sp, 0xc] | var_ch = r3;
0x00012eec ldr r3, [sp, 0x14] | r3 = var_14h;
0x00012ef0 cmp r3, 0 |
| if (r3 == 0) {
0x00012ef4 ldrne r3, [pc, 0xa8c] | r3 = "_standard_input_";
| }
| if (r3 == 0) {
0x00012ef8 ldrne r3, [r3, 0x14] | r3 = *((r3 + 0x14));
| }
| if (r3 != 0) {
0x00012efc subne sl, sl, r3 | sl -= r3;
| goto label_22;
| }
| }
| label_22:
0x00012f00 ldr r3, [sp, 0xc] | r3 = var_ch;
0x00012f04 cmp r4, r3 |
| if (r4 <= r3) {
0x00012f08 blo 0x12c1c | goto label_0;
| }
0x00012f0c ldr r4, [pc, 0xa70] | r4 = *(0x13980);
0x00012f10 ldr r3, [r4, 0x54] | r3 = *(0x139d4);
0x00012f14 cmp r3, 0 |
| if (r3 == 0) {
0x00012f18 bne 0x12f4c |
0x00012f1c ldr r3, [r4, 0x50] | r3 = *((r4 + 0x50));
0x00012f20 cmp r3, 0 |
| if (r3 != 0) {
0x00012f24 bne 0x12f4c | goto label_33;
| }
0x00012f28 mov r3, fp | r3 = fp;
0x00012f2c ldr r2, [sp, 0xc] | r2 = var_ch;
0x00012f30 mov r1, sl | r1 = sl;
0x00012f34 ldr r0, [sp, 0x14] | r0 = var_14h;
0x00012f38 bl 0x129a4 | fcn_000129a4 (r0, r1);
0x00012f3c ldr r3, [r4, 0x20] | r3 = *((r4 + 0x20));
0x00012f40 ldr r2, [sp, 0x38] | r2 = var_38h;
0x00012f44 orr r3, r3, r2 | r3 |= r2;
0x00012f48 str r3, [r4, 0x20] | *((r4 + 0x20)) = r3;
| }
| label_33:
0x00012f4c ldr r3, [pc, 0xa34] |
0x00012f50 ldr r3, [r3, 8] | r3 = stderr;
0x00012f54 cmp r3, 3 |
| if (r3 == 3) {
0x00012f58 beq 0x12ff4 | goto label_34;
| }
0x00012f5c ldr r2, [r4, 0x50] | r2 = *((r4 + 0x50));
0x00012f60 cmp r2, 0 |
| if (r2 == 0) {
0x00012f64 beq 0x12cb4 | goto label_1;
| }
0x00012f68 ldr r2, [r4, 0x4c] | r2 = *((r4 + 0x4c));
0x00012f6c cmp r2, 0 |
| if (r2 != 0) {
0x00012f70 bne 0x12cb4 | goto label_1;
| }
0x00012f74 ldr r2, [sp, 0x34] | r2 = var_34h;
0x00012f78 cmp r2, 0 |
| if (r2 != 0) {
0x00012f7c bne 0x12f8c | goto label_35;
| }
0x00012f80 ldr r2, [r4, 0x6c] | r2 = *((r4 + 0x6c));
0x00012f84 cmp r2, 0 |
| if (r2 != 0) {
0x00012f88 bne 0x12cb4 | goto label_1;
| }
| label_35:
0x00012f8c cmp r3, 0 |
0x00012f90 cmpne fp, 0 | __asm ("cmpne fp, 0");
0x00012f94 ldr r4, [pc, 0xa00] | r4 = " of file ";
| if (r3 != 0) {
0x00012f98 beq 0x12fac |
0x00012f9c mov r2, fp | r2 = fp;
0x00012fa0 ldr r1, [pc, 0x9f8] | r1 = stdout;
0x00012fa4 ldr r0, [r4] | r0 = *(r4);
0x00012fa8 bl 0x10d34 | fprintf (r0, r1, r2)
| }
0x00012fac ldr r2, [sp, 0x34] | r2 = var_34h;
0x00012fb0 ldr r1, [pc, 0x9ec] | r1 = *(0x139a0);
0x00012fb4 ldr r0, [r4] | r0 = *(r4);
0x00012fb8 b 0x12fe4 | goto label_36;
| label_25:
0x00012fbc mvn r8, 0 | r8 = ~0;
0x00012fc0 str r8, [sp, 0x40] | var_40h = r8;
0x00012fc4 b 0x12ccc | goto label_2;
| label_28:
0x00012fc8 ldr r1, [sp, 0x20] | r1 = var_20h;
0x00012fcc cmp r1, 0 |
| if (r1 != 0) {
0x00012fd0 beq 0x12fec |
0x00012fd4 ldr r3, [pc, 0x9c0] | r3 = " of file ";
0x00012fd8 ldr r2, [sp, 0x3c] | r2 = var_3ch;
0x00012fdc ldr r1, [pc, 0x9c4] | r1 = "%lu\n";
0x00012fe0 ldr r0, [r3] | r0 = " of file ";
| label_36:
0x00012fe4 bl 0x10d34 | fprintf (" of file ", "%lu\n", r2, " of file ")
0x00012fe8 b 0x12cb4 | goto label_1;
| }
0x00012fec cmp r2, 2 |
| if (r2 == 2) {
0x00012ff0 bne 0x13010 |
| label_34:
0x00012ff4 ldr r3, [pc, 0x9a0] | r3 = " of file ";
0x00012ff8 mov r2, fp | r2 = fp;
0x00012ffc ldr r1, [pc, 0x9a8] | r1 = "Binary file %s matches\n";
0x00013000 ldr r0, [r3] | r0 = " of file ";
0x00013004 bl 0x10d34 | fprintf (" of file ", "Binary file %s matches\n", r2, " of file ")
| label_27:
0x00013008 mov r7, 0 | r7 = 0;
0x0001300c b 0x12cb4 | goto label_1;
| }
0x00013010 ldr r2, [r5, 0x54] | r2 = *((r5 + 0x54));
0x00013014 cmp r2, 0 |
| if (r2 == 0) {
0x00013018 beq 0x132b0 | goto label_37;
| }
0x0001301c cmp r3, 0 |
| if (r3 != 0) {
0x00013020 bne 0x12d3c | goto label_3;
| }
0x00013024 ldr r3, [sp, 0x64] | r3 = ptr;
0x00013028 ldr r2, [sp, 0x40] | r2 = var_40h;
0x0001302c str r3, [sp, 0x44] | var_44h = r3;
0x00013030 ldr r3, [sp, 0x68] | r3 = var_68h;
0x00013034 str r3, [sp, 0x48] | var_48h = r3;
0x00013038 ldr r3, [sp, 0x44] | r3 = var_44h;
0x0001303c cmp r3, r2 |
| if (r3 == r2) {
0x00013040 bne 0x13050 |
0x00013044 ldr r3, [sp, 0x48] | r3 = var_48h;
0x00013048 cmp r8, r3 |
| if (r8 == r3) {
0x0001304c beq 0x130dc | goto label_6;
| }
| }
0x00013050 cmp fp, 0 |
| if (fp != 0) {
0x00013054 beq 0x1306c |
0x00013058 ldr r3, [pc, 0x93c] | r3 = " of file ";
0x0001305c mov r2, fp | r2 = fp;
0x00013060 ldr r1, [pc, 0x938] | r1 = stdout;
0x00013064 ldr r0, [r3] | r0 = " of file ";
0x00013068 bl 0x10d34 | fprintf (" of file ", r1, r2, " of file ")
| }
0x0001306c ldr r3, [r5, 0x1c] | r3 = *((r5 + 0x1c));
0x00013070 cmp r3, 0 |
| if (r3 != 0) {
0x00013074 beq 0x1308c |
0x00013078 ldr r3, [pc, 0x91c] | r3 = " of file ";
0x0001307c ldr r2, [sp, 0x10] | r2 = var_10h;
0x00013080 ldr r1, [pc, 0x928] | r1 = "_s";
0x00013084 ldr r0, [r3] | r0 = " of file ";
0x00013088 bl 0x10d34 | fprintf (" of file ", "_s", r2, " of file ")
| }
0x0001308c ldr r3, [r5, 0x58] | r3 = *((r5 + 0x58));
0x00013090 cmp r3, 0 |
| if (r3 == 0) {
0x00013094 ldrne r2, [sp, 0x64] | r2 = ptr;
| }
| if (r3 == 0) {
0x00013098 ldrne r3, [sp, 0x68] | r3 = var_68h;
| }
| if (r3 == 0) {
0x0001309c subne r3, r3, r2 | r3 -= r2;
| }
| if (r3 == 0) {
0x000130a0 bne 0x130cc |
0x000130a4 ldr r3, [r5, 0x5c] | r3 = *((r5 + 0x5c));
0x000130a8 cmp r3, 0 |
| if (r3 != 0) {
0x000130ac ldreq r7, [r5, 0x60] | r7 = *((r5 + 0x60));
| }
| if (r3 != 0) {
0x000130b0 ldreq r8, [pc, 0x8e4] | r8 = obj.stdout;
| }
| if (r3 == 0) {
0x000130b4 beq 0x13270 | goto label_38;
| }
0x000130b8 ldr r2, [sp, 0x64] | r2 = ptr;
0x000130bc ldr r3, [sp, 0x68] | r3 = var_68h;
0x000130c0 ldr r1, [sp, 0x28] | r1 = var_28h;
0x000130c4 sub r3, r3, r2 | r3 -= r2;
0x000130c8 add r2, r2, r1 | r2 += r1;
| }
0x000130cc ldr r0, [pc, 0x8c8] |
0x000130d0 ldr r1, [pc, 0x8dc] | r1 = "%lu:";
0x000130d4 ldr r0, [r0] | r0 = " of file ";
0x000130d8 bl 0x10d34 | fprintf (" of file ", r1, r2, r3)
| label_6:
0x000130dc ldr r3, [r5, 0x40] | r3 = *((r5 + 0x40));
0x000130e0 cmp r3, 0 |
| if (r3 != 0) {
0x000130e4 beq 0x130f4 |
0x000130e8 ldr r3, [pc, 0x8ac] | r3 = " of file ";
0x000130ec ldr r0, [r3] | r0 = " of file ";
0x000130f0 bl 0x10cf8 | fflush (" of file ");
| }
0x000130f4 ldr r3, [sp, 0x68] | r3 = var_68h;
0x000130f8 cmp r6, r3 |
| if (r6 >= r3) {
0x000130fc blt 0x1312c |
0x00013100 ldr r2, [sp, 0x24] | r2 = var_24h;
0x00013104 cmp r2, r3 |
| if (r2 < r3) {
0x00013108 bls 0x13938 | goto label_39;
| }
0x0001310c ldr r2, [r5, 4] | r2 = *((r5 + 4));
0x00013110 add r3, r6, 1 | r3 = r6 + 1;
0x00013114 cmp r2, 0 |
| if (r2 == 0) {
0x00013118 beq 0x1312c | goto label_40;
| }
| label_7:
0x0001311c ldrb r2, [r4, r3] | r2 = *((r4 + r3));
0x00013120 and r2, r2, 0xc0 | r2 &= 0xc0;
0x00013124 cmp r2, 0x80 |
| if (r2 == 0x80) {
0x00013128 beq 0x132a8 | goto label_41;
| }
| }
| label_40:
0x0001312c mov r6, r3 | r6 = r3;
0x00013130 ldr r3, [sp, 0x44] | r3 = var_44h;
0x00013134 mov r7, 0 | r7 = 0;
0x00013138 mov sb, 0x400 | sb = 0x400;
0x0001313c str r3, [sp, 0x40] | var_40h = r3;
| label_5:
0x00013140 ldr r3, [sp, 0x18] | r3 = var_18h;
0x00013144 ldr r8, [sp, 0x48] | r8 = var_48h;
0x00013148 cmp r6, r3 |
| if (r6 <= r3) {
0x0001314c ble 0x12cd4 | goto label_4;
| }
0x00013150 add r2, sp, 0x1f0 | r2 += var_1f0h;
0x00013154 ldr r3, [sp, 0x18] | r3 = var_18h;
0x00013158 ldr r0, [r2, -0x198]! | r0 = var_58h;
0x0001315c ldr r1, [sp, 0xc] | r1 = var_ch;
0x00013160 add r0, r3, r0 | r0 = r3 + r0;
0x00013164 ldr r3, [sp, 0x28] | r3 = var_28h;
0x00013168 add r4, r4, r0 | r4 += r0;
0x0001316c add r3, r3, r0 | r3 += r0;
0x00013170 str r3, [sp, 0x28] | var_28h = r3;
0x00013174 ldr r3, [sp, 0x10] | r3 = var_10h;
0x00013178 sub r6, r6, r0 | r6 -= r0;
0x0001317c add r3, r3, 1 | r3++;
0x00013180 mov r0, r4 | r0 = r4;
0x00013184 str r3, [sp, 0x10] | var_10h = r3;
0x00013188 bl 0x1245c | fcn_0001245c ();
0x0001318c ldr r3, [sp, 0x58] | r3 = var_58h;
0x00013190 sub r0, r0, r4 | r0 -= r4;
0x00013194 sub r3, r0, r3 | r3 = r0 - r3;
0x00013198 str r3, [sp, 0x18] | var_18h = r3;
0x0001319c ldr r3, [sp, 0xc] | r3 = var_ch;
0x000131a0 sub r3, r3, r4 | r3 -= r4;
0x000131a4 str r3, [sp, 0x24] | var_24h = r3;
0x000131a8 b 0x13140 | goto label_5;
| do {
0x000131ac ldr r2, [r7, 4] | r2 = *((r7 + 4));
0x000131b0 ldr r1, [sp, 0x5c] | r1 = var_5ch;
0x000131b4 cmp r2, r1 |
| if (r2 < r1) {
0x000131b8 bge 0x1326c |
0x000131bc lsl r1, r2, 1 | r1 = r2 << 1;
0x000131c0 lsl r0, r2, 1 | r0 = r2 << 1;
0x000131c4 str r1, [sp, 0x40] | var_40h = r1;
0x000131c8 add r1, sp, 0x1f0 | r1 += var_1f0h;
0x000131cc add r1, r1, r0, lsl 2 | r1 += (r0 << 2);
0x000131d0 add r0, sp, 0x1f0 | r0 += var_1f0h;
0x000131d4 add r2, r0, r2, lsl 3 | r2 = r0 + (r2 << 3);
0x000131d8 ldr sb, [r1, -0x188] | sb = var_60h;
0x000131dc ldr r2, [r2, -0x18c] | r2 = var_5ch;
0x000131e0 sub sb, sb, r2 | sb -= r2;
0x000131e4 cmp sb, 0 |
| if (sb <= 0) {
0x000131e8 ble 0x1326c | goto label_42;
| }
0x000131ec cmp r3, 0 |
| if (r3 != 0) {
0x000131f0 beq 0x13204 |
0x000131f4 ldr r3, [pc, 0x78c] | r3 = *(0x13984);
0x000131f8 ldr r1, [r8] | r1 = *(r8);
0x000131fc ldr r0, [r3, 0xc] | r0 = "pcregrep:_line__lu_s_s_is_too_long_for_the_internal_bufferpcregrep:_check_the___buffer_size_option";
0x00013200 bl 0x10e60 | fputs ("pcregrep:_line__lu_s_s_is_too_long_for_the_internal_bufferpcregrep:_check_the___buffer_size_option", r1);
| }
0x00013204 ldr r3, [r5, 0x64] | r3 = *((r5 + 0x64));
0x00013208 cmp r3, 0 |
| if (r3 != 0) {
0x0001320c beq 0x13228 |
0x00013210 ldr r3, [pc, 0x770] |
0x00013214 mov r2, 0x1b | r2 = 0x1b;
0x00013218 ldr r3, [r3, 0x10] | r3 = *(0x13994);
0x0001321c ldr r1, [pc, 0x794] | r1 = "_d__d";
0x00013220 ldr r0, [r8] | r0 = *(r8);
0x00013224 bl 0x10d34 | fprintf (r0, "_d__d", r2, r3)
| }
0x00013228 ldr r2, [sp, 0x40] | r2 = var_40h;
0x0001322c add r3, sp, 0x1f0 | r3 += var_1f0h;
0x00013230 add r3, r3, r2, lsl 2 | r3 += (r2 << 2);
0x00013234 ldr r0, [r3, -0x18c] | r0 = ptr;
0x00013238 mov r2, sb | r2 = sb;
0x0001323c ldr r3, [r8] | r3 = *(r8);
0x00013240 mov r1, 1 | r1 = 1;
0x00013244 add r0, r4, r0 | r0 = r4 + r0;
0x00013248 bl 0x10e00 | fwrite (r0, r1, r2, r3);
0x0001324c ldr r3, [r5, 0x64] | r3 = *((r5 + 0x64));
0x00013250 cmp r3, 0 |
| if (r3 != 0) {
0x00013254 beq 0x13268 |
0x00013258 mov r2, 0x1b | r2 = 0x1b;
0x0001325c ldr r1, [pc, 0x758] | r1 = "%c[%sm";
0x00013260 ldr r0, [r8] | r0 = *(r8);
0x00013264 bl 0x10d34 | fprintf (r0, "%c[%sm", r2)
| }
0x00013268 mov r3, 1 | r3 = 1;
| }
| label_42:
0x0001326c ldr r7, [r7] | r7 = *(r7);
| label_38:
0x00013270 cmp r7, 0 |
0x00013274 bne 0x131ac |
| } while (r7 != 0);
0x00013278 cmp fp, 0 |
| if (fp == 0) {
0x0001327c movne r3, 1 | r3 = 1;
| }
0x00013280 cmp r3, 0 |
| if (r3 != 0) {
0x00013284 bne 0x13294 | goto label_43;
| }
0x00013288 ldr r3, [r5, 0x1c] | r3 = *((r5 + 0x1c));
0x0001328c cmp r3, 0 |
| if (r3 == 0) {
0x00013290 beq 0x130dc | goto label_6;
| }
| label_43:
0x00013294 ldr r3, [pc, 0x700] | r3 = " of file ";
0x00013298 mov r0, 0xa | r0 = 0xa;
0x0001329c ldr r1, [r3] | r1 = " of file ";
0x000132a0 bl 0x10de8 | fputc (r0, " of file ");
0x000132a4 b 0x130dc | goto label_6;
| label_41:
0x000132a8 add r3, r3, 1 | r3++;
0x000132ac b 0x1311c | goto label_7;
| label_37:
0x000132b0 ldr r3, [r5, 0x18] | r3 = *((r5 + 0x18));
0x000132b4 cmp r3, 0 |
| if (r3 <= 0) {
0x000132b8 ble 0x13394 | goto label_44;
| }
0x000132bc ldr r3, [sp, 0x14] | r3 = var_14h;
0x000132c0 cmp r3, 0 |
| if (r3 == 0) {
0x000132c4 beq 0x13394 | goto label_44;
| }
0x000132c8 mov r5, sl | r5 = sl;
0x000132cc ldr r6, [sp, 0x20] | r6 = var_20h;
0x000132d0 ldr r7, [pc, 0x6ac] | r7 = *(0x13980);
0x000132d4 b 0x132f0 |
| while (r6 < r3) {
0x000132d8 mov r0, r5 | r0 = r5;
0x000132dc add r2, sp, 0x60 | r2 += var_60h;
0x000132e0 mov r1, r4 | r1 = r4;
0x000132e4 bl 0x1245c | fcn_0001245c ();
0x000132e8 add r6, r6, 1 | r6++;
0x000132ec mov r5, r0 | r5 = r0;
0x000132f0 cmp r4, r5 |
| if (r4 < r5) {
0x000132f4 bls 0x13304 | goto label_45;
| }
0x000132f8 ldr r3, [r7, 0x18] | r3 = *((r7 + 0x18));
0x000132fc cmp r6, r3 |
0x00013300 blt 0x132d8 |
| }
| label_45:
0x00013304 ldr r7, [pc, 0x678] | r7 = *(0x13980);
0x00013308 ldr r6, [pc, 0x68c] | r6 = " of file ";
0x0001330c ldr sb, [pc, 0x6ac] | sb = "_c_00m";
0x00013310 b 0x13380 |
| while (r5 > sl) {
0x00013314 cmp fp, 0 |
| if (fp != 0) {
0x00013318 beq 0x1332c |
0x0001331c mov r2, fp | r2 = fp;
0x00013320 mov r1, sb | r1 = sb;
0x00013324 ldr r0, [r6] | r0 = *(r6);
0x00013328 bl 0x10d34 | fprintf (r0, r1, r2)
| }
0x0001332c ldr r3, [r7, 0x1c] | r3 = *((r7 + 0x1c));
0x00013330 cmp r3, 0 |
| if (r3 != 0) {
0x00013334 beq 0x13354 |
0x00013338 ldr r3, [sp, 0x14] | r3 = var_14h;
0x0001333c ldr r1, [pc, 0x680] | r1 = *(0x139c0);
0x00013340 add r8, r3, 1 | r8 = r3 + 1;
0x00013344 mov r2, r3 | r2 = r3;
0x00013348 ldr r0, [r6] | r0 = *(r6);
0x0001334c bl 0x10d34 | fprintf (r0, r1, r2, r3)
0x00013350 str r8, [sp, 0x14] | var_14h = r8;
| }
0x00013354 add r2, sp, 0x60 | r2 += var_60h;
0x00013358 ldr r1, [sp, 0xc] | r1 = var_ch;
0x0001335c mov r0, sl | r0 = sl;
0x00013360 bl 0x1245c | fcn_0001245c ();
0x00013364 ldr r3, [r6] | r3 = *(r6);
0x00013368 mov r1, 1 | r1 = 1;
0x0001336c sub r2, r0, sl | r2 = r0 - sl;
0x00013370 mov r8, r0 | r8 = r0;
0x00013374 mov r0, sl | r0 = sl;
0x00013378 bl 0x10e00 | fwrite (r0, r1, r2, r3);
0x0001337c mov sl, r8 | sl = r8;
0x00013380 cmp r5, sl |
0x00013384 bhi 0x13314 |
| }
0x00013388 cmp r4, sl |
| if (r4 == sl) {
0x0001338c movne r3, 1 | r3 = 1;
| }
| if (r4 == sl) {
0x00013390 strne r3, [r7, 0x20] | *((r7 + 0x20)) = r3;
| }
| label_44:
0x00013394 ldr r5, [pc, 0x5e8] | r5 = *(0x13980);
0x00013398 ldr r3, [r5, 0x20] | r3 = *(0x139a0);
0x0001339c cmp r3, 0 |
| if (r3 != 0) {
0x000133a0 beq 0x133c0 |
0x000133a4 ldr r3, [pc, 0x5f0] | r3 = " of file ";
0x000133a8 ldr r0, [pc, 0x618] | r0 = "%lu-";
0x000133ac ldr r1, [r3] | r1 = " of file ";
0x000133b0 bl 0x10e60 | fputs ("%lu-", " of file ");
0x000133b4 mov r3, 0 | r3 = 0;
0x000133b8 str r3, [r5, 0x20] | *((r5 + 0x20)) = r3;
0x000133bc mov r3, 1 | r3 = 1;
| }
0x000133c0 str r3, [sp, 0x48] | var_48h = r3;
0x000133c4 ldr r3, [r5, 0x68] | r3 = *((r5 + 0x68));
0x000133c8 cmp r3, 0 |
0x000133cc str r3, [sp, 0x40] | var_40h = r3;
| if (r3 > 0) {
0x000133d0 bgt 0x13578 | goto label_46;
| }
| label_8:
0x000133d4 ldr r5, [pc, 0x5a8] | r5 = *(0x13980);
0x000133d8 ldr r3, [r5, 0x18] | r3 = " of file ";
0x000133dc cmp r3, 0 |
| if (r3 <= 0) {
0x000133e0 movgt r3, 1 | r3 = 1;
| }
| if (r3 <= 0) {
0x000133e4 bgt 0x133f8 |
0x000133e8 ldr r3, [r5, 0x68] | r3 = *((r5 + 0x68));
0x000133ec cmp r3, 0 |
0x000133f0 ldr r3, [sp, 0x38] | r3 = var_38h;
| if (r3 > 0) {
0x000133f4 movgt r3, 1 | r3 = 1;
| goto label_47;
| }
| }
| label_47:
0x000133f8 cmp fp, 0 |
0x000133fc str r3, [sp, 0x38] | var_38h = r3;
| if (fp != 0) {
0x00013400 beq 0x13418 |
0x00013404 ldr r3, [pc, 0x590] | r3 = " of file ";
0x00013408 mov r2, fp | r2 = fp;
0x0001340c ldr r1, [pc, 0x58c] | r1 = stdout;
0x00013410 ldr r0, [r3] | r0 = " of file ";
0x00013414 bl 0x10d34 | fprintf (" of file ", r1, r2, " of file ")
| }
0x00013418 ldr r3, [r5, 0x1c] | r3 = *((r5 + 0x1c));
0x0001341c cmp r3, 0 |
| if (r3 != 0) {
0x00013420 beq 0x13438 |
0x00013424 ldr r3, [pc, 0x570] | r3 = " of file ";
0x00013428 ldr r2, [sp, 0x10] | r2 = var_10h;
0x0001342c ldr r1, [pc, 0x57c] | r1 = "_s";
0x00013430 ldr r0, [r3] | r0 = " of file ";
0x00013434 bl 0x10d34 | fprintf (" of file ", "_s", r2, " of file ")
| }
0x00013438 ldr r3, [pc, 0x544] |
0x0001343c ldr r6, [r3, 0x14] | r6 = *(0x13994);
0x00013440 ldr r3, [r3, 0x48] | r3 = *(0x139c8);
0x00013444 clz r6, r6 | r6 &= r6;
0x00013448 lsr r6, r6, 5 | r6 >>= 5;
0x0001344c tst r6, r3 |
| if ((r6 & r3) == 0) {
0x00013450 ldrne r5, [sp, 0x68] | r5 = var_68h;
| }
| if ((r6 & r3) == 0) {
0x00013454 movne r0, r4 | r0 = r4;
| }
| if ((r6 & r3) == 0) {
0x00013458 addne r5, r4, r5 | r5 = r4 + r5;
| }
| if ((r6 & r3) != 0) {
0x0001345c bne 0x13880 | goto label_48;
| }
| label_19:
0x00013460 ldr r2, [pc, 0x51c] |
0x00013464 ldr r5, [pc, 0x530] | r5 = " of file ";
0x00013468 ldr r2, [r2, 0x64] | r2 = *(0x139e4);
0x0001346c ldr r3, [r5] | r3 = " of file ";
0x00013470 cmp r2, 0 |
| if (r2 != 0) {
0x00013474 moveq r6, 0 | r6 = 0;
| }
0x00013478 cmp r6, 0 |
| if (r6 == 0) {
0x0001347c beq 0x138d4 | goto label_49;
| }
0x00013480 ldr r7, [pc, 0x500] | r7 = *(0x13984);
0x00013484 ldr r2, [sp, 0x64] | r2 = ptr;
0x00013488 mov r1, 1 | r1 = 1;
0x0001348c mov r0, r4 | r0 = r4;
0x00013490 bl 0x10e00 | fwrite (r0, r1, r2, r3);
0x00013494 ldr r3, [r7, 0x10] | r3 = *(0x13994);
0x00013498 mov r2, 0x1b | r2 = 0x1b;
0x0001349c ldr r1, [pc, 0x514] | r1 = "_d__d";
0x000134a0 ldr r0, [r5] | r0 = *(r5);
0x000134a4 bl 0x10d34 | fprintf (r0, "_d__d", r2, r3)
0x000134a8 ldr r0, [sp, 0x64] | r0 = ptr;
0x000134ac ldr r2, [sp, 0x68] | r2 = var_68h;
0x000134b0 ldr r3, [r5] | r3 = *(r5);
0x000134b4 sub r2, r2, r0 | r2 -= r0;
0x000134b8 mov r1, 1 | r1 = 1;
0x000134bc add r0, r4, r0 | r0 = r4 + r0;
0x000134c0 bl 0x10e00 | fwrite (r0, r1, r2, r3);
0x000134c4 mov r2, 0x1b | r2 = 0x1b;
0x000134c8 ldr r1, [pc, 0x4ec] | r1 = "%c[%sm";
0x000134cc ldr r0, [r5] | r0 = *(r5);
0x000134d0 bl 0x10d34 | fprintf (r0, "%c[%sm", r2)
0x000134d4 ldr r8, [pc, 0x4dc] | r8 = "_d__d";
| do {
0x000134d8 ldr r3, [sp, 0x58] | r3 = var_58h;
0x000134dc ldr r2, [sp, 0x18] | r2 = var_18h;
0x000134e0 ldr r6, [sp, 0x68] | r6 = var_68h;
0x000134e4 add r3, r2, r3 | r3 = r2 + r3;
0x000134e8 cmp r6, r3 |
| if (r6 >= r3) {
0x000134ec bge 0x138a4 | goto label_50;
| }
0x000134f0 add r3, sp, 0x5c | r3 += var_5ch;
0x000134f4 str r3, [sp, 4] | var_4h = r3;
0x000134f8 add r3, sp, 0x64 | r3 += ptr;
0x000134fc str r3, [sp] | *(sp) = r3;
0x00013500 mov r2, 0x400 | r2 = 0x400;
0x00013504 mov r3, r6 | r3 = r6;
0x00013508 ldr r1, [sp, 0x24] | r1 = var_24h;
0x0001350c mov r0, r4 | r0 = r4;
0x00013510 bl 0x12824 | r0 = fcn_00012824 (r0, r1);
0x00013514 cmp r0, 0 |
| if (r0 == 0) {
0x00013518 beq 0x138a4 | goto label_50;
| }
0x0001351c ldr r2, [sp, 0x64] | r2 = ptr;
0x00013520 ldr r3, [r5] | r3 = *(r5);
0x00013524 sub r2, r2, r6 | r2 -= r6;
0x00013528 mov r1, 1 | r1 = 1;
0x0001352c add r0, r4, r6 | r0 = r4 + r6;
0x00013530 bl 0x10e00 | fwrite (r0, r1, r2, r3);
0x00013534 ldr r3, [r7, 0x10] | r3 = *((r7 + 0x10));
0x00013538 mov r1, r8 | r1 = r8;
0x0001353c mov r2, 0x1b | r2 = 0x1b;
0x00013540 ldr r0, [r5] | r0 = *(r5);
0x00013544 bl 0x10d34 | fprintf (r0, r1, r2, r3)
0x00013548 ldr r0, [sp, 0x64] | r0 = ptr;
0x0001354c ldr r2, [sp, 0x68] | r2 = var_68h;
0x00013550 ldr r3, [r5] | r3 = *(r5);
0x00013554 sub r2, r2, r0 | r2 -= r0;
0x00013558 mov r1, 1 | r1 = 1;
0x0001355c add r0, r4, r0 | r0 = r4 + r0;
0x00013560 bl 0x10e00 | fwrite (r0, r1, r2, r3);
0x00013564 mov r2, 0x1b | r2 = 0x1b;
0x00013568 ldr r1, [pc, 0x44c] | r1 = "%c[%sm";
0x0001356c ldr r0, [r5] | r0 = *(r5);
0x00013570 bl 0x10d34 | fprintf (r0, "%c[%sm", r2)
0x00013574 b 0x134d8 |
| } while (1);
| label_46:
0x00013578 ldr r3, [r5] | r3 = *(r5);
0x0001357c ldr r2, [r5, 0x3c] | r2 = *((r5 + 0x3c));
0x00013580 str r3, [sp, 0x4c] | var_4ch = r3;
0x00013584 sub r3, r3, 1 | r3--;
0x00013588 ldr sb, [r5, 4] | sb = *((r5 + 4));
0x0001358c str r3, [sp, 0x50] | var_50h = r3;
0x00013590 mov r5, r4 | r5 = r4;
0x00013594 add r3, r2, 1 | r3 = r2 + 1;
0x00013598 mov r6, 0 | r6 = 0;
0x0001359c str r3, [sp, 0x54] | var_54h = r3;
| label_10:
0x000135a0 cmp r5, sl |
| if (r5 > sl) {
0x000135a4 movls r1, 0 | r1 = 0;
| }
| if (r5 <= sl) {
0x000135a8 movhi r1, 1 | r1 = 1;
| }
0x000135ac cmp r5, r2 |
| if (r5 >= r2) {
0x000135b0 bls 0x135dc |
0x000135b4 ldr r3, [sp, 0x14] | r3 = var_14h;
0x000135b8 ldr r0, [sp, 0x40] | r0 = var_40h;
0x000135bc cmp r3, 0 |
| if (r3 == 0) {
0x000135c0 movne r3, r1 | r3 = r1;
| }
| if (r3 != 0) {
0x000135c4 moveq r3, 1 | r3 = 1;
| }
0x000135c8 cmp r0, r6 |
| if (r0 > r6) {
0x000135cc movle r3, 0 | r3 = 0;
| }
| if (r0 <= r6) {
0x000135d0 andgt r3, r3, 1 | r3 &= 1;
| }
0x000135d4 cmp r3, 0 |
| if (r3 != 0) {
0x000135d8 bne 0x1368c | goto label_51;
| }
| }
0x000135dc ldr r3, [sp, 0x14] | r3 = var_14h;
0x000135e0 ldr r2, [sp, 0x48] | r2 = var_48h;
0x000135e4 cmp r3, 0 |
| if (r3 == 0) {
0x000135e8 eorne r3, r2, 1 | r3 = r2 ^ 1;
| }
| if (r3 != 0) {
0x000135ec moveq r3, 0 | r3 = 0;
| }
0x000135f0 tst r1, r3 |
| if ((r1 & r3) != 0) {
0x000135f4 beq 0x13608 |
0x000135f8 ldr r3, [pc, 0x39c] | r3 = " of file ";
0x000135fc ldr r0, [pc, 0x3c4] | r0 = "%lu-";
0x00013600 ldr r1, [r3] | r1 = " of file ";
0x00013604 bl 0x10e60 | fputs ("%lu-", " of file ");
| }
0x00013608 ldr r7, [pc, 0x38c] | r7 = " of file ";
0x0001360c ldr sb, [pc, 0x3ac] | sb = "_c_00m";
0x00013610 ldr sl, [pc, 0x36c] | sl = *(0x00013984);
| label_9:
0x00013614 cmp r4, r5 |
| if (r4 < r5) {
0x00013618 bls 0x133d4 | goto label_8;
| }
0x0001361c cmp fp, 0 |
| if (fp != 0) {
0x00013620 beq 0x13634 |
0x00013624 mov r2, fp | r2 = fp;
0x00013628 mov r1, sb | r1 = sb;
0x0001362c ldr r0, [r7] | r0 = *(r7);
0x00013630 bl 0x10d34 | fprintf (r0, r1, r2)
| }
0x00013634 ldr r3, [sl, 0x1c] | r3 = *((sl + 0x1c));
0x00013638 cmp r3, 0 |
| if (r3 != 0) {
0x0001363c beq 0x1365c |
0x00013640 ldr r3, [sp, 0x10] | r3 = var_10h;
0x00013644 ldr r1, [pc, 0x378] | r1 = *(0x139c0);
0x00013648 sub r2, r3, r6 | r2 = r3 - r6;
0x0001364c ldr r0, [r7] | r0 = *(r7);
0x00013650 bl 0x10d34 | fprintf (r0, r1, r2, r3)
0x00013654 sub r8, r6, 1 | r8 = r6 - 1;
0x00013658 mov r6, r8 | r6 = r8;
| }
0x0001365c add r2, sp, 0x60 | r2 += var_60h;
0x00013660 ldr r1, [sp, 0xc] | r1 = var_ch;
0x00013664 mov r0, r5 | r0 = r5;
0x00013668 bl 0x1245c | fcn_0001245c ();
0x0001366c ldr r3, [r7] | r3 = *(r7);
0x00013670 mov r1, 1 | r1 = 1;
0x00013674 sub r2, r0, r5 | r2 = r0 - r5;
0x00013678 mov r8, r0 | r8 = r0;
0x0001367c mov r0, r5 | r0 = r5;
0x00013680 bl 0x10e00 | fwrite (r0, r1, r2, r3);
0x00013684 mov r5, r8 | r5 = r8;
0x00013688 b 0x13614 | goto label_9;
| label_51:
0x0001368c ldr r3, [sp, 0x50] | r3 = var_50h;
0x00013690 add r6, r6, 1 | r6++;
0x00013694 cmp r3, 3 |
| if (r3 > 3) {
| /* switch table (4 cases) at 0x136a0 */
0x00013698 ldrls pc, [pc, r3, lsl 2] | offset_0 = r3 << 2;
| pc = *((pc + offset_0));
| }
0x0001369c b 0x136b0 |
0x000136b0 sub r3, r5, 1 | r3 = r5 - 1;
| label_11:
0x000136b4 cmp r3, r2 |
0x000136b8 mov r5, r3 | r5 = r3;
| if (r3 == r2) {
0x000136bc beq 0x135a0 | goto label_10;
| }
0x000136c0 ldrb r1, [r3, -1]! | r1 = *((r3 -= 1));
0x000136c4 cmp r1, 0xa |
| if (r1 != 0xa) {
0x000136c8 bne 0x136b4 | goto label_11;
| }
0x000136cc b 0x135a0 | goto label_10;
0x000136d0 sub r3, r5, 1 | r3 = r5 - 1;
| label_12:
0x000136d4 cmp r3, r2 |
0x000136d8 mov r5, r3 | r5 = r3;
| if (r3 == r2) {
0x000136dc beq 0x135a0 | goto label_10;
| }
0x000136e0 ldrb r1, [r3, -1]! | r1 = *((r3 -= 1));
0x000136e4 cmp r1, 0xa |
| if (r1 != 0xa) {
0x000136e8 bne 0x136d4 | goto label_12;
| }
0x000136ec b 0x135a0 | goto label_10;
| label_13:
0x000136f0 sub r3, r5, 2 | r3 = r5 - 2;
| do {
0x000136f4 cmp r2, r3 |
0x000136f8 mov r5, r3 | r5 = r3;
| if (r2 >= r3) {
0x000136fc bhs 0x1370c | goto label_52;
| }
0x00013700 ldrb r1, [r3, -1]! | r1 = *((r3 -= 1));
0x00013704 cmp r1, 0xa |
0x00013708 bne 0x136f4 |
| } while (r1 != 0xa);
| label_52:
0x0001370c ldr r3, [sp, 0x54] | r3 = var_54h;
0x00013710 cmp r5, r3 |
| if (r5 < r3) {
0x00013714 bls 0x135a0 | goto label_10;
| }
0x00013718 ldrb r3, [r5, -2] | r3 = *((r5 - 2));
0x0001371c cmp r3, 0xd |
| if (r3 != 0xd) {
0x00013720 bne 0x136f0 | goto label_13;
| }
0x00013724 b 0x135a0 | goto label_10;
0x00013728 ldrb r0, [r5, -1] | r0 = *((r5 - 1));
0x0001372c sub r3, r5, 1 | r3 = r5 - 1;
0x00013730 cmp r2, r3 |
0x00013734 sub r1, r0, 0xa | r1 = r0 - 0xa;
0x00013738 clz r1, r1 | r1 &= r1;
0x0001373c lsr r1, r1, 5 | r1 >>= 5;
| if (r2 < r3) {
0x00013740 movhs r1, 0 | r1 = 0;
| }
0x00013744 cmp r1, 0 |
| if (r1 != 0) {
0x00013748 beq 0x13758 |
0x0001374c ldrb r1, [r5, -2] | r1 = *((r5 - 2));
0x00013750 cmp r1, 0xd |
| if (r1 == 0xd) {
0x00013754 subeq r3, r5, 2 | r3 = r5 - 2;
| goto label_53;
| }
| }
| label_53:
0x00013758 cmp sb, 0 |
| if (sb == 0) {
0x0001375c movne r0, r3 | r0 = r3;
| }
| if (sb != 0) {
0x00013760 bne 0x13778 | goto label_54;
| }
| label_14:
0x00013764 mov r5, r3 | r5 = r3;
| label_15:
0x00013768 cmp r2, r5 |
| if (r2 <= r5) {
0x0001376c blo 0x13794 | goto label_55;
| }
0x00013770 mov r5, r2 | r5 = r2;
0x00013774 b 0x135a0 | goto label_10;
| do {
| label_54:
0x00013778 mov r3, r0 | r3 = r0;
0x0001377c ldrb r1, [r3] | r1 = *(r3);
0x00013780 sub r0, r0, 1 | r0--;
0x00013784 and r1, r1, 0xc0 | r1 &= 0xc0;
0x00013788 cmp r1, 0x80 |
0x0001378c beq 0x13778 |
| } while (r1 == 0x80);
0x00013790 b 0x13764 | goto label_14;
| label_55:
0x00013794 cmp sb, 0 |
0x00013798 sub r1, r5, 1 | r1 = r5 - 1;
| if (sb != 0) {
0x0001379c ldrbeq r3, [r5, -1] | r3 = *((r5 - 1));
| }
| if (sb == 0) {
0x000137a0 beq 0x137f8 | goto label_56;
| }
0x000137a4 mov r0, r1 | r0 = r1;
| do {
0x000137a8 ldrb r3, [r0] | r3 = *(r0);
0x000137ac mov r1, r0 | r1 = r0;
0x000137b0 and ip, r3, 0xc0 |
0x000137b4 cmp ip, 0x80 |
0x000137b8 sub r0, r0, 1 | r0--;
0x000137bc beq 0x137a8 |
| } while (ip == 0x80);
0x000137c0 cmp r3, 0xbf |
| if (r3 >= 0xbf) {
0x000137c4 bls 0x137f8 |
0x000137c8 ldr r7, [pc, 0x1fc] | r7 = *(0x139c8);
0x000137cc and r0, r3, 0x3f | r0 = r3 & 0x3f;
0x000137d0 ldrb ip, [r7, r0] | ip = *((r7 + r0));
0x000137d4 add r0, r7, ip, lsl 2 | r0 = r7 + (ip << 2);
0x000137d8 ldr r0, [r0, 0x40] | r0 = *((r0 + 0x40));
0x000137dc add lr, ip, ip, lsl 1 | lr = ip + (ip << 1);
0x000137e0 and r3, r3, r0 | r3 &= r0;
0x000137e4 lsl lr, lr, 1 | lr <<= 1;
0x000137e8 lsl r3, r3, lr | r3 <<= lr;
0x000137ec mov r0, 1 | r0 = 1;
| label_16:
0x000137f0 cmp ip, r0 |
| if (ip >= r0) {
0x000137f4 bge 0x1381c | goto label_57;
| }
| }
| label_56:
0x000137f8 ldr r0, [sp, 0x4c] | r0 = var_4ch;
0x000137fc cmp r0, 4 |
| if (r0 != 4) {
0x00013800 bne 0x1383c | goto label_58;
| }
0x00013804 cmp r3, 0xa |
| if (r3 == 0xa) {
0x00013808 beq 0x135a0 | goto label_10;
| }
0x0001380c cmp r3, 0xd |
| if (r3 == 0xd) {
0x00013810 beq 0x135a0 | goto label_10;
| }
| label_17:
0x00013814 mov r5, r1 | r5 = r1;
0x00013818 b 0x13768 | goto label_15;
| label_57:
0x0001381c mov r7, 6 | r7 = 6;
0x00013820 ldrb r8, [r1, r0] | r8 = *((r1 + r0));
0x00013824 mul r7, r0, r7 | r7 = r0 * r7;
0x00013828 and r8, r8, 0x3f | r8 &= 0x3f;
0x0001382c sub r7, lr, r7 | r7 = lr - r7;
0x00013830 orr r3, r3, r8, lsl r7 | r3 |= (r8 << r7);
0x00013834 add r0, r0, 1 | r0++;
0x00013838 b 0x137f0 | goto label_16;
| label_58:
0x0001383c cmp r3, 0x85 |
| if (r3 == 0x85) {
0x00013840 beq 0x135a0 | goto label_10;
| }
| if (r3 > 0x85) {
0x00013844 bhi 0x13858 | goto label_59;
| }
0x00013848 sub r3, r3, 0xa | r3 -= 0xa;
0x0001384c cmp r3, 3 |
| if (r3 > 3) {
| label_18:
0x00013850 bhi 0x13814 | goto label_17;
| }
0x00013854 b 0x135a0 | goto label_10;
| label_59:
0x00013858 sub r3, r3, 0x2000 | r3 -= 0x2000;
0x0001385c sub r3, r3, 0x28 | r3 -= 0x28;
0x00013860 cmp r3, 1 |
0x00013864 b 0x13850 | goto label_18;
| do {
0x00013868 add r2, sp, 0x58 | r2 += var_58h;
0x0001386c ldr r1, [sp, 0xc] | r1 = var_ch;
0x00013870 bl 0x1245c | r0 = fcn_0001245c ();
0x00013874 cmp r5, r0 |
| if (r5 < r0) {
0x00013878 bls 0x13890 | goto label_60;
| }
0x0001387c str r7, [sp, 0x10] | var_10h = r7;
| label_48:
0x00013880 ldr r3, [sp, 0x10] | r3 = var_10h;
0x00013884 cmp r5, r0 |
0x00013888 add r7, r3, 1 | r7 = r3 + 1;
0x0001388c bhs 0x13868 |
| } while (r5 >= r0);
| label_60:
0x00013890 ldr r3, [sp, 0x58] | r3 = var_58h;
0x00013894 sub r0, r0, r4 | r0 -= r4;
0x00013898 sub r3, r0, r3 | r3 = r0 - r3;
0x0001389c str r3, [sp, 0x18] | var_18h = r3;
0x000138a0 b 0x13460 | goto label_19;
| label_50:
0x000138a4 ldr r2, [sp, 0x58] | r2 = var_58h;
0x000138a8 ldr r3, [sp, 0x18] | r3 = var_18h;
0x000138ac add r2, r3, r2 | r2 = r3 + r2;
0x000138b0 sub r2, r2, r6 | r2 -= r6;
0x000138b4 cmp r2, 0 |
| if (r2 <= 0) {
0x000138b8 ble 0x12d3c | goto label_3;
| }
0x000138bc ldr r3, [pc, 0xd8] |
0x000138c0 mov r1, 1 | r1 = 1;
0x000138c4 ldr r3, [r3] | r3 = " of file ";
0x000138c8 add r0, r4, r6 | r0 = r4 + r6;
| do {
0x000138cc bl 0x10e00 | fwrite (r0, r1, r2, " of file ");
0x000138d0 b 0x12d3c | goto label_3;
| label_49:
0x000138d4 ldr r1, [sp, 0x18] | r1 = var_18h;
0x000138d8 ldr r2, [sp, 0x58] | r2 = var_58h;
0x000138dc mov r0, r4 | r0 = r4;
0x000138e0 add r2, r1, r2 | r2 = r1 + r2;
0x000138e4 mov r1, 1 | r1 = 1;
0x000138e8 b 0x138cc |
| } while (1);
| do {
0x000138ec str r6, [sp, 0x10] | var_10h = r6;
| label_29:
0x000138f0 ldr r3, [sp, 0x10] | r3 = var_10h;
0x000138f4 cmp r5, r0 |
0x000138f8 add r6, r3, 1 | r6 = r3 + 1;
| if (r5 < r0) {
0x000138fc bls 0x13914 | goto label_61;
| }
0x00013900 add r2, sp, 0x60 | r2 += var_60h;
0x00013904 ldr r1, [sp, 0xc] | r1 = var_ch;
0x00013908 bl 0x1245c | r0 = fcn_0001245c ();
0x0001390c cmp r5, r0 |
0x00013910 bhs 0x138ec |
| } while (r5 >= r0);
| label_61:
0x00013914 add r2, sp, 0x60 | r2 += var_60h;
0x00013918 ldr r1, [sp, 0xc] | r1 = var_ch;
0x0001391c mov r0, r5 | r0 = r5;
0x00013920 bl 0x1245c | fcn_0001245c ();
0x00013924 ldr r3, [sp, 0x60] | r3 = var_60h;
0x00013928 sub r0, r0, r4 | r0 -= r4;
0x0001392c sub r3, r0, r3 | r3 = r0 - r3;
0x00013930 str r3, [sp, 0x18] | var_18h = r3;
0x00013934 b 0x12da8 | goto label_20;
| label_39:
0x00013938 mov r7, 0 | r7 = 0;
0x0001393c b 0x12da8 | goto label_20;
| label_32:
0x00013940 mov r2, r1 | r2 = r1;
0x00013944 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x00013948 mov r1, 1 | r1 = 1;
0x0001394c bl 0x10d70 | fread (r0, r1, r2, r3);
0x00013950 b 0x12ed0 | goto label_21;
| label_23:
0x00013954 mov r3, 0 | r3 = 0;
0x00013958 str r3, [sp, 0x20] | var_20h = r3;
| label_24:
0x0001395c mov r3, 0 | r3 = 0;
0x00013960 mov sl, r3 | sl = r3;
0x00013964 str r3, [sp, 0x38] | var_38h = r3;
0x00013968 str r3, [sp, 0x34] | var_34h = r3;
0x0001396c str r3, [sp, 0x14] | var_14h = r3;
0x00013970 mov r3, 1 | r3 = 1;
0x00013974 str r3, [sp, 0x10] | var_10h = r3;
0x00013978 str sl, [sp, 0x28] | var_28h = sl;
0x0001397c mov r7, 1 | r7 = 1;
0x00013980 b 0x12f00 | goto label_22;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/bin/pcregrep @ 0x13c98 */
| #include <stdint.h>
|
; (fcn) fcn.00013c98 () | void fcn_00013c98 (char * arg1, int32_t arg2) {
| int32_t var_0h;
| int32_t var_ch;
| char * s;
| int32_t var_20h;
| r0 = arg1;
| r1 = arg2;
| label_5:
0x000139d0 push {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x000139d4 ldr r4, [pc, 0x294] | r4 = *(0x13c6c);
0x000139d8 sub sp, sp, 0x810 |
0x000139dc sub sp, sp, 4 |
0x000139e0 mov r8, r1 | r8 = r1;
0x000139e4 mov r1, 0x2f | r1 = 0x2f;
0x000139e8 mov r6, r0 | r6 = r0;
0x000139ec mov r7, r2 | r7 = r2;
0x000139f0 bl 0x10d1c | strrchr (r0, r1);
0x000139f4 add r1, sp, 0x10 | r1 += s;
0x000139f8 cmp r0, 0 |
| if (r0 == 0) {
0x000139fc addne r5, r0, 1 | r5 = r0 + 1;
| }
0x00013a00 mov r0, r6 | r0 = r6;
| if (r0 != 0) {
0x00013a04 moveq r5, r6 | r5 = r6;
| }
0x00013a08 bl 0x10c98 | r0 = stat64 ();
0x00013a0c cmp r0, 0 |
| if (r0 < 0) {
0x00013a10 blt 0x13bdc | goto label_6;
| }
0x00013a14 ldr r3, [sp, 0x20] | r3 = var_20h;
0x00013a18 and r3, r3, 0xf000 | r3 &= 0xf000;
0x00013a1c cmp r3, 0x4000 |
| if (r3 != 0x4000) {
0x00013a20 bne 0x13bdc | goto label_6;
| }
0x00013a24 ldr r3, [r4, 0x70] | r3 = *((r4 + 0x70));
0x00013a28 cmp r3, 1 |
0x00013a2c bne 0x13a44 |
| while (r0 == 0) {
| label_3:
0x00013a30 mvn r5, 0 | r5 = ~0;
| label_0:
0x00013a34 mov r0, r5 | r0 = r5;
0x00013a38 add sp, sp, 0x810 |
0x00013a3c add sp, sp, 4 |
0x00013a40 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
0x00013a44 ldr r2, [r4, 0x74] | r2 = *((r4 + 0x74));
0x00013a48 ldr r1, [r4, 0x78] | r1 = *((r4 + 0x78));
0x00013a4c mov r0, r5 | r0 = r5;
0x00013a50 bl 0x126a8 | r0 = fcn_000126a8 (r0, r1);
0x00013a54 cmp r0, 0 |
0x00013a58 beq 0x13a30 |
| }
0x00013a5c ldr r5, [r4, 0x70] | r5 = *((r4 + 0x70));
0x00013a60 cmp r5, 2 |
| if (r5 != 2) {
0x00013a64 beq 0x13ab8 |
| label_4:
0x00013a68 ldr r1, [pc, 0x204] | r1 = *(0x13c70);
0x00013a6c mov r0, r6 | r0 = r6;
0x00013a70 bl 0x10ea8 | r0 = fopen64 ();
0x00013a74 subs r8, r0, 0 | r8 = r0 - 0;
| if (r8 != r0) {
0x00013a78 bne 0x13c28 | goto label_7;
| }
0x00013a7c ldr r3, [r4, 0x7c] | r3 = *((r4 + 0x7c));
0x00013a80 cmp r3, 0 |
| if (r3 == 0) {
0x00013a84 bne 0x13ab0 |
0x00013a88 ldr r3, [pc, 0x1e8] | r3 = "rb";
0x00013a8c ldr r4, [r3] | r4 = "rb";
0x00013a90 bl 0x10e18 | r0 = errno_location ();
0x00013a94 ldr r0, [r0] | r0 = *(r0);
0x00013a98 bl 0x10c8c | strerror (r0);
0x00013a9c mov r2, r6 | r2 = r6;
0x00013aa0 ldr r1, [pc, 0x1d4] | r1 = stderr;
0x00013aa4 mov r3, r0 | r3 = r0;
0x00013aa8 mov r0, r4 | r0 = r4;
0x00013aac bl 0x10d34 | fprintf (r0, r1, r2, r3)
| }
0x00013ab0 mov r5, 2 | r5 = 2;
0x00013ab4 b 0x13a34 | goto label_0;
| }
0x00013ab8 mov r0, r6 | r0 = r6;
0x00013abc bl 0x10dac | r0 = opendir ();
0x00013ac0 subs r7, r0, 0 | r7 = r0 - 0;
| if (r7 != r0) {
0x00013ac4 bne 0x13bc8 | goto label_8;
| }
0x00013ac8 ldr r3, [r4, 0x7c] | r3 = *((r4 + 0x7c));
0x00013acc cmp r3, 0 |
| if (r3 != 0) {
0x00013ad0 bne 0x13a34 | goto label_0;
| }
0x00013ad4 ldr r3, [pc, 0x19c] | r3 = "rb";
0x00013ad8 ldr r4, [r3] | r4 = "rb";
0x00013adc bl 0x10e18 | r0 = errno_location ();
0x00013ae0 ldr r0, [r0] | r0 = *(r0);
0x00013ae4 bl 0x10c8c | strerror (r0);
0x00013ae8 mov r2, r6 | r2 = r6;
0x00013aec ldr r1, [pc, 0x18c] | r1 = "pcregrep: Failed to open %s: %s\n";
0x00013af0 mov r3, r0 | r3 = r0;
0x00013af4 mov r0, r4 | r0 = r4;
0x00013af8 bl 0x10d34 | fprintf (r0, "pcregrep: Failed to open %s: %s\n", r2, r3)
0x00013afc b 0x13a34 | goto label_0;
| label_2:
0x00013b00 mov r3, 0x2f | r3 = 0x2f;
0x00013b04 mov r2, r6 | r2 = r6;
0x00013b08 mov r1, fp | r1 = fp;
0x00013b0c str r4, [sp] | *(sp) = r4;
0x00013b10 add r0, sp, 0x10 | r0 += s;
0x00013b14 bl 0x10dd0 | sprintf (r0, r1, r2);
0x00013b18 mov r2, 0 | r2 = 0;
0x00013b1c mov r1, r8 | r1 = r8;
0x00013b20 add r0, sp, 0x10 | r0 += s;
0x00013b24 bl 0x13c98 | r0 = fcn_00013c98 (r0, r1);
0x00013b28 cmp r0, 1 |
| if (r0 <= 1) {
0x00013b2c bgt 0x13b40 |
0x00013b30 cmp r0, 0 |
0x00013b34 cmpeq r5, 1 | __asm ("cmpeq r5, 1");
| if (r0 == 0) {
0x00013b38 movne r0, r5 | r0 = r5;
| }
| if (r0 == 0) {
0x00013b3c moveq r0, 0 | r0 = 0;
| goto label_9;
| }
| }
| label_9:
0x00013b40 mov r5, r0 | r5 = r0;
| do {
| label_1:
0x00013b44 mov r0, r7 | r0 = r7;
0x00013b48 bl 0x10d64 | r0 = readdir64 ();
0x00013b4c cmp r0, 0 |
| if (r0 == 0) {
0x00013b50 beq 0x13bbc | goto label_10;
| }
0x00013b54 add r4, r0, 0x13 | r4 = r0 + 0x13;
0x00013b58 mov r1, sb | r1 = sb;
0x00013b5c mov r0, r4 | r0 = r4;
0x00013b60 bl 0x10db8 | r0 = strcmp (r0, r1);
0x00013b64 cmp r0, 0 |
0x00013b68 beq 0x13b44 |
| } while (r0 == 0);
0x00013b6c mov r1, sl | r1 = sl;
0x00013b70 mov r0, r4 | r0 = r4;
0x00013b74 bl 0x10db8 | r0 = strcmp (r0, r1);
0x00013b78 cmp r0, 0 |
| if (r0 == 0) {
0x00013b7c beq 0x13b44 | goto label_1;
| }
0x00013b80 mov r0, r6 | r0 = r6;
0x00013b84 bl 0x10e3c | strlen (r0);
0x00013b88 str r0, [sp, 0xc] | var_ch = r0;
0x00013b8c mov r0, r4 | r0 = r4;
0x00013b90 bl 0x10e3c | strlen (r0);
0x00013b94 ldr r3, [sp, 0xc] | r3 = var_ch;
0x00013b98 add r0, r3, r0 | r0 = r3 + r0;
0x00013b9c add r0, r0, 2 | r0 += 2;
0x00013ba0 cmp r0, 0x800 |
| if (r0 <= 0x800) {
0x00013ba4 ble 0x13b00 | goto label_2;
| }
0x00013ba8 ldr r3, [pc, 0xc8] | r3 = "rb";
0x00013bac ldr r0, [pc, 0xd0] | r0 = "pcregrep: Failed to open directory %s: %s\n";
0x00013bb0 ldr r1, [r3] | r1 = "rb";
0x00013bb4 bl 0x10e60 | fputs ("pcregrep: Failed to open directory %s: %s\n", "rb");
0x00013bb8 mov r5, 2 | r5 = 2;
| label_10:
0x00013bbc mov r0, r7 | r0 = r7;
0x00013bc0 bl 0x10e6c | closedir ();
0x00013bc4 b 0x13a34 | goto label_0;
| label_8:
0x00013bc8 mov r5, 1 | r5 = 1;
0x00013bcc ldr sb, [pc, 0xb4] | sb = "pcre2grep: recursive filename is too long\n";
0x00013bd0 ldr sl, [pc, 0xb4] | sl = *(0x13c88);
0x00013bd4 ldr fp, [pc, 0xb4] | fp = "%s%c%s";
0x00013bd8 b 0x13b44 | goto label_1;
| label_6:
0x00013bdc add r1, sp, 0x10 | r1 += s;
0x00013be0 mov r0, r6 | r0 = r6;
0x00013be4 bl 0x10c98 | r0 = stat64 ();
0x00013be8 cmp r0, 0 |
| if (r0 < 0) {
0x00013bec blt 0x13c0c | goto label_11;
| }
0x00013bf0 ldr r3, [sp, 0x20] | r3 = var_20h;
0x00013bf4 and r3, r3, 0xf000 | r3 &= 0xf000;
0x00013bf8 cmp r3, 0x8000 |
| if (r3 == 0x8000) {
0x00013bfc beq 0x13c0c | goto label_11;
| }
0x00013c00 ldr r3, [r4, 0x80] | r3 = *((r4 + 0x80));
0x00013c04 cmp r3, 1 |
| if (r3 == 1) {
0x00013c08 beq 0x13a30 | goto label_3;
| }
| label_11:
0x00013c0c ldr r2, [r4, 0x84] | r2 = *((r4 + 0x84));
0x00013c10 ldr r1, [r4, 0x88] | r1 = *((r4 + 0x88));
0x00013c14 mov r0, r5 | r0 = r5;
0x00013c18 bl 0x126a8 | r0 = fcn_000126a8 (r0, r1);
0x00013c1c cmp r0, 0 |
| if (r0 != 0) {
0x00013c20 bne 0x13a68 | goto label_4;
| }
0x00013c24 b 0x13a30 | goto label_3;
| label_7:
0x00013c28 ldr r3, [pc, 0x64] |
0x00013c2c ldr r3, [r3, 8] | r3 = *(0x13c98);
0x00013c30 cmp r3, 1 |
| if (r3 <= 1) {
0x00013c34 movgt r2, r6 | r2 = r6;
| }
| if (r3 <= 1) {
0x00013c38 bgt 0x13c54 |
0x00013c3c eor r7, r7, 1 | r7 ^= 1;
| if (r3 != 1) {
0x00013c40 andeq r7, r7, 1 | r7 &= 1;
| }
| if (r3 == 1) {
0x00013c44 movne r7, 0 | r7 = 0;
| }
0x00013c48 cmp r7, 0 |
| if (r7 == 0) {
0x00013c4c movne r2, r6 | r2 = r6;
| }
| if (r7 == 0) {
0x00013c50 moveq r2, 0 | r2 = 0;
| goto label_12;
| }
| }
| label_12:
0x00013c54 mov r1, r6 | r1 = r6;
0x00013c58 mov r0, r8 | r0 = r8;
0x00013c5c bl 0x12b48 | r0 = fcn_00012b48 (r0, r1);
0x00013c60 mov r5, r0 | r5 = r0;
0x00013c64 mov r0, r8 | r0 = r8;
0x00013c68 bl 0x10d94 | fclose (r0);
0x00013c6c b 0x13a34 | goto label_0;
0x00013c98 push {r4, r5, r6, lr} |
0x00013c9c mov r6, r1 | r6 = r1;
0x00013ca0 ldr r1, [pc, 0x64] | r1 = *(0x13d08);
0x00013ca4 mov r5, r0 | r5 = r0;
0x00013ca8 mov r4, r2 | r4 = r2;
0x00013cac bl 0x10db8 | r0 = strcmp (r0, r1);
0x00013cb0 cmp r0, 0 |
| if (r0 == 0) {
0x00013cb4 bne 0x13cf8 |
0x00013cb8 ldr r3, [pc, 0x50] | r3 = *(0x13d0c);
0x00013cbc ldr r0, [r3] | r0 = *(0x13d0c);
0x00013cc0 ldr r3, [pc, 0x4c] |
0x00013cc4 ldr r1, [r3] | r1 = stdin;
0x00013cc8 ldr r3, [r3, 8] | r3 = *(0x13d18);
0x00013ccc cmp r3, 1 |
| if (r3 <= 1) {
0x00013cd0 movgt r2, r1 | r2 = r1;
| }
| if (r3 <= 1) {
0x00013cd4 bgt 0x13cf0 |
0x00013cd8 eor r4, r4, 1 | r4 ^= 1;
| if (r3 != 1) {
0x00013cdc andeq r4, r4, 1 | r4 &= 1;
| }
| if (r3 == 1) {
0x00013ce0 movne r4, 0 | r4 = 0;
| }
0x00013ce4 cmp r4, 0 |
| if (r4 == 0) {
0x00013ce8 movne r2, r1 | r2 = r1;
| }
| if (r4 == 0) {
0x00013cec moveq r2, 0 | r2 = 0;
| goto label_13;
| }
| }
| label_13:
0x00013cf0 pop {r4, r5, r6, lr} |
0x00013cf4 b 0x12b48 | void (*0x12b48)() ();
| }
0x00013cf8 mov r2, r4 | r2 = r4;
0x00013cfc mov r1, r6 | r1 = r6;
0x00013d00 mov r0, r5 | r0 = r5;
0x00013d04 pop {r4, r5, r6, lr} |
0x00013d08 b 0x139d0 | goto label_5;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/bin/pcregrep @ 0x13d80 */
| #include <stdint.h>
|
; (fcn) fcn.00013d80 () | void fcn_00013d80 (int32_t arg1, int32_t arg2) {
| int32_t var_0h;
| int32_t var_ch;
| r0 = arg1;
| r1 = arg2;
0x00013d80 ldr r3, [pc, 0x108] | r3 = *(0x13e8c);
0x00013d84 push {r0, r1, r2, r4, r5, r6, r7, r8, sb, lr} |
0x00013d88 ldr r6, [r3] | r6 = *(0x13e8c);
0x00013d8c mov r4, r0 | r4 = r0;
| do {
0x00013d90 mov lr, r0 | lr = r0;
0x00013d94 ldrb ip, [r0], 1 | ip = *(r0);
| r0++;
0x00013d98 lsl r3, ip, 1 | r3 = ip << 1;
0x00013d9c cmp ip, 0 |
0x00013da0 ldrh r3, [r6, r3] | r3 = *((r6 + r3));
| if (ip == 0) {
0x00013da4 beq 0x13e68 | goto label_1;
| }
0x00013da8 ands r3, r3, 0x20 | r3 &= 0x20;
0x00013dac bne 0x13d90 |
| } while (r3 != r3);
0x00013db0 mov r0, r3 | r0 = r3;
| label_0:
0x00013db4 mov r8, 0xa | r8 = 0xa;
0x00013db8 b 0x13dc4 |
| while ((r7 & 8) != 0) {
0x00013dbc mla ip, r8, r0, sb | __asm ("mla ip, r8, r0, sb");
0x00013dc0 sub r0, ip, 0x30 | r0 = ip - 0x30;
0x00013dc4 ldrb sb, [lr] | sb = *(lr);
0x00013dc8 mov r3, lr | r3 = lr;
0x00013dcc lsl r5, sb, 1 | r5 = sb << 1;
0x00013dd0 ldrh r7, [r6, r5] | r7 = *((r6 + r5));
0x00013dd4 add lr, lr, 1 | lr++;
0x00013dd8 tst r7, 8 |
0x00013ddc bne 0x13dbc |
| }
0x00013de0 ldr ip, [pc, 0xac] | ip = obj.__ctype_toupper;
0x00013de4 ldr ip, [ip] | ip = *(ip);
0x00013de8 ldrsh ip, [ip, r5] | ip = *((ip + r5));
0x00013dec cmp ip, 0x4b |
| if (ip != 0x4b) {
0x00013df0 lsleq r0, r0, 0xa | r0 <<= 0xa;
| }
| if (ip != 0x4b) {
0x00013df4 beq 0x13e04 |
0x00013df8 cmp ip, 0x4d |
| if (ip != 0x4d) {
0x00013dfc bne 0x13e08 | goto label_2;
| }
0x00013e00 lsl r0, r0, 0x14 | r0 <<= 0x14;
| }
0x00013e04 mov r3, lr | r3 = lr;
| label_2:
0x00013e08 ldrb r3, [r3] | r3 = *(r3);
0x00013e0c cmp r3, 0 |
| if (r3 == 0) {
0x00013e10 beq 0x13e88 | goto label_3;
| }
0x00013e14 ldr r3, [pc, 0x7c] | r3 = __ctype_toupper;
0x00013e18 cmp r2, 0 |
0x00013e1c ldr r6, [r3] | r6 = __ctype_toupper;
| if (r2 == 0) {
0x00013e20 beq 0x13e70 | goto label_4;
| }
0x00013e24 ldr r5, [r1, 0xc] | r5 = *((r1 + 0xc));
0x00013e28 mov r1, 0x3d | r1 = 0x3d;
0x00013e2c mov r0, r5 | r0 = r5;
0x00013e30 bl 0x10e54 | r0 = strchr (r0, r1);
0x00013e34 cmp r0, 0 |
| if (r0 == 0) {
0x00013e38 subne r0, r0, r5 | r0 -= r5;
| }
| if (r0 == 0) {
0x00013e3c bne 0x13e48 |
0x00013e40 mov r0, r5 | r0 = r5;
0x00013e44 bl 0x10e3c | r0 = strlen (r0);
| }
0x00013e48 mov r3, r0 | r3 = r0;
0x00013e4c str r5, [sp] | *(sp) = r5;
0x00013e50 mov r2, r4 | r2 = r4;
0x00013e54 ldr r1, [pc, 0x40] | r1 = stderr;
0x00013e58 mov r0, r6 | r0 = r6;
0x00013e5c bl 0x10d34 | r0 = fprintf (r0, r1, r2, r3, r4, r5)
| do {
0x00013e60 bl 0x13d18 | fcn_00013d18 ();
0x00013e64 bl 0x127c8 | fcn_000127c8 (r0);
| label_1:
0x00013e68 mov r0, ip | r0 = ip;
0x00013e6c b 0x13db4 | goto label_0;
| label_4:
0x00013e70 ldr r3, [r1, 4] | r3 = *((r1 + 4));
0x00013e74 mov r2, r4 | r2 = r4;
0x00013e78 ldr r1, [pc, 0x20] | r1 = "pcregrep: Malformed number \"%s\" after --%.*s\n";
0x00013e7c mov r0, r6 | r0 = r6;
0x00013e80 bl 0x10d34 | fprintf (r0, "pcregrep: Malformed number \"%s\" after --%.*s\n", r2, r3)
0x00013e84 b 0x13e60 |
| } while (1);
| label_3:
0x00013e88 add sp, sp, 0xc |
0x00013e8c pop {r4, r5, r6, r7, r8, sb, pc} |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/bin/pcregrep @ 0x13ea4 */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) fcn.00013ea4 () | void fcn_00013ea4 (uint32_t arg1, int32_t arg2) {
| char * dest;
| int32_t var_ch;
| r0 = arg1;
| r1 = arg2;
0x00013ea4 cmp r0, 0x63 |
0x00013ea8 push {r0, r1, r2, r4, r5, r6, r7, r8, sb, lr} |
0x00013eac mov r4, r1 | r4 = r1;
| if (r0 == 0x63) {
0x00013eb0 beq 0x1419c | goto label_8;
| }
0x00013eb4 mov r2, r0 | r2 = r0;
| if (r0 > 0x63) {
0x00013eb8 bgt 0x14010 | goto label_9;
| }
0x00013ebc cmp r0, 0x46 |
| if (r0 == 0x46) {
0x00013ec0 beq 0x141ac | goto label_10;
| }
| if (r0 > 0x46) {
0x00013ec4 bgt 0x13fb4 | goto label_11;
| }
0x00013ec8 cmn r0, 0xb |
| if (r0 == 0xb) {
0x00013ecc beq 0x140cc | goto label_12;
| }
| if (r0 > 0xb) {
0x00013ed0 bgt 0x13f08 | goto label_13;
| }
0x00013ed4 cmn r0, 0x10 |
0x00013ed8 ldr r3, [pc, 0x390] | r3 = *(0x1426c);
| if (r0 == 0x10) {
0x00013edc beq 0x14184 | goto label_14;
| }
0x00013ee0 cmn r0, 0xc |
| if (r0 != 0xc) {
0x00013ee4 moveq r2, 1 | r2 = 1;
| }
| if (r0 != 0xc) {
0x00013ee8 streq r2, [r3, 0x40] | *((r3 + 0x40)) = r2;
| }
| if (r0 == 0xc) {
0x00013eec beq 0x1403c | goto label_1;
| }
| do {
| label_0:
0x00013ef0 ldr r3, [pc, 0x37c] | r3 = *(0x14270);
0x00013ef4 ldr r1, [pc, 0x37c] | r1 = stderr;
0x00013ef8 ldr r0, [r3] | r0 = *(0x14270);
0x00013efc bl 0x10d34 | r0 = fprintf (r0, r1, r2, r3)
0x00013f00 bl 0x13d18 | fcn_00013d18 ();
0x00013f04 b 0x13fb0 | goto label_15;
| label_13:
0x00013f08 cmn r0, 0xa |
| if (r0 == 0xa) {
0x00013f0c beq 0x14170 | goto label_16;
| }
0x00013f10 cmn r0, 4 |
0x00013f14 bne 0x13ef0 |
| } while (r0 != 4);
0x00013f18 ldr r0, [pc, 0x35c] | r0 = "pcregrep: Unknown option -%c\n";
0x00013f1c bl 0x10cd4 | puts ("pcregrep: Unknown option -%c\n");
0x00013f20 ldr r0, [pc, 0x358] | r0 = "Usage:_pcregrep__OPTION_...__PATTERN___FILE1_FILE2_..._";
0x00013f24 bl 0x10cd4 | puts ("Usage:_pcregrep__OPTION_...__PATTERN___FILE1_FILE2_..._");
0x00013f28 ldr r0, [pc, 0x354] | r0 = "Search_for_PATTERN_in_each_FILE_or_standard_input.";
0x00013f2c bl 0x10cd4 | puts ("Search_for_PATTERN_in_each_FILE_or_standard_input.");
0x00013f30 ldr r0, [pc, 0x350] | r0 = "PATTERN must be present if neither -e nor -f is used.";
0x00013f34 bl 0x10cd4 | puts ("PATTERN must be present if neither -e nor -f is used.");
0x00013f38 ldr r0, [pc, 0x34c] | r0 = "\"-\" can be used as a file name to mean STDIN.";
0x00013f3c bl 0x10cd4 | puts ("\"-\" can be used as a file name to mean STDIN.");
0x00013f40 ldr r0, [pc, 0x348] | r0 = "All files are read as plain files, without any interpretation.\n";
0x00013f44 bl 0x10cd4 | puts ("All files are read as plain files, without any interpretation.\n");
0x00013f48 ldr r0, [pc, 0x344] | r0 = "Example: pcregrep -i 'hello.*world' menu.h main.c\n";
0x00013f4c bl 0x10cd4 | puts ("Example: pcregrep -i 'hello.*world' menu.h main.c\n");
0x00013f50 ldr r4, [pc, 0x340] | r4 = "Options:";
0x00013f54 ldr r7, [pc, 0x340] | r7 = *(0x14298);
0x00013f58 ldr r8, [pc, 0x340] | r8 = "___________________________";
0x00013f5c ldr sb, [pc, 0x340] | sb = "_s____s";
| label_2:
0x00013f60 ldr r5, [r4, 4] | r5 = *((r4 + 4));
0x00013f64 cmp r5, 0 |
| if (r5 != 0) {
0x00013f68 bne 0x140dc | goto label_17;
| }
0x00013f6c ldr r0, [pc, 0x334] | r0 = "_s____s";
0x00013f70 bl 0x10cd4 | puts ("_s____s");
0x00013f74 mov r1, 0x5000 | r1 = 0x5000;
0x00013f78 ldr r0, [pc, 0x32c] | r0 = "Numbers_may_be_followed_by_K_or_M__e.g.___buffer_size100K.";
0x00013f7c bl 0x10c80 | printf ("Numbers_may_be_followed_by_K_or_M__e.g.___buffer_size100K.", r1);
0x00013f80 ldr r0, [pc, 0x328] | r0 = "The default value for --buffer-size is %d.\n";
0x00013f84 bl 0x10cd4 | puts ("The default value for --buffer-size is %d.\n");
0x00013f88 ldr r0, [pc, 0x324] | r0 = "When reading patterns or file names from a file, trailing white";
0x00013f8c bl 0x10cd4 | puts ("When reading patterns or file names from a file, trailing white");
0x00013f90 mov r1, 0x2000 | r1 = 0x2000;
0x00013f94 ldr r0, [pc, 0x31c] | r0 = "space is removed and blank lines are ignored.";
0x00013f98 bl 0x10c80 | printf ("space is removed and blank lines are ignored.", r1);
0x00013f9c ldr r0, [pc, 0x318] | r0 = "The maximum size of any pattern is %d bytes.\n";
0x00013fa0 bl 0x10cd4 | puts ("The maximum size of any pattern is %d bytes.\n");
0x00013fa4 ldr r0, [pc, 0x314] | r0 = "\nWith no FILEs, read standard input. If fewer than two FILEs given, assume -h.";
0x00013fa8 bl 0x10cd4 | puts ("\nWith no FILEs, read standard input. If fewer than two FILEs given, assume -h.");
| label_7:
0x00013fac mov r0, 0 | r0 = 0;
| label_15:
0x00013fb0 bl 0x127c8 | r0 = fcn_000127c8 (r0);
| label_11:
0x00013fb4 cmp r0, 0x4c |
| if (r0 == 0x4c) {
0x00013fb8 beq 0x141f4 | goto label_18;
| }
| if (r0 > 0x4c) {
0x00013fbc bgt 0x13fe0 | goto label_19;
| }
0x00013fc0 cmp r0, 0x48 |
| if (r0 == 0x48) {
0x00013fc4 beq 0x141c0 | goto label_20;
| }
0x00013fc8 cmp r0, 0x49 |
| if (r0 != 0x49) {
0x00013fcc ldreq r3, [pc, 0x29c] | r3 = *(0x00014270);
| }
| if (r0 == 0x49) {
0x00013fd0 moveq r2, 1 | r2 = 1;
| goto label_21;
| }
| if (r0 != 0x49) {
| label_21:
0x00013fd4 bne 0x13ef0 | goto label_0;
| }
| label_4:
0x00013fd8 str r2, [r3, 0x44] | *((r3 + 0x44)) = r2;
0x00013fdc b 0x1403c | goto label_1;
| label_19:
0x00013fe0 cmp r0, 0x56 |
| if (r0 == 0x56) {
0x00013fe4 beq 0x14250 | goto label_22;
| }
0x00013fe8 cmp r0, 0x61 |
0x00013fec ldr r3, [pc, 0x27c] | r3 = *(0x1426c);
| if (r0 == 0x61) {
0x00013ff0 beq 0x14194 | goto label_23;
| }
0x00013ff4 cmp r0, 0x4d |
| if (r0 != 0x4d) {
0x00013ff8 bne 0x13ef0 | goto label_0;
| }
0x00013ffc mov r2, 1 | r2 = 1;
0x00014000 orr r4, r1, 0x40000 | r4 = r1 | 0x40000;
0x00014004 str r2, [r3, 0x48] | *((r3 + 0x48)) = r2;
0x00014008 orr r4, r4, 2 | r4 |= 2;
0x0001400c b 0x1403c | goto label_1;
| label_9:
0x00014010 cmp r0, 0x71 |
| if (r0 == 0x71) {
0x00014014 beq 0x1420c | goto label_24;
| }
| if (r0 > 0x71) {
0x00014018 bgt 0x1407c | goto label_25;
| }
0x0001401c cmp r0, 0x6c |
| if (r0 == 0x6c) {
0x00014020 beq 0x141dc | goto label_26;
| }
| if (r0 > 0x6c) {
0x00014024 bgt 0x14048 | goto label_27;
| }
0x00014028 cmp r0, 0x68 |
| if (r0 == 0x68) {
0x0001402c beq 0x141d0 | goto label_28;
| }
0x00014030 cmp r0, 0x69 |
| if (r0 == 0x69) {
0x00014034 orreq r4, r1, 1 | r4 = r1 | 1;
| goto label_29;
| }
| if (r0 != 0x69) {
| label_29:
0x00014038 bne 0x13ef0 | goto label_0;
| }
| label_1:
0x0001403c mov r0, r4 | r0 = r4;
0x00014040 add sp, sp, 0xc |
0x00014044 pop {r4, r5, r6, r7, r8, sb, pc} |
| label_27:
0x00014048 cmp r0, 0x6e |
0x0001404c ldr r5, [pc, 0x21c] | r5 = *(0x1426c);
| if (r0 == 0x6e) {
0x00014050 beq 0x14200 | goto label_30;
| }
0x00014054 cmp r0, 0x6f |
| if (r0 != 0x6f) {
0x00014058 bne 0x13ef0 | goto label_0;
| }
0x0001405c ldr r1, [r5, 0x94] | r1 = *((r5 + 0x94));
0x00014060 mov r0, 0 | r0 = 0;
0x00014064 bl 0x12a88 | fcn_00012a88 (r0, r1);
0x00014068 ldr r3, [r5, 0x60] | r3 = *((r5 + 0x60));
0x0001406c cmp r3, 0 |
0x00014070 str r0, [r5, 0x94] | *((r5 + 0x94)) = r0;
| if (r3 != 0) {
0x00014074 streq r0, [r5, 0x60] | *((r5 + 0x60)) = r0;
| }
0x00014078 b 0x1403c | goto label_1;
| label_25:
0x0001407c cmp r0, 0x75 |
0x00014080 ldr r3, [pc, 0x1e8] | r3 = *(0x1426c);
| if (r0 == 0x75) {
0x00014084 beq 0x14228 | goto label_31;
| }
| if (r0 > 0x75) {
0x00014088 bgt 0x140a8 | goto label_32;
| }
0x0001408c cmp r0, 0x72 |
| if (r0 == 0x72) {
0x00014090 beq 0x1421c | goto label_33;
| }
0x00014094 cmp r0, 0x73 |
| if (r0 != 0x73) {
0x00014098 moveq r2, 1 | r2 = 1;
| }
| if (r0 == 0x73) {
0x0001409c streq r2, [r3, 0x7c] | *((r3 + 0x7c)) = r2;
| goto label_34;
| }
| if (r0 == 0x73) {
| label_34:
0x000140a0 beq 0x1403c | goto label_1;
| }
0x000140a4 b 0x13ef0 | goto label_0;
| label_32:
0x000140a8 cmp r0, 0x77 |
| if (r0 == 0x77) {
0x000140ac beq 0x14244 | goto label_35;
| }
| if (r0 < 0x77) {
0x000140b0 blt 0x14238 | goto label_36;
| }
0x000140b4 cmp r0, 0x78 |
| if (r0 != 0x78) {
0x000140b8 ldreq r2, [r3, 0x90] | r2 = *((r3 + 0x90));
| }
| if (r0 == 0x78) {
0x000140bc orreq r2, r2, 2 | r2 |= 2;
| goto label_37;
| }
| if (r0 != 0x78) {
| label_37:
0x000140c0 bne 0x13ef0 | goto label_0;
| }
| label_6:
0x000140c4 str r2, [r3, 0x90] | *((r3 + 0x90)) = r2;
0x000140c8 b 0x1403c | goto label_1;
| label_12:
0x000140cc ldr r3, [pc, 0x19c] | r3 = *(0x1426c);
0x000140d0 mov r2, 1 | r2 = 1;
0x000140d4 str r2, [r3, 0x5c] | *((r3 + 0x5c)) = r2;
0x000140d8 b 0x1403c | goto label_1;
| label_17:
0x000140dc ldr r6, [r4, 0xc] | r6 = *((r4 + 0xc));
0x000140e0 mov r1, 0x5f | r1 = 0x5f;
0x000140e4 mov r0, r6 | r0 = r6;
0x000140e8 bl 0x10e54 | r0 = strchr (r0, r1);
0x000140ec cmp r0, 0 |
| if (r0 != 0) {
0x000140f0 bne 0x14134 | goto label_38;
| }
0x000140f4 cmp r5, 0 |
| if (r5 <= 0) {
0x000140f8 ble 0x14160 | goto label_39;
| }
0x000140fc ldrb r3, [r6] | r3 = *(r6);
0x00014100 cmp r3, 0 |
| if (r3 != 0) {
0x00014104 bne 0x1413c | goto label_40;
| }
0x00014108 mov r1, r5 | r1 = r5;
0x0001410c ldr r0, [pc, 0x1b0] | r0 = "Exit_status_is_0_if_any_matches__1_if_no_matches__and_2_if_trouble.";
0x00014110 bl 0x10c80 | r0 = printf ("Exit_status_is_0_if_any_matches__1_if_no_matches__and_2_if_trouble.", r1);
| do {
0x00014114 rsb r0, r0, 0x1f | r0 = 0x1f - r0;
0x00014118 cmp r0, 1 |
| if (r0 < 1) {
0x0001411c movge r1, r0 | r1 = r0;
| }
0x00014120 ldr r3, [r4, 0x10] | r3 = *((r4 + 0x10));
0x00014124 mov r2, r7 | r2 = r7;
| if (r0 >= 1) {
0x00014128 movlt r1, 1 | r1 = 1;
| }
0x0001412c mov r0, r8 | r0 = r8;
0x00014130 bl 0x10c80 | printf (r0, r1, r2, r3);
| label_38:
0x00014134 add r4, r4, 0x14 | r4 += 0x14;
0x00014138 b 0x13f60 | goto label_2;
| label_40:
0x0001413c mov r2, r5 | r2 = r5;
0x00014140 ldr r1, [pc, 0x180] | r1 = " -%c";
0x00014144 add r0, sp, 4 | r0 += dest;
0x00014148 bl 0x10dd0 | sprintf (r0, " -%c", r2);
| label_3:
0x0001414c ldr r2, [r4, 0xc] | r2 = *((r4 + 0xc));
0x00014150 add r1, sp, 4 | r1 += dest;
0x00014154 mov r0, sb | r0 = sb;
0x00014158 bl 0x10c80 | printf (r0, r1, r2);
0x0001415c b 0x14114 |
| } while (1);
| label_39:
0x00014160 ldr r1, [pc, 0x164] | r1 = "-%c,";
0x00014164 add r0, sp, 4 | r0 += dest;
0x00014168 bl 0x10c74 | strcpy (r0, "-%c,");
0x0001416c b 0x1414c | goto label_3;
| label_16:
0x00014170 ldr r3, [pc, 0xf8] | r3 = *(0x1426c);
0x00014174 mov r2, 1 | r2 = 1;
0x00014178 str r2, [r3, 0x1c] | *((r3 + 0x1c)) = r2;
0x0001417c str r2, [r3, 0x58] | *((r3 + 0x58)) = r2;
0x00014180 b 0x1403c | goto label_1;
| label_14:
0x00014184 ldr r2, [r3, 0x8c] | r2 = *((r3 + 0x8c));
0x00014188 bic r2, r2, 1 | r2 = BIT_MASK (r2, 1);
0x0001418c str r2, [r3, 0x8c] | *((r3 + 0x8c)) = r2;
0x00014190 b 0x1403c | goto label_1;
| label_23:
0x00014194 mov r2, 2 | r2 = 2;
0x00014198 b 0x13fd8 | goto label_4;
| label_8:
0x0001419c ldr r3, [pc, 0xcc] | r3 = *(0x1426c);
0x000141a0 mov r2, 1 | r2 = 1;
0x000141a4 str r2, [r3, 0x50] | *((r3 + 0x50)) = r2;
0x000141a8 b 0x1403c | goto label_1;
| label_10:
0x000141ac ldr r2, [pc, 0xbc] | r2 = *(0x1426c);
0x000141b0 ldr r3, [r2, 0x90] | r3 = *(0x142fc);
0x000141b4 orr r3, r3, 4 | r3 |= 4;
0x000141b8 str r3, [r2, 0x90] | *((r2 + 0x90)) = r3;
0x000141bc b 0x1403c | goto label_1;
| label_20:
0x000141c0 ldr r3, [pc, 0x108] | r3 = "___";
0x000141c4 mov r2, 4 | r2 = 4;
| do {
| label_5:
0x000141c8 str r2, [r3, 8] | *((r3 + 8)) = r2;
0x000141cc b 0x1403c | goto label_1;
| label_28:
0x000141d0 ldr r3, [pc, 0xf8] | r3 = "___";
0x000141d4 mov r2, 0 | r2 = 0;
0x000141d8 b 0x141c8 |
| } while (1);
| label_26:
0x000141dc ldr r3, [pc, 0x8c] | r3 = *(0x1426c);
0x000141e0 mov r2, 1 | r2 = 1;
0x000141e4 str r2, [r3, 0x6c] | *((r3 + 0x6c)) = r2;
0x000141e8 ldr r3, [pc, 0xe0] | r3 = "___";
0x000141ec mov r2, 2 | r2 = 2;
0x000141f0 b 0x141c8 | goto label_5;
| label_18:
0x000141f4 ldr r3, [pc, 0xd4] | r3 = "___";
0x000141f8 mov r2, 3 | r2 = 3;
0x000141fc b 0x141c8 | goto label_5;
| label_30:
0x00014200 mov r3, 1 | r3 = 1;
0x00014204 str r3, [r5, 0x1c] | *((r5 + 0x1c)) = r3;
0x00014208 b 0x1403c | goto label_1;
| label_24:
0x0001420c ldr r3, [pc, 0x5c] | r3 = *(0x1426c);
0x00014210 mov r2, 1 | r2 = 1;
0x00014214 str r2, [r3, 0x4c] | *((r3 + 0x4c)) = r2;
0x00014218 b 0x1403c | goto label_1;
| label_33:
0x0001421c mov r2, 2 | r2 = 2;
0x00014220 str r2, [r3, 0x70] | *((r3 + 0x70)) = r2;
0x00014224 b 0x1403c | goto label_1;
| label_31:
0x00014228 mov r2, 1 | r2 = 1;
0x0001422c orr r4, r1, 0x800 | r4 = r1 | 0x800;
0x00014230 str r2, [r3, 4] | *((r3 + 4)) = r2;
0x00014234 b 0x1403c | goto label_1;
| label_36:
0x00014238 mov r2, 1 | r2 = 1;
0x0001423c str r2, [r3, 0x14] | *((r3 + 0x14)) = r2;
0x00014240 b 0x1403c | goto label_1;
| label_35:
0x00014244 ldr r2, [r3, 0x90] | r2 = *((r3 + 0x90));
0x00014248 orr r2, r2, 1 | r2 |= 1;
0x0001424c b 0x140c4 | goto label_6;
| label_22:
0x00014250 ldr r3, [pc, 0x7c] | r3 = "_standard_input_";
0x00014254 ldr r4, [r3] | r4 = "_standard_input_";
0x00014258 bl 0x10d28 | pcre_version ();
0x0001425c ldr r1, [pc, 0x74] | r1 = stdout;
0x00014260 mov r2, r0 | r2 = r0;
0x00014264 mov r0, r4 | r0 = r4;
0x00014268 bl 0x10d34 | fprintf (r0, r1, r2)
0x0001426c b 0x13fac | goto label_7;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/bin/pcregrep @ 0x11384 */
| #include <stdint.h>
|
; (fcn) main () | int32_t main (char * envp, int32_t argc, char ** argv) {
| int32_t var_0h;
| int32_t var_4h;
| char * format;
| int32_t var_ch;
| int32_t var_10h;
| char * s2;
| int32_t var_18h;
| int32_t var_1ch;
| int32_t var_20h;
| int32_t var_24h;
| r0 = argc;
| r1 = argv;
0x00011384 push {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00011388 ldr sl, [pc, 0xeb8] | sl = *(0x00012248);
0x0001138c sub sp, sp, 0x2040 |
0x00011390 sub sp, sp, 0xc |
0x00011394 str r0, [sp, 0xc] | var_ch = r0;
0x00011398 str r1, [sp, 8] | format = r1;
0x0001139c mov r0, 1 | r0 = 1;
0x000113a0 add r1, sp, 0x20 | r1 += var_20h;
0x000113a4 bl 0x10da0 | pcre_config ();
0x000113a8 ldr r3, [sp, 0x20] | r3 = var_20h;
0x000113ac cmn r3, 1 |
| if (r3 != 1) {
0x000113b0 ldreq r3, [pc, 0xe94] | r3 = "any";
| }
| if (r3 == 1) {
0x000113b4 beq 0x113ec | goto label_40;
| }
| if (r3 > 1) {
0x000113b8 bgt 0x113d0 | goto label_41;
| }
0x000113bc cmn r3, 2 |
| if (r3 != 2) {
0x000113c0 ldreq r3, [pc, 0xe88] | r3 = "anycrlf";
| }
| if (r3 == 2) {
0x000113c4 beq 0x113ec | goto label_40;
| }
| do {
0x000113c8 ldr r3, [pc, 0xe84] | r3 = "anycrlf";
0x000113cc b 0x113ec | goto label_40;
| label_41:
0x000113d0 cmp r3, 0xd |
| if (r3 != 0xd) {
0x000113d4 ldreq r3, [pc, 0xe7c] | r3 = *((pc + 0xe7c));
| }
| if (r3 == 0xd) {
0x000113d8 beq 0x113ec | goto label_40;
| }
0x000113dc ldr r2, [pc, 0xe78] | r2 = *(0x12258);
0x000113e0 cmp r3, r2 |
| if (r3 != r2) {
0x000113e4 ldreq r3, [pc, 0xe74] | r3 = *((pc + 0xe74));
| }
0x000113e8 bne 0x113c8 |
| } while (r3 != r2);
| label_40:
0x000113ec ldr r6, [pc, 0xe54] | r6 = *(0x12244);
0x000113f0 str r3, [sl, 0x98] | *((sl + 0x98)) = r3;
0x000113f4 mov r3, 1 | r3 = 1;
0x000113f8 str r3, [sp, 0x20] | var_20h = r3;
| label_7:
0x000113fc add fp, sp, 0x48 |
0x00011400 ldr r8, [fp, -0x28] | r8 = var_20h;
0x00011404 ldr r3, [sp, 0xc] | r3 = var_ch;
0x00011408 cmp r8, r3 |
| if (r8 >= r3) {
0x0001140c bge 0x11484 | goto label_42;
| }
0x00011410 ldr r3, [sp, 8] | r3 = format;
0x00011414 ldr r5, [r3, r8, lsl 2] | offset_0 = r8 << 2;
| r5 = *((r3 + offset_0));
0x00011418 ldrb r3, [r5] | r3 = *(r5);
0x0001141c cmp r3, 0x2d |
| if (r3 != 0x2d) {
0x00011420 bne 0x11484 | goto label_42;
| }
0x00011424 ldrb r3, [r5, 1] | r3 = *((r5 + 1));
0x00011428 cmp r3, 0 |
| if (r3 != 0) {
0x0001142c bne 0x11454 | goto label_43;
| }
0x00011430 ldr r3, [pc, 0xe10] | r3 = *(0x12244);
0x00011434 ldr r2, [r3, 0x9c] | r2 = *(0x122e0);
0x00011438 cmp r2, 0 |
| if (r2 != 0) {
0x0001143c bne 0x11484 | goto label_42;
| }
0x00011440 ldr r3, [r3, 0xc] | r3 = *((r3 + 0xc));
0x00011444 cmp r3, 0 |
0x00011448 bne 0x11484 |
| while (1) {
| label_1:
0x0001144c bl 0x13d18 | fcn_00013d18 ();
0x00011450 b 0x115b4 | goto label_17;
| label_43:
0x00011454 cmp r3, 0x2d |
| if (r3 != 0x2d) {
0x00011458 bne 0x116e8 | goto label_44;
| }
0x0001145c add r7, r5, 2 | r7 = r5 + 2;
0x00011460 mov r1, 0x3d | r1 = 0x3d;
0x00011464 mov r0, r7 | r0 = r7;
0x00011468 bl 0x10e54 | strchr (r0, r1);
0x0001146c ldrb r3, [r5, 2] | r3 = *((r5 + 2));
0x00011470 cmp r3, 0 |
0x00011474 mov r4, r0 | r4 = r0;
| if (r3 != 0) {
0x00011478 bne 0x116d8 | goto label_45;
| }
0x0001147c add r8, r8, 1 | r8++;
0x00011480 str r8, [fp, -0x28] | var_20h = r8;
| label_42:
0x00011484 ldr r4, [pc, 0xdbc] | r4 = *(0x12244);
0x00011488 ldr r3, [r4, 0xa4] | r3 = "pcregrep:_Unknown_colour_setting___s_";
0x0001148c cmp r3, 0 |
| if (r3 > 0) {
0x00011490 ble 0x114ac |
0x00011494 ldr r2, [r4, 0x18] | r2 = *((r4 + 0x18));
0x00011498 cmp r2, 0 |
0x0001149c ldr r2, [r4, 0x68] | r2 = *((r4 + 0x68));
| if (r2 != 0) {
0x000114a0 streq r3, [r4, 0x18] | *((r4 + 0x18)) = r3;
| }
0x000114a4 cmp r2, 0 |
| if (r2 == 0) {
0x000114a8 streq r3, [r4, 0x68] | *((r4 + 0x68)) = r3;
| goto label_46;
| }
| }
| label_46:
0x000114ac ldr r2, [r4, 0x60] | r2 = *((r4 + 0x60));
0x000114b0 ldr r3, [r4, 0x5c] | r3 = *((r4 + 0x5c));
0x000114b4 cmp r2, 0 |
| if (r2 == 0) {
0x000114b8 beq 0x121b8 | goto label_47;
| }
0x000114bc cmp r3, 0 |
| if (r3 == 0) {
0x000114c0 bne 0x114d0 |
| label_37:
0x000114c4 ldr r3, [r4, 0x58] | r3 = *((r4 + 0x58));
0x000114c8 cmp r3, 0 |
| if (r3 == 0) {
0x000114cc beq 0x121cc | goto label_48;
| }
| }
0x000114d0 ldr r3, [pc, 0xd8c] | r3 = *(0x12260);
0x000114d4 ldr r0, [pc, 0xd8c] | r0 = stderr;
0x000114d8 ldr r1, [r3] | r1 = *(0x12260);
0x000114dc bl 0x10e60 | fputs (r0, r1);
0x000114e0 b 0x1144c |
| }
| label_3:
0x000114e4 cmp r4, 0 |
0x000114e8 sub r8, r0, fp | r8 = r0 - fp;
| if (r4 == 0) {
0x000114ec subne sb, r4, r7 | sb = r4 - r7;
| }
| if (r4 == 0) {
0x000114f0 bne 0x11500 |
0x000114f4 mov r0, r7 | r0 = r7;
0x000114f8 bl 0x10e3c | r0 = strlen (r0);
0x000114fc mov sb, r0 | sb = r0;
| }
0x00011500 cmp sb, r8 |
| if (sb != r8) {
0x00011504 bne 0x11678 | goto label_4;
| }
0x00011508 mov r2, sb | r2 = sb;
0x0001150c mov r1, fp | r1 = fp;
0x00011510 mov r0, r7 | r0 = r7;
0x00011514 bl 0x10d58 | r0 = strncmp (r0, r1, r2);
0x00011518 subs r8, r0, 0 | r8 = r0 - 0;
| if (r8 != r0) {
0x0001151c bne 0x11678 | goto label_4;
| }
0x00011520 ldrb r3, [r7, sb] | r3 = *((r7 + sb));
0x00011524 add r4, r7, sb | r4 = r7 + sb;
0x00011528 cmp r3, 0x3d |
| if (r3 != 0x3d) {
0x0001152c bne 0x1164c | goto label_5;
| }
| label_0:
0x00011530 add r4, r4, 1 | r4++;
0x00011534 mov r8, 1 | r8 = 1;
0x00011538 b 0x1164c | goto label_5;
| label_2:
0x0001153c sub r3, sb, fp | r3 = sb - fp;
0x00011540 mov r1, 0x29 | r1 = 0x29;
0x00011544 mov r0, fp | r0 = fp;
0x00011548 str r3, [sp, 0x18] | var_18h = r3;
0x0001154c bl 0x10e54 | strchr (r0, r1);
0x00011550 cmp r8, 0 |
0x00011554 cmpne r4, 0 | __asm ("cmpne r4, 0");
0x00011558 sub r0, r0, fp | r0 -= fp;
0x0001155c add r3, r0, 1 | r3 = r0 + 1;
0x00011560 str r3, [sp, 0x1c] | var_1ch = r3;
| if (r8 == 0) {
0x00011564 subne r3, r4, r7 | r3 = r4 - r7;
| }
| if (r8 == 0) {
0x00011568 strne r3, [sp, 0x10] | var_10h = r3;
| }
| if (r8 == 0) {
0x0001156c bne 0x1157c |
0x00011570 mov r0, r7 | r0 = r7;
0x00011574 bl 0x10e3c | strlen (r0);
0x00011578 str r0, [sp, 0x10] | var_10h = r0;
| }
0x0001157c str fp, [sp] | *(sp) = fp;
0x00011580 ldr r3, [sp, 0x18] | r3 = var_18h;
0x00011584 ldr r2, [pc, 0xce0] | r2 = "pcregrep:_Cannot_mix___only_matching____file_offsets_and_or___line_offsets";
0x00011588 mov r1, 0x18 | r1 = 0x18;
0x0001158c ldr r0, [sp, 0x14] | r0 = s2;
0x00011590 bl 0x10cb0 | r0 = snprintf (r0, r1, "pcregrep:_Cannot_mix___only_matching____file_offsets_and_or___line_offsets", r3);
0x00011594 cmp r0, 0x18 |
0x00011598 ble 0x115b8 |
| while (r0 > 0x18) {
0x0001159c ldr r3, [pc, 0xcc0] | r3 = *(0x12260);
0x000115a0 ldr r2, [r5, 0xc] | r2 = *((r5 + 0xc));
0x000115a4 ldr r1, [pc, 0xcc4] | r1 = "_.s";
0x000115a8 ldr r0, [r3] | r0 = *(0x12260);
0x000115ac bl 0x10d34 | fprintf (r0, "_.s", r2, r3)
0x000115b0 mov r0, 2 | r0 = 2;
| label_17:
0x000115b4 bl 0x127c8 | fcn_000127c8 (r0);
0x000115b8 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x000115bc ldr r2, [sp, 0x18] | r2 = var_18h;
0x000115c0 add sb, sb, 1 | sb++;
0x000115c4 sub fp, r3, r2 |
0x000115c8 sub fp, fp, 2 |
0x000115cc str sb, [sp, 4] | var_4h = sb;
0x000115d0 str fp, [sp] | *(sp) = fp;
0x000115d4 ldr r3, [sp, 0x14] | r3 = s2;
0x000115d8 ldr r2, [pc, 0xc94] | r2 = "pcregrep:_Buffer_overflow_when_parsing__s_option";
0x000115dc mov r1, 0x18 | r1 = 0x18;
0x000115e0 add r0, sp, 0x3c | r0 += envp;
0x000115e4 bl 0x10cb0 | r0 = snprintf (r0, r1, "pcregrep:_Buffer_overflow_when_parsing__s_option", r3);
0x000115e8 cmp r0, 0x18 |
0x000115ec bgt 0x1159c |
| }
0x000115f0 ldr r2, [sp, 0x10] | r2 = var_10h;
0x000115f4 ldr r1, [sp, 0x14] | r1 = s2;
0x000115f8 mov r0, r7 | r0 = r7;
0x000115fc bl 0x10d58 | r0 = strncmp (r0, r1, r2);
0x00011600 cmp r0, 0 |
| if (r0 != 0) {
0x00011604 beq 0x11620 |
0x00011608 ldr r2, [sp, 0x10] | r2 = var_10h;
0x0001160c add r1, sp, 0x3c | r1 += envp;
0x00011610 mov r0, r7 | r0 = r7;
0x00011614 bl 0x10d58 | r0 = strncmp (r0, r1, r2);
0x00011618 cmp r0, 0 |
| if (r0 != 0) {
0x0001161c bne 0x11678 | goto label_4;
| }
| }
0x00011620 adds r0, r4, 0 | r0 = r4 + 0;
| if (r0 == r4) {
0x00011624 movne r0, 1 | r0 = 1;
| }
0x00011628 cmp r8, 0 |
| if (r8 == 0) {
0x0001162c movne r8, r0 | r8 = r0;
| }
| if (r8 != 0) {
0x00011630 moveq r8, 0 | r8 = 0;
| }
0x00011634 cmp r8, 0 |
| if (r8 == 0) {
0x00011638 beq 0x116d0 | goto label_49;
| }
0x0001163c ldrb r3, [r4] | r3 = *(r4);
0x00011640 cmp r3, 0x3d |
| if (r3 != 0x3d) {
0x00011644 movne r8, 0 | r8 = 0;
| goto label_50;
| }
| if (r3 == 0x3d) {
| label_50:
0x00011648 beq 0x11530 | goto label_0;
| }
| label_5:
0x0001164c ldr r3, [r5, 4] | r3 = *((r5 + 4));
0x00011650 cmp r3, 0 |
| if (r3 != 0) {
0x00011654 bne 0x1178c | goto label_51;
| }
0x00011658 ldr r3, [sp, 0x20] | r3 = var_20h;
0x0001165c ldr r2, [sp, 8] | r2 = format;
0x00011660 ldr r1, [pc, 0xc10] | r1 = "_s_.s";
0x00011664 ldr r2, [r2, r3, lsl 2] | offset_1 = r3 << 2;
| r2 = *((r2 + offset_1));
| label_12:
0x00011668 ldr r3, [pc, 0xbf4] | r3 = *(0x12260);
0x0001166c ldr r0, [r3] | r0 = *(0x12260);
0x00011670 bl 0x10d34 | fprintf (r0, "_s_.s", r2, r3)
0x00011674 b 0x1144c | goto label_1;
| label_4:
0x00011678 add r5, r5, 0x14 | r5 += 0x14;
| label_6:
0x0001167c ldr r8, [r5, 4] | r8 = *((r5 + 4));
0x00011680 cmp r8, 0 |
| if (r8 == 0) {
0x00011684 beq 0x116d0 | goto label_49;
| }
0x00011688 ldr fp, [r5, 0xc] | fp = *((r5 + 0xc));
0x0001168c mov r1, 0x28 | r1 = 0x28;
0x00011690 mov r0, fp | r0 = fp;
0x00011694 bl 0x10e54 | strchr (r0, r1);
0x00011698 mov r1, 0x3d | r1 = 0x3d;
0x0001169c mov sb, r0 | sb = r0;
0x000116a0 mov r0, fp | r0 = fp;
0x000116a4 bl 0x10e54 | strchr (r0, r1);
0x000116a8 cmp sb, 0 |
0x000116ac mov r8, r0 | r8 = r0;
| if (sb != 0) {
0x000116b0 bne 0x1153c | goto label_2;
| }
0x000116b4 cmp r0, 0 |
| if (r0 != 0) {
0x000116b8 bne 0x114e4 | goto label_3;
| }
0x000116bc mov r1, fp | r1 = fp;
0x000116c0 mov r0, r7 | r0 = r7;
0x000116c4 bl 0x10db8 | r0 = strcmp (r0, r1);
0x000116c8 subs r8, r0, 0 | r8 = r0 - 0;
| if (r8 != r0) {
0x000116cc bne 0x11678 | goto label_4;
| }
| label_49:
0x000116d0 ldr r4, [pc, 0xba4] | r4 = "pcregrep: Unknown option %s\n";
0x000116d4 b 0x1164c | goto label_5;
| label_45:
0x000116d8 sub r3, fp, 0x24 | r3 = fp - 0x24;
0x000116dc ldr r5, [pc, 0xb9c] | r5 = *(0x1227c);
0x000116e0 str r3, [sp, 0x14] | s2 = r3;
0x000116e4 b 0x1167c | goto label_6;
| label_44:
0x000116e8 ldr r4, [pc, 0xb8c] | r4 = "pcregrep: Unknown option %s\n";
0x000116ec add r3, r5, 1 | r3 = r5 + 1;
0x000116f0 mov r5, 0 | r5 = 0;
| label_9:
0x000116f4 ldrb r2, [r3] | r2 = *(r3);
0x000116f8 cmp r2, 0 |
| if (r2 != 0) {
0x000116fc bne 0x11768 | goto label_52;
| }
0x00011700 mov r8, r2 | r8 = r2;
| label_10:
0x00011704 ldr r0, [r5] | r0 = *(r5);
0x00011708 cmp r0, 0 |
| if (r0 != 0) {
0x0001170c bne 0x11794 | goto label_53;
| }
0x00011710 ldr r1, [r6, 0x38] | r1 = *((r6 + 0x38));
0x00011714 ldr r0, [r5, 4] | r0 = *((r5 + 4));
0x00011718 bl 0x13ea4 | fcn_00013ea4 (r0, r1);
0x0001171c str r0, [r6, 0x38] | *((r6 + 0x38)) = r0;
| label_11:
0x00011720 ldr r3, [sp, 0x20] | r3 = var_20h;
0x00011724 add r3, r3, 1 | r3++;
0x00011728 str r3, [sp, 0x20] | var_20h = r3;
0x0001172c b 0x113fc | goto label_7;
| do {
0x00011730 cmp r0, r2 |
| if (r0 == r2) {
0x00011734 beq 0x12174 | goto label_54;
| }
0x00011738 add r5, r5, 0x14 | r5 += 0x14;
| label_8:
0x0001173c ldr r0, [r5, 4] | r0 = *((r5 + 4));
0x00011740 cmp r0, 0 |
0x00011744 bne 0x11730 |
| } while (r0 != 0);
0x00011748 ldr r1, [sp, 8] | r1 = format;
0x0001174c ldr r3, [sp, 0x20] | r3 = var_20h;
0x00011750 ldr r0, [pc, 0xb0c] |
0x00011754 ldr r3, [r1, r3, lsl 2] | offset_2 = r3 << 2;
| r3 = *((r1 + offset_2));
0x00011758 ldr r0, [r0] | r0 = *(0x12260);
0x0001175c ldr r1, [pc, 0xb20] | r1 = *(0x12280);
0x00011760 bl 0x10d34 | fprintf (r0, r1, r2, r3)
0x00011764 b 0x1144c | goto label_1;
| label_52:
0x00011768 ldr r5, [pc, 0xb10] | r5 = *(0x1227c);
0x0001176c b 0x1173c | goto label_8;
| label_35:
0x00011770 cmp r3, 0 |
| if (r3 != 0) {
0x00011774 bne 0x121ac | goto label_55;
| }
| label_36:
0x00011778 ldr r1, [r6, 0x38] | r1 = *((r6 + 0x38));
0x0001177c bl 0x13ea4 | fcn_00013ea4 (r0, r1);
0x00011780 mov r3, r4 | r3 = r4;
0x00011784 str r0, [r6, 0x38] | *((r6 + 0x38)) = r0;
0x00011788 b 0x116f4 | goto label_9;
| label_51:
0x0001178c mov r2, 1 | r2 = 1;
0x00011790 b 0x11704 | goto label_10;
| label_53:
0x00011794 ldrb r3, [r4] | r3 = *(r4);
0x00011798 cmp r3, 0 |
| if (r3 != 0) {
0x0001179c bne 0x11824 | goto label_56;
| }
0x000117a0 sub r1, r0, 5 | r1 = r0 - 5;
0x000117a4 cmp r0, 2 |
0x000117a8 cmpne r1, 1 | __asm ("cmpne r1, 1");
| if (r0 > 2) {
0x000117ac bhi 0x117ec | goto label_57;
| }
0x000117b0 ldr r2, [r5, 4] | r2 = *((r5 + 4));
0x000117b4 cmn r2, 1 |
| if (r2 != 1) {
0x000117b8 ldreq r3, [pc, 0xac8] | r3 = "auto";
| }
| if (r2 == 1) {
0x000117bc streq r3, [r6, 0xa0] | *((r6 + 0xa0)) = r3;
| goto label_58;
| }
| if (r2 == 1) {
| label_58:
0x000117c0 beq 0x11720 | goto label_11;
| }
0x000117c4 cmp r2, 0x6f |
| if (r2 != 0x6f) {
0x000117c8 bne 0x11720 | goto label_11;
| }
0x000117cc mov r0, r3 | r0 = r3;
0x000117d0 ldr r1, [r6, 0x94] | r1 = *((r6 + 0x94));
0x000117d4 bl 0x12a88 | fcn_00012a88 (r0, r1);
0x000117d8 ldr r3, [r6, 0x60] | r3 = *((r6 + 0x60));
0x000117dc cmp r3, 0 |
0x000117e0 str r0, [r6, 0x94] | *((r6 + 0x94)) = r0;
| if (r3 != 0) {
0x000117e4 streq r0, [r6, 0x60] | *((r6 + 0x60)) = r0;
| }
0x000117e8 b 0x11720 | goto label_11;
| label_57:
0x000117ec ldr r1, [sp, 0xc] | r1 = var_ch;
0x000117f0 ldr r3, [sp, 0x20] | r3 = var_20h;
0x000117f4 sub r1, r1, 1 | r1--;
0x000117f8 cmp r1, r3 |
| if (r1 > r3) {
0x000117fc orrle r8, r8, 1 | r8 |= 1;
| }
0x00011800 tst r8, 1 |
| if ((r8 & 1) == 0) {
0x00011804 ldrne r2, [sp, 8] | r2 = format;
| }
| if ((r8 & 1) == 0) {
0x00011808 ldrne r1, [pc, 0xa7c] | r1 = "pcregrep: Data missing after %s\n";
| }
| if ((r8 & 1) != 0) {
0x0001180c ldrne r2, [r2, r3, lsl 2] | offset_3 = r3 << 2;
| r2 = *((r2 + offset_3));
| goto label_59;
| }
| if ((r8 & 1) != 0) {
| label_59:
0x00011810 bne 0x11668 | goto label_12;
| }
0x00011814 ldr r1, [sp, 8] | r1 = format;
0x00011818 add r3, r3, 1 | r3++;
0x0001181c ldr r4, [r1, r3, lsl 2] | offset_4 = r3 << 2;
| r4 = *((r1 + offset_4));
0x00011820 str r3, [sp, 0x20] | var_20h = r3;
| label_56:
0x00011824 cmp r0, 6 |
| if (r0 != 6) {
0x00011828 bne 0x1186c | goto label_60;
| }
0x0001182c mov r1, r5 | r1 = r5;
0x00011830 mov r0, r4 | r0 = r4;
0x00011834 bl 0x13d80 | fcn_00013d80 (r0, r1);
0x00011838 ldr r4, [r5, 8] | r4 = *((r5 + 8));
0x0001183c ldr r5, [r4, 4] | r5 = *((r4 + 4));
0x00011840 ldr r1, [r5] | r1 = *(r5);
0x00011844 bl 0x12a88 | fcn_00012a88 (r0, r1);
0x00011848 ldr r3, [r4] | r3 = *(r4);
0x0001184c str r0, [r5] | *(r5) = r0;
0x00011850 ldr r2, [r3] | r2 = *(r3);
0x00011854 cmp r2, 0 |
| if (r2 != 0) {
0x00011858 ldreq r2, [r4, 4] | r2 = *((r4 + 4));
| }
| if (r2 == 0) {
0x0001185c ldreq r2, [r2] | r2 = *(r2);
| goto label_61;
| }
| if (r2 != 0) {
| label_61:
0x00011860 bne 0x11720 | goto label_11;
| }
| label_13:
0x00011864 str r2, [r3] | *(r3) = r2;
0x00011868 b 0x11720 | goto label_11;
| label_60:
0x0001186c cmp r0, 7 |
| if (r0 != 7) {
0x00011870 bne 0x118b8 | goto label_62;
| }
0x00011874 ldr r5, [r5, 8] | r5 = *((r5 + 8));
0x00011878 mov r0, r4 | r0 = r4;
0x0001187c ldr r7, [r5, 4] | r7 = *((r5 + 4));
0x00011880 ldr r1, [r7] | r1 = *(r7);
0x00011884 bl 0x12ac4 | fcn_00012ac4 (r0, r1);
0x00011888 ldr r3, [r5, 4] | r3 = *((r5 + 4));
0x0001188c str r0, [r7] | *(r7) = r0;
0x00011890 ldr r2, [r3] | r2 = *(r3);
0x00011894 cmp r2, 0 |
| if (r2 == 0) {
0x00011898 bne 0x118a4 |
| label_14:
0x0001189c mov r5, 2 | r5 = 2;
0x000118a0 b 0x11c44 | goto label_31;
| }
0x000118a4 ldr r3, [r5] | r3 = *(r5);
0x000118a8 ldr r1, [r3] | r1 = *(r3);
0x000118ac cmp r1, 0 |
| if (r1 != 0) {
0x000118b0 bne 0x11720 | goto label_11;
| }
0x000118b4 b 0x11864 | goto label_13;
| label_62:
0x000118b8 cmp r0, 8 |
| if (r0 == 8) {
0x000118bc bne 0x11908 |
0x000118c0 ldr r5, [r5, 8] | r5 = *((r5 + 8));
0x000118c4 bl 0x10ce0 | r0 = malloc (r0);
0x000118c8 cmp r0, 0 |
| if (r0 == 0) {
0x000118cc bne 0x118e4 |
| label_16:
0x000118d0 ldr r3, [pc, 0x98c] | r3 = *(0x12260);
0x000118d4 ldr r0, [pc, 0x9b4] | r0 = "pcregrep: Data missing after %s\n";
0x000118d8 ldr r1, [r3] | r1 = *(0x12260);
0x000118dc bl 0x10e60 | fputs ("pcregrep: Data missing after %s\n", r1);
0x000118e0 b 0x1189c | goto label_14;
| }
0x000118e4 mov r3, 0 | r3 = 0;
0x000118e8 stm r0, {r3, r4} | *(r0) = r3;
| *((r0 + 4)) = r4;
0x000118ec ldm r5, {r2, r3} | r2 = *(r5);
| r3 = *((r5 + 4));
0x000118f0 ldr r1, [r2] | r1 = *(r2);
0x000118f4 cmp r1, 0 |
| if (r1 == 0) {
0x000118f8 ldrne r2, [r3] | r2 = *(r3);
| }
0x000118fc str r0, [r2] | *(r2) = r0;
| label_15:
0x00011900 str r0, [r3] | *(r3) = r0;
0x00011904 b 0x11720 | goto label_11;
| }
0x00011908 cmp r0, 9 |
| if (r0 != 9) {
0x0001190c bne 0x1196c | goto label_63;
| }
0x00011910 ldr r1, [pc, 0x97c] | r1 = "pcregrep:_malloc_failed";
0x00011914 mov r0, r4 | r0 = r4;
0x00011918 bl 0x10db8 | r0 = strcmp (r0, "pcregrep:_malloc_failed");
0x0001191c cmp r0, 0 |
| if (r0 == 0) {
0x00011920 streq r0, [r6, 0x44] | *((r6 + 0x44)) = r0;
| goto label_64;
| }
| if (r0 == 0) {
| label_64:
0x00011924 beq 0x11720 | goto label_11;
| }
0x00011928 ldr r1, [pc, 0x968] | r1 = "binary";
0x0001192c mov r0, r4 | r0 = r4;
0x00011930 bl 0x10db8 | r0 = strcmp (r0, "binary");
0x00011934 cmp r0, 0 |
| if (r0 != 0) {
0x00011938 moveq r3, 1 | r3 = 1;
| }
| if (r0 != 0) {
0x0001193c beq 0x11958 |
0x00011940 ldr r1, [pc, 0x954] | r1 = *(0x12298);
0x00011944 mov r0, r4 | r0 = r4;
0x00011948 bl 0x10db8 | r0 = strcmp (r0, r1);
0x0001194c cmp r0, 0 |
| if (r0 != 0) {
0x00011950 bne 0x11960 | goto label_65;
| }
0x00011954 mov r3, 2 | r3 = 2;
| }
0x00011958 str r3, [r6, 0x44] | *((r6 + 0x44)) = r3;
0x0001195c b 0x11720 | goto label_11;
| label_65:
0x00011960 mov r2, r4 | r2 = r4;
0x00011964 ldr r1, [pc, 0x934] | r1 = *(0x1229c);
0x00011968 b 0x11668 | goto label_12;
| label_63:
0x0001196c sub r0, r0, 3 | r0 -= 3;
0x00011970 cmp r0, 2 |
| if (r0 <= 2) {
0x00011974 ldrhi r3, [r5, 8] | r3 = *((r5 + 8));
| }
| if (r0 > 2) {
0x00011978 strhi r4, [r3] | *(r3) = r4;
| goto label_66;
| }
| if (r0 > 2) {
| label_66:
0x0001197c bhi 0x11720 | goto label_11;
| }
0x00011980 mov r1, r5 | r1 = r5;
0x00011984 mov r0, r4 | r0 = r4;
0x00011988 bl 0x13d80 | fcn_00013d80 (r0, r1);
0x0001198c ldr r3, [r5, 8] | r3 = *((r5 + 8));
0x00011990 b 0x11900 | goto label_15;
| label_39:
0x00011994 bl 0x10e48 | pcre_maketables ();
0x00011998 str r0, [r4, 0x24] | *((r4 + 0x24)) = r0;
| label_38:
0x0001199c ldr r5, [r4, 0xa0] | r5 = *((r4 + 0xa0));
0x000119a0 cmp r5, 0 |
| if (r5 != 0) {
0x000119a4 beq 0x11a34 |
0x000119a8 ldr r1, [pc, 0x8f4] | r1 = "pcregrep: unknown value \"%s\" for binary-files\n";
0x000119ac mov r0, r5 | r0 = r5;
0x000119b0 bl 0x10db8 | r0 = strcmp (r0, "pcregrep: unknown value \"%s\" for binary-files\n");
0x000119b4 cmp r0, 0 |
| if (r0 == 0) {
0x000119b8 beq 0x11a34 | goto label_67;
| }
0x000119bc ldr r1, [pc, 0x8e4] | r1 = "never";
0x000119c0 mov r0, r5 | r0 = r5;
0x000119c4 bl 0x10db8 | r0 = strcmp (r0, "never");
0x000119c8 cmp r0, 0 |
| if (r0 != 0) {
0x000119cc moveq r3, 1 | r3 = 1;
| }
| if (r0 != 0) {
0x000119d0 streq r3, [r4, 0x64] | *((r4 + 0x64)) = r3;
| }
| if (r0 != 0) {
0x000119d4 beq 0x11a00 |
0x000119d8 ldr r1, [pc, 0x8a8] | r1 = "pcregrep:_Unknown_option_letter__c_in___s_";
0x000119dc mov r0, r5 | r0 = r5;
0x000119e0 bl 0x10db8 | r0 = strcmp (r0, "pcregrep:_Unknown_option_letter__c_in___s_");
0x000119e4 cmp r0, 0 |
| if (r0 != 0) {
0x000119e8 bne 0x11cb4 | goto label_68;
| }
0x000119ec ldr r3, [pc, 0x8b8] | r3 = "always";
0x000119f0 ldr r0, [r3] | r0 = "always";
0x000119f4 bl 0x10e30 | r0 = fileno ("always");
0x000119f8 bl 0x10cec | isatty (r0);
0x000119fc str r0, [r4, 0x64] | *((r4 + 0x64)) = r0;
| }
0x00011a00 ldr r3, [r4, 0x64] | r3 = *((r4 + 0x64));
0x00011a04 cmp r3, 0 |
| if (r3 == 0) {
0x00011a08 beq 0x11a34 | goto label_67;
| }
0x00011a0c ldr r0, [pc, 0x89c] | r0 = stdout;
0x00011a10 bl 0x10cbc | r0 = getenv (r0);
0x00011a14 cmp r0, 0 |
| if (r0 == 0) {
0x00011a18 bne 0x11a2c |
0x00011a1c ldr r0, [pc, 0x890] | r0 = "PCREGREP_COLOUR";
0x00011a20 bl 0x10cbc | r0 = getenv ("PCREGREP_COLOUR");
0x00011a24 cmp r0, 0 |
| if (r0 == 0) {
0x00011a28 beq 0x11a34 | goto label_67;
| }
| }
0x00011a2c ldr r3, [pc, 0x884] | r3 = "PCREGREP_COLOR";
0x00011a30 str r0, [r3, 0x10] | *((r3 + 0x10)) = r0;
| }
| label_67:
0x00011a34 ldr r5, [r4, 0x98] | r5 = *((r4 + 0x98));
0x00011a38 ldr r1, [pc, 0x818] | r1 = *(0x12254);
0x00011a3c mov r0, r5 | r0 = r5;
0x00011a40 bl 0x10db8 | r0 = strcmp (r0, r1);
0x00011a44 cmp r0, 0 |
| if (r0 != 0) {
0x00011a48 beq 0x11a60 |
0x00011a4c ldr r1, [pc, 0x868] | r1 = "_standard_input_";
0x00011a50 mov r0, r5 | r0 = r5;
0x00011a54 bl 0x10db8 | r0 = strcmp (r0, "_standard_input_");
0x00011a58 cmp r0, 0 |
| if (r0 != 0) {
0x00011a5c bne 0x11ccc | goto label_69;
| }
| }
0x00011a60 ldr r3, [r4, 0x38] | r3 = *((r4 + 0x38));
0x00011a64 orr r3, r3, 0x100000 | r3 |= 0x100000;
0x00011a68 str r3, [r4, 0x38] | *((r4 + 0x38)) = r3;
0x00011a6c mov r3, 1 | r3 = 1;
| label_18:
0x00011a70 ldr r5, [r4, 0xac] | r5 = *((r4 + 0xac));
0x00011a74 str r3, [r4] | *(r4) = r3;
0x00011a78 cmp r5, 0 |
| if (r5 != 0) {
0x00011a7c beq 0x11acc |
0x00011a80 ldr r1, [pc, 0x838] | r1 = "CR";
0x00011a84 mov r0, r5 | r0 = r5;
0x00011a88 bl 0x10db8 | r0 = strcmp (r0, "CR");
0x00011a8c cmp r0, 0 |
| if (r0 != 0) {
0x00011a90 streq r0, [r4, 0x70] | *((r4 + 0x70)) = r0;
| }
| if (r0 == 0) {
0x00011a94 beq 0x11acc | goto label_70;
| }
0x00011a98 ldr r1, [pc, 0x824] | r1 = "read";
0x00011a9c mov r0, r5 | r0 = r5;
0x00011aa0 bl 0x10db8 | r0 = strcmp (r0, "read");
0x00011aa4 cmp r0, 0 |
| if (r0 != 0) {
0x00011aa8 moveq r3, 2 | r3 = 2;
| }
| if (r0 != 0) {
0x00011aac beq 0x11ac8 |
0x00011ab0 ldr r1, [pc, 0x810] | r1 = "recurse";
0x00011ab4 mov r0, r5 | r0 = r5;
0x00011ab8 bl 0x10db8 | r0 = strcmp (r0, "recurse");
0x00011abc cmp r0, 0 |
| if (r0 != 0) {
0x00011ac0 bne 0x11dc8 | goto label_71;
| }
0x00011ac4 mov r3, 1 | r3 = 1;
| }
0x00011ac8 str r3, [r4, 0x70] | *((r4 + 0x70)) = r3;
| }
| label_70:
0x00011acc ldr r5, [r4, 0xb0] | r5 = *((r4 + 0xb0));
0x00011ad0 cmp r5, 0 |
| if (r5 != 0) {
0x00011ad4 beq 0x11b14 |
0x00011ad8 ldr r1, [pc, 0x7e0] | r1 = "CR";
0x00011adc mov r0, r5 | r0 = r5;
0x00011ae0 bl 0x10db8 | r0 = strcmp (r0, "CR");
0x00011ae4 cmp r0, 0 |
| if (r0 != 0) {
0x00011ae8 streq r0, [r4, 0x80] | *((r4 + 0x80)) = r0;
| }
| if (r0 == 0) {
0x00011aec beq 0x11b14 | goto label_72;
| }
0x00011af0 ldr r1, [pc, 0x7d0] | r1 = "recurse";
0x00011af4 mov r0, r5 | r0 = r5;
0x00011af8 bl 0x10db8 | r0 = strcmp (r0, "recurse");
0x00011afc cmp r0, 0 |
| if (r0 != 0) {
0x00011b00 moveq r3, 1 | r3 = 1;
| }
| if (r0 != 0) {
0x00011b04 streq r3, [r4, 0x80] | *((r4 + 0x80)) = r3;
| }
| if (r0 == 0) {
0x00011b08 movne r2, r5 | r2 = r5;
| }
| if (r0 == 0) {
0x00011b0c ldrne r1, [pc, 0x7b8] | r1 = "pcregrep: Invalid value \"%s\" for -D\n";
| }
| if (r0 != 0) {
0x00011b10 bne 0x11cbc | goto label_19;
| }
| }
| label_72:
0x00011b14 ldr r6, [pc, 0x79c] | r6 = "PCREGREP_COLOR";
0x00011b18 ldr r0, [r6, 0x14] |
0x00011b1c add r0, r0, r0, lsl 1 | r0 = 0x122c8;
0x00011b20 str r0, [r6, 4] | *((r6 + 4)) = r0;
0x00011b24 bl 0x10ce0 | r0 = malloc (r0);
0x00011b28 cmp r0, 0 |
0x00011b2c str r0, [r4, 0x3c] | *((r4 + 0x3c)) = r0;
| if (r0 == 0) {
0x00011b30 beq 0x118d0 | goto label_16;
| }
0x00011b34 ldr r3, [r4, 0xc] | r3 = *((r4 + 0xc));
0x00011b38 cmp r3, 0 |
| if (r3 == 0) {
0x00011b3c beq 0x11dd4 | goto label_73;
| }
| label_20:
0x00011b40 ldr r5, [r4, 0xc] | r5 = *((r4 + 0xc));
0x00011b44 ldr r8, [pc, 0x784] | r8 = "pcregrep: Invalid value \"%s\" for -D\n";
0x00011b48 mov r7, 1 | r7 = 1;
| label_21:
0x00011b4c cmp r5, 0 |
| if (r5 != 0) {
0x00011b50 bne 0x11e28 | goto label_74;
| }
0x00011b54 ldr r5, [r4, 0x9c] | r5 = *((r4 + 0x9c));
0x00011b58 ldr r7, [pc, 0x774] | r7 = "command-line";
| label_22:
0x00011b5c cmp r5, 0 |
| if (r5 != 0) {
0x00011b60 bne 0x11e74 | goto label_75;
| }
0x00011b64 ldr r3, [r4, 0xb8] | r3 = *((r4 + 0xb8));
0x00011b68 cmp r3, 0 |
| if (r3 == 0) {
0x00011b6c bne 0x11b7c |
0x00011b70 ldr r3, [r4, 0xbc] | r3 = *((r4 + 0xbc));
0x00011b74 cmp r3, 0 |
| if (r3 == 0) {
0x00011b78 beq 0x11b88 | goto label_76;
| }
| }
0x00011b7c ldr r3, [r4, 0x8c] | r3 = *((r4 + 0x8c));
0x00011b80 orr r3, r3, 8 | r3 |= 8;
0x00011b84 str r3, [r4, 0x8c] | *((r4 + 0x8c)) = r3;
| label_76:
0x00011b88 ldr r5, [r4, 0xc] | r5 = *((r4 + 0xc));
0x00011b8c mov r7, 1 | r7 = 1;
0x00011b90 add r8, sp, 0x24 | r8 += var_24h;
| label_24:
0x00011b94 cmp r5, 0 |
| if (r5 != 0) {
0x00011b98 bne 0x11e98 | goto label_77;
| }
0x00011b9c ldr r5, [r4, 0xc] | r5 = *((r4 + 0xc));
0x00011ba0 ldr r1, [r4, 0xb8] | r1 = *((r4 + 0xb8));
0x00011ba4 ldr r0, [r4, 0xbc] | r0 = *((r4 + 0xbc));
| label_25:
0x00011ba8 cmp r5, 0 |
| if (r5 != 0) {
0x00011bac bne 0x11ef0 | goto label_78;
| }
0x00011bb0 ldr sb, [pc, 0x720] | sb = *(0x122d4);
| do {
0x00011bb4 lsl r3, r5, 2 | r3 = r5 << 2;
0x00011bb8 str r3, [sp, 0x10] | var_10h = r3;
0x00011bbc ldr r3, [sb, r5, lsl 2] | offset_5 = r5 << 2;
| r3 = *((sb + offset_5));
0x00011bc0 mov r8, 1 | r8 = 1;
0x00011bc4 ldr r7, [r3] | r7 = *(r3);
| label_26:
0x00011bc8 cmp r7, 0 |
| if (r7 != 0) {
0x00011bcc bne 0x11f28 | goto label_79;
| }
0x00011bd0 add r5, r5, 1 | r5++;
0x00011bd4 cmp r5, 4 |
0x00011bd8 bne 0x11bb4 |
| } while (r5 != 4);
0x00011bdc ldr r5, [r4, 0xc0] | r5 = *((r4 + 0xc0));
0x00011be0 ldr r7, [pc, 0x6f4] | r7 = *(0x122d8);
| label_27:
0x00011be4 cmp r5, 0 |
| if (r5 != 0) {
0x00011be8 bne 0x11f78 | goto label_80;
| }
0x00011bec ldr r5, [r4, 0xc8] | r5 = *((r4 + 0xc8));
0x00011bf0 ldr r7, [pc, 0x6e8] | r7 = *(0x122dc);
| label_28:
0x00011bf4 cmp r5, 0 |
| if (r5 != 0) {
0x00011bf8 bne 0x11f9c | goto label_81;
| }
0x00011bfc ldr r7, [r4, 0xd0] | r7 = *((r4 + 0xd0));
0x00011c00 ldr r8, [pc, 0x640] | r8 = *(0x12244);
0x00011c04 cmp r7, 0 |
| if (r7 == 0) {
0x00011c08 movne r5, 1 | r5 = 1;
| }
| if (r7 != 0) {
0x00011c0c bne 0x11fc0 | goto label_30;
| }
0x00011c10 ldr r3, [fp, -0x28] | r3 = var_20h;
0x00011c14 ldr r2, [sp, 0xc] | r2 = var_ch;
0x00011c18 cmp r3, r2 |
| if (r3 < r2) {
0x00011c1c blt 0x1215c | goto label_82;
| }
0x00011c20 ldr r3, [r6, 8] | r3 = *((r6 + 8));
0x00011c24 ldr r1, [r6] | r1 = *(r6);
0x00011c28 cmp r3, 1 |
0x00011c2c ldr r3, [pc, 0x6b0] | r3 = *(0x122e0);
| if (r3 <= 1) {
0x00011c30 movgt r2, r1 | r2 = r1;
| }
| if (r3 > 1) {
0x00011c34 movle r2, 0 | r2 = 0;
| }
0x00011c38 ldr r0, [r3] | r0 = *(0x122e0);
0x00011c3c bl 0x12b48 | r0 = fcn_00012b48 (r0, r1);
0x00011c40 mov r5, r0 | r5 = r0;
| label_31:
0x00011c44 ldr r0, [sl, 0x3c] | r0 = *((sl + 0x3c));
0x00011c48 bl 0x10e9c | free (r0);
0x00011c4c ldr r0, [sl, 0x24] | r0 = *((sl + 0x24));
0x00011c50 bl 0x10e9c | free (r0);
0x00011c54 ldr r0, [sl, 0xc] | r0 = *((sl + 0xc));
0x00011c58 bl 0x10ed8 | fcn_00010ed8 (r0);
0x00011c5c ldr r0, [sl, 0x88] | r0 = *((sl + 0x88));
0x00011c60 bl 0x10ed8 | fcn_00010ed8 (r0);
0x00011c64 ldr r0, [sl, 0x78] | r0 = *((sl + 0x78));
0x00011c68 bl 0x10ed8 | fcn_00010ed8 (r0);
0x00011c6c ldr r0, [sl, 0x84] | r0 = *((sl + 0x84));
0x00011c70 bl 0x10ed8 | fcn_00010ed8 (r0);
0x00011c74 ldr r0, [sl, 0x74] | r0 = *((sl + 0x74));
0x00011c78 bl 0x10ed8 | fcn_00010ed8 (r0);
0x00011c7c ldr r0, [sl, 0xc8] | r0 = *((sl + 0xc8));
0x00011c80 bl 0x10eb4 | fcn_00010eb4 (r0);
0x00011c84 ldr r0, [sl, 0xc0] | r0 = *((sl + 0xc0));
0x00011c88 bl 0x10eb4 | fcn_00010eb4 (r0);
0x00011c8c ldr r0, [sl, 0x9c] | r0 = *((sl + 0x9c));
0x00011c90 bl 0x10eb4 | fcn_00010eb4 (r0);
0x00011c94 ldr r0, [sl, 0xd0] | r0 = *((sl + 0xd0));
0x00011c98 bl 0x10eb4 | fcn_00010eb4 (r0);
0x00011c9c ldr r4, [pc, 0x5a4] | r4 = *(0x12244);
| label_34:
0x00011ca0 ldr r0, [r4, 0x60] | r0 = *((r4 + 0x60));
0x00011ca4 cmp r0, 0 |
| if (r0 != 0) {
0x00011ca8 bne 0x12164 | goto label_83;
| }
0x00011cac mov r0, r5 | r0 = r5;
0x00011cb0 b 0x115b4 | goto label_17;
| label_68:
0x00011cb4 ldr r1, [pc, 0x62c] | r1 = stdin;
0x00011cb8 mov r2, r5 | r2 = r5;
| do {
| label_19:
0x00011cbc ldr r3, [pc, 0x5a0] | r3 = *(0x12260);
0x00011cc0 ldr r0, [r3] | r0 = *(0x12260);
| label_23:
0x00011cc4 bl 0x10d34 | fprintf (r0, r1, r2, r3)
0x00011cc8 b 0x1189c | goto label_14;
| label_69:
0x00011ccc ldr r1, [pc, 0x580] | r1 = "anycrlf";
0x00011cd0 mov r0, r5 | r0 = r5;
0x00011cd4 bl 0x10db8 | r0 = strcmp (r0, "anycrlf");
0x00011cd8 cmp r0, 0 |
| if (r0 != 0) {
0x00011cdc beq 0x11cf4 |
0x00011ce0 ldr r1, [pc, 0x604] | r1 = "pcregrep:_Unknown_colour_setting___s_";
0x00011ce4 mov r0, r5 | r0 = r5;
0x00011ce8 bl 0x10db8 | r0 = strcmp (r0, "pcregrep:_Unknown_colour_setting___s_");
0x00011cec cmp r0, 0 |
| if (r0 != 0) {
0x00011cf0 bne 0x11d08 | goto label_84;
| }
| }
0x00011cf4 ldr r3, [r4, 0x38] | r3 = *((r4 + 0x38));
0x00011cf8 orr r3, r3, 0x200000 | r3 |= 0x200000;
0x00011cfc str r3, [r4, 0x38] | *((r4 + 0x38)) = r3;
0x00011d00 mov r3, 0 | r3 = 0;
0x00011d04 b 0x11a70 | goto label_18;
| label_84:
0x00011d08 ldr r1, [pc, 0x550] | r1 = *(0x1225c);
0x00011d0c mov r0, r5 | r0 = r5;
0x00011d10 bl 0x10db8 | r0 = strcmp (r0, r1);
0x00011d14 cmp r0, 0 |
| if (r0 != 0) {
0x00011d18 beq 0x11d30 |
0x00011d1c ldr r1, [pc, 0x5cc] | r1 = "LF";
0x00011d20 mov r0, r5 | r0 = r5;
0x00011d24 bl 0x10db8 | r0 = strcmp (r0, "LF");
0x00011d28 cmp r0, 0 |
| if (r0 != 0) {
0x00011d2c bne 0x11d44 | goto label_85;
| }
| }
0x00011d30 ldr r3, [r4, 0x38] | r3 = *((r4 + 0x38));
0x00011d34 orr r3, r3, 0x300000 | r3 |= 0x300000;
0x00011d38 str r3, [r4, 0x38] | *((r4 + 0x38)) = r3;
0x00011d3c mov r3, 2 | r3 = 2;
0x00011d40 b 0x11a70 | goto label_18;
| label_85:
0x00011d44 ldr r1, [pc, 0x500] | r1 = *(0x12248);
0x00011d48 mov r0, r5 | r0 = r5;
0x00011d4c bl 0x10db8 | r0 = strcmp (r0, r1);
0x00011d50 cmp r0, 0 |
| if (r0 != 0) {
0x00011d54 beq 0x11d6c |
0x00011d58 ldr r1, [pc, 0x594] | r1 = "CRLF";
0x00011d5c mov r0, r5 | r0 = r5;
0x00011d60 bl 0x10db8 | r0 = strcmp (r0, "CRLF");
0x00011d64 cmp r0, 0 |
| if (r0 != 0) {
0x00011d68 bne 0x11d80 | goto label_86;
| }
| }
0x00011d6c ldr r3, [r4, 0x38] | r3 = *((r4 + 0x38));
0x00011d70 orr r3, r3, 0x400000 | r3 |= 0x400000;
0x00011d74 str r3, [r4, 0x38] | *((r4 + 0x38)) = r3;
0x00011d78 mov r3, 3 | r3 = 3;
0x00011d7c b 0x11a70 | goto label_18;
| label_86:
0x00011d80 ldr r1, [pc, 0x4c8] | r1 = "any";
0x00011d84 mov r0, r5 | r0 = r5;
0x00011d88 bl 0x10db8 | r0 = strcmp (r0, "any");
0x00011d8c cmp r0, 0 |
| if (r0 != 0) {
0x00011d90 beq 0x11da8 |
0x00011d94 ldr r1, [pc, 0x55c] | r1 = *(0x122f4);
0x00011d98 mov r0, r5 | r0 = r5;
0x00011d9c bl 0x10db8 | r0 = strcmp (r0, r1);
0x00011da0 cmp r0, 0 |
| if (r0 != 0) {
0x00011da4 bne 0x11dbc | goto label_87;
| }
| }
0x00011da8 ldr r3, [r4, 0x38] | r3 = *((r4 + 0x38));
0x00011dac orr r3, r3, 0x500000 | r3 |= 0x500000;
0x00011db0 str r3, [r4, 0x38] | *((r4 + 0x38)) = r3;
0x00011db4 mov r3, 4 | r3 = 4;
0x00011db8 b 0x11a70 | goto label_18;
| label_87:
0x00011dbc mov r2, r5 | r2 = r5;
0x00011dc0 ldr r1, [pc, 0x534] | r1 = "ANYCRLF";
0x00011dc4 b 0x11cbc |
| } while (1);
| label_71:
0x00011dc8 mov r2, r5 | r2 = r5;
0x00011dcc ldr r1, [pc, 0x52c] | r1 = "pcregrep: Invalid newline specifier \"%s\"\n";
0x00011dd0 b 0x11cbc | goto label_19;
| label_73:
0x00011dd4 ldr r1, [r4, 0x9c] | r1 = *((r4 + 0x9c));
0x00011dd8 cmp r1, 0 |
| if (r1 != 0) {
0x00011ddc bne 0x11b40 | goto label_20;
| }
0x00011de0 ldr r3, [fp, -0x28] | r3 = var_20h;
0x00011de4 ldr r2, [sp, 0xc] | r2 = var_ch;
0x00011de8 cmp r3, r2 |
| if (r3 >= r2) {
0x00011dec blt 0x11e00 |
0x00011df0 bl 0x13d18 | fcn_00013d18 ();
0x00011df4 add sp, sp, 0x2040 |
0x00011df8 add sp, sp, 0xc |
0x00011dfc pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| }
0x00011e00 add r2, r3, 1 | r2 = r3 + 1;
0x00011e04 str r2, [fp, -0x28] | var_20h = r2;
0x00011e08 ldr r2, [sp, 8] | r2 = format;
0x00011e0c ldr r0, [r2, r3, lsl 2] | offset_6 = r3 << 2;
| r0 = *((r2 + offset_6));
0x00011e10 bl 0x12ac4 | r0 = fcn_00012ac4 (r0, r1);
0x00011e14 cmp r0, 0 |
0x00011e18 str r0, [r4, 0xb4] | *((r4 + 0xb4)) = r0;
0x00011e1c str r0, [r4, 0xc] | *((r4 + 0xc)) = r0;
| if (r0 != 0) {
0x00011e20 bne 0x11b40 | goto label_20;
| }
0x00011e24 b 0x1189c | goto label_14;
| label_74:
0x00011e28 cmp r7, 1 |
0x00011e2c ldr r1, [r4, 0x38] | r1 = *((r4 + 0x38));
0x00011e30 ldr r2, [r4, 0x90] | r2 = *((r4 + 0x90));
| if (r7 == 1) {
0x00011e34 movne r3, r7 | r3 = r7;
| }
| if (r7 == 1) {
0x00011e38 bne 0x11e4c |
0x00011e3c ldr r3, [r4, 0xc] | r3 = *((r4 + 0xc));
0x00011e40 ldr r3, [r3] | r3 = *(r3);
0x00011e44 adds r3, r3, 0 | r3 += 0;
| if (r3 != r3) {
0x00011e48 movne r3, 1 | r3 = 1;
| goto label_88;
| }
| }
| label_88:
0x00011e4c str r3, [sp, 4] | var_4h = r3;
0x00011e50 str r8, [sp] | *(sp) = r8;
0x00011e54 mov r3, 0 | r3 = 0;
0x00011e58 mov r0, r5 | r0 = r5;
0x00011e5c bl 0x10f4c | r0 = fcn_00010f4c (r0, r1, r2);
0x00011e60 cmp r0, 0 |
| if (r0 == 0) {
0x00011e64 beq 0x1189c | goto label_14;
| }
0x00011e68 add r7, r7, 1 | r7++;
0x00011e6c ldr r5, [r5] | r5 = *(r5);
0x00011e70 b 0x11b4c | goto label_21;
| label_75:
0x00011e74 ldr r3, [r4, 0x90] | r3 = *((r4 + 0x90));
0x00011e78 mov r2, r7 | r2 = r7;
0x00011e7c ldr r1, [pc, 0x480] | r1 = "pcregrep: Invalid value \"%s\" for -d\n";
0x00011e80 ldr r0, [r5, 4] | r0 = *((r5 + 4));
0x00011e84 bl 0x111b0 | r0 = fcn_000111b0 (r0, "pcregrep: Invalid value \"%s\" for -d\n");
0x00011e88 cmp r0, 0 |
| if (r0 == 0) {
0x00011e8c beq 0x1189c | goto label_14;
| }
0x00011e90 ldr r5, [r5] | r5 = *(r5);
0x00011e94 b 0x11b5c | goto label_22;
| label_77:
0x00011e98 mov r2, r8 | r2 = r8;
0x00011e9c ldr r1, [r4, 0x8c] | r1 = *((r4 + 0x8c));
0x00011ea0 ldr r0, [r5, 8] | r0 = *((r5 + 8));
0x00011ea4 bl 0x10e0c | pcre_study ();
0x00011ea8 ldr r3, [sp, 0x24] | r3 = var_24h;
0x00011eac cmp r3, 0 |
0x00011eb0 str r0, [r5, 0xc] | *((r5 + 0xc)) = r0;
| if (r3 != 0) {
0x00011eb4 beq 0x11ee4 |
0x00011eb8 ldr r2, [pc, 0x3a4] |
0x00011ebc ldr r0, [r2] | r0 = *(0x12260);
0x00011ec0 ldr r2, [r4, 0xc] | r2 = *((r4 + 0xc));
0x00011ec4 ldr r2, [r2] | r2 = *(0x12260);
0x00011ec8 cmp r2, 0 |
| if (r2 == 0) {
0x00011ecc movne r2, r7 | r2 = r7;
| }
| if (r2 == 0) {
0x00011ed0 ldrne r1, [pc, 0x430] | r1 = "pcregrep:_Error_while_studying_regex_number__d:__s";
| }
| if (r2 != 0) {
0x00011ed4 bne 0x12240 | goto label_89;
| }
0x00011ed8 mov r2, r3 | r2 = r3;
0x00011edc ldr r1, [pc, 0x428] | r1 = "pcregrep:_Error_while_studying_regex_number__d:__s";
0x00011ee0 b 0x11cc4 | goto label_23;
| }
0x00011ee4 add r7, r7, 1 | r7++;
0x00011ee8 ldr r5, [r5] | r5 = *(r5);
0x00011eec b 0x11b94 | goto label_24;
| label_78:
0x00011ef0 cmp r1, 0 |
| if (r1 == 0) {
0x00011ef4 ldrne r3, [r5, 0xc] | r3 = *((r5 + 0xc));
| }
| if (r1 == 0) {
0x00011ef8 ldrne r2, [r3] | r2 = *(r3);
| }
| if (r1 == 0) {
0x00011efc strne r1, [r3, 8] | *((r3 + 8)) = r1;
| }
| if (r1 == 0) {
0x00011f00 orrne r2, r2, 2 | r2 |= 2;
| }
| if (r1 == 0) {
0x00011f04 strne r2, [r3] | *(r3) = r2;
| }
0x00011f08 cmp r0, 0 |
| if (r0 == 0) {
0x00011f0c ldrne r3, [r5, 0xc] | r3 = *((r5 + 0xc));
| }
0x00011f10 ldr r5, [r5] | r5 = *(r5);
| if (r0 == 0) {
0x00011f14 ldrne r2, [r3] | r2 = *(r3);
| }
| if (r0 == 0) {
0x00011f18 strne r0, [r3, 0x14] | *((r3 + 0x14)) = r0;
| }
| if (r0 == 0) {
0x00011f1c orrne r2, r2, 0x10 | r2 |= 0x10;
| }
| if (r0 == 0) {
0x00011f20 strne r2, [r3] | *(r3) = r2;
| }
0x00011f24 b 0x11ba8 | goto label_25;
| label_79:
0x00011f28 ldr r3, [pc, 0x3e0] | r3 = "pcregrep:_Error_while_studying_regex:__s";
0x00011f2c ldr r2, [sp, 0x10] | r2 = var_10h;
0x00011f30 cmp r8, 1 |
0x00011f34 ldr r2, [r2, r3] | r2 = *((r2 + r3));
0x00011f38 ldr r1, [r4, 0x38] | r1 = *((r4 + 0x38));
| if (r8 == 1) {
0x00011f3c movne r3, r8 | r3 = r8;
| }
| if (r8 == 1) {
0x00011f40 bne 0x11f50 |
0x00011f44 ldr r3, [r7] | r3 = *(r7);
0x00011f48 adds r3, r3, 0 | r3 += 0;
| if (r3 != r3) {
0x00011f4c movne r3, 1 | r3 = 1;
| goto label_90;
| }
| }
| label_90:
0x00011f50 stm sp, {r2, r3} | *(sp) = r2;
| *((sp + 4)) = r3;
0x00011f54 mov r3, 0 | r3 = 0;
0x00011f58 mov r2, r3 | r2 = r3;
0x00011f5c mov r0, r7 | r0 = r7;
0x00011f60 bl 0x10f4c | r0 = fcn_00010f4c (r0, r1, r2);
0x00011f64 cmp r0, 0 |
| if (r0 == 0) {
0x00011f68 beq 0x1189c | goto label_14;
| }
0x00011f6c add r8, r8, 1 | r8++;
0x00011f70 ldr r7, [r7] | r7 = *(r7);
0x00011f74 b 0x11bc8 | goto label_26;
| label_80:
0x00011f78 mov r3, 0 | r3 = 0;
0x00011f7c mov r2, r7 | r2 = r7;
0x00011f80 ldr r1, [pc, 0x38c] | r1 = "__include";
0x00011f84 ldr r0, [r5, 4] | r0 = *((r5 + 4));
0x00011f88 bl 0x111b0 | r0 = fcn_000111b0 (r0, "__include");
0x00011f8c cmp r0, 0 |
| if (r0 == 0) {
0x00011f90 beq 0x1189c | goto label_14;
| }
0x00011f94 ldr r5, [r5] | r5 = *(r5);
0x00011f98 b 0x11be4 | goto label_27;
| label_81:
0x00011f9c mov r3, 0 | r3 = 0;
0x00011fa0 mov r2, r7 | r2 = r7;
0x00011fa4 ldr r1, [pc, 0x36c] | r1 = *(0x12314);
0x00011fa8 ldr r0, [r5, 4] | r0 = *((r5 + 4));
0x00011fac bl 0x111b0 | r0 = fcn_000111b0 (r0, r1);
0x00011fb0 cmp r0, 0 |
| if (r0 == 0) {
0x00011fb4 beq 0x1189c | goto label_14;
| }
0x00011fb8 ldr r5, [r5] | r5 = *(r5);
0x00011fbc b 0x11bf4 | goto label_28;
| label_30:
0x00011fc0 ldr r6, [r7, 4] | r6 = *((r7 + 4));
0x00011fc4 ldr r1, [pc, 0x350] | r1 = *(0x12318);
0x00011fc8 mov r0, r6 | r0 = r6;
0x00011fcc bl 0x10db8 | r0 = strcmp (r0, r1);
0x00011fd0 cmp r0, 0 |
| if (r0 != 0) {
0x00011fd4 ldreq r3, [pc, 0x308] | r3 = obj.stdin;
| }
| if (r0 != 0) {
0x00011fd8 ldreq r6, [r3] | r6 = *(r3);
| }
| if (r0 == 0) {
0x00011fdc beq 0x120a0 | goto label_91;
| }
0x00011fe0 mov r0, r6 | r0 = r6;
0x00011fe4 ldr r1, [pc, 0x334] | r1 = *(0x1231c);
0x00011fe8 bl 0x10ea8 | r0 = fopen64 ();
0x00011fec subs r6, r0, 0 | r6 = r0 - 0;
| if (r6 != r0) {
0x00011ff0 bne 0x120a0 | goto label_91;
| }
0x00011ff4 ldr r3, [pc, 0x268] | r3 = *(0x12260);
0x00011ff8 ldr r5, [r7, 4] | r5 = *((r7 + 4));
0x00011ffc ldr r4, [r3] | r4 = *(0x12260);
0x00012000 bl 0x10e18 | r0 = errno_location ();
0x00012004 ldr r0, [r0] | r0 = *(r0);
0x00012008 bl 0x10c8c | strerror (r0);
0x0001200c mov r2, r5 | r2 = r5;
0x00012010 ldr r1, [pc, 0x30c] | r1 = "rb";
0x00012014 mov r3, r0 | r3 = r0;
0x00012018 mov r0, r4 | r0 = r4;
0x0001201c b 0x12240 | goto label_89;
| label_29:
0x00012020 mov r0, sb | r0 = sb;
0x00012024 bl 0x10e3c | strlen (r0);
0x00012028 ldr r3, [pc, 0x2f8] | r3 = "pcregrep: Failed to open %s: %s\n";
0x0001202c ldr r2, [r3] | r2 = "pcregrep: Failed to open %s: %s\n";
0x00012030 add r0, sb, r0 | r0 = sb + r0;
| do {
0x00012034 cmp r0, sb |
0x00012038 mov r1, r0 | r1 = r0;
| if (r0 < sb) {
0x0001203c bls 0x12054 | goto label_92;
| }
0x00012040 ldrb r3, [r0, -1]! | r3 = *((r0 -= 1));
0x00012044 lsl r3, r3, 1 | r3 <<= 1;
0x00012048 ldrh r3, [r2, r3] | r3 = *((r2 + r3));
0x0001204c tst r3, 0x20 |
0x00012050 bne 0x12034 |
| } while ((r3 & 0x20) != 0);
| label_92:
0x00012054 mov r2, 0 | r2 = 0;
0x00012058 strb r2, [r1] | *(r1) = r2;
0x0001205c ldrb r3, [sp, 0x3c] | r3 = *(envp);
0x00012060 cmp r3, r2 |
| if (r3 != r2) {
0x00012064 beq 0x120a4 |
0x00012068 ldr r1, [r8, 0x70] | r1 = *((r8 + 0x70));
0x0001206c mov r0, sb | r0 = sb;
0x00012070 sub r1, r1, 2 | r1 -= 2;
0x00012074 clz r1, r1 | r1 &= r1;
0x00012078 lsr r1, r1, 5 | r1 >>= 5;
0x0001207c bl 0x13c98 | r0 = fcn_00013c98 (r0, r1);
0x00012080 cmp r0, 1 |
| if (r0 <= 1) {
0x00012084 bgt 0x12098 |
0x00012088 cmp r0, 0 |
0x0001208c cmpeq r5, 1 | __asm ("cmpeq r5, 1");
| if (r0 == 0) {
0x00012090 movne r0, r5 | r0 = r5;
| }
| if (r0 == 0) {
0x00012094 moveq r0, 0 | r0 = 0;
| goto label_93;
| }
| }
| label_93:
0x00012098 mov r5, r0 | r5 = r0;
0x0001209c b 0x120a4 | goto label_94;
| label_91:
0x000120a0 add sb, sp, 0x3c | sb += envp;
| }
| label_94:
0x000120a4 mov r2, r6 | r2 = r6;
0x000120a8 ldr r1, [pc, 0x27c] | r1 = __ctype_b;
0x000120ac mov r0, sb | r0 = sb;
0x000120b0 bl 0x10cc8 | r0 = fgets (r0, r1, r2);
0x000120b4 cmp r0, 0 |
| if (r0 != 0) {
0x000120b8 bne 0x12020 | goto label_29;
| }
0x000120bc ldr r3, [pc, 0x220] |
0x000120c0 ldr r3, [r3] | r3 = *(0x122e0);
0x000120c4 cmp r3, r6 |
| if (r3 != r6) {
0x000120c8 beq 0x120d4 |
0x000120cc mov r0, r6 | r0 = r6;
0x000120d0 bl 0x10d94 | fclose (r0);
| }
0x000120d4 ldr r7, [r7] | r7 = *(r7);
0x000120d8 cmp r7, 0 |
| if (r7 != 0) {
0x000120dc bne 0x11fc0 | goto label_30;
| }
| label_33:
0x000120e0 ldr r3, [sp, 0xc] | r3 = var_ch;
0x000120e4 ldr r2, [fp, -0x28] | r2 = var_20h;
0x000120e8 sub r3, r3, 1 | r3--;
0x000120ec cmp r3, r2 |
| if (r3 != r2) {
0x000120f0 ldreq r4, [r4, 0xd0] | r4 = *((r4 + 0xd0));
| }
| if (r3 == r2) {
0x000120f4 movne r4, 0 | r4 = 0;
| }
0x000120f8 clzeq r4, r4 | __asm ("clzeq r4, r4");
| if (r3 != r2) {
0x000120fc lsreq r4, r4, 5 | r4 >>= 5;
| }
| label_32:
0x00012100 ldr r3, [sp, 0x20] | r3 = var_20h;
0x00012104 ldr r2, [sp, 0xc] | r2 = var_ch;
0x00012108 cmp r3, r2 |
| if (r3 >= r2) {
0x0001210c bge 0x11c44 | goto label_31;
| }
0x00012110 ldr r1, [r8, 0x70] | r1 = *((r8 + 0x70));
0x00012114 ldr r0, [sp, 8] | r0 = format;
0x00012118 sub r1, r1, 2 | r1 -= 2;
0x0001211c mov r2, r4 | r2 = r4;
0x00012120 clz r1, r1 | r1 &= r1;
0x00012124 ldr r0, [r0, r3, lsl 2] | offset_7 = r3 << 2;
| r0 = *((r0 + offset_7));
0x00012128 lsr r1, r1, 5 | r1 >>= 5;
0x0001212c bl 0x13c98 | r0 = fcn_00013c98 (r0, r1);
0x00012130 cmp r0, 1 |
| if (r0 <= 1) {
0x00012134 bgt 0x12148 |
0x00012138 cmp r0, 0 |
0x0001213c cmpeq r5, 1 | __asm ("cmpeq r5, 1");
| if (r0 == 0) {
0x00012140 movne r0, r5 | r0 = r5;
| }
| if (r0 == 0) {
0x00012144 moveq r0, 0 | r0 = 0;
| goto label_95;
| }
| }
| label_95:
0x00012148 ldr r3, [sp, 0x20] | r3 = var_20h;
0x0001214c mov r5, r0 | r5 = r0;
0x00012150 add r3, r3, 1 | r3++;
0x00012154 str r3, [sp, 0x20] | var_20h = r3;
0x00012158 b 0x12100 | goto label_32;
| label_82:
0x0001215c mov r5, 1 | r5 = 1;
0x00012160 b 0x120e0 | goto label_33;
| label_83:
0x00012164 ldr r3, [r0] | r3 = *(r0);
0x00012168 str r3, [r4, 0x60] | *((r4 + 0x60)) = r3;
0x0001216c bl 0x10e9c | free (r0);
0x00012170 b 0x11ca0 | goto label_34;
| label_54:
0x00012174 ldrb r8, [r3, 1] | r8 = *((r3 + 1));
0x00012178 add r4, r3, 1 | r4 = r3 + 1;
0x0001217c cmp r8, 0 |
0x00012180 ldr r3, [r5] | r3 = *(r5);
| if (r8 == 0) {
0x00012184 beq 0x121b0 | goto label_96;
| }
0x00012188 sub r2, r3, 5 | r2 = r3 - 5;
0x0001218c cmp r2, 1 |
| if (r2 > 1) {
0x00012190 bhi 0x11770 | goto label_35;
| }
0x00012194 ldr r3, [pc, 0x18c] |
0x00012198 lsl r8, r8, 1 | r8 <<= 1;
0x0001219c ldr r3, [r3] | r3 = "pcregrep: Failed to open %s: %s\n";
0x000121a0 ldrh r3, [r3, r8] | r3 = *((r3 + r8));
0x000121a4 tst r3, 8 |
| if ((r3 & 8) == 0) {
0x000121a8 beq 0x11778 | goto label_36;
| }
| label_55:
0x000121ac mov r8, 0 | r8 = 0;
| label_96:
0x000121b0 mov r2, r8 | r2 = r8;
0x000121b4 b 0x11704 | goto label_10;
| label_47:
0x000121b8 cmp r3, 0 |
| if (r3 != 0) {
0x000121bc bne 0x114c4 | goto label_37;
| }
0x000121c0 ldr r3, [r4, 0x58] | r3 = *((r4 + 0x58));
0x000121c4 cmp r3, 0 |
| if (r3 != 0) {
0x000121c8 beq 0x121d4 |
| label_48:
0x000121cc mov r3, 1 | r3 = 1;
0x000121d0 str r3, [r4, 0x54] | *((r4 + 0x54)) = r3;
| }
0x000121d4 ldr r3, [r4, 0xa8] | r3 = *((r4 + 0xa8));
0x000121d8 cmp r3, 0 |
| if (r3 == 0) {
0x000121dc ldrne r5, [pc, 0x14c] | r5 = "--locale";
| }
| if (r3 == 0) {
0x000121e0 bne 0x121f4 |
0x000121e4 ldr r0, [pc, 0x148] | r0 = "--locale";
0x000121e8 bl 0x10cbc | getenv ("--locale");
0x000121ec ldr r5, [pc, 0x144] | r5 = "LC_ALL";
0x000121f0 str r0, [r4, 0xa8] | *((r4 + 0xa8)) = r0;
| }
0x000121f4 ldr r3, [r4, 0xa8] | r3 = *((r4 + 0xa8));
0x000121f8 cmp r3, 0 |
| if (r3 == 0) {
0x000121fc bne 0x12210 |
0x00012200 ldr r0, [pc, 0x134] | r0 = "LCC_ALL";
0x00012204 bl 0x10cbc | getenv ("LCC_ALL");
0x00012208 ldr r5, [pc, 0x12c] | r5 = "LCC_ALL";
0x0001220c str r0, [r4, 0xa8] | *((r4 + 0xa8)) = r0;
| }
0x00012210 ldr r1, [r4, 0xa8] | r1 = *((r4 + 0xa8));
0x00012214 cmp r1, 0 |
| if (r1 == 0) {
0x00012218 beq 0x1199c | goto label_38;
| }
0x0001221c mov r0, 0 | r0 = 0;
0x00012220 bl 0x10ddc | r0 = setlocale (r0, r1);
0x00012224 cmp r0, 0 |
| if (r0 != 0) {
0x00012228 bne 0x11994 | goto label_39;
| }
0x0001222c ldr r0, [pc, 0x30] |
0x00012230 ldr r2, [r4, 0xa8] | r2 = *((r4 + 0xa8));
0x00012234 ldr r1, [pc, 0x104] | r1 = "LC_CTYPE";
0x00012238 ldr r0, [r0] | r0 = *(0x12260);
0x0001223c mov r3, r5 | r3 = r5;
| label_89:
0x00012240 bl 0x10d34 | fprintf (r0, "LC_CTYPE", r2, r3)
0x00012244 b 0x1189c | goto label_14;
| }
[*] Function fprintf used 41 times pcregrep