[*] Binary protection state of libxml2.so.2.9.13

  
  	Full RELRO     Canary found      NX enabled   DSO          No RPATH     No RUNPATH   No Symbols


[*] Function printf tear down of libxml2.so.2.9.13

    ; assembly                               | /* r2dec pseudo code output */
                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libxml2.so.2.9.13 @ 0x4590c */
                                             | #include <stdint.h>
                                             |  
    ; (fcn) fcn.0004590c ()                  | void fcn_0004590c (int16_t arg1, int16_t arg2) {
                                             |     int16_t var_0h;
                                             |     int32_t var_4h;
                                             |     int32_t var_4h_2;
                                             |     int16_t var_14h;
                                             |     int16_t var_1380h;
                                             |     int32_t var_0h_2;
                                             |     int16_t var_13a0h;
                                             |     r0 = arg1;
                                             |     r1 = arg2;
    0x0004590c ldr r2, [pc, 0xf0]            |     
    0x0004590e ldr r3, [pc, 0xf4]            |     r3 = *(0x45a06);
    0x00045910 push {r4, r5, r6, r7, lr}     |     
    0x00045912 sub.w sp, sp, 0x13a0          |     
    0x00045916 add r2, pc                    |     r2 = 0x8b31a;
    0x00045918 ldr r6, [r1, 0x34]            |     r6 = *((r1 + 0x34));
    0x0004591a sub sp, 4                     |     
    0x0004591c mov r7, r1                    |     r7 = r1;
    0x0004591e ldr r3, [r2, r3]              |     
    0x00045920 add.w r1, sp, 0x1380          |     r1 += var_1380h;
    0x00045924 adds r1, 0x1c                 |     r1 += 0x1c;
    0x00045926 mov r5, r0                    |     r5 = r0;
    0x00045928 ldr r3, [r3]                  |     r3 = *(0x8b31a);
    0x0004592a str r3, [r1]                  |     *(r1) = r3;
    0x0004592c mov.w r3, 0                   |     r3 = 0;
                                             |     if (r6 == 0) {
    0x00045930 cbz r6, 0x45966               |         goto label_1;
                                             |     }
    0x00045932 mov r0, r6                    |     r0 = r6;
    0x00045934 bl 0x72490                    |     r0 = xmlRegexpIsDeterminist ();
    0x00045938 mov r4, r0                    |     r4 = r0;
                                             |     if (r0 == 0) {
    0x0004593a cbz r0, 0x45962               |         goto label_2;
                                             |     }
    0x0004593c movs r4, 1                    |     r4 = 1;
                                             |     do {
                                             | label_0:
    0x0004593e ldr r2, [pc, 0xc8]            |         
    0x00045940 add.w r1, sp, 0x1380          |         r1 += var_1380h;
    0x00045944 ldr r3, [pc, 0xbc]            |         r3 = *(0x45a04);
    0x00045946 adds r1, 0x1c                 |         r1 += 0x1c;
    0x00045948 add r2, pc                    |         r2 = 0x8b356;
    0x0004594a ldr r3, [r2, r3]              |         r3 = *(0x8b356);
    0x0004594c ldr r2, [r3]                  |         r2 = *(0x8b356);
    0x0004594e ldr r3, [r1]                  |         r3 = *(r1);
    0x00045950 eors r2, r3                   |         r2 ^= r3;
    0x00045952 mov.w r3, 0                   |         r3 = 0;
                                             |         if (r2 != r3) {
    0x00045956 bne 0x459fc                   |             goto label_3;
                                             |         }
    0x00045958 mov r0, r4                    |         r0 = r4;
    0x0004595a add.w sp, sp, 0x13a0          |         
    0x0004595e add sp, 4                     |         
    0x00045960 pop {r4, r5, r6, r7, pc}      |         
                                             | label_2:
    0x00045962 str r0, [r5, 0x24]            |         *((r5 + 0x24)) = r0;
    0x00045964 b 0x4593e                     |         
                                             |     } while (1);
                                             | label_1:
    0x00045966 bl 0x72414                    |     r0 = xmlNewAutomata ();
    0x0004596a mov r4, r0                    |     r4 = r0;
    0x0004596c str r0, [r5, 0x38]            |     *((r5 + 0x38)) = r0;
    0x0004596e cmp r0, 0                     |     
                                             |     if (r0 != 0) {
    0x00045970 beq 0x459e4                   |         
    0x00045972 bl 0x72b7c                    |         xmlAutomataGetInitState ();
    0x00045976 ldr r2, [r7, 8]               |         r2 = *((r7 + 8));
    0x00045978 mov r1, r5                    |         r1 = r5;
    0x0004597a str r0, [r5, 0x3c]            |         *((r5 + 0x3c)) = r0;
    0x0004597c ldr r0, [r7, 0x28]            |         r0 = *((r7 + 0x28));
    0x0004597e bl 0x4439c                    |         fcn_0004439c (r0, r1, r2);
    0x00045982 ldrd r0, r1, [r5, 0x38]       |         __asm ("ldrd r0, r1, [r5, 0x38]");
    0x00045986 bl 0x72b84                    |         xmlAutomataSetFinalState ();
    0x0004598a ldr r0, [r5, 0x38]            |         r0 = *((r5 + 0x38));
    0x0004598c bl 0x737a0                    |         xmlAutomataCompile ();
    0x00045990 str r0, [r7, 0x34]            |         *((r7 + 0x34)) = r0;
    0x00045992 bl 0x72490                    |         r0 = xmlRegexpIsDeterminist ();
    0x00045996 cmp r0, 1                     |         
    0x00045998 mov r4, r0                    |         r4 = r0;
                                             |         if (r0 != 1) {
    0x0004599a beq 0x459d8                   |             
    0x0004599c add r4, sp, 0x14              |             r4 += var_14h;
    0x0004599e ldr r2, [r7, 0x28]            |             r2 = *((r7 + 0x28));
    0x000459a0 mov r0, r4                    |             r0 = r4;
    0x000459a2 movs r3, 1                    |             r3 = 1;
    0x000459a4 movw r1, 0x1388               |             r1 = 0x1388;
    0x000459a8 strb.w r6, [sp, 0x14]         |             var_14h = r6;
    0x000459ac bl 0x456c8                    |             xmlSnprintfElementContent ()
    0x000459b0 ldr r3, [r7, 8]               |             r3 = *((r7 + 8));
    0x000459b2 mov r1, r7                    |             r1 = r7;
    0x000459b4 movw r2, 0x1f9                |             r2 = 0x1f9;
    0x000459b8 mov r0, r5                    |             r0 = r5;
    0x000459ba strd r4, r6, [sp, 4]          |             __asm ("strd r4, r6, [var_4h]");
    0x000459be mov r4, r6                    |             r4 = r6;
    0x000459c0 str r3, [sp]                  |             *(sp) = r3;
    0x000459c2 ldr r3, [pc, 0x48]            |             
    0x000459c4 add r3, pc                    |             r3 = 0x8b3d6;
    0x000459c6 bl 0x43800                    |             fcn_00043800 (r0, r1, r2, r3, r4, r5);
    0x000459ca ldr r0, [r5, 0x38]            |             r0 = *((r5 + 0x38));
    0x000459cc str r6, [r5, 0x24]            |             *((r5 + 0x24)) = r6;
    0x000459ce str r6, [r5, 0x3c]            |             *((r5 + 0x3c)) = r6;
    0x000459d0 bl 0x72b68                    |             xmlFreeAutomata ();
    0x000459d4 str r6, [r5, 0x38]            |             *((r5 + 0x38)) = r6;
    0x000459d6 b 0x4593e                     |             goto label_0;
                                             |         }
    0x000459d8 ldr r0, [r5, 0x38]            |         r0 = *((r5 + 0x38));
    0x000459da str r6, [r5, 0x3c]            |         *((r5 + 0x3c)) = r6;
    0x000459dc bl 0x72b68                    |         xmlFreeAutomata ();
    0x000459e0 str r6, [r5, 0x38]            |         *((r5 + 0x38)) = r6;
    0x000459e2 b 0x4593e                     |         goto label_0;
                                             |     }
    0x000459e4 ldr r2, [r7, 8]               |     r2 = *((r7 + 8));
    0x000459e6 mov r1, r7                    |     r1 = r7;
    0x000459e8 ldr r3, [pc, 0x24]            |     
    0x000459ea mov r0, r5                    |     r0 = r5;
    0x000459ec strd r4, r4, [sp, 4]          |     __asm ("strd r4, r4, [var_4h]");
    0x000459f0 str r2, [sp]                  |     *(sp) = r2;
    0x000459f2 movs r2, 1                    |     r2 = 1;
    0x000459f4 add r3, pc                    |     r3 = 0x8b408;
    0x000459f6 bl 0x43800                    |     fcn_00043800 (r0, r1, r2, r3, r4, r5);
    0x000459fa b 0x4593e                     |     goto label_0;
                                             | label_3:
    0x000459fc blx 0x1bb70                   |     fputc (r0, r1);
    0x00045a00 b 0x45f40                     |     return void (*0x45f40)() ();
                                             | }
    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libxml2.so.2.9.13 @ 0x45a4c */
                                                                 | #include <stdint.h>
                                                                 |  
                                                                 | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                                 |  
    ; (fcn) fcn.00045a4c ()                                      | void fcn_00045a4c (int16_t arg_2ch, int16_t arg_13a0h, int16_t arg_13c0h, int16_t arg_2700h, uint32_t arg1, int16_t arg2, uint32_t arg3, uint32_t arg4) {
                                                                 |     int16_t var_0h;
                                                                 |     int16_t var_4h;
                                                                 |     int16_t var_8h;
                                                                 |     int16_t var_14h;
                                                                 |     int16_t var_18h;
                                                                 |     uint32_t var_1ch;
                                                                 |     int16_t var_20h;
                                                                 |     int16_t var_24h;
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
                                                                 |     r2 = arg3;
                                                                 |     r3 = arg4;
    0x00045a4c push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}       |     
    0x00045a50 mov r6, r1                                        |     r6 = r1;
    0x00045a52 ldr r4, [pc, 0x3bc]                               |     
    0x00045a54 sub.w sp, sp, 0x2740                              |     
    0x00045a58 sub sp, 4                                         |     
    0x00045a5a cmp r0, 0                                         |     
    0x00045a5c it ne                                             |     
                                                                 |     if (r0 != 0) {
    0x00045a5e cmpne r3, 0                                       |         __asm ("cmpne r3, 0");
                                                                 |     }
    0x00045a60 ldr r1, [pc, 0x3b0]                               |     r1 = *(0x45e14);
    0x00045a62 add.w r5, sp, 0x2700                              |     r5 += arg_2700h;
    0x00045a66 add r4, pc                                        |     r4 = 0x8b87c;
    0x00045a68 add.w r5, r5, 0x3c                                |     r5 += 0x3c;
    0x00045a6c ldr r1, [r4, r1]                                  |     
    0x00045a6e ldr r1, [r1]                                      |     r1 = *(0x8b87c);
    0x00045a70 str r1, [r5]                                      |     *(r5) = r1;
    0x00045a72 mov.w r1, 0                                       |     r1 = 0;
    0x00045a76 str r3, [sp, 0x1c]                                |     var_1ch = r3;
    0x00045a78 ldr r3, [pc, 0x39c]                               |     
    0x00045a7a ite eq                                            |     
                                                                 |     if (r0 != 0) {
    0x00045a7c moveq r1, 1                                       |         r1 = 1;
                                                                 |     }
                                                                 |     if (r0 == 0) {
    0x00045a7e movne r1, 0                                       |         r1 = 0;
                                                                 |     }
    0x00045a80 cmp r2, 0                                         |     
    0x00045a82 it eq                                             |     
                                                                 |     if (r2 != 0) {
    0x00045a84 orreq r1, r1, 1                                   |         r1 |= 1;
                                                                 |     }
    0x00045a88 add r3, pc                                        |     r3 = 0x8b8a4;
    0x00045a8a str r3, [sp, 0x14]                                |     var_14h = r3;
    0x00045a8c cmp r1, 0                                         |     
                                                                 |     if (r1 != 0) {
    0x00045a8e bne.w 0x45d7a                                     |         goto label_10;
                                                                 |     }
    0x00045a92 ldr r3, [r2, 0x34]                                |     r3 = *((r2 + 0x34));
    0x00045a94 mov r5, r2                                        |     r5 = r2;
    0x00045a96 ldr.w fp, [r2, 0x28]                              |     fp = *((r2 + 0x28));
    0x00045a9a mov r4, r0                                        |     r4 = r0;
    0x00045a9c ldr r2, [r2, 8]                                   |     r2 = *((r2 + 8));
    0x00045a9e mov.w r8, 1                                       |     r8 = 1;
    0x00045aa2 str r2, [sp, 0x18]                                |     var_18h = r2;
    0x00045aa4 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x00045aa6 beq.w 0x45d6e                                     |         goto label_14;
                                                                 |     }
                                                                 | label_9:
    0x00045aaa mov r0, r3                                        |     r0 = r3;
    0x00045aac bl 0x72490                                        |     r0 = xmlRegexpIsDeterminist ();
    0x00045ab0 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00045ab2 beq.w 0x45d7a                                     |         goto label_10;
                                                                 |     }
    0x00045ab6 movs r7, 0                                        |     r7 = 0;
    0x00045ab8 ldr r0, [r5, 0x34]                                |     r0 = *((r5 + 0x34));
    0x00045aba mov r2, r7                                        |     r2 = r7;
    0x00045abc mov r1, r7                                        |     r1 = r7;
    0x00045abe add.w sl, r8, 3                                   |     sl = r8 + 3;
    0x00045ac0 lsrs r3, r0, 8                                    |     r3 = r0 >> 8;
    0x00045ac2 strd r7, r7, [r4, 0x10]                           |     __asm ("strd r7, r7, [r4, 0x10]");
    0x00045ac6 str r7, [r4, 0x18]                                |     *((r4 + 0x18)) = r7;
    0x00045ac8 bic sl, sl, 4                                     |     sl = BIT_MASK (sl, 4);
    0x00045acc bl 0x71638                                        |     r0 = xmlRegNewExecCtxt ();
    0x00045ad0 mov sb, r0                                        |     sb = r0;
                                                                 |     if (r0 == 0) {
    0x00045ad2 cbz r0, 0x45b04                                   |         goto label_15;
                                                                 |     }
    0x00045ad4 cmp r6, 0                                         |     
                                                                 |     if (r6 == 0) {
    0x00045ad6 beq 0x45b92                                       |         goto label_16;
                                                                 |     }
    0x00045ad8 mov r5, r6                                        |     r5 = r6;
    0x00045ada add.w r3, sp, 0x13c0                              |     r3 += arg_13c0h;
    0x00045ade str r3, [sp, 0x20]                                |     var_20h = r3;
                                                                 |     do {
                                                                 | label_0:
    0x00045ae0 ldr.w sl, [r5, 4]                                 |         sl = *((r5 + 4));
    0x00045ae4 add.w r3, sl, -1                                  |         r3 = sl + -1;
    0x00045ae8 cmp r3, 4                                         |         
                                                                 |         if (r3 <= 4) {
    0x00045aea bhi 0x45b60                                       |             
                                                                 |             /* switch table (4 cases) at 0x45af0 */
    0x00045aec tbb [pc, r3]                                      |             __asm ("tbb [0x00045af4]");
    0x00045af6 mov.w sl, 3                                       |             sl = 3;
    0x00045afa mov.w r8, 0                                       |             r8 = 0;
                                                                 | label_2:
    0x00045afe mov r0, sb                                        |             r0 = sb;
    0x00045b00 bl 0x716fc                                        |             xmlRegFreeExecCtxt ();
                                                                 | label_15:
    0x00045b04 cmn.w r8, 3                                       |             
    0x00045b08 it eq                                             |             
                                                                 |             if (r8 != 3) {
    0x00045b0a moveq r8, 1                                       |                 r8 = 1;
                                                                 |             }
    0x00045b0e cmp.w sl, 0                                       |             
                                                                 |             if (sl != 0) {
    0x00045b12 bne.w 0x45c1c                                     |                 goto label_17;
                                                                 |             }
                                                                 | label_6:
    0x00045b16 ldr r0, [r4, 0x18]                                |             r0 = *((r4 + 0x18));
    0x00045b18 movs r5, 0                                        |             r5 = 0;
    0x00045b1a strd r5, r5, [r4, 0x10]                           |             __asm ("strd r5, r5, [r4, 0x10]");
    0x00045b1c strb r4, [r0, r4]                                 |             *((r0 + r4)) = r4;
                                                                 |             if (r0 != 0) {
    0x00045b1e cbz r0, 0x45b2c                                   |                 
    0x00045b20 ldr r2, [sp, 0x14]                                |                 r2 = var_14h;
    0x00045b22 ldr r3, [pc, 0x2f8]                               |                 
    0x00045b24 ldr r3, [r2, r3]                                  |                 r3 = *((r2 + r3));
    0x00045b26 ldr r3, [r3]                                      |                 r3 = *(0x45e1e);
    0x00045b28 blx r3                                            |                 uint32_t (*r3)(uint32_t, uint32_t) (r2, r3);
    0x00045b2a str r5, [r4, 0x18]                                |                 *((r4 + 0x18)) = r5;
                                                                 |             }
                                                                 | label_8:
    0x00045b2c ldr r2, [pc, 0x2f0]                               |             
    0x00045b2e add.w r1, sp, 0x2700                              |             r1 += arg_2700h;
    0x00045b32 ldr r3, [pc, 0x2e0]                               |             r3 = *(0x45e16);
    0x00045b34 adds r1, 0x3c                                     |             r1 += 0x3c;
    0x00045b36 add r2, pc                                        |             r2 = 0x8b95a;
    0x00045b38 ldr r3, [r2, r3]                                  |             r3 = *(0x8b95a);
    0x00045b3a ldr r2, [r3]                                      |             r2 = *(0x8b95a);
    0x00045b3c ldr r3, [r1]                                      |             r3 = *(r1);
    0x00045b3e eors r2, r3                                       |             r2 ^= r3;
    0x00045b40 mov.w r3, 0                                       |             r3 = 0;
                                                                 |             if (r2 != r3) {
    0x00045b44 bne.w 0x45e0a                                     |                 goto label_18;
                                                                 |             }
    0x00045b48 mov r0, r8                                        |             r0 = r8;
    0x00045b4a add.w sp, sp, 0x2740                              |             
    0x00045b4e add sp, 4                                         |             
    0x00045b50 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |             
    0x00045b54 mov r0, r5                                        |             r0 = r5;
    0x00045b56 bl 0x39fcc                                        |             r0 = xmlIsBlankNode ();
    0x00045b5a cmp r0, 0                                         |             
                                                                 |             if (r0 == 0) {
    0x00045b5c beq.w 0x45dd8                                     |                 goto label_19;
                                                                 |             }
                                                                 |         }
                                                                 | label_3:
    0x00045b60 ldr r5, [r5, 0x18]                                |         r5 = *((r5 + 0x18));
    0x00045b62 cmp r5, 0                                         |         
    0x00045b64 bne 0x45ae0                                       |         
                                                                 |     } while (r5 != 0);
    0x00045b66 ldr r3, [r4, 0x10]                                |     r3 = *((r4 + 0x10));
    0x00045b68 subs r1, r3, 1                                    |     r1 = r3 - 1;
    0x00045b6a lsls r1, r1, 2                                    |     r1 <<= 2;
    0x00045b6c b 0x45b8e                                         |     goto label_20;
                                                                 | label_1:
    0x00045b6e ldr r2, [r4, 0x18]                                |     r2 = *((r4 + 0x18));
    0x00045b70 subs r3, 1                                        |     r3--;
    0x00045b72 mov r0, r3                                        |     r0 = r3;
    0x00045b74 str r3, [r4, 0x10]                                |     *((r4 + 0x10)) = r3;
    0x00045b76 add r2, r1                                        |     r2 += r1;
                                                                 |     if (r3 != 0) {
    0x00045b78 cbz r3, 0x45b7e                                   |         
    0x00045b7a ldr r0, [r2, -0x4]                                |         r0 = *((r2 - 0x4));
                                                                 |     }
    0x00045b7e str r0, [r4, 0xc]                                 |     *((r4 + 0xc)) = r0;
    0x00045b80 ldr r0, [r2]                                      |     r0 = *(r2);
    0x00045b82 str r7, [r2]                                      |     *(r2) = r7;
                                                                 |     if (r0 == 0) {
    0x00045b84 cbz r0, 0x45b92                                   |         goto label_16;
                                                                 |     }
    0x00045b86 ldr r5, [r0, 0x18]                                |     r5 = *((r0 + 0x18));
    0x00045b88 subs r1, 4                                        |     r1 -= 4;
    0x00045b8a cmp r5, 0                                         |     
                                                                 |     if (r5 != 0) {
    0x00045b8c bne 0x45ae0                                       |         goto label_0;
                                                                 |     }
                                                                 | label_20:
    0x00045b8e cmp r3, 0                                         |     
                                                                 |     if (r3 > 0) {
    0x00045b90 bgt 0x45b6e                                       |         goto label_1;
                                                                 |     }
                                                                 | label_16:
    0x00045b92 movs r2, 0                                        |     r2 = 0;
    0x00045b94 mov r0, sb                                        |     r0 = sb;
    0x00045b96 mov r1, r2                                        |     r1 = r2;
    0x00045b98 bl 0x71794                                        |     r0 = xmlRegExecPushString ();
    0x00045b9c add.w sl, r0, 3                                   |     sl = r0 + 3;
    0x00045ba0 mov r8, r0                                        |     r8 = r0;
    0x00045ba2 bic sl, sl, 4                                     |     sl = BIT_MASK (sl, 4);
    0x00045ba6 b 0x45afe                                         |     goto label_2;
    0x00045ba8 ldr r3, [r5, 0x24]                                |     r3 = *((r5 + 0x24));
    0x00045baa ldr r0, [r5, 8]                                   |     r0 = *((r5 + 8));
    0x00045bac cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x00045bae beq 0x45c10                                       |         goto label_21;
                                                                 |     }
    0x00045bb0 ldr r1, [r3, 0xc]                                 |     r1 = *((r3 + 0xc));
                                                                 |     if (r1 == 0) {
    0x00045bb2 cbz r1, 0x45c10                                   |         goto label_21;
                                                                 |     }
    0x00045bb4 ldr.w sl, [sp, 0x20]                              |     sl = var_20h;
    0x00045bb8 movs r3, 0x32                                     |     r3 = 0x32;
    0x00045bba sub.w r8, sl, 0xc                                 |     r8 = sl - 0xc;
    0x00045bbc lsrs r4, r1, 0x20                                 |     r4 = r1 >> 0x20;
    0x00045bbe mov r2, r8                                        |     r2 = r8;
    0x00045bc0 bl 0x342f8                                        |     r0 = xmlBuildQName ();
    0x00045bc4 mov r1, r0                                        |     r1 = r0;
    0x00045bc6 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00045bc8 beq.w 0x45ddc                                     |         goto label_22;
                                                                 |     }
    0x00045bcc str r0, [sp, 0x24]                                |     var_24h = r0;
    0x00045bce movs r2, 0                                        |     r2 = 0;
    0x00045bd0 mov r0, sb                                        |     r0 = sb;
    0x00045bd2 bl 0x71794                                        |     xmlRegExecPushString ();
    0x00045bd6 ldr r1, [sp, 0x24]                                |     r1 = var_24h;
    0x00045bd8 cmp r1, r8                                        |     
                                                                 |     if (r1 == r8) {
    0x00045bda beq 0x45b60                                       |         goto label_3;
                                                                 |     }
    0x00045bdc ldr r3, [r5, 8]                                   |     r3 = *((r5 + 8));
    0x00045bde cmp r1, r3                                        |     
                                                                 |     if (r1 == r3) {
    0x00045be0 beq 0x45b60                                       |         goto label_3;
                                                                 |     }
    0x00045be2 ldr r2, [sp, 0x14]                                |     r2 = var_14h;
    0x00045be4 mov r0, r1                                        |     r0 = r1;
    0x00045be6 ldr r3, [pc, 0x234]                               |     
    0x00045be8 ldr r3, [r2, r3]                                  |     r3 = *((r2 + r3));
    0x00045bea ldr r3, [r3]                                      |     r3 = *(0x45e1e);
    0x00045bec blx r3                                            |     uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r2, r3);
    0x00045bee b 0x45b60                                         |     goto label_3;
                                                                 | label_21:
    0x00045c10 mov r1, r0                                        |     r1 = r0;
    0x00045c12 movs r2, 0                                        |     r2 = 0;
    0x00045c14 mov r0, sb                                        |     r0 = sb;
    0x00045c16 bl 0x71794                                        |     xmlRegExecPushString ();
    0x00045c1a b 0x45b60                                         |     goto label_3;
                                                                 | label_17:
    0x00045c1c add r3, sp, 0x2c                                  |     r3 += arg_2ch;
    0x00045c1e movs r5, 0                                        |     r5 = 0;
    0x00045c20 mov r0, r3                                        |     r0 = r3;
    0x00045c22 str r3, [sp, 0x20]                                |     var_20h = r3;
    0x00045c24 strb r5, [r3]                                     |     *(r3) = r5;
    0x00045c26 mov r2, fp                                        |     r2 = fp;
    0x00045c28 movs r3, 1                                        |     r3 = 1;
    0x00045c2a movw r1, 0x1388                                   |     r1 = 0x1388;
    0x00045c2e bl 0x456c8                                        |     xmlSnprintfElementContent ()
    0x00045c32 add.w r3, sp, 0x13a0                              |     r3 += arg_13a0h;
    0x00045c36 adds r3, 0x14                                     |     r3 += 0x14;
    0x00045c38 strb r5, [r3]                                     |     *(r3) = r5;
    0x00045c3a cmp r6, 0                                         |     
                                                                 |     if (r6 == 0) {
    0x00045c3c beq.w 0x45dce                                     |         goto label_23;
                                                                 |     }
    0x00045c40 add.w r8, sp, 0x13a0                              |     r8 += arg_13a0h;
    0x00045c44 add.w r3, sp, 0x13c0                              |     r3 += arg_13c0h;
    0x00045c48 add.w r8, r8, 0x14                                |     r8 += 0x14;
    0x00045c4c str r3, [sp, 0x24]                                |     var_24h = r3;
                                                                 | label_13:
    0x00045c4e ldr r1, [pc, 0x1d4]                               |     
    0x00045c50 movw r2, 0x1388                                   |     r2 = 0x1388;
    0x00045c54 ldr.w fp, [pc, 0x1d0]                             |     
    0x00045c58 mov r0, r8                                        |     r0 = r8;
    0x00045c5a ldr.w sl, [pc, 0x1d0]                             |     sl = *(0x00045e2c);
    0x00045c5e ldr.w sb, [pc, 0x1d0]                             |     
    0x00045c62 add r1, pc                                        |     r1 = 0x8ba8c;
    0x00045c64 add fp, pc                                        |     fp = 0x8ba90;
    0x00045c66 add sl, pc                                        |     sl += pc;
    0x00045c68 add sb, pc                                        |     sb = 0x8ba9e;
    0x00045c6a blx 0x1b674                                       |     fcn_0001b674 ();
                                                                 |     do {
    0x00045c6e mov r0, r8                                        |         r0 = r8;
    0x00045c70 blx 0x1b95c                                       |         r0 = fcn_0001b95c ();
    0x00045c74 rsb.w r5, r0, 0x1380                              |         r5 = 0x1380 - r0;
    0x00045c78 mov r7, r0                                        |         r7 = r0;
    0x00045c7a adds r5, 8                                        |         r5 += 8;
    0x00045c7c cmp r5, 0x31                                      |         
                                                                 |         if (r5 <= 0x31) {
    0x00045c7e ble.w 0x45d92                                     |             goto label_24;
                                                                 |         }
    0x00045c82 ldr r3, [r6, 4]                                   |         r3 = *((r6 + 4));
    0x00045c84 subs r3, 1                                        |         r3--;
    0x00045c86 cmp r3, 0x11                                      |         
                                                                 |         if (r3 <= 0x11) {
    0x00045c88 bhi 0x45cbc                                       |             
                                                                 |             /* switch table (18 cases) at 0x45c8e */
    0x00045c8a tbb [pc, r3]                                      |             __asm ("tbb [0x00045c90]");
    0x00045ca0 mov r3, r5                                        |             r3 = r5;
    0x00045ca2 add r0, r8                                        |             r0 += r8;
    0x00045ca4 movs r2, 4                                        |             r2 = 4;
    0x00045ca6 mov r1, fp                                        |             r1 = fp;
    0x00045ca8 blx 0x1b8ac                                       |             socket (r0, r1, r2);
    0x00045cac ldr r3, [r6, 0x18]                                |             r3 = *((r6 + 0x18));
                                                                 |             if (r3 == 0) {
    0x00045cae cbz r3, 0x45ce0                                   |                 goto label_7;
                                                                 |             }
                                                                 | label_5:
    0x00045cb0 movw r2, 0x1388                                   |             r2 = 0x1388;
    0x00045cb4 mov r1, sb                                        |             r1 = sb;
    0x00045cb6 mov r0, r8                                        |             r0 = r8;
    0x00045cb8 blx 0x1b674                                       |             fcn_0001b674 ();
                                                                 |         }
                                                                 | label_4:
    0x00045cbc ldr r6, [r6, 0x18]                                |         r6 = *((r6 + 0x18));
    0x00045cbe cmp r6, 0                                         |         
    0x00045cc0 bne 0x45c6e                                       |         
                                                                 |     } while (r6 != 0);
    0x00045cc2 b 0x45ce0                                         |     goto label_7;
    0x00045cc4 mov r0, r6                                        |     r0 = r6;
    0x00045cc6 bl 0x39fcc                                        |     r0 = xmlIsBlankNode ();
    0x00045cca cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x00045ccc bne 0x45cbc                                       |         goto label_4;
                                                                 |     }
    0x00045cce movw r2, 0x1388                                   |     r2 = 0x1388;
    0x00045cd2 mov r1, sl                                        |     r1 = sl;
    0x00045cd4 mov r0, r8                                        |     r0 = r8;
    0x00045cd6 blx 0x1b674                                       |     fcn_0001b674 ();
    0x00045cda ldr r3, [r6, 0x18]                                |     r3 = *((r6 + 0x18));
    0x00045cdc cmp r3, 0                                         |     
                                                                 |     if (r3 != 0) {
    0x00045cde bne 0x45cb0                                       |         goto label_5;
                                                                 |     }
                                                                 | label_7:
    0x00045ce0 ldr r1, [pc, 0x150]                               |     
    0x00045ce2 movw r2, 0x1388                                   |     r2 = 0x1388;
    0x00045ce6 mov r0, r8                                        |     r0 = r8;
    0x00045ce8 add r1, pc                                        |     r1 = 0x8bb20;
    0x00045cea blx 0x1b674                                       |     fcn_0001b674 ();
                                                                 | label_11:
    0x00045cee ldr r2, [sp, 0x18]                                |     r2 = var_18h;
    0x00045cf0 cmp r2, 0                                         |     
                                                                 |     if (r2 == 0) {
    0x00045cf2 beq 0x45db0                                       |         goto label_25;
                                                                 |     }
    0x00045cf4 ldrd r1, r3, [sp, 0x1c]                           |     __asm ("ldrd r1, r3, [var_1ch]");
    0x00045cf8 mov r0, r4                                        |     r0 = r4;
    0x00045cfa str r2, [sp]                                      |     *(sp) = r2;
    0x00045cfc mov.w r2, 0x1f8                                   |     r2 = 0x1f8;
    0x00045d00 str.w r8, [sp, 8]                                 |     __asm ("str.w r8, [var_8h]");
    0x00045d04 str r3, [sp, 4]                                   |     var_4h = r3;
    0x00045d06 ldr r3, [pc, 0x130]                               |     
    0x00045d08 add r3, pc                                        |     r3 = 0x8bb46;
    0x00045d0a bl 0x43800                                        |     fcn_00043800 (r0, r1, r2, r3, r4, r5);
                                                                 | label_12:
    0x00045d0e mov.w r8, 0                                       |     r8 = 0;
    0x00045d12 b 0x45b16                                         |     goto label_6;
    0x00045d14 ldr r3, [r6, 0x24]                                |     r3 = *((r6 + 0x24));
                                                                 |     if (r3 != 0) {
    0x00045d16 cbz r3, 0x45d4e                                   |         
    0x00045d18 ldr r0, [r3, 0xc]                                 |         r0 = *((r3 + 0xc));
                                                                 |         if (r0 == 0) {
    0x00045d1a cbz r0, 0x45d4e                                   |             goto label_26;
                                                                 |         }
    0x00045d1c bl 0x6bfec                                        |         xmlStrlen ();
    0x00045d20 adds r0, 9                                        |         r0 += 9;
    0x00045d22 cmp r5, r0                                        |         
                                                                 |         if (r5 <= r0) {
    0x00045d24 ble 0x45d96                                       |             goto label_27;
                                                                 |         }
    0x00045d26 mov r0, r8                                        |         r0 = r8;
    0x00045d28 blx 0x1b95c                                       |         fcn_0001b95c ();
    0x00045d2c ldr r3, [r6, 0x24]                                |         r3 = *((r6 + 0x24));
    0x00045d2e movw r2, 0x1388                                   |         r2 = 0x1388;
    0x00045d32 add r0, r8                                        |         r0 += r8;
    0x00045d34 ldr r1, [r3, 0xc]                                 |         r1 = *((r3 + 0xc));
    0x00045d36 blx 0x1bb04                                       |         malloc (r0);
    0x00045d3a ldr r1, [pc, 0x100]                               |         
    0x00045d3c sub.w r3, r8, r0                                  |         r3 = r8 - r0;
    0x00045d40 add.w r3, r3, 0x1380                              |         r3 += 0x1380;
    0x00045d44 movs r2, 2                                        |         r2 = 2;
    0x00045d46 adds r3, 8                                        |         r3 += 8;
    0x00045d48 add r1, pc                                        |         r1 = 0x8bb8a;
    0x00045d4a blx 0x1b8ac                                       |         socket (r0, r1, r2);
                                                                 |     }
                                                                 | label_26:
    0x00045d4e ldr r0, [r6, 8]                                   |     r0 = *((r6 + 8));
    0x00045d50 bl 0x6bfec                                        |     xmlStrlen ();
    0x00045d54 adds r0, 9                                        |     r0 += 9;
    0x00045d56 cmp r5, r0                                        |     
                                                                 |     if (r5 <= r0) {
    0x00045d58 ble 0x45d96                                       |         goto label_27;
                                                                 |     }
    0x00045d5a ldr r1, [r6, 8]                                   |     r1 = *((r6 + 8));
    0x00045d5c movw r2, 0x1388                                   |     r2 = 0x1388;
    0x00045d60 mov r0, r8                                        |     r0 = r8;
    0x00045d62 blx 0x1b674                                       |     fcn_0001b674 ();
    0x00045d66 ldr r3, [r6, 0x18]                                |     r3 = *((r6 + 0x18));
    0x00045d68 cmp r3, 0                                         |     
                                                                 |     if (r3 != 0) {
    0x00045d6a bne 0x45cb0                                       |         goto label_5;
                                                                 |     }
    0x00045d6c b 0x45ce0                                         |     goto label_7;
                                                                 | label_14:
    0x00045d6e ldr r3, [r5, 4]                                   |     r3 = *((r5 + 4));
    0x00045d70 cmp r3, 0xf                                       |     
                                                                 |     if (r3 == 0xf) {
    0x00045d72 bne 0x45d7a                                       |         
    0x00045d74 ldr r3, [r5, 0x24]                                |         r3 = *((r5 + 0x24));
    0x00045d76 cmp r3, 4                                         |         
                                                                 |         if (r3 == 4) {
    0x00045d78 beq 0x45d80                                       |             goto label_28;
                                                                 |         }
                                                                 |     }
                                                                 | label_10:
    0x00045d7a mov.w r8, -1                                      |     r8 = -1;
    0x00045d7e b 0x45b2c                                         |     goto label_8;
                                                                 | label_28:
    0x00045d80 mov r1, r5                                        |     r1 = r5;
    0x00045d82 bl 0x4590c                                        |     fcn_0004590c (r0, r1);
    0x00045d86 ldr r3, [r5, 0x34]                                |     r3 = *((r5 + 0x34));
    0x00045d88 mov r8, r0                                        |     r8 = r0;
    0x00045d8a cmp r3, 0                                         |     
                                                                 |     if (r3 != 0) {
    0x00045d8c bne.w 0x45aaa                                     |         goto label_9;
                                                                 |     }
    0x00045d90 b 0x45d7a                                         |     goto label_10;
                                                                 | label_24:
    0x00045d92 cmp r5, 4                                         |     
                                                                 |     if (r5 <= 4) {
    0x00045d94 ble 0x45cee                                       |         goto label_11;
                                                                 |     }
                                                                 | label_27:
    0x00045d96 ldr r3, [sp, 0x24]                                |     r3 = var_24h;
    0x00045d98 subs r3, 0xd                                      |     r3 -= 0xd;
    0x00045d9a ldrb r3, [r3, r7]                                 |     r3 = *((r3 + r7));
    0x00045d9c cmp r3, 0x2e                                      |     
                                                                 |     if (r3 == 0x2e) {
    0x00045d9e beq 0x45cee                                       |         goto label_11;
                                                                 |     }
    0x00045da0 ldr r1, [pc, 0x9c]                                |     
    0x00045da2 movw r2, 0x1388                                   |     r2 = 0x1388;
    0x00045da6 mov r0, r8                                        |     r0 = r8;
    0x00045da8 add r1, pc                                        |     r1 = 0x8bbec;
    0x00045daa blx 0x1b674                                       |     fcn_0001b674 ();
    0x00045dae b 0x45cee                                         |     goto label_11;
                                                                 | label_25:
    0x00045db0 ldr r3, [sp, 0x18]                                |     r3 = var_18h;
    0x00045db2 mov r0, r4                                        |     r0 = r4;
    0x00045db4 ldr r2, [sp, 0x20]                                |     r2 = var_20h;
    0x00045db6 ldr r1, [sp, 0x1c]                                |     r1 = var_1ch;
    0x00045db8 str r3, [sp, 8]                                   |     var_8h = r3;
    0x00045dba ldr r3, [pc, 0x88]                                |     
    0x00045dbc str r2, [sp]                                      |     *(sp) = r2;
    0x00045dbe mov.w r2, 0x1f8                                   |     r2 = 0x1f8;
    0x00045dc2 str.w r8, [sp, 4]                                 |     __asm ("str.w r8, [var_4h]");
    0x00045dc6 add r3, pc                                        |     r3 = 0x8bc10;
    0x00045dc8 bl 0x43800                                        |     fcn_00043800 (r0, r1, r2, r3, r4, r5);
    0x00045dcc b 0x45d0e                                         |     goto label_12;
                                                                 | label_23:
    0x00045dce add.w r8, sp, 0x13a0                              |     r8 += arg_13a0h;
    0x00045dd2 add.w r8, r8, 0x14                                |     r8 += 0x14;
    0x00045dd6 b 0x45cee                                         |     goto label_11;
                                                                 | label_19:
    0x00045dd8 mov r8, r0                                        |     r8 = r0;
    0x00045dda b 0x45afe                                         |     goto label_2;
                                                                 | label_22:
    0x00045ddc str.w sl, [sp, 0x24]                              |     __asm ("str.w sl, [var_24h]");
    0x00045de0 mov sl, r0                                        |     sl = r0;
    0x00045de2 mov r0, sb                                        |     r0 = sb;
    0x00045de4 bl 0x716fc                                        |     xmlRegFreeExecCtxt ();
    0x00045de8 add r3, sp, 0x2c                                  |     r3 += arg_2ch;
    0x00045dea strb.w sl, [r3]                                   |     *(r3) = sl;
    0x00045dee mov r0, r3                                        |     r0 = r3;
    0x00045df0 str r3, [sp, 0x20]                                |     var_20h = r3;
    0x00045df2 mov r2, fp                                        |     r2 = fp;
    0x00045df4 movs r3, 1                                        |     r3 = 1;
    0x00045df6 movw r1, 0x1388                                   |     r1 = 0x1388;
    0x00045dfa bl 0x456c8                                        |     xmlSnprintfElementContent ()
    0x00045dfe add.w r3, sp, 0x13a0                              |     r3 += arg_13a0h;
    0x00045e02 adds r3, 0x14                                     |     r3 += 0x14;
    0x00045e04 strb.w sl, [r3]                                   |     *(r3) = sl;
    0x00045e08 b 0x45c4e                                         |     goto label_13;
                                                                 | label_18:
    0x00045e0a blx 0x1bb70                                       |     fputc (r0, r1);
    0x00045e0e nop                                               |     
    0x00045e10 b 0x460b0                                         |     return void (*0x460b0)() ();
                                                                 | }
    ; assembly                                               | /* r2dec pseudo code output */
                                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libxml2.so.2.9.13 @ 0x456c8 */
                                                             | #include <stdint.h>
                                                             |  
    ; (fcn) sym.xmlSnprintfElementContent ()                 | void xmlSnprintfElementContent (int16_t arg1, int16_t arg2, uint32_t arg3, int16_t arg4) {
                                                             |     r0 = arg1;
                                                             |     r1 = arg2;
                                                             |     r2 = arg3;
                                                             |     r3 = arg4;
    0x000456c8 cmp r2, 0                                     |     
                                                             |     if (r2 == 0) {
    0x000456ca beq.w 0x4585c                                 |         goto label_5;
                                                             |     }
    0x000456ce push.w {r3, r4, r5, r6, r7, r8, sb, lr}       |     
    0x000456d2 mov r4, r1                                    |     r4 = r1;
    0x000456d4 mov r7, r3                                    |     r7 = r3;
    0x000456d6 mov r5, r0                                    |     r5 = r0;
    0x000456d8 mov r6, r2                                    |     r6 = r2;
    0x000456da blx 0x1b95c                                   |     r0 = fcn_0001b95c ();
    0x000456de sub.w r8, r4, r0                              |     r8 = r4 - r0;
    0x000456e2 mov r3, r0                                    |     r3 = r0;
    0x000456e4 cmp.w r8, 0x31                                |     
                                                             |     if (r8 <= 0x31) {
    0x000456e8 ble 0x4573e                                   |         goto label_6;
                                                             |     }
    0x000456ea cmp r7, 0                                     |     
                                                             |     if (r7 != 0) {
    0x000456ec bne 0x4575c                                   |         goto label_7;
                                                             |     }
                                                             | label_1:
    0x000456ee ldr r3, [r6]                                  |     r3 = *(r6);
    0x000456f0 subs r3, 1                                    |     r3--;
    0x000456f2 cmp r3, 3                                     |     
                                                             |     if (r3 <= 3) {
    0x000456f4 bhi 0x45716                                   |         
                                                             |         /* switch table (4 cases) at 0x456fa */
    0x000456f6 tbb [pc, r3]                                  |         __asm ("tbb [0x000456fc]");
    0x000456fe mov r0, r5                                    |         r0 = r5;
    0x00045700 blx 0x1b95c                                   |         fcn_0001b95c ();
    0x00045704 ldr r2, [pc, 0x1d0]                           |         
    0x00045706 mov r3, r0                                    |         r3 = r0;
    0x00045708 add.w ip, r5, r0                              |         
    0x0004570c add r2, pc                                    |         r2 = 0x8afe8;
    0x0004570e ldm r2!, {r0, r1}                             |         r0 = *(r2!);
                                                             |         r1 = *((r2! + 4));
    0x00045710 str r0, [r5, r3]                              |         *((r5 + r3)) = r0;
    0x00045712 str.w r1, [ip, 4]                             |         __asm ("str.w r1, [ip, 4]");
                                                             |     }
                                                             | label_2:
    0x00045716 mov r0, r5                                    |     r0 = r5;
    0x00045718 blx 0x1b95c                                   |     r0 = fcn_0001b95c ();
    0x0004571c subs r4, r4, r0                               |     r4 -= r0;
    0x0004571e cmp r4, 2                                     |     
                                                             |     if (r4 < 2) {
    0x00045720 bls 0x4573a                                   |         goto label_0;
                                                             |     }
    0x00045722 cmp r7, 0                                     |     
                                                             |     if (r7 != 0) {
    0x00045724 bne.w 0x45852                                 |         goto label_8;
                                                             |     }
                                                             | label_3:
    0x00045728 ldr r3, [r6, 4]                               |     r3 = *((r6 + 4));
    0x0004572a cmp r3, 3                                     |     
                                                             |     if (r3 == 3) {
    0x0004572c beq.w 0x4585e                                 |         goto label_9;
                                                             |     }
    0x00045730 cmp r3, 4                                     |     
                                                             |     if (r3 == 4) {
    0x00045732 beq.w 0x45842                                 |         goto label_10;
                                                             |     }
    0x00045734 strh r6, [r0, 4]                              |     *((r0 + 4)) = r6;
    0x00045736 cmp r3, 2                                     |     
                                                             |     if (r3 == 2) {
    0x00045738 beq 0x45832                                   |         goto label_11;
                                                             |     }
                                                             |     do {
                                                             | label_0:
    0x0004573a pop.w {r3, r4, r5, r6, r7, r8, sb, pc}        |         
                                                             | label_6:
    0x0004573e cmp.w r8, 4                                   |         
    0x00045742 ble 0x4573a                                   |         
                                                             |     } while (r8 <= 4);
    0x00045744 adds r2, r5, r0                               |     r2 = r5 + r0;
    0x00045746 ldrb r1, [r2, -0x1]                           |     r1 = *((r2 - 0x1));
    0x0004574a cmp r1, 0x2e                                  |     
                                                             |     if (r1 == 0x2e) {
    0x0004574c beq 0x4573a                                   |         goto label_0;
                                                             |     }
    0x0004574e ldr r1, [pc, 0x18c]                           |     
    0x00045750 add r1, pc                                    |     r1 = 0x8b032;
    0x00045752 ldr r0, [r1]                                  |     r0 = *(0x8b032);
    0x00045754 ldrb r1, [r1, 4]                              |     r1 = *((r1 + 4));
    0x00045756 str r0, [r5, r3]                              |     *((r5 + r3)) = r0;
    0x00045758 strb r1, [r2, 4]                              |     *((r2 + 4)) = r1;
    0x0004575a b 0x4573a                                     |     goto label_0;
                                                             | label_7:
    0x0004575c ldr r2, [pc, 0x180]                           |     
    0x0004575e add r2, pc                                    |     r2 = 0x8b042;
    0x00045760 ldrh r2, [r2]                                 |     r2 = *(r2);
    0x00045762 strh r2, [r5, r0]                             |     *((r5 + r0)) = r2;
    0x00045764 b 0x456ee                                     |     goto label_1;
    0x00045766 ldr r0, [r6, 8]                               |     r0 = *((r6 + 8));
    0x00045768 bl 0x6bfec                                    |     r0 = xmlStrlen ();
    0x0004576c mov sb, r0                                    |     sb = r0;
    0x0004576e ldr r0, [r6, 0x18]                            |     r0 = *((r6 + 0x18));
    0x00045770 cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x00045772 beq.w 0x458b4                                 |         goto label_12;
                                                             |     }
    0x00045776 bl 0x6bfec                                    |     xmlStrlen ();
    0x0004577a add r0, sb                                    |     r0 += sb;
    0x0004577c adds r0, 0xa                                  |     r0 += 0xa;
    0x0004577e cmp r8, r0                                    |     
                                                             |     if (r8 <= r0) {
    0x00045780 ble.w 0x458be                                 |         goto label_13;
                                                             |     }
    0x00045784 ldr.w r8, [r6, 0x18]                          |     r8 = *((r6 + 0x18));
    0x00045788 cmp.w r8, 0                                   |     
                                                             |     if (r8 != 0) {
    0x0004578c beq 0x457a4                                   |         
    0x0004578e mov r0, r5                                    |         r0 = r5;
    0x00045790 blx 0x1b95c                                   |         fcn_0001b95c ();
    0x00045794 mov r1, r8                                    |         r1 = r8;
    0x00045796 add r0, r5                                    |         r0 += r5;
    0x00045798 blx 0x1b724                                   |         fcn_0001b724 ();
    0x0004579c ldr r3, [pc, 0x144]                           |         
    0x0004579e add r3, pc                                    |         r3 = 0x8b086;
    0x000457a0 ldrh r3, [r3]                                 |         r3 = *(r3);
    0x000457a2 strh r3, [r0]                                 |         *(r0) = r3;
                                                             |     }
                                                             | label_4:
    0x000457a4 ldr r1, [r6, 8]                               |     r1 = *((r6 + 8));
    0x000457a6 cmp r1, 0                                     |     
                                                             |     if (r1 == 0) {
    0x000457a8 beq 0x45716                                   |         goto label_2;
                                                             |     }
    0x000457aa mov r0, r5                                    |     r0 = r5;
    0x000457ac blx 0x1bc24                                   |     fcn_0001bc24 ();
    0x000457b0 b 0x45716                                     |     goto label_2;
    0x000457b2 ldr r2, [r6, 0xc]                             |     r2 = *((r6 + 0xc));
    0x000457b4 mov r1, r4                                    |     r1 = r4;
    0x000457b6 mov r0, r5                                    |     r0 = r5;
    0x000457b8 ldr r3, [r2]                                  |     r3 = *(r2);
    0x000457ba subs r3, 3                                    |     r3 -= 3;
    0x000457bc cmp r3, 1                                     |     
    0x000457be ite ls                                        |     
                                                             |     if (r3 > 1) {
    0x000457c0 movls r3, 1                                   |         r3 = 1;
                                                             |     }
                                                             |     if (r3 <= 1) {
    0x000457c2 movhi r3, 0                                   |         r3 = 0;
                                                             |     }
    0x000457c4 bl 0x456c8                                    |     xmlSnprintfElementContent ()
    0x000457c8 mov r0, r5                                    |     r0 = r5;
    0x000457ca blx 0x1b95c                                   |     r0 = fcn_0001b95c ();
    0x000457ce subs r2, r4, r0                               |     r2 = r4 - r0;
    0x000457d0 mov r3, r0                                    |     r3 = r0;
    0x000457d2 cmp r2, 0x31                                  |     
                                                             |     if (r2 > 0x31) {
    0x000457d4 bgt 0x45898                                   |         goto label_14;
                                                             |     }
    0x000457d6 cmp r2, 4                                     |     
                                                             |     if (r2 <= 4) {
    0x000457d8 ble 0x4573a                                   |         goto label_0;
                                                             |     }
    0x000457da adds r2, r5, r0                               |     r2 = r5 + r0;
    0x000457dc ldrb r1, [r2, -0x1]                           |     r1 = *((r2 - 0x1));
    0x000457e0 cmp r1, 0x2e                                  |     
                                                             |     if (r1 == 0x2e) {
    0x000457e2 beq 0x4573a                                   |         goto label_0;
                                                             |     }
    0x000457e4 ldr r1, [pc, 0x100]                           |     
    0x000457e6 add r1, pc                                    |     r1 = 0x8b0d2;
    0x000457e8 ldr r0, [r1]                                  |     r0 = *(0x8b0d2);
    0x000457ea ldrb r1, [r1, 4]                              |     r1 = *((r1 + 4));
    0x000457ec str r0, [r5, r3]                              |     *((r5 + r3)) = r0;
    0x000457ee strb r1, [r2, 4]                              |     *((r2 + 4)) = r1;
    0x000457f0 b 0x4573a                                     |     goto label_0;
    0x000457f2 ldr r2, [r6, 0xc]                             |     r2 = *((r6 + 0xc));
    0x000457f4 mov r1, r4                                    |     r1 = r4;
    0x000457f6 mov r0, r5                                    |     r0 = r5;
    0x000457f8 ldr r3, [r2]                                  |     r3 = *(r2);
    0x000457fa subs r3, 3                                    |     r3 -= 3;
    0x000457fc cmp r3, 1                                     |     
    0x000457fe ite ls                                        |     
                                                             |     if (r3 > 1) {
    0x00045800 movls r3, 1                                   |         r3 = 1;
                                                             |     }
                                                             |     if (r3 <= 1) {
    0x00045802 movhi r3, 0                                   |         r3 = 0;
                                                             |     }
    0x00045804 bl 0x456c8                                    |     xmlSnprintfElementContent ()
    0x00045808 mov r0, r5                                    |     r0 = r5;
    0x0004580a blx 0x1b95c                                   |     r0 = fcn_0001b95c ();
    0x0004580e subs r2, r4, r0                               |     r2 = r4 - r0;
    0x00045810 mov r3, r0                                    |     r3 = r0;
    0x00045812 cmp r2, 0x31                                  |     
                                                             |     if (r2 > 0x31) {
    0x00045814 bgt 0x4586e                                   |         goto label_15;
                                                             |     }
    0x00045816 cmp r2, 4                                     |     
                                                             |     if (r2 <= 4) {
    0x00045818 ble 0x4573a                                   |         goto label_0;
                                                             |     }
    0x0004581a adds r2, r5, r0                               |     r2 = r5 + r0;
    0x0004581c ldrb r1, [r2, -0x1]                           |     r1 = *((r2 - 0x1));
    0x00045820 cmp r1, 0x2e                                  |     
                                                             |     if (r1 == 0x2e) {
    0x00045822 beq 0x4573a                                   |         goto label_0;
                                                             |     }
    0x00045824 ldr r1, [pc, 0xc4]                            |     
    0x00045826 add r1, pc                                    |     r1 = 0x8b116;
    0x00045828 ldr r0, [r1]                                  |     r0 = *(0x8b116);
    0x0004582a ldrb r1, [r1, 4]                              |     r1 = *((r1 + 4));
    0x0004582c str r0, [r5, r3]                              |     *((r5 + r3)) = r0;
    0x0004582e strb r1, [r2, 4]                              |     *((r2 + 4)) = r1;
    0x00045830 b 0x4573a                                     |     goto label_0;
                                                             | label_11:
    0x00045832 mov r0, r5                                    |     r0 = r5;
    0x00045834 blx 0x1b95c                                   |     fcn_0001b95c ();
    0x00045838 ldr r3, [pc, 0xb4]                            |     
    0x0004583a add r3, pc                                    |     r3 = 0x8b12e;
    0x0004583c ldrh r3, [r3]                                 |     r3 = *(r3);
    0x0004583e strh r3, [r5, r0]                             |     *((r5 + r0)) = r3;
    0x00045840 b 0x4573a                                     |     goto label_0;
                                                             | label_10:
    0x00045842 mov r0, r5                                    |     r0 = r5;
    0x00045844 blx 0x1b95c                                   |     fcn_0001b95c ();
    0x00045848 ldr r3, [pc, 0xa8]                            |     
    0x0004584a add r3, pc                                    |     r3 = 0x8b142;
    0x0004584c ldrh r3, [r3]                                 |     r3 = *(r3);
    0x0004584e strh r3, [r5, r0]                             |     *((r5 + r0)) = r3;
    0x00045850 b 0x4573a                                     |     goto label_0;
                                                             | label_8:
    0x00045852 ldr r3, [pc, 0xa4]                            |     
    0x00045854 add r3, pc                                    |     r3 = 0x8b152;
    0x00045856 ldrh r3, [r3]                                 |     r3 = *(r3);
    0x00045858 strh r3, [r5, r0]                             |     *((r5 + r0)) = r3;
    0x0004585a b 0x45728                                     |     goto label_3;
                                                             | label_5:
    0x0004585c bx lr                                         |     return;
                                                             | label_9:
    0x0004585e mov r0, r5                                    |     r0 = r5;
    0x00045860 blx 0x1b95c                                   |     fcn_0001b95c ();
    0x00045864 ldr r3, [pc, 0x94]                            |     
    0x00045866 add r3, pc                                    |     r3 = 0x8b166;
    0x00045868 ldrh r3, [r3]                                 |     r3 = *(r3);
    0x0004586a strh r3, [r5, r0]                             |     *((r5 + r0)) = r3;
    0x0004586c b 0x4573a                                     |     goto label_0;
                                                             | label_15:
    0x0004586e ldr r2, [pc, 0x90]                            |     
    0x00045870 add r2, pc                                    |     r2 = 0x8b176;
    0x00045872 ldr r0, [r2]                                  |     r0 = *(0x8b176);
    0x00045874 str r0, [r5, r3]                              |     *((r5 + r3)) = r0;
    0x00045876 ldr r2, [r6, 0x10]                            |     r2 = *((r6 + 0x10));
    0x00045878 ldr r1, [r2]                                  |     r1 = *(0x8b176);
    0x0004587a cmp r1, 3                                     |     
                                                             |     if (r1 == 3) {
    0x0004587c beq 0x458a8                                   |         goto label_16;
                                                             |     }
                                                             |     do {
    0x0004587e ldr r3, [r2, 4]                               |         r3 = *((r2 + 4));
    0x00045880 cmp r3, 1                                     |         
    0x00045882 it ne                                         |         
                                                             |         if (r3 != 1) {
    0x00045884 cmpne r1, 2                                   |             __asm ("cmpne r1, 2");
                                                             |         }
    0x00045886 ite ne                                        |         
                                                             |         if (r3 == 1) {
    0x00045888 movne r3, 1                                   |             r3 = 1;
                                                             |         }
                                                             |         if (r3 != 1) {
    0x0004588a moveq r3, 0                                   |             r3 = 0;
                                                             |         }
                                                             |         if (r3 != 1) {
    0x0004588c bne 0x458a8                                   |             goto label_16;
                                                             |         }
    0x0004588e mov r1, r4                                    |         r1 = r4;
    0x00045890 mov r0, r5                                    |         r0 = r5;
    0x00045892 bl 0x456c8                                    |         xmlSnprintfElementContent ()
    0x00045896 b 0x45716                                     |         goto label_2;
                                                             | label_14:
    0x00045898 ldr r2, [pc, 0x68]                            |         
    0x0004589a add r2, pc                                    |         r2 = 0x8b1a2;
    0x0004589c ldr r0, [r2]                                  |         r0 = *(0x8b1a2);
    0x0004589e str r0, [r5, r3]                              |         *((r5 + r3)) = r0;
    0x000458a0 ldr r2, [r6, 0x10]                            |         r2 = *((r6 + 0x10));
    0x000458a2 ldr r1, [r2]                                  |         r1 = *(0x8b1a2);
    0x000458a4 cmp r1, 4                                     |         
    0x000458a6 bne 0x4587e                                   |         
                                                             |     } while (r1 != 4);
                                                             | label_16:
    0x000458a8 movs r3, 1                                    |     r3 = 1;
    0x000458aa mov r1, r4                                    |     r1 = r4;
    0x000458ac mov r0, r5                                    |     r0 = r5;
    0x000458ae bl 0x456c8                                    |     xmlSnprintfElementContent ()
    0x000458b2 b 0x45716                                     |     goto label_2;
                                                             | label_12:
    0x000458b4 add.w r0, sb, 9                               |     r0 = sb + 9;
    0x000458b8 cmp r8, r0                                    |     
                                                             |     if (r8 > r0) {
    0x000458ba bgt.w 0x457a4                                 |         goto label_4;
                                                             |     }
                                                             | label_13:
    0x000458be mov r0, r5                                    |     r0 = r5;
    0x000458c0 blx 0x1b95c                                   |     fcn_0001b95c ();
    0x000458c4 ldr r2, [pc, 0x40]                            |     
    0x000458c6 mov r3, r0                                    |     r3 = r0;
    0x000458c8 adds r1, r5, r0                               |     r1 = r5 + r0;
    0x000458ca add r2, pc                                    |     r2 = 0x8b1d6;
    0x000458cc ldr r0, [r2]                                  |     r0 = *(0x8b1d6);
    0x000458ce ldrb r2, [r2, 4]                              |     r2 = *((r2 + 4));
    0x000458d0 str r0, [r5, r3]                              |     *((r5 + r3)) = r0;
    0x000458d2 strb r2, [r1, 4]                              |     *((r1 + 4)) = r2;
    0x000458d4 b 0x4573a                                     |     goto label_0;
                                                             | }

[*] Function printf used 9 times libxml2.so.2.9.13