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

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


[*] Function sprintf 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 @ 0x3e0b8 */
                                             | #include <stdint.h>
                                             |  
    ; (fcn) fcn.0003e0b8 ()                  | void fcn_0003e0b8 (int16_t arg1, int16_t arg2) {
                                             |     int16_t var_0h;
                                             |     int16_t var_8h;
                                             |     int16_t var_1fch;
                                             |     int16_t var_200h;
                                             |     r0 = arg1;
                                             |     r1 = arg2;
    0x0003e0b8 push {r4, r5, r6, lr}         |     
    0x0003e0ba mov r4, r0                    |     r4 = r0;
    0x0003e0bc ldr r0, [pc, 0x80]            |     
    0x0003e0be sub.w sp, sp, 0x200           |     
    0x0003e0c2 ldr r2, [pc, 0x80]            |     r2 = *(0x3e146);
    0x0003e0c4 add r0, pc                    |     r0 = 0x7c208;
    0x0003e0c6 ldr r3, [pc, 0x80]            |     
    0x0003e0c8 ldr r5, [r4, 0x18]            |     r5 = *((r4 + 0x18));
    0x0003e0ca ldr r2, [r0, r2]              |     
    0x0003e0cc add r3, pc                    |     
    0x0003e0ce ldr r0, [r4, 8]               |     r0 = *((r4 + 8));
    0x0003e0d0 ldr r2, [r2]                  |     r2 = *(0x7c208);
    0x0003e0d2 str r2, [sp, 0x1fc]           |     var_1fch = r2;
    0x0003e0d4 mov.w r2, 0                   |     r2 = 0;
    0x0003e0d8 ldr r2, [pc, 0x70]            |     r2 = *(0x3e14c);
    0x0003e0da subs r5, r5, r0               |     r5 -= r0;
    0x0003e0dc ldr r3, [r3, r2]              |     
    0x0003e0de ldr r2, [r4]                  |     r2 = *(r4);
    0x0003e0e0 ldr r3, [r3]                  |     r3 = *(0x7c21a);
    0x0003e0e2 adds r6, r1, r2               |     r6 = r1 + r2;
    0x0003e0e4 mov r1, r6                    |     r1 = r6;
    0x0003e0e6 blx r3                        |     r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
                                             |     if (r0 == 0) {
    0x0003e0e8 cbz r0, 0x3e112               |         goto label_0;
                                             |     }
    0x0003e0ea adds r3, r0, r5               |     r3 = r0 + r5;
    0x0003e0ec str r0, [r4, 8]               |     *((r4 + 8)) = r0;
    0x0003e0ee movs r0, 0                    |     r0 = 0;
    0x0003e0f0 subs r5, r6, r5               |     r5 = r6 - r5;
    0x0003e0f2 str r6, [r4]                  |     *(r4) = r6;
    0x0003e0f4 strd r3, r5, [r4, 0x18]       |     __asm ("strd r3, r5, [r4, 0x18]");
                                             |     do {
    0x0003e0f8 ldr r2, [pc, 0x54]            |         
    0x0003e0fa ldr r3, [pc, 0x48]            |         r3 = *(0x3e146);
    0x0003e0fc add r2, pc                    |         r2 = 0x7c250;
    0x0003e0fe ldr r3, [r2, r3]              |         r3 = *(0x7c250);
    0x0003e100 ldr r2, [r3]                  |         r2 = *(0x7c250);
    0x0003e102 ldr r3, [sp, 0x1fc]           |         r3 = var_1fch;
    0x0003e104 eors r2, r3                   |         r2 ^= r3;
    0x0003e106 mov.w r3, 0                   |         r3 = 0;
                                             |         if (r2 != r3) {
    0x0003e10a bne 0x3e13a                   |             goto label_1;
                                             |         }
    0x0003e10c add.w sp, sp, 0x200           |         
    0x0003e110 pop {r4, r5, r6, pc}          |         
                                             | label_0:
    0x0003e112 ldr r3, [pc, 0x40]            |         
    0x0003e114 add r4, sp, 8                 |         r4 += var_8h;
    0x0003e116 ldr r2, [pc, 0x40]            |         
    0x0003e118 mov.w r1, 0x1f4               |         r1 = 0x1f4;
    0x0003e11c mov r0, r4                    |         r0 = r4;
    0x0003e11e str r6, [sp]                  |         *(sp) = r6;
    0x0003e120 add r3, pc                    |         r3 = 0x7c27a;
    0x0003e122 add r2, pc                    |         r2 = 0x7c280;
    0x0003e124 bl 0x6c1e0                    |         xmlStrPrintf ();
    0x0003e128 movs r0, 8                    |         r0 = 8;
    0x0003e12a mov r2, r4                    |         r2 = r4;
    0x0003e12c movw r1, 0x60a                |         r1 = 0x60a;
    0x0003e130 blx 0x1bcac                   |         fcn_0001bcac ();
    0x0003e134 mov.w r0, -1                  |         r0 = -1;
    0x0003e138 b 0x3e0f8                     |         
                                             |     } while (1);
                                             | label_1:
    0x0003e13a blx 0x1bb70                   |     fputc (r0, r1);
    0x0003e13e nop                           |     
    0x0003e140 ldrh r0, [r6, r3]             |     r0 = *((r6 + r3));
    0x0003e142 movs r2, r1                   |     r2 = r1;
    0x0003e144 lsls r0, r1, 0xf              |     r0 = r1 << 0xf;
    0x0003e146 movs r0, r0                   |     
    0x0003e148 ldrh r0, [r5, r3]             |     r0 = *((r5 + r3));
    0x0003e14a movs r2, r1                   |     r2 = r1;
    0x0003e14c lsls r0, r6, 0xc              |     r0 = r6 << 0xc;
    0x0003e14e movs r0, r0                   |     
    0x0003e150 ldrh r0, [r7, r2]             |     r0 = *((r7 + r2));
    0x0003e152 movs r2, r1                   |     r2 = r1;
    0x0003e154 strh r4, [r5, r4]             |     *((r5 + r4)) = r4;
    0x0003e156 movs r7, r0                   |     r7 = r0;
    0x0003e158 strh r2, [r3, r5]             |     *((r3 + r5)) = r2;
    0x0003e15a movs r7, r0                   |     r7 = r0;
    0x0003e15c cmp r1, 0                     |     
    0x0003e15e it ne                         |     
                                             |     if (r1 != 0) {
    0x0003e160 cmpne r0, 0                   |         __asm ("cmpne r0, 0");
                                             |     }
    0x0003e162 push {r4, r5, r6, lr}         |     
    0x0003e164 mov r5, r0                    |     r5 = r0;
                                             |     if (r1 == 0) {
    0x0003e166 beq 0x3e19c                   |         goto label_2;
                                             |     }
    0x0003e168 mov r4, r2                    |     r4 = r2;
    0x0003e16a mov r0, r1                    |     r0 = r1;
    0x0003e16c mov r3, r5                    |     r3 = r5;
    0x0003e16e movs r2, 1                    |     r2 = 1;
    0x0003e170 mov r1, r4                    |     r1 = r4;
    0x0003e172 blx 0x1baf8                   |     r0 = fcn_0001baf8 ();
    0x0003e176 mov r6, r0                    |     r6 = r0;
    0x0003e178 cbz r0, 0x3e180               |     
                                             |     while (r0 == 0) {
    0x0003e17a mul r0, r6, r4                |         r0 = r6 * r4;
    0x0003e17e pop {r4, r5, r6, pc}          |         
    0x0003e180 mov r0, r5                    |         r0 = r5;
    0x0003e182 blx 0x1bd38                   |         r0 = fcn_0001bd38 ();
    0x0003e186 cmp r0, 0                     |         
    0x0003e188 beq 0x3e17a                   |         
                                             |     }
    0x0003e18a ldr r2, [pc, 0x18]            |     
    0x0003e18c mov r1, r6                    |     r1 = r6;
    0x0003e18e movs r0, 8                    |     r0 = 8;
    0x0003e190 add r2, pc                    |     r2 = 0x7c33a;
    0x0003e192 blx 0x1bcac                   |     fcn_0001bcac ();
    0x0003e196 mov.w r0, -1                  |     r0 = -1;
    0x0003e19a pop {r4, r5, r6, pc}          |     
                                             | label_2:
    0x0003e19c mov.w r0, -1                  |     r0 = -1;
    0x0003e1a0 pop {r4, r5, r6, pc}          |     
                                             | }


r2dec has crashed (info: /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libxml2.so.2.9.13 @ 0x57170).
Please report the bug at https://github.com/radareorg/r2dec-js/issues
Use the option '--issue' or the command 'pddi' to generate 
the needed data for the issue.
    ; 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 @ 0x7a038 */
                                                                     | #include <stdint.h>
                                                                     |  
    ; (fcn) fcn.0007a038 ()                                          | void fcn_0007a038 (int16_t arg_1a8h, int16_t arg_1c8h, int16_t arg_340h, int16_t arg1, uint32_t arg2) {
                                                                     |     int16_t var_30h;
                                                                     |     int16_t var_1ch;
                                                                     |     int16_t var_20h;
                                                                     |     int16_t var_24h;
                                                                     |     int16_t var_2ch;
                                                                     |     r0 = arg1;
                                                                     |     r1 = arg2;
    0x0007a038 blmi 0xfe4cca80                                       |     __asm ("blmi 0xfe4cca80");
    0x0007a03c push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}           |     
    0x0007a040 sub sp, 0x34                                          |     
    0x0007a042 add r2, pc                                            |     r2 += pc;
    0x0007a044 ldr.w sb, [pc, 0x23c]                                 |     sb = *(0x0007a284);
    0x0007a048 ldr r3, [r2, r3]                                      |     r3 = *((r2 + r3));
    0x0007a04a add sb, pc                                            |     sb += pc;
    0x0007a04c ldr r3, [r3]                                          |     r3 = *(r3);
    0x0007a04e str r3, [sp, 0x2c]                                    |     var_2ch = r3;
    0x0007a050 mov.w r3, 0                                           |     r3 = 0;
    0x0007a054 cmp r1, 0                                             |     
                                                                     |     if (r1 == 0) {
    0x0007a056 beq.w 0x7a16e                                         |         goto label_0;
                                                                     |     }
    0x0007a05a ldr r3, [r1, 4]                                       |     r3 = *((r1 + 4));
    0x0007a05c mov r5, r1                                            |     r5 = r1;
    0x0007a05e ands r4, r3, 2                                        |     r4 = r3 & 2;
                                                                     |     if (r4 != r3) {
    0x0007a062 bne 0x7a0de                                           |         goto label_1;
                                                                     |     }
    0x0007a064 orr r3, r3, 2                                         |     r3 |= 2;
    0x0007a068 mov r6, r0                                            |     r6 = r0;
    0x0007a06a str r3, [r1, 4]                                       |     *((r1 + 4)) = r3;
    0x0007a06c ldr r1, [r1, 0x2c]                                    |     r1 = *((r1 + 0x2c));
    0x0007a06e ldr r3, [r1, 4]                                       |     r3 = *((r1 + 4));
    0x0007a070 cmp r3, 0                                             |     
                                                                     |     if (r3 <= 0) {
    0x0007a072 ble 0x7a0d6                                           |         goto label_4;
                                                                     |     }
    0x0007a074 ldr r3, [pc, 0x210]                                   |     
    0x0007a076 mov r8, r0                                            |     r8 = r0;
    0x0007a078 add r3, pc                                            |     r3 = 0xf4304;
    0x0007a07a str r3, [sp, 0x1c]                                    |     var_1ch = r3;
    0x0007a07c ldr r3, [pc, 0x20c]                                   |     
    0x0007a07e add r3, pc                                            |     r3 = 0xf430e;
    0x0007a080 str r3, [sp, 0x20]                                    |     var_20h = r3;
    0x0007a082 ldr r3, [pc, 0x20c]                                   |     
    0x0007a084 add r3, pc                                            |     r3 = 0xf431a;
    0x0007a086 str r3, [sp, 0x24]                                    |     var_24h = r3;
                                                                     |     do {
    0x0007a088 ldr r3, [r1]                                          |         r3 = *(r1);
    0x0007a08a ldr.w sl, [r3, r4, lsl 2]                             |         offset_0 = r4 << 2;
                                                                     |         sl = *((r3 + offset_0));
    0x0007a08e ldr.w r3, [sl]                                        |         r3 = *(sl);
    0x0007a092 subs r3, 4                                            |         r3 -= 4;
    0x0007a094 cmp r3, 0x14                                          |         
                                                                     |         if (r3 <= 0x14) {
    0x0007a096 bhi 0x7a0b2                                           |             
    0x0007a098 tbb [pc, r3]                                          |             __asm ("tbb [0x0007a0a0]");
                                                                     |         }
    0x0007a0b2 cmp.w r8, 0                                           |         
                                                                     |         if (r8 != 0) {
    0x0007a0b6 beq 0x7a0cc                                           |             
    0x0007a0b8 ldr r2, [pc, 0x1d8]                                   |             
    0x0007a0ba movs r3, 0                                            |             r3 = 0;
    0x0007a0bc ldr r1, [pc, 0x1d8]                                   |             
    0x0007a0be mov r0, r8                                            |             r0 = r8;
    0x0007a0c0 str r3, [sp]                                          |             *(sp) = r3;
    0x0007a0c2 add r2, pc                                            |             r2 = 0xf435a;
    0x0007a0c4 add r1, pc                                            |             r1 = 0xf4360;
    0x0007a0c6 bl 0x7552c                                            |             fcn_0007552c (r0, r1, r2, r3);
    0x0007a0ca ldr r1, [r5, 0x2c]                                    |             r1 = *((r5 + 0x2c));
                                                                     |         }
    0x0007a0cc ldr r3, [r1, 4]                                       |         r3 = *((r1 + 4));
    0x0007a0ce adds r4, 1                                            |         r4++;
    0x0007a0d0 cmp r3, r4                                            |         
    0x0007a0d2 bgt 0x7a088                                           |         
                                                                     |     } while (r3 > r4);
    0x0007a0d4 mov r6, r8                                            |     r6 = r8;
                                                                     | label_4:
    0x0007a0d6 ldr r4, [r5, 0x18]                                    |     r4 = *((r5 + 0x18));
    0x0007a0d8 cmp r4, 0                                             |     
                                                                     |     if (r4 != 0) {
    0x0007a0da bne.w 0x7a204                                         |         goto label_5;
                                                                     |     }
                                                                     | label_1:
    0x0007a0de movs r0, 0                                            |     r0 = 0;
                                                                     |     do {
    0x0007a0e0 ldr r2, [pc, 0x1b8]                                   |         
    0x0007a0e2 ldr r3, [pc, 0x19c]                                   |         r3 = *(0x7a282);
    0x0007a0e4 add r2, pc                                            |         r2 = 0xf4384;
    0x0007a0e6 ldr r3, [r2, r3]                                      |         r3 = *(0xf4384);
    0x0007a0e8 ldr r2, [r3]                                          |         r2 = *(0xf4384);
    0x0007a0ea ldr r3, [sp, 0x2c]                                    |         r3 = var_2ch;
    0x0007a0ec eors r2, r3                                           |         r2 ^= r3;
    0x0007a0ee mov.w r3, 0                                           |         r3 = 0;
                                                                     |         if (r2 != r3) {
    0x0007a0f2 bne.w 0x7a276                                         |             goto label_6;
                                                                     |         }
    0x0007a0f6 add sp, 0x34                                          |         
    0x0007a0f8 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}            |         
                                                                     | label_0:
    0x0007a16e mov.w r0, -1                                          |         r0 = -1;
    0x0007a172 b 0x7a0e0                                             |         
                                                                     |     } while (1);
                                                                     | label_3:
    0x0007a1f2 mov r0, r6                                            |     r0 = r6;
    0x0007a1f4 bl 0x7a038                                            |     fcn_0007a038 (r0, r1, r2, r3, r4);
    0x0007a1f8 adds r0, 1                                            |     r0++;
                                                                     |     if (r0 == 1) {
    0x0007a1fa beq 0x7a16e                                           |         goto label_0;
                                                                     |     }
                                                                     | label_2:
    0x0007a1fc ldr r4, [r4]                                          |     r4 = *(r4);
    0x0007a1fe cmp r4, 0                                             |     
                                                                     |     if (r4 == 0) {
    0x0007a200 beq.w 0x7a0de                                         |         goto label_1;
                                                                     |     }
                                                                     | label_5:
    0x0007a204 ldr r1, [r4, 0xc]                                     |     r1 = *((r4 + 0xc));
    0x0007a206 cmp r1, 0                                             |     
                                                                     |     if (r1 == 0) {
    0x0007a208 beq 0x7a1fc                                           |         goto label_2;
                                                                     |     }
    0x0007a20a ldr r3, [r1, 4]                                       |     r3 = *((r1 + 4));
    0x0007a20c lsls r3, r3, 0x1e                                     |     r3 <<= 0x1e;
                                                                     |     if (r3 < r3) {
    0x0007a20e bmi 0x7a1fc                                           |         goto label_2;
                                                                     |     }
    0x0007a210 b 0x7a1f2                                             |     goto label_3;
                                                                     | label_6:
    0x0007a276 blx 0x1bb70                                           |     fputc (r0, r1);
    0x0007a27a nop                                                   |     
    0x0007a27c ldr r3, [sp, 0x1c8]                                   |     r3 = *(arg_1c8h);
    0x0007a27e movs r6, r0                                           |     r6 = r0;
    0x0007a280 lsls r0, r1, 0xf                                      |     r0 = r1 << 0xf;
    0x0007a282 movs r0, r0                                           |     
    0x0007a284 ldr r3, [sp, 0x1a8]                                   |     r3 = *(arg_1a8h);
    0x0007a286 movs r6, r0                                           |     r6 = r0;
    0x0007a288 cmp ip, sp                                            |     
    0x0007a28a movs r4, r0                                           |     r4 = r0;
    0x0007a28c adds r0, 0xa2                                         |     r0 += 0xa2;
    0x0007a28e movs r4, r0                                           |     r4 = r0;
    0x0007a290 cmp r6, 0xec                                          |     
    0x0007a292 movs r4, r0                                           |     r4 = r0;
    0x0007a294 cmp r6, r7                                            |     
    0x0007a296 movs r4, r0                                           |     r4 = r0;
    0x0007a298 cmp r0, ip                                            |     
    0x0007a29a movs r4, r0                                           |     r4 = r0;
    0x0007a29c ldr r2, [sp, 0x340]                                   |     r2 = *(arg_340h);
    0x0007a29e movs r6, r0                                           |     r6 = r0;
    0x0007a2a0 add lr, sl                                            |     lr += sl;
    0x0007a2a2 movs r4, r0                                           |     r4 = r0;
    0x0007a2a4 add ip, r7                                            |     
    0x0007a2a6 movs r4, r0                                           |     r4 = r0;
    0x0007a2a8 lsls r4, r6, 0x10                                     |     r4 = r6 << 0x10;
    0x0007a2aa movs r0, r0                                           |     
                                                                     | }
    ; 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 @ 0x9d004 */
                                                                         | #include <stdint.h>
                                                                         |  
    ; (fcn) fcn.0009d004 ()                                              | void fcn_0009d004 (int16_t arg1, uint32_t arg2, int16_t arg3) {
                                                                         |     r0 = arg1;
                                                                         |     r1 = arg2;
                                                                         |     r2 = arg3;
    0x0009d004 invalid                                                   |     
    0x0009d008 strh r2, [r6, 0xc]                                        |     *((r6 + 0xc)) = r2;
    0x0009d00a push.w {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}           |     
    0x0009d00e mov r6, r0                                                |     r6 = r0;
    0x0009d010 mov r7, r2                                                |     r7 = r2;
    0x0009d012 mov r4, r1                                                |     r4 = r1;
    0x0009d014 movs r5, 0                                                |     r5 = 0;
                                                                         |     do {
                                                                         | label_1:
    0x0009d016 ldr r3, [r4]                                              |         r3 = *(r4);
    0x0009d018 sub.w r1, r3, 0xb                                         |         r1 = r3 - 0xb;
    0x0009d01c bics r2, r1, 2                                            |         __asm ("bics r2, r1, 2");
                                                                         |         if (r5 != 0) {
    0x0009d020 bne 0x9d044                                               |             goto label_14;
                                                                         |         }
    0x0009d022 ldrsh.w r3, [r4, 0x30]                                    |         r3 = *((r4 + 0x30));
    0x0009d026 adds r3, 3                                                |         r3 += 3;
                                                                         |         if (r3 == 3) {
    0x0009d028 beq 0x9d0c0                                               |             goto label_15;
                                                                         |         }
    0x0009d02a movw r3, 0xfffd                                           |         r3 = 0xfffd;
    0x0009d02e ldr r1, [r4, 0x18]                                        |         r1 = *((r4 + 0x18));
    0x0009d030 mov r2, r4                                                |         r2 = r4;
    0x0009d032 strh r3, [r4, 0x30]                                       |         *((r4 + 0x30)) = r3;
    0x0009d034 mov r0, r6                                                |         r0 = r6;
    0x0009d036 bl 0x9d004                                                |         fcn_0009d004 (r0, r1, r2);
    0x0009d03a ldr r4, [r4, 0x20]                                        |         r4 = *((r4 + 0x20));
                                                                         | label_0:
    0x0009d03c cmp r4, 0                                                 |         
    0x0009d03e bne 0x9d016                                               |         
                                                                         |     } while (r4 != 0);
                                                                         | label_2:
    0x0009d040 pop.w {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}            |     
                                                                         | label_14:
    0x0009d044 cmp r3, 1                                                 |     
                                                                         |     if (r3 == 1) {
    0x0009d046 beq 0x9d07e                                               |         goto label_16;
                                                                         |     }
    0x0009d048 cmp r3, 0                                                 |     
                                                                         |     if (r3 != 0) {
    0x0009d04a bne 0x9d0c8                                               |         goto label_17;
                                                                         |     }
    0x0009d04c str r7, [r4, 0x1c]                                        |     *((r4 + 0x1c)) = r7;
    0x0009d04e cmp r7, 0                                                 |     
                                                                         |     if (r7 == 0) {
    0x0009d050 beq.w 0x9d158                                             |         goto label_18;
                                                                         |     }
    0x0009d054 ldr r3, [r7]                                              |     r3 = *(r7);
    0x0009d056 sub.w r2, r3, 0xf                                         |     r2 = r3 - 0xf;
    0x0009d05a cmp r2, 1                                                 |     
                                                                         |     if (r2 < 1) {
    0x0009d05c bls.w 0x9d32e                                             |         goto label_19;
                                                                         |     }
    0x0009d060 ldr r2, [r4, 0x20]                                        |     r2 = *((r4 + 0x20));
    0x0009d062 subs r3, 0x12                                             |     r3 -= 0x12;
    0x0009d064 cmp r3, 1                                                 |     
    0x0009d066 itt hi                                                    |     
                                                                         |     if (r3 <= 1) {
    0x0009d068 movhi r5, r4                                              |         r5 = r4;
                                                                         |     }
                                                                         |     if (r3 > 1) {
    0x0009d06a movhi r4, r2                                              |         r4 = r2;
                                                                         |         goto label_20;
                                                                         |     }
                                                                         |     if (r3 > 1) {
                                                                         | label_20:
    0x0009d06c bhi 0x9d03c                                               |         goto label_0;
                                                                         |     }
    0x0009d06e cmp r5, 0                                                 |     
                                                                         |     if (r5 == 0) {
    0x0009d070 beq.w 0x9d2fa                                             |         goto label_21;
                                                                         |     }
    0x0009d074 str r2, [r5, 0x20]                                        |     *((r5 + 0x20)) = r2;
    0x0009d076 ldr r4, [r4, 0x20]                                        |     r4 = *((r4 + 0x20));
    0x0009d078 cmp r4, 0                                                 |     
                                                                         |     if (r4 != 0) {
    0x0009d07a bne 0x9d016                                               |         goto label_1;
                                                                         |     }
    0x0009d07c b 0x9d040                                                 |     goto label_2;
                                                                         | label_16:
    0x0009d07e str r7, [r4, 0x1c]                                        |     *((r4 + 0x1c)) = r7;
    0x0009d080 cmp r7, 0                                                 |     
                                                                         |     if (r7 == 0) {
    0x0009d082 beq 0x9d158                                               |         goto label_18;
                                                                         |     }
    0x0009d084 ldr r2, [r7]                                              |     r2 = *(r7);
    0x0009d086 sub.w r3, r2, 8                                           |     r3 = r2 - 8;
    0x0009d08a sub.w r1, r2, 0x12                                        |     r1 = r2 - 0x12;
    0x0009d08e cmp r1, 1                                                 |     
    0x0009d090 it hi                                                     |     
                                                                         |     if (r1 > 1) {
    0x0009d092 cmphi r3, 1                                               |         __asm ("cmphi r3, 1");
                                                                         |     }
    0x0009d094 sub.w r1, r2, 0xf                                         |     r1 = r2 - 0xf;
    0x0009d098 ite ls                                                    |     
                                                                         |     if (r1 > 1) {
    0x0009d09a movls r3, 1                                               |         r3 = 1;
                                                                         |     }
                                                                         |     if (r1 <= 1) {
    0x0009d09c movhi r3, 0                                               |         r3 = 0;
                                                                         |     }
    0x0009d09e cmp r1, 1                                                 |     
    0x0009d0a0 it ls                                                     |     
                                                                         |     if (r1 > 1) {
    0x0009d0a2 orrls r3, r3, 1                                           |         r3 |= 1;
                                                                         |     }
    0x0009d0a6 cmp r3, 0                                                 |     
                                                                         |     if (r3 != 0) {
    0x0009d0a8 bne.w 0x9d2b0                                             |         goto label_22;
                                                                         |     }
    0x0009d0ac ldr r3, [r4, 0x20]                                        |     r3 = *((r4 + 0x20));
    0x0009d0ae cmp r2, 0x11                                              |     
    0x0009d0b0 itt ne                                                    |     
                                                                         |     if (r2 == 0x11) {
    0x0009d0b2 movne r5, r4                                              |         r5 = r4;
                                                                         |     }
                                                                         |     if (r2 != 0x11) {
    0x0009d0b4 movne r4, r3                                              |         r4 = r3;
                                                                         |         goto label_23;
                                                                         |     }
                                                                         |     if (r2 != 0x11) {
                                                                         | label_23:
    0x0009d0b6 bne 0x9d03c                                               |         goto label_0;
                                                                         |     }
    0x0009d0b8 cmp r5, 0                                                 |     
                                                                         |     if (r5 == 0) {
    0x0009d0ba beq.w 0x9d2c6                                             |         goto label_24;
                                                                         |     }
    0x0009d0be str r3, [r5, 0x20]                                        |     *((r5 + 0x20)) = r3;
                                                                         | label_15:
    0x0009d0c0 ldr r4, [r4, 0x20]                                        |     r4 = *((r4 + 0x20));
    0x0009d0c2 cmp r4, 0                                                 |     
                                                                         |     if (r4 != 0) {
    0x0009d0c4 bne 0x9d016                                               |         goto label_1;
                                                                         |     }
    0x0009d0c6 b 0x9d040                                                 |     goto label_2;
                                                                         | label_17:
    0x0009d0c8 ldr r1, [r4, 0x18]                                        |     r1 = *((r4 + 0x18));
    0x0009d0ca str r7, [r4, 0x1c]                                        |     *((r4 + 0x1c)) = r7;
                                                                         |     if (r1 != 0) {
    0x0009d0cc cbz r1, 0x9d0d8                                           |         
    0x0009d0ce mov r2, r4                                                |         r2 = r4;
    0x0009d0d0 mov r0, r6                                                |         r0 = r6;
    0x0009d0d2 bl 0x9d004                                                |         fcn_0009d004 (r0, r1, r2);
    0x0009d0d6 ldr r3, [r4]                                              |         r3 = *(r4);
                                                                         |     }
    0x0009d0d8 cmp r3, 7                                                 |     
                                                                         |     if (r3 == 7) {
    0x0009d0da beq 0x9d164                                               |         goto label_25;
                                                                         |     }
    0x0009d0dc ldr r1, [r4, 0x24]                                        |     r1 = *((r4 + 0x24));
                                                                         |     if (r1 != 0) {
    0x0009d0de cbz r1, 0x9d0e8                                           |         
    0x0009d0e0 mov r2, r4                                                |         r2 = r4;
    0x0009d0e2 mov r0, r6                                                |         r0 = r6;
    0x0009d0e4 bl 0x9d004                                                |         fcn_0009d004 (r0, r1, r2);
                                                                         |     }
    0x0009d0e8 ldr r1, [r4, 0x28]                                        |     r1 = *((r4 + 0x28));
                                                                         |     if (r1 != 0) {
    0x0009d0ea cbz r1, 0x9d0f4                                           |         
                                                                         | label_3:
    0x0009d0ec mov r2, r4                                                |         r2 = r4;
    0x0009d0ee mov r0, r6                                                |         r0 = r6;
    0x0009d0f0 bl 0x9d004                                                |         fcn_0009d004 (r0, r1, r2);
                                                                         |     }
    0x0009d0f4 ldr.w r8, [r4]                                            |     r8 = *(r4);
    0x0009d0f8 cmp.w r8, 4                                               |     
    0x0009d0fc mov r3, r8                                                |     r3 = r8;
                                                                         |     if (r8 == 4) {
    0x0009d0fe beq 0x9d1e8                                               |         goto label_26;
                                                                         |     }
    0x0009d100 sub.w r2, r8, 0x12                                        |     r2 = r8 - 0x12;
    0x0009d104 cmp r2, 1                                                 |     
                                                                         |     if (r2 > 1) {
    0x0009d106 bhi 0x9d16a                                               |         goto label_27;
                                                                         |     }
    0x0009d108 ldr r1, [r4, 0x18]                                        |     r1 = *((r4 + 0x18));
    0x0009d10a cmp r1, 0                                                 |     
                                                                         |     if (r1 == 0) {
    0x0009d10c beq.w 0x9d258                                             |         goto label_28;
                                                                         |     }
    0x0009d110 ldr r2, [r1, 0x20]                                        |     r2 = *((r1 + 0x20));
    0x0009d112 cmp r2, 0                                                 |     
                                                                         |     if (r2 == 0) {
    0x0009d114 beq.w 0x9d29a                                             |         goto label_29;
                                                                         |     }
    0x0009d118 clz r3, r8                                                |     r3 &= r8;
    0x0009d11c cmp r7, 0                                                 |     
    0x0009d11e lsr.w r3, r3, 5                                           |     r3 >>= 5;
    0x0009d122 it eq                                                     |     
                                                                         |     if (r7 != 0) {
    0x0009d124 moveq r3, 0                                               |         r3 = 0;
                                                                         |     }
                                                                         | label_13:
    0x0009d126 mov r2, r4                                                |     r2 = r4;
    0x0009d128 cmp r3, 0                                                 |     
                                                                         |     if (r3 == 0) {
    0x0009d12a beq.w 0x9d268                                             |         goto label_30;
                                                                         |     }
                                                                         | label_8:
    0x0009d12e ldr r3, [r7]                                              |     r3 = *(r7);
    0x0009d130 sub.w r1, r3, 0xf                                         |     r1 = r3 - 0xf;
    0x0009d134 cmp r1, 1                                                 |     
                                                                         |     if (r1 < 1) {
    0x0009d136 bls.w 0x9d32e                                             |         goto label_19;
                                                                         |     }
    0x0009d13a subs r3, 0x11                                             |     r3 -= 0x11;
    0x0009d13c ldr r4, [r4, 0x20]                                        |     r4 = *((r4 + 0x20));
    0x0009d13e cmp r3, 2                                                 |     
    0x0009d140 it hi                                                     |     
                                                                         |     if (r3 > 2) {
    0x0009d142 movhi r5, r2                                              |         r5 = r2;
                                                                         |         goto label_31;
                                                                         |     }
                                                                         |     if (r3 > 2) {
                                                                         | label_31:
    0x0009d144 bhi.w 0x9d03c                                             |         goto label_0;
                                                                         |     }
    0x0009d148 cmp r5, 0                                                 |     
                                                                         |     if (r5 == 0) {
    0x0009d14a beq.w 0x9d334                                             |         goto label_32;
                                                                         |     }
                                                                         | label_5:
    0x0009d14e str r4, [r5, 0x20]                                        |     *((r5 + 0x20)) = r4;
    0x0009d150 cmp r4, 0                                                 |     
                                                                         |     if (r4 != 0) {
    0x0009d152 bne.w 0x9d016                                             |         goto label_1;
                                                                         |     }
    0x0009d156 b 0x9d040                                                 |     goto label_2;
                                                                         | label_18:
    0x0009d158 mov r5, r4                                                |     r5 = r4;
    0x0009d15a ldr r4, [r4, 0x20]                                        |     r4 = *((r4 + 0x20));
    0x0009d15c cmp r4, 0                                                 |     
                                                                         |     if (r4 != 0) {
    0x0009d15e bne.w 0x9d016                                             |         goto label_1;
                                                                         |     }
    0x0009d162 b 0x9d040                                                 |     goto label_2;
                                                                         | label_25:
    0x0009d164 ldr r1, [r4, 0x28]                                        |     r1 = *((r4 + 0x28));
    0x0009d166 cmp r1, 0                                                 |     
                                                                         |     if (r1 != 0) {
    0x0009d168 bne 0x9d0ec                                               |         goto label_3;
                                                                         |     }
                                                                         | label_27:
    0x0009d16a mov r8, r3                                                |     r8 = r3;
    0x0009d16c mov r1, r4                                                |     r1 = r4;
                                                                         | label_10:
    0x0009d16e cmp.w r8, 2                                               |     
                                                                         |     if (r8 != 2) {
    0x0009d172 bne 0x9d18a                                               |         goto label_33;
                                                                         |     }
    0x0009d174 ldr r3, [r1, 0x18]                                        |     r3 = *((r1 + 0x18));
    0x0009d176 ldr r4, [r1, 0x20]                                        |     r4 = *((r1 + 0x20));
                                                                         |     if (r3 != 0) {
    0x0009d178 cbz r3, 0x9d180                                           |         
    0x0009d17a ldr r3, [r3]                                              |         r3 = *(r3);
    0x0009d17c cmp r3, 1                                                 |         
                                                                         |         if (r3 == 1) {
    0x0009d17e beq 0x9d274                                               |             goto label_34;
                                                                         |         }
                                                                         |     }
                                                                         | label_4:
    0x0009d180 mov r5, r1                                                |     r5 = r1;
    0x0009d182 cmp r4, 0                                                 |     
                                                                         |     if (r4 != 0) {
    0x0009d184 bne.w 0x9d016                                             |         goto label_1;
                                                                         |     }
    0x0009d188 b 0x9d040                                                 |     goto label_2;
                                                                         | label_33:
    0x0009d18a cmp.w r8, 1                                               |     
                                                                         |     if (r8 != 1) {
    0x0009d18e bne.w 0x9d370                                             |         goto label_35;
                                                                         |     }
    0x0009d192 cmp r7, 0                                                 |     
                                                                         |     if (r7 == 0) {
    0x0009d194 beq 0x9d28e                                               |         goto label_36;
                                                                         |     }
    0x0009d196 ldr r2, [r7]                                              |     r2 = *(r7);
    0x0009d198 sub.w r3, r2, 0x12                                        |     r3 = r2 - 0x12;
    0x0009d19c sub.w r0, r2, 8                                           |     r0 = r2 - 8;
    0x0009d1a0 cmp r0, 1                                                 |     
    0x0009d1a2 it hi                                                     |     
                                                                         |     if (r0 > 1) {
    0x0009d1a4 cmphi r3, 1                                               |         __asm ("cmphi r3, 1");
                                                                         |     }
    0x0009d1a6 sub.w r0, r2, 0xf                                         |     r0 = r2 - 0xf;
    0x0009d1aa ite ls                                                    |     
                                                                         |     if (r0 > 1) {
    0x0009d1ac movls r3, 1                                               |         r3 = 1;
                                                                         |     }
                                                                         |     if (r0 <= 1) {
    0x0009d1ae movhi r3, 0                                               |         r3 = 0;
                                                                         |     }
    0x0009d1b0 cmp r0, 1                                                 |     
    0x0009d1b2 it ls                                                     |     
                                                                         |     if (r0 > 1) {
    0x0009d1b4 orrls r3, r3, 1                                           |         r3 |= 1;
                                                                         |     }
    0x0009d1b8 cmp r3, 0                                                 |     
                                                                         |     if (r3 != 0) {
    0x0009d1ba bne 0x9d2b0                                               |         goto label_22;
                                                                         |     }
    0x0009d1bc cmp r2, 0x11                                              |     
    0x0009d1be ldr r4, [r1, 0x20]                                        |     r4 = *((r1 + 0x20));
                                                                         |     if (r2 != 0x11) {
    0x0009d1c0 bne 0x9d180                                               |         goto label_4;
                                                                         |     }
    0x0009d1c2 cmp r5, 0                                                 |     
                                                                         |     if (r5 != 0) {
    0x0009d1c4 bne 0x9d14e                                               |         goto label_5;
                                                                         |     }
                                                                         | label_9:
    0x0009d1c6 ldr r3, [r7, 0x18]                                        |     r3 = *((r7 + 0x18));
    0x0009d1c8 cmp r1, r3                                                |     
                                                                         |     if (r1 == r3) {
    0x0009d1ca beq.w 0x9d35a                                             |         goto label_37;
                                                                         |     }
    0x0009d1ce ldr r3, [r7, 0x24]                                        |     r3 = *((r7 + 0x24));
    0x0009d1d0 cmp r1, r3                                                |     
                                                                         |     if (r1 == r3) {
    0x0009d1d2 beq.w 0x9d364                                             |         goto label_38;
                                                                         |     }
    0x0009d1d6 ldr r3, [r7, 0x28]                                        |     r3 = *((r7 + 0x28));
    0x0009d1d8 cmp r1, r3                                                |     
                                                                         |     if (r1 != r3) {
    0x0009d1da bne.w 0x9d03c                                             |         goto label_0;
                                                                         |     }
                                                                         | label_12:
    0x0009d1de str r4, [r7, 0x28]                                        |     *((r7 + 0x28)) = r4;
    0x0009d1e0 cmp r4, 0                                                 |     
                                                                         |     if (r4 != 0) {
    0x0009d1e2 bne.w 0x9d016                                             |         goto label_1;
                                                                         |     }
    0x0009d1e6 b 0x9d040                                                 |     goto label_2;
                                                                         | label_26:
    0x0009d1e8 ldr r3, [r4, 0x18]                                        |     r3 = *((r4 + 0x18));
    0x0009d1ea mov r0, r3                                                |     r0 = r3;
    0x0009d1ec cmp r3, 0                                                 |     
                                                                         |     if (r3 == 0) {
    0x0009d1ee beq.w 0x9d372                                             |         goto label_39;
                                                                         |     }
    0x0009d1f2 ldr.w fp, [r6, 0x24]                                      |     fp = *((r6 + 0x24));
    0x0009d1f6 cmp.w fp, 0                                               |     
                                                                         |     if (fp == 0) {
    0x0009d1fa beq 0x9d234                                               |         goto label_40;
                                                                         |     }
                                                                         | label_6:
    0x0009d1fc mov sb, r3                                                |     sb = r3;
    0x0009d1fe cmp r3, 0                                                 |     
                                                                         |     if (r3 == 0) {
    0x0009d200 beq.w 0x9d372                                             |         goto label_39;
                                                                         |     }
                                                                         |     do {
                                                                         | label_7:
    0x0009d204 ldr.w sl, [sb, 0x20]                                      |         sl = *((sb + 0x20));
    0x0009d208 mov r0, sl                                                |         r0 = sl;
    0x0009d20a cmp.w sl, 0                                               |         
                                                                         |         if (sl == 0) {
    0x0009d20e beq.w 0x9d372                                             |             goto label_39;
                                                                         |         }
    0x0009d212 cmp.w fp, 0                                               |         
                                                                         |         if (fp == 0) {
    0x0009d216 bne 0x9d220                                               |             
    0x0009d218 bl 0x98bf0                                                |             r0 = fcn_00098bf0 (r0);
    0x0009d21c cmp r0, 1                                                 |             
                                                                         |             if (r0 == 1) {
    0x0009d21e beq 0x9d240                                               |                 goto label_41;
                                                                         |             }
                                                                         |         }
    0x0009d220 mov sb, sl                                                |         sb = sl;
    0x0009d222 b 0x9d204                                                 |         
                                                                         |     } while (1);
                                                                         |     do {
    0x0009d224 ldr r0, [r3, 0x20]                                        |         r0 = *((r3 + 0x20));
    0x0009d226 ldr r1, [r4, 0x24]                                        |         r1 = *((r4 + 0x24));
    0x0009d228 str r0, [r4, 0x18]                                        |         *((r4 + 0x18)) = r0;
    0x0009d22a str r1, [r3, 0x20]                                        |         *((r3 + 0x20)) = r1;
    0x0009d22c str r3, [r4, 0x24]                                        |         *((r4 + 0x24)) = r3;
    0x0009d22e cmp r0, 0                                                 |         
                                                                         |         if (r0 == 0) {
    0x0009d230 beq.w 0x9d372                                             |             goto label_39;
                                                                         |         }
                                                                         | label_40:
    0x0009d234 bl 0x98bf0                                                |         r0 = fcn_00098bf0 (r0);
    0x0009d238 cmp r0, 1                                                 |         
    0x0009d23a ldr r3, [r4, 0x18]                                        |         r3 = *((r4 + 0x18));
    0x0009d23c beq 0x9d224                                               |         
                                                                         |     } while (r0 == 1);
    0x0009d23e b 0x9d1fc                                                 |     goto label_6;
                                                                         | label_41:
    0x0009d240 ldr.w r1, [sl, 0x20]                                      |     r1 = *((sl + 0x20));
    0x0009d244 ldr r0, [r4, 0x24]                                        |     r0 = *((r4 + 0x24));
    0x0009d246 str.w r1, [sb, 0x20]                                      |     __asm ("str.w r1, [sb, 0x20]");
    0x0009d24a str.w r0, [sl, 0x20]                                      |     __asm ("str.w r0, [sl, 0x20]");
    0x0009d24e str.w sl, [r4, 0x24]                                      |     __asm ("str.w sl, [r4, 0x24]");
    0x0009d252 mov sl, sb                                                |     sl = sb;
    0x0009d254 mov sb, sl                                                |     sb = sl;
    0x0009d256 b 0x9d204                                                 |     goto label_7;
                                                                         | label_28:
    0x0009d258 subs r3, r7, 0                                            |     r3 = r7 - 0;
    0x0009d25a mov r2, r4                                                |     r2 = r4;
    0x0009d25c it ne                                                     |     
                                                                         |     if (r3 == r7) {
    0x0009d25e movne r3, 1                                               |         r3 = 1;
                                                                         |     }
    0x0009d260 str r1, [r4]                                              |     *(r4) = r1;
    0x0009d262 cmp r3, 0                                                 |     
                                                                         |     if (r3 != 0) {
    0x0009d264 bne.w 0x9d12e                                             |         goto label_8;
                                                                         |     }
                                                                         | label_30:
    0x0009d268 ldr r4, [r4, 0x20]                                        |     r4 = *((r4 + 0x20));
    0x0009d26a mov r5, r2                                                |     r5 = r2;
                                                                         | label_11:
    0x0009d26c cmp r4, 0                                                 |     
                                                                         |     if (r4 != 0) {
    0x0009d26e bne.w 0x9d016                                             |         goto label_1;
                                                                         |     }
    0x0009d272 b 0x9d040                                                 |     goto label_2;
                                                                         | label_34:
    0x0009d274 cmp r5, 0                                                 |     
                                                                         |     if (r5 != 0) {
    0x0009d276 bne.w 0x9d14e                                             |         goto label_5;
                                                                         |     }
    0x0009d27a cmp r7, 0                                                 |     
                                                                         |     if (r7 != 0) {
    0x0009d27c bne 0x9d1c6                                               |         goto label_9;
                                                                         |     }
    0x0009d27e mov.w r3, -1                                              |     r3 = -1;
    0x0009d282 mov r5, r1                                                |     r5 = r1;
    0x0009d284 str r3, [r1]                                              |     *(r1) = r3;
    0x0009d286 cmp r4, 0                                                 |     
                                                                         |     if (r4 != 0) {
    0x0009d288 bne.w 0x9d016                                             |         goto label_1;
                                                                         |     }
    0x0009d28c b 0x9d040                                                 |     goto label_2;
                                                                         | label_36:
    0x0009d28e ldr r4, [r1, 0x20]                                        |     r4 = *((r1 + 0x20));
    0x0009d290 mov r5, r1                                                |     r5 = r1;
    0x0009d292 cmp r4, 0                                                 |     
                                                                         |     if (r4 != 0) {
    0x0009d294 bne.w 0x9d016                                             |         goto label_1;
                                                                         |     }
    0x0009d298 b 0x9d040                                                 |     goto label_2;
                                                                         | label_29:
    0x0009d29a orrs.w r3, r5, r7                                         |     r3 = r5 | r7;
                                                                         |     if (r3 != r5) {
    0x0009d29e beq 0x9d2b8                                               |         
    0x0009d2a0 ldr r3, [r4, 0x20]                                        |         r3 = *((r4 + 0x20));
    0x0009d2a2 cmp r5, 0                                                 |         
                                                                         |         if (r5 == 0) {
    0x0009d2a4 beq 0x9d350                                               |             goto label_42;
                                                                         |         }
    0x0009d2a6 str r3, [r1, 0x20]                                        |         *((r1 + 0x20)) = r3;
    0x0009d2a8 ldr.w r8, [r1]                                            |         r8 = *(r1);
    0x0009d2ac str r1, [r5, 0x20]                                        |         *((r5 + 0x20)) = r1;
    0x0009d2ae b 0x9d16e                                                 |         goto label_10;
                                                                         | label_22:
    0x0009d2b0 movs r3, 1                                                |         r3 = 1;
    0x0009d2b2 str r3, [r7]                                              |         *(r7) = r3;
    0x0009d2b4 pop.w {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}            |         
                                                                         |     }
    0x0009d2b8 mov r2, r4                                                |     r2 = r4;
    0x0009d2ba mov.w r3, -1                                              |     r3 = -1;
    0x0009d2be str r3, [r4]                                              |     *(r4) = r3;
    0x0009d2c0 mov r5, r2                                                |     r5 = r2;
    0x0009d2c2 ldr r4, [r4, 0x20]                                        |     r4 = *((r4 + 0x20));
    0x0009d2c4 b 0x9d26c                                                 |     goto label_11;
                                                                         | label_24:
    0x0009d2c6 ldr r2, [r7, 0x18]                                        |     r2 = *((r7 + 0x18));
    0x0009d2c8 cmp r2, r4                                                |     
    0x0009d2ca itt eq                                                    |     
                                                                         |     if (r2 != r4) {
    0x0009d2cc moveq r4, r3                                              |         r4 = r3;
                                                                         |     }
                                                                         |     if (r2 == r4) {
    0x0009d2ce streq r3, [r7, 0x18]                                      |         *((r7 + 0x18)) = r3;
                                                                         |         goto label_43;
                                                                         |     }
                                                                         |     if (r2 == r4) {
                                                                         | label_43:
    0x0009d2d0 beq.w 0x9d03c                                             |         goto label_0;
                                                                         |     }
    0x0009d2d4 ldr r2, [r7, 0x24]                                        |     r2 = *((r7 + 0x24));
    0x0009d2d6 cmp r2, r4                                                |     
    0x0009d2d8 itt eq                                                    |     
                                                                         |     if (r2 != r4) {
    0x0009d2da moveq r4, r3                                              |         r4 = r3;
                                                                         |     }
                                                                         |     if (r2 == r4) {
    0x0009d2dc streq r3, [r7, 0x24]                                      |         *((r7 + 0x24)) = r3;
                                                                         |         goto label_44;
                                                                         |     }
                                                                         |     if (r2 == r4) {
                                                                         | label_44:
    0x0009d2de beq.w 0x9d03c                                             |         goto label_0;
                                                                         |     }
    0x0009d2e2 ldr r2, [r7, 0x28]                                        |     r2 = *((r7 + 0x28));
    0x0009d2e4 cmp r2, r4                                                |     
    0x0009d2e6 itt eq                                                    |     
                                                                         |     if (r2 != r4) {
    0x0009d2e8 moveq r4, r3                                              |         r4 = r3;
                                                                         |     }
                                                                         |     if (r2 == r4) {
    0x0009d2ea streq r3, [r7, 0x28]                                      |         *((r7 + 0x28)) = r3;
                                                                         |         goto label_45;
                                                                         |     }
                                                                         |     if (r2 == r4) {
                                                                         | label_45:
    0x0009d2ec beq.w 0x9d03c                                             |         goto label_0;
                                                                         |     }
    0x0009d2f0 mov r4, r3                                                |     r4 = r3;
    0x0009d2f2 cmp r4, 0                                                 |     
                                                                         |     if (r4 != 0) {
    0x0009d2f4 bne.w 0x9d016                                             |         goto label_1;
                                                                         |     }
    0x0009d2f8 b 0x9d040                                                 |     goto label_2;
                                                                         | label_21:
    0x0009d2fa ldr r3, [r7, 0x18]                                        |     r3 = *((r7 + 0x18));
    0x0009d2fc cmp r3, r4                                                |     
    0x0009d2fe itt eq                                                    |     
                                                                         |     if (r3 != r4) {
    0x0009d300 moveq r4, r2                                              |         r4 = r2;
                                                                         |     }
                                                                         |     if (r3 == r4) {
    0x0009d302 streq r2, [r7, 0x18]                                      |         *((r7 + 0x18)) = r2;
                                                                         |         goto label_46;
                                                                         |     }
                                                                         |     if (r3 == r4) {
                                                                         | label_46:
    0x0009d304 beq.w 0x9d03c                                             |         goto label_0;
                                                                         |     }
    0x0009d308 ldr r3, [r7, 0x24]                                        |     r3 = *((r7 + 0x24));
    0x0009d30a cmp r3, r4                                                |     
    0x0009d30c itt eq                                                    |     
                                                                         |     if (r3 != r4) {
    0x0009d30e moveq r4, r2                                              |         r4 = r2;
                                                                         |     }
                                                                         |     if (r3 == r4) {
    0x0009d310 streq r2, [r7, 0x24]                                      |         *((r7 + 0x24)) = r2;
                                                                         |         goto label_47;
                                                                         |     }
                                                                         |     if (r3 == r4) {
                                                                         | label_47:
    0x0009d312 beq.w 0x9d03c                                             |         goto label_0;
                                                                         |     }
    0x0009d316 ldr r3, [r7, 0x28]                                        |     r3 = *((r7 + 0x28));
    0x0009d318 cmp r3, r4                                                |     
    0x0009d31a itt eq                                                    |     
                                                                         |     if (r3 != r4) {
    0x0009d31c moveq r4, r2                                              |         r4 = r2;
                                                                         |     }
                                                                         |     if (r3 == r4) {
    0x0009d31e streq r2, [r7, 0x28]                                      |         *((r7 + 0x28)) = r2;
                                                                         |         goto label_48;
                                                                         |     }
                                                                         |     if (r3 == r4) {
                                                                         | label_48:
    0x0009d320 beq.w 0x9d03c                                             |         goto label_0;
                                                                         |     }
    0x0009d324 mov r4, r2                                                |     r4 = r2;
    0x0009d326 cmp r4, 0                                                 |     
                                                                         |     if (r4 != 0) {
    0x0009d328 bne.w 0x9d016                                             |         goto label_1;
                                                                         |     }
    0x0009d32c b 0x9d040                                                 |     goto label_2;
                                                                         | label_19:
    0x0009d32e movs r3, 0                                                |     r3 = 0;
    0x0009d330 str r3, [r7]                                              |     *(r7) = r3;
    0x0009d332 b 0x9d040                                                 |     goto label_2;
                                                                         | label_32:
    0x0009d334 ldr r3, [r7, 0x18]                                        |     r3 = *((r7 + 0x18));
    0x0009d336 cmp r3, r2                                                |     
                                                                         |     if (r3 == r2) {
    0x0009d338 beq 0x9d35a                                               |         goto label_37;
                                                                         |     }
    0x0009d33a ldr r3, [r7, 0x24]                                        |     r3 = *((r7 + 0x24));
    0x0009d33c cmp r3, r2                                                |     
                                                                         |     if (r3 == r2) {
    0x0009d33e beq 0x9d364                                               |         goto label_38;
                                                                         |     }
    0x0009d340 ldr r3, [r7, 0x28]                                        |     r3 = *((r7 + 0x28));
    0x0009d342 cmp r3, r2                                                |     
                                                                         |     if (r3 == r2) {
    0x0009d344 beq.w 0x9d1de                                             |         goto label_12;
                                                                         |     }
    0x0009d348 cmp r4, 0                                                 |     
                                                                         |     if (r4 != 0) {
    0x0009d34a bne.w 0x9d016                                             |         goto label_1;
                                                                         |     }
    0x0009d34e b 0x9d040                                                 |     goto label_2;
                                                                         | label_42:
    0x0009d350 str r1, [r7, 0x18]                                        |     *((r7 + 0x18)) = r1;
    0x0009d352 ldr.w r8, [r1]                                            |     r8 = *(r1);
    0x0009d356 str r3, [r1, 0x20]                                        |     *((r1 + 0x20)) = r3;
    0x0009d358 b 0x9d16e                                                 |     goto label_10;
                                                                         | label_37:
    0x0009d35a str r4, [r7, 0x18]                                        |     *((r7 + 0x18)) = r4;
    0x0009d35c cmp r4, 0                                                 |     
                                                                         |     if (r4 != 0) {
    0x0009d35e bne.w 0x9d016                                             |         goto label_1;
                                                                         |     }
    0x0009d362 b 0x9d040                                                 |     goto label_2;
                                                                         | label_38:
    0x0009d364 str r4, [r7, 0x24]                                        |     *((r7 + 0x24)) = r4;
    0x0009d366 cmp r4, 0                                                 |     
                                                                         |     if (r4 != 0) {
    0x0009d368 bne.w 0x9d016                                             |         goto label_1;
                                                                         |     }
    0x0009d36c b 0x9d040                                                 |     goto label_2;
    0x0009d36e bx lr                                                     |     return;
                                                                         | label_35:
    0x0009d370 mov r4, r1                                                |     r4 = r1;
                                                                         | label_39:
    0x0009d372 clz r3, r8                                                |     r3 &= r8;
    0x0009d376 cmp r7, 0                                                 |     
    0x0009d378 lsr.w r3, r3, 5                                           |     r3 >>= 5;
    0x0009d37c it eq                                                     |     
                                                                         |     if (r7 != 0) {
    0x0009d37e moveq r3, 0                                               |         r3 = 0;
                                                                         |     }
    0x0009d380 b 0x9d126                                                 |     goto label_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 @ 0xa99d0 */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) fcn.000a99d0 ()                                      | void fcn_000a99d0 (int16_t arg1) {
                                                                 |     r0 = arg1;
    0x000a99d0 push.w {r4, r5, r6, r7, r8, sb, sl, lr}           |     
    0x000a99d4 mov r4, r0                                        |     r4 = r0;
    0x000a99d6 ldr r6, [pc, 0x1f4]                               |     
    0x000a99d8 ldr r2, [r0]                                      |     r2 = *(r0);
    0x000a99da add r6, pc                                        |     r6 = 0x1535ac;
    0x000a99dc b 0xa99e2                                         |     
                                                                 |     while (r1 != 0) {
    0x000a99de adds r2, 1                                        |         r2++;
    0x000a99e0 str r2, [r4]                                      |         *(r4) = r2;
    0x000a99e2 ldrb r3, [r2]                                     |         r3 = *(r2);
    0x000a99e4 cmp r3, 0x20                                      |         
    0x000a99e6 it ne                                             |         
                                                                 |         if (r3 != 0x20) {
    0x000a99e8 cmpne r3, 0xd                                     |             __asm ("cmpne r3, 0xd");
                                                                 |         }
    0x000a99ea sub.w r3, r3, 9                                   |         r3 -= 9;
    0x000a99ee ite eq                                            |         
                                                                 |         if (r3 != 0x20) {
    0x000a99f0 moveq r1, 1                                       |             r1 = 1;
                                                                 |         }
                                                                 |         if (r3 == 0x20) {
    0x000a99f2 movne r1, 0                                       |             r1 = 0;
                                                                 |         }
    0x000a99f4 cmp r3, 1                                         |         
    0x000a99f6 it ls                                             |         
                                                                 |         if (r3 > 1) {
    0x000a99f8 orrls r1, r1, 1                                   |             r1 |= 1;
                                                                 |         }
    0x000a99fc cmp r1, 0                                         |         
    0x000a99fe bne 0xa99de                                       |         
                                                                 |     }
    0x000a9a00 mov r0, r4                                        |     r0 = r4;
    0x000a9a02 bl 0xa9250                                        |     r0 = fcn_000a9250 (r0, r1, r2, r3, r4, r5);
    0x000a9a06 mov r5, r0                                        |     r5 = r0;
                                                                 |     if (r0 == 0) {
    0x000a9a08 cbz r0, 0xa9a4e                                   |         goto label_9;
                                                                 |     }
    0x000a9a0a ldr r3, [r4]                                      |     r3 = *(r4);
    0x000a9a0c ldrb r2, [r3]                                     |     r2 = *(r3);
    0x000a9a0e cmp r2, 0x3a                                      |     
                                                                 |     if (r2 != 0x3a) {
    0x000a9a10 bne 0xa9a40                                       |         goto label_10;
                                                                 |     }
    0x000a9a12 adds r2, r3, 1                                    |     r2 = r3 + 1;
    0x000a9a14 str r2, [r4]                                      |     *(r4) = r2;
    0x000a9a16 ldrb r3, [r3, 1]                                  |     r3 = *((r3 + 1));
    0x000a9a18 cmp r3, 0x20                                      |     
    0x000a9a1a it ne                                             |     
                                                                 |     if (r3 != 0x20) {
    0x000a9a1c cmpne r3, 0xd                                     |         __asm ("cmpne r3, 0xd");
                                                                 |     }
    0x000a9a1e sub.w r3, r3, 9                                   |     r3 -= 9;
    0x000a9a22 ite eq                                            |     
                                                                 |     if (r3 != 0x20) {
    0x000a9a24 moveq r2, 1                                       |         r2 = 1;
                                                                 |     }
                                                                 |     if (r3 == 0x20) {
    0x000a9a26 movne r2, 0                                       |         r2 = 0;
                                                                 |     }
    0x000a9a28 cmp r3, 1                                         |     
    0x000a9a2a it ls                                             |     
                                                                 |     if (r3 > 1) {
    0x000a9a2c orrls r2, r2, 1                                   |         r2 |= 1;
                                                                 |     }
                                                                 |     if (r2 == 0) {
    0x000a9a30 cbz r2, 0xa9a7e                                   |         goto label_11;
                                                                 |     }
    0x000a9a32 ldr r3, [r4, 0x10]                                |     r3 = *((r4 + 0x10));
    0x000a9a34 ldr r3, [r3, 4]                                   |     r3 = *((r3 + 4));
                                                                 |     if (r3 == 0) {
    0x000a9a36 cbz r3, 0xa9a74                                   |         goto label_12;
                                                                 |     }
                                                                 |     do {
                                                                 | label_1:
    0x000a9a38 movs r3, 1                                        |         r3 = 1;
    0x000a9a3a str r3, [r4, 8]                                   |         *((r4 + 8)) = r3;
                                                                 | label_0:
    0x000a9a3c pop.w {r4, r5, r6, r7, r8, sb, sl, pc}            |         
                                                                 | label_10:
    0x000a9a40 ldr r0, [r4, 0x10]                                |         r0 = *((r4 + 0x10));
    0x000a9a42 mov r2, r5                                        |         r2 = r5;
    0x000a9a44 movs r3, 0                                        |         r3 = 0;
    0x000a9a46 pop.w {r4, r5, r6, r7, r8, sb, sl, lr}            |         
    0x000a9a4a movs r1, 4                                        |         r1 = 4;
    0x000a9a4c b 0xa996c                                         |         void (*0xa996c)() ();
                                                                 | label_9:
    0x000a9a4e ldr r3, [r4]                                      |         r3 = *(r4);
    0x000a9a50 ldrb r3, [r3]                                     |         r3 = *(r3);
    0x000a9a52 cmp r3, 0x2a                                      |         
    0x000a9a54 bne 0xa9a38                                       |         
                                                                 |     } while (r3 != 0x2a);
    0x000a9a56 mov r3, r0                                        |     r3 = r0;
    0x000a9a58 mov r2, r0                                        |     r2 = r0;
    0x000a9a5a movs r1, 4                                        |     r1 = 4;
    0x000a9a5c ldr r0, [r4, 0x10]                                |     r0 = *((r4 + 0x10));
    0x000a9a5e bl 0xa996c                                        |     r0 = fcn_000a996c (r0, r1, r2, r3);
    0x000a9a62 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x000a9a64 bne 0xa9a3c                                       |         goto label_0;
                                                                 |     }
    0x000a9a66 ldr r3, [r4]                                      |     r3 = *(r4);
    0x000a9a68 ldrb r2, [r3]                                     |     r2 = *(r3);
    0x000a9a6a cmp r2, 0                                         |     
                                                                 |     if (r2 == 0) {
    0x000a9a6c beq 0xa9a3c                                       |         goto label_0;
                                                                 |     }
    0x000a9a6e adds r3, 1                                        |     r3++;
    0x000a9a70 str r3, [r4]                                      |     *(r4) = r3;
    0x000a9a72 b 0xa9a3c                                         |     goto label_0;
                                                                 | label_12:
    0x000a9a74 ldr r3, [pc, 0x158]                               |     
    0x000a9a76 ldr r3, [r6, r3]                                  |     r3 = *((r6 + r3));
    0x000a9a78 ldr r3, [r3]                                      |     r3 = *(0xa9bd0);
    0x000a9a7a blx r3                                            |     uint32_t (*r3)(uint32_t) (r3);
    0x000a9a7c b 0xa9a38                                         |     goto label_1;
                                                                 | label_11:
    0x000a9a7e mov r0, r4                                        |     r0 = r4;
    0x000a9a80 bl 0xa9434                                        |     fcn_000a9434 (r0, r1, r2, r3, r4, r5);
    0x000a9a84 ldrb r3, [r5]                                     |     r3 = *(r5);
    0x000a9a86 mov sb, r0                                        |     sb = r0;
    0x000a9a88 cmp r3, 0x78                                      |     
                                                                 |     if (r3 == 0x78) {
    0x000a9a8a beq 0xa9b34                                       |         goto label_13;
                                                                 |     }
                                                                 | label_3:
    0x000a9a8c ldr r3, [r4, 0x1c]                                |     r3 = *((r4 + 0x1c));
    0x000a9a8e cmp r3, 0                                         |     
    0x000a9a90 itt gt                                            |     
                                                                 |     if (r3 <= 0) {
    0x000a9a92 movgt r7, 0                                       |         r7 = 0;
                                                                 |     }
                                                                 |     if (r3 <= 0) {
    0x000a9a94 movgt r8, r7                                      |         r8 = r7;
                                                                 |     }
                                                                 |     if (r3 > 0) {
    0x000a9a96 bgt 0xa9aa6                                       |         goto label_14;
                                                                 |     }
    0x000a9a98 b 0xa9b1e                                         |     goto label_15;
                                                                 |     do {
    0x000a9a9a ldr r3, [r4, 0x1c]                                |         r3 = *((r4 + 0x1c));
    0x000a9a9c add.w r8, r8, 1                                   |         r8++;
    0x000a9aa0 adds r7, 8                                        |         r7 += 8;
    0x000a9aa2 cmp r3, r8                                        |         
                                                                 |         if (r3 <= r8) {
    0x000a9aa4 ble 0xa9b1e                                       |             goto label_15;
                                                                 |         }
                                                                 | label_14:
    0x000a9aa6 ldr r3, [r4, 0x18]                                |         r3 = *((r4 + 0x18));
    0x000a9aa8 mov r1, r5                                        |         r1 = r5;
    0x000a9aaa add r3, r7                                        |         r3 += r7;
    0x000a9aac ldr r0, [r3, 4]                                   |         r0 = *((r3 + 4));
    0x000a9aae bl 0x6bd74                                        |         r0 = xmlStrEqual ();
    0x000a9ab2 cmp r0, 0                                         |         
    0x000a9ab4 beq 0xa9a9a                                       |         
                                                                 |     } while (r0 == 0);
    0x000a9ab6 ldr r3, [r4, 0x10]                                |     r3 = *((r4 + 0x10));
    0x000a9ab8 ldr r0, [r3, 4]                                   |     r0 = *((r3 + 4));
    0x000a9aba ldr r3, [r4, 0x18]                                |     r3 = *((r4 + 0x18));
    0x000a9abc ldr r1, [r3, r7]                                  |     r1 = *((r3 + r7));
    0x000a9abe cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x000a9ac0 beq 0xa9b9a                                       |         goto label_16;
                                                                 |     }
    0x000a9ac2 mov.w r2, -1                                      |     r2 = -1;
    0x000a9ac6 bl 0xa24d0                                        |     r0 = xmlDictLookup ();
    0x000a9aca mov r7, r0                                        |     r7 = r0;
                                                                 | label_8:
    0x000a9acc ldr r3, [r4, 0x1c]                                |     r3 = *((r4 + 0x1c));
    0x000a9ace cmp r3, r8                                        |     
                                                                 |     if (r3 <= r8) {
    0x000a9ad0 ble 0xa9bb0                                       |         goto label_17;
                                                                 |     }
                                                                 | label_4:
    0x000a9ad2 ldr r3, [r4, 0x10]                                |     r3 = *((r4 + 0x10));
    0x000a9ad4 ldr r3, [r3, 4]                                   |     r3 = *((r3 + 4));
    0x000a9ad6 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x000a9ad8 beq 0xa9b62                                       |         goto label_18;
                                                                 |     }
                                                                 | label_5:
    0x000a9ada cmp.w sb, 0                                       |     
                                                                 |     if (sb == 0) {
    0x000a9ade beq 0xa9b6e                                       |         goto label_19;
                                                                 |     }
    0x000a9ae0 ldr r0, [r4, 0x10]                                |     r0 = *((r4 + 0x10));
    0x000a9ae2 mov r3, r7                                        |     r3 = r7;
    0x000a9ae4 mov r2, sb                                        |     r2 = sb;
    0x000a9ae6 movs r1, 4                                        |     r1 = 4;
    0x000a9ae8 bl 0xa996c                                        |     r0 = fcn_000a996c (r0, r1, r2, r3);
    0x000a9aec cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x000a9aee beq 0xa9a3c                                       |         goto label_0;
                                                                 |     }
                                                                 |     if (r7 == 0) {
    0x000a9af0 cbz r7, 0xa9b08                                   |         goto label_20;
                                                                 |     }
                                                                 | label_6:
    0x000a9af2 ldr r3, [r4, 0x10]                                |     r3 = *((r4 + 0x10));
    0x000a9af4 ldr r3, [r3, 4]                                   |     r3 = *((r3 + 4));
                                                                 |     if (r3 == 0) {
    0x000a9af6 cbnz r3, 0xa9b02                                  |         
    0x000a9af8 ldr r3, [pc, 0xd4]                                |         
    0x000a9afa mov r0, r7                                        |         r0 = r7;
    0x000a9afc ldr r3, [r6, r3]                                  |         r3 = *((r6 + r3));
    0x000a9afe ldr r3, [r3]                                      |         r3 = *(0xa9bd0);
    0x000a9b00 blx r3                                            |         uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
                                                                 |     }
                                                                 | label_2:
    0x000a9b02 cmp.w sb, 0                                       |     
                                                                 |     if (sb == 0) {
    0x000a9b06 beq 0xa9a3c                                       |         goto label_0;
                                                                 |     }
                                                                 | label_20:
    0x000a9b08 ldr r3, [r4, 0x10]                                |     r3 = *((r4 + 0x10));
    0x000a9b0a ldr r3, [r3, 4]                                   |     r3 = *((r3 + 4));
    0x000a9b0c cmp r3, 0                                         |     
                                                                 |     if (r3 != 0) {
    0x000a9b0e bne 0xa9a3c                                       |         goto label_0;
                                                                 |     }
    0x000a9b10 ldr r3, [pc, 0xbc]                                |     
    0x000a9b12 mov r0, sb                                        |     r0 = sb;
    0x000a9b14 ldr r3, [r6, r3]                                  |     r3 = *((r6 + r3));
    0x000a9b16 pop.w {r4, r5, r6, r7, r8, sb, sl, lr}            |     
    0x000a9b1a ldr r3, [r3]                                      |     r3 = *(0xa9bd0);
    0x000a9b1c bx r3                                             |     return uint32_t (*r3)() ();
                                                                 | label_15:
    0x000a9b1e ldr r3, [r4, 0x10]                                |     r3 = *((r4 + 0x10));
    0x000a9b20 ldr r3, [r3, 4]                                   |     r3 = *((r3 + 4));
                                                                 |     if (r3 != 0) {
    0x000a9b22 cbnz r3, 0xa9b5c                                  |         goto label_21;
                                                                 |     }
    0x000a9b24 ldr r3, [pc, 0xa8]                                |     
    0x000a9b26 mov r0, r5                                        |     r0 = r5;
    0x000a9b28 ldr r3, [r6, r3]                                  |     r3 = *((r6 + r3));
    0x000a9b2a ldr r3, [r3]                                      |     r3 = *(0xa9bd0);
    0x000a9b2c blx r3                                            |     uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
    0x000a9b2e movs r3, 1                                        |     r3 = 1;
    0x000a9b30 str r3, [r4, 8]                                   |     *((r4 + 8)) = r3;
    0x000a9b32 b 0xa9b02                                         |     goto label_2;
                                                                 | label_13:
    0x000a9b34 ldrb r3, [r5, 1]                                  |     r3 = *((r5 + 1));
    0x000a9b36 cmp r3, 0x6d                                      |     
                                                                 |     if (r3 != 0x6d) {
    0x000a9b38 bne 0xa9a8c                                       |         goto label_3;
                                                                 |     }
    0x000a9b3a ldrb r3, [r5, 2]                                  |     r3 = *((r5 + 2));
    0x000a9b3c cmp r3, 0x6c                                      |     
                                                                 |     if (r3 != 0x6c) {
    0x000a9b3e bne 0xa9a8c                                       |         goto label_3;
                                                                 |     }
    0x000a9b40 ldrb r3, [r5, 3]                                  |     r3 = *((r5 + 3));
    0x000a9b42 cmp r3, 0                                         |     
                                                                 |     if (r3 != 0) {
    0x000a9b44 bne 0xa9a8c                                       |         goto label_3;
                                                                 |     }
    0x000a9b46 ldr r3, [r4, 0x10]                                |     r3 = *((r4 + 0x10));
    0x000a9b48 ldr r0, [r3, 4]                                   |     r0 = *((r3 + 4));
                                                                 |     if (r0 == 0) {
    0x000a9b4a cbz r0, 0xa9ba4                                   |         goto label_22;
                                                                 |     }
    0x000a9b4c ldr r1, [pc, 0x84]                                |     
    0x000a9b4e mov.w r2, -1                                      |     r2 = -1;
    0x000a9b52 add r1, pc                                        |     r1 = 0x15372a;
    0x000a9b54 bl 0xa24d0                                        |     r0 = xmlDictLookup ();
    0x000a9b58 mov r7, r0                                        |     r7 = r0;
    0x000a9b5a b 0xa9ad2                                         |     goto label_4;
                                                                 | label_21:
    0x000a9b5c movs r3, 1                                        |     r3 = 1;
    0x000a9b5e str r3, [r4, 8]                                   |     *((r4 + 8)) = r3;
    0x000a9b60 b 0xa9b02                                         |     goto label_2;
                                                                 | label_18:
    0x000a9b62 ldr r3, [pc, 0x6c]                                |     
    0x000a9b64 mov r0, r5                                        |     r0 = r5;
    0x000a9b66 ldr r3, [r6, r3]                                  |     r3 = *((r6 + r3));
    0x000a9b68 ldr r3, [r3]                                      |     r3 = *(0xa9bd2);
    0x000a9b6a blx r3                                            |     uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
    0x000a9b6c b 0xa9ada                                         |     goto label_5;
                                                                 | label_19:
    0x000a9b6e ldr r3, [r4]                                      |     r3 = *(r4);
    0x000a9b70 ldrb r2, [r3]                                     |     r2 = *(r3);
    0x000a9b72 cmp r2, 0x2a                                      |     
    0x000a9b74 itt ne                                            |     
                                                                 |     if (r2 == 0x2a) {
    0x000a9b76 movne r3, 1                                       |         r3 = 1;
                                                                 |     }
                                                                 |     if (r2 == 0x2a) {
    0x000a9b78 strne r3, [r4, 8]                                 |         *((r4 + 8)) = r3;
                                                                 |     }
                                                                 |     if (r2 == 0x2a) {
    0x000a9b7a beq 0xa9b82                                       |         goto label_23;
                                                                 |     }
                                                                 | label_7:
    0x000a9b7c cmp r7, 0                                         |     
                                                                 |     if (r7 != 0) {
    0x000a9b7e bne 0xa9af2                                       |         goto label_6;
                                                                 |     }
    0x000a9b80 b 0xa9a3c                                         |     goto label_0;
                                                                 | label_23:
    0x000a9b82 adds r3, 1                                        |     r3++;
    0x000a9b84 ldr r0, [r4, 0x10]                                |     r0 = *((r4 + 0x10));
    0x000a9b86 str r3, [r4]                                      |     *(r4) = r3;
    0x000a9b88 mov r2, sb                                        |     r2 = sb;
    0x000a9b8a mov r3, r7                                        |     r3 = r7;
    0x000a9b8c movs r1, 4                                        |     r1 = 4;
    0x000a9b8e bl 0xa996c                                        |     r0 = fcn_000a996c (r0, r1, r2, r3);
    0x000a9b92 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x000a9b94 beq.w 0xa9a3c                                     |         goto label_0;
                                                                 |     }
    0x000a9b98 b 0xa9b7c                                         |     goto label_7;
                                                                 | label_16:
    0x000a9b9a mov r0, r1                                        |     r0 = r1;
    0x000a9b9c bl 0x6bca8                                        |     r0 = xmlStrdup ();
    0x000a9ba0 mov r7, r0                                        |     r7 = r0;
    0x000a9ba2 b 0xa9acc                                         |     goto label_8;
                                                                 | label_22:
    0x000a9ba4 ldr r0, [pc, 0x30]                                |     
    0x000a9ba6 add r0, pc                                        |     r0 = 0x153782;
    0x000a9ba8 bl 0x6bca8                                        |     r0 = xmlStrdup ();
    0x000a9bac mov r7, r0                                        |     r7 = r0;
    0x000a9bae b 0xa9ad2                                         |     goto label_4;
                                                                 | label_17:
    0x000a9bb0 ldr r3, [r4, 0x10]                                |     r3 = *((r4 + 0x10));
    0x000a9bb2 ldr r3, [r3, 4]                                   |     r3 = *((r3 + 4));
                                                                 |     if (r3 == 0) {
    0x000a9bb4 cbnz r3, 0xa9bc0                                  |         
    0x000a9bb6 ldr r3, [pc, 0x18]                                |         
    0x000a9bb8 mov r0, r5                                        |         r0 = r5;
    0x000a9bba ldr r3, [r6, r3]                                  |         r3 = *((r6 + r3));
    0x000a9bbc ldr r3, [r3]                                      |         r3 = *(0xa9bd2);
    0x000a9bbe blx r3                                            |         uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
                                                                 |     }
    0x000a9bc0 movs r3, 1                                        |     r3 = 1;
    0x000a9bc2 str r3, [r4, 8]                                   |     *((r4 + 8)) = r3;
    0x000a9bc4 cmp r7, 0                                         |     
                                                                 |     if (r7 != 0) {
    0x000a9bc6 bne 0xa9af2                                       |         goto label_6;
                                                                 |     }
    0x000a9bc8 b 0xa9b02                                         |     goto label_2;
                                                                 | }
    ; 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 @ 0xa9bdc */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) fcn.000a9bdc ()                                      | void fcn_000a9bdc (int16_t arg1) {
                                                                 |     r0 = arg1;
    0x000a9bdc ldr r2, [r0]                                      |     r2 = *(r0);
    0x000a9bde push.w {r4, r5, r6, r7, r8, sb, sl, lr}           |     
    0x000a9be2 mov r5, r0                                        |     r5 = r0;
    0x000a9be4 ldr.w r6, [pc, 0x454]                             |     r6 = *(0x000aa03c);
    0x000a9be8 ldrb r3, [r2]                                     |     r3 = *(r2);
    0x000a9bea add r6, pc                                        |     r6 += pc;
    0x000a9bec cmp r3, 0xd                                       |     
    0x000a9bee it ne                                             |     
                                                                 |     if (r3 != 0xd) {
    0x000a9bf0 cmpne r3, 0x20                                    |         __asm ("cmpne r3, 0x20");
                                                                 |     }
    0x000a9bf2 sub.w r0, r3, 9                                   |     r0 = r3 - 9;
    0x000a9bf6 ite eq                                            |     
                                                                 |     if (r3 != 0xd) {
    0x000a9bf8 moveq r1, 1                                       |         r1 = 1;
                                                                 |     }
                                                                 |     if (r3 == 0xd) {
    0x000a9bfa movne r1, 0                                       |         r1 = 0;
                                                                 |     }
    0x000a9bfc cmp r0, 1                                         |     
    0x000a9bfe it ls                                             |     
                                                                 |     if (r0 > 1) {
    0x000a9c00 orrls r1, r1, 1                                   |         r1 |= 1;
                                                                 |     }
                                                                 |     if (r1 == 0) {
    0x000a9c04 cbz r1, 0xa9c28                                   |         goto label_21;
                                                                 |     }
                                                                 |     do {
    0x000a9c06 adds r2, 1                                        |         r2++;
    0x000a9c08 str r2, [r5]                                      |         *(r5) = r2;
    0x000a9c0a ldrb r3, [r2]                                     |         r3 = *(r2);
    0x000a9c0c cmp r3, 0xd                                       |         
    0x000a9c0e it ne                                             |         
                                                                 |         if (r3 != 0xd) {
    0x000a9c10 cmpne r3, 0x20                                    |             __asm ("cmpne r3, 0x20");
                                                                 |         }
    0x000a9c12 sub.w r4, r3, 9                                   |         r4 = r3 - 9;
    0x000a9c16 ite eq                                            |         
                                                                 |         if (r3 != 0xd) {
    0x000a9c18 moveq r1, 1                                       |             r1 = 1;
                                                                 |         }
                                                                 |         if (r3 == 0xd) {
    0x000a9c1a movne r1, 0                                       |             r1 = 0;
                                                                 |         }
    0x000a9c1c cmp r4, 1                                         |         
    0x000a9c1e it ls                                             |         
                                                                 |         if (r4 > 1) {
    0x000a9c20 orrls r1, r1, 1                                   |             r1 |= 1;
                                                                 |         }
    0x000a9c24 cmp r1, 0                                         |         
    0x000a9c26 bne 0xa9c06                                       |         
                                                                 |     } while (r1 != 0);
                                                                 | label_21:
    0x000a9c28 cmp r3, 0x2e                                      |     
                                                                 |     if (r3 == 0x2e) {
    0x000a9c2a beq 0xa9cb6                                       |         goto label_22;
                                                                 |     }
    0x000a9c2c cmp r3, 0x40                                      |     
                                                                 |     if (r3 == 0x40) {
    0x000a9c2e bne 0xa9c42                                       |         
    0x000a9c30 ldr r3, [r5, 0x10]                                |         r3 = *((r5 + 0x10));
    0x000a9c32 ldr r3, [r3, 0x10]                                |         r3 = *((r3 + 0x10));
    0x000a9c34 lsls r1, r3, 0x1e                                 |         r1 = r3 << 0x1e;
                                                                 |         if (r1 >= r3) {
    0x000a9c36 bpl.w 0xa9dc4                                     |             goto label_23;
                                                                 |         }
                                                                 | label_2:
    0x000a9c3a movs r3, 1                                        |         r3 = 1;
    0x000a9c3c str r3, [r5, 8]                                   |         *((r5 + 8)) = r3;
                                                                 | label_0:
    0x000a9c3e pop.w {r4, r5, r6, r7, r8, sb, sl, pc}            |         
                                                                 |     }
    0x000a9c42 mov r0, r5                                        |     r0 = r5;
    0x000a9c44 bl 0xa9250                                        |     r0 = fcn_000a9250 (r0, r1, r2, r3, r4, r5);
    0x000a9c48 mov r4, r0                                        |     r4 = r0;
    0x000a9c4a cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x000a9c4c beq.w 0xa9dd0                                     |         goto label_4;
                                                                 |     }
    0x000a9c50 ldr r2, [r5]                                      |     r2 = *(r5);
    0x000a9c52 ldrb r3, [r2]                                     |     r3 = *(r2);
    0x000a9c54 cmp r3, 0xd                                       |     
    0x000a9c56 it ne                                             |     
                                                                 |     if (r3 != 0xd) {
    0x000a9c58 cmpne r3, 0x20                                    |         __asm ("cmpne r3, 0x20");
                                                                 |     }
    0x000a9c5a sub.w r1, r3, 9                                   |     r1 = r3 - 9;
    0x000a9c5e ite eq                                            |     
                                                                 |     if (r3 != 0xd) {
    0x000a9c60 moveq r7, 1                                       |         r7 = 1;
                                                                 |     }
                                                                 |     if (r3 == 0xd) {
    0x000a9c62 movne r7, 0                                       |         r7 = 0;
                                                                 |     }
    0x000a9c64 cmp r1, 1                                         |     
    0x000a9c66 it ls                                             |     
                                                                 |     if (r1 > 1) {
    0x000a9c68 orrls r7, r7, 1                                   |         r7 |= 1;
                                                                 |     }
                                                                 |     if (r7 == 0) {
    0x000a9c6c cbz r7, 0xa9c92                                   |         goto label_24;
                                                                 |     }
                                                                 |     do {
    0x000a9c6e adds r2, 1                                        |         r2++;
    0x000a9c70 str r2, [r5]                                      |         *(r5) = r2;
    0x000a9c72 ldrb r3, [r2]                                     |         r3 = *(r2);
    0x000a9c74 cmp r3, 0xd                                       |         
    0x000a9c76 it ne                                             |         
                                                                 |         if (r3 != 0xd) {
    0x000a9c78 cmpne r3, 0x20                                    |             __asm ("cmpne r3, 0x20");
                                                                 |         }
    0x000a9c7a sub.w r0, r3, 9                                   |         r0 = r3 - 9;
    0x000a9c7e ite eq                                            |         
                                                                 |         if (r3 != 0xd) {
    0x000a9c80 moveq r1, 1                                       |             r1 = 1;
                                                                 |         }
                                                                 |         if (r3 == 0xd) {
    0x000a9c82 movne r1, 0                                       |             r1 = 0;
                                                                 |         }
    0x000a9c84 cmp r0, 1                                         |         
    0x000a9c86 it ls                                             |         
                                                                 |         if (r0 > 1) {
    0x000a9c88 orrls r1, r1, 1                                   |             r1 |= 1;
                                                                 |         }
    0x000a9c8c cmp r1, 0                                         |         
    0x000a9c8e bne 0xa9c6e                                       |         
                                                                 |     } while (r1 != 0);
    0x000a9c90 movs r7, 1                                        |     r7 = 1;
                                                                 | label_24:
    0x000a9c92 cmp r3, 0x3a                                      |     
                                                                 |     if (r3 == 0x3a) {
    0x000a9c94 beq 0xa9cc8                                       |         goto label_25;
                                                                 |     }
    0x000a9c96 cmp r3, 0x2a                                      |     
    0x000a9c98 ldr r0, [r5, 0x10]                                |     r0 = *((r5 + 0x10));
    0x000a9c9a itt eq                                            |     
                                                                 |     if (r3 != 0x2a) {
    0x000a9c9c moveq r3, 1                                       |         r3 = 1;
                                                                 |     }
                                                                 |     if (r3 != 0x2a) {
    0x000a9c9e streq r3, [r5, 8]                                 |         *((r5 + 8)) = r3;
                                                                 |     }
                                                                 |     if (r3 == 0x2a) {
    0x000a9ca0 beq.w 0xa9dae                                     |         goto label_26;
                                                                 |     }
    0x000a9ca4 movs r3, 0                                        |     r3 = 0;
    0x000a9ca6 mov r2, r4                                        |     r2 = r4;
    0x000a9ca8 movs r1, 2                                        |     r1 = 2;
    0x000a9caa bl 0xa996c                                        |     r0 = fcn_000a996c (r0, r1, r2, r3);
    0x000a9cae cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x000a9cb0 beq 0xa9c3e                                       |         goto label_0;
                                                                 |     }
                                                                 | label_1:
    0x000a9cb2 ldr r0, [r5, 0x10]                                |     r0 = *((r5 + 0x10));
    0x000a9cb4 b 0xa9dae                                         |     goto label_26;
                                                                 | label_22:
    0x000a9cb6 adds r4, r2, 1                                    |     r4 = r2 + 1;
    0x000a9cb8 movs r3, 0                                        |     r3 = 0;
    0x000a9cba ldr r0, [r5, 0x10]                                |     r0 = *((r5 + 0x10));
    0x000a9cbc mov r2, r3                                        |     r2 = r3;
    0x000a9cbe str r4, [r5]                                      |     *(r5) = r4;
    0x000a9cc0 movs r1, 2                                        |     r1 = 2;
    0x000a9cc2 pop.w {r4, r5, r6, r7, r8, sb, sl, lr}            |     
    0x000a9cc6 b 0xa996c                                         |     void (*0xa996c)() ();
                                                                 | label_25:
    0x000a9cc8 adds r3, r2, 1                                    |     r3 = r2 + 1;
    0x000a9cca str r3, [r5]                                      |     *(r5) = r3;
    0x000a9ccc ldrb r3, [r2, 1]                                  |     r3 = *((r2 + 1));
    0x000a9cce cmp r3, 0x3a                                      |     
                                                                 |     if (r3 == 0x3a) {
    0x000a9cd0 beq.w 0xa9df8                                     |         goto label_27;
                                                                 |     }
    0x000a9cd4 cmp r7, 0                                         |     
                                                                 |     if (r7 != 0) {
    0x000a9cd6 bne 0xa9da8                                       |         goto label_5;
                                                                 |     }
    0x000a9cd8 subs r3, 9                                        |     r3 -= 9;
    0x000a9cda uxtb r3, r3                                       |     r3 = (int8_t) r3;
    0x000a9cdc cmp r3, 0x17                                      |     
                                                                 |     if (r3 <= 0x17) {
    0x000a9cde bhi 0xa9cec                                       |         
    0x000a9ce0 movs r2, 0x13                                     |         
    0x000a9ce2 movt r2, 0x80                                     |         r2 = 0x800013;
    0x000a9ce6 lsrs r2, r3                                       |         r2 >>= r3;
    0x000a9ce8 lsls r2, r2, 0x1f                                 |         r2 <<= 0x1f;
                                                                 |         if (r2 < r2) {
    0x000a9cea bmi 0xa9da8                                       |             goto label_5;
                                                                 |         }
                                                                 |     }
    0x000a9cec mov r0, r5                                        |     r0 = r5;
    0x000a9cee bl 0xa9434                                        |     fcn_000a9434 (r0, r1, r2, r3, r4, r5);
    0x000a9cf2 ldrb r3, [r4]                                     |     r3 = *(r4);
    0x000a9cf4 mov r8, r0                                        |     r8 = r0;
    0x000a9cf6 cmp r3, 0x78                                      |     
                                                                 |     if (r3 == 0x78) {
    0x000a9cf8 beq.w 0xa9f3e                                     |         goto label_28;
                                                                 |     }
                                                                 | label_12:
    0x000a9cfc ldr r3, [r5, 0x1c]                                |     r3 = *((r5 + 0x1c));
    0x000a9cfe cmp r3, 0                                         |     
    0x000a9d00 it gt                                             |     
                                                                 |     if (r3 <= 0) {
    0x000a9d02 movgt sb, 0                                       |         sb = 0;
                                                                 |     }
                                                                 |     if (r3 > 0) {
    0x000a9d06 bgt 0xa9d18                                       |         goto label_29;
                                                                 |     }
    0x000a9d08 b 0xa9eca                                         |     goto label_30;
                                                                 |     do {
    0x000a9d0a ldr r3, [r5, 0x1c]                                |         r3 = *((r5 + 0x1c));
    0x000a9d0c adds r7, 1                                        |         r7++;
    0x000a9d0e add.w sb, sb, 8                                   |         sb += 8;
    0x000a9d12 cmp r3, r7                                        |         
                                                                 |         if (r3 <= r7) {
    0x000a9d14 ble.w 0xa9eca                                     |             goto label_30;
                                                                 |         }
                                                                 | label_29:
    0x000a9d18 ldr r3, [r5, 0x18]                                |         r3 = *((r5 + 0x18));
    0x000a9d1a mov r1, r4                                        |         r1 = r4;
    0x000a9d1c add r3, sb                                        |         r3 += sb;
    0x000a9d1e ldr r0, [r3, 4]                                   |         r0 = *((r3 + 4));
    0x000a9d20 bl 0x6bd74                                        |         r0 = xmlStrEqual ();
    0x000a9d24 cmp r0, 0                                         |         
    0x000a9d26 beq 0xa9d0a                                       |         
                                                                 |     } while (r0 == 0);
    0x000a9d28 ldr r3, [r5, 0x10]                                |     r3 = *((r5 + 0x10));
    0x000a9d2a ldr r0, [r3, 4]                                   |     r0 = *((r3 + 4));
    0x000a9d2c ldr r3, [r5, 0x18]                                |     r3 = *((r5 + 0x18));
    0x000a9d2e ldr.w r1, [r3, sb]                                |     r1 = *((r3 + sb));
    0x000a9d32 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x000a9d34 beq.w 0xa9fa8                                     |         goto label_31;
                                                                 |     }
    0x000a9d38 mov.w r2, -1                                      |     r2 = -1;
    0x000a9d3c bl 0xa24d0                                        |     r0 = xmlDictLookup ();
    0x000a9d40 mov sb, r0                                        |     sb = r0;
                                                                 | label_14:
    0x000a9d42 ldr r3, [r5, 0x1c]                                |     r3 = *((r5 + 0x1c));
    0x000a9d44 cmp r3, r7                                        |     
                                                                 |     if (r3 <= r7) {
    0x000a9d46 ble.w 0xa9ed8                                     |         goto label_32;
                                                                 |     }
                                                                 | label_13:
    0x000a9d4a ldr r3, [r5, 0x10]                                |     r3 = *((r5 + 0x10));
    0x000a9d4c ldr r3, [r3, 4]                                   |     r3 = *((r3 + 4));
    0x000a9d4e cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x000a9d50 beq 0xa9dec                                       |         goto label_33;
                                                                 |     }
                                                                 | label_3:
    0x000a9d52 cmp.w r8, 0                                       |     
                                                                 |     if (r8 == 0) {
    0x000a9d56 beq.w 0xa9ef8                                     |         goto label_34;
                                                                 |     }
    0x000a9d5a ldr r0, [r5, 0x10]                                |     r0 = *((r5 + 0x10));
    0x000a9d5c mov r3, sb                                        |     r3 = sb;
    0x000a9d5e mov r2, r8                                        |     r2 = r8;
    0x000a9d60 movs r1, 2                                        |     r1 = 2;
    0x000a9d62 bl 0xa996c                                        |     r0 = fcn_000a996c (r0, r1, r2, r3);
    0x000a9d66 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x000a9d68 beq.w 0xa9c3e                                     |         goto label_0;
                                                                 |     }
                                                                 | label_6:
    0x000a9d6c ldr r3, [r5, 0x10]                                |     r3 = *((r5 + 0x10));
    0x000a9d6e ldr r4, [r3, 4]                                   |     r4 = *((r3 + 4));
    0x000a9d70 cmp.w sb, 0                                       |     
                                                                 |     if (sb == 0) {
    0x000a9d74 beq.w 0xaa01c                                     |         goto label_35;
                                                                 |     }
    0x000a9d78 cmp r4, 0                                         |     
                                                                 |     if (r4 != 0) {
    0x000a9d7a bne.w 0xa9c3e                                     |         goto label_0;
                                                                 |     }
                                                                 | label_9:
    0x000a9d7e ldr r3, [pc, 0x2c0]                               |     
    0x000a9d80 mov r0, sb                                        |     r0 = sb;
    0x000a9d82 ldr r3, [r6, r3]                                  |     r3 = *((r6 + r3));
    0x000a9d84 ldr r3, [r3]                                      |     r3 = *(0xaa042);
    0x000a9d86 blx r3                                            |     uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
    0x000a9d88 cmp.w r8, 0                                       |     
                                                                 |     if (r8 == 0) {
    0x000a9d8c beq 0xa9da2                                       |         goto label_10;
                                                                 |     }
                                                                 | label_7:
    0x000a9d8e ldr r3, [r5, 0x10]                                |     r3 = *((r5 + 0x10));
    0x000a9d90 ldr r3, [r3, 4]                                   |     r3 = *((r3 + 4));
    0x000a9d92 cmp r3, 0                                         |     
                                                                 |     if (r3 != 0) {
    0x000a9d94 bne.w 0xa9c3e                                     |         goto label_0;
                                                                 |     }
    0x000a9d98 ldr r3, [pc, 0x2a4]                               |     
    0x000a9d9a mov r0, r8                                        |     r0 = r8;
    0x000a9d9c ldr r3, [r6, r3]                                  |     r3 = *((r6 + r3));
    0x000a9d9e ldr r3, [r3]                                      |     r3 = *(0xaa040);
    0x000a9da0 blx r3                                            |     uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
                                                                 | label_10:
    0x000a9da2 cmp r4, 0                                         |     
                                                                 |     if (r4 != 0) {
    0x000a9da4 bne 0xa9cb2                                       |         goto label_1;
                                                                 |     }
    0x000a9da6 b 0xa9c3e                                         |     goto label_0;
                                                                 | label_5:
    0x000a9da8 ldr r0, [r5, 0x10]                                |     r0 = *((r5 + 0x10));
    0x000a9daa movs r3, 1                                        |     r3 = 1;
    0x000a9dac str r3, [r5, 8]                                   |     *((r5 + 8)) = r3;
                                                                 | label_26:
    0x000a9dae ldr r3, [r0, 4]                                   |     r3 = *((r0 + 4));
    0x000a9db0 cmp r3, 0                                         |     
                                                                 |     if (r3 != 0) {
    0x000a9db2 bne.w 0xa9c3e                                     |         goto label_0;
                                                                 |     }
    0x000a9db6 ldr r3, [pc, 0x288]                               |     
    0x000a9db8 mov r0, r4                                        |     r0 = r4;
    0x000a9dba ldr r3, [r6, r3]                                  |     r3 = *((r6 + r3));
    0x000a9dbc pop.w {r4, r5, r6, r7, r8, sb, sl, lr}            |     
    0x000a9dc0 ldr r3, [r3]                                      |     r3 = *(0xaa042);
    0x000a9dc2 bx r3                                             |     return uint32_t (*r3)() ();
                                                                 | label_23:
    0x000a9dc4 adds r2, 1                                        |     r2++;
    0x000a9dc6 mov r0, r5                                        |     r0 = r5;
    0x000a9dc8 str r2, [r5]                                      |     *(r5) = r2;
    0x000a9dca pop.w {r4, r5, r6, r7, r8, sb, sl, lr}            |     
    0x000a9dce b 0xa99d0                                         |     void (*0xa99d0)() ();
                                                                 | label_4:
    0x000a9dd0 ldr r1, [r5]                                      |     r1 = *(r5);
    0x000a9dd2 ldrb r2, [r1]                                     |     r2 = *(r1);
    0x000a9dd4 cmp r2, 0x2a                                      |     
                                                                 |     if (r2 != 0x2a) {
    0x000a9dd6 bne.w 0xa9c3a                                     |         goto label_2;
                                                                 |     }
    0x000a9dda adds r1, 1                                        |     r1++;
    0x000a9ddc ldr r0, [r5, 0x10]                                |     r0 = *((r5 + 0x10));
    0x000a9dde str r1, [r5]                                      |     *(r5) = r1;
    0x000a9de0 mov r3, r4                                        |     r3 = r4;
    0x000a9de2 mov r2, r4                                        |     r2 = r4;
    0x000a9de4 movs r1, 8                                        |     r1 = 8;
    0x000a9de6 pop.w {r4, r5, r6, r7, r8, sb, sl, lr}            |     
    0x000a9dea b 0xa996c                                         |     void (*0xa996c)() ();
                                                                 | label_33:
    0x000a9dec ldr r3, [pc, 0x250]                               |     
    0x000a9dee mov r0, r4                                        |     r0 = r4;
    0x000a9df0 ldr r3, [r6, r3]                                  |     r3 = *((r6 + r3));
    0x000a9df2 ldr r3, [r3]                                      |     r3 = *(0xaa040);
    0x000a9df4 blx r3                                            |     uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
    0x000a9df6 b 0xa9d52                                         |     goto label_3;
                                                                 | label_27:
    0x000a9df8 ldr r1, [pc, 0x248]                               |     
    0x000a9dfa adds r2, 2                                        |     r2 += 2;
    0x000a9dfc mov r0, r4                                        |     r0 = r4;
    0x000a9dfe str r2, [r5]                                      |     *(r5) = r2;
    0x000a9e00 add r1, pc                                        |     r1 = 0x153e48;
    0x000a9e02 bl 0x6bd74                                        |     r0 = xmlStrEqual ();
    0x000a9e06 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x000a9e08 beq.w 0xa9f6e                                     |         goto label_36;
                                                                 |     }
    0x000a9e0c ldr r3, [r5, 0x10]                                |     r3 = *((r5 + 0x10));
    0x000a9e0e ldr r3, [r3, 4]                                   |     r3 = *((r3 + 4));
    0x000a9e10 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x000a9e12 beq.w 0xa9fb2                                     |         goto label_37;
                                                                 |     }
                                                                 | label_15:
    0x000a9e16 mov r0, r5                                        |     r0 = r5;
    0x000a9e18 bl 0xa9434                                        |     r0 = fcn_000a9434 (r0, r1, r2, r3, r4, r5);
    0x000a9e1c mov r4, r0                                        |     r4 = r0;
    0x000a9e1e cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x000a9e20 beq 0xa9dd0                                       |         goto label_4;
                                                                 |     }
    0x000a9e22 ldr r3, [r5]                                      |     r3 = *(r5);
    0x000a9e24 ldrb r2, [r3]                                     |     r2 = *(r3);
    0x000a9e26 cmp r2, 0x3a                                      |     
                                                                 |     if (r2 != 0x3a) {
    0x000a9e28 bne.w 0xa9f94                                     |         goto label_38;
                                                                 |     }
    0x000a9e2c adds r2, r3, 1                                    |     r2 = r3 + 1;
    0x000a9e2e str r2, [r5]                                      |     *(r5) = r2;
    0x000a9e30 ldrb r3, [r3, 1]                                  |     r3 = *((r3 + 1));
    0x000a9e32 cmp r3, 0xd                                       |     
    0x000a9e34 it ne                                             |     
                                                                 |     if (r3 != 0xd) {
    0x000a9e36 cmpne r3, 0x20                                    |         __asm ("cmpne r3, 0x20");
                                                                 |     }
    0x000a9e38 sub.w r3, r3, 9                                   |     r3 -= 9;
    0x000a9e3c ite eq                                            |     
                                                                 |     if (r3 != 0xd) {
    0x000a9e3e moveq r2, 1                                       |         r2 = 1;
                                                                 |     }
                                                                 |     if (r3 == 0xd) {
    0x000a9e40 movne r2, 0                                       |         r2 = 0;
                                                                 |     }
    0x000a9e42 cmp r3, 1                                         |     
    0x000a9e44 it ls                                             |     
                                                                 |     if (r3 > 1) {
    0x000a9e46 orrls r2, r2, 1                                   |         r2 |= 1;
                                                                 |     }
    0x000a9e4a cmp r2, 0                                         |     
                                                                 |     if (r2 != 0) {
    0x000a9e4c bne 0xa9da8                                       |         goto label_5;
                                                                 |     }
    0x000a9e4e mov r0, r5                                        |     r0 = r5;
    0x000a9e50 bl 0xa9434                                        |     fcn_000a9434 (r0, r1, r2, r3, r4, r5);
    0x000a9e54 ldrb r3, [r4]                                     |     r3 = *(r4);
    0x000a9e56 mov r8, r0                                        |     r8 = r0;
    0x000a9e58 cmp r3, 0x78                                      |     
                                                                 |     if (r3 == 0x78) {
    0x000a9e5a beq.w 0xa9fcc                                     |         goto label_39;
                                                                 |     }
                                                                 | label_17:
    0x000a9e5e ldr r3, [r5, 0x1c]                                |     r3 = *((r5 + 0x1c));
    0x000a9e60 cmp r3, 0                                         |     
    0x000a9e62 itt gt                                            |     
                                                                 |     if (r3 <= 0) {
    0x000a9e64 movgt r7, 0                                       |         r7 = 0;
                                                                 |     }
                                                                 |     if (r3 <= 0) {
    0x000a9e66 movgt sl, r7                                      |         sl = r7;
                                                                 |     }
                                                                 |     if (r3 > 0) {
    0x000a9e68 bgt 0xa9e78                                       |         goto label_40;
                                                                 |     }
    0x000a9e6a b 0xa9eca                                         |     goto label_30;
                                                                 |     do {
    0x000a9e6c ldr r3, [r5, 0x1c]                                |         r3 = *((r5 + 0x1c));
    0x000a9e6e add.w sl, sl, 1                                   |         sl++;
    0x000a9e72 adds r7, 8                                        |         r7 += 8;
    0x000a9e74 cmp r3, sl                                        |         
                                                                 |         if (r3 <= sl) {
    0x000a9e76 ble 0xa9eca                                       |             goto label_30;
                                                                 |         }
                                                                 | label_40:
    0x000a9e78 ldr r3, [r5, 0x18]                                |         r3 = *((r5 + 0x18));
    0x000a9e7a mov r1, r4                                        |         r1 = r4;
    0x000a9e7c add r3, r7                                        |         r3 += r7;
    0x000a9e7e ldr r0, [r3, 4]                                   |         r0 = *((r3 + 4));
    0x000a9e80 bl 0x6bd74                                        |         r0 = xmlStrEqual ();
    0x000a9e84 cmp r0, 0                                         |         
    0x000a9e86 beq 0xa9e6c                                       |         
                                                                 |     } while (r0 == 0);
    0x000a9e88 ldr r3, [r5, 0x10]                                |     r3 = *((r5 + 0x10));
    0x000a9e8a ldr r0, [r3, 4]                                   |     r0 = *((r3 + 4));
    0x000a9e8c ldr r3, [r5, 0x18]                                |     r3 = *((r5 + 0x18));
    0x000a9e8e ldr r1, [r3, r7]                                  |     r1 = *((r3 + r7));
    0x000a9e90 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x000a9e92 beq.w 0xaa012                                     |         goto label_41;
                                                                 |     }
    0x000a9e96 mov.w r2, -1                                      |     r2 = -1;
    0x000a9e9a bl 0xa24d0                                        |     r0 = xmlDictLookup ();
    0x000a9e9e mov sb, r0                                        |     sb = r0;
                                                                 | label_20:
    0x000a9ea0 ldr r3, [r5, 0x1c]                                |     r3 = *((r5 + 0x1c));
    0x000a9ea2 cmp r3, sl                                        |     
                                                                 |     if (r3 <= sl) {
    0x000a9ea4 ble 0xa9ed8                                       |         goto label_32;
                                                                 |     }
                                                                 | label_18:
    0x000a9ea6 ldr r3, [r5, 0x10]                                |     r3 = *((r5 + 0x10));
    0x000a9ea8 ldr r3, [r3, 4]                                   |     r3 = *((r3 + 4));
    0x000a9eaa cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x000a9eac beq.w 0xaa006                                     |         goto label_42;
                                                                 |     }
                                                                 | label_19:
    0x000a9eb0 cmp.w r8, 0                                       |     
                                                                 |     if (r8 == 0) {
    0x000a9eb4 beq 0xa9ef8                                       |         goto label_34;
                                                                 |     }
    0x000a9eb6 ldr r0, [r5, 0x10]                                |     r0 = *((r5 + 0x10));
    0x000a9eb8 mov r3, sb                                        |     r3 = sb;
    0x000a9eba mov r2, r8                                        |     r2 = r8;
    0x000a9ebc movs r1, 3                                        |     r1 = 3;
    0x000a9ebe bl 0xa996c                                        |     r0 = fcn_000a996c (r0, r1, r2, r3);
    0x000a9ec2 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x000a9ec4 bne.w 0xa9d6c                                     |         goto label_6;
                                                                 |     }
    0x000a9ec8 b 0xa9c3e                                         |     goto label_0;
                                                                 | label_30:
    0x000a9eca movs r3, 1                                        |     r3 = 1;
    0x000a9ecc str r3, [r5, 8]                                   |     *((r5 + 8)) = r3;
                                                                 | label_8:
    0x000a9ece cmp.w r8, 0                                       |     
                                                                 |     if (r8 != 0) {
    0x000a9ed2 bne.w 0xa9d8e                                     |         goto label_7;
                                                                 |     }
    0x000a9ed6 b 0xa9cb2                                         |     goto label_1;
                                                                 | label_32:
    0x000a9ed8 movs r3, 1                                        |     r3 = 1;
    0x000a9eda str r3, [r5, 8]                                   |     *((r5 + 8)) = r3;
    0x000a9edc cmp.w sb, 0                                       |     
                                                                 |     if (sb == 0) {
    0x000a9ee0 beq 0xa9ece                                       |         goto label_8;
                                                                 |     }
    0x000a9ee2 ldr r0, [r5, 0x10]                                |     r0 = *((r5 + 0x10));
    0x000a9ee4 ldr r3, [r0, 4]                                   |     r3 = *((r0 + 4));
    0x000a9ee6 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x000a9ee8 beq.w 0xa9d7e                                     |         goto label_9;
                                                                 |     }
    0x000a9eec cmp.w r8, 0                                       |     
                                                                 |     if (r8 == 0) {
    0x000a9ef0 beq.w 0xa9da2                                     |         goto label_10;
                                                                 |     }
    0x000a9ef4 pop.w {r4, r5, r6, r7, r8, sb, sl, pc}            |     
                                                                 | label_34:
    0x000a9ef8 ldr r3, [r5]                                      |     r3 = *(r5);
    0x000a9efa ldrb r2, [r3]                                     |     r2 = *(r3);
    0x000a9efc cmp r2, 0x2a                                      |     
    0x000a9efe itt ne                                            |     
                                                                 |     if (r2 == 0x2a) {
    0x000a9f00 movne r3, 1                                       |         r3 = 1;
                                                                 |     }
                                                                 |     if (r2 == 0x2a) {
    0x000a9f02 strne r3, [r5, 8]                                 |         *((r5 + 8)) = r3;
                                                                 |     }
                                                                 |     if (r2 == 0x2a) {
    0x000a9f04 beq 0xa9f26                                       |         goto label_43;
                                                                 |     }
                                                                 | label_11:
    0x000a9f06 cmp.w sb, 0                                       |     
                                                                 |     if (sb == 0) {
    0x000a9f0a beq.w 0xa9c3e                                     |         goto label_0;
                                                                 |     }
    0x000a9f0e ldr r3, [r5, 0x10]                                |     r3 = *((r5 + 0x10));
    0x000a9f10 ldr r3, [r3, 4]                                   |     r3 = *((r3 + 4));
    0x000a9f12 cmp r3, 0                                         |     
                                                                 |     if (r3 != 0) {
    0x000a9f14 bne.w 0xa9c3e                                     |         goto label_0;
                                                                 |     }
    0x000a9f18 ldr r3, [pc, 0x124]                               |     
    0x000a9f1a mov r0, sb                                        |     r0 = sb;
    0x000a9f1c ldr r3, [r6, r3]                                  |     r3 = *((r6 + r3));
    0x000a9f1e pop.w {r4, r5, r6, r7, r8, sb, sl, lr}            |     
    0x000a9f22 ldr r3, [r3]                                      |     r3 = *(0xaa040);
    0x000a9f24 bx r3                                             |     return uint32_t (*r3)() ();
                                                                 | label_43:
    0x000a9f26 adds r2, r3, 1                                    |     r2 = r3 + 1;
    0x000a9f28 ldr r0, [r5, 0x10]                                |     r0 = *((r5 + 0x10));
    0x000a9f2a str r2, [r5]                                      |     *(r5) = r2;
    0x000a9f2c mov r3, r8                                        |     r3 = r8;
    0x000a9f2e mov r2, sb                                        |     r2 = sb;
    0x000a9f30 movs r1, 7                                        |     r1 = 7;
    0x000a9f32 bl 0xa996c                                        |     r0 = fcn_000a996c (r0, r1, r2, r3);
    0x000a9f36 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x000a9f38 beq.w 0xa9c3e                                     |         goto label_0;
                                                                 |     }
    0x000a9f3c b 0xa9f06                                         |     goto label_11;
                                                                 | label_28:
    0x000a9f3e ldrb r3, [r4, 1]                                  |     r3 = *((r4 + 1));
    0x000a9f40 cmp r3, 0x6d                                      |     
                                                                 |     if (r3 != 0x6d) {
    0x000a9f42 bne.w 0xa9cfc                                     |         goto label_12;
                                                                 |     }
    0x000a9f46 ldrb r3, [r4, 2]                                  |     r3 = *((r4 + 2));
    0x000a9f48 cmp r3, 0x6c                                      |     
                                                                 |     if (r3 != 0x6c) {
    0x000a9f4a bne.w 0xa9cfc                                     |         goto label_12;
                                                                 |     }
    0x000a9f4e ldrb r3, [r4, 3]                                  |     r3 = *((r4 + 3));
    0x000a9f50 cmp r3, 0                                         |     
                                                                 |     if (r3 != 0) {
    0x000a9f52 bne.w 0xa9cfc                                     |         goto label_12;
                                                                 |     }
    0x000a9f56 ldr r3, [r5, 0x10]                                |     r3 = *((r5 + 0x10));
    0x000a9f58 ldr r0, [r3, 4]                                   |     r0 = *((r3 + 4));
    0x000a9f5a cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x000a9f5c beq 0xa9ffa                                       |         goto label_44;
                                                                 |     }
    0x000a9f5e ldr r1, [pc, 0xe8]                                |     
    0x000a9f60 mov.w r2, -1                                      |     r2 = -1;
    0x000a9f64 add r1, pc                                        |     r1 = 0x153fb2;
    0x000a9f66 bl 0xa24d0                                        |     r0 = xmlDictLookup ();
    0x000a9f6a mov sb, r0                                        |     sb = r0;
    0x000a9f6c b 0xa9d4a                                         |     goto label_13;
                                                                 | label_36:
    0x000a9f6e ldr r1, [pc, 0xdc]                                |     
    0x000a9f70 mov r0, r4                                        |     r0 = r4;
    0x000a9f72 add r1, pc                                        |     r1 = 0x153fc4;
    0x000a9f74 bl 0x6bd74                                        |     r0 = xmlStrEqual ();
    0x000a9f78 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x000a9f7a beq.w 0xa9da8                                     |         goto label_5;
                                                                 |     }
    0x000a9f7e ldr r3, [r5, 0x10]                                |     r3 = *((r5 + 0x10));
    0x000a9f80 ldr r2, [r3, 4]                                   |     r2 = *((r3 + 4));
                                                                 |     if (r2 == 0) {
    0x000a9f82 cbz r2, 0xa9fbe                                   |         goto label_45;
                                                                 |     }
                                                                 | label_16:
    0x000a9f84 ldr r3, [r3, 0x10]                                |     r3 = *((r3 + 0x10));
    0x000a9f86 lsls r3, r3, 0x1e                                 |     r3 <<= 0x1e;
                                                                 |     if (r3 < r3) {
    0x000a9f88 bmi.w 0xa9c3a                                     |         goto label_2;
                                                                 |     }
    0x000a9f8c mov r0, r5                                        |     r0 = r5;
    0x000a9f8e pop.w {r4, r5, r6, r7, r8, sb, sl, lr}            |     
    0x000a9f92 b 0xa99d0                                         |     void (*0xa99d0)() ();
                                                                 | label_38:
    0x000a9f94 mov r2, r0                                        |     r2 = r0;
    0x000a9f96 movs r3, 0                                        |     r3 = 0;
    0x000a9f98 ldr r0, [r5, 0x10]                                |     r0 = *((r5 + 0x10));
    0x000a9f9a movs r1, 3                                        |     r1 = 3;
    0x000a9f9c bl 0xa996c                                        |     r0 = fcn_000a996c (r0, r1, r2, r3);
    0x000a9fa0 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x000a9fa2 beq.w 0xa9c3e                                     |         goto label_0;
                                                                 |     }
    0x000a9fa6 b 0xa9cb2                                         |     goto label_1;
                                                                 | label_31:
    0x000a9fa8 mov r0, r1                                        |     r0 = r1;
    0x000a9faa bl 0x6bca8                                        |     r0 = xmlStrdup ();
    0x000a9fae mov sb, r0                                        |     sb = r0;
    0x000a9fb0 b 0xa9d42                                         |     goto label_14;
                                                                 | label_37:
    0x000a9fb2 ldr r3, [pc, 0x8c]                                |     
    0x000a9fb4 mov r0, r4                                        |     r0 = r4;
    0x000a9fb6 ldr r3, [r6, r3]                                  |     r3 = *((r6 + r3));
    0x000a9fb8 ldr r3, [r3]                                      |     r3 = *(0xaa042);
    0x000a9fba blx r3                                            |     uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
    0x000a9fbc b 0xa9e16                                         |     goto label_15;
                                                                 | label_45:
    0x000a9fbe ldr r3, [pc, 0x80]                                |     
    0x000a9fc0 mov r0, r4                                        |     r0 = r4;
    0x000a9fc2 ldr r3, [r6, r3]                                  |     r3 = *((r6 + r3));
    0x000a9fc4 ldr r3, [r3]                                      |     r3 = *(0xaa042);
    0x000a9fc6 blx r3                                            |     uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
    0x000a9fc8 ldr r3, [r5, 0x10]                                |     r3 = *((r5 + 0x10));
    0x000a9fca b 0xa9f84                                         |     goto label_16;
                                                                 | label_39:
    0x000a9fcc ldrb r3, [r4, 1]                                  |     r3 = *((r4 + 1));
    0x000a9fce cmp r3, 0x6d                                      |     
                                                                 |     if (r3 != 0x6d) {
    0x000a9fd0 bne.w 0xa9e5e                                     |         goto label_17;
                                                                 |     }
    0x000a9fd4 ldrb r3, [r4, 2]                                  |     r3 = *((r4 + 2));
    0x000a9fd6 cmp r3, 0x6c                                      |     
                                                                 |     if (r3 != 0x6c) {
    0x000a9fd8 bne.w 0xa9e5e                                     |         goto label_17;
                                                                 |     }
    0x000a9fdc ldrb r3, [r4, 3]                                  |     r3 = *((r4 + 3));
    0x000a9fde cmp r3, 0                                         |     
                                                                 |     if (r3 != 0) {
    0x000a9fe0 bne.w 0xa9e5e                                     |         goto label_17;
                                                                 |     }
    0x000a9fe4 ldr r3, [r5, 0x10]                                |     r3 = *((r5 + 0x10));
    0x000a9fe6 ldr r0, [r3, 4]                                   |     r0 = *((r3 + 4));
                                                                 |     if (r0 == 0) {
    0x000a9fe8 cbz r0, 0xaa030                                   |         goto label_46;
                                                                 |     }
    0x000a9fea ldr r1, [pc, 0x64]                                |     
    0x000a9fec mov.w r2, -1                                      |     r2 = -1;
    0x000a9ff0 add r1, pc                                        |     r1 = 0x154046;
    0x000a9ff2 bl 0xa24d0                                        |     r0 = xmlDictLookup ();
    0x000a9ff6 mov sb, r0                                        |     sb = r0;
    0x000a9ff8 b 0xa9ea6                                         |     goto label_18;
                                                                 | label_44:
    0x000a9ffa ldr r0, [pc, 0x58]                                |     
    0x000a9ffc add r0, pc                                        |     r0 = 0x154056;
    0x000a9ffe bl 0x6bca8                                        |     r0 = xmlStrdup ();
    0x000aa002 mov sb, r0                                        |     sb = r0;
    0x000aa004 b 0xa9d4a                                         |     goto label_13;
                                                                 | label_42:
    0x000aa006 ldr r3, [pc, 0x38]                                |     
    0x000aa008 mov r0, r4                                        |     r0 = r4;
    0x000aa00a ldr r3, [r6, r3]                                  |     r3 = *((r6 + r3));
    0x000aa00c ldr r3, [r3]                                      |     r3 = *(0xaa042);
    0x000aa00e blx r3                                            |     uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
    0x000aa010 b 0xa9eb0                                         |     goto label_19;
                                                                 | label_41:
    0x000aa012 mov r0, r1                                        |     r0 = r1;
    0x000aa014 bl 0x6bca8                                        |     r0 = xmlStrdup ();
    0x000aa018 mov sb, r0                                        |     sb = r0;
    0x000aa01a b 0xa9ea0                                         |     goto label_20;
                                                                 | label_35:
    0x000aa01c cmp r4, 0                                         |     
                                                                 |     if (r4 != 0) {
    0x000aa01e bne.w 0xa9c3e                                     |         goto label_0;
                                                                 |     }
    0x000aa022 ldr r3, [pc, 0x1c]                                |     
    0x000aa024 mov r0, r8                                        |     r0 = r8;
    0x000aa026 ldr r3, [r6, r3]                                  |     r3 = *((r6 + r3));
    0x000aa028 pop.w {r4, r5, r6, r7, r8, sb, sl, lr}            |     
    0x000aa02c ldr r3, [r3]                                      |     r3 = *(0xaa042);
    0x000aa02e bx r3                                             |     return uint32_t (*r3)() ();
                                                                 | label_46:
    0x000aa030 ldr r0, [pc, 0x24]                                |     
    0x000aa032 add r0, pc                                        |     r0 = 0x15408e;
    0x000aa034 bl 0x6bca8                                        |     r0 = xmlStrdup ();
    0x000aa038 mov sb, r0                                        |     sb = r0;
    0x000aa03a b 0xa9ea6                                         |     goto label_18;
                                                                 | }
    ; 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 @ 0x7194c */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) sym.xmlRegexpPrint ()                                | void xmlRegexpPrint (int16_t arg_0h, int16_t arg_4h, int16_t arg_8h, uint32_t arg1, int16_t arg2) {
                                                                 |     int16_t var_0h;
                                                                 |     int16_t var_4h;
                                                                 |     int16_t var_8h;
                                                                 |     int16_t var_ch;
                                                                 |     int16_t var_10h;
                                                                 |     int16_t var_14h;
                                                                 |     int16_t var_18h;
                                                                 |     int16_t var_1ch;
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
    0x0007194c cmp r0, 0                                         |     
                                                                 |     if (arg_0h == ) {
    0x0007194e beq.w 0x71dac                                     |         goto label_26;
                                                                 |     }
    0x00071952 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}       |     
    0x00071956 mov r3, r0                                        |     r3 = r0;
    0x00071958 mov r4, r0                                        |     r4 = r0;
    0x0007195a ldr.w r0, [pc, 0x468]                             |     r0 = *(0x00071dc4);
    0x0007195e mov r6, r1                                        |     r6 = r1;
    0x00071960 sub sp, 0x1c                                      |     
    0x00071962 movs r2, 9                                        |     r2 = 9;
    0x00071964 movs r1, 1                                        |     r1 = 1;
    0x00071966 add r0, pc                                        |     r0 += pc;
    0x00071968 blx 0x1baf8                                       |     fcn_0001baf8 ();
    0x0007196c cmp r6, 0                                         |     
                                                                 |     if (r6 == 0) {
    0x0007196e beq.w 0x71dae                                     |         goto label_27;
                                                                 |     }
    0x00071972 ldr.w r2, [pc, 0x454]                             |     
    0x00071976 movs r1, 1                                        |     r1 = 1;
    0x00071978 ldr r3, [r6]                                      |     r3 = *(r6);
    0x0007197a mov r0, r4                                        |     r0 = r4;
    0x0007197c add r2, pc                                        |     r2 = 0xe374a;
    0x0007197e blx 0x1bb8c                                       |     fcn_0001bb8c ();
    0x00071982 mov r1, r4                                        |     r1 = r4;
    0x00071984 movs r0, 0xa                                      |     r0 = 0xa;
    0x00071986 blx 0x1bbd0                                       |     memmove (r0, r1, r2);
    0x0007198a ldr.w r2, [pc, 0x440]                             |     
    0x0007198e movs r1, 1                                        |     r1 = 1;
    0x00071990 ldr r3, [r6, 0xc]                                 |     r3 = *((r6 + 0xc));
    0x00071992 mov r0, r4                                        |     r0 = r4;
    0x00071994 add r2, pc                                        |     r2 = 0xe3766;
    0x00071996 blx 0x1bb8c                                       |     fcn_0001bb8c ();
    0x0007199a ldr r3, [r6, 0xc]                                 |     r3 = *((r6 + 0xc));
    0x0007199c cmp r3, 0                                         |     
                                                                 |     if (r3 <= 0) {
    0x0007199e ble 0x71a54                                       |         goto label_28;
                                                                 |     }
    0x000719a0 ldr.w sb, [pc, 0x42c]                             |     sb = *(0x00071dd0);
    0x000719a4 movs r7, 0                                        |     r7 = 0;
    0x000719a6 ldr.w r3, [pc, 0x42c]                             |     
    0x000719aa add sb, pc                                        |     sb += pc;
    0x000719ac add r3, pc                                        |     r3 = 0xe3786;
    0x000719ae str r3, [sp, 0x10]                                |     var_10h = r3;
                                                                 |     do {
    0x000719b0 mov r3, r7                                        |         r3 = r7;
    0x000719b2 mov r2, sb                                        |         r2 = sb;
    0x000719b4 movs r1, 1                                        |         r1 = 1;
    0x000719b6 mov r0, r4                                        |         r0 = r4;
    0x000719b8 blx 0x1bb8c                                       |         fcn_0001bb8c ();
    0x000719bc ldr r5, [r6, 0x10]                                |         r5 = *((r6 + 0x10));
    0x000719be mov r3, r4                                        |         r3 = r4;
    0x000719c0 ldr.w r0, [pc, 0x414]                             |         
    0x000719c4 movs r2, 7                                        |         r2 = 7;
    0x000719c6 movs r1, 1                                        |         r1 = 1;
    0x000719c8 ldr.w r5, [r5, r7, lsl 2]                         |         offset_0 = r7 << 2;
                                                                 |         r5 = *((r5 + offset_0));
    0x000719cc add r0, pc                                        |         r0 = 0xe37a8;
    0x000719ce blx 0x1baf8                                       |         fcn_0001baf8 ();
    0x000719d2 cmp r5, 0                                         |         
                                                                 |         if (r5 == 0) {
    0x000719d4 beq.w 0x71d8c                                     |             goto label_29;
                                                                 |         }
    0x000719d8 ldr r3, [r5, 0x1c]                                |         r3 = *((r5 + 0x1c));
    0x000719da cmp r3, 0                                         |         
                                                                 |         if (r3 != 0) {
    0x000719dc bne.w 0x71c36                                     |             goto label_30;
                                                                 |         }
                                                                 | label_6:
    0x000719e0 ldr r1, [r5, 4]                                   |         r1 = *((r5 + 4));
    0x000719e2 mov r0, r4                                        |         r0 = r4;
    0x000719e4 bl 0x6dbdc                                        |         fcn_0006dbdc (r0, r1, r2, r3, r4, r5, r6);
    0x000719e8 ldr r3, [r5, 8]                                   |         r3 = *((r5 + 8));
    0x000719ea subs r3, 1                                        |         r3--;
    0x000719ec cmp r3, 7                                         |         
                                                                 |         if (r3 <= 7) {
    0x000719ee bhi 0x71a2a                                       |             
                                                                 |             /* switch table (9 cases) at 0x719f4 */
    0x000719f0 tbh [pc, r3, lsl 1]                               |             __asm ("tbh [pc, r3, lsl 1]");
    0x00071a04 ldr r0, [pc, 0x3d4]                               |             
    0x00071a06 mov r3, r4                                        |             r3 = r4;
    0x00071a08 movs r2, 6                                        |             r2 = 6;
    0x00071a0a movs r1, 1                                        |             r1 = 1;
    0x00071a0c add r0, pc                                        |             r0 = 0xe37ec;
    0x00071a0e blx 0x1baf8                                       |             fcn_0001baf8 ();
    0x00071a12 ldr r3, [r5, 8]                                   |             r3 = *((r5 + 8));
                                                                 | label_11:
    0x00071a14 cmp r3, 8                                         |             
                                                                 |             if (r3 != 8) {
    0x00071a16 bne 0x71a2a                                       |                 goto label_31;
                                                                 |             }
    0x00071a18 ldrd r3, r2, [r5, 0xc]                            |             __asm ("ldrd r3, r2, [r5, 0xc]");
    0x00071a1c movs r1, 1                                        |             r1 = 1;
    0x00071a1e mov r0, r4                                        |             r0 = r4;
    0x00071a20 str r2, [sp]                                      |             *(sp) = r2;
    0x00071a22 ldr r2, [pc, 0x3bc]                               |             
    0x00071a24 add r2, pc                                        |             r2 = 0xe380a;
    0x00071a26 blx 0x1bb8c                                       |             fcn_0001bb8c ();
                                                                 |         }
                                                                 | label_31:
    0x00071a2a ldr r3, [r5, 4]                                   |         r3 = *((r5 + 4));
    0x00071a2c cmp r3, 5                                         |         
                                                                 |         if (r3 == 5) {
    0x00071a2e beq.w 0x71c84                                     |             goto label_32;
                                                                 |         }
    0x00071a32 cmp r3, 2                                         |         
                                                                 |         if (r3 == 2) {
    0x00071a34 beq.w 0x71c9a                                     |             goto label_33;
                                                                 |         }
                                                                 | label_9:
    0x00071a38 cmp r3, 3                                         |         
                                                                 |         if (r3 == 3) {
    0x00071a3a beq.w 0x71caa                                     |             goto label_34;
                                                                 |         }
    0x00071a3e cmp r3, 4                                         |         
                                                                 |         if (r3 == 4) {
    0x00071a40 beq.w 0x71c46                                     |             goto label_35;
                                                                 |         }
    0x00071a44 mov r1, r4                                        |         r1 = r4;
    0x00071a46 movs r0, 0xa                                      |         r0 = 0xa;
    0x00071a48 blx 0x1bbd0                                       |         memmove (r0, r1, r2);
                                                                 | label_7:
    0x00071a4c ldr r3, [r6, 0xc]                                 |         r3 = *((r6 + 0xc));
    0x00071a4e adds r7, 1                                        |         r7++;
    0x00071a50 cmp r7, r3                                        |         
    0x00071a52 blt 0x719b0                                       |         
                                                                 |     } while (r7 < r3);
                                                                 | label_28:
    0x00071a54 ldr r2, [pc, 0x38c]                               |     
    0x00071a56 movs r1, 1                                        |     r1 = 1;
    0x00071a58 ldr r3, [r6, 4]                                   |     r3 = *((r6 + 4));
    0x00071a5a mov r0, r4                                        |     r0 = r4;
    0x00071a5c add r2, pc                                        |     r2 = 0xe3844;
    0x00071a5e blx 0x1bb8c                                       |     fcn_0001bb8c ();
    0x00071a62 mov r1, r4                                        |     r1 = r4;
    0x00071a64 movs r0, 0xa                                      |     r0 = 0xa;
    0x00071a66 blx 0x1bbd0                                       |     memmove (r0, r1, r2);
    0x00071a6a ldr r3, [r6, 4]                                   |     r3 = *((r6 + 4));
    0x00071a6c cmp r3, 0                                         |     
                                                                 |     if (r3 <= 0) {
    0x00071a6e ble.w 0x71bac                                     |         goto label_36;
                                                                 |     }
    0x00071a72 ldr r3, [pc, 0x374]                               |     
    0x00071a74 movs r2, 0                                        |     r2 = 0;
    0x00071a76 ldr.w fp, [pc, 0x374]                             |     fp = *(0x00071dec);
    0x00071a7a str r2, [sp, 8]                                   |     var_8h = r2;
    0x00071a7c add r3, pc                                        |     r3 = 0xe386a;
    0x00071a7e str r6, [sp, 0xc]                                 |     var_ch = r6;
    0x00071a80 str r3, [sp, 0x10]                                |     var_10h = r3;
    0x00071a82 add fp, pc                                        |     
    0x00071a84 ldr r3, [pc, 0x368]                               |     
    0x00071a86 add r3, pc                                        |     r3 = 0xe387a;
    0x00071a88 str r3, [sp, 0x14]                                |     var_14h = r3;
    0x00071a8a movw r3, 0x3456                                   |     
    0x00071a8e movt r3, 0x12                                     |     r3 = 0x123456;
    0x00071a92 mov sl, r3                                        |     sl = r3;
                                                                 | label_2:
    0x00071a94 ldr r3, [sp, 0xc]                                 |     r3 = var_ch;
    0x00071a96 movs r2, 8                                        |     r2 = 8;
    0x00071a98 ldr r6, [sp, 8]                                   |     r6 = var_8h;
    0x00071a9a movs r1, 1                                        |     r1 = 1;
    0x00071a9c ldr r0, [sp, 0x10]                                |     r0 = var_10h;
    0x00071a9e ldr r5, [r3, 8]                                   |     r5 = *((r3 + 8));
    0x00071aa0 mov r3, r4                                        |     r3 = r4;
    0x00071aa2 ldr.w r8, [r5, r6, lsl 2]                         |     offset_1 = r6 << 2;
                                                                 |     r8 = *((r5 + offset_1));
    0x00071aa6 blx 0x1baf8                                       |     fcn_0001baf8 ();
    0x00071aaa cmp.w r8, 0                                       |     
                                                                 |     if (r8 == 0) {
    0x00071aae beq.w 0x71d9c                                     |         goto label_37;
                                                                 |     }
    0x00071ab2 ldr.w r1, [r8]                                    |     r1 = *(r8);
    0x00071ab6 cmp r1, 1                                         |     
                                                                 |     if (r1 == 1) {
    0x00071ab8 beq.w 0x71c5e                                     |         goto label_38;
                                                                 |     }
    0x00071abc cmp r1, 2                                         |     
                                                                 |     if (r1 == 2) {
    0x00071abe beq.w 0x71c74                                     |         goto label_39;
                                                                 |     }
                                                                 | label_8:
    0x00071ac2 ldr.w r0, [r8, 0x18]                              |     r0 = *((r8 + 0x18));
    0x00071ac6 movs r1, 1                                        |     r1 = 1;
    0x00071ac8 ldr.w r3, [r8, 0x10]                              |     r3 = *((r8 + 0x10));
    0x00071acc ldr r2, [sp, 0x14]                                |     r2 = var_14h;
    0x00071ace str r0, [sp]                                      |     *(sp) = r0;
    0x00071ad0 mov r0, r4                                        |     r0 = r4;
    0x00071ad2 blx 0x1bb8c                                       |     fcn_0001bb8c ();
    0x00071ad6 ldr.w r3, [r8, 0x18]                              |     r3 = *((r8 + 0x18));
    0x00071ada cmp r3, 0                                         |     
                                                                 |     if (r3 <= 0) {
    0x00071adc ble 0x71b9a                                       |         goto label_13;
                                                                 |     }
    0x00071ade ldr.w sb, [pc, 0x314]                             |     sb = *(0x00071df4);
    0x00071ae2 movs r6, 0                                        |     r6 = 0;
    0x00071ae4 mov r7, r6                                        |     r7 = r6;
    0x00071ae6 add sb, pc                                        |     sb += pc;
    0x00071ae8 b 0x71b22                                         |     
                                                                 |     while (r3 != sl) {
    0x00071aea cmp r3, 0                                         |         
                                                                 |         if (r3 >= 0) {
    0x00071aec blt 0x71afa                                       |             
    0x00071aee ldr r2, [pc, 0x308]                               |             
    0x00071af0 movs r1, 1                                        |             r1 = 1;
    0x00071af2 mov r0, r4                                        |             r0 = r4;
    0x00071af4 add r2, pc                                        |             r2 = 0xe38f2;
    0x00071af6 blx 0x1bb8c                                       |             fcn_0001bb8c ();
                                                                 |         }
    0x00071afa ldr r3, [r5]                                      |         r3 = *(r5);
    0x00071afc cmp r3, 0                                         |         
                                                                 |         if (r3 == 0) {
    0x00071afe beq 0x71b80                                       |             goto label_40;
                                                                 |         }
                                                                 | label_0:
    0x00071b00 ldr r2, [r3, 4]                                   |         r2 = *((r3 + 4));
    0x00071b02 cmp r2, 2                                         |         
                                                                 |         if (r2 == 2) {
    0x00071b04 beq 0x71bf6                                       |             goto label_41;
                                                                 |         }
                                                                 | label_3:
    0x00071b06 ldr r2, [r5, 4]                                   |         r2 = *((r5 + 4));
    0x00071b08 movs r1, 1                                        |         r1 = 1;
    0x00071b0a ldr r3, [r3]                                      |         r3 = *(r3);
    0x00071b0c mov r0, r4                                        |         r0 = r4;
    0x00071b0e str r2, [sp]                                      |         *(sp) = r2;
    0x00071b10 mov r2, fp                                        |         r2 = fp;
    0x00071b12 blx 0x1bb8c                                       |         fcn_0001bb8c ();
                                                                 | label_4:
    0x00071b16 ldr.w r3, [r8, 0x18]                              |         r3 = *((r8 + 0x18));
    0x00071b1a adds r7, 1                                        |         r7++;
    0x00071b1c adds r6, 0x14                                     |         r6 += 0x14;
    0x00071b1e cmp r7, r3                                        |         
                                                                 |         if (r7 >= r3) {
    0x00071b20 bge 0x71b9a                                       |             goto label_13;
                                                                 |         }
                                                                 | label_1:
    0x00071b22 ldr.w r5, [r8, 0x1c]                              |         r5 = *((r8 + 0x1c));
    0x00071b26 mov r3, r4                                        |         r3 = r4;
    0x00071b28 movs r2, 9                                        |         r2 = 9;
    0x00071b2a movs r1, 1                                        |         r1 = 1;
    0x00071b2c mov r0, sb                                        |         r0 = sb;
    0x00071b2e add r5, r6                                        |         r5 += r6;
    0x00071b30 blx 0x1baf8                                       |         fcn_0001baf8 ();
    0x00071b34 cmp r5, 0                                         |         
                                                                 |         if (r5 == 0) {
    0x00071b36 beq 0x71c26                                       |             goto label_42;
                                                                 |         }
    0x00071b38 ldr r3, [r5, 4]                                   |         r3 = *((r5 + 4));
    0x00071b3a cmp r3, 0                                         |         
                                                                 |         if (r3 < 0) {
    0x00071b3c blt 0x71c08                                       |             goto label_43;
                                                                 |         }
    0x00071b3e ldr r3, [r5, 0x10]                                |         r3 = *((r5 + 0x10));
                                                                 |         if (r3 != 0) {
    0x00071b40 cbz r3, 0x71b54                                   |             
    0x00071b42 cmp r3, 2                                         |             
    0x00071b44 mov r3, r4                                        |             r3 = r4;
                                                                 |             if (r3 == 2) {
    0x00071b46 beq 0x71c18                                       |                 goto label_44;
                                                                 |             }
    0x00071b48 ldr r0, [pc, 0x2b0]                               |             
    0x00071b4a movs r2, 0x11                                     |             r2 = 0x11;
    0x00071b4c movs r1, 1                                        |             r1 = 1;
    0x00071b4e add r0, pc                                        |             r0 = 0xe394e;
    0x00071b50 blx 0x1baf8                                       |             fcn_0001baf8 ();
                                                                 |         }
                                                                 | label_5:
    0x00071b54 ldr r3, [r5, 8]                                   |         r3 = *((r5 + 8));
    0x00071b56 cmp r3, 0                                         |         
                                                                 |         if (r3 >= 0) {
    0x00071b58 blt 0x71b66                                       |             
    0x00071b5a ldr r2, [pc, 0x2a4]                               |             
    0x00071b5c movs r1, 1                                        |             r1 = 1;
    0x00071b5e mov r0, r4                                        |             r0 = r4;
    0x00071b60 add r2, pc                                        |             r2 = 0xe3966;
    0x00071b62 blx 0x1bb8c                                       |             fcn_0001bb8c ();
                                                                 |         }
    0x00071b66 ldr r3, [r5, 0xc]                                 |         r3 = *((r5 + 0xc));
    0x00071b68 cmp r3, sl                                        |         
    0x00071b6a bne 0x71aea                                       |         
                                                                 |     }
    0x00071b6c ldr r0, [pc, 0x294]                               |     
    0x00071b6e mov r3, r4                                        |     r3 = r4;
    0x00071b70 movs r2, 0x10                                     |     r2 = 0x10;
    0x00071b72 movs r1, 1                                        |     r1 = 1;
    0x00071b74 add r0, pc                                        |     r0 = 0xe397c;
    0x00071b76 blx 0x1baf8                                       |     fcn_0001baf8 ();
    0x00071b7a ldr r3, [r5]                                      |     r3 = *(r5);
    0x00071b7c cmp r3, 0                                         |     
                                                                 |     if (r3 != 0) {
    0x00071b7e bne 0x71b00                                       |         goto label_0;
                                                                 |     }
                                                                 | label_40:
    0x00071b80 ldr r2, [pc, 0x284]                               |     
    0x00071b82 movs r1, 1                                        |     r1 = 1;
    0x00071b84 ldr r3, [r5, 4]                                   |     r3 = *((r5 + 4));
    0x00071b86 mov r0, r4                                        |     r0 = r4;
    0x00071b88 adds r7, 1                                        |     r7++;
    0x00071b8a adds r6, 0x14                                     |     r6 += 0x14;
    0x00071b8c add r2, pc                                        |     r2 = 0xe3998;
    0x00071b8e blx 0x1bb8c                                       |     fcn_0001bb8c ();
    0x00071b92 ldr.w r3, [r8, 0x18]                              |     r3 = *((r8 + 0x18));
    0x00071b96 cmp r7, r3                                        |     
                                                                 |     if (r7 < r3) {
    0x00071b98 blt 0x71b22                                       |         goto label_1;
                                                                 |     }
                                                                 | label_13:
    0x00071b9a ldr r3, [sp, 0xc]                                 |     r3 = var_ch;
    0x00071b9c ldr r2, [sp, 8]                                   |     r2 = var_8h;
    0x00071b9e ldr r3, [r3, 4]                                   |     r3 = *((r3 + 4));
    0x00071ba0 adds r2, 1                                        |     r2++;
    0x00071ba2 str r2, [sp, 8]                                   |     var_8h = r2;
    0x00071ba4 cmp r2, r3                                        |     
                                                                 |     if (r2 < r3) {
    0x00071ba6 blt.w 0x71a94                                     |         goto label_2;
                                                                 |     }
    0x00071baa ldr r6, [sp, 0xc]                                 |     r6 = var_ch;
                                                                 | label_36:
    0x00071bac ldr r2, [pc, 0x25c]                               |     
    0x00071bae movs r1, 1                                        |     r1 = 1;
    0x00071bb0 ldr r3, [r6, 0x14]                                |     r3 = *((r6 + 0x14));
    0x00071bb2 mov r0, r4                                        |     r0 = r4;
    0x00071bb4 add r2, pc                                        |     r2 = 0xe39c4;
    0x00071bb6 blx 0x1bb8c                                       |     fcn_0001bb8c ();
    0x00071bba ldr r3, [r6, 0x14]                                |     r3 = *((r6 + 0x14));
    0x00071bbc cmp r3, 0                                         |     
                                                                 |     if (r3 <= 0) {
    0x00071bbe ble 0x71bf0                                       |         goto label_45;
                                                                 |     }
    0x00071bc0 ldr.w r8, [pc, 0x24c]                             |     
    0x00071bc4 movs r5, 0                                        |     r5 = 0;
    0x00071bc6 mov sb, r4                                        |     sb = r4;
    0x00071bc8 add r8, pc                                        |     r8 = 0xe39dc;
                                                                 |     do {
    0x00071bca ldr r7, [r6, 0x18]                                |         r7 = *((r6 + 0x18));
    0x00071bcc mov r3, r5                                        |         r3 = r5;
    0x00071bce movs r1, 1                                        |         r1 = 1;
    0x00071bd0 mov r2, r8                                        |         r2 = r8;
    0x00071bd2 mov r0, sb                                        |         r0 = sb;
    0x00071bd4 add.w ip, r7, r5, lsl 3                           |         
    0x00071bd8 ldr.w r4, [ip, 4]                                 |         r4 = *((ip + 4));
    0x00071bdc str r4, [sp, 4]                                   |         var_4h = r4;
    0x00071bde ldr.w r7, [r7, r5, lsl 3]                         |         offset_2 = r5 << 3;
                                                                 |         r7 = *((r7 + offset_2));
    0x00071be2 add r5, r1                                        |         r5 += r1;
    0x00071be4 str r7, [sp]                                      |         *(sp) = r7;
    0x00071be6 blx 0x1bb8c                                       |         fcn_0001bb8c ();
    0x00071bea ldr r3, [r6, 0x14]                                |         r3 = *((r6 + 0x14));
    0x00071bec cmp r5, r3                                        |         
    0x00071bee blt 0x71bca                                       |         
                                                                 |     } while (r5 < r3);
                                                                 | label_45:
    0x00071bf0 add sp, 0x1c                                      |     
    0x00071bf2 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |     
                                                                 | label_41:
    0x00071bf6 ldr r2, [pc, 0x21c]                               |     
    0x00071bf8 movs r1, 1                                        |     r1 = 1;
    0x00071bfa ldr r3, [r3, 0x20]                                |     r3 = *((r3 + 0x20));
    0x00071bfc mov r0, r4                                        |     r0 = r4;
    0x00071bfe add r2, pc                                        |     r2 = 0xe3a18;
    0x00071c00 blx 0x1bb8c                                       |     fcn_0001bb8c ();
    0x00071c04 ldr r3, [r5]                                      |     r3 = *(r5);
    0x00071c06 b 0x71b06                                         |     goto label_3;
                                                                 | label_43:
    0x00071c08 ldr r0, [pc, 0x20c]                               |     
    0x00071c0a mov r3, r4                                        |     r3 = r4;
    0x00071c0c movs r2, 8                                        |     r2 = 8;
    0x00071c0e movs r1, 1                                        |     r1 = 1;
    0x00071c10 add r0, pc                                        |     r0 = 0xe3a2c;
    0x00071c12 blx 0x1baf8                                       |     fcn_0001baf8 ();
    0x00071c16 b 0x71b16                                         |     goto label_4;
                                                                 | label_44:
    0x00071c18 ldr r0, [pc, 0x200]                               |     
    0x00071c1a movs r2, 0x16                                     |     r2 = 0x16;
    0x00071c1c movs r1, 1                                        |     r1 = 1;
    0x00071c1e add r0, pc                                        |     r0 = 0xe3a3e;
    0x00071c20 blx 0x1baf8                                       |     fcn_0001baf8 ();
    0x00071c24 b 0x71b54                                         |     goto label_5;
                                                                 | label_42:
    0x00071c26 ldr r0, [pc, 0x1f8]                               |     
    0x00071c28 mov r3, r4                                        |     r3 = r4;
    0x00071c2a movs r2, 5                                        |     r2 = 5;
    0x00071c2c movs r1, 1                                        |     r1 = 1;
    0x00071c2e add r0, pc                                        |     r0 = 0xe3a54;
    0x00071c30 blx 0x1baf8                                       |     fcn_0001baf8 ();
    0x00071c34 b 0x71b16                                         |     goto label_4;
                                                                 | label_30:
    0x00071c36 ldr r0, [pc, 0x1ec]                               |     
    0x00071c38 mov r3, r4                                        |     r3 = r4;
    0x00071c3a movs r2, 4                                        |     r2 = 4;
    0x00071c3c movs r1, 1                                        |     r1 = 1;
    0x00071c3e add r0, pc                                        |     r0 = 0xe3a68;
    0x00071c40 blx 0x1baf8                                       |     fcn_0001baf8 ();
    0x00071c44 b 0x719e0                                         |     goto label_6;
                                                                 | label_35:
    0x00071c46 ldr r2, [r5, 0x2c]                                |     r2 = *((r5 + 0x2c));
    0x00071c48 movs r1, 1                                        |     r1 = 1;
    0x00071c4a ldr r3, [r5, 0x24]                                |     r3 = *((r5 + 0x24));
    0x00071c4c mov r0, r4                                        |     r0 = r4;
    0x00071c4e ldr r2, [r2, 0x10]                                |     r2 = *((r2 + 0x10));
    0x00071c50 ldr r3, [r3, 0x10]                                |     r3 = *((r3 + 0x10));
    0x00071c52 str r2, [sp]                                      |     *(sp) = r2;
    0x00071c54 ldr r2, [pc, 0x1d0]                               |     
    0x00071c56 add r2, pc                                        |     r2 = 0xe3a82;
    0x00071c58 blx 0x1bb8c                                       |     fcn_0001bb8c ();
    0x00071c5c b 0x71a4c                                         |     goto label_7;
                                                                 | label_38:
    0x00071c5e ldr r0, [pc, 0x1cc]                               |     
    0x00071c60 mov r3, r4                                        |     r3 = r4;
    0x00071c62 movs r2, 6                                        |     r2 = 6;
    0x00071c64 add r0, pc                                        |     r0 = 0xe3a96;
    0x00071c66 blx 0x1baf8                                       |     fcn_0001baf8 ();
    0x00071c6a ldr.w r1, [r8]                                    |     r1 = *(r8);
    0x00071c6e cmp r1, 2                                         |     
                                                                 |     if (r1 != 2) {
    0x00071c70 bne.w 0x71ac2                                     |         goto label_8;
                                                                 |     }
                                                                 | label_39:
    0x00071c74 ldr r0, [pc, 0x1b8]                               |     
    0x00071c76 mov r3, r4                                        |     r3 = r4;
    0x00071c78 movs r2, 6                                        |     r2 = 6;
    0x00071c7a movs r1, 1                                        |     r1 = 1;
    0x00071c7c add r0, pc                                        |     r0 = 0xe3ab0;
    0x00071c7e blx 0x1baf8                                       |     fcn_0001baf8 ();
    0x00071c82 b 0x71ac2                                         |     goto label_8;
                                                                 | label_32:
    0x00071c84 ldr r2, [pc, 0x1ac]                               |     
    0x00071c86 movs r1, 1                                        |     r1 = 1;
    0x00071c88 ldr r3, [r5, 0x14]                                |     r3 = *((r5 + 0x14));
    0x00071c8a mov r0, r4                                        |     r0 = r4;
    0x00071c8c add r2, pc                                        |     r2 = 0xe3ac4;
    0x00071c8e blx 0x1bb8c                                       |     fcn_0001bb8c ();
    0x00071c92 ldr r3, [r5, 4]                                   |     r3 = *((r5 + 4));
    0x00071c94 cmp r3, 2                                         |     
                                                                 |     if (r3 != 2) {
    0x00071c96 bne.w 0x71a38                                     |         goto label_9;
                                                                 |     }
                                                                 | label_33:
    0x00071c9a ldr r2, [pc, 0x19c]                               |     
    0x00071c9c movs r1, 1                                        |     r1 = 1;
    0x00071c9e ldr r3, [r5, 0x20]                                |     r3 = *((r5 + 0x20));
    0x00071ca0 mov r0, r4                                        |     r0 = r4;
    0x00071ca2 add r2, pc                                        |     r2 = 0xe3ae0;
    0x00071ca4 blx 0x1bb8c                                       |     fcn_0001bb8c ();
    0x00071ca8 b 0x71a4c                                         |     goto label_7;
                                                                 | label_34:
    0x00071caa ldr r2, [pc, 0x190]                               |     
    0x00071cac movs r1, 1                                        |     r1 = 1;
    0x00071cae ldr r3, [r5, 0x34]                                |     r3 = *((r5 + 0x34));
    0x00071cb0 mov r0, r4                                        |     r0 = r4;
    0x00071cb2 add r2, pc                                        |     r2 = 0xe3af4;
    0x00071cb4 blx 0x1bb8c                                       |     fcn_0001bb8c ();
    0x00071cb8 ldr r3, [r5, 0x34]                                |     r3 = *((r5 + 0x34));
    0x00071cba cmp r3, 0                                         |     
                                                                 |     if (r3 <= 0) {
    0x00071cbc ble.w 0x71a4c                                     |         goto label_7;
                                                                 |     }
    0x00071cc0 ldr.w sl, [pc, 0x17c]                             |     sl = *(0x00071e40);
    0x00071cc4 mov.w r8, 0                                       |     r8 = 0;
    0x00071cc8 strd r7, r6, [sp, 8]                              |     __asm ("strd r7, r6, [var_8h]");
    0x00071ccc ldr r6, [sp, 0x10]                                |     r6 = var_10h;
    0x00071cce add sl, pc                                        |     sl += pc;
    0x00071cd0 b 0x71cf4                                         |     
                                                                 |     while (r3 == 0) {
                                                                 | label_10:
    0x00071cd2 ldr.w r1, [fp, 4]                                 |         r1 = *(arg_4h);
    0x00071cd6 mov r0, r4                                        |         r0 = r4;
    0x00071cd8 bl 0x6dbdc                                        |         fcn_0006dbdc (r0, r1, r2, r3, r4, r5, r6);
    0x00071cdc ldrd r3, r2, [fp, 8]                              |         __asm ("ldrd r3, r2, [arg_8h]");
    0x00071ce0 movs r1, 1                                        |         r1 = 1;
    0x00071ce2 mov r0, r4                                        |         r0 = r4;
    0x00071ce4 str r2, [sp]                                      |         *(sp) = r2;
    0x00071ce6 ldr r2, [pc, 0x15c]                               |         
    0x00071ce8 add r2, pc                                        |         r2 = 0xe3b32;
    0x00071cea blx 0x1bb8c                                       |         fcn_0001bb8c ();
    0x00071cee ldr r3, [r5, 0x34]                                |         r3 = *((r5 + 0x34));
    0x00071cf0 cmp r8, r3                                        |         
                                                                 |         if (r8 >= r3) {
    0x00071cf2 bge 0x71d20                                       |             goto label_46;
                                                                 |         }
    0x00071cf4 ldr r7, [r5, 0x38]                                |         r7 = *((r5 + 0x38));
    0x00071cf6 mov r3, r4                                        |         r3 = r4;
    0x00071cf8 movs r2, 9                                        |         r2 = 9;
    0x00071cfa movs r1, 1                                        |         r1 = 1;
    0x00071cfc mov r0, sl                                        |         r0 = sl;
    0x00071cfe ldr.w fp, [r7, r8, lsl 2]                         |         offset_3 = r8 << 2;
                                                                 |         fp = *((r7 + offset_3));
    0x00071d02 add.w r8, r8, 1                                   |         r8++;
    0x00071d06 blx 0x1baf8                                       |         fcn_0001baf8 ();
    0x00071d0a ldr.w r3, [fp]                                    |         r3 = *(fp);
    0x00071d0e cmp r3, 0                                         |         
    0x00071d10 beq 0x71cd2                                       |         
                                                                 |     }
    0x00071d12 mov r3, r4                                        |     r3 = r4;
    0x00071d14 movs r2, 9                                        |     r2 = 9;
    0x00071d16 movs r1, 1                                        |     r1 = 1;
    0x00071d18 mov r0, r6                                        |     r0 = r6;
    0x00071d1a blx 0x1baf8                                       |     fcn_0001baf8 ();
    0x00071d1e b 0x71cd2                                         |     goto label_10;
                                                                 | label_46:
    0x00071d20 ldrd r7, r6, [sp, 8]                              |     __asm ("ldrd r7, r6, [var_8h]");
    0x00071d24 b 0x71a4c                                         |     goto label_7;
    0x00071d26 ldr r0, [pc, 0x120]                               |     
    0x00071d28 mov r3, r4                                        |     r3 = r4;
    0x00071d2a movs r2, 4                                        |     r2 = 4;
    0x00071d2c movs r1, 1                                        |     r1 = 1;
    0x00071d2e add r0, pc                                        |     r0 = 0xe3b7c;
    0x00071d30 blx 0x1baf8                                       |     fcn_0001baf8 ();
    0x00071d34 ldr r3, [r5, 8]                                   |     r3 = *((r5 + 8));
    0x00071d36 b 0x71a14                                         |     goto label_11;
    0x00071d38 ldr r0, [pc, 0x110]                               |     
    0x00071d3a mov r3, r4                                        |     r3 = r4;
    0x00071d3c movs r2, 9                                        |     r2 = 9;
    0x00071d3e movs r1, 1                                        |     r1 = 1;
    0x00071d40 add r0, pc                                        |     r0 = 0xe3b90;
    0x00071d42 blx 0x1baf8                                       |     fcn_0001baf8 ();
    0x00071d46 ldr r3, [r5, 8]                                   |     r3 = *((r5 + 8));
    0x00071d48 b 0x71a14                                         |     goto label_11;
    0x00071d4a ldr r0, [pc, 0x104]                               |     
    0x00071d4c add r0, pc                                        |     r0 = 0xe3ba2;
                                                                 |     do {
                                                                 | label_12:
    0x00071d4e mov r3, r4                                        |         r3 = r4;
    0x00071d50 movs r2, 2                                        |         r2 = 2;
    0x00071d52 movs r1, 1                                        |         r1 = 1;
    0x00071d54 blx 0x1baf8                                       |         fcn_0001baf8 ();
    0x00071d58 ldr r3, [r5, 8]                                   |         r3 = *((r5 + 8));
    0x00071d5a b 0x71a14                                         |         goto label_11;
    0x00071d5c ldr r0, [pc, 0xf4]                                |         
    0x00071d5e add r0, pc                                        |         r0 = 0xe3bb6;
    0x00071d60 b 0x71d4e                                         |         
                                                                 |     } while (1);
    0x00071d62 ldr r0, [pc, 0xf4]                                |     
    0x00071d64 add r0, pc                                        |     r0 = 0xe3bc2;
    0x00071d66 b 0x71d4e                                         |     goto label_12;
    0x00071d68 ldr r0, [pc, 0xf0]                                |     
    0x00071d6a mov r3, r4                                        |     r3 = r4;
    0x00071d6c movs r2, 5                                        |     r2 = 5;
    0x00071d6e movs r1, 1                                        |     r1 = 1;
    0x00071d70 add r0, pc                                        |     r0 = 0xe3bd0;
    0x00071d72 blx 0x1baf8                                       |     fcn_0001baf8 ();
    0x00071d76 ldr r3, [r5, 8]                                   |     r3 = *((r5 + 8));
    0x00071d78 b 0x71a14                                         |     goto label_11;
    0x00071d7a ldr r0, [pc, 0xe4]                                |     
    0x00071d7c mov r3, r4                                        |     r3 = r4;
    0x00071d7e movs r2, 8                                        |     r2 = 8;
    0x00071d80 movs r1, 1                                        |     r1 = 1;
    0x00071d82 add r0, pc                                        |     r0 = 0xe3be8;
    0x00071d84 blx 0x1baf8                                       |     fcn_0001baf8 ();
    0x00071d88 ldr r3, [r5, 8]                                   |     r3 = *((r5 + 8));
    0x00071d8a b 0x71a14                                         |     goto label_11;
                                                                 | label_29:
    0x00071d8c ldr r0, [pc, 0xd4]                                |     
    0x00071d8e mov r3, r4                                        |     r3 = r4;
    0x00071d90 movs r2, 5                                        |     r2 = 5;
    0x00071d92 movs r1, 1                                        |     r1 = 1;
    0x00071d94 add r0, pc                                        |     r0 = 0xe3bfc;
    0x00071d96 blx 0x1baf8                                       |     fcn_0001baf8 ();
    0x00071d9a b 0x71a4c                                         |     goto label_7;
                                                                 | label_37:
    0x00071d9c ldr r0, [pc, 0xc8]                                |     
    0x00071d9e mov r3, r4                                        |     r3 = r4;
    0x00071da0 movs r2, 5                                        |     r2 = 5;
    0x00071da2 movs r1, 1                                        |     r1 = 1;
    0x00071da4 add r0, pc                                        |     r0 = 0xe3c10;
    0x00071da6 blx 0x1baf8                                       |     fcn_0001baf8 ();
    0x00071daa b 0x71b9a                                         |     goto label_13;
                                                                 | label_26:
    0x00071dac bx lr                                             |     return;
                                                                 | label_27:
    0x00071dae ldr r0, [pc, 0xbc]                                |     
    0x00071db0 mov r3, r4                                        |     r3 = r4;
    0x00071db2 movs r2, 5                                        |     r2 = 5;
    0x00071db4 movs r1, 1                                        |     r1 = 1;
    0x00071db6 add r0, pc                                        |     r0 = 0xe3c28;
    0x00071db8 add sp, 0x1c                                      |     
    0x00071dba pop.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}        |     
    0x00071dbe b.w 0x1baf4                                       |     void (*0x1baf4)() ();
                                                                 |     do {
                                                                 | label_17:
    0x0007aa80 ldr r3, [r4, 0x24]                                |         r3 = *((r4 + 0x24));
                                                                 |         if (r3 != 0) {
    0x0007aa82 cbz r3, 0x7aaa0                                   |             
    0x0007aa84 ldr r0, [r4, 8]                                   |             r0 = *((r4 + 8));
    0x0007aa86 mov r1, sl                                        |             r1 = sl;
    0x0007aa88 bl 0x6bd74                                        |             r0 = xmlStrEqual ();
    0x0007aa8c cmp r0, 0                                         |             
                                                                 |             if (r0 != 0) {
    0x0007aa8e bne 0x7ab86                                       |                 goto label_47;
                                                                 |             }
                                                                 | label_20:
    0x0007aa90 ldr r3, [r4, 0x24]                                |             r3 = *((r4 + 0x24));
                                                                 |             if (r3 == 0) {
    0x0007aa92 cbz r3, 0x7aaa0                                   |                 goto label_14;
                                                                 |             }
    0x0007aa94 ldr r1, [pc, 0x1f4]                               |             
    0x0007aa96 ldr r0, [r4, 8]                                   |             r0 = *((r4 + 8));
    0x0007aa98 add r1, pc                                        |             r1 = 0xf5728;
    0x0007aa9a bl 0x6bd74                                        |             r0 = xmlStrEqual ();
                                                                 |             if (r0 != 0) {
    0x0007aa9e cbnz r0, 0x7aab4                                  |                 goto label_48;
                                                                 |             }
                                                                 |         }
                                                                 | label_14:
    0x0007aaa0 cmp r5, 0                                         |         
                                                                 |         if (r5 == 0) {
    0x0007aaa2 beq 0x7ab70                                       |             goto label_49;
                                                                 |         }
                                                                 | label_19:
    0x0007aaa4 ldr r4, [r4, 0x18]                                |         r4 = *((r4 + 0x18));
    0x0007aaa6 movs r5, 1                                        |         r5 = 1;
    0x0007aaa8 cmp r4, 0                                         |         
    0x0007aaaa bne 0x7aa80                                       |         
                                                                 |     } while (r4 != 0);
                                                                 | label_18:
    0x0007aaac ldr r0, [sp, 0x14]                                |     r0 = var_14h;
    0x0007aaae add sp, 0x24                                      |     
    0x0007aab0 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |     
                                                                 | label_48:
    0x0007aab4 ldr r3, [r4, 0x24]                                |     r3 = *((r4 + 0x24));
    0x0007aab6 ldr r1, [pc, 0x1d8]                               |     
    0x0007aab8 ldr r0, [r3, 8]                                   |     r0 = *((r3 + 8));
    0x0007aaba add r1, pc                                        |     r1 = 0xf5750;
    0x0007aabc bl 0x6bd74                                        |     r0 = xmlStrEqual ();
    0x0007aac0 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0007aac2 beq 0x7aaa0                                       |         goto label_14;
                                                                 |     }
    0x0007aac4 ldr r7, [r4, 0x2c]                                |     r7 = *((r4 + 0x2c));
    0x0007aac6 cmp r7, 0                                         |     
                                                                 |     if (r7 == 0) {
    0x0007aac8 beq 0x7ab68                                       |         goto label_50;
                                                                 |     }
    0x0007aaca ldr r3, [pc, 0x1c8]                               |     
    0x0007aacc ldr.w sb, [pc, 0x1c8]                             |     sb = *(0x0007ac98);
    0x0007aad0 ldr.w fp, [pc, 0x1c8]                             |     fp = *(0x0007ac9c);
    0x0007aad4 add r3, pc                                        |     r3 = 0xf576e;
    0x0007aad6 add sb, pc                                        |     sb += pc;
    0x0007aad8 str r3, [sp, 0x1c]                                |     var_1ch = r3;
    0x0007aada add fp, pc                                        |     
    0x0007aadc b 0x7aaee                                         |     
                                                                 |     while (r0 == 0) {
    0x0007aade ldr r0, [r7, 8]                                   |         r0 = *((r7 + 8));
    0x0007aae0 bl 0x6bd74                                        |         r0 = xmlStrEqual ();
    0x0007aae4 cmp r0, 0                                         |         
                                                                 |         if (r0 != 0) {
    0x0007aae6 bne.w 0x7ac1a                                     |             goto label_51;
                                                                 |         }
                                                                 | label_24:
    0x0007aaea ldr r7, [r7, 0x18]                                |         r7 = *((r7 + 0x18));
                                                                 |         if (r7 == 0) {
    0x0007aaec cbz r7, 0x7ab12                                   |             goto label_52;
                                                                 |         }
                                                                 | label_15:
    0x0007aaee ldr r2, [r7, 0x24]                                |         r2 = *((r7 + 0x24));
    0x0007aaf0 mov r1, sb                                        |         r1 = sb;
    0x0007aaf2 cmp r2, 0                                         |         
                                                                 |         if (r2 == 0) {
    0x0007aaf4 beq.w 0x7ac00                                     |             goto label_53;
                                                                 |         }
    0x0007aaf8 ldr r0, [r2, 8]                                   |         r0 = *((r2 + 8));
    0x0007aafa bl 0x6bd74                                        |         xmlStrEqual ();
    0x0007aafe mov r1, fp                                        |         r1 = fp;
    0x0007ab00 cmp r0, 0                                         |         
    0x0007ab02 beq 0x7aade                                       |         
                                                                 |     }
    0x0007ab04 mov r1, r7                                        |     r1 = r7;
    0x0007ab06 mov r0, r6                                        |     r0 = r6;
    0x0007ab08 bl 0x7940c                                        |     fcn_0007940c (r0, r1);
                                                                 | label_25:
    0x0007ab0c ldr r7, [r7, 0x18]                                |     r7 = *((r7 + 0x18));
    0x0007ab0e cmp r7, 0                                         |     
                                                                 |     if (r7 != 0) {
    0x0007ab10 bne 0x7aaee                                       |         goto label_15;
                                                                 |     }
                                                                 | label_52:
    0x0007ab12 ldr.w sb, [r4, 0x2c]                              |     sb = *((r4 + 0x2c));
    0x0007ab16 cmp.w sb, 0                                       |     
                                                                 |     if (sb == 0) {
    0x0007ab1a beq 0x7ab68                                       |         goto label_50;
                                                                 |     }
    0x0007ab1c mov r7, sb                                        |     r7 = sb;
    0x0007ab1e ldr.w sb, [sp, 0x18]                              |     sb = var_18h;
    0x0007ab22 b 0x7ab28                                         |     
                                                                 |     while (r3 == 0) {
                                                                 | label_16:
    0x0007ab24 ldr r7, [r7, 0x18]                                |         r7 = *((r7 + 0x18));
                                                                 |         if (r7 == 0) {
    0x0007ab26 cbz r7, 0x7ab68                                   |             goto label_50;
                                                                 |         }
    0x0007ab28 ldr r3, [r7, 0x24]                                |         r3 = *((r7 + 0x24));
    0x0007ab2a mov r1, r8                                        |         r1 = r8;
    0x0007ab2c cmp r3, 0                                         |         
    0x0007ab2e beq 0x7ab24                                       |         
                                                                 |     }
    0x0007ab30 ldr r0, [r7, 8]                                   |     r0 = *((r7 + 8));
    0x0007ab32 bl 0x6bd74                                        |     r0 = xmlStrEqual ();
    0x0007ab36 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0007ab38 beq 0x7ab24                                       |         goto label_16;
                                                                 |     }
    0x0007ab3a ldr r3, [r7, 0x24]                                |     r3 = *((r7 + 0x24));
    0x0007ab3c mov r1, sb                                        |     r1 = sb;
    0x0007ab3e ldr r0, [r3, 8]                                   |     r0 = *((r3 + 8));
    0x0007ab40 bl 0x6bd74                                        |     r0 = xmlStrEqual ();
    0x0007ab44 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0007ab46 beq 0x7ab24                                       |         goto label_16;
                                                                 |     }
    0x0007ab48 movs r0, 0x11                                     |     r0 = 0x11;
    0x0007ab4a mov sb, r7                                        |     sb = r7;
    0x0007ab4c bl 0x8dfb8                                        |     r0 = xmlSchemaGetBuiltInType ();
    0x0007ab50 mov fp, r0                                        |     
                                                                 |     if (r0 != 0) {
    0x0007ab52 cbz r0, 0x7ab68                                   |         
    0x0007ab54 mov r1, sb                                        |         r1 = sb;
    0x0007ab56 mov r0, r6                                        |         r0 = r6;
    0x0007ab58 bl 0x7419c                                        |         fcn_0007419c (r0, r1);
    0x0007ab5c mov r3, fp                                        |         r3 = fp;
    0x0007ab5e mov r2, r0                                        |         r2 = r0;
    0x0007ab60 mov r1, sb                                        |         r1 = sb;
    0x0007ab62 mov r0, r6                                        |         r0 = r6;
    0x0007ab64 bl 0x7a5e0                                        |         fcn_0007a5e0 (r0, r1, r2, r3);
                                                                 |     }
                                                                 | label_50:
    0x0007ab68 ldr r4, [r4, 0x18]                                |     r4 = *((r4 + 0x18));
    0x0007ab6a cmp r4, 0                                         |     
                                                                 |     if (r4 != 0) {
    0x0007ab6c bne 0x7aa80                                       |         goto label_17;
                                                                 |     }
    0x0007ab6e b 0x7aaac                                         |     goto label_18;
                                                                 | label_49:
    0x0007ab70 ldr r2, [sp, 0xc]                                 |     r2 = var_ch;
    0x0007ab72 mov r3, r4                                        |     r3 = r4;
    0x0007ab74 movw r1, 0xbd9                                    |     r1 = 0xbd9;
    0x0007ab78 mov r0, r6                                        |     r0 = r6;
    0x0007ab7a strd r5, r2, [sp]                                 |     __asm ("strd r5, r2, [sp]");
    0x0007ab7e ldr r2, [sp, 0x10]                                |     r2 = var_10h;
    0x0007ab80 bl 0x770f4                                        |     fcn_000770f4 (r0, r1, r2, r3, r4, r5);
    0x0007ab84 b 0x7aaa4                                         |     goto label_19;
                                                                 | label_47:
    0x0007ab86 ldr r3, [r4, 0x24]                                |     r3 = *((r4 + 0x24));
    0x0007ab88 ldr r1, [pc, 0x114]                               |     
    0x0007ab8a ldr r0, [r3, 8]                                   |     r0 = *((r3 + 8));
    0x0007ab8c add r1, pc                                        |     r1 = 0xf5830;
    0x0007ab8e bl 0x6bd74                                        |     r0 = xmlStrEqual ();
    0x0007ab92 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0007ab94 beq.w 0x7aa90                                     |         goto label_20;
                                                                 |     }
    0x0007ab98 ldr r7, [r4, 0x2c]                                |     r7 = *((r4 + 0x2c));
                                                                 |     if (r7 == 0) {
    0x0007ab9a cbz r7, 0x7abde                                   |         goto label_54;
                                                                 |     }
    0x0007ab9c ldr.w sb, [pc, 0x104]                             |     
    0x0007aba0 ldr.w fp, [pc, 0x104]                             |     fp = *(0x0007aca8);
    0x0007aba4 add sb, pc                                        |     sb = 0xf584c;
    0x0007aba6 add fp, pc                                        |     
    0x0007aba8 b 0x7abc0                                         |     
                                                                 |     while (r3 != 0) {
                                                                 | label_22:
    0x0007abaa ldr r0, [r3, 8]                                   |         r0 = *((r3 + 8));
    0x0007abac mov r1, sb                                        |         r1 = sb;
    0x0007abae bl 0x6bd74                                        |         r0 = xmlStrEqual ();
                                                                 |         if (r0 != 0) {
    0x0007abb2 cbz r0, 0x7abbc                                   |             
                                                                 | label_21:
    0x0007abb4 mov r1, r7                                        |             r1 = r7;
    0x0007abb6 mov r0, r6                                        |             r0 = r6;
    0x0007abb8 bl 0x7940c                                        |             fcn_0007940c (r0, r1);
                                                                 |         }
    0x0007abbc ldr r7, [r7, 0x18]                                |         r7 = *((r7 + 0x18));
                                                                 |         if (r7 == 0) {
    0x0007abbe cbz r7, 0x7abde                                   |             goto label_54;
                                                                 |         }
                                                                 | label_23:
    0x0007abc0 ldr r3, [r7, 0x24]                                |         r3 = *((r7 + 0x24));
    0x0007abc2 cmp r3, 0                                         |         
    0x0007abc4 bne 0x7abaa                                       |         
                                                                 |     }
    0x0007abc6 ldr r0, [r7, 8]                                   |     r0 = *((r7 + 8));
    0x0007abc8 mov r1, fp                                        |     r1 = fp;
    0x0007abca bl 0x6bd74                                        |     r0 = xmlStrEqual ();
    0x0007abce cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0007abd0 beq 0x7abb4                                       |         goto label_21;
                                                                 |     }
    0x0007abd2 ldr r3, [r7, 0x24]                                |     r3 = *((r7 + 0x24));
    0x0007abd4 cmp r3, 0                                         |     
                                                                 |     if (r3 != 0) {
    0x0007abd6 bne 0x7abaa                                       |         goto label_22;
                                                                 |     }
    0x0007abd8 ldr r7, [r7, 0x18]                                |     r7 = *((r7 + 0x18));
    0x0007abda cmp r7, 0                                         |     
                                                                 |     if (r7 != 0) {
    0x0007abdc bne 0x7abc0                                       |         goto label_23;
                                                                 |     }
                                                                 | label_54:
    0x0007abde movs r0, 0x1d                                     |     r0 = 0x1d;
    0x0007abe0 bl 0x8dfb8                                        |     xmlSchemaGetBuiltInType ();
    0x0007abe4 movs r2, 0                                        |     r2 = 0;
    0x0007abe6 mov r3, r0                                        |     r3 = r0;
    0x0007abe8 str r2, [sp]                                      |     *(sp) = r2;
    0x0007abea mov r1, r4                                        |     r1 = r4;
    0x0007abec ldr r2, [pc, 0xbc]                                |     
    0x0007abee mov r0, r6                                        |     r0 = r6;
    0x0007abf0 add r2, pc                                        |     r2 = 0xf58a0;
    0x0007abf2 bl 0x7a960                                        |     fcn_0007a960 (r0, r1, r2, r3, r4);
    0x0007abf6 ldr r4, [r4, 0x18]                                |     r4 = *((r4 + 0x18));
    0x0007abf8 cmp r4, 0                                         |     
                                                                 |     if (r4 != 0) {
    0x0007abfa bne.w 0x7aa80                                     |         goto label_17;
                                                                 |     }
    0x0007abfe b 0x7aaac                                         |     goto label_18;
                                                                 | label_53:
    0x0007ac00 ldr r1, [pc, 0xac]                                |     
    0x0007ac02 ldr r0, [r7, 8]                                   |     r0 = *((r7 + 8));
    0x0007ac04 add r1, pc                                        |     r1 = 0xf58b8;
    0x0007ac06 bl 0x6bd74                                        |     r0 = xmlStrEqual ();
    0x0007ac0a cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x0007ac0c bne.w 0x7aaea                                     |         goto label_24;
                                                                 |     }
    0x0007ac10 mov r1, r7                                        |     r1 = r7;
    0x0007ac12 mov r0, r6                                        |     r0 = r6;
    0x0007ac14 bl 0x7940c                                        |     fcn_0007940c (r0, r1);
    0x0007ac18 b 0x7ab0c                                         |     goto label_25;
                                                                 | label_51:
    0x0007ac1a ldr r2, [r7, 0x24]                                |     r2 = *((r7 + 0x24));
    0x0007ac1c ldr r1, [sp, 0x1c]                                |     r1 = var_1ch;
    0x0007ac1e ldr r0, [r2, 8]                                   |     r0 = *((r2 + 8));
    0x0007ac20 bl 0x6bd74                                        |     r0 = xmlStrEqual ();
    0x0007ac24 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x0007ac26 bne.w 0x7aaea                                     |         goto label_24;
                                                                 |     }
    0x0007ac2a mov r1, r7                                        |     r1 = r7;
    0x0007ac2c mov r0, r6                                        |     r0 = r6;
    0x0007ac2e bl 0x7940c                                        |     fcn_0007940c (r0, r1);
    0x0007ac32 b 0x7ab0c                                         |     goto label_25;
                                                                 | }
    ; 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 @ 0x40d7c */
                                                                 | #include <stdint.h>
                                                                 |  
                                                                 | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                                 |  
    ; (fcn) sym.xmlSaveUri ()                                    | void xmlSaveUri (uint32_t arg1) {
                                                                 |     int16_t var_0h;
                                                                 |     int16_t var_4h;
                                                                 |     r0 = arg1;
    0x00040d7c push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}       |     
    0x00040d80 mov r8, r0                                        |     r8 = r0;
    0x00040d82 ldr.w r7, [pc, 0xbcc]                             |     
    0x00040d86 sub sp, 0xc                                       |     
    0x00040d88 add r7, pc                                        |     r7 = 0x826de;
    0x00040d8a cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00040d8c beq.w 0x41534                                     |         goto label_53;
                                                                 |     }
    0x00040d90 ldr.w r3, [pc, 0xbc0]                             |     
    0x00040d94 movs r0, 0x51                                     |     r0 = 0x51;
    0x00040d96 ldr r3, [r7, r3]                                  |     r3 = *((r7 + r3));
    0x00040d98 ldr r3, [r3]                                      |     r3 = *(0x41954);
    0x00040d9a blx r3                                            |     r0 = uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
    0x00040d9c mov r6, r0                                        |     r6 = r0;
    0x00040d9e cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00040da0 beq.w 0x41640                                     |         goto label_54;
                                                                 |     }
    0x00040da4 ldr.w r4, [r8]                                    |     r4 = *(r8);
    0x00040da8 cmp r4, 0                                         |     
                                                                 |     if (r4 == 0) {
    0x00040daa beq.w 0x410a4                                     |         goto label_55;
                                                                 |     }
    0x00040dae ldrb r3, [r4]                                     |     r3 = *(r4);
    0x00040db0 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x00040db2 beq.w 0x4175c                                     |         goto label_56;
                                                                 |     }
    0x00040db6 mov.w sl, 0                                       |     sl = 0;
    0x00040dba movs r5, 0x50                                     |     r5 = 0x50;
                                                                 |     do {
    0x00040dbc strb.w r3, [r6, sl]                               |         *((r6 + sl)) = r3;
    0x00040dc0 add.w sb, sl, 1                                   |         sb = sl + 1;
    0x00040dc4 ldrb r3, [r4, 1]!                                 |         r3 = *((r4 += 1));
                                                                 |         if (r3 == 0) {
    0x00040dc8 cbz r3, 0x40e06                                   |             goto label_57;
                                                                 |         }
                                                                 | label_0:
    0x00040dca cmp sb, r5                                        |         
    0x00040dcc mov sl, sb                                        |         sl = sb;
    0x00040dce blt 0x40dbc                                       |         
                                                                 |     } while (sb < r5);
    0x00040dd0 cmp.w r5, 0x100000                                |     
    0x00040dd4 lsl.w r5, r5, 1                                   |     r5 <<= 1;
    0x00040dd8 ldr.w r3, [pc, 0xb7c]                             |     r3 = *(0x41958);
    0x00040ddc mov r0, r6                                        |     r0 = r6;
    0x00040dde add.w r1, r5, 1                                   |     r1 = r5 + 1;
                                                                 |     if (r5 > 0x100000) {
    0x00040de2 bgt.w 0x4114e                                     |         goto label_58;
                                                                 |     }
    0x00040de6 ldr r3, [r7, r3]                                  |     r3 = *((r7 + r3));
    0x00040de8 ldr r3, [r3]                                      |     r3 = *(r3);
    0x00040dea blx r3                                            |     r0 = uint32_t (*r3)(uint32_t) (r3);
    0x00040dec cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00040dee beq.w 0x4151c                                     |         goto label_59;
                                                                 |     }
    0x00040df2 ldrb r3, [r4]                                     |     r3 = *(r4);
    0x00040df4 mov r6, r0                                        |     r6 = r0;
    0x00040df6 add.w sb, sl, 1                                   |     sb = sl + 1;
    0x00040df8 lsrs r1, r0, 4                                    |     r1 = r0 >> 4;
    0x00040dfa strb.w r3, [r6, sl]                               |     *((r6 + sl)) = r3;
    0x00040dfe ldrb r3, [r4, 1]!                                 |     r3 = *((r4 += 1));
    0x00040e02 cmp r3, 0                                         |     
                                                                 |     if (r3 != 0) {
    0x00040e04 bne 0x40dca                                       |         goto label_0;
                                                                 |     }
                                                                 | label_57:
    0x00040e06 cmp sb, r5                                        |     
                                                                 |     if (sb >= r5) {
    0x00040e08 bge.w 0x41276                                     |         goto label_60;
                                                                 |     }
    0x00040e0c add sb, r6                                        |     sb += r6;
    0x00040e0e add.w r4, sl, 2                                   |     r4 = sl + 2;
                                                                 | label_19:
    0x00040e12 movs r3, 0x3a                                     |     r3 = 0x3a;
    0x00040e14 strb.w r3, [sb]                                   |     *(sb) = r3;
    0x00040e18 ldr.w sb, [r8, 4]                                 |     sb = *((r8 + 4));
    0x00040e1c cmp.w sb, 0                                       |     
                                                                 |     if (sb == 0) {
    0x00040e20 beq.w 0x410b2                                     |         goto label_61;
                                                                 |     }
                                                                 | label_11:
    0x00040e24 ldrb.w r3, [sb]                                   |     r3 = *(sb);
    0x00040e28 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x00040e2a beq 0x40ece                                       |         goto label_29;
                                                                 |     }
    0x00040e2c movw sl, 0xbfe9                                   |     
    0x00040e30 movt sl, 0x3ff                                    |     sl = 0x3ffbfe9;
    0x00040e34 b 0x40e72                                         |     
                                                                 |     while (fp < r5) {
                                                                 | label_1:
    0x00040e36 ldrb r3, [sb], 1                                  |         r3 = *(sb);
                                                                 |         sb++;
    0x00040e3a adds r0, r6, r4                                   |         r0 = r6 + r4;
    0x00040e3c add.w ip, r4, 1                                   |         
    0x00040e40 cmp r3, 0x2f                                      |         
    0x00040e42 it ne                                             |         
                                                                 |         if (r3 != 0x2f) {
    0x00040e44 cmpne r3, 0x3b                                    |             __asm ("cmpne r3, 0x3b");
                                                                 |         }
                                                                 |         if (r3 != 0x2f) {
    0x00040e46 beq 0x40e68                                       |             
    0x00040e48 cmp r3, 0x5b                                      |             
                                                                 |             if (r3 > 0x5b) {
    0x00040e4a bhi.w 0x40f6e                                     |                 goto label_62;
                                                                 |             }
    0x00040e4e cmp r3, 0x3e                                      |             
                                                                 |             if (r3 > 0x3e) {
    0x00040e50 bhi 0x40e68                                       |                 goto label_2;
                                                                 |             }
    0x00040e52 cmp r3, 0x3a                                      |             
                                                                 |             if (r3 > 0x3a) {
    0x00040e54 bhi 0x40e9c                                       |                 goto label_63;
                                                                 |             }
    0x00040e56 cmp r3, 0x20                                      |             
                                                                 |             if (r3 < 0x20) {
    0x00040e58 bls 0x40ea0                                       |                 goto label_64;
                                                                 |             }
    0x00040e5a sub.w r1, r3, 0x21                                |             r1 = r3 - 0x21;
    0x00040e5e uxtb r1, r1                                       |             r1 = (int8_t) r1;
    0x00040e60 lsr.w r1, sl, r1                                  |             r1 = sl >> r1;
    0x00040e64 lsls r2, r1, 0x1f                                 |             r2 = r1 << 0x1f;
                                                                 |             if (r2 >= r1) {
    0x00040e66 bpl 0x40ea0                                       |                 goto label_64;
                                                                 |             }
                                                                 |         }
                                                                 | label_2:
    0x00040e68 strb r3, [r0]                                     |         *(r0) = r3;
    0x00040e6a mov r4, ip                                        |         r4 = ip;
    0x00040e6c ldrb.w r3, [sb]                                   |         r3 = *(sb);
                                                                 |         if (r3 == 0) {
    0x00040e70 cbz r3, 0x40ece                                   |             goto label_29;
                                                                 |         }
                                                                 | label_3:
    0x00040e72 add.w fp, r4, 3                                   |         
    0x00040e76 cmp fp, r5                                        |         
    0x00040e78 blt 0x40e36                                       |         
                                                                 |     }
    0x00040e7a cmp.w r5, 0x100000                                |     
                                                                 |     if (r5 > 0x100000) {
    0x00040e7e bgt.w 0x4116e                                     |         goto label_65;
                                                                 |     }
    0x00040e82 ldr.w r3, [pc, 0xad4]                             |     
    0x00040e86 lsls r5, r5, 1                                    |     r5 <<= 1;
    0x00040e88 mov r0, r6                                        |     r0 = r6;
    0x00040e8a adds r1, r5, 1                                    |     r1 = r5 + 1;
    0x00040e8c ldr r3, [r7, r3]                                  |     r3 = *((r7 + r3));
    0x00040e8e ldr r3, [r3]                                      |     r3 = *(0x4195a);
    0x00040e90 blx r3                                            |     r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
    0x00040e92 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00040e94 beq.w 0x41528                                     |         goto label_66;
                                                                 |     }
    0x00040e98 mov r6, r0                                        |     r6 = r0;
    0x00040e9a b 0x40e36                                         |     goto label_1;
                                                                 | label_63:
    0x00040e9c cmp r3, 0x3d                                      |     
                                                                 |     if (r3 == 0x3d) {
    0x00040e9e beq 0x40e68                                       |         goto label_2;
                                                                 |     }
                                                                 | label_64:
    0x00040ea0 mov.w r2, 0x25                                    |     r2 = 0x25;
    0x00040ea4 asr.w lr, r3, 4                                   |     lr = r3 >> 4;
    0x00040ea8 strb r2, [r0]                                     |     *(r0) = r2;
    0x00040eaa movs r1, 0x30                                     |     r1 = 0x30;
    0x00040eac and r0, r3, 0xf                                   |     r0 = r3 & 0xf;
                                                                 | label_5:
    0x00040eb0 cmp r0, 9                                         |     
    0x00040eb2 add r1, lr                                        |     r1 += lr;
    0x00040eb4 ite hi                                            |     
                                                                 |     if (r0 <= 9) {
    0x00040eb6 movhi r3, 0x37                                    |         r3 = 0x37;
                                                                 |     }
                                                                 |     if (r0 > 9) {
    0x00040eb8 movls r3, 0x30                                    |         r3 = 0x30;
                                                                 |     }
    0x00040eba strb.w r1, [r6, ip]                               |     *((r6 + ip)) = r1;
    0x00040ebe add r3, r0                                        |     r3 += r0;
    0x00040ec0 adds r1, r4, 2                                    |     r1 = r4 + 2;
    0x00040ec2 mov r4, fp                                        |     r4 = fp;
    0x00040ec4 strb r3, [r6, r1]                                 |     *((r6 + r1)) = r3;
    0x00040ec6 ldrb.w r3, [sb]                                   |     r3 = *(sb);
    0x00040eca cmp r3, 0                                         |     
                                                                 |     if (r3 != 0) {
    0x00040ecc bne 0x40e72                                       |         goto label_3;
                                                                 |     }
                                                                 | label_29:
    0x00040ece ldr.w r3, [r8, 0x20]                              |     r3 = *((r8 + 0x20));
    0x00040ed2 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x00040ed4 beq 0x40f5c                                       |         goto label_67;
                                                                 |     }
    0x00040ed6 adds r3, r4, 3                                    |     r3 = r4 + 3;
    0x00040ed8 cmp r3, r5                                        |     
                                                                 |     if (r3 >= r5) {
    0x00040eda bge.w 0x414fa                                     |         goto label_68;
                                                                 |     }
                                                                 | label_31:
    0x00040ede movs r3, 0x23                                     |     r3 = 0x23;
    0x00040ee0 strb r3, [r6, r4]                                 |     *((r6 + r4)) = r3;
    0x00040ee2 adds r4, 1                                        |     r4++;
    0x00040ee4 ldr.w r8, [r8, 0x20]                              |     r8 = *((r8 + 0x20));
    0x00040ee8 ldrb.w r3, [r8]                                   |     r3 = *(r8);
                                                                 |     if (r3 == 0) {
    0x00040eec cbz r3, 0x40f5c                                   |         goto label_67;
                                                                 |     }
    0x00040eee movw fp, 0xfffd                                   |     
    0x00040ef2 mov.w sb, 0x25                                    |     sb = 0x25;
    0x00040ef6 movt fp, 0x1aff                                   |     fp = 0x1afffffd;
    0x00040efa b 0x40f34                                         |     
                                                                 |     while (r2 > 0x19) {
    0x00040efc cmp r3, 0x40                                      |         
                                                                 |         if (r3 > 0x40) {
    0x00040efe bhi.w 0x41042                                     |             goto label_69;
                                                                 |         }
    0x00040f02 cmp r3, 0x23                                      |         
                                                                 |         if (r3 > 0x23) {
    0x00040f04 bhi.w 0x4102c                                     |             goto label_70;
                                                                 |         }
    0x00040f08 cmp r3, 0x21                                      |         
                                                                 |         if (r3 == 0x21) {
    0x00040f0a beq 0x40f50                                       |             goto label_8;
                                                                 |         }
                                                                 | label_6:
    0x00040f0c asr.w ip, r3, 4                                   |         
    0x00040f10 strb.w sb, [r1]                                   |         *(r1) = sb;
    0x00040f14 movs r2, 0x30                                     |         r2 = 0x30;
    0x00040f16 and r1, r3, 0xf                                   |         r1 = r3 & 0xf;
                                                                 | label_9:
    0x00040f1a cmp r1, 9                                         |         
    0x00040f1c add r2, ip                                        |         r2 += ip;
    0x00040f1e ite hi                                            |         
                                                                 |         if (r1 <= 9) {
    0x00040f20 movhi r3, 0x37                                    |             r3 = 0x37;
                                                                 |         }
                                                                 |         if (r1 > 9) {
    0x00040f22 movls r3, 0x30                                    |             r3 = 0x30;
                                                                 |         }
    0x00040f24 strb r2, [r6, r0]                                 |         *((r6 + r0)) = r2;
    0x00040f26 add r3, r1                                        |         r3 += r1;
    0x00040f28 adds r2, r4, 2                                    |         r2 = r4 + 2;
    0x00040f2a mov r4, sl                                        |         r4 = sl;
    0x00040f2c strb r3, [r6, r2]                                 |         *((r6 + r2)) = r3;
    0x00040f2e ldrb.w r3, [r8]                                   |         r3 = *(r8);
                                                                 |         if (r3 == 0) {
    0x00040f32 cbz r3, 0x40f5c                                   |             goto label_67;
                                                                 |         }
                                                                 | label_4:
    0x00040f34 add.w sl, r4, 3                                   |         sl = r4 + 3;
    0x00040f38 cmp sl, r5                                        |         
                                                                 |         if (sl >= r5) {
    0x00040f3a bge.w 0x41082                                     |             goto label_71;
                                                                 |         }
                                                                 | label_10:
    0x00040f3e ldrb r3, [r8], 1                                  |         r3 = *(r8);
                                                                 |         r8++;
    0x00040f42 adds r1, r6, r4                                   |         r1 = r6 + r4;
    0x00040f44 adds r0, r4, 1                                    |         r0 = r4 + 1;
    0x00040f46 bic r2, r3, 0x20                                  |         r2 = BIT_MASK (r3, 0x20);
    0x00040f48 lsls r0, r4, 8                                    |         r0 = r4 << 8;
    0x00040f4a subs r2, 0x41                                     |         r2 -= 0x41;
    0x00040f4c cmp r2, 0x19                                      |         
    0x00040f4e bhi 0x40efc                                       |         
                                                                 |     }
                                                                 | label_8:
    0x00040f50 mov r4, r0                                        |     r4 = r0;
    0x00040f52 strb r3, [r1]                                     |     *(r1) = r3;
                                                                 | label_7:
    0x00040f54 ldrb.w r3, [r8]                                   |     r3 = *(r8);
    0x00040f58 cmp r3, 0                                         |     
                                                                 |     if (r3 != 0) {
    0x00040f5a bne 0x40f34                                       |         goto label_4;
                                                                 |     }
                                                                 | label_67:
    0x00040f5c cmp r4, r5                                        |     
                                                                 |     if (r4 >= r5) {
    0x00040f5e bge.w 0x4144e                                     |         goto label_72;
                                                                 |     }
                                                                 | label_27:
    0x00040f62 movs r3, 0                                        |     r3 = 0;
    0x00040f64 strb r3, [r6, r4]                                 |     *((r6 + r4)) = r3;
                                                                 | label_32:
    0x00040f66 mov r0, r6                                        |     r0 = r6;
    0x00040f68 add sp, 0xc                                       |     
    0x00040f6a pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |     
    0x00040f6c ldrh r0, [r6, 0x3e]                               |     r0 = *((r6 + 0x3e));
                                                                 | label_62:
    0x00040f6e sub.w r1, r3, 0x5d                                |     r1 = r3 - 0x5d;
    0x00040f72 uxtb.w lr, r1                                     |     lr = (int8_t) r1;
    0x00040f76 cmp.w lr, 0x21                                    |     
                                                                 |     if (lr <= 0x21) {
    0x00040f7a bhi 0x41014                                       |         
    0x00040f7c cmp r1, 0x21                                      |         
                                                                 |         if (r1 > 0x21) {
    0x00040f7e bhi 0x41014                                       |             goto label_73;
                                                                 |         }
    0x00040f80 addw lr, pc, 8                                    |         __asm ("addw lr, pc, 8");
    0x00040f84 ldr.w r1, [lr, r1, lsl 2]                         |         offset_0 = r1 << 2;
                                                                 |         r1 = *((lr + offset_0));
    0x00040f88 add lr, r1                                        |         lr += r1;
    0x00040f8a bx lr                                             |         return;
                                                                 |     }
                                                                 | label_73:
    0x00041014 cmp r3, 0x9f                                      |     
    0x00041016 mov.w r2, 0x25                                    |     r2 = 0x25;
    0x0004101a strb r2, [r0]                                     |     *(r0) = r2;
    0x0004101c asr.w lr, r3, 4                                   |     lr = r3 >> 4;
    0x00041020 and r0, r3, 0xf                                   |     r0 = r3 & 0xf;
    0x00041024 ite hi                                            |     
                                                                 |     if (r3 <= 0x9f) {
    0x00041026 movhi r1, 0x37                                    |         r1 = 0x37;
                                                                 |     }
                                                                 |     if (r3 > 0x9f) {
    0x00041028 movls r1, 0x30                                    |         r1 = 0x30;
                                                                 |     }
    0x0004102a b 0x40eb0                                         |     goto label_5;
                                                                 | label_70:
    0x0004102c sub.w r2, r3, 0x24                                |     r2 = r3 - 0x24;
    0x00041030 uxtb r2, r2                                       |     r2 = (int8_t) r2;
    0x00041032 lsr.w r2, fp, r2                                  |     r2 = fp >> r2;
    0x00041036 lsls r2, r2, 0x1f                                 |     r2 <<= 0x1f;
                                                                 |     if (r2 >= r2) {
    0x00041038 bpl.w 0x40f0c                                     |         goto label_6;
                                                                 |     }
    0x0004103c mov r4, r0                                        |     r4 = r0;
    0x0004103e strb r3, [r1]                                     |     *(r1) = r3;
    0x00041040 b 0x40f54                                         |     goto label_7;
                                                                 | label_69:
    0x00041042 cmp r3, 0x5f                                      |     
                                                                 |     if (r3 > 0x5f) {
    0x00041044 bhi 0x41066                                       |         goto label_74;
                                                                 |     }
    0x00041046 cmp r3, 0x5a                                      |     
                                                                 |     if (r3 < 0x5a) {
    0x00041048 bls.w 0x40f0c                                     |         goto label_6;
                                                                 |     }
    0x0004104c sub.w ip, r3, 0x5b                                |     
    0x00041050 movs r2, 0x15                                     |     r2 = 0x15;
    0x00041052 uxtb.w ip, ip                                     |     ip = (int8_t) ip;
    0x00041056 lsr.w r2, r2, ip                                  |     r2 >>= ip;
    0x0004105a lsls r2, r2, 0x1f                                 |     r2 <<= 0x1f;
                                                                 |     if (r2 >= r2) {
    0x0004105c bpl.w 0x40f0c                                     |         goto label_6;
                                                                 |     }
    0x00041060 mov r4, r0                                        |     r4 = r0;
    0x00041062 strb r3, [r1]                                     |     *(r1) = r3;
    0x00041064 b 0x40f54                                         |     goto label_7;
                                                                 | label_74:
    0x00041066 cmp r3, 0x7e                                      |     
                                                                 |     if (r3 == 0x7e) {
    0x00041068 beq.w 0x40f50                                     |         goto label_8;
                                                                 |     }
    0x0004106c cmp r3, 0x9f                                      |     
    0x0004106e strb.w sb, [r1]                                   |     *(r1) = sb;
    0x00041072 asr.w ip, r3, 4                                   |     
    0x00041076 and r1, r3, 0xf                                   |     r1 = r3 & 0xf;
    0x0004107a ite hi                                            |     
                                                                 |     if (r3 <= 0x9f) {
    0x0004107c movhi r2, 0x37                                    |         r2 = 0x37;
                                                                 |     }
                                                                 |     if (r3 > 0x9f) {
    0x0004107e movls r2, 0x30                                    |         r2 = 0x30;
                                                                 |     }
    0x00041080 b 0x40f1a                                         |     goto label_9;
                                                                 | label_71:
    0x00041082 cmp.w r5, 0x100000                                |     
                                                                 |     if (r5 > 0x100000) {
    0x00041086 bgt.w 0x41442                                     |         goto label_75;
                                                                 |     }
    0x0004108a ldr.w r3, [pc, 0x8cc]                             |     
    0x0004108e lsls r5, r5, 1                                    |     r5 <<= 1;
    0x00041090 mov r0, r6                                        |     r0 = r6;
    0x00041092 adds r1, r5, 1                                    |     r1 = r5 + 1;
    0x00041094 ldr r3, [r7, r3]                                  |     r3 = *((r7 + r3));
    0x00041096 ldr r3, [r3]                                      |     r3 = *(0x4195a);
    0x00041098 blx r3                                            |     r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
    0x0004109a cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0004109c beq.w 0x41556                                     |         goto label_76;
                                                                 |     }
    0x000410a0 mov r6, r0                                        |     r6 = r0;
    0x000410a2 b 0x40f3e                                         |     goto label_10;
                                                                 | label_55:
    0x000410a4 ldr.w sb, [r8, 4]                                 |     sb = *((r8 + 4));
    0x000410a8 movs r5, 0x50                                     |     r5 = 0x50;
    0x000410aa cmp.w sb, 0                                       |     
                                                                 |     if (sb != 0) {
    0x000410ae bne.w 0x40e24                                     |         goto label_11;
                                                                 |     }
                                                                 | label_61:
    0x000410b2 ldr.w r3, [r8, 0xc]                               |     r3 = *((r8 + 0xc));
    0x000410b6 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x000410b8 beq 0x4117a                                       |         goto label_77;
                                                                 |     }
                                                                 | label_13:
    0x000410ba adds r3, r4, 3                                    |     r3 = r4 + 3;
    0x000410bc cmp r3, r5                                        |     
                                                                 |     if (r3 >= r5) {
    0x000410be bge.w 0x41538                                     |         goto label_78;
                                                                 |     }
                                                                 | label_33:
    0x000410c2 movs r3, 0x2f                                     |     r3 = 0x2f;
    0x000410c4 adds r2, r6, r4                                   |     r2 = r6 + r4;
    0x000410c6 strb r3, [r6, r4]                                 |     *((r6 + r4)) = r3;
    0x000410c8 add.w sb, r4, 2                                   |     sb = r4 + 2;
    0x000410cc strb r3, [r2, 1]                                  |     *((r2 + 1)) = r3;
    0x000410ce ldr.w r4, [r8, 0x10]                              |     r4 = *((r8 + 0x10));
    0x000410d2 cmp r4, 0                                         |     
                                                                 |     if (r4 == 0) {
    0x000410d4 beq.w 0x412b2                                     |         goto label_79;
                                                                 |     }
    0x000410d8 ldrb r3, [r4]                                     |     r3 = *(r4);
    0x000410da cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x000410dc beq.w 0x4129e                                     |         goto label_80;
                                                                 |     }
    0x000410e0 movw sl, 0xbfe9                                   |     
    0x000410e4 movt sl, 0x17ff                                   |     sl = 0x17ffbfe9;
    0x000410e8 b 0x41128                                         |     
                                                                 |     while (r1 > 0x19) {
    0x000410ea cmp r3, 0x3d                                      |         
                                                                 |         if (r3 > 0x3d) {
    0x000410ec bhi.w 0x41234                                     |             goto label_81;
                                                                 |         }
    0x000410f0 cmp r3, 0x20                                      |         
                                                                 |         if (r3 > 0x20) {
    0x000410f2 bhi.w 0x4121e                                     |             goto label_82;
                                                                 |         }
                                                                 | label_15:
    0x000410f6 mov.w r2, 0x25                                    |         r2 = 0x25;
    0x000410fa asr.w lr, r3, 4                                   |         lr = r3 >> 4;
    0x000410fe strb r2, [r0]                                     |         *(r0) = r2;
    0x00041100 movs r1, 0x30                                     |         r1 = 0x30;
    0x00041102 and r0, r3, 0xf                                   |         r0 = r3 & 0xf;
                                                                 | label_17:
    0x00041106 add r1, lr                                        |         r1 += lr;
    0x00041108 cmp r0, 9                                         |         
    0x0004110a strb.w r1, [r6, ip]                               |         *((r6 + ip)) = r1;
    0x0004110e it hi                                             |         
                                                                 |         if (r0 <= 9) {
    0x00041110 movhi r3, 0x37                                    |             r3 = 0x37;
                                                                 |         }
    0x00041112 add.w r1, sb, 2                                   |         r1 = sb + 2;
    0x00041116 it ls                                             |         
                                                                 |         if (r0 > 9) {
    0x00041118 movls r3, 0x30                                    |             r3 = 0x30;
                                                                 |         }
    0x0004111a mov sb, fp                                        |         sb = fp;
    0x0004111c add r3, r0                                        |         r3 += r0;
    0x0004111e strb r3, [r6, r1]                                 |         *((r6 + r1)) = r3;
                                                                 | label_12:
    0x00041120 ldrb r3, [r4]                                     |         r3 = *(r4);
    0x00041122 cmp r3, 0                                         |         
                                                                 |         if (r3 == 0) {
    0x00041124 beq.w 0x4129e                                     |             goto label_80;
                                                                 |         }
    0x00041128 add.w fp, sb, 3                                   |         
    0x0004112c cmp fp, r5                                        |         
                                                                 |         if (fp >= r5) {
    0x0004112e bge.w 0x41254                                     |             goto label_83;
                                                                 |         }
                                                                 | label_18:
    0x00041132 ldrb r3, [r4], 1                                  |         r3 = *(r4);
                                                                 |         r4++;
    0x00041136 add.w r0, r6, sb                                  |         r0 = r6 + sb;
    0x0004113a add.w ip, sb, 1                                   |         
    0x0004113e bic r1, r3, 0x20                                  |         r1 = BIT_MASK (r3, 0x20);
    0x00041142 subs r1, 0x41                                     |         r1 -= 0x41;
    0x00041144 cmp r1, 0x19                                      |         
    0x00041146 bhi 0x410ea                                       |         
                                                                 |     }
                                                                 | label_16:
    0x00041148 mov sb, ip                                        |     sb = ip;
    0x0004114a strb r3, [r0]                                     |     *(r0) = r3;
    0x0004114c b 0x41120                                         |     goto label_12;
                                                                 | label_58:
    0x0004114e ldr.w r0, [pc, 0x80c]                             |     r0 = *(0x0004195c);
    0x00041152 add r0, pc                                        |     r0 += pc;
    0x00041154 bl 0x409f4                                        |     fcn_000409f4 (r0);
                                                                 |     do {
                                                                 | label_26:
    0x00041158 ldr.w r3, [pc, 0x804]                             |         
    0x0004115c mov r0, r6                                        |         r0 = r6;
    0x0004115e movs r6, 0                                        |         r6 = 0;
    0x00041160 ldr r3, [r7, r3]                                  |         r3 = *((r7 + r3));
    0x00041162 ldr r3, [r3]                                      |         r3 = *(0x41960);
    0x00041164 blx r3                                            |         uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
    0x00041166 mov r0, r6                                        |         r0 = r6;
    0x00041168 add sp, 0xc                                       |         
    0x0004116a pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |         
                                                                 | label_65:
    0x0004116e ldr.w r0, [pc, 0x7f4]                             |         r0 = *(0x00041964);
    0x00041172 add r0, pc                                        |         r0 += pc;
    0x00041174 bl 0x409f4                                        |         fcn_000409f4 (r0);
    0x00041178 b 0x41158                                         |         
                                                                 |     } while (1);
                                                                 | label_77:
    0x0004117a ldr.w r3, [r8, 0x14]                              |     r3 = *((r8 + 0x14));
    0x0004117e adds r3, 1                                        |     r3++;
                                                                 |     if (r3 == 1) {
    0x00041180 beq 0x410ba                                       |         goto label_13;
                                                                 |     }
    0x00041182 ldr.w r3, [r8, 8]                                 |     r3 = *((r8 + 8));
    0x00041186 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x00041188 beq.w 0x41470                                     |         goto label_84;
                                                                 |     }
    0x0004118c adds r3, r4, 3                                    |     r3 = r4 + 3;
    0x0004118e cmp r3, r5                                        |     
                                                                 |     if (r3 >= r5) {
    0x00041190 bge.w 0x417f0                                     |         goto label_85;
                                                                 |     }
                                                                 | label_49:
    0x00041194 movs r3, 0x2f                                     |     r3 = 0x2f;
    0x00041196 adds r2, r6, r4                                   |     r2 = r6 + r4;
    0x00041198 strb r3, [r6, r4]                                 |     *((r6 + r4)) = r3;
    0x0004119a add.w sb, r4, 2                                   |     sb = r4 + 2;
    0x0004119e strb r3, [r2, 1]                                  |     *((r2 + 1)) = r3;
    0x000411a0 ldr.w r4, [r8, 8]                                 |     r4 = *((r8 + 8));
    0x000411a4 ldrb r3, [r4]                                     |     r3 = *(r4);
    0x000411a6 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x000411a8 beq.w 0x41352                                     |         goto label_34;
                                                                 |     }
    0x000411ac movw sl, 0xf7fd                                   |     
    0x000411b0 movt sl, 0x12ff                                   |     sl = 0x12fff7fd;
    0x000411b4 b 0x411f6                                         |     
                                                                 |     while (r1 > 0x19) {
    0x000411b6 cmp r3, 0x40                                      |         
                                                                 |         if (r3 > 0x40) {
    0x000411b8 bhi.w 0x415da                                     |             goto label_86;
                                                                 |         }
    0x000411bc cmp r3, 0x23                                      |         
                                                                 |         if (r3 > 0x23) {
    0x000411be bhi.w 0x415c2                                     |             goto label_87;
                                                                 |         }
    0x000411c2 cmp r3, 0x21                                      |         
                                                                 |         if (r3 == 0x21) {
    0x000411c4 beq 0x41216                                       |             goto label_38;
                                                                 |         }
                                                                 | label_37:
    0x000411c6 mov.w r2, 0x25                                    |         r2 = 0x25;
    0x000411ca movs r1, 0x30                                     |         r1 = 0x30;
    0x000411cc strb.w r2, [ip]                                   |         *(ip) = r2;
    0x000411d0 asr.w ip, r3, 4                                   |         
    0x000411d4 and r3, r3, 0xf                                   |         r3 &= 0xf;
                                                                 | label_39:
    0x000411d8 add r1, ip                                        |         r1 += ip;
    0x000411da cmp r3, 9                                         |         
    0x000411dc strb r1, [r6, r0]                                 |         *((r6 + r0)) = r1;
    0x000411de add.w r0, sb, 2                                   |         r0 = sb + 2;
    0x000411e2 ite hi                                            |         
                                                                 |         if (r3 <= 9) {
    0x000411e4 movhi r1, 0x37                                    |             r1 = 0x37;
                                                                 |         }
                                                                 |         if (r3 > 9) {
    0x000411e6 movls r1, 0x30                                    |             r1 = 0x30;
                                                                 |         }
    0x000411e8 mov sb, fp                                        |         sb = fp;
    0x000411ea add r3, r1                                        |         r3 += r1;
    0x000411ec strb r3, [r6, r0]                                 |         *((r6 + r0)) = r3;
                                                                 | label_14:
    0x000411ee ldrb r3, [r4]                                     |         r3 = *(r4);
    0x000411f0 cmp r3, 0                                         |         
                                                                 |         if (r3 == 0) {
    0x000411f2 beq.w 0x41352                                     |             goto label_34;
                                                                 |         }
    0x000411f6 add.w fp, sb, 3                                   |         
    0x000411fa cmp fp, r5                                        |         
                                                                 |         if (fp >= r5) {
    0x000411fc bge.w 0x41602                                     |             goto label_88;
                                                                 |         }
                                                                 | label_40:
    0x00041200 ldrb r3, [r4], 1                                  |         r3 = *(r4);
                                                                 |         r4++;
    0x00041204 add.w ip, r6, sb                                  |         
    0x00041208 add.w r0, sb, 1                                   |         r0 = sb + 1;
    0x0004120c bic r1, r3, 0x20                                  |         r1 = BIT_MASK (r3, 0x20);
    0x00041210 subs r1, 0x41                                     |         r1 -= 0x41;
    0x00041212 cmp r1, 0x19                                      |         
    0x00041214 bhi 0x411b6                                       |         
                                                                 |     }
                                                                 | label_38:
    0x00041216 mov sb, r0                                        |     sb = r0;
    0x00041218 strb.w r3, [ip]                                   |     *(ip) = r3;
    0x0004121c b 0x411ee                                         |     goto label_14;
                                                                 | label_82:
    0x0004121e sub.w r1, r3, 0x21                                |     r1 = r3 - 0x21;
    0x00041222 uxtb r1, r1                                       |     r1 = (int8_t) r1;
    0x00041224 lsr.w r1, sl, r1                                  |     r1 = sl >> r1;
    0x00041228 lsls r1, r1, 0x1f                                 |     r1 <<= 0x1f;
                                                                 |     if (r1 >= r1) {
    0x0004122a bpl.w 0x410f6                                     |         goto label_15;
                                                                 |     }
    0x0004122e mov sb, ip                                        |     sb = ip;
    0x00041230 strb r3, [r0]                                     |     *(r0) = r3;
    0x00041232 b 0x41120                                         |     goto label_12;
                                                                 | label_81:
    0x00041234 cmp r3, 0x5f                                      |     
                                                                 |     if (r3 == 0x5f) {
    0x00041236 beq 0x41148                                       |         goto label_16;
                                                                 |     }
    0x00041238 cmp r3, 0x7e                                      |     
                                                                 |     if (r3 == 0x7e) {
    0x0004123a beq 0x41148                                       |         goto label_16;
                                                                 |     }
    0x0004123c cmp r3, 0x9f                                      |     
    0x0004123e mov.w r2, 0x25                                    |     r2 = 0x25;
    0x00041242 strb r2, [r0]                                     |     *(r0) = r2;
    0x00041244 asr.w lr, r3, 4                                   |     lr = r3 >> 4;
    0x00041248 and r0, r3, 0xf                                   |     r0 = r3 & 0xf;
    0x0004124c ite hi                                            |     
                                                                 |     if (r3 <= 0x9f) {
    0x0004124e movhi r1, 0x37                                    |         r1 = 0x37;
                                                                 |     }
                                                                 |     if (r3 > 0x9f) {
    0x00041250 movls r1, 0x30                                    |         r1 = 0x30;
                                                                 |     }
    0x00041252 b 0x41106                                         |     goto label_17;
                                                                 | label_83:
    0x00041254 cmp.w r5, 0x100000                                |     
                                                                 |     if (r5 > 0x100000) {
    0x00041258 bgt.w 0x41622                                     |         goto label_89;
                                                                 |     }
    0x0004125c ldr.w r3, [pc, 0x6f8]                             |     
    0x00041260 lsls r5, r5, 1                                    |     r5 <<= 1;
    0x00041262 mov r0, r6                                        |     r0 = r6;
    0x00041264 adds r1, r5, 1                                    |     r1 = r5 + 1;
    0x00041266 ldr r3, [r7, r3]                                  |     r3 = *((r7 + r3));
    0x00041268 ldr r3, [r3]                                      |     r3 = *(0x41958);
    0x0004126a blx r3                                            |     r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
    0x0004126c cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0004126e beq.w 0x417a4                                     |         goto label_90;
                                                                 |     }
    0x00041272 mov r6, r0                                        |     r6 = r0;
    0x00041274 b 0x41132                                         |     goto label_18;
                                                                 | label_60:
    0x00041276 cmp.w r5, 0x100000                                |     
                                                                 |     if (r5 > 0x100000) {
    0x0004127a bgt.w 0x417c2                                     |         goto label_91;
                                                                 |     }
    0x0004127e ldr.w r3, [pc, 0x6d8]                             |     
    0x00041282 lsls r5, r5, 1                                    |     r5 <<= 1;
    0x00041284 mov r0, r6                                        |     r0 = r6;
    0x00041286 adds r1, r5, 1                                    |     r1 = r5 + 1;
    0x00041288 ldr r3, [r7, r3]                                  |     r3 = *((r7 + r3));
    0x0004128a ldr r3, [r3]                                      |     r3 = *(0x4195a);
    0x0004128c blx r3                                            |     r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
    0x0004128e cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00041290 beq.w 0x4183c                                     |         goto label_92;
                                                                 |     }
    0x00041294 add sb, r0                                        |     sb += r0;
    0x00041296 add.w r4, sl, 2                                   |     r4 = sl + 2;
    0x0004129a mov r6, r0                                        |     r6 = r0;
    0x0004129c b 0x40e12                                         |     goto label_19;
                                                                 | label_80:
    0x0004129e add.w r3, sb, 3                                   |     r3 = sb + 3;
    0x000412a2 cmp r3, r5                                        |     
                                                                 |     if (r3 >= r5) {
    0x000412a4 bge.w 0x41766                                     |         goto label_93;
                                                                 |     }
                                                                 | label_47:
    0x000412a8 movs r3, 0x40                                     |     r3 = 0x40;
    0x000412aa strb.w r3, [r6, sb]                               |     *((r6 + sb)) = r3;
    0x000412ae add.w sb, sb, 1                                   |     sb++;
                                                                 | label_79:
    0x000412b2 ldr.w r4, [r8, 0xc]                               |     r4 = *((r8 + 0xc));
    0x000412b6 cmp r4, 0                                         |     
                                                                 |     if (r4 == 0) {
    0x000412b8 beq 0x41352                                       |         goto label_34;
                                                                 |     }
    0x000412ba ldrb r3, [r4]                                     |     r3 = *(r4);
                                                                 |     if (r3 != 0) {
    0x000412bc cbnz r3, 0x412ce                                  |         goto label_94;
                                                                 |     }
    0x000412be b 0x412fa                                         |     goto label_95;
                                                                 |     do {
                                                                 | label_20:
    0x000412c0 ldrb r3, [r4]                                     |         r3 = *(r4);
    0x000412c2 strb.w r3, [r6, sb]                               |         *((r6 + sb)) = r3;
    0x000412c6 mov sb, sl                                        |         sb = sl;
    0x000412c8 ldrb r3, [r4, 1]!                                 |         r3 = *((r4 += 1));
                                                                 |         if (r3 == 0) {
    0x000412cc cbz r3, 0x412fc                                   |             goto label_96;
                                                                 |         }
                                                                 | label_94:
    0x000412ce cmp sb, r5                                        |         
    0x000412d0 add.w sl, sb, 1                                   |         sl = sb + 1;
    0x000412d4 blt 0x412c0                                       |         
                                                                 |     } while (sb < r5);
    0x000412d6 cmp.w r5, 0x100000                                |     
    0x000412da ldr.w r3, [pc, 0x67c]                             |     r3 = *(0x4195a);
    0x000412de lsl.w r5, r5, 1                                   |     r5 <<= 1;
                                                                 |     if (r5 > 0x100000) {
    0x000412e2 bgt.w 0x41636                                     |         goto label_97;
                                                                 |     }
    0x000412e6 ldr r3, [r7, r3]                                  |     r3 = *((r7 + r3));
    0x000412e8 mov r0, r6                                        |     r0 = r6;
    0x000412ea adds r1, r5, 1                                    |     r1 = r5 + 1;
    0x000412ec ldr r3, [r3]                                      |     r3 = *(r3);
    0x000412ee blx r3                                            |     r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
    0x000412f0 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x000412f2 beq.w 0x417b8                                     |         goto label_98;
                                                                 |     }
    0x000412f6 mov r6, r0                                        |     r6 = r0;
    0x000412f8 b 0x412c0                                         |     goto label_20;
                                                                 | label_95:
    0x000412fa mov sl, sb                                        |     sl = sb;
                                                                 | label_96:
    0x000412fc ldr.w r3, [r8, 0x14]                              |     r3 = *((r8 + 0x14));
    0x00041300 cmp r3, 0                                         |     
                                                                 |     if (r3 <= 0) {
    0x00041302 ble.w 0x41562                                     |         goto label_99;
                                                                 |     }
    0x00041306 add.w r2, sl, 0xa                                 |     r2 = sl + 0xa;
    0x0004130a cmp r2, r5                                        |     
                                                                 |     if (r2 >= r5) {
    0x0004130c blt 0x41332                                       |         
    0x0004130e cmp.w r5, 0x100000                                |         
                                                                 |         if (r5 > 0x100000) {
    0x00041312 bgt.w 0x418be                                     |             goto label_100;
                                                                 |         }
    0x00041316 ldr.w r3, [pc, 0x640]                             |         
    0x0004131a lsls r5, r5, 1                                    |         r5 <<= 1;
    0x0004131c mov r0, r6                                        |         r0 = r6;
    0x0004131e adds r1, r5, 1                                    |         r1 = r5 + 1;
    0x00041320 ldr r3, [r7, r3]                                  |         r3 = *((r7 + r3));
    0x00041322 ldr r3, [r3]                                      |         r3 = *(0x4195a);
    0x00041324 blx r3                                            |         r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
    0x00041326 cmp r0, 0                                         |         
                                                                 |         if (r0 == 0) {
    0x00041328 beq.w 0x418c8                                     |             goto label_101;
                                                                 |         }
    0x0004132c ldr.w r3, [r8, 0x14]                              |         r3 = *((r8 + 0x14));
    0x00041330 mov r6, r0                                        |         r6 = r0;
                                                                 |     }
    0x00041332 str r3, [sp, 4]                                   |     var_4h = r3;
    0x00041334 movs r2, 1                                        |     r2 = 1;
    0x00041336 ldr.w r3, [pc, 0x630]                             |     r3 = *(0x00041968);
    0x0004133a sub.w r1, r5, sl                                  |     r1 = r5 - sl;
    0x0004133e add.w r0, r6, sl                                  |     r0 = r6 + sl;
    0x00041342 add r3, pc                                        |     r3 += pc;
    0x00041344 str r3, [sp]                                      |     *(sp) = r3;
    0x00041346 mov.w r3, -1                                      |     r3 = -1;
    0x0004134a blx 0x1baac                                       |     r0 = fcn_0001baac ();
    0x0004134e add.w sb, r0, sl                                  |     sb = r0 + sl;
                                                                 | label_34:
    0x00041352 ldr.w sl, [r8, 0x18]                              |     sl = *((r8 + 0x18));
    0x00041356 cmp.w sl, 0                                       |     
                                                                 |     if (sl == 0) {
    0x0004135a beq.w 0x41492                                     |         goto label_102;
                                                                 |     }
    0x0004135e ldr.w r0, [r8]                                    |     r0 = *(r8);
    0x00041362 ldrb.w r3, [sl]                                   |     r3 = *(sl);
                                                                 |     if (r0 != 0) {
    0x00041366 cbz r0, 0x41372                                   |         
                                                                 | label_28:
    0x00041368 ldrb.w r3, [sl]                                   |         r3 = *(sl);
    0x0004136c cmp r3, 0x2f                                      |         
                                                                 |         if (r3 == 0x2f) {
    0x0004136e beq.w 0x41566                                     |             goto label_103;
                                                                 |         }
                                                                 |     }
                                                                 | label_36:
    0x00041372 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x00041374 beq.w 0x41492                                     |         goto label_102;
                                                                 |     }
                                                                 | label_35:
    0x00041378 movw r4, 0xfffd                                   |     
    0x0004137c movt r4, 0x12bf                                   |     r4 = 0x12bffffd;
    0x00041380 b 0x413c2                                         |     
                                                                 |     while (r1 > 0x19) {
    0x00041382 cmp r3, 0x40                                      |         
                                                                 |         if (r3 > 0x40) {
    0x00041384 bhi 0x413fe                                       |             goto label_104;
                                                                 |         }
    0x00041386 cmp r3, 0x23                                      |         
                                                                 |         if (r3 > 0x23) {
    0x00041388 bhi 0x413e8                                       |             goto label_105;
                                                                 |         }
    0x0004138a cmp r3, 0x21                                      |         
                                                                 |         if (r3 == 0x21) {
    0x0004138c beq 0x413e0                                       |             goto label_23;
                                                                 |         }
                                                                 | label_22:
    0x0004138e mov.w r2, 0x25                                    |         r2 = 0x25;
    0x00041392 asr.w lr, r3, 4                                   |         lr = r3 >> 4;
    0x00041396 strb.w r2, [ip]                                   |         *(ip) = r2;
    0x0004139a movs r1, 0x30                                     |         r1 = 0x30;
    0x0004139c and ip, r3, 0xf                                   |         
                                                                 | label_24:
    0x000413a0 add r1, lr                                        |         r1 += lr;
    0x000413a2 cmp.w ip, 9                                       |         
    0x000413a6 strb r1, [r6, r0]                                 |         *((r6 + r0)) = r1;
    0x000413a8 it hi                                             |         
                                                                 |         if (ip <= 9) {
    0x000413aa movhi r3, 0x37                                    |             r3 = 0x37;
                                                                 |         }
    0x000413ac add.w r1, sb, 2                                   |         r1 = sb + 2;
    0x000413b0 it ls                                             |         
                                                                 |         if (ip > 9) {
    0x000413b2 movls r3, 0x30                                    |             r3 = 0x30;
                                                                 |         }
    0x000413b4 mov sb, fp                                        |         sb = fp;
    0x000413b6 add r3, ip                                        |         r3 += ip;
    0x000413b8 strb r3, [r6, r1]                                 |         *((r6 + r1)) = r3;
                                                                 | label_21:
    0x000413ba ldrb.w r3, [sl]                                   |         r3 = *(sl);
    0x000413be cmp r3, 0                                         |         
                                                                 |         if (r3 == 0) {
    0x000413c0 beq 0x41492                                       |             goto label_102;
                                                                 |         }
    0x000413c2 add.w fp, sb, 3                                   |         
    0x000413c6 cmp fp, r5                                        |         
                                                                 |         if (fp >= r5) {
    0x000413c8 bge 0x41420                                       |             goto label_106;
                                                                 |         }
                                                                 | label_25:
    0x000413ca ldrb r3, [sl], 1                                  |         r3 = *(sl);
                                                                 |         sl++;
    0x000413ce add.w ip, r6, sb                                  |         
    0x000413d2 add.w r0, sb, 1                                   |         r0 = sb + 1;
    0x000413d6 bic r1, r3, 0x20                                  |         r1 = BIT_MASK (r3, 0x20);
    0x000413da subs r1, 0x41                                     |         r1 -= 0x41;
    0x000413dc cmp r1, 0x19                                      |         
    0x000413de bhi 0x41382                                       |         
                                                                 |     }
                                                                 | label_23:
    0x000413e0 mov sb, r0                                        |     sb = r0;
    0x000413e2 strb.w r3, [ip]                                   |     *(ip) = r3;
    0x000413e6 b 0x413ba                                         |     goto label_21;
                                                                 | label_105:
    0x000413e8 sub.w r1, r3, 0x24                                |     r1 = r3 - 0x24;
    0x000413ec uxtb r1, r1                                       |     r1 = (int8_t) r1;
    0x000413ee lsr.w r1, r4, r1                                  |     r1 = r4 >> r1;
    0x000413f2 lsls r1, r1, 0x1f                                 |     r1 <<= 0x1f;
                                                                 |     if (r1 >= r1) {
    0x000413f4 bpl 0x4138e                                       |         goto label_22;
                                                                 |     }
    0x000413f6 mov sb, r0                                        |     sb = r0;
    0x000413f8 strb.w r3, [ip]                                   |     *(ip) = r3;
    0x000413fc b 0x413ba                                         |     goto label_21;
                                                                 | label_104:
    0x000413fe cmp r3, 0x5f                                      |     
                                                                 |     if (r3 == 0x5f) {
    0x00041400 beq 0x413e0                                       |         goto label_23;
                                                                 |     }
    0x00041402 cmp r3, 0x7e                                      |     
                                                                 |     if (r3 == 0x7e) {
    0x00041404 beq 0x413e0                                       |         goto label_23;
                                                                 |     }
    0x00041406 cmp r3, 0x9f                                      |     
    0x00041408 mov.w r2, 0x25                                    |     r2 = 0x25;
    0x0004140c strb.w r2, [ip]                                   |     *(ip) = r2;
    0x00041410 asr.w lr, r3, 4                                   |     lr = r3 >> 4;
    0x00041414 and ip, r3, 0xf                                   |     
    0x00041418 ite hi                                            |     
                                                                 |     if (r3 <= 0x9f) {
    0x0004141a movhi r1, 0x37                                    |         r1 = 0x37;
                                                                 |     }
                                                                 |     if (r3 > 0x9f) {
    0x0004141c movls r1, 0x30                                    |         r1 = 0x30;
                                                                 |     }
    0x0004141e b 0x413a0                                         |     goto label_24;
                                                                 | label_106:
    0x00041420 cmp.w r5, 0x100000                                |     
                                                                 |     if (r5 > 0x100000) {
    0x00041424 bgt.w 0x4162c                                     |         goto label_107;
                                                                 |     }
    0x00041428 ldr.w r3, [pc, 0x52c]                             |     
    0x0004142c lsls r5, r5, 1                                    |     r5 <<= 1;
    0x0004142e mov r0, r6                                        |     r0 = r6;
    0x00041430 adds r1, r5, 1                                    |     r1 = r5 + 1;
    0x00041432 ldr r3, [r7, r3]                                  |     r3 = *((r7 + r3));
    0x00041434 ldr r3, [r3]                                      |     r3 = *(0x41958);
    0x00041436 blx r3                                            |     r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
    0x00041438 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0004143a beq.w 0x417ae                                     |         goto label_108;
                                                                 |     }
    0x0004143e mov r6, r0                                        |     r6 = r0;
    0x00041440 b 0x413ca                                         |     goto label_25;
                                                                 | label_75:
    0x00041442 ldr.w r0, [pc, 0x528]                             |     r0 = *(0x0004196c);
    0x00041446 add r0, pc                                        |     r0 += pc;
    0x00041448 bl 0x409f4                                        |     fcn_000409f4 (r0);
    0x0004144c b 0x41158                                         |     goto label_26;
                                                                 | label_72:
    0x0004144e cmp.w r5, 0x100000                                |     
                                                                 |     if (r5 > 0x100000) {
    0x00041452 bgt.w 0x417d6                                     |         goto label_109;
                                                                 |     }
    0x00041456 ldr.w r3, [pc, 0x500]                             |     
    0x0004145a lsls r1, r5, 1                                    |     r1 = r5 << 1;
    0x0004145c mov r0, r6                                        |     r0 = r6;
    0x0004145e adds r1, 1                                        |     r1++;
    0x00041460 ldr r3, [r7, r3]                                  |     r3 = *((r7 + r3));
    0x00041462 ldr r3, [r3]                                      |     r3 = *(0x4195a);
    0x00041464 blx r3                                            |     r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
    0x00041466 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00041468 beq.w 0x4185a                                     |         goto label_110;
                                                                 |     }
    0x0004146c mov r6, r0                                        |     r6 = r0;
    0x0004146e b 0x40f62                                         |     goto label_27;
                                                                 | label_84:
    0x00041470 ldr.w r0, [r8]                                    |     r0 = *(r8);
    0x00041474 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00041476 beq.w 0x41878                                     |         goto label_111;
                                                                 |     }
    0x0004147a adds r3, r4, 3                                    |     r3 = r4 + 3;
    0x0004147c cmp r3, r5                                        |     
                                                                 |     if (r3 >= r5) {
    0x0004147e bge.w 0x418a0                                     |         goto label_112;
                                                                 |     }
    0x00041482 ldr.w sl, [r8, 0x18]                              |     sl = *((r8 + 0x18));
    0x00041486 mov sb, r4                                        |     sb = r4;
    0x00041488 cmp.w sl, 0                                       |     
                                                                 |     if (sl != 0) {
    0x0004148c bne.w 0x41368                                     |         goto label_28;
                                                                 |     }
                                                                 | label_51:
    0x00041490 mov sb, r4                                        |     sb = r4;
                                                                 | label_102:
    0x00041492 ldr.w r3, [r8, 0x28]                              |     r3 = *((r8 + 0x28));
    0x00041496 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x00041498 beq.w 0x4164a                                     |         goto label_113;
                                                                 |     }
    0x0004149c add.w r4, sb, 1                                   |     r4 = sb + 1;
    0x000414a0 cmp r4, r5                                        |     
                                                                 |     if (r4 >= r5) {
    0x000414a2 bge.w 0x41786                                     |         goto label_114;
                                                                 |     }
                                                                 | label_48:
    0x000414a6 movs r3, 0x3f                                     |     r3 = 0x3f;
    0x000414a8 strb.w r3, [r6, sb]                               |     *((r6 + sb)) = r3;
    0x000414ac ldr.w r3, [r8, 0x28]                              |     r3 = *((r8 + 0x28));
    0x000414b0 ldrb r2, [r3]                                     |     r2 = *(r3);
    0x000414b2 cmp r2, 0                                         |     
                                                                 |     if (r2 == 0) {
    0x000414b4 beq.w 0x40ece                                     |         goto label_29;
                                                                 |     }
    0x000414b8 mov sb, r3                                        |     sb = r3;
    0x000414ba b 0x414ce                                         |     goto label_115;
                                                                 | label_30:
    0x000414bc ldrb.w r3, [sb]                                   |     r3 = *(sb);
    0x000414c0 strb.w r3, [r6, sl]                               |     *((r6 + sl)) = r3;
    0x000414c4 ldrb r3, [sb, 1]!                                 |     r3 = *((sb += 1));
    0x000414c8 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x000414ca beq.w 0x40ece                                     |         goto label_29;
                                                                 |     }
                                                                 | label_115:
    0x000414ce mov sl, r4                                        |     sl = r4;
    0x000414d0 adds r4, 1                                        |     r4++;
    0x000414d2 cmp r4, r5                                        |     
                                                                 |     if (r4 < r5) {
    0x000414d4 blt 0x414bc                                       |         goto label_30;
                                                                 |     }
    0x000414d6 cmp.w r5, 0x100000                                |     
    0x000414da ldr.w r3, [pc, 0x47c]                             |     r3 = *(0x4195a);
    0x000414de lsl.w r5, r5, 1                                   |     r5 <<= 1;
                                                                 |     if (r5 > 0x100000) {
    0x000414e2 bgt.w 0x41752                                     |         goto label_116;
                                                                 |     }
    0x000414e6 ldr r3, [r7, r3]                                  |     r3 = *((r7 + r3));
    0x000414e8 mov r0, r6                                        |     r0 = r6;
    0x000414ea adds r1, r5, 1                                    |     r1 = r5 + 1;
    0x000414ec ldr r3, [r3]                                      |     r3 = *(r3);
    0x000414ee blx r3                                            |     r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
    0x000414f0 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x000414f2 beq.w 0x417cc                                     |         goto label_117;
                                                                 |     }
    0x000414f6 mov r6, r0                                        |     r6 = r0;
    0x000414f8 b 0x414bc                                         |     goto label_30;
                                                                 | label_68:
    0x000414fa cmp.w r5, 0x100000                                |     
                                                                 |     if (r5 > 0x100000) {
    0x000414fe bgt.w 0x4180c                                     |         goto label_118;
                                                                 |     }
    0x00041502 ldr.w r3, [pc, 0x454]                             |     
    0x00041506 lsls r5, r5, 1                                    |     r5 <<= 1;
    0x00041508 mov r0, r6                                        |     r0 = r6;
    0x0004150a adds r1, r5, 1                                    |     r1 = r5 + 1;
    0x0004150c ldr r3, [r7, r3]                                  |     r3 = *((r7 + r3));
    0x0004150e ldr r3, [r3]                                      |     r3 = *(0x4195a);
    0x00041510 blx r3                                            |     r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
    0x00041512 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00041514 beq.w 0x41864                                     |         goto label_119;
                                                                 |     }
    0x00041518 mov r6, r0                                        |     r6 = r0;
    0x0004151a b 0x40ede                                         |     goto label_31;
                                                                 | label_59:
    0x0004151c ldr.w r0, [pc, 0x450]                             |     
    0x00041520 add r0, pc                                        |     r0 = 0x82e94;
    0x00041522 bl 0x409f4                                        |     fcn_000409f4 (r0);
    0x00041526 b 0x41158                                         |     goto label_26;
                                                                 | label_66:
    0x00041528 ldr.w r0, [pc, 0x448]                             |     
    0x0004152c add r0, pc                                        |     r0 = 0x82ea4;
    0x0004152e bl 0x409f4                                        |     fcn_000409f4 (r0);
    0x00041532 b 0x41158                                         |     goto label_26;
                                                                 | label_53:
    0x00041534 mov r6, r0                                        |     r6 = r0;
    0x00041536 b 0x40f66                                         |     goto label_32;
                                                                 | label_78:
    0x00041538 cmp.w r5, 0x100000                                |     
                                                                 |     if (r5 > 0x100000) {
    0x0004153c bgt.w 0x41846                                     |         goto label_120;
                                                                 |     }
    0x00041540 ldr.w r3, [pc, 0x414]                             |     
    0x00041544 lsls r5, r5, 1                                    |     r5 <<= 1;
    0x00041546 mov r0, r6                                        |     r0 = r6;
    0x00041548 adds r1, r5, 1                                    |     r1 = r5 + 1;
    0x0004154a ldr r3, [r7, r3]                                  |     r3 = *((r7 + r3));
    0x0004154c ldr r3, [r3]                                      |     r3 = *(0x41958);
    0x0004154e blx r3                                            |     r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
                                                                 |     if (r0 == 0) {
    0x00041550 cbz r0, 0x415b8                                   |         goto label_121;
                                                                 |     }
    0x00041552 mov r6, r0                                        |     r6 = r0;
    0x00041554 b 0x410c2                                         |     goto label_33;
                                                                 | label_76:
    0x00041556 ldr.w r0, [pc, 0x420]                             |     r0 = *(0x00041978);
    0x0004155a add r0, pc                                        |     r0 += pc;
    0x0004155c bl 0x409f4                                        |     fcn_000409f4 (r0);
    0x00041560 b 0x41158                                         |     goto label_26;
                                                                 | label_99:
    0x00041562 mov sb, sl                                        |     sb = sl;
    0x00041564 b 0x41352                                         |     goto label_34;
                                                                 | label_103:
    0x00041566 ldrb.w r3, [sl, 1]                                |     r3 = *((sl + 1));
    0x0004156a bic r3, r3, 0x20                                  |     r3 = BIT_MASK (r3, 0x20);
    0x0004156e subs r3, 0x41                                     |     r3 -= 0x41;
    0x00041570 cmp r3, 0x19                                      |     
                                                                 |     if (r3 > 0x19) {
    0x00041572 bhi.w 0x41378                                     |         goto label_35;
                                                                 |     }
    0x00041576 ldrb.w r3, [sl, 2]                                |     r3 = *((sl + 2));
    0x0004157a cmp r3, 0x3a                                      |     
                                                                 |     if (r3 != 0x3a) {
    0x0004157c bne.w 0x41378                                     |         goto label_35;
                                                                 |     }
    0x00041580 ldr r1, [pc, 0x3f8]                               |     
    0x00041582 add r1, pc                                        |     r1 = 0x82f02;
    0x00041584 bl 0x6bd74                                        |     r0 = xmlStrEqual ();
                                                                 |     if (r0 != 0) {
    0x00041588 cbz r0, 0x415b2                                   |         
    0x0004158a add.w r4, sb, 3                                   |         r4 = sb + 3;
    0x0004158e cmp r4, r5                                        |         
                                                                 |         if (r4 >= r5) {
    0x00041590 bge.w 0x41904                                     |             goto label_122;
                                                                 |         }
                                                                 | label_52:
    0x00041594 ldrb.w r3, [sl]                                   |         r3 = *(sl);
    0x00041598 add.w sl, sl, 3                                   |         sl += 3;
    0x0004159c strb.w r3, [r6, sb]                               |         *((r6 + sb)) = r3;
    0x000415a0 add.w r3, r6, sb                                  |         r3 = r6 + sb;
    0x000415a4 ldrb r2, [sl, -0x2]                               |         r2 = *((sl - 0x2));
    0x000415a8 mov sb, r4                                        |         sb = r4;
    0x000415aa strb r2, [r3, 1]                                  |         *((r3 + 1)) = r2;
    0x000415ac ldrb r2, [sl, -0x1]                               |         r2 = *((sl - 0x1));
    0x000415b0 strb r2, [r3, 2]                                  |         *((r3 + 2)) = r2;
                                                                 |     }
    0x000415b2 ldrb.w r3, [sl]                                   |     r3 = *(sl);
    0x000415b6 b 0x41372                                         |     goto label_36;
                                                                 | label_121:
    0x000415b8 ldr r0, [pc, 0x3c4]                               |     
    0x000415ba add r0, pc                                        |     r0 = 0x82f3e;
    0x000415bc bl 0x409f4                                        |     fcn_000409f4 (r0);
    0x000415c0 b 0x41158                                         |     goto label_26;
                                                                 | label_87:
    0x000415c2 sub.w r1, r3, 0x24                                |     r1 = r3 - 0x24;
    0x000415c6 uxtb r1, r1                                       |     r1 = (int8_t) r1;
    0x000415c8 lsr.w r1, sl, r1                                  |     r1 = sl >> r1;
    0x000415cc lsls r2, r1, 0x1f                                 |     r2 = r1 << 0x1f;
                                                                 |     if (r2 >= r1) {
    0x000415ce bpl.w 0x411c6                                     |         goto label_37;
                                                                 |     }
    0x000415d2 mov sb, r0                                        |     sb = r0;
    0x000415d4 strb.w r3, [ip]                                   |     *(ip) = r3;
    0x000415d8 b 0x411ee                                         |     goto label_14;
                                                                 | label_86:
    0x000415da cmp r3, 0x5f                                      |     
                                                                 |     if (r3 == 0x5f) {
    0x000415dc beq.w 0x41216                                     |         goto label_38;
                                                                 |     }
    0x000415e0 cmp r3, 0x7e                                      |     
                                                                 |     if (r3 == 0x7e) {
    0x000415e2 beq.w 0x41216                                     |         goto label_38;
                                                                 |     }
    0x000415e6 cmp r3, 0x9f                                      |     
    0x000415e8 mov.w r2, 0x25                                    |     r2 = 0x25;
    0x000415ec strb.w r2, [ip]                                   |     *(ip) = r2;
    0x000415f0 it hi                                             |     
                                                                 |     if (r3 <= 0x9f) {
    0x000415f2 movhi r1, 0x37                                    |         r1 = 0x37;
                                                                 |     }
    0x000415f4 asr.w ip, r3, 4                                   |     
    0x000415f8 it ls                                             |     
                                                                 |     if (r3 > 0x9f) {
    0x000415fa movls r1, 0x30                                    |         r1 = 0x30;
                                                                 |     }
    0x000415fc and r3, r3, 0xf                                   |     r3 &= 0xf;
    0x00041600 b 0x411d8                                         |     goto label_39;
                                                                 | label_88:
    0x00041602 cmp.w r5, 0x100000                                |     
                                                                 |     if (r5 > 0x100000) {
    0x00041606 bgt.w 0x417e0                                     |         goto label_123;
                                                                 |     }
    0x0004160a ldr r3, [pc, 0x34c]                               |     
    0x0004160c lsls r5, r5, 1                                    |     r5 <<= 1;
    0x0004160e mov r0, r6                                        |     r0 = r6;
    0x00041610 adds r1, r5, 1                                    |     r1 = r5 + 1;
    0x00041612 ldr r3, [r7, r3]                                  |     r3 = *((r7 + r3));
    0x00041614 ldr r3, [r3]                                      |     r3 = *(0x4195a);
    0x00041616 blx r3                                            |     r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
    0x00041618 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0004161a beq.w 0x41850                                     |         goto label_124;
                                                                 |     }
    0x0004161e mov r6, r0                                        |     r6 = r0;
    0x00041620 b 0x41200                                         |     goto label_40;
                                                                 | label_89:
    0x00041622 ldr r0, [pc, 0x360]                               |     
    0x00041624 add r0, pc                                        |     r0 = 0x82fae;
    0x00041626 bl 0x409f4                                        |     fcn_000409f4 (r0);
    0x0004162a b 0x41158                                         |     goto label_26;
                                                                 | label_107:
    0x0004162c ldr r0, [pc, 0x358]                               |     
    0x0004162e add r0, pc                                        |     r0 = 0x82fba;
    0x00041630 bl 0x409f4                                        |     fcn_000409f4 (r0);
    0x00041634 b 0x41158                                         |     goto label_26;
                                                                 | label_97:
    0x00041636 ldr r0, [pc, 0x354]                               |     
    0x00041638 add r0, pc                                        |     r0 = 0x82fca;
    0x0004163a bl 0x409f4                                        |     fcn_000409f4 (r0);
    0x0004163e b 0x41158                                         |     goto label_26;
                                                                 | label_54:
    0x00041640 ldr r0, [pc, 0x34c]                               |     
    0x00041642 add r0, pc                                        |     r0 = 0x82fd6;
    0x00041644 bl 0x409f4                                        |     fcn_000409f4 (r0);
    0x00041648 b 0x40f66                                         |     goto label_32;
                                                                 | label_113:
    0x0004164a ldr.w r3, [r8, 0x1c]                              |     r3 = *((r8 + 0x1c));
    0x0004164e cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x00041650 beq.w 0x417ea                                     |         goto label_125;
                                                                 |     }
    0x00041654 add.w r3, sb, 3                                   |     r3 = sb + 3;
    0x00041658 cmp r3, r5                                        |     
                                                                 |     if (r3 >= r5) {
    0x0004165a bge.w 0x41820                                     |         goto label_126;
                                                                 |     }
                                                                 | label_50:
    0x0004165e movs r3, 0x3f                                     |     r3 = 0x3f;
    0x00041660 add.w r4, sb, 1                                   |     r4 = sb + 1;
    0x00041664 strb.w r3, [r6, sb]                               |     *((r6 + sb)) = r3;
    0x00041668 ldr.w sb, [r8, 0x1c]                              |     sb = *((r8 + 0x1c));
    0x0004166c ldrb.w r3, [sb]                                   |     r3 = *(sb);
    0x00041670 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x00041672 beq.w 0x40ece                                     |         goto label_29;
                                                                 |     }
    0x00041676 movw sl, 0xfffd                                   |     
    0x0004167a movt sl, 0x1aff                                   |     sl = 0x1afffffd;
    0x0004167e b 0x416be                                         |     goto label_127;
                                                                 | label_41:
    0x00041680 cmp r3, 0x40                                      |     
                                                                 |     if (r3 > 0x40) {
    0x00041682 bhi 0x416f8                                       |         goto label_128;
                                                                 |     }
    0x00041684 cmp r3, 0x23                                      |     
                                                                 |     if (r3 > 0x23) {
    0x00041686 bhi 0x416e2                                       |         goto label_129;
                                                                 |     }
    0x00041688 cmp r3, 0x21                                      |     
                                                                 |     if (r3 == 0x21) {
    0x0004168a beq 0x416da                                       |         goto label_44;
                                                                 |     }
                                                                 | label_43:
    0x0004168c mov.w r2, 0x25                                    |     r2 = 0x25;
    0x00041690 movs r1, 0x30                                     |     r1 = 0x30;
    0x00041692 strb.w r2, [ip]                                   |     *(ip) = r2;
    0x00041696 asr.w ip, r3, 4                                   |     
    0x0004169a and r3, r3, 0xf                                   |     r3 &= 0xf;
                                                                 | label_45:
    0x0004169e add r1, ip                                        |     r1 += ip;
    0x000416a0 cmp r3, 9                                         |     
    0x000416a2 strb r1, [r6, r0]                                 |     *((r6 + r0)) = r1;
    0x000416a4 add.w r0, r4, 2                                   |     r0 = r4 + 2;
    0x000416a8 ite hi                                            |     
                                                                 |     if (r3 <= 9) {
    0x000416aa movhi r1, 0x37                                    |         r1 = 0x37;
                                                                 |     }
                                                                 |     if (r3 > 9) {
    0x000416ac movls r1, 0x30                                    |         r1 = 0x30;
                                                                 |     }
    0x000416ae mov r4, fp                                        |     r4 = fp;
    0x000416b0 add r3, r1                                        |     r3 += r1;
    0x000416b2 strb r3, [r6, r0]                                 |     *((r6 + r0)) = r3;
                                                                 | label_42:
    0x000416b4 ldrb.w r3, [sb]                                   |     r3 = *(sb);
    0x000416b8 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x000416ba beq.w 0x40ece                                     |         goto label_29;
                                                                 |     }
                                                                 | label_127:
    0x000416be add.w fp, r4, 3                                   |     
    0x000416c2 cmp fp, r5                                        |     
                                                                 |     if (fp >= r5) {
    0x000416c4 bge 0x41734                                       |         goto label_130;
                                                                 |     }
                                                                 | label_46:
    0x000416c6 ldrb r3, [sb], 1                                  |     r3 = *(sb);
                                                                 |     sb++;
    0x000416ca add.w ip, r6, r4                                  |     
    0x000416ce adds r0, r4, 1                                    |     r0 = r4 + 1;
    0x000416d0 bic r1, r3, 0x20                                  |     r1 = BIT_MASK (r3, 0x20);
    0x000416d4 subs r1, 0x41                                     |     r1 -= 0x41;
    0x000416d6 cmp r1, 0x19                                      |     
                                                                 |     if (r1 > 0x19) {
    0x000416d8 bhi 0x41680                                       |         goto label_41;
                                                                 |     }
                                                                 | label_44:
    0x000416da mov r4, r0                                        |     r4 = r0;
    0x000416dc strb.w r3, [ip]                                   |     *(ip) = r3;
    0x000416e0 b 0x416b4                                         |     goto label_42;
                                                                 | label_129:
    0x000416e2 sub.w r1, r3, 0x24                                |     r1 = r3 - 0x24;
    0x000416e6 uxtb r1, r1                                       |     r1 = (int8_t) r1;
    0x000416e8 lsr.w r1, sl, r1                                  |     r1 = sl >> r1;
    0x000416ec lsls r1, r1, 0x1f                                 |     r1 <<= 0x1f;
                                                                 |     if (r1 >= r1) {
    0x000416ee bpl 0x4168c                                       |         goto label_43;
                                                                 |     }
    0x000416f0 mov r4, r0                                        |     r4 = r0;
    0x000416f2 strb.w r3, [ip]                                   |     *(ip) = r3;
    0x000416f6 b 0x416b4                                         |     goto label_42;
                                                                 | label_128:
    0x000416f8 cmp r3, 0x5f                                      |     
                                                                 |     if (r3 > 0x5f) {
    0x000416fa bhi 0x41714                                       |         goto label_131;
                                                                 |     }
    0x000416fc cmp r3, 0x5a                                      |     
                                                                 |     if (r3 < 0x5a) {
    0x000416fe bls 0x4168c                                       |         goto label_43;
                                                                 |     }
    0x00041700 sub.w lr, r3, 0x5b                                |     lr = r3 - 0x5b;
    0x00041704 movs r1, 0x15                                     |     r1 = 0x15;
    0x00041706 uxtb.w lr, lr                                     |     lr = (int8_t) lr;
    0x0004170a lsr.w r1, r1, lr                                  |     r1 >>= lr;
    0x0004170e lsls r2, r1, 0x1f                                 |     r2 = r1 << 0x1f;
                                                                 |     if (r2 < r1) {
    0x00041710 bmi 0x416da                                       |         goto label_44;
                                                                 |     }
    0x00041712 b 0x4168c                                         |     goto label_43;
                                                                 | label_131:
    0x00041714 cmp r3, 0x7e                                      |     
                                                                 |     if (r3 == 0x7e) {
    0x00041716 beq 0x416da                                       |         goto label_44;
                                                                 |     }
    0x00041718 cmp r3, 0x9f                                      |     
    0x0004171a mov.w r2, 0x25                                    |     r2 = 0x25;
    0x0004171e strb.w r2, [ip]                                   |     *(ip) = r2;
    0x00041722 it hi                                             |     
                                                                 |     if (r3 <= 0x9f) {
    0x00041724 movhi r1, 0x37                                    |         r1 = 0x37;
                                                                 |     }
    0x00041726 asr.w ip, r3, 4                                   |     
    0x0004172a it ls                                             |     
                                                                 |     if (r3 > 0x9f) {
    0x0004172c movls r1, 0x30                                    |         r1 = 0x30;
                                                                 |     }
    0x0004172e and r3, r3, 0xf                                   |     r3 &= 0xf;
    0x00041732 b 0x4169e                                         |     goto label_45;
                                                                 | label_130:
    0x00041734 cmp.w r5, 0x100000                                |     
                                                                 |     if (r5 <= 0x100000) {
    0x00041738 bgt 0x41816                                       |         
    0x0004173a ldr r3, [pc, 0x21c]                               |         
    0x0004173c lsls r5, r5, 1                                    |         r5 <<= 1;
    0x0004173e mov r0, r6                                        |         r0 = r6;
    0x00041740 adds r1, r5, 1                                    |         r1 = r5 + 1;
    0x00041742 ldr r3, [r7, r3]                                  |         r3 = *((r7 + r3));
    0x00041744 ldr r3, [r3]                                      |         r3 = *(0x4195a);
    0x00041746 blx r3                                            |         r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
    0x00041748 cmp r0, 0                                         |         
                                                                 |         if (r0 == 0) {
    0x0004174a beq.w 0x4186e                                     |             goto label_132;
                                                                 |         }
    0x0004174e mov r6, r0                                        |         r6 = r0;
    0x00041750 b 0x416c6                                         |         goto label_46;
                                                                 | label_116:
    0x00041752 ldr r0, [pc, 0x240]                               |         
    0x00041754 add r0, pc                                        |         r0 = 0x830ee;
    0x00041756 bl 0x409f4                                        |         fcn_000409f4 (r0);
    0x0004175a b 0x41158                                         |         goto label_26;
                                                                 | label_56:
    0x0004175c mov sb, r0                                        |         sb = r0;
    0x0004175e movs r4, 1                                        |         r4 = 1;
    0x00041760 movs r5, 0x50                                     |         r5 = 0x50;
    0x00041762 b.w 0x40e12                                       |         goto label_19;
                                                                 | label_93:
    0x00041766 cmp.w r5, 0x100000                                |         
                                                                 |         if (r5 > 0x100000) {
    0x0004176a bgt.w 0x41896                                     |             goto label_133;
                                                                 |         }
    0x0004176e ldr r3, [pc, 0x1e8]                               |         
    0x00041770 lsls r5, r5, 1                                    |         r5 <<= 1;
    0x00041772 mov r0, r6                                        |         r0 = r6;
    0x00041774 adds r1, r5, 1                                    |         r1 = r5 + 1;
    0x00041776 ldr r3, [r7, r3]                                  |         r3 = *((r7 + r3));
    0x00041778 ldr r3, [r3]                                      |         r3 = *(0x4195a);
    0x0004177a blx r3                                            |         r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
    0x0004177c cmp r0, 0                                         |         
                                                                 |         if (r0 == 0) {
    0x0004177e beq.w 0x418f0                                     |             goto label_134;
                                                                 |         }
    0x00041782 mov r6, r0                                        |         r6 = r0;
    0x00041784 b 0x412a8                                         |         goto label_47;
                                                                 | label_114:
    0x00041786 cmp.w r5, 0x100000                                |         
                                                                 |         if (r5 > 0x100000) {
    0x0004178a bgt 0x4188c                                       |             goto label_135;
                                                                 |         }
    0x0004178c ldr r3, [pc, 0x1c8]                               |         
    0x0004178e lsls r5, r5, 1                                    |         r5 <<= 1;
    0x00041790 mov r0, r6                                        |         r0 = r6;
    0x00041792 adds r1, r5, 1                                    |         r1 = r5 + 1;
    0x00041794 ldr r3, [r7, r3]                                  |         r3 = *((r7 + r3));
    0x00041796 ldr r3, [r3]                                      |         r3 = *(0x41958);
    0x00041798 blx r3                                            |         r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
    0x0004179a cmp r0, 0                                         |         
                                                                 |         if (r0 == 0) {
    0x0004179c beq.w 0x418e6                                     |             goto label_136;
                                                                 |         }
    0x000417a0 mov r6, r0                                        |         r6 = r0;
    0x000417a2 b 0x414a6                                         |         goto label_48;
                                                                 | label_90:
    0x000417a4 ldr r0, [pc, 0x1f0]                               |         
    0x000417a6 add r0, pc                                        |         r0 = 0x83142;
    0x000417a8 bl 0x409f4                                        |         fcn_000409f4 (r0);
    0x000417ac b 0x41158                                         |         goto label_26;
                                                                 | label_108:
    0x000417ae ldr r0, [pc, 0x1ec]                               |         
    0x000417b0 add r0, pc                                        |         r0 = 0x83152;
    0x000417b2 bl 0x409f4                                        |         fcn_000409f4 (r0);
    0x000417b6 b 0x41158                                         |         goto label_26;
                                                                 | label_98:
    0x000417b8 ldr r0, [pc, 0x1e4]                               |         
    0x000417ba add r0, pc                                        |         r0 = 0x8315e;
    0x000417bc bl 0x409f4                                        |         fcn_000409f4 (r0);
    0x000417c0 b 0x41158                                         |         goto label_26;
                                                                 | label_91:
    0x000417c2 ldr r0, [pc, 0x1e0]                               |         
    0x000417c4 add r0, pc                                        |         r0 = 0x8316e;
    0x000417c6 bl 0x409f4                                        |         fcn_000409f4 (r0);
    0x000417ca b 0x41158                                         |         goto label_26;
                                                                 | label_117:
    0x000417cc ldr r0, [pc, 0x1d8]                               |         
    0x000417ce add r0, pc                                        |         r0 = 0x8317a;
    0x000417d0 bl 0x409f4                                        |         fcn_000409f4 (r0);
    0x000417d4 b 0x41158                                         |         goto label_26;
                                                                 | label_109:
    0x000417d6 ldr r0, [pc, 0x1d4]                               |         
    0x000417d8 add r0, pc                                        |         r0 = 0x8318a;
    0x000417da bl 0x409f4                                        |         fcn_000409f4 (r0);
    0x000417de b 0x41158                                         |         goto label_26;
                                                                 | label_123:
    0x000417e0 ldr r0, [pc, 0x1cc]                               |         
    0x000417e2 add r0, pc                                        |         r0 = 0x83196;
    0x000417e4 bl 0x409f4                                        |         fcn_000409f4 (r0);
    0x000417e8 b 0x41158                                         |         goto label_26;
                                                                 | label_125:
    0x000417ea mov r4, sb                                        |         r4 = sb;
    0x000417ec b.w 0x40ece                                       |         goto label_29;
                                                                 | label_85:
    0x000417f0 cmp.w r5, 0x100000                                |         
                                                                 |         if (r5 > 0x100000) {
    0x000417f4 bgt 0x418dc                                       |             goto label_137;
                                                                 |         }
    0x000417f6 ldr r3, [pc, 0x160]                               |         
    0x000417f8 lsls r5, r5, 1                                    |         r5 <<= 1;
    0x000417fa mov r0, r6                                        |         r0 = r6;
    0x000417fc adds r1, r5, 1                                    |         r1 = r5 + 1;
    0x000417fe ldr r3, [r7, r3]                                  |         r3 = *((r7 + r3));
    0x00041800 ldr r3, [r3]                                      |         r3 = *(0x4195a);
    0x00041802 blx r3                                            |         r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
    0x00041804 cmp r0, 0                                         |         
                                                                 |         if (r0 == 0) {
    0x00041806 beq 0x418fa                                       |             goto label_138;
                                                                 |         }
    0x00041808 mov r6, r0                                        |         r6 = r0;
    0x0004180a b 0x41194                                         |         goto label_49;
                                                                 | label_118:
    0x0004180c ldr r0, [pc, 0x1a4]                               |         
    0x0004180e add r0, pc                                        |         r0 = 0x831c6;
    0x00041810 bl 0x409f4                                        |         fcn_000409f4 (r0);
    0x00041814 b 0x41158                                         |         goto label_26;
                                                                 |     }
    0x00041816 ldr r0, [pc, 0x1a0]                               |     
    0x00041818 add r0, pc                                        |     r0 = 0x831d6;
    0x0004181a bl 0x409f4                                        |     fcn_000409f4 (r0);
    0x0004181e b 0x41158                                         |     goto label_26;
                                                                 | label_126:
    0x00041820 cmp.w r5, 0x100000                                |     
                                                                 |     if (r5 > 0x100000) {
    0x00041824 bgt 0x418d2                                       |         goto label_139;
                                                                 |     }
    0x00041826 ldr r3, [pc, 0x130]                               |     
    0x00041828 lsls r5, r5, 1                                    |     r5 <<= 1;
    0x0004182a mov r0, r6                                        |     r0 = r6;
    0x0004182c adds r1, r5, 1                                    |     r1 = r5 + 1;
    0x0004182e ldr r3, [r7, r3]                                  |     r3 = *((r7 + r3));
    0x00041830 ldr r3, [r3]                                      |     r3 = *(0x4195a);
    0x00041832 blx r3                                            |     r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
    0x00041834 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00041836 beq 0x4191e                                       |         goto label_140;
                                                                 |     }
    0x00041838 mov r6, r0                                        |     r6 = r0;
    0x0004183a b 0x4165e                                         |     goto label_50;
                                                                 | label_92:
    0x0004183c ldr r0, [pc, 0x17c]                               |     
    0x0004183e add r0, pc                                        |     r0 = 0x831fe;
    0x00041840 bl 0x409f4                                        |     fcn_000409f4 (r0);
    0x00041844 b 0x41158                                         |     goto label_26;
                                                                 | label_120:
    0x00041846 ldr r0, [pc, 0x178]                               |     
    0x00041848 add r0, pc                                        |     r0 = 0x8320e;
    0x0004184a bl 0x409f4                                        |     fcn_000409f4 (r0);
    0x0004184e b 0x41158                                         |     goto label_26;
                                                                 | label_124:
    0x00041850 ldr r0, [pc, 0x170]                               |     
    0x00041852 add r0, pc                                        |     r0 = 0x8321a;
    0x00041854 bl 0x409f4                                        |     fcn_000409f4 (r0);
    0x00041858 b 0x41158                                         |     goto label_26;
                                                                 | label_110:
    0x0004185a ldr r0, [pc, 0x16c]                               |     
    0x0004185c add r0, pc                                        |     r0 = 0x8322a;
    0x0004185e bl 0x409f4                                        |     fcn_000409f4 (r0);
    0x00041862 b 0x41158                                         |     goto label_26;
                                                                 | label_119:
    0x00041864 ldr r0, [pc, 0x164]                               |     
    0x00041866 add r0, pc                                        |     r0 = 0x83236;
    0x00041868 bl 0x409f4                                        |     fcn_000409f4 (r0);
    0x0004186c b 0x41158                                         |     goto label_26;
                                                                 | label_132:
    0x0004186e ldr r0, [pc, 0x160]                               |     
    0x00041870 add r0, pc                                        |     r0 = 0x83246;
    0x00041872 bl 0x409f4                                        |     fcn_000409f4 (r0);
    0x00041876 b 0x41158                                         |     goto label_26;
                                                                 | label_111:
    0x00041878 ldr.w sl, [r8, 0x18]                              |     sl = *((r8 + 0x18));
    0x0004187c cmp.w sl, 0                                       |     
                                                                 |     if (sl == 0) {
    0x00041880 beq.w 0x41490                                     |         goto label_51;
                                                                 |     }
    0x00041884 ldrb.w r3, [sl]                                   |     r3 = *(sl);
    0x00041888 mov sb, r4                                        |     sb = r4;
    0x0004188a b 0x41372                                         |     goto label_36;
                                                                 | label_135:
    0x0004188c ldr r0, [pc, 0x144]                               |     
    0x0004188e add r0, pc                                        |     r0 = 0x83266;
    0x00041890 bl 0x409f4                                        |     fcn_000409f4 (r0);
    0x00041894 b 0x41158                                         |     goto label_26;
                                                                 | label_133:
    0x00041896 ldr r0, [pc, 0x140]                               |     
    0x00041898 add r0, pc                                        |     r0 = 0x83276;
    0x0004189a bl 0x409f4                                        |     fcn_000409f4 (r0);
    0x0004189e b 0x41158                                         |     goto label_26;
                                                                 | label_112:
    0x000418a0 cmp.w r5, 0x100000                                |     
                                                                 |     if (r5 <= 0x100000) {
    0x000418a4 bgt 0x41946                                       |         
    0x000418a6 ldr r3, [pc, 0xb0]                                |         
    0x000418a8 lsls r5, r5, 1                                    |         r5 <<= 1;
    0x000418aa mov r0, r6                                        |         r0 = r6;
    0x000418ac adds r1, r5, 1                                    |         r1 = r5 + 1;
    0x000418ae ldr r3, [r7, r3]                                  |         r3 = *((r7 + r3));
    0x000418b0 ldr r3, [r3]                                      |         r3 = *(0x4195a);
    0x000418b2 blx r3                                            |         r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
    0x000418b4 cmp r0, 0                                         |         
                                                                 |         if (r0 != 0) {
    0x000418b6 beq 0x4193c                                       |             
    0x000418b8 mov sb, r4                                        |             sb = r4;
    0x000418ba mov r6, r0                                        |             r6 = r0;
    0x000418bc b 0x41352                                         |             goto label_34;
                                                                 | label_100:
    0x000418be ldr r0, [pc, 0x11c]                               |             
    0x000418c0 add r0, pc                                        |             r0 = 0x832a2;
    0x000418c2 bl 0x409f4                                        |             fcn_000409f4 (r0);
    0x000418c6 b 0x41158                                         |             goto label_26;
                                                                 | label_101:
    0x000418c8 ldr r0, [pc, 0x114]                               |             
    0x000418ca add r0, pc                                        |             r0 = 0x832ae;
    0x000418cc bl 0x409f4                                        |             fcn_000409f4 (r0);
    0x000418d0 b 0x41158                                         |             goto label_26;
                                                                 | label_139:
    0x000418d2 ldr r0, [pc, 0x110]                               |             
    0x000418d4 add r0, pc                                        |             r0 = 0x832be;
    0x000418d6 bl 0x409f4                                        |             fcn_000409f4 (r0);
    0x000418da b 0x41158                                         |             goto label_26;
                                                                 | label_137:
    0x000418dc ldr r0, [pc, 0x108]                               |             
    0x000418de add r0, pc                                        |             r0 = 0x832ca;
    0x000418e0 bl 0x409f4                                        |             fcn_000409f4 (r0);
    0x000418e4 b 0x41158                                         |             goto label_26;
                                                                 | label_136:
    0x000418e6 ldr r0, [pc, 0x104]                               |             
    0x000418e8 add r0, pc                                        |             r0 = 0x832da;
    0x000418ea bl 0x409f4                                        |             fcn_000409f4 (r0);
    0x000418ee b 0x41158                                         |             goto label_26;
                                                                 | label_134:
    0x000418f0 ldr r0, [pc, 0xfc]                                |             
    0x000418f2 add r0, pc                                        |             r0 = 0x832e6;
    0x000418f4 bl 0x409f4                                        |             fcn_000409f4 (r0);
    0x000418f8 b 0x41158                                         |             goto label_26;
                                                                 | label_138:
    0x000418fa ldr r0, [pc, 0xf8]                                |             
    0x000418fc add r0, pc                                        |             r0 = 0x832f6;
    0x000418fe bl 0x409f4                                        |             fcn_000409f4 (r0);
    0x00041902 b 0x41158                                         |             goto label_26;
                                                                 | label_122:
    0x00041904 cmp.w r5, 0x100000                                |             
                                                                 |             if (r5 <= 0x100000) {
    0x00041908 bgt 0x41932                                       |                 
    0x0004190a ldr r3, [pc, 0x4c]                                |                 
    0x0004190c lsls r5, r5, 1                                    |                 r5 <<= 1;
    0x0004190e mov r0, r6                                        |                 r0 = r6;
    0x00041910 adds r1, r5, 1                                    |                 r1 = r5 + 1;
    0x00041912 ldr r3, [r7, r3]                                  |                 r3 = *((r7 + r3));
    0x00041914 ldr r3, [r3]                                      |                 r3 = *(0x4195a);
    0x00041916 blx r3                                            |                 r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
                                                                 |                 if (r0 != 0) {
    0x00041918 cbz r0, 0x41928                                   |                     
    0x0004191a mov r6, r0                                        |                     r6 = r0;
    0x0004191c b 0x41594                                         |                     goto label_52;
                                                                 | label_140:
    0x0004191e ldr r0, [pc, 0xd8]                                |                     
    0x00041920 add r0, pc                                        |                     r0 = 0x8331e;
    0x00041922 bl 0x409f4                                        |                     fcn_000409f4 (r0);
    0x00041926 b 0x41158                                         |                     goto label_26;
                                                                 |                 }
    0x00041928 ldr r0, [pc, 0xd0]                                |                 
    0x0004192a add r0, pc                                        |                 r0 = 0x8332a;
    0x0004192c bl 0x409f4                                        |                 fcn_000409f4 (r0);
    0x00041930 b 0x41158                                         |                 goto label_26;
                                                                 |             }
    0x00041932 ldr r0, [pc, 0xcc]                                |             
    0x00041934 add r0, pc                                        |             r0 = 0x8333a;
    0x00041936 bl 0x409f4                                        |             fcn_000409f4 (r0);
    0x0004193a b 0x41158                                         |             goto label_26;
                                                                 |         }
    0x0004193c ldr r0, [pc, 0xc4]                                |         
    0x0004193e add r0, pc                                        |         r0 = 0x83346;
    0x00041940 bl 0x409f4                                        |         fcn_000409f4 (r0);
    0x00041944 b 0x41158                                         |         goto label_26;
                                                                 |     }
    0x00041946 ldr r0, [pc, 0xc0]                                |     
    0x00041948 add r0, pc                                        |     r0 = 0x83356;
    0x0004194a bl 0x409f4                                        |     fcn_000409f4 (r0);
    0x0004194e b 0x41158                                         |     goto label_26;
                                                                 | }
    ; 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;
                                                             | }


r2dec has crashed (info: /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libxml2.so.2.9.13 @ 0x57b04).
Please report the bug at https://github.com/radareorg/r2dec-js/issues
Use the option '--issue' or the command 'pddi' to generate 
the needed data for the issue.
    ; 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 @ 0x56660 */
                                                         | #include <stdint.h>
                                                         |  
    ; (fcn) sym.xmlXPathNormalizeFunction ()             | void xmlXPathNormalizeFunction (uint32_t arg1, uint32_t arg2) {
                                                         |     int16_t var_3h;
                                                         |     int16_t var_4h;
                                                         |     r0 = arg1;
                                                         |     r1 = arg2;
    0x00056660 ldr r2, [pc, 0x1b0]                       |     
    0x00056662 ldr r3, [pc, 0x1b4]                       |     r3 = *(0x5681a);
    0x00056664 push.w {r4, r5, r6, r7, r8, sb, lr}       |     
    0x00056668 sub sp, 0xc                               |     
    0x0005666a add r2, pc                                |     r2 = 0xace82;
    0x0005666c ldr r3, [r2, r3]                          |     
    0x0005666e ldr r3, [r3]                              |     r3 = *(0xace82);
    0x00056670 str r3, [sp, 4]                           |     var_4h = r3;
    0x00056672 mov.w r3, 0                               |     r3 = 0;
    0x00056676 cmp r0, 0                                 |     
                                                         |     if (r0 == 0) {
    0x00056678 beq.w 0x567d2                             |         goto label_3;
                                                         |     }
    0x0005667c mov r4, r0                                |     r4 = r0;
                                                         |     if (r1 != 0) {
    0x0005667e cbz r1, 0x566a8                           |         
    0x00056680 cmp r1, 1                                 |         
                                                         |         if (r1 == 1) {
    0x00056682 beq 0x566c6                               |             goto label_4;
                                                         |         }
    0x00056684 ldr r2, [pc, 0x194]                       |         
    0x00056686 ldr r3, [pc, 0x190]                       |         r3 = *(0x5681a);
    0x00056688 add r2, pc                                |         r2 = 0xacea8;
    0x0005668a ldr r3, [r2, r3]                          |         r3 = *(0xacea8);
    0x0005668c ldr r2, [r3]                              |         r2 = *(0xacea8);
    0x0005668e ldr r3, [sp, 4]                           |         r3 = var_4h;
    0x00056690 eors r2, r3                               |         r2 ^= r3;
    0x00056692 mov.w r3, 0                               |         r3 = 0;
    0x00056696 it eq                                     |         
                                                         |         if (r2 != r3) {
    0x00056698 moveq r1, 0xc                             |             r1 = 0xc;
                                                         |         }
                                                         |         if (r2 != r3) {
    0x0005669a bne.w 0x56804                             |             goto label_5;
                                                         |         }
    0x0005669e add sp, 0xc                               |         
    0x000566a0 pop.w {r4, r5, r6, r7, r8, sb, lr}        |         
    0x000566a4 b.w 0x52f88                               |         void (*0x52f88)() ();
                                                         |     }
    0x000566a8 ldr r5, [r0, 0xc]                         |     r5 = *((r0 + 0xc));
    0x000566aa ldr r0, [r5, 4]                           |     r0 = *((r5 + 4));
    0x000566ac bl 0x376f8                                |     r0 = xmlNodeGetContent ();
    0x000566b0 mov r1, r0                                |     r1 = r0;
    0x000566b2 cmp r0, 0                                 |     
                                                         |     if (r0 == 0) {
    0x000566b4 beq.w 0x56808                             |         goto label_6;
                                                         |     }
                                                         | label_2:
    0x000566b8 mov r0, r5                                |     r0 = r5;
    0x000566ba bl 0x55250                                |     r0 = fcn_00055250 (r0, r1);
    0x000566be mov r1, r0                                |     r1 = r0;
    0x000566c0 mov r0, r4                                |     r0 = r4;
    0x000566c2 bl 0x536c8                                |     valuePush ();
                                                         | label_4:
    0x000566c6 ldr r2, [r4, 0x2c]                        |     r2 = *((r4 + 0x2c));
    0x000566c8 ldr r3, [r4, 0x14]                        |     r3 = *((r4 + 0x14));
    0x000566ca cmp r2, r3                                |     
                                                         |     if (r2 >= r3) {
    0x000566cc bge.w 0x567ec                             |         goto label_7;
                                                         |     }
    0x000566d0 ldr r3, [r4, 0x10]                        |     r3 = *((r4 + 0x10));
    0x000566d2 cmp r3, 0                                 |     
                                                         |     if (r3 == 0) {
    0x000566d4 beq 0x56788                               |         goto label_8;
                                                         |     }
    0x000566d6 ldr r3, [r3]                              |     r3 = *(r3);
    0x000566d8 cmp r3, 4                                 |     
                                                         |     if (r3 != 4) {
    0x000566da bne 0x56776                               |         goto label_9;
                                                         |     }
                                                         | label_1:
    0x000566dc mov r0, r4                                |     r0 = r4;
    0x000566de bl 0x53684                                |     valuePop ();
    0x000566e2 ldr r5, [r0, 0x18]                        |     r5 = *((r0 + 0x18));
    0x000566e4 mov r6, r0                                |     r6 = r0;
    0x000566e6 blx 0x1b870                               |     r0 = fcn_0001b870 ();
    0x000566ea mov r7, r0                                |     r7 = r0;
    0x000566ec cmp r0, 0                                 |     
    0x000566ee it ne                                     |     
                                                         |     if (r0 != 0) {
    0x000566f0 cmpne r5, 0                               |         __asm ("cmpne r5, 0");
                                                         |     }
                                                         |     if (r0 == 0) {
    0x000566f2 beq 0x567ca                               |         goto label_10;
                                                         |     }
    0x000566f4 ldrb r3, [r5]                             |     r3 = *(r5);
    0x000566f6 b 0x566fc                                 |     
                                                         |     while (r2 != 0) {
    0x000566f8 ldrb r3, [r5, 1]!                         |         r3 = *((r5 += 1));
    0x000566fc cmp r3, 0x20                              |         
    0x000566fe it ne                                     |         
                                                         |         if (r3 != 0x20) {
    0x00056700 cmpne r3, 0xd                             |             __asm ("cmpne r3, 0xd");
                                                         |         }
    0x00056702 sub.w r3, r3, 9                           |         r3 -= 9;
    0x00056706 ite eq                                    |         
                                                         |         if (r3 != 0x20) {
    0x00056708 moveq r2, 1                               |             r2 = 1;
                                                         |         }
                                                         |         if (r3 == 0x20) {
    0x0005670a movne r2, 0                               |             r2 = 0;
                                                         |         }
    0x0005670c cmp r3, 1                                 |         
    0x0005670e it ls                                     |         
                                                         |         if (r3 > 1) {
    0x00056710 orrls r2, r2, 1                           |             r2 |= 1;
                                                         |         }
    0x00056714 cmp r2, 0                                 |         
    0x00056716 bne 0x566f8                               |         
                                                         |     }
    0x00056718 movs r3, 0                                |     r3 = 0;
    0x0005671a strb.w r3, [sp, 3]                        |     var_3h = r3;
    0x0005671e ldrb r3, [r5]                             |     r3 = *(r5);
    0x00056720 cmp r3, 0                                 |     
                                                         |     if (r3 == 0) {
    0x00056722 beq 0x567ac                               |         goto label_11;
                                                         |     }
    0x00056724 mov.w sb, 0x13                            |     sb = 0x13;
    0x00056728 add.w r8, sp, 3                           |     r8 += var_3h;
    0x0005672c movt sb, 0x80                             |     sb = (sb & 0xFFFF) | 0x800000;
    0x00056730 b 0x56744                                 |     goto label_12;
                                                         | label_0:
    0x00056732 movs r2, 1                                |     r2 = 1;
    0x00056734 mov r1, r5                                |     r1 = r5;
    0x00056736 mov r0, r7                                |     r0 = r7;
    0x00056738 blx 0x1b9dc                               |     fcn_0001b9dc ();
                                                         |     do {
    0x0005673c ldrb r3, [r5, 1]!                         |         r3 = *((r5 += 1));
    0x00056740 cmp r3, 0                                 |         
                                                         |         if (r3 == 0) {
    0x00056742 beq 0x567ac                               |             goto label_11;
                                                         |         }
                                                         | label_12:
    0x00056744 subs r3, 9                                |         r3 -= 9;
    0x00056746 uxtb r3, r3                               |         r3 = (int8_t) r3;
    0x00056748 cmp r3, 0x17                              |         
                                                         |         if (r3 > 0x17) {
    0x0005674a bhi 0x5675c                               |             goto label_13;
                                                         |         }
    0x0005674c lsr.w r3, sb, r3                          |         r3 = sb >> r3;
    0x00056750 lsls r3, r3, 0x1f                         |         r3 <<= 0x1f;
    0x00056752 itt mi                                    |         
                                                         |         if (r3 >= r3) {
    0x00056754 movmi r3, 0x20                            |             r3 = 0x20;
                                                         |         }
                                                         |         if (r3 >= r3) {
    0x00056756 strbmi r3, [sp, 3]                        |             var_3h = r3;
                                                         |         }
    0x0005675a bmi 0x5673c                               |         
                                                         |     } while (r3 < r3);
                                                         | label_13:
    0x0005675c ldrb.w r3, [sp, 3]                        |     r3 = var_3h;
    0x00056760 cmp r3, 0                                 |     
                                                         |     if (r3 == 0) {
    0x00056762 beq 0x56732                               |         goto label_0;
                                                         |     }
    0x00056764 movs r2, 1                                |     r2 = 1;
    0x00056766 mov r1, r8                                |     r1 = r8;
    0x00056768 mov r0, r7                                |     r0 = r7;
    0x0005676a blx 0x1b9dc                               |     fcn_0001b9dc ();
    0x0005676e movs r3, 0                                |     r3 = 0;
    0x00056770 strb.w r3, [sp, 3]                        |     var_3h = r3;
    0x00056774 b 0x56732                                 |     goto label_0;
                                                         | label_9:
    0x00056776 movs r1, 1                                |     r1 = 1;
    0x00056778 mov r0, r4                                |     r0 = r4;
    0x0005677a bl 0x56118                                |     xmlXPathStringFunction ();
    0x0005677e ldr r3, [r4, 0x10]                        |     r3 = *((r4 + 0x10));
                                                         |     if (r3 == 0) {
    0x00056780 cbz r3, 0x56788                           |         goto label_8;
                                                         |     }
    0x00056782 ldr r3, [r3]                              |     r3 = *(r3);
    0x00056784 cmp r3, 4                                 |     
                                                         |     if (r3 == 4) {
    0x00056786 beq 0x566dc                               |         goto label_1;
                                                         |     }
                                                         | label_8:
    0x00056788 ldr r2, [pc, 0x94]                        |     
    0x0005678a ldr r3, [pc, 0x8c]                        |     r3 = *(0x5681a);
    0x0005678c add r2, pc                                |     r2 = 0xacfb0;
    0x0005678e ldr r3, [r2, r3]                          |     r3 = *(0xacfb0);
    0x00056790 ldr r2, [r3]                              |     r2 = *(0xacfb0);
    0x00056792 ldr r3, [sp, 4]                           |     r3 = var_4h;
    0x00056794 eors r2, r3                               |     r2 ^= r3;
    0x00056796 mov.w r3, 0                               |     r3 = 0;
    0x0005679a it eq                                     |     
                                                         |     if (r2 != r3) {
    0x0005679c moveq r1, 0xb                             |         r1 = 0xb;
                                                         |     }
                                                         |     if (r2 != r3) {
    0x0005679e bne 0x56804                               |         goto label_5;
                                                         |     }
                                                         |     do {
    0x000567a0 mov r0, r4                                |         r0 = r4;
    0x000567a2 add sp, 0xc                               |         
    0x000567a4 pop.w {r4, r5, r6, r7, r8, sb, lr}        |         
    0x000567a8 b.w 0x52f88                               |         void (*0x52f88)() ();
                                                         | label_11:
    0x000567ac ldr r5, [r4, 0xc]                         |         r5 = *((r4 + 0xc));
    0x000567ae mov r0, r7                                |         r0 = r7;
    0x000567b0 bl 0x6cccc                                |         r0 = xmlBufContent ();
    0x000567b4 mov r1, r0                                |         r1 = r0;
    0x000567b6 mov r0, r5                                |         r0 = r5;
    0x000567b8 bl 0x551a4                                |         r0 = fcn_000551a4 (r0, r1);
    0x000567bc mov r1, r0                                |         r1 = r0;
    0x000567be mov r0, r4                                |         r0 = r4;
    0x000567c0 bl 0x536c8                                |         valuePush ();
    0x000567c4 mov r0, r7                                |         r0 = r7;
    0x000567c6 blx 0x1bc84                               |         fcn_0001bc84 ();
                                                         | label_10:
    0x000567ca ldr r0, [r4, 0xc]                         |         r0 = *((r4 + 0xc));
    0x000567cc mov r1, r6                                |         r1 = r6;
    0x000567ce bl 0x55670                                |         fcn_00055670 (r0, r1);
                                                         | label_3:
    0x000567d2 ldr r2, [pc, 0x50]                        |         
    0x000567d4 ldr r3, [pc, 0x40]                        |         r3 = *(0x56818);
    0x000567d6 add r2, pc                                |         r2 = 0xad000;
    0x000567d8 ldr r3, [r2, r3]                          |         r3 = *(0xad000);
    0x000567da ldr r2, [r3]                              |         r2 = *(0xad000);
    0x000567dc ldr r3, [sp, 4]                           |         r3 = var_4h;
    0x000567de eors r2, r3                               |         r2 ^= r3;
    0x000567e0 mov.w r3, 0                               |         r3 = 0;
                                                         |         if (r2 != r3) {
    0x000567e4 bne 0x56804                               |             goto label_5;
                                                         |         }
    0x000567e6 add sp, 0xc                               |         
    0x000567e8 pop.w {r4, r5, r6, r7, r8, sb, pc}        |         
                                                         | label_7:
    0x000567ec ldr r2, [pc, 0x38]                        |         
    0x000567ee ldr r3, [pc, 0x28]                        |         r3 = *(0x5681a);
    0x000567f0 add r2, pc                                |         r2 = 0xad01c;
    0x000567f2 ldr r3, [r2, r3]                          |         r3 = *(0xad01c);
    0x000567f4 ldr r2, [r3]                              |         r2 = *(0xad01c);
    0x000567f6 ldr r3, [sp, 4]                           |         r3 = var_4h;
    0x000567f8 eors r2, r3                               |         r2 ^= r3;
    0x000567fa mov.w r3, 0                               |         r3 = 0;
    0x000567fc lsls r0, r0, 0xc                          |         r0 <<= 0xc;
    0x000567fe it eq                                     |         
                                                         |         if (r0 != r0) {
    0x00056800 moveq r1, 0x17                            |             r1 = 0x17;
                                                         |         }
    0x00056802 beq 0x567a0                               |         
                                                         |     } while (r0 == r0);
                                                         | label_5:
    0x00056804 blx 0x1bb70                               |     fputc (r0, r1);
                                                         | label_6:
    0x00056808 ldr r0, [pc, 0x20]                        |     
    0x0005680a add r0, pc                                |     r0 = 0xad03a;
    0x0005680c bl 0x6bca8                                |     r0 = xmlStrdup ();
    0x00056810 mov r1, r0                                |     r1 = r0;
    0x00056812 b 0x566b8                                 |     goto label_2;
                                                         | }

[*] Function sprintf used 1 times libxml2.so.2.9.13