[*] Binary protection state of xmlwf
Partial RELRO No Canary found NX disabled No PIE No RPATH No RUNPATH No Symbols
[*] Function strcat tear down of xmlwf
; 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/xmlwf @ 0x115f0 */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) main () | int32_t main (int32_t argc, char ** argv) {
| int32_t var_0h;
| int32_t var_4h;
| int32_t var_8h;
| int32_t var_ch;
| int32_t var_10h;
| int32_t var_14h;
| int32_t var_18h;
| char * s2;
| FILE * stream;
| int32_t var_28h;
| int32_t var_2ch;
| int32_t var_34h;
| r0 = argc;
| r1 = argv;
0x000115f0 push {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x000115f4 mov r7, 0 | r7 = 0;
0x000115f8 mov fp, 1 |
0x000115fc sub sp, sp, 0x34 |
0x00011600 mov sb, r1 | sb = r1;
0x00011604 mov r8, r7 | r8 = r7;
0x00011608 mov r4, r7 | r4 = r7;
0x0001160c mov r6, fp | r6 = fp;
0x00011610 str r0, [sp, 4] | var_4h = r0;
0x00011614 str r7, [sp, 0x24] | stream = r7;
0x00011618 str r7, [sp, 0x28] | var_28h = r7;
0x0001161c str r7, [sp, 0x2c] | var_2ch = r7;
0x00011620 str r7, [sp, 0x10] | var_10h = r7;
0x00011624 str r7, [sp, 0x14] | var_14h = r7;
0x00011628 str r7, [sp, 8] | var_8h = r7;
0x0001162c str r7, [sp] | *(sp) = r7;
0x00011630 str r7, [sp, 0x18] | var_18h = r7;
0x00011634 str r7, [sp, 0xc] | var_ch = r7;
| label_0:
0x00011638 ldr r3, [sp, 4] | r3 = var_4h;
0x0001163c cmp r6, r3 |
| if (r6 < r3) {
0x00011640 bge 0x1167c |
0x00011644 cmp r4, 0 |
0x00011648 lsl r1, r6, 2 | r1 = r6 << 2;
0x0001164c ldr r2, [sb, r6, lsl 2] | offset_0 = r6 << 2;
| r2 = *((sb + offset_0));
| if (r4 != 0) {
0x00011650 bne 0x1169c | goto label_8;
| }
0x00011654 ldrb r3, [r2] | r3 = *(r2);
0x00011658 cmp r3, 0x2d |
| if (r3 != 0x2d) {
0x0001165c bne 0x11c0c | goto label_9;
| }
0x00011660 ldrb r3, [r2, 1] | r3 = *((r2 + 1));
0x00011664 cmp r3, 0x2d |
| if (r3 != 0x2d) {
0x00011668 bne 0x11698 | goto label_10;
| }
0x0001166c ldrb r3, [r2, 2] | r3 = *((r2 + 2));
0x00011670 cmp r3, 0 |
| if (r3 != 0) {
0x00011674 bne 0x11698 | goto label_10;
| }
0x00011678 add r6, r6, 1 | r6++;
| }
0x0001167c ldr r3, [sp, 4] | r3 = var_4h;
0x00011680 cmp r6, r3 |
0x00011684 biceq fp, fp, 1 | __asm ("biceq fp, fp, 1");
| if (r6 != r3) {
0x00011688 subeq r6, r6, 1 | r6--;
| }
| if (r6 != r3) {
0x0001168c moveq r4, 1 | r4 = 1;
| }
| if (r6 == r3) {
0x00011690 movne r4, 0 | r4 = 0;
| }
0x00011694 b 0x11c0c | goto label_9;
| label_10:
0x00011698 mov r4, 1 | r4 = 1;
| label_8:
0x0001169c ldrb r3, [r2, r4] | r3 = *((r2 + r4));
0x000116a0 cmp r3, 0x6e |
| if (r3 == 0x6e) {
0x000116a4 beq 0x11830 | goto label_11;
| }
| if (r3 <= 0x6e) {
0x000116a8 bhi 0x1172c |
0x000116ac cmp r3, 0x64 |
| if (r3 == 0x64) {
0x000116b0 beq 0x1188c | goto label_12;
| }
| if (r3 <= 0x64) {
0x000116b4 bhi 0x116dc |
0x000116b8 cmp r3, 0x4e |
| if (r3 == 0x4e) {
0x000116bc beq 0x1187c | goto label_13;
| }
0x000116c0 cmp r3, 0x63 |
| if (r3 == 0x63) {
0x000116c4 beq 0x11860 | goto label_14;
| }
0x000116c8 cmp r3, 0 |
| if (r3 != 0) {
0x000116cc bne 0x11750 | goto label_1;
| }
0x000116d0 cmp r4, 1 |
| if (r4 != 1) {
0x000116d4 bne 0x118b8 | goto label_15;
| }
0x000116d8 b 0x11750 | goto label_1;
| }
0x000116dc cmp r3, 0x68 |
| if (r3 == 0x68) {
0x000116e0 beq 0x118c4 | goto label_16;
| }
0x000116e4 cmp r3, 0x6d |
0x000116e8 add r4, r4, 1 | r4++;
| if (r3 == 0x6d) {
0x000116ec beq 0x1186c | goto label_17;
| }
0x000116f0 cmp r3, 0x65 |
| if (r3 != 0x65) {
0x000116f4 bne 0x11750 | goto label_1;
| }
0x000116f8 add r3, r2, r4 | r3 = r2 + r4;
0x000116fc str r3, [sp, 0xc] | var_ch = r3;
0x00011700 ldrb r3, [r2, r4] | r3 = *((r2 + r4));
0x00011704 cmp r3, 0 |
| if (r3 != 0) {
0x00011708 bne 0x118b8 | goto label_15;
| }
0x0001170c ldr r3, [sp, 4] | r3 = var_4h;
0x00011710 add r6, r6, 1 | r6++;
0x00011714 cmp r3, r6 |
| if (r3 == r6) {
0x00011718 beq 0x11750 | goto label_1;
| }
0x0001171c add r1, sb, r1 | r1 = sb + r1;
0x00011720 ldr r3, [r1, 4] | r3 = *((r1 + 4));
0x00011724 str r3, [sp, 0xc] | var_ch = r3;
0x00011728 b 0x118b8 | goto label_15;
| }
0x0001172c cmp r3, 0x74 |
| if (r3 == 0x74) {
0x00011730 beq 0x11874 | goto label_18;
| }
| if (r3 > 0x74) {
0x00011734 bhi 0x11758 | goto label_19;
| }
0x00011738 cmp r3, 0x72 |
0x0001173c add r2, r4, 1 | r2 = r4 + 1;
| if (r3 == 0x72) {
0x00011740 beq 0x11814 | goto label_20;
| }
| if (r3 > 0x72) {
0x00011744 bhi 0x11820 | goto label_21;
| }
0x00011748 cmp r3, 0x70 |
| if (r3 == 0x70) {
0x0001174c beq 0x11840 | goto label_22;
| }
| do {
| label_1:
0x00011750 mov r1, 2 | r1 = 2;
0x00011754 b 0x118c8 | goto label_23;
| label_19:
0x00011758 cmp r3, 0x77 |
| if (r3 == 0x77) {
0x0001175c beq 0x11850 | goto label_24;
| }
0x00011760 cmp r3, 0x78 |
| if (r3 == 0x78) {
0x00011764 beq 0x11844 | goto label_25;
| }
0x00011768 cmp r3, 0x76 |
0x0001176c bne 0x11750 |
| } while (r3 != 0x76);
0x00011770 ldr r6, [sb] | r6 = *(sb);
0x00011774 bl 0x11480 | XML_GetFeatureList ();
0x00011778 mov r3, r6 | r3 = r6;
0x0001177c mov r4, r0 | r4 = r0;
| label_2:
0x00011780 ldrb r2, [r3], 1 | r2 = *(r3);
| r3++;
0x00011784 cmp r2, 0 |
| if (r2 != 0) {
0x00011788 bne 0x118d0 | goto label_26;
| }
0x0001178c ldr r5, [pc, 0x4b8] | r5 = *(0x11c48);
0x00011790 ldr r7, [r5] | r7 = *(0x11c48);
0x00011794 bl 0x11324 | XML_ExpatVersion ();
0x00011798 mov r2, r6 | r2 = r6;
0x0001179c ldr r1, [pc, 0x4ac] | r1 = stdout;
0x000117a0 mov r3, r0 | r3 = r0;
0x000117a4 mov r0, r7 | r0 = r7;
0x000117a8 bl 0x1145c | fprintf (r0, r1, r2, r3);
0x000117ac cmp r4, 0 |
| if (r4 != 0) {
0x000117b0 beq 0x11808 |
0x000117b4 ldr r3, [r4] | r3 = *(r4);
0x000117b8 cmp r3, 0 |
| if (r3 == 0) {
0x000117bc beq 0x11808 | goto label_5;
| }
0x000117c0 ldr r1, [r5] | r1 = *(r5);
0x000117c4 ldr r0, [r4, 4] | r0 = *((r4 + 4));
0x000117c8 bl 0x114c8 | fputs (r0, r1);
0x000117cc ldr r2, [r4, 8] | r2 = *((r4 + 8));
0x000117d0 cmp r2, 0 |
| if (r2 != 0) {
0x000117d4 beq 0x117e4 |
0x000117d8 ldr r1, [pc, 0x474] | r1 = "_s_using__s";
0x000117dc ldr r0, [r5] | r0 = *(r5);
0x000117e0 bl 0x1145c | fprintf (r0, "_s_using__s");
| }
0x000117e4 ldr r6, [pc, 0x46c] | r6 = "=%ld";
0x000117e8 ldr r7, [pc, 0x464] | r7 = "_s_using__s";
| label_3:
0x000117ec ldr r3, [r4, 0xc] | r3 = *((r4 + 0xc));
0x000117f0 ldr r0, [r5] | r0 = *(r5);
0x000117f4 cmp r3, 0 |
| if (r3 != 0) {
0x000117f8 bne 0x118dc | goto label_27;
| }
0x000117fc mov r1, r0 | r1 = r0;
0x00011800 mov r0, 0xa | r0 = 0xa;
0x00011804 bl 0x114a4 | fputc (r0, r1);
| }
| label_5:
0x00011808 mov r0, 0 | r0 = 0;
0x0001180c add sp, sp, 0x34 |
0x00011810 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_20:
0x00011814 bic fp, fp, 1 | fp = BIT_MASK (fp, 1);
0x00011818 mov r4, r2 | r4 = r2;
0x0001181c b 0x11638 | goto label_0;
| label_21:
0x00011820 mov r3, 1 | r3 = 1;
0x00011824 mov r4, r2 | r4 = r2;
0x00011828 str r3, [sp, 0x14] | var_14h = r3;
0x0001182c b 0x11638 | goto label_0;
| label_11:
0x00011830 mov r3, 1 | r3 = 1;
0x00011834 add r4, r4, 1 | r4++;
0x00011838 str r3, [sp, 8] | var_8h = r3;
0x0001183c b 0x11638 | goto label_0;
| label_22:
0x00011840 mov r7, 2 | r7 = 2;
| label_25:
0x00011844 orr fp, fp, 2 |
0x00011848 add r4, r4, 1 | r4++;
0x0001184c b 0x11638 | goto label_0;
| label_24:
0x00011850 mov r3, 1 | r3 = 1;
0x00011854 add r4, r4, 1 | r4++;
0x00011858 str r3, [sp, 0x18] | var_18h = r3;
0x0001185c b 0x11638 | goto label_0;
| label_14:
0x00011860 mov r2, 0 | r2 = 0;
0x00011864 add r4, r4, 1 | r4++;
0x00011868 str r2, [sp, 8] | var_8h = r2;
| do {
| label_17:
0x0001186c str r3, [sp] | *(sp) = r3;
0x00011870 b 0x11638 | goto label_0;
| label_18:
0x00011874 add r4, r4, 1 | r4++;
0x00011878 b 0x1186c |
| } while (1);
| label_13:
0x0001187c mov r3, 1 | r3 = 1;
0x00011880 add r4, r4, 1 | r4++;
0x00011884 str r3, [sp, 0x10] | var_10h = r3;
0x00011888 b 0x11638 | goto label_0;
| label_12:
0x0001188c add r4, r4, 1 | r4++;
0x00011890 ldrb r3, [r2, r4] | r3 = *((r2 + r4));
0x00011894 add r8, r2, r4 | r8 = r2 + r4;
0x00011898 cmp r3, 0 |
| if (r3 != 0) {
0x0001189c bne 0x118b8 | goto label_15;
| }
0x000118a0 ldr r3, [sp, 4] | r3 = var_4h;
0x000118a4 add r6, r6, 1 | r6++;
0x000118a8 cmp r3, r6 |
| if (r3 == r6) {
0x000118ac beq 0x11750 | goto label_1;
| }
0x000118b0 add r1, sb, r1 | r1 = sb + r1;
0x000118b4 ldr r8, [r1, 4] | r8 = *((r1 + 4));
| label_15:
0x000118b8 add r6, r6, 1 | r6++;
0x000118bc mov r4, 0 | r4 = 0;
0x000118c0 b 0x11638 | goto label_0;
| label_16:
0x000118c4 mov r1, 0 | r1 = 0;
| label_23:
0x000118c8 ldr r0, [sb] | r0 = *(sb);
0x000118cc bl 0x115c4 | fcn_000115c4 (r0, r1);
| label_26:
0x000118d0 cmp r2, 0x2f |
| if (r2 != 0x2f) {
0x000118d4 moveq r6, r3 | r6 = r3;
| }
0x000118d8 b 0x11780 | goto label_2;
| label_27:
0x000118dc ldr r2, [r4, 0x10] | r2 = *((r4 + 0x10));
0x000118e0 mov r1, r6 | r1 = r6;
0x000118e4 bl 0x1145c | fprintf (r0, r1, r2);
0x000118e8 ldr r2, [r4, 0x14] | r2 = *((r4 + 0x14));
0x000118ec cmp r2, 0 |
| if (r2 != 0) {
0x000118f0 beq 0x11900 |
0x000118f4 mov r1, r7 | r1 = r7;
0x000118f8 ldr r0, [r5] | r0 = *(r5);
0x000118fc bl 0x1145c | fprintf (r0, r1);
| }
0x00011900 add r4, r4, 0xc | r4 += 0xc;
0x00011904 b 0x117ec | goto label_3;
| label_6:
0x00011908 ldr r0, [sp, 0xc] | r0 = var_ch;
0x0001190c bl 0x113a8 | XML_ParserCreate ();
0x00011910 b 0x11c30 | goto label_28;
| label_7:
0x00011914 ldr r3, [sp, 0x14] | r3 = var_14h;
0x00011918 cmp r3, 0 |
| if (r3 != 0) {
0x0001191c beq 0x11928 |
0x00011920 ldr r1, [pc, 0x334] | r1 = "___s";
0x00011924 bl 0x113e4 | XML_SetNotStandaloneHandler ();
| }
0x00011928 mov r1, r7 | r1 = r7;
0x0001192c mov r0, r5 | r0 = r5;
0x00011930 bl 0x114bc | XML_SetParamEntityParsing ();
0x00011934 ldr r3, [sp] | r3 = *(sp);
0x00011938 cmp r3, 0x74 |
| if (r3 != 0x74) {
0x0001193c bne 0x11974 | goto label_29;
| }
0x00011940 ldr r2, [pc, 0x318] | r2 = *(0x11c5c);
0x00011944 ldr r1, [pc, 0x318] | r1 = *(0x11c60);
0x00011948 mov r0, r5 | r0 = r5;
0x0001194c bl 0x114f8 | XML_SetElementHandler ();
0x00011950 ldr r1, [pc, 0x310] | r1 = *(0x11c64);
0x00011954 mov r0, r5 | r0 = r5;
0x00011958 bl 0x112a0 | XML_SetCharacterDataHandler ();
0x0001195c ldr r1, [pc, 0x308] | r1 = *(0x11c68);
0x00011960 mov r0, r5 | r0 = r5;
0x00011964 bl 0x1130c | XML_SetProcessingInstructionHandler ();
0x00011968 mov r8, 0 | r8 = 0;
| do {
0x0001196c mov sl, r8 | sl = r8;
0x00011970 b 0x11ad8 | goto label_4;
| label_29:
0x00011974 cmp r8, 0 |
0x00011978 beq 0x1196c |
| } while (r8 == 0);
0x0001197c cmp r4, 0 |
| if (r4 == 0) {
0x00011980 ldrne r3, [pc, 0x2e8] | r3 = "STDIN";
| }
| if (r4 == 0) {
0x00011984 bne 0x119a8 |
0x00011988 ldr r3, [sb, r6, lsl 2] | offset_1 = r6 << 2;
| r3 = *((sb + offset_1));
0x0001198c mov r1, 0x2f | r1 = 0x2f;
0x00011990 mov r0, r3 | r0 = r3;
0x00011994 str r3, [sp, 0x1c] | s2 = r3;
0x00011998 bl 0x11378 | strrchr (r0, r1);
0x0001199c ldr r3, [sp, 0x1c] | r3 = s2;
0x000119a0 cmp r0, 0 |
| if (r0 != 0) {
0x000119a4 addne r3, r0, 1 | r3 = r0 + 1;
| goto label_30;
| }
| }
| label_30:
0x000119a8 mov r0, r8 | r0 = r8;
0x000119ac str r3, [sp, 0x1c] | s2 = r3;
0x000119b0 bl 0x11588 | strlen (r0);
0x000119b4 ldr r3, [sp, 0x1c] | r3 = s2;
0x000119b8 mov sl, r0 | sl = r0;
0x000119bc mov r0, r3 | r0 = r3;
0x000119c0 bl 0x11588 | r0 = strlen (r0);
0x000119c4 add r0, sl, r0 | r0 = sl + r0;
0x000119c8 add r0, r0, 2 | r0 += 2;
0x000119cc bl 0x11330 | malloc (r0);
0x000119d0 mov r1, r8 | r1 = r8;
0x000119d4 mov sl, r0 | sl = r0;
0x000119d8 bl 0x1136c | strcpy (r0, r1);
0x000119dc ldr r1, [pc, 0x290] | r1 = "STDIN";
0x000119e0 mov r0, sl | r0 = sl;
0x000119e4 bl 0x11348 | strcat (r0, "STDIN")
0x000119e8 ldr r3, [sp, 0x1c] | r3 = s2;
0x000119ec mov r0, sl | r0 = sl;
0x000119f0 mov r1, r3 | r1 = r3;
0x000119f4 bl 0x11348 | strcat (r0, r1)
0x000119f8 ldr r1, [pc, 0x278] | r1 = *(0x11c74);
0x000119fc mov r0, sl | r0 = sl;
0x00011a00 bl 0x11420 | r0 = fopen64 ();
0x00011a04 cmp r0, 0 |
0x00011a08 str r0, [sp, 0x24] | stream = r0;
| if (r0 != 0) {
0x00011a0c moveq r0, sl | r0 = sl;
| }
| if (r0 == 0) {
0x00011a10 beq 0x11c40 | goto label_31;
| }
0x00011a14 mov r2, 0 | r2 = 0;
0x00011a18 mov r3, 0x4000 | r3 = 0x4000;
0x00011a1c mov r1, r2 | r1 = r2;
0x00011a20 bl 0x112ac | setvbuf (r0, r1, r2, r3);
0x00011a24 add r1, sp, 0x24 | r1 += stream;
0x00011a28 mov r0, r5 | r0 = r5;
0x00011a2c bl 0x11438 | XML_SetUserData ();
0x00011a30 ldr r3, [sp] | r3 = *(sp);
0x00011a34 cmp r3, 0x63 |
| if (r3 == 0x63) {
0x00011a38 beq 0x11b58 | goto label_32;
| }
0x00011a3c cmp r3, 0x6d |
| if (r3 != 0x6d) {
0x00011a40 bne 0x11b98 | goto label_33;
| }
0x00011a44 mov r0, r5 | r0 = r5;
0x00011a48 bl 0x11390 | XML_UseParserAsHandlerArg ();
0x00011a4c ldr r2, [pc, 0x228] | r2 = "wb";
0x00011a50 ldr r1, [pc, 0x228] | r1 = *(0x11c7c);
0x00011a54 mov r0, r5 | r0 = r5;
0x00011a58 bl 0x114f8 | XML_SetElementHandler ();
0x00011a5c ldr r1, [pc, 0x220] | r1 = *(0x11c80);
0x00011a60 mov r0, r5 | r0 = r5;
0x00011a64 bl 0x1130c | XML_SetProcessingInstructionHandler ();
0x00011a68 ldr r1, [pc, 0x218] | r1 = *(0x11c84);
0x00011a6c mov r0, r5 | r0 = r5;
0x00011a70 bl 0x1133c | XML_SetCommentHandler ();
0x00011a74 ldr r2, [pc, 0x210] | r2 = *(0x11c88);
0x00011a78 ldr r1, [pc, 0x210] | r1 = *(0x11c8c);
0x00011a7c mov r0, r5 | r0 = r5;
0x00011a80 bl 0x11498 | XML_SetCdataSectionHandler ();
0x00011a84 ldr r1, [pc, 0x208] | r1 = *(0x11c90);
0x00011a88 mov r0, r5 | r0 = r5;
0x00011a8c bl 0x112a0 | XML_SetCharacterDataHandler ();
0x00011a90 ldr r2, [pc, 0x200] | r2 = *(0x11c94);
0x00011a94 ldr r1, [pc, 0x200] | r1 = *(0x11c98);
0x00011a98 mov r0, r5 | r0 = r5;
0x00011a9c bl 0x115ac | XML_SetDoctypeDeclHandler ();
0x00011aa0 ldr r1, [pc, 0x1f8] | r1 = *(0x11c9c);
0x00011aa4 mov r0, r5 | r0 = r5;
0x00011aa8 bl 0x113d8 | XML_SetEntityDeclHandler ();
0x00011aac ldr r1, [pc, 0x1f0] | r1 = *(0x11ca0);
0x00011ab0 mov r0, r5 | r0 = r5;
0x00011ab4 bl 0x1157c | XML_SetNotationDeclHandler ();
0x00011ab8 ldr r1, [pc, 0x1e8] | r1 = *(0x11ca4);
0x00011abc mov r0, r5 | r0 = r5;
0x00011ac0 ldr r2, [pc, 0x1e4] | r2 = *(0x11ca8);
0x00011ac4 bl 0x11504 | XML_SetNamespaceDeclHandler ();
0x00011ac8 ldr r3, [r5] | r3 = *(r5);
0x00011acc ldr r0, [pc, 0x1dc] | r0 = *(0x11cac);
0x00011ad0 ldr r1, [r3] | r1 = *(r3);
0x00011ad4 bl 0x114c8 | fputs (r0, r1);
| do {
| label_4:
0x00011ad8 ldr r3, [sp, 0x18] | r3 = var_18h;
0x00011adc cmp r3, 0 |
| if (r3 != 0) {
0x00011ae0 beq 0x11af4 |
0x00011ae4 mov r2, 0 | r2 = 0;
0x00011ae8 ldr r1, [pc, 0x1c4] | r1 = "<document>\n";
0x00011aec mov r0, r5 | r0 = r5;
0x00011af0 bl 0x11510 | XML_SetUnknownEncodingHandler ();
| }
0x00011af4 cmp r4, 0 |
| if (r4 != 0) {
0x00011af8 ldreq r1, [sb, r6, lsl 2] | offset_2 = r6 << 2;
| r1 = *((sb + offset_2));
| }
| if (r4 == 0) {
0x00011afc movne r1, 0 | r1 = 0;
| }
0x00011b00 mov r2, fp | r2 = fp;
0x00011b04 mov r0, r5 | r0 = r5;
0x00011b08 bl 0x13b8c | fcn_00013b8c (r0, r1);
0x00011b0c cmp r8, 0 |
0x00011b10 str r0, [sp, 0x1c] | s2 = r0;
| if (r8 == 0) {
0x00011b14 beq 0x11c00 | goto label_34;
| }
0x00011b18 ldr r3, [sp] | r3 = *(sp);
0x00011b1c cmp r3, 0x6d |
| if (r3 == 0x6d) {
0x00011b20 bne 0x11b34 |
0x00011b24 ldr r3, [r5] | r3 = *(r5);
0x00011b28 ldr r0, [pc, 0x188] | r0 = *(0x11cb4);
0x00011b2c ldr r1, [r3] | r1 = *(r3);
0x00011b30 bl 0x114c8 | fputs (r0, r1);
| }
0x00011b34 ldr r0, [sp, 0x24] | r0 = stream;
0x00011b38 bl 0x1139c | fclose (r0);
0x00011b3c ldr r3, [sp, 0x1c] | r3 = s2;
0x00011b40 mov r0, sl | r0 = sl;
0x00011b44 cmp r3, 0 |
| if (r3 != 0) {
0x00011b48 bne 0x11bfc | goto label_35;
| }
0x00011b4c bl 0x112d0 | remove (r0);
0x00011b50 mov r0, 2 | r0 = 2;
0x00011b54 b 0x11c48 | goto label_36;
| label_32:
0x00011b58 mov r0, r5 | r0 = r5;
0x00011b5c bl 0x11390 | XML_UseParserAsHandlerArg ();
0x00011b60 mov r0, r5 | r0 = r5;
0x00011b64 ldr r1, [pc, 0x150] | r1 = "</document>\n";
0x00011b68 bl 0x113fc | XML_SetDefaultHandler ();
0x00011b6c ldr r2, [pc, 0x14c] | r2 = *(0x11cbc);
0x00011b70 mov r0, r5 | r0 = r5;
0x00011b74 ldr r1, [pc, 0x148] | r1 = *(0x11cc0);
0x00011b78 bl 0x114f8 | XML_SetElementHandler ();
0x00011b7c mov r0, r5 | r0 = r5;
0x00011b80 ldr r1, [pc, 0x140] | r1 = *(0x11cc4);
0x00011b84 bl 0x112a0 | XML_SetCharacterDataHandler ();
0x00011b88 ldr r1, [pc, 0x13c] | r1 = *(0x11cc8);
0x00011b8c mov r0, r5 | r0 = r5;
0x00011b90 bl 0x1130c | XML_SetProcessingInstructionHandler ();
0x00011b94 b 0x11ad8 |
| } while (1);
| label_33:
0x00011b98 ldr r3, [sp, 8] | r3 = var_8h;
0x00011b9c mov r0, r5 | r0 = r5;
0x00011ba0 cmp r3, 0 |
| if (r3 == 0) {
0x00011ba4 ldrne r1, [pc, 0x124] | r1 = *((pc + 0x124));
| }
| if (r3 != 0) {
0x00011ba8 ldreq r1, [pc, 0x124] | r1 = *((pc + 0x124));
| }
| if (r3 == 0) {
0x00011bac ldrne r2, [pc, 0x124] | r2 = *((pc + 0x124));
| }
| if (r3 != 0) {
0x00011bb0 ldreq r2, [pc, 0x124] | r2 = *((pc + 0x124));
| }
0x00011bb4 bl 0x114f8 | XML_SetElementHandler ();
0x00011bb8 ldr r1, [pc, 0x120] | r1 = *(0x11cdc);
0x00011bbc mov r0, r5 | r0 = r5;
0x00011bc0 bl 0x112a0 | XML_SetCharacterDataHandler ();
0x00011bc4 ldr r1, [pc, 0x118] | r1 = *(0x11ce0);
0x00011bc8 mov r0, r5 | r0 = r5;
0x00011bcc bl 0x1130c | XML_SetProcessingInstructionHandler ();
0x00011bd0 ldr r3, [sp, 0x10] | r3 = var_10h;
0x00011bd4 cmp r3, 0 |
| if (r3 == 0) {
0x00011bd8 beq 0x11ad8 | goto label_4;
| }
0x00011bdc mov r0, r5 | r0 = r5;
0x00011be0 ldr r2, [pc, 0x100] | r2 = *(0x11ce4);
0x00011be4 ldr r1, [pc, 0x100] | r1 = *(0x11ce8);
0x00011be8 bl 0x115ac | XML_SetDoctypeDeclHandler ();
0x00011bec ldr r1, [pc, 0xfc] | r1 = *(0x11cec);
0x00011bf0 mov r0, r5 | r0 = r5;
0x00011bf4 bl 0x1157c | XML_SetNotationDeclHandler ();
0x00011bf8 b 0x11ad8 | goto label_4;
| label_35:
0x00011bfc bl 0x114ec | free (r0);
| label_34:
0x00011c00 mov r0, r5 | r0 = r5;
0x00011c04 bl 0x115b8 | XML_ParserFree ();
0x00011c08 add r6, r6, 1 | r6++;
| label_9:
0x00011c0c ldr r3, [sp, 4] | r3 = var_4h;
0x00011c10 cmp r6, r3 |
| if (r6 >= r3) {
0x00011c14 bge 0x11808 | goto label_5;
| }
0x00011c18 ldr r3, [sp, 8] | r3 = var_8h;
0x00011c1c cmp r3, 0 |
| if (r3 == 0) {
0x00011c20 beq 0x11908 | goto label_6;
| }
0x00011c24 mov r1, 1 | r1 = 1;
0x00011c28 ldr r0, [sp, 0xc] | r0 = var_ch;
0x00011c2c bl 0x115a0 | r0 = XML_ParserCreateNS ();
| label_28:
0x00011c30 cmp r0, 0 |
0x00011c34 mov r5, r0 | r5 = r0;
| if (r0 != 0) {
0x00011c38 bne 0x11914 | goto label_7;
| }
0x00011c3c ldr r0, [pc, 0xb0] | r0 = *(0x11cf0);
| label_31:
0x00011c40 bl 0x11408 | perror (r0);
0x00011c44 mov r0, 1 | r0 = 1;
| label_36:
0x00011c48 bl 0x11444 | exit (r0);
| if (r0 != 0) {
0x00011c4c andeq r5, r2, r4, lsr 2 | r5 = r2 & (r4 >> 2);
| }
0x00011c50 strheq r4, [r1], -r8 | __asm ("strheq r4, [r1], -r8");
| if (r0 != 0) {
0x00011c54 andeq r4, r1, r5, asr 1 | r4 = r1 & (r5 >> 1);
| }
| if (r0 != 0) {
0x00011c58 andeq r4, r1, sl, asr 1 | r4 = r1 & (sl >> 1);
| }
| if (r0 != 0) {
0x00011c5c andeq r1, r1, r0, lsl 29 | r1 &= (r0 << 29);
| }
| if (r0 != 0) {
0x00011c60 andeq r1, r1, ip, ror lr | r1 &= (ip >>> lr);
| }
| if (r0 != 0) {
0x00011c64 andeq r1, r1, r8, ror lr | r1 &= (r8 >>> lr);
| }
| if (r0 != 0) {
0x00011c68 andeq r1, r1, r4, ror lr | r1 &= (r4 >>> lr);
| }
0x00011c6c ldrdeq r3, r4, [r1], -ip | __asm ("ldrdeq r3, r4, [r1], -ip");
0x00011c70 strheq r4, [r1], -r2 | __asm ("strheq r4, [r1], -r2");
| if (r0 != 0) {
0x00011c74 andeq r4, r1, ip, ror 1 | r4 = r1 & (ip >>> 1);
| }
| if (r0 != 0) {
0x00011c78 andeq r4, r1, lr, ror 1 | r4 = r1 & (lr >>> 1);
| }
| if (r0 != 0) {
0x00011c7c andeq r3, r1, r8, ror 5 | r3 = r1 & (r8 >>> 5);
| }
| if (r0 != 0) {
0x00011c80 andeq r3, r1, r8, lsr 6 | r3 = r1 & (r8 >> 6);
| }
| if (r0 != 0) {
0x00011c84 andeq r3, r1, r0, asr 4 | r3 = r1 & (r0 >> 4);
| }
| if (r0 != 0) {
0x00011c88 muleq r1, ip, r1 | r1 = ip * r1;
| }
| if (r0 != 0) {
0x00011c8c andeq r3, r1, r4, lsr 2 | r3 = r1 & (r4 >> 2);
| }
| if (r0 != 0) {
0x00011c90 andeq r3, r1, r0, ror 2 | r3 = r1 & (r0 >>> 2);
| }
| if (r0 != 0) {
0x00011c94 andeq r3, r1, r4, lsl 1 | r3 = r1 & (r4 << 1);
| }
| if (r0 != 0) {
0x00011c98 andeq r3, r1, r8 | r3 = r1 & r8;
| }
| if (r0 != 0) {
0x00011c9c andeq r3, r1, r4, asr 32 | r3 = r1 & (r4 >> 32);
| }
| if (r0 != 0) {
0x00011ca0 andeq r2, r1, r4, lsl 28 | r2 = r1 & (r4 << 28);
| }
| if (r0 != 0) {
0x00011ca4 andeq r2, r1, r4, lsr 26 | r2 = r1 & (r4 >> 26);
| }
| if (r0 != 0) {
0x00011ca8 andeq r2, r1, ip, asr 12 | r2 = r1 & (ip >> 12);
| }
| if (r0 != 0) {
0x00011cac andeq r2, r1, r0, lsr 12 | r2 = r1 & (r0 >> 12);
| }
0x00011cb0 strdeq r4, r5, [r1], -r1 | __asm ("strdeq r4, r5, [r1], -r1");
| if (r0 != 0) {
0x00011cb4 andeq r1, r1, r8, lsl 29 | r1 &= (r8 << 29);
| }
0x00011cb8 strdeq r4, r5, [r1], -sp | __asm ("strdeq r4, r5, [r1], -sp");
| if (r0 != 0) {
0x00011cbc muleq r1, r4, r4 | r1 = r4 * r4;
| }
| if (r0 != 0) {
0x00011cc0 muleq r1, ip, ip | r1 = ip * ip;
| }
| if (r0 != 0) {
0x00011cc4 andeq r2, r1, r0, lsr 25 | r2 = r1 & (r0 >> 25);
| }
| if (r0 != 0) {
0x00011cc8 muleq r1, r8, ip | r1 = r8 * ip;
| }
| if (r0 != 0) {
0x00011ccc andeq r3, r1, r0, ror 15 | r3 = r1 & (r0 >>> 15);
| }
| if (r0 != 0) {
0x00011cd0 andeq r2, r1, r8, ror 20 | r2 = r1 & (r8 >>> 20);
| }
0x00011cd4 strdeq r2, r3, [r1], -ip | __asm ("strdeq r2, r3, [r1], -ip");
| if (r0 != 0) {
0x00011cd8 andeq r2, r1, ip, ror 6 | r2 = r1 & (ip >>> 6);
| }
| if (r0 != 0) {
0x00011cdc andeq r2, r1, ip, ror 4 | r2 = r1 & (ip >>> 4);
| }
| if (r0 != 0) {
0x00011ce0 andeq r2, r1, r8, lsl 10 | r2 = r1 & (r8 << 10);
| }
| if (r0 != 0) {
0x00011ce4 andeq r2, r1, r4, asr 1 | r2 = r1 & (r4 >> 1);
| }
| if (r0 != 0) {
0x00011ce8 andeq r3, r1, r8, ror r4 | r3 = r1 & (r8 >>> r4);
| }
| if (r0 != 0) {
0x00011cec andeq r2, r1, ip, lsr 1 | r2 = r1 & (ip >> 1);
| }
0x00011cf0 strheq r1, [r1], -r4 | __asm ("strheq r1, [r1], -r4");
| /* 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. */
0x00011cf4 andeq r4, r1, pc, asr 1 | return r4 = r1 & (pc >> 1);
| }
[*] Function strcat used 3 times xmlwf