[*] Binary protection state of pacsd

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


[*] Function strcat tear down of pacsd

    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/bin/pacsd @ 0x17b60 */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) fcn.00017b60 ()                                      | void fcn_00017b60 (int16_t arg_0h, int16_t arg_4h, int16_t arg_f8h, int16_t arg_258h, uint32_t arg1) {
                                                                 |     int16_t var_2ch;
                                                                 |     int16_t var_0h;
                                                                 |     int16_t var_4h;
                                                                 |     int16_t var_8h_2;
                                                                 |     int16_t var_ch;
                                                                 |     int16_t var_10h_2;
                                                                 |     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_2;
                                                                 |     int16_t var_30h;
                                                                 |     int16_t var_34h;
                                                                 |     int16_t var_38h;
                                                                 |     int16_t var_3ch;
                                                                 |     int16_t var_40h;
                                                                 |     int32_t var_44h;
                                                                 |     int32_t var_44h_2;
                                                                 |     int32_t var_4ch;
                                                                 |     int16_t var_50h;
                                                                 |     int16_t var_54h;
                                                                 |     int16_t var_60h;
                                                                 |     r0 = arg1;
    0x00017b60 ldr r2, [pc, 0x1d0]                               |     
    0x00017b62 ldr r3, [pc, 0x1d4]                               |     r3 = *(0x17d3a);
    0x00017b64 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}       |     
    0x00017b68 sub sp, 0x5c                                      |     
    0x00017b6a add r2, pc                                        |     r2 = 0x2f8a2;
    0x00017b6c ldr r5, [pc, 0x1cc]                               |     
    0x00017b6e ldr r3, [r2, r3]                                  |     
    0x00017b70 add r5, pc                                        |     r5 = 0x2f8b0;
    0x00017b72 ldr r3, [r3]                                      |     r3 = *(0x2f8a2);
    0x00017b74 str r3, [sp, 0x54]                                |     var_54h = r3;
    0x00017b76 mov.w r3, 0                                       |     r3 = 0;
    0x00017b7a cmp r0, 0                                         |     
                                                                 |     if (arg_0h == ) {
    0x00017b7c beq 0x17c42                                       |         goto label_21;
                                                                 |     }
    0x00017b7e mov r4, r0                                        |     r4 = r0;
    0x00017b80 movs r3, 0                                        |     r3 = 0;
    0x00017b82 add.w r2, r4, 0x3c                                |     r2 = r4 + 0x3c;
    0x00017b86 str r3, [sp, 0x40]                                |     var_40h = r3;
    0x00017b88 str r2, [sp, 0x24]                                |     var_24h = r2;
    0x00017b8a add.w r2, r4, 0x38                                |     r2 = r4 + 0x38;
    0x00017b8e strd r3, r3, [sp, 0x14]                           |     __asm ("strd r3, r3, [var_14h]");
    0x00017b92 strd r3, r3, [sp, 0x1c]                           |     __asm ("strd r3, r3, [var_1ch]");
    0x00017b96 strd r3, r3, [sp, 0x44]                           |     __asm ("strd r3, r3, [var_44h]");
    0x00017b9a strd r3, r3, [sp, 0x4c]                           |     __asm ("strd r3, r3, [var_50h]");
    0x00017b9e add.w r3, r4, 0x1c                                |     r3 = r4 + 0x1c;
    0x00017ba2 strd r2, r3, [sp, 0x28]                           |     __asm ("strd r2, r3, [var_2ch_2]");
    0x00017ba6 add r3, sp, 0x14                                  |     r3 += var_14h;
    0x00017ba8 ldr r0, [r0, 0x1c]                                |     r0 = *(arg_0hx1c);
    0x00017baa str r3, [sp, 0x30]                                |     var_30h = r3;
    0x00017bac add r3, sp, 0x18                                  |     r3 += var_18h;
    0x00017bae str r3, [sp, 0x34]                                |     var_34h = r3;
    0x00017bb0 add r3, sp, 0x1c                                  |     r3 += var_1ch;
    0x00017bb2 str r3, [sp, 0x38]                                |     var_38h = r3;
    0x00017bb4 add r3, sp, 0x20                                  |     r3 += var_20h;
    0x00017bb6 str r3, [sp, 0x3c]                                |     var_3ch = r3;
                                                                 |     if (r0 != 0) {
    0x00017bb8 cbz r0, 0x17bc0                                   |         
    0x00017bba movs r1, 1                                        |         r1 = 1;
    0x00017bbc blx 0xaf30                                        |         strdup (r0);
                                                                 |     }
    0x00017bc0 ldr r0, [r4, 0x38]                                |     r0 = *((r4 + 0x38));
                                                                 |     if (r0 != 0) {
    0x00017bc2 cbz r0, 0x17bca                                   |         
    0x00017bc4 movs r1, 1                                        |         r1 = 1;
    0x00017bc6 blx 0xaf30                                        |         strdup (r0);
                                                                 |     }
    0x00017bca ldr r0, [r4, 0x3c]                                |     r0 = *((r4 + 0x3c));
                                                                 |     if (r0 != 0) {
    0x00017bcc cbz r0, 0x17bd4                                   |         
    0x00017bce movs r1, 1                                        |         r1 = 1;
    0x00017bd0 blx 0xaf30                                        |         strdup (r0);
                                                                 |     }
    0x00017bd4 movs r3, 0                                        |     r3 = 0;
    0x00017bd6 str r3, [r4, 0x1c]                                |     *((r4 + 0x1c)) = r3;
    0x00017bd8 strd r3, r3, [r4, 0x38]                           |     __asm ("strd r3, r3, [r4, 0x38]");
    0x00017bdc ldr r3, [pc, 0x160]                               |     r3 = *(0x17d40);
    0x00017bde ldr r6, [r5, r3]                                  |     r6 = *((r5 + r3));
    0x00017be0 ldr r3, [r6, 0xc]                                 |     r3 = *((r6 + 0xc));
    0x00017be2 cmp r3, 0                                         |     
                                                                 |     if (r3 != 0) {
    0x00017be4 bne 0x17cc0                                       |         goto label_22;
                                                                 |     }
                                                                 | label_1:
    0x00017be6 ldr r3, [r4, 0x10]                                |     r3 = *((r4 + 0x10));
    0x00017be8 add r7, sp, 0x24                                  |     r7 += var_24h;
    0x00017bea add.w r0, r4, 0x44                                |     r0 = r4 + 0x44;
    0x00017bee strd r3, r7, [sp]                                 |     __asm ("strd r3, r7, [sp]");
    0x00017bf2 ldrd r2, r3, [r4, 8]                              |     __asm ("ldrd r2, r3, [r4, 8]");
    0x00017bf6 ldr r1, [r4, 0x40]                                |     r1 = *((r4 + 0x40));
    0x00017bf8 bl 0x14aac                                        |     fcn_00014aac (r0, r1, r2, r3, r4, r5);
    0x00017bfc ldr r3, [r6, 0xc]                                 |     r3 = *((r6 + 0xc));
    0x00017bfe cbnz r3, 0x17c5c                                  |     
                                                                 |     while (r3 == 0) {
                                                                 | label_0:
    0x00017c00 mov r0, r4                                        |         r0 = r4;
    0x00017c02 mov r1, r7                                        |         r1 = r7;
    0x00017c04 bl 0x170b0                                        |         fcn_000170b0 (r0, r1, r2, r3, r4, r5);
    0x00017c08 ldr r3, [sp, 0x30]                                |         r3 = var_30h;
    0x00017c0a ldr r0, [r3]                                      |         r0 = *(r3);
                                                                 |         if (r0 != 0) {
    0x00017c0c cbz r0, 0x17c12                                   |             
    0x00017c0e blx 0xaa44                                        |             strcpy_chk ();
                                                                 |         }
    0x00017c12 ldr r3, [sp, 0x34]                                |         r3 = var_34h;
    0x00017c14 ldr r0, [r3]                                      |         r0 = *(r3);
                                                                 |         if (r0 != 0) {
    0x00017c16 cbz r0, 0x17c1c                                   |             
    0x00017c18 blx 0xaa44                                        |             strcpy_chk ();
                                                                 |         }
    0x00017c1c ldr r3, [sp, 0x38]                                |         r3 = var_38h;
    0x00017c1e ldr r0, [r3]                                      |         r0 = *(r3);
                                                                 |         if (r0 != 0) {
    0x00017c20 cbz r0, 0x17c26                                   |             
    0x00017c22 blx 0xaa44                                        |             strcpy_chk ();
                                                                 |         }
    0x00017c26 ldr r2, [pc, 0x11c]                               |         
    0x00017c28 ldr r3, [pc, 0x10c]                               |         r3 = *(0x17d38);
    0x00017c2a ldr r0, [sp, 0x50]                                |         r0 = var_50h;
    0x00017c2c add r2, pc                                        |         r2 = 0x2f976;
    0x00017c2e ldr r3, [r2, r3]                                  |         r3 = *(0x2f976);
    0x00017c30 ldr r2, [r3]                                      |         r2 = *(0x2f976);
    0x00017c32 ldr r3, [sp, 0x54]                                |         r3 = var_54h;
    0x00017c34 eors r2, r3                                       |         r2 ^= r3;
    0x00017c36 mov.w r3, 0                                       |         r3 = 0;
                                                                 |         if (r2 != r3) {
    0x00017c3a bne 0x17d30                                       |             goto label_23;
                                                                 |         }
    0x00017c3c add sp, 0x5c                                      |         
    0x00017c3e pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |         
    0x00017c40 ldrh r0, [r6, 0x3e]                               |         r0 = *((r6 + 0x3e));
                                                                 | label_21:
    0x00017c42 ldr r3, [pc, 0x104]                               |         
    0x00017c44 movw r2, 0x481                                    |         r2 = 0x481;
    0x00017c48 ldr r4, [pc, 0x100]                               |         
    0x00017c4a ldr r1, [pc, 0x104]                               |         
    0x00017c4c add r3, pc                                        |         
    0x00017c4e add r4, pc                                        |         r4 = 0x2f99e;
    0x00017c50 add.w r3, r3, 0x154                               |         r3 = 0x2faee;
    0x00017c54 add r1, pc                                        |         r1 = 0x2f9aa;
    0x00017c56 str r4, [sp]                                      |         *(sp) = r4;
    0x00017c58 blx 0xae74                                        |         fcn_0000ae74 ();
    0x00017c5c ldr r3, [pc, 0xf4]                                |         r3 = *(0x17d54);
    0x00017c5e ldr.w r8, [r5, r3]                                |         r8 = *((r5 + r3));
    0x00017c62 ldr.w r3, [r8]                                    |         r3 = *(r8);
    0x00017c66 cmp r3, 0                                         |         
    0x00017c68 beq 0x17c00                                       |         
                                                                 |     }
    0x00017c6a ldr r3, [r3, 0x10]                                |     r3 = *((r3 + 0x10));
    0x00017c6c cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x00017c6e beq 0x17c00                                       |         goto label_0;
                                                                 |     }
    0x00017c70 blx r3                                            |     uint32_t (*r3)() ();
    0x00017c72 ldr.w r3, [r8]                                    |     r3 = *(r8);
                                                                 | label_4:
    0x00017c74 adds r0, 0                                        |     r0 += 0;
    0x00017c76 ldr r0, [r6, 0x10]                                |     r0 = *((r6 + 0x10));
    0x00017c78 ldr r3, [r3, 0x18]                                |     r3 = *((r3 + 0x18));
    0x00017c7a blx r3                                            |     r0 = uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
    0x00017c7c mov r5, r0                                        |     r5 = r0;
                                                                 |     if (r0 == 0) {
    0x00017c7e cbz r0, 0x17cb6                                   |         goto label_24;
                                                                 |     }
    0x00017c80 ldr.w sl, [pc, 0xd4]                              |     
    0x00017c84 ldr.w sb, [pc, 0xd4]                              |     
    0x00017c88 ldr.w fp, [pc, 0xd4]                              |     
    0x00017c8c add sl, pc                                        |     sl = 0x2f9e8;
    0x00017c8e ldr r6, [r0]                                      |     r6 = *(r0);
    0x00017c90 mov r3, sl                                        |     r3 = sl;
    0x00017c92 add sb, pc                                        |     
    0x00017c94 mov sl, r4                                        |     sl = r4;
    0x00017c96 add.w sb, sb, 0x154                               |     sb = 0x2fb46;
    0x00017c9a add fp, pc                                        |     fp = 0x2f9fe;
    0x00017c9c mov r4, r3                                        |     r4 = r3;
                                                                 |     do {
    0x00017c9e ldr r0, [r5, 4]                                   |         r0 = *((r5 + 4));
    0x00017ca0 movw r3, 0x4a1                                    |         r3 = 0x4a1;
    0x00017ca4 mov r2, sb                                        |         r2 = sb;
    0x00017ca6 mov r1, fp                                        |         r1 = fp;
    0x00017ca8 str r4, [sp]                                      |         *(sp) = r4;
    0x00017caa blx r6                                            |         uint32_t (*r6)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
    0x00017cac ldr r6, [r5, 8]!                                  |         r6 = *((r5 += 8));
    0x00017cb0 cmp r6, 0                                         |         
    0x00017cb2 bne 0x17c9e                                       |         
                                                                 |     } while (r6 != 0);
                                                                 | label_2:
    0x00017cb4 mov r4, sl                                        |     r4 = sl;
                                                                 | label_24:
    0x00017cb6 invalid                                           |     
                                                                 | label_3:
    0x00017cb8 adds r0, 0                                        |     r0 += 0;
    0x00017cba ldr r3, [r3, 0x14]                                |     r3 = *((r3 + 0x14));
    0x00017cbc blx r3                                            |     uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
    0x00017cbe b 0x17c00                                         |     goto label_0;
                                                                 | label_22:
    0x00017cc0 ldr r3, [pc, 0x90]                                |     r3 = *(0x17d54);
    0x00017cc2 ldr.w r8, [r5, r3]                                |     r8 = *((r5 + r3));
    0x00017cc6 ldr.w r3, [r8]                                    |     r3 = *(r8);
    0x00017cca cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x00017ccc beq 0x17be6                                       |         goto label_1;
                                                                 |     }
    0x00017cce ldr r3, [r3, 0x10]                                |     r3 = *((r3 + 0x10));
    0x00017cd0 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x00017cd2 beq 0x17be6                                       |         goto label_1;
                                                                 |     }
    0x00017cd4 blx r3                                            |     uint32_t (*r3)() ();
    0x00017cd6 ldr.w r3, [r8]                                    |     r3 = *(r8);
    0x00017cda ldr r0, [r6, 0x10]                                |     r0 = *((r6 + 0x10));
    0x00017cdc ldr r3, [r3, 0x18]                                |     r3 = *((r3 + 0x18));
    0x00017cde blx r3                                            |     r0 = uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
    0x00017ce0 mov r7, r0                                        |     r7 = r0;
                                                                 |     if (r0 == 0) {
    0x00017ce2 cbz r0, 0x17d26                                   |         goto label_25;
                                                                 |     }
    0x00017ce4 ldr.w sl, [pc, 0x7c]                              |     
    0x00017ce8 mov r2, r4                                        |     r2 = r4;
    0x00017cea ldr.w fp, [pc, 0x7c]                              |     
    0x00017cee ldr r3, [pc, 0x7c]                                |     r3 = *(0x17d6e);
    0x00017cf0 ldr.w sb, [r0]                                    |     sb = *(r0);
    0x00017cf4 add sl, pc                                        |     sl = 0x2fa5c;
    0x00017cf6 add fp, pc                                        |     fp = 0x2fa64;
    0x00017cf8 str r6, [sp, 0xc]                                 |     var_ch = r6;
                                                                 | label_11:
    0x00017cfa add r3, pc                                        |     r3 += pc;
    0x00017cfc mov r6, fp                                        |     r6 = fp;
    0x00017cfe mov r4, sb                                        |     r4 = sb;
    0x00017d00 mov fp, r5                                        |     
    0x00017d02 add.w sl, sl, 0x154                               |     sl += 0x154;
    0x00017d06 mov r5, r3                                        |     r5 = r3;
    0x00017d08 mov sb, r2                                        |     sb = r2;
                                                                 |     do {
    0x00017d0a ldr r0, [r7, 4]                                   |         r0 = *((r7 + 4));
    0x00017d0c movw r3, 0x496                                    |         r3 = 0x496;
    0x00017d10 mov r2, sl                                        |         r2 = sl;
    0x00017d12 mov r1, r6                                        |         r1 = r6;
    0x00017d14 str r5, [sp]                                      |         *(sp) = r5;
    0x00017d16 blx r4                                            |         uint32_t (*r4)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
    0x00017d18 ldr r4, [r7, 8]!                                  |         r4 = *((r7 += 8));
    0x00017d1c cmp r4, 0                                         |         
    0x00017d1e bne 0x17d0a                                       |         
                                                                 |     } while (r4 != 0);
    0x00017d20 ldr r6, [sp, 0xc]                                 |     r6 = var_ch;
    0x00017d22 mov r4, sb                                        |     r4 = sb;
    0x00017d24 mov r5, fp                                        |     r5 = fp;
                                                                 | label_25:
    0x00017d26 ldr.w r3, [r8]                                    |     r3 = *(r8);
    0x00017d2a ldr r3, [r3, 0x14]                                |     r3 = *((r3 + 0x14));
    0x00017d2c blx r3                                            |     uint32_t (*r3)(uint32_t) (r3);
    0x00017d2e b 0x17be6                                         |     goto label_1;
                                                                 | label_23:
    0x00017d30 blx 0xaa28                                        |     fcn_0000aa28 ();
    0x00017d34 ldr r7, [pc, 0x1f8]                               |     r7 = *(0x17f30);
    0x00017d36 movs r5, r0                                       |     r5 = r0;
    0x00017d38 lsls r0, r0, 0x11                                 |     r0 <<= 0x11;
    0x00017d3a movs r0, r0                                       |     
    0x00017d3c ldr r7, [pc, 0x1e0]                               |     r7 = *(0x17f20);
    0x00017d3e movs r5, r0                                       |     r5 = r0;
    0x00017d40 lsls r4, r2, 0x13                                 |     r4 = r2 << 0x13;
    0x00017d42 movs r0, r0                                       |     
    0x00017d44 ldr r6, [pc, 0x2f0]                               |     r6 = *(0x18038);
    0x00017d46 movs r5, r0                                       |     r5 = r0;
    0x00017d48 bvs 0x17cb4                                       |     __asm ("bvs aav.0x000000ff");
                                                                 |     goto label_2;
    0x00017d4a movs r2, r0                                       |     r2 = r0;
                                                                 |     if (r2 >= r0) {
    0x00017d4c bhs 0x17e04                                       |         goto label_26;
                                                                 |     }
    0x00017d4e movs r2, r0                                       |     r2 = r0;
                                                                 |     if (r2 >= r0) {
    0x00017d50 bhs 0x17de4                                       |         goto label_27;
                                                                 |     }
    0x00017d52 movs r2, r0                                       |     r2 = r0;
    0x00017d54 lsls r4, r4, 0x12                                 |     r4 <<= 0x12;
    0x00017d56 movs r0, r0                                       |     
                                                                 |     if (r0 >= r0) {
    0x00017d58 bpl 0x17d8c                                       |         goto label_28;
                                                                 |     }
    0x00017d5a movs r2, r0                                       |     r2 = r0;
    0x00017d5c bvs 0x17e3c                                       |     __asm ("bvs aav.0x000000ff");
    0x00017d5e movs r2, r0                                       |     r2 = r0;
                                                                 |     if (r2 >= r0) {
    0x00017d60 bhs 0x17d68                                       |         goto label_29;
                                                                 |     }
    0x00017d62 movs r2, r0                                       |     r2 = r0;
    0x00017d64 bvs 0x17d80                                       |     __asm ("bvs aav.0x000000ff");
    0x00017d66 movs r2, r0                                       |     r2 = r0;
                                                                 |     if (r2 != r0) {
                                                                 | label_29:
    0x00017d68 bne 0x17cb8                                       |         goto label_3;
                                                                 |     }
    0x00017d6a movs r2, r0                                       |     r2 = r0;
                                                                 |     if (r2 < r0) {
    0x00017d6c bmi 0x17c74                                       |         goto label_4;
                                                                 |     }
    0x00017d6e movs r2, r0                                       |     r2 = r0;
    0x00017d70 push.w {r4, r5, r6, r7, r8, sb, lr}               |     
    0x00017d74 mov r6, r1                                        |     r6 = r1;
    0x00017d76 ldr r1, [pc, 0x1a0]                               |     
    0x00017d78 sub sp, 0x14                                      |     
    0x00017d7a ldr r3, [pc, 0x1a0]                               |     r3 = *(0x17f1e);
    0x00017d7c add r1, pc                                        |     r1 = 0x2fc9a;
    0x00017d7e ldr r2, [pc, 0x1a0]                               |     r2 = *(0x17f22);
    0x00017d80 ldr r3, [r1, r3]                                  |     r3 = *((r1 + r3));
    0x00017d82 add r2, pc                                        |     r2 += pc;
    0x00017d84 ldr r3, [r3]                                      |     r3 = *(r3);
    0x00017d86 str r3, [sp, 0xc]                                 |     var_2ch = r3;
    0x00017d88 mov.w r3, 0                                       |     r3 = 0;
                                                                 | label_28:
    0x00017d8c cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00017d8e beq 0x17e40                                       |         goto label_30;
                                                                 |     }
    0x00017d90 cmp r6, 0                                         |     
                                                                 |     if (r6 == 0) {
    0x00017d92 beq 0x17e5a                                       |         goto label_31;
                                                                 |     }
    0x00017d94 ldr r3, [pc, 0x18c]                               |     r3 = *(0x17f24);
    0x00017d96 mov r4, r0                                        |     r4 = r0;
    0x00017d98 ldr r7, [pc, 0x18c]                               |     
    0x00017d9a ldr.w sb, [r2, r3]                                |     sb = *((r2 + r3));
    0x00017d9e add r7, pc                                        |     r7 = 0x2fcca;
    0x00017da0 mov r0, sb                                        |     r0 = sb;
    0x00017da2 blx 0xa9f8                                        |     fcn_0000a9f8 ();
    0x00017da6 mov r0, r4                                        |     r0 = r4;
    0x00017da8 bl 0x11bf0                                        |     r0 = fcn_00011bf0 (r0, r1, r2);
    0x00017dac blx 0xaa44                                        |     strcpy_chk ();
    0x00017db0 add.w r1, r7, 0x18c                               |     r1 = r7 + 0x18c;
    0x00017db4 mov r0, r4                                        |     r0 = r4;
    0x00017db6 bl 0x11cfc                                        |     r0 = fcn_00011cfc (r0, r1, r2, r3);
    0x00017dba cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00017dbc beq 0x17e2a                                       |         goto label_32;
                                                                 |     }
    0x00017dbe add.w r1, r7, 0x14                                |     r1 = r7 + 0x14;
    0x00017dc2 mov r0, r4                                        |     r0 = r4;
    0x00017dc4 blx 0xae2c                                        |     r0 = fcn_0000ae2c ();
    0x00017dc8 mov r8, r0                                        |     r8 = r0;
    0x00017dca cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00017dcc beq 0x17e76                                       |         goto label_33;
                                                                 |     }
    0x00017dce movs r3, 0                                        |     r3 = 0;
    0x00017dd0 add r1, sp, 8                                     |     r1 += var_8h_2;
    0x00017dd2 str r3, [sp, 8]                                   |     var_8h_2 = r3;
    0x00017dd4 bl 0x1699c                                        |     r0 = fcn_0001699c (r0, r1);
    0x00017dd8 mov r5, r0                                        |     r5 = r0;
    0x00017dda cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00017ddc beq 0x17e94                                       |         goto label_34;
                                                                 |     }
    0x00017dde ldr r3, [pc, 0x14c]                               |     
    0x00017de0 ldr r1, [r0, 8]                                   |     r1 = *((r0 + 8));
    0x00017de2 add r3, pc                                        |     r3 = 0x2fd14;
                                                                 | label_27:
    0x00017de4 ldr r0, [r3, 4]                                   |     r0 = *((r3 + 4));
    0x00017de6 blx 0xa33c                                        |     g_hash_table_steal ();
    0x00017dea ldr r0, [sp, 8]                                   |     r0 = var_8h_2;
    0x00017dec blx 0xaa44                                        |     strcpy_chk ();
                                                                 | label_5:
    0x00017df0 mov r1, r4                                        |     r1 = r4;
    0x00017df2 mov r0, r5                                        |     r0 = r5;
    0x00017df4 bl 0x168a4                                        |     fcn_000168a4 (r0, r1, r2, r3, r4, r5);
    0x00017df8 ldr r6, [r5]                                      |     r6 = *(r5);
    0x00017dfa bics r3, r6, 2                                    |     __asm ("bics r3, r6, 2");
                                                                 |     if (r0 == 0) {
    0x00017dfe beq 0x17e8c                                       |         goto label_35;
                                                                 |     }
    0x00017e00 cmp r6, 1                                         |     
                                                                 |     if (r6 != 1) {
    0x00017e02 bne 0x17eec                                       |         goto label_36;
                                                                 |     }
                                                                 |     do {
                                                                 | label_26:
    0x00017e04 mov r0, sb                                        |         r0 = sb;
    0x00017e06 blx 0xaab8                                        |         fcn_0000aab8 ();
    0x00017e0a mov r0, r4                                        |         r0 = r4;
    0x00017e0c blx 0xadc8                                        |         cdb_set_transaction_commit_default_retries ();
    0x00017e10 ldr r2, [pc, 0x11c]                               |         
    0x00017e12 ldr r3, [pc, 0x108]                               |         r3 = *(0x17f1e);
    0x00017e14 add r2, pc                                        |         r2 = 0x2fd48;
    0x00017e16 ldr r3, [r2, r3]                                  |         r3 = *(0x2fd48);
    0x00017e18 ldr r2, [r3]                                      |         r2 = *(0x2fd48);
    0x00017e1a ldr r3, [sp, 0xc]                                 |         r3 = var_ch;
    0x00017e1c eors r2, r3                                       |         r2 ^= r3;
    0x00017e1e mov.w r3, 0                                       |         r3 = 0;
                                                                 |         if (r2 != r3) {
    0x00017e22 bne 0x17ee8                                       |             goto label_37;
                                                                 |         }
    0x00017e24 add sp, 0x14                                      |         
    0x00017e26 pop.w {r4, r5, r6, r7, r8, sb, pc}                |         
                                                                 | label_32:
    0x00017e2a ldr r4, [pc, 0x108]                               |         
    0x00017e2c add.w r3, r7, 0x16c                               |         r3 = r7 + 0x16c;
    0x00017e30 ldr r1, [pc, 0x104]                               |         
    0x00017e32 movw r2, 0x51b                                    |         r2 = 0x51b;
    0x00017e34 strh r3, [r3, r0]                                 |         *((r3 + r0)) = r3;
    0x00017e36 add r4, pc                                        |         r4 = 0x2fd70;
    0x00017e38 add r1, pc                                        |         r1 = 0x2fd74;
    0x00017e3a str r4, [sp]                                      |         *(sp) = r4;
    0x00017e3c blx 0xae74                                        |         fcn_0000ae74 ();
                                                                 | label_30:
    0x00017e40 ldr r3, [pc, 0xf8]                                |         r3 = *(0x17f3c);
    0x00017e42 movw r2, 0x50e                                    |         r2 = 0x50e;
                                                                 | label_20:
    0x00017e46 ldr r4, [pc, 0xf8]                                |         
    0x00017e48 ldr r1, [pc, 0xf8]                                |         
    0x00017e4a add r3, pc                                        |         r3 += pc;
    0x00017e4c add r4, pc                                        |         r4 = 0x2fd92;
    0x00017e4e add.w r3, r3, 0x16c                               |         r3 += 0x16c;
    0x00017e52 add r1, pc                                        |         r1 = 0x2fd9a;
    0x00017e54 str r4, [sp]                                      |         *(sp) = r4;
    0x00017e56 blx 0xae74                                        |         fcn_0000ae74 ();
                                                                 | label_31:
    0x00017e5a ldr r3, [pc, 0xec]                                |         r3 = *(0x17f4a);
    0x00017e5c movw r2, 0x50f                                    |         r2 = 0x50f;
    0x00017e60 ldr r4, [pc, 0xe8]                                |         r4 = *(0x17f4c);
    0x00017e62 mov r0, r6                                        |         r0 = r6;
                                                                 | label_6:
    0x00017e64 ldr r1, [pc, 0xe8]                                |         
    0x00017e66 add r3, pc                                        |         r3 += pc;
    0x00017e68 add r4, pc                                        |         r4 += pc;
    0x00017e6a add.w r3, r3, 0x16c                               |         r3 += 0x16c;
    0x00017e6e add r1, pc                                        |         r1 = 0x2fdc2;
    0x00017e70 str r4, [sp]                                      |         *(sp) = r4;
    0x00017e72 blx 0xae74                                        |         fcn_0000ae74 ();
                                                                 | label_33:
    0x00017e76 ldr r4, [pc, 0xdc]                                |         r4 = *(0x17f56);
    0x00017e78 add.w r3, r7, 0x16c                               |         r3 = r7 + 0x16c;
    0x00017e7c ldr r1, [pc, 0xd8]                                |         r1 = *(0x17f58);
    0x00017e7e invalid                                           |         
                                                                 | label_8:
    0x00017e80 str r4, [r4, 0x28]                                |         *((r4 + 0x28)) = r4;
    0x00017e82 add r4, pc                                        |         r4 += pc;
    0x00017e84 add r1, pc                                        |         r1 += pc;
    0x00017e86 str r4, [sp]                                      |         *(sp) = r4;
    0x00017e88 blx 0xae74                                        |         fcn_0000ae74 ();
                                                                 | label_35:
    0x00017e8c mov r0, r5                                        |         r0 = r5;
    0x00017e8e bl 0x17b60                                        |         fcn_00017b60 (r0, r1, r2, r3, r4);
    0x00017e92 b 0x17e04                                         |         
                                                                 |     } while (1);
                                                                 | label_34:
    0x00017e94 add.w r1, r7, 0x14c                               |     r1 = r7 + 0x14c;
    0x00017e98 mov r0, r4                                        |     r0 = r4;
    0x00017e9a blx 0xae2c                                        |     fcn_0000ae2c ();
    0x00017e9e add.w r1, r7, 0x7c                                |     r1 = r7 + 0x7c;
    0x00017ea2 mov r5, r0                                        |     r5 = r0;
    0x00017ea4 mov r0, r4                                        |     r0 = r4;
    0x00017ea6 blx 0xae2c                                        |     r0 = fcn_0000ae2c ();
    0x00017eaa mov r3, r0                                        |     r3 = r0;
                                                                 |     if (r0 != 0) {
                                                                 | label_7:
    0x00017eac cbz r0, 0x17eb2                                   |         
    0x00017eae ldrb r2, [r0]                                     |         r2 = *(r0);
                                                                 |         if (r2 != 0) {
    0x00017eb0 cbnz r2, 0x17ebc                                  |             goto label_38;
                                                                 |         }
                                                                 |     }
    0x00017eb2 bl 0x1befc                                        |     fcn_0001befc ();
    0x00017eb6 bl 0x1bffc                                        |     r0 = fcn_0001bffc (r0);
    0x00017eba mov r3, r0                                        |     r3 = r0;
                                                                 | label_38:
    0x00017ebc str r5, [sp]                                      |     *(sp) = r5;
    0x00017ebe mov r1, r8                                        |     r1 = r8;
    0x00017ec0 mov r0, r6                                        |     r0 = r6;
    0x00017ec2 movs r2, 0                                        |     r2 = 0;
    0x00017ec4 bl 0x1676c                                        |     r0 = fcn_0001676c (r0, r1, r2, r3, r4);
    0x00017ec8 mov r5, r0                                        |     r5 = r0;
    0x00017eca cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x00017ecc bne 0x17df0                                       |         goto label_5;
                                                                 |     }
    0x00017ece ldr r3, [pc, 0x8c]                                |     
    0x00017ed0 movw r2, 0x534                                    |     r2 = 0x534;
    0x00017ed4 ldr r4, [pc, 0x88]                                |     
    0x00017ed6 ldr r1, [pc, 0x8c]                                |     r1 = *(0x17f66);
    0x00017ed8 add r3, pc                                        |     
    0x00017eda add r4, pc                                        |     r4 = 0x2fe3e;
    0x00017edc add.w r3, r3, 0x16c                               |     r3 = 0x2ffa6;
                                                                 | label_9:
    0x00017ee0 add r1, pc                                        |     r1 += pc;
    0x00017ee2 str r4, [sp]                                      |     *(sp) = r4;
    0x00017ee4 blx 0xae74                                        |     fcn_0000ae74 ();
                                                                 | label_37:
    0x00017ee8 blx 0xaa28                                        |     fcn_0000aa28 ();
                                                                 | label_36:
    0x00017eec ldr r3, [pc, 0x78]                                |     
    0x00017eee movs r1, 0x10                                     |     r1 = 0x10;
    0x00017ef0 ldr r2, [pc, 0x78]                                |     
    0x00017ef2 movs r0, 0                                        |     r0 = 0;
    0x00017ef4 str r6, [sp]                                      |     *(sp) = r6;
    0x00017ef6 add r3, pc                                        |     r3 = 0x2fe62;
    0x00017ef8 add r2, pc                                        |     r2 = 0x2fe68;
    0x00017efa blx 0xa584                                        |     fcn_0000a584 ();
    0x00017efe ldr r3, [pc, 0x70]                                |     
    0x00017f00 movs r0, 0                                        |     r0 = 0;
    0x00017f02 ldr r1, [pc, 0x70]                                |     
    0x00017f04 movw r2, 0x54b                                    |     r2 = 0x54b;
    0x00017f08 str r0, [sp]                                      |     *(sp) = r0;
    0x00017f0a add r3, pc                                        |     
    0x00017f0c add r1, pc                                        |     r1 = 0x2fe86;
    0x00017f0e add.w r3, r3, 0x16c                               |     r3 = 0x2ffec;
    0x00017f12 blx 0xae74                                        |     fcn_0000ae74 ();
    0x00017f16 nop                                               |     
    0x00017f18 ldr r5, [pc, 0x1b0]                               |     r5 = *(0x180cc);
    0x00017f1a movs r5, r0                                       |     r5 = r0;
    0x00017f1c lsls r0, r0, 0x11                                 |     r0 <<= 0x11;
    0x00017f1e movs r0, r0                                       |     
    0x00017f20 ldr r5, [pc, 0x198]                               |     r5 = *(0x180bc);
    0x00017f22 movs r5, r0                                       |     r5 = r0;
    0x00017f24 lsls r0, r7, 0x11                                 |     r0 = r7 << 0x11;
    0x00017f26 movs r0, r0                                       |     
                                                                 |     if (r0 >= r0) {
    0x00017f28 bpl 0x17ff0                                       |         goto label_39;
                                                                 |     }
    0x00017f2a movs r2, r0                                       |     r2 = r0;
    0x00017f2c str r2, [r3, 0x1c]                                |     *((r3 + 0x1c)) = r2;
    0x00017f2e movs r5, r0                                       |     r5 = r0;
    0x00017f30 ldr r4, [pc, 0x350]                               |     r4 = *(0x18284);
    0x00017f32 movs r5, r0                                       |     r5 = r0;
                                                                 |     if (r5 <= r0) {
    0x00017f34 blo 0x17e64                                       |         goto label_6;
                                                                 |     }
    0x00017f36 movs r2, r0                                       |     r2 = r0;
                                                                 |     if (r2 == r0) {
    0x00017f38 beq 0x18004                                       |         goto label_40;
                                                                 |     }
    0x00017f3a movs r2, r0                                       |     r2 = r0;
                                                                 |     if (r2 < r0) {
    0x00017f3c bmi 0x17eac                                       |         goto label_7;
                                                                 |     }
    0x00017f3e movs r2, r0                                       |     r2 = r0;
    0x00017f40 stm r0!, {r2, r4, r5, r7}                         |     *(r0!) = r2;
                                                                 |     *((r0! + 4)) = r4;
                                                                 |     *((r0! + 8)) = r5;
                                                                 |     *((r0! + 12)) = r7;
    0x00017f42 movs r2, r0                                       |     r2 = r0;
                                                                 |     if (r2 == r0) {
    0x00017f44 beq 0x17fdc                                       |         goto label_41;
                                                                 |     }
    0x00017f46 movs r2, r0                                       |     r2 = r0;
                                                                 |     if (r2 < r0) {
    0x00017f48 bmi 0x17e80                                       |         goto label_8;
                                                                 |     }
    0x00017f4a movs r2, r0                                       |     r2 = r0;
                                                                 |     if (r2 >= r0) {
    0x00017f4c bhs 0x17ee0                                       |         goto label_9;
                                                                 |     }
    0x00017f4e movs r2, r0                                       |     r2 = r0;
                                                                 |     if (r2 == r0) {
    0x00017f50 beq 0x17fb0                                       |         goto label_42;
                                                                 |     }
    0x00017f52 movs r2, r0                                       |     r2 = r0;
                                                                 |     if (r2 == r0) {
    0x00017f54 beq 0x18024                                       |         goto label_43;
                                                                 |     }
                                                                 | label_19:
    0x00017f56 movs r2, r0                                       |     r2 = r0;
                                                                 |     if (r2 == r0) {
    0x00017f58 beq 0x17f8c                                       |         void (*0x17f8c)() ();
                                                                 |     }
    0x00017f5a movs r2, r0                                       |     r2 = r0;
                                                                 |     if (r2 < r0) {
    0x00017f5c bmi 0x17fb0                                       |         goto label_42;
                                                                 |     }
    0x00017f5e movs r2, r0                                       |     r2 = r0;
                                                                 | label_10:
    0x00017f60 ldm r7, {r1, r2, r3, r6, r7}                      |     r1 = *(r7);
                                                                 |     r2 = *((r7 + 4));
                                                                 |     r3 = *((r7 + 8));
                                                                 |     r6 = *((r7 + 12));
                                                                 |     r7 = *((r7 + 16));
    0x00017f62 movs r2, r0                                       |     r2 = r0;
    0x00017f64 ldm r7, {r2, r3, r4, r5, r7}                      |     r2 = *(r7);
                                                                 |     r3 = *((r7 + 4));
                                                                 |     r4 = *((r7 + 8));
                                                                 |     r5 = *((r7 + 12));
                                                                 |     r7 = *((r7 + 16));
    0x00017f66 movs r2, r0                                       |     r2 = r0;
    0x00017f68 str r2, [sp, 0x258]                               |     *(arg_258h) = r2;
    0x00017f6a movs r2, r0                                       |     r2 = r0;
                                                                 |     if (r2 <= r0) {
    0x00017f6c blo 0x17f88                                       |         void (*0x17f88)() ();
                                                                 |     }
    0x00017f6e movs r2, r0                                       |     r2 = r0;
                                                                 |     if (r2 <= r0) {
    0x00017f70 blo 0x17f60                                       |         goto label_10;
                                                                 |     }
    0x00017f72 movs r2, r0                                       |     r2 = r0;
    0x00017f74 ldm r7, {r4, r7}                                  |     r4 = *(r7);
                                                                 |     r7 = *((r7 + 4));
    0x00017f76 movs r2, r0                                       |     r2 = r0;
                                                                 | label_42:
    0x00017fb0 lsls r4, r0, 0x11                                 |     r4 = r0 << 0x11;
    0x00017fb2 movs r0, r0                                       |     
    0x00017fb4 b 0x17cfa                                         |     goto label_11;
                                                                 |     if (r5 != 0) {
                                                                 | label_41:
    0x00017fdc cbz r5, 0x17ffa                                   |         
    0x00017fde ldr r3, [pc, 0x354]                               |         
    0x00017fe0 movw r2, 0x65c                                    |         r2 = 0x65c;
    0x00017fe4 ldr r4, [pc, 0x350]                               |         
    0x00017fe6 movs r0, 0                                        |         r0 = 0;
    0x00017fe8 ldr r1, [pc, 0x350]                               |         r1 = *(0x1833c);
    0x00017fea add r3, pc                                        |         
    0x00017fec add r4, pc                                        |         r4 = 0x30328;
    0x00017fee add.w r3, r3, 0x198                               |         r3 = 0x304bc;
                                                                 | label_39:
    0x00017ff0 strb r4, [r1, 0xf]                                |         *((r1 + 0xf)) = r4;
    0x00017ff2 add r1, pc                                        |         r1 += pc;
    0x00017ff4 str r4, [sp]                                      |         *(sp) = r4;
    0x00017ff6 blx 0xae74                                        |         fcn_0000ae74 ();
                                                                 |     }
    0x00017ffa movs r0, 0x10                                     |     r0 = 0x10;
    0x00017ffc mov r8, r5                                        |     r8 = r5;
    0x00017ffe blx 0xadb8                                        |     fcn_0000adb8 ();
    0x00018002 movs r2, 4                                        |     r2 = 4;
                                                                 | label_40:
    0x00018004 mov r4, r0                                        |     r4 = r0;
    0x00018006 mov r1, r5                                        |     r1 = r5;
    0x00018008 str r5, [r0]                                      |     *(r0) = r5;
    0x0001800a mov r0, r5                                        |     r0 = r5;
    0x0001800c blx 0xa940                                        |     fcn_0000a940 ();
    0x00018010 ldr r3, [pc, 0x32c]                               |     r3 = *(0x18340);
    0x00018012 str r0, [r4, 4]                                   |     *((r4 + 4)) = r0;
    0x00018014 str r5, [r4, 8]                                   |     *((r4 + 8)) = r5;
    0x00018016 ldr r1, [r6, r3]                                  |     r1 = *((r6 + r3));
    0x00018018 ldr r3, [pc, 0x328]                               |     r3 = *(0x18344);
    0x0001801a ldr r2, [pc, 0x32c]                               |     
    0x0001801c ldr r0, [r6, r3]                                  |     r0 = *((r6 + r3));
    0x0001801e ldr r3, [pc, 0x32c]                               |     
    0x00018020 add r2, pc                                        |     r2 = 0x3036e;
    0x00018022 add r3, pc                                        |     r3 = 0x30374;
                                                                 | label_43:
    0x00018024 blx 0xa6b8                                        |     fcn_0000a6b8 ();
    0x00018028 str r0, [r4, 0xc]                                 |     *((r4 + 0xc)) = r0;
    0x0001802a str r4, [r7, 8]                                   |     *((r7 + 8)) = r4;
    0x0001802c bl 0x10a34                                        |     fcn_00010a34 ();
    0x00018030 ldr r3, [pc, 0x31c]                               |     r3 = *(0x18350);
    0x00018032 mov sl, r0                                        |     sl = r0;
    0x00018034 ldr r3, [r6, r3]                                  |     r3 = *((r6 + r3));
    0x00018036 mov r0, r3                                        |     r0 = r3;
    0x00018038 str r3, [sp, 0x14]                                |     var_14h = r3;
    0x0001803a blx 0xa778                                        |     fcn_0000a778 ();
    0x0001803e ldr.w r2, [sl, 4]                                 |     r2 = *((sl + 4));
    0x00018042 mov r4, r0                                        |     r4 = r0;
                                                                 |     if (r2 == 0) {
    0x00018044 cbz r2, 0x18098                                   |         goto label_44;
                                                                 |     }
                                                                 | label_13:
    0x00018046 ldr.w r3, [sl]                                    |     r3 = *(sl);
    0x0001804a ldr.w r7, [r3, r8, lsl 2]                         |     offset_0 = r8 << 2;
                                                                 |     r7 = *((r3 + offset_0));
    0x0001804e ldr r3, [r7, 0x1c]                                |     r3 = *((r7 + 0x1c));
    0x00018050 ldr r1, [r3, 4]                                   |     r1 = *((r3 + 4));
                                                                 |     if (r1 == 0) {
    0x00018052 cbz r1, 0x18090                                   |         goto label_45;
                                                                 |     }
    0x00018054 movs r5, 0                                        |     r5 = 0;
    0x00018056 b 0x18062                                         |     
                                                                 |     while (r0 != 0) {
    0x00018058 ldr r3, [r7, 0x1c]                                |         r3 = *((r7 + 0x1c));
    0x0001805a adds r5, 1                                        |         r5++;
    0x0001805c ldr r2, [r3, 4]                                   |         r2 = *((r3 + 4));
    0x0001805e cmp r5, r2                                        |         
                                                                 |         if (r5 >= r2) {
    0x00018060 bhs 0x1808c                                       |             goto label_46;
                                                                 |         }
                                                                 | label_12:
    0x00018062 ldr r3, [r3]                                      |         r3 = *(r3);
    0x00018064 mov r1, r4                                        |         r1 = r4;
    0x00018066 ldr.w r6, [r3, r5, lsl 2]                         |         offset_1 = r5 << 2;
                                                                 |         r6 = *((r3 + offset_1));
    0x0001806a mov r0, r6                                        |         r0 = r6;
    0x0001806c bl 0x1c03c                                        |         r0 = fcn_0001c03c (r0, r1);
    0x00018070 cmp r0, 0                                         |         
    0x00018072 bne 0x18058                                       |         
                                                                 |     }
    0x00018074 mov r0, r6                                        |     r0 = r6;
    0x00018076 adds r5, 1                                        |     r5++;
    0x00018078 blx 0xa6dc                                        |     r0 = fcn_0000a6dc ();
    0x0001807c mov r1, r0                                        |     r1 = r0;
    0x0001807e mov r0, r4                                        |     r0 = r4;
    0x00018080 blx 0xadfc                                        |     fcn_0000adfc ();
    0x00018084 ldr r3, [r7, 0x1c]                                |     r3 = *((r7 + 0x1c));
    0x00018086 ldr r2, [r3, 4]                                   |     r2 = *((r3 + 4));
    0x00018088 cmp r5, r2                                        |     
                                                                 |     if (r5 <= r2) {
    0x0001808a blo 0x18062                                       |         goto label_12;
                                                                 |     }
                                                                 | label_46:
    0x0001808c ldr.w r2, [sl, 4]                                 |     r2 = *((sl + 4));
                                                                 | label_45:
    0x00018090 add.w r8, r8, 1                                   |     r8++;
    0x00018094 cmp r8, r2                                        |     
                                                                 |     if (r8 <= r2) {
    0x00018096 blo 0x18046                                       |         goto label_13;
                                                                 |     }
                                                                 | label_44:
    0x00018098 ldr r3, [pc, 0x2b8]                               |     
    0x0001809a add r3, pc                                        |     r3 = 0x303f2;
    0x0001809c ldr r6, [r3, 8]                                   |     r6 = *(0x303fa);
    0x0001809e cmp r6, 0                                         |     
                                                                 |     if (r6 == 0) {
    0x000180a0 beq.w 0x182e6                                     |         goto label_47;
                                                                 |     }
    0x000180a4 cmp r4, 0                                         |     
                                                                 |     if (r4 == 0) {
    0x000180a6 beq.w 0x18302                                     |         goto label_48;
                                                                 |     }
    0x000180aa ldr r3, [r4, 4]                                   |     r3 = *((r4 + 4));
    0x000180ac cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x000180ae beq 0x18186                                       |         goto label_49;
                                                                 |     }
    0x000180b0 ldr.w r8, [pc, 0x2a4]                             |     
    0x000180b4 mov.w fp, 0                                       |     
    0x000180b8 add.w sb, sp, 0x28                                |     sb += var_28h;
    0x000180bc add r8, pc                                        |     r8 = 0x30418;
    0x000180be add.w r3, r8, 0x18c                               |     r3 = r8 + 0x18c;
    0x000180c2 strd r3, sl, [sp, 0xc]                            |     __asm ("strd r3, sl, [var_ch]");
                                                                 |     do {
    0x000180c6 ldr r2, [r4]                                      |         r2 = *(r4);
    0x000180c8 add.w r5, r8, 0x14                                |         r5 = r8 + 0x14;
    0x000180cc ldr r0, [sp, 0xc]                                 |         r0 = var_ch;
    0x000180ce ldr.w r7, [r2, fp, lsl 2]                         |         offset_2 = fp << 2;
                                                                 |         r7 = *((r2 + offset_2));
    0x000180d2 add.w fp, fp, 1                                   |         
    0x000180d6 bl 0x119a0                                        |         fcn_000119a0 (r0);
    0x000180da mov r1, r5                                        |         r1 = r5;
    0x000180dc mov sl, r0                                        |         sl = r0;
    0x000180de mov r2, r7                                        |         r2 = r7;
    0x000180e0 bl 0x11a54                                        |         fcn_00011a54 (r0, r1);
    0x000180e4 ldr r1, [pc, 0x274]                               |         
    0x000180e6 mov r2, r6                                        |         r2 = r6;
    0x000180e8 mov r0, sl                                        |         r0 = sl;
    0x000180ea add r1, pc                                        |         r1 = 0x3044a;
    0x000180ec bl 0x11ad8                                        |         fcn_00011ad8 (r0, r1, r2);
    0x000180f0 movs r2, 1                                        |         r2 = 1;
    0x000180f2 mov r1, sb                                        |         r1 = sb;
    0x000180f4 str r0, [sp, 0x28]                                |         var_28h = r0;
    0x000180f6 ldr r0, [r6, 4]                                   |         r0 = *((r6 + 4));
    0x000180f8 blx 0xa748                                        |         fcn_0000a748 ();
    0x000180fc add.w r0, r8, 0x1d0                               |         r0 = r8 + 0x1d0;
    0x00018100 bl 0x119a0                                        |         fcn_000119a0 (r0);
    0x00018104 mov r1, r5                                        |         r1 = r5;
    0x00018106 mov r2, r7                                        |         r2 = r7;
    0x00018108 mov sl, r0                                        |         sl = r0;
    0x0001810a bl 0x11a54                                        |         fcn_00011a54 (r0, r1);
    0x0001810e ldr r1, [pc, 0x250]                               |         
    0x00018110 movs r2, 0                                        |         r2 = 0;
    0x00018112 mov r0, sl                                        |         r0 = sl;
    0x00018114 add r1, pc                                        |         r1 = 0x3047a;
    0x00018116 bl 0x11ad8                                        |         fcn_00011ad8 (r0, r1, r2);
    0x0001811a movs r2, 1                                        |         r2 = 1;
    0x0001811c mov r1, sb                                        |         r1 = sb;
    0x0001811e str r0, [sp, 0x28]                                |         var_28h = r0;
    0x00018120 ldr r0, [r6, 4]                                   |         r0 = *((r6 + 4));
    0x00018122 blx 0xa748                                        |         fcn_0000a748 ();
    0x00018126 add.w r0, r8, 0x138                               |         r0 = r8 + 0x138;
    0x0001812a bl 0x119a0                                        |         fcn_000119a0 (r0);
    0x0001812e mov r1, r5                                        |         r1 = r5;
    0x00018130 mov r2, r7                                        |         r2 = r7;
    0x00018132 mov sl, r0                                        |         sl = r0;
    0x00018134 bl 0x11a54                                        |         fcn_00011a54 (r0, r1);
    0x00018138 ldr r1, [pc, 0x228]                               |         
    0x0001813a mov r2, r6                                        |         r2 = r6;
    0x0001813c mov r0, sl                                        |         r0 = sl;
    0x0001813e add r1, pc                                        |         r1 = 0x304a6;
    0x00018140 bl 0x11ad8                                        |         fcn_00011ad8 (r0, r1, r2);
    0x00018144 movs r2, 1                                        |         r2 = 1;
    0x00018146 mov r1, sb                                        |         r1 = sb;
    0x00018148 str r0, [sp, 0x28]                                |         var_28h = r0;
    0x0001814a ldr r0, [r6, 4]                                   |         r0 = *((r6 + 4));
    0x0001814c blx 0xa748                                        |         fcn_0000a748 ();
    0x00018150 add.w r0, r8, 0x1dc                               |         r0 = r8 + 0x1dc;
    0x00018154 bl 0x119a0                                        |         fcn_000119a0 (r0);
    0x00018158 mov r1, r5                                        |         r1 = r5;
    0x0001815a mov r2, r7                                        |         r2 = r7;
    0x0001815c mov sl, r0                                        |         sl = r0;
    0x0001815e bl 0x11a54                                        |         fcn_00011a54 (r0, r1);
    0x00018162 ldr r1, [pc, 0x204]                               |         
    0x00018164 movs r2, 0                                        |         r2 = 0;
    0x00018166 mov r0, sl                                        |         r0 = sl;
    0x00018168 add r1, pc                                        |         r1 = 0x304d6;
    0x0001816a bl 0x11ad8                                        |         fcn_00011ad8 (r0, r1, r2);
    0x0001816e movs r2, 1                                        |         r2 = 1;
    0x00018170 mov r5, r0                                        |         r5 = r0;
    0x00018172 mov r1, sb                                        |         r1 = sb;
    0x00018174 ldr r0, [r6, 4]                                   |         r0 = *((r6 + 4));
    0x00018176 str r5, [sp, 0x28]                                |         var_28h = r5;
    0x00018178 blx 0xa748                                        |         fcn_0000a748 ();
    0x0001817c ldr r2, [r4, 4]                                   |         r2 = *((r4 + 4));
    0x0001817e cmp fp, r2                                        |         
    0x00018180 blo 0x180c6                                       |         
                                                                 |     } while (fp <= r2);
    0x00018182 ldr.w sl, [sp, 0x10]                              |     sl = var_10h_2;
                                                                 | label_49:
    0x00018186 movs r1, 1                                        |     r1 = 1;
    0x00018188 mov r0, r4                                        |     r0 = r4;
    0x0001818a str r4, [r6]                                      |     *(r6) = r4;
    0x0001818c blx 0xaf30                                        |     strdup (r0);
    0x00018190 ldr r0, [sp, 0x14]                                |     r0 = var_14h;
    0x00018192 blx 0xa778                                        |     fcn_0000a778 ();
    0x00018196 ldr.w r3, [sl, 4]                                 |     r3 = *((sl + 4));
    0x0001819a mov fp, r0                                        |     
                                                                 |     if (r3 == 0) {
    0x0001819c cbz r3, 0x181d8                                   |         goto label_50;
                                                                 |     }
    0x0001819e movs r4, 0                                        |     r4 = 0;
    0x000181a0 b 0x181ac                                         |     
                                                                 |     while (r0 != 0) {
    0x000181a2 ldr.w r3, [sl, 4]                                 |         r3 = *((sl + 4));
    0x000181a6 adds r4, 1                                        |         r4++;
    0x000181a8 cmp r4, r3                                        |         
                                                                 |         if (r4 >= r3) {
    0x000181aa bhs 0x181d8                                       |             goto label_50;
                                                                 |         }
                                                                 | label_14:
    0x000181ac ldr.w r3, [sl]                                    |         r3 = *(sl);
    0x000181b0 mov r1, fp                                        |         r1 = fp;
    0x000181b2 ldr.w r5, [r3, r4, lsl 2]                         |         offset_3 = r4 << 2;
                                                                 |         r5 = *((r3 + offset_3));
    0x000181b6 ldr r0, [r5, 0x10]                                |         r0 = *((r5 + 0x10));
    0x000181b8 bl 0x1c03c                                        |         r0 = fcn_0001c03c (r0, r1);
    0x000181bc cmp r0, 0                                         |         
    0x000181be bne 0x181a2                                       |         
                                                                 |     }
    0x000181c0 ldr r0, [r5, 0x10]                                |     r0 = *((r5 + 0x10));
    0x000181c2 adds r4, 1                                        |     r4++;
    0x000181c4 blx 0xa6dc                                        |     r0 = fcn_0000a6dc ();
    0x000181c8 mov r1, r0                                        |     r1 = r0;
    0x000181ca mov r0, fp                                        |     r0 = fp;
    0x000181cc blx 0xadfc                                        |     fcn_0000adfc ();
    0x000181d0 ldr.w r3, [sl, 4]                                 |     r3 = *((sl + 4));
    0x000181d4 cmp r4, r3                                        |     
                                                                 |     if (r4 <= r3) {
    0x000181d6 blo 0x181ac                                       |         goto label_14;
                                                                 |     }
                                                                 | label_50:
    0x000181d8 ldr.w r3, [fp, 4]                                 |     r3 = *(arg_4h);
    0x000181dc cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x000181de beq 0x182aa                                       |         goto label_51;
                                                                 |     }
    0x000181e0 ldr r3, [pc, 0x188]                               |     
    0x000181e2 ldr r2, [pc, 0x18c]                               |     
    0x000181e4 add r3, pc                                        |     r3 = 0x30554;
    0x000181e6 str r3, [sp, 0x18]                                |     var_18h = r3;
    0x000181e8 add r2, pc                                        |     r2 = 0x3055e;
    0x000181ea ldr r3, [pc, 0x188]                               |     
    0x000181ec strd r2, sl, [sp, 0x20]                           |     __asm ("strd r2, sl, [var_24h]");
    0x000181f0 add r3, pc                                        |     r3 = 0x3056a;
    0x000181f2 str r3, [sp, 0x1c]                                |     var_1ch = r3;
    0x000181f4 movs r3, 0                                        |     r3 = 0;
    0x000181f6 mov sb, r3                                        |     sb = r3;
                                                                 | label_17:
    0x000181f8 ldr.w r3, [fp]                                    |     r3 = *(fp);
    0x000181fc ldr.w r8, [r3, sb, lsl 2]                         |     offset_4 = sb << 2;
                                                                 |     r8 = *((r3 + offset_4));
    0x00018200 mov r0, r8                                        |     r0 = r8;
    0x00018202 blx 0xa6dc                                        |     fcn_0000a6dc ();
    0x00018206 ldr r2, [sp, 0x18]                                |     r2 = var_18h;
    0x00018208 mov r1, r0                                        |     r1 = r0;
    0x0001820a mov r0, r8                                        |     r0 = r8;
    0x0001820c blx 0xa514                                        |     fcn_0000a514 ();
    0x00018210 ldr r3, [sp, 0x1c]                                |     r3 = var_1ch;
    0x00018212 mov r0, r8                                        |     r0 = r8;
    0x00018214 ldr r3, [r3, 8]                                   |     r3 = *((r3 + 8));
    0x00018216 ldr r3, [r3, 0xc]                                 |     r3 = *((r3 + 0xc));
    0x00018218 str r3, [sp, 0xc]                                 |     var_ch = r3;
    0x0001821a blx 0xa6dc                                        |     fcn_0000a6dc ();
    0x0001821e str r0, [sp, 0x10]                                |     var_10h_2 = r0;
    0x00018220 bl 0x10a34                                        |     r0 = fcn_00010a34 ();
    0x00018224 mov r7, r0                                        |     r7 = r0;
    0x00018226 ldr r0, [sp, 0x14]                                |     r0 = var_14h;
    0x00018228 blx 0xa778                                        |     fcn_0000a778 ();
    0x0001822c ldr r3, [r7, 4]                                   |     r3 = *((r7 + 4));
    0x0001822e mov r6, r0                                        |     r6 = r0;
                                                                 |     if (r3 == 0) {
    0x00018230 cbz r3, 0x18284                                   |         goto label_52;
                                                                 |     }
    0x00018232 movs r5, 0                                        |     r5 = 0;
    0x00018234 mov sl, r5                                        |     sl = r5;
    0x00018236 b 0x18242                                         |     
                                                                 |     while (r0 != 0) {
                                                                 | label_15:
    0x00018238 ldr r3, [r7, 4]                                   |         r3 = *((r7 + 4));
    0x0001823a add.w sl, sl, 1                                   |         sl++;
    0x0001823e cmp sl, r3                                        |         
                                                                 |         if (sl >= r3) {
    0x00018240 bhs 0x18284                                       |             goto label_52;
                                                                 |         }
                                                                 | label_16:
    0x00018242 ldr r3, [r7]                                      |         r3 = *(r7);
    0x00018244 mov r0, r8                                        |         r0 = r8;
    0x00018246 ldr.w r5, [r3, sl, lsl 2]                         |         offset_5 = sl << 2;
                                                                 |         r5 = *((r3 + offset_5));
    0x0001824a ldr r1, [r5, 0x10]                                |         r1 = *((r5 + 0x10));
    0x0001824c blx 0xafc0                                        |         r0 = fcn_0000afc0 ();
    0x00018250 cmp r0, 0                                         |         
    0x00018252 bne 0x18238                                       |         
                                                                 |     }
    0x00018254 ldr r3, [r5, 0x1c]                                |     r3 = *((r5 + 0x1c));
    0x00018256 ldr r2, [r3, 4]                                   |     r2 = *((r3 + 4));
    0x00018258 cmp r2, 0                                         |     
                                                                 |     if (r2 == 0) {
    0x0001825a beq 0x18238                                       |         goto label_15;
                                                                 |     }
    0x0001825c mov r4, r0                                        |     r4 = r0;
                                                                 |     do {
    0x0001825e ldr r3, [r3]                                      |         r3 = *(r3);
    0x00018260 ldr.w r0, [r3, r4, lsl 2]                         |         offset_6 = r4 << 2;
                                                                 |         r0 = *((r3 + offset_6));
    0x00018264 adds r4, 1                                        |         r4++;
    0x00018266 blx 0xa6dc                                        |         r0 = fcn_0000a6dc ();
    0x0001826a mov r1, r0                                        |         r1 = r0;
    0x0001826c mov r0, r6                                        |         r0 = r6;
    0x0001826e blx 0xadfc                                        |         fcn_0000adfc ();
    0x00018272 ldr r3, [r5, 0x1c]                                |         r3 = *((r5 + 0x1c));
    0x00018274 ldr r2, [r3, 4]                                   |         r2 = *((r3 + 4));
    0x00018276 cmp r4, r2                                        |         
    0x00018278 blo 0x1825e                                       |         
                                                                 |     } while (r4 <= r2);
    0x0001827a ldr r3, [r7, 4]                                   |     r3 = *((r7 + 4));
    0x0001827c add.w sl, sl, 1                                   |     sl++;
    0x00018280 cmp sl, r3                                        |     
                                                                 |     if (sl <= r3) {
    0x00018282 blo 0x18242                                       |         goto label_16;
                                                                 |     }
                                                                 | label_52:
    0x00018284 ldr r0, [r6, 4]                                   |     r0 = *((r6 + 4));
                                                                 |     if (r0 == 0) {
    0x00018286 cbz r0, 0x182d4                                   |         goto label_53;
                                                                 |     }
                                                                 | label_18:
    0x00018288 movs r1, 1                                        |     r1 = 1;
    0x0001828a mov r0, r7                                        |     r0 = r7;
    0x0001828c blx 0xaf30                                        |     strdup (r0);
    0x00018290 ldrd r0, r1, [sp, 0xc]                            |     __asm ("ldrd r0, r1, [var_ch]");
    0x00018294 mov r2, r6                                        |     r2 = r6;
    0x00018296 blx 0xa6e8                                        |     fcn_0000a6e8 ();
    0x0001829a ldr.w r3, [fp, 4]                                 |     r3 = *(arg_4h);
    0x0001829e add.w sb, sb, 1                                   |     sb++;
    0x000182a2 cmp r3, sb                                        |     
                                                                 |     if (r3 > sb) {
    0x000182a4 bhi 0x181f8                                       |         goto label_17;
                                                                 |     }
    0x000182a6 ldr.w sl, [sp, 0x24]                              |     sl = var_24h;
                                                                 | label_51:
    0x000182aa movs r1, 1                                        |     r1 = 1;
    0x000182ac mov r0, fp                                        |     r0 = fp;
    0x000182ae blx 0xaf30                                        |     strdup (r0);
    0x000182b2 ldr r2, [pc, 0xc4]                                |     
    0x000182b4 ldr r3, [pc, 0x74]                                |     r3 = *(0x1832c);
    0x000182b6 add r2, pc                                        |     r2 = 0x30634;
    0x000182b8 ldr r3, [r2, r3]                                  |     r3 = *(0x30634);
    0x000182ba ldr r2, [r3]                                      |     r2 = *(0x30634);
    0x000182bc ldr r3, [sp, 0x2c]                                |     r3 = var_2ch_2;
    0x000182be eors r2, r3                                       |     r2 ^= r3;
    0x000182c0 mov.w r3, 0                                       |     r3 = 0;
                                                                 |     if (r2 == r3) {
    0x000182c4 bne 0x1831e                                       |         
    0x000182c6 movs r1, 1                                        |         r1 = 1;
    0x000182c8 mov r0, sl                                        |         r0 = sl;
    0x000182ca add sp, 0x34                                      |         
    0x000182cc pop.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}        |         
    0x000182d0 b.w 0xaf2c                                        |         void (*0xaf2c)() ();
                                                                 | label_53:
    0x000182d4 ldr r2, [pc, 0xa4]                                |         
    0x000182d6 movs r1, 0x10                                     |         r1 = 0x10;
    0x000182d8 ldr r3, [sp, 0x20]                                |         r3 = var_20h;
    0x000182da str.w r8, [sp]                                    |         __asm ("str.w r8, [sp]");
    0x000182de add r2, pc                                        |         r2 = 0x3065e;
    0x000182e0 blx 0xa584                                        |         fcn_0000a584 ();
    0x000182e4 b 0x18288                                         |         goto label_18;
                                                                 | label_47:
    0x000182e6 ldr r3, [pc, 0x98]                                |         
    0x000182e8 movw r2, 0x5fe                                    |         r2 = 0x5fe;
    0x000182ec ldr r4, [pc, 0x94]                                |         
    0x000182ee mov r0, r6                                        |         r0 = r6;
    0x000182f0 ldr r1, [pc, 0x94]                                |         
    0x000182f2 add r3, pc                                        |         
    0x000182f4 add r4, pc                                        |         r4 = 0x3067c;
    0x000182f6 add.w r3, r3, 0x1c0                               |         r3 = 0x30838;
    0x000182fa add r1, pc                                        |         r1 = 0x30686;
    0x000182fc str r4, [sp]                                      |         *(sp) = r4;
    0x000182fe blx 0xae74                                        |         fcn_0000ae74 ();
                                                                 | label_48:
    0x00018302 ldr r3, [pc, 0x88]                                |         
    0x00018304 movw r2, 0x5ff                                    |         r2 = 0x5ff;
    0x00018308 ldr r5, [pc, 0x84]                                |         
    0x0001830a mov r0, r4                                        |         r0 = r4;
    0x0001830c ldr r1, [pc, 0x84]                                |         
    0x0001830e add r3, pc                                        |         
    0x00018310 add r5, pc                                        |         r5 = 0x306a4;
    0x00018312 add.w r3, r3, 0x1c0                               |         r3 = 0x30860;
    0x00018316 add r1, pc                                        |         r1 = 0x306ae;
    0x00018318 str r5, [sp]                                      |         *(sp) = r5;
    0x0001831a blx 0xae74                                        |         fcn_0000ae74 ();
                                                                 |     }
    0x0001831e blx 0xaa28                                        |     fcn_0000aa28 ();
    0x00018322 nop                                               |     
    0x00018324 ldrsh r4, [r6, r7]                                |     r4 = *((r6 + r7));
    0x00018326 movs r5, r0                                       |     r5 = r0;
    0x00018328 ldr r3, [pc, 0x70]                                |     r3 = *(0x1839c);
    0x0001832a movs r5, r0                                       |     r5 = r0;
    0x0001832c lsls r0, r0, 0x11                                 |     r0 <<= 0x11;
    0x0001832e movs r0, r0                                       |     
    0x00018330 ldr r3, [pc, 0x58]                                |     r3 = *(0x1838c);
    0x00018332 movs r5, r0                                       |     r5 = r0;
                                                                 |     if (r5 > r0) {
    0x00018334 blo 0x18364                                       |         
    0x00018336 movs r2, r0                                       |         r2 = r0;
                                                                 |         if (r2 >= r0) {
    0x00018338 bhs 0x18414                                       |             goto label_54;
                                                                 |         }
    0x0001833a movs r2, r0                                       |         r2 = r0;
    0x0001833c ldm r6!, {r1, r3, r5, r7}                         |         r1 = *(r6!);
                                                                 |         r3 = *((r6! + 4));
                                                                 |         r5 = *((r6! + 8));
                                                                 |         r7 = *((r6! + 12));
    0x0001833e movs r2, r0                                       |         r2 = r0;
    0x00018340 lsls r4, r0, 0x11                                 |         r4 = r0 << 0x11;
    0x00018342 movs r0, r0                                       |         
    0x00018344 lsls r4, r2, 0x12                                 |         r4 = r2 << 0x12;
    0x00018346 movs r0, r0                                       |         
    0x00018348 ldc p15, c15, [sb, 0x3fc]!                        |         __asm ("ldc p15, c15, aav.0x000000ff!");
    0x0001834c b 0x17f56                                         |         goto label_19;
                                                                 |     }
    0x00018364 bl 0xffee4366                                     |     void (*0xffee4366)(uint32_t) (r0);
    0x00018368 b 0x17e46                                         |     goto label_20;
                                                                 | label_54:
    0x00018414 ldr r3, [pc, 0xfc]                                |     
    0x00018416 add r2, pc                                        |     r2 += pc;
    0x00018418 ldr r7, [sp, 0x60]                                |     r7 = var_60h;
    0x0001841a ldr r3, [r2, r3]                                  |     r3 = *((r2 + r3));
    0x0001841c ldr r2, [pc, 0xf8]                                |     
    0x0001841e ldr r3, [r3]                                      |     r3 = *(0x18514);
    0x00018420 str r3, [sp, 0x3c]                                |     var_3ch = r3;
    0x00018422 mov.w r3, 0                                       |     r3 = 0;
    0x00018426 add r2, pc                                        |     r2 = 0x30942;
    0x00018428 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0001842a beq 0x1849e                                       |         goto label_55;
                                                                 |     }
    0x0001842c mov r4, r1                                        |     r4 = r1;
    0x0001842e cmp r1, 0                                         |     
                                                                 |     if (r1 == 0) {
    0x00018430 beq 0x184b8                                       |         goto label_56;
                                                                 |     }
    0x00018432 cmp r5, 0                                         |     
                                                                 |     if (r5 == 0) {
    0x00018434 beq 0x184d4                                       |         goto label_57;
                                                                 |     }
    0x00018436 cmp r7, 0                                         |     
                                                                 |     if (r7 == 0) {
    0x00018438 beq 0x184f0                                       |         goto label_58;
                                                                 |     }
    0x0001843a ldr r3, [pc, 0xe0]                                |     r3 = *(0x1851e);
    0x0001843c mov r6, r0                                        |     r6 = r0;
    0x0001843e ldr.w sb, [r2, r3]                                |     sb = *((r2 + r3));
    0x00018442 mov r0, sb                                        |     r0 = sb;
    0x00018444 blx 0xa9f8                                        |     fcn_0000a9f8 ();
    0x00018448 mov r0, r4                                        |     r0 = r4;
    0x0001844a movs r4, 4                                        |     r4 = 4;
    0x0001844c bl 0x101a8                                        |     fcn_000101a8 (r0);
    0x0001844e cdp2 p9, 0xa, c11, c12, c0, 4                     |     __asm ("cdp2 p9, 0xa, c11, c12, c0, 4");
    0x00018450 cbnz r0, 0x18474                                  |     
                                                                 |     while (1) {
    0x00018452 mov r0, sb                                        |         r0 = sb;
    0x00018454 blx 0xaab8                                        |         fcn_0000aab8 ();
    0x00018458 ldr r2, [pc, 0xc4]                                |         
    0x0001845a ldr r3, [pc, 0xb8]                                |         r3 = *(0x18516);
    0x0001845c add r2, pc                                        |         r2 = 0x30980;
    0x0001845e ldr r3, [r2, r3]                                  |         r3 = *(0x30980);
    0x00018460 ldr r2, [r3]                                      |         r2 = *(0x30980);
    0x00018462 ldr r3, [sp, 0x3c]                                |         r3 = var_3ch;
    0x00018464 eors r2, r3                                       |         r2 ^= r3;
    0x00018466 mov.w r3, 0                                       |         r3 = 0;
                                                                 |         if (r2 != r3) {
    0x0001846a bne 0x1850c                                       |             goto label_59;
                                                                 |         }
    0x0001846c mov r0, r4                                        |         r0 = r4;
    0x0001846e add sp, 0x44                                      |         
    0x00018470 pop.w {r4, r5, r6, r7, r8, sb, pc}                |         
    0x00018474 add r3, sp, 0xc                                   |         r3 += var_ch;
    0x00018476 movs r2, 0x30                                     |         r2 = 0x30;
    0x00018478 movs r1, 0                                        |         r1 = 0;
    0x0001847a mov r0, r3                                        |         r0 = r3;
    0x0001847c blx 0xa6f4                                        |         fcn_0000a6f4 ();
    0x00018480 movs r4, 0                                        |         r4 = 0;
    0x00018482 str r0, [sp, 4]                                   |         var_4h = r0;
    0x00018484 mov r3, r8                                        |         r3 = r8;
    0x00018486 add r0, sp, 8                                     |         r0 += var_8h_2;
    0x00018488 mov r2, r5                                        |         r2 = r5;
    0x0001848a mov r1, r6                                        |         r1 = r6;
    0x0001848c str r7, [sp]                                      |         *(sp) = r7;
    0x0001848e str r4, [sp, 8]                                   |         var_8h_2 = r4;
    0x00018490 bl 0x14aac                                        |         fcn_00014aac (r0, r1, r2, r3, r4, r5);
    0x00018494 ldr r0, [sp, 8]                                   |         r0 = var_8h_2;
    0x00018496 ldr r4, [sp, 0x38]                                |         r4 = var_38h;
    0x00018498 bl 0x164f4                                        |         fcn_000164f4 (r0, r1, r2, r3, r4, r5, r6);
    0x0001849c b 0x18452                                         |         
                                                                 |     }
                                                                 | label_55:
    0x0001849e ldr r3, [pc, 0x84]                                |     
    0x000184a0 movw r2, 0x69a                                    |     r2 = 0x69a;
    0x000184a4 ldr r4, [pc, 0x80]                                |     
    0x000184a6 ldr r1, [pc, 0x84]                                |     
    0x000184a8 add r3, pc                                        |     
    0x000184aa add r4, pc                                        |     r4 = 0x309d6;
    0x000184ac add.w r3, r3, 0x20c                               |     r3 = 0x30bde;
    0x000184b0 add r1, pc                                        |     r1 = 0x309e2;
    0x000184b2 str r4, [sp]                                      |     *(sp) = r4;
    0x000184b4 blx 0xae74                                        |     fcn_0000ae74 ();
                                                                 | label_56:
    0x000184b8 ldr r3, [pc, 0x74]                                |     
    0x000184ba movw r2, 0x69b                                    |     r2 = 0x69b;
    0x000184be ldr r5, [pc, 0x74]                                |     
    0x000184c0 mov r0, r4                                        |     r0 = r4;
    0x000184c2 ldr r1, [pc, 0x74]                                |     
    0x000184c4 add r3, pc                                        |     
    0x000184c6 add r5, pc                                        |     r5 = 0x30a00;
    0x000184c8 add.w r3, r3, 0x20c                               |     r3 = 0x30c04;
    0x000184cc add r1, pc                                        |     r1 = 0x30a0a;
    0x000184ce str r5, [sp]                                      |     *(sp) = r5;
    0x000184d0 blx 0xae74                                        |     fcn_0000ae74 ();
                                                                 | label_57:
    0x000184d4 ldr r3, [pc, 0x64]                                |     
    0x000184d6 movw r2, 0x69c                                    |     r2 = 0x69c;
    0x000184da ldr r4, [pc, 0x64]                                |     
    0x000184dc mov r0, r5                                        |     r0 = r5;
    0x000184de ldr r1, [pc, 0x64]                                |     
    0x000184e0 add r3, pc                                        |     
    0x000184e2 add r4, pc                                        |     r4 = 0x30a28;
    0x000184e4 add.w r3, r3, 0x20c                               |     r3 = 0x30c2c;
    0x000184e8 add r1, pc                                        |     r1 = 0x30a32;
    0x000184ea str r4, [sp]                                      |     *(sp) = r4;
    0x000184ec blx 0xae74                                        |     fcn_0000ae74 ();
                                                                 | label_58:
    0x000184f0 ldr r3, [pc, 0x54]                                |     
    0x000184f2 movw r2, 0x69d                                    |     r2 = 0x69d;
    0x000184f6 ldr r4, [pc, 0x54]                                |     
    0x000184f8 mov r0, r7                                        |     r0 = r7;
    0x000184fa ldr r1, [pc, 0x54]                                |     
    0x000184fc add r3, pc                                        |     
    0x000184fe add r4, pc                                        |     r4 = 0x30a50;
    0x00018500 add.w r3, r3, 0x20c                               |     r3 = 0x30c54;
    0x00018504 add r1, pc                                        |     r1 = 0x30a5a;
    0x00018506 str r4, [sp]                                      |     *(sp) = r4;
    0x00018508 blx 0xae74                                        |     fcn_0000ae74 ();
    0x0001850a invalid                                           |     
                                                                 | label_59:
    0x0001850c blx 0xaa28                                        |     fcn_0000aa28 ();
    0x00018510 mov sl, sl                                        |     
    0x00018512 movs r5, r0                                       |     r5 = r0;
    0x00018514 lsls r0, r0, 0x11                                 |     r0 <<= 0x11;
    0x00018516 movs r0, r0                                       |     
    0x00018518 mov sl, r8                                        |     sl = r8;
    0x0001851a movs r5, r0                                       |     r5 = r0;
    0x0001851c lsls r0, r7, 0x11                                 |     r0 = r7 << 0x11;
    0x0001851e movs r0, r0                                       |     
    0x00018520 mov ip, r1                                        |     
    0x00018522 movs r5, r0                                       |     r5 = r0;
    0x00018524 ldm r6, {r3, r4, r6}                              |     r3 = *(r6);
                                                                 |     r4 = *((r6 + 4));
                                                                 |     r6 = *((r6 + 8));
    0x00018526 movs r2, r0                                       |     r2 = r0;
    0x00018528 ittt ls                                           |     
                                                                 |     if (r2 > r0) {
    0x0001852a movls r2, r0                                      |         r2 = r0;
                                                                 |     }
                                                                 |     if (r2 > r0) {
    0x0001852c ldmls r1!, {r2, r3, r5, r6, r7}                   |         r2 = *(r1!);
                                                                 |         r3 = *((r1! + 4));
                                                                 |         r5 = *((r1! + 8));
                                                                 |         r6 = *((r1! + 12));
                                                                 |         r7 = *((r1! + 16));
                                                                 |     }
                                                                 |     if (r2 > r0) {
    0x0001852e movls r2, r0                                      |         r2 = r0;
                                                                 |     }
    0x00018530 ldm r6!, {r2, r3, r4, r5}                         |     r2 = *(r6!);
                                                                 |     r3 = *((r6! + 4));
                                                                 |     r4 = *((r6! + 8));
                                                                 |     r5 = *((r6! + 12));
    0x00018532 movs r2, r0                                       |     r2 = r0;
    0x00018534 ldm r5, {r1, r3, r4, r5, r6, r7}                  |     r1 = *(r5);
                                                                 |     r3 = *((r5 + 4));
                                                                 |     r4 = *((r5 + 8));
                                                                 |     r5 = *((r5 + 12));
                                                                 |     r6 = *((r5 + 16));
                                                                 |     r7 = *((r5 + 20));
    0x00018536 movs r2, r0                                       |     r2 = r0;
    0x00018538 ldm r1!, {r4, r6, r7}                             |     r4 = *(r1!);
                                                                 |     r6 = *((r1! + 4));
                                                                 |     r7 = *((r1! + 8));
    0x0001853a movs r2, r0                                       |     r2 = r0;
    0x0001853c ldm r6!, {r5}                                     |     r5 = *(r6!);
    0x0001853e movs r2, r0                                       |     r2 = r0;
    0x00018540 ldm r2, {r1, r2}                                  |     r1 = *(r2);
                                                                 |     r2 = *((r2 + 4));
    0x00018542 movs r2, r0                                       |     r2 = r0;
    0x00018544 ldm r1!, {r2, r4, r5, r7}                         |     r2 = *(r1!);
                                                                 |     r4 = *((r1! + 4));
                                                                 |     r5 = *((r1! + 8));
                                                                 |     r7 = *((r1! + 12));
    0x00018546 movs r2, r0                                       |     r2 = r0;
    0x00018548 ldm r6!, {r2}                                     |     r2 = *(r6!);
    0x0001854a movs r2, r0                                       |     r2 = r0;
    0x0001854c str r7, [sp, 0xf8]                                |     *(arg_f8h) = r7;
    0x0001854e movs r2, r0                                       |     r2 = r0;
    0x00018550 ldm r1!, {r3, r4, r7}                             |     r3 = *(r1!);
                                                                 |     r4 = *((r1! + 4));
                                                                 |     r7 = *((r1! + 8));
    0x00018552 movs r2, r0                                       |     r2 = r0;
                                                                 | }

[*] Function strcat used 1 times pacsd