[*] Binary protection state of libsyslog-ng-3.31.so.0.0.0

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


[*] Function sprintf tear down of libsyslog-ng-3.31.so.0.0.0

    ; assembly                                   | /* r2dec pseudo code output */
                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsyslog-ng-3.31.so.0.0.0 @ 0x32c60 */
                                                 | #include <stdint.h>
                                                 |  
    ; (fcn) fcn.00032c60 ()                      | void fcn_00032c60 (int16_t arg1, int16_t arg2, uint32_t arg3) {
                                                 |     int16_t var_4h;
                                                 |     int16_t var_8h;
                                                 |     int16_t var_ch;
                                                 |     r0 = arg1;
                                                 |     r1 = arg2;
                                                 |     r2 = arg3;
    0x00032c60 push {r4, r5, r6, r7, lr}         |     
    0x00032c62 sub sp, 0x14                      |     
    0x00032c64 ldr r5, [pc, 0x138]               |     
    0x00032c66 ldr r4, [pc, 0x13c]               |     r4 = *(0x32da6);
    0x00032c68 add r5, pc                        |     r5 = 0x65a0c;
    0x00032c6a ldr r6, [pc, 0x13c]               |     
    0x00032c6c ldr r3, [pc, 0x13c]               |     r3 = *(0x32dac);
    0x00032c6e ldr r4, [r5, r4]                  |     
    0x00032c70 add r6, pc                        |     r6 = 0x65a1e;
    0x00032c72 ldr r4, [r4]                      |     r4 = *(0x65a0c);
    0x00032c74 str r4, [sp, 0xc]                 |     var_ch = r4;
    0x00032c76 mov.w r4, 0                       |     r4 = 0;
    0x00032c7a mov r4, r0                        |     r4 = r0;
    0x00032c7c ldr r3, [r6, r3]                  |     
    0x00032c7e mov r0, r1                        |     r0 = r1;
    0x00032c80 ldr r3, [r3]                      |     
    0x00032c82 ldr r3, [r3, 4]                   |     
    0x00032c84 ldr r3, [r3]                      |     r3 = *(0x65a22);
    0x00032c86 add.w r3, r3, r2, lsl 3           |     r3 += (r2 << 3);
    0x00032c8a ldrh r1, [r3, -0x4]               |     r1 = *((r3 - 0x4));
    0x00032c8e ands r3, r1, 4                    |     r3 = r1 & 4;
                                                 |     if (r3 != r1) {
    0x00032c92 bne 0x32cf8                       |         goto label_7;
                                                 |     }
    0x00032c94 ldr r5, [r0, 0x58]                |     r5 = *((r0 + 0x58));
    0x00032c96 ldrb r1, [r5, 0xa]                |     r1 = *((r5 + 0xa));
    0x00032c98 cmp r2, r1                        |     
                                                 |     if (r2 > r1) {
    0x00032c9a bhi 0x32d5e                       |         goto label_8;
                                                 |     }
    0x00032c9c add.w r2, r5, r2, lsl 2           |     r2 = r5 + (r2 << 2);
    0x00032ca0 ldr r2, [r2, 8]                   |     r2 = *((r2 + 8));
    0x00032ca2 str r3, [sp, 8]                   |     var_8h = r3;
    0x00032ca4 cmp r2, 0                         |     
                                                 |     if (r2 != 0) {
    0x00032ca6 bne 0x32d34                       |         goto label_9;
                                                 |     }
                                                 | label_2:
    0x00032ca8 movs r3, 0                        |     r3 = 0;
    0x00032caa str r3, [sp, 8]                   |     var_8h = r3;
                                                 |     do {
    0x00032cac ldrd r3, r1, [r4, 4]              |         __asm ("ldrd r3, r1, [r4, 4]");
    0x00032cb0 adds r2, r3, 1                    |         r2 = r3 + 1;
    0x00032cb2 cmp r2, r1                        |         
                                                 |         if (r2 >= r1) {
    0x00032cb4 bhs 0x32d82                       |             goto label_10;
                                                 |         }
    0x00032cb6 ldr r1, [r4]                      |         r1 = *(r4);
    0x00032cb8 movs r0, 0x2d                     |         r0 = 0x2d;
    0x00032cba str r2, [r4, 4]                   |         *((r4 + 4)) = r2;
    0x00032cbc strb r0, [r1, r3]                 |         *((r1 + r3)) = r0;
    0x00032cbe movs r1, 0                        |         r1 = 0;
    0x00032cc0 ldrd r2, r3, [r4]                 |         __asm ("ldrd r2, r3, [r4]");
    0x00032cc4 strb r1, [r2, r3]                 |         *((r2 + r3)) = r1;
                                                 | label_4:
    0x00032cc6 ldrd r3, r1, [r4, 4]              |         __asm ("ldrd r3, r1, [r4, 4]");
    0x00032cca adds r2, r3, 1                    |         r2 = r3 + 1;
    0x00032ccc cmp r2, r1                        |         
                                                 |         if (r2 >= r1) {
    0x00032cce bhs 0x32d26                       |             goto label_11;
                                                 |         }
                                                 | label_0:
    0x00032cd0 ldr r1, [r4]                      |         r1 = *(r4);
    0x00032cd2 movs r0, 0x20                     |         r0 = 0x20;
    0x00032cd4 str r2, [r4, 4]                   |         *((r4 + 4)) = r2;
    0x00032cd6 strb r0, [r1, r3]                 |         *((r1 + r3)) = r0;
    0x00032cd8 movs r1, 0                        |         r1 = 0;
    0x00032cda ldrd r2, r3, [r4]                 |         __asm ("ldrd r2, r3, [r4]");
    0x00032cde strb r1, [r2, r3]                 |         *((r2 + r3)) = r1;
                                                 | label_1:
    0x00032ce0 ldr r2, [pc, 0xcc]                |         
    0x00032ce2 ldr r3, [pc, 0xc0]                |         r3 = *(0x32da6);
    0x00032ce4 add r2, pc                        |         r2 = 0x65a98;
    0x00032ce6 ldr r3, [r2, r3]                  |         r3 = *(0x65a98);
    0x00032ce8 ldr r2, [r3]                      |         r2 = *(0x65a98);
    0x00032cea ldr r3, [sp, 0xc]                 |         r3 = var_ch;
    0x00032cec eors r2, r3                       |         r2 ^= r3;
    0x00032cee mov.w r3, 0                       |         r3 = 0;
                                                 |         if (r2 != r3) {
    0x00032cf2 bne 0x32d9a                       |             goto label_12;
                                                 |         }
    0x00032cf4 add sp, 0x14                      |         
    0x00032cf6 pop {r4, r5, r6, r7, pc}          |         
                                                 | label_7:
    0x00032cf8 lsrs r1, r1, 8                    |         r1 >>= 8;
    0x00032cfa add r2, sp, 8                     |         r2 += var_8h;
    0x00032cfc blx 0x21064                       |         fcn_00021064 ();
    0x00032d00 ldr r7, [sp, 8]                   |         r7 = var_8h;
    0x00032d02 mov r5, r0                        |         r5 = r0;
                                                 | label_3:
    0x00032d04 cmp r7, 0                         |         
    0x00032d06 beq 0x32cac                       |         
                                                 |     } while (r7 == 0);
    0x00032d08 movs r1, 0x20                     |     r1 = 0x20;
    0x00032d0a mov r0, r5                        |     r0 = r5;
    0x00032d0c blx 0x23d20                       |     r0 = fcn_00023d20 ();
                                                 |     if (r0 == 0) {
    0x00032d10 cbz r0, 0x32d52                   |         goto label_13;
                                                 |     }
    0x00032d12 subs r2, r0, r5                   |     r2 = r0 - r5;
    0x00032d14 mov r1, r5                        |     r1 = r5;
    0x00032d16 mov r0, r4                        |     r0 = r4;
    0x00032d18 blx 0x1ffec                       |     fcn_0001ffec ();
    0x00032d1c ldrd r3, r1, [r4, 4]              |     __asm ("ldrd r3, r1, [r4, 4]");
    0x00032d20 adds r2, r3, 1                    |     r2 = r3 + 1;
    0x00032d22 cmp r2, r1                        |     
                                                 |     if (r2 <= r1) {
    0x00032d24 blo 0x32cd0                       |         goto label_0;
                                                 |     }
                                                 | label_11:
    0x00032d26 movs r2, 0x20                     |     r2 = 0x20;
    0x00032d28 mov.w r1, -1                      |     r1 = -1;
                                                 | label_6:
    0x00032d2c mov r0, r4                        |     r0 = r4;
    0x00032d2e blx 0x21254                       |     g_sprintf ()
    0x00032d32 b 0x32ce0                         |     goto label_1;
                                                 | label_9:
    0x00032d34 ldr r1, [r5]                      |     r1 = *(r5);
    0x00032d36 subs r1, r1, r2                   |     r1 -= r2;
    0x00032d38 add r1, r5                        |     r1 += r5;
                                                 | label_5:
    0x00032d3a ldrb r3, [r1]                     |     r3 = *(r1);
    0x00032d3c lsls r2, r3, 0x1d                 |     r2 = r3 << 0x1d;
                                                 |     if (r2 < r3) {
    0x00032d3e bmi 0x32ca8                       |         goto label_2;
                                                 |     }
    0x00032d40 lsls r3, r3, 0x1f                 |     r3 <<= 0x1f;
                                                 |     if (r3 < r3) {
    0x00032d42 bmi 0x32d72                       |         goto label_14;
                                                 |     }
    0x00032d44 ldr r7, [r1, 8]                   |     r7 = *((r1 + 8));
    0x00032d46 str r7, [sp, 8]                   |     var_8h = r7;
    0x00032d48 ldrb r3, [r1, 1]                  |     r3 = *((r1 + 1));
    0x00032d4a add r1, r3                        |     r1 += r3;
    0x00032d4c add.w r5, r1, 0xd                 |     r5 = r1 + 0xd;
    0x00032d50 b 0x32d04                         |     goto label_3;
                                                 | label_13:
    0x00032d52 mov r2, r7                        |     r2 = r7;
    0x00032d54 mov r1, r5                        |     r1 = r5;
    0x00032d56 mov r0, r4                        |     r0 = r4;
    0x00032d58 blx 0x1ffec                       |     fcn_0001ffec ();
    0x00032d5c b 0x32cc6                         |     goto label_4;
                                                 | label_8:
    0x00032d5e mov r1, r2                        |     r1 = r2;
    0x00032d60 add r3, sp, 8                     |     r3 += var_8h;
    0x00032d62 add r2, sp, 4                     |     r2 += var_4h;
    0x00032d64 mov r0, r5                        |     r0 = r5;
    0x00032d66 blx 0x22660                       |     r0 = fcn_00022660 ();
    0x00032d6a mov r1, r0                        |     r1 = r0;
    0x00032d6c cmp r0, 0                         |     
                                                 |     if (r0 != 0) {
    0x00032d6e bne 0x32d3a                       |         goto label_5;
                                                 |     }
    0x00032d70 b 0x32ca8                         |     goto label_2;
                                                 | label_14:
    0x00032d72 mov r0, r5                        |     r0 = r5;
    0x00032d74 add r2, sp, 8                     |     r2 += var_8h;
    0x00032d76 blx 0x210b8                       |     r0 = fcn_000210b8 ();
    0x00032d7a mov r5, r0                        |     r5 = r0;
                                                 |     if (r0 != 0) {
    0x00032d7c cbz r0, 0x32d90                   |         
    0x00032d7e ldr r7, [sp, 8]                   |         r7 = var_8h;
    0x00032d80 b 0x32d04                         |         goto label_3;
                                                 | label_10:
    0x00032d82 movs r2, 0x2d                     |         r2 = 0x2d;
    0x00032d84 mov.w r1, -1                      |         r1 = -1;
    0x00032d88 mov r0, r4                        |         r0 = r4;
    0x00032d8a blx 0x21254                       |         g_sprintf ()
    0x00032d8e b 0x32cc6                         |         goto label_4;
                                                 |     }
    0x00032d90 ldr r3, [pc, 0x20]                |     r3 = *(0x32db4);
    0x00032d92 ldr r7, [sp, 8]                   |     r7 = var_8h;
    0x00032d94 ldr r3, [r6, r3]                  |     r3 = *((r6 + r3));
    0x00032d96 ldr r5, [r3]                      |     r5 = *(0x32db4);
    0x00032d98 b 0x32d04                         |     goto label_3;
                                                 | label_12:
    0x00032d9a blx 0x21bd4                       |     fcn_00021bd4 ();
    0x00032d9e nop                               |     
    0x00032da0 b 0x32d2c                         |     goto label_6;
                                                 | }
    ; assembly                                       | /* r2dec pseudo code output */
                                                     | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsyslog-ng-3.31.so.0.0.0 @ 0x3dfc8 */
                                                     | #include <stdint.h>
                                                     |  
    ; (fcn) fcn.0003dfc8 ()                          | void fcn_0003dfc8 (int16_t arg_20h, int16_t arg_24h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
                                                     |     int16_t var_4h;
                                                     |     r0 = arg1;
                                                     |     r1 = arg2;
                                                     |     r2 = arg3;
                                                     |     r3 = arg4;
    0x0003dfc8 push.w {r4, r5, r6, r7, r8, lr}       |     
    0x0003dfcc mov r5, r1                            |     r5 = r1;
    0x0003dfce ldr r4, [r5]                          |     r4 = *(r5);
    0x0003dfd0 sub sp, 8                             |     
    0x0003dfd2 mov r1, r2                            |     r1 = r2;
    0x0003dfd4 mov r8, r0                            |     r8 = r0;
    0x0003dfd6 ldr r7, [pc, 0x128]                   |     
    0x0003dfd8 mov r6, r3                            |     r6 = r3;
    0x0003dfda mov r0, r4                            |     r0 = r4;
    0x0003dfdc blx 0x1fea0                           |     r0 = fcn_0001fea0 ();
    0x0003dfe0 adds r3, r0, 3                        |     r3 = r0 + 3;
    0x0003dfe2 add r7, pc                            |     r7 = 0x7c0e8;
                                                     |     if (r3 >= r0) {
    0x0003dfe4 bls 0x3dffc                           |         
    0x0003dfe6 ldrb r2, [r4]                         |         r2 = *(r4);
    0x0003dfe8 mov r0, r8                            |         r0 = r8;
    0x0003dfea ldr r1, [sp, 0x24]                    |         r1 = *(arg_24h);
    0x0003dfec blx 0x23a20                           |         BIO_s_mem ();
    0x0003dff0 ldr r4, [r5]                          |         r4 = *(r5);
    0x0003dff2 adds r4, 1                            |         r4++;
    0x0003dff4 str r4, [r5]                          |         *(r5) = r4;
    0x0003dff6 add sp, 8                             |         
    0x0003dff8 pop.w {r4, r5, r6, r7, r8, pc}        |         
                                                     |     }
    0x0003dffc cmp r0, 0x5c                          |     
    0x0003dffe it ne                                 |     
                                                     |     if (r0 != 0x5c) {
    0x0003e000 cmpne r0, 0x1f                        |         __asm ("cmpne r0, 0x1f");
                                                     |     }
    0x0003e002 mov r2, r0                            |     r2 = r0;
                                                     |     if (r0 <= 0x5c) {
    0x0003e004 bhi 0x3e020                           |         
    0x0003e006 cmp r0, 0xd                           |         
                                                     |         if (r0 > 0xd) {
    0x0003e008 bhi 0x3e09c                           |             goto label_2;
                                                     |         }
    0x0003e00a cmp r0, 7                             |         
                                                     |         if (r0 < 7) {
    0x0003e00c bls 0x3e0f4                           |             goto label_3;
                                                     |         }
    0x0003e00e sub.w r3, r0, 8                       |         r3 = r0 - 8;
    0x0003e012 cmp r3, 5                             |         
                                                     |         if (r3 > 5) {
    0x0003e014 bhi 0x3e0f4                           |             goto label_3;
                                                     |         }
                                                     |         /* switch table (6 cases) at 0x3e01a */
    0x0003e016 tbb [pc, r3]                          |         __asm ("tbb case.0x5984c.0");
                                                     |     }
    0x0003e020 clz r1, r6                            |     r1 &= r6;
    0x0003e024 lsrs r1, r1, 5                        |     r1 >>= 5;
    0x0003e026 cmp r0, 0xff                          |     
    0x0003e028 it hi                                 |     
                                                     |     if (r0 <= 0xff) {
    0x0003e02a orrhi r1, r1, 1                       |         r1 |= 1;
                                                     |     }
    0x0003e02e cbz r1, 0x3e054                       |     
                                                     |     while (r3 == 0) {
                                                     | label_0:
    0x0003e030 cmp r2, 0x7f                          |         
                                                     |         if (r2 > 0x7f) {
    0x0003e032 bhi 0x3e080                           |             goto label_4;
                                                     |         }
    0x0003e034 ldrd r3, r0, [r8, 4]                  |         __asm ("ldrd r3, r0, [r8, 4]");
    0x0003e038 uxtb r2, r2                           |         r2 = (int8_t) r2;
    0x0003e03a adds r1, r3, 1                        |         r1 = r3 + 1;
    0x0003e03c cmp r1, r0                            |         
                                                     |         if (r1 >= r0) {
    0x0003e03e bhs 0x3e0ac                           |             goto label_5;
                                                     |         }
    0x0003e040 str.w r1, [r8, 4]                     |         __asm ("str.w r1, [r8, 4]");
    0x0003e044 ldr.w r1, [r8]                        |         r1 = *(r8);
    0x0003e048 strb r2, [r1, r3]                     |         *((r1 + r3)) = r2;
    0x0003e04a movs r1, 0                            |         r1 = 0;
    0x0003e04c ldrd r2, r3, [r8]                     |         __asm ("ldrd r2, r3, [r8]");
    0x0003e050 strb r1, [r2, r3]                     |         *((r2 + r3)) = r1;
    0x0003e052 b 0x3e088                             |         goto label_1;
    0x0003e054 ldrb r3, [r6]                         |         r3 = *(r6);
    0x0003e056 cmp r0, r3                            |         
                                                     |         if (r0 == r3) {
    0x0003e058 beq 0x3e074                           |             goto label_6;
                                                     |         }
    0x0003e05a cmp r3, 0                             |         
    0x0003e05c beq 0x3e030                           |         
                                                     |     }
    0x0003e05e ldrb r3, [r6, 1]                      |     r3 = *((r6 + 1));
    0x0003e060 cmp r3, 0                             |     
                                                     |     if (r3 == 0) {
    0x0003e062 beq 0x3e030                           |         goto label_0;
                                                     |     }
    0x0003e064 mov r1, r2                            |     r1 = r2;
    0x0003e066 adds r0, r6, 1                        |     r0 = r6 + 1;
    0x0003e068 str r2, [sp, 4]                       |     var_4h = r2;
    0x0003e06a blx 0x23d20                           |     fcn_00023d20 ();
    0x0003e06e ldr r2, [sp, 4]                       |     r2 = var_4h;
    0x0003e070 cmp r0, 0                             |     
                                                     |     if (r0 == 0) {
    0x0003e072 beq 0x3e030                           |         goto label_0;
                                                     |     }
                                                     | label_6:
    0x0003e074 ldr r1, [pc, 0x8c]                    |     
    0x0003e076 mov r0, r8                            |     r0 = r8;
    0x0003e078 add r1, pc                            |     r1 = 0x7c180;
    0x0003e07a blx 0x23a20                           |     BIO_s_mem ();
    0x0003e07e b 0x3e088                             |     goto label_1;
                                                     | label_4:
    0x0003e080 mov r1, r2                            |     r1 = r2;
    0x0003e082 mov r0, r8                            |     r0 = r8;
    0x0003e084 blx 0x20374                           |     fcn_00020374 ();
                                                     |     do {
                                                     | label_1:
    0x0003e088 ldr r3, [pc, 0x7c]                    |         
    0x0003e08a ldrb r2, [r4]                         |         r2 = *(r4);
    0x0003e08c ldr r3, [r7, r3]                      |         r3 = *((r7 + r3));
    0x0003e08e ldr r3, [r3]                          |         r3 = *(0x3e108);
    0x0003e090 ldrb r3, [r3, r2]                     |         r3 = *((r3 + r2));
    0x0003e092 add r4, r3                            |         r4 += r3;
    0x0003e094 str r4, [r5]                          |         *(r5) = r4;
    0x0003e096 add sp, 8                             |         
    0x0003e098 pop.w {r4, r5, r6, r7, r8, pc}        |         
                                                     | label_2:
    0x0003e09c cmp r0, 0x5c                          |         
                                                     |         if (r0 != 0x5c) {
    0x0003e09e bne 0x3e0f4                           |             goto label_3;
                                                     |         }
    0x0003e0a0 ldr r1, [pc, 0x68]                    |         
    0x0003e0a2 mov r0, r8                            |         r0 = r8;
    0x0003e0a4 add r1, pc                            |         r1 = 0x7c1b4;
    0x0003e0a6 blx 0x23764                           |         fcn_00023764 ();
    0x0003e0aa b 0x3e088                             |         
                                                     |     } while (1);
                                                     | label_5:
    0x0003e0ac mov r0, r8                            |     r0 = r8;
    0x0003e0ae mov.w r1, -1                          |     r1 = -1;
    0x0003e0b2 blx 0x21254                           |     g_sprintf ()
    0x0003e0b6 b 0x3e088                             |     goto label_1;
    0x0003e0b8 ldr r1, [pc, 0x54]                    |     
    0x0003e0ba mov r0, r8                            |     r0 = r8;
    0x0003e0bc add r1, pc                            |     r1 = 0x7c1d0;
    0x0003e0be blx 0x23764                           |     fcn_00023764 ();
    0x0003e0c2 b 0x3e088                             |     goto label_1;
    0x0003e0c4 ldr r1, [pc, 0x4c]                    |     
    0x0003e0c6 mov r0, r8                            |     r0 = r8;
    0x0003e0c8 add r1, pc                            |     r1 = 0x7c1e0;
    0x0003e0ca blx 0x23764                           |     fcn_00023764 ();
    0x0003e0ce b 0x3e088                             |     goto label_1;
    0x0003e0d0 ldr r1, [pc, 0x44]                    |     
    0x0003e0d2 mov r0, r8                            |     r0 = r8;
    0x0003e0d4 add r1, pc                            |     r1 = 0x7c1f0;
    0x0003e0d6 blx 0x23764                           |     fcn_00023764 ();
    0x0003e0da b 0x3e088                             |     goto label_1;
    0x0003e0dc ldr r1, [pc, 0x3c]                    |     
    0x0003e0de mov r0, r8                            |     r0 = r8;
    0x0003e0e0 add r1, pc                            |     r1 = 0x7c200;
    0x0003e0e2 blx 0x23764                           |     fcn_00023764 ();
    0x0003e0e6 b 0x3e088                             |     goto label_1;
    0x0003e0e8 ldr r1, [pc, 0x34]                    |     
    0x0003e0ea mov r0, r8                            |     r0 = r8;
    0x0003e0ec add r1, pc                            |     r1 = 0x7c210;
    0x0003e0ee blx 0x23764                           |     fcn_00023764 ();
    0x0003e0f2 b 0x3e088                             |     goto label_1;
                                                     | label_3:
    0x0003e0f4 ldr r1, [sp, 0x20]                    |     r1 = *(arg_20h);
    0x0003e0f6 mov r0, r8                            |     r0 = r8;
    0x0003e0f8 blx 0x23a20                           |     BIO_s_mem ();
    0x0003e0fc b 0x3e088                             |     goto label_1;
                                                     | }
    ; assembly                           | /* r2dec pseudo code output */
                                         | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsyslog-ng-3.31.so.0.0.0 @ 0x5415c */
                                         | #include <stdint.h>
                                         |  
    ; (fcn) fcn.0005415c ()              | void fcn_0005415c (int16_t arg1, int16_t arg2) {
                                         |     r0 = arg1;
                                         |     r1 = arg2;
    0x0005415c push {r3, r4, r5, lr}     |     
    0x0005415e mov r3, r1                |     r3 = r1;
    0x00054160 ldr r1, [r1, 4]           |     r1 = *((r1 + 4));
    0x00054162 mov r4, r0                |     r4 = r0;
    0x00054164 ldr r5, [r3, 8]           |     r5 = *((r3 + 8));
    0x00054166 ldr r2, [r0, 8]           |     r2 = *((r0 + 8));
    0x00054168 adds r0, r1, 1            |     r0 = r1 + 1;
    0x0005416a cmp r0, r5                |     
    0x0005416c ldrb r2, [r2]             |     r2 = *(r2);
                                         |     if (r0 < r5) {
    0x0005416e bhs 0x54186               |         
    0x00054170 ldr r5, [r3]              |         r5 = *(r3);
    0x00054172 str r0, [r3, 4]           |         *((r3 + 4)) = r0;
    0x00054174 movs r0, 0                |         r0 = 0;
    0x00054176 strb r2, [r5, r1]         |         *((r5 + r1)) = r2;
    0x00054178 ldrd r2, r3, [r3]         |         __asm ("ldrd r2, r3, [r3]");
    0x0005417c strb r0, [r2, r3]         |         *((r2 + r3)) = r0;
    0x0005417e ldr r3, [r4, 8]           |         r3 = *((r4 + 8));
    0x00054180 adds r3, 1                |         r3++;
    0x00054182 str r3, [r4, 8]           |         *((r4 + 8)) = r3;
    0x00054184 pop {r3, r4, r5, pc}      |         
                                         |     }
    0x00054186 mov r0, r3                |     r0 = r3;
    0x00054188 mov.w r1, -1              |     r1 = -1;
    0x0005418c blx 0x21254               |     g_sprintf ()
    0x00054190 ldr r3, [r4, 8]           |     r3 = *((r4 + 8));
    0x00054192 adds r3, 1                |     r3++;
    0x00054194 str r3, [r4, 8]           |     *((r4 + 8)) = r3;
    0x00054196 pop {r3, r4, r5, pc}      |     
                                         | }
    ; assembly                                           | /* r2dec pseudo code output */
                                                         | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsyslog-ng-3.31.so.0.0.0 @ 0x599c8 */
                                                         | #include <stdint.h>
                                                         |  
    ; (fcn) fcn.000599c8 ()                              | void fcn_000599c8 (int16_t arg1) {
                                                         |     int16_t var_4h_2;
                                                         |     int8_t var_1h;
                                                         |     int16_t var_1ch;
                                                         |     int16_t var_4h;
                                                         |     int32_t var_4h_3;
                                                         |     int16_t var_ch;
                                                         |     r0 = arg1;
    0x000599c8 movwhs r4, 0x1922                         |     __asm ("movwhs r4, 0x1922");
    0x000599cc ldr r2, [pc, 0x88]                        |     
    0x000599ce push {r4, lr}                             |     
    0x000599d0 mov r4, r0                                |     r4 = r0;
    0x000599d2 add r1, pc                                |     r1 += pc;
    0x000599d4 sub sp, 0x10                              |     
    0x000599d6 add r0, sp, 4                             |     r0 += var_4h;
    0x000599d8 ldr r2, [r1, r2]                          |     r2 = *((r1 + r2));
    0x000599da ldr r2, [r2]                              |     r2 = *(0x59a58);
    0x000599dc str r2, [sp, 0xc]                         |     var_ch = r2;
    0x000599de mov.w r2, 0                               |     r2 = 0;
    0x000599e2 str r3, [r4]                              |     *(r4) = r3;
    0x000599e4 blx 0x20d0c                               |     fcn_00020d0c ();
    0x000599e8 ldrd r0, r2, [sp, 4]                      |     __asm ("ldrd r0, r2, [var_4h]");
    0x000599ec str r0, [r4, 0x28]                        |     *((r4 + 0x28)) = r0;
    0x000599ee asrs r3, r0, 0x1f                         |     r3 = r0 >> 0x1f;
    0x000599f0 strd r3, r2, [r4, 0x2c]                   |     __asm ("strd r3, r2, [r4, 0x2c]");
    0x000599f4 blx 0x22a0c                               |     fcn_00022a0c ();
    0x000599f8 add.w r3, r4, 0x28                        |     r3 = r4 + 0x28;
    0x000599fc str r0, [r4, 0x34]                        |     *((r4 + 0x34)) = r0;
    0x000599fe ldm r3, {r0, r1, r2, r3}                  |     r0 = *(r3);
                                                         |     r1 = *((r3 + 4));
                                                         |     r2 = *((r3 + 8));
                                                         |     r3 = *((r3 + 12));
    0x00059a00 add.w ip, r4, 0x18                        |     
    0x00059a04 stm.w ip, {r0, r1, r2, r3}                |     *(ip) = r0;
                                                         |     *((ip + 4)) = r1;
                                                         |     *((ip + 8)) = r2;
                                                         |     *((ip + 12)) = r3;
    0x00059a08 add.w r0, r4, 0x38                        |     r0 = r4 + 0x38;
    0x00059a0c blx 0x1f8ec                               |     fcn_0001f8ec ();
    0x00059a10 movs r3, 0                                |     r3 = 0;
    0x00059a12 movs r1, 0xd                              |     r1 = 0xd;
    0x00059a14 ldr r2, [r4, 0x5c]                        |     r2 = *((r4 + 0x5c));
    0x00059a16 strd r3, r3, [r4, 0x4c]                   |     __asm ("strd r3, r3, [r4, 0x4c]");
    0x00059a1a str r3, [r4, 0x54]                        |     *((r4 + 0x54)) = r3;
    0x00059a1c orr r2, r2, 0x1f0                         |     r2 |= case.0x5984c.0;
    0x00059a20 str r3, [r4, 0x10]                        |     *((r4 + 0x10)) = r3;
    0x00059a22 str r2, [r4, 0x5c]                        |     *((r4 + 0x5c)) = r2;
    0x00059a24 strh.w r1, [r4, 0x60]                     |     *((r4 + 0x60)) = r1;
    0x00059a28 blx 0x21e40                               |     fcn_00021e40 ();
    0x00059a2c strd r0, r1, [r4, 0x68]                   |     __asm ("strd r0, r1, [r4, 0x68]");
    0x00059a30 blx 0x21afc                               |     fcn_00021afc ();
    0x00059a34 ldr r2, [pc, 0x24]                        |     
    0x00059a36 ldr r3, [pc, 0x20]                        |     r3 = *(0x59a5a);
    0x00059a38 str r0, [r4, 0x64]                        |     *((r4 + 0x64)) = r0;
    0x00059a3a add r2, pc                                |     r2 = 0xb349a;
    0x00059a3c ldr r3, [r2, r3]                          |     r3 = *(0xb349a);
    0x00059a3e ldr r2, [r3]                              |     r2 = *(0xb349a);
    0x00059a40 ldr r3, [sp, 0xc]                         |     r3 = var_ch;
    0x00059a42 eors r2, r3                               |     r2 ^= r3;
    0x00059a44 mov.w r3, 0                               |     r3 = 0;
                                                         |     if (r2 == r3) {
    0x00059a48 bne 0x59a4e                               |         
    0x00059a4a add sp, 0x10                              |         
    0x00059a4c pop {r4, pc}                              |         
                                                         |     }
    0x00059a4e blx 0x21bd4                               |     fcn_00021bd4 ();
    0x00059a52 nop                                       |     
    0x00059a54 ldrb r2, [r3, 9]                          |     r2 = *((r3 + 9));
    0x00059a56 movs r4, r0                               |     r4 = r0;
    0x00059a58 adds r4, r1, r3                           |     r4 = r1 + r3;
    0x00059a5a movs r0, r0                               |     
    0x00059a5c ldrb r2, [r6, 7]                          |     r2 = *((r6 + 7));
    0x00059a5e movs r4, r0                               |     r4 = r0;
    0x00059a60 ldr r2, [pc, 0xa8]                        |     
    0x00059a62 ldr r3, [pc, 0xac]                        |     r3 = *(0x59b12);
    0x00059a64 push {r4, r5, lr}                         |     
    0x00059a66 sub sp, 0x24                              |     
    0x00059a68 add r2, pc                                |     r2 = 0xb3578;
    0x00059a6a ldr r5, [pc, 0xa8]                        |     
    0x00059a6c add r4, sp, 4                             |     r4 += var_4h_2;
    0x00059a6e ldr r3, [r2, r3]                          |     
    0x00059a70 add r5, pc                                |     r5 = 0xb358a;
    0x00059a72 ldr r3, [r3]                              |     r3 = *(0xb3578);
    0x00059a74 str r3, [sp, 0x1c]                        |     var_1ch = r3;
    0x00059a76 mov.w r3, 0                               |     r3 = 0;
    0x00059a7a blx 0x21a38                               |     fcn_00021a38 ();
    0x00059a7e ldr r2, [pc, 0x98]                        |     
    0x00059a80 movs r3, 0                                |     r3 = 0;
    0x00059a82 movs r1, 2                                |     r1 = 2;
    0x00059a84 mov r0, r4                                |     r0 = r4;
    0x00059a86 add r2, pc                                |     r2 = 0xb35a4;
    0x00059a88 blx 0x21f54                               |     fcn_00021f54 ();
    0x00059a8c movs r2, 1                                |     r2 = 1;
    0x00059a8e mov r3, r5                                |     r3 = r5;
    0x00059a90 mov r1, r4                                |     r1 = r4;
    0x00059a92 movs r0, 0                                |     r0 = 0;
    0x00059a94 blx 0x1fa30                               |     g_error_free ();
    0x00059a98 ldr r2, [pc, 0x80]                        |     
    0x00059a9a movs r3, 0                                |     r3 = 0;
    0x00059a9c movs r1, 2                                |     r1 = 2;
    0x00059a9e mov r0, r4                                |     r0 = r4;
    0x00059aa0 add r2, pc                                |     r2 = 0xb35c0;
    0x00059aa2 blx 0x21f54                               |     fcn_00021f54 ();
    0x00059aa6 adds r3, r5, 4                            |     r3 = r5 + 4;
    0x00059aa8 movs r2, 1                                |     r2 = 1;
    0x00059aaa mov r1, r4                                |     r1 = r4;
    0x00059aac movs r0, 0                                |     r0 = 0;
    0x00059aae blx 0x1fa30                               |     g_error_free ();
    0x00059ab2 ldr r2, [pc, 0x6c]                        |     
    0x00059ab4 movs r3, 0                                |     r3 = 0;
    0x00059ab6 movs r1, 2                                |     r1 = 2;
    0x00059ab8 mov r0, r4                                |     r0 = r4;
    0x00059aba add r2, pc                                |     r2 = 0xb35e0;
    0x00059abc blx 0x21f54                               |     fcn_00021f54 ();
    0x00059ac0 add.w r3, r5, 8                           |     r3 = r5 + 8;
    0x00059ac4 movs r2, 1                                |     r2 = 1;
    0x00059ac6 mov r1, r4                                |     r1 = r4;
    0x00059ac8 movs r0, 0                                |     r0 = 0;
    0x00059aca blx 0x1fa30                               |     g_error_free ();
    0x00059ace ldr r2, [pc, 0x54]                        |     
    0x00059ad0 movs r3, 0                                |     r3 = 0;
    0x00059ad2 movs r1, 2                                |     r1 = 2;
    0x00059ad4 mov r0, r4                                |     r0 = r4;
    0x00059ad6 add r2, pc                                |     r2 = 0xb3600;
    0x00059ad8 blx 0x1f4c0                               |     pthread_mutex_init ();
    0x00059adc add.w r3, r5, 0xc                         |     r3 = r5 + 0xc;
    0x00059ae0 movs r2, 0                                |     r2 = 0;
    0x00059ae2 mov r1, r4                                |     r1 = r4;
    0x00059ae4 movs r0, 1                                |     r0 = 1;
    0x00059ae6 blx 0x1fa30                               |     g_error_free ();
    0x00059aea blx 0x23840                               |     BN_get_rfc3526_prime_2048 ();
    0x00059aee ldr r2, [pc, 0x38]                        |     
    0x00059af0 ldr r3, [pc, 0x1c]                        |     r3 = *(0x59b10);
    0x00059af2 add r2, pc                                |     r2 = 0xb3620;
    0x00059af4 ldr r3, [r2, r3]                          |     r3 = *(0xb3620);
    0x00059af6 ldr r2, [r3]                              |     r2 = *(0xb3620);
    0x00059af8 ldr r3, [sp, 0x1c]                        |     r3 = var_1ch;
    0x00059afa eors r2, r3                               |     r2 ^= r3;
    0x00059afc mov.w r3, 0                               |     r3 = 0;
                                                         |     if (r2 == r3) {
    0x00059b00 bne 0x59b06                               |         
    0x00059b02 add sp, 0x24                              |         
    0x00059b04 pop {r4, r5, pc}                          |         
                                                         |     }
    0x00059b06 blx 0x21bd4                               |     fcn_00021bd4 ();
    0x00059b0a nop                                       |     
    0x00059b0c ldrb r4, [r0, 7]                          |     r4 = *((r0 + 7));
    0x00059b0e movs r4, r0                               |     r4 = r0;
    0x00059b10 adds r4, r1, r3                           |     r4 = r1 + r3;
    0x00059b12 movs r0, r0                               |     
    0x00059b14 b 0x59be8                                 |     goto label_6;
                                                         |     do {
    0x00059b5e cmp r2, 0x3d                              |         
                                                         |         if (r2 > 0x3d) {
    0x00059b60 bhi 0x59be8                               |             goto label_6;
                                                         |         }
    0x00059b62 cmp r2, 0x1f                              |         
                                                         |         if (r2 > 0x1f) {
    0x00059b64 bhi 0x59bc0                               |             goto label_7;
                                                         |         }
                                                         | label_4:
    0x00059b66 ldr.w r3, [sb, 4]                         |         r3 = *((sb + 4));
    0x00059b6a ldr.w r1, [sb, 8]                         |         r1 = *((sb + 8));
    0x00059b6e adds r0, r3, 1                            |         r0 = r3 + 1;
    0x00059b70 cmp r0, r1                                |         
                                                         |         if (r0 >= r1) {
    0x00059b72 bhs 0x59bdc                               |             goto label_8;
                                                         |         }
                                                         | label_2:
    0x00059b74 ldr.w r1, [sb]                            |         r1 = *(sb);
    0x00059b78 str.w r0, [sb, 4]                         |         __asm ("str.w r0, [sb, 4]");
    0x00059b7c strb r2, [r1, r3]                         |         *((r1 + r3)) = r2;
    0x00059b7e movs r1, 0                                |         r1 = 0;
    0x00059b80 ldrd r2, r3, [sb]                         |         __asm ("ldrd r2, r3, [sb]");
    0x00059b84 strb r1, [r2, r3]                         |         *((r2 + r3)) = r1;
                                                         | label_3:
    0x00059b86 cmp r5, r4                                |         
                                                         |         if (r5 == r4) {
    0x00059b88 beq 0x59ba6                               |             goto label_9;
                                                         |         }
                                                         | label_0:
    0x00059b8a ldrb r2, [r4, 1]!                         |         r2 = var_1h;
    0x00059b8e lsls r1, r2, 0x18                         |         r1 = r2 << 0x18;
    0x00059b90 bpl 0x59b5e                               |         
                                                         |     } while (r1 >= r2);
                                                         | label_1:
    0x00059b92 mov r1, r8                                |     r1 = r8;
    0x00059b94 mov r0, r6                                |     r0 = r6;
    0x00059b96 blx 0x21470                               |     g_array_new ();
    0x00059b9a mov r1, r6                                |     r1 = r6;
    0x00059b9c mov r0, sb                                |     r0 = sb;
    0x00059b9e blx 0x23764                               |     fcn_00023764 ();
                                                         | label_5:
    0x00059ba2 cmp r5, r4                                |     
                                                         |     if (r5 != r4) {
    0x00059ba4 bne 0x59b8a                               |         goto label_0;
                                                         |     }
                                                         | label_9:
    0x00059ba6 ldr r2, [pc, 0x6c]                        |     
    0x00059ba8 ldr r3, [pc, 0x60]                        |     r3 = *(0x59c0c);
    0x00059baa add r2, pc                                |     r2 = 0xb37c4;
    0x00059bac ldr r3, [r2, r3]                          |     r3 = *(0xb37c4);
    0x00059bae ldr r2, [r3]                              |     r2 = *(0xb37c4);
    0x00059bb0 ldr r3, [sp, 4]                           |     r3 = var_4h_2;
    0x00059bb2 eors r2, r3                               |     r2 ^= r3;
    0x00059bb4 mov.w r3, 0                               |     r3 = 0;
                                                         |     if (r2 != r3) {
    0x00059bb8 bne 0x59c04                               |         goto label_10;
                                                         |     }
    0x00059bba add sp, 0xc                               |     
    0x00059bbc pop.w {r4, r5, r6, r7, r8, sb, pc}        |     
                                                         | label_7:
    0x00059bc0 sub.w r3, r2, 0x20                        |     r3 = r2 - 0x20;
    0x00059bc4 uxtb r3, r3                               |     r3 = (int8_t) r3;
    0x00059bc6 lsr.w r3, r7, r3                          |     r3 = r7 >> r3;
    0x00059bca lsls r3, r3, 0x1f                         |     r3 <<= 0x1f;
                                                         |     if (r3 < r3) {
    0x00059bcc bmi 0x59b92                               |         goto label_1;
                                                         |     }
    0x00059bce ldr.w r3, [sb, 4]                         |     r3 = *((sb + 4));
    0x00059bd2 ldr.w r1, [sb, 8]                         |     r1 = *((sb + 8));
    0x00059bd6 adds r0, r3, 1                            |     r0 = r3 + 1;
    0x00059bd8 cmp r0, r1                                |     
                                                         |     if (r0 <= r1) {
    0x00059bda blo 0x59b74                               |         goto label_2;
                                                         |     }
                                                         | label_8:
    0x00059bdc mov.w r1, -1                              |     r1 = -1;
    0x00059be0 mov r0, sb                                |     r0 = sb;
    0x00059be2 blx 0x21254                               |     g_sprintf ()
    0x00059be6 b 0x59b86                                 |     goto label_3;
                                                         | label_6:
    0x00059be8 sub.w r3, r2, 0x5b                        |     r3 = r2 - 0x5b;
    0x00059bec tst.w r3, 0xfd                            |     
                                                         |     if ((r3 & 0xfd) != 0) {
    0x00059bf0 bne 0x59b66                               |         goto label_4;
                                                         |     }
    0x00059bf2 mov r1, r8                                |     r1 = r8;
    0x00059bf4 mov r0, r6                                |     r0 = r6;
    0x00059bf6 blx 0x21470                               |     g_array_new ();
    0x00059bfa mov r1, r6                                |     r1 = r6;
    0x00059bfc mov r0, sb                                |     r0 = sb;
    0x00059bfe blx 0x23764                               |     fcn_00023764 ();
    0x00059c02 b 0x59ba2                                 |     goto label_5;
                                                         | label_10:
    0x00059c04 blx 0x21bd4                               |     fcn_00021bd4 ();
    0x00059c08 ldrb r4, [r6, 3]                          |     r4 = *((r6 + 3));
    0x00059c0a movs r4, r0                               |     r4 = r0;
    0x00059c0c adds r4, r1, r3                           |     r4 = r1 + r3;
    0x00059c0e movs r0, r0                               |     
    0x00059c10 cmp r4, 0xd4                              |     
    0x00059c12 movs r3, r0                               |     r3 = r0;
    0x00059c14 ldrb r2, [r0, 2]                          |     r2 = *((r0 + 2));
    0x00059c16 movs r4, r0                               |     r4 = r0;
                                                         | }


r2dec has crashed (info: /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsyslog-ng-3.31.so.0.0.0 @ 0x61e28).
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/libsyslog-ng-3.31.so.0.0.0 @ 0x61f98 */
                                                     | #include <stdint.h>
                                                     |  
    ; (fcn) sym.append_format_wall_clock_time ()     | void append_format_wall_clock_time (int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
                                                     |     int16_t var_0h;
                                                     |     int16_t var_8h;
                                                     |     int16_t var_1ch;
                                                     |     r0 = arg1;
                                                     |     r1 = arg2;
                                                     |     r2 = arg3;
                                                     |     r3 = arg4;
    0x00061f98 mov ip, r2                            |     
    0x00061f9a ldr r2, [pc, 0x310]                   |     
    0x00061f9c push.w {r4, r5, r6, r7, r8, lr}       |     
    0x00061fa0 mov r8, r3                            |     r8 = r3;
    0x00061fa2 ldr r3, [pc, 0x30c]                   |     r3 = *(0x622b2);
    0x00061fa4 mov r4, r1                            |     r4 = r1;
    0x00061fa6 add r2, pc                            |     r2 = 0xc4258;
    0x00061fa8 sub sp, 0x20                          |     
    0x00061faa ldr r1, [pc, 0x308]                   |     
    0x00061fac mov r5, r0                            |     r5 = r0;
    0x00061fae ldr r3, [r2, r3]                      |     
    0x00061fb0 add r6, sp, 8                         |     r6 += var_8h;
    0x00061fb2 ldr r7, [pc, 0x304]                   |     
    0x00061fb4 add r1, pc                            |     r1 = 0xc426e;
    0x00061fb6 ldr r3, [r3]                          |     r3 = *(0xc4258);
    0x00061fb8 str r3, [sp, 0x1c]                    |     var_1ch = r3;
    0x00061fba mov.w r3, 0                           |     r3 = 0;
    0x00061fbe ldm r1, {r0, r1, r2, r3}              |     r0 = *(r1);
                                                     |     r1 = *((r1 + 4));
                                                     |     r2 = *((r1 + 8));
                                                     |     r3 = *((r1 + 12));
    0x00061fc0 add r7, pc                            |     r7 = 0xc427e;
    0x00061fc2 stm.w r6, {r0, r1, r2, r3}            |     *(r6) = r0;
                                                     |     *((r6 + 4)) = r1;
                                                     |     *((r6 + 8)) = r2;
                                                     |     *((r6 + 12)) = r3;
    0x00061fc6 cmp.w ip, 3                           |     
                                                     |     if (ip > 3) {
    0x00061fca bhi.w 0x62296                         |         goto label_10;
                                                     |     }
                                                     |     /* switch table (4 cases) at 0x61fd2 */
    0x00061fce tbb [pc, ip]                          |     __asm ("tbb case.0x5984c.0");
    0x00061fd6 ldr r3, [r5, 0x14]                    |     r3 = *((r5 + 0x14));
    0x00061fd8 movs r2, 0                            |     r2 = 0;
    0x00061fda mov r1, r2                            |     r1 = r2;
    0x00061fdc mov r0, r4                            |     r0 = r4;
    0x00061fde addw r3, r3, 0x76c                    |     __asm ("addw r3, r3, case.0x5984c.0");
    0x00061fe2 str r3, [sp]                          |     *(sp) = r3;
    0x00061fe4 movs r3, 0xa                          |     r3 = 0xa;
    0x00061fe6 blx 0x1f9dc                           |     fcn_0001f9dc ();
    0x00061fea ldrd r3, r1, [r4, 4]                  |     __asm ("ldrd r3, r1, [r4, 4]");
    0x00061fee adds r2, r3, 1                        |     r2 = r3 + 1;
    0x00061ff0 cmp r2, r1                            |     
                                                     |     if (r2 >= r1) {
    0x00061ff2 bhs.w 0x62206                         |         goto label_11;
                                                     |     }
    0x00061ff6 str r2, [r4, 4]                       |     *((r4 + 4)) = r2;
    0x00061ff8 movs r1, 0x20                         |     r1 = 0x20;
    0x00061ffa ldr r2, [r4]                          |     r2 = *(r4);
    0x00061ffc strb r1, [r2, r3]                     |     *((r2 + r3)) = r1;
    0x00061ffe movs r1, 0                            |     r1 = 0;
    0x00062000 ldrd r2, r3, [r4]                     |     __asm ("ldrd r2, r3, [r4]");
    0x00062004 strb r1, [r2, r3]                     |     *((r2 + r3)) = r1;
                                                     | label_1:
    0x00062006 ldr r3, [pc, 0x2b4]                   |     r3 = *(0x622be);
    0x00062008 mov r0, r4                            |     r0 = r4;
    0x0006200a ldr r2, [r5, 0x10]                    |     r2 = *((r5 + 0x10));
    0x0006200c ldr r3, [r7, r3]                      |     r3 = *((r7 + r3));
    0x0006200e ldr.w r1, [r3, r2, lsl 2]             |     r1 = *(0x622be);
    0x00062012 movs r2, 3                            |     r2 = 3;
    0x00062014 blx 0x1ffec                           |     fcn_0001ffec ();
    0x00062018 ldr r3, [r4, 4]                       |     r3 = *((r4 + 4));
    0x0006201a ldr r1, [r4, 8]                       |     r1 = *((r4 + 8));
    0x0006201c adds r2, r3, 1                        |     r2 = r3 + 1;
    0x0006201e cmp r2, r1                            |     
                                                     |     if (r2 >= r1) {
    0x00062020 bhs.w 0x6224c                         |         goto label_12;
                                                     |     }
    0x00062024 str r2, [r4, 4]                       |     *((r4 + 4)) = r2;
    0x00062026 movs r1, 0x20                         |     r1 = 0x20;
    0x00062028 ldr r2, [r4]                          |     r2 = *(r4);
    0x0006202a strb r1, [r2, r3]                     |     *((r2 + r3)) = r1;
    0x0006202c movs r1, 0                            |     r1 = 0;
    0x0006202e ldrd r2, r3, [r4]                     |     __asm ("ldrd r2, r3, [r4]");
    0x00062032 strb r1, [r2, r3]                     |     *((r2 + r3)) = r1;
                                                     | label_5:
    0x00062034 ldr r2, [r5, 0xc]                     |     r2 = *((r5 + 0xc));
    0x00062036 movs r3, 0xa                          |     r3 = 0xa;
    0x00062038 movs r1, 2                            |     r1 = 2;
    0x0006203a mov r0, r4                            |     r0 = r4;
    0x0006203c str r2, [sp]                          |     *(sp) = r2;
    0x0006203e movs r2, 0x20                         |     r2 = 0x20;
    0x00062040 blx 0x1f9dc                           |     fcn_0001f9dc ();
    0x00062044 ldr r3, [r4, 4]                       |     r3 = *((r4 + 4));
    0x00062046 ldr r1, [r4, 8]                       |     r1 = *((r4 + 8));
    0x00062048 adds r2, r3, 1                        |     r2 = r3 + 1;
    0x0006204a cmp r2, r1                            |     
                                                     |     if (r2 >= r1) {
    0x0006204c bhs.w 0x6223e                         |         goto label_13;
                                                     |     }
    0x00062050 str r2, [r4, 4]                       |     *((r4 + 4)) = r2;
    0x00062052 movs r1, 0x20                         |     r1 = 0x20;
    0x00062054 ldr r2, [r4]                          |     r2 = *(r4);
    0x00062056 strb r1, [r2, r3]                     |     *((r2 + r3)) = r1;
    0x00062058 movs r1, 0                            |     r1 = 0;
    0x0006205a ldrd r2, r3, [r4]                     |     __asm ("ldrd r2, r3, [r4]");
    0x0006205e strb r1, [r2, r3]                     |     *((r2 + r3)) = r1;
                                                     | label_4:
    0x00062060 ldr r2, [r5, 8]                       |     r2 = *((r5 + 8));
    0x00062062 movs r3, 0xa                          |     r3 = 0xa;
    0x00062064 movs r1, 2                            |     r1 = 2;
    0x00062066 mov r0, r4                            |     r0 = r4;
    0x00062068 str r2, [sp]                          |     *(sp) = r2;
    0x0006206a movs r2, 0x30                         |     r2 = 0x30;
    0x0006206c blx 0x1f9dc                           |     fcn_0001f9dc ();
    0x00062070 ldr r3, [r4, 4]                       |     r3 = *((r4 + 4));
    0x00062072 ldr r1, [r4, 8]                       |     r1 = *((r4 + 8));
    0x00062074 adds r2, r3, 1                        |     r2 = r3 + 1;
    0x00062076 cmp r2, r1                            |     
                                                     |     if (r2 >= r1) {
    0x00062078 bhs.w 0x62230                         |         goto label_14;
                                                     |     }
    0x0006207c str r2, [r4, 4]                       |     *((r4 + 4)) = r2;
    0x0006207e movs r1, 0x3a                         |     r1 = 0x3a;
    0x00062080 ldr r2, [r4]                          |     r2 = *(r4);
    0x00062082 strb r1, [r2, r3]                     |     *((r2 + r3)) = r1;
    0x00062084 movs r1, 0                            |     r1 = 0;
    0x00062086 ldrd r2, r3, [r4]                     |     __asm ("ldrd r2, r3, [r4]");
    0x0006208a strb r1, [r2, r3]                     |     *((r2 + r3)) = r1;
                                                     | label_3:
    0x0006208c ldr r2, [r5, 4]                       |     r2 = *((r5 + 4));
    0x0006208e movs r3, 0xa                          |     r3 = 0xa;
    0x00062090 movs r1, 2                            |     r1 = 2;
    0x00062092 mov r0, r4                            |     r0 = r4;
    0x00062094 str r2, [sp]                          |     *(sp) = r2;
    0x00062096 movs r2, 0x30                         |     r2 = 0x30;
    0x00062098 blx 0x1f9dc                           |     fcn_0001f9dc ();
    0x0006209c ldr r3, [r4, 4]                       |     r3 = *((r4 + 4));
    0x0006209e ldr r1, [r4, 8]                       |     r1 = *((r4 + 8));
    0x000620a0 adds r2, r3, 1                        |     r2 = r3 + 1;
    0x000620a2 cmp r2, r1                            |     
                                                     |     if (r2 >= r1) {
    0x000620a4 bhs.w 0x62222                         |         goto label_15;
                                                     |     }
    0x000620a8 str r2, [r4, 4]                       |     *((r4 + 4)) = r2;
    0x000620aa movs r1, 0x3a                         |     r1 = 0x3a;
    0x000620ac ldr r2, [r4]                          |     r2 = *(r4);
    0x000620ae strb r1, [r2, r3]                     |     *((r2 + r3)) = r1;
    0x000620b0 movs r1, 0                            |     r1 = 0;
    0x000620b2 ldrd r2, r3, [r4]                     |     __asm ("ldrd r2, r3, [r4]");
    0x000620b6 strb r1, [r2, r3]                     |     *((r2 + r3)) = r1;
                                                     | label_2:
    0x000620b8 ldr r2, [r5]                          |     r2 = *(r5);
    0x000620ba movs r1, 2                            |     r1 = 2;
    0x000620bc movs r3, 0xa                          |     r3 = 0xa;
    0x000620be mov r0, r4                            |     r0 = r4;
    0x000620c0 str r2, [sp]                          |     *(sp) = r2;
    0x000620c2 movs r2, 0x30                         |     r2 = 0x30;
    0x000620c4 blx 0x1f9dc                           |     fcn_0001f9dc ();
    0x000620c8 ldr r0, [r5, 0x2c]                    |     r0 = *((r5 + 0x2c));
    0x000620ca mov r2, r8                            |     r2 = r8;
    0x000620cc mov r1, r4                            |     r1 = r4;
    0x000620ce bl 0x61e28                            |     fcn_00061e28 (r0, r1, r2);
                                                     |     do {
                                                     | label_0:
    0x000620d2 ldr r2, [pc, 0x1ec]                   |         
    0x000620d4 ldr r3, [pc, 0x1d8]                   |         r3 = *(0x622b0);
    0x000620d6 add r2, pc                            |         r2 = 0xc439c;
    0x000620d8 ldr r3, [r2, r3]                      |         r3 = *(0xc439c);
    0x000620da ldr r2, [r3]                          |         r2 = *(0xc439c);
    0x000620dc ldr r3, [sp, 0x1c]                    |         r3 = var_1ch;
    0x000620de eors r2, r3                           |         r2 ^= r3;
    0x000620e0 mov.w r3, 0                           |         r3 = 0;
                                                     |         if (r2 != r3) {
    0x000620e4 bne.w 0x62292                         |             goto label_16;
                                                     |         }
    0x000620e8 add sp, 0x20                          |         
    0x000620ea pop.w {r4, r5, r6, r7, r8, pc}        |         
    0x000620ee mov r1, r6                            |         r1 = r6;
    0x000620f0 mov r0, r5                            |         r0 = r5;
    0x000620f2 blx 0x2227c                           |         fcn_0002227c ();
    0x000620f6 ldr r3, [r5, 0x24]                    |         r3 = *((r5 + 0x24));
    0x000620f8 movs r2, 3                            |         r2 = 3;
    0x000620fa mov r1, r4                            |         r1 = r4;
    0x000620fc mov r0, r6                            |         r0 = r6;
    0x000620fe str.w r8, [sp]                        |         __asm ("str.w r8, [sp]");
    0x00062102 blx 0x22358                           |         fcn_00022358 ();
    0x00062106 b 0x620d2                             |         
                                                     |     } while (1);
    0x00062108 ldr r1, [r5, 0x14]                    |     r1 = *((r5 + 0x14));
    0x0006210a movs r2, 0                            |     r2 = 0;
    0x0006210c movs r3, 0xa                          |     r3 = 0xa;
    0x0006210e mov r0, r4                            |     r0 = r4;
    0x00062110 addw r1, r1, 0x76c                    |     __asm ("addw r1, r1, case.0x5984c.0");
    0x00062114 str r1, [sp]                          |     *(sp) = r1;
    0x00062116 mov r1, r2                            |     r1 = r2;
    0x00062118 blx 0x1f9dc                           |     fcn_0001f9dc ();
    0x0006211c ldr r3, [r4, 4]                       |     r3 = *((r4 + 4));
    0x0006211e ldr r1, [r4, 8]                       |     r1 = *((r4 + 8));
    0x00062120 adds r2, r3, 1                        |     r2 = r3 + 1;
    0x00062122 cmp r2, r1                            |     
                                                     |     if (r2 >= r1) {
    0x00062124 bhs 0x62214                           |         goto label_17;
                                                     |     }
    0x00062126 str r2, [r4, 4]                       |     *((r4 + 4)) = r2;
    0x00062128 movs r1, 0x2d                         |     r1 = 0x2d;
    0x0006212a ldr r2, [r4]                          |     r2 = *(r4);
    0x0006212c strb r1, [r2, r3]                     |     *((r2 + r3)) = r1;
    0x0006212e movs r1, 0                            |     r1 = 0;
    0x00062130 ldrd r2, r3, [r4]                     |     __asm ("ldrd r2, r3, [r4]");
    0x00062134 strb r1, [r2, r3]                     |     *((r2 + r3)) = r1;
                                                     |     do {
    0x00062136 ldr r2, [r5, 0x10]                    |         r2 = *((r5 + 0x10));
    0x00062138 movs r3, 0xa                          |         r3 = 0xa;
    0x0006213a movs r1, 2                            |         r1 = 2;
    0x0006213c mov r0, r4                            |         r0 = r4;
    0x0006213e adds r2, 1                            |         r2++;
    0x00062140 str r2, [sp]                          |         *(sp) = r2;
    0x00062142 movs r2, 0x30                         |         r2 = 0x30;
    0x00062144 blx 0x1f9dc                           |         fcn_0001f9dc ();
    0x00062148 ldr r3, [r4, 4]                       |         r3 = *((r4 + 4));
    0x0006214a ldr r1, [r4, 8]                       |         r1 = *((r4 + 8));
    0x0006214c adds r2, r3, 1                        |         r2 = r3 + 1;
    0x0006214e cmp r2, r1                            |         
                                                     |         if (r2 >= r1) {
    0x00062150 bhs.w 0x62284                         |             goto label_18;
                                                     |         }
    0x00062154 str r2, [r4, 4]                       |         *((r4 + 4)) = r2;
    0x00062156 movs r1, 0x2d                         |         r1 = 0x2d;
    0x00062158 ldr r2, [r4]                          |         r2 = *(r4);
    0x0006215a strb r1, [r2, r3]                     |         *((r2 + r3)) = r1;
    0x0006215c movs r1, 0                            |         r1 = 0;
    0x0006215e ldrd r2, r3, [r4]                     |         __asm ("ldrd r2, r3, [r4]");
    0x00062162 strb r1, [r2, r3]                     |         *((r2 + r3)) = r1;
                                                     | label_9:
    0x00062164 ldr r2, [r5, 0xc]                     |         r2 = *((r5 + 0xc));
    0x00062166 movs r3, 0xa                          |         r3 = 0xa;
    0x00062168 movs r1, 2                            |         r1 = 2;
    0x0006216a mov r0, r4                            |         r0 = r4;
    0x0006216c str r2, [sp]                          |         *(sp) = r2;
    0x0006216e movs r2, 0x30                         |         r2 = 0x30;
    0x00062170 blx 0x1f9dc                           |         fcn_0001f9dc ();
    0x00062174 ldr r3, [r4, 4]                       |         r3 = *((r4 + 4));
    0x00062176 ldr r1, [r4, 8]                       |         r1 = *((r4 + 8));
    0x00062178 adds r2, r3, 1                        |         r2 = r3 + 1;
    0x0006217a cmp r2, r1                            |         
                                                     |         if (r2 >= r1) {
    0x0006217c bhs 0x62276                           |             goto label_19;
                                                     |         }
    0x0006217e str r2, [r4, 4]                       |         *((r4 + 4)) = r2;
    0x00062180 movs r1, 0x54                         |         r1 = 0x54;
    0x00062182 ldr r2, [r4]                          |         r2 = *(r4);
    0x00062184 strb r1, [r2, r3]                     |         *((r2 + r3)) = r1;
    0x00062186 movs r1, 0                            |         r1 = 0;
    0x00062188 ldrd r2, r3, [r4]                     |         __asm ("ldrd r2, r3, [r4]");
    0x0006218c strb r1, [r2, r3]                     |         *((r2 + r3)) = r1;
                                                     | label_8:
    0x0006218e ldr r2, [r5, 8]                       |         r2 = *((r5 + 8));
    0x00062190 movs r3, 0xa                          |         r3 = 0xa;
    0x00062192 movs r1, 2                            |         r1 = 2;
    0x00062194 mov r0, r4                            |         r0 = r4;
    0x00062196 str r2, [sp]                          |         *(sp) = r2;
    0x00062198 movs r2, 0x30                         |         r2 = 0x30;
    0x0006219a blx 0x1f9dc                           |         fcn_0001f9dc ();
    0x0006219e ldr r3, [r4, 4]                       |         r3 = *((r4 + 4));
    0x000621a0 ldr r1, [r4, 8]                       |         r1 = *((r4 + 8));
    0x000621a2 adds r2, r3, 1                        |         r2 = r3 + 1;
    0x000621a4 cmp r2, r1                            |         
                                                     |         if (r2 >= r1) {
    0x000621a6 bhs 0x62268                           |             goto label_20;
                                                     |         }
    0x000621a8 str r2, [r4, 4]                       |         *((r4 + 4)) = r2;
    0x000621aa movs r1, 0x3a                         |         r1 = 0x3a;
    0x000621ac ldr r2, [r4]                          |         r2 = *(r4);
    0x000621ae strb r1, [r2, r3]                     |         *((r2 + r3)) = r1;
    0x000621b0 movs r1, 0                            |         r1 = 0;
    0x000621b2 ldrd r2, r3, [r4]                     |         __asm ("ldrd r2, r3, [r4]");
    0x000621b6 strb r1, [r2, r3]                     |         *((r2 + r3)) = r1;
                                                     | label_7:
    0x000621b8 ldr r2, [r5, 4]                       |         r2 = *((r5 + 4));
    0x000621ba movs r3, 0xa                          |         r3 = 0xa;
    0x000621bc movs r1, 2                            |         r1 = 2;
    0x000621be mov r0, r4                            |         r0 = r4;
    0x000621c0 str r2, [sp]                          |         *(sp) = r2;
    0x000621c2 movs r2, 0x30                         |         r2 = 0x30;
    0x000621c4 blx 0x1f9dc                           |         fcn_0001f9dc ();
    0x000621c8 ldr r3, [r4, 4]                       |         r3 = *((r4 + 4));
    0x000621ca ldr r1, [r4, 8]                       |         r1 = *((r4 + 8));
    0x000621cc adds r2, r3, 1                        |         r2 = r3 + 1;
    0x000621ce cmp r2, r1                            |         
                                                     |         if (r2 >= r1) {
    0x000621d0 bhs 0x6225a                           |             goto label_21;
                                                     |         }
    0x000621d2 str r2, [r4, 4]                       |         *((r4 + 4)) = r2;
    0x000621d4 movs r1, 0x3a                         |         r1 = 0x3a;
    0x000621d6 ldr r2, [r4]                          |         r2 = *(r4);
    0x000621d8 strb r1, [r2, r3]                     |         *((r2 + r3)) = r1;
    0x000621da movs r1, 0                            |         r1 = 0;
    0x000621dc ldrd r2, r3, [r4]                     |         __asm ("ldrd r2, r3, [r4]");
    0x000621e0 strb r1, [r2, r3]                     |         *((r2 + r3)) = r1;
                                                     | label_6:
    0x000621e2 ldr r2, [r5]                          |         r2 = *(r5);
    0x000621e4 movs r3, 0xa                          |         r3 = 0xa;
    0x000621e6 mov r0, r4                            |         r0 = r4;
    0x000621e8 movs r1, 2                            |         r1 = 2;
    0x000621ea str r2, [sp]                          |         *(sp) = r2;
    0x000621ec movs r2, 0x30                         |         r2 = 0x30;
    0x000621ee blx 0x1f9dc                           |         fcn_0001f9dc ();
    0x000621f2 ldr r0, [r5, 0x2c]                    |         r0 = *((r5 + 0x2c));
    0x000621f4 mov r1, r4                            |         r1 = r4;
    0x000621f6 mov r2, r8                            |         r2 = r8;
    0x000621f8 bl 0x61e28                            |         fcn_00061e28 (r0, r1, r2);
    0x000621fc ldr r1, [r5, 0x24]                    |         r1 = *((r5 + 0x24));
    0x000621fe mov r0, r4                            |         r0 = r4;
    0x00062200 blx 0x238b8                           |         fcn_000238b8 ();
    0x00062204 b 0x620d2                             |         goto label_0;
                                                     | label_11:
    0x00062206 movs r2, 0x20                         |         r2 = 0x20;
    0x00062208 mov.w r1, -1                          |         r1 = -1;
    0x0006220c mov r0, r4                            |         r0 = r4;
    0x0006220e blx 0x21254                           |         g_sprintf ()
    0x00062212 b 0x62006                             |         goto label_1;
                                                     | label_17:
    0x00062214 movs r2, 0x2d                         |         r2 = 0x2d;
    0x00062216 mov.w r1, -1                          |         r1 = -1;
    0x0006221a mov r0, r4                            |         r0 = r4;
    0x0006221c blx 0x21254                           |         g_sprintf ()
    0x00062220 b 0x62136                             |         
                                                     |     } while (1);
                                                     | label_15:
    0x00062222 movs r2, 0x3a                         |     r2 = 0x3a;
    0x00062224 mov.w r1, -1                          |     r1 = -1;
    0x00062228 mov r0, r4                            |     r0 = r4;
    0x0006222a blx 0x21254                           |     g_sprintf ()
    0x0006222e b 0x620b8                             |     goto label_2;
                                                     | label_14:
    0x00062230 movs r2, 0x3a                         |     r2 = 0x3a;
    0x00062232 mov.w r1, -1                          |     r1 = -1;
    0x00062236 mov r0, r4                            |     r0 = r4;
    0x00062238 blx 0x21254                           |     g_sprintf ()
    0x0006223c b 0x6208c                             |     goto label_3;
                                                     | label_13:
    0x0006223e movs r2, 0x20                         |     r2 = 0x20;
    0x00062240 mov.w r1, -1                          |     r1 = -1;
    0x00062244 mov r0, r4                            |     r0 = r4;
    0x00062246 blx 0x21254                           |     g_sprintf ()
    0x0006224a b 0x62060                             |     goto label_4;
                                                     | label_12:
    0x0006224c movs r2, 0x20                         |     r2 = 0x20;
    0x0006224e mov.w r1, -1                          |     r1 = -1;
    0x00062252 mov r0, r4                            |     r0 = r4;
    0x00062254 blx 0x21254                           |     g_sprintf ()
    0x00062258 b 0x62034                             |     goto label_5;
                                                     | label_21:
    0x0006225a movs r2, 0x3a                         |     r2 = 0x3a;
    0x0006225c mov.w r1, -1                          |     r1 = -1;
    0x00062260 mov r0, r4                            |     r0 = r4;
    0x00062262 blx 0x21254                           |     g_sprintf ()
    0x00062266 b 0x621e2                             |     goto label_6;
                                                     | label_20:
    0x00062268 movs r2, 0x3a                         |     r2 = 0x3a;
    0x0006226a mov.w r1, -1                          |     r1 = -1;
    0x0006226e mov r0, r4                            |     r0 = r4;
    0x00062270 blx 0x21254                           |     g_sprintf ()
    0x00062274 b 0x621b8                             |     goto label_7;
                                                     | label_19:
    0x00062276 movs r2, 0x54                         |     r2 = 0x54;
    0x00062278 mov.w r1, -1                          |     r1 = -1;
    0x0006227c mov r0, r4                            |     r0 = r4;
    0x0006227e blx 0x21254                           |     g_sprintf ()
    0x00062282 b 0x6218e                             |     goto label_8;
                                                     | label_18:
    0x00062284 movs r2, 0x2d                         |     r2 = 0x2d;
    0x00062286 mov.w r1, -1                          |     r1 = -1;
    0x0006228a mov r0, r4                            |     r0 = r4;
    0x0006228c blx 0x21254                           |     g_sprintf ()
    0x00062290 b 0x62164                             |     goto label_9;
                                                     | label_16:
    0x00062292 blx 0x21bd4                           |     fcn_00021bd4 ();
                                                     | label_10:
    0x00062296 ldr r3, [pc, 0x2c]                    |     
    0x00062298 movs r0, 0                            |     r0 = 0;
    0x0006229a ldr r1, [pc, 0x2c]                    |     
    0x0006229c movs r2, 0x93                         |     r2 = 0x93;
    0x0006229e str r0, [sp]                          |     *(sp) = r0;
    0x000622a0 add r3, pc                            |     r3 = 0xc456a;
    0x000622a2 add r1, pc                            |     r1 = 0xc4570;
    0x000622a4 adds r3, 0x10                         |     r3 += 0x10;
    0x000622a6 blx 0x2368c                           |     fcn_0002368c ();
    0x000622aa nop                                   |     
    0x000622ac eor r0, r6, 0x830000                  |     r0 = r6 ^ case.0x5984c.0;
    0x000622b0 adds r4, r1, r3                       |     r4 = r1 + r3;
    0x000622b2 movs r0, r0                           |     
    0x000622b4 invalid                               |     
                                                     | }
    ; assembly                                       | /* r2dec pseudo code output */
                                                     | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsyslog-ng-3.31.so.0.0.0 @ 0x61ee4 */
                                                     | #include <stdint.h>
                                                     |  
    ; (fcn) sym.append_format_zone_info ()           | void append_format_zone_info (int16_t arg1, int16_t arg2) {
                                                     |     int16_t var_0h;
                                                     |     r0 = arg1;
                                                     |     r1 = arg2;
                                                     |     if (? >= ?) {
    0x00061ee4 ldrblt r6, [r0, -0x843]!              |         r6 = case.0x5984c.0!;
                                                     |     }
    0x00061ee8 subs r4, r1, 0                        |     r4 = r1 - 0;
    0x00061eea ldr r6, [r0, 8]                       |     r6 = *((r0 + 8));
    0x00061eec it lt                                 |     
                                                     |     if (r4 >= r1) {
    0x00061eee movlt r2, 0x2d                        |         r2 = 0x2d;
                                                     |     }
    0x00061ef0 add.w r1, r3, 1                       |     r1 = r3 + 1;
    0x00061ef4 it ge                                 |     
                                                     |     if (r4 < r1) {
    0x00061ef6 movge r2, 0x2b                        |         r2 = 0x2b;
                                                     |     }
    0x00061ef8 sub sp, 8                             |     
    0x00061efa mov r5, r0                            |     r5 = r0;
    0x00061efc cmp r1, r6                            |     
                                                     |     if (r1 >= r6) {
    0x00061efe bhs 0x61f80                           |         goto label_1;
                                                     |     }
    0x00061f00 str r1, [r0, 4]                       |     *((r0 + 4)) = r1;
    0x00061f02 movs r1, 0                            |     r1 = 0;
    0x00061f04 ldr r0, [r0]                          |     r0 = *(r0);
    0x00061f06 strb r2, [r0, r3]                     |     *((r0 + r3)) = r2;
    0x00061f08 ldrd r2, r3, [r5]                     |     __asm ("ldrd r2, r3, [r5]");
    0x00061f0c strb r1, [r2, r3]                     |     *((r2 + r3)) = r1;
                                                     |     do {
    0x00061f0e cmp r4, 0                             |         
    0x00061f10 movw r2, 0xb3c5                       |         r2 = (r2 & 0xFFFF0000) | (case.0x5984c.0 & 0xFFFF);
    0x00061f14 it lt                                 |         
                                                     |         if (r4 < 0) {
    0x00061f16 rsblt r4, r4, 0                       |             __asm ("rsblt r4, r4, 0");
                                                     |         }
    0x00061f18 movt r2, 0x91a2                       |         r2 = (r2 & 0xFFFF) | 0xNaN0000;
    0x00061f1c umull r2, r1, r2, r4                  |         r2:r1 = r2 * r4;
    0x00061f20 movs r3, 0xa                          |         r3 = 0xa;
    0x00061f22 movs r2, 0x30                         |         r2 = 0x30;
    0x00061f24 mov r0, r5                            |         r0 = r5;
    0x00061f26 lsrs r1, r1, 0xb                      |         r1 >>= 0xb;
    0x00061f28 str r1, [sp]                          |         *(sp) = r1;
    0x00061f2a movs r1, 2                            |         r1 = 2;
    0x00061f2c blx 0x1f9dc                           |         fcn_0001f9dc ();
    0x00061f30 ldrd r3, r1, [r5, 4]                  |         __asm ("ldrd r3, r1, [r5, 4]");
    0x00061f34 adds r2, r3, 1                        |         r2 = r3 + 1;
    0x00061f36 cmp r2, r1                            |         
                                                     |         if (r2 >= r1) {
    0x00061f38 bhs 0x61f8a                           |             goto label_2;
                                                     |         }
    0x00061f3a ldr r1, [r5]                          |         r1 = *(r5);
    0x00061f3c str r2, [r5, 4]                       |         *((r5 + 4)) = r2;
    0x00061f3e movs r2, 0x3a                         |         r2 = 0x3a;
    0x00061f40 strb r2, [r1, r3]                     |         *((r1 + r3)) = r2;
    0x00061f42 movs r1, 0                            |         r1 = 0;
    0x00061f44 ldrd r2, r3, [r5]                     |         __asm ("ldrd r2, r3, [r5]");
    0x00061f48 strb r1, [r2, r3]                     |         *((r2 + r3)) = r1;
                                                     | label_0:
    0x00061f4a movw r3, 0xb3c5                       |         r3 = (r3 & 0xFFFF0000) | (case.0x5984c.0 & 0xFFFF);
    0x00061f4e mov.w r2, 0xe10                       |         r2 = case.0x5984c.0;
    0x00061f52 movt r3, 0x91a2                       |         r3 = (r3 & 0xFFFF) | 0xNaN0000;
    0x00061f56 movw r1, 0x8889                       |         r1 = (r1 & 0xFFFF0000) | (case.0x5984c.0 & 0xFFFF);
    0x00061f5a umull r0, r3, r3, r4                  |         r0:r3 = r3 * r4;
    0x00061f5e movt r1, 0x8888                       |         r1 = (r1 & 0xFFFF) | 0xNaN0000;
    0x00061f62 mov r0, r5                            |         r0 = r5;
    0x00061f64 lsrs r3, r3, 0xb                      |         r3 >>= 0xb;
    0x00061f66 mls r4, r2, r3, r4                    |         __asm ("mls r4, r2, r3, r4");
    0x00061f6a movs r3, 0xa                          |         r3 = 0xa;
    0x00061f6c movs r2, 0x30                         |         r2 = 0x30;
    0x00061f6e umull r1, r4, r1, r4                  |         r1:r4 = r1 * r4;
    0x00061f72 movs r1, 2                            |         r1 = 2;
    0x00061f74 lsrs r4, r4, 5                        |         r4 >>= 5;
    0x00061f76 str r4, [sp]                          |         *(sp) = r4;
    0x00061f78 blx 0x1f9dc                           |         fcn_0001f9dc ();
    0x00061f7c add sp, 8                             |         
    0x00061f7e pop {r4, r5, r6, pc}                  |         
                                                     | label_1:
    0x00061f80 mov.w r1, -1                          |         r1 = -1;
    0x00061f84 blx 0x21254                           |         g_sprintf ()
    0x00061f88 b 0x61f0e                             |         
                                                     |     } while (1);
                                                     | label_2:
    0x00061f8a movs r2, 0x3a                         |     r2 = 0x3a;
    0x00061f8c mov.w r1, -1                          |     r1 = -1;
    0x00061f90 mov r0, r5                            |     r0 = r5;
    0x00061f92 blx 0x21254                           |     g_sprintf ()
    0x00061f96 b 0x61f4a                             |     goto label_0;
                                                     | }
    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsyslog-ng-3.31.so.0.0.0 @ 0x27c08 */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) sym.cfg_lexer_subst_invoke ()                        | void cfg_lexer_subst_invoke (int16_t arg_1h, int16_t arg_a8h, int16_t arg_c8h, int16_t arg_1b0h, int16_t arg_3e8h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
                                                                 |     int16_t var_0h;
                                                                 |     int16_t var_8h;
                                                                 |     int16_t var_ch;
                                                                 |     int16_t var_10h;
                                                                 |     int16_t var_14h;
                                                                 |     int16_t var_18h;
                                                                 |     int16_t var_1ch;
                                                                 |     int16_t var_20h;
                                                                 |     int16_t var_24h;
                                                                 |     int16_t var_28h;
                                                                 |     int16_t var_2ch;
                                                                 |     int16_t var_30h;
                                                                 |     int16_t var_38h;
                                                                 |     int16_t var_40h;
                                                                 |     int16_t var_54h;
                                                                 |     int16_t var_68h;
                                                                 |     int16_t var_7ch;
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
                                                                 |     r2 = arg3;
                                                                 |     r3 = arg4;
    0x00027c08 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}       |     
    0x00027c0c mov r8, r2                                        |     r8 = r2;
    0x00027c0e sub sp, 0x84                                      |     
    0x00027c10 ldr.w r2, [pc, 0x480]                             |     
    0x00027c14 mov r6, r0                                        |     r6 = r0;
    0x00027c16 mov sb, r1                                        |     sb = r1;
    0x00027c18 str r3, [sp, 0x14]                                |     var_14h = r3;
    0x00027c1a ldr r4, [sp, 0xa8]                                |     r4 = *(arg_a8h);
    0x00027c1c add r2, pc                                        |     r2 = 0x4fcb4;
    0x00027c1e ldr.w r3, [pc, 0x478]                             |     r3 = *(0x2809a);
    0x00027c22 str r4, [sp, 8]                                   |     var_8h = r4;
    0x00027c24 ldr r3, [r2, r3]                                  |     
    0x00027c26 ldr r3, [r3]                                      |     r3 = *(0x4fcb4);
    0x00027c28 str r3, [sp, 0x7c]                                |     var_7ch = r3;
    0x00027c2a mov.w r3, 0                                       |     r3 = 0;
    0x00027c2e ldr.w r3, [pc, 0x46c]                             |     r3 = *(0x0002809c);
    0x00027c32 add r3, pc                                        |     r3 += pc;
    0x00027c34 str r3, [sp, 0x10]                                |     var_10h = r3;
                                                                 |     if (r4 != 0) {
    0x00027c36 cbz r4, 0x27c50                                   |         
    0x00027c38 ldr r3, [r4]                                      |         r3 = *(r4);
                                                                 |         if (r3 == 0) {
    0x00027c3a cbz r3, 0x27c50                                   |             goto label_14;
                                                                 |         }
    0x00027c3c ldr.w r2, [pc, 0x460]                             |         r2 = *(0x000280a0);
    0x00027c40 movs r0, 0                                        |         r0 = 0;
    0x00027c42 ldr.w r1, [pc, 0x460]                             |         
    0x00027c46 add r2, pc                                        |         r2 += pc;
    0x00027c48 add r1, pc                                        |         r1 = 0x4fcf2;
    0x00027c4a blx 0x1f808                                       |         g_ptr_array_find_with_equal_func ();
    0x00027c4e b 0x27dbc                                         |         goto label_15;
                                                                 |     }
                                                                 | label_14:
    0x00027c50 cmp.w r8, 0                                       |     
                                                                 |     if (r8 < 0) {
    0x00027c54 bge 0x27c5e                                       |         
    0x00027c56 mov r0, sb                                        |         r0 = sb;
    0x00027c58 blx 0x22d14                                       |         r0 = fcn_00022d14 ();
    0x00027c5c mov r8, r0                                        |         r8 = r0;
                                                                 |     }
    0x00027c5e movs r0, 0x20                                     |     r0 = 0x20;
    0x00027c60 blx 0x21b30                                       |     r0 = isatty (r0);
    0x00027c64 mov r7, r0                                        |     r7 = r0;
    0x00027c66 str r0, [r6, 0x10]                                |     *((r6 + 0x10)) = r0;
    0x00027c68 cmp.w r8, 0                                       |     
                                                                 |     if (r8 == 0) {
    0x00027c6c beq.w 0x28062                                     |         goto label_16;
                                                                 |     }
    0x00027c70 ldr.w r3, [pc, 0x434]                             |     r3 = *(0x000280a8);
    0x00027c74 mov r4, sb                                        |     r4 = sb;
    0x00027c76 mov fp, sb                                        |     
    0x00027c78 movs r5, 0                                        |     r5 = 0;
    0x00027c7a add r3, pc                                        |     r3 += pc;
    0x00027c7c str r3, [sp, 0x1c]                                |     var_1ch = r3;
    0x00027c7e ldr.w r3, [pc, 0x42c]                             |     r3 = *(0x000280ac);
    0x00027c82 add r3, pc                                        |     r3 += pc;
    0x00027c84 str r3, [sp, 0x24]                                |     var_24h = r3;
    0x00027c86 ldr.w r3, [pc, 0x428]                             |     r3 = *(0x000280b0);
    0x00027c8a add r3, pc                                        |     r3 += pc;
    0x00027c8c str r3, [sp, 0x20]                                |     var_20h = r3;
    0x00027c8e ldr.w r3, [pc, 0x424]                             |     r3 = *(0x000280b4);
    0x00027c92 add r3, pc                                        |     r3 += pc;
    0x00027c94 str r3, [sp, 0x28]                                |     var_28h = r3;
                                                                 |     do {
    0x00027c96 ldr r3, [r6, 0xc]                                 |         r3 = *((r6 + 0xc));
    0x00027c98 cmp r3, 4                                         |         
                                                                 |         if (r3 > 4) {
    0x00027c9a bhi.w 0x28080                                     |             goto label_17;
                                                                 |         }
                                                                 |         /* switch table (5 cases) at 0x27ca2 */
    0x00027c9e tbb [pc, r3]                                      |         __asm ("tbb case.0x5984c.0");
    0x00027ca8 ldrb r3, [r4]                                     |         r3 = *(r4);
    0x00027caa cmp r3, 0x5c                                      |         
                                                                 |         if (r3 == 0x5c) {
    0x00027cac beq.w 0x27e9a                                     |             goto label_18;
                                                                 |         }
    0x00027cb0 cmp r3, 0x22                                      |         
                                                                 |         if (r3 == 0x22) {
    0x00027cb2 beq 0x27d3e                                       |             goto label_19;
                                                                 |         }
                                                                 | label_0:
    0x00027cb4 movs r3, 1                                        |         r3 = 1;
    0x00027cb6 str r3, [r6, 0xc]                                 |         *((r6 + 0xc)) = r3;
    0x00027cb8 ldrb r2, [r4]                                     |         r2 = *(r4);
                                                                 | label_1:
    0x00027cba cmp r5, 0                                         |         
                                                                 |         if (r5 != 0) {
    0x00027cbc bne 0x27d48                                       |             goto label_7;
                                                                 |         }
                                                                 | label_4:
    0x00027cbe cmp r2, 0x60                                      |         
                                                                 |         if (r2 == 0x60) {
    0x00027cc0 beq 0x27d30                                       |             goto label_20;
                                                                 |         }
                                                                 | label_2:
    0x00027cc2 ldrd r0, r1, [r7, 4]                              |         __asm ("ldrd r0, r1, [r7, 4]");
    0x00027cc6 adds r4, 1                                        |         r4++;
    0x00027cc8 adds r3, r0, 1                                    |         r3 = r0 + 1;
    0x00027cca cmp r3, r1                                        |         
                                                                 |         if (r3 >= r1) {
    0x00027ccc bhs.w 0x27dea                                     |             goto label_21;
                                                                 |         }
    0x00027cd0 str r3, [r7, 4]                                   |         *((r7 + 4)) = r3;
    0x00027cd2 movs r5, 0                                        |         r5 = 0;
    0x00027cd4 ldr r3, [r7]                                      |         r3 = *(r7);
    0x00027cd6 strb r2, [r3, r0]                                 |         *((r3 + r0)) = r2;
    0x00027cd8 ldrd r2, r3, [r7]                                 |         __asm ("ldrd r2, r3, [r7]");
    0x00027cdc strb r5, [r2, r3]                                 |         *((r2 + r3)) = r5;
                                                                 | label_3:
    0x00027cde sub.w r3, r4, sb                                  |         r3 = r4 - sb;
    0x00027ce2 cmp r3, r8                                        |         
    0x00027ce4 blt 0x27c96                                       |         
                                                                 |     } while (r3 < r8);
    0x00027ce6 movs r4, 0                                        |     r4 = 0;
    0x00027ce8 str r4, [r6, 0x10]                                |     *((r6 + 0x10)) = r4;
    0x00027cea cmp r5, 0                                         |     
                                                                 |     if (r5 != 0) {
    0x00027cec bne.w 0x27ee4                                     |         goto label_22;
                                                                 |     }
                                                                 | label_13:
    0x00027cf0 ldr r3, [r7, 4]                                   |     r3 = *((r7 + 4));
    0x00027cf2 ldr r2, [sp, 0x14]                                |     r2 = var_14h;
    0x00027cf4 str r3, [r2]                                      |     *(r2) = r3;
    0x00027cf6 ldr r2, [pc, 0x3c0]                               |     
    0x00027cf8 ldr r3, [pc, 0x39c]                               |     r3 = *(0x28098);
    0x00027cfa add r2, pc                                        |     r2 = 0x4fdb8;
    0x00027cfc ldr r3, [r2, r3]                                  |     r3 = *(0x4fdb8);
    0x00027cfe ldr r2, [r3]                                      |     r2 = *(0x4fdb8);
    0x00027d00 ldr r3, [sp, 0x7c]                                |     r3 = var_7ch;
    0x00027d02 eors r2, r3                                       |     r2 ^= r3;
    0x00027d04 mov.w r3, 0                                       |     r3 = 0;
                                                                 |     if (r2 != r3) {
    0x00027d08 bne.w 0x2807c                                     |         goto label_23;
                                                                 |     }
    0x00027d0c movs r1, 0                                        |     r1 = 0;
    0x00027d0e mov r0, r7                                        |     r0 = r7;
    0x00027d10 add sp, 0x84                                      |     
    0x00027d12 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}        |     
    0x00027d16 b.w 0x229a4                                       |     void (*0x229a4)() ();
    0x00027d1a ldrb r2, [r4]                                     |     r2 = *(r4);
    0x00027d1c cmp r2, 0x22                                      |     
                                                                 |     if (r2 == 0x22) {
    0x00027d1e beq 0x27cb4                                       |         goto label_0;
                                                                 |     }
    0x00027d20 cmp r2, 0x27                                      |     
                                                                 |     if (r2 != 0x27) {
    0x00027d22 bne 0x27cba                                       |         goto label_1;
                                                                 |     }
    0x00027d24 movs r3, 4                                        |     r3 = 4;
    0x00027d26 str r3, [r6, 0xc]                                 |     *((r6 + 0xc)) = r3;
    0x00027d28 ldrb r2, [r4]                                     |     r2 = *(r4);
                                                                 |     if (r5 != 0) {
    0x00027d2a cbnz r5, 0x27d48                                  |         goto label_7;
                                                                 |     }
    0x00027d2c cmp r2, 0x60                                      |     
                                                                 |     if (r2 != 0x60) {
    0x00027d2e bne 0x27cc2                                       |         goto label_2;
                                                                 |     }
                                                                 | label_20:
    0x00027d30 adds r4, 1                                        |     r4++;
    0x00027d32 movs r5, 1                                        |     r5 = 1;
    0x00027d34 mov fp, r4                                        |     
    0x00027d36 b 0x27cde                                         |     goto label_3;
    0x00027d38 ldrb r2, [r4]                                     |     r2 = *(r4);
    0x00027d3a cmp r2, 0x27                                      |     
                                                                 |     if (r2 != 0x27) {
    0x00027d3c bne 0x27cba                                       |         goto label_1;
                                                                 |     }
                                                                 | label_19:
    0x00027d3e movs r3, 0                                        |     r3 = 0;
    0x00027d40 str r3, [r6, 0xc]                                 |     *((r6 + 0xc)) = r3;
    0x00027d42 ldrb r2, [r4]                                     |     r2 = *(r4);
    0x00027d44 cmp r5, 0                                         |     
                                                                 |     if (r5 == 0) {
    0x00027d46 beq 0x27cbe                                       |         goto label_4;
                                                                 |     }
                                                                 |     do {
                                                                 | label_7:
    0x00027d48 cmp r2, 0x60                                      |         
                                                                 |         if (r2 == 0x60) {
    0x00027d4a beq 0x27d74                                       |             goto label_24;
                                                                 |         }
    0x00027d4c adds r4, 1                                        |         r4++;
    0x00027d4e movs r5, 1                                        |         r5 = 1;
    0x00027d50 b 0x27cde                                         |         goto label_3;
    0x00027d52 movs r3, 3                                        |         r3 = 3;
    0x00027d54 str r3, [r6, 0xc]                                 |         *((r6 + 0xc)) = r3;
    0x00027d56 ldrb r2, [r4]                                     |         r2 = *(r4);
    0x00027d58 cmp r5, 0                                         |         
    0x00027d5a bne 0x27d48                                       |         
                                                                 |     } while (r5 != 0);
    0x00027d5c cmp r2, 0x60                                      |     
                                                                 |     if (r2 != 0x60) {
    0x00027d5e bne 0x27cc2                                       |         goto label_2;
                                                                 |     }
    0x00027d60 blx 0x22da0                                       |     fcn_00022da0 ();
    0x00027d64 ldr r3, [pc, 0x354]                               |     
    0x00027d66 mov r1, r0                                        |     r1 = r0;
    0x00027d68 movs r2, 2                                        |     r2 = 2;
    0x00027d6a ldr r0, [sp, 8]                                   |     r0 = var_8h;
    0x00027d6c add r3, pc                                        |     r3 = 0x4fe2c;
    0x00027d6e blx 0x23a38                                       |     pipe ();
    0x00027d72 b 0x27db4                                         |     goto label_9;
                                                                 | label_24:
    0x00027d74 cmp r4, fp                                        |     
                                                                 |     if (r4 == fp) {
    0x00027d76 beq.w 0x27e7c                                     |         goto label_25;
                                                                 |     }
    0x00027d7a sub.w r1, r4, fp                                  |     r1 = r4 - fp;
    0x00027d7e mov r0, fp                                        |     r0 = fp;
    0x00027d80 blx 0x1fb6c                                       |     r0 = fcn_0001fb6c ();
    0x00027d84 mov r5, r0                                        |     r5 = r0;
    0x00027d86 ldr r0, [r6, 8]                                   |     r0 = *((r6 + 8));
    0x00027d88 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00027d8a beq 0x27df8                                       |         goto label_26;
                                                                 |     }
    0x00027d8c mov r1, r5                                        |     r1 = r5;
    0x00027d8e blx 0x2323c                                       |     r0 = fcn_0002323c ();
    0x00027d92 mov sl, r0                                        |     sl = r0;
    0x00027d94 cbz r0, 0x27df8                                   |     
                                                                 |     while (r0 != 0) {
                                                                 | label_5:
    0x00027d96 mov r0, r5                                        |         r0 = r5;
    0x00027d98 blx 0x21ed0                                       |         fcn_00021ed0 ();
                                                                 | label_6:
    0x00027d9c ldr r3, [sp, 8]                                   |         r3 = var_8h;
                                                                 |         if (r3 != 0) {
    0x00027d9e cbz r3, 0x27dda                                   |             
    0x00027da0 ldr r3, [r3]                                      |             r3 = *(r3);
                                                                 |             if (r3 == 0) {
    0x00027da2 cbz r3, 0x27dda                                   |                 goto label_27;
                                                                 |             }
    0x00027da4 ldr r1, [pc, 0x318]                               |             
    0x00027da6 movs r0, 0                                        |             r0 = 0;
    0x00027da8 ldr r2, [pc, 0x318]                               |             
    0x00027daa add r1, pc                                        |             r1 = 0x4fe6e;
    0x00027dac add r2, pc                                        |             r2 = 0x4fe74;
    0x00027dae adds r1, 0x2c                                     |             r1 += 0x2c;
    0x00027db0 blx 0x1f808                                       |             g_ptr_array_find_with_equal_func ();
                                                                 | label_9:
    0x00027db4 movs r1, 1                                        |             r1 = 1;
    0x00027db6 mov r0, r7                                        |             r0 = r7;
    0x00027db8 blx 0x229a8                                       |             fcn_000229a8 ();
                                                                 | label_15:
    0x00027dbc ldr r2, [pc, 0x308]                               |             
    0x00027dbe ldr r3, [pc, 0x2d8]                               |             r3 = *(0x2809a);
    0x00027dc0 add r2, pc                                        |             r2 = 0x4fe8c;
    0x00027dc2 ldr r3, [r2, r3]                                  |             r3 = *(0x4fe8c);
    0x00027dc4 ldr r2, [r3]                                      |             r2 = *(0x4fe8c);
    0x00027dc6 ldr r3, [sp, 0x7c]                                |             r3 = var_7ch;
    0x00027dc8 eors r2, r3                                       |             r2 ^= r3;
    0x00027dca mov.w r3, 0                                       |             r3 = 0;
                                                                 |             if (r2 != r3) {
    0x00027dce bne.w 0x2807c                                     |                 goto label_23;
                                                                 |             }
    0x00027dd2 movs r0, 0                                        |             r0 = 0;
    0x00027dd4 add sp, 0x84                                      |             
    0x00027dd6 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |             
                                                                 |         }
                                                                 | label_27:
    0x00027dda ldr r5, [r6, 0xc]                                 |         r5 = *((r6 + 0xc));
                                                                 |         if (r5 != 0) {
    0x00027ddc cbnz r5, 0x27e32                                  |             goto label_28;
                                                                 |         }
    0x00027dde ldr r0, [r6, 0x10]                                |         r0 = *((r6 + 0x10));
    0x00027de0 mov r1, sl                                        |         r1 = sl;
    0x00027de2 adds r4, 1                                        |         r4++;
    0x00027de4 blx 0x23764                                       |         fcn_00023764 ();
    0x00027de8 b 0x27cde                                         |         goto label_3;
                                                                 | label_21:
    0x00027dea mov.w r1, -1                                      |         r1 = -1;
    0x00027dee mov r0, r7                                        |         r0 = r7;
    0x00027df0 movs r5, 0                                        |         r5 = 0;
    0x00027df2 blx 0x21254                                       |         g_sprintf ()
    0x00027df6 b 0x27cde                                         |         goto label_3;
                                                                 | label_26:
    0x00027df8 ldr r0, [r6, 4]                                   |         r0 = *((r6 + 4));
                                                                 |         if (r0 == 0) {
    0x00027dfa cbz r0, 0x27e08                                   |             goto label_29;
                                                                 |         }
    0x00027dfc mov r1, r5                                        |         r1 = r5;
    0x00027dfe blx 0x2323c                                       |         r0 = fcn_0002323c ();
    0x00027e02 mov sl, r0                                        |         sl = r0;
    0x00027e04 cmp r0, 0                                         |         
    0x00027e06 bne 0x27d96                                       |         
                                                                 |     }
                                                                 | label_29:
    0x00027e08 ldr r0, [r6]                                      |     r0 = *(r6);
                                                                 |     if (r0 == 0) {
    0x00027e0a cbz r0, 0x27e18                                   |         goto label_30;
                                                                 |     }
    0x00027e0c mov r1, r5                                        |     r1 = r5;
    0x00027e0e blx 0x2323c                                       |     r0 = fcn_0002323c ();
    0x00027e12 mov sl, r0                                        |     sl = r0;
    0x00027e14 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x00027e16 bne 0x27d96                                       |         goto label_5;
                                                                 |     }
                                                                 | label_30:
    0x00027e18 mov r0, r5                                        |     r0 = r5;
    0x00027e1a blx 0x21d18                                       |     r0 = fcn_00021d18 ();
    0x00027e1e mov sl, r0                                        |     sl = r0;
    0x00027e20 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x00027e22 bne 0x27d96                                       |         goto label_5;
                                                                 |     }
    0x00027e24 ldr.w sl, [pc, 0x2a4]                             |     sl = *(0x000280cc);
    0x00027e28 mov r0, r5                                        |     r0 = r5;
    0x00027e2a blx 0x21ed0                                       |     fcn_00021ed0 ();
    0x00027e2e add sl, pc                                        |     sl += pc;
    0x00027e30 b 0x27d9c                                         |     goto label_6;
                                                                 | label_28:
    0x00027e32 mov r0, sl                                        |     r0 = sl;
    0x00027e34 blx 0x22d14                                       |     fcn_00022d14 ();
    0x00027e38 ldr r1, [sp, 0x10]                                |     r1 = var_10h;
    0x00027e3a mov r2, r0                                        |     r2 = r0;
    0x00027e3c ldr r3, [pc, 0x290]                               |     r3 = *(0x280d0);
    0x00027e3e ldr r3, [r1, r3]                                  |     r3 = *((r1 + r3));
    0x00027e40 mov r1, sl                                        |     r1 = sl;
    0x00027e42 ldr r0, [r3]                                      |     r0 = *(0x280d0);
    0x00027e44 blx 0x1fda8                                       |     fcn_0001fda8 ();
    0x00027e48 add r3, sp, 0x30                                  |     r3 += var_30h;
    0x00027e4a add r2, sp, 0x54                                  |     r2 += var_54h;
    0x00027e4c mov r1, r3                                        |     r1 = r3;
    0x00027e4e str r3, [sp, 0xc]                                 |     var_ch = r3;
    0x00027e50 mov r5, r0                                        |     r5 = r0;
    0x00027e52 str r0, [sp, 0x18]                                |     var_18h = r0;
    0x00027e54 blx 0x1f49c                                       |     fcn_0001f49c ();
    0x00027e58 movw r2, 0x28c1                                   |     r2 = (r2 & 0xFFFF0000) | (case.0x5984c.0 & 0xFFFF);
    0x00027e5c ldr r3, [sp, 0xc]                                 |     r3 = var_ch;
    0x00027e5e cmp r0, r2                                        |     
                                                                 |     if (r0 == r2) {
    0x00027e60 beq 0x27ea8                                       |         goto label_31;
                                                                 |     }
    0x00027e62 mov r0, r3                                        |     r0 = r3;
    0x00027e64 blx 0x23d54                                       |     fcn_00023d54 ();
    0x00027e68 mov r0, r5                                        |     r0 = r5;
    0x00027e6a blx 0x20b1c                                       |     fcn_00020b1c ();
                                                                 | label_8:
    0x00027e6e ldr r0, [r6, 0x10]                                |     r0 = *((r6 + 0x10));
    0x00027e70 mov r1, sl                                        |     r1 = sl;
    0x00027e72 adds r4, 1                                        |     r4++;
    0x00027e74 movs r5, 0                                        |     r5 = 0;
    0x00027e76 blx 0x23764                                       |     fcn_00023764 ();
    0x00027e7a b 0x27cde                                         |     goto label_3;
                                                                 | label_25:
    0x00027e7c ldrd r3, r1, [r7, 4]                              |     __asm ("ldrd r3, r1, [r7, 4]");
    0x00027e80 add.w r4, fp, 1                                   |     r4 += arg_1h;
    0x00027e84 adds r0, r3, 1                                    |     r0 = r3 + 1;
    0x00027e86 cmp r0, r1                                        |     
                                                                 |     if (r0 >= r1) {
    0x00027e88 bhs 0x27ed6                                       |         goto label_32;
                                                                 |     }
    0x00027e8a ldr r1, [r7]                                      |     r1 = *(r7);
    0x00027e8c movs r5, 0                                        |     r5 = 0;
    0x00027e8e str r0, [r7, 4]                                   |     *((r7 + 4)) = r0;
    0x00027e90 strb r2, [r1, r3]                                 |     *((r1 + r3)) = r2;
    0x00027e92 ldrd r2, r3, [r7]                                 |     __asm ("ldrd r2, r3, [r7]");
    0x00027e96 strb r5, [r2, r3]                                 |     *((r2 + r3)) = r5;
    0x00027e98 b 0x27cde                                         |     goto label_3;
                                                                 | label_18:
    0x00027e9a movs r3, 2                                        |     r3 = 2;
    0x00027e9c str r3, [r6, 0xc]                                 |     *((r6 + 0xc)) = r3;
    0x00027e9e ldrb r2, [r4]                                     |     r2 = *(r4);
    0x00027ea0 cmp r5, 0                                         |     
                                                                 |     if (r5 == 0) {
    0x00027ea2 beq.w 0x27cbe                                     |         goto label_4;
                                                                 |     }
    0x00027ea6 b 0x27d48                                         |     goto label_7;
                                                                 | label_31:
    0x00027ea8 add r1, sp, 0x40                                  |     r1 += var_40h;
    0x00027eaa ldr r0, [sp, 0x18]                                |     r0 = var_18h;
    0x00027eac add r2, sp, 0x68                                  |     r2 += var_68h;
    0x00027eae str r3, [sp, 0x2c]                                |     var_2ch = r3;
    0x00027eb0 str r1, [sp, 0xc]                                 |     var_ch = r1;
    0x00027eb2 blx 0x1f49c                                       |     fcn_0001f49c ();
    0x00027eb6 ldr r1, [sp, 0xc]                                 |     r1 = var_ch;
    0x00027eb8 mov r5, r0                                        |     r5 = r0;
    0x00027eba ldr r3, [sp, 0x2c]                                |     r3 = var_2ch;
                                                                 |     if (r0 != 0) {
    0x00027ebc cbz r0, 0x27ef8                                   |         
    0x00027ebe mov r0, r1                                        |         r0 = r1;
    0x00027ec0 str r3, [sp, 0xc]                                 |         var_ch = r3;
    0x00027ec2 blx 0x23d54                                       |         fcn_00023d54 ();
    0x00027ec6 ldr r3, [sp, 0xc]                                 |         r3 = var_ch;
    0x00027ec8 mov r0, r3                                        |         r0 = r3;
    0x00027eca blx 0x23d54                                       |         fcn_00023d54 ();
    0x00027ece ldr r0, [sp, 0x18]                                |         r0 = var_18h;
    0x00027ed0 blx 0x20b1c                                       |         fcn_00020b1c ();
    0x00027ed4 b 0x27e6e                                         |         goto label_8;
                                                                 | label_32:
    0x00027ed6 mov.w r1, -1                                      |         r1 = -1;
    0x00027eda mov r0, r7                                        |         r0 = r7;
    0x00027edc movs r5, 0                                        |         r5 = 0;
    0x00027ede blx 0x21254                                       |         g_sprintf ()
    0x00027ee2 b 0x27cde                                         |         goto label_3;
                                                                 | label_22:
    0x00027ee4 blx 0x22da0                                       |         fcn_00022da0 ();
    0x00027ee8 ldr r3, [pc, 0x1e8]                               |         
    0x00027eea mov r1, r0                                        |         r1 = r0;
    0x00027eec mov r2, r4                                        |         r2 = r4;
    0x00027eee ldr r0, [sp, 8]                                   |         r0 = var_8h;
    0x00027ef0 add r3, pc                                        |         r3 = 0x4ffc8;
    0x00027ef2 blx 0x23a38                                       |         pipe ();
    0x00027ef6 b 0x27db4                                         |         goto label_9;
                                                                 |     }
    0x00027ef8 ldr r0, [sp, 0x38]                                |     r0 = var_38h;
    0x00027efa str r3, [sp, 0x2c]                                |     var_2ch = r3;
    0x00027efc str r1, [sp, 0xc]                                 |     var_ch = r1;
    0x00027efe blx 0x20864                                       |     fcn_00020864 ();
    0x00027f02 ldr r1, [sp, 0xc]                                 |     r1 = var_ch;
    0x00027f04 mov r2, r0                                        |     r2 = r0;
    0x00027f06 str r2, [sp, 0xc]                                 |     var_ch = r2;
    0x00027f08 mov r0, r1                                        |     r0 = r1;
    0x00027f0a blx 0x23d54                                       |     fcn_00023d54 ();
    0x00027f0e ldr r3, [sp, 0x2c]                                |     r3 = var_2ch;
    0x00027f10 mov r0, r3                                        |     r0 = r3;
    0x00027f12 blx 0x23d54                                       |     fcn_00023d54 ();
    0x00027f16 ldr r0, [sp, 0x18]                                |     r0 = var_18h;
    0x00027f18 blx 0x20b1c                                       |     fcn_00020b1c ();
    0x00027f1c ldr r3, [sp, 0xc]                                 |     r3 = var_ch;
    0x00027f1e cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x00027f20 beq 0x27e6e                                       |         goto label_8;
                                                                 |     }
    0x00027f22 ldr r3, [r6, 0xc]                                 |     r3 = *((r6 + 0xc));
    0x00027f24 cmp r3, 1                                         |     
                                                                 |     if (r3 == 1) {
    0x00027f26 bne 0x27f48                                       |         
    0x00027f28 ldr r3, [sp, 8]                                   |         r3 = var_8h;
                                                                 |         if (r3 == 0) {
    0x00027f2a cbz r3, 0x27f72                                   |             goto label_33;
                                                                 |         }
    0x00027f2c ldr r3, [r3]                                      |         r3 = *(r3);
                                                                 |         if (r3 == 0) {
    0x00027f2e cbz r3, 0x27f72                                   |             goto label_33;
                                                                 |         }
    0x00027f30 ldr r1, [pc, 0x1a4]                               |         
    0x00027f32 mov r0, r5                                        |         r0 = r5;
    0x00027f34 ldr r2, [pc, 0x1a4]                               |         
    0x00027f36 add r1, pc                                        |         r1 = 0x50012;
    0x00027f38 add r2, pc                                        |         r2 = 0x50018;
    0x00027f3a adds r1, 0x3c                                     |         r1 += 0x3c;
    0x00027f3c blx 0x1f808                                       |         g_ptr_array_find_with_equal_func ();
    0x00027f40 ldr r0, [sp, 0xc]                                 |         r0 = var_ch;
    0x00027f42 blx 0x21ed0                                       |         fcn_00021ed0 ();
    0x00027f46 b 0x27db4                                         |         goto label_9;
                                                                 |     }
    0x00027f48 cmp r3, 4                                         |     
                                                                 |     if (r3 != 4) {
    0x00027f4a bne.w 0x28068                                     |         goto label_34;
                                                                 |     }
    0x00027f4e ldr r3, [sp, 8]                                   |     r3 = var_8h;
    0x00027f50 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x00027f52 beq 0x27ff6                                       |         goto label_35;
                                                                 |     }
    0x00027f54 ldr r3, [r3]                                      |     r3 = *(r3);
    0x00027f56 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x00027f58 beq 0x27ff6                                       |         goto label_35;
                                                                 |     }
    0x00027f5a ldr r1, [pc, 0x184]                               |     
    0x00027f5c mov r0, r5                                        |     r0 = r5;
    0x00027f5e ldr r2, [pc, 0x184]                               |     
    0x00027f60 add r1, pc                                        |     r1 = 0x50046;
    0x00027f62 add r2, pc                                        |     r2 = 0x5004c;
    0x00027f64 adds r1, 0x50                                     |     r1 += 0x50;
    0x00027f66 blx 0x1f808                                       |     g_ptr_array_find_with_equal_func ();
    0x00027f6a ldr r0, [sp, 0xc]                                 |     r0 = var_ch;
    0x00027f6c blx 0x21ed0                                       |     fcn_00021ed0 ();
    0x00027f70 b 0x27db4                                         |     goto label_9;
                                                                 | label_33:
    0x00027f72 ldr r3, [sp, 0xc]                                 |     r3 = var_ch;
    0x00027f74 ldrb r2, [r3]                                     |     r2 = *(r3);
                                                                 |     if (r2 == 0) {
    0x00027f76 cbz r2, 0x27fca                                   |         goto label_36;
                                                                 |     }
    0x00027f78 ldr.w sl, [sp, 0xc]                               |     sl = var_ch;
    0x00027f7c str r4, [sp, 0x2c]                                |     var_2ch = r4;
    0x00027f7e str r5, [sp, 0x18]                                |     var_18h = r5;
    0x00027f80 mov r4, sl                                        |     r4 = sl;
    0x00027f82 ldr.w sl, [sp, 0x28]                              |     sl = var_28h;
    0x00027f86 b 0x27fb2                                         |     
                                                                 |     while (r2 != 0x22) {
    0x00027f88 cmp r2, 0xa                                       |         
                                                                 |         if (r2 == 0xa) {
    0x00027f8a beq 0x27fdc                                       |             goto label_37;
                                                                 |         }
    0x00027f8c cmp r2, 0xd                                       |         
                                                                 |         if (r2 == 0xd) {
    0x00027f8e beq 0x27fe4                                       |             goto label_38;
                                                                 |         }
    0x00027f90 cmp r2, 0x5c                                      |         
                                                                 |         if (r2 == 0x5c) {
    0x00027f92 beq 0x27fd4                                       |             goto label_39;
                                                                 |         }
    0x00027f94 ldr r3, [r0, 4]                                   |         r3 = *((r0 + 4));
    0x00027f96 ldr r5, [r0, 8]                                   |         r5 = *((r0 + 8));
    0x00027f98 adds r1, r3, 1                                    |         r1 = r3 + 1;
    0x00027f9a cmp r1, r5                                        |         
                                                                 |         if (r1 >= r5) {
    0x00027f9c bhs 0x27fec                                       |             goto label_40;
                                                                 |         }
    0x00027f9e str r1, [r0, 4]                                   |         *((r0 + 4)) = r1;
    0x00027fa0 ldr r1, [r0]                                      |         r1 = *(r0);
    0x00027fa2 strb r2, [r1, r3]                                 |         *((r1 + r3)) = r2;
    0x00027fa4 ldrd r1, r2, [r0]                                 |         __asm ("ldrd r1, r2, [r0]");
    0x00027fa8 movs r0, 0                                        |         r0 = 0;
    0x00027faa strb r0, [r1, r2]                                 |         *((r1 + r2)) = r0;
                                                                 | label_11:
    0x00027fac ldrb r2, [r4, 1]!                                 |         r2 = *((r4 += 1));
                                                                 |         if (r2 == 0) {
    0x00027fb0 cbz r2, 0x27fc6                                   |             goto label_41;
                                                                 |         }
                                                                 | label_10:
    0x00027fb2 cmp r2, 0x22                                      |         
    0x00027fb4 ldr r0, [r6, 0x10]                                |         r0 = *((r6 + 0x10));
    0x00027fb6 bne 0x27f88                                       |         
                                                                 |     }
    0x00027fb8 mov r1, sl                                        |     r1 = sl;
    0x00027fba blx 0x23764                                       |     fcn_00023764 ();
    0x00027fbe ldrb r2, [r4, 1]!                                 |     r2 = *((r4 += 1));
    0x00027fc2 cmp r2, 0                                         |     
                                                                 |     if (r2 != 0) {
    0x00027fc4 bne 0x27fb2                                       |         goto label_10;
                                                                 |     }
                                                                 | label_41:
    0x00027fc6 ldr r5, [sp, 0x18]                                |     r5 = var_18h;
    0x00027fc8 ldr r4, [sp, 0x2c]                                |     r4 = var_2ch;
                                                                 |     do {
                                                                 | label_36:
    0x00027fca ldr r0, [sp, 0xc]                                 |         r0 = var_ch;
    0x00027fcc adds r4, 1                                        |         r4++;
    0x00027fce blx 0x21ed0                                       |         fcn_00021ed0 ();
    0x00027fd2 b 0x27cde                                         |         goto label_3;
                                                                 | label_39:
    0x00027fd4 ldr r1, [sp, 0x1c]                                |         r1 = var_1ch;
    0x00027fd6 blx 0x23764                                       |         fcn_00023764 ();
    0x00027fda b 0x27fac                                         |         goto label_11;
                                                                 | label_37:
    0x00027fdc ldr r1, [sp, 0x20]                                |         r1 = var_20h;
    0x00027fde blx 0x23764                                       |         fcn_00023764 ();
    0x00027fe2 b 0x27fac                                         |         goto label_11;
                                                                 | label_38:
    0x00027fe4 ldr r1, [sp, 0x24]                                |         r1 = var_24h;
    0x00027fe6 blx 0x23764                                       |         fcn_00023764 ();
    0x00027fea b 0x27fac                                         |         goto label_11;
                                                                 | label_40:
    0x00027fec mov.w r1, -1                                      |         r1 = -1;
    0x00027ff0 blx 0x21254                                       |         g_sprintf ()
    0x00027ff4 b 0x27fac                                         |         goto label_11;
                                                                 | label_35:
    0x00027ff6 ldr r3, [sp, 0xc]                                 |         r3 = var_ch;
    0x00027ff8 ldrb r2, [r3]                                     |         r2 = *(r3);
    0x00027ffa cmp r2, 0                                         |         
    0x00027ffc beq 0x27fca                                       |         
                                                                 |     } while (r2 == 0);
    0x00027ffe ldr.w sl, [sp, 0xc]                               |     sl = var_ch;
    0x00028002 str r4, [sp, 0x18]                                |     var_18h = r4;
    0x00028004 b 0x2801c                                         |     
                                                                 |     while (r3 <= r4) {
    0x00028006 str r3, [r0, 4]                                   |         *((r0 + 4)) = r3;
    0x00028008 ldr r3, [r0]                                      |         r3 = *(r0);
    0x0002800a strb r2, [r3, r1]                                 |         *((r3 + r1)) = r2;
    0x0002800c mov.w r1, 0                                       |         r1 = 0;
    0x00028010 ldrd r2, r3, [r0]                                 |         __asm ("ldrd r2, r3, [r0]");
    0x00028014 strb r1, [r2, r3]                                 |         *((r2 + r3)) = r1;
    0x00028016 ldrb r2, [sl, 1]!                                 |         r2 = *((sl += 1));
                                                                 |         if (r2 == 0) {
    0x0002801a cbz r2, 0x2803c                                   |             goto label_42;
                                                                 |         }
                                                                 | label_12:
    0x0002801c cmp r2, 0x27                                      |         
                                                                 |         if (r2 == 0x27) {
    0x0002801e beq 0x28048                                       |             goto label_43;
                                                                 |         }
    0x00028020 ldr r0, [r6, 0x10]                                |         r0 = *((r6 + 0x10));
    0x00028022 ldr r1, [r0, 4]                                   |         r1 = *((r0 + 4));
    0x00028024 ldr r4, [r0, 8]                                   |         r4 = *((r0 + 8));
    0x00028026 adds r3, r1, 1                                    |         r3 = r1 + 1;
    0x00028028 cmp r3, r4                                        |         
    0x0002802a blo 0x28006                                       |         
                                                                 |     }
    0x0002802c mov.w r1, -1                                      |     r1 = -1;
    0x00028030 blx 0x21254                                       |     g_sprintf ()
    0x00028034 ldrb r2, [sl, 1]!                                 |     r2 = *((sl += 1));
    0x00028038 cmp r2, 0                                         |     
                                                                 |     if (r2 != 0) {
    0x0002803a bne 0x2801c                                       |         goto label_12;
                                                                 |     }
                                                                 | label_42:
    0x0002803c ldr r4, [sp, 0x18]                                |     r4 = var_18h;
    0x0002803e ldr r0, [sp, 0xc]                                 |     r0 = var_ch;
    0x00028040 blx 0x21ed0                                       |     fcn_00021ed0 ();
    0x00028042 vshl.s8 d19, d1, d6                               |     __asm ("vshl.s8 d19, d1, d6");
    0x00028046 b 0x27cde                                         |     goto label_3;
                                                                 | label_43:
    0x00028048 blx 0x22da0                                       |     fcn_00022da0 ();
    0x0002804c ldr r3, [pc, 0x98]                                |     
    0x0002804e mov r1, r0                                        |     r1 = r0;
    0x00028050 movs r2, 1                                        |     r2 = 1;
    0x00028052 ldr r0, [sp, 8]                                   |     r0 = var_8h;
    0x00028054 add r3, pc                                        |     r3 = 0x50140;
    0x00028056 blx 0x23a38                                       |     pipe ();
    0x0002805a ldr r0, [sp, 0xc]                                 |     r0 = var_ch;
    0x0002805c blx 0x21ed0                                       |     fcn_00021ed0 ();
    0x00028060 b 0x27db4                                         |     goto label_9;
                                                                 | label_16:
    0x00028062 str.w r8, [r6, 0x10]                              |     __asm ("str.w r8, [r6, 0x10]");
    0x00028066 b 0x27cf0                                         |     goto label_13;
                                                                 | label_34:
    0x00028068 ldr r3, [pc, 0x80]                                |     
    0x0002806a movs r2, 0xc5                                     |     r2 = 0xc5;
    0x0002806c ldr r1, [pc, 0x80]                                |     
    0x0002806e mov r0, r5                                        |     r0 = r5;
    0x00028070 str r5, [sp]                                      |     *(sp) = r5;
    0x00028072 add r3, pc                                        |     r3 = 0x50162;
    0x00028074 add r1, pc                                        |     r1 = 0x50168;
    0x00028076 adds r3, 0x2c                                     |     r3 += 0x2c;
    0x00028078 blx 0x2368c                                       |     fcn_0002368c ();
                                                                 | label_23:
    0x0002807c blx 0x21bd4                                       |     fcn_00021bd4 ();
                                                                 | label_17:
    0x00028080 ldr r3, [pc, 0x70]                                |     
    0x00028082 movs r0, 0                                        |     r0 = 0;
    0x00028084 ldr r1, [pc, 0x70]                                |     
    0x00028086 movs r2, 0x5f                                     |     r2 = 0x5f;
    0x00028088 str r0, [sp]                                      |     *(sp) = r0;
    0x0002808a add r3, pc                                        |     r3 = 0x50182;
    0x0002808c add r1, pc                                        |     r1 = 0x50188;
    0x0002808e adds r3, 0x18                                     |     r3 += 0x18;
    0x00028090 blx 0x2368c                                       |     fcn_0002368c ();
    0x00028094 ldr r0, [sp, 0x40]                                |     r0 = var_40h;
    0x00028096 movs r7, r0                                       |     r7 = r0;
    0x00028098 adds r4, r1, r3                                   |     r4 = r1 + r3;
    0x0002809a movs r0, r0                                       |     
    0x0002809c str r7, [sp, 0x3e8]                               |     *(arg_3e8h) = r7;
    0x0002809e movs r7, r0                                       |     r7 = r0;
    0x000280a0 ldr r3, [pc, 0x198]                               |     r3 = *(0x2823c);
    0x000280a2 movs r4, r0                                       |     r4 = r0;
    0x000280a4 ldr r4, [pc, 0x1d0]                               |     r4 = *(0x28278);
    0x000280a6 movs r4, r0                                       |     r4 = r0;
    0x000280a8 ldr r3, [pc, 0x358]                               |     r3 = *(0x28404);
    0x000280aa movs r4, r0                                       |     r4 = r0;
    0x000280ac ldr r3, [pc, 0x328]                               |     r3 = *(0x283d8);
    0x000280ae movs r4, r0                                       |     r4 = r0;
    0x000280b0 ldr r3, [pc, 0x2f8]                               |     r3 = *(0x283ac);
    0x000280b2 movs r4, r0                                       |     r4 = r0;
    0x000280b4 ldr r3, [pc, 0x2c8]                               |     r3 = *(0x28380);
    0x000280b6 movs r4, r0                                       |     r4 = r0;
    0x000280b8 str r7, [sp, 0xc8]                                |     *(arg_c8h) = r7;
    0x000280ba movs r7, r0                                       |     r7 = r0;
    0x000280bc ldr r2, [pc, 0x240]                               |     r2 = *(0x28300);
    0x000280be movs r4, r0                                       |     r4 = r0;
    0x000280c0 ldr r3, [pc, 0x48]                                |     r3 = *(0x2810c);
    0x000280c2 movs r4, r0                                       |     r4 = r0;
    0x000280c4 ldr r2, [pc, 0]                                   |     r2 = *(0x280c8);
    0x000280c6 movs r4, r0                                       |     r4 = r0;
    0x000280c8 str r6, [sp, 0x1b0]                               |     *(arg_1b0h) = r6;
    0x000280ca movs r7, r0                                       |     r7 = r0;
    0x000280cc ldr r4, [pc, 0x2b8]                               |     r4 = *(0x28388);
    0x000280ce movs r4, r0                                       |     r4 = r0;
    0x000280d0 adds r4, r4, r4                                   |     r4 += r4;
    0x000280d2 movs r0, r0                                       |     
    0x000280d4 ldr r1, [pc, 0x290]                               |     r1 = *(0x28368);
    0x000280d6 movs r4, r0                                       |     r4 = r0;
    0x000280d8 ldr r1, [pc, 0x218]                               |     r1 = *(0x282f4);
    0x000280da movs r4, r0                                       |     r4 = r0;
    0x000280dc ldr r0, [pc, 0x1d0]                               |     r0 = *(0x282b0);
    0x000280de movs r4, r0                                       |     r4 = r0;
    0x000280e0 ldr r1, [pc, 0x170]                               |     r1 = *(0x28254);
    0x000280e2 movs r4, r0                                       |     r4 = r0;
    0x000280e4 ldr r0, [pc, 0x128]                               |     r0 = *(0x28210);
    0x000280e6 movs r4, r0                                       |     r4 = r0;
    0x000280e8 ldr r0, [pc, 0]                                   |     r0 = *(0x000280ec);
    0x000280ea movs r4, r0                                       |     r4 = r0;
    0x000280ec ldr r0, [pc, 0x128]                               |     r0 = *(0x28218);
    0x000280ee movs r4, r0                                       |     r4 = r0;
    0x000280f0 bx fp                                             |     return void (*fp)() ();
                                                                 | }
    ; assembly                                       | /* r2dec pseudo code output */
                                                     | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsyslog-ng-3.31.so.0.0.0 @ 0x587f0 */
                                                     | #include <stdint.h>
                                                     |  
    ; (fcn) sym.control_connection_send_reply ()     | void control_connection_send_reply (int16_t arg1, int16_t arg2) {
                                                     |     int16_t var_0h;
                                                     |     r0 = arg1;
                                                     |     r1 = arg2;
    0x000587f0 invalid                               |     
    0x000587f4 mov r5, r1                            |     r5 = r1;
    0x000587f6 sub sp, 8                             |     
    0x000587f8 ldr r1, [r1]                          |     r1 = *(r1);
    0x000587fa ldr r0, [r0, 8]                       |     r0 = *((r0 + 8));
    0x000587fc blx 0x1f554                           |     fcn_0001f554 ();
    0x00058800 mov r0, r5                            |     r0 = r5;
    0x00058802 movs r1, 1                            |     r1 = 1;
    0x00058804 blx 0x229a8                           |     fcn_000229a8 ();
    0x00058808 ldr r0, [r4, 8]                       |     r0 = *((r4 + 8));
    0x0005880a movs r3, 0                            |     r3 = 0;
    0x0005880c str r3, [r4, 0xc]                     |     *((r4 + 0xc)) = r3;
    0x0005880e str r3, [r4]                          |     *(r4) = r3;
    0x00058810 ldr r5, [r0, 4]                       |     r5 = *((r0 + 4));
                                                     |     if (r5 == 0) {
    0x00058812 cbnz r5, 0x5882e                      |         
    0x00058814 ldr r3, [pc, 0x5c]                    |         
    0x00058816 movw r2, 0x103                        |         r2 = (r2 & 0xFFFF0000) | (case.0x5984c.0 & 0xFFFF);
    0x0005881a ldr r4, [pc, 0x5c]                    |         
    0x0005881c mov r0, r5                            |         r0 = r5;
    0x0005881e ldr r1, [pc, 0x5c]                    |         
    0x00058820 add r3, pc                            |         r3 = 0xb1098;
    0x00058822 add r4, pc                            |         r4 = 0xb10a0;
    0x00058824 adds r3, 0x20                         |         r3 += 0x20;
    0x00058826 add r1, pc                            |         r1 = 0xb10a8;
    0x00058828 str r4, [sp]                          |         *(sp) = r4;
    0x0005882a blx 0x2368c                           |         r0 = fcn_0002368c ();
                                                     |     }
    0x0005882e ldr r2, [r0]                          |     r2 = *(r0);
    0x00058830 adds r1, r2, r5                       |     r1 = r2 + r5;
    0x00058832 ldrb r1, [r1, -0x1]                   |     r1 = *((r1 - 0x1));
    0x00058836 cmp r1, 0xa                           |     
    0x00058838 bne 0x5884e                           |     
                                                     |     while (1) {
                                                     | label_0:
    0x0005883a ldr r1, [pc, 0x44]                    |         
    0x0005883c add r1, pc                            |         r1 = 0xb10c2;
    0x0005883e blx 0x23764                           |         fcn_00023764 ();
    0x00058842 mov r0, r4                            |         r0 = r4;
    0x00058844 add sp, 8                             |         
    0x00058846 pop.w {r4, r5, r6, lr}                |         
    0x0005884a b.w 0x1f70c                           |         void (*0x1f70c)() ();
    0x0005884e ldr r6, [r0, 8]                       |         r6 = *((r0 + 8));
    0x00058850 adds r1, r5, 1                        |         r1 = r5 + 1;
    0x00058852 cmp r1, r6                            |         
                                                     |         if (r1 >= r6) {
    0x00058854 bhs 0x58866                           |             goto label_1;
                                                     |         }
    0x00058856 str r1, [r0, 4]                       |         *((r0 + 4)) = r1;
    0x00058858 movs r1, 0xa                          |         r1 = 0xa;
    0x0005885a strb r1, [r2, r5]                     |         *((r2 + r5)) = r1;
    0x0005885c ldrd r1, r2, [r0]                     |         __asm ("ldrd r1, r2, [r0]");
    0x00058860 strb r3, [r1, r2]                     |         *((r1 + r2)) = r3;
    0x00058862 ldr r0, [r4, 8]                       |         r0 = *((r4 + 8));
    0x00058864 b 0x5883a                             |         
                                                     |     }
                                                     | label_1:
    0x00058866 movs r2, 0xa                          |     r2 = 0xa;
    0x00058868 mov.w r1, -1                          |     r1 = -1;
    0x0005886c blx 0x21254                           |     g_sprintf ()
    0x00058870 ldr r0, [r4, 8]                       |     r0 = *((r4 + 8));
    0x00058872 b 0x5883a                             |     goto label_0;
                                                     | }
    ; assembly                                               | /* r2dec pseudo code output */
                                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsyslog-ng-3.31.so.0.0.0 @ 0x46768 */
                                                             | #include <stdint.h>
                                                             |  
    ; (fcn) sym.csv_scanner_scan_next ()                     | void csv_scanner_scan_next (int16_t arg1) {
                                                             |     int16_t var_0h;
                                                             |     r0 = arg1;
    0x00046768 push.w {r4, r5, r6, r7, r8, sb, sl, lr}       |     
    0x0004676c movs r1, 0                                    |     r1 = 0;
    0x0004676e mov r7, r0                                    |     r7 = r0;
    0x00046770 sub sp, 8                                     |     
    0x00046772 ldr r0, [r0, 0x10]                            |     r0 = *((r0 + 0x10));
    0x00046774 blx 0x1fc8c                                   |     fcn_0001fc8c ();
    0x00046778 ldr r3, [r7, 4]                               |     r3 = *((r7 + 4));
    0x0004677a cmp r3, 2                                     |     
                                                             |     if (r3 > 2) {
    0x0004677c bhi 0x467a4                                   |         goto label_11;
                                                             |     }
                                                             |     if (r3 != 0) {
    0x0004677e cbnz r3, 0x467b4                              |         goto label_12;
                                                             |     }
    0x00046780 ldr r3, [r7]                                  |     r3 = *(r7);
    0x00046782 movs r2, 1                                    |     r2 = 1;
    0x00046784 str r2, [r7, 4]                               |     *((r7 + 4)) = r2;
    0x00046786 ldr r3, [r3]                                  |     r3 = *(r3);
    0x00046788 str r3, [r7, 8]                               |     *((r7 + 8)) = r3;
                                                             |     if (r3 == 0) {
    0x0004678a cbz r3, 0x467be                               |         goto label_13;
                                                             |     }
                                                             |     do {
    0x0004678c ldr r3, [r3, 4]                               |         r3 = *((r3 + 4));
    0x0004678e ldr r6, [r7, 0xc]                             |         r6 = *((r7 + 0xc));
    0x00046790 cmp r3, 0                                     |         
                                                             |         if (r3 == 0) {
    0x00046792 beq.w 0x4692e                                 |             goto label_14;
                                                             |         }
                                                             | label_5:
    0x00046796 ldrb r0, [r6]                                 |         r0 = *(r6);
                                                             |         if (r0 != 0) {
    0x00046798 cbnz r0, 0x467ca                              |             goto label_15;
                                                             |         }
    0x0004679a movs r3, 3                                    |         r3 = 3;
    0x0004679c str r3, [r7, 4]                               |         *((r7 + 4)) = r3;
    0x0004679e add sp, 8                                     |         
    0x000467a0 pop.w {r4, r5, r6, r7, r8, sb, sl, pc}        |         
                                                             | label_11:
    0x000467a4 subs r3, 3                                    |         r3 -= 3;
    0x000467a6 movs r0, 0                                    |         r0 = 0;
    0x000467a8 cmp r3, 1                                     |         
                                                             |         if (r3 > 1) {
    0x000467aa bhi.w 0x46998                                 |             goto label_16;
                                                             |         }
                                                             | label_6:
    0x000467ae add sp, 8                                     |         
    0x000467b0 pop.w {r4, r5, r6, r7, r8, sb, sl, pc}        |         
                                                             | label_12:
    0x000467b4 ldr r3, [r7, 8]                               |         r3 = *((r7 + 8));
    0x000467b6 ldr r3, [r3, 4]                               |         r3 = *((r3 + 4));
    0x000467b8 str r3, [r7, 8]                               |         *((r7 + 8)) = r3;
    0x000467ba cmp r3, 0                                     |         
    0x000467bc bne 0x4678c                                   |         
                                                             |     } while (r3 != 0);
                                                             | label_13:
    0x000467be movs r3, 4                                    |     r3 = 4;
    0x000467c0 movs r0, 0                                    |     r0 = 0;
    0x000467c2 str r3, [r7, 4]                               |     *((r7 + 4)) = r3;
    0x000467c4 add sp, 8                                     |     
    0x000467c6 pop.w {r4, r5, r6, r7, r8, sb, sl, pc}        |     
                                                             | label_15:
    0x000467ca ldr.w sb, [r7]                                |     sb = *(r7);
    0x000467ce ldr.w r4, [sb, 8]                             |     r4 = *((sb + 8));
    0x000467d2 ldrb r3, [r4]                                 |     r3 = *(r4);
    0x000467d4 cmp r0, r3                                    |     
                                                             |     if (r0 == r3) {
    0x000467d6 beq.w 0x46984                                 |         goto label_17;
                                                             |     }
                                                             |     if (r3 != 0) {
    0x000467da cbz r3, 0x467fa                               |         
    0x000467dc ldrb r3, [r4, 1]                              |         r3 = *((r4 + 1));
                                                             |         if (r3 == 0) {
    0x000467de cbz r3, 0x467fa                               |             goto label_10;
                                                             |         }
    0x000467e0 mov r1, r0                                    |         r1 = r0;
    0x000467e2 adds r0, r4, 1                                |         r0 = r4 + 1;
    0x000467e4 blx 0x23d20                                   |         r0 = fcn_00023d20 ();
    0x000467e8 cmp r0, 0                                     |         
                                                             |         if (r0 == 0) {
    0x000467ea beq.w 0x46994                                 |             goto label_18;
                                                             |         }
    0x000467ee subs r3, r0, r4                               |         r3 = r0 - r4;
                                                             | label_9:
    0x000467f0 ldr.w r2, [sb, 0xc]                           |         r2 = *((sb + 0xc));
    0x000467f4 adds r6, 1                                    |         r6++;
    0x000467f6 str r6, [r7, 0xc]                             |         *((r7 + 0xc)) = r6;
    0x000467f8 ldrb r3, [r2, r3]                             |         r3 = *((r2 + r3));
                                                             |     }
                                                             | label_10:
    0x000467fa strb r3, [r7, 0x14]                           |     *((r7 + 0x14)) = r3;
    0x000467fc ldr.w r2, [sb, 0x1c]                          |     r2 = *((sb + 0x1c));
    0x00046800 ldrb r3, [r6]                                 |     r3 = *(r6);
    0x00046802 lsls r2, r2, 0x1f                             |     r2 <<= 0x1f;
                                                             |     if (r2 >= r2) {
    0x00046804 bpl.w 0x46952                                 |         goto label_19;
                                                             |     }
    0x00046808 cmp r3, 9                                     |     
    0x0004680a it ne                                         |     
                                                             |     if (r3 != 9) {
    0x0004680c cmpne r3, 0x20                                |         __asm ("cmpne r3, 0x20");
                                                             |     }
                                                             |     if (r3 != 9) {
    0x0004680e bne 0x4681e                                   |         goto label_20;
                                                             |     }
                                                             |     do {
    0x00046810 adds r6, 1                                    |         r6++;
    0x00046812 str r6, [r7, 0xc]                             |         *((r7 + 0xc)) = r6;
    0x00046814 ldrb r3, [r6]                                 |         r3 = *(r6);
    0x00046816 cmp r3, 9                                     |         
    0x00046818 it ne                                         |         
                                                             |         if (r3 != 9) {
    0x0004681a cmpne r3, 0x20                                |             __asm ("cmpne r3, 0x20");
                                                             |         }
    0x0004681c beq 0x46810                                   |         
                                                             |     } while (r3 == 9);
                                                             | label_20:
    0x0004681e cmp r3, 0                                     |     
                                                             |     if (r3 == 0) {
    0x00046820 beq.w 0x4695a                                 |         goto label_21;
                                                             |     }
                                                             | label_7:
    0x00046824 mov.w sl, 0                                   |     sl = 0;
    0x00046828 b 0x4686c                                     |     
                                                             |     while (r2 != 0) {
    0x0004682a ldr.w r1, [sb, 0x18]                          |         r1 = *((sb + 0x18));
    0x0004682e cmp r1, 1                                     |         
                                                             |         if (r1 == 1) {
    0x00046830 beq 0x46908                                   |             goto label_22;
                                                             |         }
    0x00046832 cmp r2, r3                                    |         
    0x00046834 it eq                                         |         
                                                             |         if (r2 == r3) {
    0x00046836 cmpeq r1, 2                                   |             __asm ("cmpeq r1, 2");
                                                             |         }
                                                             |         if (r2 == r3) {
    0x00046838 beq 0x4691e                                   |             goto label_23;
                                                             |         }
                                                             | label_1:
    0x0004683a cmp r2, r3                                    |         
    0x0004683c it ne                                         |         
                                                             |         if (r2 == r3) {
    0x0004683e ldrne r6, [r7, 0xc]                           |             r6 = *((r7 + 0xc));
                                                             |         }
                                                             |         if (r2 == r3) {
    0x00046840 beq 0x46924                                   |             goto label_24;
                                                             |         }
                                                             | label_2:
    0x00046842 ldr r0, [r7, 0x10]                            |         r0 = *((r7 + 0x10));
    0x00046844 ldrb r2, [r6]                                 |         r2 = *(r6);
    0x00046846 ldrd r3, r4, [r0, 4]                          |         __asm ("ldrd r3, r4, [r0, 4]");
    0x0004684a adds r1, r3, 1                                |         r1 = r3 + 1;
    0x0004684c cmp r1, r4                                    |         
                                                             |         if (r1 >= r4) {
    0x0004684e bhs 0x468fe                                   |             goto label_25;
                                                             |         }
    0x00046850 str r1, [r0, 4]                               |         *((r0 + 4)) = r1;
    0x00046852 ldr r1, [r0]                                  |         r1 = *(r0);
    0x00046854 strb r2, [r1, r3]                             |         *((r1 + r3)) = r2;
    0x00046856 ldrd r2, r3, [r0]                             |         __asm ("ldrd r2, r3, [r0]");
    0x0004685a strb.w sl, [r2, r3]                           |         *((r2 + r3)) = sl;
                                                             | label_0:
    0x0004685e ldr r6, [r7, 0xc]                             |         r6 = *((r7 + 0xc));
    0x00046860 ldr.w sb, [r7]                                |         sb = *(r7);
    0x00046864 adds r6, 1                                    |         r6++;
    0x00046866 str r6, [r7, 0xc]                             |         *((r7 + 0xc)) = r6;
                                                             | label_4:
    0x00046868 ldrb r3, [r6]                                 |         r3 = *(r6);
                                                             |         if (r3 == 0) {
    0x0004686a cbz r3, 0x468b2                               |             goto label_3;
                                                             |         }
    0x0004686c ldrb r2, [r7, 0x14]                           |         r2 = *((r7 + 0x14));
    0x0004686e cmp r2, 0                                     |         
    0x00046870 bne 0x4682a                                   |         
                                                             |     }
    0x00046872 ldr.w r4, [sb, 0x14]                          |     r4 = *((sb + 0x14));
                                                             |     if (r4 == 0) {
    0x00046876 cbz r4, 0x46898                               |         goto label_26;
                                                             |     }
                                                             |     do {
    0x00046878 ldr.w r8, [r4]                                |         r8 = *(r4);
    0x0004687c mov r0, r8                                    |         r0 = r8;
    0x0004687e blx 0x22d14                                   |         fcn_00022d14 ();
    0x00046882 mov r1, r8                                    |         r1 = r8;
    0x00046884 mov r5, r0                                    |         r5 = r0;
    0x00046886 mov r2, r0                                    |         r2 = r0;
    0x00046888 mov r0, r6                                    |         r0 = r6;
    0x0004688a blx 0x1fe30                                   |         r0 = fcn_0001fe30 ();
    0x0004688e cmp r0, 0                                     |         
                                                             |         if (r0 == 0) {
    0x00046890 beq 0x46918                                   |             goto label_27;
                                                             |         }
    0x00046892 ldr r4, [r4, 4]                               |         r4 = *((r4 + 4));
    0x00046894 cmp r4, 0                                     |         
    0x00046896 bne 0x46878                                   |         
                                                             |     } while (r4 != 0);
                                                             | label_26:
    0x00046898 ldr.w r0, [sb, 4]                             |     r0 = *((sb + 4));
    0x0004689c ldr r4, [r7, 0xc]                             |     r4 = *((r7 + 0xc));
    0x0004689e ldrb r3, [r0]                                 |     r3 = *(r0);
    0x000468a0 ldrb r5, [r4]                                 |     r5 = *(r4);
    0x000468a2 cmp r5, r3                                    |     
                                                             |     if (r5 == r3) {
    0x000468a4 beq 0x468ae                                   |         goto label_28;
                                                             |     }
                                                             |     if (r3 == 0) {
    0x000468a6 cbz r3, 0x468e0                               |         goto label_29;
                                                             |     }
    0x000468a8 ldrb r3, [r0, 1]                              |     r3 = *((r0 + 1));
                                                             |     if (r3 != 0) {
    0x000468aa cbnz r3, 0x468d4                              |         goto label_30;
                                                             |     }
                                                             |     if (r5 != 0) {
    0x000468ac cbnz r5, 0x468e0                              |         goto label_29;
                                                             |     }
                                                             |     do {
                                                             | label_28:
    0x000468ae adds r4, 1                                    |         r4++;
    0x000468b0 str r4, [r7, 0xc]                             |         *((r7 + 0xc)) = r4;
                                                             | label_3:
    0x000468b2 ldr.w r3, [sb, 0x1c]                          |         r3 = *((sb + 0x1c));
    0x000468b6 lsls r3, r3, 0x1f                             |         r3 <<= 0x1f;
                                                             |         if (r3 < r3) {
    0x000468b8 bmi 0x4695a                                   |             goto label_21;
                                                             |         }
                                                             | label_8:
    0x000468ba ldr.w r1, [sb, 0x10]                          |         r1 = *((sb + 0x10));
                                                             |         if (r1 != 0) {
    0x000468be cbz r1, 0x468cc                               |             
    0x000468c0 ldr r4, [r7, 0x10]                            |             r4 = *((r7 + 0x10));
    0x000468c2 ldr r0, [r4]                                  |             r0 = *(r4);
    0x000468c4 blx 0x233a4                                   |             r0 = fcn_000233a4 ();
    0x000468c8 cmp r0, 0                                     |             
                                                             |             if (r0 == 0) {
    0x000468ca beq 0x46988                                   |                 goto label_31;
                                                             |             }
                                                             |         }
    0x000468cc movs r0, 1                                    |         r0 = 1;
    0x000468ce add sp, 8                                     |         
    0x000468d0 pop.w {r4, r5, r6, r7, r8, sb, sl, pc}        |         
                                                             | label_30:
    0x000468d4 adds r0, 1                                    |         r0++;
    0x000468d6 mov r1, r5                                    |         r1 = r5;
    0x000468d8 blx 0x23d20                                   |         r0 = fcn_00023d20 ();
    0x000468dc cmp r0, 0                                     |         
    0x000468de bne 0x468ae                                   |         
                                                             |     } while (r0 != 0);
                                                             | label_29:
    0x000468e0 ldr r0, [r7, 0x10]                            |     r0 = *((r7 + 0x10));
    0x000468e2 ldrd r3, r2, [r0, 4]                          |     __asm ("ldrd r3, r2, [r0, 4]");
    0x000468e6 adds r4, r3, 1                                |     r4 = r3 + 1;
    0x000468e8 cmp r4, r2                                    |     
                                                             |     if (r4 < r2) {
    0x000468ea bhs 0x468fc                                   |         
    0x000468ec ldr r2, [r0]                                  |         r2 = *(r0);
    0x000468ee str r4, [r0, 4]                               |         *((r0 + 4)) = r4;
    0x000468f0 strb r5, [r2, r3]                             |         *((r2 + r3)) = r5;
    0x000468f2 ldrd r2, r3, [r0]                             |         __asm ("ldrd r2, r3, [r0]");
    0x000468f6 strb.w sl, [r2, r3]                           |         *((r2 + r3)) = sl;
    0x000468fa b 0x4685e                                     |         goto label_0;
                                                             |     }
    0x000468fc mov r2, r5                                    |     r2 = r5;
                                                             | label_25:
    0x000468fe mov.w r1, -1                                  |     r1 = -1;
    0x00046902 blx 0x21254                                   |     g_sprintf ()
    0x00046906 b 0x4685e                                     |     goto label_0;
                                                             | label_22:
    0x00046908 cmp r3, 0x5c                                  |     
                                                             |     if (r3 != 0x5c) {
    0x0004690a bne 0x4683a                                   |         goto label_1;
                                                             |     }
    0x0004690c ldrb r1, [r6, 1]                              |     r1 = *((r6 + 1));
    0x0004690e cmp r1, 0                                     |     
                                                             |     if (r1 == 0) {
    0x00046910 beq 0x4683a                                   |         goto label_1;
                                                             |     }
                                                             |     do {
    0x00046912 adds r6, 1                                    |         r6++;
    0x00046914 str r6, [r7, 0xc]                             |         *((r7 + 0xc)) = r6;
    0x00046916 b 0x46842                                     |         goto label_2;
                                                             | label_27:
    0x00046918 add r5, r6                                    |         r5 += r6;
    0x0004691a str r5, [r7, 0xc]                             |         *((r7 + 0xc)) = r5;
    0x0004691c b 0x468b2                                     |         goto label_3;
                                                             | label_23:
    0x0004691e ldrb r3, [r6, 1]                              |         r3 = *((r6 + 1));
    0x00046920 cmp r3, r2                                    |         
    0x00046922 beq 0x46912                                   |         
                                                             |     } while (r3 == r2);
                                                             | label_24:
    0x00046924 adds r6, 1                                    |     r6++;
    0x00046926 strb.w sl, [r7, 0x14]                         |     *((r7 + 0x14)) = sl;
    0x0004692a str r6, [r7, 0xc]                             |     *((r7 + 0xc)) = r6;
    0x0004692c b 0x46868                                     |     goto label_4;
                                                             | label_14:
    0x0004692e ldr r3, [r7]                                  |     r3 = *(r7);
    0x00046930 ldr r3, [r3, 0x1c]                            |     r3 = *((r3 + 0x1c));
    0x00046932 lsls r1, r3, 0x1e                             |     r1 = r3 << 0x1e;
                                                             |     if (r1 >= r3) {
    0x00046934 bpl.w 0x46796                                 |         goto label_5;
                                                             |     }
    0x00046938 mov r1, r6                                    |     r1 = r6;
    0x0004693a ldr r0, [r7, 0x10]                            |     r0 = *((r7 + 0x10));
    0x0004693c blx 0x1f554                                   |     fcn_0001f554 ();
    0x00046940 ldrd r3, r2, [r7, 0xc]                        |     __asm ("ldrd r3, r2, [r7, 0xc]");
    0x00046944 movs r1, 2                                    |     r1 = 2;
    0x00046946 movs r0, 1                                    |     r0 = 1;
    0x00046948 ldr r2, [r2, 4]                               |     r2 = *((r2 + 4));
    0x0004694a str r1, [r7, 4]                               |     *((r7 + 4)) = r1;
    0x0004694c add r3, r2                                    |     r3 += r2;
    0x0004694e str r3, [r7, 0xc]                             |     *((r7 + 0xc)) = r3;
    0x00046950 b 0x467ae                                     |     goto label_6;
                                                             | label_19:
    0x00046952 cmp r3, 0                                     |     
                                                             |     if (r3 != 0) {
    0x00046954 bne.w 0x46824                                 |         goto label_7;
                                                             |     }
    0x00046958 b 0x468ba                                     |     goto label_8;
                                                             | label_21:
    0x0004695a ldr r0, [r7, 0x10]                            |     r0 = *((r7 + 0x10));
    0x0004695c ldr r1, [r0, 4]                               |     r1 = *((r0 + 4));
    0x0004695e cmp r1, 0                                     |     
                                                             |     if (r1 <= 0) {
    0x00046960 ble 0x4697a                                   |         goto label_32;
                                                             |     }
    0x00046962 ldr r2, [r0]                                  |     r2 = *(r0);
    0x00046964 subs r3, r1, 1                                |     r3 = r1 - 1;
    0x00046966 add r2, r3                                    |     r2 += r3;
    0x00046968 b 0x4696e                                     |     
                                                             |     while (r3 == 9) {
    0x0004696a subs r1, 1                                    |         r1--;
                                                             |         if (r1 == 1) {
    0x0004696c beq 0x4697a                                   |             goto label_32;
                                                             |         }
    0x0004696e ldrb r3, [r2], -1                             |         r3 = *(r2);
                                                             |         r2 += -1;
    0x00046972 cmp r3, 9                                     |         
    0x00046974 it ne                                         |         
                                                             |         if (r3 != 9) {
    0x00046976 cmpne r3, 0x20                                |             __asm ("cmpne r3, 0x20");
                                                             |         }
    0x00046978 beq 0x4696a                                   |         
                                                             |     }
                                                             | label_32:
    0x0004697a blx 0x1fc8c                                   |     fcn_0001fc8c ();
    0x0004697e ldr.w sb, [r7]                                |     sb = *(r7);
    0x00046982 b 0x468ba                                     |     goto label_8;
                                                             | label_17:
    0x00046984 movs r3, 0                                    |     r3 = 0;
    0x00046986 b 0x467f0                                     |     goto label_9;
                                                             | label_31:
    0x00046988 mov r1, r0                                    |     r1 = r0;
    0x0004698a mov r0, r4                                    |     r0 = r4;
    0x0004698c blx 0x1fc8c                                   |     fcn_0001fc8c ();
    0x00046990 movs r0, 1                                    |     r0 = 1;
    0x00046992 b 0x467ae                                     |     goto label_6;
                                                             | label_18:
    0x00046994 mov r3, r0                                    |     r3 = r0;
    0x00046996 b 0x467fa                                     |     goto label_10;
                                                             | label_16:
    0x00046998 ldr r3, [pc, 0x10]                            |     
    0x0004699a mov.w r2, 0x166                               |     r2 = case.0x5984c.0;
    0x0004699e ldr r1, [pc, 0x10]                            |     
    0x000469a0 str r0, [sp]                                  |     *(sp) = r0;
    0x000469a2 add r3, pc                                    |     r3 = 0x8d352;
    0x000469a4 add r1, pc                                    |     r1 = 0x8d35a;
    0x000469a6 blx 0x2368c                                   |     fcn_0002368c ();
    0x000469aa nop                                           |     
    0x000469ac ldrb r2, [r6, 0x11]                           |     r2 = *((r6 + 0x11));
    0x000469ae movs r3, r0                                   |     r3 = r0;
    0x000469b0 ldrb r4, [r6, 0x10]                           |     r4 = *((r6 + 0x10));
    0x000469b2 movs r3, r0                                   |     r3 = 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/libsyslog-ng-3.31.so.0.0.0 @ 0x46b4c */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) sym.kv_scanner_scan_next ()                          | void kv_scanner_scan_next (int16_t arg_358h, int16_t arg1) {
                                                                 |     int16_t var_4h;
                                                                 |     int16_t var_8h;
                                                                 |     int16_t var_ch;
                                                                 |     int16_t var_10h;
                                                                 |     int16_t var_11h;
                                                                 |     int16_t var_12h;
                                                                 |     int16_t var_14h;
                                                                 |     r0 = arg1;
    0x00046b4c blmi 0xfe7195bc                                   |     __asm ("blmi 0xfe7195bc");
    0x00046b50 push.w {r4, r5, r6, r7, r8, sb, sl, lr}           |     
    0x00046b54 sub sp, 0x18                                      |     
    0x00046b56 add r2, pc                                        |     r2 += pc;
    0x00046b58 ldr r3, [r2, r3]                                  |     r3 = *((r2 + r3));
    0x00046b5a ldr r3, [r3]                                      |     r3 = *(r3);
    0x00046b5c str r3, [sp, 0x14]                                |     var_14h = r3;
    0x00046b5e mov.w r3, 0                                       |     r3 = 0;
    0x00046b62 ldrd r2, r3, [r0]                                 |     __asm ("ldrd r2, r3, [r0]");
    0x00046b66 add.w sl, r2, r3                                  |     sl = r2 + r3;
    0x00046b6a ldrb r2, [r2, r3]                                 |     r2 = *((r2 + r3));
    0x00046b6c ldrb.w r3, [r0, 0x28]                             |     r3 = *((r0 + 0x28));
    0x00046b70 cmp r2, r3                                        |     
                                                                 |     if (r2 == r3) {
    0x00046b72 beq.w 0x46d1c                                     |         goto label_7;
                                                                 |     }
    0x00046b76 ldrb.w sb, [r0, 0x1c]                             |     sb = *((r0 + 0x1c));
    0x00046b7a mov r6, r0                                        |     r6 = r0;
    0x00046b7c mov r0, sl                                        |     r0 = sl;
    0x00046b7e mov r8, sl                                        |     r8 = sl;
    0x00046b80 mov r1, sb                                        |     r1 = sb;
    0x00046b82 blx 0x23d20                                       |     r0 = fcn_00023d20 ();
    0x00046b86 mov r7, r0                                        |     r7 = r0;
    0x00046b88 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00046b8a beq.w 0x46d04                                     |         goto label_11;
                                                                 |     }
                                                                 | label_2:
    0x00046b8e cmp sl, r7                                        |     
                                                                 |     if (sl >= r7) {
    0x00046b90 bhs.w 0x46ce4                                     |         goto label_12;
                                                                 |     }
    0x00046b94 mov r4, r7                                        |     r4 = r7;
    0x00046b96 b 0x46b9e                                         |     
                                                                 |     while (r0 == 0x20) {
    0x00046b98 cmp sl, r4                                        |         
                                                                 |         if (sl == r4) {
    0x00046b9a beq.w 0x46ce4                                     |             goto label_12;
                                                                 |         }
    0x00046b9e ldrb r0, [r4, -0x1]                               |         r0 = *((r4 - 0x1));
    0x00046ba2 mov r5, r4                                        |         r5 = r4;
    0x00046ba4 subs r4, 1                                        |         r4--;
    0x00046ba6 cmp r0, 0x20                                      |         
    0x00046ba8 beq 0x46b98                                       |         
                                                                 |     }
    0x00046baa cmp sl, r5                                        |     
                                                                 |     if (sl <= r5) {
    0x00046bac blo 0x46bba                                       |         goto label_13;
                                                                 |     }
    0x00046bae b 0x46ce4                                         |     goto label_12;
                                                                 |     do {
    0x00046bb0 cmp r4, sl                                        |         
    0x00046bb2 mov sb, r4                                        |         sb = r4;
                                                                 |         if (r4 == sl) {
    0x00046bb4 beq 0x46bc6                                       |             goto label_14;
                                                                 |         }
    0x00046bb6 ldrb r0, [r4, -0x1]!                              |         r0 = *((r4 -= 0x1));
                                                                 | label_13:
    0x00046bba ldr r3, [r6, 0x34]                                |         r3 = *((r6 + 0x34));
    0x00046bbc add.w sb, r4, 1                                   |         sb = r4 + 1;
    0x00046bc0 blx r3                                            |         r0 = uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
    0x00046bc2 cmp r0, 0                                         |         
    0x00046bc4 bne 0x46bb0                                       |         
                                                                 |     } while (r0 != 0);
                                                                 | label_14:
    0x00046bc6 sub.w r2, r5, sb                                  |     r2 = r5 - sb;
    0x00046bca cmp r2, 0                                         |     
                                                                 |     if (r2 <= 0) {
    0x00046bcc ble.w 0x46ce0                                     |         goto label_15;
                                                                 |     }
    0x00046bd0 mov r1, sb                                        |     r1 = sb;
    0x00046bd2 ldr r0, [r6, 8]                                   |     r0 = *((r6 + 8));
    0x00046bd4 blx 0x1fca4                                       |     fcn_0001fca4 ();
    0x00046bd8 subs.w sb, sb, r8                                 |     sb -= r8;
                                                                 |     if (sb < sb) {
    0x00046bdc bmi.w 0x46cfa                                     |         goto label_16;
                                                                 |     }
                                                                 | label_3:
    0x00046be0 ldr r0, [r6, 0x14]                                |     r0 = *((r6 + 0x14));
    0x00046be2 cmp r0, 0                                         |     
    0x00046be4 it ne                                             |     
                                                                 |     if (r0 != 0) {
    0x00046be6 cmpne sb, 0                                       |         __asm ("cmpne sb, 0");
                                                                 |     }
    0x00046bea it ne                                             |     
                                                                 |     if (r0 == 0) {
    0x00046bec addne r3, r8, sb                                  |         r3 = r8 + sb;
                                                                 |     }
                                                                 |     if (r0 != 0) {
    0x00046bf0 bne 0x46cac                                       |         goto label_17;
                                                                 |     }
                                                                 | label_0:
    0x00046bf2 ldr r3, [r6]                                      |     r3 = *(r6);
    0x00046bf4 ldr r2, [r6, 0x30]                                |     r2 = *((r6 + 0x30));
    0x00046bf6 subs r7, r7, r3                                   |     r7 -= r3;
    0x00046bf8 adds r7, 1                                        |     r7++;
    0x00046bfa str r7, [r6, 4]                                   |     *((r6 + 4)) = r7;
                                                                 |     if (r2 != 0) {
    0x00046bfc cbz r2, 0x46c06                                   |         
    0x00046bfe mov r0, r6                                        |         r0 = r6;
    0x00046c00 blx r2                                            |         uint32_t (*r2)(uint32_t) (r0);
    0x00046c02 ldrd r3, r7, [r6]                                 |         __asm ("ldrd r3, r7, [r6]");
                                                                 |     }
    0x00046c06 movs r2, 0                                        |     r2 = 0;
    0x00046c08 adds r4, r3, r7                                   |     r4 = r3 + r7;
    0x00046c0a str r2, [r6, 0x18]                                |     *((r6 + 0x18)) = r2;
    0x00046c0c add r5, sp, 4                                     |     r5 += var_4h;
    0x00046c0e ldrb r2, [r3, r7]                                 |     r2 = *((r3 + r7));
    0x00046c10 cmp r2, 0x20                                      |     
                                                                 |     if (r2 == 0x20) {
    0x00046c12 beq 0x46c1e                                       |         goto label_18;
                                                                 |     }
    0x00046c14 b 0x46c2e                                         |     goto label_19;
                                                                 |     do {
    0x00046c16 ldrb r3, [r4, 1]!                                 |         r3 = *((r4 += 1));
    0x00046c1a cmp r3, 0x20                                      |         
                                                                 |         if (r3 != 0x20) {
    0x00046c1c bne 0x46c2c                                       |             goto label_20;
                                                                 |         }
                                                                 | label_18:
    0x00046c1e mov r2, r6                                        |         r2 = r6;
    0x00046c20 mov r1, r5                                        |         r1 = r5;
    0x00046c22 mov r0, r4                                        |         r0 = r4;
    0x00046c24 bl 0x46a94                                        |         r0 = fcn_00046a94 (r0, r1, r2);
    0x00046c28 cmp r0, 0                                         |         
    0x00046c2a beq 0x46c16                                       |         
                                                                 |     } while (r0 == 0);
                                                                 | label_20:
    0x00046c2c ldr r3, [r6]                                      |     r3 = *(r6);
                                                                 | label_19:
    0x00046c2e ldr r2, [pc, 0x190]                               |     
    0x00046c30 subs r3, r4, r3                                   |     r3 = r4 - r3;
    0x00046c32 ldr r0, [r6, 0x20]                                |     r0 = *((r6 + 0x20));
    0x00046c34 str r3, [r6, 4]                                   |     *((r6 + 4)) = r3;
    0x00046c36 movs r3, 0x20                                     |     r3 = 0x20;
    0x00046c38 add r2, pc                                        |     r2 = 0x8d9fe;
    0x00046c3a ldrb.w r1, [r6, 0x28]                             |     r1 = *((r6 + 0x28));
    0x00046c3e str r2, [sp, 8]                                   |     var_8h = r2;
    0x00046c40 mov r2, r5                                        |     r2 = r5;
    0x00046c42 str r6, [sp, 0xc]                                 |     var_ch = r6;
    0x00046c44 strb.w r3, [sp, 0x10]                             |     var_10h = r3;
    0x00046c48 ldrb r3, [r0]                                     |     r3 = *(r0);
    0x00046c4a strb.w r1, [sp, 0x12]                             |     var_12h = r1;
    0x00046c4e mov r1, r4                                        |     r1 = r4;
    0x00046c50 strb.w r3, [sp, 0x11]                             |     var_11h = r3;
    0x00046c54 add r3, sp, 8                                     |     r3 += var_8h;
    0x00046c56 ldrb r0, [r4]                                     |     r0 = *(r4);
    0x00046c58 cmp r0, 0x22                                      |     
    0x00046c5a it ne                                             |     
                                                                 |     if (r0 != 0x22) {
    0x00046c5c cmpne r0, 0x27                                    |         __asm ("cmpne r0, 0x27");
                                                                 |     }
    0x00046c5e ite eq                                            |     
                                                                 |     if (r0 != 0x22) {
    0x00046c60 moveq r0, 1                                       |         r0 = 1;
                                                                 |     }
                                                                 |     if (r0 == 0x22) {
    0x00046c62 movne r0, 0                                       |         r0 = 0;
                                                                 |     }
    0x00046c64 str r0, [r6, 0x18]                                |     *((r6 + 0x18)) = r0;
    0x00046c66 ldr r0, [r6, 0xc]                                 |     r0 = *((r6 + 0xc));
    0x00046c68 blx 0x22c24                                       |     r0 = fcn_00022c24 ();
    0x00046c6c cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00046c6e beq 0x46d20                                       |         goto label_21;
                                                                 |     }
    0x00046c70 ldr r3, [sp, 4]                                   |     r3 = var_4h;
    0x00046c72 ldr r2, [r6]                                      |     r2 = *(r6);
    0x00046c74 subs r3, r3, r2                                   |     r3 -= r2;
    0x00046c76 str r3, [r6, 4]                                   |     *((r6 + 4)) = r3;
                                                                 | label_5:
    0x00046c78 ldr r3, [r6, 0x2c]                                |     r3 = *((r6 + 0x2c));
                                                                 |     if (r3 != 0) {
    0x00046c7a cbz r3, 0x46c8e                                   |         
    0x00046c7c ldr r0, [r6, 0x10]                                |         r0 = *((r6 + 0x10));
    0x00046c7e movs r1, 0                                        |         r1 = 0;
    0x00046c80 blx 0x1fc8c                                       |         fcn_0001fc8c ();
    0x00046c84 ldr r3, [r6, 0x2c]                                |         r3 = *((r6 + 0x2c));
    0x00046c86 mov r0, r6                                        |         r0 = r6;
    0x00046c88 blx r3                                            |         r0 = uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
    0x00046c8a cmp r0, 0                                         |         
                                                                 |         if (r0 != 0) {
    0x00046c8c bne 0x46d24                                       |             goto label_22;
                                                                 |         }
                                                                 |     }
                                                                 | label_6:
    0x00046c8e movs r0, 1                                        |     r0 = 1;
                                                                 | label_4:
    0x00046c90 ldr r2, [pc, 0x130]                               |     
    0x00046c92 ldr r3, [pc, 0x128]                               |     r3 = *(0x46dbe);
    0x00046c94 add r2, pc                                        |     r2 = 0x8da5c;
    0x00046c96 ldr r3, [r2, r3]                                  |     r3 = *(0x8da5c);
    0x00046c98 ldr r2, [r3]                                      |     r2 = *(0x8da5c);
    0x00046c9a ldr r3, [sp, 0x14]                                |     r3 = var_14h;
    0x00046c9c eors r2, r3                                       |     r2 ^= r3;
    0x00046c9e mov.w r3, 0                                       |     r3 = 0;
                                                                 |     if (r2 != r3) {
    0x00046ca2 bne.w 0x46db4                                     |         goto label_23;
                                                                 |     }
    0x00046ca6 add sp, 0x18                                      |     
    0x00046ca8 pop.w {r4, r5, r6, r7, r8, sb, sl, pc}            |     
                                                                 |     do {
                                                                 | label_17:
    0x00046cac ldrb r2, [r3, -0x1]!                              |         r2 = *((r3 -= 0x1));
    0x00046cb0 cmp r2, 0x20                                      |         
                                                                 |         if (r2 != 0x20) {
    0x00046cb2 bne 0x46cc2                                       |             goto label_24;
                                                                 |         }
    0x00046cb4 subs.w sb, sb, 1                                  |         sb--;
    0x00046cb8 bne 0x46cac                                       |         
                                                                 |     } while (sb != sb);
    0x00046cba b 0x46bf2                                         |     goto label_0;
                                                                 | label_1:
    0x00046cbc subs.w sb, sb, 1                                  |     sb--;
                                                                 |     if (sb == sb) {
    0x00046cc0 beq 0x46bf2                                       |         goto label_0;
                                                                 |     }
                                                                 | label_24:
    0x00046cc2 mov r4, r8                                        |     r4 = r8;
    0x00046cc4 ldrb r3, [r8], 1                                  |     r3 = *(r8);
                                                                 |     r8++;
    0x00046cc8 cmp r3, 0x20                                      |     
                                                                 |     if (r3 == 0x20) {
    0x00046cca beq 0x46cbc                                       |         goto label_1;
                                                                 |     }
    0x00046ccc ldr r3, [r0, 4]                                   |     r3 = *((r0 + 4));
    0x00046cce cmp r3, 0                                         |     
                                                                 |     if (r3 != 0) {
    0x00046cd0 bne 0x46d60                                       |         goto label_25;
                                                                 |     }
                                                                 | label_9:
    0x00046cd2 ldr r3, [pc, 0xf4]                                |     
    0x00046cd4 mov r2, sb                                        |     r2 = sb;
    0x00046cd6 mov r1, r4                                        |     r1 = r4;
    0x00046cd8 add r3, pc                                        |     r3 = 0x8daa6;
    0x00046cda blx 0x2204c                                       |     fcn_0002204c ();
    0x00046cde b 0x46bf2                                         |     goto label_0;
                                                                 | label_15:
    0x00046ce0 ldrb.w sb, [r6, 0x1c]                             |     sb = *((r6 + 0x1c));
                                                                 | label_12:
    0x00046ce4 adds r0, r7, 1                                    |     r0 = r7 + 1;
    0x00046ce6 mov r1, sb                                        |     r1 = sb;
    0x00046ce8 blx 0x23d20                                       |     r0 = fcn_00023d20 ();
    0x00046cec mov r7, r0                                        |     r7 = r0;
                                                                 |     if (r0 != 0) {
    0x00046cee cbz r0, 0x46d04                                   |         
    0x00046cf0 ldrd r2, r3, [r6]                                 |         __asm ("ldrd r2, r3, [r6]");
    0x00046cf4 add.w sl, r2, r3                                  |         sl = r2 + r3;
    0x00046cf8 b 0x46b8e                                         |         goto label_2;
                                                                 | label_16:
    0x00046cfa mov r0, r8                                        |         r0 = r8;
    0x00046cfc blx 0x22d14                                       |         r0 = fcn_00022d14 ();
    0x00046d00 mov sb, r0                                        |         sb = r0;
    0x00046d02 b 0x46be0                                         |         goto label_3;
                                                                 |     }
                                                                 | label_11:
    0x00046d04 mov r0, r8                                        |     r0 = r8;
    0x00046d06 blx 0x22d14                                       |     r0 = fcn_00022d14 ();
    0x00046d0a mov r4, r0                                        |     r4 = r0;
    0x00046d0c ldr r0, [r6, 0x14]                                |     r0 = *((r6 + 0x14));
    0x00046d0e cmp r4, 0                                         |     
    0x00046d10 it ne                                             |     
                                                                 |     if (r4 != 0) {
    0x00046d12 cmpne r0, 0                                       |         __asm ("cmpne r0, 0");
                                                                 |     }
    0x00046d14 it ne                                             |     
                                                                 |     if (r4 == 0) {
    0x00046d16 addne r3, r8, r4                                  |         r3 = r8 + r4;
                                                                 |     }
                                                                 |     if (r4 != 0) {
    0x00046d1a bne 0x46d32                                       |         goto label_26;
                                                                 |     }
                                                                 | label_7:
    0x00046d1c movs r0, 0                                        |     r0 = 0;
    0x00046d1e b 0x46c90                                         |     goto label_4;
                                                                 | label_21:
    0x00046d20 str r0, [r6, 0x18]                                |     *((r6 + 0x18)) = r0;
    0x00046d22 b 0x46c78                                         |     goto label_5;
                                                                 | label_22:
    0x00046d24 ldrd r0, r3, [r6, 0xc]                            |     __asm ("ldrd r0, r3, [r6, 0xc]");
    0x00046d28 ldrd r1, r2, [r3]                                 |     __asm ("ldrd r1, r2, [r3]");
    0x00046d2c blx 0x1fca4                                       |     fcn_0001fca4 ();
    0x00046d30 b 0x46c8e                                         |     goto label_6;
                                                                 |     do {
                                                                 | label_26:
    0x00046d32 ldrb r2, [r3, -0x1]!                              |         r2 = *((r3 -= 0x1));
    0x00046d36 cmp r2, 0x20                                      |         
                                                                 |         if (r2 != 0x20) {
    0x00046d38 bne 0x46d44                                       |             goto label_27;
                                                                 |         }
    0x00046d3a subs r4, 1                                        |         r4--;
    0x00046d3c bne 0x46d32                                       |         
                                                                 |     } while (r4 != 1);
    0x00046d3e b 0x46d1c                                         |     goto label_7;
                                                                 | label_8:
    0x00046d40 subs r4, 1                                        |     r4--;
                                                                 |     if (r4 == 1) {
    0x00046d42 beq 0x46d1c                                       |         goto label_7;
                                                                 |     }
                                                                 | label_27:
    0x00046d44 mov r5, r8                                        |     r5 = r8;
    0x00046d46 ldrb r3, [r8], 1                                  |     r3 = *(r8);
                                                                 |     r8++;
    0x00046d4a cmp r3, 0x20                                      |     
                                                                 |     if (r3 == 0x20) {
    0x00046d4c beq 0x46d40                                       |         goto label_8;
                                                                 |     }
    0x00046d4e ldr r3, [r0, 4]                                   |     r3 = *((r0 + 4));
    0x00046d50 cbnz r3, 0x46d8a                                  |     
                                                                 |     while (1) {
                                                                 | label_10:
    0x00046d52 ldr r3, [pc, 0x78]                                |         
    0x00046d54 mov r2, r4                                        |         r2 = r4;
    0x00046d56 mov r1, r5                                        |         r1 = r5;
    0x00046d58 add r3, pc                                        |         r3 = 0x8db2a;
    0x00046d5a blx 0x2204c                                       |         fcn_0002204c ();
    0x00046d5e b 0x46d1c                                         |         goto label_7;
                                                                 | label_25:
    0x00046d60 ldr r1, [r0, 8]                                   |         r1 = *((r0 + 8));
    0x00046d62 adds r2, r3, 1                                    |         r2 = r3 + 1;
    0x00046d64 cmp r2, r1                                        |         
                                                                 |         if (r2 < r1) {
    0x00046d66 bhs 0x46d7c                                       |             
    0x00046d68 str r2, [r0, 4]                                   |             *((r0 + 4)) = r2;
    0x00046d6a movs r1, 0x2c                                     |             r1 = 0x2c;
    0x00046d6c ldr r2, [r0]                                      |             r2 = *(r0);
    0x00046d6e strb r1, [r2, r3]                                 |             *((r2 + r3)) = r1;
    0x00046d70 movs r1, 0                                        |             r1 = 0;
    0x00046d72 ldrd r2, r3, [r0]                                 |             __asm ("ldrd r2, r3, [r0]");
    0x00046d76 strb r1, [r2, r3]                                 |             *((r2 + r3)) = r1;
    0x00046d78 ldr r0, [r6, 0x14]                                |             r0 = *((r6 + 0x14));
    0x00046d7a b 0x46cd2                                         |             goto label_9;
                                                                 |         }
    0x00046d7c movs r2, 0x2c                                     |         r2 = 0x2c;
    0x00046d7e mov.w r1, -1                                      |         r1 = -1;
    0x00046d82 blx 0x21254                                       |         g_sprintf ()
    0x00046d86 ldr r0, [r6, 0x14]                                |         r0 = *((r6 + 0x14));
    0x00046d88 b 0x46cd2                                         |         goto label_9;
    0x00046d8a ldr r1, [r0, 8]                                   |         r1 = *((r0 + 8));
    0x00046d8c adds r2, r3, 1                                    |         r2 = r3 + 1;
    0x00046d8e cmp r2, r1                                        |         
                                                                 |         if (r2 >= r1) {
    0x00046d90 bhs 0x46da6                                       |             goto label_28;
                                                                 |         }
    0x00046d92 str r2, [r0, 4]                                   |         *((r0 + 4)) = r2;
    0x00046d94 movs r1, 0x2c                                     |         r1 = 0x2c;
    0x00046d96 ldr r2, [r0]                                      |         r2 = *(r0);
    0x00046d98 strb r1, [r2, r3]                                 |         *((r2 + r3)) = r1;
    0x00046d9a movs r1, 0                                        |         r1 = 0;
    0x00046d9c ldrd r2, r3, [r0]                                 |         __asm ("ldrd r2, r3, [r0]");
    0x00046da0 strb r1, [r2, r3]                                 |         *((r2 + r3)) = r1;
    0x00046da2 ldr r0, [r6, 0x14]                                |         r0 = *((r6 + 0x14));
    0x00046da4 b 0x46d52                                         |         
                                                                 |     }
                                                                 | label_28:
    0x00046da6 movs r2, 0x2c                                     |     r2 = 0x2c;
    0x00046da8 mov.w r1, -1                                      |     r1 = -1;
    0x00046dac blx 0x21254                                       |     g_sprintf ()
    0x00046db0 ldr r0, [r6, 0x14]                                |     r0 = *((r6 + 0x14));
    0x00046db2 b 0x46d52                                         |     goto label_10;
                                                                 | label_23:
    0x00046db4 blx 0x21bd4                                       |     fcn_00021bd4 ();
    0x00046db8 add r0, sp, 0x358                                 |     r0 += arg_358h;
    0x00046dba movs r5, r0                                       |     r5 = r0;
    0x00046dbc adds r4, r1, r3                                   |     r4 = r1 + r3;
    0x00046dbe movs r0, r0                                       |     
    0x00046dc0 mrc2 p15, 2, apsr_nzcv, c9, c15, 7                |     __asm ("mrc2 p15, 2, apsr_nzcv, c9, c15, 7");
    0x00046dc4 adr r7, 0x260                                     |     r7 = 0x260;
    0x00046dc6 movs r5, r0                                       |     r5 = r0;
    0x00046dc8 adr r6, 0x380                                     |     r6 = 0x380;
    0x00046dca movs r2, r0                                       |     r2 = r0;
    0x00046dcc adr r6, 0x180                                     |     r6 = 0x180;
    0x00046dce movs r2, r0                                       |     r2 = r0;
                                                                 | }


r2dec has crashed (info: /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsyslog-ng-3.31.so.0.0.0 @ 0x52fe0).
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/libsyslog-ng-3.31.so.0.0.0 @ 0x538b8 */
                                                 | #include <stdint.h>
                                                 |  
    ; (fcn) sym.log_macro_expand_simple ()       | void log_macro_expand_simple (int16_t arg3) {
                                                 |     int16_t var_10ch;
                                                 |     int16_t var_0h;
                                                 |     int16_t var_ch;
                                                 |     int32_t var_ch_2;
                                                 |     int32_t var_14h;
                                                 |     int32_t var_14h_2;
                                                 |     int16_t var_1ch;
                                                 |     r2 = arg3;
    0x000538b8 push {r4, lr}                     |     
    0x000538ba sub sp, 0x20                      |     
    0x000538bc ldr.w lr, [pc, 0x4c]              |     
    0x000538c0 movs r4, 0                        |     r4 = 0;
    0x000538c2 ldr r3, [pc, 0x4c]                |     r3 = *(0x53912);
    0x000538c4 add lr, pc                        |     lr = 0xa71d4;
    0x000538c6 ldr.w ip, [pc, 0x4c]              |     ip = *(0x00053914);
    0x000538ca ldr.w r3, [lr, r3]                |     
    0x000538ce add ip, pc                        |     
    0x000538d0 ldr r3, [r3]                      |     r3 = imp.stdin;
    0x000538d2 str r3, [sp, 0x1c]                |     var_1ch = r3;
    0x000538d4 mov.w r3, 0                       |     r3 = 0;
    0x000538d8 str r2, [sp]                      |     *(sp) = r2;
    0x000538da add.w r2, ip, 8                   |     r2 = ip + 8;
    0x000538de add r3, sp, 0xc                   |     r3 += var_ch;
    0x000538e0 strd r2, r4, [sp, 0xc]            |     __asm ("strd r2, r4, [var_ch]");
    0x000538e4 mov r2, r4                        |     r2 = r4;
    0x000538e6 strd r4, r4, [sp, 0x14]           |     __asm ("strd r4, r4, [var_14h]");
    0x000538ea blx 0x225fc                       |     fcn_000225fc ();
    0x000538ee ldr r2, [pc, 0x28]                |     
    0x000538f0 ldr r3, [pc, 0x1c]                |     r3 = *(0x53910);
    0x000538f2 add r2, pc                        |     r2 = 0xa7210;
    0x000538f4 ldr r3, [r2, r3]                  |     r3 = imp.stdin;
    0x000538f6 ldr r2, [r3]                      |     r2 = imp.stdin;
    0x000538f8 ldr r3, [sp, 0x1c]                |     r3 = var_1ch;
    0x000538fa eors r2, r3                       |     r2 ^= r3;
    0x000538fc mov.w r3, 0                       |     r3 = 0;
                                                 |     if (r2 == r3) {
    0x00053900 bne 0x53906                       |         
    0x00053902 add sp, 0x20                      |         
    0x00053904 pop {r4, pc}                      |         
                                                 |     }
    0x00053906 blx 0x21bd4                       |     fcn_00021bd4 ();
    0x0005390a nop                               |     
                                                 |     if (r2 < r3) {
    0x0005390c blt 0x539e0                       |         void (*0x539e0)() ();
                                                 |     }
    0x0005390e movs r4, r0                       |     r4 = r0;
    0x00053910 adds r4, r1, r3                   |     r4 = r1 + r3;
    0x00053912 movs r0, r0                       |     
    0x00053914 adcs r2, r3                       |     __asm ("adcs r2, r3");
    0x00053916 movs r5, r0                       |     r5 = r0;
                                                 |     if (r5 < r0) {
    0x00053918 blt 0x53990                       |         void (*0x53990)() ();
                                                 |     }
    0x0005391a movs r4, r0                       |     r4 = 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/libsyslog-ng-3.31.so.0.0.0 @ 0x5aeb0 */
                                                                     | #include <stdint.h>
                                                                     |  
                                                                     | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                                     |  
    ; (fcn) sym.log_msg_append_format_sdata ()                       | void log_msg_append_format_sdata (int16_t arg1, int16_t arg2, int16_t arg3) {
                                                                     |     int16_t var_0h;
                                                                     |     int16_t var_fh_2;
                                                                     |     int16_t var_8h;
                                                                     |     int32_t var_4h;
                                                                     |     int16_t var_fh;
                                                                     |     int32_t var_8h_2;
                                                                     |     int32_t var_ch;
                                                                     |     int32_t var_10h;
                                                                     |     int32_t var_14h;
                                                                     |     int32_t var_18h;
                                                                     |     int32_t var_1ch;
                                                                     |     int32_t var_1ch_2;
                                                                     |     int32_t var_24h;
                                                                     |     int16_t var_2ch;
                                                                     |     int32_t var_30h;
                                                                     |     int16_t var_34h;
                                                                     |     int32_t var_38h;
                                                                     |     int16_t var_3ch;
                                                                     |     int32_t var_4ch;
                                                                     |     int16_t var_0h_2;
                                                                     |     r0 = arg1;
                                                                     |     r1 = arg2;
                                                                     |     r2 = arg3;
    0x0005aeb0 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}           |     
    0x0005aeb4 sub sp, 0x5c                                          |     
    0x0005aeb6 ldr.w r6, [pc, 0x604]                                 |     r6 = *(0x0005b4bc);
    0x0005aeba add r7, sp, 8                                         |     r7 += var_8h;
    0x0005aebc mov sl, r0                                            |     sl = r0;
    0x0005aebe str r2, [r7, 0xc]                                     |     var_ch = r2;
    0x0005aec0 mov r4, r1                                            |     r4 = r1;
    0x0005aec2 ldr.w r2, [pc, 0x5fc]                                 |     
    0x0005aec6 add r6, pc                                            |     r6 += pc;
    0x0005aec8 ldr.w r3, [pc, 0x5f8]                                 |     r3 = *(0x5b4c4);
    0x0005aecc ldr.w r0, [r6, 0x414]                                 |     r0 = case.0x5984c.0;
    0x0005aed0 add r2, pc                                            |     r2 = 0xb6396;
    0x0005aed2 ldr.w r5, [pc, 0x5f4]                                 |     
    0x0005aed6 ldr r3, [r2, r3]                                      |     
    0x0005aed8 add r5, pc                                            |     r5 = 0xb63a6;
    0x0005aeda ldr r3, [r3]                                          |     r3 = *(0xb6396);
    0x0005aedc str r3, [r7, 0x4c]                                    |     var_4ch = r3;
    0x0005aede mov.w r3, 0                                           |     r3 = 0;
    0x0005aee2 cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x0005aee4 beq.w 0x5b374                                         |         goto label_25;
                                                                     |     }
    0x0005aee8 ldr.w r3, [pc, 0x5e0]                                 |     
    0x0005aeec ldr r3, [r5, r3]                                      |     r3 = *((r5 + r3));
    0x0005aeee str r3, [r7, 0x18]                                    |     var_18h = r3;
    0x0005aef0 ldr r3, [r3]                                          |     r3 = *(0x5b4cc);
                                                                     | label_14:
    0x0005aef2 ldr r3, [r3, 4]                                       |     r3 = *((r3 + 4));
    0x0005aef4 ldr r3, [r3]                                          |     r3 = *(r3);
    0x0005aef6 add.w r3, r3, r0, lsl 3                               |     r3 += (r0 << 3);
    0x0005aefa ldrh r1, [r3, -0x4]                                   |     r1 = *((r3 - 0x4));
    0x0005aefe ands r3, r1, 4                                        |     r3 = r1 & 4;
                                                                     |     if (r3 == r1) {
    0x0005af02 beq.w 0x5b39c                                         |         goto label_26;
                                                                     |     }
    0x0005af06 lsrs r1, r1, 8                                        |     r1 >>= 8;
    0x0005af08 add.w r2, r7, 0x30                                    |     r2 += var_30h;
    0x0005af0c mov r0, sl                                            |     r0 = sl;
    0x0005af0e blx 0x21064                                           |     fcn_00021064 ();
    0x0005af12 ldr r3, [r7, 0x30]                                    |     r3 = var_30h;
    0x0005af14 mov r1, r0                                            |     r1 = r0;
    0x0005af16 mov r6, r3                                            |     r6 = r3;
                                                                     | label_15:
    0x0005af18 ldrb r2, [r1, r6]                                     |     r2 = *((r1 + r6));
                                                                     |     if (r2 != 0) {
    0x0005af1a cbz r2, 0x5af40                                       |         
    0x0005af1c adds r3, 8                                            |         r3 += 8;
    0x0005af1e mov r2, r6                                            |         r2 = r6;
    0x0005af20 bic r3, r3, 7                                         |         r3 = BIT_MASK (r3, 7);
    0x0005af24 sub.w sp, sp, r3                                      |         
    0x0005af28 add.w r0, sp, 0xf                                     |         r0 += var_fh;
    0x0005af2c bic r3, r0, 7                                         |         r3 = BIT_MASK (var_0h, );
    0x0005af30 lsrs r5, r0, 3                                        |         r5 = r0 >> 3;
    0x0005af32 mov r0, r3                                            |         r0 = r3;
    0x0005af34 blx 0x22b30                                           |         r0 = fcn_00022b30 ();
    0x0005af38 mov r1, r0                                            |         r1 = r0;
    0x0005af3a movs r3, 0                                            |         r3 = 0;
    0x0005af3c strb.w r3, [r6, r5, lsl 3]                            |         offset_0 = r5 << 3;
                                                                     |         *((r6 + offset_0)) = r3;
                                                                     |     }
    0x0005af40 ldrb r3, [r1]                                         |     r3 = *(r1);
    0x0005af42 ldrb.w ip, [sl, 0x72]                                 |     ip = *((sl + 0x72));
    0x0005af46 subs r3, 0                                            |     
    0x0005af48 it ne                                                 |     
                                                                     |     if (r3 == 0) {
    0x0005af4a movne r3, 1                                           |         r3 = 1;
                                                                     |     }
    0x0005af4c str r3, [r7, 0x14]                                    |     var_14h = r3;
    0x0005af4e cmp.w ip, 0                                           |     
                                                                     |     if (ip == 0) {
    0x0005af52 beq 0x5afae                                           |         goto label_23;
                                                                     |     }
    0x0005af54 ldr.w r3, [pc, 0x578]                                 |     
    0x0005af58 mov.w fp, 0                                           |     
    0x0005af5c strd fp, fp, [r7, 0x1c]                               |     __asm ("strd fp, fp, [var_1ch]");
    0x0005af60 add r3, pc                                            |     r3 = 0xb6434;
    0x0005af62 str r3, [r7, 4]                                       |     var_4h = r3;
    0x0005af64 ldr.w r3, [pc, 0x56c]                                 |     
    0x0005af68 add r3, pc                                            |     r3 = 0xb6440;
    0x0005af6a str r3, [r7, 8]                                       |     var_8h_2 = r3;
    0x0005af6c ldr.w r3, [pc, 0x568]                                 |     
    0x0005af70 add r3, pc                                            |     r3 = 0xb644c;
    0x0005af72 str r3, [r7]                                          |     *(r7) = r3;
                                                                     |     do {
    0x0005af74 ldr.w r3, [sl, 0x4c]                                  |         r3 = *((sl + 0x4c));
    0x0005af78 ldr.w r1, [r3, fp, lsl 2]                             |         offset_1 = fp << 2;
                                                                     |         r1 = *((r3 + offset_1));
    0x0005af7c ldr r3, [r7, 0x18]                                    |         r3 = var_18h;
    0x0005af7e ldr r3, [r3]                                          |         r3 = *(r3);
                                                                     |         if (r1 != 0) {
    0x0005af80 cbnz r1, 0x5afe8                                      |             goto label_27;
                                                                     |         }
                                                                     | label_3:
    0x0005af82 movs r3, 0                                            |         r3 = 0;
    0x0005af84 str r3, [r7, 0x2c]                                    |         var_2ch = r3;
                                                                     | label_0:
    0x0005af86 add.w fp, fp, 1                                       |         
    0x0005af8a cmp ip, fp                                            |         
    0x0005af8c bgt 0x5af74                                           |         
                                                                     |     } while (ip > fp);
    0x0005af8e ldr r3, [r7, 0x20]                                    |     r3 = var_1ch_2;
                                                                     |     if (r3 != 0) {
    0x0005af90 cbz r3, 0x5afae                                       |         
    0x0005af92 ldrd r3, r1, [r4, 4]                                  |         __asm ("ldrd r3, r1, [r4, 4]");
    0x0005af96 adds r2, r3, 1                                        |         r2 = r3 + 1;
    0x0005af98 cmp r2, r1                                            |         
                                                                     |         if (r2 >= r1) {
    0x0005af9a bhs.w 0x5b446                                         |             goto label_28;
                                                                     |         }
    0x0005af9e ldr r1, [r4]                                          |         r1 = *(r4);
    0x0005afa0 str r2, [r4, 4]                                       |         *((r4 + 4)) = r2;
    0x0005afa2 movs r2, 0x5d                                         |         r2 = 0x5d;
    0x0005afa4 strb r2, [r1, r3]                                     |         *((r1 + r3)) = r2;
    0x0005afa6 movs r1, 0                                            |         r1 = 0;
    0x0005afa8 ldrd r2, r3, [r4]                                     |         __asm ("ldrd r2, r3, [r4]");
    0x0005afac strb r1, [r2, r3]                                     |         *((r2 + r3)) = r1;
                                                                     |     }
                                                                     | label_23:
    0x0005afae ldr r3, [r7, 0x14]                                    |     r3 = var_14h;
    0x0005afb0 ldr r2, [r7, 0xc]                                     |     r2 = var_ch;
    0x0005afb2 eor r3, r3, 1                                         |     r3 ^= 1;
    0x0005afb6 cmp r2, 0                                             |     
    0x0005afb8 ite eq                                                |     
                                                                     |     if (r2 != 0) {
    0x0005afba moveq r3, 0                                           |         r3 = 0;
                                                                     |     }
                                                                     |     if (r2 == 0) {
    0x0005afbc andne r3, r3, 1                                       |         r3 &= 1;
                                                                     |     }
    0x0005afc0 cmp r3, 0                                             |     
                                                                     |     if (r3 != 0) {
    0x0005afc2 bne.w 0x5b454                                         |         goto label_29;
                                                                     |     }
                                                                     | label_24:
    0x0005afc6 ldr.w r2, [pc, 0x514]                                 |     r2 = *(0x0005b4dc);
    0x0005afca ldr.w r3, [pc, 0x4f8]                                 |     r3 = *(0x5b4c6);
    0x0005afce add r2, pc                                            |     r2 += pc;
    0x0005afd0 ldr r3, [r2, r3]                                      |     r3 = *((r2 + r3));
    0x0005afd2 ldr r2, [r3]                                          |     r2 = *(0x5b4c6);
    0x0005afd4 ldr r3, [r7, 0x4c]                                    |     r3 = var_4ch;
    0x0005afd6 eors r2, r3                                           |     r2 ^= r3;
    0x0005afd8 mov.w r3, 0                                           |     r3 = 0;
                                                                     |     if (r2 != r3) {
    0x0005afdc bne.w 0x5b4b8                                         |         goto label_30;
                                                                     |     }
    0x0005afe0 adds r7, 0x54                                         |     r7 += 0x54;
    0x0005afe2 mov sp, r7                                            |     
    0x0005afe4 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}            |     
                                                                     | label_27:
    0x0005afe8 ldr r0, [r3, 4]                                       |     r0 = *((r3 + 4));
    0x0005afea subs r2, r1, 1                                        |     r2 = r1 - 1;
    0x0005afec add.w r3, r1, 0x20000000                              |     r3 = r1 + case.0x5984c.0;
    0x0005aff0 subs r3, 1                                            |     r3--;
    0x0005aff2 ldrd r5, r6, [r0]                                     |     __asm ("ldrd r5, r6, [r0]");
    0x0005aff6 cmp r2, r6                                            |     
    0x0005aff8 add.w r0, r5, r3, lsl 3                               |     r0 = r5 + (r3 << 3);
                                                                     |     if (r2 >= r6) {
    0x0005affc bhs.w 0x5b2fa                                         |         goto label_31;
                                                                     |     }
    0x0005b000 ldr.w r6, [r5, r3, lsl 3]                             |     offset_2 = r3 << 3;
                                                                     |     r6 = *((r5 + offset_2));
    0x0005b004 ldrb.w sb, [r0, 6]                                    |     sb = *((r0 + 6));
                                                                     | label_12:
    0x0005b008 ldrh r5, [r0, 4]                                      |     r5 = *((r0 + 4));
    0x0005b00a ands r3, r5, 4                                        |     r3 = r5 & 4;
                                                                     |     if (r3 != r5) {
    0x0005b00e bne.w 0x5b196                                         |         goto label_32;
                                                                     |     }
    0x0005b012 ldr.w r8, [sl, 0x58]                                  |     r8 = *((sl + 0x58));
    0x0005b016 ldrb.w r0, [r8, 0xa]                                  |     r0 = *((r8 + 0xa));
    0x0005b01a cmp r1, r0                                            |     
                                                                     |     if (r1 < r0) {
    0x0005b01c bls.w 0x5b1c6                                         |         goto label_33;
                                                                     |     }
    0x0005b020 add.w r3, r7, 0x38                                    |     r3 += var_38h;
    0x0005b024 add.w r2, r7, 0x34                                    |     r2 += var_34h;
    0x0005b028 mov r0, r8                                            |     r0 = r8;
    0x0005b02a blx 0x22660                                           |     r0 = fcn_00022660 ();
    0x0005b02e mov r1, r0                                            |     r1 = r0;
    0x0005b030 cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x0005b032 beq.w 0x5b1e4                                         |         goto label_34;
                                                                     |     }
    0x0005b036 ldrb r3, [r1]                                         |     r3 = *(r1);
    0x0005b038 lsls r2, r3, 0x1d                                     |     r2 = r3 << 0x1d;
                                                                     |     if (r2 < r3) {
    0x0005b03a bmi.w 0x5b1e4                                         |         goto label_34;
                                                                     |     }
                                                                     | label_4:
    0x0005b03e lsls r3, r3, 0x1f                                     |     r3 <<= 0x1f;
                                                                     |     if (r3 < r3) {
    0x0005b040 bmi.w 0x5b2ec                                         |         goto label_35;
                                                                     |     }
    0x0005b044 ldr r3, [r1, 8]                                       |     r3 = *((r1 + 8));
    0x0005b046 str r3, [r7, 0x2c]                                    |     var_2ch = r3;
    0x0005b048 ldrb r3, [r1, 1]                                      |     r3 = *((r1 + 1));
    0x0005b04a add r1, r3                                            |     r1 += r3;
    0x0005b04c add.w r3, r1, 0xd                                     |     r3 = r1 + 0xd;
    0x0005b050 str r3, [r7, 0x24]                                    |     var_24h = r3;
                                                                     |     do {
    0x0005b052 ands r0, r5, 1                                        |         r0 = r5 & 1;
                                                                     |         if (r0 == r5) {
    0x0005b056 bne 0x5b076                                           |             
    0x0005b058 ldr.w r3, [pc, 0x484]                                 |             
    0x0005b05c movw r2, 0x3c3                                        |             r2 = (r2 & 0xFFFF0000) | (case.0x5984c.0 & 0xFFFF);
    0x0005b060 ldr.w r4, [pc, 0x480]                                 |             r4 = *(0x0005b4e4);
    0x0005b064 ldr.w r1, [pc, 0x480]                                 |             r1 = *(0x0005b4e8);
    0x0005b068 add r3, pc                                            |             r3 = 0xb654c;
    0x0005b06a add r4, pc                                            |             r4 += pc;
    0x0005b06c adds r3, 0xdc                                         |             r3 += 0xdc;
    0x0005b06e add r1, pc                                            |             r1 += pc;
    0x0005b070 str r4, [sp]                                          |             *(sp) = r4;
    0x0005b072 blx 0x2368c                                           |             fcn_0002368c ();
                                                                     |         }
    0x0005b076 cmp.w sb, 6                                           |         
                                                                     |         if (sb <= 6) {
    0x0005b07a bgt 0x5b09c                                           |             
    0x0005b07c ldr.w r3, [pc, 0x46c]                                 |             r3 = *(0x0005b4ec);
    0x0005b080 movw r2, 0x3c6                                        |             r2 = (r2 & 0xFFFF0000) | (case.0x5984c.0 & 0xFFFF);
    0x0005b084 ldr.w r4, [pc, 0x468]                                 |             
    0x0005b088 movs r0, 0                                            |             r0 = 0;
    0x0005b08a ldr.w r1, [pc, 0x468]                                 |             
    0x0005b08e add r3, pc                                            |             r3 += pc;
    0x0005b090 add r4, pc                                            |             r4 = 0xb6584;
    0x0005b092 adds r3, 0xdc                                         |             r3 += 0xdc;
    0x0005b094 add r1, pc                                            |             r1 = 0xb658e;
    0x0005b096 str r4, [sp]                                          |             *(sp) = r4;
    0x0005b098 blx 0x2368c                                           |             fcn_0002368c ();
                                                                     |         }
    0x0005b09c lsrs r5, r5, 8                                        |         r5 >>= 8;
    0x0005b09e add.w r8, r6, 7                                       |         r8 = r6 + 7;
                                                                     |         if (r5 != r5) {
    0x0005b0a2 beq 0x5b0dc                                           |             
    0x0005b0a4 add.w r0, r8, r5                                      |             r0 = r8 + r5;
    0x0005b0a8 subs r3, r0, r6                                       |             r3 = r0 - r6;
    0x0005b0aa cmp r3, sb                                            |             
    0x0005b0ac it eq                                                 |             
                                                                     |             if (r3 != sb) {
    0x0005b0ae subeq r5, sb, 7                                       |                 r5 = sb - 7;
                                                                     |             }
                                                                     |             if (r3 == sb) {
    0x0005b0b2 beq 0x5b1ae                                           |                 goto label_36;
                                                                     |             }
                                                                     |             if (r3 < sb) {
    0x0005b0b4 bge 0x5b0bc                                           |                 
    0x0005b0b6 ldrb r3, [r0]                                         |                 r3 = *(r0);
    0x0005b0b8 cmp r3, 0x2e                                          |                 
                                                                     |                 if (r3 == 0x2e) {
    0x0005b0ba beq 0x5b0ee                                           |                     goto label_37;
                                                                     |                 }
                                                                     |             }
    0x0005b0bc ldr.w r3, [pc, 0x438]                                 |             r3 = *(0x0005b4f8);
    0x0005b0c0 mov.w r2, 0x3d0                                       |             r2 = case.0x5984c.0;
    0x0005b0c4 ldr.w r4, [pc, 0x434]                                 |             
    0x0005b0c8 movs r0, 0                                            |             r0 = 0;
    0x0005b0ca ldr.w r1, [pc, 0x434]                                 |             
    0x0005b0ce add r3, pc                                            |             r3 += pc;
    0x0005b0d0 add r4, pc                                            |             r4 = 0xb65d0;
    0x0005b0d2 adds r3, 0xdc                                         |             r3 += 0xdc;
    0x0005b0d4 add r1, pc                                            |             r1 = 0xb65da;
    0x0005b0d6 str r4, [sp]                                          |             *(sp) = r4;
    0x0005b0d8 blx 0x2368c                                           |             fcn_0002368c ();
                                                                     |         }
    0x0005b0dc sub.w r5, sb, 7                                       |         r5 = sb - 7;
    0x0005b0e0 movs r1, 0x2e                                         |         r1 = 0x2e;
    0x0005b0e2 mov r2, r5                                            |         r2 = r5;
    0x0005b0e4 mov r0, r8                                            |         r0 = r8;
    0x0005b0e6 blx 0x1f7f0                                           |         r0 = fcn_0001f7f0 ();
    0x0005b0ea cmp r0, 0                                             |         
                                                                     |         if (r0 == 0) {
    0x0005b0ec beq 0x5b1ae                                           |             goto label_36;
                                                                     |         }
                                                                     | label_37:
    0x0005b0ee adds r3, r0, 1                                        |         r3 = r0 + 1;
    0x0005b0f0 sub.w r5, r0, r8                                      |         r5 = r0 - r8;
    0x0005b0f4 subs r6, r3, r6                                       |         r6 = r3 - r6;
    0x0005b0f6 str r3, [r7, 0x10]                                    |         var_10h = r3;
    0x0005b0f8 sub.w r6, sb, r6                                      |         r6 = sb - r6;
                                                                     | label_2:
    0x0005b0fc ldr r3, [r7, 0x1c]                                    |         r3 = var_1ch;
    0x0005b0fe ldr r0, [r7, 0x20]                                    |         r0 = var_1ch_2;
    0x0005b100 subs r2, r5, r3                                       |         r2 = r5 - r3;
    0x0005b102 it ne                                                 |         
                                                                     |         if (r2 == r5) {
    0x0005b104 movne r2, 1                                           |             r2 = 1;
                                                                     |         }
    0x0005b106 cmp r0, 0                                             |         
    0x0005b108 it eq                                                 |         
                                                                     |         if (r0 != 0) {
    0x0005b10a orreq r2, r2, 1                                       |             r2 |= 1;
                                                                     |         }
    0x0005b10e cmp r2, 0                                             |         
                                                                     |         if (r2 != 0) {
    0x0005b110 bne 0x5b1ea                                           |             goto label_38;
                                                                     |         }
    0x0005b112 mov r2, r5                                            |         r2 = r5;
    0x0005b114 mov r1, r8                                            |         r1 = r8;
    0x0005b116 blx 0x1fe30                                           |         r0 = fcn_0001fe30 ();
                                                                     |         if (r0 != 0) {
    0x0005b11a cbz r0, 0x5b162                                       |             
                                                                     | label_5:
    0x0005b11c ldrd r2, r0, [r4, 4]                                  |             __asm ("ldrd r2, r0, [r4, 4]");
    0x0005b120 adds r1, r2, 1                                        |             r1 = r2 + 1;
    0x0005b122 cmp r1, r0                                            |             
                                                                     |             if (r1 >= r0) {
    0x0005b124 bhs.w 0x5b3d4                                         |                 goto label_39;
                                                                     |             }
    0x0005b128 str r1, [r4, 4]                                       |             *((r4 + 4)) = r1;
    0x0005b12a movs r0, 0x5d                                         |             r0 = 0x5d;
    0x0005b12c ldr r1, [r4]                                          |             r1 = *(r4);
    0x0005b12e strb r0, [r1, r2]                                     |             *((r1 + r2)) = r0;
    0x0005b130 movs r0, 0                                            |             r0 = 0;
    0x0005b132 ldrd r1, r2, [r4]                                     |             __asm ("ldrd r1, r2, [r4]");
    0x0005b136 strb r0, [r1, r2]                                     |             *((r1 + r2)) = r0;
                                                                     | label_17:
    0x0005b138 ldrd r2, r0, [r4, 4]                                  |             __asm ("ldrd r2, r0, [r4, 4]");
    0x0005b13c adds r1, r2, 1                                        |             r1 = r2 + 1;
    0x0005b13e cmp r1, r0                                            |             
                                                                     |             if (r1 >= r0) {
    0x0005b140 bhs 0x5b1fa                                           |                 goto label_40;
                                                                     |             }
                                                                     | label_6:
    0x0005b142 str r1, [r4, 4]                                       |             *((r4 + 4)) = r1;
    0x0005b144 movs r0, 0x5b                                         |             r0 = 0x5b;
    0x0005b146 ldr r1, [r4]                                          |             r1 = *(r4);
    0x0005b148 strb r0, [r1, r2]                                     |             *((r1 + r2)) = r0;
    0x0005b14a movs r0, 0                                            |             r0 = 0;
    0x0005b14c ldrd r1, r2, [r4]                                     |             __asm ("ldrd r1, r2, [r4]");
    0x0005b150 strb r0, [r1, r2]                                     |             *((r1 + r2)) = r0;
                                                                     | label_7:
    0x0005b152 mov r2, r5                                            |             r2 = r5;
    0x0005b154 mov r1, r8                                            |             r1 = r8;
    0x0005b156 mov r0, r4                                            |             r0 = r4;
    0x0005b158 str r5, [r7, 0x1c]                                    |             var_1ch = r5;
    0x0005b15a str.w r8, [r7, 0x20]                                  |             __asm ("str.w r8, [var_1ch_2]");
    0x0005b15e bl 0x59b2c                                            |             fcn_00059b2c (r0, r1, r2);
                                                                     |         }
    0x0005b162 ldr r3, [r7, 0x14]                                    |         r3 = var_14h;
    0x0005b164 ldr r2, [r7, 0xc]                                     |         r2 = var_ch;
    0x0005b166 eor r3, r3, 1                                         |         r3 ^= 1;
    0x0005b16a cmp r2, 0                                             |         
    0x0005b16c ite eq                                                |         
                                                                     |         if (r2 != 0) {
    0x0005b16e moveq r3, 0                                           |             r3 = 0;
                                                                     |         }
                                                                     |         if (r2 == 0) {
    0x0005b170 andne r3, r3, 1                                       |             r3 &= 1;
                                                                     |         }
                                                                     |         if (r3 != 0) {
    0x0005b174 cbz r3, 0x5b18c                                       |             
    0x0005b176 mov r0, r8                                            |             r0 = r8;
    0x0005b178 ldr r1, [r7, 8]                                       |             r1 = var_8h_2;
    0x0005b17a movs r2, 5                                            |             r2 = 5;
    0x0005b17c blx 0x1fe30                                           |             r0 = fcn_0001fe30 ();
    0x0005b180 mov r8, r0                                            |             r8 = r0;
    0x0005b182 cmp r0, 0                                             |             
                                                                     |             if (r0 == 0) {
    0x0005b184 beq.w 0x5b30c                                         |                 goto label_41;
                                                                     |             }
    0x0005b188 movs r3, 0                                            |             r3 = 0;
    0x0005b18a str r3, [r7, 0x14]                                    |             var_14h = r3;
                                                                     |         }
                                                                     | label_13:
    0x0005b18c cmp r6, 0                                             |         
                                                                     |         if (r6 != 0) {
    0x0005b18e bne 0x5b208                                           |             goto label_42;
                                                                     |         }
                                                                     | label_1:
    0x0005b190 ldrb.w ip, [sl, 0x72]                                 |         ip = *((sl + 0x72));
    0x0005b194 b 0x5af86                                             |         goto label_0;
                                                                     | label_32:
    0x0005b196 lsrs r1, r5, 8                                        |         r1 = r5 >> 8;
    0x0005b198 add.w r2, r7, 0x2c                                    |         r2 += var_2ch;
    0x0005b19c mov r0, sl                                            |         r0 = sl;
    0x0005b19e blx 0x21064                                           |         fcn_00021064 ();
    0x0005b1a2 str r0, [r7, 0x24]                                    |         var_24h = r0;
                                                                     | label_11:
    0x0005b1a4 ldr r3, [r7, 0x24]                                    |         r3 = var_24h;
    0x0005b1a6 cmp r3, 0                                             |         
    0x0005b1a8 bne.w 0x5b052                                         |         
                                                                     |     } while (r3 != 0);
    0x0005b1ac b 0x5b190                                             |     goto label_1;
                                                                     | label_36:
    0x0005b1ae cmp r5, 0                                             |     
                                                                     |     if (r5 != 0) {
    0x0005b1b0 bne.w 0x5b302                                         |         goto label_43;
                                                                     |     }
    0x0005b1b4 ldr r3, [pc, 0x34c]                                   |     
    0x0005b1b6 mov r6, r5                                            |     r6 = r5;
    0x0005b1b8 ldr.w r8, [pc, 0x34c]                                 |     
    0x0005b1bc movs r5, 4                                            |     r5 = 4;
    0x0005b1be add r3, pc                                            |     r3 = 0xb66c6;
    0x0005b1c0 add r8, pc                                            |     r8 = 0xb66cc;
    0x0005b1c2 str r3, [r7, 0x10]                                    |     var_10h = r3;
    0x0005b1c4 b 0x5b0fc                                             |     goto label_2;
                                                                     | label_33:
    0x0005b1c6 add.w r2, r8, r2, lsl 2                               |     r2 = r8 + (r2 << 2);
    0x0005b1ca ldr r2, [r2, 0xc]                                     |     r2 = *((r2 + 0xc));
    0x0005b1cc str r3, [r7, 0x38]                                    |     var_38h = r3;
    0x0005b1ce cmp r2, 0                                             |     
                                                                     |     if (r2 == 0) {
    0x0005b1d0 beq.w 0x5af82                                         |         goto label_3;
                                                                     |     }
    0x0005b1d4 ldr.w r1, [r8]                                        |     r1 = *(r8);
    0x0005b1d8 subs r1, r1, r2                                       |     r1 -= r2;
    0x0005b1da add r1, r8                                            |     r1 += r8;
    0x0005b1dc ldrb r3, [r1]                                         |     r3 = *(r1);
    0x0005b1de lsls r2, r3, 0x1d                                     |     r2 = r3 << 0x1d;
                                                                     |     if (r2 >= r3) {
    0x0005b1e0 bpl.w 0x5b03e                                         |         goto label_4;
                                                                     |     }
                                                                     | label_34:
    0x0005b1e4 ldrb.w ip, [sl, 0x72]                                 |     ip = *((sl + 0x72));
    0x0005b1e8 b 0x5af82                                             |     goto label_3;
                                                                     | label_38:
    0x0005b1ea ldr r3, [r7, 0x20]                                    |     r3 = var_1ch_2;
    0x0005b1ec cmp r3, 0                                             |     
                                                                     |     if (r3 != 0) {
    0x0005b1ee bne 0x5b11c                                           |         goto label_5;
                                                                     |     }
    0x0005b1f0 ldrd r2, r0, [r4, 4]                                  |     __asm ("ldrd r2, r0, [r4, 4]");
    0x0005b1f4 adds r1, r2, 1                                        |     r1 = r2 + 1;
    0x0005b1f6 cmp r1, r0                                            |     
                                                                     |     if (r1 <= r0) {
    0x0005b1f8 blo 0x5b142                                           |         goto label_6;
                                                                     |     }
                                                                     | label_40:
    0x0005b1fa movs r2, 0x5b                                         |     r2 = 0x5b;
    0x0005b1fc mov.w r1, -1                                          |     r1 = -1;
    0x0005b200 mov r0, r4                                            |     r0 = r4;
    0x0005b202 blx 0x21254                                           |     g_sprintf ()
    0x0005b206 b 0x5b152                                             |     goto label_7;
                                                                     | label_42:
    0x0005b208 ldrd r3, r1, [r4, 4]                                  |     __asm ("ldrd r3, r1, [r4, 4]");
    0x0005b20c adds r2, r3, 1                                        |     r2 = r3 + 1;
    0x0005b20e cmp r2, r1                                            |     
                                                                     |     if (r2 >= r1) {
    0x0005b210 bhs.w 0x5b404                                         |         goto label_44;
                                                                     |     }
    0x0005b214 str r2, [r4, 4]                                       |     *((r4 + 4)) = r2;
    0x0005b216 movs r1, 0x20                                         |     r1 = 0x20;
    0x0005b218 ldr r2, [r4]                                          |     r2 = *(r4);
    0x0005b21a strb r1, [r2, r3]                                     |     *((r2 + r3)) = r1;
    0x0005b21c movs r1, 0                                            |     r1 = 0;
    0x0005b21e ldrd r2, r3, [r4]                                     |     __asm ("ldrd r2, r3, [r4]");
    0x0005b222 strb r1, [r2, r3]                                     |     *((r2 + r3)) = r1;
                                                                     | label_19:
    0x0005b224 ldr r1, [r7, 0x10]                                    |     r1 = var_10h;
    0x0005b226 mov r2, r6                                            |     r2 = r6;
    0x0005b228 mov r0, r4                                            |     r0 = r4;
    0x0005b22a bl 0x59b2c                                            |     fcn_00059b2c (r0, r1, r2);
    0x0005b22e ldr r1, [r7, 4]                                       |     r1 = var_4h;
    0x0005b230 mov r0, r4                                            |     r0 = r4;
    0x0005b232 blx 0x23764                                           |     fcn_00023764 ();
    0x0005b236 ldr r5, [r7, 0x2c]                                    |     r5 = var_2ch;
    0x0005b238 cmp r5, 0                                             |     
                                                                     |     if (r5 <= 0) {
    0x0005b23a ble 0x5b2b0                                           |         goto label_45;
                                                                     |     }
    0x0005b23c ldr r3, [r7, 0x24]                                    |     r3 = var_24h;
    0x0005b23e subs r5, 1                                            |     r5--;
    0x0005b240 movs r6, 0                                            |     r6 = 0;
    0x0005b242 mov.w r8, 0x5c                                        |     r8 = 0x5c;
    0x0005b246 add r5, r3                                            |     r5 += r3;
    0x0005b248 add.w sb, r3, -1                                      |     sb = r3 + -1;
    0x0005b24c b 0x5b27e                                             |     
                                                                     |     while (r2 < 0x22) {
    0x0005b24e cmp ip, r1                                            |         
                                                                     |         if (ip < r1) {
    0x0005b250 bls 0x5b2de                                           |             goto label_46;
                                                                     |         }
    0x0005b252 ldr r3, [r4]                                          |         r3 = *(r4);
    0x0005b254 str r1, [r4, 4]                                       |         *((r4 + 4)) = r1;
    0x0005b256 strb.w r8, [r3, r0]                                   |         *((r3 + r0)) = r8;
    0x0005b25a ldrd r2, r3, [r4]                                     |         __asm ("ldrd r2, r3, [r4]");
    0x0005b25e strb r6, [r2, r3]                                     |         *((r2 + r3)) = r6;
                                                                     | label_10:
    0x0005b260 ldrd r3, r0, [r4, 4]                                  |         __asm ("ldrd r3, r0, [r4, 4]");
    0x0005b264 ldrb.w r2, [sb]                                       |         r2 = *(sb);
    0x0005b268 adds r1, r3, 1                                        |         r1 = r3 + 1;
    0x0005b26a cmp r1, r0                                            |         
                                                                     |         if (r1 >= r0) {
    0x0005b26c bhs 0x5b2d2                                           |             goto label_47;
                                                                     |         }
    0x0005b26e str r1, [r4, 4]                                       |         *((r4 + 4)) = r1;
    0x0005b270 ldr r1, [r4]                                          |         r1 = *(r4);
    0x0005b272 strb r2, [r1, r3]                                     |         *((r1 + r3)) = r2;
    0x0005b274 ldrd r2, r3, [r4]                                     |         __asm ("ldrd r2, r3, [r4]");
    0x0005b278 strb r6, [r2, r3]                                     |         *((r2 + r3)) = r6;
                                                                     | label_9:
    0x0005b27a cmp r5, sb                                            |         
                                                                     |         if (r5 == sb) {
    0x0005b27c beq 0x5b2b0                                           |             goto label_45;
                                                                     |         }
                                                                     | label_8:
    0x0005b27e ldrb r2, [sb, 1]!                                     |         r2 = *((sb += 1));
    0x0005b282 ldrd r0, ip, [r4, 4]                                  |         __asm ("ldrd r0, ip, [r4, 4]");
    0x0005b286 sub.w r3, r2, 0x5c                                    |         r3 = r2 - 0x5c;
    0x0005b28a cmp r2, 0x22                                          |         
    0x0005b28c it ne                                                 |         
                                                                     |         if (r2 != 0x22) {
    0x0005b28e cmpne r3, 1                                           |             __asm ("cmpne r3, 1");
                                                                     |         }
    0x0005b290 add.w r1, r0, 1                                       |         r1 = r0 + 1;
    0x0005b294 ite ls                                                |         
                                                                     |         if (r2 > 0x22) {
    0x0005b296 movls r3, 1                                           |             r3 = 1;
                                                                     |         }
                                                                     |         if (r2 <= 0x22) {
    0x0005b298 movhi r3, 0                                           |             r3 = 0;
                                                                     |         }
    0x0005b29a bls 0x5b24e                                           |         
                                                                     |     }
    0x0005b29c cmp ip, r1                                            |     
                                                                     |     if (ip < r1) {
    0x0005b29e bls 0x5b2d2                                           |         goto label_47;
                                                                     |     }
    0x0005b2a0 str r1, [r4, 4]                                       |     *((r4 + 4)) = r1;
    0x0005b2a2 cmp r5, sb                                            |     
    0x0005b2a4 ldr r1, [r4]                                          |     r1 = *(r4);
    0x0005b2a6 strb r2, [r1, r0]                                     |     *((r1 + r0)) = r2;
    0x0005b2a8 ldrd r1, r2, [r4]                                     |     __asm ("ldrd r1, r2, [r4]");
    0x0005b2ac strb r3, [r1, r2]                                     |     *((r1 + r2)) = r3;
                                                                     |     if (r5 != sb) {
    0x0005b2ae bne 0x5b27e                                           |         goto label_8;
                                                                     |     }
                                                                     | label_45:
    0x0005b2b0 ldrd r3, r1, [r4, 4]                                  |     __asm ("ldrd r3, r1, [r4, 4]");
    0x0005b2b4 adds r2, r3, 1                                        |     r2 = r3 + 1;
    0x0005b2b6 cmp r2, r1                                            |     
                                                                     |     if (r2 >= r1) {
    0x0005b2b8 bhs.w 0x5b3f6                                         |         goto label_48;
                                                                     |     }
    0x0005b2bc str r2, [r4, 4]                                       |     *((r4 + 4)) = r2;
    0x0005b2be movs r1, 0x22                                         |     r1 = 0x22;
    0x0005b2c0 ldr r2, [r4]                                          |     r2 = *(r4);
    0x0005b2c2 strb r1, [r2, r3]                                     |     *((r2 + r3)) = r1;
    0x0005b2c4 movs r1, 0                                            |     r1 = 0;
    0x0005b2c6 ldrd r2, r3, [r4]                                     |     __asm ("ldrd r2, r3, [r4]");
    0x0005b2ca strb r1, [r2, r3]                                     |     *((r2 + r3)) = r1;
    0x0005b2cc ldrb.w ip, [sl, 0x72]                                 |     ip = *((sl + 0x72));
    0x0005b2d0 b 0x5af86                                             |     goto label_0;
                                                                     | label_47:
    0x0005b2d2 mov.w r1, -1                                          |     r1 = -1;
    0x0005b2d6 mov r0, r4                                            |     r0 = r4;
    0x0005b2d8 blx 0x21254                                           |     g_sprintf ()
    0x0005b2dc b 0x5b27a                                             |     goto label_9;
                                                                     | label_46:
    0x0005b2de movs r2, 0x5c                                         |     r2 = 0x5c;
    0x0005b2e0 mov.w r1, -1                                          |     r1 = -1;
    0x0005b2e4 mov r0, r4                                            |     r0 = r4;
    0x0005b2e6 blx 0x21254                                           |     g_sprintf ()
    0x0005b2ea b 0x5b260                                             |     goto label_10;
                                                                     | label_35:
    0x0005b2ec mov r0, r8                                            |     r0 = r8;
    0x0005b2ee add.w r2, r7, 0x2c                                    |     r2 += var_2ch;
    0x0005b2f2 blx 0x210b8                                           |     fcn_000210b8 ();
    0x0005b2f6 str r0, [r7, 0x24]                                    |     var_24h = r0;
    0x0005b2f8 b 0x5b1a4                                             |     goto label_11;
                                                                     | label_31:
    0x0005b2fa mov.w sb, 0                                           |     sb = 0;
    0x0005b2fe mov r6, sb                                            |     r6 = sb;
    0x0005b300 b 0x5b008                                             |     goto label_12;
                                                                     | label_43:
    0x0005b302 ldr r3, [pc, 0x208]                                   |     
    0x0005b304 movs r6, 0                                            |     r6 = 0;
    0x0005b306 add r3, pc                                            |     r3 = 0xb6818;
    0x0005b308 str r3, [r7, 0x10]                                    |     var_10h = r3;
    0x0005b30a b 0x5b0fc                                             |     goto label_2;
                                                                     | label_41:
    0x0005b30c add.w sb, r7, 0x3c                                    |     sb += var_3ch;
    0x0005b310 ldr r3, [r7, 0xc]                                     |     r3 = var_ch;
    0x0005b312 ldr r2, [r7]                                          |     r2 = *(r7);
    0x0005b314 movs r1, 0x10                                         |     r1 = 0x10;
    0x0005b316 mov r0, sb                                            |     r0 = sb;
    0x0005b318 blx 0x232d4                                           |     fcn_000232d4 ();
    0x0005b31c ldrd r3, r1, [r4, 4]                                  |     __asm ("ldrd r3, r1, [r4, 4]");
    0x0005b320 adds r2, r3, 1                                        |     r2 = r3 + 1;
    0x0005b322 cmp r2, r1                                            |     
                                                                     |     if (r2 >= r1) {
    0x0005b324 bhs.w 0x5b42a                                         |         goto label_49;
                                                                     |     }
    0x0005b328 str r2, [r4, 4]                                       |     *((r4 + 4)) = r2;
    0x0005b32a movs r1, 0x20                                         |     r1 = 0x20;
    0x0005b32c ldr r2, [r4]                                          |     r2 = *(r4);
    0x0005b32e strb r1, [r2, r3]                                     |     *((r2 + r3)) = r1;
    0x0005b330 ldrd r2, r3, [r4]                                     |     __asm ("ldrd r2, r3, [r4]");
    0x0005b334 strb.w r8, [r2, r3]                                   |     *((r2 + r3)) = r8;
                                                                     | label_21:
    0x0005b338 ldr r1, [pc, 0x1d4]                                   |     
    0x0005b33a movs r2, 0xc                                          |     r2 = 0xc;
    0x0005b33c mov r0, r4                                            |     r0 = r4;
    0x0005b33e add r1, pc                                            |     r1 = 0xb6852;
    0x0005b340 blx 0x1ffec                                           |     fcn_0001ffec ();
    0x0005b344 mov r0, sb                                            |     r0 = sb;
    0x0005b346 blx 0x22d14                                           |     fcn_00022d14 ();
    0x0005b34a mov r1, sb                                            |     r1 = sb;
    0x0005b34c mov r2, r0                                            |     r2 = r0;
    0x0005b34e mov r0, r4                                            |     r0 = r4;
    0x0005b350 blx 0x1ffec                                           |     fcn_0001ffec ();
    0x0005b354 ldrd r3, r1, [r4, 4]                                  |     __asm ("ldrd r3, r1, [r4, 4]");
    0x0005b358 adds r2, r3, 1                                        |     r2 = r3 + 1;
    0x0005b35a cmp r2, r1                                            |     
                                                                     |     if (r2 >= r1) {
    0x0005b35c bhs 0x5b438                                           |         goto label_50;
                                                                     |     }
    0x0005b35e str r2, [r4, 4]                                       |     *((r4 + 4)) = r2;
    0x0005b360 movs r1, 0x22                                         |     r1 = 0x22;
    0x0005b362 ldr r2, [r4]                                          |     r2 = *(r4);
    0x0005b364 strb r1, [r2, r3]                                     |     *((r2 + r3)) = r1;
    0x0005b366 movs r1, 0                                            |     r1 = 0;
    0x0005b368 ldrd r2, r3, [r4]                                     |     __asm ("ldrd r2, r3, [r4]");
    0x0005b36c strb r1, [r2, r3]                                     |     *((r2 + r3)) = r1;
                                                                     | label_22:
    0x0005b36e movs r3, 1                                            |     r3 = 1;
    0x0005b370 str r3, [r7, 0x14]                                    |     var_14h = r3;
    0x0005b372 b 0x5b18c                                             |     goto label_13;
                                                                     | label_25:
    0x0005b374 ldr r0, [pc, 0x19c]                                   |     
    0x0005b376 add r0, pc                                            |     r0 = 0xb688e;
    0x0005b378 blx 0x23550                                           |     fcn_00023550 ();
    0x0005b37c ldr r3, [pc, 0x14c]                                   |     
    0x0005b37e str.w r0, [r6, 0x414]                                 |     __asm ("str.w r0, case.0x5984c.0");
    0x0005b382 ldr r3, [r5, r3]                                      |     r3 = *((r5 + r3));
    0x0005b384 str r3, [r7, 0x18]                                    |     var_18h = r3;
    0x0005b386 ldr r3, [r3]                                          |     r3 = *(0x5b4cc);
    0x0005b388 cmp r0, 0                                             |     
                                                                     |     if (r0 != 0) {
    0x0005b38a bne.w 0x5aef2                                         |         goto label_14;
                                                                     |     }
                                                                     |     do {
                                                                     | label_16:
    0x0005b38e movs r6, 0                                            |         r6 = 0;
    0x0005b390 mov r3, r6                                            |         r3 = r6;
    0x0005b392 str r6, [r7, 0x30]                                    |         var_30h = r6;
                                                                     | label_20:
    0x0005b394 ldr r2, [pc, 0x180]                                   |         r2 = *(0x5b518);
    0x0005b396 ldr r2, [r5, r2]                                      |         r2 = *((r5 + r2));
    0x0005b398 ldr r1, [r2]                                          |         r1 = *(0x5b518);
    0x0005b39a b 0x5af18                                             |         goto label_15;
                                                                     | label_26:
    0x0005b39c ldr.w r6, [sl, 0x58]                                  |         r6 = *((sl + 0x58));
    0x0005b3a0 ldrb r2, [r6, 0xa]                                    |         r2 = *((r6 + 0xa));
    0x0005b3a2 cmp r2, r0                                            |         
                                                                     |         if (r2 >= r0) {
    0x0005b3a4 bhs 0x5b3e2                                           |             goto label_51;
                                                                     |         }
    0x0005b3a6 mov r1, r0                                            |         r1 = r0;
    0x0005b3a8 add.w r3, r7, 0x38                                    |         r3 += var_38h;
    0x0005b3ac add.w r2, r7, 0x34                                    |         r2 += var_34h;
    0x0005b3b0 mov r0, r6                                            |         r0 = r6;
    0x0005b3b2 blx 0x22660                                           |         r0 = fcn_00022660 ();
    0x0005b3b6 mov r1, r0                                            |         r1 = r0;
    0x0005b3b8 cmp r0, 0                                             |         
    0x0005b3ba beq 0x5b38e                                           |         
                                                                     |     } while (r0 == 0);
                                                                     | label_18:
    0x0005b3bc ldrb r3, [r1]                                         |     r3 = *(r1);
    0x0005b3be lsls r2, r3, 0x1d                                     |     r2 = r3 << 0x1d;
                                                                     |     if (r2 < r3) {
    0x0005b3c0 bmi 0x5b38e                                           |         goto label_16;
                                                                     |     }
    0x0005b3c2 lsls r0, r3, 0x1f                                     |     r0 = r3 << 0x1f;
                                                                     |     if (r0 < r3) {
    0x0005b3c4 bmi 0x5b412                                           |         goto label_52;
                                                                     |     }
    0x0005b3c6 ldr r6, [r1, 8]                                       |     r6 = *((r1 + 8));
    0x0005b3c8 str r6, [r7, 0x30]                                    |     var_30h = r6;
    0x0005b3ca ldrb r3, [r1, 1]                                      |     r3 = *((r1 + 1));
    0x0005b3cc add r1, r3                                            |     r1 += r3;
    0x0005b3ce mov r3, r6                                            |     r3 = r6;
    0x0005b3d0 adds r1, 0xd                                          |     r1 += 0xd;
    0x0005b3d2 b 0x5af18                                             |     goto label_15;
                                                                     | label_39:
    0x0005b3d4 movs r2, 0x5d                                         |     r2 = 0x5d;
    0x0005b3d6 mov.w r1, -1                                          |     r1 = -1;
    0x0005b3da mov r0, r4                                            |     r0 = r4;
    0x0005b3dc blx 0x21254                                           |     g_sprintf ()
    0x0005b3e0 b 0x5b138                                             |     goto label_17;
                                                                     | label_51:
    0x0005b3e2 add.w r0, r6, r0, lsl 2                               |     r0 = r6 + (r0 << 2);
    0x0005b3e6 ldr r2, [r0, 8]                                       |     r2 = *((r0 + 8));
    0x0005b3e8 str r3, [r7, 0x38]                                    |     var_38h = r3;
    0x0005b3ea cmp r2, 0                                             |     
                                                                     |     if (r2 == 0) {
    0x0005b3ec beq 0x5b38e                                           |         goto label_16;
                                                                     |     }
    0x0005b3ee ldr r1, [r6]                                          |     r1 = *(r6);
    0x0005b3f0 subs r1, r1, r2                                       |     r1 -= r2;
    0x0005b3f2 add r1, r6                                            |     r1 += r6;
    0x0005b3f4 b 0x5b3bc                                             |     goto label_18;
                                                                     | label_48:
    0x0005b3f6 movs r2, 0x22                                         |     r2 = 0x22;
    0x0005b3f8 mov.w r1, -1                                          |     r1 = -1;
    0x0005b3fc mov r0, r4                                            |     r0 = r4;
    0x0005b3fe blx 0x21254                                           |     g_sprintf ()
    0x0005b402 b 0x5b190                                             |     goto label_1;
                                                                     | label_44:
    0x0005b404 movs r2, 0x20                                         |     r2 = 0x20;
    0x0005b406 mov.w r1, -1                                          |     r1 = -1;
    0x0005b40a mov r0, r4                                            |     r0 = r4;
    0x0005b40c blx 0x21254                                           |     g_sprintf ()
    0x0005b410 b 0x5b224                                             |     goto label_19;
                                                                     | label_52:
    0x0005b412 mov r0, r6                                            |     r0 = r6;
    0x0005b414 add.w r2, r7, 0x30                                    |     r2 += var_30h;
    0x0005b418 blx 0x210b8                                           |     fcn_000210b8 ();
    0x0005b41c ldr r3, [r7, 0x30]                                    |     r3 = var_30h;
    0x0005b41e mov r1, r0                                            |     r1 = r0;
    0x0005b420 mov r6, r3                                            |     r6 = r3;
    0x0005b422 cmp r0, 0                                             |     
                                                                     |     if (r0 != 0) {
    0x0005b424 bne.w 0x5af18                                         |         goto label_15;
                                                                     |     }
    0x0005b428 b 0x5b394                                             |     goto label_20;
                                                                     | label_49:
    0x0005b42a movs r2, 0x20                                         |     r2 = 0x20;
    0x0005b42c mov.w r1, -1                                          |     r1 = -1;
    0x0005b430 mov r0, r4                                            |     r0 = r4;
    0x0005b432 blx 0x21254                                           |     g_sprintf ()
    0x0005b436 b 0x5b338                                             |     goto label_21;
                                                                     | label_50:
    0x0005b438 movs r2, 0x22                                         |     r2 = 0x22;
    0x0005b43a mov.w r1, -1                                          |     r1 = -1;
    0x0005b43e mov r0, r4                                            |     r0 = r4;
    0x0005b440 blx 0x21254                                           |     g_sprintf ()
    0x0005b444 b 0x5b36e                                             |     goto label_22;
                                                                     | label_28:
    0x0005b446 movs r2, 0x5d                                         |     r2 = 0x5d;
    0x0005b448 mov.w r1, -1                                          |     r1 = -1;
    0x0005b44c mov r0, r4                                            |     r0 = r4;
    0x0005b44e blx 0x21254                                           |     g_sprintf ()
    0x0005b452 b 0x5afae                                             |     goto label_23;
                                                                     | label_29:
    0x0005b454 ldr r2, [pc, 0xc4]                                    |     
    0x0005b456 add.w r5, r7, 0x3c                                    |     r5 += var_3ch;
    0x0005b45a ldr r3, [r7, 0xc]                                     |     r3 = var_ch;
    0x0005b45c movs r1, 0x10                                         |     r1 = 0x10;
    0x0005b45e mov r0, r5                                            |     r0 = r5;
    0x0005b460 add r2, pc                                            |     r2 = 0xb6980;
    0x0005b462 blx 0x232d4                                           |     fcn_000232d4 ();
    0x0005b466 ldrd r3, r1, [r4, 4]                                  |     __asm ("ldrd r3, r1, [r4, 4]");
    0x0005b46a adds r2, r3, 1                                        |     r2 = r3 + 1;
    0x0005b46c cmp r2, r1                                            |     
                                                                     |     if (r2 >= r1) {
    0x0005b46e bhs 0x5b4aa                                           |         goto label_53;
                                                                     |     }
    0x0005b470 ldr r1, [r4]                                          |     r1 = *(r4);
    0x0005b472 movs r0, 0x5b                                         |     r0 = 0x5b;
    0x0005b474 str r2, [r4, 4]                                       |     *((r4 + 4)) = r2;
    0x0005b476 strb r0, [r1, r3]                                     |     *((r1 + r3)) = r0;
    0x0005b478 movs r1, 0                                            |     r1 = 0;
    0x0005b47a ldrd r2, r3, [r4]                                     |     __asm ("ldrd r2, r3, [r4]");
    0x0005b47e strb r1, [r2, r3]                                     |     *((r2 + r3)) = r1;
                                                                     |     do {
    0x0005b480 ldr r1, [pc, 0x9c]                                    |         
    0x0005b482 movs r2, 0x11                                         |         r2 = 0x11;
    0x0005b484 mov r0, r4                                            |         r0 = r4;
    0x0005b486 add r1, pc                                            |         r1 = 0xb69aa;
    0x0005b488 blx 0x1ffec                                           |         fcn_0001ffec ();
    0x0005b48c mov r0, r5                                            |         r0 = r5;
    0x0005b48e blx 0x22d14                                           |         fcn_00022d14 ();
    0x0005b492 mov r1, r5                                            |         r1 = r5;
    0x0005b494 mov r2, r0                                            |         r2 = r0;
    0x0005b496 mov r0, r4                                            |         r0 = r4;
    0x0005b498 blx 0x1ffec                                           |         fcn_0001ffec ();
    0x0005b49c ldr r1, [pc, 0x84]                                    |         
    0x0005b49e movs r2, 2                                            |         r2 = 2;
    0x0005b4a0 mov r0, r4                                            |         r0 = r4;
    0x0005b4a2 add r1, pc                                            |         r1 = 0xb69ca;
    0x0005b4a4 blx 0x1ffec                                           |         fcn_0001ffec ();
    0x0005b4a8 b 0x5afc6                                             |         goto label_24;
                                                                     | label_53:
    0x0005b4aa movs r2, 0x5b                                         |         r2 = 0x5b;
    0x0005b4ac mov.w r1, -1                                          |         r1 = -1;
    0x0005b4b0 mov r0, r4                                            |         r0 = r4;
    0x0005b4b2 blx 0x21254                                           |         g_sprintf ()
    0x0005b4b6 b 0x5b480                                             |         
                                                                     |     } while (1);
                                                                     | label_30:
    0x0005b4b8 blx 0x21bd4                                           |     fcn_00021bd4 ();
    0x0005b4bc ldm r4, {r1, r4}                                      |     r1 = *(r4);
                                                                     |     r4 = *((r4 + 4));
    0x0005b4be movs r4, r0                                           |     r4 = r0;
    0x0005b4c0 str r4, [r3, 0x54]                                    |     *((r3 + 0x54)) = r4;
    0x0005b4c2 movs r4, r0                                           |     r4 = r0;
    0x0005b4c4 adds r4, r1, r3                                       |     r4 = r1 + r3;
    0x0005b4c6 movs r0, r0                                           |     
    0x0005b4c8 str r4, [r2, 0x54]                                    |     *((r2 + 0x54)) = r4;
    0x0005b4ca movs r4, r0                                           |     r4 = r0;
    0x0005b4cc adds r0, r7, r4                                       |     r0 = r7 + r4;
    0x0005b4ce movs r0, r0                                           |     
    0x0005b4d0 adds r4, r2, 0                                        |     r4 = r2 + 0;
    0x0005b4d2 movs r3, r0                                           |     r3 = r0;
    0x0005b4d4 subs r4, r6, r7                                       |     r4 = r6 - r7;
    0x0005b4d6 movs r3, r0                                           |     r3 = r0;
    0x0005b4d8 adds r7, 0xa8                                         |     r7 += 0xa8;
    0x0005b4da movs r3, r0                                           |     r3 = r0;
    0x0005b4dc str r6, [r3, 0x44]                                    |     *((r3 + 0x44)) = r6;
    0x0005b4de movs r4, r0                                           |     r4 = r0;
    0x0005b4e0 adds r4, r4, 4                                        |     r4 += 4;
    0x0005b4e2 movs r3, r0                                           |     r3 = r0;
    0x0005b4e4 subs r6, r1, r2                                       |     r6 = r1 - r2;
    0x0005b4e6 movs r3, r0                                           |     r3 = r0;
    0x0005b4e8 adds r6, r3, r1                                       |     r6 = r3 + r1;
    0x0005b4ea movs r3, r0                                           |     r3 = r0;
    0x0005b4ec adds r6, r7, 3                                        |     r6 = r7 + 3;
    0x0005b4ee movs r3, r0                                           |     r3 = r0;
    0x0005b4f0 subs r4, r0, r2                                       |     r4 = r0 - r2;
    0x0005b4f2 movs r3, r0                                           |     r3 = r0;
    0x0005b4f4 adds r0, r7, r0                                       |     r0 = r7 + r0;
    0x0005b4f6 movs r3, r0                                           |     r3 = r0;
    0x0005b4f8 adds r6, r7, 2                                        |     r6 = r7 + 2;
    0x0005b4fa movs r3, r0                                           |     r3 = r0;
    0x0005b4fc subs r0, r3, r1                                       |     r0 = r3 - r1;
    0x0005b4fe movs r3, r0                                           |     r3 = r0;
    0x0005b500 asrs r0, r7, 0x1f                                     |     r0 = r7 >> 0x1f;
    0x0005b502 movs r3, r0                                           |     r3 = r0;
    0x0005b504 adds r6, r3, r4                                       |     r6 = r3 + r4;
    0x0005b506 movs r1, r0                                           |     r1 = r0;
    0x0005b508 lsls r0, r6, 0x1e                                     |     r0 = r6 << 0x1e;
    0x0005b50a movs r1, r0                                           |     r1 = r0;
    0x0005b50c asrs r6, r2, 0x1f                                     |     r6 = r2 >> 0x1f;
    0x0005b50e movs r1, r0                                           |     r1 = r0;
    0x0005b510 adds r6, r4, r0                                       |     r6 = r4 + r0;
    0x0005b512 movs r3, r0                                           |     r3 = r0;
    0x0005b514 invalid                                               |     
                                                                     | }
    ; assembly                                           | /* r2dec pseudo code output */
                                                         | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsyslog-ng-3.31.so.0.0.0 @ 0x59eb0 */
                                                         | #include <stdint.h>
                                                         |  
    ; (fcn) sym.log_msg_append_tags_callback ()          | void log_msg_append_tags_callback (uint32_t arg3, int16_t arg4) {
                                                         |     int16_t var_0h;
                                                         |     r2 = arg3;
                                                         |     r3 = arg4;
    0x00059eb0 sasxmi fp, r5, r0                         |     __asm ("sasxmi fp, r5, r0");
    0x00059eb4 ldrd r4, r2, [r3]                         |     __asm ("ldrd r4, r2, [r3]");
    0x00059eb8 sub sp, 0xc                               |     
                                                         |     if (r4 == 0) {
    0x00059eba cbz r4, 0x59ed8                           |         goto label_1;
                                                         |     }
    0x00059ebc ldr r3, [r4, 4]                           |     r3 = *((r4 + 4));
    0x00059ebe cmp r2, r3                                |     
    0x00059ec0 blo 0x59ef2                               |     
                                                         |     while (1) {
                                                         | label_0:
    0x00059ec2 ldr r3, [pc, 0x58]                        |         
    0x00059ec4 mov r0, r4                                |         r0 = r4;
    0x00059ec6 mov.w r2, -1                              |         r2 = -1;
    0x00059eca mov r1, r5                                |         r1 = r5;
    0x00059ecc add r3, pc                                |         r3 = 0xb3dee;
    0x00059ece blx 0x2204c                               |         fcn_0002204c ();
    0x00059ed2 movs r0, 1                                |         r0 = 1;
    0x00059ed4 add sp, 0xc                               |         
    0x00059ed6 pop {r4, r5, pc}                          |         
                                                         | label_1:
    0x00059ed8 ldr r3, [pc, 0x44]                        |         
    0x00059eda movw r2, 0x437                            |         r2 = (r2 & 0xFFFF0000) | (case.0x5984c.0 & 0xFFFF);
    0x00059ede ldr r5, [pc, 0x44]                        |         
    0x00059ee0 mov r0, r4                                |         r0 = r4;
    0x00059ee2 ldr r1, [pc, 0x44]                        |         
    0x00059ee4 add r3, pc                                |         r3 = 0xb3e08;
    0x00059ee6 add r5, pc                                |         r5 = 0xb3e10;
    0x00059ee8 adds r3, 0x28                             |         r3 += 0x28;
    0x00059eea add r1, pc                                |         r1 = 0xb3e18;
    0x00059eec str r5, [sp]                              |         *(sp) = r5;
    0x00059eee blx 0x2368c                               |         fcn_0002368c ();
    0x00059ef2 ldr r1, [r4, 8]                           |         r1 = *((r4 + 8));
    0x00059ef4 adds r2, r3, 1                            |         r2 = r3 + 1;
    0x00059ef6 cmp r2, r1                                |         
                                                         |         if (r2 >= r1) {
    0x00059ef8 bhs 0x59f0c                               |             goto label_2;
                                                         |         }
    0x00059efa ldr r1, [r4]                              |         r1 = *(r4);
    0x00059efc str r2, [r4, 4]                           |         *((r4 + 4)) = r2;
    0x00059efe movs r2, 0x2c                             |         r2 = 0x2c;
    0x00059f00 strb r2, [r1, r3]                         |         *((r1 + r3)) = r2;
    0x00059f02 movs r1, 0                                |         r1 = 0;
    0x00059f04 ldrd r2, r3, [r4]                         |         __asm ("ldrd r2, r3, [r4]");
    0x00059f08 strb r1, [r2, r3]                         |         *((r2 + r3)) = r1;
    0x00059f0a b 0x59ec2                                 |         
                                                         |     }
                                                         | label_2:
    0x00059f0c movs r2, 0x2c                             |     r2 = 0x2c;
    0x00059f0e mov.w r1, -1                              |     r1 = -1;
    0x00059f12 mov r0, r4                                |     r0 = r4;
    0x00059f14 blx 0x21254                               |     g_sprintf ()
    0x00059f18 b 0x59ec2                                 |     goto label_0;
                                                         | }
    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsyslog-ng-3.31.so.0.0.0 @ 0x541f4 */
                                                                 | #include <stdint.h>
                                                                 |  
                                                                 | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                                 |  
    ; (fcn) sym.log_template_compiler_process_token ()           | void log_template_compiler_process_token (int16_t arg_1h, int16_t arg1, int16_t arg2) {
                                                                 |     int16_t var_0h;
                                                                 |     int16_t var_4h;
                                                                 |     int16_t var_ch;
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
    0x000541f4 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}       |     
    0x000541f8 mov r4, r0                                        |     r4 = r0;
    0x000541fa ldr r0, [r0, 8]                                   |     r0 = *((r0 + 8));
    0x000541fc movs r5, 0                                        |     r5 = 0;
    0x000541fe sub sp, 0x14                                      |     
    0x00054200 str r5, [r4, 0x10]                                |     *((r4 + 0x10)) = r5;
    0x00054202 ldrb r2, [r0]                                     |     r2 = *(r0);
    0x00054204 ldr r6, [pc, 0x3bc]                               |     
    0x00054206 cmp r2, 0x24                                      |     
    0x00054208 add r6, pc                                        |     r6 = 0xa87d0;
                                                                 |     if (r2 == 0x24) {
    0x0005420a beq 0x54260                                       |         goto label_14;
                                                                 |     }
    0x0005420c cmp r2, 0x5c                                      |     
                                                                 |     if (r2 == 0x5c) {
    0x0005420e beq 0x5421a                                       |         goto label_15;
                                                                 |     }
                                                                 |     if (r2 != 0) {
    0x00054210 cbnz r2, 0x54250                                  |         goto label_16;
                                                                 |     }
                                                                 |     do {
                                                                 | label_1:
    0x00054212 movs r0, 1                                        |         r0 = 1;
                                                                 | label_3:
    0x00054214 add sp, 0x14                                      |         
    0x00054216 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |         
                                                                 | label_15:
    0x0005421a ldr r2, [r4]                                      |         r2 = *(r4);
    0x0005421c ldr r3, [r2, 0x10]                                |         r3 = *((r2 + 0x10));
                                                                 |         if (r3 == 0) {
    0x0005421e cbz r3, 0x54250                                   |             goto label_16;
                                                                 |         }
    0x00054220 ldr r3, [r3]                                      |         r3 = *(r3);
    0x00054222 cmp.w r3, 0x304                                   |         
                                                                 |         if (r3 > 0x304) {
    0x00054226 bgt 0x54250                                       |             goto label_16;
                                                                 |         }
    0x00054228 ldr r0, [pc, 0x39c]                               |         
    0x0005422a ldr r1, [r2, 8]                                   |         r1 = *((r2 + 8));
    0x0005422c add r0, pc                                        |         r0 = 0xa87f8;
    0x0005422e blx 0x21ea4                                       |         fcn_00021ea4 ();
    0x00054232 ldr r1, [pc, 0x398]                               |         
    0x00054234 mov r2, r0                                        |         r2 = r0;
    0x00054236 mov r3, r5                                        |         r3 = r5;
    0x00054238 movs r0, 4                                        |         r0 = 4;
    0x0005423a add r1, pc                                        |         r1 = 0xa880c;
    0x0005423c blx 0x1f2b0                                       |         fcn_0001f2b0 ();
    0x00054240 blx 0x23348                                       |         g_string_append ();
    0x00054244 ldr r3, [r4, 8]                                   |         r3 = *((r4 + 8));
    0x00054246 adds r2, r3, 1                                    |         r2 = r3 + 1;
    0x00054248 str r2, [r4, 8]                                   |         *((r4 + 8)) = r2;
    0x0005424a ldrb r2, [r3, 1]                                  |         r2 = *((r3 + 1));
    0x0005424c cmp r2, 0                                         |         
    0x0005424e beq 0x54212                                       |         
                                                                 |     } while (r2 == 0);
                                                                 | label_16:
    0x00054250 mov r0, r4                                        |     r0 = r4;
    0x00054252 ldr r1, [r4, 0xc]                                 |     r1 = *((r4 + 0xc));
    0x00054254 bl 0x5415c                                        |     fcn_0005415c (r0, r1);
    0x00054258 movs r0, 1                                        |     r0 = 1;
    0x0005425a add sp, 0x14                                      |     
    0x0005425c pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |     
                                                                 | label_14:
    0x00054260 add.w r8, r0, 1                                   |     r8 = r0 + 1;
    0x00054264 mov r7, r1                                        |     r7 = r1;
    0x00054266 str.w r8, [r4, 8]                                 |     __asm ("str.w r8, [r4, 8]");
    0x0005426a ldrb.w sb, [r0, 1]                                |     sb = *((r0 + 1));
    0x0005426e cmp.w sb, 0x7b                                    |     
                                                                 |     if (sb == 0x7b) {
    0x00054272 beq 0x54306                                       |         goto label_17;
                                                                 |     }
    0x00054274 cmp.w sb, 0x28                                    |     
                                                                 |     if (sb == 0x28) {
    0x00054278 beq 0x54376                                       |         goto label_18;
                                                                 |     }
    0x0005427a bic r3, sb, 0x20                                  |     r3 = BIT_MASK (sb, 0x20);
    0x0005427e subs r3, 0x41                                     |     r3 -= 0x41;
    0x00054280 cmp.w sb, 0x5f                                    |     
    0x00054284 it ne                                             |     
                                                                 |     if (sb != 0x5f) {
    0x00054286 cmpne r3, 0x19                                    |         __asm ("cmpne r3, 0x19");
                                                                 |     }
    0x00054288 ite ls                                            |     
                                                                 |     if (sb > 0x5f) {
    0x0005428a movls r3, 1                                       |         r3 = 1;
                                                                 |     }
                                                                 |     if (sb <= 0x5f) {
    0x0005428c movhi r3, 0                                       |         r3 = 0;
                                                                 |     }
                                                                 |     if (sb > 0x5f) {
    0x0005428e bhi 0x542c8                                       |         goto label_19;
                                                                 |     }
                                                                 | label_2:
    0x00054290 mov r1, r8                                        |     r1 = r8;
                                                                 |     do {
                                                                 | label_0:
    0x00054292 mov r2, r1                                        |         r2 = r1;
    0x00054294 adds r1, 1                                        |         r1++;
    0x00054296 str r1, [r4, 8]                                   |         *((r4 + 8)) = r1;
    0x00054298 ldrb r5, [r1]                                     |         r5 = *(r1);
    0x0005429a bic r3, r5, 0x20                                  |         r3 = BIT_MASK (r5, 0x20);
    0x0005429e subs r3, 0x41                                     |         r3 -= 0x41;
    0x000542a0 cmp r5, 0x5f                                      |         
    0x000542a2 it ne                                             |         
                                                                 |         if (r5 != 0x5f) {
    0x000542a4 cmpne r3, 0x19                                    |             __asm ("cmpne r3, 0x19");
                                                                 |         }
    0x000542a6 ite ls                                            |         
                                                                 |         if (r5 > 0x5f) {
    0x000542a8 movls r3, 1                                       |             r3 = 1;
                                                                 |         }
                                                                 |         if (r5 <= 0x5f) {
    0x000542aa movhi r3, 0                                       |             r3 = 0;
                                                                 |         }
    0x000542ac bls 0x54292                                       |         
                                                                 |     } while (r5 < 0x5f);
    0x000542ae subs r5, 0x30                                     |     r5 -= 0x30;
    0x000542b0 cmp r5, 9                                         |     
                                                                 |     if (r5 < 9) {
    0x000542b2 bls 0x54292                                       |         goto label_0;
                                                                 |     }
    0x000542b4 subs r2, r2, r0                                   |     r2 -= r0;
    0x000542b6 mov r1, r8                                        |     r1 = r8;
    0x000542b8 mov r0, r4                                        |     r0 = r4;
    0x000542ba bl 0x54198                                        |     fcn_00054198 (r0, r1, r2, r3);
                                                                 | label_5:
    0x000542be ldr r0, [r4, 0xc]                                 |     r0 = *((r4 + 0xc));
    0x000542c0 movs r1, 0                                        |     r1 = 0;
    0x000542c2 blx 0x1fc8c                                       |     fcn_0001fc8c ();
    0x000542c6 b 0x54212                                         |     goto label_1;
                                                                 | label_19:
    0x000542c8 sub.w r1, sb, 0x30                                |     r1 = sb - 0x30;
    0x000542cc cmp r1, 9                                         |     
                                                                 |     if (r1 < 9) {
    0x000542ce bls 0x54290                                       |         goto label_2;
                                                                 |     }
    0x000542d0 cmp.w sb, 0x24                                    |     
    0x000542d4 ldr r0, [r4, 0xc]                                 |     r0 = *((r4 + 0xc));
                                                                 |     if (sb == 0x24) {
    0x000542d6 bne 0x542e4                                       |         
                                                                 | label_4:
    0x000542d8 mov r1, r0                                        |         r1 = r0;
    0x000542da mov r0, r4                                        |         r0 = r4;
    0x000542dc bl 0x5415c                                        |         fcn_0005415c (r0, r1);
    0x000542e0 movs r0, 1                                        |         r0 = 1;
    0x000542e2 b 0x54214                                         |         goto label_3;
                                                                 |     }
    0x000542e4 ldrd r1, r6, [r0, 4]                              |     __asm ("ldrd r1, r6, [r0, 4]");
    0x000542e8 adds r5, r1, 1                                    |     r5 = r1 + 1;
    0x000542ea cmp r5, r6                                        |     
                                                                 |     if (r5 >= r6) {
    0x000542ec bhs.w 0x54564                                     |         goto label_20;
                                                                 |     }
    0x000542f0 str r5, [r0, 4]                                   |     *((r0 + 4)) = r5;
    0x000542f2 ldr r5, [r0]                                      |     r5 = *(r0);
    0x000542f4 strb r2, [r5, r1]                                 |     *((r5 + r1)) = r2;
    0x000542f6 ldrd r1, r2, [r0]                                 |     __asm ("ldrd r1, r2, [r0]");
    0x000542f8 asrs r0, r0, 8                                    |     r0 >>= 8;
    0x000542fa strb r3, [r1, r2]                                 |     *((r1 + r2)) = r3;
                                                                 | label_12:
    0x000542fc cmp.w sb, 0                                       |     
                                                                 |     if (sb == 0) {
    0x00054300 beq 0x54212                                       |         goto label_1;
                                                                 |     }
    0x00054302 ldr r0, [r4, 0xc]                                 |     r0 = *((r4 + 0xc));
    0x00054304 b 0x542d8                                         |     goto label_4;
                                                                 | label_17:
    0x00054306 add.w sl, r0, 2                                   |     sl = r0 + 2;
    0x0005430a movs r1, 0x7d                                     |     r1 = 0x7d;
    0x0005430c mov r0, sl                                        |     r0 = sl;
    0x0005430e str.w sl, [r4, 8]                                 |     __asm ("str.w sl, [r4, 8]");
    0x00054312 blx 0x23d20                                       |     r0 = fcn_00023d20 ();
    0x00054316 mov r6, r0                                        |     r6 = r0;
    0x00054318 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0005431a beq.w 0x5459a                                     |         goto label_21;
                                                                 |     }
    0x0005431e sub.w r8, r0, r8                                  |     r8 = r0 - r8;
    0x00054322 add.w fp, r0, 1                                   |     
    0x00054326 add.w r8, r8, -1                                  |     r8 += -1;
    0x0005432a movs r1, 0x3a                                     |     r1 = 0x3a;
    0x0005432c mov r2, r8                                        |     r2 = r8;
    0x0005432e mov r0, sl                                        |     r0 = sl;
    0x00054330 str.w fp, [r4, 8]                                 |     __asm ("str.w fp, [r4, 8]");
    0x00054334 blx 0x235c8                                       |     r0 = fcn_000235c8 ();
    0x00054338 mov sb, r0                                        |     sb = r0;
    0x0005433a cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0005433c beq.w 0x5456e                                     |         goto label_22;
                                                                 |     }
    0x00054340 cmp fp, r0                                        |     
    0x00054342 sub.w r8, r0, sl                                  |     r8 = r0 - sl;
                                                                 |     if (fp >= r0) {
    0x00054346 bls 0x54362                                       |         
    0x00054348 ldrb r3, [r0, 1]                                  |         r3 = *((r0 + 1));
    0x0005434a cmp r3, 0x2d                                      |         
                                                                 |         if (r3 != 0x2d) {
    0x0005434c bne.w 0x54572                                     |             goto label_23;
                                                                 |         }
    0x00054350 subs r6, r6, r0                                   |         r6 -= r0;
    0x00054352 adds r0, 2                                        |         r0 += 2;
    0x00054354 subs r1, r6, 2                                    |         r1 = r6 - 2;
    0x00054356 blx 0x1fb6c                                       |         r0 = fcn_0001fb6c ();
    0x0005435a mov r5, r0                                        |         r5 = r0;
    0x0005435c cmp r0, 0                                         |         
                                                                 |         if (r0 == 0) {
    0x0005435e beq.w 0x54572                                     |             goto label_23;
                                                                 |         }
                                                                 |     }
                                                                 | label_13:
    0x00054362 mov r0, r4                                        |     r0 = r4;
    0x00054364 bl 0x540e0                                        |     fcn_000540e0 (r0);
    0x00054368 mov r3, r5                                        |     r3 = r5;
    0x0005436a mov r2, r8                                        |     r2 = r8;
    0x0005436c mov r1, sl                                        |     r1 = sl;
    0x0005436e mov r0, r4                                        |     r0 = r4;
    0x00054370 bl 0x54198                                        |     fcn_00054198 (r0, r1, r2, r3);
    0x00054374 b 0x542be                                         |     goto label_5;
                                                                 | label_18:
    0x00054376 blx 0x22110                                       |     r0 = fcn_00022110 ();
    0x0005437a mov r8, r0                                        |     r8 = r0;
    0x0005437c movs r0, 0x20                                     |     r0 = 0x20;
    0x0005437e blx 0x21b30                                       |     isatty (r0);
    0x00054382 ldr r3, [r4, 8]                                   |     r3 = *((r4 + 8));
    0x00054384 mov r5, r0                                        |     r5 = r0;
    0x00054386 adds r1, r3, 1                                    |     r1 = r3 + 1;
    0x00054388 str r1, [r4, 8]                                   |     *((r4 + 8)) = r1;
    0x0005438a ldrb r3, [r3, 1]                                  |     r3 = *((r3 + 1));
    0x0005438c cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x0005438e beq 0x5442a                                       |         goto label_10;
                                                                 |     }
    0x00054390 ldr r2, [pc, 0x23c]                               |     r2 = *(0x545d0);
    0x00054392 ldr r2, [r6, r2]                                  |     r2 = *((r6 + r2));
    0x00054394 ldr r6, [r2]                                      |     r6 = *(0x545d0);
    0x00054396 b 0x543a0                                         |     
                                                                 |     while (r2 != r3) {
    0x00054398 str r1, [r4, 8]                                   |         *((r4 + 8)) = r1;
    0x0005439a ldrb r3, [r1]                                     |         r3 = *(r1);
    0x0005439c cmp r3, 0                                         |         
                                                                 |         if (r3 == 0) {
    0x0005439e beq 0x5442a                                       |             goto label_10;
                                                                 |         }
    0x000543a0 ldrh.w r3, [r6, r3, lsl 1]                        |         offset_0 = r3 << 1;
                                                                 |         r3 = *((r6 + offset_0));
    0x000543a4 adds r1, 1                                        |         r1++;
    0x000543a6 ands r2, r3, 0x100                                |         r2 = r3 & case.0x5984c.0;
    0x000543aa bne 0x54398                                       |         
                                                                 |     }
    0x000543ac ldr r3, [r4, 8]                                   |     r3 = *((r4 + 8));
    0x000543ae mov.w sl, 1                                       |     sl = 1;
    0x000543b2 mov sb, r2                                        |     sb = r2;
    0x000543b4 ldrb r1, [r3]                                     |     r1 = *(r3);
    0x000543b6 mov fp, r3                                        |     
    0x000543b8 cmp r1, 0                                         |     
                                                                 |     if (r1 == 0) {
    0x000543ba beq 0x5442a                                       |         goto label_10;
                                                                 |     }
                                                                 |     do {
    0x000543bc cmp r1, 0x29                                      |         
                                                                 |         if (r1 > 0x29) {
    0x000543be bhi 0x544be                                       |             goto label_24;
                                                                 |         }
    0x000543c0 cmp r1, 0x21                                      |         
                                                                 |         if (r1 < 0x21) {
    0x000543c2 bls 0x5447c                                       |             goto label_8;
                                                                 |         }
    0x000543c4 sub.w r0, r1, 0x22                                |         r0 = r1 - 0x22;
    0x000543c8 cmp r0, 7                                         |         
                                                                 |         if (r0 > 7) {
    0x000543ca bhi 0x5447c                                       |             goto label_8;
                                                                 |         }
                                                                 |         /* switch table (8 cases) at 0x543d0 */
    0x000543cc tbb [pc, r0]                                      |         __asm ("tbb case.0x5984c.0");
    0x000543d8 add.w r3, fp, 1                                   |         r3 += arg_1h;
    0x000543dc mov r0, r3                                        |         r0 = r3;
    0x000543de str r3, [sp, 0xc]                                 |         var_ch = r3;
    0x000543e0 blx 0x23d20                                       |         r0 = fcn_00023d20 ();
    0x000543e4 cmp r0, 0                                         |         
                                                                 |         if (r0 == 0) {
    0x000543e6 beq 0x544d8                                       |             goto label_25;
                                                                 |         }
    0x000543e8 ldr r3, [sp, 0xc]                                 |         r3 = var_ch;
    0x000543ea cmp.w sl, 1                                       |         
    0x000543ee itee ne                                           |         
                                                                 |         if (sl == 1) {
    0x000543f0 movne r1, fp                                      |             r1 = fp;
                                                                 |         }
                                                                 |         if (sl != 1) {
    0x000543f2 moveq r2, r0                                      |             r2 = r0;
                                                                 |         }
                                                                 |         if (sl != 1) {
    0x000543f4 moveq r1, r3                                      |             r1 = r3;
                                                                 |         }
    0x000543f6 add.w r3, r0, 1                                   |         r3 = r0 + 1;
    0x000543fa it ne                                             |         
                                                                 |         if (sl == 1) {
    0x000543fc movne r2, r3                                      |             r2 = r3;
                                                                 |         }
    0x000543fe str r3, [r4, 8]                                   |         *((r4 + 8)) = r3;
    0x00054400 subs r2, r2, r1                                   |         r2 -= r1;
    0x00054402 mov r0, r5                                        |         r0 = r5;
    0x00054404 blx 0x1ffec                                       |         fcn_0001ffec ();
    0x00054408 ldr.w fp, [r4, 8]                                 |         fp = *((r4 + 8));
    0x0005440c movs r2, 1                                        |         r2 = 1;
    0x0005440e mov r3, fp                                        |         r3 = fp;
                                                                 | label_6:
    0x00054410 ldrb.w r1, [fp]                                   |         r1 = *(fp);
    0x00054414 cmp r1, 0                                         |         
    0x00054416 bne 0x543bc                                       |         
                                                                 |     } while (r1 != 0);
                                                                 |     if (r2 != 0) {
                                                                 |         do {
    0x00054418 cbz r2, 0x5442a                                   |             
    0x0005441a ldrd r0, r1, [r5]                                 |             __asm ("ldrd r0, r1, [r5]");
    0x0005441e blx 0x1fb6c                                       |             r0 = fcn_0001fb6c ();
    0x00054422 mov r1, r0                                        |             r1 = r0;
    0x00054424 mov r0, r8                                        |             r0 = r8;
    0x00054426 blx 0x233b4                                       |             fcn_000233b4 ();
                                                                 |         }
                                                                 | label_10:
    0x0005442a movs r1, 0                                        |         r1 = 0;
    0x0005442c mov r0, r8                                        |         r0 = r8;
    0x0005442e blx 0x233b4                                       |         fcn_000233b4 ();
    0x00054432 movs r1, 1                                        |         r1 = 1;
    0x00054434 mov r0, r5                                        |         r0 = r5;
    0x00054436 blx 0x229a8                                       |         fcn_000229a8 ();
    0x0005443a ldr r3, [r4, 8]                                   |         r3 = *((r4 + 8));
    0x0005443c ldrb r2, [r3]                                     |         r2 = *(r3);
    0x0005443e cmp r2, 0x29                                      |         
                                                                 |         if (r2 != 0x29) {
    0x00054440 bne 0x544ea                                       |             goto label_26;
                                                                 |         }
    0x00054442 adds r3, 1                                        |         r3++;
    0x00054444 mov r0, r4                                        |         r0 = r4;
    0x00054446 str r3, [r4, 8]                                   |         *((r4 + 8)) = r3;
    0x00054448 bl 0x540e0                                        |         fcn_000540e0 (r0);
    0x0005444c ldrd r3, r2, [r8]                                 |         __asm ("ldrd r3, r2, [r8]");
    0x00054450 subs r2, 1                                        |         r2--;
                                                                 |         if (r2 != 1) {
    0x00054452 beq 0x54472                                       |             
    0x00054454 ldr r1, [r4, 0xc]                                 |             r1 = *((r4 + 0xc));
    0x00054456 ldr r1, [r1]                                      |             r1 = *(r1);
    0x00054458 str r7, [sp, 4]                                   |             var_4h = r7;
    0x0005445a ldr r0, [r4, 0x10]                                |             r0 = *((r4 + 0x10));
    0x0005445c str r0, [sp]                                      |             *(sp) = r0;
    0x0005445e ldr r0, [r4]                                      |             r0 = *(r4);
    0x00054460 blx 0x217cc                                       |             r0 = fcn_000217cc ();
    0x00054464 mov r1, r0                                        |             r1 = r0;
    0x00054466 cmp r0, 0                                         |             
                                                                 |             if (r0 == 0) {
    0x00054468 beq 0x5450a                                       |                 goto label_27;
                                                                 |             }
    0x0005446a ldr r0, [r4, 4]                                   |             r0 = *((r4 + 4));
    0x0005446c blx 0x21c38                                       |             fcn_00021c38 ();
    0x00054470 str r0, [r4, 4]                                   |             *((r4 + 4)) = r0;
                                                                 |         }
    0x00054472 movs r1, 0                                        |         r1 = 0;
    0x00054474 mov r0, r8                                        |         r0 = r8;
    0x00054476 blx 0x23c10                                       |         fcn_00023c10 ();
    0x0005447a b 0x542be                                         |         goto label_5;
                                                                 | label_8:
    0x0005447c cmp.w sl, 1                                       |         
    0x00054480 ldr r0, [r5, 4]                                   |         r0 = *((r5 + 4));
                                                                 |         if (sl == 1) {
    0x00054482 beq 0x5451e                                       |             goto label_28;
                                                                 |         }
                                                                 | label_7:
    0x00054484 ldr r1, [r5, 8]                                   |         r1 = *((r5 + 8));
    0x00054486 ldrb r2, [r3]                                     |         r2 = *(r3);
    0x00054488 adds r3, r0, 1                                    |         r3 = r0 + 1;
    0x0005448a cmp r3, r1                                        |         
                                                                 |         if (r3 >= r1) {
    0x0005448c bhs 0x544cc                                       |             goto label_29;
                                                                 |         }
    0x0005448e str r3, [r5, 4]                                   |         *((r5 + 4)) = r3;
    0x00054490 ldr r3, [r5]                                      |         r3 = *(r5);
    0x00054492 strb r2, [r3, r0]                                 |         *((r3 + r0)) = r2;
    0x00054494 ldrd r2, r3, [r5]                                 |         __asm ("ldrd r2, r3, [r5]");
    0x00054498 strb.w sb, [r2, r3]                               |         *((r2 + r3)) = sb;
                                                                 | label_9:
    0x0005449c ldr r3, [r4, 8]                                   |         r3 = *((r4 + 8));
    0x0005449e movs r2, 1                                        |         r2 = 1;
    0x000544a0 add.w fp, r3, 1                                   |         
    0x000544a4 mov r3, fp                                        |         r3 = fp;
    0x000544a6 str.w fp, [r4, 8]                                 |         __asm ("str.w fp, [r4, 8]");
    0x000544aa b 0x54410                                         |         goto label_6;
    0x000544ac subs.w sl, sl, 1                                  |         sl--;
    0x000544b0 beq 0x54418                                       |         
                                                                 |     } while (sl == sl);
    0x000544b2 ldr r0, [r5, 4]                                   |     r0 = *((r5 + 4));
    0x000544b4 b 0x54484                                         |     goto label_7;
    0x000544b6 ldr r0, [r5, 4]                                   |     r0 = *((r5 + 4));
    0x000544b8 add.w sl, sl, 1                                   |     sl++;
    0x000544bc b 0x54484                                         |     goto label_7;
                                                                 | label_24:
    0x000544be cmp r1, 0x5c                                      |     
                                                                 |     if (r1 != 0x5c) {
    0x000544c0 bne 0x5447c                                       |         goto label_8;
                                                                 |     }
    0x000544c2 add.w r3, fp, 1                                   |     r3 += arg_1h;
    0x000544c6 ldr r0, [r5, 4]                                   |     r0 = *((r5 + 4));
    0x000544c8 str r3, [r4, 8]                                   |     *((r4 + 8)) = r3;
    0x000544ca b 0x54484                                         |     goto label_7;
                                                                 | label_29:
    0x000544cc mov.w r1, -1                                      |     r1 = -1;
    0x000544d0 mov r0, r5                                        |     r0 = r5;
    0x000544d2 blx 0x21254                                       |     g_sprintf ()
    0x000544d6 b 0x5449c                                         |     goto label_9;
                                                                 | label_25:
    0x000544d8 mov r1, r0                                        |     r1 = r0;
    0x000544da mov r0, r8                                        |     r0 = r8;
    0x000544dc blx 0x233b4                                       |     fcn_000233b4 ();
    0x000544e0 movs r1, 1                                        |     r1 = 1;
    0x000544e2 mov r0, r5                                        |     r0 = r5;
    0x000544e4 blx 0x229a8                                       |     fcn_000229a8 ();
    0x000544e8 ldr r3, [r4, 8]                                   |     r3 = *((r4 + 8));
                                                                 | label_26:
    0x000544ea ldr r2, [r4]                                      |     r2 = *(r4);
    0x000544ec ldr r4, [r2, 8]                                   |     r4 = *((r2 + 8));
    0x000544ee subs r4, r3, r4                                   |     r4 = r3 - r4;
    0x000544f0 blx 0x20010                                       |     fcn_00020010 ();
    0x000544f4 ldr r3, [pc, 0xdc]                                |     
    0x000544f6 mov r1, r0                                        |     r1 = r0;
    0x000544f8 movs r2, 1                                        |     r2 = 1;
    0x000544fa mov r0, r7                                        |     r0 = r7;
    0x000544fc add r3, pc                                        |     r3 = 0xa8ad4;
    0x000544fe strd r3, r4, [sp]                                 |     __asm ("strd r3, r4, [sp]");
    0x00054502 ldr r3, [pc, 0xd4]                                |     
    0x00054504 add r3, pc                                        |     r3 = 0xa8ae2;
    0x00054506 blx 0x23a38                                       |     pipe ();
                                                                 | label_27:
    0x0005450a ldr.w r0, [r8]                                    |     r0 = *(r8);
    0x0005450e blx 0x21aa4                                       |     fcn_00021aa4 ();
    0x00054512 movs r1, 0                                        |     r1 = 0;
    0x00054514 mov r0, r8                                        |     r0 = r8;
    0x00054516 blx 0x23c10                                       |     fcn_00023c10 ();
    0x0005451a movs r0, 0                                        |     r0 = 0;
    0x0005451c b 0x54214                                         |     goto label_3;
                                                                 | label_28:
    0x0005451e ldrh.w r2, [r6, r1, lsl 1]                        |     offset_1 = r1 << 1;
                                                                 |     r2 = *((r6 + offset_1));
    0x00054522 lsls r2, r2, 0x17                                 |     r2 <<= 0x17;
                                                                 |     if (r2 >= r2) {
    0x00054524 bpl 0x54484                                       |         goto label_7;
                                                                 |     }
    0x00054526 mov r1, r0                                        |     r1 = r0;
    0x00054528 ldr r0, [r5]                                      |     r0 = *(r5);
    0x0005452a blx 0x1fb6c                                       |     r0 = fcn_0001fb6c ();
    0x0005452e mov r1, r0                                        |     r1 = r0;
    0x00054530 mov r0, r8                                        |     r0 = r8;
    0x00054532 blx 0x233b4                                       |     fcn_000233b4 ();
    0x00054536 movs r1, 0                                        |     r1 = 0;
    0x00054538 mov r0, r5                                        |     r0 = r5;
    0x0005453a blx 0x1fc8c                                       |     fcn_0001fc8c ();
    0x0005453e ldr r2, [r4, 8]                                   |     r2 = *((r4 + 8));
    0x00054540 ldrb r3, [r2]                                     |     r3 = *(r2);
                                                                 |     if (r3 != 0) {
    0x00054542 cbnz r3, 0x54550                                  |         goto label_30;
                                                                 |     }
    0x00054544 b 0x5442a                                         |     goto label_10;
                                                                 | label_11:
    0x00054546 str r2, [r4, 8]                                   |     *((r4 + 8)) = r2;
    0x00054548 ldrb r3, [r2]                                     |     r3 = *(r2);
    0x0005454a cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x0005454c beq.w 0x5442a                                     |         goto label_10;
                                                                 |     }
                                                                 | label_30:
    0x00054550 ldrh.w r3, [r6, r3, lsl 1]                        |     offset_2 = r3 << 1;
                                                                 |     r3 = *((r6 + offset_2));
    0x00054554 adds r2, 1                                        |     r2++;
    0x00054556 ands r3, r3, 0x100                                |     r3 &= case.0x5984c.0;
                                                                 |     if (r3 != r3) {
    0x0005455a bne 0x54546                                       |         goto label_11;
                                                                 |     }
    0x0005455c mov r2, r3                                        |     r2 = r3;
    0x0005455e ldr r3, [r4, 8]                                   |     r3 = *((r4 + 8));
    0x00054560 mov fp, r3                                        |     
    0x00054562 b 0x54410                                         |     goto label_6;
                                                                 | label_20:
    0x00054564 mov.w r1, -1                                      |     r1 = -1;
    0x00054568 blx 0x21254                                       |     g_sprintf ()
    0x0005456c b 0x542fc                                         |     goto label_12;
                                                                 | label_22:
    0x0005456e mov r5, r0                                        |     r5 = r0;
    0x00054570 b 0x54362                                         |     goto label_13;
                                                                 | label_23:
    0x00054572 ldr r3, [r4]                                      |     r3 = *(r4);
    0x00054574 add.w r4, sb, 1                                   |     r4 = sb + 1;
    0x00054578 ldr r3, [r3, 8]                                   |     r3 = *((r3 + 8));
    0x0005457a subs r4, r4, r3                                   |     r4 -= r3;
    0x0005457c blx 0x20010                                       |     fcn_00020010 ();
    0x00054580 ldr r2, [pc, 0x58]                                |     
    0x00054582 mov r1, r0                                        |     r1 = r0;
    0x00054584 ldr r3, [pc, 0x58]                                |     
    0x00054586 mov r0, r7                                        |     r0 = r7;
    0x00054588 add r2, pc                                        |     r2 = 0xa8b68;
    0x0005458a strd r2, r4, [sp]                                 |     __asm ("strd r2, r4, [sp]");
    0x0005458e add r3, pc                                        |     r3 = 0xa8b72;
    0x00054590 movs r2, 1                                        |     r2 = 1;
    0x00054592 blx 0x23a38                                       |     pipe ();
    0x00054596 movs r0, 0                                        |     r0 = 0;
    0x00054598 b 0x54214                                         |     goto label_3;
                                                                 | label_21:
    0x0005459a ldr r3, [r4]                                      |     r3 = *(r4);
    0x0005459c ldr r0, [r3, 8]                                   |     r0 = *((r3 + 8));
    0x0005459e blx 0x22d14                                       |     r0 = fcn_00022d14 ();
    0x000545a2 mov r4, r0                                        |     r4 = r0;
    0x000545a4 blx 0x20010                                       |     fcn_00020010 ();
    0x000545a8 ldr r3, [pc, 0x38]                                |     
    0x000545aa mov r1, r0                                        |     r1 = r0;
    0x000545ac movs r2, 1                                        |     r2 = 1;
    0x000545ae mov r0, r7                                        |     r0 = r7;
    0x000545b0 add r3, pc                                        |     r3 = 0xa8b98;
    0x000545b2 strd r3, r4, [sp]                                 |     __asm ("strd r3, r4, [sp]");
    0x000545b6 ldr r3, [pc, 0x30]                                |     
    0x000545b8 add r3, pc                                        |     r3 = 0xa8ba6;
    0x000545ba blx 0x23a38                                       |     pipe ();
    0x000545be mov r0, r6                                        |     r0 = r6;
    0x000545c0 b 0x54214                                         |     goto label_3;
                                                                 | }
    ; assembly                                               | /* r2dec pseudo code output */
                                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsyslog-ng-3.31.so.0.0.0 @ 0x33c40 */
                                                             | #include <stdint.h>
                                                             |  
                                                             | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                             |  
    ; (fcn) sym.log_writer_format_log ()                     | void log_writer_format_log (int16_t arg1, int16_t arg2, int16_t arg3) {
                                                             |     int16_t var_0h_3;
                                                             |     int16_t var_8h;
                                                             |     int16_t var_fh;
                                                             |     r0 = arg1;
                                                             |     r1 = arg2;
                                                             |     r2 = arg3;
    0x00033c40 push.w {r4, r5, r6, r7, r8, sb, sl, lr}       |     
    0x00033c44 mov r4, r2                                    |     r4 = r2;
    0x00033c46 ldr.w sb, [pc, 0x9f4]                         |     
    0x00033c48 ldr r1, [sp, 0x3d0]                           |     r1 = case.0x5984c.0;
    0x00033c4a sub sp, 0x28                                  |     
    0x00033c4c mov r5, r0                                    |     r5 = r0;
    0x00033c4e ldr.w r2, [pc, 0x9f0]                         |     
    0x00033c50 cmp r1, 0xf0                                  |     
    0x00033c52 add r7, sp, 8                                 |     r7 += var_8h;
    0x00033c54 ldr.w r3, [pc, 0x9ec]                         |     r3 = *(0x34644);
    0x00033c58 add sb, pc                                    |     sb = 0x6829a;
    0x00033c5a ldr.w r0, [sb]                                |     r0 = *(0x6829a);
    0x00033c5e mov r6, r1                                    |     r6 = r1;
    0x00033c60 add r2, pc                                    |     r2 = 0x682a6;
    0x00033c62 ldr.w r8, [pc, 0x9e4]                         |     
    0x00033c66 ldr r3, [r2, r3]                              |     
    0x00033c68 add r8, pc                                    |     r8 = 0x682b6;
    0x00033c6a ldr r3, [r3]                                  |     r3 = *(0x682a6);
    0x00033c6c str r3, [r7, 0x1c]                            |     *((r7 + 0x1c)) = r3;
    0x00033c6e mov.w r3, 0                                   |     r3 = 0;
    0x00033c72 cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x00033c74 beq.w 0x33eaa                                 |         goto label_46;
                                                             |     }
    0x00033c78 ldr r3, [r1, 0x5c]                            |     r3 = *((r1 + 0x5c));
    0x00033c7a lsls r3, r3, 0x1d                             |     r3 <<= 0x1d;
                                                             |     if (r3 >= r3) {
    0x00033c7c bpl.w 0x33f96                                 |         goto label_47;
                                                             |     }
                                                             | label_1:
    0x00033c80 ldr.w sb, [r5, 0x5c]                          |     sb = *((r5 + 0x5c));
                                                             | label_8:
    0x00033c84 movs r1, 0                                    |     r1 = 0;
    0x00033c86 mov r0, r4                                    |     r0 = r4;
    0x00033c88 blx 0x1fc8c                                   |     fcn_0001fc8c ();
    0x00033c8c ldr r3, [r5, 0x58]                            |     r3 = *((r5 + 0x58));
    0x00033c8e add.w sl, r6, 0x18                            |     sl = r6 + 0x18;
    0x00033c92 ubfx r1, r3, 0, 0x1f                          |     r1 = (r3 >> 0) & ((1 << 0x1f) - 1);
    0x00033c96 lsls r3, r3, 0x1c                             |     r3 <<= 0x1c;
                                                             |     if (r3 >= r3) {
    0x00033c98 bmi 0x33cca                                   |         
    0x00033c9a ldr.w r3, [r5, 0x80]                          |         r3 = *((r5 + 0x80));
    0x00033c9e ldr r2, [r3, 4]                               |         r2 = *((r3 + 4));
    0x00033ca0 lsls r0, r2, 0x1f                             |         r0 = r2 << 0x1f;
                                                             |         if (r0 >= r2) {
    0x00033ca2 bmi 0x33cca                                   |             
    0x00033ca4 ldr r0, [r3, 0xc]                             |             r0 = *((r3 + 0xc));
    0x00033ca6 cmp r0, 0                                     |             
                                                             |             if (r0 == 0) {
    0x00033ca8 beq.w 0x34134                                 |                 goto label_48;
                                                             |             }
                                                             | label_15:
    0x00033cac adds r3, 0x18                                 |             r3 += 0x18;
    0x00033cae movs r2, 1                                    |             r2 = 1;
    0x00033cb0 str r3, [r7, 0xc]                             |             *((r7 + 0xc)) = r3;
    0x00033cb2 movs r3, 0                                    |             r3 = 0;
    0x00033cb4 str r2, [r7, 0x10]                            |             *((r7 + 0x10)) = r2;
    0x00033cb6 mov r1, r6                                    |             r1 = r6;
    0x00033cb8 str r3, [r7, 0x18]                            |             *((r7 + 0x18)) = r3;
    0x00033cba add.w r2, r7, 0xc                             |             r2 = r7 + 0xc;
    0x00033cbc lsls r4, r1, 8                                |             r4 = r1 << 8;
    0x00033cbe mov r3, r4                                    |             r3 = r4;
    0x00033cc0 str.w sb, [r7, 0x14]                          |             __asm ("str.w sb, [r7, 0x14]");
    0x00033cc4 blx 0x217b4                                   |             fcn_000217b4 ();
    0x00033cc8 b 0x33e3e                                     |             
                                                             |         }
                                                             |     } else {
    0x00033cca ldrd r3, r1, [r4, 4]                          |         __asm ("ldrd r3, r1, [r4, 4]");
    0x00033cce adds r2, r3, 1                                |         r2 = r3 + 1;
    0x00033cd0 cmp r2, r1                                    |         
                                                             |         if (r2 >= r1) {
    0x00033cd2 bhs.w 0x33e9c                                 |             goto label_49;
                                                             |         }
    0x00033cd6 str r2, [r4, 4]                               |         *((r4 + 4)) = r2;
    0x00033cd8 movs r1, 0x3c                                 |         r1 = 0x3c;
    0x00033cda ldr r2, [r4]                                  |         r2 = *(r4);
    0x00033cdc strb r1, [r2, r3]                             |         *((r2 + r3)) = r1;
    0x00033cde movs r1, 0                                    |         r1 = 0;
    0x00033ce0 ldrd r2, r3, [r4]                             |         __asm ("ldrd r2, r3, [r4]");
    0x00033ce4 strb r1, [r2, r3]                             |         *((r2 + r3)) = r1;
                                                             | label_0:
    0x00033ce6 ldrh.w r3, [r6, 0x60]                         |         r3 = *((r6 + 0x60));
    0x00033cea movs r2, 0                                    |         r2 = 0;
    0x00033cec mov r1, r2                                    |         r1 = r2;
    0x00033cee mov r0, r4                                    |         r0 = r4;
    0x00033cf0 str r3, [sp]                                  |         *(sp) = r3;
    0x00033cf2 movs r3, 0xa                                  |         r3 = 0xa;
    0x00033cf4 blx 0x1f9dc                                   |         fcn_0001f9dc ();
    0x00033cf8 ldrd r3, r1, [r4, 4]                          |         __asm ("ldrd r3, r1, [r4, 4]");
    0x00033cfc adds r2, r3, 1                                |         r2 = r3 + 1;
    0x00033cfe cmp r2, r1                                    |         
                                                             |         if (r2 >= r1) {
    0x00033d00 bhs.w 0x33f18                                 |             goto label_50;
                                                             |         }
    0x00033d04 str r2, [r4, 4]                               |         *((r4 + 4)) = r2;
    0x00033d06 movs r1, 0x3e                                 |         r1 = 0x3e;
    0x00033d08 ldr r2, [r4]                                  |         r2 = *(r4);
    0x00033d0a strb r1, [r2, r3]                             |         *((r2 + r3)) = r1;
    0x00033d0c movs r1, 0                                    |         r1 = 0;
    0x00033d0e ldrd r2, r3, [r4]                             |         __asm ("ldrd r2, r3, [r4]");
    0x00033d12 strb r1, [r2, r3]                             |         *((r2 + r3)) = r1;
                                                             | label_6:
    0x00033d14 ldrd r3, r1, [r4, 4]                          |         __asm ("ldrd r3, r1, [r4, 4]");
    0x00033d18 adds r2, r3, 1                                |         r2 = r3 + 1;
    0x00033d1a cmp r2, r1                                    |         
                                                             |         if (r2 >= r1) {
    0x00033d1c bhs.w 0x33f0a                                 |             goto label_51;
                                                             |         }
    0x00033d20 str r2, [r4, 4]                               |         *((r4 + 4)) = r2;
    0x00033d22 movs r1, 0x31                                 |         r1 = 0x31;
    0x00033d24 ldr r2, [r4]                                  |         r2 = *(r4);
    0x00033d26 strb r1, [r2, r3]                             |         *((r2 + r3)) = r1;
    0x00033d28 movs r1, 0                                    |         r1 = 0;
    0x00033d2a ldrd r2, r3, [r4]                             |         __asm ("ldrd r2, r3, [r4]");
    0x00033d2c movs r3, 0                                    |         r3 = 0;
    0x00033d2e strb r1, [r2, r3]                             |         *((r2 + r3)) = r1;
                                                             | label_5:
    0x00033d30 ldrd r3, r1, [r4, 4]                          |         __asm ("ldrd r3, r1, [r4, 4]");
    0x00033d34 adds r2, r3, 1                                |         r2 = r3 + 1;
    0x00033d36 cmp r2, r1                                    |         
                                                             |         if (r2 >= r1) {
    0x00033d38 bhs.w 0x33efc                                 |             goto label_52;
                                                             |         }
    0x00033d3c str r2, [r4, 4]                               |         *((r4 + 4)) = r2;
    0x00033d3e movs r1, 0x20                                 |         r1 = 0x20;
    0x00033d40 ldr r2, [r4]                                  |         r2 = *(r4);
    0x00033d42 strb r1, [r2, r3]                             |         *((r2 + r3)) = r1;
    0x00033d44 movs r1, 0                                    |         r1 = 0;
    0x00033d46 ldrd r2, r3, [r4]                             |         __asm ("ldrd r2, r3, [r4]");
    0x00033d4a strb r1, [r2, r3]                             |         *((r2 + r3)) = r1;
                                                             | label_4:
    0x00033d4c ldr.w r3, [r5, 0x80]                          |         r3 = *((r5 + 0x80));
    0x00033d50 ldr r1, [r6, 0x18]                            |         r1 = *((r6 + 0x18));
    0x00033d52 ldr r0, [r3, 0x34]                            |         r0 = *((r3 + 0x34));
    0x00033d54 blx 0x20420                                   |         SSL_get_error ();
    0x00033d58 ldr.w r2, [r5, 0x80]                          |         r2 = *((r5 + 0x80));
    0x00033d5c mov r3, r0                                    |         r3 = r0;
    0x00033d5e mov r1, r4                                    |         r1 = r4;
    0x00033d60 mov r0, sl                                    |         r0 = sl;
    0x00033d62 ldr r2, [r2, 0x20]                            |         r2 = *((r2 + 0x20));
    0x00033d64 str r2, [sp]                                  |         *(sp) = r2;
    0x00033d66 movs r2, 1                                    |         r2 = 1;
    0x00033d68 blx 0x22358                                   |         fcn_00022358 ();
    0x00033d6c ldrd r3, r1, [r4, 4]                          |         __asm ("ldrd r3, r1, [r4, 4]");
    0x00033d70 adds r2, r3, 1                                |         r2 = r3 + 1;
    0x00033d72 cmp r2, r1                                    |         
                                                             |         if (r2 >= r1) {
    0x00033d74 bhs.w 0x33eee                                 |             goto label_53;
                                                             |         }
    0x00033d78 str r2, [r4, 4]                               |         *((r4 + 4)) = r2;
    0x00033d7a movs r1, 0x20                                 |         r1 = 0x20;
    0x00033d7c ldr r2, [r4]                                  |         r2 = *(r4);
    0x00033d7e strb r1, [r2, r3]                             |         *((r2 + r3)) = r1;
    0x00033d80 movs r1, 0                                    |         r1 = 0;
    0x00033d82 ldrd r2, r3, [r4]                             |         __asm ("ldrd r2, r3, [r4]");
    0x00033d86 strb r1, [r2, r3]                             |         *((r2 + r3)) = r1;
                                                             | label_3:
    0x00033d88 movs r2, 1                                    |         r2 = 1;
    0x00033d8a mov r1, r6                                    |         r1 = r6;
    0x00033d8c mov r0, r4                                    |         r0 = r4;
    0x00033d8e bl 0x32c60                                    |         fcn_00032c60 (r0, r1, r2);
    0x00033d92 movs r2, 4                                    |         r2 = 4;
    0x00033d94 mov r1, r6                                    |         r1 = r6;
    0x00033d96 mov r0, r4                                    |         r0 = r4;
    0x00033d98 bl 0x32c60                                    |         fcn_00032c60 (r0, r1, r2);
    0x00033d9c movs r2, 5                                    |         r2 = 5;
    0x00033d9e mov r1, r6                                    |         r1 = r6;
    0x00033da0 mov r0, r4                                    |         r0 = r4;
    0x00033da2 bl 0x32c60                                    |         fcn_00032c60 (r0, r1, r2);
    0x00033da6 movs r2, 6                                    |         r2 = 6;
    0x00033da8 mov r1, r6                                    |         r1 = r6;
    0x00033daa mov r0, r4                                    |         r0 = r4;
    0x00033dac bl 0x32c60                                    |         fcn_00032c60 (r0, r1, r2);
    0x00033db0 ldr r3, [r4, 4]                               |         r3 = *((r4 + 4));
    0x00033db2 mov r2, sb                                    |         r2 = sb;
    0x00033db4 mov r1, r4                                    |         r1 = r4;
    0x00033db6 mov r0, r6                                    |         r0 = r6;
    0x00033db8 str r3, [r7, 4]                               |         *((r7 + 4)) = r3;
    0x00033dba blx 0x228d4                                   |         fcn_000228d4 ();
    0x00033dbe ldr r3, [r4, 4]                               |         r3 = *((r4 + 4));
    0x00033dc0 ldr r2, [r7, 4]                               |         r2 = *((r7 + 4));
    0x00033dc2 cmp r3, r2                                    |         
                                                             |         if (r3 == r2) {
    0x00033dc4 beq.w 0x340e4                                 |             goto label_54;
                                                             |         }
                                                             | label_13:
    0x00033dc8 ldr.w r3, [r5, 0x80]                          |         r3 = *((r5 + 0x80));
    0x00033dcc ldr r3, [r3, 0xc]                             |         r3 = *((r3 + 0xc));
    0x00033dce cmp r3, 0                                     |         
                                                             |         if (r3 == 0) {
    0x00033dd0 beq.w 0x34004                                 |             goto label_55;
                                                             |         }
    0x00033dd4 ldr r3, [r4, 4]                               |         r3 = *((r4 + 4));
    0x00033dd6 ldr r1, [r4, 8]                               |         r1 = *((r4 + 8));
    0x00033dd8 adds r2, r3, 1                                |         r2 = r3 + 1;
    0x00033dda cmp r2, r1                                    |         
                                                             |         if (r2 >= r1) {
    0x00033ddc bhs.w 0x3407a                                 |             goto label_56;
                                                             |         }
    0x00033de0 str r2, [r4, 4]                               |         *((r4 + 4)) = r2;
    0x00033de2 movs r1, 0x20                                 |         r1 = 0x20;
    0x00033de4 ldr r2, [r4]                                  |         r2 = *(r4);
    0x00033de6 strb r1, [r2, r3]                             |         *((r2 + r3)) = r1;
    0x00033de8 movs r1, 0                                    |         r1 = 0;
    0x00033dea ldrd r2, r3, [r4]                             |         __asm ("ldrd r2, r3, [r4]");
    0x00033dee strb r1, [r2, r3]                             |         *((r2 + r3)) = r1;
    0x00033df0 ldr r3, [r6, 0x5c]                            |         r3 = *((r6 + 0x5c));
    0x00033df2 lsls r1, r3, 0x1f                             |         r1 = r3 << 0x1f;
                                                             |         if (r1 < r3) {
    0x00033df4 bmi.w 0x3408e                                 |             goto label_57;
                                                             |         }
                                                             | label_10:
    0x00033df8 ldr.w r2, [r5, 0x80]                          |         r2 = *((r5 + 0x80));
    0x00033dfc movs r0, 0                                    |         r0 = 0;
    0x00033dfe mov r1, r6                                    |         r1 = r6;
    0x00033e00 str r0, [r7, 0x18]                            |         *((r7 + 0x18)) = r0;
    0x00033e02 mov r3, r4                                    |         r3 = r4;
    0x00033e04 str.w sb, [r7, 0x14]                          |         __asm ("str.w sb, [r7, 0x14]");
    0x00033e08 ldr r0, [r2, 0xc]                             |         r0 = *((r2 + 0xc));
    0x00033e0a add.w r6, r2, 0x18                            |         r6 = r2 + 0x18;
    0x00033e0e movs r2, 1                                    |         r2 = 1;
    0x00033e10 str r6, [r7, 0xc]                             |         *((r7 + 0xc)) = r6;
    0x00033e12 str r2, [r7, 0x10]                            |         *((r7 + 0x10)) = r2;
    0x00033e14 add.w r2, r7, 0xc                             |         r2 = r7 + 0xc;
    0x00033e18 blx 0x1fb44                                   |         fcn_0001fb44 ();
                                                             | label_17:
    0x00033e1c ldrd r3, r1, [r4, 4]                          |         __asm ("ldrd r3, r1, [r4, 4]");
    0x00033e20 adds r2, r3, 1                                |         r2 = r3 + 1;
    0x00033e22 cmp r2, r1                                    |         
                                                             |         if (r2 >= r1) {
    0x00033e24 bhs 0x33ee0                                   |             goto label_58;
                                                             |         }
    0x00033e26 ldr r1, [r4]                                  |         r1 = *(r4);
    0x00033e28 movs r0, 0xa                                  |         r0 = 0xa;
    0x00033e2a str r2, [r4, 4]                               |         *((r4 + 4)) = r2;
    0x00033e2c strb r0, [r1, r3]                             |         *((r1 + r3)) = r0;
    0x00033e2e movs r1, 0                                    |         r1 = 0;
    0x00033e30 ldrd r2, r3, [r4]                             |         __asm ("ldrd r2, r3, [r4]");
    0x00033e34 strb r1, [r2, r3]                             |         *((r2 + r3)) = r1;
                                                             | label_2:
    0x00033e36 mov r1, r4                                    |         r1 = r4;
    0x00033e38 mov r0, r5                                    |         r0 = r5;
    0x00033e3a bl 0x324f8                                    |         fcn_000324f8 (r0, r1);
                                                             |     }
    0x00033e3e ldr.w r3, [r5, 0x80]                          |     r3 = *((r5 + 0x80));
    0x00033e42 ldr r2, [r3, 4]                               |     r2 = *((r3 + 4));
    0x00033e44 lsls r1, r2, 0x1e                             |     r1 = r2 << 0x1e;
                                                             |     if (r1 >= r2) {
    0x00033e46 bpl 0x33e6a                                   |         goto label_59;
                                                             |     }
    0x00033e48 ldr r0, [r4]                                  |     r0 = *(r4);
    0x00033e4a movs r6, 0x20                                 |     r6 = 0x20;
    0x00033e4c mov r1, r0                                    |     r1 = r0;
    0x00033e4e b 0x33e56                                     |     
                                                             |     while (r0 != 0) {
    0x00033e50 strb r6, [r0], 1                              |         *(r0) = r6;
                                                             |         r0++;
    0x00033e54 ldr r1, [r4]                                  |         r1 = *(r4);
    0x00033e56 ldr r3, [r4, 4]                               |         r3 = *((r4 + 4));
    0x00033e58 add r1, r3                                    |         r1 += r3;
    0x00033e5a subs r1, r1, r0                               |         r1 -= r0;
    0x00033e5c subs r1, 1                                    |         r1--;
    0x00033e5e blx 0x220d8                                   |         r0 = fcn_000220d8 ();
    0x00033e62 cmp r0, 0                                     |         
    0x00033e64 bne 0x33e50                                   |         
                                                             |     }
    0x00033e66 ldr.w r3, [r5, 0x80]                          |     r3 = *((r5 + 0x80));
                                                             | label_59:
    0x00033e6a ldr.w r6, [r3, 0xe8]                          |     r6 = *((r3 + 0xe8));
    0x00033e6e adds r2, r6, 1                                |     r2 = r6 + 1;
                                                             |     if (r2 != r6) {
    0x00033e70 beq 0x33e7a                                   |         
    0x00033e72 ldr.w r8, [r4, 4]                             |         r8 = *((r4 + 4));
    0x00033e76 cmp r8, r6                                    |         
                                                             |         if (r8 > r6) {
    0x00033e78 bhi 0x33f26                                   |             goto label_60;
                                                             |         }
                                                             |     }
                                                             | label_7:
    0x00033e7a ldr.w r2, [pc, 0x7d0]                         |     r2 = *(0x0003464c);
    0x00033e7e ldr.w r3, [pc, 0x7c4]                         |     r3 = *(0x34646);
    0x00033e82 add r2, pc                                    |     r2 += pc;
    0x00033e84 ldr r3, [r2, r3]                              |     r3 = *((r2 + r3));
    0x00033e86 ldr r2, [r3]                                  |     r2 = *(0x34646);
    0x00033e88 ldr r3, [r7, 0x1c]                            |     r3 = *((r7 + 0x1c));
    0x00033e8a eors r2, r3                                   |     r2 ^= r3;
    0x00033e8c mov.w r3, 0                                   |     r3 = 0;
                                                             |     if (r2 != r3) {
    0x00033e90 bne.w 0x34638                                 |         goto label_61;
                                                             |     }
    0x00033e94 adds r7, 0x20                                 |     r7 += 0x20;
    0x00033e96 mov sp, r7                                    |     
    0x00033e98 pop.w {r4, r5, r6, r7, r8, sb, sl, pc}        |     
                                                             | label_49:
    0x00033e9c movs r2, 0x3c                                 |     r2 = 0x3c;
    0x00033e9e mov.w r1, -1                                  |     r1 = -1;
    0x00033ea2 mov r0, r4                                    |     r0 = r4;
    0x00033ea4 blx 0x21254                                   |     g_sprintf ()
    0x00033ea8 b 0x33ce6                                     |     goto label_0;
                                                             | label_46:
    0x00033eaa ldr.w r0, [pc, 0x7a4]                         |     r0 = *(0x00034650);
    0x00033eae add r0, pc                                    |     r0 += pc;
    0x00033eb0 blx 0x23550                                   |     fcn_00023550 ();
    0x00033eb4 ldr r3, [r6, 0x5c]                            |     r3 = *((r6 + 0x5c));
    0x00033eb6 str.w r0, [sb]                                |     __asm ("str.w r0, [sb]");
    0x00033eba lsls r3, r3, 0x1d                             |     r3 <<= 0x1d;
                                                             |     if (r3 < r3) {
    0x00033ebc bmi.w 0x33c80                                 |         goto label_1;
                                                             |     }
    0x00033ec0 ldr.w r3, [pc, 0x790]                         |     
    0x00033ec4 ldr.w r3, [r8, r3]                            |     r3 = *((r8 + r3));
    0x00033ec8 ldr r3, [r3]                                  |     r3 = *(0x34654);
    0x00033eca cmp r0, 0                                     |     
                                                             |     if (r0 != 0) {
    0x00033ecc bne 0x33fa0                                   |         goto label_62;
                                                             |     }
                                                             | label_11:
    0x00033ece movs r3, 0                                    |     r3 = 0;
    0x00033ed0 mov sb, r3                                    |     sb = r3;
    0x00033ed2 str r3, [r7, 0xc]                             |     *((r7 + 0xc)) = r3;
                                                             | label_22:
    0x00033ed4 ldr.w r2, [pc, 0x780]                         |     r2 = *(0x34658);
    0x00033ed8 ldr.w r2, [r8, r2]                            |     r2 = *((r8 + r2));
    0x00033edc ldr r0, [r2]                                  |     r0 = *(0x34658);
    0x00033ede b 0x33fc2                                     |     goto label_12;
                                                             | label_58:
    0x00033ee0 movs r2, 0xa                                  |     r2 = 0xa;
    0x00033ee2 mov.w r1, -1                                  |     r1 = -1;
    0x00033ee6 mov r0, r4                                    |     r0 = r4;
    0x00033ee8 blx 0x21254                                   |     g_sprintf ()
    0x00033eec b 0x33e36                                     |     goto label_2;
                                                             | label_53:
    0x00033eee movs r2, 0x20                                 |     r2 = 0x20;
    0x00033ef0 mov.w r1, -1                                  |     r1 = -1;
    0x00033ef4 mov r0, r4                                    |     r0 = r4;
    0x00033ef6 blx 0x21254                                   |     g_sprintf ()
    0x00033efa b 0x33d88                                     |     goto label_3;
                                                             | label_52:
    0x00033efc movs r2, 0x20                                 |     r2 = 0x20;
    0x00033efe mov.w r1, -1                                  |     r1 = -1;
    0x00033f02 mov r0, r4                                    |     r0 = r4;
    0x00033f04 blx 0x21254                                   |     g_sprintf ()
    0x00033f08 b 0x33d4c                                     |     goto label_4;
                                                             | label_51:
    0x00033f0a movs r2, 0x31                                 |     r2 = 0x31;
    0x00033f0c mov.w r1, -1                                  |     r1 = -1;
    0x00033f10 mov r0, r4                                    |     r0 = r4;
    0x00033f12 blx 0x21254                                   |     g_sprintf ()
    0x00033f16 b 0x33d30                                     |     goto label_5;
                                                             | label_50:
    0x00033f18 movs r2, 0x3e                                 |     r2 = 0x3e;
    0x00033f1a mov.w r1, -1                                  |     r1 = -1;
    0x00033f1e mov r0, r4                                    |     r0 = r4;
    0x00033f20 blx 0x21254                                   |     g_sprintf ()
    0x00033f24 b 0x33d14                                     |     goto label_6;
                                                             | label_60:
    0x00033f26 mov r1, r6                                    |     r1 = r6;
    0x00033f28 mov r0, r4                                    |     r0 = r4;
    0x00033f2a blx 0x1fc8c                                   |     fcn_0001fc8c ();
    0x00033f2e ldr r3, [r5, 0x74]                            |     r3 = *((r5 + 0x74));
                                                             |     if (r3 == 0) {
    0x00033f30 cbz r3, 0x33f6a                               |         goto label_63;
                                                             |     }
    0x00033f32 ldr r2, [r3, 0xc]                             |     r2 = *((r3 + 0xc));
                                                             |     if (r2 != 0) {
    0x00033f34 cbz r2, 0x33f54                               |         
    0x00033f36 ldr.w r3, [pc, 0x724]                         |         r3 = *(0x0003465c);
    0x00033f3a movs r2, 0x4a                                 |         r2 = 0x4a;
    0x00033f3c ldr.w r4, [pc, 0x720]                         |         
    0x00033f40 movs r0, 0                                    |         r0 = 0;
    0x00033f42 ldr.w r1, [pc, 0x720]                         |         
    0x00033f46 add r3, pc                                    |         r3 += pc;
    0x00033f48 add r4, pc                                    |         r4 = 0x685ac;
    0x00033f4a adds r3, 0x28                                 |         r3 += 0x28;
    0x00033f4c add r1, pc                                    |         r1 = 0x685b6;
    0x00033f4e str r4, [sp]                                  |         *(sp) = r4;
    0x00033f50 blx 0x2368c                                   |         fcn_0002368c ();
                                                             |     }
    0x00033f54 dmb ish                                       |     __asm ("dmb ish");
                                                             |     do {
    0x00033f58 ldrex r1, [r3]                                |         __asm ("ldrex r1, [r3]");
    0x00033f5c adds r1, 1                                    |         r1++;
    0x00033f5e strex r2, r1, [r3]                            |         __asm ("strex r2, r1, [r3]");
    0x00033f62 cmp r2, 0                                     |         
    0x00033f64 bne 0x33f58                                   |         
                                                             |     } while (r2 != 0);
    0x00033f66 dmb ish                                       |     __asm ("dmb ish");
                                                             | label_63:
    0x00033f6a ldr r3, [r5, 0x78]                            |     r3 = *((r5 + 0x78));
    0x00033f6c cmp r3, 0                                     |     
                                                             |     if (r3 == 0) {
    0x00033f6e beq 0x33e7a                                   |         goto label_7;
                                                             |     }
    0x00033f70 ldr r2, [r3, 0xc]                             |     r2 = *((r3 + 0xc));
    0x00033f72 cmp r2, 0                                     |     
                                                             |     if (r2 == 0) {
    0x00033f74 beq.w 0x34118                                 |         goto label_64;
                                                             |     }
    0x00033f78 ldr.w r3, [pc, 0x6ec]                         |     
    0x00033f7c movs r2, 0x36                                 |     r2 = 0x36;
    0x00033f7e ldr.w r4, [pc, 0x6ec]                         |     r4 = *(0x0003466c);
    0x00033f82 movs r0, 0                                    |     r0 = 0;
    0x00033f84 ldr.w r1, [pc, 0x6e8]                         |     r1 = *(0x00034670);
    0x00033f88 add r3, pc                                    |     r3 = 0x685f4;
    0x00033f8a add r4, pc                                    |     r4 += pc;
    0x00033f8c adds r3, 0x64                                 |     r3 += 0x64;
    0x00033f8e add r1, pc                                    |     r1 += pc;
    0x00033f90 str r4, [sp]                                  |     *(sp) = r4;
    0x00033f92 blx 0x2368c                                   |     fcn_0002368c ();
                                                             | label_47:
    0x00033f96 ldr.w r3, [pc, 0x6bc]                         |     
    0x00033f9a ldr.w r3, [r8, r3]                            |     r3 = *((r8 + r3));
    0x00033f9e ldr r3, [r3]                                  |     r3 = *(0x34656);
                                                             | label_62:
    0x00033fa0 ldr r3, [r3, 4]                               |     r3 = *((r3 + 4));
    0x00033fa2 ldr r3, [r3]                                  |     r3 = *(r3);
    0x00033fa4 add.w r3, r3, r0, lsl 3                       |     r3 += (r0 << 3);
    0x00033fa8 ldrh r1, [r3, -0x4]                           |     r1 = *((r3 - 0x4));
    0x00033fac ands r3, r1, 4                                |     r3 = r1 & 4;
                                                             |     if (r3 == r1) {
    0x00033fb0 beq 0x3409e                                   |         goto label_65;
                                                             |     }
    0x00033fb2 lsrs r1, r1, 8                                |     r1 >>= 8;
    0x00033fb4 add.w r2, r7, 0xc                             |     r2 = r7 + 0xc;
    0x00033fb8 mov r0, r6                                    |     r0 = r6;
    0x00033fba blx 0x21064                                   |     fcn_00021064 ();
    0x00033fbe ldr r3, [r7, 0xc]                             |     r3 = *((r7 + 0xc));
    0x00033fc0 mov sb, r3                                    |     sb = r3;
                                                             | label_12:
    0x00033fc2 ldrb.w r2, [r0, sb]                           |     r2 = *((r0 + sb));
                                                             |     if (r2 != 0) {
    0x00033fc6 cbz r2, 0x33fee                               |         
    0x00033fc8 adds r3, 8                                    |         r3 += 8;
    0x00033fca mov r1, r0                                    |         r1 = r0;
    0x00033fcc bic r3, r3, 7                                 |         r3 = BIT_MASK (r3, 7);
    0x00033fd0 mov r2, sb                                    |         r2 = sb;
    0x00033fd2 sub.w sp, sp, r3                              |         
    0x00033fd6 add.w r0, sp, 0xf                             |         r0 += var_fh;
    0x00033fda bic r3, r0, 7                                 |         r3 = BIT_MASK (r0, 7);
    0x00033fde lsr.w sl, r0, 3                               |         sl = r0 >> 3;
    0x00033fe2 mov r0, r3                                    |         r0 = r3;
    0x00033fe4 blx 0x22b30                                   |         fcn_00022b30 ();
    0x00033fe8 movs r3, 0                                    |         r3 = 0;
    0x00033fea strb.w r3, [sb, sl, lsl 3]                    |         offset_0 = sl << 3;
                                                             |         *((sb + offset_0)) = r3;
                                                             |     }
    0x00033fee ldrb r3, [r0]                                 |     r3 = *(r0);
    0x00033ff0 mov sb, r3                                    |     sb = r3;
    0x00033ff2 cmp r3, 0                                     |     
                                                             |     if (r3 == 0) {
    0x00033ff4 beq.w 0x33c84                                 |         goto label_8;
                                                             |     }
    0x00033ff8 movs r2, 0xa                                  |     r2 = 0xa;
    0x00033ffa movs r1, 0                                    |     r1 = 0;
    0x00033ffc blx 0x1faa0                                   |     r0 = fcn_0001faa0 ();
    0x00034000 mov sb, r0                                    |     sb = r0;
    0x00034002 b 0x33c84                                     |     goto label_8;
                                                             | label_55:
    0x00034004 ldr.w r3, [pc, 0x64c]                         |     
    0x00034008 ldr.w r3, [r8, r3]                            |     r3 = *((r8 + r3));
    0x0003400c ldr r3, [r3]                                  |     
    0x0003400e ldr r3, [r3, 4]                               |     
    0x00034010 ldr r3, [r3]                                  |     r3 = *(0x34658);
    0x00034012 ldrh r1, [r3, 0x14]                           |     r1 = *((r3 + 0x14));
    0x00034014 ands r3, r1, 4                                |     r3 = r1 & 4;
    0x00034016 lsls r4, r0, 0xc                              |     r4 = r0 << 0xc;
                                                             |     if (r4 != r0) {
    0x00034018 bne.w 0x341f0                                 |         goto label_66;
                                                             |     }
    0x0003401c ldr.w sb, [r6, 0x58]                          |     sb = *((r6 + 0x58));
    0x00034020 ldrb.w r2, [sb, 0xa]                          |     r2 = *((sb + 0xa));
    0x00034024 cmp r2, 2                                     |     
                                                             |     if (r2 > 2) {
    0x00034026 bhi 0x3404e                                   |         goto label_67;
                                                             |     }
    0x00034028 movs r1, 3                                    |     r1 = 3;
    0x0003402a add.w r3, r7, 0xc                             |     r3 = r7 + 0xc;
    0x0003402c lsls r4, r1, 0xc                              |     r4 = r1 << 0xc;
    0x0003402e add.w r2, r7, 8                               |     r2 = r7 + 8;
    0x00034032 mov r0, sb                                    |     r0 = sb;
    0x00034034 blx 0x22660                                   |     r0 = fcn_00022660 ();
    0x00034038 mov r1, r0                                    |     r1 = r0;
                                                             |     if (r0 != 0) {
    0x0003403a cbnz r0, 0x34060                              |         goto label_68;
                                                             |     }
                                                             |     do {
                                                             | label_9:
    0x0003403c movs r3, 0                                    |         r3 = 0;
    0x0003403e str r3, [r7, 4]                               |         *((r7 + 4)) = r3;
                                                             | label_27:
    0x00034040 ldr.w r3, [pc, 0x614]                         |         r3 = *(0x34658);
    0x00034044 ldr.w r3, [r8, r3]                            |         r3 = *((r8 + r3));
    0x00034048 ldr.w sb, [r3]                                |         sb = *(0x34658);
    0x0003404c b 0x341fc                                     |         goto label_26;
                                                             | label_67:
    0x0003404e ldr.w r2, [sb, 0x14]                          |         r2 = *((sb + 0x14));
    0x00034052 str r3, [r7, 0xc]                             |         *((r7 + 0xc)) = r3;
    0x00034054 cmp r2, 0                                     |         
    0x00034056 beq 0x3403c                                   |         
                                                             |     } while (r2 == 0);
    0x00034058 ldr.w r1, [sb]                                |     r1 = *(sb);
    0x0003405c subs r1, r1, r2                               |     r1 -= r2;
    0x0003405e add r1, sb                                    |     r1 += sb;
                                                             | label_68:
    0x00034060 ldrb r3, [r1]                                 |     r3 = *(r1);
    0x00034062 lsls r2, r3, 0x1d                             |     r2 = r3 << 0x1d;
                                                             |     if (r2 < r3) {
    0x00034064 bmi 0x3403c                                   |         goto label_9;
                                                             |     }
    0x00034066 lsls r3, r3, 0x1f                             |     r3 <<= 0x1f;
                                                             |     if (r3 < r3) {
    0x00034068 bmi.w 0x34496                                 |         goto label_69;
                                                             |     }
    0x0003406c ldr r3, [r1, 8]                               |     r3 = *((r1 + 8));
    0x0003406e str r3, [r7, 4]                               |     *((r7 + 4)) = r3;
    0x00034070 ldrb r3, [r1, 1]                              |     r3 = *((r1 + 1));
    0x00034072 add r1, r3                                    |     r1 += r3;
    0x00034074 add.w sb, r1, 0xd                             |     sb = r1 + 0xd;
    0x00034078 b 0x341fc                                     |     goto label_26;
                                                             | label_56:
    0x0003407a mov.w r1, -1                                  |     r1 = -1;
    0x0003407e movs r2, 0x20                                 |     r2 = 0x20;
    0x00034080 mov r0, r4                                    |     r0 = r4;
    0x00034082 blx 0x21254                                   |     g_sprintf ()
    0x00034086 ldr r3, [r6, 0x5c]                            |     r3 = *((r6 + 0x5c));
    0x00034088 lsls r1, r3, 0x1f                             |     r1 = r3 << 0x1f;
                                                             |     if (r1 >= r3) {
    0x0003408a bpl.w 0x33df8                                 |         goto label_10;
                                                             |     }
                                                             | label_57:
    0x0003408e ldr.w r1, [pc, 0x5e4]                         |     r1 = *(0x00034674);
    0x00034092 movs r2, 3                                    |     r2 = 3;
    0x00034094 mov r0, r4                                    |     r0 = r4;
    0x00034096 add r1, pc                                    |     r1 += pc;
    0x00034098 blx 0x1ffec                                   |     fcn_0001ffec ();
    0x0003409c b 0x33df8                                     |     goto label_10;
                                                             | label_65:
    0x0003409e ldr.w sb, [r6, 0x58]                          |     sb = *((r6 + 0x58));
    0x000340a2 ldrb.w r2, [sb, 0xa]                          |     r2 = *((sb + 0xa));
    0x000340a6 cmp r2, r0                                    |     
                                                             |     if (r2 >= r0) {
    0x000340a8 bhs 0x34100                                   |         goto label_70;
                                                             |     }
    0x000340aa mov r1, r0                                    |     r1 = r0;
    0x000340ac add.w r3, r7, 0xc                             |     r3 = r7 + 0xc;
    0x000340b0 add.w r2, r7, 8                               |     r2 = r7 + 8;
    0x000340b4 mov r0, sb                                    |     r0 = sb;
    0x000340b6 blx 0x22660                                   |     r0 = fcn_00022660 ();
    0x000340ba mov r1, r0                                    |     r1 = r0;
    0x000340bc cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x000340be beq.w 0x33ece                                 |         goto label_11;
                                                             |     }
    0x000340c0 add r7, sp, 0x18                              |     r7 = sp + 0x18;
                                                             | label_14:
    0x000340c2 ldrb r3, [r1]                                 |     r3 = *(r1);
    0x000340c4 lsls r0, r3, 0x1d                             |     r0 = r3 << 0x1d;
                                                             |     if (r0 < r3) {
    0x000340c6 bmi.w 0x33ece                                 |         goto label_11;
                                                             |     }
    0x000340ca lsls r2, r3, 0x1f                             |     r2 = r3 << 0x1f;
                                                             |     if (r2 < r3) {
    0x000340cc bmi.w 0x343ec                                 |         goto label_71;
                                                             |     }
    0x000340d0 ldr.w sb, [r1, 8]                             |     sb = *((r1 + 8));
    0x000340d4 str.w sb, [r7, 0xc]                           |     __asm ("str.w sb, [r7, 0xc]");
    0x000340d8 ldrb r3, [r1, 1]                              |     r3 = *((r1 + 1));
    0x000340da add r1, r3                                    |     r1 += r3;
    0x000340dc mov r3, sb                                    |     r3 = sb;
    0x000340de add.w r0, r1, 0xd                             |     r0 = r1 + 0xd;
    0x000340e2 b 0x33fc2                                     |     goto label_12;
                                                             | label_54:
    0x000340e4 ldr r1, [r4, 8]                               |     r1 = *((r4 + 8));
    0x000340e6 adds r2, r3, 1                                |     r2 = r3 + 1;
    0x000340e8 cmp r2, r1                                    |     
                                                             |     if (r2 >= r1) {
    0x000340ea bhs.w 0x34524                                 |         goto label_72;
                                                             |     }
    0x000340ee str r2, [r4, 4]                               |     *((r4 + 4)) = r2;
    0x000340f0 movs r1, 0x2d                                 |     r1 = 0x2d;
    0x000340f2 ldr r2, [r4]                                  |     r2 = *(r4);
    0x000340f4 strb r1, [r2, r3]                             |     *((r2 + r3)) = r1;
    0x000340f6 movs r1, 0                                    |     r1 = 0;
    0x000340f8 ldrd r2, r3, [r4]                             |     __asm ("ldrd r2, r3, [r4]");
    0x000340fc strb r1, [r2, r3]                             |     *((r2 + r3)) = r1;
    0x000340fe b 0x33dc8                                     |     goto label_13;
                                                             | label_70:
    0x00034100 add.w r0, sb, r0, lsl 2                       |     r0 = sb + (r0 << 2);
    0x00034104 ldr r2, [r0, 8]                               |     r2 = *((r0 + 8));
    0x00034106 str r3, [r7, 0xc]                             |     *((r7 + 0xc)) = r3;
    0x00034108 cmp r2, 0                                     |     
                                                             |     if (r2 == 0) {
    0x0003410a beq.w 0x33ece                                 |         goto label_11;
                                                             |     }
    0x0003410e ldr.w r1, [sb]                                |     r1 = *(sb);
    0x00034112 subs r1, r1, r2                               |     r1 -= r2;
    0x00034114 add r1, sb                                    |     r1 += sb;
    0x00034116 b 0x340c2                                     |     goto label_14;
                                                             | label_64:
    0x00034118 sub.w r8, r8, r6                              |     r8 -= r6;
    0x0003411c dmb ish                                       |     __asm ("dmb ish");
                                                             |     do {
    0x00034120 ldrex r1, [r3]                                |         __asm ("ldrex r1, [r3]");
    0x00034124 add r1, r8                                    |         r1 += r8;
    0x00034126 strex r2, r1, [r3]                            |         __asm ("strex r2, r1, [r3]");
    0x0003412a cmp r2, 0                                     |         
    0x0003412c bne 0x34120                                   |         
                                                             |     } while (r2 != 0);
    0x0003412e dmb ish                                       |     __asm ("dmb ish");
    0x00034132 b 0x33e7a                                     |     goto label_7;
                                                             | label_48:
    0x00034134 lsls r0, r1, 0x1e                             |     r0 = r1 << 0x1e;
                                                             |     if (r0 >= r1) {
    0x00034136 bpl.w 0x3441e                                 |         goto label_73;
                                                             |     }
    0x0003413a ldr r0, [r3, 0x10]                            |     r0 = *((r3 + 0x10));
    0x0003413c cmp r0, 0                                     |     
                                                             |     if (r0 != 0) {
    0x0003413e bne.w 0x33cac                                 |         goto label_15;
                                                             |     }
    0x00034142 ldr r1, [r6, 0x18]                            |     r1 = *((r6 + 0x18));
    0x00034144 ldr r0, [r3, 0x34]                            |     r0 = *((r3 + 0x34));
    0x00034146 ldr.w sb, [r3, 0x1c]                          |     sb = *((r3 + 0x1c));
    0x0003414a blx 0x20420                                   |     SSL_get_error ();
    0x0003414e ldr.w r1, [r5, 0x80]                          |     r1 = *((r5 + 0x80));
    0x00034152 mov r3, r0                                    |     r3 = r0;
    0x00034154 mov r2, sb                                    |     r2 = sb;
    0x00034156 mov r0, sl                                    |     r0 = sl;
    0x00034158 ldr r1, [r1, 0x20]                            |     r1 = *((r1 + 0x20));
    0x0003415a str r1, [sp]                                  |     *(sp) = r1;
    0x0003415c mov r1, r4                                    |     r1 = r4;
    0x0003415e blx 0x23448                                   |     fcn_00023448 ();
                                                             | label_25:
    0x00034162 ldr r3, [r4, 4]                               |     r3 = *((r4 + 4));
    0x00034164 ldr r1, [r4, 8]                               |     r1 = *((r4 + 8));
    0x00034166 adds r2, r3, 1                                |     r2 = r3 + 1;
    0x00034168 cmp r2, r1                                    |     
                                                             |     if (r2 >= r1) {
    0x0003416a bhs.w 0x34402                                 |         goto label_74;
                                                             |     }
    0x0003416e str r2, [r4, 4]                               |     *((r4 + 4)) = r2;
    0x00034170 movs r1, 0x20                                 |     r1 = 0x20;
    0x00034172 ldr r2, [r4]                                  |     r2 = *(r4);
    0x00034174 strb r1, [r2, r3]                             |     *((r2 + r3)) = r1;
    0x00034176 movs r1, 0                                    |     r1 = 0;
    0x00034178 ldrd r2, r3, [r4]                             |     __asm ("ldrd r2, r3, [r4]");
    0x0003417c strb r1, [r2, r3]                             |     *((r2 + r3)) = r1;
                                                             | label_23:
    0x0003417e ldr.w r3, [pc, 0x4d4]                         |     
    0x00034182 ldr.w sb, [r8, r3]                            |     sb = *((r8 + r3));
    0x00034186 ldr.w r3, [sb]                                |     r3 = *(sb);
    0x0003418a ldr r3, [r3, 4]                               |     
    0x0003418c ldr r3, [r3]                                  |     r3 = *(0x3465a);
    0x0003418e ldrh r1, [r3, 4]                              |     r1 = *((r3 + 4));
    0x00034190 ands r3, r1, 4                                |     r3 = r1 & 4;
                                                             |     if (r3 != r1) {
    0x00034194 bne 0x34232                                   |         goto label_75;
                                                             |     }
    0x00034196 ldr.w sl, [r6, 0x58]                          |     sl = *((r6 + 0x58));
    0x0003419a ldrb.w r2, [sl, 0xa]                          |     r2 = *((sl + 0xa));
                                                             |     if (r2 != 0) {
    0x0003419e cbnz r2, 0x341c4                              |         goto label_76;
                                                             |     }
    0x000341a0 movs r1, 1                                    |     r1 = 1;
    0x000341a2 add.w r3, r7, 0xc                             |     r3 = r7 + 0xc;
    0x000341a6 add.w r2, r7, 8                               |     r2 = r7 + 8;
    0x000341aa mov r0, sl                                    |     r0 = sl;
    0x000341ac blx 0x22660                                   |     r0 = fcn_00022660 ();
    0x000341b0 mov r1, r0                                    |     r1 = r0;
                                                             |     if (r0 != 0) {
    0x000341b2 cbnz r0, 0x341d8                              |         goto label_77;
                                                             |     }
                                                             |     do {
                                                             | label_16:
    0x000341b4 movs r2, 0                                    |         r2 = 0;
    0x000341b6 str r2, [r7, 4]                               |         *((r7 + 4)) = r2;
                                                             | label_30:
    0x000341b8 ldr.w r3, [pc, 0x49c]                         |         r3 = *(0x34658);
    0x000341bc ldr.w r3, [r8, r3]                            |         r3 = *((r8 + r3));
    0x000341c0 ldr r1, [r3]                                  |         r1 = *(0x34658);
    0x000341c2 b 0x34240                                     |         goto label_29;
                                                             | label_76:
    0x000341c4 ldr.w r2, [sl, 0xc]                           |         r2 = *((sl + 0xc));
    0x000341c8 str r3, [r7, 0xc]                             |         *((r7 + 0xc)) = r3;
    0x000341ca cmp r2, 0                                     |         
    0x000341cc beq 0x341b4                                   |         
                                                             |     } while (r2 == 0);
    0x000341ce ldr.w r3, [sl]                                |     r3 = *(sl);
    0x000341d2 subs r3, r3, r2                               |     r3 -= r2;
    0x000341d4 add.w r1, sl, r3                              |     r1 = sl + r3;
                                                             | label_77:
    0x000341d8 ldrb r3, [r1]                                 |     r3 = *(r1);
    0x000341da lsls r2, r3, 0x1d                             |     r2 = r3 << 0x1d;
                                                             |     if (r2 < r3) {
    0x000341dc bmi 0x341b4                                   |         goto label_16;
                                                             |     }
    0x000341de lsls r0, r3, 0x1f                             |     r0 = r3 << 0x1f;
                                                             |     if (r0 < r3) {
    0x000341e0 bmi.w 0x344e0                                 |         goto label_78;
                                                             |     }
    0x000341e4 ldr r2, [r1, 8]                               |     r2 = *((r1 + 8));
    0x000341e6 str r2, [r7, 4]                               |     *((r7 + 4)) = r2;
    0x000341e8 ldrb r3, [r1, 1]                              |     r3 = *((r1 + 1));
    0x000341ea add r1, r3                                    |     r1 += r3;
    0x000341ec adds r1, 0xd                                  |     r1 += 0xd;
    0x000341ee b 0x34240                                     |     goto label_29;
                                                             | label_66:
    0x000341f0 lsrs r1, r1, 8                                |     r1 >>= 8;
    0x000341f2 adds r2, r7, 4                                |     r2 = r7 + 4;
    0x000341f4 mov r0, r6                                    |     r0 = r6;
    0x000341f6 blx 0x21064                                   |     fcn_00021064 ();
    0x000341f8 invalid                                       |     
                                                             | label_26:
    0x000341fc ldr r3, [r4, 4]                               |     r3 = *((r4 + 4));
    0x000341fe ldr r1, [r4, 8]                               |     r1 = *((r4 + 8));
    0x00034200 adds r2, r3, 1                                |     r2 = r3 + 1;
    0x00034202 cmp r2, r1                                    |     
                                                             |     if (r2 >= r1) {
    0x00034204 bhs.w 0x343de                                 |         goto label_79;
                                                             |     }
    0x00034208 str r2, [r4, 4]                               |     *((r4 + 4)) = r2;
    0x0003420a movs r1, 0x20                                 |     r1 = 0x20;
    0x0003420c ldr r2, [r4]                                  |     r2 = *(r4);
    0x0003420e strb r1, [r2, r3]                             |     *((r2 + r3)) = r1;
    0x00034210 movs r1, 0                                    |     r1 = 0;
    0x00034212 ldrd r2, r3, [r4]                             |     __asm ("ldrd r2, r3, [r4]");
    0x00034216 strb r1, [r2, r3]                             |     *((r2 + r3)) = r1;
                                                             | label_21:
    0x00034218 ldr r2, [r7, 4]                               |     r2 = *((r7 + 4));
    0x0003421a cmp r2, 0                                     |     
                                                             |     if (r2 == 0) {
    0x0003421c beq.w 0x33e1c                                 |         goto label_17;
                                                             |     }
    0x00034220 ldr r3, [r6, 0x5c]                            |     r3 = *((r6 + 0x5c));
    0x00034222 lsls r6, r3, 0x1f                             |     r6 = r3 << 0x1f;
                                                             |     if (r6 < r3) {
    0x00034224 bmi.w 0x34532                                 |         goto label_80;
                                                             |     }
                                                             | label_34:
    0x00034228 mov r1, sb                                    |     r1 = sb;
    0x0003422a mov r0, r4                                    |     r0 = r4;
    0x0003422c blx 0x1ffec                                   |     fcn_0001ffec ();
    0x00034230 b 0x33e1c                                     |     goto label_17;
                                                             | label_75:
    0x00034232 lsrs r1, r1, 8                                |     r1 >>= 8;
    0x00034234 adds r2, r7, 4                                |     r2 = r7 + 4;
    0x00034236 mov r0, r6                                    |     r0 = r6;
    0x00034238 blx 0x21064                                   |     fcn_00021064 ();
    0x0003423c ldr r2, [r7, 4]                               |     r2 = *((r7 + 4));
    0x0003423e mov r1, r0                                    |     r1 = r0;
                                                             | label_29:
    0x00034240 mov r0, r4                                    |     r0 = r4;
    0x00034242 blx 0x1ffec                                   |     fcn_0001ffec ();
    0x00034246 ldrd r3, r1, [r4, 4]                          |     __asm ("ldrd r3, r1, [r4, 4]");
    0x0003424a adds r2, r3, 1                                |     r2 = r3 + 1;
    0x0003424c cmp r2, r1                                    |     
                                                             |     if (r2 >= r1) {
    0x0003424e bhs.w 0x34410                                 |         goto label_81;
                                                             |     }
    0x00034252 str r2, [r4, 4]                               |     *((r4 + 4)) = r2;
    0x00034254 movs r1, 0x20                                 |     r1 = 0x20;
    0x00034256 ldr r2, [r4]                                  |     r2 = *(r4);
    0x00034258 strb r1, [r2, r3]                             |     *((r2 + r3)) = r1;
    0x0003425a movs r1, 0                                    |     r1 = 0;
    0x0003425c ldrd r2, r3, [r4]                             |     __asm ("ldrd r2, r3, [r4]");
    0x00034260 strb r1, [r2, r3]                             |     *((r2 + r3)) = r1;
                                                             | label_24:
    0x00034262 ldr.w r3, [sb]                                |     r3 = *(sb);
    0x00034266 ldr r3, [r3, 4]                               |     r3 = *((r3 + 4));
    0x00034268 ldr r3, [r3]                                  |     r3 = *(r3);
    0x0003426a ldrh r1, [r3, 0x3c]                           |     r1 = *((r3 + 0x3c));
    0x0003426c ands r3, r1, 4                                |     r3 = r1 & 4;
                                                             |     if (r3 != r1) {
    0x00034270 bne 0x3434e                                   |         goto label_82;
                                                             |     }
    0x00034272 ldr.w sl, [r6, 0x58]                          |     sl = *((r6 + 0x58));
    0x00034276 ldrb.w r2, [sl, 0xa]                          |     r2 = *((sl + 0xa));
    0x0003427a cmp r2, 7                                     |     
                                                             |     if (r2 > 7) {
    0x0003427c bhi 0x34322                                   |         goto label_83;
                                                             |     }
    0x0003427e movs r1, 8                                    |     r1 = 8;
    0x00034280 add.w r3, r7, 0xc                             |     r3 = r7 + 0xc;
    0x00034284 add.w r2, r7, 8                               |     r2 = r7 + 8;
    0x00034288 mov r0, sl                                    |     r0 = sl;
    0x0003428a blx 0x22660                                   |     fcn_00022660 ();
    0x0003428c strd r4, r6, [sl, 4]!                         |     __asm ("strd r4, r6, [sl, 4]!");
    0x00034290 cmp r0, 0                                     |     
                                                             |     if (r0 != 0) {
    0x00034292 bne 0x34336                                   |         goto label_84;
                                                             |     }
                                                             |     do {
                                                             | label_18:
    0x00034294 movs r3, 0                                    |         r3 = 0;
    0x00034296 str r3, [r7, 4]                               |         *((r7 + 4)) = r3;
                                                             | label_19:
    0x00034298 ldr.w r3, [sb]                                |         r3 = *(sb);
    0x0003429c ldr r3, [r3, 4]                               |         r3 = *((r3 + 4));
    0x0003429e ldr r3, [r3]                                  |         r3 = *(r3);
    0x000342a0 ldrh r1, [r3, 0x1c]                           |         r1 = *((r3 + 0x1c));
    0x000342a2 ands r3, r1, 4                                |         r3 = r1 & 4;
                                                             |         if (r3 == r1) {
    0x000342a6 beq.w 0x344a8                                 |             goto label_85;
                                                             |         }
    0x000342aa lsrs r1, r1, 8                                |         r1 >>= 8;
    0x000342ac adds r2, r7, 4                                |         r2 = r7 + 4;
    0x000342ae mov r0, r6                                    |         r0 = r6;
    0x000342b0 blx 0x21064                                   |         fcn_00021064 ();
    0x000342b4 ldr r2, [r7, 4]                               |         r2 = *((r7 + 4));
    0x000342b6 mov r1, r0                                    |         r1 = r0;
                                                             | label_28:
    0x000342b8 cmp r2, 0                                     |         
                                                             |         if (r2 <= 0) {
    0x000342ba ble 0x34366                                   |             goto label_35;
                                                             |         }
    0x000342bc mov r0, r4                                    |         r0 = r4;
    0x000342be blx 0x1ffec                                   |         fcn_0001ffec ();
    0x000342c2 ldr.w r3, [sb]                                |         r3 = *(sb);
    0x000342c4 adds r0, 0                                    |         r0 += 0;
    0x000342c6 ldr r3, [r3, 4]                               |         r3 = *((r3 + 4));
    0x000342c8 ldr r3, [r3]                                  |         r3 = *(r3);
    0x000342ca ldrh r1, [r3, 0x24]                           |         r1 = *((r3 + 0x24));
    0x000342cc ands r3, r1, 4                                |         r3 = r1 & 4;
                                                             |         if (r3 != r1) {
    0x000342d0 bne.w 0x3455c                                 |             goto label_86;
                                                             |         }
    0x000342d4 ldr.w sl, [r6, 0x58]                          |         sl = *((r6 + 0x58));
    0x000342d8 ldrb.w r2, [sl, 0xa]                          |         r2 = *((sl + 0xa));
    0x000342dc cmp r2, 4                                     |         
                                                             |         if (r2 > 4) {
    0x000342de bhi.w 0x345a4                                 |             goto label_45;
                                                             |         }
    0x000342e2 movs r1, 5                                    |         r1 = 5;
    0x000342e4 add.w r3, r7, 0xc                             |         r3 = r7 + 0xc;
    0x000342e8 add.w r2, r7, 8                               |         r2 = r7 + 8;
    0x000342ec mov r0, sl                                    |         r0 = sl;
    0x000342ee blx 0x22660                                   |         r0 = fcn_00022660 ();
    0x000342f2 mov r1, r0                                    |         r1 = r0;
    0x000342f4 cmp r0, 0                                     |         
                                                             |         if (r0 == 0) {
    0x000342f6 beq.w 0x345ac                                 |             goto label_87;
                                                             |         }
                                                             | label_41:
    0x000342fa ldrb r3, [r1]                                 |         r3 = *(r1);
    0x000342fc lsls r2, r3, 0x1d                             |         r2 = r3 << 0x1d;
                                                             |         if (r2 < r3) {
    0x000342fe bmi.w 0x345ac                                 |             goto label_87;
                                                             |         }
    0x00034302 lsls r0, r3, 0x1f                             |         r0 = r3 << 0x1f;
                                                             |         if (r0 < r3) {
    0x00034304 bmi.w 0x345fe                                 |             goto label_88;
                                                             |         }
    0x00034308 ldr r3, [r1, 8]                               |         r3 = *((r1 + 8));
    0x0003430a str r3, [r7, 4]                               |         *((r7 + 4)) = r3;
    0x0003430c ldrb r2, [r1, 1]                              |         r2 = *((r1 + 1));
    0x0003430e add r1, r2                                    |         r1 += r2;
    0x00034310 add.w sl, r1, 0xd                             |         sl = r1 + 0xd;
                                                             | label_37:
    0x00034314 cmp r3, 0                                     |         
                                                             |         if (r3 > 0) {
    0x00034316 bgt.w 0x345b2                                 |             goto label_89;
                                                             |         }
                                                             | label_40:
    0x0003431a ldr r1, [pc, 0x35c]                           |         
    0x0003431c movs r2, 2                                    |         r2 = 2;
    0x0003431e add r1, pc                                    |         r1 = 0x6899c;
    0x00034320 b 0x34360                                     |         goto label_90;
                                                             | label_83:
    0x00034322 ldr.w r2, [sl, 0x28]                          |         r2 = *((sl + 0x28));
    0x00034326 str r3, [r7, 0xc]                             |         *((r7 + 0xc)) = r3;
    0x00034328 cmp r2, 0                                     |         
    0x0003432a beq 0x34294                                   |         
                                                             |     } while (r2 == 0);
    0x0003432c ldr.w r3, [sl]                                |     r3 = *(sl);
    0x00034330 subs r3, r3, r2                               |     r3 -= r2;
    0x00034332 add.w r1, sl, r3                              |     r1 = sl + r3;
                                                             | label_84:
    0x00034336 ldrb r3, [r1]                                 |     r3 = *(r1);
    0x00034338 lsls r2, r3, 0x1d                             |     r2 = r3 << 0x1d;
                                                             |     if (r2 < r3) {
    0x0003433a bmi 0x34294                                   |         goto label_18;
                                                             |     }
    0x0003433c lsls r0, r3, 0x1f                             |     r0 = r3 << 0x1f;
                                                             |     if (r0 < r3) {
    0x0003433e bmi.w 0x34508                                 |         goto label_91;
                                                             |     }
    0x00034342 ldr r2, [r1, 8]                               |     r2 = *((r1 + 8));
    0x00034344 str r2, [r7, 4]                               |     *((r7 + 4)) = r2;
    0x00034346 ldrb r3, [r1, 1]                              |     r3 = *((r1 + 1));
    0x00034348 add r1, r3                                    |     r1 += r3;
    0x0003434a adds r1, 0xd                                  |     r1 += 0xd;
    0x0003434c b 0x3435c                                     |     goto label_33;
                                                             | label_82:
    0x0003434e lsrs r1, r1, 8                                |     r1 >>= 8;
    0x00034350 adds r2, r7, 4                                |     r2 = r7 + 4;
    0x00034352 mov r0, r6                                    |     r0 = r6;
    0x00034354 blx 0x21064                                   |     fcn_00021064 ();
    0x00034358 ldr r2, [r7, 4]                               |     r2 = *((r7 + 4));
    0x0003435a mov r1, r0                                    |     r1 = r0;
                                                             | label_33:
    0x0003435c cmp r2, 0                                     |     
                                                             |     if (r2 <= 0) {
    0x0003435e ble 0x34298                                   |         goto label_19;
                                                             |     }
                                                             | label_90:
    0x00034360 mov r0, r4                                    |     r0 = r4;
    0x00034362 blx 0x1ffec                                   |     fcn_0001ffec ();
    0x00034364 invalid                                       |     
                                                             | label_35:
    0x00034366 ldr.w r3, [sb]                                |     r3 = *(sb);
    0x0003436a ldr r3, [r3, 4]                               |     r3 = *((r3 + 4));
    0x0003436c ldr r3, [r3]                                  |     r3 = *(r3);
    0x0003436e ldrh r1, [r3, 0x14]                           |     r1 = *((r3 + 0x14));
    0x00034370 ands r3, r1, 4                                |     r3 = r1 & 4;
                                                             |     if (r3 != r1) {
    0x00034374 bne 0x343c8                                   |         goto label_92;
                                                             |     }
    0x00034376 ldr r6, [r6, 0x58]                            |     r6 = *((r6 + 0x58));
    0x00034378 ldrb r2, [r6, 0xa]                            |     r2 = *((r6 + 0xa));
    0x0003437a cmp r2, 2                                     |     
                                                             |     if (r2 > 2) {
    0x0003437c bhi 0x343a2                                   |         goto label_93;
                                                             |     }
    0x0003437e movs r1, 3                                    |     r1 = 3;
    0x00034380 add.w r3, r7, 0xc                             |     r3 = r7 + 0xc;
    0x00034384 add.w r2, r7, 8                               |     r2 = r7 + 8;
    0x00034388 mov r0, r6                                    |     r0 = r6;
    0x0003438a blx 0x22660                                   |     r0 = fcn_00022660 ();
    0x0003438e mov r1, r0                                    |     r1 = r0;
                                                             |     if (r0 != 0) {
    0x00034390 cbnz r0, 0x343b0                              |         goto label_94;
                                                             |     }
                                                             |     do {
                                                             | label_20:
    0x00034392 movs r3, 0                                    |         r3 = 0;
    0x00034394 mov r2, r3                                    |         r2 = r3;
    0x00034396 str r3, [r7, 4]                               |         *((r7 + 4)) = r3;
                                                             | label_32:
    0x00034398 ldr r3, [pc, 0x2bc]                           |         r3 = *(0x34658);
    0x0003439a ldr.w r3, [r8, r3]                            |         r3 = *((r8 + r3));
    0x0003439e ldr r1, [r3]                                  |         r1 = *(0x34658);
    0x000343a0 b 0x343d6                                     |         goto label_31;
                                                             | label_93:
    0x000343a2 ldr r2, [r6, 0x14]                            |         r2 = *((r6 + 0x14));
    0x000343a4 str r3, [r7, 0xc]                             |         *((r7 + 0xc)) = r3;
    0x000343a6 cmp r2, 0                                     |         
    0x000343a8 beq 0x34392                                   |         
                                                             |     } while (r2 == 0);
    0x000343aa ldr r3, [r6]                                  |     r3 = *(r6);
    0x000343ac subs r3, r3, r2                               |     r3 -= r2;
    0x000343ae adds r1, r6, r3                               |     r1 = r6 + r3;
                                                             | label_94:
    0x000343b0 ldrb r3, [r1]                                 |     r3 = *(r1);
    0x000343b2 lsls r2, r3, 0x1d                             |     r2 = r3 << 0x1d;
                                                             |     if (r2 < r3) {
    0x000343b4 bmi 0x34392                                   |         goto label_20;
                                                             |     }
    0x000343b6 lsls r0, r3, 0x1f                             |     r0 = r3 << 0x1f;
                                                             |     if (r0 < r3) {
    0x000343b8 bmi.w 0x344f4                                 |         goto label_95;
                                                             |     }
    0x000343bc ldr r2, [r1, 8]                               |     r2 = *((r1 + 8));
    0x000343be str r2, [r7, 4]                               |     *((r7 + 4)) = r2;
    0x000343c0 ldrb r3, [r1, 1]                              |     r3 = *((r1 + 1));
    0x000343c2 add r1, r3                                    |     r1 += r3;
    0x000343c4 adds r1, 0xd                                  |     r1 += 0xd;
    0x000343c6 b 0x343d6                                     |     goto label_31;
                                                             | label_92:
    0x000343c8 lsrs r1, r1, 8                                |     r1 >>= 8;
    0x000343ca adds r2, r7, 4                                |     r2 = r7 + 4;
    0x000343cc mov r0, r6                                    |     r0 = r6;
    0x000343ce blx 0x21064                                   |     fcn_00021064 ();
    0x000343d2 ldr r2, [r7, 4]                               |     r2 = *((r7 + 4));
    0x000343d4 mov r1, r0                                    |     r1 = r0;
                                                             | label_31:
    0x000343d6 mov r0, r4                                    |     r0 = r4;
    0x000343d8 blx 0x1ffec                                   |     fcn_0001ffec ();
    0x000343dc b 0x33e1c                                     |     goto label_17;
                                                             | label_79:
    0x000343de movs r2, 0x20                                 |     r2 = 0x20;
    0x000343e0 mov.w r1, -1                                  |     r1 = -1;
    0x000343e4 mov r0, r4                                    |     r0 = r4;
    0x000343e6 blx 0x21254                                   |     g_sprintf ()
    0x000343ea b 0x34218                                     |     goto label_21;
                                                             | label_71:
    0x000343ec mov r0, sb                                    |     r0 = sb;
    0x000343ee add.w r2, r7, 0xc                             |     r2 = r7 + 0xc;
    0x000343f2 blx 0x210b8                                   |     fcn_000210b8 ();
    0x000343f4 mcr p8, 3, r6, c2, c11, 7                     |     __asm ("mcr p8, 3, r6, c2, c11, 7");
    0x000343f8 mov sb, r3                                    |     sb = r3;
    0x000343fa cmp r0, 0                                     |     
                                                             |     if (r0 != 0) {
    0x000343fc bne.w 0x33fc2                                 |         goto label_12;
                                                             |     }
    0x00034400 b 0x33ed4                                     |     goto label_22;
                                                             | label_74:
    0x00034402 movs r2, 0x20                                 |     r2 = 0x20;
    0x00034404 mov.w r1, -1                                  |     r1 = -1;
    0x00034408 mov r0, r4                                    |     r0 = r4;
    0x0003440a blx 0x21254                                   |     g_sprintf ()
    0x0003440e b 0x3417e                                     |     goto label_23;
                                                             | label_81:
    0x00034410 movs r2, 0x20                                 |     r2 = 0x20;
    0x00034412 mov.w r1, -1                                  |     r1 = -1;
    0x00034416 mov r0, r4                                    |     r0 = r4;
    0x00034418 blx 0x21254                                   |     g_sprintf ()
    0x0003441c b 0x34262                                     |     goto label_24;
                                                             | label_73:
    0x0003441e lsls r1, r1, 0x1d                             |     r1 <<= 0x1d;
                                                             |     if (r1 >= r1) {
    0x00034420 bpl.w 0x34162                                 |         goto label_25;
                                                             |     }
    0x00034424 ldr r0, [r3, 0x14]                            |     r0 = *((r3 + 0x14));
    0x00034426 cmp r0, 0                                     |     
                                                             |     if (r0 != 0) {
    0x00034428 bne.w 0x33cac                                 |         goto label_15;
                                                             |     }
    0x0003442c ldrd r3, r1, [r4, 4]                          |     __asm ("ldrd r3, r1, [r4, 4]");
    0x00034430 adds r2, r3, 1                                |     r2 = r3 + 1;
    0x00034432 cmp r2, r1                                    |     
                                                             |     if (r2 >= r1) {
    0x00034434 bhs.w 0x34596                                 |         goto label_96;
                                                             |     }
    0x00034438 str r2, [r4, 4]                               |     *((r4 + 4)) = r2;
    0x0003443a movs r1, 0x3c                                 |     r1 = 0x3c;
    0x0003443c ldr r2, [r4]                                  |     r2 = *(r4);
    0x0003443e strb r1, [r2, r3]                             |     *((r2 + r3)) = r1;
    0x00034440 ldrd r2, r3, [r4]                             |     __asm ("ldrd r2, r3, [r4]");
    0x00034444 strb r0, [r2, r3]                             |     *((r2 + r3)) = r0;
                                                             | label_39:
    0x00034446 ldrh.w r3, [r6, 0x60]                         |     r3 = *((r6 + 0x60));
    0x0003444a movs r2, 0                                    |     r2 = 0;
    0x0003444c mov r1, r2                                    |     r1 = r2;
    0x0003444e mov r0, r4                                    |     r0 = r4;
    0x00034450 str r3, [sp]                                  |     *(sp) = r3;
    0x00034452 movs r3, 0xa                                  |     r3 = 0xa;
    0x00034454 blx 0x1f9dc                                   |     fcn_0001f9dc ();
    0x00034458 ldrd r3, r1, [r4, 4]                          |     __asm ("ldrd r3, r1, [r4, 4]");
    0x0003445c adds r2, r3, 1                                |     r2 = r3 + 1;
    0x0003445e cmp r2, r1                                    |     
                                                             |     if (r2 >= r1) {
    0x00034460 bhs.w 0x34588                                 |         goto label_97;
                                                             |     }
    0x00034464 str r2, [r4, 4]                               |     *((r4 + 4)) = r2;
    0x00034466 movs r1, 0x3e                                 |     r1 = 0x3e;
    0x00034468 ldr r2, [r4]                                  |     r2 = *(r4);
    0x0003446a strb r1, [r2, r3]                             |     *((r2 + r3)) = r1;
    0x0003446c movs r1, 0                                    |     r1 = 0;
    0x0003446e ldrd r2, r3, [r4]                             |     __asm ("ldrd r2, r3, [r4]");
    0x00034472 strb r1, [r2, r3]                             |     *((r2 + r3)) = r1;
                                                             | label_38:
    0x00034474 ldr.w r3, [r5, 0x80]                          |     r3 = *((r5 + 0x80));
    0x00034478 ldr r1, [r6, 0x18]                            |     r1 = *((r6 + 0x18));
    0x0003447a ldr r0, [r3, 0x34]                            |     r0 = *((r3 + 0x34));
    0x0003447c blx 0x20420                                   |     SSL_get_error ();
    0x00034480 ldr.w r2, [r5, 0x80]                          |     r2 = *((r5 + 0x80));
    0x00034484 mov r3, r0                                    |     r3 = r0;
    0x00034486 mov r1, r4                                    |     r1 = r4;
    0x00034488 mov r0, sl                                    |     r0 = sl;
    0x0003448a ldr r2, [r2, 0x20]                            |     r2 = *((r2 + 0x20));
    0x0003448c str r2, [sp]                                  |     *(sp) = r2;
    0x0003448e movs r2, 0                                    |     r2 = 0;
    0x00034490 blx 0x22358                                   |     fcn_00022358 ();
    0x00034494 b 0x34162                                     |     goto label_25;
                                                             | label_69:
    0x00034496 mov r0, sb                                    |     r0 = sb;
    0x00034498 adds r2, r7, 4                                |     r2 = r7 + 4;
    0x0003449a blx 0x210b8                                   |     fcn_000210b8 ();
    0x0003449c cdp p6, 0, c4, c14, c1, 4                     |     __asm ("cdp p6, 0, c4, c14, c1, 4");
    0x000344a0 cmp r0, 0                                     |     
                                                             |     if (r0 != 0) {
    0x000344a2 bne.w 0x341fc                                 |         goto label_26;
                                                             |     }
    0x000344a4 add r6, sp, 0x2ac                             |     r6 = sp + case.0x5984c.0;
    0x000344a6 b 0x34040                                     |     goto label_27;
                                                             | label_85:
    0x000344a8 ldr.w sl, [r6, 0x58]                          |     sl = *((r6 + 0x58));
    0x000344ac ldrb.w r2, [sl, 0xa]                          |     r2 = *((sl + 0xa));
    0x000344b0 cmp r2, 3                                     |     
                                                             |     if (r2 > 3) {
    0x000344b2 bhi 0x34542                                   |         goto label_98;
                                                             |     }
    0x000344b4 movs r1, 4                                    |     r1 = 4;
    0x000344b6 add.w r3, r7, 0xc                             |     r3 = r7 + 0xc;
    0x000344ba add.w r2, r7, 8                               |     r2 = r7 + 8;
    0x000344be mov r0, sl                                    |     r0 = sl;
    0x000344c0 blx 0x22660                                   |     r0 = fcn_00022660 ();
    0x000344c4 mov r1, r0                                    |     r1 = r0;
    0x000344c6 cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x000344c8 beq 0x3454a                                   |         goto label_99;
                                                             |     }
                                                             | label_36:
    0x000344ca ldrb r3, [r1]                                 |     r3 = *(r1);
    0x000344cc lsls r2, r3, 0x1d                             |     r2 = r3 << 0x1d;
                                                             |     if (r2 < r3) {
    0x000344ce bmi 0x3454a                                   |         goto label_99;
                                                             |     }
    0x000344d0 lsls r0, r3, 0x1f                             |     r0 = r3 << 0x1f;
                                                             |     if (r0 < r3) {
    0x000344d2 bmi 0x3456c                                   |         goto label_100;
                                                             |     }
    0x000344d4 ldr r2, [r1, 8]                               |     r2 = *((r1 + 8));
    0x000344d6 str r2, [r7, 4]                               |     *((r7 + 4)) = r2;
    0x000344d8 ldrb r3, [r1, 1]                              |     r3 = *((r1 + 1));
    0x000344da add r1, r3                                    |     r1 += r3;
    0x000344dc adds r1, 0xd                                  |     r1 += 0xd;
    0x000344de b 0x342b8                                     |     goto label_28;
                                                             | label_78:
    0x000344e0 adds r2, r7, 4                                |     r2 = r7 + 4;
    0x000344e2 mov r0, sl                                    |     r0 = sl;
    0x000344e4 blx 0x210b8                                   |     fcn_000210b8 ();
    0x000344e8 ldr r2, [r7, 4]                               |     r2 = *((r7 + 4));
    0x000344ea mov r1, r0                                    |     r1 = r0;
    0x000344ec cmp r0, 0                                     |     
                                                             |     if (r0 != 0) {
    0x000344ee bne.w 0x34240                                 |         goto label_29;
                                                             |     }
    0x000344f2 b 0x341b8                                     |     goto label_30;
                                                             | label_95:
    0x000344f4 adds r2, r7, 4                                |     r2 = r7 + 4;
    0x000344f6 mov r0, r6                                    |     r0 = r6;
    0x000344f8 blx 0x210b8                                   |     fcn_000210b8 ();
    0x000344fc ldr r2, [r7, 4]                               |     r2 = *((r7 + 4));
    0x000344fe mov r1, r0                                    |     r1 = r0;
    0x00034500 cmp r0, 0                                     |     
                                                             |     if (r0 != 0) {
    0x00034502 bne.w 0x343d6                                 |         goto label_31;
                                                             |     }
    0x00034506 b 0x34398                                     |     goto label_32;
                                                             | label_91:
    0x00034508 adds r2, r7, 4                                |     r2 = r7 + 4;
    0x0003450a mov r0, sl                                    |     r0 = sl;
    0x0003450c blx 0x210b8                                   |     fcn_000210b8 ();
    0x00034510 ldr r2, [r7, 4]                               |     r2 = *((r7 + 4));
    0x00034512 mov r1, r0                                    |     r1 = r0;
    0x00034514 cmp r0, 0                                     |     
                                                             |     if (r0 != 0) {
    0x00034516 bne.w 0x3435c                                 |         goto label_33;
                                                             |     }
    0x0003451a ldr r3, [pc, 0x13c]                           |     r3 = *(0x3465a);
    0x0003451c ldr.w r3, [r8, r3]                            |     r3 = *((r8 + r3));
    0x00034520 ldr r1, [r3]                                  |     r1 = *(0x3465a);
    0x00034522 b 0x3435c                                     |     goto label_33;
                                                             | label_72:
    0x00034524 movs r2, 0x2d                                 |     r2 = 0x2d;
    0x00034526 mov.w r1, -1                                  |     r1 = -1;
    0x0003452a mov r0, r4                                    |     r0 = r4;
    0x0003452c blx 0x21254                                   |     g_sprintf ()
    0x00034530 b 0x33dc8                                     |     goto label_13;
                                                             | label_80:
    0x00034532 ldr r1, [pc, 0x148]                           |     
    0x00034534 movs r2, 3                                    |     r2 = 3;
    0x00034536 mov r0, r4                                    |     r0 = r4;
    0x00034538 add r1, pc                                    |     r1 = 0x68bba;
    0x0003453a blx 0x1ffec                                   |     fcn_0001ffec ();
    0x0003453e ldr r2, [r7, 4]                               |     r2 = *((r7 + 4));
    0x00034540 b 0x34228                                     |     goto label_34;
                                                             | label_98:
    0x00034542 ldr.w r2, [sl, 0x18]                          |     r2 = *((sl + 0x18));
    0x00034546 str r3, [r7, 0xc]                             |     *((r7 + 0xc)) = r3;
                                                             |     if (r2 == 0) {
    0x00034548 cbnz r2, 0x34550                              |         
                                                             | label_99:
    0x0003454a movs r3, 0                                    |         r3 = 0;
    0x0003454c str r3, [r7, 4]                               |         *((r7 + 4)) = r3;
    0x0003454e b 0x34366                                     |         goto label_35;
                                                             |     }
    0x00034550 ldr.w r3, [sl]                                |     r3 = *(sl);
    0x00034554 subs r3, r3, r2                               |     r3 -= r2;
    0x00034556 add.w r1, sl, r3                              |     r1 = sl + r3;
    0x0003455a b 0x344ca                                     |     goto label_36;
                                                             | label_86:
    0x0003455c lsrs r1, r1, 8                                |     r1 >>= 8;
    0x0003455e adds r2, r7, 4                                |     r2 = r7 + 4;
    0x00034560 mov r0, r6                                    |     r0 = r6;
    0x00034562 blx 0x21064                                   |     fcn_00021064 ();
    0x00034566 ldr r3, [r7, 4]                               |     r3 = *((r7 + 4));
    0x00034568 mov sl, r0                                    |     sl = r0;
    0x0003456a b 0x34314                                     |     goto label_37;
                                                             | label_100:
    0x0003456c adds r2, r7, 4                                |     r2 = r7 + 4;
    0x0003456e mov r0, sl                                    |     r0 = sl;
    0x00034570 blx 0x210b8                                   |     fcn_000210b8 ();
    0x00034574 ldr r2, [r7, 4]                               |     r2 = *((r7 + 4));
    0x00034576 mov r1, r0                                    |     r1 = r0;
    0x00034578 cmp r0, 0                                     |     
                                                             |     if (r0 != 0) {
    0x0003457a bne.w 0x342b8                                 |         goto label_28;
                                                             |     }
    0x0003457e ldr r3, [pc, 0xd8]                            |     r3 = *(0x3465a);
    0x00034580 ldr.w r3, [r8, r3]                            |     r3 = *((r8 + r3));
    0x00034584 ldr r1, [r3]                                  |     r1 = *(0x3465a);
    0x00034586 b 0x342b8                                     |     goto label_28;
                                                             | label_97:
    0x00034588 movs r2, 0x3e                                 |     r2 = 0x3e;
    0x0003458a mov.w r1, -1                                  |     r1 = -1;
    0x0003458e mov r0, r4                                    |     r0 = r4;
    0x00034590 blx 0x21254                                   |     g_sprintf ()
    0x00034594 b 0x34474                                     |     goto label_38;
                                                             | label_96:
    0x00034596 movs r2, 0x3c                                 |     r2 = 0x3c;
    0x00034598 mov.w r1, -1                                  |     r1 = -1;
    0x0003459c mov r0, r4                                    |     r0 = r4;
    0x0003459e blx 0x21254                                   |     g_sprintf ()
    0x000345a2 b 0x34446                                     |     goto label_39;
                                                             | label_45:
    0x000345a4 ldr.w r2, [sl, 0x1c]                          |     r2 = *((sl + 0x1c));
    0x000345a8 str r3, [r7, 0xc]                             |     *((r7 + 0xc)) = r3;
                                                             |     if (r2 == 0) {
    0x000345aa cbnz r2, 0x345f2                              |         
                                                             | label_87:
    0x000345ac movs r3, 0                                    |         r3 = 0;
    0x000345ae str r3, [r7, 4]                               |         *((r7 + 4)) = r3;
    0x000345b0 b 0x3431a                                     |         goto label_40;
                                                             | label_89:
    0x000345b2 ldrd r3, r1, [r4, 4]                          |         __asm ("ldrd r3, r1, [r4, 4]");
    0x000345b6 adds r2, r3, 1                                |         r2 = r3 + 1;
    0x000345b8 cmp r2, r1                                    |         
                                                             |         if (r2 >= r1) {
    0x000345ba bhs 0x3462a                                   |             goto label_101;
                                                             |         }
    0x000345bc str r2, [r4, 4]                               |         *((r4 + 4)) = r2;
    0x000345be movs r1, 0x5b                                 |         r1 = 0x5b;
    0x000345c0 ldr r2, [r4]                                  |         r2 = *(r4);
    0x000345c2 strb r1, [r2, r3]                             |         *((r2 + r3)) = r1;
    0x000345c4 movs r1, 0                                    |         r1 = 0;
    0x000345c6 ldrd r2, r3, [r4]                             |         __asm ("ldrd r2, r3, [r4]");
    0x000345ca strb r1, [r2, r3]                             |         *((r2 + r3)) = r1;
                                                             | label_42:
    0x000345cc ldr r2, [r7, 4]                               |         r2 = *((r7 + 4));
    0x000345ce mov r1, sl                                    |         r1 = sl;
    0x000345d0 mov r0, r4                                    |         r0 = r4;
    0x000345d2 blx 0x1ffec                                   |         fcn_0001ffec ();
                                                             | label_44:
    0x000345d4 stc p9, c14, [ip, -0x350]                     |         __asm ("stc p9, c14, case.0x5984c.0");
    0x000345d8 adds r1, 1                                    |         r1++;
    0x000345da adds r2, r3, 1                                |         r2 = r3 + 1;
                                                             | label_43:
    0x000345dc cmp r2, r1                                    |         
                                                             |         if (r2 >= r1) {
    0x000345de bhs 0x3461c                                   |             goto label_102;
                                                             |         }
    0x000345e0 str r2, [r4, 4]                               |         *((r4 + 4)) = r2;
    0x000345e2 movs r1, 0x5d                                 |         r1 = 0x5d;
    0x000345e4 ldr r2, [r4]                                  |         r2 = *(r4);
    0x000345e6 strb r1, [r2, r3]                             |         *((r2 + r3)) = r1;
    0x000345e8 movs r1, 0                                    |         r1 = 0;
    0x000345ea ldrd r2, r3, [r4]                             |         __asm ("ldrd r2, r3, [r4]");
    0x000345ec movs r3, 0                                    |         r3 = 0;
    0x000345ee strb r1, [r2, r3]                             |         *((r2 + r3)) = r1;
    0x000345f0 b 0x3431a                                     |         goto label_40;
                                                             |     }
    0x000345f2 ldr.w r3, [sl]                                |     r3 = *(sl);
    0x000345f6 subs r3, r3, r2                               |     r3 -= r2;
    0x000345f8 add.w r1, sl, r3                              |     r1 = sl + r3;
    0x000345fc b 0x342fa                                     |     goto label_41;
                                                             | label_88:
    0x000345fe mov r0, sl                                    |     r0 = sl;
    0x00034600 adds r2, r7, 4                                |     r2 = r7 + 4;
    0x00034602 blx 0x210b8                                   |     fcn_000210b8 ();
    0x00034606 ldr r3, [r7, 4]                               |     r3 = *((r7 + 4));
    0x00034608 mov sl, r0                                    |     sl = r0;
    0x0003460a cmp r0, 0                                     |     
                                                             |     if (r0 != 0) {
    0x0003460c bne.w 0x34314                                 |         goto label_37;
                                                             |     }
    0x00034610 ldr r2, [pc, 0x44]                            |     r2 = *(0x34658);
    0x00034612 ldr.w r2, [r8, r2]                            |     r2 = *((r8 + r2));
    0x00034616 ldr.w sl, [r2]                                |     sl = *(0x34658);
    0x0003461a b 0x34314                                     |     goto label_37;
                                                             | label_102:
    0x0003461c movs r2, 0x5d                                 |     r2 = 0x5d;
    0x0003461e mov.w r1, -1                                  |     r1 = -1;
    0x00034622 mov r0, r4                                    |     r0 = r4;
    0x00034624 blx 0x21254                                   |     g_sprintf ()
    0x00034628 b 0x3431a                                     |     goto label_40;
                                                             | label_101:
    0x0003462a movs r2, 0x5b                                 |     r2 = 0x5b;
    0x0003462c mov.w r1, -1                                  |     r1 = -1;
    0x00034630 mov r0, r4                                    |     r0 = r4;
    0x00034632 blx 0x21254                                   |     g_sprintf ()
    0x00034636 b 0x345cc                                     |     goto label_42;
                                                             | label_61:
    0x00034638 blx 0x21bd4                                   |     r0 = fcn_00021bd4 ();
    0x0003463c asrs r4, r0, 0x10                             |     r4 = r0 >> 0x10;
    0x0003463e movs r7, r0                                   |     r7 = r0;
    0x00034640 bvc 0x345dc                                   |     __asm ("bvc aav.0x000345dc");
                                                             |     goto label_43;
    0x00034642 movs r6, r0                                   |     r6 = r0;
    0x00034644 adds r4, r1, r3                               |     r4 = r1 + r3;
    0x00034646 movs r0, r0                                   |     
    0x00034648 bvc 0x345d4                                   |     __asm ("bvc case.0x5984c.0");
                                                             |     goto label_44;
    0x0003464a movs r6, r0                                   |     r6 = r0;
                                                             |     if (r6 >= r0) {
    0x0003464c bpl 0x345a4                                   |         goto label_45;
                                                             |     }
    0x0003464e movs r6, r0                                   |     r6 = r0;
    0x00034650 pop {r1, r2, r3, r5, r7}                      |     
    0x00034652 movs r3, r0                                   |     r3 = r0;
    0x00034654 adds r0, r7, r4                               |     r0 = r7 + r4;
    0x00034656 movs r0, r0                                   |     
    0x00034658 adds r0, r5, r3                               |     r0 = r5 + r3;
    0x0003465a movs r0, r0                                   |     
    0x0003465c pop {r1, r2, r3, r4, r6, r7, pc}              |     
                                                             | }
    ; assembly                                   | /* r2dec pseudo code output */
                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsyslog-ng-3.31.so.0.0.0 @ 0x547f8 */
                                                 | #include <stdint.h>
                                                 |  
    ; (fcn) sym.result_append ()                 | void result_append (int16_t arg1, int16_t arg2, uint32_t arg3, int16_t arg4) {
                                                 |     int16_t var_0h;
                                                 |     r0 = arg1;
                                                 |     r1 = arg2;
                                                 |     r2 = arg3;
                                                 |     r3 = arg4;
    0x000547f8 cmp r2, 0                         |     
    0x000547fa push {r4, r5, r6, r7, lr}         |     
    0x000547fc mov r4, r0                        |     r4 = r0;
    0x000547fe sub sp, 0xc                       |     
    0x00054800 mov r5, r1                        |     r5 = r1;
    0x00054802 mov r6, r3                        |     r6 = r3;
                                                 |     if (r2 < 0) {
    0x00054804 blt 0x548c2                       |         goto label_5;
                                                 |     }
    0x00054806 cmp r6, 0                         |     
                                                 |     if (r6 == 0) {
    0x00054808 beq 0x548ce                       |         goto label_6;
                                                 |     }
                                                 | label_3:
    0x0005480a cmp r2, 0                         |     
                                                 |     if (r2 == 0) {
    0x0005480c beq 0x54892                       |         goto label_7;
                                                 |     }
    0x0005480e subs r5, 1                        |     r5--;
    0x00054810 adds r6, r5, r2                   |     r6 = r5 + r2;
    0x00054812 b 0x54846                         |     
                                                 |     while (r3 != 0) {
    0x00054814 cmp r1, r7                        |         
                                                 |         if (r1 >= r7) {
    0x00054816 bhs 0x548b4                       |             goto label_8;
                                                 |         }
    0x00054818 ldr r3, [r4]                      |         r3 = *(r4);
    0x0005481a movs r2, 0x5c                     |         r2 = 0x5c;
    0x0005481c str r1, [r4, 4]                   |         *((r4 + 4)) = r1;
    0x0005481e movs r1, 0                        |         r1 = 0;
    0x00054820 strb r2, [r3, r0]                 |         *((r3 + r0)) = r2;
    0x00054822 ldrd r2, r3, [r4]                 |         __asm ("ldrd r2, r3, [r4]");
    0x00054826 strb r1, [r2, r3]                 |         *((r2 + r3)) = r1;
                                                 | label_2:
    0x00054828 ldrd r3, r0, [r4, 4]              |         __asm ("ldrd r3, r0, [r4, 4]");
    0x0005482c ldrb r2, [r5]                     |         r2 = *(r5);
    0x0005482e adds r1, r3, 1                    |         r1 = r3 + 1;
    0x00054830 cmp r1, r0                        |         
                                                 |         if (r1 >= r0) {
    0x00054832 bhs 0x54896                       |             goto label_9;
                                                 |         }
    0x00054834 ldr r0, [r4]                      |         r0 = *(r4);
    0x00054836 str r1, [r4, 4]                   |         *((r4 + 4)) = r1;
    0x00054838 movs r1, 0                        |         r1 = 0;
    0x0005483a strb r2, [r0, r3]                 |         *((r0 + r3)) = r2;
    0x0005483c ldrd r2, r3, [r4]                 |         __asm ("ldrd r2, r3, [r4]");
    0x00054840 strb r1, [r2, r3]                 |         *((r2 + r3)) = r1;
                                                 | label_1:
    0x00054842 cmp r6, r5                        |         
                                                 |         if (r6 == r5) {
    0x00054844 beq 0x54892                       |             goto label_7;
                                                 |         }
                                                 | label_0:
    0x00054846 ldrb r2, [r5, 1]!                 |         r2 = *((r5 += 1));
    0x0005484a ldrd r0, r7, [r4, 4]              |         __asm ("ldrd r0, r7, [r4, 4]");
    0x0005484e cmp r2, 0x22                      |         
    0x00054850 it ne                             |         
                                                 |         if (r2 != 0x22) {
    0x00054852 cmpne r2, 0x27                    |             __asm ("cmpne r2, 0x27");
                                                 |         }
    0x00054854 ite eq                            |         
                                                 |         if (r2 != 0x22) {
    0x00054856 moveq r3, 1                       |             r3 = 1;
                                                 |         }
                                                 |         if (r2 == 0x22) {
    0x00054858 movne r3, 0                       |             r3 = 0;
                                                 |         }
    0x0005485a cmp r2, 0x5c                      |         
    0x0005485c it eq                             |         
                                                 |         if (r2 != 0x5c) {
    0x0005485e orreq r3, r3, 1                   |             r3 |= 1;
                                                 |         }
    0x00054862 adds r1, r0, 1                    |         r1 = r0 + 1;
    0x00054864 cmp r3, 0                         |         
    0x00054866 bne 0x54814                       |         
                                                 |     }
    0x00054868 cmp r2, 0x1f                      |     
                                                 |     if (r2 > 0x1f) {
    0x0005486a bhi 0x548a2                       |         goto label_10;
                                                 |     }
    0x0005486c cmp r1, r7                        |     
                                                 |     if (r1 >= r7) {
    0x0005486e bhs 0x548dc                       |         goto label_11;
                                                 |     }
    0x00054870 ldr r2, [r4]                      |     r2 = *(r4);
    0x00054872 str r1, [r4, 4]                   |     *((r4 + 4)) = r1;
    0x00054874 movs r1, 0x5c                     |     r1 = 0x5c;
    0x00054876 strb r1, [r2, r0]                 |     *((r2 + r0)) = r1;
    0x00054878 ldrd r1, r2, [r4]                 |     __asm ("ldrd r1, r2, [r4]");
    0x0005487c strb r3, [r1, r2]                 |     *((r1 + r2)) = r3;
                                                 | label_4:
    0x0005487e ldrb r0, [r5]                     |     r0 = *(r5);
    0x00054880 movs r3, 8                        |     r3 = 8;
    0x00054882 movs r2, 0x30                     |     r2 = 0x30;
    0x00054884 movs r1, 3                        |     r1 = 3;
    0x00054886 str r0, [sp]                      |     *(sp) = r0;
    0x00054888 mov r0, r4                        |     r0 = r4;
    0x0005488a blx 0x1f9dc                       |     fcn_0001f9dc ();
    0x0005488e cmp r6, r5                        |     
                                                 |     if (r6 != r5) {
    0x00054890 bne 0x54846                       |         goto label_0;
                                                 |     }
                                                 | label_7:
    0x00054892 add sp, 0xc                       |     
    0x00054894 pop {r4, r5, r6, r7, pc}          |     
                                                 |     do {
                                                 | label_9:
    0x00054896 mov.w r1, -1                      |         r1 = -1;
    0x0005489a mov r0, r4                        |         r0 = r4;
    0x0005489c blx 0x21254                       |         g_sprintf ()
    0x000548a0 b 0x54842                         |         goto label_1;
                                                 | label_10:
    0x000548a2 cmp r1, r7                        |         
    0x000548a4 bhs 0x54896                       |         
                                                 |     } while (r1 >= r7);
    0x000548a6 str r1, [r4, 4]                   |     *((r4 + 4)) = r1;
    0x000548a8 ldr r1, [r4]                      |     r1 = *(r4);
    0x000548aa strb r2, [r1, r0]                 |     *((r1 + r0)) = r2;
    0x000548ac ldrd r1, r2, [r4]                 |     __asm ("ldrd r1, r2, [r4]");
    0x000548b0 strb r3, [r1, r2]                 |     *((r1 + r2)) = r3;
    0x000548b2 b 0x54842                         |     goto label_1;
                                                 | label_8:
    0x000548b4 movs r2, 0x5c                     |     r2 = 0x5c;
    0x000548b6 mov.w r1, -1                      |     r1 = -1;
    0x000548ba mov r0, r4                        |     r0 = r4;
    0x000548bc blx 0x21254                       |     g_sprintf ()
    0x000548c0 b 0x54828                         |     goto label_2;
                                                 | label_5:
    0x000548c2 mov r0, r1                        |     r0 = r1;
    0x000548c4 blx 0x22d14                       |     r0 = fcn_00022d14 ();
    0x000548c8 mov r2, r0                        |     r2 = r0;
    0x000548ca cmp r6, 0                         |     
                                                 |     if (r6 != 0) {
    0x000548cc bne 0x5480a                       |         goto label_3;
                                                 |     }
                                                 | label_6:
    0x000548ce mov r1, r5                        |     r1 = r5;
    0x000548d0 mov r0, r4                        |     r0 = r4;
    0x000548d2 add sp, 0xc                       |     
    0x000548d4 pop.w {r4, r5, r6, r7, lr}        |     
    0x000548d8 b.w 0x1ffe8                       |     void (*0x1ffe8)() ();
                                                 | label_11:
    0x000548dc movs r2, 0x5c                     |     r2 = 0x5c;
    0x000548de mov.w r1, -1                      |     r1 = -1;
    0x000548e2 mov r0, r4                        |     r0 = r4;
    0x000548e4 blx 0x21254                       |     g_sprintf ()
    0x000548e8 b 0x5487e                         |     goto label_4;
                                                 | }
    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsyslog-ng-3.31.so.0.0.0 @ 0x60914 */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) sym.str_repr_decode_append_with_options ()           | void str_repr_decode_append_with_options (int16_t arg_1h, int16_t arg_2h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
                                                                 |     int16_t var_4h_2;
                                                                 |     int16_t var_8h;
                                                                 |     int16_t var_ch_2;
                                                                 |     int16_t var_14h;
                                                                 |     int16_t var_18h;
                                                                 |     int16_t var_1ch_2;
                                                                 |     int16_t var_20h;
                                                                 |     int16_t var_24h;
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
                                                                 |     r2 = arg3;
                                                                 |     r3 = arg4;
    0x00060914 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}       |     
    0x00060918 mov sb, r0                                        |     sb = r0;
    0x0006091a sub sp, 0x2c                                      |     
    0x0006091c ldr r0, [pc, 0x264]                               |     
    0x0006091e mov r5, r1                                        |     r5 = r1;
    0x00060920 movs r1, 0                                        |     r1 = 0;
    0x00060922 str r2, [sp, 4]                                   |     var_4h_2 = r2;
    0x00060924 ldr r2, [pc, 0x260]                               |     r2 = *(0x60b88);
    0x00060926 add r0, pc                                        |     r0 = 0xc14ae;
    0x00060928 ldr r2, [r0, r2]                                  |     
    0x0006092a ldr r2, [r2]                                      |     r2 = *(0xc14ae);
    0x0006092c str r2, [sp, 0x24]                                |     var_24h = r2;
    0x0006092e mov.w r2, 0                                       |     r2 = 0;
    0x00060932 ldrb r2, [r5]                                     |     r2 = *(r5);
    0x00060934 strb.w r1, [sp, 0x1c]                             |     var_1ch_2 = r1;
    0x00060938 ldr.w r1, [sb, 4]                                 |     r1 = *((sb + 4));
    0x0006093c strd sb, r5, [sp, 0x14]                           |     __asm ("strd sb, r5, [sp, 0x14]");
    0x00060940 str r3, [sp, 0x20]                                |     var_20h = r3;
    0x00060942 str r1, [sp, 8]                                   |     var_8h = r1;
    0x00060944 cmp r2, 0                                         |     
                                                                 |     if (r2 == 0) {
    0x00060946 beq 0x609de                                       |         goto label_5;
                                                                 |     }
    0x00060948 add.w sl, sp, 0x14                                |     sl += var_14h;
    0x0006094c mov r0, sl                                        |     r0 = sl;
    0x0006094e bl 0x60894                                        |     r0 = fcn_00060894 (r0);
    0x00060952 mov r8, r0                                        |     r8 = r0;
    0x00060954 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x00060956 bne 0x609dc                                       |         goto label_2;
                                                                 |     }
    0x00060958 ldr r7, [sp, 0x18]                                |     r7 = var_18h;
    0x0006095a mov r4, r7                                        |     r4 = r7;
    0x0006095c ldrb r6, [r4], 1                                  |     r6 = *(r4);
                                                                 |     r4++;
    0x00060960 cmp r6, 0x27                                      |     
    0x00060962 it ne                                             |     
                                                                 |     if (r6 != 0x27) {
    0x00060964 cmpne r6, 0x22                                    |         __asm ("cmpne r6, 0x22");
                                                                 |     }
    0x00060966 ite eq                                            |     
                                                                 |     if (r6 != 0x27) {
    0x00060968 moveq r3, 1                                       |         r3 = 1;
                                                                 |     }
                                                                 |     if (r6 == 0x27) {
    0x0006096a movne r3, 0                                       |         r3 = 0;
                                                                 |     }
                                                                 |     if (r6 != 0x27) {
    0x0006096c bne.w 0x60ab8                                     |         goto label_7;
                                                                 |     }
    0x00060970 ldrb r2, [r7, 1]                                  |     r2 = *((r7 + 1));
    0x00060972 strb.w r6, [sp, 0x1c]                             |     var_1ch_2 = r6;
    0x00060976 str r4, [sp, 0x18]                                |     var_18h = r4;
                                                                 |     if (r2 == 0) {
    0x00060978 cbz r2, 0x609a8                                   |         goto label_0;
                                                                 |     }
                                                                 |     do {
                                                                 | label_3:
    0x0006097a cmp r6, r2                                        |         
                                                                 |         if (r6 == r2) {
    0x0006097c beq 0x609fc                                       |             goto label_8;
                                                                 |         }
                                                                 | label_1:
    0x0006097e cmp r2, 0x5c                                      |         
                                                                 |         if (r2 == 0x5c) {
    0x00060980 beq 0x60a3a                                       |             goto label_9;
                                                                 |         }
    0x00060982 ldr r0, [sp, 0x14]                                |         r0 = var_14h;
    0x00060984 adds r4, 1                                        |         r4++;
    0x00060986 ldrd r1, r3, [r0, 4]                              |         __asm ("ldrd r1, r3, [r0, 4]");
    0x0006098a adds r7, r1, 1                                    |         r7 = r1 + 1;
    0x0006098c cmp r7, r3                                        |         
                                                                 |         if (r7 >= r3) {
    0x0006098e bhs 0x609e8                                       |             goto label_10;
                                                                 |         }
    0x00060990 ldr r3, [r0]                                      |         r3 = *(r0);
    0x00060992 str r7, [r0, 4]                                   |         *((r0 + 4)) = r7;
    0x00060994 str r4, [sp, 0x18]                                |         var_18h = r4;
    0x00060996 strb r2, [r3, r1]                                 |         *((r3 + r1)) = r2;
    0x00060998 mov.w r1, 0                                       |         r1 = 0;
    0x0006099c ldrd r2, r3, [r0]                                 |         __asm ("ldrd r2, r3, [r0]");
    0x000609a0 strb r1, [r2, r3]                                 |         *((r2 + r3)) = r1;
    0x000609a2 ldrb r2, [r4]                                     |         r2 = *(r4);
    0x000609a4 cmp r2, 0                                         |         
    0x000609a6 bne 0x6097a                                       |         
                                                                 |     } while (r2 != 0);
                                                                 | label_0:
    0x000609a8 ldr r3, [sp, 4]                                   |     r3 = var_4h_2;
    0x000609aa mov r0, sb                                        |     r0 = sb;
    0x000609ac ldr r1, [sp, 8]                                   |     r1 = var_8h;
    0x000609ae str r4, [r3]                                      |     *(r3) = r4;
    0x000609b0 blx 0x1fc8c                                       |     fcn_0001fc8c ();
    0x000609b4 subs r2, r4, r5                                   |     r2 = r4 - r5;
    0x000609b6 mov r1, r5                                        |     r1 = r5;
    0x000609b8 mov r0, sb                                        |     r0 = sb;
    0x000609ba blx 0x1ffec                                       |     fcn_0001ffec ();
                                                                 |     do {
    0x000609be ldr r2, [pc, 0x1cc]                               |         
    0x000609c0 ldr r3, [pc, 0x1c4]                               |         r3 = *(0x60b88);
    0x000609c2 add r2, pc                                        |         r2 = 0xc1554;
    0x000609c4 ldr r3, [r2, r3]                                  |         r3 = *(0xc1554);
    0x000609c6 ldr r2, [r3]                                      |         r2 = *(0xc1554);
    0x000609c8 ldr r3, [sp, 0x24]                                |         r3 = var_24h;
    0x000609ca eors r2, r3                                       |         r2 ^= r3;
    0x000609cc mov.w r3, 0                                       |         r3 = 0;
                                                                 |         if (r2 != r3) {
    0x000609d0 bne.w 0x60b80                                     |             goto label_11;
                                                                 |         }
    0x000609d4 mov r0, r8                                        |         r0 = r8;
    0x000609d6 add sp, 0x2c                                      |         
    0x000609d8 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |         
                                                                 | label_2:
    0x000609dc ldr r5, [sp, 0x18]                                |         r5 = var_18h;
                                                                 | label_5:
    0x000609de ldr r3, [sp, 4]                                   |         r3 = var_4h_2;
    0x000609e0 mov.w r8, 1                                       |         r8 = 1;
    0x000609e4 str r5, [r3]                                      |         *(r3) = r5;
    0x000609e6 b 0x609be                                         |         
                                                                 |     } while (1);
                                                                 | label_10:
    0x000609e8 mov.w r1, -1                                      |     r1 = -1;
    0x000609ec blx 0x21254                                       |     g_sprintf ()
    0x000609f0 ldrb r2, [r4]                                     |     r2 = *(r4);
    0x000609f2 str r4, [sp, 0x18]                                |     var_18h = r4;
    0x000609f4 cmp r2, 0                                         |     
                                                                 |     if (r2 == 0) {
    0x000609f6 beq 0x609a8                                       |         goto label_0;
                                                                 |     }
    0x000609f8 cmp r6, r2                                        |     
                                                                 |     if (r6 != r2) {
    0x000609fa bne 0x6097e                                       |         goto label_1;
                                                                 |     }
                                                                 | label_8:
    0x000609fc ldrb r3, [r4, 1]                                  |     r3 = *((r4 + 1));
    0x000609fe adds r4, 1                                        |     r4++;
    0x00060a00 str r4, [sp, 0x18]                                |     var_18h = r4;
    0x00060a02 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x00060a04 beq.w 0x60b52                                     |         goto label_12;
                                                                 |     }
    0x00060a08 mov r0, sl                                        |     r0 = sl;
    0x00060a0a bl 0x60894                                        |     r0 = fcn_00060894 (r0);
    0x00060a0e cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x00060a10 bne 0x609dc                                       |         goto label_2;
                                                                 |     }
    0x00060a12 ldr r4, [sp, 0x18]                                |     r4 = var_18h;
    0x00060a14 ldrb r3, [r4, 1]                                  |     r3 = *((r4 + 1));
    0x00060a16 adds r4, 1                                        |     r4++;
    0x00060a18 str r4, [sp, 0x18]                                |     var_18h = r4;
    0x00060a1a cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x00060a1c beq 0x609a8                                       |         goto label_0;
                                                                 |     }
                                                                 |     do {
    0x00060a1e mov r0, sl                                        |         r0 = sl;
    0x00060a20 bl 0x60894                                        |         r0 = fcn_00060894 (r0);
    0x00060a24 cmp r0, 0                                         |         
                                                                 |         if (r0 != 0) {
    0x00060a26 bne.w 0x60b6a                                     |             goto label_13;
                                                                 |         }
    0x00060a2a ldr r3, [sp, 0x18]                                |         r3 = var_18h;
    0x00060a2c ldrb r2, [r3, 1]                                  |         r2 = *((r3 + 1));
    0x00060a2e adds r3, 1                                        |         r3++;
    0x00060a30 str r3, [sp, 0x18]                                |         var_18h = r3;
    0x00060a32 cmp r2, 0                                         |         
    0x00060a34 bne 0x60a1e                                       |         
                                                                 |     } while (r2 != 0);
    0x00060a36 mov r4, r3                                        |     r4 = r3;
    0x00060a38 b 0x609a8                                         |     goto label_0;
                                                                 | label_9:
    0x00060a3a mov fp, r4                                        |     
    0x00060a3c adds r4, 1                                        |     r4++;
    0x00060a3e ldrb.w r3, [fp, 1]                                |     r3 = *(arg_1h);
    0x00060a42 str r4, [sp, 0x18]                                |     var_18h = r4;
    0x00060a44 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x00060a46 beq 0x609a8                                       |         goto label_0;
                                                                 |     }
    0x00060a48 sub.w r2, r3, 0x5c                                |     r2 = r3 - 0x5c;
    0x00060a4c ldr r7, [sp, 0x14]                                |     r7 = var_14h;
    0x00060a4e cmp r2, 0x18                                      |     
                                                                 |     if (r2 > 0x18) {
    0x00060a50 bhi 0x60b0e                                       |         goto label_14;
                                                                 |     }
                                                                 |     /* switch table (25 cases) at 0x60a56 */
    0x00060a52 tbb [pc, r2]                                      |     __asm ("tbb case.0x5984c.0");
    0x00060a70 movs r3, 9                                        |     r3 = 9;
                                                                 | label_6:
    0x00060a72 ldrd r1, r0, [r7, 4]                              |     __asm ("ldrd r1, r0, [r7, 4]");
    0x00060a76 add.w r4, fp, 2                                   |     r4 += arg_2h;
    0x00060a7a adds r2, r1, 1                                    |     r2 = r1 + 1;
    0x00060a7c cmp r2, r0                                        |     
                                                                 |     if (r2 >= r0) {
    0x00060a7e bhs 0x60a9e                                       |         goto label_15;
                                                                 |     }
    0x00060a80 str r2, [r7, 4]                                   |     *((r7 + 4)) = r2;
    0x00060a82 ldr r2, [r7]                                      |     r2 = *(r7);
    0x00060a84 str r4, [sp, 0x18]                                |     var_18h = r4;
    0x00060a86 strb r3, [r2, r1]                                 |     *((r2 + r1)) = r3;
    0x00060a88 mov.w r1, 0                                       |     r1 = 0;
    0x00060a8c ldrd r2, r3, [r7]                                 |     __asm ("ldrd r2, r3, [r7]");
    0x00060a90 strb r1, [r2, r3]                                 |     *((r2 + r3)) = r1;
    0x00060a92 ldrb.w r2, [fp, 2]                                |     r2 = *(arg_2h);
    0x00060a96 cmp r2, 0                                         |     
                                                                 |     if (r2 != 0) {
    0x00060a98 bne.w 0x6097a                                     |         goto label_3;
                                                                 |     }
    0x00060a9c b 0x609a8                                         |     goto label_0;
                                                                 | label_15:
    0x00060a9e mov r2, r3                                        |     r2 = r3;
    0x00060aa0 mov r0, r7                                        |     r0 = r7;
    0x00060aa2 mov.w r1, -1                                      |     r1 = -1;
    0x00060aa6 blx 0x21254                                       |     g_sprintf ()
    0x00060aaa ldrb.w r2, [fp, 2]                                |     r2 = *(arg_2h);
    0x00060aae str r4, [sp, 0x18]                                |     var_18h = r4;
    0x00060ab0 cmp r2, 0                                         |     
                                                                 |     if (r2 != 0) {
    0x00060ab2 bne.w 0x6097a                                     |         goto label_3;
                                                                 |     }
    0x00060ab6 b 0x609a8                                         |     goto label_0;
                                                                 | label_7:
    0x00060ab8 ldr r0, [sp, 0x14]                                |     r0 = var_14h;
    0x00060aba ldrd r1, r2, [r0, 4]                              |     __asm ("ldrd r1, r2, [r0, 4]");
    0x00060abe adds r5, r1, 1                                    |     r5 = r1 + 1;
    0x00060ac0 cmp r5, r2                                        |     
                                                                 |     if (r5 >= r2) {
    0x00060ac2 bhs 0x60b40                                       |         goto label_16;
                                                                 |     }
    0x00060ac4 ldr r2, [r0]                                      |     r2 = *(r0);
    0x00060ac6 str r5, [r0, 4]                                   |     *((r0 + 4)) = r5;
    0x00060ac8 str r4, [sp, 0x18]                                |     var_18h = r4;
    0x00060aca strb r6, [r2, r1]                                 |     *((r2 + r1)) = r6;
    0x00060acc ldrd r1, r2, [r0]                                 |     __asm ("ldrd r1, r2, [r0]");
    0x00060ad0 strb r3, [r1, r2]                                 |     *((r1 + r2)) = r3;
    0x00060ad2 ldrb r3, [r7, 1]                                  |     r3 = *((r7 + 1));
    0x00060ad4 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x00060ad6 beq 0x60b52                                       |         goto label_12;
                                                                 |     }
                                                                 | label_4:
    0x00060ad8 mov r0, sl                                        |     r0 = sl;
    0x00060ada bl 0x60894                                        |     r0 = fcn_00060894 (r0);
    0x00060ade cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x00060ae0 bne.w 0x609dc                                     |         goto label_2;
                                                                 |     }
    0x00060ae4 ldrd r3, r4, [sp, 0x14]                           |     __asm ("ldrd r3, r4, [var_14h]");
    0x00060ae8 ldrd r1, r7, [r3, 4]                              |     __asm ("ldrd r1, r7, [r3, 4]");
    0x00060aec mov r5, r4                                        |     r5 = r4;
    0x00060aee ldrb r2, [r5], 1                                  |     r2 = *(r5);
                                                                 |     r5++;
    0x00060af2 adds r6, r1, 1                                    |     r6 = r1 + 1;
    0x00060af4 cmp r6, r7                                        |     
                                                                 |     if (r6 >= r7) {
    0x00060af6 bhs 0x60b56                                       |         goto label_17;
                                                                 |     }
    0x00060af8 str r6, [r3, 4]                                   |     *((r3 + 4)) = r6;
    0x00060afa ldr r6, [r3]                                      |     r6 = *(r3);
    0x00060afc str r5, [sp, 0x18]                                |     var_18h = r5;
    0x00060afe strb r2, [r6, r1]                                 |     *((r6 + r1)) = r2;
    0x00060b00 ldrd r2, r3, [r3]                                 |     __asm ("ldrd r2, r3, [r3]");
    0x00060b04 strb r0, [r2, r3]                                 |     *((r2 + r3)) = r0;
    0x00060b06 ldrb r3, [r4, 1]                                  |     r3 = *((r4 + 1));
    0x00060b08 cmp r3, 0                                         |     
                                                                 |     if (r3 != 0) {
    0x00060b0a bne 0x60ad8                                       |         goto label_4;
                                                                 |     }
    0x00060b0c b 0x609de                                         |     goto label_5;
                                                                 | label_14:
    0x00060b0e cmp r6, r3                                        |     
                                                                 |     if (r6 == r3) {
    0x00060b10 beq 0x60a72                                       |         goto label_6;
                                                                 |     }
    0x00060b12 ldrd r2, r0, [r7, 4]                              |     __asm ("ldrd r2, r0, [r7, 4]");
    0x00060b16 adds r1, r2, 1                                    |     r1 = r2 + 1;
    0x00060b18 cmp r1, r0                                        |     
                                                                 |     if (r1 >= r0) {
    0x00060b1a bhs 0x60b6e                                       |         goto label_18;
                                                                 |     }
    0x00060b1c str r1, [r7, 4]                                   |     *((r7 + 4)) = r1;
    0x00060b1e movs r0, 0x5c                                     |     r0 = 0x5c;
    0x00060b20 ldr r1, [r7]                                      |     r1 = *(r7);
    0x00060b22 strb r0, [r1, r2]                                 |     *((r1 + r2)) = r0;
    0x00060b24 mov.w r0, 0                                       |     r0 = 0;
    0x00060b28 ldrd r1, r2, [r7]                                 |     __asm ("ldrd r1, r2, [r7]");
    0x00060b2c strb r0, [r1, r2]                                 |     *((r1 + r2)) = r0;
    0x00060b2e b 0x60a72                                         |     goto label_6;
    0x00060b30 movs r3, 0xd                                      |     r3 = 0xd;
    0x00060b32 b 0x60a72                                         |     goto label_6;
    0x00060b34 movs r3, 0xc                                      |     r3 = 0xc;
    0x00060b36 b 0x60a72                                         |     goto label_6;
    0x00060b38 movs r3, 8                                        |     r3 = 8;
    0x00060b3a b 0x60a72                                         |     goto label_6;
    0x00060b3c movs r3, 0xa                                      |     r3 = 0xa;
    0x00060b3e b 0x60a72                                         |     goto label_6;
                                                                 | label_16:
    0x00060b40 mov r2, r6                                        |     r2 = r6;
    0x00060b42 mov.w r1, -1                                      |     r1 = -1;
    0x00060b46 blx 0x21254                                       |     g_sprintf ()
    0x00060b4a ldrb r3, [r7, 1]                                  |     r3 = *((r7 + 1));
    0x00060b4c str r4, [sp, 0x18]                                |     var_18h = r4;
    0x00060b4e cmp r3, 0                                         |     
                                                                 |     if (r3 != 0) {
    0x00060b50 bne 0x60ad8                                       |         goto label_4;
                                                                 |     }
                                                                 | label_12:
    0x00060b52 mov r5, r4                                        |     r5 = r4;
    0x00060b54 b 0x609de                                         |     goto label_5;
                                                                 | label_17:
    0x00060b56 mov r0, r3                                        |     r0 = r3;
    0x00060b58 mov.w r1, -1                                      |     r1 = -1;
    0x00060b5c blx 0x21254                                       |     g_sprintf ()
    0x00060b60 ldrb r3, [r4, 1]                                  |     r3 = *((r4 + 1));
    0x00060b62 str r5, [sp, 0x18]                                |     var_18h = r5;
    0x00060b64 cmp r3, 0                                         |     
                                                                 |     if (r3 != 0) {
    0x00060b66 bne 0x60ad8                                       |         goto label_4;
                                                                 |     }
    0x00060b68 b 0x609de                                         |     goto label_5;
                                                                 | label_13:
    0x00060b6a ldr r4, [sp, 0x18]                                |     r4 = var_18h;
    0x00060b6c b 0x609a8                                         |     goto label_0;
                                                                 | label_18:
    0x00060b6e movs r2, 0x5c                                     |     r2 = 0x5c;
    0x00060b70 mov.w r1, -1                                      |     r1 = -1;
    0x00060b74 mov r0, r7                                        |     r0 = r7;
    0x00060b76 str r3, [sp, 0xc]                                 |     var_ch_2 = r3;
    0x00060b78 blx 0x21254                                       |     g_sprintf ()
    0x00060b7c ldr r3, [sp, 0xc]                                 |     r3 = var_ch_2;
    0x00060b7e b 0x60a72                                         |     goto label_6;
                                                                 | label_11:
    0x00060b80 blx 0x21bd4                                       |     r0 = fcn_00021bd4 ();
    0x00060b84 lsrs r6, r0, 0xc                                  |     r6 = r0 >> 0xc;
    0x00060b86 movs r4, r0                                       |     r4 = r0;
    0x00060b88 adds r4, r1, r3                                   |     r4 = r1 + r3;
    0x00060b8a movs r0, r0                                       |     
    0x00060b8c lsrs r2, r5, 9                                    |     r2 = r5 >> 9;
    0x00060b8e movs r4, r0                                       |     r4 = 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/libsyslog-ng-3.31.so.0.0.0 @ 0x60c38 */
                                                     | #include <stdint.h>
                                                     |  
    ; (fcn) sym.str_repr_encode_append ()            | void str_repr_encode_append (int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
                                                     |     r0 = arg1;
                                                     |     r1 = arg2;
                                                     |     r2 = arg3;
                                                     |     r3 = arg4;
                                                     | label_2:
    0x00021250 invalid                               |     void (*0x21254)() ();
    0x00060c38 push.w {r4, r5, r6, r7, r8, lr}       |     
    0x00060c3c subs r5, r2, 0                        |     r5 = r2 - 0;
    0x00060c3e mov r4, r0                            |     r4 = r0;
    0x00060c40 mov r7, r1                            |     r7 = r1;
    0x00060c42 mov r8, r3                            |     r8 = r3;
                                                     |     if (r5 < r2) {
    0x00060c44 blt 0x60cb8                           |         goto label_3;
                                                     |     }
    0x00060c46 cmp r5, 0                             |     
                                                     |     if (r5 == 0) {
    0x00060c48 beq 0x60cc4                           |         goto label_4;
                                                     |     }
                                                     |     do {
    0x00060c4a mov r2, r5                            |         r2 = r5;
    0x00060c4c movs r1, 0x27                         |         r1 = 0x27;
    0x00060c4e mov r0, r7                            |         r0 = r7;
    0x00060c50 blx 0x235c8                           |         fcn_000235c8 ();
    0x00060c54 mov r2, r5                            |         r2 = r5;
    0x00060c56 mov r6, r0                            |         r6 = r0;
    0x00060c58 movs r1, 0x22                         |         r1 = 0x22;
    0x00060c5a mov r0, r7                            |         r0 = r7;
    0x00060c5c blx 0x235c8                           |         r0 = fcn_000235c8 ();
    0x00060c60 orrs.w r3, r6, r0                     |         r3 = r6 | r0;
                                                     |         if (r3 == r6) {
    0x00060c64 beq 0x60cd4                           |             goto label_5;
                                                     |         }
    0x00060c66 ldr r2, [r4, 4]                       |         r2 = *((r4 + 4));
    0x00060c68 clz lr, r6                            |         lr &= r6;
    0x00060c6c lsr.w lr, lr, 5                       |         lr >>= 5;
    0x00060c70 cmp r0, 0                             |         
    0x00060c72 it eq                                 |         
                                                     |         if (r0 != 0) {
    0x00060c74 moveq lr, 0                           |             lr = 0;
                                                     |         }
    0x00060c78 ldr r1, [r4, 8]                       |         r1 = *((r4 + 8));
    0x00060c7a add.w ip, r2, 1                       |         
    0x00060c7e cmp.w lr, 0                           |         
                                                     |         if (lr == 0) {
    0x00060c82 beq 0x60d22                           |             goto label_6;
                                                     |         }
    0x00060c84 cmp ip, r1                            |         
                                                     |         if (ip >= r1) {
    0x00060c86 bhs.w 0x60d90                         |             goto label_7;
                                                     |         }
    0x00060c8a ldr r3, [r4]                          |         r3 = *(r4);
    0x00060c8c movs r1, 0x27                         |         r1 = 0x27;
    0x00060c8e str.w ip, [r4, 4]                     |         __asm ("str.w ip, [r4, 4]");
    0x00060c92 strb r1, [r3, r2]                     |         *((r3 + r2)) = r1;
    0x00060c94 movs r1, 0                            |         r1 = 0;
    0x00060c96 ldrd r2, r3, [r4]                     |         __asm ("ldrd r2, r3, [r4]");
    0x00060c9a strb r1, [r2, r3]                     |         *((r2 + r3)) = r1;
                                                     | label_1:
    0x00060c9c movs r3, 0                            |         r3 = 0;
    0x00060c9e mov r2, r5                            |         r2 = r5;
    0x00060ca0 mov r1, r7                            |         r1 = r7;
    0x00060ca2 mov r0, r4                            |         r0 = r4;
    0x00060ca4 blx 0x23048                           |         fcn_00023048 ();
    0x00060ca8 ldrd r3, r1, [r4, 4]                  |         __asm ("ldrd r3, r1, [r4, 4]");
    0x00060cac adds r2, r3, 1                        |         r2 = r3 + 1;
    0x00060cae cmp r2, r1                            |         
                                                     |         if (r2 >= r1) {
    0x00060cb0 bhs 0x60dae                           |             goto label_8;
                                                     |         }
    0x00060cb2 ldr r1, [r4]                          |         r1 = *(r4);
    0x00060cb4 movs r0, 0x27                         |         r0 = 0x27;
    0x00060cb6 b 0x60d64                             |         goto label_9;
                                                     | label_3:
    0x00060cb8 mov r0, r1                            |         r0 = r1;
    0x00060cba blx 0x22d14                           |         r0 = fcn_00022d14 ();
    0x00060cbe mov r5, r0                            |         r5 = r0;
    0x00060cc0 cmp r5, 0                             |         
    0x00060cc2 bne 0x60c4a                           |         
                                                     |     } while (r5 != 0);
                                                     | label_4:
    0x00060cc4 ldr r1, [pc, 0xf8]                    |     
    0x00060cc6 mov r0, r4                            |     r0 = r4;
    0x00060cc8 movs r2, 2                            |     r2 = 2;
    0x00060cca pop.w {r4, r5, r6, r7, r8, lr}        |     
    0x00060cce add r1, pc                            |     r1 = 0xc1a92;
    0x00060cd0 b.w 0x1ffe8                           |     void (*0x1ffe8)() ();
                                                     | label_5:
    0x00060cd4 ldr r1, [pc, 0xec]                    |     
    0x00060cd6 mov r0, r7                            |     r0 = r7;
    0x00060cd8 add r1, pc                            |     r1 = 0xc1aa0;
    0x00060cda blx 0x1ffac                           |     r0 = fcn_0001ffac ();
    0x00060cde cmp r5, r0                            |     
                                                     |     if (r5 <= r0) {
    0x00060ce0 bhi 0x60d02                           |         
    0x00060ce2 cmp.w r8, 0                           |         
                                                     |         if (r8 != 0) {
    0x00060ce6 beq 0x60cf4                           |             
    0x00060ce8 mov r1, r8                            |             r1 = r8;
    0x00060cea mov r0, r7                            |             r0 = r7;
    0x00060cec blx 0x1ffac                           |             r0 = fcn_0001ffac ();
    0x00060cf0 cmp r5, r0                            |             
                                                     |             if (r5 > r0) {
    0x00060cf2 bhi 0x60d02                           |                 goto label_10;
                                                     |             }
                                                     |         }
    0x00060cf4 mov r2, r5                            |         r2 = r5;
    0x00060cf6 mov r1, r7                            |         r1 = r7;
    0x00060cf8 mov r0, r4                            |         r0 = r4;
    0x00060cfa pop.w {r4, r5, r6, r7, r8, lr}        |         
    0x00060cfe b.w 0x1ffe8                           |         void (*0x1ffe8)() ();
                                                     |     }
                                                     | label_10:
    0x00060d02 ldrd r2, r1, [r4, 4]                  |     __asm ("ldrd r2, r1, [r4, 4]");
                                                     |     do {
    0x00060d06 adds r3, r2, 1                        |         r3 = r2 + 1;
    0x00060d08 cmp r3, r1                            |         
                                                     |         if (r3 >= r1) {
    0x00060d0a bhs 0x60d82                           |             goto label_11;
                                                     |         }
    0x00060d0c str r3, [r4, 4]                       |         *((r4 + 4)) = r3;
    0x00060d0e movs r1, 0x22                         |         r1 = 0x22;
    0x00060d10 ldr r3, [r4]                          |         r3 = *(r4);
    0x00060d12 strb r1, [r3, r2]                     |         *((r3 + r2)) = r1;
    0x00060d14 movs r1, 0                            |         r1 = 0;
    0x00060d16 ldrd r2, r3, [r4]                     |         __asm ("ldrd r2, r3, [r4]");
    0x00060d1a strb r1, [r2, r3]                     |         *((r2 + r3)) = r1;
                                                     | label_0:
    0x00060d1c ldr r3, [pc, 0xa8]                    |         
    0x00060d1e add r3, pc                            |         r3 = 0xc1aea;
    0x00060d20 b 0x60d4c                             |         goto label_12;
                                                     | label_6:
    0x00060d22 clz r0, r0                            |         r0 &= r0;
    0x00060d26 cmp r6, 0                             |         
    0x00060d28 lsr.w r0, r0, 5                       |         r0 >>= 5;
    0x00060d2c it eq                                 |         
                                                     |         if (r6 != 0) {
    0x00060d2e moveq r0, 0                           |             r0 = 0;
                                                     |         }
    0x00060d30 cmp r0, 0                             |         
    0x00060d32 beq 0x60d06                           |         
                                                     |     } while (r0 == 0);
    0x00060d34 cmp ip, r1                            |     
                                                     |     if (ip >= r1) {
    0x00060d36 bhs 0x60d74                           |         goto label_13;
                                                     |     }
    0x00060d38 ldr r3, [r4]                          |     r3 = *(r4);
    0x00060d3a movs r1, 0x22                         |     r1 = 0x22;
    0x00060d3c str.w ip, [r4, 4]                     |     __asm ("str.w ip, [r4, 4]");
    0x00060d40 strb r1, [r3, r2]                     |     *((r3 + r2)) = r1;
    0x00060d42 ldrd r2, r3, [r4]                     |     __asm ("ldrd r2, r3, [r4]");
    0x00060d46 strb.w lr, [r2, r3]                   |     
                                                     |     do {
    0x00060d4a movs r3, 0                            |         r3 = 0;
                                                     | label_12:
    0x00060d4c mov r2, r5                            |         r2 = r5;
    0x00060d4e mov r1, r7                            |         r1 = r7;
    0x00060d50 mov r0, r4                            |         r0 = r4;
    0x00060d52 blx 0x23048                           |         fcn_00023048 ();
    0x00060d56 ldrd r3, r1, [r4, 4]                  |         __asm ("ldrd r3, r1, [r4, 4]");
    0x00060d5a adds r2, r3, 1                        |         r2 = r3 + 1;
    0x00060d5c cmp r2, r1                            |         
                                                     |         if (r2 >= r1) {
    0x00060d5e bhs 0x60d9e                           |             goto label_14;
                                                     |         }
    0x00060d60 ldr r1, [r4]                          |         r1 = *(r4);
    0x00060d62 movs r0, 0x22                         |         r0 = 0x22;
                                                     | label_9:
    0x00060d64 str r2, [r4, 4]                       |         *((r4 + 4)) = r2;
    0x00060d66 strb r0, [r1, r3]                     |         *((r1 + r3)) = r0;
    0x00060d68 movs r1, 0                            |         r1 = 0;
    0x00060d6a ldrd r2, r3, [r4]                     |         __asm ("ldrd r2, r3, [r4]");
    0x00060d6e strb r1, [r2, r3]                     |         *((r2 + r3)) = r1;
    0x00060d70 pop.w {r4, r5, r6, r7, r8, pc}        |         
                                                     | label_13:
    0x00060d74 movs r2, 0x22                         |         r2 = 0x22;
    0x00060d76 mov.w r1, -1                          |         r1 = -1;
    0x00060d7a mov r0, r4                            |         r0 = r4;
    0x00060d7c blx 0x21254                           |         g_sprintf ()
    0x00060d80 b 0x60d4a                             |         
                                                     |     } while (1);
                                                     | label_11:
    0x00060d82 movs r2, 0x22                         |     r2 = 0x22;
    0x00060d84 mov.w r1, -1                          |     r1 = -1;
    0x00060d88 mov r0, r4                            |     r0 = r4;
    0x00060d8a blx 0x21254                           |     g_sprintf ()
    0x00060d8e b 0x60d1c                             |     goto label_0;
                                                     | label_7:
    0x00060d90 movs r2, 0x27                         |     r2 = 0x27;
    0x00060d92 mov.w r1, -1                          |     r1 = -1;
    0x00060d96 mov r0, r4                            |     r0 = r4;
    0x00060d98 blx 0x21254                           |     g_sprintf ()
    0x00060d9c b 0x60c9c                             |     goto label_1;
                                                     | label_14:
    0x00060d9e mov r0, r4                            |     r0 = r4;
    0x00060da0 movs r2, 0x22                         |     r2 = 0x22;
    0x00060da2 pop.w {r4, r5, r6, r7, r8, lr}        |     
    0x00060da6 mov.w r1, -1                          |     r1 = -1;
    0x00060daa b.w 0x21250                           |     goto label_2;
                                                     | label_8:
    0x00060dae mov r0, r4                            |     r0 = r4;
    0x00060db0 movs r2, 0x27                         |     r2 = 0x27;
    0x00060db2 pop.w {r4, r5, r6, r7, r8, lr}        |     
    0x00060db6 mov.w r1, -1                          |     r1 = -1;
    0x00060dba b.w 0x21250                           |     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/libsyslog-ng-3.31.so.0.0.0 @ 0x3ceb0 */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) sym.tls_context_setup_context ()                     | void tls_context_setup_context (int16_t arg_ch, int16_t arg_14h, int16_t arg1) {
                                                                 |     int16_t var_0h_2;
                                                                 |     int16_t var_4h_2;
                                                                 |     int16_t var_8h_3;
                                                                 |     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_0h_3;
                                                                 |     int16_t var_8h_2;
                                                                 |     r0 = arg1;
                                                                 | label_13:
    0x00020f14 bx pc                                             |     return void (*pc)() ();
    0x0003ceb0 ldr.w r2, [pc, 0x474]                             |     r2 = *(0x0003d328);
    0x0003ceb4 ldr.w r3, [pc, 0x474]                             |     
    0x0003ceb8 push.w {r4, r5, r6, r7, r8, lr}                   |     
    0x0003cebc sub sp, 0x18                                      |     
    0x0003cebe add r2, pc                                        |     r2 += pc;
    0x0003cec0 ldr.w r8, [pc, 0x46c]                             |     
    0x0003cec4 mov r4, r0                                        |     r4 = r0;
    0x0003cec6 ldr r3, [r2, r3]                                  |     r3 = *((r2 + r3));
    0x0003cec8 add r8, pc                                        |     r8 = 0x7a1fc;
    0x0003ceca ldr r3, [r3]                                      |     r3 = *(0x3d32c);
    0x0003cecc str r3, [sp, 0x14]                                |     var_14h = r3;
    0x0003cece mov.w r3, 0                                       |     r3 = 0;
    0x0003ced2 ldr r3, [r0, 0x34]                                |     r3 = *(arg_chx34);
    0x0003ced4 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x0003ced6 beq 0x3cf8e                                       |         goto label_3;
                                                                 |     }
    0x0003ced8 ldr r5, [r0, 0x18]                                |     r5 = *(arg_chx18);
    0x0003ceda cmp r5, 0                                         |     
                                                                 |     if (r5 == 0) {
    0x0003cedc beq.w 0x3d018                                     |         goto label_47;
                                                                 |     }
    0x0003cee0 ldr r3, [r0, 0x10]                                |     r3 = *(arg_chx10);
    0x0003cee2 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x0003cee4 beq 0x3cfe2                                       |         goto label_48;
                                                                 |     }
                                                                 | label_1:
    0x0003cee6 mov r0, r4                                        |     r0 = r4;
    0x0003cee8 blx 0x20d3c                                       |     fcn_00020d3c ();
    0x0003ceec ldr.w r1, [pc, 0x444]                             |     r1 = *(0x0003d334);
    0x0003cef0 mov r2, r0                                        |     r2 = r0;
    0x0003cef2 movs r3, 0                                        |     r3 = 0;
    0x0003cef4 movs r0, 4                                        |     r0 = 4;
    0x0003cef6 add r1, pc                                        |     r1 += pc;
    0x0003cef8 blx 0x1f2b0                                       |     fcn_0001f2b0 ();
    0x0003cefc blx 0x23348                                       |     g_string_append ();
    0x0003cf00 ldr r5, [r4, 0x18]                                |     r5 = *((r4 + 0x18));
                                                                 | label_2:
    0x0003cf02 mov r1, r5                                        |     r1 = r5;
    0x0003cf04 mov r0, r4                                        |     r0 = r4;
    0x0003cf06 bl 0x3ce3c                                        |     r0 = fcn_0003ce3c (r0, r1);
    0x0003cf0a cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0003cf0c beq 0x3cf8e                                       |         goto label_3;
                                                                 |     }
    0x0003cf0e ldr.w r1, [pc, 0x428]                             |     
    0x0003cf12 mov r0, r5                                        |     r0 = r5;
    0x0003cf14 add r1, pc                                        |     r1 = 0x7a252;
    0x0003cf16 blx 0x236c0                                       |     r0 = getenv (r0);
    0x0003cf1a mov r5, r0                                        |     r5 = r0;
    0x0003cf1c cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0003cf1e beq 0x3cf8e                                       |         goto label_3;
                                                                 |     }
    0x0003cf20 movs r1, 0                                        |     r1 = 0;
    0x0003cf22 blx 0x1f5f8                                       |     r0 = fcn_0001f5f8 ();
    0x0003cf26 mov r6, r0                                        |     r6 = r0;
    0x0003cf28 mov r0, r5                                        |     r0 = r5;
    0x0003cf2a blx 0x22e78                                       |     fcn_00022e78 ();
                                                                 |     if (r6 == 0) {
    0x0003cf2e cbz r6, 0x3cf8e                                   |         goto label_3;
                                                                 |     }
    0x0003cf30 ldr.w r1, [pc, 0x408]                             |     r1 = *(0x0003d33c);
    0x0003cf34 add r3, sp, 0x10                                  |     r3 += var_10h;
    0x0003cf36 movs r5, 0                                        |     r5 = 0;
    0x0003cf38 str r3, [sp]                                      |     *(sp) = r3;
    0x0003cf3a add r2, sp, 8                                     |     r2 += var_8h;
    0x0003cf3c add r3, sp, 0xc                                   |     r3 += var_ch;
    0x0003cf3e add r1, pc                                        |     r1 += pc;
    0x0003cf40 mov r0, r6                                        |     r0 = r6;
    0x0003cf42 str r5, [sp, 0x10]                                |     var_10h = r5;
    0x0003cf44 blx 0x1f6e8                                       |     r0 = fcn_0001f6e8 ();
    0x0003cf48 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0003cf4a beq 0x3d010                                       |         goto label_49;
                                                                 |     }
    0x0003cf4c mov r0, r6                                        |     r0 = r6;
    0x0003cf4e blx 0x1f898                                       |     fcn_0001f898 ();
    0x0003cf52 ldr r7, [sp, 0x10]                                |     r7 = var_10h;
                                                                 |     if (r7 != 0) {
    0x0003cf54 cbnz r7, 0x3cf5a                                  |         goto label_50;
                                                                 |     }
    0x0003cf56 b 0x3cfec                                         |     goto label_51;
                                                                 |     do {
                                                                 | label_0:
    0x0003cf58 adds r5, 1                                        |         r5++;
                                                                 | label_50:
    0x0003cf5a mov r0, r7                                        |         r0 = r7;
    0x0003cf5c blx 0x20848                                       |         r0 = fcn_00020848 ();
    0x0003cf60 cmp r5, r0                                        |         
                                                                 |         if (r5 >= r0) {
    0x0003cf62 bge 0x3cfec                                       |             goto label_51;
                                                                 |         }
    0x0003cf64 mov r1, r5                                        |         r1 = r5;
    0x0003cf66 mov r0, r7                                        |         r0 = r7;
    0x0003cf68 blx 0x203bc                                       |         r0 = fcn_000203bc ();
    0x0003cf6c mov r6, r0                                        |         r6 = r0;
    0x0003cf6e ldr r0, [r4, 0x34]                                |         r0 = *((r4 + 0x34));
    0x0003cf70 blx 0x2361c                                       |         fcn_0002361c ();
    0x0003cf74 mov r1, r6                                        |         r1 = r6;
    0x0003cf76 blx 0x23d08                                       |         r0 = fcn_00023d08 ();
                                                                 |         if (r0 == 0) {
    0x0003cf7a cbz r0, 0x3cf8e                                   |             goto label_3;
                                                                 |         }
    0x0003cf7c ldr r3, [r4, 4]                                   |         r3 = *((r4 + 4));
    0x0003cf7e cmp r3, 1                                         |         
    0x0003cf80 bne 0x3cf58                                       |         
                                                                 |     } while (r3 != 1);
    0x0003cf82 ldr r0, [r4, 0x34]                                |     r0 = *((r4 + 0x34));
    0x0003cf84 mov r1, r6                                        |     r1 = r6;
    0x0003cf86 blx 0x21610                                       |     r0 = fcn_00021610 ();
    0x0003cf8a cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x0003cf8c bne 0x3cf58                                       |         goto label_0;
                                                                 |     }
                                                                 | label_3:
    0x0003cf8e mov r0, r4                                        |     r0 = r4;
    0x0003cf90 movs r6, 0                                        |     r6 = 0;
    0x0003cf92 blx 0x1fa24                                       |     r0 = freeaddrinfo ();
    0x0003cf96 mov r5, r0                                        |     r5 = r0;
    0x0003cf98 mov r0, r4                                        |     r0 = r4;
    0x0003cf9a blx 0x20d3c                                       |     fcn_00020d3c ();
    0x0003cf9e ldr r1, [pc, 0x3a0]                               |     
    0x0003cfa0 mov r3, r0                                        |     r3 = r0;
    0x0003cfa2 mov r2, r5                                        |     r2 = r5;
    0x0003cfa4 movs r0, 3                                        |     r0 = 3;
    0x0003cfa6 str r6, [sp]                                      |     *(sp) = r6;
    0x0003cfa8 add r1, pc                                        |     r1 = 0x7a2ee;
    0x0003cfaa blx 0x1f2b0                                       |     fcn_0001f2b0 ();
    0x0003cfae blx 0x23348                                       |     g_string_append ();
    0x0003cfb2 blx 0x1f78c                                       |     fcn_0001f78c ();
    0x0003cfb6 ldr r0, [r4, 0x34]                                |     r0 = *((r4 + 0x34));
                                                                 |     if (r0 == 0) {
    0x0003cfb8 cbz r0, 0x3cfde                                   |         goto label_52;
                                                                 |     }
    0x0003cfba blx 0x23fa4                                       |     fcn_00023fa4 ();
    0x0003cfbe movs r0, 1                                        |     r0 = 1;
    0x0003cfc0 str r6, [r4, 0x34]                                |     *((r4 + 0x34)) = r6;
                                                                 |     do {
                                                                 | label_4:
    0x0003cfc2 ldr r2, [pc, 0x380]                               |         
    0x0003cfc4 ldr r3, [pc, 0x364]                               |         r3 = *(0x3d32c);
    0x0003cfc6 add r2, pc                                        |         r2 = 0x7a310;
    0x0003cfc8 ldr r3, [r2, r3]                                  |         r3 = *(0x7a310);
    0x0003cfca ldr r2, [r3]                                      |         r2 = *(0x7a310);
    0x0003cfcc ldr r3, [sp, 0x14]                                |         r3 = var_14h;
    0x0003cfce eors r2, r3                                       |         r2 ^= r3;
    0x0003cfd0 mov.w r3, 0                                       |         r3 = 0;
                                                                 |         if (r2 != r3) {
    0x0003cfd4 bne.w 0x3d322                                     |             goto label_53;
                                                                 |         }
    0x0003cfd8 add sp, 0x18                                      |         
    0x0003cfda pop.w {r4, r5, r6, r7, r8, pc}                    |         
                                                                 | label_52:
    0x0003cfde movs r0, 1                                        |         r0 = 1;
    0x0003cfe0 b 0x3cfc2                                         |         
                                                                 |     } while (1);
                                                                 | label_48:
    0x0003cfe2 ldr r3, [r0, 0xc]                                 |     r3 = *(arg_chxc);
    0x0003cfe4 cmp r3, 0                                         |     
                                                                 |     if (r3 != 0) {
    0x0003cfe6 bne.w 0x3cee6                                     |         goto label_1;
                                                                 |     }
    0x0003cfea b 0x3cf02                                         |     goto label_2;
                                                                 | label_51:
    0x0003cfec ldr r1, [sp, 0xc]                                 |     r1 = var_ch;
    0x0003cfee ldr r0, [r4, 0x34]                                |     r0 = *((r4 + 0x34));
    0x0003cff0 blx 0x237fc                                       |     r0 = fcn_000237fc ();
    0x0003cff4 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0003cff6 beq 0x3cf8e                                       |         goto label_3;
                                                                 |     }
    0x0003cff8 ldr r1, [sp, 8]                                   |     r1 = var_8h;
    0x0003cffa ldr r0, [r4, 0x34]                                |     r0 = *((r4 + 0x34));
    0x0003cffc blx 0x2384c                                       |     r0 = getgrnam ();
    0x0003d000 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0003d002 beq 0x3cf8e                                       |         goto label_3;
                                                                 |     }
    0x0003d004 ldr r0, [r4, 0x34]                                |     r0 = *((r4 + 0x34));
    0x0003d006 blx 0x22c94                                       |     r0 = fcn_00022c94 ();
    0x0003d00a cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0003d00c beq 0x3cf8e                                       |         goto label_3;
                                                                 |     }
    0x0003d00e b 0x3d092                                         |     goto label_9;
                                                                 | label_49:
    0x0003d010 mov r0, r6                                        |     r0 = r6;
    0x0003d012 blx 0x1f898                                       |     fcn_0001f898 ();
    0x0003d016 b 0x3cf8e                                         |     goto label_3;
                                                                 | label_47:
    0x0003d018 ldr r1, [r0, 0xc]                                 |     r1 = *(arg_chxc);
    0x0003d01a cmp r1, 0                                         |     
                                                                 |     if (r1 == 0) {
    0x0003d01c beq 0x3d08a                                       |         goto label_54;
                                                                 |     }
    0x0003d01e ldr r3, [r0, 0x10]                                |     r3 = *(arg_chx10);
                                                                 |     if (r3 == 0) {
    0x0003d020 cbz r3, 0x3d08a                                   |         goto label_54;
                                                                 |     }
    0x0003d022 bl 0x3ce3c                                        |     fcn_0003ce3c (r0, r1);
    0x0003d026 ldr r1, [r4, 0x10]                                |     r1 = *((r4 + 0x10));
    0x0003d028 mov r5, r0                                        |     r5 = r0;
    0x0003d02a mov r0, r4                                        |     r0 = r4;
    0x0003d02c bl 0x3ce3c                                        |     fcn_0003ce3c (r0, r1);
    0x0003d030 cmp r5, 0                                         |     
    0x0003d032 it ne                                             |     
                                                                 |     if (r5 == 0) {
    0x0003d034 cmpne r0, 0                                       |         __asm ("cmpne r0, 0");
                                                                 |         goto label_55;
                                                                 |     }
                                                                 |     if (r5 == 0) {
                                                                 | label_55:
    0x0003d036 beq 0x3cf8e                                       |         goto label_3;
                                                                 |     }
    0x0003d038 ldr r1, [r4, 0xc]                                 |     r1 = *((r4 + 0xc));
    0x0003d03a movs r2, 1                                        |     r2 = 1;
    0x0003d03c ldr r0, [r4, 0x34]                                |     r0 = *((r4 + 0x34));
    0x0003d03e blx 0x222d8                                       |     r0 = fcn_000222d8 ();
                                                                 |     if (r0 == 0) {
    0x0003d042 cbz r0, 0x3d05c                                   |         goto label_56;
                                                                 |     }
    0x0003d044 ldr r1, [r4, 0x10]                                |     r1 = *((r4 + 0x10));
    0x0003d046 ldr r0, [r4, 0x34]                                |     r0 = *((r4 + 0x34));
    0x0003d048 blx 0x23dc4                                       |     r0 = fcn_00023dc4 ();
    0x0003d04c cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0003d04e beq 0x3cf8e                                       |         goto label_3;
                                                                 |     }
    0x0003d050 ldr r3, [r4, 0x10]                                |     r3 = *((r4 + 0x10));
                                                                 |     if (r3 != 0) {
    0x0003d052 cbz r3, 0x3d092                                   |         
    0x0003d054 ldr r0, [r4, 0x34]                                |         r0 = *((r4 + 0x34));
    0x0003d056 blx 0x22c94                                       |         r0 = fcn_00022c94 ();
                                                                 |         if (r0 != 0) {
    0x0003d05a cbnz r0, 0x3d092                                  |             goto label_9;
                                                                 |         }
                                                                 | label_56:
    0x0003d05c mov r0, r4                                        |         r0 = r4;
    0x0003d05e movs r5, 0                                        |         r5 = 0;
    0x0003d060 blx 0x1fa24                                       |         r0 = freeaddrinfo ();
    0x0003d064 mov r2, r0                                        |         r2 = r0;
    0x0003d066 mov r0, r4                                        |         r0 = r4;
    0x0003d068 mov r4, r2                                        |         r4 = r2;
    0x0003d06a blx 0x20d3c                                       |         fcn_00020d3c ();
    0x0003d06e ldr r1, [pc, 0x2d8]                               |         
    0x0003d070 mov r3, r0                                        |         r3 = r0;
    0x0003d072 mov r2, r4                                        |         r2 = r4;
    0x0003d074 movs r0, 3                                        |         r0 = 3;
    0x0003d076 str r5, [sp]                                      |         *(sp) = r5;
    0x0003d078 add r1, pc                                        |         r1 = 0x7a3c6;
    0x0003d07a blx 0x1f2b0                                       |         fcn_0001f2b0 ();
    0x0003d07e blx 0x23348                                       |         g_string_append ();
    0x0003d082 blx 0x1f78c                                       |         fcn_0001f78c ();
    0x0003d086 movs r0, 2                                        |         r0 = 2;
    0x0003d088 b 0x3cfc2                                         |         goto label_4;
                                                                 | label_54:
    0x0003d08a ldr r3, [r4, 4]                                   |         r3 = *((r4 + 4));
    0x0003d08c cmp r3, 1                                         |         
                                                                 |         if (r3 == 1) {
    0x0003d08e beq.w 0x3d308                                     |             goto label_57;
                                                                 |         }
                                                                 |     }
                                                                 | label_9:
    0x0003d092 ldr r1, [r4, 0x1c]                                |     r1 = *((r4 + 0x1c));
    0x0003d094 mov r0, r4                                        |     r0 = r4;
    0x0003d096 bl 0x3ce3c                                        |     r0 = fcn_0003ce3c (r0, r1);
                                                                 |     if (r0 == 0) {
    0x0003d09a cbz r0, 0x3d0ac                                   |         goto label_58;
                                                                 |     }
    0x0003d09c ldr r2, [r4, 0x1c]                                |     r2 = *((r4 + 0x1c));
    0x0003d09e movs r1, 0                                        |     r1 = 0;
    0x0003d0a0 ldr r0, [r4, 0x34]                                |     r0 = *((r4 + 0x34));
    0x0003d0a2 blx 0x23270                                       |     r0 = fcn_00023270 ();
    0x0003d0a6 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0003d0a8 beq.w 0x3cf8e                                     |         goto label_3;
                                                                 |     }
                                                                 | label_58:
    0x0003d0ac ldr r1, [r4, 0x24]                                |     r1 = *((r4 + 0x24));
    0x0003d0ae mov r0, r4                                        |     r0 = r4;
    0x0003d0b0 bl 0x3ce3c                                        |     r0 = fcn_0003ce3c (r0, r1);
                                                                 |     if (r0 == 0) {
    0x0003d0b4 cbz r0, 0x3d0c6                                   |         goto label_59;
                                                                 |     }
    0x0003d0b6 ldr r1, [r4, 0x24]                                |     r1 = *((r4 + 0x24));
    0x0003d0b8 movs r2, 0                                        |     r2 = 0;
    0x0003d0ba ldr r0, [r4, 0x34]                                |     r0 = *((r4 + 0x34));
    0x0003d0bc blx 0x23270                                       |     r0 = fcn_00023270 ();
    0x0003d0c0 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0003d0c2 beq.w 0x3cf8e                                     |         goto label_3;
                                                                 |     }
                                                                 | label_59:
    0x0003d0c6 ldr r1, [r4, 0x20]                                |     r1 = *((r4 + 0x20));
    0x0003d0c8 mov r0, r4                                        |     r0 = r4;
    0x0003d0ca bl 0x3ce3c                                        |     r0 = fcn_0003ce3c (r0, r1);
    0x0003d0ce cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x0003d0d0 bne.w 0x3d268                                     |         goto label_60;
                                                                 |     }
                                                                 | label_6:
    0x0003d0d4 ldr r3, [r4, 0x20]                                |     r3 = *((r4 + 0x20));
    0x0003d0d6 ldr r0, [r4, 0x34]                                |     r0 = *((r4 + 0x34));
    0x0003d0d8 cmp r3, 0                                         |     
    0x0003d0da ite ne                                            |     
                                                                 |     if (r3 == 0) {
    0x0003d0dc movne r5, 0x8c                                    |         r5 = 0x8c;
                                                                 |     }
                                                                 |     if (r3 != 0) {
    0x0003d0de moveq r5, 0x80                                    |         r5 = 0x80;
                                                                 |     }
    0x0003d0e0 blx 0x1f7fc                                       |     fcn_0001f7fc ();
    0x0003d0e4 mov r1, r5                                        |     r1 = r5;
    0x0003d0e6 blx 0x20518                                       |     fcn_00020518 ();
    0x0003d0ea ldr r3, [r4, 4]                                   |     r3 = *((r4 + 4));
    0x0003d0ec cmp r3, 1                                         |     
                                                                 |     if (r3 == 1) {
    0x0003d0ee beq.w 0x3d27a                                     |         goto label_61;
                                                                 |     }
                                                                 | label_7:
    0x0003d0f2 ldr r3, [r4, 8]                                   |     r3 = *((r4 + 8));
    0x0003d0f4 cmp r3, 0x22                                      |     
                                                                 |     if (r3 > 0x22) {
    0x0003d0f6 bhi.w 0x3d2dc                                     |         goto label_62;
                                                                 |     }
                                                                 |     /* switch table (36 cases) at 0x3d0fe */
    0x0003d0fa tbh [pc, r3, lsl 1]                               |     __asm ("tbh [pc, r3, lsl 1]");
    0x0003d144 movs r1, 0                                        |     r1 = 0;
                                                                 | label_8:
    0x0003d146 ldr r3, [pc, 0x204]                               |     r3 = *(0x3d34e);
    0x0003d148 ldr r0, [r4, 0x34]                                |     r0 = *((r4 + 0x34));
    0x0003d14a ldr.w r2, [r8, r3]                                |     r2 = *((r8 + r3));
    0x0003d14e blx 0x23a04                                       |     fcn_00023a04 ();
    0x0003d152 ldr r5, [r4, 0x40]                                |     r5 = *((r4 + 0x40));
    0x0003d154 cmp r5, 0                                         |     
                                                                 |     if (r5 == 0) {
    0x0003d156 beq 0x3d242                                       |         goto label_63;
                                                                 |     }
    0x0003d158 ubfx r1, r5, 1, 1                                 |     r1 = (r5 >> 1) & ((1 << 1) - 1);
    0x0003d15c lsls r7, r5, 0x1d                                 |     r7 = r5 << 0x1d;
    0x0003d15e lsl.w r1, r1, 0x19                                |     r1 <<= 0x19;
    0x0003d162 ldr r3, [r4, 4]                                   |     r3 = *((r4 + 4));
    0x0003d164 it mi                                             |     
                                                                 |     if (r7 >= r5) {
    0x0003d166 orrmi r1, r1, 0x4000000                           |         r1 |= case.0x5984c.0;
                                                                 |     }
    0x0003d16a lsls r6, r5, 0x1c                                 |     r6 = r5 << 0x1c;
    0x0003d16c it mi                                             |     
                                                                 |     if (r6 >= r5) {
    0x0003d16e orrmi r1, r1, 0x10000000                          |         r1 |= case.0x5984c.0;
                                                                 |     }
    0x0003d172 lsls r0, r5, 0x1b                                 |     r0 = r5 << 0x1b;
    0x0003d174 it mi                                             |     
                                                                 |     if (r0 >= r5) {
    0x0003d176 orrmi r1, r1, 0x8000000                           |         r1 |= case.0x5984c.0;
                                                                 |     }
    0x0003d17a lsls r2, r5, 0x1a                                 |     r2 = r5 << 0x1a;
    0x0003d17c it mi                                             |     
                                                                 |     if (r2 >= r5) {
    0x0003d17e orrmi r1, r1, 0x20000000                          |         r1 |= case.0x5984c.0;
                                                                 |     }
    0x0003d182 cmp r3, 1                                         |     
    0x0003d184 ldr r0, [r4, 0x34]                                |     r0 = *((r4 + 0x34));
    0x0003d186 it eq                                             |     
                                                                 |     if (r3 != 1) {
    0x0003d188 orreq r1, r1, 0x400000                            |         r1 |= case.0x5984c.0;
                                                                 |     }
    0x0003d18c blx 0x1fb34                                       |     fcn_0001fb34 ();
                                                                 | label_5:
    0x0003d190 ldr r6, [r4, 0x2c]                                |     r6 = *((r4 + 0x2c));
    0x0003d192 ldr r0, [r4, 0x34]                                |     r0 = *((r4 + 0x34));
                                                                 |     if (r6 != 0) {
    0x0003d194 cbz r6, 0x3d1a8                                   |         
    0x0003d196 mov r3, r6                                        |         r3 = r6;
    0x0003d198 movs r2, 0                                        |         r2 = 0;
    0x0003d19a movs r1, 0x5c                                     |         r1 = 0x5c;
    0x0003d19c blx 0x22f30                                       |         r0 = fcn_00022f30 ();
    0x0003d1a0 mov r5, r0                                        |         r5 = r0;
    0x0003d1a2 cmp r0, 0                                         |         
                                                                 |         if (r0 == 0) {
    0x0003d1a4 beq 0x3d21a                                       |             goto label_64;
                                                                 |         }
    0x0003d1a6 ldr r0, [r4, 0x34]                                |         r0 = *((r4 + 0x34));
                                                                 |     }
    0x0003d1a8 blx 0x1f91c                                       |     fcn_0001f91c ();
    0x0003d1ac ldr r7, [r4, 0x14]                                |     r7 = *((r4 + 0x14));
    0x0003d1ae cmp r7, 0                                         |     
                                                                 |     if (r7 == 0) {
    0x0003d1b0 beq 0x3d282                                       |         goto label_65;
                                                                 |     }
    0x0003d1b2 mov r1, r7                                        |     r1 = r7;
    0x0003d1b4 mov r0, r4                                        |     r0 = r4;
    0x0003d1b6 bl 0x3ce3c                                        |     r0 = fcn_0003ce3c (r0, r1);
    0x0003d1ba cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0003d1bc beq.w 0x3cf8e                                     |         goto label_3;
                                                                 |     }
    0x0003d1c0 ldr r1, [pc, 0x18c]                               |     
    0x0003d1c2 mov r0, r7                                        |     r0 = r7;
    0x0003d1c4 add r1, pc                                        |     r1 = 0x7a518;
    0x0003d1c6 blx 0x22e60                                       |     r0 = fcn_00022e60 ();
    0x0003d1ca mov r6, r0                                        |     r6 = r0;
    0x0003d1cc cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0003d1ce beq.w 0x3cf8e                                     |         goto label_3;
                                                                 |     }
    0x0003d1d2 movs r3, 0                                        |     r3 = 0;
    0x0003d1d4 mov r2, r3                                        |     r2 = r3;
    0x0003d1d6 mov r1, r3                                        |     r1 = r3;
    0x0003d1d8 blx 0x217c0                                       |     r0 = fcn_000217c0 ();
    0x0003d1dc mov r5, r0                                        |     r5 = r0;
    0x0003d1de mov r0, r6                                        |     r0 = r6;
    0x0003d1e0 blx 0x1f694                                       |     getpid ();
                                                                 |     if (r5 != 0) {
    0x0003d1e4 cbz r5, 0x3d1f6                                   |         
    0x0003d1e6 add r1, sp, 0x10                                  |         r1 += var_10h;
    0x0003d1e8 mov r0, r5                                        |         r0 = r5;
    0x0003d1ea blx 0x22cd4                                       |         r0 = fcn_00022cd4 ();
                                                                 |         if (r0 == 0) {
    0x0003d1ee cbz r0, 0x3d1f6                                   |             goto label_66;
                                                                 |         }
    0x0003d1f0 ldr r3, [sp, 0x10]                                |         r3 = var_10h;
    0x0003d1f2 lsls r3, r3, 0x1c                                 |         r3 <<= 0x1c;
                                                                 |         if (r3 == r3) {
    0x0003d1f4 beq 0x3d2ae                                       |             goto label_67;
                                                                 |         }
                                                                 |     }
                                                                 | label_66:
    0x0003d1f6 ldr r0, [pc, 0x15c]                               |     
    0x0003d1f8 mov r1, r7                                        |     r1 = r7;
    0x0003d1fa add r0, pc                                        |     r0 = 0x7a554;
    0x0003d1fc blx 0x21ea4                                       |     fcn_00021ea4 ();
    0x0003d200 ldr r1, [pc, 0x154]                               |     
    0x0003d202 mov r2, r0                                        |     r2 = r0;
    0x0003d204 movs r3, 0                                        |     r3 = 0;
    0x0003d206 movs r0, 3                                        |     r0 = 3;
    0x0003d208 add r1, pc                                        |     r1 = 0x7a564;
    0x0003d20a blx 0x1f2b0                                       |     fcn_0001f2b0 ();
    0x0003d20e blx 0x23348                                       |     g_string_append ();
    0x0003d212 mov r0, r5                                        |     r0 = r5;
    0x0003d214 blx 0x233cc                                       |     fcn_000233cc ();
    0x0003d218 b 0x3cf8e                                         |     goto label_3;
                                                                 | label_64:
    0x0003d21a ldr r0, [pc, 0x140]                               |     
    0x0003d21c mov r1, r6                                        |     r1 = r6;
    0x0003d21e add r0, pc                                        |     r0 = 0x7a580;
    0x0003d220 blx 0x21ea4                                       |     fcn_00021ea4 ();
    0x0003d224 ldr r1, [pc, 0x138]                               |     
    0x0003d226 mov r2, r0                                        |     r2 = r0;
    0x0003d228 mov r3, r5                                        |     r3 = r5;
    0x0003d22a movs r0, 3                                        |     r0 = 3;
    0x0003d22c add r1, pc                                        |     r1 = 0x7a590;
    0x0003d22e blx 0x1f2b0                                       |     fcn_0001f2b0 ();
    0x0003d232 blx 0x23348                                       |     g_string_append ();
    0x0003d236 ldr r0, [r4, 0x34]                                |     r0 = *((r4 + 0x34));
    0x0003d238 blx 0x23fa4                                       |     fcn_00023fa4 ();
    0x0003d23c movs r0, 1                                        |     r0 = 1;
    0x0003d23e str r5, [r4, 0x34]                                |     *((r4 + 0x34)) = r5;
    0x0003d240 b 0x3cfc2                                         |     goto label_4;
                                                                 | label_63:
    0x0003d242 ldr r3, [pc, 0x120]                               |     
    0x0003d244 ldr.w r3, [r8, r3]                                |     r3 = *((r8 + r3));
    0x0003d248 ldr r3, [r3]                                      |     r3 = *(0x3d366);
    0x0003d24a cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x0003d24c beq 0x3d190                                       |         goto label_5;
                                                                 |     }
    0x0003d24e mov r0, r4                                        |     r0 = r4;
    0x0003d250 blx 0x20d3c                                       |     fcn_00020d3c ();
    0x0003d254 ldr r1, [pc, 0x110]                               |     
    0x0003d256 mov r2, r0                                        |     r2 = r0;
    0x0003d258 mov r3, r5                                        |     r3 = r5;
    0x0003d25a movs r0, 7                                        |     r0 = 7;
    0x0003d25c add r1, pc                                        |     r1 = 0x7a5c8;
    0x0003d25e blx 0x1f2b0                                       |     fcn_0001f2b0 ();
    0x0003d262 blx 0x23348                                       |     g_string_append ();
    0x0003d266 b 0x3d190                                         |     goto label_5;
                                                                 | label_60:
    0x0003d268 ldr r2, [r4, 0x20]                                |     r2 = *((r4 + 0x20));
    0x0003d26a movs r1, 0                                        |     r1 = 0;
    0x0003d26c ldr r0, [r4, 0x34]                                |     r0 = *((r4 + 0x34));
    0x0003d26e blx 0x23270                                       |     r0 = fcn_00023270 ();
    0x0003d272 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x0003d274 bne.w 0x3d0d4                                     |         goto label_6;
                                                                 |     }
    0x0003d278 b 0x3cf8e                                         |     goto label_3;
                                                                 | label_61:
    0x0003d27a ldr r0, [r4, 0x34]                                |     r0 = *((r4 + 0x34));
    0x0003d27c blx 0x2364c                                       |     fcn_0002364c ();
    0x0003d280 b 0x3d0f2                                         |     goto label_7;
                                                                 | label_65:
    0x0003d282 blx 0x2067c                                       |     r0 = fcn_0002067c ();
    0x0003d286 mov r5, r0                                        |     r5 = r0;
    0x0003d288 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0003d28a beq.w 0x3cf8e                                     |         goto label_3;
                                                                 |     }
    0x0003d28e ldr r1, [pc, 0xdc]                                |     
    0x0003d290 add r0, sp, 0x10                                  |     r0 += var_10h;
    0x0003d292 str r7, [sp, 0x10]                                |     var_10h = r7;
    0x0003d294 add r1, pc                                        |     r1 = 0x7a606;
    0x0003d296 blx 0x23ae0                                       |     g_slist_free ();
    0x0003d29a mov r0, r7                                        |     r0 = r7;
    0x0003d29c blx 0x23cc4                                       |     fcn_00023cc4 ();
    0x0003d2a0 ldr r3, [sp, 0x10]                                |     r3 = var_10h;
    0x0003d2a2 mov r1, r0                                        |     r1 = r0;
    0x0003d2a4 mov r2, r7                                        |     r2 = r7;
    0x0003d2a6 mov r0, r5                                        |     r0 = r5;
    0x0003d2a8 blx 0x21930                                       |     r0 = fcn_00021930 ();
                                                                 |     if (r0 == 0) {
    0x0003d2ac cbz r0, 0x3d2fa                                   |         goto label_68;
                                                                 |     }
                                                                 | label_67:
    0x0003d2ae ldr r0, [r4, 0x34]                                |     r0 = *((r4 + 0x34));
    0x0003d2b0 mov r3, r5                                        |     r3 = r5;
    0x0003d2b2 movs r2, 0                                        |     r2 = 0;
    0x0003d2b4 movs r1, 3                                        |     r1 = 3;
    0x0003d2b6 blx 0x22f30                                       |     r0 = fcn_00022f30 ();
    0x0003d2ba mov r6, r0                                        |     r6 = r0;
    0x0003d2bc mov r0, r5                                        |     r0 = r5;
    0x0003d2be blx 0x233cc                                       |     fcn_000233cc ();
    0x0003d2c2 cmp r6, 0                                         |     
                                                                 |     if (r6 == 0) {
    0x0003d2c4 beq.w 0x3cf8e                                     |         goto label_3;
                                                                 |     }
    0x0003d2c8 ldr r1, [r4, 0x28]                                |     r1 = *((r4 + 0x28));
                                                                 |     if (r1 == 0) {
    0x0003d2ca cbz r1, 0x3d2d8                                   |         goto label_69;
                                                                 |     }
    0x0003d2cc ldr r0, [r4, 0x34]                                |     r0 = *((r4 + 0x34));
    0x0003d2ce blx 0x220a4                                       |     r0 = fcn_000220a4 ();
    0x0003d2d2 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0003d2d4 beq.w 0x3cf8e                                     |         goto label_3;
                                                                 |     }
                                                                 | label_69:
    0x0003d2d8 movs r0, 0                                        |     r0 = 0;
    0x0003d2da b 0x3cfc2                                         |     goto label_4;
                                                                 | label_62:
    0x0003d2dc ldr r3, [pc, 0x90]                                |     
    0x0003d2de movs r0, 0                                        |     r0 = 0;
    0x0003d2e0 ldr r1, [pc, 0x90]                                |     
    0x0003d2e2 movw r2, 0x1bb                                    |     r2 = (r2 & 0xFFFF0000) | (case.0x5984c.0 & 0xFFFF);
    0x0003d2e6 str r0, [sp]                                      |     *(sp) = r0;
    0x0003d2e8 add r3, pc                                        |     r3 = 0x7a65c;
    0x0003d2ea add r1, pc                                        |     r1 = 0x7a662;
    0x0003d2ec adds r3, 0x58                                     |     r3 += 0x58;
    0x0003d2ee blx 0x2368c                                       |     fcn_0002368c ();
    0x0003d2f2 movs r1, 7                                        |     r1 = 7;
    0x0003d2f4 b 0x3d146                                         |     goto label_8;
    0x0003d2f6 movs r1, 5                                        |     r1 = 5;
    0x0003d2f8 b 0x3d146                                         |     goto label_8;
                                                                 | label_68:
    0x0003d2fa ldr r0, [sp, 0x10]                                |     r0 = var_10h;
    0x0003d2fc blx 0x22498                                       |     fcn_00022498 ();
    0x0003d300 mov r0, r5                                        |     r0 = r5;
    0x0003d302 blx 0x233cc                                       |     fcn_000233cc ();
    0x0003d306 b 0x3cf8e                                         |     goto label_3;
                                                                 | label_57:
    0x0003d308 mov r0, r4                                        |     r0 = r4;
    0x0003d30a blx 0x20d3c                                       |     fcn_00020d3c ();
    0x0003d30e ldr r1, [pc, 0x68]                                |     
    0x0003d310 mov r2, r0                                        |     r2 = r0;
    0x0003d312 movs r3, 0                                        |     r3 = 0;
    0x0003d314 movs r0, 4                                        |     r0 = 4;
    0x0003d316 add r1, pc                                        |     r1 = 0x7a694;
    0x0003d318 blx 0x1f2b0                                       |     fcn_0001f2b0 ();
    0x0003d31c blx 0x23348                                       |     g_string_append ();
    0x0003d320 b 0x3d092                                         |     goto label_9;
                                                                 | label_53:
    0x0003d322 blx 0x21bd4                                       |     fcn_00021bd4 ();
    0x0003d326 nop                                               |     
    0x0003d328 cmp r6, sp                                        |     
    0x0003d32a movs r6, r0                                       |     r6 = r0;
    0x0003d32c adds r4, r1, r3                                   |     r4 = r1 + r3;
    0x0003d32e movs r0, r0                                       |     
    0x0003d330 cmp r4, ip                                        |     
    0x0003d332 movs r6, r0                                       |     r6 = r0;
    0x0003d334 strb r6, [r0, r0]                                 |     *((r0 + r0)) = r6;
    0x0003d336 movs r3, r0                                       |     r3 = r0;
    0x0003d338 strb r0, [r7, r0]                                 |     *((r7 + r0)) = r0;
    0x0003d33a movs r3, r0                                       |     r3 = r0;
    0x0003d33c invalid                                           |     
                                                                 | label_12:
    0x0003f67a strb.w r3, [r8]                                   |     *(r8) = r3;
    0x0003f67e mov r7, r8                                        |     r7 = r8;
    0x0003f680 ldr r2, [r4, 0xc]                                 |     r2 = *((r4 + 0xc));
    0x0003f682 ldr r3, [r4, 0x14]                                |     r3 = *((r4 + 0x14));
    0x0003f684 ldr r6, [r4, 0x2c]                                |     r6 = *((r4 + 0x2c));
    0x0003f686 ldr r1, [r4, 0x50]                                |     r1 = *((r4 + 0x50));
    0x0003f688 ldr.w r3, [r3, r2, lsl 2]                         |     offset_0 = r2 << 2;
                                                                 |     r3 = *((r3 + offset_0));
    0x0003f68c add.w ip, r1, 4                                   |     
    0x0003f690 ldr r3, [r3, 0x1c]                                |     r3 = *((r3 + 0x1c));
    0x0003f692 str.w ip, [r4, 0x54]                              |     __asm ("str.w ip, [r4, 0x54]");
    0x0003f696 add r6, r3                                        |     r6 += r3;
    0x0003f698 str r6, [r1]                                      |     *(r1) = r6;
                                                                 | label_15:
    0x0003f69a ldr.w sb, [pc, 0xb18]                             |     
    0x0003f69e lsls r2, r6, 1                                    |     r2 = r6 << 1;
    0x0003f6a0 ldr.w lr, [pc, 0xb14]                             |     
    0x0003f6a4 mov r1, r4                                        |     r1 = r4;
    0x0003f6a6 ldr.w r0, [pc, 0xb14]                             |     
    0x0003f6aa mov r4, ip                                        |     r4 = ip;
    0x0003f6ac add sb, pc                                        |     sb = 0x7f866;
    0x0003f6ae movw sl, 0x19f                                    |     sl = (sl & 0xFFFF0000) | (case.0x5984c.0 & 0xFFFF);
    0x0003f6b2 add.w r3, sb, r2                                  |     r3 = sb + r2;
    0x0003f6b6 add lr, pc                                        |     lr += pc;
    0x0003f6b8 ldrsh.w r3, [r3, 0x100]                           |     r3 = case.0x5984c.0;
    0x0003f6bc add r0, pc                                        |     r0 = 0x7f87e;
    0x0003f6be mov ip, r1                                        |     
                                                                 | label_10:
    0x0003f6c0 ldrb r1, [r8], 1                                  |     r1 = *(r8);
                                                                 |     r8++;
    0x0003f6c4 ldrb.w r5, [sb, r1]                               |     r5 = *((sb + r1));
    0x0003f6c8 add r3, r5                                        |     r3 += r5;
    0x0003f6ca lsls r3, r3, 1                                    |     r3 <<= 1;
    0x0003f6cc add.w r1, sb, r3                                  |     r1 = sb + r3;
    0x0003f6d0 ldrsh.w r1, [r1, 0x21c]                           |     r1 = case.0x5984c.0;
    0x0003f6d4 cmp r6, r1                                        |     
                                                                 |     if (r6 == r1) {
    0x0003f6d6 beq 0x3f700                                       |         goto label_70;
                                                                 |     }
                                                                 |     do {
    0x0003f6d8 add r2, lr                                        |         r2 += lr;
    0x0003f6da ldrsh.w r1, [r2, 0x5b0]                           |         r1 = case.0x5984c.0;
    0x0003f6de cmp r1, 0x7b                                      |         
    0x0003f6e0 lsl.w r2, r1, 1                                   |         r2 = r1 << 1;
    0x0003f6e4 itt gt                                            |         
                                                                 |         if (r1 <= 0x7b) {
    0x0003f6e6 addgt r5, lr                                      |             r5 += lr;
                                                                 |         }
                                                                 |         if (r1 <= 0x7b) {
    0x0003f6e8 ldrbgt r5, [r5, 0x6cc]                            |             r5 = case.0x5984c.0;
                                                                 |         }
    0x0003f6ec adds r3, r0, r2                                   |         r3 = r0 + r2;
    0x0003f6ee ldrsh.w r3, [r3, 0x100]                           |         r3 = case.0x5984c.0;
    0x0003f6f2 add r3, r5                                        |         r3 += r5;
    0x0003f6f4 lsls r3, r3, 1                                    |         r3 <<= 1;
    0x0003f6f6 adds r6, r0, r3                                   |         r6 = r0 + r3;
    0x0003f6f8 ldrsh.w r6, [r6, 0x21c]                           |         r6 = case.0x5984c.0;
    0x0003f6fc cmp r6, r1                                        |         
    0x0003f6fe bne 0x3f6d8                                       |         
                                                                 |     } while (r6 != r1);
                                                                 | label_70:
    0x0003f700 add r3, sb                                        |     r3 += sb;
    0x0003f702 adds r4, 4                                        |     r4 += 4;
    0x0003f704 ldrsh.w r3, [r3, 0x6f8]                           |     r3 = case.0x5984c.0;
    0x0003f708 mov r5, r8                                        |     r5 = r8;
    0x0003f70a str.w r4, [ip, 0x54]                              |     __asm ("str.w r4, [ip, 0x54]");
    0x0003f70c eors r4, r2                                       |     r4 ^= r2;
    0x0003f70e mov r6, r3                                        |     r6 = r3;
    0x0003f710 str r3, [r4, -0x4]                                |     *((r4 - 0x4)) = r3;
    0x0003f714 lsls r2, r3, 1                                    |     r2 = r3 << 1;
    0x0003f716 add.w r3, sb, r2                                  |     r3 = sb + r2;
    0x0003f71a ldrsh.w r3, [r3, 0x100]                           |     r3 = case.0x5984c.0;
    0x0003f71e cmp r3, sl                                        |     
                                                                 |     if (r3 != sl) {
    0x0003f720 bne 0x3f6c0                                       |         goto label_10;
                                                                 |     }
    0x0003f722 mov r3, ip                                        |     r3 = ip;
    0x0003f724 ldr.w sb, [pc, 0xa98]                             |     
    0x0003f728 mov ip, r4                                        |     
    0x0003f72a mov r4, r3                                        |     r4 = r3;
    0x0003f72c ldr.w r3, [pc, 0xa94]                             |     r3 = *(0x000401c4);
    0x0003f730 add sb, pc                                        |     sb = 0x7f8f4;
    0x0003f732 add r3, pc                                        |     r3 += pc;
    0x0003f734 str r3, [sp, 8]                                   |     var_8h = r3;
                                                                 | label_34:
    0x0003f736 add.w r3, sb, r2                                  |     r3 = sb + r2;
    0x0003f73a str.w sb, [sp, 4]                                 |     __asm ("str.w sb, [var_4h]");
    0x0003f73e ldr.w sb, [sp]                                    |     sb = *(sp);
    0x0003f742 mov.w r8, 0                                       |     r8 = 0;
    0x0003f746 ldrsh.w r3, [r3, 0xa8c]                           |     r3 = case.0x5984c.0;
    0x0003f74a sub.w r2, ip, 4                                   |     r2 = ip - 4;
    0x0003f74e str r2, [r4, 0x54]                                |     *((r4 + 0x54)) = r2;
    0x0003f750 str r3, [r4, 0x5c]                                |     *((r4 + 0x5c)) = r3;
                                                                 |     do {
    0x0003f752 cmp r3, 0                                         |         
                                                                 |         if (r3 != 0) {
    0x0003f754 beq 0x3f806                                       |             
    0x0003f756 add.w r2, sb, r6, lsl 1                           |             r2 = sb + (r6 << 1);
    0x0003f75a ldrsh.w r2, [r2, 0xa8e]                           |             r2 = case.0x5984c.0;
    0x0003f75e cmp r2, r3                                        |             
                                                                 |             if (r2 <= r3) {
    0x0003f760 ble 0x3f806                                       |                 goto label_71;
                                                                 |             }
    0x0003f762 add.w r3, sb, r3, lsl 1                           |             r3 = sb + (r3 << 1);
    0x0003f766 subs r2, r5, r7                                   |             r2 = r5 - r7;
    0x0003f768 str r5, [r4, 0x58]                                |             *((r4 + 0x58)) = r5;
    0x0003f76a mov.w sl, 1                                       |             sl = 1;
    0x0003f76e ldrsh.w r3, [r3, 0xb88]                           |             r3 = case.0x5984c.0;
    0x0003f772 str r7, [r4, 0x6c]                                |             *((r4 + 0x6c)) = r7;
    0x0003f774 str r2, [r4, 0x20]                                |             *((r4 + 0x20)) = r2;
    0x0003f776 ldrb r2, [r5]                                     |             r2 = *(r5);
    0x0003f778 strb r2, [r4, 0x18]                               |             *((r4 + 0x18)) = r2;
    0x0003f77a strb.w r8, [r5]                                   |             *(r5) = r8;
    0x0003f77e str r5, [r4, 0x24]                                |             *((r4 + 0x24)) = r5;
                                                                 | label_35:
    0x0003f780 subs r3, 1                                        |             r3--;
    0x0003f782 cmp r3, 0x3c                                      |             
                                                                 |             if (r3 > 0x3c) {
    0x0003f784 bhi.w 0x42272                                     |                 goto label_72;
                                                                 |             }
                                                                 |             /* switch table (62 cases) at 0x3f78c */
    0x0003f788 tbh [pc, r3, lsl 1]                               |             __asm ("tbh [pc, r3, lsl 1]");
                                                                 |         }
                                                                 | label_71:
    0x0003f806 ldr r3, [r4, 0x54]                                |         r3 = *((r4 + 0x54));
    0x0003f808 subs r5, 1                                        |         r5--;
    0x0003f80a ldr r6, [r3, -0x4]                                |         r6 = *((r3 - 0x4));
    0x0003f80e subs r3, 4                                        |         r3 -= 4;
    0x0003f810 str r3, [r4, 0x54]                                |         *((r4 + 0x54)) = r3;
    0x0003f812 add.w r3, fp, r6, lsl 1                           |         r3 = fp + (r6 << 1);
    0x0003f816 ldrsh.w r3, [r3, 0xa8c]                           |         r3 = case.0x5984c.0;
                                                                 | label_29:
    0x0003f81a str r3, [r4, 0x5c]                                |         *((r4 + 0x5c)) = r3;
    0x0003f81c b 0x3f752                                         |         
                                                                 |     } while (1);
    0x0003f81e movs r5, 0                                        |     r5 = 0;
                                                                 |     do {
                                                                 | label_11:
    0x0003f820 mov r0, r5                                        |         r0 = r5;
    0x0003f822 add sp, 0x14                                      |         
    0x0003f824 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |         
    0x0003f890 ldr r2, [r4, 0x20]                                |         r2 = *((r4 + 0x20));
    0x0003f892 ldr r6, [r4, 0x6c]                                |         r6 = *((r4 + 0x6c));
    0x0003f894 cmp r2, 0                                         |         
                                                                 |         if (r2 > 0) {
    0x0003f896 ble 0x3f8b2                                       |             
    0x0003f898 ldr r3, [r4, 0x14]                                |             r3 = *((r4 + 0x14));
    0x0003f89a ldr r1, [r4, 0xc]                                 |             r1 = *((r4 + 0xc));
    0x0003f89c ldr.w r1, [r3, r1, lsl 2]                         |             offset_1 = r1 << 2;
                                                                 |             r1 = *((r3 + offset_1));
    0x0003f8a0 adds r3, r6, r2                                   |             r3 = r6 + r2;
    0x0003f8a2 ldrb r3, [r3, -0x1]                               |             r3 = *((r3 - 0x1));
    0x0003f8a6 sub.w r3, r3, 0xa                                 |             r3 -= 0xa;
    0x0003f8aa clz r3, r3                                        |             r3 &= r3;
    0x0003f8ae lsrs r3, r3, 5                                    |             r3 >>= 5;
    0x0003f8b0 str r3, [r1, 0x1c]                                |             *((r1 + 0x1c)) = r3;
                                                                 |         }
    0x0003f8b2 ldr r5, [r4]                                      |         r5 = *(r4);
    0x0003f8b4 ldr r3, [r4, 0x2c]                                |         r3 = *((r4 + 0x2c));
    0x0003f8b6 add.w r1, r5, 0x2000                              |         r1 = r5 + case.0x5984c.0;
    0x0003f8ba ldr.w r7, [r1, 0xd94]                             |         r7 = case.0x5984c.0;
    0x0003f8be cmp r3, 2                                         |         
    0x0003f8c0 itttt ls                                          |         
                                                                 |         if (r3 > 2) {
    0x0003f8c2 movls r3, 0x2c                                    |             r3 = 0x2c;
                                                                 |         }
                                                                 |         if (r3 <= 2) {
    0x0003f8c4 mlals r3, r3, r7, r5                              |             __asm ("mlals r3, r3, r7, r5");
                                                                 |         }
                                                                 |         if (r3 > 2) {
    0x0003f8c8 ldrls r0, [r3, 0x1b0]                             |             r0 = case.0x5984c.0;
                                                                 |         }
                                                                 |         if (r3 <= 2) {
    0x0003f8cc str.w r0, [r3, 0x1a8]                             |             __asm ("str.w r0, case.0x5984c.0");
                                                                 |         }
    0x0003f8d0 movs r3, 0x2c                                     |         r3 = 0x2c;
    0x0003f8d2 mla r3, r3, r7, r5                                |         __asm ("mla r3, r3, r7, r5");
    0x0003f8d6 ldr.w r0, [r1, 0xdb8]                             |         r0 = case.0x5984c.0;
    0x0003f8da ldr.w r1, [r3, 0x1b0]                             |         r1 = case.0x5984c.0;
    0x0003f8de add r1, r2                                        |         r1 += r2;
    0x0003f8e0 str.w r1, [r3, 0x1b0]                             |         __asm ("str.w r1, case.0x5984c.0");
                                                                 |         if (r0 != 0) {
    0x0003f8e4 cbz r0, 0x3f8ee                                   |             
    0x0003f8e6 mov r1, r6                                        |             r1 = r6;
    0x0003f8e8 blx 0x1ffec                                       |             fcn_0001ffec ();
    0x0003f8ec ldr r6, [r4, 0x6c]                                |             r6 = *((r4 + 0x6c));
                                                                 |         }
    0x0003f8ee movs r3, 0x2c                                     |         r3 = 0x2c;
    0x0003f8f0 mla r3, r3, r7, r5                                |         __asm ("mla r3, r3, r7, r5");
    0x0003f8f4 ldrd r7, r5, [r4, 0x78]                           |         __asm ("ldrd r7, r5, [r4, 0x78]");
    0x0003f8f8 add.w r4, r3, 0x1a4                               |         r4 = r3 + case.0x5984c.0;
    0x0003f8fc ldm r4!, {r0, r1, r2, r3}                         |         r0 = *(r4!);
                                                                 |         r1 = *((r4! + 4));
                                                                 |         r2 = *((r4! + 8));
                                                                 |         r3 = *((r4! + 12));
    0x0003f8fe stm r5!, {r0, r1, r2, r3}                         |         *(r5!) = r0;
                                                                 |         *((r5! + 4)) = r1;
                                                                 |         *((r5! + 8)) = r2;
                                                                 |         *((r5! + 12)) = r3;
    0x0003f900 add.w r1, r7, 8                                   |         r1 = r7 + 8;
    0x0003f904 ldr r3, [r4]                                      |         r3 = *(r4);
    0x0003f906 mov r0, r6                                        |         r0 = r6;
    0x0003f908 str r3, [r5]                                      |         *(r5) = r3;
    0x0003f90a movw r5, 0x28bf                                   |         r5 = (r5 & 0xFFFF0000) | (case.0x5984c.0 & 0xFFFF);
    0x0003f90e blx 0x20f8c                                       |         r0 = fcn_00020f8c ();
    0x0003f912 cmp r0, 0                                         |         
    0x0003f914 bne 0x3f820                                       |         
                                                                 |     } while (r0 != 0);
                                                                 | label_39:
    0x0003f916 movw r5, 0x28b8                                   |     r5 = (r5 & 0xFFFF0000) | (case.0x5984c.0 & 0xFFFF);
    0x0003f91a b 0x3f820                                         |     goto label_11;
    0x0003f91c ldr r2, [r4, 0x20]                                |     r2 = *((r4 + 0x20));
    0x0003f91e cmp r2, 0                                         |     
                                                                 |     if (r2 > 0) {
    0x0003f920 ble 0x3f93e                                       |         
    0x0003f922 ldr r3, [r4, 0x6c]                                |         r3 = *((r4 + 0x6c));
    0x0003f924 ldr r0, [r4, 0xc]                                 |         r0 = *((r4 + 0xc));
    0x0003f926 ldr r1, [r4, 0x14]                                |         r1 = *((r4 + 0x14));
    0x0003f928 add r3, r2                                        |         r3 += r2;
    0x0003f92a ldrb r3, [r3, -0x1]                               |         r3 = *((r3 - 0x1));
    0x0003f92e ldr.w r1, [r1, r0, lsl 2]                         |         offset_2 = r0 << 2;
                                                                 |         r1 = *((r1 + offset_2));
    0x0003f932 sub.w r3, r3, 0xa                                 |         r3 -= 0xa;
    0x0003f936 clz r3, r3                                        |         r3 &= r3;
    0x0003f93a lsrs r3, r3, 5                                    |         r3 >>= 5;
    0x0003f93c str r3, [r1, 0x1c]                                |         *((r1 + 0x1c)) = r3;
                                                                 |     }
    0x0003f93e ldr r5, [r4]                                      |     r5 = *(r4);
    0x0003f940 ldr r3, [r4, 0x2c]                                |     r3 = *((r4 + 0x2c));
    0x0003f942 add.w r1, r5, 0x2000                              |     r1 = r5 + case.0x5984c.0;
    0x0003f946 ldr.w r7, [r1, 0xd94]                             |     r7 = case.0x5984c.0;
    0x0003f94a cmp r3, 2                                         |     
    0x0003f94c itttt ls                                          |     
                                                                 |     if (r3 > 2) {
    0x0003f94e movls r3, 0x2c                                    |         r3 = 0x2c;
                                                                 |     }
                                                                 |     if (r3 <= 2) {
    0x0003f950 mlals r3, r3, r7, r5                              |         __asm ("mlals r3, r3, r7, r5");
                                                                 |     }
                                                                 |     if (r3 > 2) {
    0x0003f954 ldrls r0, [r3, 0x1b0]                             |         r0 = case.0x5984c.0;
                                                                 |     }
                                                                 |     if (r3 <= 2) {
    0x0003f958 str.w r0, [r3, 0x1a8]                             |         __asm ("str.w r0, case.0x5984c.0");
                                                                 |     }
    0x0003f95c movs r3, 0x2c                                     |     r3 = 0x2c;
    0x0003f95e mla r3, r3, r7, r5                                |     __asm ("mla r3, r3, r7, r5");
    0x0003f962 ldr.w r0, [r1, 0xdb8]                             |     r0 = case.0x5984c.0;
    0x0003f966 ldr.w r1, [r3, 0x1b0]                             |     r1 = case.0x5984c.0;
    0x0003f96a add r1, r2                                        |     r1 += r2;
    0x0003f96c str.w r1, [r3, 0x1b0]                             |     __asm ("str.w r1, case.0x5984c.0");
                                                                 |     if (r0 != 0) {
    0x0003f970 cbz r0, 0x3f978                                   |         
    0x0003f972 ldr r1, [r4, 0x6c]                                |         r1 = *((r4 + 0x6c));
    0x0003f974 blx 0x1ffec                                       |         fcn_0001ffec ();
                                                                 |     }
    0x0003f978 movs r3, 0x2c                                     |     r3 = 0x2c;
    0x0003f97a ldr r6, [r4, 0x7c]                                |     r6 = *((r4 + 0x7c));
    0x0003f97c mla r5, r3, r7, r5                                |     __asm ("mla r5, r3, r7, r5");
    0x0003f980 add.w r5, r5, 0x1a4                               |     r5 += case.0x5984c.0;
    0x0003f984 ldm r5!, {r0, r1, r2, r3}                         |     r0 = *(r5!);
                                                                 |     r1 = *((r5! + 4));
                                                                 |     r2 = *((r5! + 8));
                                                                 |     r3 = *((r5! + 12));
    0x0003f986 stm r6!, {r0, r1, r2, r3}                         |     *(r6!) = r0;
                                                                 |     *((r6! + 4)) = r1;
                                                                 |     *((r6! + 8)) = r2;
                                                                 |     *((r6! + 12)) = r3;
    0x0003f988 mov r0, r4                                        |     r0 = r4;
    0x0003f98a ldr r3, [r5]                                      |     r3 = *(r5);
    0x0003f98c movw r5, 0x28c1                                   |     r5 = (r5 & 0xFFFF0000) | (case.0x5984c.0 & 0xFFFF);
    0x0003f990 str r3, [r6]                                      |     *(r6) = r3;
    0x0003f992 bl 0x3e9d8                                        |     fcn_0003e9d8 (r0);
    0x0003f996 ldr r3, [r4]                                      |     r3 = *(r4);
    0x0003f998 ldr r4, [r4, 0x78]                                |     r4 = *((r4 + 0x78));
    0x0003f99a add.w r3, r3, 0x2000                              |     r3 += case.0x5984c.0;
    0x0003f99e ldr.w r3, [r3, 0xda8]                             |     r3 = case.0x5984c.0;
    0x0003f9a2 ldr r0, [r3]                                      |     r0 = *(r3);
    0x0003f9a4 blx 0x23ed8                                       |     fcn_00023ed8 ();
    0x0003f9a8 str r0, [r4, 8]                                   |     *((r4 + 8)) = r0;
    0x0003f9aa mov r0, r5                                        |     r0 = r5;
    0x0003f9ac add sp, 0x14                                      |     
    0x0003f9ae pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |     
    0x0003f9b2 ldr r0, [r4]                                      |     r0 = *(r4);
    0x0003f9b4 blx 0x1fb7c                                       |     r0 = fcn_0001fb7c ();
    0x0003f9b8 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0003f9ba beq.w 0x421c8                                     |         goto label_73;
                                                                 |     }
    0x0003f9be ldr r3, [r4]                                      |     r3 = *(r4);
    0x0003f9c0 add.w r3, r3, 0x2000                              |     r3 += case.0x5984c.0;
    0x0003f9c4 ldr.w r2, [r3, 0xdb8]                             |     r2 = case.0x5984c.0;
                                                                 |     if (r2 == 0) {
    0x0003f9c8 cbz r2, 0x3f9ec                                   |         goto label_14;
                                                                 |     }
    0x0003f9ca ldr r1, [r4, 0x2c]                                |     r1 = *((r4 + 0x2c));
    0x0003f9cc cmp r1, 2                                         |     
                                                                 |     if (r1 > 2) {
    0x0003f9ce bhi 0x3f9ec                                       |         goto label_14;
                                                                 |     }
    0x0003f9d0 ldr.w r0, [r3, 0xdb4]                             |     r0 = case.0x5984c.0;
    0x0003f9d4 ldrd r1, r2, [r2]                                 |     __asm ("ldrd r1, r2, [r2]");
    0x0003f9d8 blx 0x1ffec                                       |     fcn_0001ffec ();
    0x0003f9dc ldr r3, [r4]                                      |     r3 = *(r4);
    0x0003f9de movs r1, 0                                        |     r1 = 0;
    0x0003f9e0 add.w r3, r3, 0x2000                              |     r3 += case.0x5984c.0;
    0x0003f9e4 ldr.w r0, [r3, 0xdb8]                             |     r0 = case.0x5984c.0;
    0x0003f9e8 blx 0x1fc8c                                       |     fcn_0001fc8c ();
                                                                 |     do {
                                                                 | label_14:
    0x0003f9ec ldrb r3, [r4, 0x18]                               |         r3 = *((r4 + 0x18));
    0x0003f9ee ldr.w r8, [r4, 0x24]                              |         r8 = *((r4 + 0x24));
    0x0003f9f2 b 0x3f67a                                         |         goto label_12;
    0x0003f9f4 ldr r2, [r4, 0x20]                                |         r2 = *((r4 + 0x20));
    0x0003f9f6 ldr r7, [r4, 0x6c]                                |         r7 = *((r4 + 0x6c));
    0x0003f9f8 cmp r2, 0                                         |         
                                                                 |         if (r2 > 0) {
    0x0003f9fa ble 0x3fa16                                       |             
    0x0003f9fc ldr r3, [r4, 0x14]                                |             r3 = *((r4 + 0x14));
    0x0003f9fe ldr r1, [r4, 0xc]                                 |             r1 = *((r4 + 0xc));
    0x0003fa00 ldr.w r1, [r3, r1, lsl 2]                         |             offset_3 = r1 << 2;
                                                                 |             r1 = *((r3 + offset_3));
    0x0003fa04 adds r3, r7, r2                                   |             r3 = r7 + r2;
    0x0003fa06 ldrb r3, [r3, -0x1]                               |             r3 = *((r3 - 0x1));
    0x0003fa0a sub.w r3, r3, 0xa                                 |             r3 -= 0xa;
    0x0003fa0e clz r3, r3                                        |             r3 &= r3;
    0x0003fa12 lsrs r3, r3, 5                                    |             r3 >>= 5;
    0x0003fa14 str r3, [r1, 0x1c]                                |             *((r1 + 0x1c)) = r3;
                                                                 |         }
    0x0003fa16 ldr r5, [r4]                                      |         r5 = *(r4);
    0x0003fa18 ldr r3, [r4, 0x2c]                                |         r3 = *((r4 + 0x2c));
    0x0003fa1a add.w r1, r5, 0x2000                              |         r1 = r5 + case.0x5984c.0;
    0x0003fa1e mov lr, r5                                        |         lr = r5;
    0x0003fa20 ldr.w r6, [r1, 0xd94]                             |         r6 = case.0x5984c.0;
    0x0003fa24 cmp r3, 2                                         |         
    0x0003fa26 itttt ls                                          |         
                                                                 |         if (r3 > 2) {
    0x0003fa28 movls r3, 0x2c                                    |             r3 = 0x2c;
                                                                 |         }
                                                                 |         if (r3 <= 2) {
    0x0003fa2a mlals r3, r3, r6, r5                              |             __asm ("mlals r3, r3, r6, r5");
                                                                 |         }
                                                                 |         if (r3 > 2) {
    0x0003fa2e ldrls r0, [r3, 0x1b0]                             |             r0 = case.0x5984c.0;
                                                                 |         }
                                                                 |         if (r3 <= 2) {
    0x0003fa32 str.w r0, [r3, 0x1a8]                             |             __asm ("str.w r0, case.0x5984c.0");
                                                                 |         }
    0x0003fa36 movs r3, 0x2c                                     |         r3 = 0x2c;
    0x0003fa38 mla r3, r3, r6, r5                                |         __asm ("mla r3, r3, r6, r5");
    0x0003fa3c ldr.w r0, [r1, 0xdb8]                             |         r0 = case.0x5984c.0;
    0x0003fa40 ldr.w r1, [r3, 0x1b0]                             |         r1 = case.0x5984c.0;
    0x0003fa44 add r1, r2                                        |         r1 += r2;
    0x0003fa46 str.w r1, [r3, 0x1b0]                             |         __asm ("str.w r1, case.0x5984c.0");
                                                                 |         if (r0 != 0) {
    0x0003fa4a cbz r0, 0x3fa58                                   |             
    0x0003fa4c mov r1, r7                                        |             r1 = r7;
    0x0003fa4e blx 0x1ffec                                       |             fcn_0001ffec ();
    0x0003fa52 ldr.w lr, [r4]                                    |             
    0x0003fa56 ldr r7, [r4, 0x6c]                                |             r7 = *((r4 + 0x6c));
                                                                 |         }
    0x0003fa58 movs r3, 0x2c                                     |         r3 = 0x2c;
    0x0003fa5a ldr.w ip, [r4, 0x7c]                              |         ip = *((r4 + 0x7c));
    0x0003fa5e mla r5, r3, r6, r5                                |         __asm ("mla r5, r3, r6, r5");
    0x0003fa62 mov r6, ip                                        |         r6 = ip;
    0x0003fa64 add.w r5, r5, 0x1a4                               |         r5 += case.0x5984c.0;
    0x0003fa68 ldm r5!, {r0, r1, r2, r3}                         |         r0 = *(r5!);
                                                                 |         r1 = *((r5! + 4));
                                                                 |         r2 = *((r5! + 8));
                                                                 |         r3 = *((r5! + 12));
    0x0003fa6a stm r6!, {r0, r1, r2, r3}                         |         *(r6!) = r0;
                                                                 |         *((r6! + 4)) = r1;
                                                                 |         *((r6! + 8)) = r2;
                                                                 |         *((r6! + 12)) = r3;
    0x0003fa6c mov r2, ip                                        |         r2 = ip;
    0x0003fa6e ldr r3, [r5]                                      |         r3 = *(r5);
    0x0003fa70 mov r0, lr                                        |         r0 = lr;
    0x0003fa72 ldr r1, [r4, 0x78]                                |         r1 = *((r4 + 0x78));
    0x0003fa74 str r3, [r6]                                      |         *(r6) = r3;
    0x0003fa76 mov r3, r7                                        |         r3 = r7;
    0x0003fa78 add sp, 0x14                                      |         
    0x0003fa7a pop.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}        |         
    0x0003fa7e b.w 0x20f14                                       |         goto label_13;
    0x0003fa82 ldr r2, [r4, 0x20]                                |         r2 = *((r4 + 0x20));
    0x0003fa84 cmp r2, 0                                         |         
                                                                 |         if (r2 > 0) {
    0x0003fa86 ble 0x3faa4                                       |             
    0x0003fa88 ldr r3, [r4, 0x6c]                                |             r3 = *((r4 + 0x6c));
    0x0003fa8a ldr r1, [r4, 0xc]                                 |             r1 = *((r4 + 0xc));
    0x0003fa8c ldr r0, [r4, 0x14]                                |             r0 = *((r4 + 0x14));
    0x0003fa8e add r3, r2                                        |             r3 += r2;
    0x0003fa90 ldrb r3, [r3, -0x1]                               |             r3 = *((r3 - 0x1));
    0x0003fa94 ldr.w r1, [r0, r1, lsl 2]                         |             offset_4 = r1 << 2;
                                                                 |             r1 = *((r0 + offset_4));
    0x0003fa98 sub.w r3, r3, 0xa                                 |             r3 -= 0xa;
    0x0003fa9c clz r3, r3                                        |             r3 &= r3;
    0x0003faa0 lsrs r3, r3, 5                                    |             r3 >>= 5;
    0x0003faa2 str r3, [r1, 0x1c]                                |             *((r1 + 0x1c)) = r3;
                                                                 |         }
    0x0003faa4 ldr r5, [r4]                                      |         r5 = *(r4);
    0x0003faa6 ldr r3, [r4, 0x2c]                                |         r3 = *((r4 + 0x2c));
    0x0003faa8 add.w r6, r5, 0x2000                              |         r6 = r5 + case.0x5984c.0;
    0x0003faac ldr.w r1, [r6, 0xd94]                             |         r1 = case.0x5984c.0;
    0x0003fab0 cmp r3, 2                                         |         
    0x0003fab2 itttt ls                                          |         
                                                                 |         if (r3 > 2) {
    0x0003fab4 movls r3, 0x2c                                    |             r3 = 0x2c;
                                                                 |         }
                                                                 |         if (r3 <= 2) {
    0x0003fab6 mlals r3, r3, r1, r5                              |             __asm ("mlals r3, r3, r1, r5");
                                                                 |         }
                                                                 |         if (r3 <= 2) {
    0x0003fab8 strhls r1, [r0, r4]                               |             __asm ("strhls r1, [r0, r4]");
                                                                 |         }
                                                                 |         if (r3 > 2) {
    0x0003faba ldrls r0, [r3, 0x1b0]                             |             r0 = case.0x5984c.0;
                                                                 |         }
    0x0003fabe str.w r0, [r3, 0x1a8]                             |         __asm ("str.w r0, case.0x5984c.0");
    0x0003fac2 movs r3, 0x2c                                     |         r3 = 0x2c;
    0x0003fac4 mla r5, r3, r1, r5                                |         __asm ("mla r5, r3, r1, r5");
    0x0003fac8 ldr.w r0, [r6, 0xdb8]                             |         r0 = case.0x5984c.0;
    0x0003facc ldr.w r3, [r5, 0x1b0]                             |         r3 = case.0x5984c.0;
    0x0003fad0 add r3, r2                                        |         r3 += r2;
    0x0003fad2 str.w r3, [r5, 0x1b0]                             |         __asm ("str.w r3, case.0x5984c.0");
    0x0003fad6 cmp r0, 0                                         |         
                                                                 |         if (r0 == 0) {
    0x0003fad8 beq.w 0x420b4                                     |             goto label_74;
                                                                 |         }
    0x0003fadc ldr r1, [r4, 0x6c]                                |         r1 = *((r4 + 0x6c));
    0x0003fade add.w r5, r5, 0x1a4                               |         r5 += case.0x5984c.0;
    0x0003fae2 blx 0x1ffec                                       |         r0 = fcn_0001ffec ();
    0x0003fae6 ldm r5!, {r0, r1, r2, r3}                         |         r0 = *(r5!);
                                                                 |         r1 = *((r5! + 4));
                                                                 |         r2 = *((r5! + 8));
                                                                 |         r3 = *((r5! + 12));
    0x0003fae8 ldr r7, [r4]                                      |         r7 = *(r4);
    0x0003faea ldr r6, [r4, 0x7c]                                |         r6 = *((r4 + 0x7c));
    0x0003faec add.w r7, r7, 0x2000                              |         r7 += case.0x5984c.0;
    0x0003faf0 ldr.w ip, [r7, 0xdb8]                             |         ip = case.0x5984c.0;
    0x0003faf4 stm r6!, {r0, r1, r2, r3}                         |         *(r6!) = r0;
                                                                 |         *((r6! + 4)) = r1;
                                                                 |         *((r6! + 8)) = r2;
                                                                 |         *((r6! + 12)) = r3;
    0x0003faf6 ldr r3, [r5]                                      |         r3 = *(r5);
    0x0003faf8 str r3, [r6]                                      |         *(r6) = r3;
    0x0003fafa cmp.w ip, 0                                       |         
    0x0003fafe beq.w 0x3f9ec                                     |         
                                                                 |     } while (ip == 0);
    0x0003fb02 ldr r3, [r4, 0x2c]                                |     r3 = *((r4 + 0x2c));
    0x0003fb04 cmp r3, 2                                         |     
                                                                 |     if (r3 > 2) {
    0x0003fb06 bhi.w 0x3f9ec                                     |         goto label_14;
                                                                 |     }
    0x0003fb0a ldrd r1, r2, [ip]                                 |     __asm ("ldrd r1, r2, [ip]");
    0x0003fb0e ldr.w r0, [r7, 0xdb4]                             |     r0 = case.0x5984c.0;
    0x0003fb12 blx 0x1ffec                                       |     fcn_0001ffec ();
    0x0003fb16 ldr r3, [r4]                                      |     r3 = *(r4);
    0x0003fb18 movs r1, 0                                        |     r1 = 0;
    0x0003fb1a add.w r3, r3, 0x2000                              |     r3 += case.0x5984c.0;
    0x0003fb1e ldr.w r0, [r3, 0xdb8]                             |     r0 = case.0x5984c.0;
    0x0003fb22 blx 0x1fc8c                                       |     fcn_0001fc8c ();
    0x0003fb26 b 0x3f9ec                                         |     goto label_14;
    0x0003fb28 ldr r2, [r4, 0x20]                                |     r2 = *((r4 + 0x20));
    0x0003fb2a cmp r2, 0                                         |     
                                                                 |     if (r2 > 0) {
    0x0003fb2c ble 0x3fb4a                                       |         
    0x0003fb2e ldr r3, [r4, 0x6c]                                |         r3 = *((r4 + 0x6c));
    0x0003fb30 ldr r1, [r4, 0xc]                                 |         r1 = *((r4 + 0xc));
    0x0003fb32 ldr r0, [r4, 0x14]                                |         r0 = *((r4 + 0x14));
    0x0003fb34 add r3, r2                                        |         r3 += r2;
    0x0003fb36 ldrb r3, [r3, -0x1]                               |         r3 = *((r3 - 0x1));
    0x0003fb3a ldr.w r1, [r0, r1, lsl 2]                         |         offset_5 = r1 << 2;
                                                                 |         r1 = *((r0 + offset_5));
    0x0003fb3e sub.w r3, r3, 0xa                                 |         r3 -= 0xa;
    0x0003fb42 clz r3, r3                                        |         r3 &= r3;
    0x0003fb44 usat sb, 0x1b, r3, lsl 1                          |         __asm ("usat sb, 0x1b, r3, lsl 1");
    0x0003fb48 str r3, [r1, 0x1c]                                |         *((r1 + 0x1c)) = r3;
                                                                 |     }
    0x0003fb4a ldr r5, [r4]                                      |     r5 = *(r4);
    0x0003fb4c ldr r3, [r4, 0x2c]                                |     r3 = *((r4 + 0x2c));
    0x0003fb4e add.w r0, r5, 0x2000                              |     r0 = r5 + case.0x5984c.0;
    0x0003fb52 ldr.w r6, [r0, 0xd94]                             |     r6 = case.0x5984c.0;
    0x0003fb56 cmp r3, 2                                         |     
    0x0003fb58 it ls                                             |     
                                                                 |     if (r3 > 2) {
    0x0003fb5a movls r3, 0x2c                                    |         r3 = 0x2c;
                                                                 |     }
    0x0003fb5c ldr.w r0, [r0, 0xdb8]                             |     r0 = case.0x5984c.0;
    0x0003fb60 ittt ls                                           |     
                                                                 |     if (r3 <= 2) {
    0x0003fb62 mlals r3, r3, r6, r5                              |         __asm ("mlals r3, r3, r6, r5");
                                                                 |     }
                                                                 |     if (r3 > 2) {
    0x0003fb66 ldrls r1, [r3, 0x1b0]                             |         r1 = case.0x5984c.0;
                                                                 |     }
                                                                 |     if (r3 <= 2) {
    0x0003fb6a str.w r1, [r3, 0x1a8]                             |         __asm ("str.w r1, case.0x5984c.0");
                                                                 |     }
    0x0003fb6e movs r3, 0x2c                                     |     r3 = 0x2c;
    0x0003fb70 mla r3, r3, r6, r5                                |     __asm ("mla r3, r3, r6, r5");
    0x0003fb74 ldr.w r1, [r3, 0x1b0]                             |     r1 = case.0x5984c.0;
    0x0003fb78 add r1, r2                                        |     r1 += r2;
    0x0003fb7a str.w r1, [r3, 0x1b0]                             |     __asm ("str.w r1, case.0x5984c.0");
    0x0003fb7e mov r3, r5                                        |     r3 = r5;
                                                                 |     if (r0 != 0) {
    0x0003fb80 cbz r0, 0x3fb8a                                   |         
    0x0003fb82 ldr r1, [r4, 0x6c]                                |         r1 = *((r4 + 0x6c));
    0x0003fb84 blx 0x1ffec                                       |         fcn_0001ffec ();
    0x0003fb88 ldr r3, [r4]                                      |         r3 = *(r4);
                                                                 |     }
    0x0003fb8a add.w r3, r3, 0x2000                              |     r3 += case.0x5984c.0;
    0x0003fb8e ldr.w r7, [r3, 0xda8]                             |     r7 = case.0x5984c.0;
    0x0003fb92 movs r3, 0x2c                                     |     r3 = 0x2c;
    0x0003fb94 mla r5, r3, r6, r5                                |     __asm ("mla r5, r3, r6, r5");
    0x0003fb98 ldr r6, [r4, 0x7c]                                |     r6 = *((r4 + 0x7c));
    0x0003fb9a ldrd lr, r8, [r7, 4]                              |     __asm ("ldrd lr, r8, [r7, 4]");
    0x0003fb9e add.w r5, r5, 0x1a4                               |     r5 += case.0x5984c.0;
    0x0003fba2 ldm r5!, {r0, r1, r2, r3}                         |     r0 = *(r5!);
                                                                 |     r1 = *((r5! + 4));
                                                                 |     r2 = *((r5! + 8));
                                                                 |     r3 = *((r5! + 12));
    0x0003fba4 add.w ip, lr, 1                                   |     
    0x0003fba8 cmp ip, r8                                        |     
    0x0003fbaa stm r6!, {r0, r1, r2, r3}                         |     *(r6!) = r0;
                                                                 |     *((r6! + 4)) = r1;
                                                                 |     *((r6! + 8)) = r2;
                                                                 |     *((r6! + 12)) = r3;
    0x0003fbac ldr r3, [r5]                                      |     r3 = *(r5);
    0x0003fbae str r3, [r6]                                      |     *(r6) = r3;
                                                                 |     if (ip >= r8) {
    0x0003fbb0 bhs.w 0x41eb4                                     |         goto label_75;
                                                                 |     }
    0x0003fbb4 ldr r3, [r7]                                      |     r3 = *(r7);
    0x0003fbb6 movs r2, 9                                        |     r2 = 9;
    0x0003fbb8 str.w ip, [r7, 4]                                 |     __asm ("str.w ip, [r7, 4]");
    0x0003fbbc movs r1, 0                                        |     r1 = 0;
    0x0003fbbe strb.w r2, [r3, lr]                               |     *((r3 + lr)) = r2;
    0x0003fbc2 ldrd r2, r3, [r7]                                 |     __asm ("ldrd r2, r3, [r7]");
    0x0003fbc6 strb r1, [r2, r3]                                 |     *((r2 + r3)) = r1;
                                                                 | label_19:
    0x0003fbc8 ldr r3, [r4]                                      |     r3 = *(r4);
    0x0003fbca add.w r3, r3, 0x2000                              |     r3 += case.0x5984c.0;
    0x0003fbce ldr.w r2, [r3, 0xdb8]                             |     r2 = case.0x5984c.0;
    0x0003fbd2 cmp r2, 0                                         |     
                                                                 |     if (r2 == 0) {
    0x0003fbd4 beq.w 0x3f9ec                                     |         goto label_14;
                                                                 |     }
    0x0003fbd8 ldr r1, [r4, 0x2c]                                |     r1 = *((r4 + 0x2c));
    0x0003fbda cmp r1, 2                                         |     
                                                                 |     if (r1 > 2) {
    0x0003fbdc bhi.w 0x3f9ec                                     |         goto label_14;
                                                                 |     }
    0x0003fbe0 ldrd r1, r2, [r2]                                 |     __asm ("ldrd r1, r2, [r2]");
    0x0003fbe4 ldr.w r0, [r3, 0xdb4]                             |     r0 = case.0x5984c.0;
    0x0003fbe8 blx 0x1ffec                                       |     fcn_0001ffec ();
    0x0003fbec ldr r3, [r4]                                      |     r3 = *(r4);
    0x0003fbee movs r1, 0                                        |     r1 = 0;
    0x0003fbf0 add.w r3, r3, 0x2000                              |     r3 += case.0x5984c.0;
    0x0003fbf4 ldr.w r0, [r3, 0xdb8]                             |     r0 = case.0x5984c.0;
    0x0003fbf8 blx 0x1fc8c                                       |     fcn_0001fc8c ();
    0x0003fbfc b 0x3f9ec                                         |     goto label_14;
    0x0003fbfe ldr r2, [r4, 0x20]                                |     r2 = *((r4 + 0x20));
    0x0003fc00 cmp r2, 0                                         |     
                                                                 |     if (r2 > 0) {
    0x0003fc02 ble 0x3fc20                                       |         
    0x0003fc04 ldr r3, [r4, 0x6c]                                |         r3 = *((r4 + 0x6c));
    0x0003fc06 ldr r1, [r4, 0xc]                                 |         r1 = *((r4 + 0xc));
    0x0003fc08 ldr r0, [r4, 0x14]                                |         r0 = *((r4 + 0x14));
    0x0003fc0a add r3, r2                                        |         r3 += r2;
    0x0003fc0c ldrb r3, [r3, -0x1]                               |         r3 = *((r3 - 0x1));
    0x0003fc10 ldr.w r1, [r0, r1, lsl 2]                         |         offset_6 = r1 << 2;
                                                                 |         r1 = *((r0 + offset_6));
    0x0003fc14 sub.w r3, r3, 0xa                                 |         r3 -= 0xa;
    0x0003fc18 clz r3, r3                                        |         r3 &= r3;
    0x0003fc1c lsrs r3, r3, 5                                    |         r3 >>= 5;
    0x0003fc1e str r3, [r1, 0x1c]                                |         *((r1 + 0x1c)) = r3;
                                                                 |     }
    0x0003fc20 ldr r1, [r4]                                      |     r1 = *(r4);
    0x0003fc22 mov.w r8, 0x2c                                    |     r8 = 0x2c;
    0x0003fc26 ldr r3, [r4, 0x2c]                                |     r3 = *((r4 + 0x2c));
    0x0003fc28 add.w r7, r1, 0x2000                              |     r7 = r1 + case.0x5984c.0;
    0x0003fc2c ldr.w r5, [r7, 0xd94]                             |     r5 = case.0x5984c.0;
    0x0003fc30 cmp r3, 2                                         |     
    0x0003fc32 itt ls                                            |     
                                                                 |     if (r3 > 2) {
    0x0003fc34 movls r3, 0x2c                                    |         r3 = 0x2c;
                                                                 |     }
                                                                 |     if (r3 <= 2) {
    0x0003fc36 mlals r3, r3, r5, r1                              |         __asm ("mlals r3, r3, r5, r1");
                                                                 |     }
    0x0003fc3a mla r5, r8, r5, r1                                |     __asm ("mla r5, r8, r5, r1");
    0x0003fc3e itt ls                                            |     
                                                                 |     if (r3 > 2) {
    0x0003fc40 ldrls r0, [r3, 0x1b0]                             |         r0 = case.0x5984c.0;
                                                                 |     }
                                                                 |     if (r3 <= 2) {
    0x0003fc44 str.w r0, [r3, 0x1a8]                             |         __asm ("str.w r0, case.0x5984c.0");
                                                                 |     }
    0x0003fc48 ldr.w r0, [r7, 0xdb8]                             |     r0 = case.0x5984c.0;
    0x0003fc4c ldr.w r3, [r5, 0x1b0]                             |     r3 = case.0x5984c.0;
    0x0003fc50 add r3, r2                                        |     r3 += r2;
    0x0003fc52 str.w r3, [r5, 0x1b0]                             |     __asm ("str.w r3, case.0x5984c.0");
    0x0003fc56 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0003fc58 beq.w 0x41fb6                                     |         goto label_76;
                                                                 |     }
    0x0003fc5c ldr r1, [r4, 0x6c]                                |     r1 = *((r4 + 0x6c));
    0x0003fc5e add.w r6, r5, 0x1a4                               |     r6 = r5 + case.0x5984c.0;
    0x0003fc62 blx 0x1ffec                                       |     fcn_0001ffec ();
    0x0003fc66 ldr r7, [r4]                                      |     r7 = *(r4);
    0x0003fc68 mov.w sb, 1                                       |     sb = 1;
    0x0003fc6c ldr r5, [r4, 0x7c]                                |     r5 = *((r4 + 0x7c));
    0x0003fc6e add.w ip, r7, 0x2000                              |     
    0x0003fc72 ldr.w r3, [ip, 0xd94]                             |     r3 = case.0x5984c.0;
    0x0003fc76 ldr.w lr, [ip, 0xdb8]                             |     
    0x0003fc7a mla r7, r8, r3, r7                                |     __asm ("mla r7, r8, r3, r7");
    0x0003fc7e ldm r6!, {r0, r1, r2, r3}                         |     r0 = *(r6!);
                                                                 |     r1 = *((r6! + 4));
                                                                 |     r2 = *((r6! + 8));
                                                                 |     r3 = *((r6! + 12));
    0x0003fc80 stm r5!, {r0, r1, r2, r3}                         |     *(r5!) = r0;
                                                                 |     *((r5! + 4)) = r1;
                                                                 |     *((r5! + 8)) = r2;
                                                                 |     *((r5! + 12)) = r3;
    0x0003fc82 ldr r3, [r6]                                      |     r3 = *(r6);
    0x0003fc84 str r3, [r5]                                      |     *(r5) = r3;
    0x0003fc86 ldr.w r3, [r7, 0x1ac]                             |     r3 = case.0x5984c.0;
    0x0003fc8a str.w sb, [r7, 0x1b0]                             |     __asm ("str.w sb, case.0x5984c.0");
    0x0003fc8e add r3, sb                                        |     r3 += sb;
    0x0003fc90 str.w r3, [r7, 0x1ac]                             |     __asm ("str.w r3, case.0x5984c.0");
    0x0003fc94 cmp.w lr, 0                                       |     
                                                                 |     if (lr == 0) {
    0x0003fc98 beq.w 0x3f9ec                                     |         goto label_14;
                                                                 |     }
    0x0003fc9c ldr r3, [r4, 0x2c]                                |     r3 = *((r4 + 0x2c));
    0x0003fc9e cmp r3, 2                                         |     
                                                                 |     if (r3 > 2) {
    0x0003fca0 bhi.w 0x3f9ec                                     |         goto label_14;
                                                                 |     }
    0x0003fca4 ldrd r1, r2, [lr]                                 |     __asm ("ldrd r1, r2, [lr]");
    0x0003fca8 ldr.w r0, [ip, 0xdb4]                             |     r0 = case.0x5984c.0;
    0x0003fcac blx 0x1ffec                                       |     fcn_0001ffec ();
    0x0003fcb0 ldr r3, [r4]                                      |     r3 = *(r4);
    0x0003fcb2 movs r1, 0                                        |     r1 = 0;
    0x0003fcb4 add.w r3, r3, 0x2000                              |     r3 += case.0x5984c.0;
    0x0003fcb8 ldr.w r0, [r3, 0xdb8]                             |     r0 = case.0x5984c.0;
    0x0003fcbc blx 0x1fc8c                                       |     fcn_0001fc8c ();
    0x0003fcc0 b 0x3f9ec                                         |     goto label_14;
    0x0003fcc2 ldr r2, [r4, 0x20]                                |     r2 = *((r4 + 0x20));
    0x0003fcc4 ldr r6, [r4, 0x6c]                                |     r6 = *((r4 + 0x6c));
    0x0003fcc6 cmp r2, 0                                         |     
                                                                 |     if (r2 > 0) {
    0x0003fcc8 ble 0x3fce4                                       |         
    0x0003fcca ldr r3, [r4, 0x14]                                |         r3 = *((r4 + 0x14));
    0x0003fccc ldr r1, [r4, 0xc]                                 |         r1 = *((r4 + 0xc));
    0x0003fcce ldr.w r1, [r3, r1, lsl 2]                         |         offset_7 = r1 << 2;
                                                                 |         r1 = *((r3 + offset_7));
    0x0003fcd2 adds r3, r6, r2                                   |         r3 = r6 + r2;
    0x0003fcd4 ldrb r3, [r3, -0x1]                               |         r3 = *((r3 - 0x1));
    0x0003fcd8 sub.w r3, r3, 0xa                                 |         r3 -= 0xa;
    0x0003fcdc clz r3, r3                                        |         r3 &= r3;
    0x0003fce0 lsrs r3, r3, 5                                    |         r3 >>= 5;
    0x0003fce2 str r3, [r1, 0x1c]                                |         *((r1 + 0x1c)) = r3;
                                                                 |     }
    0x0003fce4 ldr r5, [r4]                                      |     r5 = *(r4);
    0x0003fce6 ldr r3, [r4, 0x2c]                                |     r3 = *((r4 + 0x2c));
    0x0003fce8 add.w r0, r5, 0x2000                              |     r0 = r5 + case.0x5984c.0;
    0x0003fcec ldr.w r7, [r0, 0xd94]                             |     r7 = case.0x5984c.0;
    0x0003fcf0 cmp r3, 2                                         |     
    0x0003fcf2 it ls                                             |     
                                                                 |     if (r3 > 2) {
    0x0003fcf4 movls r3, 0x2c                                    |         r3 = 0x2c;
                                                                 |     }
    0x0003fcf6 ldr.w r0, [r0, 0xdb8]                             |     r0 = case.0x5984c.0;
    0x0003fcfa ittt ls                                           |     
                                                                 |     if (r3 <= 2) {
    0x0003fcfc mlals r3, r3, r7, r5                              |         __asm ("mlals r3, r3, r7, r5");
                                                                 |     }
                                                                 |     if (r3 > 2) {
    0x0003fd00 ldrls r1, [r3, 0x1b0]                             |         r1 = case.0x5984c.0;
                                                                 |     }
                                                                 |     if (r3 <= 2) {
    0x0003fd04 str.w r1, [r3, 0x1a8]                             |         __asm ("str.w r1, case.0x5984c.0");
                                                                 |     }
    0x0003fd08 movs r3, 0x2c                                     |     r3 = 0x2c;
    0x0003fd0a mla r3, r3, r7, r5                                |     __asm ("mla r3, r3, r7, r5");
    0x0003fd0e ldr.w r1, [r3, 0x1b0]                             |     r1 = case.0x5984c.0;
    0x0003fd12 add r1, r2                                        |     r1 += r2;
    0x0003fd14 str.w r1, [r3, 0x1b0]                             |     __asm ("str.w r1, case.0x5984c.0");
    0x0003fd18 mov r3, r5                                        |     r3 = r5;
                                                                 |     if (r0 != 0) {
    0x0003fd1a cbz r0, 0x3fd26                                   |         
    0x0003fd1c mov r1, r6                                        |         r1 = r6;
    0x0003fd1e blx 0x1ffec                                       |         fcn_0001ffec ();
    0x0003fd22 ldr r3, [r4]                                      |         r3 = *(r4);
    0x0003fd24 ldr r6, [r4, 0x6c]                                |         r6 = *((r4 + 0x6c));
                                                                 |     }
    0x0003fd26 add.w r3, r3, 0x2000                              |     r3 += case.0x5984c.0;
    0x0003fd2a ldr.w ip, [r3, 0xda8]                             |     ip = case.0x5984c.0;
    0x0003fd2e movs r3, 0x2c                                     |     r3 = 0x2c;
    0x0003fd30 mla r5, r3, r7, r5                                |     __asm ("mla r5, r3, r7, r5");
    0x0003fd34 ldr r7, [r4, 0x7c]                                |     r7 = *((r4 + 0x7c));
    0x0003fd36 ldrd lr, sb, [ip, 4]                              |     __asm ("ldrd lr, sb, [ip, 4]");
    0x0003fd3a add.w r5, r5, 0x1a4                               |     r5 += case.0x5984c.0;
    0x0003fd3e ldm r5!, {r0, r1, r2, r3}                         |     r0 = *(r5!);
                                                                 |     r1 = *((r5! + 4));
                                                                 |     r2 = *((r5! + 8));
                                                                 |     r3 = *((r5! + 12));
    0x0003fd40 add.w r8, lr, 1                                   |     r8 = lr + 1;
    0x0003fd44 cmp r8, sb                                        |     
    0x0003fd46 stm r7!, {r0, r1, r2, r3}                         |     *(r7!) = r0;
                                                                 |     *((r7! + 4)) = r1;
                                                                 |     *((r7! + 8)) = r2;
                                                                 |     *((r7! + 12)) = r3;
    0x0003fd48 ldr r3, [r5]                                      |     r3 = *(r5);
    0x0003fd4a str r3, [r7]                                      |     *(r7) = r3;
    0x0003fd4c ldrb r2, [r6, 1]                                  |     r2 = *((r6 + 1));
                                                                 |     if (r8 >= sb) {
    0x0003fd4e bhs.w 0x41ea6                                     |         goto label_77;
                                                                 |     }
    0x0003fd52 ldr.w r3, [ip]                                    |     r3 = *(ip);
    0x0003fd56 movs r1, 0                                        |     r1 = 0;
    0x0003fd58 str.w r8, [ip, 4]                                 |     __asm ("str.w r8, [ip, 4]");
    0x0003fd5c strb.w r2, [r3, lr]                               |     *((r3 + lr)) = r2;
    0x0003fd60 ldrd r2, r3, [ip]                                 |     __asm ("ldrd r2, r3, [ip]");
    0x0003fd64 strb r1, [r2, r3]                                 |     *((r2 + r3)) = r1;
                                                                 | label_18:
    0x0003fd66 ldr r3, [r4]                                      |     r3 = *(r4);
    0x0003fd68 add.w r3, r3, 0x2000                              |     r3 += case.0x5984c.0;
    0x0003fd6c ldr.w r2, [r3, 0xdb8]                             |     r2 = case.0x5984c.0;
    0x0003fd70 cmp r2, 0                                         |     
                                                                 |     if (r2 == 0) {
    0x0003fd72 beq.w 0x3f9ec                                     |         goto label_14;
                                                                 |     }
    0x0003fd76 ldr r1, [r4, 0x2c]                                |     r1 = *((r4 + 0x2c));
    0x0003fd78 cmp r1, 2                                         |     
                                                                 |     if (r1 > 2) {
    0x0003fd7a bhi.w 0x3f9ec                                     |         goto label_14;
                                                                 |     }
    0x0003fd7e ldrd r1, r2, [r2]                                 |     __asm ("ldrd r1, r2, [r2]");
    0x0003fd82 ldr.w r0, [r3, 0xdb4]                             |     r0 = case.0x5984c.0;
    0x0003fd86 blx 0x1ffec                                       |     fcn_0001ffec ();
    0x0003fd8a ldr r3, [r4]                                      |     r3 = *(r4);
    0x0003fd8c movs r1, 0                                        |     r1 = 0;
    0x0003fd8e add.w r3, r3, 0x2000                              |     r3 += case.0x5984c.0;
    0x0003fd92 ldr.w r0, [r3, 0xdb8]                             |     r0 = case.0x5984c.0;
    0x0003fd96 blx 0x1fc8c                                       |     fcn_0001fc8c ();
    0x0003fd9a b 0x3f9ec                                         |     goto label_14;
    0x0003fd9c ldr r2, [r4, 0x20]                                |     r2 = *((r4 + 0x20));
    0x0003fd9e cmp r2, 0                                         |     
                                                                 |     if (r2 > 0) {
    0x0003fda0 ble 0x3fdbe                                       |         
    0x0003fda2 ldr r3, [r4, 0x6c]                                |         r3 = *((r4 + 0x6c));
    0x0003fda4 ldr r1, [r4, 0xc]                                 |         r1 = *((r4 + 0xc));
    0x0003fda6 ldr r0, [r4, 0x14]                                |         r0 = *((r4 + 0x14));
    0x0003fda8 add r3, r2                                        |         r3 += r2;
    0x0003fdaa ldrb r3, [r3, -0x1]                               |         r3 = *((r3 - 0x1));
    0x0003fdae ldr.w r1, [r0, r1, lsl 2]                         |         offset_8 = r1 << 2;
                                                                 |         r1 = *((r0 + offset_8));
    0x0003fdb2 sub.w r3, r3, 0xa                                 |         r3 -= 0xa;
    0x0003fdb6 clz r3, r3                                        |         r3 &= r3;
    0x0003fdba lsrs r3, r3, 5                                    |         r3 >>= 5;
    0x0003fdbc ldr r6, [r7, r3]                                  |         r6 = *((r7 + r3));
                                                                 |     }
    0x0003fdbe vtbx.8 d22, {d31, fpinst2, mvfr0}, d19            |     __asm ("vtbx.8 d22, {d31, fpinst2, mvfr0}, d19");
    0x0003fdc2 add.w r0, r5, 0x2000                              |     r0 = r5 + case.0x5984c.0;
    0x0003fdc6 mov r7, r5                                        |     r7 = r5;
    0x0003fdc8 ldr.w r6, [r0, 0xd94]                             |     r6 = case.0x5984c.0;
    0x0003fdcc cmp r3, 2                                         |     
    0x0003fdce it ls                                             |     
                                                                 |     if (r3 > 2) {
    0x0003fdd0 movls r3, 0x2c                                    |         r3 = 0x2c;
                                                                 |     }
    0x0003fdd2 ldr.w r0, [r0, 0xdb8]                             |     r0 = case.0x5984c.0;
    0x0003fdd6 ittt ls                                           |     
                                                                 |     if (r3 <= 2) {
    0x0003fdd8 mlals r3, r3, r6, r5                              |         __asm ("mlals r3, r3, r6, r5");
                                                                 |     }
                                                                 |     if (r3 > 2) {
    0x0003fddc ldrls r1, [r3, 0x1b0]                             |         r1 = case.0x5984c.0;
                                                                 |     }
                                                                 |     if (r3 <= 2) {
    0x0003fde0 str.w r1, [r3, 0x1a8]                             |         __asm ("str.w r1, case.0x5984c.0");
                                                                 |     }
    0x0003fde4 movs r3, 0x2c                                     |     r3 = 0x2c;
    0x0003fde6 mla r3, r3, r6, r5                                |     __asm ("mla r3, r3, r6, r5");
    0x0003fdea ldr.w r1, [r3, 0x1b0]                             |     r1 = case.0x5984c.0;
    0x0003fdee add r1, r2                                        |     r1 += r2;
    0x0003fdf0 str.w r1, [r3, 0x1b0]                             |     __asm ("str.w r1, case.0x5984c.0");
                                                                 |     if (r0 != 0) {
    0x0003fdf4 cbz r0, 0x3fdfe                                   |         
    0x0003fdf6 ldr r1, [r4, 0x6c]                                |         r1 = *((r4 + 0x6c));
    0x0003fdf8 blx 0x1ffec                                       |         fcn_0001ffec ();
    0x0003fdfc ldr r7, [r4]                                      |         r7 = *(r4);
                                                                 |     }
    0x0003fdfe movs r3, 0x2c                                     |     r3 = 0x2c;
    0x0003fe00 add.w r7, r7, 0x2000                              |     r7 += case.0x5984c.0;
    0x0003fe04 mla r5, r3, r6, r5                                |     __asm ("mla r5, r3, r6, r5");
    0x0003fe08 ldr r6, [r4, 0x7c]                                |     r6 = *((r4 + 0x7c));
    0x0003fe0a add.w r5, r5, 0x1a4                               |     r5 += case.0x5984c.0;
    0x0003fe0e ldm r5!, {r0, r1, r2, r3}                         |     r0 = *(r5!);
                                                                 |     r1 = *((r5! + 4));
                                                                 |     r2 = *((r5! + 8));
                                                                 |     r3 = *((r5! + 12));
    0x0003fe10 stm r6!, {r0, r1, r2, r3}                         |     *(r6!) = r0;
                                                                 |     *((r6! + 4)) = r1;
                                                                 |     *((r6! + 8)) = r2;
                                                                 |     *((r6! + 12)) = r3;
    0x0003fe12 movs r1, 0                                        |     r1 = 0;
    0x0003fe14 ldr r3, [r5]                                      |     r3 = *(r5);
    0x0003fe16 ldr.w r0, [r7, 0xda8]                             |     r0 = case.0x5984c.0;
    0x0003fe1a str r3, [r6]                                      |     *(r6) = r3;
    0x0003fe1c blx 0x1fc8c                                       |     fcn_0001fc8c ();
    0x0003fe20 mov r1, r4                                        |     r1 = r4;
    0x0003fe22 movs r0, 2                                        |     r0 = 2;
    0x0003fe24 bl 0x3f06c                                        |     fcn_0003f06c (r0, r1, r2);
    0x0003fe28 ldr r3, [r4]                                      |     r3 = *(r4);
    0x0003fe2a add.w r3, r3, 0x2000                              |     r3 += case.0x5984c.0;
    0x0003fe2e ldr.w r2, [r3, 0xdb8]                             |     r2 = case.0x5984c.0;
    0x0003fe32 cmp r2, 0                                         |     
                                                                 |     if (r2 == 0) {
    0x0003fe34 beq.w 0x3f9ec                                     |         goto label_14;
                                                                 |     }
    0x0003fe38 ldr r1, [r4, 0x2c]                                |     r1 = *((r4 + 0x2c));
    0x0003fe3a cmp r1, 2                                         |     
                                                                 |     if (r1 > 2) {
    0x0003fe3c bhi.w 0x3f9ec                                     |         goto label_14;
                                                                 |     }
    0x0003fe40 ldrd r1, r2, [r2]                                 |     __asm ("ldrd r1, r2, [r2]");
    0x0003fe44 ldr.w r0, [r3, 0xdb4]                             |     r0 = case.0x5984c.0;
    0x0003fe48 blx 0x1ffec                                       |     fcn_0001ffec ();
    0x0003fe4c ldr r3, [r4]                                      |     r3 = *(r4);
    0x0003fe4e movs r1, 0                                        |     r1 = 0;
    0x0003fe50 add.w r3, r3, 0x2000                              |     r3 += case.0x5984c.0;
    0x0003fe54 ldr.w r0, [r3, 0xdb8]                             |     r0 = case.0x5984c.0;
    0x0003fe58 blx 0x1fc8c                                       |     fcn_0001fc8c ();
    0x0003fe5c b 0x3f9ec                                         |     goto label_14;
    0x0003fe5e ldr r2, [r4, 0x20]                                |     r2 = *((r4 + 0x20));
    0x0003fe60 ldr.w ip, [r4, 0x6c]                              |     ip = *((r4 + 0x6c));
    0x0003fe64 cmp r2, 0                                         |     
                                                                 |     if (r2 > 0) {
    0x0003fe66 ble 0x3fe84                                       |         
    0x0003fe68 ldr r3, [r4, 0x14]                                |         r3 = *((r4 + 0x14));
    0x0003fe6a ldr r1, [r4, 0xc]                                 |         r1 = *((r4 + 0xc));
    0x0003fe6c ldr.w r1, [r3, r1, lsl 2]                         |         offset_9 = r1 << 2;
                                                                 |         r1 = *((r3 + offset_9));
    0x0003fe70 add.w r3, ip, r2                                  |         r3 = ip + r2;
    0x0003fe74 ldrb r3, [r3, -0x1]                               |         r3 = *((r3 - 0x1));
    0x0003fe78 sub.w r3, r3, 0xa                                 |         r3 -= 0xa;
    0x0003fe7c clz r3, r3                                        |         r3 &= r3;
    0x0003fe80 lsrs r3, r3, 5                                    |         r3 >>= 5;
    0x0003fe82 str r3, [r1, 0x1c]                                |         *((r1 + 0x1c)) = r3;
                                                                 |     }
    0x0003fe84 ldr r5, [r4]                                      |     r5 = *(r4);
    0x0003fe86 ldr r3, [r4, 0x2c]                                |     r3 = *((r4 + 0x2c));
    0x0003fe88 add.w r0, r5, 0x2000                              |     r0 = r5 + case.0x5984c.0;
    0x0003fe8c ldr.w r6, [r0, 0xd94]                             |     r6 = case.0x5984c.0;
    0x0003fe90 cmp r3, 2                                         |     
    0x0003fe92 it ls                                             |     
                                                                 |     if (r3 > 2) {
    0x0003fe94 movls r3, 0x2c                                    |         r3 = 0x2c;
                                                                 |     }
    0x0003fe96 ldr.w r0, [r0, 0xdb8]                             |     r0 = case.0x5984c.0;
    0x0003fe9a ittt ls                                           |     
                                                                 |     if (r3 <= 2) {
    0x0003fe9c mlals r3, r3, r6, r5                              |         __asm ("mlals r3, r3, r6, r5");
                                                                 |     }
                                                                 |     if (r3 > 2) {
    0x0003fea0 ldrls r1, [r3, 0x1b0]                             |         r1 = case.0x5984c.0;
                                                                 |     }
                                                                 |     if (r3 <= 2) {
    0x0003fea4 str.w r1, [r3, 0x1a8]                             |         __asm ("str.w r1, case.0x5984c.0");
                                                                 |     }
    0x0003fea8 movs r3, 0x2c                                     |     r3 = 0x2c;
    0x0003feaa mla r3, r3, r6, r5                                |     __asm ("mla r3, r3, r6, r5");
    0x0003feae ldr.w r1, [r3, 0x1b0]                             |     r1 = case.0x5984c.0;
    0x0003feb2 add r1, r2                                        |     r1 += r2;
    0x0003feb4 str.w r1, [r3, 0x1b0]                             |     __asm ("str.w r1, case.0x5984c.0");
    0x0003feb8 mov r3, r5                                        |     r3 = r5;
                                                                 |     if (r0 != 0) {
    0x0003feba cbz r0, 0x3fec8                                   |         
    0x0003febc mov r1, ip                                        |         r1 = ip;
    0x0003febe blx 0x1ffec                                       |         fcn_0001ffec ();
    0x0003fec2 ldr r3, [r4]                                      |         r3 = *(r4);
    0x0003fec4 ldr.w ip, [r4, 0x6c]                              |         ip = *((r4 + 0x6c));
                                                                 |     }
    0x0003fec8 add.w r3, r3, 0x2000                              |     r3 += case.0x5984c.0;
    0x0003fecc ldr.w r7, [r3, 0xda8]                             |     r7 = case.0x5984c.0;
    0x0003fed0 movs r3, 0x2c                                     |     r3 = 0x2c;
    0x0003fed2 mla r5, r3, r6, r5                                |     __asm ("mla r5, r3, r6, r5");
    0x0003fed6 ldr r6, [r4, 0x7c]                                |     r6 = *((r4 + 0x7c));
    0x0003fed8 add.w r5, r5, 0x1a4                               |     r5 += case.0x5984c.0;
    0x0003fedc ldm r5!, {r0, r1, r2, r3}                         |     r0 = *(r5!);
                                                                 |     r1 = *((r5! + 4));
                                                                 |     r2 = *((r5! + 8));
                                                                 |     r3 = *((r5! + 12));
    0x0003fede stm r6!, {r0, r1, r2, r3}                         |     *(r6!) = r0;
                                                                 |     *((r6! + 4)) = r1;
                                                                 |     *((r6! + 8)) = r2;
                                                                 |     *((r6! + 12)) = r3;
    0x0003fee0 movs r2, 0x10                                     |     r2 = 0x10;
    0x0003fee2 ldr r3, [r5]                                      |     r3 = *(r5);
    0x0003fee4 movs r1, 0                                        |     r1 = 0;
    0x0003fee6 add.w r0, ip, 2                                   |     r0 = ip + 2;
    0x0003feea str r3, [r6]                                      |     *(r6) = r3;
    0x0003feec blx 0x1faa0                                       |     r0 = fcn_0001faa0 ();
    0x0003fef0 uxtb r2, r0                                       |     r2 = (int8_t) r0;
    0x0003fef2 ldrd r3, r0, [r7, 4]                              |     __asm ("ldrd r3, r0, [r7, 4]");
    0x0003fef6 adds r1, r3, 1                                    |     r1 = r3 + 1;
    0x0003fef8 cmp r1, r0                                        |     
                                                                 |     if (r1 >= r0) {
    0x0003fefa bhs.w 0x420a6                                     |         goto label_78;
                                                                 |     }
    0x0003fefe str r1, [r7, 4]                                   |     *((r7 + 4)) = r1;
    0x0003ff00 ldr r1, [r7]                                      |     r1 = *(r7);
    0x0003ff02 strb r2, [r1, r3]                                 |     *((r1 + r3)) = r2;
    0x0003ff04 movs r1, 0                                        |     r1 = 0;
    0x0003ff06 ldrd r2, r3, [r7]                                 |     __asm ("ldrd r2, r3, [r7]");
    0x0003ff0a strb r1, [r2, r3]                                 |     *((r2 + r3)) = r1;
                                                                 | label_32:
    0x0003ff0c ldr r3, [r4]                                      |     r3 = *(r4);
    0x0003ff0e add.w r3, r3, 0x2000                              |     r3 += case.0x5984c.0;
    0x0003ff12 ldr.w r2, [r3, 0xdb8]                             |     r2 = case.0x5984c.0;
    0x0003ff16 cmp r2, 0                                         |     
                                                                 |     if (r2 == 0) {
    0x0003ff18 beq.w 0x3f9ec                                     |         goto label_14;
                                                                 |     }
    0x0003ff1c ldr r1, [r4, 0x2c]                                |     r1 = *((r4 + 0x2c));
    0x0003ff1e cmp r1, 2                                         |     
                                                                 |     if (r1 > 2) {
    0x0003ff20 bhi.w 0x3f9ec                                     |         goto label_14;
                                                                 |     }
    0x0003ff24 ldrd r1, r2, [r2]                                 |     __asm ("ldrd r1, r2, [r2]");
    0x0003ff28 ldr.w r0, [r3, 0xdb4]                             |     r0 = case.0x5984c.0;
    0x0003ff2c blx 0x1ffec                                       |     fcn_0001ffec ();
    0x0003ff30 ldr r3, [r4]                                      |     r3 = *(r4);
    0x0003ff32 movs r1, 0                                        |     r1 = 0;
    0x0003ff34 add.w r3, r3, 0x2000                              |     r3 += case.0x5984c.0;
    0x0003ff38 ldr.w r0, [r3, 0xdb8]                             |     r0 = case.0x5984c.0;
    0x0003ff3c blx 0x1fc8c                                       |     fcn_0001fc8c ();
    0x0003ff40 b 0x3f9ec                                         |     goto label_14;
    0x0003ff42 ldr r2, [r4, 0x20]                                |     r2 = *((r4 + 0x20));
    0x0003ff44 cmp r2, 0                                         |     
                                                                 |     if (r2 > 0) {
    0x0003ff46 ble 0x3ff64                                       |         
    0x0003ff48 ldr r3, [r4, 0x6c]                                |         r3 = *((r4 + 0x6c));
    0x0003ff4a ldr r1, [r4, 0xc]                                 |         r1 = *((r4 + 0xc));
    0x0003ff4c ldr r0, [r4, 0x14]                                |         r0 = *((r4 + 0x14));
    0x0003ff4e add r3, r2                                        |         r3 += r2;
    0x0003ff50 ldrb r3, [r3, -0x1]                               |         r3 = *((r3 - 0x1));
    0x0003ff54 ldr.w r1, [r0, r1, lsl 2]                         |         offset_10 = r1 << 2;
                                                                 |         r1 = *((r0 + offset_10));
    0x0003ff58 sub.w r3, r3, 0xa                                 |         r3 -= 0xa;
    0x0003ff5c clz r3, r3                                        |         r3 &= r3;
    0x0003ff60 lsrs r3, r3, 5                                    |         r3 >>= 5;
    0x0003ff62 str r3, [r1, 0x1c]                                |         *((r1 + 0x1c)) = r3;
                                                                 |     }
    0x0003ff64 ldr r5, [r4]                                      |     r5 = *(r4);
    0x0003ff66 ldr r3, [r4, 0x2c]                                |     r3 = *((r4 + 0x2c));
    0x0003ff68 add.w r0, r5, 0x2000                              |     r0 = r5 + case.0x5984c.0;
    0x0003ff6c ldr.w r6, [r0, 0xd94]                             |     r6 = case.0x5984c.0;
    0x0003ff70 cmp r3, 2                                         |     
    0x0003ff72 it ls                                             |     
                                                                 |     if (r3 > 2) {
    0x0003ff74 movls r3, 0x2c                                    |         r3 = 0x2c;
                                                                 |     }
    0x0003ff76 ldr.w r0, [r0, 0xdb8]                             |     r0 = case.0x5984c.0;
    0x0003ff7a ittt ls                                           |     
                                                                 |     if (r3 <= 2) {
    0x0003ff7c mlals r3, r3, r6, r5                              |         __asm ("mlals r3, r3, r6, r5");
                                                                 |     }
                                                                 |     if (r3 > 2) {
    0x0003ff80 ldrls r1, [r3, 0x1b0]                             |         r1 = case.0x5984c.0;
                                                                 |     }
                                                                 |     if (r3 <= 2) {
    0x0003ff84 str.w r1, [r3, 0x1a8]                             |         __asm ("str.w r1, case.0x5984c.0");
                                                                 |     }
    0x0003ff88 movs r3, 0x2c                                     |     r3 = 0x2c;
    0x0003ff8a mla r3, r3, r6, r5                                |     __asm ("mla r3, r3, r6, r5");
    0x0003ff8e ldr.w r1, [r3, 0x1b0]                             |     r1 = case.0x5984c.0;
    0x0003ff92 add r1, r2                                        |     r1 += r2;
    0x0003ff94 str.w r1, [r3, 0x1b0]                             |     __asm ("str.w r1, case.0x5984c.0");
    0x0003ff98 mov r3, r5                                        |     r3 = r5;
                                                                 |     if (r0 != 0) {
    0x0003ff9a cbz r0, 0x3ffa4                                   |         
    0x0003ff9c ldr r1, [r4, 0x6c]                                |         r1 = *((r4 + 0x6c));
    0x0003ff9e blx 0x1ffec                                       |         fcn_0001ffec ();
    0x0003ffa2 ldr r3, [r4]                                      |         r3 = *(r4);
                                                                 |     }
    0x0003ffa4 add.w r3, r3, 0x2000                              |     r3 += case.0x5984c.0;
    0x0003ffa8 ldr.w r7, [r3, 0xda8]                             |     r7 = case.0x5984c.0;
    0x0003ffac movs r3, 0x2c                                     |     r3 = 0x2c;
    0x0003ffae mla r5, r3, r6, r5                                |     __asm ("mla r5, r3, r6, r5");
    0x0003ffb2 ldr r6, [r4, 0x7c]                                |     r6 = *((r4 + 0x7c));
    0x0003ffb4 ldrd lr, r8, [r7, 4]                              |     __asm ("ldrd lr, r8, [r7, 4]");
    0x0003ffb8 add.w r5, r5, 0x1a4                               |     r5 += case.0x5984c.0;
    0x0003ffbc ldm r5!, {r0, r1, r2, r3}                         |     r0 = *(r5!);
                                                                 |     r1 = *((r5! + 4));
                                                                 |     r2 = *((r5! + 8));
                                                                 |     r3 = *((r5! + 12));
    0x0003ffbe add.w r0, lr, 1                                   |     r0 = lr + 1;
    0x0003ffc2 lsls r0, r0, 4                                    |     r0 <<= 4;
    0x0003ffc4 stm r6!, {r0, r1, r2, r3}                         |     *(r6!) = r0;
                                                                 |     *((r6! + 4)) = r1;
                                                                 |     *((r6! + 8)) = r2;
                                                                 |     *((r6! + 12)) = r3;
    0x0003ffc6 ldr r3, [r5]                                      |     r3 = *(r5);
    0x0003ffc8 str r3, [r6]                                      |     *(r6) = r3;
                                                                 |     if (r0 >= r0) {
    0x0003ffca bhs.w 0x41fe2                                     |         goto label_79;
                                                                 |     }
    0x0003ffce ldr r3, [r7]                                      |     r3 = *(r7);
    0x0003ffd0 movs r2, 0xa                                      |     r2 = 0xa;
    0x0003ffd2 str.w ip, [r7, 4]                                 |     __asm ("str.w ip, [r7, 4]");
    0x0003ffd6 movs r1, 0                                        |     r1 = 0;
    0x0003ffd8 strb.w r2, [r3, lr]                               |     *((r3 + lr)) = r2;
    0x0003ffdc ldrd r2, r3, [r7]                                 |     __asm ("ldrd r2, r3, [r7]");
    0x0003ffe0 strb r1, [r2, r3]                                 |     *((r2 + r3)) = r1;
                                                                 | label_27:
    0x0003ffe2 ldr r3, [r4]                                      |     r3 = *(r4);
    0x0003ffe4 add.w r3, r3, 0x2000                              |     r3 += case.0x5984c.0;
    0x0003ffe8 ldr.w r2, [r3, 0xdb8]                             |     r2 = case.0x5984c.0;
    0x0003ffec cmp r2, 0                                         |     
                                                                 |     if (r2 == 0) {
    0x0003ffee beq.w 0x3f9ec                                     |         goto label_14;
                                                                 |     }
    0x0003fff2 ldr r1, [r4, 0x2c]                                |     r1 = *((r4 + 0x2c));
    0x0003fff4 cmp r1, 2                                         |     
                                                                 |     if (r1 > 2) {
    0x0003fff6 bhi.w 0x3f9ec                                     |         goto label_14;
                                                                 |     }
    0x0003fffa ldrd r1, r2, [r2]                                 |     __asm ("ldrd r1, r2, [r2]");
    0x0003fffe ldr.w r6, [r3, 0x1b4]                             |     r6 = case.0x5984c.0;
    0x00040000 str r4, [r6, 0x18]                                |     *((r6 + 0x18)) = r4;
    0x00040002 bl 0x1ffee                                        |     case_0x5984c_0 ();
    0x00040004 vtbl.8 d22, {d4}, d19                             |     __asm ("vtbl.8 d22, {d4}, d19");
    0x00040008 vrshl.u8 d15, d3, d0                              |     __asm ("vrshl.u8 d15, d3, d0");
    0x0004000c strh r0, [r0, r4]                                 |     *((r0 + r4)) = r0;
    0x0004000e ldr.w r0, [r3, 0xdb8]                             |     r0 = case.0x5984c.0;
    0x00040012 blx 0x1fc8c                                       |     fcn_0001fc8c ();
    0x00040016 b 0x3f9ec                                         |     goto label_14;
    0x00040018 ldr r2, [r4, 0x20]                                |     r2 = *((r4 + 0x20));
    0x0004001a cmp r2, 0                                         |     
                                                                 |     if (r2 > 0) {
    0x0004001c ble 0x4003a                                       |         
    0x0004001e ldr r3, [r4, 0x6c]                                |         r3 = *((r4 + 0x6c));
    0x00040020 ldr r1, [r4, 0xc]                                 |         r1 = *((r4 + 0xc));
    0x00040022 ldr r0, [r4, 0x14]                                |         r0 = *((r4 + 0x14));
    0x00040024 add r3, r2                                        |         r3 += r2;
    0x00040026 ldrb r3, [r3, -0x1]                               |         r3 = *((r3 - 0x1));
    0x0004002a ldr.w r1, [r0, r1, lsl 2]                         |         offset_11 = r1 << 2;
                                                                 |         r1 = *((r0 + offset_11));
    0x0004002e bl 0x1e3f12                                       |         case_0x5984c_0 (r0, r1, r3);
    0x00040030 vrshl.u64 q11, q10, q0                            |         __asm ("vrshl.u64 q11, q10, q0");
    0x00040034 usat sb, 0x1b, r3, lsl 1                          |         __asm ("usat sb, 0x1b, r3, lsl 1");
    0x00040038 str r3, [r1, 0x1c]                                |         *((r1 + 0x1c)) = r3;
                                                                 |     }
    0x0004003a ldr r1, [r4]                                      |     r1 = *(r4);
    0x0004003c ldrb r1, [r4, 5]                                  |     r1 = *((r4 + 5));
    0x0004003e invalid                                           |     
    0x00040042 bl 0xff942034                                     |     r0 = case_0x5984c_0 (r1, r3);
    0x00040046 movs r0, r0                                       |     
    0x00040048 ldrb r4, [r2, r6]                                 |     r4 = *((r2 + r6));
    0x0004004a cmp r3, 2                                         |     
    0x0004004c itt ls                                            |     
                                                                 |     if (r3 > 2) {
    0x0004004e movls r3, 0x2c                                    |         r3 = 0x2c;
                                                                 |     }
                                                                 |     if (r3 <= 2) {
    0x00040050 vrshlls q11, q10, q0                              |         __asm ("vrshlls q11, q10, q0");
                                                                 |     }
    0x00040054 mla r5, r8, r5, r1                                |     __asm ("mla r5, r8, r5, r1");
    0x00040058 itt ls                                            |     
                                                                 |     if (r3 > 2) {
    0x0004005a ldrls r0, [r3, 0x1b0]                             |         r0 = case.0x5984c.0;
                                                                 |     }
                                                                 |     if (r3 <= 2) {
    0x0004005e str.w pc, [r3, 0xfff]                             |         __asm ("str.w pc, case.0x5984c.0");
                                                                 |     }
    0x00040062 movs r0, r0                                       |     
    0x00040064 lsrs r0, r7, 0x16                                 |     r0 = r7 >> 0x16;
    0x00040066 ldr.w r3, [r5, 0x1b0]                             |     r3 = case.0x5984c.0;
    0x0004006a add r3, r2                                        |     r3 += r2;
    0x0004006c str.w r3, [r5, 0x1b0]                             |     __asm ("str.w r3, case.0x5984c.0");
    0x00040070 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00040072 beq.w 0x42052                                     |         goto label_80;
                                                                 |     }
    0x00040076 ldr r1, [r4, 0x6c]                                |     r1 = *((r4 + 0x6c));
    0x00040078 add.w r7, r5, 0x1a4                               |     r7 = r5 + case.0x5984c.0;
    0x0004007c blx 0x1ffec                                       |     fcn_0001ffec ();
    0x00040080 ldr r5, [r4]                                      |     r5 = *(r4);
    0x00040082 mov.w sb, 1                                       |     sb = 1;
    0x00040086 ldr r6, [r4, 0x7c]                                |     r6 = *((r4 + 0x7c));
    0x00040088 add.w ip, r5, 0x2000                              |     
    0x0004008c ldr.w r3, [ip, 0xd94]                             |     r3 = case.0x5984c.0;
    0x00040090 ldr.w lr, [ip, 0xdb8]                             |     
    0x00040094 mla r5, r8, r3, r5                                |     __asm ("mla r5, r8, r3, r5");
    0x00040098 ldm r7!, {r0, r1, r2, r3}                         |     r0 = *(r7!);
                                                                 |     r1 = *((r7! + 4));
                                                                 |     r2 = *((r7! + 8));
                                                                 |     r3 = *((r7! + 12));
    0x0004009a stm r6!, {r0, r1, r2, r3}                         |     *(r6!) = r0;
                                                                 |     *((r6! + 4)) = r1;
                                                                 |     *((r6! + 8)) = r2;
                                                                 |     *((r6! + 12)) = r3;
    0x0004009c ldr r3, [r7]                                      |     r3 = *(r7);
    0x0004009e str r3, [r6]                                      |     *(r6) = r3;
    0x000400a0 ldr.w r3, [r5, 0x1ac]                             |     r3 = case.0x5984c.0;
    0x000400a4 str.w sb, [r5, 0x1a8]                             |     __asm ("str.w sb, case.0x5984c.0");
    0x000400a8 str.w sb, [r5, 0x1b0]                             |     __asm ("str.w sb, case.0x5984c.0");
    0x000400ac add r3, sb                                        |     r3 += sb;
    0x000400ae str.w r3, [r5, 0x1a4]                             |     __asm ("str.w r3, case.0x5984c.0");
    0x000400b2 str.w r3, [r5, 0x1ac]                             |     __asm ("str.w r3, case.0x5984c.0");
    0x000400b6 cmp.w lr, 0                                       |     
                                                                 |     if (lr == 0) {
    0x000400ba beq.w 0x3f9ec                                     |         goto label_14;
                                                                 |     }
    0x000400be ldr r3, [r4, 0x2c]                                |     r3 = *((r4 + 0x2c));
    0x000400c0 cmp r3, 2                                         |     
                                                                 |     if (r3 > 2) {
    0x000400c2 bhi.w 0x3f9ec                                     |         goto label_14;
                                                                 |     }
    0x000400c6 ldrd r1, r2, [lr]                                 |     __asm ("ldrd r1, r2, [lr]");
    0x000400ca ldr.w r0, [ip, 0xdb4]                             |     r0 = case.0x5984c.0;
    0x000400ce blx 0x1ffec                                       |     fcn_0001ffec ();
    0x000400d2 ldr r3, [r4]                                      |     r3 = *(r4);
    0x000400d4 movs r1, 0                                        |     r1 = 0;
    0x000400d6 add.w r3, r3, 0x2000                              |     r3 += case.0x5984c.0;
    0x000400da ldr.w pc, [r3, 0xfb8]                             |     pc = case.0x5984c.0;
    0x000400de bl 0x2008e                                        |     case_0x5984c_0 ();
    0x000400e2 b 0x3f9ec                                         |     goto label_14;
    0x000400e4 asrs r2, r4, 0x14                                 |     r2 = r4 >> 0x14;
    0x000400e6 cmp r2, 0                                         |     
    0x000400e8 invalid                                           |     
    0x000400ea lsls r7, r7, 3                                    |     r7 <<= 3;
    0x000400ec ldr r1, [r4, 0xc]                                 |     r1 = *((r4 + 0xc));
    0x000400ee ldr r0, [r4, 0x14]                                |     r0 = *((r4 + 0x14));
    0x000400f0 add r3, r2                                        |     r3 += r2;
    0x000400f2 ldrb r3, [r3, -0x1]                               |     r3 = *((r3 - 0x1));
    0x000400f6 ldr.w r1, [r0, r1, lsl 2]                         |     offset_12 = r1 << 2;
                                                                 |     r1 = *((r0 + offset_12));
    0x000400fa sub.w r3, r3, 0xa                                 |     r3 -= 0xa;
    0x000400fe clz r3, r3                                        |     r3 &= r3;
    0x00040102 lsrs r3, r3, 5                                    |     r3 >>= 5;
    0x00040104 str r3, [r1, 0x1c]                                |     *((r1 + 0x1c)) = r3;
    0x00040106 ldr r5, [r4]                                      |     r5 = *(r4);
    0x00040108 ldr r3, [r4, 0x2c]                                |     r3 = *((r4 + 0x2c));
    0x0004010a add.w r0, r5, 0x2000                              |     r0 = r5 + case.0x5984c.0;
    0x0004010e mov r7, r5                                        |     r7 = r5;
    0x00040110 ldr.w r6, [r0, 0xd94]                             |     r6 = case.0x5984c.0;
    0x00040114 cmp r3, 2                                         |     
    0x00040116 it ls                                             |     
                                                                 |     if (r3 > 2) {
    0x00040118 movls r3, 0x2c                                    |         r3 = 0x2c;
                                                                 |     }
    0x0004011a ldr.w r0, [r0, 0xdb8]                             |     r0 = case.0x5984c.0;
    0x0004011e ittt ls                                           |     
                                                                 |     if (r3 <= 2) {
    0x00040120 mlals r3, r3, r6, r5                              |         __asm ("mlals r3, r3, r6, r5");
                                                                 |     }
                                                                 |     if (r3 > 2) {
    0x00040124 ldrls r1, [r3, 0x1b0]                             |         r1 = case.0x5984c.0;
                                                                 |     }
                                                                 |     if (r3 <= 2) {
    0x00040128 str.w r1, [r3, 0x1a8]                             |         __asm ("str.w r1, case.0x5984c.0");
                                                                 |     }
    0x0004012c movs r3, 0x2c                                     |     r3 = 0x2c;
    0x0004012e mla r3, r3, r6, r5                                |     __asm ("mla r3, r3, r6, r5");
    0x00040132 ldr.w r1, [r3, 0x1b0]                             |     r1 = case.0x5984c.0;
    0x00040136 add r1, r2                                        |     r1 += r2;
    0x00040138 str.w r1, [r3, 0x1b0]                             |     __asm ("str.w r1, case.0x5984c.0");
                                                                 |     if (r0 != 0) {
    0x0004013c cbz r0, 0x40146                                   |         
    0x0004013e ldr r1, [r4, 0x6c]                                |         r1 = *((r4 + 0x6c));
    0x00040140 blx 0x1ffec                                       |         fcn_0001ffec ();
    0x00040144 ldr r7, [r4]                                      |         r7 = *(r4);
                                                                 |     }
    0x00040146 movs r3, 0x2c                                     |     r3 = 0x2c;
    0x00040148 add.w r7, r7, 0x2000                              |     r7 += case.0x5984c.0;
    0x0004014c mla r5, r3, r6, r5                                |     __asm ("mla r5, r3, r6, r5");
    0x00040150 ldr r6, [r4, 0x7c]                                |     r6 = *((r4 + 0x7c));
    0x00040152 add.w r5, r5, 0x1a4                               |     r5 += case.0x5984c.0;
    0x00040156 ldm r5!, {r0, r1, r2, r3}                         |     r0 = *(r5!);
                                                                 |     r1 = *((r5! + 4));
                                                                 |     r2 = *((r5! + 8));
                                                                 |     r3 = *((r5! + 12));
    0x00040158 stm r6!, {r0, r1, r2, r3}                         |     *(r6!) = r0;
                                                                 |     *((r6! + 4)) = r1;
                                                                 |     *((r6! + 8)) = r2;
                                                                 |     *((r6! + 12)) = r3;
    0x0004015a movs r1, 0                                        |     r1 = 0;
    0x0004015c ldr r3, [r5]                                      |     r3 = *(r5);
    0x0004015e ldr.w r0, [r7, 0xda8]                             |     r0 = case.0x5984c.0;
    0x00040162 str r3, [r6]                                      |     *(r6) = r3;
    0x00040164 blx 0x1fc8c                                       |     fcn_0001fc8c ();
    0x00040168 mov r1, r4                                        |     r1 = r4;
    0x0004016a movs r0, 1                                        |     r0 = 1;
    0x0004016c bl 0x3f06c                                        |     fcn_0003f06c (r0, r1, r2);
    0x00040170 ldr r3, [r4]                                      |     r3 = *(r4);
    0x00040172 add.w r3, r3, 0x2000                              |     r3 += case.0x5984c.0;
    0x00040176 ldr.w r2, [r3, 0xdb8]                             |     r2 = case.0x5984c.0;
    0x0004017a cmp r2, 0                                         |     
                                                                 |     if (r2 == 0) {
    0x0004017c beq.w 0x3f9ec                                     |         goto label_14;
                                                                 |     }
    0x00040180 ldr r1, [r4, 0x2c]                                |     r1 = *((r4 + 0x2c));
    0x00040182 cmp r1, 2                                         |     
                                                                 |     if (r1 > 2) {
    0x00040184 bhi.w 0x3f9ec                                     |         goto label_14;
                                                                 |     }
    0x00040188 ldrd r1, r2, [r2]                                 |     __asm ("ldrd r1, r2, [r2]");
    0x0004018c ldr.w r0, [r3, 0xdb4]                             |     r0 = case.0x5984c.0;
    0x00040190 blx 0x1ffec                                       |     fcn_0001ffec ();
    0x00040194 ldr r3, [r4]                                      |     r3 = *(r4);
    0x00040196 movs r1, 0                                        |     r1 = 0;
    0x00040198 add.w r3, r3, 0x2000                              |     r3 += case.0x5984c.0;
    0x0004019c ldr.w r0, [r3, 0xdb8]                             |     r0 = case.0x5984c.0;
    0x000401a0 blx 0x1fc8c                                       |     fcn_0001fc8c ();
    0x000401a4 b 0x3f9ec                                         |     goto label_14;
    0x000401c8 ldr r2, [r4, 0x20]                                |     r2 = *((r4 + 0x20));
    0x000401ca cmp r2, 0                                         |     
                                                                 |     if (r2 > 0) {
    0x000401cc ble 0x401ea                                       |         
    0x000401ce ldr r3, [r4, 0x6c]                                |         r3 = *((r4 + 0x6c));
    0x000401d0 ldr r1, [r4, 0xc]                                 |         r1 = *((r4 + 0xc));
    0x000401d2 ldr r0, [r4, 0x14]                                |         r0 = *((r4 + 0x14));
    0x000401d4 add r3, r2                                        |         r3 += r2;
    0x000401d6 ldrb r3, [r3, -0x1]                               |         r3 = *((r3 - 0x1));
    0x000401da ldr.w r1, [r0, r1, lsl 2]                         |         offset_13 = r1 << 2;
                                                                 |         r1 = *((r0 + offset_13));
    0x000401de sub.w r3, r3, 0xa                                 |         r3 -= 0xa;
    0x000401e2 clz r3, r3                                        |         r3 &= r3;
    0x000401e6 lsrs r3, r3, 5                                    |         r3 >>= 5;
    0x000401e8 str r3, [r1, 0x1c]                                |         *((r1 + 0x1c)) = r3;
                                                                 |     }
    0x000401ea ldr r5, [r4]                                      |     r5 = *(r4);
    0x000401ec ldr r3, [r4, 0x2c]                                |     r3 = *((r4 + 0x2c));
    0x000401ee add.w r0, r5, 0x2000                              |     r0 = r5 + case.0x5984c.0;
    0x000401f2 ldr.w r6, [r0, 0xd94]                             |     r6 = case.0x5984c.0;
    0x000401f6 cmp r3, 2                                         |     
    0x000401f8 it ls                                             |     
                                                                 |     if (r3 > 2) {
    0x000401fa movls r3, 0x2c                                    |         r3 = 0x2c;
                                                                 |     }
    0x000401fc ldr.w r0, [r0, 0xdb8]                             |     r0 = case.0x5984c.0;
    0x00040200 ittt ls                                           |     
                                                                 |     if (r3 <= 2) {
    0x00040202 mlals r3, r3, r6, r5                              |         __asm ("mlals r3, r3, r6, r5");
                                                                 |     }
                                                                 |     if (r3 > 2) {
    0x00040206 ldrls r1, [r3, 0x1b0]                             |         r1 = case.0x5984c.0;
                                                                 |     }
                                                                 |     if (r3 <= 2) {
    0x0004020a str.w r1, [r3, 0x1a8]                             |         __asm ("str.w r1, case.0x5984c.0");
                                                                 |     }
    0x0004020c asrs r0, r5, 6                                    |     r0 = r5 >> 6;
    0x0004020e movs r3, 0x2c                                     |     r3 = 0x2c;
    0x00040210 mla r3, r3, r6, r5                                |     __asm ("mla r3, r3, r6, r5");
    0x00040214 ldr.w r1, [r3, 0x1b0]                             |     r1 = case.0x5984c.0;
    0x00040218 add r1, r2                                        |     r1 += r2;
    0x0004021a str.w r1, [r3, 0x1b0]                             |     __asm ("str.w r1, case.0x5984c.0");
    0x0004021e mov r3, r5                                        |     r3 = r5;
                                                                 |     if (r0 != 0) {
    0x00040220 cbz r0, 0x4022a                                   |         
    0x00040222 ldr r1, [r4, 0x6c]                                |         r1 = *((r4 + 0x6c));
    0x00040224 blx 0x1ffec                                       |         fcn_0001ffec ();
    0x00040228 ldr r3, [r4]                                      |         r3 = *(r4);
                                                                 |     }
    0x0004022a add.w r3, r3, 0x2000                              |     r3 += case.0x5984c.0;
    0x0004022e ldr.w r7, [r3, 0xda8]                             |     r7 = case.0x5984c.0;
    0x00040232 movs r3, 0x2c                                     |     r3 = 0x2c;
    0x00040234 mla r5, r3, r6, r5                                |     __asm ("mla r5, r3, r6, r5");
    0x00040238 ldr r6, [r4, 0x7c]                                |     r6 = *((r4 + 0x7c));
    0x0004023a ldrd lr, r8, [r7, 4]                              |     __asm ("ldrd lr, r8, [r7, 4]");
    0x0004023e add.w r5, r5, 0x1a4                               |     r5 += case.0x5984c.0;
    0x00040242 ldm r5!, {r0, r1, r2, r3}                         |     r0 = *(r5!);
                                                                 |     r1 = *((r5! + 4));
                                                                 |     r2 = *((r5! + 8));
                                                                 |     r3 = *((r5! + 12));
    0x00040244 add.w ip, lr, 1                                   |     
    0x00040248 cmp ip, r8                                        |     
    0x0004024a stm r6!, {r0, r1, r2, r3}                         |     *(r6!) = r0;
                                                                 |     *((r6! + 4)) = r1;
                                                                 |     *((r6! + 8)) = r2;
                                                                 |     *((r6! + 12)) = r3;
    0x0004024c ldr r3, [r5]                                      |     r3 = *(r5);
    0x0004024e str r3, [r6]                                      |     *(r6) = r3;
                                                                 |     if (ip >= r8) {
    0x00040250 bhs.w 0x420c6                                     |         goto label_81;
                                                                 |     }
    0x00040254 ldr r3, [r7]                                      |     r3 = *(r7);
    0x00040256 movs r2, 0xb                                      |     r2 = 0xb;
    0x00040258 str.w ip, [r7, 4]                                 |     __asm ("str.w ip, [r7, 4]");
    0x0004025c movs r1, 0                                        |     r1 = 0;
    0x0004025e strb.w r2, [r3, lr]                               |     *((r3 + lr)) = r2;
    0x00040262 ldrd r2, r3, [r7]                                 |     __asm ("ldrd r2, r3, [r7]");
    0x00040266 strb r1, [r2, r3]                                 |     *((r2 + r3)) = r1;
                                                                 | label_33:
    0x00040268 ldr r3, [r4]                                      |     r3 = *(r4);
    0x0004026a add.w r3, r3, 0x2000                              |     r3 += case.0x5984c.0;
    0x0004026e ldr.w r2, [r3, 0xdb8]                             |     r2 = case.0x5984c.0;
    0x00040272 cmp r2, 0                                         |     
                                                                 |     if (r2 == 0) {
    0x00040274 beq.w 0x3f9ec                                     |         goto label_14;
                                                                 |     }
    0x00040278 ldr r1, [r4, 0x2c]                                |     r1 = *((r4 + 0x2c));
    0x0004027a cmp r1, 2                                         |     
                                                                 |     if (r1 > 2) {
    0x0004027c bhi.w 0x3f9ec                                     |         goto label_14;
                                                                 |     }
    0x00040280 ldrd r1, r2, [r2]                                 |     __asm ("ldrd r1, r2, [r2]");
    0x00040284 ldr.w r0, [r3, 0xdb4]                             |     r0 = case.0x5984c.0;
    0x00040288 blx 0x1ffec                                       |     fcn_0001ffec ();
    0x0004028c ldr r3, [r4]                                      |     r3 = *(r4);
    0x0004028e movs r1, 0                                        |     r1 = 0;
    0x00040290 add.w r3, r3, 0x2000                              |     r3 += case.0x5984c.0;
    0x00040294 ldr.w r0, [r3, 0xdb8]                             |     r0 = case.0x5984c.0;
    0x00040298 blx 0x1fc8c                                       |     fcn_0001fc8c ();
    0x0004029c b.w 0x3f9ec                                       |     goto label_14;
    0x000402a0 ldr r2, [r4, 0x20]                                |     r2 = *((r4 + 0x20));
    0x000402a2 cmp r2, 0                                         |     
                                                                 |     if (r2 > 0) {
    0x000402a4 ble 0x402c2                                       |         
    0x000402a6 ldr r3, [r4, 0x6c]                                |         r3 = *((r4 + 0x6c));
    0x000402a8 ldr r1, [r4, 0xc]                                 |         r1 = *((r4 + 0xc));
    0x000402aa ldr r0, [r4, 0x14]                                |         r0 = *((r4 + 0x14));
    0x000402ac add r3, r2                                        |         r3 += r2;
    0x000402ae ldrb r3, [r3, -0x1]                               |         r3 = *((r3 - 0x1));
    0x000402b2 ldr.w r1, [r0, r1, lsl 2]                         |         offset_14 = r1 << 2;
                                                                 |         r1 = *((r0 + offset_14));
    0x000402b6 sub.w r3, r3, 0xa                                 |         r3 -= 0xa;
    0x000402ba clz r3, r3                                        |         r3 &= r3;
    0x000402be lsrs r3, r3, 5                                    |         r3 >>= 5;
    0x000402c0 str r3, [r1, 0x1c]                                |         *((r1 + 0x1c)) = r3;
                                                                 |     }
    0x000402c2 ldr r5, [r4]                                      |     r5 = *(r4);
    0x000402c4 ldr r3, [r4, 0x2c]                                |     r3 = *((r4 + 0x2c));
    0x000402c6 add.w r0, r5, 0x2000                              |     r0 = r5 + case.0x5984c.0;
    0x000402ca ldr.w r6, [r0, 0xd94]                             |     r6 = case.0x5984c.0;
    0x000402ce cmp r3, 2                                         |     
    0x000402d0 it ls                                             |     
                                                                 |     if (r3 > 2) {
    0x000402d2 movls r3, 0x2c                                    |         r3 = 0x2c;
                                                                 |     }
    0x000402d4 ldr.w r0, [r0, 0xdb8]                             |     r0 = case.0x5984c.0;
    0x000402d8 ittt ls                                           |     
                                                                 |     if (r3 <= 2) {
    0x000402da mlals r3, r3, r6, r5                              |         __asm ("mlals r3, r3, r6, r5");
                                                                 |     }
                                                                 |     if (r3 > 2) {
    0x000402de ldrls r1, [r3, 0x1b0]                             |         r1 = case.0x5984c.0;
                                                                 |     }
                                                                 |     if (r3 <= 2) {
    0x000402e2 str.w r1, [r3, 0x1a8]                             |         __asm ("str.w r1, case.0x5984c.0");
                                                                 |     }
    0x000402e6 movs r3, 0x2c                                     |     r3 = 0x2c;
    0x000402e8 mla r3, r3, r6, r5                                |     __asm ("mla r3, r3, r6, r5");
    0x000402ec ldr.w r1, [r3, 0x1b0]                             |     r1 = case.0x5984c.0;
    0x000402f0 add r1, r2                                        |     r1 += r2;
    0x000402f2 str.w r1, [r3, 0x1b0]                             |     __asm ("str.w r1, case.0x5984c.0");
    0x000402f6 mov r3, r5                                        |     r3 = r5;
                                                                 |     if (r0 != 0) {
    0x000402f8 cbz r0, 0x40302                                   |         
    0x000402fa ldr r1, [r4, 0x6c]                                |         r1 = *((r4 + 0x6c));
    0x000402fc blx 0x1ffec                                       |         fcn_0001ffec ();
    0x00040300 ldr r3, [r4]                                      |         r3 = *(r4);
                                                                 |     }
    0x00040302 add.w r3, r3, 0x2000                              |     r3 += case.0x5984c.0;
    0x00040306 ldr.w r7, [r3, 0xda8]                             |     r7 = case.0x5984c.0;
    0x0004030a movs r3, 0x2c                                     |     r3 = 0x2c;
    0x0004030c mla r5, r3, r6, r5                                |     __asm ("mla r5, r3, r6, r5");
    0x00040310 ldr r6, [r4, 0x7c]                                |     r6 = *((r4 + 0x7c));
    0x00040312 ldrd lr, r8, [r7, 4]                              |     __asm ("ldrd lr, r8, [r7, 4]");
    0x00040316 add.w r5, r5, 0x1a4                               |     r5 += case.0x5984c.0;
    0x0004031a ldm r5!, {r0, r1, r2, r3}                         |     r0 = *(r5!);
                                                                 |     r1 = *((r5! + 4));
                                                                 |     r2 = *((r5! + 8));
                                                                 |     r3 = *((r5! + 12));
    0x0004031c add.w ip, lr, 1                                   |     
    0x00040320 cmp ip, r8                                        |     
    0x00040322 stm r6!, {r0, r1, r2, r3}                         |     *(r6!) = r0;
                                                                 |     *((r6! + 4)) = r1;
                                                                 |     *((r6! + 8)) = r2;
                                                                 |     *((r6! + 12)) = r3;
    0x00040324 ldr r3, [r5]                                      |     r3 = *(r5);
    0x00040326 str r3, [r6]                                      |     *(r6) = r3;
                                                                 |     if (ip >= r8) {
    0x00040328 bhs.w 0x41f4c                                     |         goto label_82;
                                                                 |     }
    0x0004032c ldr r3, [r7]                                      |     r3 = *(r7);
    0x0004032e movs r2, 7                                        |     r2 = 7;
    0x00040330 str.w ip, [r7, 4]                                 |     __asm ("str.w ip, [r7, 4]");
    0x00040334 movs r1, 0                                        |     r1 = 0;
    0x00040336 strb.w r2, [r3, lr]                               |     *((r3 + lr)) = r2;
    0x0004033a ldrd r2, r3, [r7]                                 |     __asm ("ldrd r2, r3, [r7]");
    0x0004033e strb r1, [r2, r3]                                 |     *((r2 + r3)) = r1;
                                                                 | label_24:
    0x00040340 ldr r3, [r4]                                      |     r3 = *(r4);
    0x00040342 add.w r3, r3, 0x2000                              |     r3 += case.0x5984c.0;
    0x00040346 ldr.w r2, [r3, 0xdb8]                             |     r2 = case.0x5984c.0;
    0x0004034a cmp r2, 0                                         |     
                                                                 |     if (r2 == 0) {
    0x0004034c beq.w 0x3f9ec                                     |         goto label_14;
                                                                 |     }
    0x00040350 ldr r1, [r4, 0x2c]                                |     r1 = *((r4 + 0x2c));
    0x00040352 cmp r1, 2                                         |     
                                                                 |     if (r1 > 2) {
    0x00040354 bhi.w 0x3f9ec                                     |         goto label_14;
                                                                 |     }
    0x00040358 ldrd r1, r2, [r2]                                 |     __asm ("ldrd r1, r2, [r2]");
    0x0004035c ldr.w r0, [r3, 0xdb4]                             |     r0 = case.0x5984c.0;
    0x00040360 blx 0x1ffec                                       |     fcn_0001ffec ();
    0x00040364 ldr r3, [r4]                                      |     r3 = *(r4);
    0x00040366 movs r1, 0                                        |     r1 = 0;
    0x00040368 add.w r3, r3, 0x2000                              |     r3 += case.0x5984c.0;
    0x0004036c ldr.w r0, [r3, 0xdb8]                             |     r0 = case.0x5984c.0;
    0x00040370 blx 0x1fc8c                                       |     fcn_0001fc8c ();
    0x00040374 b.w 0x3f9ec                                       |     goto label_14;
    0x00040378 ldrb r2, [r4, 0x18]                               |     r2 = *((r4 + 0x18));
    0x0004037a ldr r3, [r4, 0x6c]                                |     r3 = *((r4 + 0x6c));
    0x0004037c strb r2, [r5]                                     |     *(r5) = r2;
    0x0004037e ldr r2, [r4, 0x14]                                |     r2 = *((r4 + 0x14));
    0x00040380 subs r3, r5, r3                                   |     r3 = r5 - r3;
    0x00040382 ldr r1, [r4, 0xc]                                 |     r1 = *((r4 + 0xc));
    0x00040384 subs r3, 1                                        |     r3--;
    0x00040386 ldr.w r1, [r2, r1, lsl 2]                         |     offset_15 = r1 << 2;
                                                                 |     r1 = *((r2 + offset_15));
    0x0004038a ldr r2, [r1, 0x2c]                                |     r2 = *((r1 + 0x2c));
    0x0004038c cmp r2, 0                                         |     
                                                                 |     if (r2 != 0) {
    0x0004038e bne.w 0x41ec4                                     |         goto label_83;
                                                                 |     }
    0x00040392 ldr r2, [r4, 4]                                   |     r2 = *((r4 + 4));
    0x00040394 ldr r0, [r1, 0x10]                                |     r0 = *((r1 + 0x10));
    0x00040396 str r0, [r4, 0x1c]                                |     *((r4 + 0x1c)) = r0;
    0x00040398 str r2, [r1]                                      |     *(r1) = r2;
    0x0004039a str.w sl, [r1, 0x2c]                              |     __asm ("str.w sl, [r1, 0x2c]");
    0x0004039c adr r0, 0xb0                                      |     r0 = 0xb0;
                                                                 | label_20:
    0x0004039e ldr r1, [r1, 4]                                   |     r1 = *((r1 + 4));
    0x000403a0 ldr r2, [r4, 0x24]                                |     r2 = *((r4 + 0x24));
    0x000403a2 add r1, r0                                        |     r1 += r0;
    0x000403a4 cmp r2, r1                                        |     
                                                                 |     if (r2 < r1) {
    0x000403a6 bls.w 0x42158                                     |         goto label_84;
                                                                 |     }
    0x000403aa mov r0, r4                                        |     r0 = r4;
    0x000403ac str r3, [sp, 0xc]                                 |     var_ch = r3;
    0x000403ae bl 0x3f0f0                                        |     r0 = fcn_0003f0f0 (r0, r1, r2, r3, r4, r5, r6);
    0x000403b2 cmp r0, 1                                         |     
                                                                 |     if (r0 == 1) {
    0x000403b4 beq.w 0x42140                                     |         goto label_85;
                                                                 |     }
    0x000403b8 cmp r0, 2                                         |     
    0x000403ba ldr r3, [sp, 0xc]                                 |     r3 = var_ch;
    0x000403bc ldr.w sb, [sp, 4]                                 |     sb = var_4h;
                                                                 |     if (r0 == 2) {
    0x000403c0 beq.w 0x4211a                                     |         goto label_86;
                                                                 |     }
    0x000403c4 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x000403c6 bne.w 0x3f9ec                                     |         goto label_14;
                                                                 |     }
    0x000403ca ldr r7, [r4, 0x6c]                                |     r7 = *((r4 + 0x6c));
    0x000403cc mov r0, r4                                        |     r0 = r4;
    0x000403ce add.w r8, r7, r3                                  |     r8 = r7 + r3;
    0x000403d2 str.w r8, [r4, 0x24]                              |     __asm ("str.w r8, [r4, 0x24]");
    0x000403d6 bl 0x3e81c                                        |     r0 = fcn_0003e81c (r0, r1);
    0x000403da mov r6, r0                                        |     r6 = r0;
                                                                 | label_38:
    0x000403dc ldr.w ip, [r4, 0x54]                              |     ip = *((r4 + 0x54));
    0x000403e0 b.w 0x3f69a                                       |     goto label_15;
    0x000403e4 ldr r2, [r4, 0x20]                                |     r2 = *((r4 + 0x20));
    0x000403e6 ldr r7, [r4, 0x6c]                                |     r7 = *((r4 + 0x6c));
    0x000403e8 cmp r2, 0                                         |     
                                                                 |     if (r2 > 0) {
    0x000403ea ble 0x40406                                       |         
    0x000403ec ldr r3, [r4, 0x14]                                |         r3 = *((r4 + 0x14));
    0x000403ee ldr r1, [r4, 0xc]                                 |         r1 = *((r4 + 0xc));
    0x000403f0 ldr.w r1, [r3, r1, lsl 2]                         |         offset_16 = r1 << 2;
                                                                 |         r1 = *((r3 + offset_16));
    0x000403f4 adds r3, r7, r2                                   |         r3 = r7 + r2;
    0x000403f6 ldrb r3, [r3, -0x1]                               |         r3 = *((r3 - 0x1));
    0x000403fa sub.w r3, r3, 0xa                                 |         r3 -= 0xa;
    0x000403fe clz r3, r3                                        |         r3 &= r3;
    0x00040402 lsrs r3, r3, 5                                    |         r3 >>= 5;
    0x00040404 str r3, [r1, 0x1c]                                |         *((r1 + 0x1c)) = r3;
                                                                 |     }
    0x00040406 ldr r6, [r4]                                      |     r6 = *(r4);
    0x00040408 ldr r3, [r4, 0x2c]                                |     r3 = *((r4 + 0x2c));
    0x0004040a add.w r1, r6, 0x2000                              |     r1 = r6 + case.0x5984c.0;
    0x0004040e ldr.w r8, [r1, 0xd94]                             |     r8 = case.0x5984c.0;
    0x00040412 cmp r3, 2                                         |     
    0x00040414 itttt ls                                          |     
                                                                 |     if (r3 > 2) {
    0x00040416 movls r3, 0x2c                                    |         r3 = 0x2c;
                                                                 |     }
                                                                 |     if (r3 <= 2) {
    0x00040418 mlals r3, r3, r8, r6                              |         __asm ("mlals r3, r3, r8, r6");
                                                                 |     }
                                                                 |     if (r3 > 2) {
    0x0004041c ldrls r0, [r3, 0x1b0]                             |         r0 = case.0x5984c.0;
                                                                 |     }
                                                                 |     if (r3 <= 2) {
    0x00040420 str.w r0, [r3, 0x1a8]                             |         __asm ("str.w r0, case.0x5984c.0");
                                                                 |     }
    0x00040424 movs r3, 0x2c                                     |     r3 = 0x2c;
    0x00040426 mla r3, r3, r8, r6                                |     __asm ("mla r3, r3, r8, r6");
    0x0004042a ldr.w r0, [r1, 0xdb8]                             |     r0 = case.0x5984c.0;
    0x0004042e ldr.w r1, [r3, 0x1b0]                             |     r1 = case.0x5984c.0;
    0x00040432 add r1, r2                                        |     r1 += r2;
    0x00040434 str.w r1, [r3, 0x1b0]                             |     __asm ("str.w r1, case.0x5984c.0");
                                                                 |     if (r0 != 0) {
    0x00040438 cbz r0, 0x40442                                   |         
    0x0004043a mov r1, r7                                        |         r1 = r7;
    0x0004043c blx 0x1ffec                                       |         fcn_0001ffec ();
    0x00040440 ldr r7, [r4, 0x6c]                                |         r7 = *((r4 + 0x6c));
                                                                 |     }
    0x00040442 movs r3, 0x2c                                     |     r3 = 0x2c;
    0x00040444 ldr r5, [r4, 0x7c]                                |     r5 = *((r4 + 0x7c));
    0x00040446 mla r4, r3, r8, r6                                |     __asm ("mla r4, r3, r8, r6");
    0x0004044a add.w r4, r4, 0x1a4                               |     r4 += case.0x5984c.0;
    0x0004044e ldm r4!, {r0, r1, r2, r3}                         |     r0 = *(r4!);
                                                                 |     r1 = *((r4! + 4));
                                                                 |     r2 = *((r4! + 8));
                                                                 |     r3 = *((r4! + 12));
    0x00040450 stm r5!, {r0, r1, r2, r3}                         |     *(r5!) = r0;
                                                                 |     *((r5! + 4)) = r1;
                                                                 |     *((r5! + 8)) = r2;
                                                                 |     *((r5! + 12)) = r3;
    0x00040452 ldr r3, [r4]                                      |     r3 = *(r4);
    0x00040454 str r3, [r5]                                      |     *(r5) = r3;
    0x00040456 ldrb r5, [r7]                                     |     r5 = *(r7);
    0x00040458 b.w 0x3f820                                       |     goto label_11;
    0x0004045c ldr r2, [r4, 0x20]                                |     r2 = *((r4 + 0x20));
    0x0004045e cmp r2, 0                                         |     
                                                                 |     if (r2 > 0) {
    0x00040460 ble 0x4047e                                       |         
    0x00040462 ldr r3, [r4, 0x6c]                                |         r3 = *((r4 + 0x6c));
    0x00040464 ldr r1, [r4, 0xc]                                 |         r1 = *((r4 + 0xc));
    0x00040466 ldr r0, [r4, 0x14]                                |         r0 = *((r4 + 0x14));
    0x00040468 add r3, r2                                        |         r3 += r2;
    0x0004046a ldrb r3, [r3, -0x1]                               |         r3 = *((r3 - 0x1));
    0x0004046e ldr.w r1, [r0, r1, lsl 2]                         |         offset_17 = r1 << 2;
                                                                 |         r1 = *((r0 + offset_17));
    0x00040472 sub.w r3, r3, 0xa                                 |         r3 -= 0xa;
    0x00040476 clz r3, r3                                        |         r3 &= r3;
    0x0004047a lsrs r3, r3, 5                                    |         r3 >>= 5;
    0x0004047c str r3, [r1, 0x1c]                                |         *((r1 + 0x1c)) = r3;
                                                                 |     }
    0x0004047e ldr r5, [r4]                                      |     r5 = *(r4);
    0x00040480 ldr r3, [r4, 0x2c]                                |     r3 = *((r4 + 0x2c));
    0x00040482 add.w r0, r5, 0x2000                              |     r0 = r5 + case.0x5984c.0;
    0x00040486 ldr.w r6, [r0, 0xd94]                             |     r6 = case.0x5984c.0;
    0x0004048a cmp r3, 2                                         |     
    0x0004048c it ls                                             |     
                                                                 |     if (r3 > 2) {
    0x0004048e movls r3, 0x2c                                    |         r3 = 0x2c;
                                                                 |     }
    0x00040490 ldr.w r0, [r0, 0xdb8]                             |     r0 = case.0x5984c.0;
    0x00040494 ittt ls                                           |     
                                                                 |     if (r3 <= 2) {
    0x00040496 mlals r3, r3, r6, r5                              |         __asm ("mlals r3, r3, r6, r5");
                                                                 |     }
                                                                 |     if (r3 > 2) {
    0x0004049a ldrls r1, [r3, 0x1b0]                             |         r1 = case.0x5984c.0;
                                                                 |     }
                                                                 |     if (r3 <= 2) {
    0x0004049e str.w r1, [r3, 0x1a8]                             |         __asm ("str.w r1, case.0x5984c.0");
                                                                 |     }
    0x000404a2 movs r3, 0x2c                                     |     r3 = 0x2c;
    0x000404a4 mla r3, r3, r6, r5                                |     __asm ("mla r3, r3, r6, r5");
    0x000404a8 ldr.w r1, [r3, 0x1b0]                             |     r1 = case.0x5984c.0;
    0x000404ac add r1, r2                                        |     r1 += r2;
    0x000404ae str.w r1, [r3, 0x1b0]                             |     __asm ("str.w r1, case.0x5984c.0");
    0x000404b2 mov r3, r5                                        |     r3 = r5;
                                                                 |     if (r0 != 0) {
    0x000404b4 cbz r0, 0x404be                                   |         
    0x000404b6 ldr r1, [r4, 0x6c]                                |         r1 = *((r4 + 0x6c));
    0x000404b8 blx 0x1ffec                                       |         fcn_0001ffec ();
    0x000404bc ldr r3, [r4]                                      |         r3 = *(r4);
                                                                 |     }
    0x000404be add.w r3, r3, 0x2000                              |     r3 += case.0x5984c.0;
    0x000404c2 ldr.w r7, [r3, 0xda8]                             |     r7 = case.0x5984c.0;
    0x000404c6 movs r3, 0x2c                                     |     r3 = 0x2c;
    0x000404c8 mla r5, r3, r6, r5                                |     __asm ("mla r5, r3, r6, r5");
    0x000404cc ldr r6, [r4, 0x7c]                                |     r6 = *((r4 + 0x7c));
    0x000404ce ldrd lr, r8, [r7, 4]                              |     __asm ("ldrd lr, r8, [r7, 4]");
    0x000404d0 invalid                                           |     
    0x000404d4 strb r2, [r2, 0x17]                               |     *((r2 + 0x17)) = r2;
    0x000404d6 ldm r5!, {r0, r1, r2, r3}                         |     r0 = *(r5!);
                                                                 |     r1 = *((r5! + 4));
                                                                 |     r2 = *((r5! + 8));
                                                                 |     r3 = *((r5! + 12));
    0x000404d8 add.w ip, lr, 1                                   |     
    0x000404dc cmp ip, r8                                        |     
    0x000404de stm r6!, {r0, r1, r2, r3}                         |     *(r6!) = r0;
                                                                 |     *((r6! + 4)) = r1;
                                                                 |     *((r6! + 8)) = r2;
                                                                 |     *((r6! + 12)) = r3;
    0x000404e0 ldr r3, [r5]                                      |     r3 = *(r5);
    0x000404e2 str r3, [r6]                                      |     *(r6) = r3;
                                                                 |     if (ip >= r8) {
    0x000404e4 bhs.w 0x41f3c                                     |         goto label_87;
                                                                 |     }
    0x000404e8 ldr r3, [r7]                                      |     r3 = *(r7);
    0x000404ea movs r2, 0xd                                      |     r2 = 0xd;
    0x000404ec str.w ip, [r7, 4]                                 |     __asm ("str.w ip, [r7, 4]");
    0x000404f0 movs r1, 0                                        |     r1 = 0;
    0x000404f2 strb.w r2, [r3, lr]                               |     *((r3 + lr)) = r2;
    0x000404f6 ldrd r2, r3, [r7]                                 |     __asm ("ldrd r2, r3, [r7]");
    0x000404fa strb r1, [r2, r3]                                 |     *((r2 + r3)) = r1;
                                                                 | label_23:
    0x000404fc ldr r3, [r4]                                      |     r3 = *(r4);
    0x000404fe add.w r3, r3, 0x2000                              |     r3 += case.0x5984c.0;
    0x00040502 ldr.w r2, [r3, 0xdb8]                             |     r2 = case.0x5984c.0;
    0x00040506 cmp r2, 0                                         |     
                                                                 |     if (r2 == 0) {
    0x00040508 beq.w 0x3f9ec                                     |         goto label_14;
                                                                 |     }
    0x0004050c ldr r1, [r4, 0x2c]                                |     r1 = *((r4 + 0x2c));
    0x0004050e cmp r1, 2                                         |     
                                                                 |     if (r1 > 2) {
    0x00040510 bhi.w 0x3f9ec                                     |         goto label_14;
                                                                 |     }
    0x00040514 ldrd r1, r2, [r2]                                 |     __asm ("ldrd r1, r2, [r2]");
    0x00040518 ldr.w r0, [r3, 0xdb4]                             |     r0 = case.0x5984c.0;
    0x0004051c blx 0x1ffec                                       |     fcn_0001ffec ();
    0x00040520 ldr r3, [r4]                                      |     r3 = *(r4);
    0x00040522 movs r1, 0                                        |     r1 = 0;
    0x00040524 add.w r3, r3, 0x2000                              |     r3 += case.0x5984c.0;
    0x00040528 ldr.w r0, [r3, 0xdb8]                             |     r0 = case.0x5984c.0;
    0x0004052c blx 0x1fc8c                                       |     fcn_0001fc8c ();
    0x00040530 b.w 0x3f9ec                                       |     goto label_14;
    0x00040534 ldr r2, [r4, 0x20]                                |     r2 = *((r4 + 0x20));
    0x00040536 ldr.w ip, [r4, 0x6c]                              |     ip = *((r4 + 0x6c));
    0x0004053a cmp r2, 0                                         |     
                                                                 |     if (r2 > 0) {
    0x0004053c ble 0x4055a                                       |         
    0x0004053e ldr r3, [r4, 0x14]                                |         r3 = *((r4 + 0x14));
    0x00040540 ldr r1, [r4, 0xc]                                 |         r1 = *((r4 + 0xc));
    0x00040542 ldr.w r1, [r3, r1, lsl 2]                         |         offset_18 = r1 << 2;
                                                                 |         r1 = *((r3 + offset_18));
    0x00040546 add.w r3, ip, r2                                  |         r3 = ip + r2;
    0x0004054a ldrb r3, [r3, -0x1]                               |         r3 = *((r3 - 0x1));
    0x0004054e sub.w r3, r3, 0xa                                 |         r3 -= 0xa;
    0x00040552 clz r3, r3                                        |         r3 &= r3;
    0x00040556 lsrs r3, r3, 5                                    |         r3 >>= 5;
    0x00040558 str r3, [r1, 0x1c]                                |         *((r1 + 0x1c)) = r3;
                                                                 |     }
    0x0004055a ldr r5, [r4]                                      |     r5 = *(r4);
    0x0004055c ldr r3, [r4, 0x2c]                                |     r3 = *((r4 + 0x2c));
    0x0004055e add.w r0, r5, 0x2000                              |     r0 = r5 + case.0x5984c.0;
    0x00040562 ldr.w r6, [r0, 0xd94]                             |     r6 = case.0x5984c.0;
    0x00040566 cmp r3, 2                                         |     
    0x00040568 it ls                                             |     
                                                                 |     if (r3 > 2) {
    0x0004056a movls r3, 0x2c                                    |         r3 = 0x2c;
                                                                 |     }
    0x0004056c ldr.w r0, [r0, 0xdb8]                             |     r0 = case.0x5984c.0;
    0x00040570 ittt ls                                           |     
                                                                 |     if (r3 <= 2) {
    0x00040572 mlals r3, r3, r6, r5                              |         __asm ("mlals r3, r3, r6, r5");
                                                                 |     }
                                                                 |     if (r3 > 2) {
    0x00040576 ldrls r1, [r3, 0x1b0]                             |         r1 = case.0x5984c.0;
                                                                 |     }
                                                                 |     if (r3 <= 2) {
    0x0004057a str.w r1, [r3, 0x1a8]                             |         __asm ("str.w r1, case.0x5984c.0");
                                                                 |     }
    0x0004057e movs r3, 0x2c                                     |     r3 = 0x2c;
    0x00040580 mla r3, r3, r6, r5                                |     __asm ("mla r3, r3, r6, r5");
    0x00040584 ldr.w r1, [r3, 0x1b0]                             |     r1 = case.0x5984c.0;
    0x00040588 add r1, r2                                        |     r1 += r2;
    0x0004058a str.w r1, [r3, 0x1b0]                             |     __asm ("str.w r1, case.0x5984c.0");
    0x0004058e mov r3, r5                                        |     r3 = r5;
                                                                 |     if (r0 != 0) {
    0x00040590 cbz r0, 0x4059e                                   |         
    0x00040592 mov r1, ip                                        |         r1 = ip;
    0x00040594 blx 0x1ffec                                       |         fcn_0001ffec ();
    0x00040598 ldr r3, [r4]                                      |         r3 = *(r4);
    0x0004059a ldr.w ip, [r4, 0x6c]                              |         ip = *((r4 + 0x6c));
                                                                 |     }
    0x0004059e add.w r3, r3, 0x2000                              |     r3 += case.0x5984c.0;
    0x000405a2 ldr.w r7, [r3, 0xda8]                             |     r7 = case.0x5984c.0;
    0x000405a6 movs r3, 0x2c                                     |     r3 = 0x2c;
    0x000405a8 mla r5, r3, r6, r5                                |     __asm ("mla r5, r3, r6, r5");
    0x000405ac ldr r6, [r4, 0x7c]                                |     r6 = *((r4 + 0x7c));
    0x000405ae add.w r5, r5, 0x1a4                               |     r5 += case.0x5984c.0;
    0x000405b2 ldm r5!, {r0, r1, r2, r3}                         |     r0 = *(r5!);
                                                                 |     r1 = *((r5! + 4));
                                                                 |     r2 = *((r5! + 8));
                                                                 |     r3 = *((r5! + 12));
    0x000405b4 stm r6!, {r0, r1, r2, r3}                         |     *(r6!) = r0;
                                                                 |     *((r6! + 4)) = r1;
                                                                 |     *((r6! + 8)) = r2;
                                                                 |     *((r6! + 12)) = r3;
    0x000405b6 movs r2, 8                                        |     r2 = 8;
    0x000405b8 ldr r3, [r5]                                      |     r3 = *(r5);
    0x000405ba movs r1, 0                                        |     r1 = 0;
    0x000405bc add.w r0, ip, 2                                   |     r0 = ip + 2;
    0x000405c0 str r3, [r6]                                      |     *(r6) = r3;
    0x000405c2 blx 0x1faa0                                       |     r0 = fcn_0001faa0 ();
    0x000405c6 uxtb r2, r0                                       |     r2 = (int8_t) r0;
    0x000405c8 ldrd r3, r0, [r7, 4]                              |     __asm ("ldrd r3, r0, [r7, 4]");
    0x000405cc adds r1, r3, 1                                    |     r1 = r3 + 1;
    0x000405ce cmp r1, r0                                        |     
                                                                 |     if (r1 >= r0) {
    0x000405d0 bhs.w 0x42044                                     |         goto label_88;
                                                                 |     }
    0x000405d4 str r1, [r7, 4]                                   |     *((r7 + 4)) = r1;
    0x000405d6 ldr r1, [r7]                                      |     r1 = *(r7);
    0x000405d8 strb r2, [r1, r3]                                 |     *((r1 + r3)) = r2;
    0x000405da movs r1, 0                                        |     r1 = 0;
    0x000405dc ldrd r2, r3, [r7]                                 |     __asm ("ldrd r2, r3, [r7]");
    0x000405e0 strb r1, [r2, r3]                                 |     *((r2 + r3)) = r1;
                                                                 | label_30:
    0x000405e2 ldr r3, [r4]                                      |     r3 = *(r4);
    0x000405e4 add.w r3, r3, 0x2000                              |     r3 += case.0x5984c.0;
    0x000405e8 ldr.w r2, [r3, 0xdb8]                             |     r2 = case.0x5984c.0;
    0x000405ec cmp r2, 0                                         |     
                                                                 |     if (r2 == 0) {
    0x000405ee beq.w 0x3f9ec                                     |         goto label_14;
                                                                 |     }
    0x000405f2 ldr r1, [r4, 0x2c]                                |     r1 = *((r4 + 0x2c));
    0x000405f4 cmp r1, 2                                         |     
                                                                 |     if (r1 > 2) {
    0x000405f6 bhi.w 0x3f9ec                                     |         goto label_14;
                                                                 |     }
    0x000405fa ldrd r1, r2, [r2]                                 |     __asm ("ldrd r1, r2, [r2]");
    0x000405fe ldr.w r0, [r3, 0xdb4]                             |     r0 = case.0x5984c.0;
    0x00040602 blx 0x1ffec                                       |     fcn_0001ffec ();
    0x00040606 ldr r3, [r4]                                      |     r3 = *(r4);
    0x00040608 movs r1, 0                                        |     r1 = 0;
    0x0004060a add.w r3, r3, 0x2000                              |     r3 += case.0x5984c.0;
    0x0004060e ldr.w r0, [r3, 0xdb8]                             |     r0 = case.0x5984c.0;
    0x00040612 blx 0x1fc8c                                       |     fcn_0001fc8c ();
    0x00040616 b.w 0x3f9ec                                       |     goto label_14;
    0x0004061a ldr r2, [r4, 0x20]                                |     r2 = *((r4 + 0x20));
    0x0004061c cmp r2, 0                                         |     
                                                                 |     if (r2 > 0) {
    0x0004061e ble 0x4063c                                       |         
    0x00040620 ldr r3, [r4, 0x6c]                                |         r3 = *((r4 + 0x6c));
    0x00040622 ldr r0, [r4, 0xc]                                 |         r0 = *((r4 + 0xc));
    0x00040624 ldr r1, [r4, 0x14]                                |         r1 = *((r4 + 0x14));
    0x00040626 add r3, r2                                        |         r3 += r2;
    0x00040628 ldrb r3, [r3, -0x1]                               |         r3 = *((r3 - 0x1));
    0x0004062c ldr.w r1, [r1, r0, lsl 2]                         |         offset_19 = r0 << 2;
                                                                 |         r1 = *((r1 + offset_19));
    0x00040630 sub.w r3, r3, 0xa                                 |         r3 -= 0xa;
    0x00040634 clz r3, r3                                        |         r3 &= r3;
    0x00040638 lsrs r3, r3, 5                                    |         r3 >>= 5;
    0x0004063a str r3, [r1, 0x1c]                                |         *((r1 + 0x1c)) = r3;
                                                                 |     }
    0x0004063c ldr r5, [r4]                                      |     r5 = *(r4);
    0x0004063e ldr r3, [r4, 0x2c]                                |     r3 = *((r4 + 0x2c));
    0x00040640 add.w r1, r5, 0x2000                              |     r1 = r5 + case.0x5984c.0;
    0x00040644 ldr.w r7, [r1, 0xd94]                             |     r7 = case.0x5984c.0;
    0x00040648 cmp r3, 2                                         |     
    0x0004064a itttt ls                                          |     
                                                                 |     if (r3 > 2) {
    0x0004064c movls r3, 0x2c                                    |         r3 = 0x2c;
                                                                 |     }
                                                                 |     if (r3 <= 2) {
    0x0004064e mlals r3, r3, r7, r5                              |         __asm ("mlals r3, r3, r7, r5");
                                                                 |     }
                                                                 |     if (r3 > 2) {
    0x00040652 ldrls r0, [r3, 0x1b0]                             |         r0 = case.0x5984c.0;
                                                                 |     }
                                                                 |     if (r3 <= 2) {
    0x00040656 str.w r0, [r3, 0x1a8]                             |         __asm ("str.w r0, case.0x5984c.0");
                                                                 |     }
    0x0004065a movs r3, 0x2c                                     |     r3 = 0x2c;
    0x0004065c mla r3, r3, r7, r5                                |     __asm ("mla r3, r3, r7, r5");
    0x00040660 ldr.w r0, [r1, 0xdb8]                             |     r0 = case.0x5984c.0;
    0x00040664 ldr.w r1, [r3, 0x1b0]                             |     r1 = case.0x5984c.0;
    0x00040668 add r1, r2                                        |     r1 += r2;
    0x0004066a str.w r1, [r3, 0x1b0]                             |     __asm ("str.w r1, case.0x5984c.0");
                                                                 |     if (r0 != 0) {
    0x0004066e cbz r0, 0x40676                                   |         
    0x00040670 ldr r1, [r4, 0x6c]                                |         r1 = *((r4 + 0x6c));
    0x00040672 blx 0x1ffec                                       |         fcn_0001ffec ();
                                                                 |     }
    0x00040676 movs r3, 0x2c                                     |     r3 = 0x2c;
    0x00040678 ldr r6, [r4, 0x7c]                                |     r6 = *((r4 + 0x7c));
    0x0004067a mla r5, r3, r7, r5                                |     __asm ("mla r5, r3, r7, r5");
    0x0004067e add.w r5, r5, 0x1a4                               |     r5 += case.0x5984c.0;
    0x00040682 ldm r5!, {r0, r1, r2, r3}                         |     r0 = *(r5!);
                                                                 |     r1 = *((r5! + 4));
                                                                 |     r2 = *((r5! + 8));
                                                                 |     r3 = *((r5! + 12));
    0x00040684 stm r6!, {r0, r1, r2, r3}                         |     *(r6!) = r0;
                                                                 |     *((r6! + 4)) = r1;
                                                                 |     *((r6! + 8)) = r2;
                                                                 |     *((r6! + 12)) = r3;
    0x00040686 mov r0, r4                                        |     r0 = r4;
    0x00040688 ldr r3, [r5]                                      |     r3 = *(r5);
    0x0004068a movw r5, 0x28c3                                   |     r5 = (r5 & 0xFFFF0000) | (case.0x5984c.0 & 0xFFFF);
    0x0004068e str r3, [r6]                                      |     *(r6) = r3;
    0x00040690 bl 0x3e9d8                                        |     fcn_0003e9d8 (r0);
    0x00040694 ldr r3, [r4, 0x78]                                |     r3 = *((r4 + 0x78));
    0x00040696 movs r2, 0                                        |     r2 = 0;
    0x00040698 str r2, [r3, 8]                                   |     *((r3 + 8)) = r2;
    0x0004069a b.w 0x3f820                                       |     goto label_11;
    0x0004069e ldr r2, [r4, 0x20]                                |     r2 = *((r4 + 0x20));
    0x000406a0 cmp r2, 0                                         |     
                                                                 |     if (r2 > 0) {
    0x000406a2 ble 0x406c0                                       |         
    0x000406a4 ldr r3, [r4, 0x6c]                                |         r3 = *((r4 + 0x6c));
    0x000406a6 ldr r0, [r4, 0xc]                                 |         r0 = *((r4 + 0xc));
    0x000406a8 ldr r1, [r4, 0x14]                                |         r1 = *((r4 + 0x14));
    0x000406aa add r3, r2                                        |         r3 += r2;
    0x000406ac ldrb r3, [r3, -0x1]                               |         r3 = *((r3 - 0x1));
    0x000406b0 ldr.w r1, [r1, r0, lsl 2]                         |         offset_20 = r0 << 2;
                                                                 |         r1 = *((r1 + offset_20));
    0x000406b4 sub.w r3, r3, 0xa                                 |         r3 -= 0xa;
    0x000406b8 clz r3, r3                                        |         r3 &= r3;
    0x000406bc lsrs r3, r3, 5                                    |         r3 >>= 5;
    0x000406be str r3, [r1, 0x1c]                                |         *((r1 + 0x1c)) = r3;
                                                                 |     }
    0x000406c0 ldr r5, [r4]                                      |     r5 = *(r4);
    0x000406c2 ldr r3, [r4, 0x2c]                                |     r3 = *((r4 + 0x2c));
    0x000406c4 add.w r1, r5, 0x2000                              |     r1 = r5 + case.0x5984c.0;
    0x000406c8 ldr.w r7, [r1, 0xd94]                             |     r7 = case.0x5984c.0;
    0x000406cc cmp r3, 2                                         |     
    0x000406ce itttt ls                                          |     
                                                                 |     if (r3 > 2) {
    0x000406d0 movls r3, 0x2c                                    |         r3 = 0x2c;
                                                                 |     }
                                                                 |     if (r3 <= 2) {
    0x000406d2 mlals r3, r3, r7, r5                              |         __asm ("mlals r3, r3, r7, r5");
                                                                 |     }
                                                                 |     if (r3 > 2) {
    0x000406d6 ldrls r0, [r3, 0x1b0]                             |         r0 = case.0x5984c.0;
                                                                 |     }
                                                                 |     if (r3 <= 2) {
    0x000406da str.w r0, [r3, 0x1a8]                             |         __asm ("str.w r0, case.0x5984c.0");
                                                                 |     }
    0x000406de movs r3, 0x2c                                     |     r3 = 0x2c;
    0x000406e0 mla r3, r3, r7, r5                                |     __asm ("mla r3, r3, r7, r5");
    0x000406e4 ldr.w r0, [r1, 0xdb8]                             |     r0 = case.0x5984c.0;
    0x000406e8 ldr.w r1, [r3, 0x1b0]                             |     r1 = case.0x5984c.0;
    0x000406ec add r1, r2                                        |     r1 += r2;
    0x000406ee str.w r1, [r3, 0x1b0]                             |     __asm ("str.w r1, case.0x5984c.0");
                                                                 |     if (r0 != 0) {
    0x000406f2 cbz r0, 0x406fa                                   |         
    0x000406f4 ldr r1, [r4, 0x6c]                                |         r1 = *((r4 + 0x6c));
    0x000406f6 blx 0x1ffec                                       |         fcn_0001ffec ();
                                                                 |     }
    0x000406fa movs r3, 0x2c                                     |     r3 = 0x2c;
    0x000406fc ldr r6, [r4, 0x7c]                                |     r6 = *((r4 + 0x7c));
    0x000406fe mla r4, r3, r7, r5                                |     __asm ("mla r4, r3, r7, r5");
    0x00040700 strb r7, [r0, r0]                                 |     *((r0 + r0)) = r7;
    0x00040702 movw r5, 0x28b9                                   |     r5 = (r5 & 0xFFFF0000) | (case.0x5984c.0 & 0xFFFF);
    0x00040706 add.w r4, r4, 0x1a4                               |     r4 += case.0x5984c.0;
    0x0004070a ldm r4!, {r0, r1, r2, r3}                         |     r0 = *(r4!);
                                                                 |     r1 = *((r4! + 4));
                                                                 |     r2 = *((r4! + 8));
                                                                 |     r3 = *((r4! + 12));
    0x0004070c stm r6!, {r0, r1, r2, r3}                         |     *(r6!) = r0;
                                                                 |     *((r6! + 4)) = r1;
                                                                 |     *((r6! + 8)) = r2;
                                                                 |     *((r6! + 12)) = r3;
    0x0004070e ldr r3, [r4]                                      |     r3 = *(r4);
    0x00040710 str r3, [r6]                                      |     *(r6) = r3;
    0x00040712 b.w 0x3f820                                       |     goto label_11;
    0x00040716 ldr r2, [r4, 0x20]                                |     r2 = *((r4 + 0x20));
    0x00040718 cmp r2, 0                                         |     
                                                                 |     if (r2 > 0) {
    0x0004071a ble 0x40738                                       |         
    0x0004071c ldr r3, [r4, 0x6c]                                |         r3 = *((r4 + 0x6c));
    0x0004071e ldr r0, [r4, 0xc]                                 |         r0 = *((r4 + 0xc));
    0x00040720 ldr r1, [r4, 0x14]                                |         r1 = *((r4 + 0x14));
    0x00040722 add r3, r2                                        |         r3 += r2;
    0x00040724 ldrb r3, [r3, -0x1]                               |         r3 = *((r3 - 0x1));
    0x00040728 ldr.w r1, [r1, r0, lsl 2]                         |         offset_21 = r0 << 2;
                                                                 |         r1 = *((r1 + offset_21));
    0x0004072c sub.w r3, r3, 0xa                                 |         r3 -= 0xa;
    0x00040730 clz r3, r3                                        |         r3 &= r3;
    0x00040734 lsrs r3, r3, 5                                    |         r3 >>= 5;
    0x00040736 str r3, [r1, 0x1c]                                |         *((r1 + 0x1c)) = r3;
                                                                 |     }
    0x00040738 ldr r5, [r4]                                      |     r5 = *(r4);
    0x0004073a ldr r3, [r4, 0x2c]                                |     r3 = *((r4 + 0x2c));
    0x0004073c add.w r1, r5, 0x2000                              |     r1 = r5 + case.0x5984c.0;
    0x00040740 ldr.w r7, [r1, 0xd94]                             |     r7 = case.0x5984c.0;
    0x00040744 cmp r3, 2                                         |     
    0x00040746 itttt ls                                          |     
                                                                 |     if (r3 > 2) {
    0x00040748 movls r3, 0x2c                                    |         r3 = 0x2c;
                                                                 |     }
                                                                 |     if (r3 <= 2) {
    0x0004074a mlals r3, r3, r7, r5                              |         __asm ("mlals r3, r3, r7, r5");
                                                                 |     }
                                                                 |     if (r3 > 2) {
    0x0004074e ldrls r0, [r3, 0x1b0]                             |         r0 = case.0x5984c.0;
                                                                 |     }
                                                                 |     if (r3 <= 2) {
    0x00040752 str.w r0, [r3, 0x1a8]                             |         __asm ("str.w r0, case.0x5984c.0");
                                                                 |     }
    0x00040756 movs r3, 0x2c                                     |     r3 = 0x2c;
    0x00040758 mla r3, r3, r7, r5                                |     __asm ("mla r3, r3, r7, r5");
    0x0004075c ldr.w r0, [r1, 0xdb8]                             |     r0 = case.0x5984c.0;
    0x00040760 ldr.w r1, [r3, 0x1b0]                             |     r1 = case.0x5984c.0;
    0x00040764 add r1, r2                                        |     r1 += r2;
    0x00040766 str.w r1, [r3, 0x1b0]                             |     __asm ("str.w r1, case.0x5984c.0");
                                                                 |     if (r0 != 0) {
    0x0004076a cbz r0, 0x40772                                   |         
    0x0004076c ldr r1, [r4, 0x6c]                                |         r1 = *((r4 + 0x6c));
    0x0004076e blx 0x1ffec                                       |         fcn_0001ffec ();
                                                                 |     }
    0x00040772 movs r3, 0x2c                                     |     r3 = 0x2c;
    0x00040774 ldr r6, [r4, 0x7c]                                |     r6 = *((r4 + 0x7c));
    0x00040776 mla r5, r3, r7, r5                                |     __asm ("mla r5, r3, r7, r5");
    0x0004077a add.w r5, r5, 0x1a4                               |     r5 += case.0x5984c.0;
    0x0004077e ldm r5!, {r0, r1, r2, r3}                         |     r0 = *(r5!);
                                                                 |     r1 = *((r5! + 4));
                                                                 |     r2 = *((r5! + 8));
                                                                 |     r3 = *((r5! + 12));
    0x00040780 stm r6!, {r0, r1, r2, r3}                         |     *(r6!) = r0;
                                                                 |     *((r6! + 4)) = r1;
                                                                 |     *((r6! + 8)) = r2;
                                                                 |     *((r6! + 12)) = r3;
    0x00040782 mov r0, r4                                        |     r0 = r4;
    0x00040784 ldr r3, [r5]                                      |     r3 = *(r5);
    0x00040786 movw r5, 0x28c3                                   |     r5 = (r5 & 0xFFFF0000) | (case.0x5984c.0 & 0xFFFF);
    0x0004078a str r3, [r6]                                      |     *(r6) = r3;
    0x0004078c bl 0x3e9d8                                        |     fcn_0003e9d8 (r0);
    0x00040790 ldr.w r0, [pc, 0xc70]                             |     r0 = *(0x00041404);
    0x00040794 ldr r4, [r4, 0x78]                                |     r4 = *((r4 + 0x78));
    0x00040796 add r0, pc                                        |     r0 += pc;
    0x00040798 blx 0x20864                                       |     fcn_00020864 ();
    0x0004079c str r0, [r4, 8]                                   |     *((r4 + 8)) = r0;
    0x0004079e b.w 0x3f820                                       |     goto label_11;
    0x000407a2 ldr r2, [r4, 0x20]                                |     r2 = *((r4 + 0x20));
    0x000407a4 ldr r7, [r4, 0x6c]                                |     r7 = *((r4 + 0x6c));
    0x000407a6 cmp r2, 0                                         |     
                                                                 |     if (r2 > 0) {
    0x000407a8 ble 0x407c4                                       |         
    0x000407aa ldr r3, [r4, 0x14]                                |         r3 = *((r4 + 0x14));
    0x000407ac ldr r1, [r4, 0xc]                                 |         r1 = *((r4 + 0xc));
    0x000407ae ldr.w r1, [r3, r1, lsl 2]                         |         offset_22 = r1 << 2;
                                                                 |         r1 = *((r3 + offset_22));
    0x000407b2 adds r3, r7, r2                                   |         r3 = r7 + r2;
    0x000407b4 ldrb r3, [r3, -0x1]                               |         r3 = *((r3 - 0x1));
    0x000407b8 sub.w r3, r3, 0xa                                 |         r3 -= 0xa;
    0x000407bc clz r3, r3                                        |         r3 &= r3;
    0x000407c0 lsrs r3, r3, 5                                    |         r3 >>= 5;
    0x000407c2 str r3, [r1, 0x1c]                                |         *((r1 + 0x1c)) = r3;
                                                                 |     }
    0x000407c4 ldr r5, [r4]                                      |     r5 = *(r4);
    0x000407c6 ldr r3, [r4, 0x2c]                                |     r3 = *((r4 + 0x2c));
    0x000407c8 add.w r0, r5, 0x2000                              |     r0 = r5 + case.0x5984c.0;
    0x000407cc ldr.w r6, [r0, 0xd94]                             |     r6 = case.0x5984c.0;
    0x000407d0 cmp r3, 2                                         |     
    0x000407d2 it ls                                             |     
                                                                 |     if (r3 > 2) {
    0x000407d4 movls r3, 0x2c                                    |         r3 = 0x2c;
                                                                 |     }
    0x000407d6 ldr.w r0, [r0, 0xdb8]                             |     r0 = case.0x5984c.0;
    0x000407da ittt ls                                           |     
                                                                 |     if (r3 <= 2) {
    0x000407dc mlals r3, r3, r6, r5                              |         __asm ("mlals r3, r3, r6, r5");
                                                                 |     }
                                                                 |     if (r3 > 2) {
    0x000407e0 ldrls r1, [r3, 0x1b0]                             |         r1 = case.0x5984c.0;
                                                                 |     }
                                                                 |     if (r3 <= 2) {
    0x000407e4 str.w r1, [r3, 0x1a8]                             |         __asm ("str.w r1, case.0x5984c.0");
                                                                 |     }
    0x000407e8 movs r3, 0x2c                                     |     r3 = 0x2c;
    0x000407ea mla r3, r3, r6, r5                                |     __asm ("mla r3, r3, r6, r5");
    0x000407ee ldr.w r1, [r3, 0x1b0]                             |     r1 = case.0x5984c.0;
    0x000407f2 add r1, r2                                        |     r1 += r2;
    0x000407f4 str.w r1, [r3, 0x1b0]                             |     __asm ("str.w r1, case.0x5984c.0");
    0x000407f8 mov r3, r5                                        |     r3 = r5;
                                                                 |     if (r0 != 0) {
    0x000407fa cbz r0, 0x40806                                   |         
    0x000407fc mov r1, r7                                        |         r1 = r7;
    0x000407fe blx 0x1ffec                                       |         fcn_0001ffec ();
    0x00040802 ldr r3, [r4]                                      |         r3 = *(r4);
    0x00040804 ldr r7, [r4, 0x6c]                                |         r7 = *((r4 + 0x6c));
                                                                 |     }
    0x00040806 add.w ip, r3, 0x2000                              |     
    0x0004080a movs r3, 0x2c                                     |     r3 = 0x2c;
    0x0004080c mla r5, r3, r6, r5                                |     __asm ("mla r5, r3, r6, r5");
    0x00040810 ldr r6, [r4, 0x7c]                                |     r6 = *((r4 + 0x7c));
    0x00040812 add.w r5, r5, 0x1a4                               |     r5 += case.0x5984c.0;
    0x00040816 ldm r5!, {r0, r1, r2, r3}                         |     r0 = *(r5!);
                                                                 |     r1 = *((r5! + 4));
                                                                 |     r2 = *((r5! + 8));
                                                                 |     r3 = *((r5! + 12));
    0x00040818 stm r6!, {r0, r1, r2, r3}                         |     *(r6!) = r0;
                                                                 |     *((r6! + 4)) = r1;
                                                                 |     *((r6! + 8)) = r2;
                                                                 |     *((r6! + 12)) = r3;
    0x0004081a mov r1, r7                                        |     r1 = r7;
    0x0004081c ldr r3, [r5]                                      |     r3 = *(r5);
    0x0004081e ldr.w r0, [ip, 0xda8]                             |     r0 = case.0x5984c.0;
    0x00040822 str r3, [r6]                                      |     *(r6) = r3;
    0x00040824 blx 0x23764                                       |     fcn_00023764 ();
    0x00040828 ldr r3, [r4]                                      |     r3 = *(r4);
    0x0004082a add.w r3, r3, 0x2000                              |     r3 += case.0x5984c.0;
    0x0004082e ldr.w r2, [r3, 0xdb8]                             |     r2 = case.0x5984c.0;
    0x00040832 cmp r2, 0                                         |     
                                                                 |     if (r2 == 0) {
    0x00040834 beq.w 0x3f9ec                                     |         goto label_14;
                                                                 |     }
    0x00040838 ldr r1, [r4, 0x2c]                                |     r1 = *((r4 + 0x2c));
    0x0004083a cmp r1, 2                                         |     
                                                                 |     if (r1 > 2) {
    0x0004083c bhi.w 0x3f9ec                                     |         goto label_14;
                                                                 |     }
    0x00040840 ldrd r1, r2, [r2]                                 |     __asm ("ldrd r1, r2, [r2]");
    0x00040844 ldr.w r0, [r3, 0xdb4]                             |     r0 = case.0x5984c.0;
    0x00040848 blx 0x1ffec                                       |     fcn_0001ffec ();
    0x0004084c ldr r3, [r4]                                      |     r3 = *(r4);
    0x0004084e movs r1, 0                                        |     r1 = 0;
    0x00040850 add.w r3, r3, 0x2000                              |     r3 += case.0x5984c.0;
    0x00040854 ldr.w r0, [r3, 0xdb8]                             |     r0 = case.0x5984c.0;
    0x00040858 blx 0x1fc8c                                       |     fcn_0001fc8c ();
    0x0004085c b.w 0x3f9ec                                       |     goto label_14;
    0x00040860 ldr r2, [r4, 0x20]                                |     r2 = *((r4 + 0x20));
    0x00040862 cmp r2, 0                                         |     
                                                                 |     if (r2 > 0) {
    0x00040864 ble 0x40882                                       |         
    0x00040866 ldr r3, [r4, 0x6c]                                |         r3 = *((r4 + 0x6c));
    0x00040868 ldr r1, [r4, 0xc]                                 |         r1 = *((r4 + 0xc));
    0x0004086a ldr r0, [r4, 0x14]                                |         r0 = *((r4 + 0x14));
    0x0004086c add r3, r2                                        |         r3 += r2;
    0x0004086e ldrb r3, [r3, -0x1]                               |         r3 = *((r3 - 0x1));
    0x00040872 ldr.w r1, [r0, r1, lsl 2]                         |         offset_23 = r1 << 2;
                                                                 |         r1 = *((r0 + offset_23));
    0x00040876 sub.w r3, r3, 0xa                                 |         r3 -= 0xa;
    0x0004087a clz r3, r3                                        |         r3 &= r3;
    0x0004087e lsrs r3, r3, 5                                    |         r3 >>= 5;
    0x00040880 str r3, [r1, 0x1c]                                |         *((r1 + 0x1c)) = r3;
                                                                 |     }
    0x00040882 ldr r5, [r4]                                      |     r5 = *(r4);
    0x00040884 ldr r3, [r4, 0x2c]                                |     r3 = *((r4 + 0x2c));
    0x00040886 add.w r6, r5, 0x2000                              |     r6 = r5 + case.0x5984c.0;
    0x0004088a ldr.w r1, [r6, 0xd94]                             |     r1 = case.0x5984c.0;
    0x0004088c adds r4, r2, 6                                    |     r4 = r2 + 6;
    0x0004088e cmp r3, 2                                         |     
    0x00040890 itttt ls                                          |     
                                                                 |     if (r3 > 2) {
    0x00040892 movls r3, 0x2c                                    |         r3 = 0x2c;
                                                                 |     }
                                                                 |     if (r3 <= 2) {
    0x00040894 mlals r3, r3, r1, r5                              |         __asm ("mlals r3, r3, r1, r5");
                                                                 |     }
                                                                 |     if (r3 > 2) {
    0x00040898 ldrls r0, [r3, 0x1b0]                             |         r0 = case.0x5984c.0;
                                                                 |     }
                                                                 |     if (r3 <= 2) {
    0x0004089c str.w r0, [r3, 0x1a8]                             |         __asm ("str.w r0, case.0x5984c.0");
                                                                 |     }
    0x000408a0 movs r3, 0x2c                                     |     r3 = 0x2c;
    0x000408a2 mla r5, r3, r1, r5                                |     __asm ("mla r5, r3, r1, r5");
    0x000408a6 ldr.w r0, [r6, 0xdb8]                             |     r0 = case.0x5984c.0;
    0x000408aa ldr.w r3, [r5, 0x1b0]                             |     r3 = case.0x5984c.0;
    0x000408ae add r3, r2                                        |     r3 += r2;
    0x000408b0 str.w r3, [r5, 0x1b0]                             |     __asm ("str.w r3, case.0x5984c.0");
    0x000408b4 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x000408b6 beq.w 0x42086                                     |         goto label_89;
                                                                 |     }
    0x000408ba ldr r1, [r4, 0x6c]                                |     r1 = *((r4 + 0x6c));
    0x000408bc add.w r5, r5, 0x1a4                               |     r5 += case.0x5984c.0;
    0x000408c0 blx 0x1ffec                                       |     r0 = fcn_0001ffec ();
    0x000408c4 ldm r5!, {r0, r1, r2, r3}                         |     r0 = *(r5!);
                                                                 |     r1 = *((r5! + 4));
                                                                 |     r2 = *((r5! + 8));
                                                                 |     r3 = *((r5! + 12));
    0x000408c6 ldr r7, [r4]                                      |     r7 = *(r4);
    0x000408c8 ldr r6, [r4, 0x7c]                                |     r6 = *((r4 + 0x7c));
    0x000408ca add.w r7, r7, 0x2000                              |     r7 += case.0x5984c.0;
    0x000408ce ldr.w ip, [r7, 0xdb8]                             |     ip = case.0x5984c.0;
    0x000408d2 stm r6!, {r0, r1, r2, r3}                         |     *(r6!) = r0;
                                                                 |     *((r6! + 4)) = r1;
                                                                 |     *((r6! + 8)) = r2;
                                                                 |     *((r6! + 12)) = r3;
    0x000408d4 ldr r3, [r5]                                      |     r3 = *(r5);
    0x000408d6 str r3, [r6]                                      |     *(r6) = r3;
    0x000408d8 cmp.w ip, 0                                       |     
                                                                 |     if (ip == 0) {
    0x000408dc beq.w 0x3f9ec                                     |         goto label_14;
                                                                 |     }
    0x000408e0 ldr r3, [r4, 0x2c]                                |     r3 = *((r4 + 0x2c));
    0x000408e2 cmp r3, 2                                         |     
                                                                 |     if (r3 > 2) {
    0x000408e4 bhi.w 0x3f9ec                                     |         goto label_14;
                                                                 |     }
    0x000408e8 ldrd r1, r2, [ip]                                 |     __asm ("ldrd r1, r2, [ip]");
    0x000408ec ldr.w r0, [r7, 0xdb4]                             |     r0 = case.0x5984c.0;
    0x000408f0 blx 0x1ffec                                       |     fcn_0001ffec ();
    0x000408f4 ldr r3, [r4]                                      |     r3 = *(r4);
    0x000408f6 movs r1, 0                                        |     r1 = 0;
    0x000408f8 add.w r3, r3, 0x2000                              |     r3 += case.0x5984c.0;
    0x000408fc ldr.w r0, [r3, 0xdb8]                             |     r0 = case.0x5984c.0;
    0x00040900 blx 0x1fc8c                                       |     fcn_0001fc8c ();
    0x00040904 b.w 0x3f9ec                                       |     goto label_14;
    0x00040908 ldr r2, [r4, 0x20]                                |     r2 = *((r4 + 0x20));
    0x0004090a cmp r2, 0                                         |     
                                                                 |     if (r2 > 0) {
    0x0004090c ble 0x4092a                                       |         
    0x0004090e ldr r3, [r4, 0x6c]                                |         r3 = *((r4 + 0x6c));
    0x00040910 ldr r0, [r4, 0xc]                                 |         r0 = *((r4 + 0xc));
    0x00040912 ldr r1, [r4, 0x14]                                |         r1 = *((r4 + 0x14));
    0x00040914 add r3, r2                                        |         r3 += r2;
    0x00040916 ldrb r3, [r3, -0x1]                               |         r3 = *((r3 - 0x1));
    0x0004091a ldr.w r1, [r1, r0, lsl 2]                         |         offset_24 = r0 << 2;
                                                                 |         r1 = *((r1 + offset_24));
    0x0004091e sub.w r3, r3, 0xa                                 |         r3 -= 0xa;
    0x00040922 clz r3, r3                                        |         r3 &= r3;
    0x00040926 lsrs r3, r3, 5                                    |         r3 >>= 5;
    0x00040928 str r3, [r1, 0x1c]                                |         *((r1 + 0x1c)) = r3;
                                                                 |     }
    0x0004092a ldr r5, [r4]                                      |     r5 = *(r4);
    0x0004092c ldr r3, [r4, 0x2c]                                |     r3 = *((r4 + 0x2c));
    0x0004092e add.w r1, r5, 0x2000                              |     r1 = r5 + case.0x5984c.0;
    0x00040932 ldr.w r7, [r1, 0xd94]                             |     r7 = case.0x5984c.0;
    0x00040936 cmp r3, 2                                         |     
    0x00040938 itttt ls                                          |     
                                                                 |     if (r3 > 2) {
    0x0004093a movls r3, 0x2c                                    |         r3 = 0x2c;
                                                                 |     }
                                                                 |     if (r3 <= 2) {
    0x0004093c mlals r3, r3, r7, r5                              |         __asm ("mlals r3, r3, r7, r5");
                                                                 |     }
                                                                 |     if (r3 > 2) {
    0x00040940 ldrls r0, [r3, 0x1b0]                             |         r0 = case.0x5984c.0;
                                                                 |     }
                                                                 |     if (r3 <= 2) {
    0x00040944 str.w r0, [r3, 0x1a8]                             |         __asm ("str.w r0, case.0x5984c.0");
                                                                 |     }
    0x00040948 movs r3, 0x2c                                     |     r3 = 0x2c;
    0x0004094a mla r3, r3, r7, r5                                |     __asm ("mla r3, r3, r7, r5");
    0x0004094e ldr.w r0, [r1, 0xdb8]                             |     r0 = case.0x5984c.0;
    0x00040952 ldr.w r1, [r3, 0x1b0]                             |     r1 = case.0x5984c.0;
    0x00040956 add r1, r2                                        |     r1 += r2;
    0x00040958 str.w r1, [r3, 0x1b0]                             |     __asm ("str.w r1, case.0x5984c.0");
                                                                 |     if (r0 != 0) {
    0x0004095c cbz r0, 0x40964                                   |         
    0x0004095e ldr r1, [r4, 0x6c]                                |         r1 = *((r4 + 0x6c));
    0x00040960 blx 0x1ffec                                       |         fcn_0001ffec ();
                                                                 |     }
    0x00040964 movs r3, 0x2c                                     |     r3 = 0x2c;
    0x00040966 ldr r6, [r4, 0x7c]                                |     r6 = *((r4 + 0x7c));
    0x00040968 mla r4, r3, r7, r5                                |     __asm ("mla r4, r3, r7, r5");
    0x0004096c movw r5, 0x28b6                                   |     r5 = (r5 & 0xFFFF0000) | (case.0x5984c.0 & 0xFFFF);
    0x00040970 add.w r4, r4, 0x1a4                               |     r4 += case.0x5984c.0;
    0x00040974 ldm r4!, {r0, r1, r2, r3}                         |     r0 = *(r4!);
                                                                 |     r1 = *((r4! + 4));
                                                                 |     r2 = *((r4! + 8));
                                                                 |     r3 = *((r4! + 12));
    0x00040976 stm r6!, {r0, r1, r2, r3}                         |     *(r6!) = r0;
                                                                 |     *((r6! + 4)) = r1;
                                                                 |     *((r6! + 8)) = r2;
                                                                 |     *((r6! + 12)) = r3;
    0x00040978 ldr r3, [r4]                                      |     r3 = *(r4);
    0x0004097a str r3, [r6]                                      |     *(r6) = r3;
    0x0004097c b.w 0x3f820                                       |     goto label_11;
    0x00040980 ldr r2, [r4, 0x20]                                |     r2 = *((r4 + 0x20));
    0x00040982 ldr r6, [r4, 0x6c]                                |     r6 = *((r4 + 0x6c));
    0x00040984 cmp r2, 0                                         |     
                                                                 |     if (r2 > 0) {
    0x00040986 ble 0x409a2                                       |         
    0x00040988 ldr r3, [r4, 0x14]                                |         r3 = *((r4 + 0x14));
    0x0004098a ldr r1, [r4, 0xc]                                 |         r1 = *((r4 + 0xc));
    0x0004098c ldr.w r1, [r3, r1, lsl 2]                         |         offset_25 = r1 << 2;
                                                                 |         r1 = *((r3 + offset_25));
    0x00040990 adds r3, r6, r2                                   |         r3 = r6 + r2;
    0x00040992 ldrb r3, [r3, -0x1]                               |         r3 = *((r3 - 0x1));
    0x00040996 sub.w r3, r3, 0xa                                 |         r3 -= 0xa;
    0x0004099a clz r3, r3                                        |         r3 &= r3;
    0x0004099e lsrs r3, r3, 5                                    |         r3 >>= 5;
    0x000409a0 str r3, [r1, 0x1c]                                |         *((r1 + 0x1c)) = r3;
                                                                 |     }
    0x000409a2 ldr r5, [r4]                                      |     r5 = *(r4);
    0x000409a4 ldr r3, [r4, 0x2c]                                |     r3 = *((r4 + 0x2c));
    0x000409a6 add.w r0, r5, 0x2000                              |     r0 = r5 + case.0x5984c.0;
    0x000409aa ldr.w r7, [r0, 0xd94]                             |     r7 = case.0x5984c.0;
    0x000409ae cmp r3, 2                                         |     
    0x000409b0 it ls                                             |     
                                                                 |     if (r3 > 2) {
    0x000409b2 movls r3, 0x2c                                    |         r3 = 0x2c;
                                                                 |     }
    0x000409b4 ldr.w r0, [r0, 0xdb8]                             |     r0 = case.0x5984c.0;
    0x000409b8 ittt ls                                           |     
                                                                 |     if (r3 <= 2) {
    0x000409ba mlals r3, r3, r7, r5                              |         __asm ("mlals r3, r3, r7, r5");
                                                                 |     }
                                                                 |     if (r3 > 2) {
    0x000409be ldrls r1, [r3, 0x1b0]                             |         r1 = case.0x5984c.0;
                                                                 |     }
                                                                 |     if (r3 <= 2) {
    0x000409c2 str.w r1, [r3, 0x1a8]                             |         __asm ("str.w r1, case.0x5984c.0");
                                                                 |     }
    0x000409c6 movs r3, 0x2c                                     |     r3 = 0x2c;
    0x000409c8 mla r3, r3, r7, r5                                |     __asm ("mla r3, r3, r7, r5");
    0x000409cc ldr.w r1, [r3, 0x1b0]                             |     r1 = case.0x5984c.0;
    0x000409d0 add r1, r2                                        |     r1 += r2;
    0x000409d2 str.w r1, [r3, 0x1b0]                             |     __asm ("str.w r1, case.0x5984c.0");
    0x000409d6 mov r3, r5                                        |     r3 = r5;
                                                                 |     if (r0 != 0) {
    0x000409d8 cbz r0, 0x409e4                                   |         
    0x000409da mov r1, r6                                        |         r1 = r6;
    0x000409dc blx 0x1ffec                                       |         fcn_0001ffec ();
    0x000409e0 ldr r3, [r4]                                      |         r3 = *(r4);
    0x000409e2 ldr r6, [r4, 0x6c]                                |         r6 = *((r4 + 0x6c));
                                                                 |     }
    0x000409e4 add.w r3, r3, 0x2000                              |     r3 += case.0x5984c.0;
    0x000409e8 ldr.w ip, [r3, 0xda8]                             |     ip = case.0x5984c.0;
    0x000409ec movs r3, 0x2c                                     |     r3 = 0x2c;
    0x000409ee mla r5, r3, r7, r5                                |     __asm ("mla r5, r3, r7, r5");
    0x000409f2 ldr r7, [r4, 0x7c]                                |     r7 = *((r4 + 0x7c));
    0x000409f4 ldrd lr, sb, [ip, 4]                              |     __asm ("ldrd lr, sb, [ip, 4]");
    0x000409f8 add.w r5, r5, 0x1a4                               |     r5 += case.0x5984c.0;
    0x000409fc ldm r5!, {r0, r1, r2, r3}                         |     r0 = *(r5!);
                                                                 |     r1 = *((r5! + 4));
                                                                 |     r2 = *((r5! + 8));
                                                                 |     r3 = *((r5! + 12));
    0x000409fe add.w r8, lr, 1                                   |     r8 = lr + 1;
    0x00040a02 cmp r8, sb                                        |     
    0x00040a04 stm r7!, {r0, r1, r2, r3}                         |     *(r7!) = r0;
                                                                 |     *((r7! + 4)) = r1;
                                                                 |     *((r7! + 8)) = r2;
                                                                 |     *((r7! + 12)) = r3;
    0x00040a06 ldr r3, [r5]                                      |     r3 = *(r5);
    0x00040a08 str r3, [r7]                                      |     *(r7) = r3;
    0x00040a0a ldrb r2, [r6]                                     |     r2 = *(r6);
                                                                 |     if (r8 >= sb) {
    0x00040a0c bhs.w 0x41ff2                                     |         goto label_90;
                                                                 |     }
    0x00040a10 ldr.w r3, [ip]                                    |     r3 = *(ip);
    0x00040a14 movs r1, 0                                        |     r1 = 0;
    0x00040a16 str.w r8, [ip, 4]                                 |     __asm ("str.w r8, [ip, 4]");
    0x00040a1a strb.w r2, [r3, lr]                               |     *((r3 + lr)) = r2;
    0x00040a1e ldrd r2, r3, [ip]                                 |     __asm ("ldrd r2, r3, [ip]");
    0x00040a22 strb r1, [r2, r3]                                 |     *((r2 + r3)) = r1;
                                                                 | label_28:
    0x00040a24 mov r1, r4                                        |     r1 = r4;
    0x00040a26 movs r0, 6                                        |     r0 = 6;
    0x00040a28 bl 0x3f06c                                        |     fcn_0003f06c (r0, r1, r2);
    0x00040a2c ldr r3, [r4]                                      |     r3 = *(r4);
    0x00040a2e add.w r3, r3, 0x2000                              |     r3 += case.0x5984c.0;
    0x00040a32 ldr.w r2, [r3, 0xdb8]                             |     r2 = case.0x5984c.0;
    0x00040a36 cmp r2, 0                                         |     
                                                                 |     if (r2 == 0) {
    0x00040a38 beq.w 0x3f9ec                                     |         goto label_14;
                                                                 |     }
    0x00040a3c ldr r1, [r4, 0x2c]                                |     r1 = *((r4 + 0x2c));
    0x00040a3e cmp r1, 2                                         |     
                                                                 |     if (r1 > 2) {
    0x00040a40 bhi.w 0x3f9ec                                     |         goto label_14;
                                                                 |     }
    0x00040a44 ldrd r1, r2, [r2]                                 |     __asm ("ldrd r1, r2, [r2]");
    0x00040a48 ldr.w r0, [r3, 0xdb4]                             |     r0 = case.0x5984c.0;
    0x00040a4c blx 0x1ffec                                       |     fcn_0001ffec ();
    0x00040a50 ldr r3, [r4]                                      |     r3 = *(r4);
    0x00040a52 movs r1, 0                                        |     r1 = 0;
    0x00040a54 add.w r3, r3, 0x2000                              |     r3 += case.0x5984c.0;
    0x00040a58 ldr.w r0, [r3, 0xdb8]                             |     r0 = case.0x5984c.0;
    0x00040a5c blx 0x1fc8c                                       |     fcn_0001fc8c ();
    0x00040a60 b.w 0x3f9ec                                       |     goto label_14;
    0x00040a64 ldr r2, [r4, 0x20]                                |     r2 = *((r4 + 0x20));
    0x00040a66 ldr r7, [r4, 0x6c]                                |     r7 = *((r4 + 0x6c));
    0x00040a68 cmp r2, 0                                         |     
                                                                 |     if (r2 > 0) {
    0x00040a6a ble 0x40a86                                       |         
    0x00040a6c ldr r3, [r4, 0x14]                                |         r3 = *((r4 + 0x14));
    0x00040a6e ldr r1, [r4, 0xc]                                 |         r1 = *((r4 + 0xc));
    0x00040a70 ldr.w r1, [r3, r1, lsl 2]                         |         offset_26 = r1 << 2;
                                                                 |         r1 = *((r3 + offset_26));
    0x00040a74 adds r3, r7, r2                                   |         r3 = r7 + r2;
    0x00040a76 ldrb r3, [r3, -0x1]                               |         r3 = *((r3 - 0x1));
    0x00040a7a sub.w r3, r3, 0xa                                 |         r3 -= 0xa;
    0x00040a7e clz r3, r3                                        |         r3 &= r3;
    0x00040a82 lsrs r3, r3, 5                                    |         r3 >>= 5;
    0x00040a84 str r3, [r1, 0x1c]                                |         *((r1 + 0x1c)) = r3;
                                                                 |     }
    0x00040a86 ldr r5, [r4]                                      |     r5 = *(r4);
    0x00040a88 ldr r3, [r4, 0x2c]                                |     r3 = *((r4 + 0x2c));
    0x00040a8a add.w r0, r5, 0x2000                              |     r0 = r5 + case.0x5984c.0;
    0x00040a8e ldr.w r6, [r0, 0xd94]                             |     r6 = case.0x5984c.0;
    0x00040a92 cmp r3, 2                                         |     
    0x00040a94 it ls                                             |     
                                                                 |     if (r3 > 2) {
    0x00040a96 movls r3, 0x2c                                    |         r3 = 0x2c;
                                                                 |     }
    0x00040a98 ldr.w r0, [r0, 0xdb8]                             |     r0 = case.0x5984c.0;
    0x00040a9c ittt ls                                           |     
                                                                 |     if (r3 <= 2) {
    0x00040a9e mlals r3, r3, r6, r5                              |         __asm ("mlals r3, r3, r6, r5");
                                                                 |     }
                                                                 |     if (r3 > 2) {
    0x00040aa2 ldrls r1, [r3, 0x1b0]                             |         r1 = case.0x5984c.0;
                                                                 |     }
                                                                 |     if (r3 <= 2) {
    0x00040aa6 str.w r1, [r3, 0x1a8]                             |         __asm ("str.w r1, case.0x5984c.0");
                                                                 |     }
    0x00040aaa movs r3, 0x2c                                     |     r3 = 0x2c;
    0x00040aac mla r3, r3, r6, r5                                |     __asm ("mla r3, r3, r6, r5");
    0x00040ab0 ldr.w r1, [r3, 0x1b0]                             |     r1 = case.0x5984c.0;
    0x00040ab4 add r1, r2                                        |     r1 += r2;
    0x00040ab6 str.w r1, [r3, 0x1b0]                             |     __asm ("str.w r1, case.0x5984c.0");
    0x00040aba mov r3, r5                                        |     r3 = r5;
                                                                 |     if (r0 != 0) {
    0x00040abc cbz r0, 0x40ac8                                   |         
    0x00040abe mov r1, r7                                        |         r1 = r7;
    0x00040ac0 blx 0x1ffec                                       |         fcn_0001ffec ();
    0x00040ac4 ldr r3, [r4]                                      |         r3 = *(r4);
    0x00040ac6 ldr r7, [r4, 0x6c]                                |         r7 = *((r4 + 0x6c));
                                                                 |     }
    0x00040ac8 add.w ip, r3, 0x2000                              |     
    0x00040acc movs r3, 0x2c                                     |     r3 = 0x2c;
    0x00040ace mla r5, r3, r6, r5                                |     __asm ("mla r5, r3, r6, r5");
    0x00040ad2 ldr r6, [r4, 0x7c]                                |     r6 = *((r4 + 0x7c));
    0x00040ad4 add.w r5, r5, 0x1a4                               |     r5 += case.0x5984c.0;
    0x00040ad8 ldm r5!, {r0, r1, r2, r3}                         |     r0 = *(r5!);
                                                                 |     r1 = *((r5! + 4));
                                                                 |     r2 = *((r5! + 8));
                                                                 |     r3 = *((r5! + 12));
    0x00040ada stm r6!, {r0, r1, r2, r3}                         |     *(r6!) = r0;
                                                                 |     *((r6! + 4)) = r1;
                                                                 |     *((r6! + 8)) = r2;
                                                                 |     *((r6! + 12)) = r3;
    0x00040adc mov r1, r7                                        |     r1 = r7;
    0x00040ade ldr r3, [r5]                                      |     r3 = *(r5);
    0x00040ae0 ldr.w r0, [ip, 0xda8]                             |     r0 = case.0x5984c.0;
    0x00040ae4 str r3, [r6]                                      |     *(r6) = r3;
    0x00040ae6 blx 0x23764                                       |     fcn_00023764 ();
    0x00040aea ldr r3, [r4]                                      |     r3 = *(r4);
    0x00040aec add.w r3, r3, 0x2000                              |     r3 += case.0x5984c.0;
    0x00040af0 ldr.w r2, [r3, 0xdb8]                             |     r2 = case.0x5984c.0;
    0x00040af4 cmp r2, 0                                         |     
                                                                 |     if (r2 == 0) {
    0x00040af6 beq.w 0x3f9ec                                     |         goto label_14;
                                                                 |     }
    0x00040afa ldr r1, [r4, 0x2c]                                |     r1 = *((r4 + 0x2c));
    0x00040afc cmp r1, 2                                         |     
                                                                 |     if (r1 > 2) {
    0x00040afe bhi.w 0x3f9ec                                     |         goto label_14;
                                                                 |     }
    0x00040b02 ldrd r1, r2, [r2]                                 |     __asm ("ldrd r1, r2, [r2]");
    0x00040b06 ldr.w r0, [r3, 0xdb4]                             |     r0 = case.0x5984c.0;
    0x00040b0a blx 0x1ffec                                       |     fcn_0001ffec ();
    0x00040b0e ldr r3, [r4]                                      |     r3 = *(r4);
    0x00040b10 movs r1, 0                                        |     r1 = 0;
    0x00040b12 add.w r3, r3, 0x2000                              |     r3 += case.0x5984c.0;
    0x00040b16 ldr.w r0, [r3, 0xdb8]                             |     r0 = case.0x5984c.0;
    0x00040b1a blx 0x1fc8c                                       |     fcn_0001fc8c ();
    0x00040b1e b.w 0x3f9ec                                       |     goto label_14;
    0x00040b22 ldr r2, [r4, 0x20]                                |     r2 = *((r4 + 0x20));
    0x00040b24 ldr r6, [r4, 0x6c]                                |     r6 = *((r4 + 0x6c));
    0x00040b26 cmp r2, 0                                         |     
                                                                 |     if (r2 > 0) {
    0x00040b28 ble 0x40b44                                       |         
    0x00040b2a ldr r3, [r4, 0x14]                                |         r3 = *((r4 + 0x14));
    0x00040b2c ldr r1, [r4, 0xc]                                 |         r1 = *((r4 + 0xc));
    0x00040b2e ldr.w r1, [r3, r1, lsl 2]                         |         offset_27 = r1 << 2;
                                                                 |         r1 = *((r3 + offset_27));
    0x00040b32 adds r3, r6, r2                                   |         r3 = r6 + r2;
    0x00040b34 ldrb r3, [r3, -0x1]                               |         r3 = *((r3 - 0x1));
    0x00040b38 sub.w r3, r3, 0xa                                 |         r3 -= 0xa;
    0x00040b3c clz r3, r3                                        |         r3 &= r3;
    0x00040b40 lsrs r3, r3, 5                                    |         r3 >>= 5;
    0x00040b42 str r3, [r1, 0x1c]                                |         *((r1 + 0x1c)) = r3;
                                                                 |     }
    0x00040b44 ldr r5, [r4]                                      |     r5 = *(r4);
    0x00040b46 ldr r3, [r4, 0x2c]                                |     r3 = *((r4 + 0x2c));
    0x00040b48 add.w r1, r5, 0x2000                              |     r1 = r5 + case.0x5984c.0;
    0x00040b4c ldr.w r7, [r1, 0xd94]                             |     r7 = case.0x5984c.0;
    0x00040b50 cmp r3, 2                                         |     
    0x00040b52 itttt ls                                          |     
                                                                 |     if (r3 > 2) {
    0x00040b54 movls r3, 0x2c                                    |         r3 = 0x2c;
                                                                 |     }
                                                                 |     if (r3 <= 2) {
    0x00040b56 mlals r3, r3, r7, r5                              |         __asm ("mlals r3, r3, r7, r5");
                                                                 |     }
                                                                 |     if (r3 > 2) {
    0x00040b5a ldrls r0, [r3, 0x1b0]                             |         r0 = case.0x5984c.0;
                                                                 |     }
                                                                 |     if (r3 <= 2) {
    0x00040b5e str.w r0, [r3, 0x1a8]                             |         __asm ("str.w r0, case.0x5984c.0");
                                                                 |     }
    0x00040b62 movs r3, 0x2c                                     |     r3 = 0x2c;
    0x00040b64 mla r3, r3, r7, r5                                |     __asm ("mla r3, r3, r7, r5");
    0x00040b68 ldr.w r0, [r1, 0xdb8]                             |     r0 = case.0x5984c.0;
    0x00040b6c ldr.w r1, [r3, 0x1b0]                             |     r1 = case.0x5984c.0;
    0x00040b70 add r1, r2                                        |     r1 += r2;
    0x00040b72 str.w r1, [r3, 0x1b0]                             |     __asm ("str.w r1, case.0x5984c.0");
                                                                 |     if (r0 != 0) {
    0x00040b76 cbz r0, 0x40b80                                   |         
    0x00040b78 mov r1, r6                                        |         r1 = r6;
    0x00040b7a blx 0x1ffec                                       |         fcn_0001ffec ();
    0x00040b7e ldr r6, [r4, 0x6c]                                |         r6 = *((r4 + 0x6c));
                                                                 |     }
    0x00040b80 movs r3, 0x2c                                     |     r3 = 0x2c;
    0x00040b82 mla r3, r3, r7, r5                                |     __asm ("mla r3, r3, r7, r5");
    0x00040b86 ldrd r7, r5, [r4, 0x78]                           |     __asm ("ldrd r7, r5, [r4, 0x78]");
    0x00040b8a add.w r4, r3, 0x1a4                               |     r4 = r3 + case.0x5984c.0;
    0x00040b8e ldm r4!, {r0, r1, r2, r3}                         |     r0 = *(r4!);
                                                                 |     r1 = *((r4! + 4));
                                                                 |     r2 = *((r4! + 8));
                                                                 |     r3 = *((r4! + 12));
    0x00040b90 stm r5!, {r0, r1, r2, r3}                         |     *(r5!) = r0;
                                                                 |     *((r5! + 4)) = r1;
                                                                 |     *((r5! + 8)) = r2;
                                                                 |     *((r5! + 12)) = r3;
    0x00040b92 movs r1, 0                                        |     r1 = 0;
    0x00040b94 ldr r3, [r4]                                      |     r3 = *(r4);
    0x00040b96 mov r0, r6                                        |     r0 = r6;
    0x00040b98 str r3, [r5]                                      |     *(r5) = r3;
    0x00040b9a mov.w r5, 0x28c0                                  |     r5 = case.0x5984c.0;
    0x00040b9e blx 0x2179c                                       |     fcn_0002179c ();
    0x00040ba2 vstr d0, [r7, 8]                                  |     __asm ("vstr d0, [r7, 8]");
    0x00040ba6 b.w 0x3f820                                       |     goto label_11;
    0x00040baa ldr r2, [r4, 0x20]                                |     r2 = *((r4 + 0x20));
    0x00040bac cmp r2, 0                                         |     
                                                                 |     if (r2 > 0) {
    0x00040bae ble 0x40bcc                                       |         
    0x00040bb0 ldr r3, [r4, 0x6c]                                |         r3 = *((r4 + 0x6c));
    0x00040bb2 ldr r0, [r4, 0xc]                                 |         r0 = *((r4 + 0xc));
    0x00040bb4 ldr r1, [r4, 0x14]                                |         r1 = *((r4 + 0x14));
    0x00040bb6 add r3, r2                                        |         r3 += r2;
    0x00040bb8 ldrb r3, [r3, -0x1]                               |         r3 = *((r3 - 0x1));
    0x00040bbc ldr.w r1, [r1, r0, lsl 2]                         |         offset_28 = r0 << 2;
                                                                 |         r1 = *((r1 + offset_28));
    0x00040bc0 sub.w r3, r3, 0xa                                 |         r3 -= 0xa;
    0x00040bc4 clz r3, r3                                        |         r3 &= r3;
    0x00040bc8 lsrs r3, r3, 5                                    |         r3 >>= 5;
    0x00040bca str r3, [r1, 0x1c]                                |         *((r1 + 0x1c)) = r3;
                                                                 |     }
    0x00040bcc ldr r5, [r4]                                      |     r5 = *(r4);
    0x00040bce ldr r3, [r4, 0x2c]                                |     r3 = *((r4 + 0x2c));
    0x00040bd0 add.w r1, r5, 0x2000                              |     r1 = r5 + case.0x5984c.0;
    0x00040bd4 ldr.w r7, [r1, 0xd94]                             |     r7 = case.0x5984c.0;
    0x00040bd8 cmp r3, 2                                         |     
    0x00040bda itttt ls                                          |     
                                                                 |     if (r3 > 2) {
    0x00040bdc movls r3, 0x2c                                    |         r3 = 0x2c;
                                                                 |     }
                                                                 |     if (r3 <= 2) {
    0x00040bde mlals r3, r3, r7, r5                              |         __asm ("mlals r3, r3, r7, r5");
                                                                 |     }
                                                                 |     if (r3 > 2) {
    0x00040be2 ldrls r0, [r3, 0x1b0]                             |         r0 = case.0x5984c.0;
                                                                 |     }
                                                                 |     if (r3 <= 2) {
    0x00040be6 str.w r0, [r3, 0x1a8]                             |         __asm ("str.w r0, case.0x5984c.0");
                                                                 |     }
    0x00040bea movs r3, 0x2c                                     |     r3 = 0x2c;
    0x00040bec mla r3, r3, r7, r5                                |     __asm ("mla r3, r3, r7, r5");
    0x00040bf0 ldr.w r0, [r1, 0xdb8]                             |     r0 = case.0x5984c.0;
    0x00040bf4 ldr.w r1, [r3, 0x1b0]                             |     r1 = case.0x5984c.0;
    0x00040bf8 add r1, r2                                        |     r1 += r2;
    0x00040bfa str.w r1, [r3, 0x1b0]                             |     __asm ("str.w r1, case.0x5984c.0");
                                                                 |     if (r0 != 0) {
    0x00040bfe cbz r0, 0x40c06                                   |         
    0x00040c00 ldr r1, [r4, 0x6c]                                |         r1 = *((r4 + 0x6c));
    0x00040c02 blx 0x1ffec                                       |         fcn_0001ffec ();
                                                                 |     }
    0x00040c06 movs r3, 0x2c                                     |     r3 = 0x2c;
    0x00040c08 ldr r6, [r4, 0x7c]                                |     r6 = *((r4 + 0x7c));
    0x00040c0a mla r4, r3, r7, r5                                |     __asm ("mla r4, r3, r7, r5");
    0x00040c0e movw r5, 0x28b4                                   |     r5 = (r5 & 0xFFFF0000) | (case.0x5984c.0 & 0xFFFF);
    0x00040c12 add.w r4, r4, 0x1a4                               |     r4 += case.0x5984c.0;
    0x00040c16 ldm r4!, {r0, r1, r2, r3}                         |     r0 = *(r4!);
                                                                 |     r1 = *((r4! + 4));
                                                                 |     r2 = *((r4! + 8));
                                                                 |     r3 = *((r4! + 12));
    0x00040c18 stm r6!, {r0, r1, r2, r3}                         |     *(r6!) = r0;
                                                                 |     *((r6! + 4)) = r1;
                                                                 |     *((r6! + 8)) = r2;
                                                                 |     *((r6! + 12)) = r3;
    0x00040c1a ldr r3, [r4]                                      |     r3 = *(r4);
    0x00040c1c str r3, [r6]                                      |     *(r6) = r3;
    0x00040c1e b.w 0x3f820                                       |     goto label_11;
    0x00040c22 ldr r2, [r4, 0x20]                                |     r2 = *((r4 + 0x20));
    0x00040c24 ldr.w ip, [r4, 0x6c]                              |     ip = *((r4 + 0x6c));
    0x00040c28 cmp r2, 0                                         |     
                                                                 |     if (r2 > 0) {
    0x00040c2a ble 0x40c48                                       |         
    0x00040c2c ldr r3, [r4, 0x14]                                |         r3 = *((r4 + 0x14));
    0x00040c2e ldr r1, [r4, 0xc]                                 |         r1 = *((r4 + 0xc));
    0x00040c30 ldr.w r1, [r3, r1, lsl 2]                         |         offset_29 = r1 << 2;
                                                                 |         r1 = *((r3 + offset_29));
    0x00040c34 add.w r3, ip, r2                                  |         r3 = ip + r2;
    0x00040c38 ldrb r3, [r3, -0x1]                               |         r3 = *((r3 - 0x1));
    0x00040c3c sub.w r3, r3, 0xa                                 |         r3 -= 0xa;
    0x00040c40 clz r3, r3                                        |         r3 &= r3;
    0x00040c44 lsrs r3, r3, 5                                    |         r3 >>= 5;
    0x00040c46 str r3, [r1, 0x1c]                                |         *((r1 + 0x1c)) = r3;
                                                                 |     }
    0x00040c48 ldr.w sl, [r4]                                    |     sl = *(r4);
    0x00040c4c ldr r1, [r4, 0x2c]                                |     r1 = *((r4 + 0x2c));
    0x00040c4e add.w r0, sl, 0x2000                              |     r0 = sl + case.0x5984c.0;
    0x00040c52 ldr.w r3, [r0, 0xd94]                             |     r3 = case.0x5984c.0;
    0x00040c56 cmp r1, 2                                         |     
    0x00040c58 it ls                                             |     
                                                                 |     if (r1 > 2) {
    0x00040c5a movls lr, 0x2c                                    |         lr = 0x2c;
                                                                 |     }
    0x00040c5e ldr.w r0, [r0, 0xdb8]                             |     r0 = case.0x5984c.0;
    0x00040c62 ittt ls                                           |     
                                                                 |     if (r1 <= 2) {
    0x00040c64 mlals lr, lr, r3, sl                              |         __asm ("mlals lr, lr, r3, sl");
                                                                 |     }
                                                                 |     if (r1 > 2) {
    0x00040c68 ldrls r1, [lr, 0x1b0]                             |         r1 = case.0x5984c.0;
                                                                 |     }
                                                                 |     if (r1 <= 2) {
    0x00040c6c str.w r1, [lr, 0x1a8]                             |         __asm ("str.w r1, case.0x5984c.0");
                                                                 |     }
    0x00040c70 mov.w lr, 0x2c                                    |     lr = 0x2c;
    0x00040c74 mla lr, lr, r3, sl                                |     __asm ("mla lr, lr, r3, sl");
    0x00040c78 ldr.w r1, [lr, 0x1b0]                             |     r1 = case.0x5984c.0;
    0x00040c7c add r1, r2                                        |     r1 += r2;
    0x00040c7e str.w r1, [lr, 0x1b0]                             |     __asm ("str.w r1, case.0x5984c.0");
    0x00040c82 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00040c84 beq.w 0x42000                                     |         goto label_91;
                                                                 |     }
    0x00040c88 mov r1, ip                                        |     r1 = ip;
    0x00040c8a str r3, [sp, 0xc]                                 |     var_ch = r3;
    0x00040c8c blx 0x1ffec                                       |     fcn_0001ffec ();
    0x00040c90 ldr.w ip, [r4, 0x6c]                              |     ip = *((r4 + 0x6c));
    0x00040c94 ldr r2, [r4]                                      |     r2 = *(r4);
    0x00040c96 ldr r3, [sp, 0xc]                                 |     r3 = var_ch;
    0x00040c98 b.w 0x42002                                       |     goto label_92;
    0x00040c9c ldr r2, [r4, 0x20]                                |     r2 = *((r4 + 0x20));
    0x00040c9e ldr r6, [r4, 0x6c]                                |     r6 = *((r4 + 0x6c));
    0x00040ca0 cmp r2, 0                                         |     
                                                                 |     if (r2 > 0) {
    0x00040ca2 ble 0x40cbe                                       |         
    0x00040ca4 ldr r3, [r4, 0x14]                                |         r3 = *((r4 + 0x14));
    0x00040ca6 ldr r1, [r4, 0xc]                                 |         r1 = *((r4 + 0xc));
    0x00040ca8 ldr.w r1, [r3, r1, lsl 2]                         |         offset_30 = r1 << 2;
                                                                 |         r1 = *((r3 + offset_30));
    0x00040cac adds r3, r6, r2                                   |         r3 = r6 + r2;
    0x00040cae ldrb r3, [r3, -0x1]                               |         r3 = *((r3 - 0x1));
    0x00040cb2 sub.w r3, r3, 0xa                                 |         r3 -= 0xa;
    0x00040cb6 clz r3, r3                                        |         r3 &= r3;
    0x00040cba lsrs r3, r3, 5                                    |         r3 >>= 5;
    0x00040cbc str r3, [r1, 0x1c]                                |         *((r1 + 0x1c)) = r3;
                                                                 |     }
    0x00040cbe ldr r5, [r4]                                      |     r5 = *(r4);
    0x00040cc0 ldr r3, [r4, 0x2c]                                |     r3 = *((r4 + 0x2c));
    0x00040cc2 add.w r0, r5, 0x2000                              |     r0 = r5 + case.0x5984c.0;
    0x00040cc6 ldr.w r7, [r0, 0xd94]                             |     r7 = case.0x5984c.0;
    0x00040cca cmp r3, 2                                         |     
    0x00040ccc it ls                                             |     
                                                                 |     if (r3 > 2) {
    0x00040cce movls r3, 0x2c                                    |         r3 = 0x2c;
                                                                 |     }
    0x00040cd0 ldr.w r0, [r0, 0xdb8]                             |     r0 = case.0x5984c.0;
    0x00040cd4 ittt ls                                           |     
                                                                 |     if (r3 <= 2) {
    0x00040cd6 mlals r3, r3, r7, r5                              |         __asm ("mlals r3, r3, r7, r5");
                                                                 |     }
                                                                 |     if (r3 > 2) {
    0x00040cda ldrls r1, [r3, 0x1b0]                             |         r1 = case.0x5984c.0;
                                                                 |     }
                                                                 |     if (r3 <= 2) {
    0x00040cde str.w r1, [r3, 0x1a8]                             |         __asm ("str.w r1, case.0x5984c.0");
                                                                 |     }
    0x00040ce2 movs r3, 0x2c                                     |     r3 = 0x2c;
    0x00040ce4 mla r3, r3, r7, r5                                |     __asm ("mla r3, r3, r7, r5");
    0x00040ce8 ldr.w r1, [r3, 0x1b0]                             |     r1 = case.0x5984c.0;
    0x00040cec add r1, r2                                        |     r1 += r2;
    0x00040cee str.w r1, [r3, 0x1b0]                             |     __asm ("str.w r1, case.0x5984c.0");
    0x00040cf2 mov r3, r5                                        |     r3 = r5;
                                                                 |     if (r0 != 0) {
    0x00040cf4 cbz r0, 0x40d00                                   |         
    0x00040cf6 mov r1, r6                                        |         r1 = r6;
    0x00040cf8 blx 0x1ffec                                       |         fcn_0001ffec ();
    0x00040cfc ldr r3, [r4]                                      |         r3 = *(r4);
    0x00040cfe ldr r6, [r4, 0x6c]                                |         r6 = *((r4 + 0x6c));
                                                                 |     }
    0x00040d00 add.w r3, r3, 0x2000                              |     r3 += case.0x5984c.0;
    0x00040d04 ldr.w ip, [r3, 0xda8]                             |     ip = case.0x5984c.0;
    0x00040d08 movs r3, 0x2c                                     |     r3 = 0x2c;
    0x00040d0a mla r5, r3, r7, r5                                |     __asm ("mla r5, r3, r7, r5");
    0x00040d0e ldr r7, [r4, 0x7c]                                |     r7 = *((r4 + 0x7c));
    0x00040d10 ldrd lr, sb, [ip, 4]                              |     __asm ("ldrd lr, sb, [ip, 4]");
    0x00040d14 add.w r5, r5, 0x1a4                               |     r5 += case.0x5984c.0;
    0x00040d18 ldm r5!, {r0, r1, r2, r3}                         |     r0 = *(r5!);
                                                                 |     r1 = *((r5! + 4));
                                                                 |     r2 = *((r5! + 8));
                                                                 |     r3 = *((r5! + 12));
    0x00040d1a add.w r8, lr, 1                                   |     r8 = lr + 1;
    0x00040d1e cmp r8, sb                                        |     
    0x00040d20 stm r7!, {r0, r1, r2, r3}                         |     *(r7!) = r0;
                                                                 |     *((r7! + 4)) = r1;
                                                                 |     *((r7! + 8)) = r2;
                                                                 |     *((r7! + 12)) = r3;
    0x00040d22 ldr r3, [r5]                                      |     r3 = *(r5);
    0x00040d24 str r3, [r7]                                      |     *(r7) = r3;
    0x00040d26 ldrb r2, [r6]                                     |     r2 = *(r6);
                                                                 |     if (r8 >= sb) {
    0x00040d28 bhs.w 0x41f68                                     |         goto label_93;
                                                                 |     }
    0x00040d2c ldr.w r3, [ip]                                    |     r3 = *(ip);
    0x00040d30 movs r1, 0                                        |     r1 = 0;
    0x00040d32 str.w r8, [ip, 4]                                 |     __asm ("str.w r8, [ip, 4]");
    0x00040d36 strb.w r2, [r3, lr]                               |     *((r3 + lr)) = r2;
    0x00040d3a ldrd r2, r3, [ip]                                 |     __asm ("ldrd r2, r3, [ip]");
    0x00040d3e strb r1, [r2, r3]                                 |     *((r2 + r3)) = r1;
                                                                 | label_26:
    0x00040d40 mov r0, r4                                        |     r0 = r4;
    0x00040d42 bl 0x3e9d8                                        |     fcn_0003e9d8 (r0);
    0x00040d46 ldr r3, [r4]                                      |     r3 = *(r4);
    0x00040d48 add.w r3, r3, 0x2000                              |     r3 += case.0x5984c.0;
    0x00040d4c ldr.w r2, [r3, 0xdb8]                             |     r2 = case.0x5984c.0;
    0x00040d50 cmp r2, 0                                         |     
                                                                 |     if (r2 == 0) {
    0x00040d52 beq.w 0x3f9ec                                     |         goto label_14;
                                                                 |     }
    0x00040d56 ldr r1, [r4, 0x2c]                                |     r1 = *((r4 + 0x2c));
    0x00040d58 cmp r1, 2                                         |     
                                                                 |     if (r1 > 2) {
    0x00040d5a bhi.w 0x3f9ec                                     |         goto label_14;
                                                                 |     }
    0x00040d5e ldrd r1, r2, [r2]                                 |     __asm ("ldrd r1, r2, [r2]");
    0x00040d62 ldr.w r0, [r3, 0xdb4]                             |     r0 = case.0x5984c.0;
    0x00040d66 blx 0x1ffec                                       |     fcn_0001ffec ();
    0x00040d6a ldr r3, [r4]                                      |     r3 = *(r4);
    0x00040d6c movs r1, 0                                        |     r1 = 0;
    0x00040d6e add.w r3, r3, 0x2000                              |     r3 += case.0x5984c.0;
    0x00040d72 ldr.w r0, [r3, 0xdb8]                             |     r0 = case.0x5984c.0;
    0x00040d76 blx 0x1fc8c                                       |     fcn_0001fc8c ();
    0x00040d7a b.w 0x3f9ec                                       |     goto label_14;
    0x00040d7e ldr r2, [r4, 0x20]                                |     r2 = *((r4 + 0x20));
    0x00040d80 ldr r7, [r4, 0x6c]                                |     r7 = *((r4 + 0x6c));
    0x00040d82 cmp r2, 0                                         |     
                                                                 |     if (r2 > 0) {
    0x00040d84 ble 0x40da0                                       |         
    0x00040d86 ldr r3, [r4, 0x14]                                |         r3 = *((r4 + 0x14));
    0x00040d88 ldr r1, [r4, 0xc]                                 |         r1 = *((r4 + 0xc));
    0x00040d8a ldr.w r1, [r3, r1, lsl 2]                         |         offset_31 = r1 << 2;
                                                                 |         r1 = *((r3 + offset_31));
    0x00040d8e adds r3, r7, r2                                   |         r3 = r7 + r2;
    0x00040d90 ldrb r3, [r3, -0x1]                               |         r3 = *((r3 - 0x1));
    0x00040d94 sub.w r3, r3, 0xa                                 |         r3 -= 0xa;
    0x00040d98 clz r3, r3                                        |         r3 &= r3;
    0x00040d9c lsrs r3, r3, 5                                    |         r3 >>= 5;
    0x00040d9e str r3, [r1, 0x1c]                                |         *((r1 + 0x1c)) = r3;
                                                                 |     }
    0x00040da0 ldr r5, [r4]                                      |     r5 = *(r4);
    0x00040da2 ldr r3, [r4, 0x2c]                                |     r3 = *((r4 + 0x2c));
    0x00040da4 add.w r0, r5, 0x2000                              |     r0 = r5 + case.0x5984c.0;
    0x00040da8 ldr.w r6, [r0, 0xd94]                             |     r6 = case.0x5984c.0;
    0x00040dac cmp r3, 2                                         |     
    0x00040dae it ls                                             |     
                                                                 |     if (r3 > 2) {
    0x00040db0 movls r3, 0x2c                                    |         r3 = 0x2c;
                                                                 |     }
    0x00040db2 ldr.w r0, [r0, 0xdb8]                             |     r0 = case.0x5984c.0;
    0x00040db6 ittt ls                                           |     
                                                                 |     if (r3 <= 2) {
    0x00040db8 mlals r3, r3, r6, r5                              |         __asm ("mlals r3, r3, r6, r5");
                                                                 |     }
                                                                 |     if (r3 > 2) {
    0x00040dbc ldrls r1, [r3, 0x1b0]                             |         r1 = case.0x5984c.0;
                                                                 |     }
                                                                 |     if (r3 <= 2) {
    0x00040dc0 str.w r1, [r3, 0x1a8]                             |         __asm ("str.w r1, case.0x5984c.0");
                                                                 |     }
    0x00040dc4 movs r3, 0x2c                                     |     r3 = 0x2c;
    0x00040dc6 mla r3, r3, r6, r5                                |     __asm ("mla r3, r3, r6, r5");
    0x00040dca ldr.w r1, [r3, 0x1b0]                             |     r1 = case.0x5984c.0;
    0x00040dce add r1, r2                                        |     r1 += r2;
    0x00040dd0 str.w r1, [r3, 0x1b0]                             |     __asm ("str.w r1, case.0x5984c.0");
    0x00040dd4 mov r3, r5                                        |     r3 = r5;
                                                                 |     if (r0 != 0) {
    0x00040dd6 cbz r0, 0x40de2                                   |         
    0x00040dd8 mov r1, r7                                        |         r1 = r7;
    0x00040dda blx 0x1ffec                                       |         fcn_0001ffec ();
    0x00040ddc invalid                                           |         
    0x00040de0 ldr r7, [r4, 0x6c]                                |         r7 = *((r4 + 0x6c));
                                                                 |     }
    0x00040de2 add.w ip, r3, 0x2000                              |     
    0x00040de6 movs r3, 0x2c                                     |     r3 = 0x2c;
    0x00040de8 mla r5, r3, r6, r5                                |     __asm ("mla r5, r3, r6, r5");
    0x00040dec ldr r6, [r4, 0x7c]                                |     r6 = *((r4 + 0x7c));
    0x00040dee add.w r5, r5, 0x1a4                               |     r5 += case.0x5984c.0;
    0x00040df2 ldm r5!, {r0, r1, r2, r3}                         |     r0 = *(r5!);
                                                                 |     r1 = *((r5! + 4));
                                                                 |     r2 = *((r5! + 8));
                                                                 |     r3 = *((r5! + 12));
    0x00040df4 stm r6!, {r0, r1, r2, r3}                         |     *(r6!) = r0;
                                                                 |     *((r6! + 4)) = r1;
                                                                 |     *((r6! + 8)) = r2;
                                                                 |     *((r6! + 12)) = r3;
    0x00040df6 mov r1, r7                                        |     r1 = r7;
    0x00040df8 ldr r3, [r5]                                      |     r3 = *(r5);
    0x00040dfa ldr.w r0, [ip, 0xda8]                             |     r0 = case.0x5984c.0;
    0x00040dfe str r3, [r6]                                      |     *(r6) = r3;
    0x00040e00 blx 0x23764                                       |     fcn_00023764 ();
    0x00040e04 ldr r3, [r4]                                      |     r3 = *(r4);
    0x00040e06 add.w r3, r3, 0x2000                              |     r3 += case.0x5984c.0;
    0x00040e0a ldr.w r2, [r3, 0xdb8]                             |     r2 = case.0x5984c.0;
    0x00040e0e cmp r2, 0                                         |     
                                                                 |     if (r2 == 0) {
    0x00040e10 beq.w 0x3f9ec                                     |         goto label_14;
                                                                 |     }
    0x00040e14 ldr r1, [r4, 0x2c]                                |     r1 = *((r4 + 0x2c));
    0x00040e16 cmp r1, 2                                         |     
                                                                 |     if (r1 > 2) {
    0x00040e18 bhi.w 0x3f9ec                                     |         goto label_14;
                                                                 |     }
    0x00040e1c ldrd r1, r2, [r2]                                 |     __asm ("ldrd r1, r2, [r2]");
    0x00040e20 ldr.w r0, [r3, 0xdb4]                             |     r0 = case.0x5984c.0;
    0x00040e24 blx 0x1ffec                                       |     fcn_0001ffec ();
    0x00040e28 ldr r3, [r4]                                      |     r3 = *(r4);
    0x00040e2a movs r1, 0                                        |     r1 = 0;
    0x00040e2c add.w r3, r3, 0x2000                              |     r3 += case.0x5984c.0;
    0x00040e30 ldr.w r0, [r3, 0xdb8]                             |     r0 = case.0x5984c.0;
    0x00040e34 blx 0x1fc8c                                       |     fcn_0001fc8c ();
    0x00040e38 b.w 0x3f9ec                                       |     goto label_14;
    0x00040e3c ldr r2, [r4, 0x20]                                |     r2 = *((r4 + 0x20));
    0x00040e3e cmp r2, 0                                         |     
                                                                 |     if (r2 > 0) {
    0x00040e40 ble 0x40e5e                                       |         
    0x00040e42 ldr r3, [r4, 0x6c]                                |         r3 = *((r4 + 0x6c));
    0x00040e44 ldr r1, [r4, 0xc]                                 |         r1 = *((r4 + 0xc));
    0x00040e46 ldr r0, [r4, 0x14]                                |         r0 = *((r4 + 0x14));
    0x00040e48 add r3, r2                                        |         r3 += r2;
    0x00040e4a ldrb r3, [r3, -0x1]                               |         r3 = *((r3 - 0x1));
    0x00040e4e ldr.w r1, [r0, r1, lsl 2]                         |         offset_32 = r1 << 2;
                                                                 |         r1 = *((r0 + offset_32));
    0x00040e52 sub.w r3, r3, 0xa                                 |         r3 -= 0xa;
    0x00040e56 clz r3, r3                                        |         r3 &= r3;
    0x00040e5a lsrs r3, r3, 5                                    |         r3 >>= 5;
    0x00040e5c str r3, [r1, 0x1c]                                |         *((r1 + 0x1c)) = r3;
                                                                 |     }
    0x00040e5e ldr r5, [r4]                                      |     r5 = *(r4);
    0x00040e60 ldr r3, [r4, 0x2c]                                |     r3 = *((r4 + 0x2c));
    0x00040e62 add.w r0, r5, 0x2000                              |     r0 = r5 + case.0x5984c.0;
    0x00040e66 ldr.w r6, [r0, 0xd94]                             |     r6 = case.0x5984c.0;
    0x00040e6a cmp r3, 2                                         |     
    0x00040e6c it ls                                             |     
                                                                 |     if (r3 > 2) {
    0x00040e6e movls r3, 0x2c                                    |         r3 = 0x2c;
                                                                 |     }
    0x00040e70 ldr.w r0, [r0, 0xdb8]                             |     r0 = case.0x5984c.0;
    0x00040e74 ittt ls                                           |     
                                                                 |     if (r3 <= 2) {
    0x00040e76 mlals r3, r3, r6, r5                              |         __asm ("mlals r3, r3, r6, r5");
                                                                 |     }
                                                                 |     if (r3 > 2) {
    0x00040e7a ldrls r1, [r3, 0x1b0]                             |         r1 = case.0x5984c.0;
                                                                 |     }
                                                                 |     if (r3 <= 2) {
    0x00040e7e str.w r1, [r3, 0x1a8]                             |         __asm ("str.w r1, case.0x5984c.0");
                                                                 |     }
    0x00040e82 movs r3, 0x2c                                     |     r3 = 0x2c;
    0x00040e84 mla r3, r3, r6, r5                                |     __asm ("mla r3, r3, r6, r5");
    0x00040e88 ldr.w r1, [r3, 0x1b0]                             |     r1 = case.0x5984c.0;
    0x00040e8c add r1, r2                                        |     r1 += r2;
    0x00040e8e str.w r1, [r3, 0x1b0]                             |     __asm ("str.w r1, case.0x5984c.0");
    0x00040e92 mov r3, r5                                        |     r3 = r5;
                                                                 |     if (r0 != 0) {
    0x00040e94 cbz r0, 0x40e9e                                   |         
    0x00040e96 ldr r1, [r4, 0x6c]                                |         r1 = *((r4 + 0x6c));
    0x00040e98 blx 0x1ffec                                       |         fcn_0001ffec ();
    0x00040e9c ldr r3, [r4]                                      |         r3 = *(r4);
                                                                 |     }
    0x00040e9e movs r2, 0x2c                                     |     r2 = 0x2c;
    0x00040ea0 add.w r7, r3, 0x2000                              |     r7 = r3 + case.0x5984c.0;
    0x00040ea4 mla r5, r2, r6, r5                                |     __asm ("mla r5, r2, r6, r5");
    0x00040ea8 ldr.w r1, [r7, 0xd94]                             |     r1 = case.0x5984c.0;
    0x00040eac ldr r6, [r4, 0x7c]                                |     r6 = *((r4 + 0x7c));
    0x00040eae mov.w sb, 1                                       |     sb = 1;
    0x00040eb2 add.w r5, r5, 0x1a4                               |     r5 += case.0x5984c.0;
    0x00040eb6 mov r8, r6                                        |     r8 = r6;
    0x00040eb8 mla lr, r2, r1, r3                                |     __asm ("mla lr, r2, r1, r3");
    0x00040ebc ldm r5!, {r0, r1, r2, r3}                         |     r0 = *(r5!);
                                                                 |     r1 = *((r5! + 4));
                                                                 |     r2 = *((r5! + 8));
                                                                 |     r3 = *((r5! + 12));
    0x00040ebe stm r6!, {r0, r1, r2, r3}                         |     *(r6!) = r0;
                                                                 |     *((r6! + 4)) = r1;
                                                                 |     *((r6! + 8)) = r2;
                                                                 |     *((r6! + 12)) = r3;
    0x00040ec0 add.w ip, lr, 0x1a4                               |     
    0x00040ec4 ldr r3, [r5]                                      |     r3 = *(r5);
    0x00040ec6 str r3, [r6]                                      |     *(r6) = r3;
    0x00040ec8 ldm.w ip!, {r0, r1, r2, r3}                       |     r0 = *(ip!);
                                                                 |     r1 = *((ip! + 4));
                                                                 |     r2 = *((ip! + 8));
                                                                 |     r3 = *((ip! + 12));
    0x00040ecc stm.w r8!, {r0, r1, r2, r3}                       |     *(r8!) = r0;
                                                                 |     *((r8! + 4)) = r1;
                                                                 |     *((r8! + 8)) = r2;
                                                                 |     *((r8! + 12)) = r3;
    0x00040ed0 ldr.w r3, [ip]                                    |     r3 = *(ip);
    0x00040ed4 str r3, [r6]                                      |     *(r6) = r3;
    0x00040ed6 ldr.w r3, [lr, 0x1ac]                             |     r3 = case.0x5984c.0;
    0x00040eda str.w sb, [lr, 0x1a8]                             |     __asm ("str.w sb, case.0x5984c.0");
    0x00040ede str.w sb, [lr, 0x1b0]                             |     __asm ("str.w sb, case.0x5984c.0");
    0x00040ee2 add r3, sb                                        |     r3 += sb;
    0x00040ee4 str.w r3, [lr, 0x1a4]                             |     __asm ("str.w r3, case.0x5984c.0");
    0x00040ee8 str.w r3, [lr, 0x1ac]                             |     __asm ("str.w r3, case.0x5984c.0");
    0x00040eec ldr.w r5, [r7, 0xda0]                             |     r5 = case.0x5984c.0;
    0x00040ef0 cmp r5, 0                                         |     
                                                                 |     if (r5 != 0) {
    0x00040ef2 bne.w 0x421ea                                     |         goto label_94;
                                                                 |     }
    0x00040ef6 ldr.w r0, [r7, 0xda8]                             |     r0 = case.0x5984c.0;
    0x00040efa ldr r1, [r4, 0x6c]                                |     r1 = *((r4 + 0x6c));
    0x00040efc blx 0x23764                                       |     fcn_00023764 ();
    0x00040f00 ldr r3, [r4]                                      |     r3 = *(r4);
    0x00040f02 add.w r3, r3, 0x2000                              |     r3 += case.0x5984c.0;
    0x00040f06 ldr.w r2, [r3, 0xdb8]                             |     r2 = case.0x5984c.0;
    0x00040f0a cmp r2, 0                                         |     
                                                                 |     if (r2 == 0) {
    0x00040f0c beq.w 0x3f9ec                                     |         goto label_14;
                                                                 |     }
    0x00040f10 ldr r1, [r4, 0x2c]                                |     r1 = *((r4 + 0x2c));
    0x00040f12 cmp r1, 2                                         |     
                                                                 |     if (r1 > 2) {
    0x00040f14 bhi.w 0x3f9ec                                     |         goto label_14;
                                                                 |     }
    0x00040f16 add r5, sp, 0x1a8                                 |     r5 = sp + case.0x5984c.0;
    0x00040f18 ldrd r1, r2, [r2]                                 |     __asm ("ldrd r1, r2, [r2]");
    0x00040f1c ldr.w r0, [r3, 0xdb4]                             |     r0 = case.0x5984c.0;
    0x00040f20 blx 0x1ffec                                       |     fcn_0001ffec ();
    0x00040f24 ldr r3, [r4]                                      |     r3 = *(r4);
    0x00040f26 mov r1, r5                                        |     r1 = r5;
    0x00040f28 add.w r3, r3, 0x2000                              |     r3 += case.0x5984c.0;
    0x00040f2c ldr.w r0, [r3, 0xdb8]                             |     r0 = case.0x5984c.0;
    0x00040f30 blx 0x1fc8c                                       |     fcn_0001fc8c ();
    0x00040f34 b.w 0x3f9ec                                       |     goto label_14;
    0x00040f38 ldr r2, [r4, 0x20]                                |     r2 = *((r4 + 0x20));
    0x00040f3a cmp r2, 0                                         |     
                                                                 |     if (r2 > 0) {
    0x00040f3c ble 0x40f5a                                       |         
    0x00040f3e ldr r3, [r4, 0x6c]                                |         r3 = *((r4 + 0x6c));
    0x00040f40 ldr r1, [r4, 0xc]                                 |         r1 = *((r4 + 0xc));
    0x00040f42 ldr r0, [r4, 0x14]                                |         r0 = *((r4 + 0x14));
    0x00040f44 add r3, r2                                        |         r3 += r2;
    0x00040f46 ldrb r3, [r3, -0x1]                               |         r3 = *((r3 - 0x1));
    0x00040f4a ldr.w r1, [r0, r1, lsl 2]                         |         offset_33 = r1 << 2;
                                                                 |         r1 = *((r0 + offset_33));
    0x00040f4e sub.w r3, r3, 0xa                                 |         r3 -= 0xa;
    0x00040f52 clz r3, r3                                        |         r3 &= r3;
    0x00040f56 lsrs r3, r3, 5                                    |         r3 >>= 5;
    0x00040f58 str r3, [r1, 0x1c]                                |         *((r1 + 0x1c)) = r3;
                                                                 |     }
    0x00040f5a ldr r1, [r4]                                      |     r1 = *(r4);
    0x00040f5c mov.w r8, 0x2c                                    |     r8 = 0x2c;
    0x00040f60 ldr r3, [r4, 0x2c]                                |     r3 = *((r4 + 0x2c));
    0x00040f62 add.w r7, r1, 0x2000                              |     r7 = r1 + case.0x5984c.0;
    0x00040f66 ldr.w r5, [r7, 0xd94]                             |     r5 = case.0x5984c.0;
    0x00040f6a cmp r3, 2                                         |     
    0x00040f6c itt ls                                            |     
                                                                 |     if (r3 > 2) {
    0x00040f6e movls r3, 0x2c                                    |         r3 = 0x2c;
                                                                 |     }
                                                                 |     if (r3 <= 2) {
    0x00040f70 mlals r3, r3, r5, r1                              |         __asm ("mlals r3, r3, r5, r1");
                                                                 |     }
    0x00040f74 mla r5, r8, r5, r1                                |     __asm ("mla r5, r8, r5, r1");
    0x00040f78 itt ls                                            |     
                                                                 |     if (r3 > 2) {
    0x00040f7a ldrls r0, [r3, 0x1b0]                             |         r0 = case.0x5984c.0;
                                                                 |     }
                                                                 |     if (r3 <= 2) {
    0x00040f7e str.w r0, [r3, 0x1a8]                             |         __asm ("str.w r0, case.0x5984c.0");
                                                                 |     }
    0x00040f80 lsls r0, r5, 6                                    |     r0 = r5 << 6;
    0x00040f82 ldr.w r0, [r7, 0xdb8]                             |     r0 = case.0x5984c.0;
    0x00040f86 ldr.w r3, [r5, 0x1b0]                             |     r3 = case.0x5984c.0;
    0x00040f8a add r3, r2                                        |     r3 += r2;
    0x00040f8c str.w r3, [r5, 0x1b0]                             |     __asm ("str.w r3, case.0x5984c.0");
    0x00040f90 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00040f92 beq.w 0x41ef6                                     |         goto label_95;
                                                                 |     }
    0x00040f96 ldr r1, [r4, 0x6c]                                |     r1 = *((r4 + 0x6c));
    0x00040f98 add.w r6, r5, 0x1a4                               |     r6 = r5 + case.0x5984c.0;
    0x00040f9c blx 0x1ffec                                       |     fcn_0001ffec ();
    0x00040fa0 ldr r7, [r4]                                      |     r7 = *(r4);
    0x00040fa2 mov.w sb, 1                                       |     sb = 1;
    0x00040fa6 ldr r5, [r4, 0x7c]                                |     r5 = *((r4 + 0x7c));
    0x00040fa8 add.w ip, r7, 0x2000                              |     
    0x00040fac ldr.w r3, [ip, 0xd94]                             |     r3 = case.0x5984c.0;
    0x00040fb0 ldr.w lr, [ip, 0xdb8]                             |     
    0x00040fb4 mla r7, r8, r3, r7                                |     __asm ("mla r7, r8, r3, r7");
    0x00040fb8 ldm r6!, {r0, r1, r2, r3}                         |     r0 = *(r6!);
                                                                 |     r1 = *((r6! + 4));
                                                                 |     r2 = *((r6! + 8));
                                                                 |     r3 = *((r6! + 12));
    0x00040fba stm r5!, {r0, r1, r2, r3}                         |     *(r5!) = r0;
                                                                 |     *((r5! + 4)) = r1;
                                                                 |     *((r5! + 8)) = r2;
                                                                 |     *((r5! + 12)) = r3;
    0x00040fbc ldr r3, [r6]                                      |     r3 = *(r6);
    0x00040fbe str r3, [r5]                                      |     *(r5) = r3;
    0x00040fc0 ldr.w r3, [r7, 0x1ac]                             |     r3 = case.0x5984c.0;
    0x00040fc4 str.w sb, [r7, 0x1b0]                             |     __asm ("str.w sb, case.0x5984c.0");
    0x00040fc8 add r3, sb                                        |     r3 += sb;
    0x00040fca str.w r3, [r7, 0x1ac]                             |     __asm ("str.w r3, case.0x5984c.0");
    0x00040fce cmp.w lr, 0                                       |     
                                                                 |     if (lr == 0) {
    0x00040fd2 beq.w 0x3f9ec                                     |         goto label_14;
                                                                 |     }
    0x00040fd6 ldr r3, [r4, 0x2c]                                |     r3 = *((r4 + 0x2c));
    0x00040fd8 cmp r3, 2                                         |     
                                                                 |     if (r3 > 2) {
    0x00040fda bhi.w 0x3f9ec                                     |         goto label_14;
                                                                 |     }
    0x00040fde ldrd r1, r2, [lr]                                 |     __asm ("ldrd r1, r2, [lr]");
    0x00040fe2 ldr.w r0, [ip, 0xdb4]                             |     r0 = case.0x5984c.0;
    0x00040fe6 blx 0x1ffec                                       |     fcn_0001ffec ();
    0x00040fea ldr r3, [r4]                                      |     r3 = *(r4);
    0x00040fec movs r1, 0                                        |     r1 = 0;
    0x00040fee add.w r3, r3, 0x2000                              |     r3 += case.0x5984c.0;
    0x00040ff0 strh r0, [r0, r4]                                 |     *((r0 + r4)) = r0;
    0x00040ff2 ldr.w r0, [r3, 0xdb8]                             |     r0 = case.0x5984c.0;
    0x00040ff6 blx 0x1fc8c                                       |     fcn_0001fc8c ();
    0x00040ffa b.w 0x3f9ec                                       |     goto label_14;
    0x00040ffe ldr r7, [r4, 0x20]                                |     r7 = *((r4 + 0x20));
    0x00041000 ldr.w ip, [r4, 0x6c]                              |     ip = *((r4 + 0x6c));
    0x00041004 cmp r7, 0                                         |     
                                                                 |     if (r7 > 0) {
    0x00041006 ble 0x41024                                       |         
    0x00041008 ldr r3, [r4, 0x14]                                |         r3 = *((r4 + 0x14));
    0x0004100a ldr r2, [r4, 0xc]                                 |         r2 = *((r4 + 0xc));
    0x0004100c ldr.w r2, [r3, r2, lsl 2]                         |         offset_34 = r2 << 2;
                                                                 |         r2 = *((r3 + offset_34));
    0x00041010 add.w r3, ip, r7                                  |         r3 = ip + r7;
    0x00041014 ldrb r3, [r3, -0x1]                               |         r3 = *((r3 - 0x1));
    0x00041018 sub.w r3, r3, 0xa                                 |         r3 -= 0xa;
    0x0004101c clz r3, r3                                        |         r3 &= r3;
    0x00041020 lsrs r3, r3, 5                                    |         r3 >>= 5;
    0x00041022 str r3, [r2, 0x1c]                                |         *((r2 + 0x1c)) = r3;
                                                                 |     }
    0x00041024 ldr r5, [r4]                                      |     r5 = *(r4);
    0x00041026 ldr r3, [r4, 0x2c]                                |     r3 = *((r4 + 0x2c));
    0x00041028 add.w r2, r5, 0x2000                              |     r2 = r5 + case.0x5984c.0;
    0x0004102c ldr.w r6, [r2, 0xd94]                             |     r6 = case.0x5984c.0;
    0x00041030 cmp r3, 2                                         |     
    0x00041032 it ls                                             |     
                                                                 |     if (r3 > 2) {
    0x00041034 movls r3, 0x2c                                    |         r3 = 0x2c;
                                                                 |     }
    0x00041036 ldr.w r0, [r2, 0xdb8]                             |     r0 = case.0x5984c.0;
    0x0004103a ittt ls                                           |     
                                                                 |     if (r3 <= 2) {
    0x0004103c mlals r3, r3, r6, r5                              |         __asm ("mlals r3, r3, r6, r5");
                                                                 |     }
                                                                 |     if (r3 > 2) {
    0x00041040 ldrls r1, [r3, 0x1b0]                             |         r1 = case.0x5984c.0;
                                                                 |     }
                                                                 |     if (r3 <= 2) {
    0x00041044 str.w r1, [r3, 0x1a8]                             |         __asm ("str.w r1, case.0x5984c.0");
                                                                 |     }
    0x00041048 movs r3, 0x2c                                     |     r3 = 0x2c;
    0x0004104a mla r3, r3, r6, r5                                |     __asm ("mla r3, r3, r6, r5");
    0x0004104e ldr.w r2, [r3, 0x1b0]                             |     r2 = case.0x5984c.0;
    0x00041050 movs r1, 0xb0                                     |     r1 = 0xb0;
    0x00041052 add r2, r7                                        |     r2 += r7;
    0x00041054 str.w r2, [r3, 0x1b0]                             |     __asm ("str.w r2, case.0x5984c.0");
                                                                 |     if (r0 != 0) {
    0x00041058 cbz r0, 0x41068                                   |         
    0x0004105a mov r2, r7                                        |         r2 = r7;
    0x0004105c mov r1, ip                                        |         r1 = ip;
    0x0004105e blx 0x1ffec                                       |         fcn_0001ffec ();
    0x00041062 ldr.w ip, [r4, 0x6c]                              |         ip = *((r4 + 0x6c));
    0x00041066 ldr r7, [r4, 0x20]                                |         r7 = *((r4 + 0x20));
                                                                 |     }
    0x00041068 movs r3, 0x2c                                     |     r3 = 0x2c;
    0x0004106a mla r5, r3, r6, r5                                |     __asm ("mla r5, r3, r6, r5");
    0x0004106e ldr r6, [r4, 0x7c]                                |     r6 = *((r4 + 0x7c));
    0x00041070 add.w r5, r5, 0x1a4                               |     r5 += case.0x5984c.0;
    0x00041074 ldm r5!, {r0, r1, r2, r3}                         |     r0 = *(r5!);
                                                                 |     r1 = *((r5! + 4));
                                                                 |     r2 = *((r5! + 8));
                                                                 |     r3 = *((r5! + 12));
    0x00041076 stm r6!, {r0, r1, r2, r3}                         |     *(r6!) = r0;
                                                                 |     *((r6! + 4)) = r1;
                                                                 |     *((r6! + 8)) = r2;
                                                                 |     *((r6! + 12)) = r3;
    0x00041078 movs r2, 1                                        |     r2 = 1;
    0x0004107a ldr r3, [r5]                                      |     r3 = *(r5);
    0x0004107c mov r1, r7                                        |     r1 = r7;
    0x0004107e mov r0, ip                                        |     r0 = ip;
    0x00041080 str r3, [r6]                                      |     *(r6) = r3;
    0x00041082 ldr r3, [r4, 8]                                   |     r3 = *((r4 + 8));
    0x00041084 blx 0x22a4c                                       |     fcn_00022a4c ();
    0x00041088 ldr r3, [r4]                                      |     r3 = *(r4);
    0x0004108a add.w r3, r3, 0x2000                              |     r3 += case.0x5984c.0;
    0x0004108e ldr.w r2, [r3, 0xdb8]                             |     r2 = case.0x5984c.0;
    0x00041092 cmp r2, 0                                         |     
                                                                 |     if (r2 == 0) {
    0x00041094 beq.w 0x3f9ec                                     |         goto label_14;
                                                                 |     }
    0x00041098 ldr r1, [r4, 0x2c]                                |     r1 = *((r4 + 0x2c));
    0x0004109a cmp r1, 2                                         |     
                                                                 |     if (r1 > 2) {
    0x0004109c bhi.w 0x3f9ec                                     |         goto label_14;
                                                                 |     }
    0x000410a0 ldrd r1, r2, [r2]                                 |     __asm ("ldrd r1, r2, [r2]");
    0x000410a4 ldr.w r0, [r3, 0xdb4]                             |     r0 = case.0x5984c.0;
    0x000410a8 blx 0x1ffec                                       |     fcn_0001ffec ();
    0x000410ac ldr r3, [r4]                                      |     r3 = *(r4);
    0x000410ae movs r1, 0                                        |     r1 = 0;
    0x000410b0 add.w r3, r3, 0x2000                              |     r3 += case.0x5984c.0;
    0x000410b4 ldr.w r0, [r3, 0xdb8]                             |     r0 = case.0x5984c.0;
    0x000410b8 blx 0x1fc8c                                       |     fcn_0001fc8c ();
    0x000410bc b.w 0x3f9ec                                       |     goto label_14;
    0x000410c0 ldr r2, [r4, 0x20]                                |     r2 = *((r4 + 0x20));
    0x000410c2 ldr.w ip, [r4, 0x6c]                              |     ip = *((r4 + 0x6c));
    0x000410c6 cmp r2, 0                                         |     
                                                                 |     if (r2 > 0) {
    0x000410c8 ble 0x410e6                                       |         
    0x000410ca ldr r3, [r4, 0x14]                                |         r3 = *((r4 + 0x14));
    0x000410cc ldr r1, [r4, 0xc]                                 |         r1 = *((r4 + 0xc));
    0x000410ce ldr.w r1, [r3, r1, lsl 2]                         |         offset_35 = r1 << 2;
                                                                 |         r1 = *((r3 + offset_35));
    0x000410d0 asrs r1, r4, 0x20                                 |         r1 = r4 >> 0x20;
    0x000410d2 add.w r3, ip, r2                                  |         r3 = ip + r2;
    0x000410d6 ldrb r3, [r3, -0x1]                               |         r3 = *((r3 - 0x1));
    0x000410da sub.w r3, r3, 0xa                                 |         r3 -= 0xa;
    0x000410de clz r3, r3                                        |         r3 &= r3;
    0x000410e2 lsrs r3, r3, 5                                    |         r3 >>= 5;
    0x000410e4 str r3, [r1, 0x1c]                                |         *((r1 + 0x1c)) = r3;
                                                                 |     }
    0x000410e6 ldr r5, [r4]                                      |     r5 = *(r4);
    0x000410e8 ldr r3, [r4, 0x2c]                                |     r3 = *((r4 + 0x2c));
    0x000410ea add.w r0, r5, 0x2000                              |     r0 = r5 + case.0x5984c.0;
    0x000410ee mov r7, r5                                        |     r7 = r5;
    0x000410f0 ldr.w r6, [r0, 0xd94]                             |     r6 = case.0x5984c.0;
    0x000410f4 cmp r3, 2                                         |     
    0x000410f6 it ls                                             |     
                                                                 |     if (r3 > 2) {
    0x000410f8 movls r3, 0x2c                                    |         r3 = 0x2c;
                                                                 |     }
    0x000410fa ldr.w r0, [r0, 0xdb8]                             |     r0 = case.0x5984c.0;
    0x000410fe ittt ls                                           |     
                                                                 |     if (r3 <= 2) {
    0x00041100 mlals r3, r3, r6, r5                              |         __asm ("mlals r3, r3, r6, r5");
                                                                 |     }
                                                                 |     if (r3 > 2) {
    0x00041104 ldrls r1, [r3, 0x1b0]                             |         r1 = case.0x5984c.0;
                                                                 |     }
                                                                 |     if (r3 <= 2) {
    0x00041108 str.w r1, [r3, 0x1a8]                             |         __asm ("str.w r1, case.0x5984c.0");
                                                                 |     }
    0x0004110c movs r3, 0x2c                                     |     r3 = 0x2c;
    0x0004110e mla r3, r3, r6, r5                                |     __asm ("mla r3, r3, r6, r5");
    0x00041112 ldr.w r1, [r3, 0x1b0]                             |     r1 = case.0x5984c.0;
    0x00041116 add r1, r2                                        |     r1 += r2;
    0x00041118 str.w r1, [r3, 0x1b0]                             |     __asm ("str.w r1, case.0x5984c.0");
                                                                 |     if (r0 != 0) {
    0x0004111c cbz r0, 0x4112a                                   |         
    0x0004111e mov r1, ip                                        |         r1 = ip;
    0x00041120 blx 0x1ffec                                       |         fcn_0001ffec ();
    0x00041124 ldr.w ip, [r4, 0x6c]                              |         ip = *((r4 + 0x6c));
    0x00041128 ldr r7, [r4]                                      |         r7 = *(r4);
                                                                 |     }
    0x0004112a movs r3, 0x2c                                     |     r3 = 0x2c;
    0x0004112c add.w r7, r7, 0x2000                              |     r7 += case.0x5984c.0;
    0x00041130 mla r5, r3, r6, r5                                |     __asm ("mla r5, r3, r6, r5");
    0x00041134 ldr r6, [r4, 0x7c]                                |     r6 = *((r4 + 0x7c));
    0x00041136 add.w r5, r5, 0x1a4                               |     r5 += case.0x5984c.0;
    0x0004113a ldm r5!, {r0, r1, r2, r3}                         |     r0 = *(r5!);
                                                                 |     r1 = *((r5! + 4));
                                                                 |     r2 = *((r5! + 8));
                                                                 |     r3 = *((r5! + 12));
    0x0004113c stm r6!, {r0, r1, r2, r3}                         |     *(r6!) = r0;
                                                                 |     *((r6! + 4)) = r1;
                                                                 |     *((r6! + 8)) = r2;
                                                                 |     *((r6! + 12)) = r3;
    0x0004113e ldr r3, [r5]                                      |     r3 = *(r5);
    0x00041140 str r3, [r6]                                      |     *(r6) = r3;
    0x00041142 ldrb.w r2, [ip]                                   |     r2 = *(ip);
    0x00041146 ldrb.w r3, [r7, 0xd99]                            |     r3 = case.0x5984c.0;
    0x0004114a cmp r2, r3                                        |     
    0x0004114c ldr.w r3, [r7, 0xd9c]                             |     r3 = case.0x5984c.0;
    0x00041150 itt eq                                            |     
                                                                 |     if (r2 != r3) {
    0x00041152 addeq r3, r3, -1                                  |         r3 += -1;
                                                                 |     }
                                                                 |     if (r2 == r3) {
    0x00041156 str.w r3, [r7, 0xd9c]                             |         __asm ("str.w r3, case.0x5984c.0");
                                                                 |     }
    0x0004115a cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x0004115c beq.w 0x4224a                                     |         goto label_96;
                                                                 |     }
    0x00041160 ldr.w r0, [r7, 0xda8]                             |     r0 = case.0x5984c.0;
    0x00041164 ldrb.w r2, [ip]                                   |     r2 = *(ip);
    0x00041168 ldrd r3, r5, [r0, 4]                              |     __asm ("ldrd r3, r5, [r0, 4]");
    0x0004116c adds r1, r3, 1                                    |     r1 = r3 + 1;
    0x0004116e cmp r1, r5                                        |     
                                                                 |     if (r1 >= r5) {
    0x00041170 bhs.w 0x41f76                                     |         goto label_97;
                                                                 |     }
    0x00041174 str r1, [r0, 4]                                   |     *((r0 + 4)) = r1;
    0x00041176 ldr r1, [r0]                                      |     r1 = *(r0);
    0x00041178 strb r2, [r1, r3]                                 |     *((r1 + r3)) = r2;
    0x0004117a movs r1, 0                                        |     r1 = 0;
    0x0004117c ldrd r2, r3, [r0]                                 |     __asm ("ldrd r2, r3, [r0]");
    0x00041180 strb r1, [r2, r3]                                 |     *((r2 + r3)) = r1;
    0x00041182 b.w 0x41f7e                                       |     goto label_98;
    0x00041186 ldr r2, [r4, 0x20]                                |     r2 = *((r4 + 0x20));
    0x00041188 cmp r2, 0                                         |     
                                                                 |     if (r2 > 0) {
    0x0004118a ble 0x411a8                                       |         
    0x0004118c ldr r3, [r4, 0x6c]                                |         r3 = *((r4 + 0x6c));
    0x0004118e ldr r0, [r4, 0xc]                                 |         r0 = *((r4 + 0xc));
    0x00041190 ldr r1, [r4, 0x14]                                |         r1 = *((r4 + 0x14));
    0x00041192 add r3, r2                                        |         r3 += r2;
    0x00041194 ldrb r3, [r3, -0x1]                               |         r3 = *((r3 - 0x1));
    0x00041198 ldr.w r1, [r1, r0, lsl 2]                         |         offset_36 = r0 << 2;
                                                                 |         r1 = *((r1 + offset_36));
    0x0004119c sub.w r3, r3, 0xa                                 |         r3 -= 0xa;
    0x000411a0 clz r3, r3                                        |         r3 &= r3;
    0x000411a4 lsrs r3, r3, 5                                    |         r3 >>= 5;
    0x000411a6 str r3, [r1, 0x1c]                                |         *((r1 + 0x1c)) = r3;
                                                                 |     }
    0x000411a8 ldr r5, [r4]                                      |     r5 = *(r4);
    0x000411aa ldr r3, [r4, 0x2c]                                |     r3 = *((r4 + 0x2c));
    0x000411ac add.w r1, r5, 0x2000                              |     r1 = r5 + case.0x5984c.0;
    0x000411b0 ldr.w r7, [r1, 0xd94]                             |     r7 = case.0x5984c.0;
    0x000411b4 cmp r3, 2                                         |     
    0x000411b6 itttt ls                                          |     
                                                                 |     if (r3 > 2) {
    0x000411b8 movls r3, 0x2c                                    |         r3 = 0x2c;
                                                                 |     }
                                                                 |     if (r3 <= 2) {
    0x000411ba mlals r3, r3, r7, r5                              |         __asm ("mlals r3, r3, r7, r5");
                                                                 |     }
                                                                 |     if (r3 > 2) {
    0x000411be ldrls r0, [r3, 0x1b0]                             |         r0 = case.0x5984c.0;
                                                                 |     }
                                                                 |     if (r3 <= 2) {
    0x000411c2 str.w r0, [r3, 0x1a8]                             |         __asm ("str.w r0, case.0x5984c.0");
                                                                 |     }
    0x000411c6 movs r3, 0x2c                                     |     r3 = 0x2c;
    0x000411c8 mla r3, r3, r7, r5                                |     __asm ("mla r3, r3, r7, r5");
    0x000411cc ldr.w r0, [r1, 0xdb8]                             |     r0 = case.0x5984c.0;
    0x000411d0 ldr.w r1, [r3, 0x1b0]                             |     r1 = case.0x5984c.0;
    0x000411d4 add r1, r2                                        |     r1 += r2;
    0x000411d6 str.w r1, [r3, 0x1b0]                             |     __asm ("str.w r1, case.0x5984c.0");
                                                                 |     if (r0 != 0) {
    0x000411da cbz r0, 0x411e2                                   |         
    0x000411dc ldr r1, [r4, 0x6c]                                |         r1 = *((r4 + 0x6c));
    0x000411de blx 0x1ffec                                       |         fcn_0001ffec ();
                                                                 |     }
    0x000411e2 movs r3, 0x2c                                     |     r3 = 0x2c;
    0x000411e4 ldr r6, [r4, 0x7c]                                |     r6 = *((r4 + 0x7c));
    0x000411e6 mla r4, r3, r7, r5                                |     __asm ("mla r4, r3, r7, r5");
    0x000411ea movw r5, 0x28b5                                   |     r5 = (r5 & 0xFFFF0000) | (case.0x5984c.0 & 0xFFFF);
    0x000411ee add.w r4, r4, 0x1a4                               |     r4 += case.0x5984c.0;
    0x000411f2 ldm r4!, {r0, r1, r2, r3}                         |     r0 = *(r4!);
                                                                 |     r1 = *((r4! + 4));
                                                                 |     r2 = *((r4! + 8));
                                                                 |     r3 = *((r4! + 12));
    0x000411f4 stm r6!, {r0, r1, r2, r3}                         |     *(r6!) = r0;
                                                                 |     *((r6! + 4)) = r1;
                                                                 |     *((r6! + 8)) = r2;
                                                                 |     *((r6! + 12)) = r3;
    0x000411f6 ldr r3, [r4]                                      |     r3 = *(r4);
    0x000411f8 str r3, [r6]                                      |     *(r6) = r3;
    0x000411fa b.w 0x3f820                                       |     goto label_11;
    0x000411fe ldr r2, [r4, 0x20]                                |     r2 = *((r4 + 0x20));
    0x00041200 cmp r2, 0                                         |     
                                                                 |     if (r2 > 0) {
    0x00041202 ble 0x41220                                       |         
    0x00041204 ldr r3, [r4, 0x6c]                                |         r3 = *((r4 + 0x6c));
    0x00041206 ldr r0, [r4, 0xc]                                 |         r0 = *((r4 + 0xc));
    0x00041208 ldr r1, [r4, 0x14]                                |         r1 = *((r4 + 0x14));
    0x0004120a add r3, r2                                        |         r3 += r2;
    0x0004120c ldrb r3, [r3, -0x1]                               |         r3 = *((r3 - 0x1));
    0x00041210 ldr.w r1, [r1, r0, lsl 2]                         |         offset_37 = r0 << 2;
                                                                 |         r1 = *((r1 + offset_37));
    0x00041214 sub.w r3, r3, 0xa                                 |         r3 -= 0xa;
    0x00041218 clz r3, r3                                        |         r3 &= r3;
    0x0004121c lsrs r3, r3, 5                                    |         r3 >>= 5;
    0x0004121e str r3, [r1, 0x1c]                                |         *((r1 + 0x1c)) = r3;
                                                                 |     }
    0x00041220 ldr r5, [r4]                                      |     r5 = *(r4);
    0x00041222 ldr r3, [r4, 0x2c]                                |     r3 = *((r4 + 0x2c));
    0x00041224 add.w r1, r5, 0x2000                              |     r1 = r5 + case.0x5984c.0;
    0x00041228 ldr.w r7, [r1, 0xd94]                             |     r7 = case.0x5984c.0;
    0x0004122c cmp r3, 2                                         |     
    0x0004122e itttt ls                                          |     
                                                                 |     if (r3 > 2) {
    0x00041230 movls r3, 0x2c                                    |         r3 = 0x2c;
                                                                 |     }
                                                                 |     if (r3 <= 2) {
    0x00041232 mlals r3, r3, r7, r5                              |         __asm ("mlals r3, r3, r7, r5");
                                                                 |     }
                                                                 |     if (r3 > 2) {
    0x00041236 ldrls r0, [r3, 0x1b0]                             |         r0 = case.0x5984c.0;
                                                                 |     }
                                                                 |     if (r3 <= 2) {
    0x0004123a str.w r0, [r3, 0x1a8]                             |         __asm ("str.w r0, case.0x5984c.0");
                                                                 |     }
    0x0004123e movs r3, 0x2c                                     |     r3 = 0x2c;
    0x00041240 mla r3, r3, r7, r5                                |     __asm ("mla r3, r3, r7, r5");
    0x00041244 ldr.w r0, [r1, 0xdb8]                             |     r0 = case.0x5984c.0;
    0x00041248 ldr.w r1, [r3, 0x1b0]                             |     r1 = case.0x5984c.0;
    0x0004124c add r1, r2                                        |     r1 += r2;
    0x0004124e str.w r1, [r3, 0x1b0]                             |     __asm ("str.w r1, case.0x5984c.0");
                                                                 |     if (r0 != 0) {
    0x00041252 cbz r0, 0x4125a                                   |         
    0x00041254 ldr r1, [r4, 0x6c]                                |         r1 = *((r4 + 0x6c));
    0x00041256 blx 0x1ffec                                       |         fcn_0001ffec ();
                                                                 |     }
    0x0004125a movs r3, 0x2c                                     |     r3 = 0x2c;
    0x0004125c ldr r6, [r4, 0x7c]                                |     r6 = *((r4 + 0x7c));
    0x0004125e mla r5, r3, r7, r5                                |     __asm ("mla r5, r3, r7, r5");
    0x00041262 add.w r5, r5, 0x1a4                               |     r5 += case.0x5984c.0;
    0x00041266 ldm r5!, {r0, r1, r2, r3}                         |     r0 = *(r5!);
                                                                 |     r1 = *((r5! + 4));
                                                                 |     r2 = *((r5! + 8));
                                                                 |     r3 = *((r5! + 12));
    0x00041268 stm r6!, {r0, r1, r2, r3}                         |     *(r6!) = r0;
                                                                 |     *((r6! + 4)) = r1;
                                                                 |     *((r6! + 8)) = r2;
                                                                 |     *((r6! + 12)) = r3;
    0x0004126a mov r0, r4                                        |     r0 = r4;
    0x0004126c ldr r3, [r5]                                      |     r3 = *(r5);
    0x0004126e movw r5, 0x28c3                                   |     r5 = (r5 & 0xFFFF0000) | (case.0x5984c.0 & 0xFFFF);
    0x00041270 lsls r3, r0, 0x17                                 |     r3 = r0 << 0x17;
    0x00041272 str r3, [r6]                                      |     *(r6) = r3;
    0x00041274 bl 0x3e9d8                                        |     fcn_0003e9d8 (r0);
    0x00041278 ldr r0, [pc, 0x18c]                               |     
    0x0004127a ldr r4, [r4, 0x78]                                |     r4 = *((r4 + 0x78));
    0x0004127c add r0, pc                                        |     r0 = 0x82688;
    0x0004127e blx 0x20864                                       |     fcn_00020864 ();
    0x00041282 str r0, [r4, 8]                                   |     *((r4 + 8)) = r0;
    0x00041284 b.w 0x3f820                                       |     goto label_11;
    0x00041288 ldr r2, [r4, 0x20]                                |     r2 = *((r4 + 0x20));
    0x0004128a ldr r7, [r4, 0x6c]                                |     r7 = *((r4 + 0x6c));
    0x0004128c cmp r2, 0                                         |     
                                                                 |     if (r2 > 0) {
    0x0004128e ble 0x412aa                                       |         
    0x00041290 ldr r3, [r4, 0x14]                                |         r3 = *((r4 + 0x14));
    0x00041292 ldr r1, [r4, 0xc]                                 |         r1 = *((r4 + 0xc));
    0x00041294 ldr.w r1, [r3, r1, lsl 2]                         |         offset_38 = r1 << 2;
                                                                 |         r1 = *((r3 + offset_38));
    0x00041298 adds r3, r7, r2                                   |         r3 = r7 + r2;
    0x0004129a ldrb r3, [r3, -0x1]                               |         r3 = *((r3 - 0x1));
    0x0004129e sub.w r3, r3, 0xa                                 |         r3 -= 0xa;
    0x000412a2 clz r3, r3                                        |         r3 &= r3;
    0x000412a6 lsrs r3, r3, 5                                    |         r3 >>= 5;
    0x000412a8 str r3, [r1, 0x1c]                                |         *((r1 + 0x1c)) = r3;
                                                                 |     }
    0x000412aa ldr r5, [r4]                                      |     r5 = *(r4);
    0x000412ac ldr r3, [r4, 0x2c]                                |     r3 = *((r4 + 0x2c));
    0x000412ae add.w r0, r5, 0x2000                              |     r0 = r5 + case.0x5984c.0;
    0x000412b0 str r0, [r0, r0]                                  |     *((r0 + r0)) = r0;
    0x000412b2 ldr.w r6, [r0, 0xd94]                             |     r6 = case.0x5984c.0;
    0x000412b6 cmp r3, 2                                         |     
    0x000412b8 it ls                                             |     
                                                                 |     if (r3 > 2) {
    0x000412ba movls r3, 0x2c                                    |         r3 = 0x2c;
                                                                 |     }
    0x000412bc ldr.w r0, [r0, 0xdb8]                             |     r0 = case.0x5984c.0;
    0x000412c0 ittt ls                                           |     
                                                                 |     if (r3 <= 2) {
    0x000412c2 mlals r3, r3, r6, r5                              |         __asm ("mlals r3, r3, r6, r5");
                                                                 |     }
                                                                 |     if (r3 > 2) {
    0x000412c6 ldrls r1, [r3, 0x1b0]                             |         r1 = case.0x5984c.0;
                                                                 |     }
                                                                 |     if (r3 <= 2) {
    0x000412ca str.w r1, [r3, 0x1a8]                             |         __asm ("str.w r1, case.0x5984c.0");
                                                                 |     }
    0x000412ce movs r3, 0x2c                                     |     r3 = 0x2c;
    0x000412d0 mla r3, r3, r6, r5                                |     __asm ("mla r3, r3, r6, r5");
    0x000412d4 ldr.w r1, [r3, 0x1b0]                             |     r1 = case.0x5984c.0;
    0x000412d8 add r1, r2                                        |     r1 += r2;
    0x000412da str.w r1, [r3, 0x1b0]                             |     __asm ("str.w r1, case.0x5984c.0");
    0x000412de mov r3, r5                                        |     r3 = r5;
                                                                 |     if (r0 != 0) {
    0x000412e0 cbz r0, 0x412ec                                   |         
    0x000412e2 mov r1, r7                                        |         r1 = r7;
    0x000412e4 blx 0x1ffec                                       |         fcn_0001ffec ();
    0x000412e8 ldr r3, [r4]                                      |         r3 = *(r4);
    0x000412ea ldr r7, [r4, 0x6c]                                |         r7 = *((r4 + 0x6c));
                                                                 |     }
    0x000412ec add.w ip, r3, 0x2000                              |     
    0x000412f0 movs r3, 0x2c                                     |     r3 = 0x2c;
    0x000412f2 mla r5, r3, r6, r5                                |     __asm ("mla r5, r3, r6, r5");
    0x000412f6 ldr r6, [r4, 0x7c]                                |     r6 = *((r4 + 0x7c));
    0x000412f8 add.w r5, r5, 0x1a4                               |     r5 += case.0x5984c.0;
    0x000412fc ldm r5!, {r0, r1, r2, r3}                         |     r0 = *(r5!);
                                                                 |     r1 = *((r5! + 4));
                                                                 |     r2 = *((r5! + 8));
                                                                 |     r3 = *((r5! + 12));
    0x000412fe stm r6!, {r0, r1, r2, r3}                         |     *(r6!) = r0;
                                                                 |     *((r6! + 4)) = r1;
                                                                 |     *((r6! + 8)) = r2;
                                                                 |     *((r6! + 12)) = r3;
    0x00041300 mov r1, r7                                        |     r1 = r7;
    0x00041302 ldr r3, [r5]                                      |     r3 = *(r5);
    0x00041304 ldr.w r0, [ip, 0xda8]                             |     r0 = case.0x5984c.0;
    0x00041308 str r3, [r6]                                      |     *(r6) = r3;
    0x0004130a blx 0x23764                                       |     fcn_00023764 ();
    0x0004130e ldr r3, [r4]                                      |     r3 = *(r4);
    0x00041310 add.w r3, r3, 0x2000                              |     r3 += case.0x5984c.0;
    0x00041314 ldr.w r2, [r3, 0xdb8]                             |     r2 = case.0x5984c.0;
    0x00041318 cmp r2, 0                                         |     
                                                                 |     if (r2 == 0) {
    0x0004131a beq.w 0x3f9ec                                     |         goto label_14;
                                                                 |     }
    0x0004131e ldr r1, [r4, 0x2c]                                |     r1 = *((r4 + 0x2c));
    0x00041320 cmp r1, 2                                         |     
                                                                 |     if (r1 > 2) {
    0x00041322 bhi.w 0x3f9ec                                     |         goto label_14;
                                                                 |     }
    0x00041326 ldrd r1, r2, [r2]                                 |     __asm ("ldrd r1, r2, [r2]");
    0x0004132a ldr.w r0, [r3, 0xdb4]                             |     r0 = case.0x5984c.0;
    0x0004132e blx 0x1ffec                                       |     fcn_0001ffec ();
    0x00041332 ldr r3, [r4]                                      |     r3 = *(r4);
    0x00041334 movs r1, 0                                        |     r1 = 0;
    0x00041336 add.w r3, r3, 0x2000                              |     r3 += case.0x5984c.0;
    0x0004133a ldr.w r0, [r3, 0xdb8]                             |     r0 = case.0x5984c.0;
    0x0004133e blx 0x1fc8c                                       |     fcn_0001fc8c ();
    0x00041342 b.w 0x3f9ec                                       |     goto label_14;
    0x00041346 ldr r2, [r4, 0x20]                                |     r2 = *((r4 + 0x20));
    0x00041348 ldr r7, [r4, 0x6c]                                |     r7 = *((r4 + 0x6c));
    0x0004134a cmp r2, 0                                         |     
                                                                 |     if (r2 > 0) {
    0x0004134c ble 0x41368                                       |         
    0x0004134e ldr r3, [r4, 0x14]                                |         r3 = *((r4 + 0x14));
    0x00041350 ldr r1, [r4, 0xc]                                 |         r1 = *((r4 + 0xc));
    0x00041352 ldr.w r1, [r3, r1, lsl 2]                         |         offset_39 = r1 << 2;
                                                                 |         r1 = *((r3 + offset_39));
    0x00041356 adds r3, r7, r2                                   |         r3 = r7 + r2;
    0x00041358 ldrb r3, [r3, -0x1]                               |         r3 = *((r3 - 0x1));
    0x0004135c sub.w r3, r3, 0xa                                 |         r3 -= 0xa;
    0x00041360 clz r3, r3                                        |         r3 &= r3;
    0x00041364 lsrs r3, r3, 5                                    |         r3 >>= 5;
    0x00041366 str r3, [r1, 0x1c]                                |         *((r1 + 0x1c)) = r3;
                                                                 |     }
    0x00041368 ldr r5, [r4]                                      |     r5 = *(r4);
    0x0004136a ldr r3, [r4, 0x2c]                                |     r3 = *((r4 + 0x2c));
    0x0004136c add.w r0, r5, 0x2000                              |     r0 = r5 + case.0x5984c.0;
    0x00041370 ldr.w r6, [r0, 0xd94]                             |     r6 = case.0x5984c.0;
    0x00041374 cmp r3, 2                                         |     
    0x00041376 it ls                                             |     
                                                                 |     if (r3 > 2) {
    0x00041378 movls r3, 0x2c                                    |         r3 = 0x2c;
                                                                 |     }
    0x0004137a ldr.w r0, [r0, 0xdb8]                             |     r0 = case.0x5984c.0;
    0x0004137e ittt ls                                           |     
                                                                 |     if (r3 <= 2) {
    0x00041380 mlals r3, r3, r6, r5                              |         __asm ("mlals r3, r3, r6, r5");
                                                                 |     }
                                                                 |     if (r3 > 2) {
    0x00041384 ldrls r1, [r3, 0x1b0]                             |         r1 = case.0x5984c.0;
                                                                 |     }
                                                                 |     if (r3 <= 2) {
    0x00041388 str.w r1, [r3, 0x1a8]                             |         __asm ("str.w r1, case.0x5984c.0");
                                                                 |     }
    0x0004138c movs r3, 0x2c                                     |     r3 = 0x2c;
    0x0004138e mla r3, r3, r6, r5                                |     __asm ("mla r3, r3, r6, r5");
    0x00041392 ldr.w r1, [r3, 0x1b0]                             |     r1 = case.0x5984c.0;
    0x00041396 add r1, r2                                        |     r1 += r2;
    0x00041398 str.w r1, [r3, 0x1b0]                             |     __asm ("str.w r1, case.0x5984c.0");
    0x0004139c mov r3, r5                                        |     r3 = r5;
                                                                 |     if (r0 != 0) {
    0x0004139e cbz r0, 0x413aa                                   |         
    0x000413a0 mov r1, r7                                        |         r1 = r7;
    0x000413a2 blx 0x1ffec                                       |         fcn_0001ffec ();
    0x000413a6 ldr r3, [r4]                                      |         r3 = *(r4);
    0x000413a8 ldr r7, [r4, 0x6c]                                |         r7 = *((r4 + 0x6c));
                                                                 |     }
    0x000413aa add.w ip, r3, 0x2000                              |     
    0x000413ae movs r3, 0x2c                                     |     r3 = 0x2c;
    0x000413b0 mla r5, r3, r6, r5                                |     __asm ("mla r5, r3, r6, r5");
    0x000413b4 ldr r6, [r4, 0x7c]                                |     r6 = *((r4 + 0x7c));
    0x000413b6 add.w r5, r5, 0x1a4                               |     r5 += case.0x5984c.0;
    0x000413ba ldm r5!, {r0, r1, r2, r3}                         |     r0 = *(r5!);
                                                                 |     r1 = *((r5! + 4));
                                                                 |     r2 = *((r5! + 8));
                                                                 |     r3 = *((r5! + 12));
    0x000413bc stm r6!, {r0, r1, r2, r3}                         |     *(r6!) = r0;
                                                                 |     *((r6! + 4)) = r1;
                                                                 |     *((r6! + 8)) = r2;
                                                                 |     *((r6! + 12)) = r3;
    0x000413be mov r1, r7                                        |     r1 = r7;
    0x000413c0 ldr r3, [r5]                                      |     r3 = *(r5);
    0x000413c2 ldr.w r0, [ip, 0xda8]                             |     r0 = case.0x5984c.0;
    0x000413c6 str r3, [r6]                                      |     *(r6) = r3;
    0x000413c8 blx 0x23764                                       |     fcn_00023764 ();
    0x000413cc ldr r3, [r4]                                      |     r3 = *(r4);
    0x000413ce add.w r3, r3, 0x2000                              |     r3 += case.0x5984c.0;
    0x000413d2 ldr.w r2, [r3, 0xdb8]                             |     r2 = case.0x5984c.0;
    0x000413d6 cmp r2, 0                                         |     
                                                                 |     if (r2 == 0) {
    0x000413d8 beq.w 0x3f9ec                                     |         goto label_14;
                                                                 |     }
    0x000413dc ldr r1, [r4, 0x2c]                                |     r1 = *((r4 + 0x2c));
    0x000413de cmp r1, 2                                         |     
                                                                 |     if (r1 > 2) {
    0x000413e0 bhi.w 0x3f9ec                                     |         goto label_14;
                                                                 |     }
    0x000413e4 ldrd r1, r2, [r2]                                 |     __asm ("ldrd r1, r2, [r2]");
    0x000413e8 ldr.w r0, [r3, 0xdb4]                             |     r0 = case.0x5984c.0;
    0x000413ec blx 0x1ffec                                       |     fcn_0001ffec ();
    0x000413f0 ldr r3, [r4]                                      |     r3 = *(r4);
    0x000413f2 movs r1, 0                                        |     r1 = 0;
    0x000413f4 add.w r3, r3, 0x2000                              |     r3 += case.0x5984c.0;
    0x000413f8 ldr.w r0, [r3, 0xdb8]                             |     r0 = case.0x5984c.0;
    0x000413fc blx 0x1fc8c                                       |     fcn_0001fc8c ();
    0x00041400 b.w 0x3f9ec                                       |     goto label_14;
    0x0004140c ldr r2, [r4, 0x20]                                |     r2 = *((r4 + 0x20));
    0x0004140e cmp r2, 0                                         |     
                                                                 |     if (r2 > 0) {
    0x00041410 ble 0x4142e                                       |         
    0x00041412 ldr r3, [r4, 0x6c]                                |         r3 = *((r4 + 0x6c));
    0x00041414 ldr r1, [r4, 0xc]                                 |         r1 = *((r4 + 0xc));
    0x00041416 ldr r0, [r4, 0x14]                                |         r0 = *((r4 + 0x14));
    0x00041418 add r3, r2                                        |         r3 += r2;
    0x0004141a ldrb r3, [r3, -0x1]                               |         r3 = *((r3 - 0x1));
    0x0004141e ldr.w r1, [r0, r1, lsl 2]                         |         offset_40 = r1 << 2;
                                                                 |         r1 = *((r0 + offset_40));
    0x00041422 sub.w r3, r3, 0xa                                 |         r3 -= 0xa;
    0x00041426 clz r3, r3                                        |         r3 &= r3;
    0x0004142a lsrs r3, r3, 5                                    |         r3 >>= 5;
    0x0004142c str r3, [r1, 0x1c]                                |         *((r1 + 0x1c)) = r3;
                                                                 |     }
    0x0004142e ldr r1, [r4]                                      |     r1 = *(r4);
    0x00041430 mov.w r8, 0x2c                                    |     r8 = 0x2c;
    0x00041434 ldr r3, [r4, 0x2c]                                |     r3 = *((r4 + 0x2c));
    0x00041436 add.w r7, r1, 0x2000                              |     r7 = r1 + case.0x5984c.0;
    0x0004143a ldr.w r5, [r7, 0xd94]                             |     r5 = case.0x5984c.0;
    0x0004143c ldrb r4, [r2, r6]                                 |     r4 = *((r2 + r6));
    0x0004143e cmp r3, 2                                         |     
    0x00041440 itt ls                                            |     
                                                                 |     if (r3 > 2) {
    0x00041442 movls r3, 0x2c                                    |         r3 = 0x2c;
                                                                 |     }
                                                                 |     if (r3 <= 2) {
    0x00041444 mlals r3, r3, r5, r1                              |         __asm ("mlals r3, r3, r5, r1");
                                                                 |     }
    0x00041448 mla r5, r8, r5, r1                                |     __asm ("mla r5, r8, r5, r1");
    0x0004144c itt ls                                            |     
                                                                 |     if (r3 > 2) {
    0x0004144e ldrls r0, [r3, 0x1b0]                             |         r0 = case.0x5984c.0;
                                                                 |     }
                                                                 |     if (r3 > 2) {
    0x00041450 lslls r0, r6, 6                                   |         r0 = r6 << 6;
                                                                 |     }
    0x00041452 str.w r0, [r3, 0x1a8]                             |     __asm ("str.w r0, case.0x5984c.0");
    0x00041456 ldr.w r0, [r7, 0xdb8]                             |     r0 = case.0x5984c.0;
    0x0004145a ldr.w r3, [r5, 0x1b0]                             |     r3 = case.0x5984c.0;
    0x0004145e add r3, r2                                        |     r3 += r2;
    0x00041460 str.w r3, [r5, 0x1b0]                             |     __asm ("str.w r3, case.0x5984c.0");
    0x00041464 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00041466 beq.w 0x41eca                                     |         goto label_99;
                                                                 |     }
    0x00041468 strh r0, [r6, 0x28]                               |     *((r6 + 0x28)) = r0;
    0x0004146a ldr r1, [r4, 0x6c]                                |     r1 = *((r4 + 0x6c));
    0x0004146c add.w r6, r5, 0x1a4                               |     r6 = r5 + case.0x5984c.0;
    0x00041470 blx 0x1ffec                                       |     fcn_0001ffec ();
    0x00041474 ldr r7, [r4]                                      |     r7 = *(r4);
    0x00041476 mov.w sb, 1                                       |     sb = 1;
    0x0004147a ldr r5, [r4, 0x7c]                                |     r5 = *((r4 + 0x7c));
    0x0004147c add.w ip, r7, 0x2000                              |     
    0x00041480 ldr.w r3, [ip, 0xd94]                             |     r3 = case.0x5984c.0;
    0x00041484 ldr.w lr, [ip, 0xdb8]                             |     
    0x00041488 mla r7, r8, r3, r7                                |     __asm ("mla r7, r8, r3, r7");
    0x0004148c ldm r6!, {r0, r1, r2, r3}                         |     r0 = *(r6!);
                                                                 |     r1 = *((r6! + 4));
                                                                 |     r2 = *((r6! + 8));
                                                                 |     r3 = *((r6! + 12));
    0x0004148e stm r5!, {r0, r1, r2, r3}                         |     *(r5!) = r0;
                                                                 |     *((r5! + 4)) = r1;
                                                                 |     *((r5! + 8)) = r2;
                                                                 |     *((r5! + 12)) = r3;
    0x00041490 ldr r3, [r6]                                      |     r3 = *(r6);
    0x00041492 str r3, [r5]                                      |     *(r5) = r3;
    0x00041494 ldr.w r3, [r7, 0x1ac]                             |     r3 = case.0x5984c.0;
    0x00041498 str.w sb, [r7, 0x1b0]                             |     __asm ("str.w sb, case.0x5984c.0");
    0x0004149c add r3, sb                                        |     r3 += sb;
    0x0004149e str.w r3, [r7, 0x1ac]                             |     __asm ("str.w r3, case.0x5984c.0");
    0x000414a2 cmp.w lr, 0                                       |     
                                                                 |     if (lr == 0) {
    0x000414a6 beq.w 0x3f9ec                                     |         goto label_14;
                                                                 |     }
    0x000414aa ldr r3, [r4, 0x2c]                                |     r3 = *((r4 + 0x2c));
    0x000414ac cmp r3, 2                                         |     
                                                                 |     if (r3 > 2) {
    0x000414ae bhi.w 0x3f9ec                                     |         goto label_14;
                                                                 |     }
    0x000414b2 ldrd r1, r2, [lr]                                 |     __asm ("ldrd r1, r2, [lr]");
    0x000414b6 ldr.w r0, [ip, 0xdb4]                             |     r0 = case.0x5984c.0;
    0x000414ba blx 0x1ffec                                       |     fcn_0001ffec ();
    0x000414be ldr r3, [r4]                                      |     r3 = *(r4);
    0x000414c0 movs r1, 0                                        |     r1 = 0;
    0x000414c2 add.w r3, r3, 0x2000                              |     r3 += case.0x5984c.0;
    0x000414c6 ldr.w r0, [r3, 0xdb8]                             |     r0 = case.0x5984c.0;
    0x000414ca blx 0x1fc8c                                       |     fcn_0001fc8c ();
    0x000414ce b.w 0x3f9ec                                       |     goto label_14;
    0x000414d2 ldr r2, [r4, 0x20]                                |     r2 = *((r4 + 0x20));
    0x000414d4 ldr r6, [r4, 0x6c]                                |     r6 = *((r4 + 0x6c));
    0x000414d6 cmp r2, 0                                         |     
                                                                 |     if (r2 > 0) {
    0x000414d8 ble 0x414f4                                       |         
    0x000414da ldr r3, [r4, 0x14]                                |         r3 = *((r4 + 0x14));
    0x000414dc ldr r1, [r4, 0xc]                                 |         r1 = *((r4 + 0xc));
    0x000414de ldr.w r1, [r3, r1, lsl 2]                         |         offset_41 = r1 << 2;
                                                                 |         r1 = *((r3 + offset_41));
    0x000414e2 adds r3, r6, r2                                   |         r3 = r6 + r2;
    0x000414e4 ldrb r3, [r3, -0x1]                               |         r3 = *((r3 - 0x1));
    0x000414e8 sub.w r3, r3, 0xa                                 |         r3 -= 0xa;
    0x000414ec clz r3, r3                                        |         r3 &= r3;
    0x000414f0 lsrs r3, r3, 5                                    |         r3 >>= 5;
    0x000414f2 str r3, [r1, 0x1c]                                |         *((r1 + 0x1c)) = r3;
                                                                 |     }
    0x000414f4 ldr r5, [r4]                                      |     r5 = *(r4);
    0x000414f6 ldr r3, [r4, 0x2c]                                |     r3 = *((r4 + 0x2c));
    0x000414f8 add.w r0, r5, 0x2000                              |     r0 = r5 + case.0x5984c.0;
    0x000414fc ldr.w r7, [r0, 0xd94]                             |     r7 = case.0x5984c.0;
    0x00041500 cmp r3, 2                                         |     
    0x00041502 it ls                                             |     
                                                                 |     if (r3 > 2) {
    0x00041504 movls r3, 0x2c                                    |         r3 = 0x2c;
                                                                 |     }
    0x00041506 ldr.w r0, [r0, 0xdb8]                             |     r0 = case.0x5984c.0;
    0x0004150a ittt ls                                           |     
                                                                 |     if (r3 <= 2) {
    0x0004150c mlals r3, r3, r7, r5                              |         __asm ("mlals r3, r3, r7, r5");
                                                                 |     }
                                                                 |     if (r3 > 2) {
    0x00041510 ldrls r1, [r3, 0x1b0]                             |         r1 = case.0x5984c.0;
                                                                 |     }
                                                                 |     if (r3 <= 2) {
    0x00041514 str.w r1, [r3, 0x1a8]                             |         __asm ("str.w r1, case.0x5984c.0");
                                                                 |     }
    0x00041516 asrs r0, r5, 6                                    |     r0 = r5 >> 6;
    0x00041518 movs r3, 0x2c                                     |     r3 = 0x2c;
    0x0004151a mla r3, r3, r7, r5                                |     __asm ("mla r3, r3, r7, r5");
    0x0004151e ldr.w r1, [r3, 0x1b0]                             |     r1 = case.0x5984c.0;
    0x00041522 add r1, r2                                        |     r1 += r2;
    0x00041524 str.w r1, [r3, 0x1b0]                             |     __asm ("str.w r1, case.0x5984c.0");
    0x00041528 mov r3, r5                                        |     r3 = r5;
                                                                 |     if (r0 != 0) {
    0x0004152a cbz r0, 0x41536                                   |         
    0x0004152c mov r1, r6                                        |         r1 = r6;
    0x0004152e blx 0x1ffec                                       |         fcn_0001ffec ();
    0x00041532 ldr r3, [r4]                                      |         r3 = *(r4);
    0x00041534 ldr r6, [r4, 0x6c]                                |         r6 = *((r4 + 0x6c));
                                                                 |     }
    0x00041536 add.w r3, r3, 0x2000                              |     r3 += case.0x5984c.0;
    0x0004153a ldr.w ip, [r3, 0xda8]                             |     ip = case.0x5984c.0;
    0x0004153e movs r3, 0x2c                                     |     r3 = 0x2c;
    0x00041540 mla r5, r3, r7, r5                                |     __asm ("mla r5, r3, r7, r5");
    0x00041544 ldr r7, [r4, 0x7c]                                |     r7 = *((r4 + 0x7c));
    0x00041546 ldrd lr, sb, [ip, 4]                              |     __asm ("ldrd lr, sb, [ip, 4]");
    0x0004154a add.w r5, r5, 0x1a4                               |     r5 += case.0x5984c.0;
    0x0004154e ldm r5!, {r0, r1, r2, r3}                         |     r0 = *(r5!);
                                                                 |     r1 = *((r5! + 4));
                                                                 |     r2 = *((r5! + 8));
                                                                 |     r3 = *((r5! + 12));
    0x00041550 add.w r8, lr, 1                                   |     r8 = lr + 1;
    0x00041554 cmp r8, sb                                        |     
    0x00041556 stm r7!, {r0, r1, r2, r3}                         |     *(r7!) = r0;
                                                                 |     *((r7! + 4)) = r1;
                                                                 |     *((r7! + 8)) = r2;
                                                                 |     *((r7! + 12)) = r3;
    0x00041558 ldr r3, [r5]                                      |     r3 = *(r5);
    0x0004155a str r3, [r7]                                      |     *(r7) = r3;
    0x0004155c ldrb r2, [r6]                                     |     r2 = *(r6);
                                                                 |     if (r8 >= sb) {
    0x0004155e bhs.w 0x41f22                                     |         goto label_100;
                                                                 |     }
    0x00041562 ldr.w r3, [ip]                                    |     r3 = *(ip);
    0x00041566 movs r1, 0                                        |     r1 = 0;
    0x00041568 str.w r8, [ip, 4]                                 |     __asm ("str.w r8, [ip, 4]");
    0x0004156c strb.w r2, [r3, lr]                               |     *((r3 + lr)) = r2;
    0x00041570 ldrd r2, r3, [ip]                                 |     __asm ("ldrd r2, r3, [ip]");
    0x00041574 strb r1, [r2, r3]                                 |     *((r2 + r3)) = r1;
                                                                 | label_21:
    0x00041576 mov r0, r4                                        |     r0 = r4;
    0x00041578 bl 0x3f5d4                                        |     r0 = fcn_0003f5d4 (r0);
    0x0004157c cmp r0, 0xa                                       |     
    0x0004157e it ne                                             |     
                                                                 |     if (r0 != 0xa) {
    0x00041580 cmpne r0, -1                                      |         __asm ("cmpne r0, -1");
                                                                 |     }
                                                                 |     if (r0 == 0xa) {
    0x00041584 beq.w 0x420d6                                     |         goto label_101;
                                                                 |     }
    0x00041588 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0004158a beq.w 0x420e2                                     |         goto label_102;
                                                                 |     }
    0x0004158e movs r5, 0                                        |     r5 = 0;
    0x00041590 b 0x415b6                                         |     
                                                                 |     while (r1 <= r6) {
    0x00041592 str r1, [r0, 4]                                   |         *((r0 + 4)) = r1;
    0x00041594 ldr r1, [r0]                                      |         r1 = *(r0);
    0x00041596 strb r2, [r1, r3]                                 |         *((r1 + r3)) = r2;
    0x00041598 ldrd r2, r3, [r0]                                 |         __asm ("ldrd r2, r3, [r0]");
    0x0004159c strb r5, [r2, r3]                                 |         *((r2 + r3)) = r5;
                                                                 | label_16:
    0x0004159e mov r0, r4                                        |         r0 = r4;
    0x000415a0 bl 0x3f5d4                                        |         r0 = fcn_0003f5d4 (r0);
    0x000415a4 cmp r0, 0xa                                       |         
    0x000415a6 it ne                                             |         
                                                                 |         if (r0 != 0xa) {
    0x000415a8 cmpne r0, -1                                      |             __asm ("cmpne r0, -1");
                                                                 |         }
                                                                 |         if (r0 == 0xa) {
    0x000415ac beq.w 0x420d6                                     |             goto label_101;
                                                                 |         }
    0x000415b0 cmp r0, 0                                         |         
                                                                 |         if (r0 == 0) {
    0x000415b2 beq.w 0x420e2                                     |             goto label_102;
                                                                 |         }
    0x000415b6 ldr r3, [r4]                                      |         r3 = *(r4);
    0x000415b8 uxtb r2, r0                                       |         r2 = (int8_t) r0;
    0x000415ba add.w r3, r3, 0x2000                              |         r3 += case.0x5984c.0;
    0x000415be ldr.w r0, [r3, 0xda8]                             |         r0 = case.0x5984c.0;
    0x000415c2 ldrd r3, r6, [r0, 4]                              |         __asm ("ldrd r3, r6, [r0, 4]");
    0x000415c6 adds r1, r3, 1                                    |         r1 = r3 + 1;
    0x000415c8 cmp r1, r6                                        |         
    0x000415ca blo 0x41592                                       |         
                                                                 |     }
    0x000415cc mov.w r1, -1                                      |     r1 = -1;
    0x000415d0 blx 0x21254                                       |     g_sprintf ()
    0x000415d4 b 0x4159e                                         |     goto label_16;
    0x000415d6 ldr r2, [r4, 0x20]                                |     r2 = *((r4 + 0x20));
    0x000415d8 ldr.w ip, [r4, 0x6c]                              |     ip = *((r4 + 0x6c));
    0x000415dc cmp r2, 0                                         |     
                                                                 |     if (r2 > 0) {
    0x000415de ble 0x415fc                                       |         
    0x000415e0 ldr r3, [r4, 0x14]                                |         r3 = *((r4 + 0x14));
    0x000415e2 ldr r1, [r4, 0xc]                                 |         r1 = *((r4 + 0xc));
    0x000415e4 ldr.w r1, [r3, r1, lsl 2]                         |         offset_42 = r1 << 2;
                                                                 |         r1 = *((r3 + offset_42));
    0x000415e8 add.w r3, ip, r2                                  |         r3 = ip + r2;
    0x000415ec ldrb r3, [r3, -0x1]                               |         r3 = *((r3 - 0x1));
    0x000415f0 sub.w r3, r3, 0xa                                 |         r3 -= 0xa;
    0x000415f4 clz r3, r3                                        |         r3 &= r3;
    0x000415f8 lsrs r3, r3, 5                                    |         r3 >>= 5;
    0x000415fa str r3, [r1, 0x1c]                                |         *((r1 + 0x1c)) = r3;
                                                                 |     }
    0x000415fc ldr r5, [r4]                                      |     r5 = *(r4);
    0x000415fe ldr r3, [r4, 0x2c]                                |     r3 = *((r4 + 0x2c));
    0x00041600 add.w r0, r5, 0x2000                              |     r0 = r5 + case.0x5984c.0;
    0x00041604 ldr.w r6, [r0, 0xd94]                             |     r6 = case.0x5984c.0;
    0x00041608 cmp r3, 2                                         |     
    0x0004160a it ls                                             |     
                                                                 |     if (r3 > 2) {
    0x0004160c movls r3, 0x2c                                    |         r3 = 0x2c;
                                                                 |     }
    0x0004160e ldr.w r0, [r0, 0xdb8]                             |     r0 = case.0x5984c.0;
    0x00041612 ittt ls                                           |     
                                                                 |     if (r3 <= 2) {
    0x00041614 mlals r3, r3, r6, r5                              |         __asm ("mlals r3, r3, r6, r5");
                                                                 |     }
                                                                 |     if (r3 > 2) {
    0x00041618 ldrls r1, [r3, 0x1b0]                             |         r1 = case.0x5984c.0;
                                                                 |     }
                                                                 |     if (r3 <= 2) {
    0x0004161c str.w r1, [r3, 0x1a8]                             |         __asm ("str.w r1, case.0x5984c.0");
                                                                 |     }
    0x00041620 movs r3, 0x2c                                     |     r3 = 0x2c;
    0x00041622 mla r3, r3, r6, r5                                |     __asm ("mla r3, r3, r6, r5");
    0x00041626 ldr.w r1, [r3, 0x1b0]                             |     r1 = case.0x5984c.0;
    0x0004162a add r1, r2                                        |     r1 += r2;
    0x0004162c str.w r1, [r3, 0x1b0]                             |     __asm ("str.w r1, case.0x5984c.0");
    0x00041630 mov r3, r5                                        |     r3 = r5;
                                                                 |     if (r0 != 0) {
    0x00041632 cbz r0, 0x41640                                   |         
    0x00041634 mov r1, ip                                        |         r1 = ip;
    0x00041636 blx 0x1ffec                                       |         fcn_0001ffec ();
    0x0004163a ldr r3, [r4]                                      |         r3 = *(r4);
    0x0004163c ldr.w ip, [r4, 0x6c]                              |         ip = *((r4 + 0x6c));
                                                                 |     }
    0x00041640 movs r7, 0x2c                                     |     r7 = 0x2c;
    0x00041642 add.w lr, r3, 0x2000                              |     lr = r3 + case.0x5984c.0;
    0x00041646 mla r5, r7, r6, r5                                |     __asm ("mla r5, r7, r6, r5");
    0x0004164a ldr r6, [r4, 0x7c]                                |     r6 = *((r4 + 0x7c));
    0x0004164c add.w r5, r5, 0x1a4                               |     r5 += case.0x5984c.0;
    0x00041650 ldm r5!, {r0, r1, r2, r3}                         |     r0 = *(r5!);
                                                                 |     r1 = *((r5! + 4));
                                                                 |     r2 = *((r5! + 8));
                                                                 |     r3 = *((r5! + 12));
    0x00041652 stm r6!, {r0, r1, r2, r3}                         |     *(r6!) = r0;
                                                                 |     *((r6! + 4)) = r1;
                                                                 |     *((r6! + 8)) = r2;
                                                                 |     *((r6! + 12)) = r3;
    0x00041654 mov r1, ip                                        |     r1 = ip;
    0x00041656 ldr r3, [r5]                                      |     r3 = *(r5);
    0x00041658 ldr.w r0, [lr, 0xda8]                             |     r0 = case.0x5984c.0;
    0x0004165c str r3, [r6]                                      |     *(r6) = r3;
    0x0004165e blx 0x23764                                       |     fcn_00023764 ();
    0x00041662 ldr r3, [r4]                                      |     r3 = *(r4);
    0x00041664 movs r1, 1                                        |     r1 = 1;
    0x00041666 add.w r2, r3, 0x2000                              |     r2 = r3 + case.0x5984c.0;
    0x0004166a ldr.w r0, [r2, 0xd94]                             |     r0 = case.0x5984c.0;
    0x0004166e mla r3, r7, r0, r3                                |     __asm ("mla r3, r7, r0, r3");
    0x00041672 str.w r1, [r3, 0x1b0]                             |     __asm ("str.w r1, case.0x5984c.0");
    0x00041676 ldr.w r1, [r3, 0x1ac]                             |     r1 = case.0x5984c.0;
    0x0004167a adds r1, 1                                        |     r1++;
    0x0004167c str.w r1, [r3, 0x1ac]                             |     __asm ("str.w r1, case.0x5984c.0");
    0x00041680 ldr.w r3, [r2, 0xdb8]                             |     r3 = case.0x5984c.0;
    0x00041684 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x00041686 beq.w 0x3f9ec                                     |         goto label_14;
                                                                 |     }
    0x0004168a ldr r1, [r4, 0x2c]                                |     r1 = *((r4 + 0x2c));
    0x0004168c cmp r1, 2                                         |     
                                                                 |     if (r1 > 2) {
    0x0004168e bhi.w 0x3f9ec                                     |         goto label_14;
                                                                 |     }
    0x00041692 ldr.w r0, [r2, 0xdb4]                             |     r0 = case.0x5984c.0;
    0x00041696 ldrd r1, r2, [r3]                                 |     __asm ("ldrd r1, r2, [r3]");
    0x0004169a blx 0x1ffec                                       |     fcn_0001ffec ();
    0x0004169e ldr r3, [r4]                                      |     r3 = *(r4);
    0x000416a0 movs r1, 0                                        |     r1 = 0;
    0x000416a2 add.w r3, r3, 0x2000                              |     r3 += case.0x5984c.0;
    0x000416a6 ldr.w r0, [r3, 0xdb8]                             |     r0 = case.0x5984c.0;
    0x000416aa blx 0x1fc8c                                       |     fcn_0001fc8c ();
    0x000416ac invalid                                           |     
                                                                 |     if (r5 != 0) {
    0x000416b0 cbnz r5, 0x416da                                  |         void (*0x416da)() ();
                                                                 |     }
    0x000416b2 ldr r2, [r4, 0x20]                                |     r2 = *((r4 + 0x20));
    0x000416b4 ldr r6, [r4, 0x6c]                                |     r6 = *((r4 + 0x6c));
    0x000416b6 cmp r2, 0                                         |     
                                                                 |     if (r2 > 0) {
    0x000416b8 ble 0x416d4                                       |         
    0x000416ba ldr r3, [r4, 0x14]                                |         r3 = *((r4 + 0x14));
    0x000416bc ldr r1, [r4, 0xc]                                 |         r1 = *((r4 + 0xc));
    0x000416be ldr.w r1, [r3, r1, lsl 2]                         |         offset_43 = r1 << 2;
                                                                 |         r1 = *((r3 + offset_43));
    0x000416c2 adds r3, r6, r2                                   |         r3 = r6 + r2;
    0x000416c4 ldrb r3, [r3, -0x1]                               |         r3 = *((r3 - 0x1));
    0x000416c8 sub.w r3, r3, 0xa                                 |         r3 -= 0xa;
    0x000416cc clz r3, r3                                        |         r3 &= r3;
    0x000416d0 lsrs r3, r3, 5                                    |         r3 >>= 5;
    0x000416d2 str r3, [r1, 0x1c]                                |         *((r1 + 0x1c)) = r3;
                                                                 |     }
    0x000416d4 ldr r5, [r4]                                      |     r5 = *(r4);
    0x000416d6 ldr r3, [r4, 0x2c]                                |     r3 = *((r4 + 0x2c));
    0x000416d8 add.w r0, r5, 0x2000                              |     r0 = r5 + case.0x5984c.0;
    0x000416dc ldr.w r7, [r0, 0xd94]                             |     r7 = case.0x5984c.0;
    0x000416e0 cmp r3, 2                                         |     
    0x000416e2 it ls                                             |     
                                                                 |     if (r3 > 2) {
    0x000416e4 movls r3, 0x2c                                    |         r3 = 0x2c;
                                                                 |     }
    0x000416e6 ldr.w r0, [r0, 0xdb8]                             |     r0 = case.0x5984c.0;
    0x000416ea ittt ls                                           |     
                                                                 |     if (r3 <= 2) {
    0x000416ec mlals r3, r3, r7, r5                              |         __asm ("mlals r3, r3, r7, r5");
                                                                 |     }
                                                                 |     if (r3 > 2) {
    0x000416f0 ldrls r1, [r3, 0x1b0]                             |         r1 = case.0x5984c.0;
                                                                 |     }
                                                                 |     if (r3 <= 2) {
    0x000416f4 str.w r1, [r3, 0x1a8]                             |         __asm ("str.w r1, case.0x5984c.0");
                                                                 |     }
    0x000416f8 movs r3, 0x2c                                     |     r3 = 0x2c;
    0x000416fa mla r3, r3, r7, r5                                |     __asm ("mla r3, r3, r7, r5");
    0x000416fe ldr.w r1, [r3, 0x1b0]                             |     r1 = case.0x5984c.0;
    0x00041702 add r1, r2                                        |     r1 += r2;
    0x00041704 str.w r1, [r3, 0x1b0]                             |     __asm ("str.w r1, case.0x5984c.0");
    0x00041708 mov r3, r5                                        |     r3 = r5;
                                                                 |     if (r0 != 0) {
    0x0004170a cbz r0, 0x41716                                   |         
    0x0004170c mov r1, r6                                        |         r1 = r6;
    0x0004170e blx 0x1ffec                                       |         fcn_0001ffec ();
    0x00041712 ldr r3, [r4]                                      |         r3 = *(r4);
    0x00041714 ldr r6, [r4, 0x6c]                                |         r6 = *((r4 + 0x6c));
                                                                 |     }
    0x00041716 add.w r3, r3, 0x2000                              |     r3 += case.0x5984c.0;
    0x0004171a ldr.w ip, [r3, 0xda8]                             |     ip = case.0x5984c.0;
    0x0004171e movs r3, 0x2c                                     |     r3 = 0x2c;
    0x00041720 mla r5, r3, r7, r5                                |     __asm ("mla r5, r3, r7, r5");
    0x00041724 ldr r7, [r4, 0x7c]                                |     r7 = *((r4 + 0x7c));
    0x00041726 ldrd lr, sb, [ip, 4]                              |     __asm ("ldrd lr, sb, [ip, 4]");
    0x0004172a add.w r5, r5, 0x1a4                               |     r5 += case.0x5984c.0;
    0x0004172e ldm r5!, {r0, r1, r2, r3}                         |     r0 = *(r5!);
                                                                 |     r1 = *((r5! + 4));
                                                                 |     r2 = *((r5! + 8));
                                                                 |     r3 = *((r5! + 12));
    0x00041730 add.w r8, lr, 1                                   |     r8 = lr + 1;
    0x00041734 cmp r8, sb                                        |     
    0x00041736 stm r7!, {r0, r1, r2, r3}                         |     *(r7!) = r0;
                                                                 |     *((r7! + 4)) = r1;
                                                                 |     *((r7! + 8)) = r2;
                                                                 |     *((r7! + 12)) = r3;
    0x00041738 ldr r3, [r5]                                      |     r3 = *(r5);
    0x0004173a str r3, [r7]                                      |     *(r7) = r3;
    0x0004173c ldrb r2, [r6]                                     |     r2 = *(r6);
                                                                 |     if (r8 >= sb) {
    0x0004173e bhs.w 0x42098                                     |         goto label_103;
                                                                 |     }
    0x00041742 ldr.w r3, [ip]                                    |     r3 = *(ip);
    0x00041746 movs r1, 0                                        |     r1 = 0;
    0x00041748 str.w r8, [ip, 4]                                 |     __asm ("str.w r8, [ip, 4]");
    0x0004174c strb.w r2, [r3, lr]                               |     *((r3 + lr)) = r2;
    0x00041750 ldrd r2, r3, [ip]                                 |     __asm ("ldrd r2, r3, [ip]");
    0x00041754 strb r1, [r2, r3]                                 |     *((r2 + r3)) = r1;
                                                                 | label_31:
    0x00041756 ldr r3, [r4]                                      |     r3 = *(r4);
    0x00041758 ldr r2, [r4, 0x6c]                                |     r2 = *((r4 + 0x6c));
    0x0004175a add.w r3, r3, 0x2000                              |     r3 += case.0x5984c.0;
    0x0004175e ldrb r1, [r2]                                     |     r1 = *(r2);
    0x00041760 ldrb.w r2, [r3, 0xd98]                            |     r2 = case.0x5984c.0;
    0x00041764 cmp r1, r2                                        |     
    0x00041766 ittt eq                                           |     
                                                                 |     if (r1 != r2) {
    0x00041768 ldreq r2, [r3, 0xd9c]                             |         r2 = case.0x5984c.0;
                                                                 |     }
                                                                 |     if (r1 != r2) {
    0x0004176c addeq r2, 1                                       |         r2++;
                                                                 |     }
                                                                 |     if (r1 == r2) {
    0x0004176e str.w r2, [r3, 0xd9c]                             |         __asm ("str.w r2, case.0x5984c.0");
                                                                 |     }
    0x00041772 ldr.w r2, [r3, 0xdb8]                             |     r2 = case.0x5984c.0;
    0x00041776 cmp r2, 0                                         |     
                                                                 |     if (r2 == 0) {
    0x00041778 beq.w 0x3f9ec                                     |         goto label_14;
                                                                 |     }
    0x0004177c ldr r1, [r4, 0x2c]                                |     r1 = *((r4 + 0x2c));
    0x0004177e cmp r1, 2                                         |     
                                                                 |     if (r1 > 2) {
    0x00041780 bhi.w 0x3f9ec                                     |         goto label_14;
                                                                 |     }
    0x00041784 ldrd r1, r2, [r2]                                 |     __asm ("ldrd r1, r2, [r2]");
    0x00041788 ldr.w r0, [r3, 0xdb4]                             |     r0 = case.0x5984c.0;
    0x0004178c blx 0x1ffec                                       |     fcn_0001ffec ();
    0x00041790 ldr r3, [r4]                                      |     r3 = *(r4);
    0x00041792 movs r1, 0                                        |     r1 = 0;
    0x00041794 add.w r3, r3, 0x2000                              |     r3 += case.0x5984c.0;
    0x00041798 ldr.w r0, [r3, 0xdb8]                             |     r0 = case.0x5984c.0;
    0x0004179c blx 0x1fc8c                                       |     fcn_0001fc8c ();
    0x000417a0 b.w 0x3f9ec                                       |     goto label_14;
    0x000417a4 ldr r2, [r4, 0x20]                                |     r2 = *((r4 + 0x20));
    0x000417a6 cmp r2, 0                                         |     
                                                                 |     if (r2 > 0) {
    0x000417a8 ble 0x417c6                                       |         
    0x000417aa ldr r3, [r4, 0x6c]                                |         r3 = *((r4 + 0x6c));
    0x000417ac ldr r1, [r4, 0xc]                                 |         r1 = *((r4 + 0xc));
    0x000417ae ldr r0, [r4, 0x14]                                |         r0 = *((r4 + 0x14));
    0x000417b0 add r3, r2                                        |         r3 += r2;
    0x000417b2 ldrb r3, [r3, -0x1]                               |         r3 = *((r3 - 0x1));
    0x000417b6 ldr.w r1, [r0, r1, lsl 2]                         |         offset_44 = r1 << 2;
                                                                 |         r1 = *((r0 + offset_44));
    0x000417ba sub.w r3, r3, 0xa                                 |         r3 -= 0xa;
    0x000417be clz r3, r3                                        |         r3 &= r3;
    0x000417c2 lsrs r3, r3, 5                                    |         r3 >>= 5;
    0x000417c4 str r3, [r1, 0x1c]                                |         *((r1 + 0x1c)) = r3;
                                                                 |     }
    0x000417c6 ldr r5, [r4]                                      |     r5 = *(r4);
    0x000417c8 ldr r3, [r4, 0x2c]                                |     r3 = *((r4 + 0x2c));
    0x000417ca add.w r6, r5, 0x2000                              |     r6 = r5 + case.0x5984c.0;
    0x000417ce ldr.w r1, [r6, 0xd94]                             |     r1 = case.0x5984c.0;
    0x000417d2 cmp r3, 2                                         |     
    0x000417d4 itttt ls                                          |     
                                                                 |     if (r3 > 2) {
    0x000417d6 movls r3, 0x2c                                    |         r3 = 0x2c;
                                                                 |     }
                                                                 |     if (r3 <= 2) {
    0x000417d8 mlals r3, r3, r1, r5                              |         __asm ("mlals r3, r3, r1, r5");
                                                                 |     }
                                                                 |     if (r3 > 2) {
    0x000417dc ldrls r0, [r3, 0x1b0]                             |         r0 = case.0x5984c.0;
                                                                 |     }
                                                                 |     if (r3 <= 2) {
    0x000417e0 str.w r0, [r3, 0x1a8]                             |         __asm ("str.w r0, case.0x5984c.0");
                                                                 |     }
    0x000417e4 movs r3, 0x2c                                     |     r3 = 0x2c;
    0x000417e6 mla r5, r3, r1, r5                                |     __asm ("mla r5, r3, r1, r5");
    0x000417ea ldr.w r0, [r6, 0xdb8]                             |     r0 = case.0x5984c.0;
    0x000417ee ldr.w r3, [r5, 0x1b0]                             |     r3 = case.0x5984c.0;
    0x000417f2 add r3, r2                                        |     r3 += r2;
    0x000417f4 str.w r3, [r5, 0x1b0]                             |     __asm ("str.w r3, case.0x5984c.0");
    0x000417f8 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x000417fa beq.w 0x41e94                                     |         goto label_104;
                                                                 |     }
    0x000417fe ldr r1, [r4, 0x6c]                                |     r1 = *((r4 + 0x6c));
    0x00041800 add.w r5, r5, 0x1a4                               |     r5 += case.0x5984c.0;
    0x00041804 blx 0x1ffec                                       |     r0 = fcn_0001ffec ();
    0x00041808 ldm r5!, {r0, r1, r2, r3}                         |     r0 = *(r5!);
                                                                 |     r1 = *((r5! + 4));
                                                                 |     r2 = *((r5! + 8));
                                                                 |     r3 = *((r5! + 12));
    0x0004180a ldr r7, [r4]                                      |     r7 = *(r4);
    0x0004180c ldr r6, [r4, 0x7c]                                |     r6 = *((r4 + 0x7c));
    0x0004180e add.w r7, r7, 0x2000                              |     r7 += case.0x5984c.0;
    0x00041812 ldr.w ip, [r7, 0xdb8]                             |     ip = case.0x5984c.0;
    0x00041816 stm r6!, {r0, r1, r2, r3}                         |     *(r6!) = r0;
                                                                 |     *((r6! + 4)) = r1;
                                                                 |     *((r6! + 8)) = r2;
                                                                 |     *((r6! + 12)) = r3;
    0x00041818 ldr r3, [r5]                                      |     r3 = *(r5);
    0x0004181a str r3, [r6]                                      |     *(r6) = r3;
    0x0004181c cmp.w ip, 0                                       |     
                                                                 |     if (ip == 0) {
    0x00041820 beq.w 0x3f9ec                                     |         goto label_14;
                                                                 |     }
    0x00041824 ldr r3, [r4, 0x2c]                                |     r3 = *((r4 + 0x2c));
    0x00041826 cmp r3, 2                                         |     
                                                                 |     if (r3 > 2) {
    0x00041828 bhi.w 0x3f9ec                                     |         goto label_14;
                                                                 |     }
    0x0004182c ldrd r1, r2, [ip]                                 |     __asm ("ldrd r1, r2, [ip]");
    0x00041830 ldr.w r0, [r7, 0xdb4]                             |     r0 = case.0x5984c.0;
    0x00041834 blx 0x1ffec                                       |     fcn_0001ffec ();
    0x00041838 ldr r3, [r4]                                      |     r3 = *(r4);
    0x0004183a movs r1, 0                                        |     r1 = 0;
    0x0004183c add.w r3, r3, 0x2000                              |     r3 += case.0x5984c.0;
    0x00041840 ldr.w r0, [r3, 0xdb8]                             |     r0 = case.0x5984c.0;
    0x00041844 blx 0x1fc8c                                       |     fcn_0001fc8c ();
    0x00041848 b.w 0x3f9ec                                       |     goto label_14;
    0x0004184c ldr r2, [r4, 0x20]                                |     r2 = *((r4 + 0x20));
    0x0004184e ldr r6, [r4, 0x6c]                                |     r6 = *((r4 + 0x6c));
    0x00041850 cmp r2, 0                                         |     
                                                                 |     if (r2 > 0) {
    0x00041852 ble 0x4186e                                       |         
    0x00041854 ldr r3, [r4, 0x14]                                |         r3 = *((r4 + 0x14));
    0x00041856 ldr r1, [r4, 0xc]                                 |         r1 = *((r4 + 0xc));
    0x00041858 ldr.w r1, [r3, r1, lsl 2]                         |         offset_45 = r1 << 2;
                                                                 |         r1 = *((r3 + offset_45));
    0x0004185c adds r3, r6, r2                                   |         r3 = r6 + r2;
    0x0004185e ldrb r3, [r3, -0x1]                               |         r3 = *((r3 - 0x1));
    0x00041862 sub.w r3, r3, 0xa                                 |         r3 -= 0xa;
    0x00041866 clz r3, r3                                        |         r3 &= r3;
    0x0004186a lsrs r3, r3, 5                                    |         r3 >>= 5;
    0x0004186c str r3, [r1, 0x1c]                                |         *((r1 + 0x1c)) = r3;
                                                                 |     }
    0x0004186e ldr r5, [r4]                                      |     r5 = *(r4);
    0x00041870 ldr r3, [r4, 0x2c]                                |     r3 = *((r4 + 0x2c));
    0x00041872 add.w r0, r5, 0x2000                              |     r0 = r5 + case.0x5984c.0;
    0x00041876 ldr.w r7, [r0, 0xd94]                             |     r7 = case.0x5984c.0;
    0x0004187a cmp r3, 2                                         |     
    0x0004187c it ls                                             |     
                                                                 |     if (r3 > 2) {
    0x0004187e movls r3, 0x2c                                    |         r3 = 0x2c;
                                                                 |     }
    0x00041880 ldr.w r0, [r0, 0xdb8]                             |     r0 = case.0x5984c.0;
    0x00041884 ittt ls                                           |     
                                                                 |     if (r3 <= 2) {
    0x00041886 mlals r3, r3, r7, r5                              |         __asm ("mlals r3, r3, r7, r5");
                                                                 |     }
                                                                 |     if (r3 > 2) {
    0x0004188a ldrls r1, [r3, 0x1b0]                             |         r1 = case.0x5984c.0;
                                                                 |     }
                                                                 |     if (r3 <= 2) {
    0x0004188c asrs r0, r6, 6                                    |         r0 = r6 >> 6;
                                                                 |     }
    0x0004188e str.w r1, [r3, 0x1a8]                             |     __asm ("str.w r1, case.0x5984c.0");
    0x00041892 movs r3, 0x2c                                     |     r3 = 0x2c;
    0x00041894 mla r3, r3, r7, r5                                |     __asm ("mla r3, r3, r7, r5");
    0x00041898 ldr.w r1, [r3, 0x1b0]                             |     r1 = case.0x5984c.0;
    0x0004189c add r1, r2                                        |     r1 += r2;
    0x0004189e str.w r1, [r3, 0x1b0]                             |     __asm ("str.w r1, case.0x5984c.0");
    0x000418a2 mov r3, r5                                        |     r3 = r5;
                                                                 |     if (r0 != 0) {
    0x000418a4 cbz r0, 0x418b0                                   |         
    0x000418a6 mov r1, r6                                        |         r1 = r6;
    0x000418a8 blx 0x1ffec                                       |         fcn_0001ffec ();
    0x000418ac ldr r3, [r4]                                      |         r3 = *(r4);
    0x000418ae ldr r6, [r4, 0x6c]                                |         r6 = *((r4 + 0x6c));
                                                                 |     }
    0x000418b0 add.w r3, r3, 0x2000                              |     r3 += case.0x5984c.0;
    0x000418b4 ldr.w ip, [r3, 0xda8]                             |     ip = case.0x5984c.0;
    0x000418b8 movs r3, 0x2c                                     |     r3 = 0x2c;
    0x000418ba mla r5, r3, r7, r5                                |     __asm ("mla r5, r3, r7, r5");
    0x000418be ldr r7, [r4, 0x7c]                                |     r7 = *((r4 + 0x7c));
    0x000418c0 ldrd lr, sb, [ip, 4]                              |     __asm ("ldrd lr, sb, [ip, 4]");
    0x000418c4 add.w r5, r5, 0x1a4                               |     r5 += case.0x5984c.0;
    0x000418c8 ldm r5!, {r0, r1, r2, r3}                         |     r0 = *(r5!);
                                                                 |     r1 = *((r5! + 4));
                                                                 |     r2 = *((r5! + 8));
                                                                 |     r3 = *((r5! + 12));
    0x000418ca add.w r8, lr, 1                                   |     r8 = lr + 1;
    0x000418ce cmp r8, sb                                        |     
    0x000418d0 stm r7!, {r0, r1, r2, r3}                         |     *(r7!) = r0;
                                                                 |     *((r7! + 4)) = r1;
                                                                 |     *((r7! + 8)) = r2;
                                                                 |     *((r7! + 12)) = r3;
    0x000418d2 ldr r3, [r5]                                      |     r3 = *(r5);
    0x000418d4 str r3, [r7]                                      |     *(r7) = r3;
    0x000418d6 ldrb r2, [r6]                                     |     r2 = *(r6);
                                                                 |     if (r8 >= sb) {
    0x000418d8 bhs.w 0x41f30                                     |         goto label_105;
                                                                 |     }
    0x000418dc ldr.w r3, [ip]                                    |     r3 = *(ip);
    0x000418e0 movs r1, 0                                        |     r1 = 0;
    0x000418e2 str.w r8, [ip, 4]                                 |     __asm ("str.w r8, [ip, 4]");
    0x000418e6 strb.w r2, [r3, lr]                               |     *((r3 + lr)) = r2;
    0x000418ea ldrd r2, r3, [ip]                                 |     __asm ("ldrd r2, r3, [ip]");
    0x000418ee strb r1, [r2, r3]                                 |     *((r2 + r3)) = r1;
                                                                 | label_22:
    0x000418f0 mov r1, r4                                        |     r1 = r4;
    0x000418f2 movs r0, 5                                        |     r0 = 5;
    0x000418f4 bl 0x3f06c                                        |     fcn_0003f06c (r0, r1, r2);
    0x000418f8 ldr r3, [r4]                                      |     r3 = *(r4);
    0x000418fa add.w r3, r3, 0x2000                              |     r3 += case.0x5984c.0;
    0x000418fe ldr.w r2, [r3, 0xdb8]                             |     r2 = case.0x5984c.0;
    0x00041902 cmp r2, 0                                         |     
                                                                 |     if (r2 == 0) {
    0x00041904 beq.w 0x3f9ec                                     |         goto label_14;
                                                                 |     }
    0x00041908 ldr r1, [r4, 0x2c]                                |     r1 = *((r4 + 0x2c));
    0x0004190a cmp r1, 2                                         |     
                                                                 |     if (r1 > 2) {
    0x0004190c bhi.w 0x3f9ec                                     |         goto label_14;
                                                                 |     }
    0x00041910 ldrd r1, r2, [r2]                                 |     __asm ("ldrd r1, r2, [r2]");
    0x00041914 ldr.w r0, [r3, 0xdb4]                             |     r0 = case.0x5984c.0;
    0x00041918 blx 0x1ffec                                       |     fcn_0001ffec ();
    0x0004191c ldr r3, [r4]                                      |     r3 = *(r4);
    0x0004191e movs r1, 0                                        |     r1 = 0;
    0x00041920 add.w r3, r3, 0x2000                              |     r3 += case.0x5984c.0;
    0x00041924 ldr.w r0, [r3, 0xdb8]                             |     r0 = case.0x5984c.0;
    0x00041928 blx 0x1fc8c                                       |     fcn_0001fc8c ();
    0x0004192c b.w 0x3f9ec                                       |     goto label_14;
    0x00041930 ldr r2, [r4, 0x20]                                |     r2 = *((r4 + 0x20));
    0x00041932 ldr r6, [r4, 0x6c]                                |     r6 = *((r4 + 0x6c));
    0x00041934 cmp r2, 0                                         |     
                                                                 |     if (r2 > 0) {
    0x00041936 ble 0x41952                                       |         
    0x00041938 ldr r3, [r4, 0x14]                                |         r3 = *((r4 + 0x14));
    0x0004193a ldr r1, [r4, 0xc]                                 |         r1 = *((r4 + 0xc));
    0x0004193c ldr.w r1, [r3, r1, lsl 2]                         |         offset_46 = r1 << 2;
                                                                 |         r1 = *((r3 + offset_46));
    0x00041940 adds r3, r6, r2                                   |         r3 = r6 + r2;
    0x00041942 ldrb r3, [r3, -0x1]                               |         r3 = *((r3 - 0x1));
    0x00041946 sub.w r3, r3, 0xa                                 |         r3 -= 0xa;
    0x0004194a clz r3, r3                                        |         r3 &= r3;
    0x0004194e lsrs r3, r3, 5                                    |         r3 >>= 5;
    0x00041950 str r3, [r1, 0x1c]                                |         *((r1 + 0x1c)) = r3;
                                                                 |     }
    0x00041952 ldr r5, [r4]                                      |     r5 = *(r4);
    0x00041954 ldr r3, [r4, 0x2c]                                |     r3 = *((r4 + 0x2c));
    0x00041956 add.w r0, r5, 0x2000                              |     r0 = r5 + case.0x5984c.0;
    0x0004195a ldr.w r7, [r0, 0xd94]                             |     r7 = case.0x5984c.0;
    0x0004195e cmp r3, 2                                         |     
    0x00041960 it ls                                             |     
                                                                 |     if (r3 > 2) {
    0x00041962 movls r3, 0x2c                                    |         r3 = 0x2c;
                                                                 |     }
    0x00041964 ldr.w r0, [r0, 0xdb8]                             |     r0 = case.0x5984c.0;
    0x00041968 ittt ls                                           |     
                                                                 |     if (r3 <= 2) {
    0x0004196a mlals r3, r3, r7, r5                              |         __asm ("mlals r3, r3, r7, r5");
                                                                 |     }
                                                                 |     if (r3 > 2) {
    0x0004196e ldrls r1, [r3, 0x1b0]                             |         r1 = case.0x5984c.0;
                                                                 |     }
                                                                 |     if (r3 <= 2) {
    0x00041970 asrs r0, r6, 6                                    |         r0 = r6 >> 6;
                                                                 |     }
    0x00041972 str.w r1, [r3, 0x1a8]                             |     __asm ("str.w r1, case.0x5984c.0");
    0x00041976 movs r3, 0x2c                                     |     r3 = 0x2c;
    0x00041978 mla r3, r3, r7, r5                                |     __asm ("mla r3, r3, r7, r5");
    0x0004197c ldr.w r1, [r3, 0x1b0]                             |     r1 = case.0x5984c.0;
    0x00041980 add r1, r2                                        |     r1 += r2;
    0x00041982 str.w r1, [r3, 0x1b0]                             |     __asm ("str.w r1, case.0x5984c.0");
    0x00041986 mov r3, r5                                        |     r3 = r5;
                                                                 |     if (r0 != 0) {
    0x00041988 cbz r0, 0x41994                                   |         
    0x0004198a mov r1, r6                                        |         r1 = r6;
    0x0004198c blx 0x1ffec                                       |         fcn_0001ffec ();
    0x00041990 ldr r3, [r4]                                      |         r3 = *(r4);
    0x00041992 ldr r6, [r4, 0x6c]                                |         r6 = *((r4 + 0x6c));
                                                                 |     }
    0x00041994 add.w r3, r3, 0x2000                              |     r3 += case.0x5984c.0;
    0x00041998 ldr.w ip, [r3, 0xda8]                             |     ip = case.0x5984c.0;
    0x0004199c movs r3, 0x2c                                     |     r3 = 0x2c;
    0x0004199e mla r5, r3, r7, r5                                |     __asm ("mla r5, r3, r7, r5");
    0x000419a2 ldr r7, [r4, 0x7c]                                |     r7 = *((r4 + 0x7c));
    0x000419a4 ldrd lr, sb, [ip, 4]                              |     __asm ("ldrd lr, sb, [ip, 4]");
    0x000419a8 add.w r5, r5, 0x1a4                               |     r5 += case.0x5984c.0;
    0x000419ac ldm r5!, {r0, r1, r2, r3}                         |     r0 = *(r5!);
                                                                 |     r1 = *((r5! + 4));
                                                                 |     r2 = *((r5! + 8));
                                                                 |     r3 = *((r5! + 12));
    0x000419ae add.w r8, lr, 1                                   |     r8 = lr + 1;
    0x000419b2 cmp r8, sb                                        |     
    0x000419b4 stm r7!, {r0, r1, r2, r3}                         |     *(r7!) = r0;
                                                                 |     *((r7! + 4)) = r1;
                                                                 |     *((r7! + 8)) = r2;
                                                                 |     *((r7! + 12)) = r3;
    0x000419b6 ldr r3, [r5]                                      |     r3 = *(r5);
    0x000419b8 str r3, [r7]                                      |     *(r7) = r3;
    0x000419ba ldrb r2, [r6]                                     |     r2 = *(r6);
                                                                 |     if (r8 >= sb) {
    0x000419bc bhs.w 0x41f5c                                     |         goto label_106;
                                                                 |     }
    0x000419c0 ldr.w r3, [ip]                                    |     r3 = *(ip);
    0x000419c4 movs r1, 0                                        |     r1 = 0;
    0x000419c6 str.w r8, [ip, 4]                                 |     __asm ("str.w r8, [ip, 4]");
    0x000419ca strb.w r2, [r3, lr]                               |     *((r3 + lr)) = r2;
    0x000419ce ldrd r2, r3, [ip]                                 |     __asm ("ldrd r2, r3, [ip]");
    0x000419d2 strb r1, [r2, r3]                                 |     *((r2 + r3)) = r1;
                                                                 | label_25:
    0x000419d4 mov r0, r4                                        |     r0 = r4;
    0x000419d6 bl 0x3e9d8                                        |     fcn_0003e9d8 (r0);
    0x000419da ldr r3, [r4]                                      |     r3 = *(r4);
    0x000419dc add.w r3, r3, 0x2000                              |     r3 += case.0x5984c.0;
    0x000419e0 ldr.w r2, [r3, 0xdb8]                             |     r2 = case.0x5984c.0;
    0x000419e4 cmp r2, 0                                         |     
                                                                 |     if (r2 == 0) {
    0x000419e6 beq.w 0x3f9ec                                     |         goto label_14;
                                                                 |     }
    0x000419ea ldr r1, [r4, 0x2c]                                |     r1 = *((r4 + 0x2c));
    0x000419ec cmp r1, 2                                         |     
                                                                 |     if (r1 > 2) {
    0x000419ee bhi.w 0x3f9ec                                     |         goto label_14;
                                                                 |     }
    0x000419f2 ldrd r1, r2, [r2]                                 |     __asm ("ldrd r1, r2, [r2]");
    0x000419f6 ldr.w r0, [r3, 0xdb4]                             |     r0 = case.0x5984c.0;
    0x000419fa blx 0x1ffec                                       |     fcn_0001ffec ();
    0x000419fe ldr r3, [r4]                                      |     r3 = *(r4);
    0x00041a00 movs r1, 0                                        |     r1 = 0;
    0x00041a02 add.w r3, r3, 0x2000                              |     r3 += case.0x5984c.0;
    0x00041a06 ldr.w r0, [r3, 0xdb8]                             |     r0 = case.0x5984c.0;
    0x00041a0a blx 0x1fc8c                                       |     fcn_0001fc8c ();
    0x00041a0e b.w 0x3f9ec                                       |     goto label_14;
    0x00041a12 ldr r2, [r4, 0x20]                                |     r2 = *((r4 + 0x20));
    0x00041a14 ldr.w ip, [r4, 0x6c]                              |     ip = *((r4 + 0x6c));
    0x00041a18 cmp r2, 0                                         |     
                                                                 |     if (r2 > 0) {
    0x00041a1a ble 0x41a38                                       |         
    0x00041a1c ldr r3, [r4, 0x14]                                |         r3 = *((r4 + 0x14));
    0x00041a1e ldr r1, [r4, 0xc]                                 |         r1 = *((r4 + 0xc));
    0x00041a20 ldr.w r1, [r3, r1, lsl 2]                         |         offset_47 = r1 << 2;
                                                                 |         r1 = *((r3 + offset_47));
    0x00041a24 add.w r3, ip, r2                                  |         r3 = ip + r2;
    0x00041a28 ldrb r3, [r3, -0x1]                               |         r3 = *((r3 - 0x1));
    0x00041a2c sub.w r3, r3, 0xa                                 |         r3 -= 0xa;
    0x00041a30 clz r3, r3                                        |         r3 &= r3;
    0x00041a34 lsrs r3, r3, 5                                    |         r3 >>= 5;
    0x00041a36 str r3, [r1, 0x1c]                                |         *((r1 + 0x1c)) = r3;
                                                                 |     }
    0x00041a38 ldr r5, [r4]                                      |     r5 = *(r4);
    0x00041a3a ldr r3, [r4, 0x2c]                                |     r3 = *((r4 + 0x2c));
    0x00041a3c add.w r0, r5, 0x2000                              |     r0 = r5 + case.0x5984c.0;
    0x00041a40 ldr.w r6, [r0, 0xd94]                             |     r6 = case.0x5984c.0;
    0x00041a44 cmp r3, 2                                         |     
    0x00041a46 it ls                                             |     
                                                                 |     if (r3 > 2) {
    0x00041a48 movls r3, 0x2c                                    |         r3 = 0x2c;
                                                                 |     }
    0x00041a4a ldr.w r0, [r0, 0xdb8]                             |     r0 = case.0x5984c.0;
    0x00041a4c lsrs r0, r7, 0x16                                 |     r0 = r7 >> 0x16;
    0x00041a4e ittt ls                                           |     
                                                                 |     if (r0 <= r7) {
    0x00041a50 mlals r3, r3, r6, r5                              |         __asm ("mlals r3, r3, r6, r5");
                                                                 |     }
                                                                 |     if (r0 > r7) {
    0x00041a54 ldrls r1, [r3, 0x1b0]                             |         r1 = case.0x5984c.0;
                                                                 |     }
                                                                 |     if (r0 <= r7) {
    0x00041a58 str.w r1, [r3, 0x1a8]                             |         __asm ("str.w r1, case.0x5984c.0");
                                                                 |     }
    0x00041a5c movs r3, 0x2c                                     |     r3 = 0x2c;
    0x00041a5e mla r3, r3, r6, r5                                |     __asm ("mla r3, r3, r6, r5");
    0x00041a62 ldr.w r1, [r3, 0x1b0]                             |     r1 = case.0x5984c.0;
    0x00041a66 add r1, r2                                        |     r1 += r2;
    0x00041a68 str.w r1, [r3, 0x1b0]                             |     __asm ("str.w r1, case.0x5984c.0");
    0x00041a6c mov r3, r5                                        |     r3 = r5;
                                                                 |     if (r0 != 0) {
    0x00041a6e cbz r0, 0x41a7c                                   |         
    0x00041a70 mov r1, ip                                        |         r1 = ip;
    0x00041a72 blx 0x1ffec                                       |         fcn_0001ffec ();
    0x00041a74 invalid                                           |         
    0x00041a78 ldr.w ip, [r4, 0x6c]                              |         ip = *((r4 + 0x6c));
                                                                 |     }
    0x00041a7c movs r7, 0x2c                                     |     r7 = 0x2c;
    0x00041a7e add.w lr, r3, 0x2000                              |     lr = r3 + case.0x5984c.0;
    0x00041a82 mla r5, r7, r6, r5                                |     __asm ("mla r5, r7, r6, r5");
    0x00041a86 ldr r6, [r4, 0x7c]                                |     r6 = *((r4 + 0x7c));
    0x00041a88 add.w r5, r5, 0x1a4                               |     r5 += case.0x5984c.0;
    0x00041a8c ldm r5!, {r0, r1, r2, r3}                         |     r0 = *(r5!);
                                                                 |     r1 = *((r5! + 4));
                                                                 |     r2 = *((r5! + 8));
                                                                 |     r3 = *((r5! + 12));
    0x00041a8e stm r6!, {r0, r1, r2, r3}                         |     *(r6!) = r0;
                                                                 |     *((r6! + 4)) = r1;
                                                                 |     *((r6! + 8)) = r2;
                                                                 |     *((r6! + 12)) = r3;
    0x00041a90 mov r1, ip                                        |     r1 = ip;
    0x00041a92 ldr r3, [r5]                                      |     r3 = *(r5);
    0x00041a94 ldr.w r0, [lr, 0xda8]                             |     r0 = case.0x5984c.0;
    0x00041a98 str r3, [r6]                                      |     *(r6) = r3;
    0x00041a9a blx 0x23764                                       |     fcn_00023764 ();
    0x00041a9e ldr r3, [r4]                                      |     r3 = *(r4);
    0x00041aa0 movs r1, 1                                        |     r1 = 1;
    0x00041aa2 add.w r2, r3, 0x2000                              |     r2 = r3 + case.0x5984c.0;
    0x00041aa6 ldr.w r0, [r2, 0xd94]                             |     r0 = case.0x5984c.0;
    0x00041aaa mla r3, r7, r0, r3                                |     __asm ("mla r3, r7, r0, r3");
    0x00041aae str.w r1, [r3, 0x1b0]                             |     __asm ("str.w r1, case.0x5984c.0");
    0x00041ab2 ldr.w r1, [r3, 0x1ac]                             |     r1 = case.0x5984c.0;
    0x00041ab6 adds r1, 1                                        |     r1++;
    0x00041ab8 str.w r1, [r3, 0x1ac]                             |     __asm ("str.w r1, case.0x5984c.0");
    0x00041abc ldr.w r3, [r2, 0xdb8]                             |     r3 = case.0x5984c.0;
    0x00041ac0 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x00041ac2 beq.w 0x3f9ec                                     |         goto label_14;
                                                                 |     }
    0x00041ac6 ldr r1, [r4, 0x2c]                                |     r1 = *((r4 + 0x2c));
    0x00041ac8 cmp r1, 2                                         |     
                                                                 |     if (r1 > 2) {
    0x00041aca bhi.w 0x3f9ec                                     |         goto label_14;
                                                                 |     }
    0x00041ace ldr.w r0, [r2, 0xdb4]                             |     r0 = case.0x5984c.0;
    0x00041ad2 ldrd r1, r2, [r3]                                 |     __asm ("ldrd r1, r2, [r3]");
    0x00041ad6 blx 0x1ffec                                       |     fcn_0001ffec ();
    0x00041ada ldr r3, [r4]                                      |     r3 = *(r4);
    0x00041adc movs r1, 0                                        |     r1 = 0;
    0x00041ade add.w r3, r3, 0x2000                              |     r3 += case.0x5984c.0;
    0x00041ae2 ldr.w r0, [r3, 0xdb8]                             |     r0 = case.0x5984c.0;
    0x00041ae6 blx 0x1fc8c                                       |     fcn_0001fc8c ();
    0x00041aea b.w 0x3f9ec                                       |     goto label_14;
    0x00041aee ldr r2, [r4, 0x20]                                |     r2 = *((r4 + 0x20));
    0x00041af0 cmp r2, 0                                         |     
                                                                 |     if (r2 > 0) {
    0x00041af2 ble 0x41b10                                       |         
    0x00041af4 ldr r3, [r4, 0x6c]                                |         r3 = *((r4 + 0x6c));
    0x00041af6 ldr r1, [r4, 0xc]                                 |         r1 = *((r4 + 0xc));
    0x00041af8 ldr r0, [r4, 0x14]                                |         r0 = *((r4 + 0x14));
    0x00041afa add r3, r2                                        |         r3 += r2;
    0x00041afc ldrb r3, [r3, -0x1]                               |         r3 = *((r3 - 0x1));
    0x00041b00 ldr.w r1, [r0, r1, lsl 2]                         |         offset_48 = r1 << 2;
                                                                 |         r1 = *((r0 + offset_48));
    0x00041b04 sub.w r3, r3, 0xa                                 |         r3 -= 0xa;
    0x00041b08 clz r3, r3                                        |         r3 &= r3;
    0x00041b0c lsrs r3, r3, 5                                    |         r3 >>= 5;
    0x00041b0e str r3, [r1, 0x1c]                                |         *((r1 + 0x1c)) = r3;
                                                                 |     }
    0x00041b10 ldr r5, [r4]                                      |     r5 = *(r4);
    0x00041b12 ldr r3, [r4, 0x2c]                                |     r3 = *((r4 + 0x2c));
    0x00041b14 add.w r0, r5, 0x2000                              |     r0 = r5 + case.0x5984c.0;
    0x00041b18 ldr.w r6, [r0, 0xd94]                             |     r6 = case.0x5984c.0;
    0x00041b1c cmp r3, 2                                         |     
    0x00041b1e it ls                                             |     
                                                                 |     if (r3 > 2) {
    0x00041b20 movls r3, 0x2c                                    |         r3 = 0x2c;
                                                                 |     }
    0x00041b22 ldr.w r0, [r0, 0xdb8]                             |     r0 = case.0x5984c.0;
    0x00041b24 lsrs r0, r7, 0x16                                 |     r0 = r7 >> 0x16;
    0x00041b26 ittt ls                                           |     
                                                                 |     if (r0 <= r7) {
    0x00041b28 mlals r3, r3, r6, r5                              |         __asm ("mlals r3, r3, r6, r5");
                                                                 |     }
                                                                 |     if (r0 > r7) {
    0x00041b2c ldrls r1, [r3, 0x1b0]                             |         r1 = case.0x5984c.0;
                                                                 |     }
                                                                 |     if (r0 <= r7) {
    0x00041b30 str.w r1, [r3, 0x1a8]                             |         __asm ("str.w r1, case.0x5984c.0");
                                                                 |     }
    0x00041b34 movs r3, 0x2c                                     |     r3 = 0x2c;
    0x00041b36 mla r3, r3, r6, r5                                |     __asm ("mla r3, r3, r6, r5");
    0x00041b3a ldr.w r1, [r3, 0x1b0]                             |     r1 = case.0x5984c.0;
    0x00041b3e add r1, r2                                        |     r1 += r2;
    0x00041b40 str.w r1, [r3, 0x1b0]                             |     __asm ("str.w r1, case.0x5984c.0");
                                                                 |     if (r0 != 0) {
    0x00041b44 cbz r0, 0x41b4c                                   |         
    0x00041b46 ldr r1, [r4, 0x6c]                                |         r1 = *((r4 + 0x6c));
    0x00041b48 blx 0x1ffec                                       |         fcn_0001ffec ();
                                                                 |     }
    0x00041b4c movs r3, 0x2c                                     |     r3 = 0x2c;
    0x00041b4e mla r5, r3, r6, r5                                |     __asm ("mla r5, r3, r6, r5");
    0x00041b52 ldr r6, [r4, 0x7c]                                |     r6 = *((r4 + 0x7c));
    0x00041b54 add.w r5, r5, 0x1a4                               |     r5 += case.0x5984c.0;
    0x00041b58 ldm r5!, {r0, r1, r2, r3}                         |     r0 = *(r5!);
                                                                 |     r1 = *((r5! + 4));
                                                                 |     r2 = *((r5! + 8));
                                                                 |     r3 = *((r5! + 12));
    0x00041b5a stm r6!, {r0, r1, r2, r3}                         |     *(r6!) = r0;
                                                                 |     *((r6! + 4)) = r1;
                                                                 |     *((r6! + 8)) = r2;
                                                                 |     *((r6! + 12)) = r3;
    0x00041b5c mov r0, r4                                        |     r0 = r4;
    0x00041b5e ldr r3, [r5]                                      |     r3 = *(r5);
    0x00041b60 str r3, [r6]                                      |     *(r6) = r3;
    0x00041b62 bl 0x3f5d4                                        |     r0 = fcn_0003f5d4 (r0);
    0x00041b66 cmp.w r0, -1                                      |     
    0x00041b6a it ne                                             |     
                                                                 |     if (r0 != -1) {
    0x00041b6c cmpne r0, 0xa                                     |         __asm ("cmpne r0, 0xa");
                                                                 |     }
    0x00041b6e mov r3, r0                                        |     r3 = r0;
                                                                 |     if (r0 == -1) {
    0x00041b70 beq.w 0x41db0                                     |         goto label_107;
                                                                 |     }
    0x00041b74 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00041b76 beq.w 0x41dbe                                     |         goto label_108;
                                                                 |     }
    0x00041b78 strh r2, [r4, 8]                                  |     *((r4 + 8)) = r2;
    0x00041b7a movs r5, 0                                        |     r5 = 0;
    0x00041b7c b 0x41ba4                                         |     goto label_109;
                                                                 | label_17:
    0x00041b7e str r1, [r0, 4]                                   |     *((r0 + 4)) = r1;
    0x00041b80 ldr r1, [r0]                                      |     r1 = *(r0);
    0x00041b82 strb r2, [r1, r3]                                 |     *((r1 + r3)) = r2;
    0x00041b84 ldrd r2, r3, [r0]                                 |     __asm ("ldrd r2, r3, [r0]");
    0x00041b88 strb r5, [r2, r3]                                 |     *((r2 + r3)) = r5;
                                                                 |     do {
    0x00041b8a mov r0, r4                                        |         r0 = r4;
    0x00041b8c bl 0x3f5d4                                        |         r0 = fcn_0003f5d4 (r0);
    0x00041b90 cmp r0, 0xa                                       |         
    0x00041b92 it ne                                             |         
                                                                 |         if (r0 != 0xa) {
    0x00041b94 cmpne r0, -1                                      |             __asm ("cmpne r0, -1");
                                                                 |         }
    0x00041b98 mov r3, r0                                        |         r3 = r0;
                                                                 |         if (r0 == 0xa) {
    0x00041b9a beq.w 0x41db0                                     |             goto label_107;
                                                                 |         }
    0x00041b9e cmp r0, 0                                         |         
                                                                 |         if (r0 == 0) {
    0x00041ba0 beq.w 0x41dbe                                     |             goto label_108;
                                                                 |         }
                                                                 | label_109:
    0x00041ba4 ldr r2, [r4]                                      |         r2 = *(r4);
    0x00041ba6 add.w r2, r2, 0x2000                              |         r2 += case.0x5984c.0;
    0x00041baa ldr.w r0, [r2, 0xdb8]                             |         r0 = case.0x5984c.0;
    0x00041bae cmp r0, 0                                         |         
    0x00041bb0 beq 0x41b8a                                       |         
                                                                 |     } while (r0 == 0);
    0x00041bb2 uxtb r2, r3                                       |     r2 = (int8_t) r3;
    0x00041bb4 ldrd r3, r6, [r0, 4]                              |     __asm ("ldrd r3, r6, [r0, 4]");
    0x00041bb8 adds r1, r3, 1                                    |     r1 = r3 + 1;
    0x00041bba cmp r1, r6                                        |     
                                                                 |     if (r1 <= r6) {
    0x00041bbc blo 0x41b7e                                       |         goto label_17;
                                                                 |     }
    0x00041bbe mov.w r1, -1                                      |     r1 = -1;
    0x00041bc2 blx 0x21254                                       |     r0 = g_sprintf ()
    0x00041bc4 adc.w r7, r8, r0, asr 27                          |     __asm ("adc.w r7, r8, r0, asr 27");
    0x00041bc8 ldr r2, [r4, 0x20]                                |     r2 = *((r4 + 0x20));
    0x00041bca ldr.w ip, [r4, 0x6c]                              |     ip = *((r4 + 0x6c));
    0x00041bce cmp r2, 0                                         |     
                                                                 |     if (r2 > 0) {
    0x00041bd0 ble 0x41bee                                       |         
    0x00041bd2 ldr r3, [r4, 0x14]                                |         r3 = *((r4 + 0x14));
    0x00041bd4 ldr r1, [r4, 0xc]                                 |         r1 = *((r4 + 0xc));
    0x00041bd6 ldr.w r1, [r3, r1, lsl 2]                         |         offset_49 = r1 << 2;
                                                                 |         r1 = *((r3 + offset_49));
    0x00041bda add.w r3, ip, r2                                  |         r3 = ip + r2;
    0x00041bde ldrb r3, [r3, -0x1]                               |         r3 = *((r3 - 0x1));
    0x00041be2 sub.w r3, r3, 0xa                                 |         r3 -= 0xa;
    0x00041be6 clz r3, r3                                        |         r3 &= r3;
    0x00041bea lsrs r3, r3, 5                                    |         r3 >>= 5;
    0x00041bec str r3, [r1, 0x1c]                                |         *((r1 + 0x1c)) = r3;
                                                                 |     }
    0x00041bee ldr r5, [r4]                                      |     r5 = *(r4);
    0x00041bf0 ldr r3, [r4, 0x2c]                                |     r3 = *((r4 + 0x2c));
    0x00041bf2 add.w r0, r5, 0x2000                              |     r0 = r5 + case.0x5984c.0;
    0x00041bf6 ldr.w r6, [r0, 0xd94]                             |     r6 = case.0x5984c.0;
    0x00041bfa cmp r3, 2                                         |     
    0x00041bfc it ls                                             |     
                                                                 |     if (r3 > 2) {
    0x00041bfe movls r3, 0x2c                                    |         r3 = 0x2c;
                                                                 |     }
    0x00041c00 ldr.w r0, [r0, 0xdb8]                             |     r0 = case.0x5984c.0;
    0x00041c04 ittt ls                                           |     
                                                                 |     if (r3 <= 2) {
    0x00041c06 mlals r3, r3, r6, r5                              |         __asm ("mlals r3, r3, r6, r5");
                                                                 |     }
                                                                 |     if (r3 > 2) {
    0x00041c0a ldrls r1, [r3, 0x1b0]                             |         r1 = case.0x5984c.0;
                                                                 |     }
                                                                 |     if (r3 <= 2) {
    0x00041c0e str.w r1, [r3, 0x1a8]                             |         __asm ("str.w r1, case.0x5984c.0");
                                                                 |     }
    0x00041c12 movs r3, 0x2c                                     |     r3 = 0x2c;
    0x00041c14 mla r3, r3, r6, r5                                |     __asm ("mla r3, r3, r6, r5");
    0x00041c18 ldr.w r1, [r3, 0x1b0]                             |     r1 = case.0x5984c.0;
    0x00041c1c add r1, r2                                        |     r1 += r2;
    0x00041c1e str.w r1, [r3, 0x1b0]                             |     __asm ("str.w r1, case.0x5984c.0");
    0x00041c22 mov r3, r5                                        |     r3 = r5;
                                                                 |     if (r0 != 0) {
    0x00041c24 cbz r0, 0x41c32                                   |         
    0x00041c26 mov r1, ip                                        |         r1 = ip;
    0x00041c28 blx 0x1ffec                                       |         fcn_0001ffec ();
    0x00041c2c ldr r3, [r4]                                      |         r3 = *(r4);
    0x00041c2e ldr.w ip, [r4, 0x6c]                              |         ip = *((r4 + 0x6c));
                                                                 |     }
    0x00041c32 movs r7, 0x2c                                     |     r7 = 0x2c;
    0x00041c34 add.w lr, r3, 0x2000                              |     lr = r3 + case.0x5984c.0;
    0x00041c38 mla r5, r7, r6, r5                                |     __asm ("mla r5, r7, r6, r5");
    0x00041c3c ldr r6, [r4, 0x7c]                                |     r6 = *((r4 + 0x7c));
    0x00041c3e add.w r5, r5, 0x1a4                               |     r5 += case.0x5984c.0;
    0x00041c42 ldm r5!, {r0, r1, r2, r3}                         |     r0 = *(r5!);
                                                                 |     r1 = *((r5! + 4));
                                                                 |     r2 = *((r5! + 8));
                                                                 |     r3 = *((r5! + 12));
    0x00041c44 stm r6!, {r0, r1, r2, r3}                         |     *(r6!) = r0;
                                                                 |     *((r6! + 4)) = r1;
                                                                 |     *((r6! + 8)) = r2;
                                                                 |     *((r6! + 12)) = r3;
    0x00041c46 mov r1, ip                                        |     r1 = ip;
    0x00041c48 ldr r3, [r5]                                      |     r3 = *(r5);
    0x00041c4a ldr.w r0, [lr, 0xda8]                             |     r0 = case.0x5984c.0;
    0x00041c4e str r3, [r6]                                      |     *(r6) = r3;
    0x00041c50 blx 0x23764                                       |     fcn_00023764 ();
    0x00041c54 ldr r3, [r4]                                      |     r3 = *(r4);
    0x00041c56 movs r1, 1                                        |     r1 = 1;
    0x00041c58 add.w r2, r3, 0x2000                              |     r2 = r3 + case.0x5984c.0;
    0x00041c5c ldr.w r0, [r2, 0xd94]                             |     r0 = case.0x5984c.0;
    0x00041c60 mla r3, r7, r0, r3                                |     __asm ("mla r3, r7, r0, r3");
    0x00041c64 str.w r1, [r3, 0x1b0]                             |     __asm ("str.w r1, case.0x5984c.0");
    0x00041c68 ldr.w r1, [r3, 0x1ac]                             |     r1 = case.0x5984c.0;
    0x00041c6c adds r1, 1                                        |     r1++;
    0x00041c6e str.w r1, [r3, 0x1ac]                             |     __asm ("str.w r1, case.0x5984c.0");
    0x00041c72 ldr.w r3, [r2, 0xdb8]                             |     r3 = case.0x5984c.0;
    0x00041c76 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x00041c78 beq.w 0x3f9ec                                     |         goto label_14;
                                                                 |     }
    0x00041c7c ldr r1, [r4, 0x2c]                                |     r1 = *((r4 + 0x2c));
    0x00041c7e cmp r1, 2                                         |     
                                                                 |     if (r1 > 2) {
    0x00041c80 bhi.w 0x3f9ec                                     |         goto label_14;
                                                                 |     }
    0x00041c84 ldr.w r0, [r2, 0xdb4]                             |     r0 = case.0x5984c.0;
    0x00041c88 ldrd r1, r2, [r3]                                 |     __asm ("ldrd r1, r2, [r3]");
    0x00041c8c blx 0x1ffec                                       |     fcn_0001ffec ();
    0x00041c90 ldr r3, [r4]                                      |     r3 = *(r4);
    0x00041c92 movs r1, 0                                        |     r1 = 0;
    0x00041c94 add.w r3, r3, 0x2000                              |     r3 += case.0x5984c.0;
    0x00041c98 ldr.w r0, [r3, 0xdb8]                             |     r0 = case.0x5984c.0;
    0x00041c9c blx 0x1fc8c                                       |     fcn_0001fc8c ();
    0x00041ca0 b.w 0x3f9ec                                       |     goto label_14;
    0x00041ca4 ldr r2, [r4, 0x20]                                |     r2 = *((r4 + 0x20));
    0x00041ca6 ldr r7, [r4, 0x6c]                                |     r7 = *((r4 + 0x6c));
    0x00041ca8 cmp r2, 0                                         |     
                                                                 |     if (r2 > 0) {
    0x00041caa ble 0x41cc6                                       |         
    0x00041cac ldr r3, [r4, 0x14]                                |         r3 = *((r4 + 0x14));
    0x00041cae ldr r1, [r4, 0xc]                                 |         r1 = *((r4 + 0xc));
    0x00041cb0 ldr.w r1, [r3, r1, lsl 2]                         |         offset_50 = r1 << 2;
                                                                 |         r1 = *((r3 + offset_50));
    0x00041cb4 adds r3, r7, r2                                   |         r3 = r7 + r2;
    0x00041cb6 ldrb r3, [r3, -0x1]                               |         r3 = *((r3 - 0x1));
    0x00041cb8 subs r4, 1                                        |         r4--;
    0x00041cba sub.w r3, r3, 0xa                                 |         r3 -= 0xa;
    0x00041cbc lsls r2, r1, 0xc                                  |         r2 = r1 << 0xc;
    0x00041cbe clz r3, r3                                        |         r3 &= r3;
    0x00041cc2 lsrs r3, r3, 5                                    |         r3 >>= 5;
    0x00041cc4 str r3, [r1, 0x1c]                                |         *((r1 + 0x1c)) = r3;
                                                                 |     }
    0x00041cc6 ldr r5, [r4]                                      |     r5 = *(r4);
    0x00041cc8 ldr r3, [r4, 0x2c]                                |     r3 = *((r4 + 0x2c));
    0x00041cca add.w r0, r5, 0x2000                              |     r0 = r5 + case.0x5984c.0;
    0x00041cce ldr.w r6, [r0, 0xd94]                             |     r6 = case.0x5984c.0;
    0x00041cd2 cmp r3, 2                                         |     
    0x00041cd4 it ls                                             |     
                                                                 |     if (r3 > 2) {
    0x00041cd6 movls r3, 0x2c                                    |         r3 = 0x2c;
                                                                 |     }
    0x00041cd8 ldr.w r0, [r0, 0xdb8]                             |     r0 = case.0x5984c.0;
    0x00041cdc ittt ls                                           |     
                                                                 |     if (r3 <= 2) {
    0x00041cde mlals r3, r3, r6, r5                              |         __asm ("mlals r3, r3, r6, r5");
                                                                 |     }
                                                                 |     if (r3 > 2) {
    0x00041ce2 ldrls r1, [r3, 0x1b0]                             |         r1 = case.0x5984c.0;
                                                                 |     }
                                                                 |     if (r3 <= 2) {
    0x00041ce6 str.w r1, [r3, 0x1a8]                             |         __asm ("str.w r1, case.0x5984c.0");
                                                                 |     }
    0x00041cea movs r3, 0x2c                                     |     r3 = 0x2c;
    0x00041cec mla r3, r3, r6, r5                                |     __asm ("mla r3, r3, r6, r5");
    0x00041cf0 ldr.w r1, [r3, 0x1b0]                             |     r1 = case.0x5984c.0;
    0x00041cf4 add r1, r2                                        |     r1 += r2;
    0x00041cf6 str.w r1, [r3, 0x1b0]                             |     __asm ("str.w r1, case.0x5984c.0");
    0x00041cfa mov r3, r5                                        |     r3 = r5;
                                                                 |     if (r0 != 0) {
    0x00041cfc cbz r0, 0x41d08                                   |         
    0x00041cfe mov r1, r7                                        |         r1 = r7;
    0x00041d00 blx 0x1ffec                                       |         fcn_0001ffec ();
    0x00041d04 ldr r3, [r4]                                      |         r3 = *(r4);
    0x00041d06 ldr r7, [r4, 0x6c]                                |         r7 = *((r4 + 0x6c));
                                                                 |     }
    0x00041d08 add.w ip, r3, 0x2000                              |     
    0x00041d0c movs r3, 0x2c                                     |     r3 = 0x2c;
    0x00041d0e mla r5, r3, r6, r5                                |     __asm ("mla r5, r3, r6, r5");
    0x00041d12 ldr r6, [r4, 0x7c]                                |     r6 = *((r4 + 0x7c));
    0x00041d14 add.w r5, r5, 0x1a4                               |     r5 += case.0x5984c.0;
    0x00041d18 ldm r5!, {r0, r1, r2, r3}                         |     r0 = *(r5!);
                                                                 |     r1 = *((r5! + 4));
                                                                 |     r2 = *((r5! + 8));
                                                                 |     r3 = *((r5! + 12));
    0x00041d1a stm r6!, {r0, r1, r2, r3}                         |     *(r6!) = r0;
                                                                 |     *((r6! + 4)) = r1;
                                                                 |     *((r6! + 8)) = r2;
                                                                 |     *((r6! + 12)) = r3;
    0x00041d1c mov r1, r7                                        |     r1 = r7;
    0x00041d1e ldr r3, [r5]                                      |     r3 = *(r5);
    0x00041d20 ldr.w r0, [ip, 0xda8]                             |     r0 = case.0x5984c.0;
    0x00041d24 str r3, [r6]                                      |     *(r6) = r3;
    0x00041d26 blx 0x23764                                       |     fcn_00023764 ();
    0x00041d2a ldr r3, [r4]                                      |     r3 = *(r4);
    0x00041d2c add.w r3, r3, 0x2000                              |     r3 += case.0x5984c.0;
    0x00041d30 ldr.w r2, [r3, 0xdb8]                             |     r2 = case.0x5984c.0;
    0x00041d34 cmp r2, 0                                         |     
                                                                 |     if (r2 == 0) {
    0x00041d36 beq.w 0x3f9ec                                     |         goto label_14;
                                                                 |     }
    0x00041d3a ldr r1, [r4, 0x2c]                                |     r1 = *((r4 + 0x2c));
    0x00041d3c cmp r1, 2                                         |     
                                                                 |     if (r1 > 2) {
    0x00041d3e bhi.w 0x3f9ec                                     |         goto label_14;
                                                                 |     }
    0x00041d42 ldrd r1, r2, [r2]                                 |     __asm ("ldrd r1, r2, [r2]");
    0x00041d46 ldr.w r0, [r3, 0xdb4]                             |     r0 = case.0x5984c.0;
    0x00041d4a blx 0x1ffec                                       |     fcn_0001ffec ();
    0x00041d4e ldr r3, [r4]                                      |     r3 = *(r4);
    0x00041d50 movs r1, 0                                        |     r1 = 0;
    0x00041d52 add.w r3, r3, 0x2000                              |     r3 += case.0x5984c.0;
    0x00041d54 strh r0, [r0, r4]                                 |     *((r0 + r4)) = r0;
    0x00041d56 ldr.w r0, [r3, 0xdb8]                             |     r0 = case.0x5984c.0;
    0x00041d5a blx 0x1fc8c                                       |     fcn_0001fc8c ();
    0x00041d5e b.w 0x3f9ec                                       |     goto label_14;
                                                                 | label_107:
    0x00041db0 cmp r3, 0xa                                       |     
                                                                 |     if (r3 == 0xa) {
    0x00041db2 bne 0x41dbe                                       |         
    0x00041db4 ldr r1, [r4, 0x6c]                                |         r1 = *((r4 + 0x6c));
    0x00041db6 mov r2, r4                                        |         r2 = r4;
    0x00041db8 mov r0, r3                                        |         r0 = r3;
    0x00041dba bl 0x3e8f4                                        |         fcn_0003e8f4 (r0, r1, r2);
                                                                 |     }
                                                                 | label_108:
    0x00041dbe ldr r3, [r4]                                      |     r3 = *(r4);
    0x00041dc0 add.w r3, r3, 0x2000                              |     r3 += case.0x5984c.0;
    0x00041dc4 ldr.w r2, [r3, 0xdb8]                             |     r2 = case.0x5984c.0;
    0x00041dc8 cmp r2, 0                                         |     
                                                                 |     if (r2 == 0) {
    0x00041dca beq.w 0x3f9ec                                     |         goto label_14;
                                                                 |     }
    0x00041dce ldr r1, [r4, 0x2c]                                |     r1 = *((r4 + 0x2c));
    0x00041dd0 cmp r1, 2                                         |     
                                                                 |     if (r1 > 2) {
    0x00041dd2 bhi.w 0x3f9ec                                     |         goto label_14;
                                                                 |     }
    0x00041dd6 ldrd r1, r2, [r2]                                 |     __asm ("ldrd r1, r2, [r2]");
    0x00041dda ldr.w r0, [r3, 0xdb4]                             |     r0 = case.0x5984c.0;
    0x00041dde blx 0x1ffec                                       |     fcn_0001ffec ();
    0x00041de2 ldr r3, [r4]                                      |     r3 = *(r4);
    0x00041de4 movs r1, 0                                        |     r1 = 0;
    0x00041de6 add.w r3, r3, 0x2000                              |     r3 += case.0x5984c.0;
    0x00041dea ldr.w r0, [r3, 0xdb8]                             |     r0 = case.0x5984c.0;
    0x00041dee blx 0x1fc8c                                       |     fcn_0001fc8c ();
    0x00041df2 b.w 0x3f9ec                                       |     goto label_14;
    0x00041df6 ldr r2, [r4, 0x20]                                |     r2 = *((r4 + 0x20));
    0x00041df8 cmp r2, 0                                         |     
                                                                 |     if (r2 > 0) {
    0x00041dfa ble 0x41e18                                       |         
    0x00041dfc ldr r3, [r4, 0x6c]                                |         r3 = *((r4 + 0x6c));
    0x00041dfe ldr r0, [r4, 0xc]                                 |         r0 = *((r4 + 0xc));
    0x00041e00 ldr r1, [r4, 0x14]                                |         r1 = *((r4 + 0x14));
    0x00041e02 add r3, r2                                        |         r3 += r2;
    0x00041e04 ldrb r3, [r3, -0x1]                               |         r3 = *((r3 - 0x1));
    0x00041e08 ldr.w r1, [r1, r0, lsl 2]                         |         offset_51 = r0 << 2;
                                                                 |         r1 = *((r1 + offset_51));
    0x00041e0c sub.w r3, r3, 0xa                                 |         r3 -= 0xa;
    0x00041e10 clz r3, r3                                        |         r3 &= r3;
    0x00041e14 lsrs r3, r3, 5                                    |         r3 >>= 5;
    0x00041e16 str r3, [r1, 0x1c]                                |         *((r1 + 0x1c)) = r3;
                                                                 |     }
    0x00041e18 ldr r5, [r4]                                      |     r5 = *(r4);
    0x00041e1a ldr r3, [r4, 0x2c]                                |     r3 = *((r4 + 0x2c));
    0x00041e1c add.w r1, r5, 0x2000                              |     r1 = r5 + case.0x5984c.0;
    0x00041e20 ldr.w r7, [r1, 0xd94]                             |     r7 = case.0x5984c.0;
    0x00041e24 cmp r3, 2                                         |     
    0x00041e26 itttt ls                                          |     
                                                                 |     if (r3 > 2) {
    0x00041e28 movls r3, 0x2c                                    |         r3 = 0x2c;
                                                                 |     }
                                                                 |     if (r3 <= 2) {
    0x00041e2a mlals r3, r3, r7, r5                              |         __asm ("mlals r3, r3, r7, r5");
                                                                 |     }
                                                                 |     if (r3 > 2) {
    0x00041e2e ldrls r0, [r3, 0x1b0]                             |         r0 = case.0x5984c.0;
                                                                 |     }
                                                                 |     if (r3 <= 2) {
    0x00041e32 str.w r0, [r3, 0x1a8]                             |         __asm ("str.w r0, case.0x5984c.0");
                                                                 |     }
    0x00041e36 movs r3, 0x2c                                     |     r3 = 0x2c;
    0x00041e38 mla r3, r3, r7, r5                                |     __asm ("mla r3, r3, r7, r5");
    0x00041e3c ldr.w r0, [r1, 0xdb8]                             |     r0 = case.0x5984c.0;
    0x00041e40 ldr.w r1, [r3, 0x1b0]                             |     r1 = case.0x5984c.0;
    0x00041e44 add r1, r2                                        |     r1 += r2;
    0x00041e46 str.w r1, [r3, 0x1b0]                             |     __asm ("str.w r1, case.0x5984c.0");
                                                                 |     if (r0 != 0) {
    0x00041e4a cbz r0, 0x41e52                                   |         
    0x00041e4c ldr r1, [r4, 0x6c]                                |         r1 = *((r4 + 0x6c));
    0x00041e4e blx 0x1ffec                                       |         fcn_0001ffec ();
                                                                 |     }
    0x00041e52 movs r3, 0x2c                                     |     r3 = 0x2c;
    0x00041e54 ldr r6, [r4, 0x7c]                                |     r6 = *((r4 + 0x7c));
    0x00041e56 mla r5, r3, r7, r5                                |     __asm ("mla r5, r3, r7, r5");
    0x00041e58 strb r7, [r0, r4]                                 |     *((r0 + r4)) = r7;
    0x00041e5a add.w r5, r5, 0x1a4                               |     r5 += case.0x5984c.0;
    0x00041e5e ldm r5!, {r0, r1, r2, r3}                         |     r0 = *(r5!);
                                                                 |     r1 = *((r5! + 4));
                                                                 |     r2 = *((r5! + 8));
                                                                 |     r3 = *((r5! + 12));
    0x00041e60 stm r6!, {r0, r1, r2, r3}                         |     *(r6!) = r0;
                                                                 |     *((r6! + 4)) = r1;
                                                                 |     *((r6! + 8)) = r2;
                                                                 |     *((r6! + 12)) = r3;
    0x00041e62 ldr.w r1, [pc, 0x438]                             |     
    0x00041e66 ldr r3, [r5]                                      |     r3 = *(r5);
    0x00041e68 ldr.w r0, [pc, 0x434]                             |     
    0x00041e6c add r1, pc                                        |     r1 = 0x8410e;
    0x00041e6e str r3, [r6]                                      |     *(r6) = r3;
    0x00041e70 add r0, pc                                        |     r0 = 0x84114;
    0x00041e72 blx 0x21ea4                                       |     fcn_00021ea4 ();
    0x00041e76 ldr.w r1, [pc, 0x42c]                             |     
    0x00041e7a mov r2, r0                                        |     r2 = r0;
    0x00041e7c add r1, pc                                        |     r1 = 0x84126;
                                                                 | label_40:
    0x00041e7e movs r3, 0                                        |     r3 = 0;
    0x00041e80 movs r0, 3                                        |     r0 = 3;
    0x00041e82 blx 0x1f2b0                                       |     fcn_0001f2b0 ();
    0x00041e86 blx 0x23348                                       |     g_string_append ();
    0x00041e8a ldr r0, [r4]                                      |     r0 = *(r4);
    0x00041e8c movs r1, 1                                        |     r1 = 1;
    0x00041e8e adds r0, 8                                        |     r0 += 8;
    0x00041e90 blx 0x1f798                                       |     fcn_0001f798 ();
                                                                 | label_104:
    0x00041e94 add.w r5, r5, 0x1a4                               |     r5 += case.0x5984c.0;
    0x00041e98 ldr r6, [r4, 0x7c]                                |     r6 = *((r4 + 0x7c));
    0x00041e9a ldm r5!, {r0, r1, r2, r3}                         |     r0 = *(r5!);
                                                                 |     r1 = *((r5! + 4));
                                                                 |     r2 = *((r5! + 8));
                                                                 |     r3 = *((r5! + 12));
    0x00041e9c stm r6!, {r0, r1, r2, r3}                         |     *(r6!) = r0;
                                                                 |     *((r6! + 4)) = r1;
                                                                 |     *((r6! + 8)) = r2;
                                                                 |     *((r6! + 12)) = r3;
    0x00041e9e ldr r3, [r5]                                      |     r3 = *(r5);
    0x00041ea0 str r3, [r6]                                      |     *(r6) = r3;
    0x00041ea2 b.w 0x3f9ec                                       |     goto label_14;
                                                                 | label_77:
    0x00041ea6 mov r0, ip                                        |     r0 = ip;
    0x00041ea8 mov.w r1, -1                                      |     r1 = -1;
    0x00041eac blx 0x21254                                       |     g_sprintf ()
    0x00041eb0 b.w 0x3fd66                                       |     goto label_18;
                                                                 | label_75:
    0x00041eb4 movs r2, 9                                        |     r2 = 9;
    0x00041eb6 mov r0, r7                                        |     r0 = r7;
    0x00041eb8 mov.w r1, -1                                      |     r1 = -1;
    0x00041ebc blx 0x21254                                       |     g_sprintf ()
    0x00041ec0 b.w 0x3fbc8                                       |     goto label_19;
                                                                 | label_83:
    0x00041ec4 ldr r0, [r4, 0x1c]                                |     r0 = *((r4 + 0x1c));
    0x00041ec6 b.w 0x4039e                                       |     goto label_20;
    0x00041ec8 rev16 r2, r5                                      |     __asm ("rev16 r2, r5");
                                                                 | label_99:
    0x00041eca ldr.w r7, [r7, 0xd94]                             |     r7 = case.0x5984c.0;
    0x00041ece add.w r5, r5, 0x1a4                               |     r5 += case.0x5984c.0;
    0x00041ed2 ldr r6, [r4, 0x7c]                                |     r6 = *((r4 + 0x7c));
    0x00041ed4 mov.w ip, 1                                       |     
    0x00041ed8 mla r7, r8, r7, r1                                |     __asm ("mla r7, r8, r7, r1");
    0x00041edc ldm r5!, {r0, r1, r2, r3}                         |     r0 = *(r5!);
                                                                 |     r1 = *((r5! + 4));
                                                                 |     r2 = *((r5! + 8));
                                                                 |     r3 = *((r5! + 12));
    0x00041ede stm r6!, {r0, r1, r2, r3}                         |     *(r6!) = r0;
                                                                 |     *((r6! + 4)) = r1;
                                                                 |     *((r6! + 8)) = r2;
                                                                 |     *((r6! + 12)) = r3;
    0x00041ee0 ldr r3, [r5]                                      |     r3 = *(r5);
    0x00041ee2 str r3, [r6]                                      |     *(r6) = r3;
    0x00041ee4 ldr.w r3, [r7, 0x1ac]                             |     r3 = case.0x5984c.0;
    0x00041ee8 str.w ip, [r7, 0x1b0]                             |     __asm ("str.w ip, case.0x5984c.0");
    0x00041eec add r3, ip                                        |     r3 += ip;
    0x00041eee str.w r3, [r7, 0x1ac]                             |     __asm ("str.w r3, case.0x5984c.0");
    0x00041ef2 b.w 0x3f9ec                                       |     goto label_14;
                                                                 | label_95:
    0x00041ef6 ldr.w r7, [r7, 0xd94]                             |     r7 = case.0x5984c.0;
    0x00041efa add.w r5, r5, 0x1a4                               |     r5 += case.0x5984c.0;
    0x00041efe ldr r6, [r4, 0x7c]                                |     r6 = *((r4 + 0x7c));
    0x00041f00 mov.w ip, 1                                       |     
    0x00041f04 mla r7, r8, r7, r1                                |     __asm ("mla r7, r8, r7, r1");
    0x00041f08 ldm r5!, {r0, r1, r2, r3}                         |     r0 = *(r5!);
                                                                 |     r1 = *((r5! + 4));
                                                                 |     r2 = *((r5! + 8));
                                                                 |     r3 = *((r5! + 12));
    0x00041f0a stm r6!, {r0, r1, r2, r3}                         |     *(r6!) = r0;
                                                                 |     *((r6! + 4)) = r1;
                                                                 |     *((r6! + 8)) = r2;
                                                                 |     *((r6! + 12)) = r3;
    0x00041f0c ldr r3, [r5]                                      |     r3 = *(r5);
    0x00041f0e str r3, [r6]                                      |     *(r6) = r3;
    0x00041f10 ldr.w r3, [r7, 0x1ac]                             |     r3 = case.0x5984c.0;
    0x00041f14 str.w ip, [r7, 0x1b0]                             |     __asm ("str.w ip, case.0x5984c.0");
    0x00041f18 add r3, ip                                        |     r3 += ip;
    0x00041f1a str.w r3, [r7, 0x1ac]                             |     __asm ("str.w r3, case.0x5984c.0");
    0x00041f1e b.w 0x3f9ec                                       |     goto label_14;
                                                                 | label_100:
    0x00041f22 mov r0, ip                                        |     r0 = ip;
    0x00041f24 mov.w r1, -1                                      |     r1 = -1;
    0x00041f28 blx 0x21254                                       |     g_sprintf ()
    0x00041f2c b.w 0x41576                                       |     goto label_21;
                                                                 | label_105:
    0x00041f30 mov r0, ip                                        |     r0 = ip;
    0x00041f32 mov.w r1, -1                                      |     r1 = -1;
    0x00041f36 blx 0x21254                                       |     g_sprintf ()
    0x00041f3a b 0x418f0                                         |     goto label_22;
                                                                 | label_87:
    0x00041f3c movs r2, 0xd                                      |     r2 = 0xd;
    0x00041f3e mov r0, r7                                        |     r0 = r7;
    0x00041f40 mov.w r1, -1                                      |     r1 = -1;
    0x00041f44 blx 0x21254                                       |     g_sprintf ()
    0x00041f48 b.w 0x404fc                                       |     goto label_23;
                                                                 | label_82:
    0x00041f4c movs r2, 7                                        |     r2 = 7;
    0x00041f4e mov r0, r7                                        |     r0 = r7;
    0x00041f50 mov.w r1, -1                                      |     r1 = -1;
    0x00041f54 blx 0x21254                                       |     g_sprintf ()
    0x00041f58 b.w 0x40340                                       |     goto label_24;
                                                                 | label_106:
    0x00041f5c mov r0, ip                                        |     r0 = ip;
    0x00041f5e mov.w r1, -1                                      |     r1 = -1;
    0x00041f62 blx 0x21254                                       |     g_sprintf ()
    0x00041f66 b 0x419d4                                         |     goto label_25;
                                                                 | label_93:
    0x00041f68 mov r0, ip                                        |     r0 = ip;
    0x00041f6a mov.w r1, -1                                      |     r1 = -1;
    0x00041f6e blx 0x21254                                       |     g_sprintf ()
    0x00041f72 b.w 0x40d40                                       |     goto label_26;
                                                                 | label_97:
    0x00041f76 mov.w r1, -1                                      |     r1 = -1;
    0x00041f7a blx 0x21254                                       |     g_sprintf ()
                                                                 | label_98:
    0x00041f7e ldr r3, [r4]                                      |     r3 = *(r4);
    0x00041f80 add.w r3, r3, 0x2000                              |     r3 += case.0x5984c.0;
    0x00041f84 ldr.w r2, [r3, 0xdb8]                             |     r2 = case.0x5984c.0;
    0x00041f88 cmp r2, 0                                         |     
                                                                 |     if (r2 == 0) {
    0x00041f8a beq.w 0x3f9ec                                     |         goto label_14;
                                                                 |     }
    0x00041f8e ldr r1, [r4, 0x2c]                                |     r1 = *((r4 + 0x2c));
    0x00041f90 cmp r1, 2                                         |     
                                                                 |     if (r1 > 2) {
    0x00041f92 bhi.w 0x3f9ec                                     |         goto label_14;
                                                                 |     }
    0x00041f96 ldrd r1, r2, [r2]                                 |     __asm ("ldrd r1, r2, [r2]");
    0x00041f9a ldr.w r0, [r3, 0xdb4]                             |     r0 = case.0x5984c.0;
    0x00041f9e blx 0x1ffec                                       |     fcn_0001ffec ();
    0x00041fa2 ldr r3, [r4]                                      |     r3 = *(r4);
    0x00041fa4 movs r1, 0                                        |     r1 = 0;
    0x00041fa6 add.w r3, r3, 0x2000                              |     r3 += case.0x5984c.0;
    0x00041faa ldr.w r0, [r3, 0xdb8]                             |     r0 = case.0x5984c.0;
    0x00041fae blx 0x1fc8c                                       |     fcn_0001fc8c ();
    0x00041fb2 b.w 0x3f9ec                                       |     goto label_14;
                                                                 | label_76:
    0x00041fb6 ldr.w r7, [r7, 0xd94]                             |     r7 = case.0x5984c.0;
    0x00041fba add.w r5, r5, 0x1a4                               |     r5 += case.0x5984c.0;
    0x00041fbe ldr r6, [r4, 0x7c]                                |     r6 = *((r4 + 0x7c));
    0x00041fc0 mov.w ip, 1                                       |     
    0x00041fc4 mla r7, r8, r7, r1                                |     __asm ("mla r7, r8, r7, r1");
    0x00041fc8 ldm r5!, {r0, r1, r2, r3}                         |     r0 = *(r5!);
                                                                 |     r1 = *((r5! + 4));
                                                                 |     r2 = *((r5! + 8));
                                                                 |     r3 = *((r5! + 12));
    0x00041fca stm r6!, {r0, r1, r2, r3}                         |     *(r6!) = r0;
                                                                 |     *((r6! + 4)) = r1;
                                                                 |     *((r6! + 8)) = r2;
                                                                 |     *((r6! + 12)) = r3;
    0x00041fcc ldr r3, [r5]                                      |     r3 = *(r5);
    0x00041fce str r3, [r6]                                      |     *(r6) = r3;
    0x00041fd0 ldr.w r3, [r7, 0x1ac]                             |     r3 = case.0x5984c.0;
    0x00041fd4 str.w ip, [r7, 0x1b0]                             |     __asm ("str.w ip, case.0x5984c.0");
    0x00041fd8 add r3, ip                                        |     r3 += ip;
    0x00041fda str.w r3, [r7, 0x1ac]                             |     __asm ("str.w r3, case.0x5984c.0");
    0x00041fde b.w 0x3f9ec                                       |     goto label_14;
                                                                 | label_79:
    0x00041fe2 movs r2, 0xa                                      |     r2 = 0xa;
    0x00041fe4 mov r0, r7                                        |     r0 = r7;
    0x00041fe6 mov.w r1, -1                                      |     r1 = -1;
    0x00041fea blx 0x21254                                       |     g_sprintf ()
    0x00041fee b.w 0x3ffe2                                       |     goto label_27;
                                                                 | label_90:
    0x00041ff2 mov r0, ip                                        |     r0 = ip;
    0x00041ff4 mov.w r1, -1                                      |     r1 = -1;
    0x00041ff8 blx 0x21254                                       |     g_sprintf ()
    0x00041ffc b.w 0x40a24                                       |     goto label_28;
                                                                 | label_91:
    0x00042000 mov r2, sl                                        |     r2 = sl;
                                                                 | label_92:
    0x00042002 add.w r2, r2, 0x2000                              |     r2 += case.0x5984c.0;
    0x00042006 str r2, [sp, 0xc]                                 |     var_ch = r2;
    0x00042008 movs r2, 0x2c                                     |     r2 = 0x2c;
    0x0004200a mla lr, r2, r3, sl                                |     __asm ("mla lr, r2, r3, sl");
    0x0004200e ldr.w sl, [r4, 0x7c]                              |     sl = *((r4 + 0x7c));
    0x00042012 add.w lr, lr, 0x1a4                               |     lr += case.0x5984c.0;
    0x00042016 ldm.w lr!, {r0, r1, r2, r3}                       |     r0 = *(lr!);
                                                                 |     r1 = *((lr! + 4));
                                                                 |     r2 = *((lr! + 8));
                                                                 |     r3 = *((lr! + 12));
    0x0004201a stm.w sl!, {r0, r1, r2, r3}                       |     *(sl!) = r0;
                                                                 |     *((sl! + 4)) = r1;
                                                                 |     *((sl! + 8)) = r2;
                                                                 |     *((sl! + 12)) = r3;
    0x0004201e ldr.w r3, [lr]                                    |     r3 = *(lr);
    0x00042022 str.w r3, [sl]                                    |     __asm ("str.w r3, [sl]");
    0x00042026 ldr r3, [sp, 0xc]                                 |     r3 = var_ch;
    0x00042028 ldrb.w r2, [ip]                                   |     r2 = *(ip);
    0x0004202c ldrb.w r3, [r3, 0xd98]                            |     r3 = case.0x5984c.0;
    0x00042030 cmp r2, r3                                        |     
                                                                 |     if (r2 == r3) {
    0x00042032 beq.w 0x421f2                                     |         goto label_110;
                                                                 |     }
    0x00042036 ldrb r3, [r4, 0x18]                               |     r3 = *((r4 + 0x18));
    0x00042038 strb r3, [r5]                                     |     *(r5) = r3;
    0x0004203a ldr r3, [r4, 0x5c]                                |     r3 = *((r4 + 0x5c));
    0x0004203c ldr r5, [r4, 0x58]                                |     r5 = *((r4 + 0x58));
    0x0004203e adds r3, 1                                        |     r3++;
    0x00042040 b.w 0x3f81a                                       |     goto label_29;
                                                                 | label_88:
    0x00042044 mov r0, r7                                        |     r0 = r7;
    0x00042046 mov.w r1, -1                                      |     r1 = -1;
    0x0004204a blx 0x21254                                       |     g_sprintf ()
    0x0004204e b.w 0x405e2                                       |     goto label_30;
                                                                 | label_80:
    0x00042052 ldr.w r7, [r6, 0xd94]                             |     r7 = case.0x5984c.0;
    0x00042056 add.w r5, r5, 0x1a4                               |     r5 += case.0x5984c.0;
    0x0004205a ldr r6, [r4, 0x7c]                                |     r6 = *((r4 + 0x7c));
    0x0004205c mov.w ip, 1                                       |     
    0x00042060 mla r7, r8, r7, r1                                |     __asm ("mla r7, r8, r7, r1");
    0x00042064 ldm r5!, {r0, r1, r2, r3}                         |     r0 = *(r5!);
                                                                 |     r1 = *((r5! + 4));
                                                                 |     r2 = *((r5! + 8));
                                                                 |     r3 = *((r5! + 12));
    0x00042066 stm r6!, {r0, r1, r2, r3}                         |     *(r6!) = r0;
                                                                 |     *((r6! + 4)) = r1;
                                                                 |     *((r6! + 8)) = r2;
                                                                 |     *((r6! + 12)) = r3;
    0x00042068 ldr r3, [r5]                                      |     r3 = *(r5);
    0x0004206a str r3, [r6]                                      |     *(r6) = r3;
    0x0004206c ldr.w r3, [r7, 0x1ac]                             |     r3 = case.0x5984c.0;
    0x00042070 str.w ip, [r7, 0x1a8]                             |     __asm ("str.w ip, case.0x5984c.0");
    0x00042074 str.w ip, [r7, 0x1b0]                             |     __asm ("str.w ip, case.0x5984c.0");
    0x00042078 add r3, ip                                        |     r3 += ip;
    0x0004207a str.w r3, [r7, 0x1a4]                             |     __asm ("str.w r3, case.0x5984c.0");
    0x0004207e str.w r3, [r7, 0x1ac]                             |     __asm ("str.w r3, case.0x5984c.0");
    0x00042082 b.w 0x3f9ec                                       |     goto label_14;
                                                                 | label_89:
    0x00042086 add.w r5, r5, 0x1a4                               |     r5 += case.0x5984c.0;
    0x0004208a ldr r6, [r4, 0x7c]                                |     r6 = *((r4 + 0x7c));
    0x0004208c ldm r5!, {r0, r1, r2, r3}                         |     r0 = *(r5!);
                                                                 |     r1 = *((r5! + 4));
                                                                 |     r2 = *((r5! + 8));
                                                                 |     r3 = *((r5! + 12));
    0x0004208e stm r6!, {r0, r1, r2, r3}                         |     *(r6!) = r0;
                                                                 |     *((r6! + 4)) = r1;
                                                                 |     *((r6! + 8)) = r2;
                                                                 |     *((r6! + 12)) = r3;
    0x00042090 ldr r3, [r5]                                      |     r3 = *(r5);
    0x00042092 str r3, [r6]                                      |     *(r6) = r3;
    0x00042094 b.w 0x3f9ec                                       |     goto label_14;
                                                                 | label_103:
    0x00042098 mov r0, ip                                        |     r0 = ip;
    0x0004209a mov.w r1, -1                                      |     r1 = -1;
    0x0004209e blx 0x21254                                       |     g_sprintf ()
    0x000420a2 b.w 0x41756                                       |     goto label_31;
                                                                 | label_78:
    0x000420a6 mov r0, r7                                        |     r0 = r7;
    0x000420a8 mov.w r1, -1                                      |     r1 = -1;
    0x000420ac blx 0x21254                                       |     g_sprintf ()
    0x000420b0 b.w 0x3ff0c                                       |     goto label_32;
                                                                 | label_74:
    0x000420b4 add.w r5, r5, 0x1a4                               |     r5 += case.0x5984c.0;
    0x000420b8 ldr r6, [r4, 0x7c]                                |     r6 = *((r4 + 0x7c));
    0x000420ba ldm r5!, {r0, r1, r2, r3}                         |     r0 = *(r5!);
                                                                 |     r1 = *((r5! + 4));
                                                                 |     r2 = *((r5! + 8));
                                                                 |     r3 = *((r5! + 12));
    0x000420bc stm r6!, {r0, r1, r2, r3}                         |     *(r6!) = r0;
                                                                 |     *((r6! + 4)) = r1;
                                                                 |     *((r6! + 8)) = r2;
                                                                 |     *((r6! + 12)) = r3;
    0x000420be ldr r3, [r5]                                      |     r3 = *(r5);
    0x000420c0 str r3, [r6]                                      |     *(r6) = r3;
    0x000420c2 b.w 0x3f9ec                                       |     goto label_14;
                                                                 | label_81:
    0x000420c6 movs r2, 0xb                                      |     r2 = 0xb;
    0x000420c8 mov r0, r7                                        |     r0 = r7;
    0x000420ca mov.w r1, -1                                      |     r1 = -1;
    0x000420ce blx 0x21254                                       |     g_sprintf ()
    0x000420d2 b.w 0x40268                                       |     goto label_33;
                                                                 | label_101:
    0x000420d6 cmp r0, 0xa                                       |     
                                                                 |     if (r0 == 0xa) {
    0x000420d8 bne 0x420e2                                       |         
    0x000420da ldr r1, [r4, 0x6c]                                |         r1 = *((r4 + 0x6c));
    0x000420dc mov r2, r4                                        |         r2 = r4;
    0x000420de bl 0x3e8f4                                        |         fcn_0003e8f4 (r0, r1, r2);
                                                                 |     }
                                                                 | label_102:
    0x000420e2 ldr r3, [r4]                                      |     r3 = *(r4);
    0x000420e4 add.w r3, r3, 0x2000                              |     r3 += case.0x5984c.0;
    0x000420e8 ldr.w r2, [r3, 0xdb8]                             |     r2 = case.0x5984c.0;
    0x000420ec cmp r2, 0                                         |     
                                                                 |     if (r2 == 0) {
    0x000420ee beq.w 0x3f9ec                                     |         goto label_14;
                                                                 |     }
    0x000420f2 ldr r1, [r4, 0x2c]                                |     r1 = *((r4 + 0x2c));
    0x000420f4 cmp r1, 2                                         |     
                                                                 |     if (r1 > 2) {
    0x000420f6 bhi.w 0x3f9ec                                     |         goto label_14;
                                                                 |     }
    0x000420f8 add r4, sp, 0x1e4                                 |     r4 = sp + case.0x5984c.0;
    0x000420fa ldrd r1, r2, [r2]                                 |     __asm ("ldrd r1, r2, [r2]");
    0x000420fe ldr.w r0, [r3, 0xdb4]                             |     r0 = case.0x5984c.0;
    0x00042102 blx 0x1ffec                                       |     fcn_0001ffec ();
    0x00042104 vadd.i64 d22, d4, d19                             |     __asm ("vadd.i64 d22, d4, d19");
    0x00042108 movs r1, 0                                        |     r1 = 0;
    0x0004210a add.w r3, r3, 0x2000                              |     r3 += case.0x5984c.0;
    0x0004210e ldr.w r0, [r3, 0xdb8]                             |     r0 = case.0x5984c.0;
    0x00042112 blx 0x1fc8c                                       |     fcn_0001fc8c ();
    0x00042116 b.w 0x3f9ec                                       |     goto label_14;
                                                                 | label_86:
    0x0004211a ldr r2, [r4, 0xc]                                 |     r2 = *((r4 + 0xc));
    0x0004211c mov r0, r4                                        |     r0 = r4;
    0x0004211e ldr r3, [r4, 0x14]                                |     r3 = *((r4 + 0x14));
    0x00042120 ldr.w r3, [r3, r2, lsl 2]                         |     offset_52 = r2 << 2;
                                                                 |     r3 = *((r3 + offset_52));
    0x00042124 ldr r5, [r3, 4]                                   |     r5 = *((r3 + 4));
    0x00042126 ldr r3, [r4, 0x1c]                                |     r3 = *((r4 + 0x1c));
    0x00042128 add r5, r3                                        |     r5 += r3;
    0x0004212a str r5, [r4, 0x24]                                |     *((r4 + 0x24)) = r5;
    0x0004212c bl 0x3e81c                                        |     fcn_0003e81c (r0, r1);
    0x00042130 ldr r7, [r4, 0x6c]                                |     r7 = *((r4 + 0x6c));
                                                                 | label_37:
    0x00042132 ldr r2, [r4, 0x54]                                |     r2 = *((r4 + 0x54));
                                                                 | label_36:
    0x00042134 ldr r6, [r2, -0x4]                                |     r6 = *((r2 - 0x4));
    0x00042138 mov ip, r2                                        |     
    0x0004213a lsls r2, r6, 1                                    |     r2 = r6 << 1;
    0x0004213c b.w 0x3f736                                       |     goto label_34;
                                                                 | label_85:
    0x00042140 ldr r3, [r4, 0x2c]                                |     r3 = *((r4 + 0x2c));
    0x00042142 ldr r2, [r4, 0x6c]                                |     r2 = *((r4 + 0x6c));
    0x00042144 str.w r8, [r4, 0x30]                              |     __asm ("str.w r8, [r4, 0x30]");
    0x00042148 subs r3, 1                                        |     r3--;
    0x0004214a add.w r3, r3, r3, lsr 31                          |     r3 += (r3 >> 31);
    0x0004214e str r2, [r4, 0x24]                                |     *((r4 + 0x24)) = r2;
    0x00042150 asrs r3, r3, 1                                    |     r3 >>= 1;
    0x00042152 adds r3, 0x37                                     |     r3 += 0x37;
    0x00042154 b.w 0x3f780                                       |     goto label_35;
                                                                 | label_84:
    0x00042158 ldr r7, [r4, 0x6c]                                |     r7 = *((r4 + 0x6c));
    0x0004215a mov r0, r4                                        |     r0 = r4;
    0x0004215c ldr.w sb, [sp, 4]                                 |     sb = var_4h;
    0x00042160 adds r5, r7, r3                                   |     r5 = r7 + r3;
    0x00042162 str r5, [r4, 0x24]                                |     *((r4 + 0x24)) = r5;
    0x00042164 bl 0x3e81c                                        |     r0 = fcn_0003e81c (r0, r1);
    0x00042168 lsls r1, r0, 1                                    |     r1 = r0 << 1;
    0x0004216a mov r2, r0                                        |     r2 = r0;
    0x0004216c ldr r0, [sp, 8]                                   |     r0 = var_8h;
    0x0004216e adds r3, r0, r1                                   |     r3 = r0 + r1;
    0x00042170 ldrsh.w r3, [r3, 0x100]                           |     r3 = case.0x5984c.0;
    0x00042174 adds r3, 1                                        |     r3++;
    0x00042176 lsls r3, r3, 1                                    |     r3 <<= 1;
    0x00042178 add r0, r3                                        |     r0 += r3;
    0x0004217a ldrsh.w r0, [r0, 0x21c]                           |     r0 = case.0x5984c.0;
    0x0004217e cmp r2, r0                                        |     
                                                                 |     if (r2 == r0) {
    0x00042180 beq 0x421a2                                       |         goto label_111;
                                                                 |     }
    0x00042182 ldr r2, [pc, 0x124]                               |     
    0x00042184 add r2, pc                                        |     r2 = 0x84432;
                                                                 |     do {
    0x00042186 add r1, r2                                        |         r1 += r2;
    0x00042188 ldrsh.w r0, [r1, 0x5b0]                           |         r0 = case.0x5984c.0;
    0x0004218c lsls r1, r0, 1                                    |         r1 = r0 << 1;
    0x0004218e adds r3, r2, r1                                   |         r3 = r2 + r1;
    0x00042190 ldrsh.w r3, [r3, 0x100]                           |         r3 = case.0x5984c.0;
    0x00042194 adds r3, 1                                        |         r3++;
    0x00042196 lsls r3, r3, 1                                    |         r3 <<= 1;
    0x00042198 adds r6, r2, r3                                   |         r6 = r2 + r3;
    0x0004219a ldrsh.w r6, [r6, 0x21c]                           |         r6 = case.0x5984c.0;
    0x0004219e cmp r0, r6                                        |         
    0x000421a0 bne 0x42186                                       |         
                                                                 |     } while (r0 != r6);
                                                                 | label_111:
    0x000421a2 ldr r2, [pc, 0x108]                               |     
    0x000421a4 add r2, pc                                        |     r2 = 0x84456;
    0x000421a6 add r3, r2                                        |     r3 += r2;
    0x000421a8 ldr r2, [r4, 0x54]                                |     r2 = *((r4 + 0x54));
    0x000421aa ldrsh.w r6, [r3, 0x6f8]                           |     r6 = case.0x5984c.0;
    0x000421ae cmp r6, 0x7b                                      |     
                                                                 |     if (r6 == 0x7b) {
    0x000421b0 beq 0x42134                                       |         goto label_36;
                                                                 |     }
    0x000421b2 adds r3, r2, 4                                    |     r3 = r2 + 4;
    0x000421b4 str r3, [r4, 0x54]                                |     *((r4 + 0x54)) = r3;
    0x000421b6 str r6, [r2]                                      |     *(r2) = r6;
    0x000421b8 cmp r6, 0                                         |     
                                                                 |     if (r6 == 0) {
    0x000421ba beq 0x42132                                       |         goto label_37;
                                                                 |     }
    0x000421bc add.w r8, r5, 1                                   |     r8 = r5 + 1;
    0x000421c0 str.w r8, [r4, 0x24]                              |     __asm ("str.w r8, [r4, 0x24]");
    0x000421c4 b.w 0x403dc                                       |     goto label_38;
                                                                 | label_73:
    0x000421c8 ldr r6, [r4]                                      |     r6 = *(r4);
    0x000421ca add.w r3, r6, 0x2000                              |     r3 = r6 + case.0x5984c.0;
    0x000421ce ldr.w r5, [r3, 0xd94]                             |     r5 = case.0x5984c.0;
    0x000421d2 cmp r5, 0                                         |     
                                                                 |     if (r5 != 0) {
    0x000421d4 bne.w 0x3f916                                     |         goto label_39;
                                                                 |     }
    0x000421d8 add.w r6, r6, 0x1a4                               |     r6 += case.0x5984c.0;
    0x000421dc ldr r4, [r4, 0x7c]                                |     r4 = *((r4 + 0x7c));
    0x000421de ldm r6!, {r0, r1, r2, r3}                         |     r0 = *(r6!);
                                                                 |     r1 = *((r6! + 4));
                                                                 |     r2 = *((r6! + 8));
                                                                 |     r3 = *((r6! + 12));
    0x000421e0 stm r4!, {r0, r1, r2, r3}                         |     *(r4!) = r0;
                                                                 |     *((r4! + 4)) = r1;
                                                                 |     *((r4! + 8)) = r2;
                                                                 |     *((r4! + 12)) = r3;
    0x000421e2 ldr r3, [r6]                                      |     r3 = *(r6);
    0x000421e4 str r3, [r4]                                      |     *(r4) = r3;
    0x000421e6 b.w 0x3f820                                       |     goto label_11;
                                                                 | label_94:
    0x000421ea movw r5, 0x28b7                                   |     r5 = (r5 & 0xFFFF0000) | (case.0x5984c.0 & 0xFFFF);
    0x000421ee b.w 0x3f820                                       |     goto label_11;
                                                                 | label_110:
    0x000421f2 ldr r3, [sp, 0xc]                                 |     r3 = var_ch;
    0x000421f4 movs r1, 0                                        |     r1 = 0;
    0x000421f6 ldr.w r0, [r3, 0xda8]                             |     r0 = case.0x5984c.0;
    0x000421fa blx 0x1fc8c                                       |     fcn_0001fc8c ();
    0x000421fe ldr r3, [r4]                                      |     r3 = *(r4);
    0x00042200 movs r2, 1                                        |     r2 = 1;
    0x00042202 mov r1, r4                                        |     r1 = r4;
    0x00042204 movs r0, 4                                        |     r0 = 4;
    0x00042206 add.w r3, r3, 0x2000                              |     r3 += case.0x5984c.0;
    0x0004220a str.w r2, [r3, 0xd9c]                             |     __asm ("str.w r2, case.0x5984c.0");
    0x0004220e bl 0x3f06c                                        |     fcn_0003f06c (r0, r1, r2);
    0x00042212 ldr r3, [r4]                                      |     r3 = *(r4);
    0x00042214 add.w r3, r3, 0x2000                              |     r3 += case.0x5984c.0;
    0x00042218 ldr.w r2, [r3, 0xdb8]                             |     r2 = case.0x5984c.0;
    0x0004221c cmp r2, 0                                         |     
                                                                 |     if (r2 == 0) {
    0x0004221e beq.w 0x3f9ec                                     |         goto label_14;
                                                                 |     }
    0x00042222 ldr r1, [r4, 0x2c]                                |     r1 = *((r4 + 0x2c));
    0x00042224 cmp r1, 2                                         |     
                                                                 |     if (r1 > 2) {
    0x00042226 bhi.w 0x3f9ec                                     |         goto label_14;
                                                                 |     }
    0x0004222a ldrd r1, r2, [r2]                                 |     __asm ("ldrd r1, r2, [r2]");
    0x0004222e ldr.w r0, [r3, 0xdb4]                             |     r0 = case.0x5984c.0;
    0x00042232 blx 0x1ffec                                       |     fcn_0001ffec ();
    0x00042236 ldr r3, [r4]                                      |     r3 = *(r4);
    0x00042238 movs r1, 0                                        |     r1 = 0;
    0x0004223a add.w r3, r3, 0x2000                              |     r3 += case.0x5984c.0;
    0x0004223e ldr.w r0, [r3, 0xdb8]                             |     r0 = case.0x5984c.0;
    0x00042242 blx 0x1fc8c                                       |     fcn_0001fc8c ();
    0x00042246 b.w 0x3f9ec                                       |     goto label_14;
                                                                 | label_96:
    0x0004224a mov r0, r4                                        |     r0 = r4;
    0x0004224c movw r5, 0x28c3                                   |     r5 = (r5 & 0xFFFF0000) | (case.0x5984c.0 & 0xFFFF);
    0x00042250 bl 0x3e9d8                                        |     fcn_0003e9d8 (r0);
    0x00042254 mov r0, r4                                        |     r0 = r4;
    0x00042256 bl 0x3e9d8                                        |     fcn_0003e9d8 (r0);
    0x0004225a ldr r3, [r4]                                      |     r3 = *(r4);
    0x0004225c ldr r4, [r4, 0x78]                                |     r4 = *((r4 + 0x78));
    0x0004225e add.w r3, r3, 0x2000                              |     r3 += case.0x5984c.0;
    0x00042262 ldr.w r3, [r3, 0xda8]                             |     r3 = case.0x5984c.0;
    0x00042266 ldr r0, [r3]                                      |     r0 = *(r3);
    0x00042268 blx 0x23ed8                                       |     fcn_00023ed8 ();
    0x0004226c str r0, [r4, 8]                                   |     *((r4 + 8)) = r0;
    0x0004226e b.w 0x3f820                                       |     goto label_11;
                                                                 | label_72:
    0x00042272 ldr r1, [pc, 0x3c]                                |     
    0x00042274 ldr r0, [pc, 0x3c]                                |     
    0x00042276 add r1, pc                                        |     r1 = 0x8452c;
    0x00042278 add r0, pc                                        |     r0 = 0x84530;
    0x0004227a blx 0x21ea4                                       |     fcn_00021ea4 ();
    0x0004227e ldr r1, [pc, 0x38]                                |     
    0x00042280 mov r2, r0                                        |     r2 = r0;
    0x00042282 add r1, pc                                        |     r1 = 0x84540;
    0x00042284 b 0x41e7e                                         |     goto label_40;
    0x0004d252 ldr r3, [r3]                                      |     r3 = *(r3);
    0x0004d254 str r3, [sp, 0x14]                                |     *(arg_14h) = r3;
    0x0004d256 mov.w r3, 0                                       |     r3 = 0;
    0x0004d25a ldr r3, [r0, 4]                                   |     r3 = *((r0 + 4));
    0x0004d25c ands ip, r3, 1                                    |     
                                                                 |     if (ip == r3) {
    0x0004d260 bne 0x4d27a                                       |         
    0x0004d262 ldr r4, [pc, 0x100]                               |         
    0x0004d264 movw r2, 0x165                                    |         r2 = (r2 & 0xFFFF0000) | (case.0x5984c.0 & 0xFFFF);
    0x0004d268 ldr r3, [pc, 0xfc]                                |         
    0x0004d26a mov r0, ip                                        |         r0 = ip;
    0x0004d26c ldr r1, [pc, 0xfc]                                |         
    0x0004d26e add r4, pc                                        |         r4 = 0x9a5d8;
    0x0004d270 add r3, pc                                        |         r3 = 0x9a5dc;
    0x0004d272 str r4, [sp]                                      |         *(sp) = r4;
    0x0004d274 add r1, pc                                        |         r1 = 0x9a5e4;
    0x0004d276 blx 0x2368c                                       |         fcn_0002368c ();
                                                                 |     }
    0x0004d27a ldr.w ip, [pc, 0xf4]                              |     ip = *(0x4d372);
    0x0004d27e mov r4, r0                                        |     r4 = r0;
    0x0004d280 mov sb, r1                                        |     sb = r1;
    0x0004d282 mov r5, r2                                        |     r5 = r2;
    0x0004d284 ldr.w r6, [r7, ip]                                |     r6 = *((r7 + ip));
    0x0004d288 ldr.w r8, [r6]                                    |     r8 = *(r6);
    0x0004d28c cmp.w r8, 0                                       |     
                                                                 |     if (r8 != 0) {
    0x0004d290 beq 0x4d29a                                       |         
    0x0004d292 blx r8                                            |         r0 = uint32_t (*r8)() ();
    0x0004d294 cmp r0, 0                                         |         
                                                                 |         if (r0 == 0) {
    0x0004d296 beq 0x4d330                                       |             goto label_112;
                                                                 |         }
    0x0004d298 ldr r3, [r4, 4]                                   |         r3 = *((r4 + 4));
                                                                 |     }
    0x0004d29a lsls r1, r3, 0x1a                                 |     r1 = r3 << 0x1a;
    0x0004d29c bmi 0x4d2ce                                       |     
                                                                 |     while (r2 == 0) {
                                                                 | label_41:
    0x0004d29e ldr r3, [r4, 8]                                   |         r3 = *((r4 + 8));
    0x0004d2a0 cmp r3, 0                                         |         
                                                                 |         if (r3 == 0) {
    0x0004d2a2 beq 0x4d316                                       |             goto label_113;
                                                                 |         }
    0x0004d2a4 mov r2, r5                                        |         r2 = r5;
    0x0004d2a6 mov r1, sb                                        |         r1 = sb;
    0x0004d2a8 mov r0, r4                                        |         r0 = r4;
    0x0004d2aa blx r3                                            |         uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r2);
                                                                 | label_43:
    0x0004d2ac ldr r3, [r5, 8]                                   |         r3 = *((r5 + 8));
                                                                 |         if (r3 != 0) {
    0x0004d2ae cbz r3, 0x4d2b4                                   |             
    0x0004d2b0 ldr r2, [r3]                                      |             r2 = *(r3);
                                                                 |             if (r2 == 0) {
    0x0004d2b2 cbz r2, 0x4d30a                                   |                 goto label_114;
                                                                 |             }
                                                                 |         }
                                                                 | label_42:
    0x0004d2b4 ldr r2, [pc, 0xbc]                                |         
    0x0004d2b6 ldr r3, [pc, 0xa4]                                |         r3 = *(0x4d35e);
    0x0004d2b8 add r2, pc                                        |         r2 = 0x9a630;
    0x0004d2ba ldr r3, [r2, r3]                                  |         r3 = *(0x9a630);
    0x0004d2bc ldr r2, [r3]                                      |         r2 = *(0x9a630);
    0x0004d2be ldr r3, [sp, 0x14]                                |         r3 = *(arg_14h);
    0x0004d2c0 eors r2, r3                                       |         r2 ^= r3;
    0x0004d2c2 mov.w r3, 0                                       |         r3 = 0;
                                                                 |         if (r2 != r3) {
    0x0004d2c6 bne 0x4d354                                       |             goto label_115;
                                                                 |         }
    0x0004d2c8 add sp, 0x1c                                      |         
    0x0004d2ca pop.w {r4, r5, r6, r7, r8, sb, pc}                |         
    0x0004d2ce ldm.w r5, {r0, r1, r2}                            |         r0 = *(r5);
                                                                 |         r1 = *((r5 + 4));
                                                                 |         r2 = *((r5 + 8));
    0x0004d2d2 add r3, sp, 8                                     |         r3 += var_8h_2;
    0x0004d2d4 mov.w lr, 1                                       |         lr = 1;
    0x0004d2d8 mov r5, r3                                        |         r5 = r3;
    0x0004d2da ldr.w ip, [pc, 0x9c]                              |         ip = *(0x4d37a);
    0x0004d2de stm.w r3, {r0, r1, r2}                            |         *(r3) = r0;
                                                                 |         *((r3 + 4)) = r1;
                                                                 |         *((r3 + 8)) = r2;
    0x0004d2e2 str.w lr, [sp, 0xc]                               |         __asm ("str.w lr, [arg_ch]");
    0x0004d2e6 ldr.w r2, [r7, ip]                                |         r2 = *((r7 + ip));
    0x0004d2ea ldr r2, [r2]                                      |         r2 = *(r2);
    0x0004d2ec cmp r2, 0                                         |         
    0x0004d2ee beq 0x4d29e                                       |         
                                                                 |     }
    0x0004d2f0 mov r0, r4                                        |     r0 = r4;
    0x0004d2f2 blx 0x22434                                       |     fcn_00022434 ();
    0x0004d2f6 ldr r1, [pc, 0x84]                                |     
    0x0004d2f8 mov r2, r0                                        |     r2 = r0;
    0x0004d2fa movs r3, 0                                        |     r3 = 0;
    0x0004d2fc movs r0, 7                                        |     r0 = 7;
    0x0004d2fe add r1, pc                                        |     r1 = 0x9a680;
    0x0004d300 blx 0x1f2b0                                       |     fcn_0001f2b0 ();
    0x0004d304 blx 0x23348                                       |     g_string_append ();
    0x0004d308 b 0x4d29e                                         |     goto label_41;
                                                                 | label_114:
    0x0004d30a ldr r2, [r4, 4]                                   |     r2 = *((r4 + 4));
    0x0004d30c lsls r2, r2, 0x1b                                 |     r2 <<= 0x1b;
    0x0004d30e itt mi                                            |     
                                                                 |     if (r2 >= r2) {
    0x0004d310 movmi r2, 1                                       |         r2 = 1;
                                                                 |     }
                                                                 |     if (r2 >= r2) {
    0x0004d312 strmi r2, [r3]                                    |         *(r3) = r2;
                                                                 |     }
    0x0004d314 b 0x4d2b4                                         |     goto label_42;
                                                                 | label_113:
    0x0004d316 ldr r0, [r4, 0x14]                                |     r0 = *((r4 + 0x14));
                                                                 |     if (r0 != 0) {
    0x0004d318 cbz r0, 0x4d324                                   |         
    0x0004d31a mov r2, r5                                        |         r2 = r5;
    0x0004d31c mov r1, sb                                        |         r1 = sb;
    0x0004d31e bl 0x4d240                                        |         fcn_0004d240 (r0, r1, r2);
    0x0004d322 b 0x4d2ac                                         |         goto label_43;
                                                                 |     }
    0x0004d324 movs r2, 1                                        |     r2 = 1;
    0x0004d326 mov r1, r5                                        |     r1 = r5;
    0x0004d328 mov r0, sb                                        |     r0 = sb;
    0x0004d32a blx 0x1fbb0                                       |     g_ascii_toupper ();
    0x0004d32e b 0x4d2ac                                         |     goto label_43;
                                                                 | label_112:
    0x0004d330 ldr r2, [pc, 0x4c]                                |     
    0x0004d332 ldr r3, [pc, 0x28]                                |     r3 = *(0x4d35e);
    0x0004d334 add r2, pc                                        |     r2 = 0x9a6b8;
    0x0004d336 ldr r3, [r2, r3]                                  |     r3 = *(0x9a6b8);
    0x0004d338 ldr r2, [r3]                                      |     r2 = *(0x9a6b8);
    0x0004d33a ldr r3, [sp, 0x14]                                |     r3 = *(arg_14h);
    0x0004d33c eors r2, r3                                       |     r2 ^= r3;
    0x0004d33e mov.w r3, 0                                       |     r3 = 0;
                                                                 |     if (r2 == r3) {
    0x0004d342 bne 0x4d354                                       |         
    0x0004d344 movs r2, 1                                        |         r2 = 1;
    0x0004d346 mov r1, r5                                        |         r1 = r5;
    0x0004d348 mov r0, sb                                        |         r0 = sb;
    0x0004d34a add sp, 0x1c                                      |         
    0x0004d34c pop.w {r4, r5, r6, r7, r8, sb, lr}                |         
    0x0004d350 b.w 0x1fbac                                       |         void (*0x1fbac)() ();
                                                                 |     }
                                                                 | label_115:
    0x0004d354 blx 0x21bd4                                       |     fcn_00021bd4 ();
    0x0004d358 rors r2, r4                                       |     __asm ("rors r2, r4");
    0x0004d35a movs r5, r0                                       |     r5 = r0;
    0x0004d35c adds r4, r1, r3                                   |     r4 = r1 + r3;
    0x0004d35e movs r0, r0                                       |     
    0x0004d360 rors r4, r3                                       |     __asm ("rors r4, r3");
    0x0004d362 movs r5, r0                                       |     r5 = r0;
    0x0004d364 lsrs r6, r7, 0x20                                 |     r6 = r7 >> 0x20;
    0x0004d366 movs r2, r0                                       |     r2 = r0;
    0x0004d368 adds r0, 0x34                                     |     r0 += 0x34;
    0x0004d36a movs r3, r0                                       |     r3 = r0;
    0x0004d36c lsls r4, r2, 3                                    |     r4 = r2 << 3;
    0x0004d36e movs r2, r0                                       |     r2 = r0;
    0x0004d370 adds r0, r2, r7                                   |     r0 = r2 + r7;
    0x0004d372 movs r0, r0                                       |     
    0x0004d374 adcs r4, r6                                       |     __asm ("adcs r4, r6");
    0x0004d376 movs r5, r0                                       |     r5 = r0;
    0x0004d378 adds r0, r7, r2                                   |     r0 = r7 + r2;
    0x0004d37a movs r0, r0                                       |     
    0x0004d37c lsls r2, r2, 0x1f                                 |     r2 <<= 0x1f;
    0x0004d37e movs r2, r0                                       |     r2 = r0;
    0x0004d380 lsrs r0, r7                                       |     r0 >>= r7;
    0x0004d382 movs r5, r0                                       |     r5 = r0;
    0x0004d384 ldr r3, [pc, 0x148]                               |     
    0x0004d386 ldr.w ip, [pc, 0x14c]                             |     ip = *(0x4d4d6);
    0x0004d38a push.w {r4, r5, r6, r7, r8, lr}                   |     
    0x0004d38e sub sp, 0x18                                      |     
    0x0004d390 add r3, pc                                        |     r3 = 0x9a864;
    0x0004d392 str r1, [sp, 0x14]                                |     var_8h = r1;
    0x0004d394 mov r4, r0                                        |     r4 = r0;
    0x0004d396 mov r5, r2                                        |     r5 = r2;
    0x0004d398 ldr.w r6, [r3, ip]                                |     r6 = *(0x9a864);
    0x0004d39c ldr r3, [r6]                                      |     r3 = *(0x9a864);
                                                                 |     if (r3 != 0) {
    0x0004d39e cbz r3, 0x4d3da                                   |         
    0x0004d3a0 ldr r1, [r0, 0x58]                                |         r1 = *((r0 + 0x58));
    0x0004d3a2 ldr r0, [pc, 0x134]                               |         
    0x0004d3a4 add r0, pc                                        |         r0 = 0x9a882;
    0x0004d3a6 blx 0x21ea4                                       |         r0 = fcn_00021ea4 ();
    0x0004d3aa mov r7, r0                                        |         r7 = r0;
    0x0004d3ac mov r0, r4                                        |         r0 = r4;
    0x0004d3ae blx 0x22434                                       |         fcn_00022434 ();
    0x0004d3b2 ldr r1, [pc, 0x128]                               |         
    0x0004d3b4 mov r8, r0                                        |         r8 = r0;
    0x0004d3b6 ldr r0, [pc, 0x128]                               |         
    0x0004d3b8 ldr r2, [sp, 0x14]                                |         r2 = var_8h;
    0x0004d3ba add r1, pc                                        |         r1 = 0x9a89c;
    0x0004d3bc add r0, pc                                        |         r0 = 0x9a8a2;
    0x0004d3be blx 0x21984                                       |         fcn_00021984 ();
    0x0004d3c2 movs r1, 0                                        |         r1 = 0;
    0x0004d3c4 mov r3, r8                                        |         r3 = r8;
    0x0004d3c6 str r1, [sp, 4]                                   |         var_4h_2 = r1;
    0x0004d3c8 mov r2, r7                                        |         r2 = r7;
    0x0004d3ca ldr r1, [pc, 0x118]                               |         
    0x0004d3cc str r0, [sp]                                      |         *(sp) = r0;
    0x0004d3ce movs r0, 7                                        |         r0 = 7;
    0x0004d3d0 add r1, pc                                        |         r1 = 0x9a8ba;
    0x0004d3d2 blx 0x1f2b0                                       |         fcn_0001f2b0 ();
    0x0004d3d6 blx 0x23348                                       |         g_string_append ();
                                                                 |     }
    0x0004d3da ldr r0, [r4, 0x54]                                |     r0 = *((r4 + 0x54));
    0x0004d3dc mov r2, r5                                        |     r2 = r5;
    0x0004d3de add r1, sp, 0x14                                  |     r1 += var_8h;
    0x0004d3e0 blx 0x1fd08                                       |     r0 = fcn_0001fd08 ();
    0x0004d3e4 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x0004d3e6 bne 0x4d48a                                       |         goto label_116;
                                                                 |     }
    0x0004d3e8 ldr r3, [r5, 8]                                   |     r3 = *((r5 + 8));
                                                                 |     if (r3 != 0) {
    0x0004d3ea cbz r3, 0x4d3ee                                   |         
    0x0004d3ec str r0, [r3]                                      |         *(r3) = r0;
                                                                 |     }
    0x0004d3ee ldr r0, [sp, 0x14]                                |     r0 = var_8h;
    0x0004d3f0 movs r2, 1                                        |     r2 = 1;
    0x0004d3f2 mov r1, r5                                        |     r1 = r5;
    0x0004d3f4 blx 0x1fbb0                                       |     g_ascii_toupper ();
    0x0004d3f8 ldr r3, [r4, 0x60]                                |     r3 = *((r4 + 0x60));
                                                                 |     if (r3 != 0) {
    0x0004d3fa cbz r3, 0x4d41a                                   |         
    0x0004d3fc ldr r2, [r3, 0xc]                                 |         r2 = *((r3 + 0xc));
    0x0004d3fe cmp r2, 0                                         |         
                                                                 |         if (r2 == 0) {
    0x0004d400 beq 0x4d46e                                       |             goto label_117;
                                                                 |         }
                                                                 | label_45:
    0x0004d402 ldr r3, [pc, 0xe4]                                |         
    0x0004d404 movs r2, 0x4a                                     |         r2 = 0x4a;
    0x0004d406 ldr r4, [pc, 0xe4]                                |         
    0x0004d408 movs r0, 0                                        |         r0 = 0;
    0x0004d40a ldr r1, [pc, 0xe4]                                |         
    0x0004d40c add r3, pc                                        |         r3 = 0x9a8fa;
    0x0004d40e add r4, pc                                        |         r4 = 0x9a900;
    0x0004d410 adds r3, 0x10                                     |         r3 += 0x10;
    0x0004d412 add r1, pc                                        |         r1 = 0x9a908;
    0x0004d414 str r4, [sp]                                      |         *(sp) = r4;
    0x0004d416 blx 0x2368c                                       |         fcn_0002368c ();
                                                                 |     }
    0x0004d41a ldr r1, [pc, 0xd8]                                |     
    0x0004d41c add r1, pc                                        |     r1 = 0x9a916;
                                                                 | label_44:
    0x0004d41e ldr r3, [r6]                                      |     r3 = *(r6);
                                                                 |     if (r3 != 0) {
    0x0004d420 cbz r3, 0x4d468                                   |         
    0x0004d422 ldr r0, [pc, 0xd4]                                |         
    0x0004d424 add r0, pc                                        |         r0 = 0x9a922;
    0x0004d426 blx 0x21ea4                                       |         r0 = fcn_00021ea4 ();
    0x0004d42a mov r5, r0                                        |         r5 = r0;
    0x0004d42c ldr r0, [pc, 0xcc]                                |         
    0x0004d42e ldr r1, [r4, 0x58]                                |         r1 = *((r4 + 0x58));
    0x0004d430 add r0, pc                                        |         r0 = 0x9a930;
    0x0004d432 blx 0x21ea4                                       |         r0 = fcn_00021ea4 ();
    0x0004d436 mov r6, r0                                        |         r6 = r0;
    0x0004d438 mov r0, r4                                        |         r0 = r4;
    0x0004d43a blx 0x22434                                       |         fcn_00022434 ();
    0x0004d43e ldr r1, [pc, 0xc0]                                |         
    0x0004d440 mov r4, r0                                        |         r4 = r0;
    0x0004d442 ldr r0, [pc, 0xc0]                                |         
    0x0004d444 ldr r2, [sp, 0x14]                                |         r2 = var_8h;
    0x0004d446 add r1, pc                                        |         r1 = 0x9a94c;
    0x0004d448 add r0, pc                                        |         r0 = 0x9a952;
    0x0004d44a blx 0x21984                                       |         fcn_00021984 ();
    0x0004d44e movs r1, 0                                        |         r1 = 0;
    0x0004d450 mov r3, r6                                        |         r3 = r6;
    0x0004d452 str r1, [sp, 8]                                   |         var_8h_3 = r1;
    0x0004d454 mov r2, r5                                        |         r2 = r5;
    0x0004d456 ldr r1, [pc, 0xb0]                                |         
    0x0004d458 strd r4, r0, [sp]                                 |         __asm ("strd r4, r0, [sp]");
    0x0004d45c movs r0, 7                                        |         r0 = 7;
    0x0004d45e add r1, pc                                        |         r1 = 0x9a96c;
    0x0004d460 blx 0x1f2b0                                       |         fcn_0001f2b0 ();
    0x0004d464 blx 0x23348                                       |         g_string_append ();
                                                                 |     }
    0x0004d468 add sp, 0x18                                      |     
    0x0004d46a pop.w {r4, r5, r6, r7, r8, pc}                    |     
                                                                 | label_117:
    0x0004d46e dmb ish                                           |     __asm ("dmb ish");
                                                                 |     do {
    0x0004d472 ldrex r1, [r3]                                    |         __asm ("ldrex r1, [r3]");
    0x0004d476 adds r1, 1                                        |         r1++;
    0x0004d478 strex r2, r1, [r3]                                |         __asm ("strex r2, r1, [r3]");
    0x0004d47c cmp r2, 0                                         |         
    0x0004d47e bne 0x4d472                                       |         
                                                                 |     } while (r2 != 0);
    0x0004d480 ldr r1, [pc, 0x88]                                |     
    0x0004d482 dmb ish                                           |     __asm ("dmb ish");
    0x0004d486 add r1, pc                                        |     r1 = 0x9a996;
    0x0004d488 b 0x4d41e                                         |     goto label_44;
                                                                 | label_116:
    0x0004d48a ldr r0, [r4, 0x14]                                |     r0 = *((r4 + 0x14));
    0x0004d48c ldr r3, [sp, 0x14]                                |     r3 = var_8h;
                                                                 |     if (r0 == 0) {
    0x0004d48e cbz r0, 0x4d4be                                   |         goto label_118;
                                                                 |     }
    0x0004d490 mov r2, r5                                        |     r2 = r5;
    0x0004d492 mov r1, r3                                        |     r1 = r3;
    0x0004d494 bl 0x4d240                                        |     fcn_0004d240 (r0, r1, r2);
                                                                 | label_46:
    0x0004d498 ldr r3, [r4, 0x5c]                                |     r3 = *((r4 + 0x5c));
                                                                 |     if (r3 == 0) {
    0x0004d49a cbz r3, 0x4d4ca                                   |         goto label_119;
                                                                 |     }
    0x0004d49c ldr r2, [r3, 0xc]                                 |     r2 = *((r3 + 0xc));
    0x0004d49e cmp r2, 0                                         |     
                                                                 |     if (r2 != 0) {
    0x0004d4a0 bne 0x4d402                                       |         goto label_45;
                                                                 |     }
    0x0004d4a2 dmb ish                                           |     __asm ("dmb ish");
                                                                 |     do {
    0x0004d4a6 ldrex r1, [r3]                                    |         __asm ("ldrex r1, [r3]");
    0x0004d4aa adds r1, 1                                        |         r1++;
    0x0004d4ac strex r2, r1, [r3]                                |         __asm ("strex r2, r1, [r3]");
    0x0004d4b0 cmp r2, 0                                         |         
    0x0004d4b2 bne 0x4d4a6                                       |         
                                                                 |     } while (r2 != 0);
    0x0004d4b4 ldr r1, [pc, 0x58]                                |     
    0x0004d4b6 dmb ish                                           |     __asm ("dmb ish");
    0x0004d4ba add r1, pc                                        |     r1 = 0x9a9ce;
    0x0004d4bc b 0x4d41e                                         |     goto label_44;
                                                                 | label_118:
    0x0004d4be movs r2, 1                                        |     r2 = 1;
    0x0004d4c0 mov r1, r5                                        |     r1 = r5;
    0x0004d4c2 mov r0, r3                                        |     r0 = r3;
    0x0004d4c4 blx 0x1fbb0                                       |     g_ascii_toupper ();
    0x0004d4c8 b 0x4d498                                         |     goto label_46;
                                                                 | label_119:
    0x0004d4ca ldr r1, [pc, 0x48]                                |     
    0x0004d4cc add r1, pc                                        |     r1 = 0x9a9e6;
    0x0004d4ce b 0x4d41e                                         |     goto label_44;
                                                                 | }
    ; assembly                                               | /* r2dec pseudo code output */
                                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsyslog-ng-3.31.so.0.0.0 @ 0x47260 */
                                                             | #include <stdint.h>
                                                             |  
    ; (fcn) sym.xml_scanner_start_element_method ()          | void xml_scanner_start_element_method (int16_t arg1, int16_t arg2) {
                                                             |     r0 = arg1;
                                                             |     r1 = arg2;
    0x00047260 push.w {r4, r5, r6, r7, r8, sb, sl, lr}       |     
    0x00047264 mov r8, r0                                    |     r8 = r0;
    0x00047266 mov r0, r1                                    |     r0 = r1;
    0x00047268 mov r7, r1                                    |     r7 = r1;
    0x0004726a blx 0x22d14                                   |     fcn_00022d14 ();
    0x0004726e ldr.w r3, [r8, 4]                             |     r3 = *((r8 + 4));
    0x00047272 mov sl, r0                                    |     sl = r0;
    0x00047274 ldr.w sb, [pc, 0xd8]                          |     sb = *(0x00047350);
    0x00047278 ldr r6, [r3, 8]                               |     r6 = *((r3 + 8));
    0x0004727a add sb, pc                                    |     sb += pc;
    0x0004727c cmp r6, 0                                     |     
                                                             |     if (r6 != 0) {
    0x0004727e bne 0x47308                                   |         goto label_3;
                                                             |     }
                                                             | label_0:
    0x00047280 ldr r5, [r3, 0xc]                             |     r5 = *((r3 + 0xc));
    0x00047282 ldr r3, [r5, 4]                               |     r3 = *((r5 + 4));
                                                             |     if (r3 == 0) {
    0x00047284 cbz r3, 0x472d0                               |         goto label_4;
                                                             |     }
    0x00047286 movs r4, 0                                    |     r4 = 0;
    0x00047288 b 0x47290                                     |     
                                                             |     while (r0 == 0) {
    0x0004728a ldr r3, [r5, 4]                               |         r3 = *((r5 + 4));
    0x0004728c cmp r3, r4                                    |         
                                                             |         if (r3 < r4) {
    0x0004728e bls 0x472d0                                   |             goto label_4;
                                                             |         }
    0x00047290 ldr r0, [r5]                                  |         r0 = *(r5);
    0x00047292 mov r3, r6                                    |         r3 = r6;
    0x00047294 mov r2, r7                                    |         r2 = r7;
    0x00047296 mov r1, sl                                    |         r1 = sl;
    0x00047298 ldr.w r0, [r0, r4, lsl 2]                     |         offset_0 = r4 << 2;
                                                             |         r0 = *((r0 + offset_0));
    0x0004729c adds r4, 1                                    |         r4++;
    0x0004729e blx 0x2232c                                   |         r0 = fcn_0002232c ();
    0x000472a2 cmp r0, 0                                     |         
    0x000472a4 beq 0x4728a                                   |         
                                                             |     }
    0x000472a6 ldr r3, [pc, 0xac]                            |     
    0x000472a8 ldr.w r3, [sb, r3]                            |     r3 = *((sb + r3));
    0x000472ac ldr r3, [r3]                                  |     r3 = *(0x47356);
    0x000472ae cbnz r3, 0x472ea                              |     
                                                             |     while (1) {
    0x000472b0 ldr r1, [pc, 0xa4]                            |         
    0x000472b2 movs r3, 1                                    |         r3 = 1;
    0x000472b4 ldr.w r0, [r8]                                |         r0 = *(r8);
    0x000472b8 movs r2, 0                                    |         r2 = 0;
    0x000472ba str.w r3, [r8, 8]                             |         __asm ("str.w r3, [r8, 8]");
    0x000472be add r1, pc                                    |         r1 = 0x8e61a;
    0x000472c0 blx 0x22d2c                                   |         fcn_00022d2c ();
    0x000472c4 mov r0, r6                                    |         r0 = r6;
    0x000472c6 blx 0x21ed0                                   |         fcn_00021ed0 ();
    0x000472ca movs r0, 0                                    |         r0 = 0;
    0x000472cc pop.w {r4, r5, r6, r7, r8, sb, sl, pc}        |         
                                                             | label_4:
    0x000472d0 mov r0, r6                                    |         r0 = r6;
    0x000472d2 blx 0x21ed0                                   |         fcn_00021ed0 ();
    0x000472d6 ldr.w r0, [r8, 0xc]                           |         r0 = *((r8 + 0xc));
    0x000472da ldr r3, [r0, 4]                               |         r3 = *((r0 + 4));
                                                             |         if (r3 != 0) {
    0x000472dc cbnz r3, 0x47318                              |             goto label_5;
                                                             |         }
                                                             | label_2:
    0x000472de mov r1, r7                                    |         r1 = r7;
    0x000472e0 blx 0x23764                                   |         fcn_00023764 ();
    0x000472e4 movs r0, 1                                    |         r0 = 1;
                                                             | label_1:
    0x000472e6 pop.w {r4, r5, r6, r7, r8, sb, sl, pc}        |         
    0x000472ea ldr r0, [pc, 0x70]                            |         
    0x000472ec mov r1, r7                                    |         r1 = r7;
    0x000472ee add r0, pc                                    |         r0 = 0x8e650;
    0x000472f0 blx 0x21ea4                                   |         fcn_00021ea4 ();
    0x000472f4 ldr r1, [pc, 0x68]                            |         
    0x000472f6 mov r2, r0                                    |         r2 = r0;
    0x000472f8 movs r3, 0                                    |         r3 = 0;
    0x000472fa movs r0, 7                                    |         r0 = 7;
    0x000472fc add r1, pc                                    |         r1 = 0x8e660;
    0x000472fe blx 0x1f2b0                                   |         fcn_0001f2b0 ();
    0x00047302 blx 0x23348                                   |         g_string_append ();
    0x00047306 b 0x472b0                                     |         
                                                             |     }
                                                             | label_3:
    0x00047308 mov r1, r0                                    |     r1 = r0;
    0x0004730a mov r0, r7                                    |     r0 = r7;
    0x0004730c blx 0x23808                                   |     fcn_00023808 ();
    0x00047310 ldr.w r3, [r8, 4]                             |     r3 = *((r8 + 4));
    0x00047314 mov r6, r0                                    |     r6 = r0;
    0x00047316 b 0x47280                                     |     goto label_0;
                                                             | label_5:
    0x00047318 ldr r1, [r0, 8]                               |     r1 = *((r0 + 8));
    0x0004731a adds r2, r3, 1                                |     r2 = r3 + 1;
    0x0004731c cmp r2, r1                                    |     
                                                             |     if (r2 < r1) {
    0x0004731e bhs 0x4733e                                   |         
    0x00047320 str r2, [r0, 4]                               |         *((r0 + 4)) = r2;
    0x00047322 movs r1, 0x2e                                 |         r1 = 0x2e;
    0x00047324 ldr r2, [r0]                                  |         r2 = *(r0);
    0x00047326 strb r1, [r2, r3]                             |         *((r2 + r3)) = r1;
    0x00047328 movs r1, 0                                    |         r1 = 0;
    0x0004732a ldrd r2, r3, [r0]                             |         __asm ("ldrd r2, r3, [r0]");
    0x0004732e strb r1, [r2, r3]                             |         *((r2 + r3)) = r1;
    0x00047330 mov r1, r7                                    |         r1 = r7;
    0x00047332 ldr.w r0, [r8, 0xc]                           |         r0 = *((r8 + 0xc));
    0x00047336 blx 0x23764                                   |         fcn_00023764 ();
    0x0004733a movs r0, 1                                    |         r0 = 1;
    0x0004733c b 0x472e6                                     |         goto label_1;
                                                             |     }
    0x0004733e movs r2, 0x2e                                 |     r2 = 0x2e;
    0x00047340 mov.w r1, -1                                  |     r1 = -1;
    0x00047344 blx 0x21254                                   |     g_sprintf ()
    0x00047348 ldr.w r0, [r8, 0xc]                           |     r0 = *((r8 + 0xc));
    0x0004734c b 0x472de                                     |     goto label_2;
                                                             | }

[*] Function sprintf used 83 times libsyslog-ng-3.31.so.0.0.0