[*] Binary protection state of ip.iproute2

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


[*] Function strcat tear down of ip.iproute2

    ; assembly                               | /* r2dec pseudo code output */
                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/ip.iproute2 @ 0x2b948 */
                                             | #include <stdint.h>
                                             |  
    ; (fcn) fcn.0002b948 ()                  | void fcn_0002b948 () {
    0x0002b948 ldr r3, [pc, 0x18]            |     
    0x0002b94a mov.w r2, 0x16c               |     r2 = 0x16c;
    0x0002b94e ldr.w ip, [pc, 0x18]          |     ip = *(0x2b96a);
    0x0002b950 stm r0!, {r3, r4}             |     *(r0!) = r3;
                                             |     *((r0! + 4)) = r4;
    0x0002b952 movs r1, 1                    |     r1 = 1;
    0x0002b954 ldr r0, [pc, 0x14]            |     
    0x0002b956 add r3, pc                    |     
    0x0002b958 ldr.w r3, [r3, ip]            |     
    0x0002b95c add r0, pc                    |     r0 = "linkinfo";
    0x0002b95e ldr r3, [r3]                  |     r3 = *(0x572be);
    0x0002b960 b.w 0x88c0                    |     return void (*0x88c0)() ();
                                             | }
    ; assembly                               | /* r2dec pseudo code output */
                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/ip.iproute2 @ 0x2c1bc */
                                             | #include <stdint.h>
                                             |  
    ; (fcn) fcn.0002c1bc ()                  | void fcn_0002c1bc (int16_t arg4, char * s1) {
                                             |     r3 = arg4;
                                             |     r0 = s1;
    0x0002c1bc push {r4, r5, r6, lr}         |     
    0x0002c1be mov r4, r3                    |     r4 = r3;
    0x0002c1c0 ldr r6, [r0, 4]               |     r6 = *((r0 + 4));
    0x0002c1c2 ldr r1, [pc, 0x3c]            |     
    0x0002c1c4 mov r0, r6                    |     r0 = r6;
    0x0002c1c6 add r1, pc                    |     r1 = 0x583cc;
    0x0002c1c8 blx 0x8668                    |     strcmp (r0, r1);
    0x0002c1cc ldr r2, [pc, 0x34]            |     
    0x0002c1ce mov r5, r0                    |     r5 = r0;
    0x0002c1d0 mov r3, r6                    |     r3 = r6;
    0x0002c1d2 movs r1, 1                    |     r1 = 1;
    0x0002c1d4 mov r0, r4                    |     r0 = r4;
    0x0002c1d6 add r2, pc                    |     r2 = 0x583de;
    0x0002c1d8 blx 0x8be8                    |     fcn_00008be8 ();
    0x0002c1dc cbz r5, 0x2c1f0               |     
                                             |     while (1) {
    0x0002c1de ldr r0, [pc, 0x28]            |         
    0x0002c1e0 mov r3, r4                    |         r3 = r4;
    0x0002c1e2 movs r2, 0xa0                 |         r2 = 0xa0;
    0x0002c1e4 pop.w {r4, r5, r6, lr}        |         
    0x0002c1e8 movs r1, 1                    |         r1 = 1;
    0x0002c1ea add r0, pc                    |         r0 = 0x583f8;
    0x0002c1ec b.w 0x88c0                    |         void (*0x88c0)() ();
    0x0002c1f0 ldr r0, [pc, 0x18]            |         
    0x0002c1f2 mov r3, r4                    |         r3 = r4;
    0x0002c1f4 movs r2, 0x6b                 |         r2 = 0x6b;
    0x0002c1f6 movs r1, 1                    |         r1 = 1;
    0x0002c1f8 add r0, pc                    |         r0 = 0x58408;
    0x0002c1fa blx 0x88c4                    |         fcn_000088c4 ();
    0x0002c1fe b 0x2c1de                     |         
                                             |     }
                                             | }
    ; assembly                               | /* r2dec pseudo code output */
                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/ip.iproute2 @ 0x2d3b8 */
                                             | #include <stdint.h>
                                             |  
    ; (fcn) fcn.0002d3b8 ()                  | void fcn_0002d3b8 () {
    0x0002d3b8 ldr r3, [pc, 0x18]            |     
    0x0002d3ba movw r2, 0x373                |     r2 = 0x373;
    0x0002d3be ldr.w ip, [pc, 0x18]          |     ip = *(0x2d3da);
    0x0002d3c2 movs r1, 1                    |     r1 = 1;
    0x0002d3c4 ldr r0, [pc, 0x14]            |     
    0x0002d3c6 add r3, pc                    |     
    0x0002d3c8 ldr.w r3, [r3, ip]            |     
    0x0002d3cc add r0, pc                    |     r0 = 0x5a7ac;
    0x0002d3ce ldr r3, [r3]                  |     r3 = *(0x5a79e);
    0x0002d3d0 b.w 0x88c0                    |     return void (*0x88c0)() ();
                                             | }
    ; assembly                           | /* r2dec pseudo code output */
                                         | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/ip.iproute2 @ 0x31710 */
                                         | #include <stdint.h>
                                         |  
    ; (fcn) fcn.00031710 ()              | void fcn_00031710 () {
    0x00031710 ldr r3, [pc, 0x18]        |     
    0x00031712 movw r2, 0x282            |     r2 = 0x282;
    0x00031716 ldr.w ip, [pc, 0x18]      |     ip = *(0x31732);
    0x0003171a movs r1, 1                |     r1 = 1;
    0x0003171c ldr r0, [pc, 0x14]        |     
    0x0003171e add r3, pc                |     
    0x00031720 ldr.w r3, [r3, ip]        |     
    0x00031724 add r0, pc                |     r0 = 0x62e5c;
    0x00031726 ldr r3, [r3]              |     r3 = *(0x62e4e);
    0x00031728 b.w 0x88c0                |     return void (*0x88c0)() ();
                                         | }
    ; assembly                               | /* r2dec pseudo code output */
                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/ip.iproute2 @ 0x383c4 */
                                             | #include <stdint.h>
                                             |  
    ; (fcn) fcn.000383c4 ()                  | void fcn_000383c4 () {
    0x000383c4 ldr r3, [pc, 0x18]            |     
    0x000383c6 movw r2, 0x647                |     r2 = 0x647;
    0x000383ca ldr.w ip, [pc, 0x18]          |     ip = *(0x383e6);
    0x000383ce movs r1, 1                    |     r1 = 1;
    0x000383d0 ldr r0, [pc, 0x14]            |     
    0x000383d2 add r3, pc                    |     
    0x000383d4 ldr.w r3, [r3, ip]            |     
    0x000383d8 add r0, pc                    |     r0 = 0x707c4;
    0x000383da ldr r3, [r3]                  |     r3 = *(0x707b6);
    0x000383dc b.w 0x88c0                    |     return void (*0x88c0)() ();
                                             | }
    ; assembly                               | /* r2dec pseudo code output */
                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/ip.iproute2 @ 0x39f9c */
                                             | #include <stdint.h>
                                             |  
    ; (fcn) fcn.00039f9c ()                  | void fcn_00039f9c () {
    0x00039f9c ldr r3, [pc, 0x18]            |     
    0x00039f9e movw r2, 0x5b4                |     r2 = 0x5b4;
    0x00039fa2 ldr.w ip, [pc, 0x18]          |     ip = *(0x39fbe);
    0x00039fa6 movs r1, 1                    |     r1 = 1;
    0x00039fa8 ldr r0, [pc, 0x14]            |     
    0x00039faa add r3, pc                    |     
    0x00039fac ldr.w r3, [r3, ip]            |     
    0x00039fb0 add r0, pc                    |     r0 = 0x73f74;
    0x00039fb2 ldr r3, [r3]                  |     r3 = *(0x73f66);
    0x00039fb4 b.w 0x88c0                    |     return void (*0x88c0)() ();
                                             | }
    ; assembly                               | /* r2dec pseudo code output */
                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/ip.iproute2 @ 0x3b200 */
                                             | #include <stdint.h>
                                             |  
    ; (fcn) fcn.0003b200 ()                  | void fcn_0003b200 () {
    0x0003b200 ldr r3, [pc, 0x18]            |     
    0x0003b202 mov.w r2, 0x264               |     r2 = 0x264;
    0x0003b206 ldr.w ip, [pc, 0x18]          |     ip = *(0x3b222);
    0x0003b20a movs r1, 1                    |     r1 = 1;
    0x0003b20c ldr r0, [pc, 0x14]            |     
    0x0003b20e add r3, pc                    |     
    0x0003b210 ldr.w r3, [r3, ip]            |     
    0x0003b214 add r0, pc                    |     r0 = 0x7643c;
    0x0003b216 ldr r3, [r3]                  |     r3 = *(0x7642e);
    0x0003b218 b.w 0x88c0                    |     return void (*0x88c0)() ();
                                             | }
    ; assembly                               | /* r2dec pseudo code output */
                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/ip.iproute2 @ 0x3c9d4 */
                                             | #include <stdint.h>
                                             |  
    ; (fcn) fcn.0003c9d4 ()                  | void fcn_0003c9d4 () {
    0x0003c9d4 ldr r3, [pc, 0x18]            |     
    0x0003c9d6 movw r2, 0x17d                |     r2 = 0x17d;
    0x0003c9da ldr.w ip, [pc, 0x18]          |     ip = *(0x3c9f6);
    0x0003c9de movs r1, 1                    |     r1 = 1;
    0x0003c9e0 ldr r0, [pc, 0x14]            |     
    0x0003c9e2 add r3, pc                    |     
    0x0003c9e4 ldr.w r3, [r3, ip]            |     
    0x0003c9e8 add r0, pc                    |     r0 = 0x793e4;
    0x0003c9ea ldr r3, [r3]                  |     r3 = *(0x793d6);
    0x0003c9ec b.w 0x88c0                    |     return void (*0x88c0)() ();
                                             | }
    ; assembly                                                       | /* r2dec pseudo code output */
                                                                     | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/ip.iproute2 @ 0x3ca10 */
                                                                     | #include <stdint.h>
                                                                     |  
                                                                     | #define SWAP32(n) ((uint32_t) (((n & 0x000000ff) << 24) | \
                                                                     |                                ((n & 0x0000ff00) <<  8) | \
                                                                     |                                ((n & 0x00ff0000) >>  8) | \
                                                                     |                                ((n & 0xff000000) >> 24)))
                                                                     |  
    ; (fcn) fcn.0003ca10 ()                                          | void fcn_0003ca10 (int16_t arg_2h, int16_t arg_6h, int16_t arg_40h, int16_t arg_44h, int16_t arg_54h, int16_t arg_58h, int16_t arg_6ch, int16_t arg_16ch, int16_t arg_2c0h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
                                                                     |     int16_t var_bp_0h;
                                                                     |     int16_t var_10h_2;
                                                                     |     int16_t var_1ch_2;
                                                                     |     int16_t var_20h_2;
                                                                     |     int32_t var_10h_3;
                                                                     |     int16_t var_40h;
                                                                     |     int32_t var_20h_3;
                                                                     |     int16_t var_4eh;
                                                                     |     int16_t var_50h;
                                                                     |     int16_t var_4eh_2;
                                                                     |     int16_t var_50h_2;
                                                                     |     int16_t var_64h;
                                                                     |     int16_t var_16ch;
                                                                     |     int32_t var_16ch_2;
                                                                     |     int16_t var_0h;
                                                                     |     int32_t var_0h_2;
                                                                     |     int16_t var_8h;
                                                                     |     int16_t var_ch;
                                                                     |     int16_t var_10h;
                                                                     |     int16_t var_14h;
                                                                     |     int16_t var_18h;
                                                                     |     int16_t var_1ch;
                                                                     |     int16_t var_20h;
                                                                     |     int16_t var_24h;
                                                                     |     int16_t var_28h;
                                                                     |     int16_t var_2ch;
                                                                     |     int16_t var_30h;
                                                                     |     int16_t var_34h;
                                                                     |     int16_t var_38h;
                                                                     |     int16_t var_3ch;
                                                                     |     r0 = arg1;
                                                                     |     r1 = arg2;
                                                                     |     r2 = arg3;
                                                                     |     r3 = arg4;
    0x0003ca10 push {r4, r5, r6, lr}                                 |     
    0x0003ca12 mov.w ip, 1                                           |     
    0x0003ca16 ldrd r5, r4, [r0]                                     |     __asm ("ldrd r5, r4, [r0]");
    0x0003ca1a lsl.w ip, ip, r1                                      |     
    0x0003ca1e mov lr, r0                                            |     lr = r0;
    0x0003ca20 and.w r1, r5, ip                                      |     r1 = r5 & ip;
    0x0003ca24 and.w r0, r4, ip, asr 31                              |     r0 = r4 & (ip >> 31);
    0x0003ca28 orrs r1, r0                                           |     r1 |= r0;
                                                                     |     if (r1 == r0) {
    0x0003ca2a bne 0x3ca3c                                           |         
    0x0003ca2c asr.w r6, ip, 0x1f                                    |         r6 = ip >> 0x1f;
    0x0003ca30 orr.w r5, r5, ip                                      |         r5 |= ip;
    0x0003ca34 orrs r4, r6                                           |         r4 |= r6;
    0x0003ca36 strd r5, r4, [lr]                                     |         __asm ("strd r5, r4, [lr]");
    0x0003ca3a pop {r4, r5, r6, pc}                                  |         
                                                                     |     }
    0x0003ca3c mov r1, r3                                            |     r1 = r3;
    0x0003ca3e mov r0, r2                                            |     r0 = r2;
    0x0003ca40 bl 0x48714                                            |     duparg2 ();
    0x0003ca44 push {r4, r5, r6, lr}                                 |     
    0x0003ca46 mov r4, r2                                            |     r4 = r2;
    0x0003ca48 ldr r2, [pc, 0x350]                                   |     
    0x0003ca4a sub sp, 0x20                                          |     
    0x0003ca4c ldr r3, [pc, 0x350]                                   |     r3 = *(0x3cda0);
    0x0003ca4e add r2, pc                                            |     r2 = 0x797ee;
    0x0003ca50 ldr r3, [r2, r3]                                      |     
    0x0003ca52 ldr r3, [r3]                                          |     r3 = *(0x797ee);
    0x0003ca54 str r3, [sp, 0x1c]                                    |     var_1ch = r3;
    0x0003ca56 mov.w r3, 0                                           |     r3 = 0;
    0x0003ca5a cmp r4, 0                                             |     
                                                                     |     if (r4 == 0) {
    0x0003ca5c beq.w 0x3cbc2                                         |         goto label_8;
                                                                     |     }
    0x0003ca60 ldr r3, [r4, 0x18]                                    |     r3 = *((r4 + 0x18));
    0x0003ca62 cmp r3, 0                                             |     
                                                                     |     if (r3 != 0) {
    0x0003ca64 bne.w 0x3cbae                                         |         goto label_29;
                                                                     |     }
    0x0003ca68 ldr r2, [r4, 4]                                       |     r2 = *((r4 + 4));
    0x0003ca6a cmp r2, 0                                             |     
                                                                     |     if (r2 == 0) {
    0x0003ca6c beq.w 0x3cbc2                                         |         goto label_8;
                                                                     |     }
    0x0003ca70 ldrh r3, [r2]                                         |     r3 = *(r2);
    0x0003ca72 subs r3, 4                                            |     r3 -= 4;
    0x0003ca74 cmp r3, 3                                             |     
                                                                     |     if (r3 < 3) {
    0x0003ca76 bls.w 0x3cbc2                                         |         goto label_8;
                                                                     |     }
    0x0003ca7a ldr r3, [pc, 0x328]                                   |     
    0x0003ca7c mov r5, r1                                            |     r5 = r1;
    0x0003ca7e ldr r1, [r2, 4]                                       |     r1 = *((r2 + 4));
    0x0003ca80 movs r0, 4                                            |     r0 = 4;
    0x0003ca82 ldr r2, [pc, 0x324]                                   |     
    0x0003ca84 add r3, pc                                            |     r3 = 0x7982e;
    0x0003ca86 str r1, [sp]                                          |     *(sp) = r1;
    0x0003ca88 movs r1, 6                                            |     r1 = 6;
    0x0003ca8a add r2, pc                                            |     r2 = 0x79838;
    0x0003ca8c bl 0x4cba0                                            |     print_color_uint ();
    0x0003ca90 ldr r3, [r4, 8]                                       |     r3 = *((r4 + 8));
    0x0003ca92 cmp r3, 0                                             |     
                                                                     |     if (r3 == 0) {
    0x0003ca94 beq.w 0x3cbdc                                         |         goto label_30;
                                                                     |     }
    0x0003ca98 ldr r3, [r3, 4]                                       |     r3 = *((r3 + 4));
    0x0003ca9a str r3, [sp, 8]                                       |     var_8h = r3;
    0x0003ca9c cmp r3, 0                                             |     
                                                                     |     if (r3 != 0) {
    0x0003ca9e bne.w 0x3ccce                                         |         goto label_31;
                                                                     |     }
                                                                     |     do {
                                                                     | label_0:
    0x0003caa2 ldr r3, [r4, 0x30]                                    |         r3 = *((r4 + 0x30));
                                                                     |         if (r3 != 0) {
    0x0003caa4 cbz r3, 0x3caae                                       |             
    0x0003caa6 ldrb r3, [r3, 4]                                      |             r3 = *((r3 + 4));
    0x0003caa8 cmp r3, 0                                             |             
                                                                     |             if (r3 != 0) {
    0x0003caaa bne.w 0x3ccb8                                         |                 goto label_32;
                                                                     |             }
                                                                     |         }
    0x0003caae ldr r3, [r4, 0xc]                                     |         r3 = *((r4 + 0xc));
                                                                     |         if (r3 != 0) {
    0x0003cab0 cbz r3, 0x3cada                                       |             
    0x0003cab2 ldrb r6, [r3, 4]                                      |             r6 = *((r3 + 4));
    0x0003cab4 bl 0x4c8c4                                            |             is_json_context ();
    0x0003cab8 cmp r6, 0                                             |             
    0x0003caba it ne                                                 |             
                                                                     |             if (r6 == 0) {
    0x0003cabc orrne r0, r0, 1                                       |                 r0 |= 1;
                                                                     |             }
    0x0003cac0 ands r2, r0, 0xff                                     |             r2 = r0 & 0xff;
                                                                     |             if (r2 == r0) {
    0x0003cac4 beq.w 0x3cd58                                         |                 goto label_33;
                                                                     |             }
    0x0003cac8 ldr r3, [pc, 0x2e0]                                   |             
    0x0003caca movs r1, 6                                            |             r1 = 6;
    0x0003cacc ldr r2, [pc, 0x2e0]                                   |             
    0x0003cace movs r0, 4                                            |             r0 = 4;
    0x0003cad0 str r6, [sp]                                          |             *(sp) = r6;
    0x0003cad2 add r3, pc                                            |             r3 = 0x79882;
    0x0003cad4 add r2, pc                                            |             r2 = 0x79888;
    0x0003cad6 bl 0x4cba0                                            |             print_color_uint ();
                                                                     |         }
                                                                     | label_7:
    0x0003cada ldr r3, [r4, 0x10]                                    |         r3 = *((r4 + 0x10));
                                                                     |         if (r3 != 0) {
    0x0003cadc cbz r3, 0x3cae6                                       |             
    0x0003cade ldrb r6, [r3, 4]                                      |             r6 = *((r3 + 4));
    0x0003cae0 cmp r6, 0                                             |             
                                                                     |             if (r6 != 0) {
    0x0003cae2 bne.w 0x3cc74                                         |                 goto label_34;
                                                                     |             }
                                                                     |         }
                                                                     | label_5:
    0x0003cae6 ldr r3, [r4, 0x34]                                    |         r3 = *((r4 + 0x34));
                                                                     |         if (r3 != 0) {
    0x0003cae8 cbz r3, 0x3cafe                                       |             
    0x0003caea ldrb r3, [r3, 4]                                      |             r3 = *((r3 + 4));
    0x0003caec cmp r3, 0                                             |             
                                                                     |             if (r3 == 0) {
    0x0003caee beq.w 0x3cc5c                                         |                 goto label_35;
                                                                     |             }
    0x0003caf2 cmp r3, 1                                             |             
                                                                     |             if (r3 == 1) {
    0x0003caf4 beq.w 0x3cd40                                         |                 goto label_36;
                                                                     |             }
    0x0003caf8 cmp r3, 2                                             |             
                                                                     |             if (r3 == 2) {
    0x0003cafa beq.w 0x3cd6c                                         |                 goto label_11;
                                                                     |             }
                                                                     |         }
                                                                     | label_4:
    0x0003cafe ldr r3, [r4, 0x2c]                                    |         r3 = *((r4 + 0x2c));
                                                                     |         if (r3 != 0) {
    0x0003cb00 cbz r3, 0x3cb0a                                       |             
    0x0003cb02 ldr r2, [r3, 4]                                       |             r2 = *((r3 + 4));
    0x0003cb04 cmp r2, 0                                             |             
                                                                     |             if (r2 != 0) {
    0x0003cb06 bne.w 0x3cc9e                                         |                 goto label_37;
                                                                     |             }
                                                                     |         }
                                                                     | label_6:
    0x0003cb0a ldr r3, [r4, 0x14]                                    |         r3 = *((r4 + 0x14));
                                                                     |         if (r3 != 0) {
    0x0003cb0c cbz r3, 0x3cb26                                       |             
    0x0003cb0e ldrh r1, [r3, 4]                                      |             r1 = *((r3 + 4));
    0x0003cb10 movs r0, 4                                            |             r0 = 4;
    0x0003cb12 ldr r3, [pc, 0x2a0]                                   |             
    0x0003cb14 ldr r2, [pc, 0x2a0]                                   |             
    0x0003cb16 rev16 r1, r1                                          |             __asm ("rev16 r1, r1");
    0x0003cb18 uxth r1, r1                                           |             r1 = (int16_t) r1;
    0x0003cb1a add r3, pc                                            |             r3 = 0x798d4;
    0x0003cb1c add r2, pc                                            |             r2 = 0x798d8;
    0x0003cb1e str r1, [sp]                                          |             *(sp) = r1;
    0x0003cb20 movs r1, 6                                            |             r1 = 6;
    0x0003cb22 bl 0x4cba0                                            |             print_color_uint ();
                                                                     |         }
    0x0003cb26 ldr r3, [r4, 0x20]                                    |         r3 = *((r4 + 0x20));
                                                                     |         if (r3 != 0) {
    0x0003cb28 cbz r3, 0x3cb4a                                       |             
    0x0003cb2a bl 0x4c8c4                                            |             r0 = is_json_context ();
    0x0003cb2e cmp r0, 0                                             |             
                                                                     |             if (r0 != 0) {
    0x0003cb30 bne.w 0x3cd24                                         |                 goto label_38;
                                                                     |             }
    0x0003cb34 ldr r3, [r4, 0x20]                                    |             r3 = *((r4 + 0x20));
    0x0003cb36 ldrb r3, [r3, 4]                                      |             r3 = *((r3 + 4));
    0x0003cb38 cmp r3, 0                                             |             
                                                                     |             if (r3 == 0) {
    0x0003cb3a beq 0x3cc2c                                           |                 goto label_39;
                                                                     |             }
                                                                     | label_1:
    0x0003cb3c ldr r0, [pc, 0x27c]                                   |             
    0x0003cb3e mov r3, r5                                            |             r3 = r5;
    0x0003cb40 movs r2, 8                                            |             r2 = 8;
    0x0003cb42 movs r1, 1                                            |             r1 = 1;
    0x0003cb44 add r0, pc                                            |             r0 = 0x79904;
    0x0003cb46 blx 0x88c4                                            |             fcn_000088c4 ();
                                                                     |         }
                                                                     | label_10:
    0x0003cb4a ldr r3, [r4, 0x24]                                    |         r3 = *((r4 + 0x24));
                                                                     |         if (r3 != 0) {
    0x0003cb4c cbz r3, 0x3cb6e                                       |             
    0x0003cb4e bl 0x4c8c4                                            |             r0 = is_json_context ();
    0x0003cb52 cmp r0, 0                                             |             
                                                                     |             if (r0 != 0) {
    0x0003cb54 bne.w 0x3cd08                                         |                 goto label_40;
                                                                     |             }
    0x0003cb58 ldr r3, [r4, 0x24]                                    |             r3 = *((r4 + 0x24));
    0x0003cb5a ldrb r3, [r3, 4]                                      |             r3 = *((r3 + 4));
    0x0003cb5c cmp r3, 0                                             |             
                                                                     |             if (r3 == 0) {
    0x0003cb5e beq 0x3cc4c                                           |                 goto label_41;
                                                                     |             }
                                                                     | label_3:
    0x0003cb60 ldr r0, [pc, 0x25c]                                   |             
    0x0003cb62 mov r3, r5                                            |             r3 = r5;
    0x0003cb64 movs r2, 0xf                                          |             r2 = 0xf;
    0x0003cb66 movs r1, 1                                            |             r1 = 1;
    0x0003cb68 add r0, pc                                            |             r0 = 0x7992c;
    0x0003cb6a blx 0x88c4                                            |             fcn_000088c4 ();
                                                                     |         }
                                                                     | label_9:
    0x0003cb6e ldr r3, [r4, 0x28]                                    |         r3 = *((r4 + 0x28));
                                                                     |         if (r3 != 0) {
    0x0003cb70 cbz r3, 0x3cbc2                                       |             
    0x0003cb72 bl 0x4c8c4                                            |             r0 = is_json_context ();
    0x0003cb76 cmp r0, 0                                             |             
                                                                     |             if (r0 != 0) {
    0x0003cb78 bne.w 0x3ccec                                         |                 goto label_42;
                                                                     |             }
    0x0003cb7c ldr r3, [r4, 0x28]                                    |             r3 = *((r4 + 0x28));
    0x0003cb7e ldrb r3, [r3, 4]                                      |             r3 = *((r3 + 4));
    0x0003cb80 cmp r3, 0                                             |             
                                                                     |             if (r3 == 0) {
    0x0003cb82 beq 0x3cc3c                                           |                 goto label_43;
                                                                     |             }
                                                                     | label_2:
    0x0003cb84 ldr r2, [pc, 0x23c]                                   |             
    0x0003cb86 ldr r3, [pc, 0x218]                                   |             r3 = *(0x3cda2);
    0x0003cb88 add r2, pc                                            |             r2 = 0x79950;
    0x0003cb8a ldr r3, [r2, r3]                                      |             r3 = *(0x79950);
    0x0003cb8c ldr r2, [r3]                                          |             r2 = *(0x79950);
    0x0003cb8e ldr r3, [sp, 0x1c]                                    |             r3 = var_1ch;
    0x0003cb90 eors r2, r3                                           |             r2 ^= r3;
    0x0003cb92 mov.w r3, 0                                           |             r3 = 0;
                                                                     |             if (r2 != r3) {
    0x0003cb96 bne.w 0x3cd98                                         |                 goto label_44;
                                                                     |             }
    0x0003cb98 strh r7, [r7, 6]                                      |             *((r7 + 6)) = r7;
    0x0003cb9a ldr r0, [pc, 0x22c]                                   |             
    0x0003cb9c mov r3, r5                                            |             r3 = r5;
    0x0003cb9e movs r2, 0xf                                          |             r2 = 0xf;
    0x0003cba0 movs r1, 1                                            |             r1 = 1;
    0x0003cba2 add r0, pc                                            |             r0 = 0x79970;
    0x0003cba4 add sp, 0x20                                          |             
    0x0003cba6 pop.w {r4, r5, r6, lr}                                |             
    0x0003cbaa b.w 0x88c0                                            |             void (*0x88c0)() ();
    0x0003cbac bkpt 0x89                                             |             __asm ("bkpt 0x89");
                                                                     | label_29:
    0x0003cbae ldr r3, [pc, 0x21c]                                   |             
    0x0003cbb0 movs r0, 1                                            |             r0 = 1;
    0x0003cbb2 ldr r2, [pc, 0x21c]                                   |             
    0x0003cbb4 movs r1, 6                                            |             r1 = 6;
    0x0003cbb6 str r0, [sp]                                          |             *(sp) = r0;
    0x0003cbb8 movs r0, 4                                            |             r0 = 4;
    0x0003cbba add r3, pc                                            |             r3 = 0x7998c;
    0x0003cbbc add r2, pc                                            |             r2 = 0x79992;
    0x0003cbbe bl 0x4cf74                                            |             print_color_bool ();
                                                                     |         }
                                                                     | label_8:
    0x0003cbc2 ldr r2, [pc, 0x210]                                   |         
    0x0003cbc4 ldr r3, [pc, 0x1d8]                                   |         r3 = *(0x3cda0);
    0x0003cbc6 add r2, pc                                            |         r2 = 0x799a0;
    0x0003cbc8 ldr r3, [r2, r3]                                      |         r3 = *(0x799a0);
    0x0003cbca ldr r2, [r3]                                          |         r2 = *(0x799a0);
    0x0003cbcc ldr r3, [sp, 0x1c]                                    |         r3 = var_1ch;
    0x0003cbce eors r2, r3                                           |         r2 ^= r3;
    0x0003cbd0 mov.w r3, 0                                           |         r3 = 0;
                                                                     |         if (r2 != r3) {
    0x0003cbd4 bne.w 0x3cd98                                         |             goto label_44;
                                                                     |         }
    0x0003cbd8 add sp, 0x20                                          |         
    0x0003cbda pop {r4, r5, r6, pc}                                  |         
                                                                     | label_30:
    0x0003cbdc ldr r3, [r4, 0x1c]                                    |         r3 = *((r4 + 0x1c));
    0x0003cbde cmp r3, 0                                             |         
    0x0003cbe0 beq.w 0x3caa2                                         |         
                                                                     |     } while (r3 == 0);
    0x0003cbe4 ldr r0, [r3, 4]                                       |     r0 = *((r3 + 4));
    0x0003cbe6 add.w ip, sp, 0xc                                     |     
    0x0003cbea ldr r1, [r3, 8]                                       |     r1 = *((r3 + 8));
    0x0003cbec mov r6, ip                                            |     r6 = ip;
    0x0003cbee ldr r2, [r3, 0xc]                                     |     r2 = *((r3 + 0xc));
    0x0003cbf0 ldr r3, [r3, 0x10]                                    |     r3 = *((r3 + 0x10));
    0x0003cbf2 stm r6!, {r0, r1, r2, r3}                             |     *(r6!) = r0;
                                                                     |     *((r6! + 4)) = r1;
                                                                     |     *((r6! + 8)) = r2;
                                                                     |     *((r6! + 12)) = r3;
    0x0003cbf4 mov r3, r0                                            |     r3 = r0;
    0x0003cbf6 ldr r2, [sp, 0x14]                                    |     r2 = var_14h;
    0x0003cbf8 orrs r3, r1                                           |     r3 |= r1;
    0x0003cbfa orrs r3, r2                                           |     r3 |= r2;
    0x0003cbfc ldr r2, [sp, 0x18]                                    |     r2 = var_18h;
    0x0003cbfe orrs r3, r2                                           |     r3 |= r2;
                                                                     |     if (r3 == r2) {
    0x0003cc00 beq.w 0x3caa2                                         |         goto label_0;
                                                                     |     }
    0x0003cc04 ldrb.w r3, [sp, 0xc]                                  |     r3 = var_ch;
    0x0003cc08 cmp r3, 0xff                                          |     
                                                                     |     if (r3 == 0xff) {
    0x0003cc0a beq.w 0x3caa2                                         |         goto label_0;
                                                                     |     }
    0x0003cc0e mov r2, ip                                            |     r2 = ip;
    0x0003cc10 movs r1, 0x10                                         |     r1 = 0x10;
    0x0003cc12 movs r0, 0xa                                          |     r0 = 0xa;
    0x0003cc14 bl 0x48e84                                            |     format_host ();
    0x0003cc18 ldr r3, [pc, 0x1bc]                                   |     
    0x0003cc1a movs r1, 6                                            |     r1 = 6;
    0x0003cc1c ldr r2, [pc, 0x1bc]                                   |     
    0x0003cc1e str r0, [sp]                                          |     *(sp) = r0;
    0x0003cc20 movs r0, 4                                            |     r0 = 4;
    0x0003cc22 add r3, pc                                            |     r3 = 0x799fe;
    0x0003cc24 add r2, pc                                            |     r2 = 0x79a04;
    0x0003cc26 bl 0x4ce6c                                            |     print_color_string ();
    0x0003cc2a b 0x3caa2                                             |     goto label_0;
                                                                     | label_39:
    0x0003cc2c ldr r0, [pc, 0x1b0]                                   |     
    0x0003cc2e mov r3, r5                                            |     r3 = r5;
    0x0003cc30 movs r2, 2                                            |     r2 = 2;
    0x0003cc32 movs r1, 1                                            |     r1 = 1;
    0x0003cc34 add r0, pc                                            |     r0 = 0x79a18;
    0x0003cc36 blx 0x88c4                                            |     fcn_000088c4 ();
    0x0003cc3a b 0x3cb3c                                             |     goto label_1;
                                                                     | label_43:
    0x0003cc3c ldr r0, [pc, 0x1a4]                                   |     
    0x0003cc3e mov r3, r5                                            |     r3 = r5;
    0x0003cc40 movs r2, 2                                            |     r2 = 2;
    0x0003cc42 movs r1, 1                                            |     r1 = 1;
    0x0003cc44 add r0, pc                                            |     r0 = 0x79a2c;
    0x0003cc46 blx 0x88c4                                            |     fcn_000088c4 ();
    0x0003cc4a b 0x3cb84                                             |     goto label_2;
                                                                     | label_41:
    0x0003cc4c ldr r0, [pc, 0x198]                                   |     
    0x0003cc4e mov r3, r5                                            |     r3 = r5;
    0x0003cc50 movs r2, 2                                            |     r2 = 2;
    0x0003cc52 movs r1, 1                                            |     r1 = 1;
    0x0003cc54 add r0, pc                                            |     r0 = 0x79a40;
    0x0003cc56 blx 0x88c4                                            |     fcn_000088c4 ();
    0x0003cc5a b 0x3cb60                                             |     goto label_3;
                                                                     | label_35:
    0x0003cc5c ldr r1, [pc, 0x18c]                                   |     
    0x0003cc5e movs r0, 2                                            |     r0 = 2;
    0x0003cc60 ldr r3, [pc, 0x18c]                                   |     
    0x0003cc62 ldr r2, [pc, 0x190]                                   |     
    0x0003cc64 add r1, pc                                            |     r1 = 0x79a54;
    0x0003cc66 str r1, [sp]                                          |     *(sp) = r1;
    0x0003cc68 add r3, pc                                            |     r3 = 0x79a5c;
    0x0003cc6a add r2, pc                                            |     r2 = 0x79a64;
    0x0003cc6c movs r1, 6                                            |     r1 = 6;
    0x0003cc6e bl 0x4ce6c                                            |     print_color_string ();
    0x0003cc72 b 0x3cafe                                             |     goto label_4;
                                                                     | label_34:
    0x0003cc74 bl 0x4c8c4                                            |     is_json_context ();
    0x0003cc78 cmp r6, 1                                             |     
    0x0003cc7a it ne                                                 |     
                                                                     |     if (r6 == 1) {
    0x0003cc7c orrne r0, r0, 1                                       |         r0 |= 1;
                                                                     |     }
    0x0003cc80 ands r2, r0, 0xff                                     |     r2 = r0 & 0xff;
                                                                     |     if (r2 != r0) {
    0x0003cc84 beq 0x3cd84                                           |         
    0x0003cc86 movs r2, 0                                            |         r2 = 0;
    0x0003cc88 ldr r3, [pc, 0x16c]                                   |         
    0x0003cc8a strd r6, r2, [sp]                                     |         __asm ("strd r6, r2, [sp]");
    0x0003cc8e movs r1, 6                                            |         r1 = 6;
    0x0003cc90 ldr r2, [pc, 0x168]                                   |         
    0x0003cc92 movs r0, 4                                            |         r0 = 4;
    0x0003cc94 add r3, pc                                            |         r3 = 0x79a90;
    0x0003cc96 add r2, pc                                            |         r2 = 0x79a96;
    0x0003cc98 bl 0x4d094                                            |         print_color_0xhex ();
    0x0003cc9c b 0x3cae6                                             |         goto label_5;
                                                                     | label_37:
    0x0003cc9e rev r2, r2                                            |         r2 = SWAP32 (r2);
    0x0003cca0 movs r1, 0                                            |         r1 = 0;
    0x0003cca2 strd r2, r1, [sp]                                     |         __asm ("strd r2, r1, [sp]");
    0x0003cca4 movs r1, 0                                            |         r1 = 0;
    0x0003cca6 movs r0, 4                                            |         r0 = 4;
    0x0003cca8 ldr r3, [pc, 0x154]                                   |         
    0x0003ccaa movs r1, 6                                            |         r1 = 6;
    0x0003ccac ldr r2, [pc, 0x154]                                   |         
    0x0003ccae add r3, pc                                            |         r3 = 0x79ab2;
    0x0003ccb0 add r2, pc                                            |         r2 = 0x79ab8;
    0x0003ccb2 bl 0x4d094                                            |         print_color_0xhex ();
    0x0003ccb6 b 0x3cb0a                                             |         goto label_6;
                                                                     | label_32:
    0x0003ccb8 ldr r1, [pc, 0x14c]                                   |         
    0x0003ccba movs r2, 0                                            |         r2 = 0;
    0x0003ccbc ldr r3, [pc, 0x14c]                                   |         
    0x0003ccbe movs r0, 1                                            |         r0 = 1;
    0x0003ccc0 add r1, pc                                            |         r1 = 0x79acc;
    0x0003ccc2 str r1, [sp]                                          |         *(sp) = r1;
    0x0003ccc4 add r3, pc                                            |         r3 = 0x79ad4;
    0x0003ccc6 movs r1, 6                                            |         r1 = 6;
    0x0003ccc8 bl 0x4ce6c                                            |         print_color_string ();
    0x0003cccc b 0x3cada                                             |         goto label_7;
                                                                     | label_31:
    0x0003ccce add r2, sp, 8                                         |         r2 += var_8h;
    0x0003ccd0 movs r1, 4                                            |         r1 = 4;
    0x0003ccd2 movs r0, 2                                            |         r0 = 2;
    0x0003ccd4 bl 0x48e84                                            |         format_host ();
    0x0003ccd8 ldr r3, [pc, 0x134]                                   |         
    0x0003ccda movs r1, 6                                            |         r1 = 6;
    0x0003ccdc ldr r2, [pc, 0x134]                                   |         
    0x0003ccde str r0, [sp]                                          |         *(sp) = r0;
    0x0003cce0 movs r0, 4                                            |         r0 = 4;
    0x0003cce2 add r3, pc                                            |         r3 = 0x79af6;
    0x0003cce4 add r2, pc                                            |         r2 = 0x79afc;
    0x0003cce6 bl 0x4ce6c                                            |         print_color_string ();
    0x0003ccea b 0x3caa2                                             |         goto label_0;
                                                                     | label_42:
    0x0003ccec ldr r4, [r4, 0x28]                                    |         r4 = *((r4 + 0x28));
    0x0003ccee movs r3, 0                                            |         r3 = 0;
    0x0003ccf0 ldr r2, [pc, 0x124]                                   |         
    0x0003ccf2 movs r1, 6                                            |         r1 = 6;
    0x0003ccf4 movs r0, 2                                            |         r0 = 2;
    0x0003ccf6 ldrb r4, [r4, 4]                                      |         r4 = *((r4 + 4));
    0x0003ccf8 add r2, pc                                            |         r2 = 0x79b14;
    0x0003ccfa subs r4, r4, r3                                       |         r4 -= r3;
    0x0003ccfc it ne                                                 |         
                                                                     |         if (r4 == r4) {
    0x0003ccfe movne r4, 1                                           |             r4 = 1;
                                                                     |         }
    0x0003cd00 str r4, [sp]                                          |         *(sp) = r4;
    0x0003cd02 bl 0x4cf74                                            |         print_color_bool ();
    0x0003cd06 b 0x3cbc2                                             |         goto label_8;
                                                                     | label_40:
    0x0003cd08 ldr r1, [r4, 0x24]                                    |         r1 = *((r4 + 0x24));
    0x0003cd0a movs r3, 0                                            |         r3 = 0;
    0x0003cd0c ldr r2, [pc, 0x10c]                                   |         
    0x0003cd0e movs r0, 2                                            |         r0 = 2;
    0x0003cd10 ldrb r1, [r1, 4]                                      |         r1 = *((r1 + 4));
    0x0003cd12 add r2, pc                                            |         r2 = 0x79b32;
    0x0003cd14 subs r1, r1, r3                                       |         r1 -= r3;
    0x0003cd16 it ne                                                 |         
                                                                     |         if (r1 == r1) {
    0x0003cd18 movne r1, 1                                           |             r1 = 1;
                                                                     |         }
    0x0003cd1a str r1, [sp]                                          |         *(sp) = r1;
    0x0003cd1c movs r1, 6                                            |         r1 = 6;
    0x0003cd1e bl 0x4cf74                                            |         print_color_bool ();
    0x0003cd22 b 0x3cb6e                                             |         goto label_9;
                                                                     | label_38:
    0x0003cd24 ldr r1, [r4, 0x20]                                    |         r1 = *((r4 + 0x20));
    0x0003cd26 movs r3, 0                                            |         r3 = 0;
    0x0003cd28 ldr r2, [pc, 0xf4]                                    |         
    0x0003cd2a movs r0, 2                                            |         r0 = 2;
    0x0003cd2c ldrb r1, [r1, 4]                                      |         r1 = *((r1 + 4));
    0x0003cd2e add r2, pc                                            |         r2 = 0x79b52;
    0x0003cd30 subs r1, r1, r3                                       |         r1 -= r3;
    0x0003cd32 it ne                                                 |         
                                                                     |         if (r1 == r1) {
    0x0003cd34 movne r1, 1                                           |             r1 = 1;
                                                                     |         }
    0x0003cd36 str r1, [sp]                                          |         *(sp) = r1;
    0x0003cd38 movs r1, 6                                            |         r1 = 6;
    0x0003cd3a bl 0x4cf74                                            |         print_color_bool ();
    0x0003cd3e b 0x3cb4a                                             |         goto label_10;
                                                                     | label_36:
    0x0003cd40 ldr r1, [pc, 0xe0]                                    |         
    0x0003cd42 movs r0, 4                                            |         r0 = 4;
    0x0003cd44 ldr r3, [pc, 0xe0]                                    |         r3 = *(0x3ce28);
    0x0003cd46 ldr r2, [pc, 0xe4]                                    |         r2 = *(0x3ce2e);
    0x0003cd48 add r1, pc                                            |         r1 = 0x79b70;
    0x0003cd4a str r1, [sp]                                          |         *(sp) = r1;
                                                                     | label_12:
    0x0003cd4c add r3, pc                                            |         r3 += pc;
    0x0003cd4e add r2, pc                                            |         r2 += pc;
    0x0003cd50 movs r1, 6                                            |         r1 = 6;
    0x0003cd52 bl 0x4ce6c                                            |         print_color_string ();
    0x0003cd56 b 0x3cafe                                             |         goto label_4;
                                                                     | label_33:
    0x0003cd58 ldr r1, [pc, 0xd4]                                    |         
    0x0003cd5a movs r0, 1                                            |         r0 = 1;
    0x0003cd5c ldr r3, [pc, 0xd4]                                    |         
    0x0003cd5e add r1, pc                                            |         r1 = 0x79b92;
    0x0003cd60 str r1, [sp]                                          |         *(sp) = r1;
    0x0003cd62 add r3, pc                                            |         r3 = 0x79b9a;
    0x0003cd64 movs r1, 6                                            |         r1 = 6;
    0x0003cd66 bl 0x4ce6c                                            |         print_color_string ();
    0x0003cd6a b 0x3cada                                             |         goto label_7;
                                                                     | label_11:
    0x0003cd6c ldr r1, [pc, 0xc8]                                    |         
    0x0003cd6e movs r0, 4                                            |         r0 = 4;
    0x0003cd70 ldr r3, [pc, 0xc8]                                    |         
    0x0003cd72 ldr r2, [pc, 0xcc]                                    |         
    0x0003cd74 add r1, pc                                            |         r1 = 0x79bb0;
    0x0003cd76 str r1, [sp]                                          |         *(sp) = r1;
    0x0003cd78 add r3, pc                                            |         r3 = 0x79bb8;
    0x0003cd7a add r2, pc                                            |         r2 = 0x79bc0;
    0x0003cd7c movs r1, 6                                            |         r1 = 6;
    0x0003cd7e bl 0x4ce6c                                            |         print_color_string ();
    0x0003cd80 invalid                                               |         
                                                                     |     }
    0x0003cd84 ldr r1, [pc, 0xbc]                                    |     
    0x0003cd86 movs r0, 1                                            |     r0 = 1;
    0x0003cd88 ldr r3, [pc, 0xbc]                                    |     
    0x0003cd8a add r1, pc                                            |     r1 = 0x79bd2;
    0x0003cd8c str r1, [sp]                                          |     *(sp) = r1;
    0x0003cd8e add r3, pc                                            |     r3 = 0x79bda;
    0x0003cd90 movs r1, 6                                            |     r1 = 6;
    0x0003cd92 bl 0x4ce6c                                            |     print_color_string ();
    0x0003cd96 b 0x3cae6                                             |     goto label_5;
                                                                     | label_44:
    0x0003cd98 blx 0x87f8                                            |     fcn_000087f8 ();
    0x0003cd9c asrs r2, r5, 9                                        |     r2 = r5 >> 9;
    0x0003cd9e movs r4, r0                                           |     r4 = r0;
    0x0003cda0 lsls r4, r0, 0xb                                      |     r4 = r0 << 0xb;
    0x0003cda2 movs r0, r0                                           |     
    0x0003cda4 stm r1!, {r2, r5, r6}                                 |     *(r1!) = r2;
                                                                     |     *((r1! + 4)) = r5;
                                                                     |     *((r1! + 8)) = r6;
    0x0003cda6 movs r2, r0                                           |     r2 = r0;
    0x0003cda8 str r2, [r1, 8]                                       |     *((r1 + 8)) = r2;
    0x0003cdaa movs r2, r0                                           |     r2 = r0;
    0x0003cdac sbcs r2, r5                                           |     __asm ("sbcs r2, r5");
    0x0003cdae movs r2, r0                                           |     r2 = r0;
    0x0003cdb0 stm r3!, {r2, r3, r4, r6}                             |     *(r3!) = r2;
                                                                     |     *((r3! + 4)) = r3;
                                                                     |     *((r3! + 8)) = r4;
                                                                     |     *((r3! + 12)) = r6;
    0x0003cdb2 movs r1, r0                                           |     r1 = r0;
    0x0003cdb4 ldrsh r6, [r3, r2]                                    |     r6 = *((r3 + r2));
    0x0003cdb6 movs r2, r0                                           |     r2 = r0;
    0x0003cdb8 ldr r7, [sp, 0x2c0]                                   |     r7 = *(arg_2c0h);
    0x0003cdba movs r2, r0                                           |     r2 = r0;
    0x0003cdbc ldrsh r0, [r5, r4]                                    |     r0 = *((r5 + r4));
    0x0003cdbe movs r2, r0                                           |     r2 = r0;
    0x0003cdc0 ldrsh r4, [r4, r4]                                    |     r4 = *((r4 + r4));
    0x0003cdc2 movs r2, r0                                           |     r2 = r0;
    0x0003cdc4 asrs r0, r6, 4                                        |     r0 = r6 >> 4;
    0x0003cdc6 movs r4, r0                                           |     r4 = r0;
    0x0003cdc8 ldrsh r6, [r1, r4]                                    |     r6 = *((r1 + r4));
    0x0003cdca movs r2, r0                                           |     r2 = r0;
    0x0003cdcc lsls r6, r6                                           |     r6 <<= r6;
    0x0003cdce movs r2, r0                                           |     r2 = r0;
    0x0003cdd0 subs r7, 0x70                                         |     r7 -= 0x70;
    0x0003cdd2 movs r2, r0                                           |     r2 = r0;
    0x0003cdd4 asrs r2, r6, 3                                        |     r2 = r6 >> 3;
    0x0003cdd6 movs r4, r0                                           |     r4 = r0;
    0x0003cdd8 ldrb r2, [r1, r5]                                     |     r2 = *((r1 + r5));
    0x0003cdda movs r2, r0                                           |     r2 = r0;
    0x0003cddc ldrb r4, [r3, r5]                                     |     r4 = *((r3 + r5));
    0x0003cdde movs r2, r0                                           |     r2 = r0;
    0x0003cde0 ldrsh r4, [r6, r0]                                    |     r4 = *((r6 + r0));
    0x0003cde2 movs r2, r0                                           |     r2 = r0;
    0x0003cde4 ldrsh r4, [r4, r0]                                    |     r4 = *((r4 + r0));
    0x0003cde6 movs r2, r0                                           |     r2 = r0;
    0x0003cde8 ldrsh r4, [r2, r0]                                    |     r4 = *((r2 + r0));
    0x0003cdea movs r2, r0                                           |     r2 = r0;
    0x0003cdec ldrb r0, [r7, r6]                                     |     r0 = *((r7 + r6));
    0x0003cdee movs r2, r0                                           |     r2 = r0;
    0x0003cdf0 ldrb r0, [r5, r6]                                     |     r0 = *((r5 + r6));
    0x0003cdf2 movs r2, r0                                           |     r2 = r0;
    0x0003cdf4 ldrb r6, [r5, r6]                                     |     r6 = *((r5 + r6));
    0x0003cdf6 movs r2, r0                                           |     r2 = r0;
    0x0003cdf8 subs r7, 0xf8                                         |     r7 -= 0xf8;
    0x0003cdfa movs r2, r0                                           |     r2 = r0;
                                                                     |     if (r2 >= r0) {
    0x0003cdfc bhs 0x3cedc                                           |         goto label_13;
                                                                     |     }
    0x0003cdfe movs r2, r0                                           |     r2 = r0;
    0x0003ce00 ldrb r6, [r6, r5]                                     |     r6 = *((r6 + r5));
    0x0003ce02 movs r2, r0                                           |     r2 = r0;
    0x0003ce04 str r4, [sp, 0x2c0]                                   |     *(arg_2c0h) = r4;
    0x0003ce06 movs r1, r0                                           |     r1 = r0;
                                                                     |     if (r1 < r0) {
    0x0003ce08 blt 0x3cea4                                           |         goto label_45;
                                                                     |     }
    0x0003ce0a movs r1, r0                                           |     r1 = r0;
    0x0003ce0c subs r7, 0xc0                                         |     r7 -= 0xc0;
    0x0003ce0e movs r2, r0                                           |     r2 = r0;
                                                                     |     do {
    0x0003ce10 ldrb r2, [r1, r2]                                     |         r2 = *((r1 + r2));
    0x0003ce12 movs r2, r0                                           |         r2 = r0;
    0x0003ce14 blt 0x3ce10                                           |         
                                                                     |     } while (r2 < r0);
    0x0003ce16 movs r1, r0                                           |     r1 = r0;
    0x0003ce18 ldrb r4, [r4, r6]                                     |     r4 = *((r4 + r6));
    0x0003ce1a movs r2, r0                                           |     r2 = r0;
    0x0003ce1c ldrb r6, [r4, r5]                                     |     r6 = *((r4 + r5));
    0x0003ce1e movs r2, r0                                           |     r2 = r0;
    0x0003ce20 strb r6, [r1, r7]                                     |     *((r1 + r7)) = r6;
    0x0003ce22 movs r2, r0                                           |     r2 = r0;
    0x0003ce24 strh r0, [r3, r6]                                     |     *((r3 + r6)) = r0;
    0x0003ce26 movs r2, r0                                           |     r2 = r0;
    0x0003ce28 ldrb r4, [r0, r3]                                     |     r4 = *((r0 + r3));
    0x0003ce2a movs r2, r0                                           |     r2 = r0;
    0x0003ce2c ldrb r2, [r1, r3]                                     |     r2 = *((r1 + r3));
    0x0003ce2e movs r2, r0                                           |     r2 = r0;
    0x0003ce30 adr r5, 0x348                                         |     r5 = 0x348;
    0x0003ce32 movs r2, r0                                           |     r2 = r0;
    0x0003ce34 subs r7, 0x22                                         |     r7 -= 0x22;
    0x0003ce36 movs r2, r0                                           |     r2 = r0;
                                                                     |     if (r2 >= r0) {
    0x0003ce38 bge 0x3cd6c                                           |         goto label_11;
                                                                     |     }
    0x0003ce3a movs r1, r0                                           |     r1 = r0;
    0x0003ce3c ldrb r0, [r3, r2]                                     |     r0 = *((r3 + r2));
    0x0003ce3e movs r2, r0                                           |     r2 = r0;
    0x0003ce40 ldrb r6, [r3, r2]                                     |     r6 = *((r3 + r2));
    0x0003ce42 movs r2, r0                                           |     r2 = r0;
                                                                     |     if (r2 >= r0) {
    0x0003ce44 bge 0x3cd4c                                           |         goto label_12;
                                                                     |     }
    0x0003ce46 movs r1, r0                                           |     r1 = r0;
    0x0003ce48 itte mi                                               |     
                                                                     |     if (r1 >= r0) {
    0x0003ce4a movmi r1, r0                                          |         r1 = r0;
                                                                     |     }
                                                                     |     if (r1 < r0) {
    0x0003ce4c pushmi {r4, r5, r6, r7, r8, sb, sl, fp, lr}           |         __asm ("pushmi {r4, r5, r6, r7, r8, sb, sl, fp, lr}");
                                                                     |     }
                                                                     |     if (r1 >= r0) {
    0x0003ce50 sub sp, 0x174                                         |         
                                                                     |     }
    0x0003ce52 ldr.w r6, [pc, 0x6bc]                                 |     r6 = *(0x0003d510);
    0x0003ce56 add.w r8, sp, 0x50                                    |     r8 += var_50h;
    0x0003ce5a mov r5, r2                                            |     r5 = r2;
    0x0003ce5c add.w fp, sp, 0x64                                    |     
    0x0003ce60 ldr.w r4, [pc, 0x6b0]                                 |     r4 = *(0x0003d514);
    0x0003ce64 add.w r2, sp, 0x4e                                    |     r2 += var_4eh;
    0x0003ce68 str r3, [sp, 0x10]                                    |     var_10h_2 = r3;
    0x0003ce6a add r6, pc                                            |     r6 += pc;
    0x0003ce6c ldrh r0, [r3, 4]                                      |     r0 = *((r3 + 4));
    0x0003ce6e ldr.w r3, [pc, 0x6a8]                                 |     
    0x0003ce72 add r4, pc                                            |     r4 += pc;
    0x0003ce74 str r6, [sp, 0x40]                                    |     var_bp_0h = r6;
    0x0003ce76 cmp r0, 0x10                                          |     
    0x0003ce78 vmov.i32 d16, 0                                       |     __asm ("vmov.i32 d16, 0");
    0x0003ce7c ldr r3, [r4, r3]                                      |     r3 = *((r4 + r3));
    0x0003ce7e mov r4, r1                                            |     r4 = r1;
    0x0003ce80 ldr r3, [r3]                                          |     r3 = *(0x3d51a);
    0x0003ce82 str r3, [sp, 0x16c]                                   |     var_16ch = r3;
    0x0003ce84 mov.w r3, 0                                           |     r3 = 0;
    0x0003ce88 mov.w r3, 0                                           |     r3 = 0;
    0x0003ce8c str.w r3, [r8]                                        |     __asm ("str.w r3, [r8]");
    0x0003ce90 strh.w r3, [sp, 0x4e]                                 |     var_4eh = r3;
    0x0003ce94 it eq                                                 |     
                                                                     |     if (r0 != 0x10) {
    0x0003ce96 ldreq r3, [sp, 0x10]                                  |         r3 = var_10h_2;
                                                                     |     }
    0x0003ce98 vstr d16, [sp, 0x58]                                  |     __asm ("vstr d16, [sp, 0x58]");
    0x0003ce9c str r2, [sp, 0x20]                                    |     var_20h_2 = r2;
    0x0003ce9e ittt eq                                               |     
                                                                     |     if (r0 == 0x10) {
    0x0003cea0 ldrheq r3, [r3, 6]                                    |         __asm ("ldrheq r3, [r3, 6]");
                                                                     |     }
                                                                     |     if (r0 != 0x10) {
    0x0003cea2 eoreq r3, r3, 0x400                                   |         r3 ^= 0x400;
                                                                     |     }
                                                                     |     if (r0 != 0x10) {
                                                                     | label_45:
    0x0003cea4 streq r0, [r0, 0x38]                                  |         *((r0 + 0x38)) = r0;
                                                                     |     }
    0x0003cea6 ubfx r3, r3, 0xa, 1                                   |     r3 = (r3 >> 0xa) & ((1 << 1) - 1);
    0x0003ceaa str r3, [sp, 0x1c]                                    |     var_1ch = r3;
    0x0003ceac movs r3, 0                                            |     r3 = 0;
    0x0003ceae cmp r1, r3                                            |     
    0x0003ceb0 strh.w r3, [fp]                                       |     *(fp) = r3;
                                                                     |     if (r1 <= r3) {
    0x0003ceb4 ble.w 0x3d2b4                                         |         goto label_46;
                                                                     |     }
    0x0003ceb8 ldr.w r2, [pc, 0x660]                                 |     
    0x0003cebc ldr.w sb, [pc, 0x660]                                 |     
    0x0003cec0 ldr.w sl, [pc, 0x660]                                 |     
    0x0003cec4 add r2, pc                                            |     r2 = 0x7a3e4;
    0x0003cec6 str r3, [sp, 0x3c]                                    |     var_3ch = r3;
    0x0003cec8 add sb, pc                                            |     sb = 0x7a3ec;
    0x0003ceca str r2, [sp, 0xc]                                     |     var_ch = r2;
    0x0003cecc add sl, pc                                            |     sl = 0x7a3f4;
    0x0003cece strd r3, r3, [sp, 0x34]                               |     __asm ("strd r3, r3, [var_38h]");
    0x0003ced2 str r3, [sp, 0x18]                                    |     var_18h = r3;
    0x0003ced4 strd r3, r3, [sp, 0x24]                               |     __asm ("strd r3, r3, [var_24h]");
    0x0003ced8 str r3, [sp, 0x30]                                    |     var_30h = r3;
    0x0003ceda b 0x3cf1c                                             |     
                                                                     |     while (r0 == 0) {
                                                                     | label_13:
    0x0003cedc subs r4, 1                                            |         r4--;
    0x0003cede add.w r7, r5, 4                                       |         r7 = r5 + 4;
                                                                     |         if (r4 == 1) {
    0x0003cee2 beq.w 0x3d2ce                                         |             goto label_28;
                                                                     |         }
    0x0003cee6 ldr r3, [sp, 0x58]                                    |         r3 = *(arg_58h);
    0x0003cee8 add r6, sp, 0x58                                      |         r6 += arg_58h;
    0x0003ceea ldr r1, [r5, 4]                                       |         r1 = *((r5 + 4));
    0x0003ceec and r2, r3, 2                                         |         r2 = r3 & 2;
    0x0003cef0 cmp r2, 0                                             |         
                                                                     |         if (r2 != 0) {
    0x0003cef2 bne.w 0x3d2d2                                         |             goto label_47;
                                                                     |         }
    0x0003cef6 orr r3, r3, 2                                         |         r3 |= 2;
    0x0003cefa mov r0, r8                                            |         r0 = r8;
    0x0003cefc str r3, [r6]                                          |         *(r6) = r3;
    0x0003cefe bl 0x47ddc                                            |         r0 = get_u32 ();
    0x0003cf02 cmp r0, 0                                             |         
                                                                     |         if (r0 != 0) {
    0x0003cf04 bne.w 0x3d2aa                                         |             goto label_48;
                                                                     |         }
    0x0003cf08 ldr.w r3, [r8]                                        |         r3 = *(r8);
    0x0003cf0c cmp.w r3, 0x1000000                                   |         
                                                                     |         if (r3 >= 0x1000000) {
    0x0003cf10 bhs.w 0x3d2aa                                         |             goto label_48;
                                                                     |         }
                                                                     | label_14:
    0x0003cf14 subs r4, 1                                            |         r4--;
    0x0003cf16 add.w r5, r7, 4                                       |         r5 = r7 + 4;
                                                                     |         if (r4 == 1) {
    0x0003cf1a beq 0x3d004                                           |             goto label_49;
                                                                     |         }
                                                                     | label_15:
    0x0003cf1c ldr r0, [r5]                                          |         r0 = *(r5);
    0x0003cf1e mov r1, sb                                            |         r1 = sb;
    0x0003cf20 bl 0x4884c                                            |         r0 = matches ();
    0x0003cf24 cmp r0, 0                                             |         
    0x0003cf26 beq 0x3cedc                                           |         
                                                                     |     }
    0x0003cf28 ldr r0, [r5]                                          |     r0 = *(r5);
    0x0003cf2a mov r1, sl                                            |     r1 = sl;
    0x0003cf2c bl 0x4884c                                            |     r0 = matches ();
    0x0003cf30 cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x0003cf32 beq 0x3cedc                                           |         goto label_13;
                                                                     |     }
    0x0003cf34 ldr r0, [r5]                                          |     r0 = *(r5);
    0x0003cf36 ldr r1, [sp, 0xc]                                     |     r1 = var_ch;
    0x0003cf38 bl 0x4884c                                            |     r0 = matches ();
                                                                     |     if (r0 != 0) {
    0x0003cf3c cbnz r0, 0x3cf7c                                      |         goto label_50;
                                                                     |     }
    0x0003cf3e subs r4, 1                                            |     r4--;
    0x0003cf40 add.w r7, r5, 4                                       |     r7 = r5 + 4;
                                                                     |     if (r4 == 1) {
    0x0003cf44 beq.w 0x3d2ce                                         |         goto label_28;
                                                                     |     }
    0x0003cf48 ldr r3, [sp, 0x58]                                    |     r3 = *(arg_58h);
    0x0003cf4a add r6, sp, 0x58                                      |     r6 += arg_58h;
    0x0003cf4c ldr r1, [r5, 4]                                       |     r1 = *((r5 + 4));
    0x0003cf4e and r2, r3, 4                                         |     r2 = r3 & 4;
    0x0003cf52 cmp r2, 0                                             |     
                                                                     |     if (r2 != 0) {
    0x0003cf54 bne.w 0x3d3ba                                         |         goto label_51;
                                                                     |     }
    0x0003cf58 orr r3, r3, 4                                         |     r3 |= 4;
    0x0003cf5c mov r0, fp                                            |     r0 = fp;
    0x0003cf5e str r3, [r6]                                          |     *(r6) = r3;
    0x0003cf60 bl 0x48c38                                            |     get_addr ();
    0x0003cf64 ldrh.w r3, [fp]                                       |     r3 = *(fp);
    0x0003cf68 and r3, r3, 0xa                                       |     r3 &= 0xa;
    0x0003cf6c cmp r3, 2                                             |     
                                                                     |     if (r3 == 2) {
    0x0003cf6e beq 0x3cf14                                           |         goto label_14;
                                                                     |     }
    0x0003cf70 ldr.w r0, [pc, 0x5b4]                                 |     r0 = *(0x0003d528);
    0x0003cf74 ldr r1, [r5, 4]                                       |     r1 = *((r5 + 4));
    0x0003cf76 add r0, pc                                            |     r0 += pc;
    0x0003cf78 bl 0x486a4                                            |     invarg ();
                                                                     | label_50:
    0x0003cf7c ldr.w r1, [pc, 0x5ac]                                 |     r1 = *(0x0003d52c);
    0x0003cf80 ldr r0, [r5]                                          |     r0 = *(r5);
    0x0003cf82 add r1, pc                                            |     r1 += pc;
    0x0003cf84 bl 0x4884c                                            |     r0 = matches ();
    0x0003cf88 cmp r0, 0                                             |     
                                                                     |     if (r0 != 0) {
    0x0003cf8a bne.w 0x3d116                                         |         goto label_52;
                                                                     |     }
                                                                     | label_17:
    0x0003cf8e subs r4, 1                                            |     r4--;
    0x0003cf90 add.w r7, r5, 4                                       |     r7 = r5 + 4;
                                                                     |     if (r4 == 1) {
    0x0003cf94 beq.w 0x3d2ce                                         |         goto label_28;
                                                                     |     }
    0x0003cf98 ldr r2, [sp, 0x58]                                    |     r2 = *(arg_58h);
    0x0003cf9a add r6, sp, 0x58                                      |     r6 += arg_58h;
    0x0003cf9c ldr r3, [r5, 4]                                       |     r3 = *((r5 + 4));
    0x0003cf9e and r1, r2, 8                                         |     r1 = r2 & 8;
    0x0003cfa2 str r1, [sp, 0x2c]                                    |     var_2ch = r1;
    0x0003cfa4 cmp r1, 0                                             |     
                                                                     |     if (r1 != 0) {
    0x0003cfa6 bne.w 0x3d3c4                                         |         goto label_53;
                                                                     |     }
    0x0003cfaa ldr.w r1, [pc, 0x584]                                 |     
    0x0003cfae orr r2, r2, 8                                         |     r2 |= 8;
    0x0003cfb2 mov r0, r3                                            |     r0 = r3;
    0x0003cfb4 str r3, [sp, 0x14]                                    |     var_14h = r3;
    0x0003cfb6 str r2, [r6]                                          |     *(r6) = r2;
    0x0003cfb8 add r1, pc                                            |     r1 = 0x7a4ee;
    0x0003cfba blx 0x8668                                            |     strcmp (r0, r1);
    0x0003cfbe ldr r3, [sp, 0x14]                                    |     r3 = var_14h;
    0x0003cfc0 cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x0003cfc2 beq.w 0x3d18a                                         |         goto label_54;
                                                                     |     }
    0x0003cfc6 ldr.w r1, [pc, 0x56c]                                 |     r1 = *(0x0003d534);
    0x0003cfca mov r0, r3                                            |     r0 = r3;
    0x0003cfcc str r3, [sp, 0x14]                                    |     var_14h = r3;
    0x0003cfce add r1, pc                                            |     r1 += pc;
    0x0003cfd0 blx 0x8668                                            |     strcmp (r0, r1);
    0x0003cfd4 ldr r3, [sp, 0x14]                                    |     r3 = var_14h;
    0x0003cfd6 cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x0003cfd8 beq 0x3cf14                                           |         goto label_14;
                                                                     |     }
    0x0003cfda mov r1, r3                                            |     r1 = r3;
    0x0003cfdc add r3, sp, 0x54                                      |     r3 += arg_54h;
    0x0003cfde mov r0, r3                                            |     r0 = r3;
    0x0003cfe0 ldr r2, [sp, 0x2c]                                    |     r2 = var_2ch;
    0x0003cfe2 str r3, [sp, 0x14]                                    |     var_14h = r3;
    0x0003cfe4 bl 0x47b4c                                            |     get_unsigned ();
    0x0003cfe8 ldr r3, [sp, 0x14]                                    |     r3 = var_14h;
    0x0003cfea cmp r0, 0                                             |     
                                                                     |     if (r0 != 0) {
    0x0003cfec bne.w 0x3d32c                                         |         goto label_55;
                                                                     |     }
    0x0003cff0 ldr r3, [r3]                                          |     r3 = *(r3);
    0x0003cff2 cmp r3, 0xff                                          |     
                                                                     |     if (r3 > 0xff) {
    0x0003cff4 bhi.w 0x3d3d8                                         |         goto label_56;
                                                                     |     }
    0x0003cff8 uxtb r3, r3                                           |     r3 = (int8_t) r3;
    0x0003cffa subs r4, 1                                            |     r4--;
    0x0003cffc add.w r5, r7, 4                                       |     r5 = r7 + 4;
    0x0003d000 str r3, [sp, 0x24]                                    |     var_24h = r3;
                                                                     |     if (r4 != 1) {
    0x0003d002 bne 0x3cf1c                                           |         goto label_15;
                                                                     |     }
                                                                     | label_49:
    0x0003d004 ldr r2, [sp, 0x18]                                    |     r2 = var_18h;
    0x0003d006 ldr r5, [r6]                                          |     r5 = *(r6);
    0x0003d008 and r3, r5, 2                                         |     r3 = r5 & 2;
    0x0003d00c cmp r2, 0                                             |     
                                                                     |     if (r2 == 0) {
    0x0003d00e beq 0x3d0c8                                           |         goto label_57;
                                                                     |     }
    0x0003d010 cmp r3, 0                                             |     
                                                                     |     if (r3 != 0) {
    0x0003d012 bne.w 0x3d31e                                         |         goto label_58;
                                                                     |     }
    0x0003d016 ldr.w r3, [r8]                                        |     r3 = *(r8);
    0x0003d01a movs r2, 1                                            |     r2 = 1;
    0x0003d01c ldr r0, [sp, 0x10]                                    |     r0 = var_10h;
    0x0003d01e mov.w r1, 0x400                                       |     r1 = 0x400;
    0x0003d022 bl 0x548e8                                            |     addattr32 ();
    0x0003d026 ldrh.w r3, [fp]                                       |     r3 = *(fp);
    0x0003d02a lsls r2, r3, 0x1e                                     |     r2 = r3 << 0x1e;
    0x0003d02c bpl 0x3d04c                                           |     
                                                                     |     while (r2 < r3) {
                                                                     | label_18:
    0x0003d02e ldrh.w r3, [fp, 6]                                    |         r3 = *(arg_6h);
    0x0003d032 mov.w r1, 0x400                                       |         r1 = 0x400;
    0x0003d036 ldr r0, [sp, 0x10]                                    |         r0 = var_10h;
    0x0003d038 cmp r3, 2                                             |         
    0x0003d03a ldrh.w r3, [fp, 2]                                    |         r3 = *(arg_2h);
    0x0003d03e ite eq                                                |         
                                                                     |         if (r3 != 2) {
    0x0003d040 moveq r2, 2                                           |             r2 = 2;
                                                                     |         }
                                                                     |         if (r3 == 2) {
    0x0003d042 movne r2, 7                                           |             r2 = 7;
                                                                     |         }
    0x0003d044 str r3, [sp]                                          |         *(sp) = r3;
    0x0003d046 add r3, sp, 0x6c                                      |         r3 += arg_6ch;
    0x0003d048 bl 0x54824                                            |         addattr_l ();
    0x0003d04c ldr r3, [sp, 0x1c]                                    |         r3 = var_1ch;
    0x0003d04e cmp r3, 0                                             |         
                                                                     |         if (r3 == 0) {
    0x0003d050 beq 0x3d0f6                                           |             goto label_59;
                                                                     |         }
                                                                     | label_19:
    0x0003d052 and r3, r5, 0x800                                     |         r3 = r5 & 0x800;
    0x0003d056 cmp r3, 0                                             |         
                                                                     |         if (r3 == 0) {
    0x0003d058 beq.w 0x3d19a                                         |             goto label_60;
                                                                     |         }
    0x0003d05c ldr r3, [sp, 0x30]                                    |         r3 = var_30h;
    0x0003d05e movs r2, 0xb                                          |         r2 = 0xb;
    0x0003d060 ldr r0, [sp, 0x10]                                    |         r0 = var_10h;
    0x0003d062 mov.w r1, 0x400                                       |         r1 = 0x400;
    0x0003d066 bl 0x548e8                                            |         addattr32 ();
    0x0003d06a lsls r3, r5, 0x1c                                     |         r3 = r5 << 0x1c;
                                                                     |         if (r3 < r5) {
    0x0003d06c bmi.w 0x3d210                                         |             goto label_61;
                                                                     |         }
                                                                     | label_20:
    0x0003d070 lsls r3, r5, 0x1b                                     |         r3 = r5 << 0x1b;
                                                                     |         if (r3 < r5) {
    0x0003d072 bpl 0x3d082                                           |             
                                                                     | label_16:
    0x0003d074 ldr r3, [sp, 0x28]                                    |             r3 = var_28h;
    0x0003d076 movs r2, 4                                            |             r2 = 4;
    0x0003d078 ldr r0, [sp, 0x10]                                    |             r0 = var_10h;
    0x0003d07a mov.w r1, 0x400                                       |             r1 = 0x400;
    0x0003d07e bl 0x548b0                                            |             addattr8 ();
                                                                     |         }
    0x0003d082 ldr r3, [sp, 0x20]                                    |         r3 = var_20h;
    0x0003d084 ldrh r3, [r3]                                         |         r3 = *(r3);
    0x0003d086 cmp r3, 0                                             |         
                                                                     |         if (r3 != 0) {
    0x0003d088 bne.w 0x3d1fe                                         |             goto label_62;
                                                                     |         }
                                                                     | label_23:
    0x0003d08c ldr r3, [sp, 0x18]                                    |         r3 = var_18h;
    0x0003d08e cmp r3, 0                                             |         
                                                                     |         if (r3 != 0) {
    0x0003d090 bne.w 0x3d1f0                                         |             goto label_63;
                                                                     |         }
                                                                     | label_22:
    0x0003d094 lsls r7, r5, 0x17                                     |         r7 = r5 << 0x17;
                                                                     |         if (r7 < r5) {
    0x0003d096 bmi.w 0x3d1e0                                         |             goto label_64;
                                                                     |         }
    0x0003d09a lsls r6, r5, 0x16                                     |         r6 = r5 << 0x16;
                                                                     |         if (r6 < r5) {
    0x0003d09c bmi.w 0x3d1bc                                         |             goto label_65;
                                                                     |         }
    0x0003d0a0 lsls r0, r5, 0x15                                     |         r0 = r5 << 0x15;
                                                                     |         if (r0 < r5) {
    0x0003d0a2 bmi.w 0x3d1d0                                         |             goto label_66;
                                                                     |         }
                                                                     | label_21:
    0x0003d0a6 ldr.w r2, [pc, 0x490]                                 |         r2 = *(0x0003d538);
    0x0003d0aa ldr.w r3, [pc, 0x46c]                                 |         r3 = *(0x3d51a);
    0x0003d0ae add r2, pc                                            |         r2 += pc;
    0x0003d0b0 ldr r3, [r2, r3]                                      |         r3 = *((r2 + r3));
    0x0003d0b2 ldr r2, [r3]                                          |         r2 = *(0x3d51a);
    0x0003d0b4 ldr r3, [sp, 0x16c]                                   |         r3 = *(arg_16ch);
    0x0003d0b6 eors r2, r3                                           |         r2 ^= r3;
    0x0003d0b8 mov.w r3, 0                                           |         r3 = 0;
                                                                     |         if (r2 != r3) {
    0x0003d0bc bne.w 0x3d3c0                                         |             goto label_67;
                                                                     |         }
    0x0003d0c0 mov r0, r4                                            |         r0 = r4;
    0x0003d0c2 add sp, 0x174                                         |         
    0x0003d0c4 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}            |         
                                                                     | label_57:
    0x0003d0c8 cmp r3, 0                                             |         
                                                                     |         if (r3 == 0) {
    0x0003d0ca beq.w 0x3d2b4                                         |             goto label_46;
                                                                     |         }
    0x0003d0ce ldr r3, [sp, 0x1c]                                    |         r3 = var_1ch;
    0x0003d0d0 cmp r3, 0                                             |         
                                                                     |         if (r3 != 0) {
    0x0003d0d2 bne 0x3d16e                                           |             goto label_68;
                                                                     |         }
    0x0003d0d4 ldrh.w r3, [fp]                                       |         r3 = *(fp);
    0x0003d0d8 lsls r1, r3, 0x1e                                     |         r1 = r3 << 0x1e;
                                                                     |         if (r1 >= r3) {
    0x0003d0da bpl.w 0x3d3b0                                         |             goto label_69;
                                                                     |         }
    0x0003d0de ldr.w r3, [r8]                                        |         r3 = *(r8);
    0x0003d0e2 movs r2, 1                                            |         r2 = 1;
    0x0003d0e4 ldr r0, [sp, 0x10]                                    |         r0 = var_10h;
    0x0003d0e6 mov.w r1, 0x400                                       |         r1 = 0x400;
    0x0003d0ea bl 0x548e8                                            |         addattr32 ();
    0x0003d0ee ldrh.w r3, [fp]                                       |         r3 = *(fp);
    0x0003d0f2 lsls r2, r3, 0x1e                                     |         r2 = r3 << 0x1e;
    0x0003d0f4 bmi 0x3d02e                                           |         
                                                                     |     }
                                                                     | label_59:
    0x0003d0f6 ldr r6, [sp, 0x10]                                    |     r6 = var_10h;
    0x0003d0f8 movs r2, 0xb                                          |     r2 = 0xb;
    0x0003d0fa ldr r3, [sp, 0x30]                                    |     r3 = var_30h;
    0x0003d0fc mov.w r1, 0x400                                       |     r1 = 0x400;
    0x0003d100 mov r0, r6                                            |     r0 = r6;
    0x0003d102 bl 0x548e8                                            |     addattr32 ();
    0x0003d106 ldr r3, [sp, 0x24]                                    |     r3 = var_24h;
    0x0003d108 movs r2, 3                                            |     r2 = 3;
    0x0003d10a mov.w r1, 0x400                                       |     r1 = 0x400;
    0x0003d10e mov r0, r6                                            |     r0 = r6;
    0x0003d110 bl 0x548b0                                            |     addattr8 ();
    0x0003d114 b 0x3d074                                             |     goto label_16;
                                                                     | label_52:
    0x0003d116 ldr.w r1, [pc, 0x424]                                 |     
    0x0003d11a ldr r0, [r5]                                          |     r0 = *(r5);
    0x0003d11c add r1, pc                                            |     r1 = 0x7a65e;
    0x0003d11e bl 0x4884c                                            |     r0 = matches ();
    0x0003d122 cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x0003d124 beq.w 0x3cf8e                                         |         goto label_17;
                                                                     |     }
    0x0003d128 ldr.w r1, [pc, 0x414]                                 |     r1 = *(0x0003d540);
    0x0003d12c ldr r0, [r5]                                          |     r0 = *(r5);
    0x0003d12e add r1, pc                                            |     r1 += pc;
    0x0003d130 bl 0x4884c                                            |     r0 = matches ();
    0x0003d134 cmp r0, 0                                             |     
                                                                     |     if (r0 != 0) {
    0x0003d136 bne 0x3d220                                           |         goto label_70;
                                                                     |     }
                                                                     | label_24:
    0x0003d138 subs r4, 1                                            |     r4--;
    0x0003d13a add.w r7, r5, 4                                       |     r7 = r5 + 4;
                                                                     |     if (r4 == 1) {
    0x0003d13e beq.w 0x3d2ce                                         |         goto label_28;
                                                                     |     }
    0x0003d142 ldr r3, [sp, 0x58]                                    |     r3 = *(arg_58h);
    0x0003d144 add r6, sp, 0x58                                      |     r6 += arg_58h;
    0x0003d146 ldr r2, [r5, 4]                                       |     r2 = *((r5 + 4));
    0x0003d148 lsls r1, r3, 0x1b                                     |     r1 = r3 << 0x1b;
                                                                     |     if (r1 < r3) {
    0x0003d14a bmi.w 0x3d3ce                                         |         goto label_71;
                                                                     |     }
    0x0003d14e ldr r1, [pc, 0x3f4]                                   |     
    0x0003d150 orr r3, r3, 0x10                                      |     r3 |= 0x10;
    0x0003d154 mov r0, r2                                            |     r0 = r2;
    0x0003d156 str r2, [sp, 0x14]                                    |     var_14h = r2;
    0x0003d158 str r3, [r6]                                          |     *(r6) = r3;
    0x0003d15a add r1, pc                                            |     r1 = 0x7a6a4;
    0x0003d15c blx 0x8668                                            |     strcmp (r0, r1);
    0x0003d160 ldr r2, [sp, 0x14]                                    |     r2 = var_14h;
    0x0003d162 cmp r0, 0                                             |     
                                                                     |     if (r0 != 0) {
    0x0003d164 bne.w 0x3d292                                         |         goto label_72;
                                                                     |     }
    0x0003d168 movs r3, 1                                            |     r3 = 1;
    0x0003d16a str r3, [sp, 0x28]                                    |     var_28h = r3;
    0x0003d16c b 0x3cf14                                             |     goto label_14;
                                                                     | label_68:
    0x0003d16e ldr.w r3, [r8]                                        |     r3 = *(r8);
    0x0003d172 mov.w r1, 0x400                                       |     r1 = 0x400;
    0x0003d176 ldr r0, [sp, 0x10]                                    |     r0 = var_10h;
    0x0003d178 movs r2, 1                                            |     r2 = 1;
    0x0003d17a bl 0x548e8                                            |     addattr32 ();
    0x0003d17e ldrh.w r3, [fp]                                       |     r3 = *(fp);
    0x0003d182 lsls r1, r3, 0x1e                                     |     r1 = r3 << 0x1e;
                                                                     |     if (r1 < r3) {
    0x0003d184 bmi.w 0x3d02e                                         |         goto label_18;
                                                                     |     }
    0x0003d188 b 0x3d052                                             |     goto label_19;
                                                                     | label_54:
    0x0003d18a ldr r0, [sp, 0x10]                                    |     r0 = var_10h;
    0x0003d18c movs r3, 1                                            |     r3 = 1;
    0x0003d18e movs r2, 0xc                                          |     r2 = 0xc;
    0x0003d190 mov.w r1, 0x400                                       |     r1 = 0x400;
    0x0003d194 bl 0x548b0                                            |     addattr8 ();
    0x0003d198 b 0x3cf14                                             |     goto label_14;
                                                                     | label_60:
    0x0003d19a and r2, r5, 8                                         |     r2 = r5 & 8;
    0x0003d19e orrs r2, r3                                           |     r2 |= r3;
                                                                     |     if (r2 == r3) {
    0x0003d1a0 beq.w 0x3d070                                         |         goto label_20;
                                                                     |     }
    0x0003d1a4 ldr r3, [sp, 0x24]                                    |     r3 = var_24h;
    0x0003d1a6 movs r2, 3                                            |     r2 = 3;
    0x0003d1a8 ldr r0, [sp, 0x10]                                    |     r0 = var_10h;
    0x0003d1aa mov.w r1, 0x400                                       |     r1 = 0x400;
    0x0003d1ae bl 0x548b0                                            |     addattr8 ();
    0x0003d1b2 ldr r3, [sp, 0x1c]                                    |     r3 = var_1ch;
    0x0003d1b4 cmp r3, 0                                             |     
                                                                     |     if (r3 != 0) {
    0x0003d1b6 bne.w 0x3d070                                         |         goto label_20;
                                                                     |     }
    0x0003d1ba b 0x3d074                                             |     goto label_16;
                                                                     | label_65:
    0x0003d1bc ldr r3, [sp, 0x34]                                    |     r3 = var_34h;
    0x0003d1be movs r2, 9                                            |     r2 = 9;
    0x0003d1c0 ldr r0, [sp, 0x10]                                    |     r0 = var_10h;
    0x0003d1c2 mov.w r1, 0x400                                       |     r1 = 0x400;
    0x0003d1c6 bl 0x548b0                                            |     addattr8 ();
    0x0003d1ca lsls r0, r5, 0x15                                     |     r0 = r5 << 0x15;
                                                                     |     if (r0 >= r5) {
    0x0003d1cc bpl.w 0x3d0a6                                         |         goto label_21;
                                                                     |     }
                                                                     | label_66:
    0x0003d1d0 ldr r3, [sp, 0x3c]                                    |     r3 = var_3ch;
    0x0003d1d2 movs r2, 0xa                                          |     r2 = 0xa;
    0x0003d1d4 ldr r0, [sp, 0x10]                                    |     r0 = var_10h;
    0x0003d1d6 mov.w r1, 0x400                                       |     r1 = 0x400;
    0x0003d1da bl 0x548b0                                            |     addattr8 ();
    0x0003d1de b 0x3d0a6                                             |     goto label_21;
                                                                     | label_64:
    0x0003d1e0 ldr r3, [sp, 0x38]                                    |     r3 = var_38h;
    0x0003d1e2 movs r2, 8                                            |     r2 = 8;
    0x0003d1e4 ldr r0, [sp, 0x10]                                    |     r0 = var_10h;
    0x0003d1e6 mov.w r1, 0x400                                       |     r1 = 0x400;
    0x0003d1ea bl 0x548b0                                            |     addattr8 ();
    0x0003d1ec invalid                                               |     
                                                                     | label_63:
    0x0003d1f0 ldr r0, [sp, 0x10]                                    |     r0 = var_10h;
    0x0003d1f2 movs r2, 6                                            |     r2 = 6;
    0x0003d1f4 mov.w r1, 0x400                                       |     r1 = 0x400;
    0x0003d1f8 bl 0x5489c                                            |     addattr ();
    0x0003d1fc b 0x3d094                                             |     goto label_22;
                                                                     | label_62:
    0x0003d1fe rev16 r3, r3                                          |     __asm ("rev16 r3, r3");
    0x0003d200 ldr r0, [sp, 0x10]                                    |     r0 = var_10h;
    0x0003d202 uxth r3, r3                                           |     r3 = (int16_t) r3;
    0x0003d204 movs r2, 5                                            |     r2 = 5;
    0x0003d206 mov.w r1, 0x400                                       |     r1 = 0x400;
    0x0003d20a bl 0x548cc                                            |     addattr16 ();
    0x0003d20e b 0x3d08c                                             |     goto label_23;
                                                                     | label_61:
    0x0003d210 ldr r3, [sp, 0x24]                                    |     r3 = var_24h;
    0x0003d212 movs r2, 3                                            |     r2 = 3;
    0x0003d214 ldr r0, [sp, 0x10]                                    |     r0 = var_10h;
    0x0003d216 mov.w r1, 0x400                                       |     r1 = 0x400;
    0x0003d21a bl 0x548b0                                            |     addattr8 ();
    0x0003d21e b 0x3d070                                             |     goto label_20;
                                                                     | label_70:
    0x0003d220 ldr r1, [pc, 0x324]                                   |     
    0x0003d222 ldr r0, [r5]                                          |     r0 = *(r5);
    0x0003d224 add r1, pc                                            |     r1 = 0x7a770;
    0x0003d226 bl 0x4884c                                            |     r0 = matches ();
    0x0003d22a cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x0003d22c beq 0x3d138                                           |         goto label_24;
                                                                     |     }
    0x0003d22e ldr r1, [pc, 0x31c]                                   |     
    0x0003d230 ldr r0, [r5]                                          |     r0 = *(r5);
    0x0003d232 add r1, pc                                            |     r1 = 0x7a784;
    0x0003d234 bl 0x4884c                                            |     r0 = matches ();
    0x0003d238 cmp r0, 0                                             |     
                                                                     |     if (r0 != 0) {
    0x0003d23a bne 0x3d2da                                           |         goto label_73;
                                                                     |     }
    0x0003d23c subs r4, 1                                            |     r4--;
    0x0003d23e add.w r7, r5, 4                                       |     r7 = r5 + 4;
                                                                     |     if (r4 == 1) {
    0x0003d242 beq 0x3d2ce                                           |         goto label_28;
                                                                     |     }
    0x0003d244 ldr r3, [sp, 0x58]                                    |     r3 = *(arg_58h);
    0x0003d246 add r6, sp, 0x58                                      |     r6 += arg_58h;
    0x0003d248 ldr r5, [r5, 4]                                       |     r5 = *((r5 + 4));
    0x0003d24a lsls r0, r3, 0x12                                     |     r0 = r3 << 0x12;
                                                                     |     if (r0 < r3) {
    0x0003d24c bmi.w 0x3d3a6                                         |         goto label_74;
                                                                     |     }
    0x0003d250 ldr r1, [pc, 0x2fc]                                   |     
    0x0003d252 orr r3, r3, 0x2000                                    |     r3 |= 0x2000;
    0x0003d256 mov r0, r5                                            |     r0 = r5;
    0x0003d258 str r3, [r6]                                          |     *(r6) = r3;
    0x0003d25a add r1, pc                                            |     r1 = 0x7a7ae;
    0x0003d25c blx 0x8668                                            |     r0 = strcmp (r0, r1);
    0x0003d260 mov r3, r0                                            |     r3 = r0;
                                                                     |     if (r0 != 0) {
    0x0003d262 cbz r0, 0x3d284                                       |         
    0x0003d264 ldr r1, [pc, 0x2ec]                                   |         
    0x0003d266 mov r0, r5                                            |         r0 = r5;
    0x0003d268 add r1, pc                                            |         r1 = 0x7a7c0;
    0x0003d26a blx 0x8668                                            |         r0 = strcmp (r0, r1);
    0x0003d26e cmp r0, 0                                             |         
                                                                     |         if (r0 == 0) {
    0x0003d270 beq 0x3d328                                           |             goto label_75;
                                                                     |         }
    0x0003d272 ldr r1, [pc, 0x2e4]                                   |         
    0x0003d274 mov r0, r5                                            |         r0 = r5;
    0x0003d276 add r1, pc                                            |         r1 = 0x7a7d4;
    0x0003d278 blx 0x8668                                            |         r0 = strcmp (r0, r1);
    0x0003d27c cmp r0, 0                                             |         
                                                                     |         if (r0 != 0) {
    0x0003d27e bne.w 0x3d3e2                                         |             goto label_76;
                                                                     |         }
    0x0003d282 movs r3, 2                                            |         r3 = 2;
                                                                     |     }
                                                                     | label_26:
    0x0003d284 ldr r0, [sp, 0x10]                                    |     r0 = var_10h;
    0x0003d286 movs r2, 0xd                                          |     r2 = 0xd;
    0x0003d288 mov.w r1, 0x400                                       |     r1 = 0x400;
    0x0003d28c bl 0x548b0                                            |     addattr8 ();
    0x0003d290 b 0x3cf14                                             |     goto label_14;
                                                                     | label_72:
    0x0003d292 add r3, sp, 0x54                                      |     r3 += arg_54h;
    0x0003d294 mov r1, r2                                            |     r1 = r2;
    0x0003d296 mov r0, r3                                            |     r0 = r3;
    0x0003d298 str r3, [sp, 0x14]                                    |     var_14h = r3;
    0x0003d29a bl 0x4ad44                                            |     rtnl_dsfield_a2n ();
    0x0003d29e ldr r3, [sp, 0x14]                                    |     r3 = var_14h;
    0x0003d2a0 cmp r0, 0                                             |     
                                                                     |     if (r0 != 0) {
    0x0003d2a2 bne 0x3d336                                           |         goto label_77;
                                                                     |     }
    0x0003d2a4 ldrb r3, [r3]                                         |     r3 = *(r3);
    0x0003d2a6 str r3, [sp, 0x28]                                    |     var_28h = r3;
    0x0003d2a8 b 0x3cf14                                             |     goto label_14;
                                                                     | label_48:
    0x0003d2aa ldr r0, [pc, 0x2b0]                                   |     
    0x0003d2ac ldr r1, [r5, 4]                                       |     r1 = *((r5 + 4));
    0x0003d2ae add r0, pc                                            |     r0 = 0x7a810;
    0x0003d2b0 bl 0x486a4                                            |     invarg ();
                                                                     | label_46:
    0x0003d2b4 ldr r0, [pc, 0x2a8]                                   |     
    0x0003d2b6 movs r2, 0x2b                                         |     r2 = 0x2b;
    0x0003d2b8 ldr r3, [pc, 0x2a8]                                   |     r3 = *(0x3d564);
    0x0003d2ba add r0, pc                                            |     r0 = 0x7a81e;
                                                                     | label_25:
    0x0003d2bc ldr r4, [sp, 0x40]                                    |     r4 = *(arg_40h);
    0x0003d2be movs r1, 1                                            |     r1 = 1;
    0x0003d2c0 ldr r3, [r4, r3]                                      |     r3 = *((r4 + r3));
    0x0003d2c2 mov.w r4, -1                                          |     r4 = -1;
    0x0003d2c6 ldr r3, [r3]                                          |     r3 = *(r3);
    0x0003d2c8 blx 0x88c4                                            |     fcn_000088c4 ();
    0x0003d2cc b 0x3d0a6                                             |     goto label_21;
                                                                     |     do {
                                                                     | label_28:
    0x0003d2ce bl 0x48640                                            |         incomplete_command ();
                                                                     | label_47:
    0x0003d2d2 ldr r0, [pc, 0x294]                                   |         
    0x0003d2d4 add r0, pc                                            |         r0 = 0x7a842;
    0x0003d2d6 bl 0x48714                                            |         duparg2 ();
                                                                     | label_73:
    0x0003d2da ldr r1, [pc, 0x290]                                   |         
    0x0003d2dc ldr r0, [r5]                                          |         r0 = *(r5);
    0x0003d2de add r1, pc                                            |         r1 = 0x7a850;
    0x0003d2e0 bl 0x4884c                                            |         r0 = matches ();
    0x0003d2e4 cmp r0, 0                                             |         
                                                                     |         if (r0 != 0) {
    0x0003d2e6 bne 0x3d352                                           |             goto label_78;
                                                                     |         }
                                                                     | label_27:
    0x0003d2e8 subs r4, 1                                            |         r4--;
    0x0003d2ea add.w r7, r5, 4                                       |         r7 = r5 + 4;
    0x0003d2ee beq 0x3d2ce                                           |         
                                                                     |     } while (r4 == 1);
    0x0003d2f0 ldr r3, [sp, 0x58]                                    |     r3 = *(arg_58h);
    0x0003d2f2 add r6, sp, 0x58                                      |     r6 += arg_58h;
    0x0003d2f4 ldr r1, [r5, 4]                                       |     r1 = *((r5 + 4));
    0x0003d2f6 and r2, r3, 0x800                                     |     r2 = r3 & 0x800;
                                                                     |     if (r2 == 0) {
    0x0003d2fa cbnz r2, 0x3d34a                                      |         
    0x0003d2fc orr r3, r3, 0x800                                     |         r3 |= 0x800;
    0x0003d300 str r3, [r6]                                          |         *(r6) = r3;
    0x0003d302 add r3, sp, 0x54                                      |         r3 += arg_54h;
    0x0003d304 mov r0, r3                                            |         r0 = r3;
    0x0003d306 str r3, [sp, 0x14]                                    |         var_14h = r3;
    0x0003d308 bl 0x47ddc                                            |         get_u32 ();
    0x0003d30c ldr r3, [sp, 0x14]                                    |         r3 = var_14h;
                                                                     |         if (r0 == 0) {
    0x0003d30e cbnz r0, 0x3d340                                      |             
    0x0003d310 ldr r2, [r3]                                          |             r2 = *(r3);
    0x0003d312 lsrs r3, r2, 0x14                                     |             r3 = r2 >> 0x14;
    0x0003d314 lsls r3, r3, 0x14                                     |             r3 <<= 0x14;
                                                                     |             if (r3 != 0) {
    0x0003d316 cbnz r3, 0x3d340                                      |                 goto label_79;
                                                                     |             }
    0x0003d318 rev r3, r2                                            |             r2 = SWAP32 (r3);
    0x0003d31a str r3, [sp, 0x30]                                    |             var_30h = r3;
    0x0003d31c b 0x3cf14                                             |             goto label_14;
                                                                     | label_58:
    0x0003d31e ldr r0, [pc, 0x250]                                   |             
    0x0003d320 movs r2, 0x34                                         |             r2 = 0x34;
    0x0003d322 ldr r3, [pc, 0x240]                                   |             r3 = *(0x3d566);
    0x0003d324 add r0, pc                                            |             r0 = 0x7a89a;
    0x0003d326 b 0x3d2bc                                             |             goto label_25;
                                                                     | label_75:
    0x0003d328 movs r3, 1                                            |             r3 = 1;
    0x0003d32a b 0x3d284                                             |             goto label_26;
                                                                     | label_55:
    0x0003d32c ldr r0, [pc, 0x244]                                   |             
    0x0003d32e ldr r1, [r5, 4]                                       |             r1 = *((r5 + 4));
    0x0003d330 add r0, pc                                            |             r0 = 0x7a8a8;
    0x0003d332 bl 0x486a4                                            |             invarg ();
                                                                     | label_77:
    0x0003d336 ldr r0, [pc, 0x240]                                   |             
    0x0003d338 ldr r1, [r5, 4]                                       |             r1 = *((r5 + 4));
    0x0003d33a add r0, pc                                            |             r0 = 0x7a8b8;
    0x0003d33c bl 0x486a4                                            |             invarg ();
                                                                     |         }
                                                                     | label_79:
    0x0003d340 ldr r0, [pc, 0x238]                                   |         
    0x0003d342 ldr r1, [r5, 4]                                       |         r1 = *((r5 + 4));
    0x0003d344 add r0, pc                                            |         r0 = 0x7a8c4;
    0x0003d346 bl 0x486a4                                            |         invarg ();
                                                                     |     }
    0x0003d34a ldr r0, [pc, 0x234]                                   |     
    0x0003d34c add r0, pc                                            |     r0 = 0x7a8d2;
    0x0003d34e bl 0x48714                                            |     duparg2 ();
                                                                     | label_78:
    0x0003d352 ldr r1, [pc, 0x230]                                   |     
    0x0003d354 ldr r0, [r5]                                          |     r0 = *(r5);
    0x0003d356 add r1, pc                                            |     r1 = 0x7a8e0;
    0x0003d358 bl 0x4884c                                            |     r0 = matches ();
    0x0003d35c cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x0003d35e beq 0x3d2e8                                           |         goto label_27;
                                                                     |     }
    0x0003d360 ldr r3, [pc, 0x224]                                   |     
    0x0003d362 ldr r0, [r5]                                          |     r0 = *(r5);
    0x0003d364 add r3, pc                                            |     r3 = 0x7a8f0;
    0x0003d366 mov r1, r3                                            |     r1 = r3;
    0x0003d368 str r3, [sp, 0x14]                                    |     var_14h = r3;
    0x0003d36a bl 0x4884c                                            |     matches ();
    0x0003d36e str r0, [sp, 0x2c]                                    |     var_2ch = r0;
    0x0003d370 cmp r0, 0                                             |     
                                                                     |     if (r0 != 0) {
    0x0003d372 bne 0x3d3ec                                           |         goto label_80;
                                                                     |     }
    0x0003d374 subs r4, 1                                            |     r4--;
    0x0003d376 add.w r7, r5, 4                                       |     r7 = r5 + 4;
                                                                     |     if (r4 == 1) {
    0x0003d37a beq 0x3d2ce                                           |         goto label_28;
                                                                     |     }
    0x0003d37c ldr r3, [r5, 4]                                       |     r3 = *((r5 + 4));
    0x0003d37e add r6, sp, 0x58                                      |     r6 += arg_58h;
    0x0003d380 ldr r2, [sp, 0x14]                                    |     r2 = var_14h;
    0x0003d382 movs r1, 5                                            |     r1 = 5;
    0x0003d384 mov r0, r6                                            |     r0 = r6;
    0x0003d386 str r3, [sp, 0x44]                                    |     *(arg_44h) = r3;
    0x0003d388 bl 0x3ca10                                            |     fcn_0003ca10 (r0, r1, r2, r3, r4, r5, r6);
    0x0003d38c ldr r3, [sp, 0x44]                                    |     r3 = *(arg_44h);
    0x0003d38e ldr r2, [sp, 0x2c]                                    |     r2 = var_2ch;
    0x0003d390 ldr r0, [sp, 0x20]                                    |     r0 = var_20h;
    0x0003d392 mov r1, r3                                            |     r1 = r3;
    0x0003d394 bl 0x47e5c                                            |     r0 = get_u16 ();
    0x0003d398 cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x0003d39a beq.w 0x3cf14                                         |         goto label_14;
                                                                     |     }
    0x0003d39e ldr r1, [r5, 4]                                       |     r1 = *((r5 + 4));
    0x0003d3a0 ldr r0, [sp, 0x14]                                    |     r0 = var_14h;
    0x0003d3a2 bl 0x486a4                                            |     invarg ();
                                                                     | label_74:
    0x0003d3a6 ldr r0, [pc, 0x1e4]                                   |     
    0x0003d3a8 mov r1, r5                                            |     r1 = r5;
    0x0003d3aa add r0, pc                                            |     r0 = 0x7a93c;
    0x0003d3ac bl 0x48714                                            |     duparg2 ();
                                                                     | label_69:
    0x0003d3b0 ldr r0, [pc, 0x1dc]                                   |     
    0x0003d3b2 movs r2, 0x2a                                         |     r2 = 0x2a;
    0x0003d3b4 ldr r3, [pc, 0x1ac]                                   |     r3 = *(0x3d564);
    0x0003d3b6 add r0, pc                                            |     r0 = 0x7a94a;
    0x0003d3b8 b 0x3d2bc                                             |     goto label_25;
                                                                     | label_51:
    0x0003d3ba ldr r0, [sp, 0xc]                                     |     r0 = var_ch;
    0x0003d3bc bl 0x48714                                            |     duparg2 ();
                                                                     | label_67:
    0x0003d3c0 blx 0x87f8                                            |     fcn_000087f8 ();
                                                                     | label_53:
    0x0003d3c4 ldr r0, [pc, 0x1cc]                                   |     
    0x0003d3c6 mov r1, r3                                            |     r1 = r3;
    0x0003d3c8 add r0, pc                                            |     r0 = 0x7a960;
    0x0003d3ca bl 0x48714                                            |     duparg2 ();
                                                                     | label_71:
    0x0003d3ce ldr r0, [pc, 0x1c8]                                   |     
    0x0003d3d0 mov r1, r2                                            |     r1 = r2;
    0x0003d3d2 add r0, pc                                            |     r0 = 0x7a970;
    0x0003d3d4 bl 0x48714                                            |     duparg2 ();
                                                                     | label_56:
    0x0003d3d8 ldr r0, [pc, 0x1c0]                                   |     
    0x0003d3da ldr r1, [r5, 4]                                       |     r1 = *((r5 + 4));
    0x0003d3dc add r0, pc                                            |     r0 = 0x7a97c;
    0x0003d3de bl 0x486a4                                            |     invarg ();
                                                                     | label_76:
    0x0003d3e2 ldr r0, [pc, 0x1bc]                                   |     
    0x0003d3e4 mov r1, r5                                            |     r1 = r5;
    0x0003d3e6 add r0, pc                                            |     r0 = 0x7a98c;
    0x0003d3e8 bl 0x486a4                                            |     invarg ();
                                                                     | label_80:
    0x0003d3ec ldr r1, [pc, 0x1b4]                                   |     
    0x0003d3ee ldr r0, [r5]                                          |     r0 = *(r5);
    0x0003d3f0 add r1, pc                                            |     r1 = 0x7a998;
    0x0003d3f2 bl 0x4884c                                            |     r0 = matches ();
                                                                     |     if (r0 != 0) {
    0x0003d3f6 cbnz r0, 0x3d40e                                      |         goto label_81;
                                                                     |     }
    0x0003d3f8 ldr r3, [sp, 0x2c]                                    |     r3 = var_2ch;
                                                                     |     do {
    0x0003d3fa str r3, [sp, 0x18]                                    |         var_18h = r3;
    0x0003d3fc add r6, sp, 0x58                                      |         r6 += arg_58h;
    0x0003d3fe ldr r3, [r5]                                          |         r3 = *(r5);
    0x0003d400 movs r1, 6                                            |         r1 = 6;
    0x0003d402 mov r0, r6                                            |         r0 = r6;
    0x0003d404 mov r7, r5                                            |         r7 = r5;
    0x0003d406 mov r2, r3                                            |         r2 = r3;
    0x0003d408 bl 0x3ca10                                            |         fcn_0003ca10 (r0, r1, r2, r3, r4, r5, r6);
    0x0003d40c b 0x3cf14                                             |         goto label_14;
                                                                     | label_81:
    0x0003d40e ldr r1, [pc, 0x198]                                   |         
    0x0003d410 ldr r0, [r5]                                          |         r0 = *(r5);
    0x0003d412 add r1, pc                                            |         r1 = 0x7a9c0;
    0x0003d414 bl 0x4884c                                            |         r0 = matches ();
    0x0003d418 mov r3, r0                                            |         r3 = r0;
    0x0003d41a cmp r0, 0                                             |         
    0x0003d41c beq 0x3d3fa                                           |         
                                                                     |     } while (r0 == 0);
    0x0003d41e ldr r1, [pc, 0x18c]                                   |     
    0x0003d420 ldr r0, [r5]                                          |     r0 = *(r5);
    0x0003d422 add r1, pc                                            |     r1 = 0x7a9d4;
    0x0003d424 bl 0x4884c                                            |     r0 = matches ();
                                                                     |     if (r0 == 0) {
    0x0003d428 cbnz r0, 0x3d440                                      |         
    0x0003d42a ldr r3, [r5]                                          |         r3 = *(r5);
    0x0003d42c add r6, sp, 0x58                                      |         r6 += arg_58h;
    0x0003d42e movs r2, 1                                            |         r2 = 1;
    0x0003d430 movs r1, 8                                            |         r1 = 8;
    0x0003d432 str r2, [sp, 0x38]                                    |         var_38h = r2;
    0x0003d434 mov r0, r6                                            |         r0 = r6;
    0x0003d436 mov r2, r3                                            |         r2 = r3;
    0x0003d438 mov r7, r5                                            |         r7 = r5;
    0x0003d43a bl 0x3ca10                                            |         fcn_0003ca10 (r0, r1, r2, r3, r4, r5, r6);
    0x0003d43e b 0x3cf14                                             |         goto label_14;
                                                                     |     }
    0x0003d440 ldr r1, [pc, 0x16c]                                   |     
    0x0003d442 ldr r0, [r5]                                          |     r0 = *(r5);
    0x0003d444 add r1, pc                                            |     r1 = 0x7a9f8;
    0x0003d446 bl 0x4884c                                            |     r0 = matches ();
                                                                     |     if (r0 == 0) {
    0x0003d44a cbnz r0, 0x3d460                                      |         
    0x0003d44c ldr r3, [r5]                                          |         r3 = *(r5);
    0x0003d44e add r6, sp, 0x58                                      |         r6 += arg_58h;
    0x0003d450 str r0, [sp, 0x38]                                    |         var_38h = r0;
    0x0003d452 movs r1, 8                                            |         r1 = 8;
    0x0003d454 mov r0, r6                                            |         r0 = r6;
    0x0003d456 mov r7, r5                                            |         r7 = r5;
    0x0003d458 mov r2, r3                                            |         r2 = r3;
    0x0003d45a bl 0x3ca10                                            |         fcn_0003ca10 (r0, r1, r2, r3, r4, r5, r6);
    0x0003d45e b 0x3cf14                                             |         goto label_14;
                                                                     |     }
    0x0003d460 ldr r1, [pc, 0x150]                                   |     
    0x0003d462 ldr r0, [r5]                                          |     r0 = *(r5);
    0x0003d464 add r1, pc                                            |     r1 = 0x7aa1c;
    0x0003d466 bl 0x4884c                                            |     r0 = matches ();
                                                                     |     if (r0 == 0) {
    0x0003d46a cbnz r0, 0x3d482                                      |         
    0x0003d46c ldr r3, [r5]                                          |         r3 = *(r5);
    0x0003d46e add r6, sp, 0x58                                      |         r6 += arg_58h;
    0x0003d470 movs r2, 1                                            |         r2 = 1;
    0x0003d472 movs r1, 9                                            |         r1 = 9;
    0x0003d474 str r2, [sp, 0x34]                                    |         var_34h = r2;
    0x0003d476 mov r0, r6                                            |         r0 = r6;
    0x0003d478 mov r2, r3                                            |         r2 = r3;
    0x0003d47a mov r7, r5                                            |         r7 = r5;
    0x0003d47c bl 0x3ca10                                            |         fcn_0003ca10 (r0, r1, r2, r3, r4, r5, r6);
    0x0003d480 b 0x3cf14                                             |         goto label_14;
                                                                     |     }
    0x0003d482 ldr r1, [pc, 0x134]                                   |     
    0x0003d484 ldr r0, [r5]                                          |     r0 = *(r5);
    0x0003d486 add r1, pc                                            |     r1 = 0x7aa44;
    0x0003d488 bl 0x4884c                                            |     r0 = matches ();
                                                                     |     if (r0 == 0) {
    0x0003d48c cbnz r0, 0x3d4a2                                      |         
    0x0003d48e ldr r3, [r5]                                          |         r3 = *(r5);
    0x0003d490 add r6, sp, 0x58                                      |         r6 += arg_58h;
    0x0003d492 str r0, [sp, 0x34]                                    |         var_34h = r0;
    0x0003d494 movs r1, 9                                            |         r1 = 9;
    0x0003d496 mov r0, r6                                            |         r0 = r6;
    0x0003d498 mov r7, r5                                            |         r7 = r5;
    0x0003d49a mov r2, r3                                            |         r2 = r3;
    0x0003d49c bl 0x3ca10                                            |         fcn_0003ca10 (r0, r1, r2, r3, r4, r5, r6);
    0x0003d4a0 b 0x3cf14                                             |         goto label_14;
                                                                     |     }
    0x0003d4a2 ldr r1, [pc, 0x118]                                   |     
    0x0003d4a4 ldr r0, [r5]                                          |     r0 = *(r5);
    0x0003d4a6 add r1, pc                                            |     r1 = 0x7aa68;
    0x0003d4a8 bl 0x4884c                                            |     r0 = matches ();
                                                                     |     if (r0 == 0) {
    0x0003d4ac cbnz r0, 0x3d4c4                                      |         
    0x0003d4ae ldr r3, [r5]                                          |         r3 = *(r5);
    0x0003d4b0 add r6, sp, 0x58                                      |         r6 += arg_58h;
    0x0003d4b2 movs r2, 1                                            |         r2 = 1;
    0x0003d4b4 movs r1, 0xa                                          |         r1 = 0xa;
    0x0003d4b6 str r2, [sp, 0x3c]                                    |         var_3ch = r2;
    0x0003d4b8 mov r0, r6                                            |         r0 = r6;
    0x0003d4ba mov r2, r3                                            |         r2 = r3;
    0x0003d4bc mov r7, r5                                            |         r7 = r5;
    0x0003d4be bl 0x3ca10                                            |         fcn_0003ca10 (r0, r1, r2, r3, r4, r5, r6);
    0x0003d4c2 b 0x3cf14                                             |         goto label_14;
                                                                     |     }
    0x0003d4c4 ldr r1, [pc, 0xf8]                                    |     
    0x0003d4c6 ldr r0, [r5]                                          |     r0 = *(r5);
    0x0003d4c8 add r1, pc                                            |     r1 = 0x7aa8c;
    0x0003d4ca bl 0x4884c                                            |     r0 = matches ();
                                                                     |     if (r0 == 0) {
    0x0003d4ce cbnz r0, 0x3d4e4                                      |         
    0x0003d4d0 ldr r3, [r5]                                          |         r3 = *(r5);
    0x0003d4d2 add r6, sp, 0x58                                      |         r6 += arg_58h;
    0x0003d4d4 str r0, [sp, 0x3c]                                    |         var_3ch = r0;
    0x0003d4d6 movs r1, 0xa                                          |         r1 = 0xa;
    0x0003d4d8 mov r0, r6                                            |         r0 = r6;
    0x0003d4da mov r7, r5                                            |         r7 = r5;
    0x0003d4dc mov r2, r3                                            |         r2 = r3;
    0x0003d4de bl 0x3ca10                                            |         fcn_0003ca10 (r0, r1, r2, r3, r4, r5, r6);
    0x0003d4e2 b 0x3cf14                                             |         goto label_14;
                                                                     |     }
    0x0003d4e4 ldr r1, [pc, 0xdc]                                    |     
    0x0003d4e6 ldr r0, [r5]                                          |     r0 = *(r5);
    0x0003d4e8 add r1, pc                                            |     r1 = 0x7aab0;
    0x0003d4ea bl 0x4884c                                            |     r0 = matches ();
                                                                     |     if (r0 != 0) {
    0x0003d4ee cbz r0, 0x3d504                                       |         
    0x0003d4f0 ldr r0, [pc, 0x70]                                    |         
    0x0003d4f2 movs r1, 1                                            |         r1 = 1;
    0x0003d4f4 ldr r4, [sp, 0x40]                                    |         r4 = *(arg_40h);
    0x0003d4f6 ldr r2, [pc, 0xd0]                                    |         
    0x0003d4f8 ldr r3, [r5]                                          |         r3 = *(r5);
    0x0003d4fa ldr r0, [r4, r0]                                      |         r0 = *((r4 + r0));
    0x0003d4fc add r2, pc                                            |         r2 = 0x7aaca;
    0x0003d4fe ldr r0, [r0]                                          |         r0 = *(0x3d564);
    0x0003d500 blx 0x8be8                                            |         fcn_00008be8 ();
                                                                     |     }
    0x0003d504 mov.w r4, -1                                          |     r4 = -1;
    0x0003d508 bl 0x3c9d4                                            |     fcn_0003c9d4 ();
    0x0003d50c b 0x3d0a6                                             |     goto label_21;
                                                                     | }
    ; assembly                               | /* r2dec pseudo code output */
                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/ip.iproute2 @ 0x1dba0 */
                                             | #include <stdint.h>
                                             |  
    ; (fcn) sym.iplink_types_usage ()        | void iplink_types_usage () {
    0x0001dba0 ldr r3, [pc, 0x18]            |     
    0x0001dba2 movw r2, 0x181                |     r2 = 0x181;
    0x0001dba6 ldr.w ip, [pc, 0x18]          |     ip = *(0x1dbc2);
    0x0001dbaa movs r1, 1                    |     r1 = 1;
    0x0001dbac ldr r0, [pc, 0x14]            |     
    0x0001dbae add r3, pc                    |     
    0x0001dbb0 ldr.w r3, [r3, ip]            |     
    0x0001dbb4 add r0, pc                    |     r0 = 0x3b77c;
    0x0001dbb6 ldr r3, [r3]                  |     r3 = *(0x3b76e);
    0x0001dbb8 b.w 0x88c0                    |     return void (*0x88c0)() ();
                                             | }

[*] Function strcat used 1 times ip.iproute2