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