[*] Binary protection state of libncurses.so.5.9

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


[*] Function fprintf tear down of libncurses.so.5.9

    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/libncurses.so.5.9 @ 0xe4d8 */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) sym._nc_setupscreen ()                               | void nc_setupscreen (int16_t arg_13ch, int16_t arg_148h, int16_t arg_178h, int16_t arg_59ch, int16_t arg_78h, int16_t arg_b8h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
                                                                 |     int16_t var_0h;
                                                                 |     int16_t var_4h;
                                                                 |     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_32h;
                                                                 |     int16_t var_33h;
                                                                 |     size_t nbytes;
                                                                 |     int16_t var_38h;
                                                                 |     int16_t var_3ch;
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
                                                                 |     r2 = arg3;
                                                                 |     r3 = arg4;
    0x0000e4d8 svcmi 0xf0e92d                                    |     __asm ("svcmi aav.0x000000ff");
    0x0000e4dc mov r6, r3                                        |     r6 = r3;
    0x0000e4de vpush {d8, d9}                                    |     __asm ("vpush {d8, d9}");
    0x0000e4e2 sub sp, 0x44                                      |     
    0x0000e4e4 mov r5, r2                                        |     r5 = r2;
    0x0000e4e6 strd r1, r0, [sp, 0x28]                           |     __asm ("strd r1, r0, [var_28h]");
    0x0000e4ea ldr.w r1, [pc, 0x444]                             |     r1 = *(0x0000e930);
    0x0000e4ee ldr.w r4, [pc, 0x444]                             |     r4 = *(0x0000e934);
    0x0000e4f2 ldr.w r0, [pc, 0x444]                             |     r0 = *(0x0000e938);
    0x0000e4f6 add r1, pc                                        |     r1 += pc;
    0x0000e4f8 ldr.w r3, [pc, 0x440]                             |     r3 = *(0xe93c);
    0x0000e4fc str r1, [sp, 0x20]                                |     var_20h = r1;
    0x0000e4fe add r4, pc                                        |     r4 += pc;
    0x0000e500 ldr.w r1, [pc, 0x43c]                             |     
    0x0000e504 add r0, pc                                        |     r0 += pc;
    0x0000e506 ldr.w r2, [pc, 0x43c]                             |     r2 = *(0x0000e944);
    0x0000e50a str r0, [sp, 0x1c]                                |     var_1ch = r0;
    0x0000e50c movs r0, 1                                        |     r0 = 1;
    0x0000e50e add r1, pc                                        |     r1 = 0x1ce52;
    0x0000e510 str r4, [sp, 0x18]                                |     var_18h = r4;
    0x0000e512 ldr r3, [r1, r3]                                  |     
    0x0000e514 add r2, pc                                        |     r2 += pc;
    0x0000e516 ldr.w r8, [pc, 0x430]                             |     
    0x0000e51a movw r1, 0x51c                                    |     r1 = 0x51c;
    0x0000e51e ldr r3, [r3]                                      |     r3 = *(0x1ce52);
    0x0000e520 str r3, [sp, 0x3c]                                |     var_3ch = r3;
    0x0000e522 mov.w r3, 0                                       |     r3 = 0;
    0x0000e526 str r2, [sp, 0x24]                                |     var_24h = r2;
    0x0000e528 vldr d8, [sp, 0x18]                               |     __asm ("vldr d8, [sp, 0x18]");
    0x0000e52c vldr d9, [sp, 0x20]                               |     __asm ("vldr d9, [sp, 0x20]");
    0x0000e530 add r8, pc                                        |     r8 = 0x1ce7e;
    0x0000e532 blx 0x48c8                                        |     strstr (r0, r1);
    0x0000e536 ldr.w r3, [pc, 0x414]                             |     r3 = *(0xe94e);
    0x0000e53a ldr.w r3, [r8, r3]                                |     r3 = *(0x1ce7e);
    0x0000e53e str r3, [sp, 0xc]                                 |     var_ch = r3;
    0x0000e540 str r0, [r3]                                      |     *(r3) = r0;
    0x0000e542 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0000e544 beq.w 0xeb34                                      |         goto label_12;
                                                                 |     }
    0x0000e548 mov r4, r0                                        |     r4 = r0;
    0x0000e54a movs r1, 4                                        |     r1 = 4;
    0x0000e54c movs r0, 0x80                                     |     r0 = 0x80;
    0x0000e54e blx 0x48c8                                        |     strstr (r0, r1);
    0x0000e552 str.w r0, [r4, 0x394]                             |     __asm ("str.w r0, aav.0x000000ff");
    0x0000e556 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0000e558 beq.w 0xeb34                                      |         goto label_12;
                                                                 |     }
    0x0000e55c movs r1, 1                                        |     r1 = 1;
    0x0000e55e movs r0, 0x80                                     |     r0 = 0x80;
    0x0000e560 blx 0x48c8                                        |     strstr (r0, r1);
    0x0000e564 str.w r0, [r4, 0x398]                             |     __asm ("str.w r0, aav.0x000000ff");
    0x0000e568 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0000e56a beq.w 0xeb34                                      |         goto label_12;
                                                                 |     }
    0x0000e56e ldr r3, [pc, 0x3e0]                               |     r3 = *(0xe952);
    0x0000e570 movs r1, 4                                        |     r1 = 4;
    0x0000e572 movs r0, 1                                        |     r0 = 1;
    0x0000e574 ldr.w r3, [r8, r3]                                |     r3 = *((r8 + r3));
    0x0000e578 ldr r2, [r3]                                      |     r2 = *(0xe952);
    0x0000e57a str r4, [r3]                                      |     *(r3) = r4;
    0x0000e57c str.w r2, [r4, 0x490]                             |     __asm ("str.w r2, aav.0x000000ff");
    0x0000e580 blx 0x48c8                                        |     strstr (r0, r1);
    0x0000e584 str.w r0, [r4, 0x2b0]                             |     __asm ("str.w r0, aav.0x000000ff");
    0x0000e588 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0000e58a beq.w 0xeb34                                      |         goto label_12;
                                                                 |     }
    0x0000e58e ldr r3, [pc, 0x3c4]                               |     r3 = *(0xe956);
    0x0000e590 add r2, sp, 0x28                                  |     r2 += var_28h;
    0x0000e592 add r1, sp, 0x2c                                  |     r1 += var_2ch;
    0x0000e594 mov r0, r4                                        |     r0 = r4;
    0x0000e596 ldr.w sb, [r8, r3]                                |     sb = *((r8 + r3));
    0x0000e59a ldr.w r3, [sb]                                    |     r3 = *(sb);
    0x0000e59e str r3, [r4, 0x20]                                |     *((r4 + 0x20)) = r3;
    0x0000e5a0 blx 0x4c68                                        |     fcn_00004c68 ();
    0x0000e5a4 ldr r3, [pc, 0x3b0]                               |     r3 = *(0xe958);
    0x0000e5a6 cmp r6, 0                                         |     
    0x0000e5a8 ldr r2, [pc, 0x3b0]                               |     r2 = *(0xe95c);
    0x0000e5aa ldr r1, [sp, 0x28]                                |     r1 = var_28h;
    0x0000e5ac ldr.w r7, [r8, r3]                                |     r7 = *((r8 + r3));
    0x0000e5b0 ldr r3, [sp, 0x2c]                                |     r3 = var_2ch;
    0x0000e5b2 str r3, [r7]                                      |     *(r7) = r3;
    0x0000e5b4 ldr.w r2, [r8, r2]                                |     r2 = *((r8 + r2));
    0x0000e5b8 it eq                                             |     
                                                                 |     if (r6 == 0) {
    0x0000e5ba sxtheq r3, r3                                     |         __asm ("sxtheq r3, r3");
                                                                 |     }
    0x0000e5bc str r1, [r2]                                      |     *(r2) = r1;
    0x0000e5be ite ne                                            |     
                                                                 |     if (r6 == 0) {
    0x0000e5c0 movne r2, 1                                       |         r2 = 1;
                                                                 |     }
                                                                 |     if (r6 != 0) {
    0x0000e5c2 moveq r2, 0                                       |         r2 = 0;
                                                                 |     }
    0x0000e5c4 strb r2, [r4, 0x18]                               |     *((r4 + 0x18)) = r2;
                                                                 |     if (r6 != 0) {
    0x0000e5c6 bne.w 0xeab4                                      |         goto label_13;
                                                                 |     }
                                                                 | label_4:
    0x0000e5ca mov r0, r5                                        |     r0 = r5;
    0x0000e5cc strh.w r1, [r4, 0x62]                             |     *((r4 + 0x62)) = r1;
    0x0000e5d0 strh.w r3, [r4, 0x60]                             |     *((r4 + 0x60)) = r3;
    0x0000e5d4 strh.w r3, [r4, 0x64]                             |     *((r4 + 0x64)) = r3;
    0x0000e5d8 blx 0x499c                                        |     fcn_0000499c ();
    0x0000e5dc mov.w r0, -1                                      |     r0 = -1;
                                                                 |     if (r5 != 0) {
    0x0000e5e0 cbz r5, 0xe5e8                                    |         
    0x0000e5e2 mov r0, r5                                        |         r0 = r5;
    0x0000e5e4 blx 0x506c                                        |         fcn_0000506c ();
                                                                 |     }
    0x0000e5e8 ldr r3, [sp, 0x28]                                |     r3 = var_28h;
    0x0000e5ea strd r0, r5, [r4, 4]                              |     __asm ("strd r0, r5, [r4, 4]");
    0x0000e5ee ldr r0, [sp, 0x2c]                                |     r0 = var_2ch;
    0x0000e5f0 adds r3, 6                                        |     r3 += 6;
    0x0000e5f2 adds r0, 2                                        |     r0 += 2;
    0x0000e5f4 mul r0, r3, r0                                    |     r0 = r3 * r0;
    0x0000e5f8 str r0, [r4, 0x10]                                |     *((r4 + 0x10)) = r0;
    0x0000e5fa blx 0x4e24                                        |     fcn_00004e24 ();
    0x0000e5fe str r0, [r4, 0xc]                                 |     *((r4 + 0xc)) = r0;
    0x0000e600 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0000e602 beq.w 0xeb80                                      |         goto label_14;
                                                                 |     }
                                                                 | label_11:
    0x0000e606 vmov.i8 d16, 0xff                                 |     __asm ("vmov.i8 d16, 0xff");
    0x0000e60a add.w r1, r4, 0x2cc                               |     r1 = r4 + 0x2cc;
    0x0000e60e vldr d18, [pc, 0x308]                             |     __asm ("vldr d18, aav.0x000000ff");
    0x0000e612 vldr d19, [pc, 0x30c]                             |     __asm ("vldr d19, aav.0x000000ff");
    0x0000e616 movs r5, 0                                        |     r5 = 0;
    0x0000e618 ldr r3, [pc, 0x344]                               |     r3 = *(0xe960);
    0x0000e61a add.w r2, r4, 0x2bc                               |     r2 = r4 + 0x2bc;
    0x0000e61e mov.w r6, -1                                      |     r6 = -1;
    0x0000e622 str r5, [r4, 0x14]                                |     *((r4 + 0x14)) = r5;
    0x0000e624 str.w r6, [r4, 0x2c4]                             |     __asm ("str.w r6, aav.0x000000ff");
    0x0000e628 mov r0, r4                                        |     r0 = r4;
    0x0000e62a vst1.32 {d18, d19}, [r1]                          |     __asm ("vst1.32 {d18, d19}, [r1]");
    0x0000e62e movs r1, 2                                        |     r1 = 2;
    0x0000e630 strh.w r6, [r4, 0x2a4]                            |     *((r4 + 0x2a4)) = r6;
    0x0000e634 str.w r1, [r4, 0x2ac]                             |     __asm ("str.w r1, aav.0x000000ff");
    0x0000e638 vst1.32 {d16}, [r2]                               |     __asm ("vst1.32 {d16}, [r2]");
    0x0000e63c ldr.w r3, [r8, r3]                                |     r3 = *((r8 + r3));
    0x0000e640 str.w r5, [r4, 0x4b0]                             |     __asm ("str.w r5, aav.0x000000ff");
    0x0000e644 str.w r3, [r4, 0x4ac]                             |     __asm ("str.w r3, aav.0x000000ff");
    0x0000e648 blx 0x494c                                        |     nc_getenv_num ();
    0x0000e64c ldr r0, [pc, 0x314]                               |     
    0x0000e64e strh.w r5, [r4, 0x506]                            |     *((r4 + 0x506)) = r5;
    0x0000e652 add.w r5, r4, 0x508                               |     r5 = r4 + 0x508;
    0x0000e656 vldr d16, [pc, 0x2d0]                             |     __asm ("vldr d16, aav.0x000000ff");
    0x0000e65a add r0, pc                                        |     r0 = 0x1cfc2;
    0x0000e65c vstr d16, [r5]                                    |     __asm ("vstr d16, [r5]");
    0x0000e660 blx 0x4e08                                        |     r0 = fcn_00004e08 ();
                                                                 |     if (r0 != 0) {
    0x0000e664 cbz r0, 0xe6c6                                    |         
    0x0000e666 ldr r1, [pc, 0x300]                               |         
    0x0000e668 add.w r3, sp, 0x33                                |         r3 += var_33h;
    0x0000e66c str r3, [sp, 4]                                   |         var_4h = r3;
    0x0000e66e add r3, sp, 0x38                                  |         r3 += var_38h;
    0x0000e670 str r3, [sp]                                      |         *(sp) = r3;
    0x0000e672 add r2, sp, 0x34                                  |         r2 += nbytes;
    0x0000e674 add r1, pc                                        |         r1 = 0x1cfe2;
    0x0000e676 add.w r3, sp, 0x32                                |         r3 += var_32h;
    0x0000e67a blx 0x4fc4                                        |         r0 = write (r0, r1, r2);
    0x0000e67e cmp r0, 0                                         |         
                                                                 |         if (r0 <= 0) {
    0x0000e680 ble 0xe6c6                                        |             goto label_15;
                                                                 |         }
    0x0000e682 ldr r3, [sp, 0x34]                                |         r3 = nbytes;
    0x0000e684 cmp r3, 0                                         |         
    0x0000e686 it lt                                             |         
                                                                 |         if (r3 >= 0) {
    0x0000e688 movlt r3, r6                                      |             r3 = r6;
                                                                 |         }
                                                                 |         if (r3 >= 0) {
    0x0000e68a blt 0xe69c                                        |             
    0x0000e68c ldr.w r2, [sb]                                    |             r2 = *(sb);
    0x0000e690 ldr r2, [r2, 0xc]                                 |             r2 = *((r2 + 0xc));
    0x0000e692 ldrsh.w r2, [r2, 0x1a]                            |             r2 = *((r2 + 0x1a));
    0x0000e696 cmp r3, r2                                        |             
    0x0000e698 it ge                                             |             
                                                                 |             if (r3 >= r2) {
    0x0000e69a movge r3, r6                                      |                 r3 = r6;
                                                                 |                 goto label_16;
                                                                 |             }
                                                                 |         }
                                                                 | label_16:
    0x0000e69c cmp r0, 2                                         |         
    0x0000e69e str.w r3, [r4, 0x508]                             |         __asm ("str.w r3, aav.0x000000ff");
                                                                 |         if (r0 <= 2) {
    0x0000e6a2 ble 0xe6c6                                        |             goto label_15;
                                                                 |         }
    0x0000e6a4 ldr r3, [sp, 0x38]                                |         r3 = var_38h;
    0x0000e6a6 cmp r3, 0                                         |         
    0x0000e6a8 it lt                                             |         
                                                                 |         if (r3 >= 0) {
    0x0000e6aa movlt r3, -1                                      |             r3 = -1;
                                                                 |         }
                                                                 |         if (r3 >= 0) {
    0x0000e6ae blt 0xe6c2                                        |             
    0x0000e6b0 ldr.w r2, [sb]                                    |             r2 = *(sb);
    0x0000e6b4 ldr r2, [r2, 0xc]                                 |             r2 = *((r2 + 0xc));
    0x0000e6b6 ldrsh.w r2, [r2, 0x1a]                            |             r2 = *((r2 + 0x1a));
    0x0000e6ba cmp r3, r2                                        |             
    0x0000e6bc it ge                                             |             
                                                                 |             if (r3 >= r2) {
    0x0000e6be movge r3, -1                                      |                 r3 = -1;
                                                                 |                 goto label_17;
                                                                 |             }
                                                                 |         }
                                                                 | label_17:
    0x0000e6c2 str.w r3, [r4, 0x50c]                             |         __asm ("str.w r3, aav.0x000000ff");
                                                                 |     }
                                                                 | label_15:
    0x0000e6c6 ldr r6, [pc, 0x2a4]                               |     
    0x0000e6c8 add r6, pc                                        |     r6 = 0x1d03a;
    0x0000e6ca mov r0, r6                                        |     r0 = r6;
    0x0000e6cc blx 0x4e08                                        |     r0 = fcn_00004e08 ();
    0x0000e6d0 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x0000e6d2 beq 0xe75a                                        |         
    0x0000e6d4 mov r0, r6                                        |         r0 = r6;
    0x0000e6d6 blx 0x4e08                                        |         fcn_00004e08 ();
    0x0000e6da mov r1, r5                                        |         r1 = r5;
    0x0000e6dc addw r5, r4, 0x50c                                |         __asm ("addw r5, r4, aav.0x000000ff");
    0x0000e6e0 bl 0xe124                                         |         fcn_0000e124 (r0, r1, r2, r3);
    0x0000e6e4 mov r1, r5                                        |         r1 = r5;
    0x0000e6e6 bl 0xe124                                         |         r0 = fcn_0000e124 (r0, r1, r2, r3);
    0x0000e6ea ldrb r3, [r0]                                     |         r3 = *(r0);
    0x0000e6ec cmp r3, 0                                         |         
                                                                 |         if (r3 != 0) {
    0x0000e6ee bne.w 0xeb26                                      |             goto label_18;
                                                                 |         }
                                                                 | label_9:
    0x0000e6f2 ldr.w r6, [sb]                                    |         r6 = *(sb);
    0x0000e6f6 ldr.w sl, [r4, 0x508]                             |         sl = *((r4 + 0x508));
    0x0000e6fa ldr r3, [r6, 0xc]                                 |         r3 = *((r6 + 0xc));
    0x0000e6fc ldrsh.w r5, [r3, 0x1a]                            |         r5 = *((r3 + 0x1a));
    0x0000e700 cmp sl, r5                                        |         
                                                                 |         if (sl >= r5) {
    0x0000e702 blt 0xe72c                                        |             
    0x0000e704 ldr.w fp, [r6, 0x10]                              |             fp = *((r6 + 0x10));
    0x0000e708 ldr.w r0, [fp, 0x59c]                             |             r0 = *(arg_59ch);
    0x0000e70c cmp r0, 0                                         |             
                                                                 |             if (r0 == 0) {
    0x0000e70e beq.w 0xeb06                                      |                 goto label_19;
                                                                 |             }
    0x0000e712 ldr r1, [pc, 0x25c]                               |             
    0x0000e714 add r1, pc                                        |             r1 = 0x1d08a;
    0x0000e716 blx 0x4904                                        |             r0 = fcn_00004904 ();
    0x0000e71a cmp r0, 0                                         |             
                                                                 |             if (r0 != 0) {
    0x0000e71c bne.w 0xeb06                                      |                 goto label_19;
                                                                 |             }
    0x0000e720 ldr r0, [pc, 0x250]                               |             
    0x0000e722 add r0, pc                                        |             r0 = 0x1d09a;
    0x0000e724 blx 0x4bc4                                        |             fcn_00004bc4 ();
    0x0000e728 str.w r0, [fp, 0x59c]                             |             __asm ("str.w r0, [arg_59ch]");
                                                                 |         }
    0x0000e72c ldr.w sl, [r4, 0x50c]                             |         sl = *((r4 + 0x50c));
    0x0000e730 cmp r5, sl                                        |         
                                                                 |         if (r5 > sl) {
    0x0000e732 bgt 0xe75a                                        |             goto label_6;
                                                                 |         }
                                                                 | label_7:
    0x0000e734 ldr r6, [r6, 0x10]                                |         r6 = *((r6 + 0x10));
    0x0000e736 ldr.w r0, [r6, 0x5a0]                             |         r0 = *((r6 + 0x5a0));
    0x0000e73a cmp r0, 0                                         |         
                                                                 |         if (r0 == 0) {
    0x0000e73c beq.w 0xeaf8                                      |             goto label_20;
                                                                 |         }
    0x0000e740 ldr r1, [pc, 0x234]                               |         
    0x0000e742 add r1, pc                                        |         r1 = 0x1d0be;
    0x0000e744 blx 0x4904                                        |         r0 = fcn_00004904 ();
    0x0000e748 cmp r0, 0                                         |         
                                                                 |         if (r0 != 0) {
    0x0000e74a bne.w 0xeaf8                                      |             goto label_20;
                                                                 |         }
    0x0000e74e ldr r0, [pc, 0x22c]                               |         
    0x0000e750 add r0, pc                                        |         r0 = 0x1d0d2;
    0x0000e752 blx 0x4bc4                                        |         fcn_00004bc4 ();
    0x0000e756 str.w r0, [r6, 0x5a0]                             |         __asm ("str.w r0, aav.0x000000ff");
                                                                 |     }
                                                                 | label_6:
    0x0000e75a ldr r3, [pc, 0x224]                               |     
    0x0000e75c add.w r2, r4, 0x3ac                               |     r2 = r4 + 0x3ac;
    0x0000e760 movs r1, 0xa6                                     |     r1 = 0xa6;
    0x0000e762 str.w r1, [r4, 0x3a8]                             |     __asm ("str.w r1, aav.0x000000ff");
    0x0000e766 add r3, pc                                        |     r3 = 0x1d0ec;
    0x0000e768 vst1.32 {d8, d9}, [r2]                            |     __asm ("vst1.32 {d8, d9}, [r2]");
    0x0000e76c str.w r3, [r4, 0x3bc]                             |     __asm ("str.w r3, aav.0x000000ff");
    0x0000e770 mov.w r3, -1                                      |     r3 = -1;
    0x0000e774 str.w r3, [r4, 0x3c0]                             |     __asm ("str.w r3, aav.0x000000ff");
    0x0000e778 blx 0x4c38                                        |     fcn_00004c38 ();
    0x0000e77c str.w r0, [r4, 0x388]                             |     __asm ("str.w r0, aav.0x000000ff");
    0x0000e780 blx 0x4a04                                        |     r0 = fcn_00004a04 ();
    0x0000e784 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x0000e786 bne.w 0xe9fa                                      |         goto label_21;
                                                                 |     }
    0x0000e78a ldr.w r3, [sb]                                    |     r3 = *(sb);
    0x0000e78e ldr r3, [r3, 0xc]                                 |     r3 = *((r3 + 0xc));
    0x0000e790 ldrsh.w r3, [r3, 8]                               |     r3 = *((r3 + 8));
    0x0000e794 cmp r3, 0                                         |     
                                                                 |     if (r3 >= 0) {
    0x0000e796 bge.w 0xea16                                      |         goto label_22;
                                                                 |     }
                                                                 | label_2:
    0x0000e79a blx 0x512c                                        |     r0 = fcn_0000512c ();
    0x0000e79e cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x0000e7a0 bne.w 0xea8c                                      |         goto label_23;
                                                                 |     }
                                                                 | label_3:
    0x0000e7a4 blx 0x4e60                                        |     fcn_00004e60 ();
    0x0000e7a8 blx 0x4a80                                        |     r0 = fcn_00004a80 ();
                                                                 |     if (r0 == 0) {
    0x0000e7ac cbz r0, 0xe7ca                                    |         goto label_24;
                                                                 |     }
    0x0000e7ae ldrb r3, [r0]                                     |     r3 = *(r0);
    0x0000e7b0 cmp r3, 0x43                                      |     
    0x0000e7b2 beq 0xe7c4                                        |     
                                                                 |     while (r3 != 0) {
    0x0000e7b4 ldr r1, [pc, 0x1cc]                               |         
    0x0000e7b6 add r1, pc                                        |         r1 = 0x1d13e;
    0x0000e7b8 blx 0x4904                                        |         r0 = fcn_00004904 ();
    0x0000e7bc clz r0, r0                                        |         r0 &= r0;
    0x0000e7c0 lsrs r0, r0, 5                                    |         r0 >>= 5;
    0x0000e7c2 b 0xe7cc                                          |         goto label_25;
    0x0000e7c4 ldrb r3, [r0, 1]                                  |         r3 = *((r0 + 1));
    0x0000e7c6 cmp r3, 0                                         |         
    0x0000e7c8 bne 0xe7b4                                        |         
                                                                 |     }
                                                                 | label_24:
    0x0000e7ca movs r0, 1                                        |     r0 = 1;
                                                                 | label_25:
    0x0000e7cc vmov.i32 d16, 0                                   |     __asm ("vmov.i32 d16, 0");
    0x0000e7d0 addw r2, r4, 0x494                                |     __asm ("addw r2, r4, aav.0x000000ff");
    0x0000e7d4 movs r3, 0                                        |     r3 = 0;
    0x0000e7d6 mov.w r5, 0x100                                   |     r5 = 0x100;
    0x0000e7da str.w r0, [r4, 0x4f4]                             |     __asm ("str.w r0, aav.0x000000ff");
    0x0000e7de strh.w r5, [r4, 0x39e]                            |     *((r4 + 0x39e)) = r5;
    0x0000e7e2 ldrd r1, r0, [sp, 0x28]                           |     __asm ("ldrd r1, r0, [var_28h]");
    0x0000e7e4 asrs r2, r1, 0x20                                 |     r2 = r1 >> 0x20;
    0x0000e7e6 vst1.32 {d16}, [r2]                               |     __asm ("vst1.32 {d16}, [r2]");
    0x0000e7e8 lsls r7, r1, 0x1e                                 |     r7 = r1 << 0x1e;
    0x0000e7ea mov r2, r3                                        |     r2 = r3;
    0x0000e7ec blx 0x4ce0                                        |     fcn_00004ce0 ();
    0x0000e7f0 str r0, [r4, 0x6c]                                |     *((r4 + 0x6c)) = r0;
    0x0000e7f2 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0000e7f4 beq.w 0xeb2e                                      |         goto label_26;
                                                                 |     }
    0x0000e7f8 movs r3, 0                                        |     r3 = 0;
    0x0000e7fa ldrd r1, r0, [sp, 0x28]                           |     __asm ("ldrd r1, r0, [var_28h]");
    0x0000e7fe mov r2, r3                                        |     r2 = r3;
    0x0000e800 blx 0x4ce0                                        |     fcn_00004ce0 ();
    0x0000e804 str r0, [r4, 0x68]                                |     *((r4 + 0x68)) = r0;
    0x0000e806 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0000e808 beq.w 0xeb2e                                      |         goto label_26;
                                                                 |     }
    0x0000e80c ldr r3, [pc, 0x178]                               |     r3 = *(0xe988);
    0x0000e80e movs r1, 1                                        |     r1 = 1;
    0x0000e810 ldr.w r2, [r8, r3]                                |     r2 = *((r8 + r3));
    0x0000e814 ldr r3, [r4, 0x6c]                                |     r3 = *((r4 + 0x6c));
    0x0000e816 str r3, [r2]                                      |     *(r2) = r3;
    0x0000e818 ldr r2, [pc, 0x170]                               |     r2 = *(0xe98c);
    0x0000e81a ldr.w r2, [r8, r2]                                |     r2 = *((r8 + r2));
    0x0000e81e str r0, [r2]                                      |     *(r2) = r0;
    0x0000e820 ldr r2, [pc, 0x16c]                               |     r2 = *(0xe990);
    0x0000e822 ldr.w r2, [r8, r2]                                |     r2 = *((r8 + r2));
    0x0000e826 str.w r2, [r4, 0x514]                             |     __asm ("str.w r2, aav.0x000000ff");
    0x0000e82a ldr r2, [pc, 0x168]                               |     r2 = *(0xe996);
    0x0000e82c ldr.w r2, [r8, r2]                                |     r2 = *((r8 + r2));
    0x0000e830 str.w r2, [r4, 0x518]                             |     __asm ("str.w r2, aav.0x000000ff");
    0x0000e834 ldr.w r2, [sb]                                    |     r2 = *(sb);
    0x0000e838 strb r1, [r3, 0x19]                               |     *((r3 + 0x19)) = r1;
    0x0000e83a movs r3, 0                                        |     r3 = 0;
    0x0000e83c strb r3, [r0, 0x19]                               |     *((r0 + 0x19)) = r3;
                                                                 |     if (r2 != 0) {
    0x0000e83e cbz r2, 0xe854                                    |         
    0x0000e840 ldr r1, [pc, 0x154]                               |         
    0x0000e842 add.w r0, r2, 0x2c                                |         r0 = r2 + 0x2c;
    0x0000e846 movs r2, 0x3c                                     |         r2 = 0x3c;
    0x0000e848 add r1, pc                                        |         r1 = 0x1d1e4;
    0x0000e84a blx 0x4b34                                        |         r0 = fcn_00004b34 ();
    0x0000e84e cmp r0, 0                                         |         
                                                                 |         if (r0 == 0) {
    0x0000e850 beq.w 0xeaee                                      |             goto label_27;
                                                                 |         }
                                                                 |     }
                                                                 | label_5:
    0x0000e854 ldr r3, [pc, 0x144]                               |     r3 = *(0xe99c);
    0x0000e856 ldr.w fp, [r8, r3]                                |     fp = *((r8 + r3));
    0x0000e85a ldr.w r3, [fp, 0x178]                             |     r3 = *(arg_178h);
    0x0000e85e add.w ip, fp, 0x13c                               |     
    0x0000e862 cmp r3, 0                                         |     
    0x0000e864 it ne                                             |     
                                                                 |     if (r3 != 0) {
    0x0000e866 cmpne r3, ip                                      |         __asm ("cmpne r3, ip");
                                                                 |     }
                                                                 |     if (r3 == 0) {
    0x0000e868 beq.w 0xe9b0                                      |         goto label_28;
                                                                 |     }
    0x0000e86c ldr r3, [pc, 0x130]                               |     r3 = *(0xe9a0);
    0x0000e86e add.w r5, fp, 0x148                               |     r5 += arg_148h;
    0x0000e872 ldr.w sl, [r8, r3]                                |     sl = *((r8 + r3));
    0x0000e876 str.w r8, [sp, 0x10]                              |     __asm ("str.w r8, [var_10h]");
    0x0000e87a mov r8, ip                                        |     r8 = ip;
    0x0000e87c str r7, [sp, 0x14]                                |     var_14h = r7;
    0x0000e87e b 0xe8ea                                          |     
                                                                 |     while (r3 != sl) {
                                                                 |         if (r3 != 0) {
    0x0000e880 cbz r3, 0xe8d8                                    |             
                                                                 | label_1:
    0x0000e882 ldr r3, [r5, -0x8]                                |             r3 = *((r5 - 0x8));
    0x0000e886 ldr r1, [sp, 0x28]                                |             r1 = var_28h;
    0x0000e888 cmp r3, 0                                         |             
    0x0000e88a eor.w r7, r3, r3, asr 31                          |             r7 = r3 ^ (r3 >> 31);
    0x0000e88c strb r3, [r4, 0x1f]                               |             *((r4 + 0x1f)) = r3;
    0x0000e88e ite lt                                            |             
                                                                 |             if (r3 < 0) {
    0x0000e890 ldrshlt r2, [r4, 0x64]                            |                 __asm ("ldrshlt r2, [r4, 0x64]");
                                                                 |             }
                                                                 |             if (r3 >= 0) {
    0x0000e894 movs r2, 0                                        |                 r2 = 0;
                                                                 |             }
    0x0000e896 sub.w r7, r7, r3, asr 31                          |             r7 -= (r3 >> 31);
    0x0000e89a mov.w r3, 0                                       |             r3 = 0;
    0x0000e89e it lt                                             |             
                                                                 |             if (r2 >= 0) {
    0x0000e8a0 sublt r2, r2, r7                                  |                 r2 -= r7;
                                                                 |             }
    0x0000e8a2 mov r0, r7                                        |             r0 = r7;
    0x0000e8a4 blx 0x4ce0                                        |             r0 = fcn_00004ce0 ();
    0x0000e8a8 cmp r0, 0                                         |             
                                                                 |             if (r0 == 0) {
    0x0000e8aa beq.w 0xeb2e                                      |                 goto label_26;
                                                                 |             }
    0x0000e8ae ldr r3, [r5, -0x4]                                |             r3 = *((r5 - 0x4));
    0x0000e8b2 uxth r7, r7                                       |             r7 = (int16_t) r7;
    0x0000e8b4 ldr r1, [sp, 0x28]                                |             r1 = var_28h;
    0x0000e8b6 str r0, [r5, -0xc]                                |             *((r5 - 0xc)) = r0;
    0x0000e8ba blx r3                                            |             uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
    0x0000e8bc ldr r3, [r5, -0x8]                                |             r3 = *((r5 - 0x8));
    0x0000e8be subs r4, 8                                        |             r4 -= 8;
    0x0000e8c0 cmp r3, 0                                         |             
    0x0000e8c2 ittt ge                                           |             
                                                                 |             if (r3 >= 0) {
    0x0000e8c4 ldrhge r3, [r4, 0x66]                             |                 __asm ("ldrhge r3, [r4, 0x66]");
                                                                 |             }
                                                                 |             if (r3 < 0) {
    0x0000e8c8 addge r3, r3, r7                                  |                 r3 += r7;
                                                                 |             }
                                                                 |             if (r3 >= 0) {
    0x0000e8ca strh.w r3, [r4, 0x66]                             |                 *((r4 + 0x66)) = r3;
                                                                 |             }
    0x0000e8ce ldrh.w r3, [r4, 0x64]                             |             r3 = *((r4 + 0x64));
    0x0000e8d2 subs r3, r3, r7                                   |             r3 -= r7;
    0x0000e8d4 strh.w r3, [r4, 0x64]                             |             *((r4 + 0x64)) = r3;
                                                                 |         }
                                                                 | label_0:
    0x0000e8d8 ldr.w r3, [fp, 0x178]                             |         r3 = *(arg_178h);
    0x0000e8dc cmp r3, r5                                        |         
                                                                 |         if (r3 == r5) {
    0x0000e8de beq 0xe9a4                                        |             goto label_29;
                                                                 |         }
    0x0000e8e0 sub.w r6, r6, r8                                  |         r6 -= r8;
    0x0000e8e4 adds r5, 0xc                                      |         r5 += 0xc;
    0x0000e8e6 cmp r6, 0x30                                      |         
                                                                 |         if (r6 > 0x30) {
    0x0000e8e8 bgt 0xe9a4                                        |             goto label_29;
                                                                 |         }
    0x0000e8ea ldr r3, [r5, -0x4]                                |         r3 = *((r5 - 0x4));
    0x0000e8ee mov r6, r5                                        |         r6 = r5;
    0x0000e8f0 cmp r3, sl                                        |         
    0x0000e8f2 bne 0xe880                                        |         
                                                                 |     }
    0x0000e8f4 ldr.w r3, [sb]                                    |     r3 = *(sb);
    0x0000e8f8 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x0000e8fa beq 0xe8d8                                        |         goto label_0;
                                                                 |     }
    0x0000e8fc ldr r3, [r3, 0xc]                                 |     r3 = *((r3 + 0xc));
    0x0000e8fe ldr r2, [sp, 0x78]                                |     r2 = *(arg_78h);
    0x0000e900 ldrsh.w r3, [r3, 0x10]                            |     r3 = *((r3 + 0x10));
    0x0000e904 cmp r3, 0                                         |     
    0x0000e906 ite gt                                            |     
                                                                 |     if (r3 <= 0) {
    0x0000e908 movgt r3, 1                                       |         r3 = 1;
                                                                 |     }
                                                                 |     if (r3 > 0) {
    0x0000e90a movle r3, 0                                       |         r3 = 0;
                                                                 |     }
    0x0000e90c cmp r2, 2                                         |     
    0x0000e90e it gt                                             |     
                                                                 |     if (r2 <= 2) {
    0x0000e910 movgt r3, 0                                       |         r3 = 0;
                                                                 |     }
    0x0000e912 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x0000e914 beq 0xe882                                        |         goto label_1;
                                                                 |     }
    0x0000e916 b 0xe8d8                                          |     goto label_0;
                                                                 | label_29:
    0x0000e9a4 ldrd r8, r7, [sp, 0x10]                           |     __asm ("ldrd r8, r7, [var_10h]");
    0x0000e9a8 add.w r3, fp, 0x13c                               |     r3 += arg_13ch;
    0x0000e9ac str.w r3, [fp, 0x178]                             |     __asm ("str.w r3, [arg_178h]");
                                                                 | label_28:
    0x0000e9b0 movs r3, 0                                        |     r3 = 0;
    0x0000e9b2 ldr r1, [sp, 0x28]                                |     r1 = var_28h;
    0x0000e9b4 mov r2, r3                                        |     r2 = r3;
    0x0000e9b6 ldrsh.w r0, [r4, 0x64]                            |     r0 = *((r4 + 0x64));
    0x0000e9ba blx 0x4ce0                                        |     r0 = fcn_00004ce0 ();
    0x0000e9be mov r3, r0                                        |     r3 = r0;
    0x0000e9c0 str r0, [r4, 0x70]                                |     *((r4 + 0x70)) = r0;
    0x0000e9c2 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0000e9c4 beq.w 0xeb2e                                      |         goto label_26;
                                                                 |     }
    0x0000e9c8 ldrsh.w r2, [r4, 0x64]                            |     r2 = *((r4 + 0x64));
    0x0000e9cc movs r0, 0                                        |     r0 = 0;
    0x0000e9ce str r2, [r7]                                      |     *(r7) = r2;
    0x0000e9d0 ldr r2, [pc, 0x1bc]                               |     r2 = *(0xeb90);
    0x0000e9d2 ldr.w r2, [r8, r2]                                |     r2 = *((r8 + r2));
    0x0000e9d6 strb r0, [r4, 0x19]                               |     *((r4 + 0x19)) = r0;
    0x0000e9d8 str r3, [r2]                                      |     *(r2) = r3;
                                                                 | label_10:
    0x0000e9da ldr r2, [pc, 0x1b8]                               |     
    0x0000e9dc ldr r3, [pc, 0x1b8]                               |     r3 = *(0xeb98);
    0x0000e9de add r2, pc                                        |     r2 = 0x1d578;
    0x0000e9e0 ldr r3, [r2, r3]                                  |     r3 = *(0x1d578);
    0x0000e9e2 ldr r2, [r3]                                      |     r2 = *(0x1d578);
    0x0000e9e4 ldr r3, [sp, 0x3c]                                |     r3 = var_3ch;
    0x0000e9e6 eors r2, r3                                       |     r2 ^= r3;
    0x0000e9e8 mov.w r3, 0                                       |     r3 = 0;
                                                                 |     if (r2 != r3) {
    0x0000e9ec bne.w 0xeb84                                      |         goto label_30;
                                                                 |     }
    0x0000e9f0 add sp, 0x44                                      |     
    0x0000e9f2 vpop {d8, d9}                                     |     __asm ("vpop {d8, d9}");
    0x0000e9f6 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |     
                                                                 | label_21:
    0x0000e9fa ldr.w r3, [r4, 0x388]                             |     r3 = *((r4 + 0x388));
    0x0000e9fe orr r3, r3, 0xff00                                |     r3 |= 0xff00;
    0x0000ea02 str.w r3, [r4, 0x388]                             |     __asm ("str.w r3, aav.0x000000ff");
    0x0000ea06 ldr.w r3, [sb]                                    |     r3 = *(sb);
    0x0000ea0a ldr r3, [r3, 0xc]                                 |     r3 = *((r3 + 0xc));
    0x0000ea0c ldrsh.w r3, [r3, 8]                               |     r3 = *((r3 + 8));
    0x0000ea10 cmp r3, 0                                         |     
                                                                 |     if (r3 < 0) {
    0x0000ea12 blt.w 0xe79a                                      |         goto label_2;
                                                                 |     }
                                                                 | label_22:
    0x0000ea16 ldr r0, [pc, 0x184]                               |     
    0x0000ea18 add r0, pc                                        |     r0 = 0x1d5ba;
    0x0000ea1a blx 0x4e08                                        |     fcn_00004e08 ();
    0x0000ea1e ldr.w r3, [sb]                                    |     r3 = *(sb);
    0x0000ea22 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0000ea24 beq.w 0xeb3a                                      |         goto label_31;
                                                                 |     }
    0x0000ea28 ldr r1, [r3, 0xc]                                 |     r1 = *((r3 + 0xc));
    0x0000ea2a ldrsh.w r2, [r1, 8]                               |     r2 = *((r1 + 8));
    0x0000ea2e cmp r2, 0                                         |     
                                                                 |     if (r2 <= 0) {
    0x0000ea30 ble 0xeb1e                                        |         goto label_32;
                                                                 |     }
    0x0000ea32 ldr.w r2, [r4, 0x388]                             |     r2 = *((r4 + 0x388));
    0x0000ea36 vldr d17, [pc, 0x150]                             |     __asm ("vldr d17, aav.0x000000ff");
    0x0000ea3a ldr r3, [r3, 0x10]                                |     r3 = *((r3 + 0x10));
    0x0000ea3c vdup.32 d16, r2                                   |     __asm ("vdup.32 d16, r2");
    0x0000ea40 add.w r2, r4, 0x38c                               |     r2 = r4 + 0x38c;
    0x0000ea44 vand d16, d16, d17                                |     __asm ("vand d16, d16, d17");
    0x0000ea48 vst1.32 {d16}, [r2]                               |     __asm ("vst1.32 {d16}, [r2]");
    0x0000ea4c movs r2, 0                                        |     r2 = 0;
    0x0000ea4e str.w r2, [r3, 0x248]                             |     __asm ("str.w r2, aav.0x000000ff");
    0x0000ea52 str.w r2, [r3, 0x26c]                             |     __asm ("str.w r2, aav.0x000000ff");
    0x0000ea56 str r2, [r3, 0x64]                                |     *((r3 + 0x64)) = r2;
    0x0000ea58 str.w r2, [r3, 0x98]                              |     __asm ("str.w r2, [r3, 0x98]");
                                                                 | label_8:
    0x0000ea5c vmov.i32 d16, 0                                   |     __asm ("vmov.i32 d16, 0");
    0x0000ea60 add.w r5, r3, 0x68                                |     r5 = r3 + 0x68;
    0x0000ea64 add.w r0, r3, 0x88                                |     r0 = r3 + 0x88;
    0x0000ea68 movs r2, 0                                        |     r2 = 0;
    0x0000ea6a movw r6, 0xffff                                   |     r6 = 0xffff;
    0x0000ea6e strh r6, [r1, 8]                                  |     *((r1 + 8)) = r6;
    0x0000ea70 str.w r2, [r3, 0x20c]                             |     __asm ("str.w r2, aav.0x000000ff");
    0x0000ea74 vst1.32 {d16}, [r5]                               |     __asm ("vst1.32 {d16}, [r5]");
    0x0000ea78 str r2, [r3, 0x78]                                |     *((r3 + 0x78)) = r2;
    0x0000ea7a vst1.32 {d16}, [r0]                               |     __asm ("vst1.32 {d16}, [r0]");
    0x0000ea7e str.w r2, [r3, 0x90]                              |     __asm ("str.w r2, [r3, 0x90]");
    0x0000ea82 blx 0x512c                                        |     r0 = fcn_0000512c ();
    0x0000ea86 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0000ea88 beq.w 0xe7a4                                      |         goto label_3;
                                                                 |     }
                                                                 | label_23:
    0x0000ea8c ldr r0, [r4, 0x20]                                |     r0 = *((r4 + 0x20));
    0x0000ea8e blx 0x49c4                                        |     r0 = nc_tiparm ();
    0x0000ea92 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0000ea94 beq.w 0xe7a4                                      |         goto label_3;
                                                                 |     }
    0x0000ea98 ldr.w r3, [sb]                                    |     r3 = *(sb);
    0x0000ea9c movs r2, 0                                        |     r2 = 0;
    0x0000ea9e ldr r3, [r3, 0x10]                                |     r3 = *((r3 + 0x10));
    0x0000eaa0 str.w r2, [r3, 0x248]                             |     __asm ("str.w r2, aav.0x000000ff");
    0x0000eaa4 str.w r2, [r3, 0x26c]                             |     __asm ("str.w r2, aav.0x000000ff");
    0x0000eaa8 str r2, [r3, 0x64]                                |     *((r3 + 0x64)) = r2;
    0x0000eaaa str.w r2, [r3, 0x98]                              |     __asm ("str.w r2, [r3, 0x98]");
    0x0000eaae str.w r2, [r3, 0x20c]                             |     __asm ("str.w r2, aav.0x000000ff");
    0x0000eab2 b 0xe7a4                                          |     goto label_3;
                                                                 | label_13:
    0x0000eab4 ldr.w r6, [sb]                                    |     r6 = *(sb);
    0x0000eab8 movs r3, 1                                        |     r3 = 1;
    0x0000eaba str r3, [sp, 0x2c]                                |     var_2ch = r3;
    0x0000eabc movs r2, 0                                        |     r2 = 0;
    0x0000eabe str r3, [r7]                                      |     *(r7) = r3;
    0x0000eac0 ldr r3, [r6, 0x10]                                |     r3 = *((r6 + 0x10));
    0x0000eac2 vmov.i32 d16, 0                                   |     __asm ("vmov.i32 d16, 0");
    0x0000eac6 add.w r0, r3, 0x28                                |     r0 = r3 + 0x28;
    0x0000eaca str r2, [r3, 0x14]                                |     *((r3 + 0x14)) = r2;
    0x0000eacc vst1.32 {d16}, [r0]                               |     __asm ("vst1.32 {d16}, [r0]");
    0x0000ead0 ldr r0, [r3, 8]                                   |     r0 = *((r3 + 8));
    0x0000ead2 str r2, [r3, 0x4c]                                |     *((r3 + 0x4c)) = r2;
    0x0000ead4 str.w r2, [r3, 0x1ac]                             |     __asm ("str.w r2, aav.0x000000ff");
    0x0000ead8 str.w r2, [r3, 0x1c8]                             |     __asm ("str.w r2, aav.0x000000ff");
    0x0000eadc str.w r2, [r3, 0x1fc]                             |     __asm ("str.w r2, aav.0x000000ff");
    0x0000eae0 str r0, [r3, 0x30]                                |     *((r3 + 0x30)) = r0;
    0x0000eae2 ldr r0, [r6, 8]                                   |     r0 = *((r6 + 8));
    0x0000eae4 ldrb r0, [r0, 0x1c]                               |     r0 = *((r0 + 0x1c));
                                                                 |     if (r0 != 0) {
    0x0000eae6 cbz r0, 0xeaea                                    |         
    0x0000eae8 str r2, [r3, 0x1c]                                |         *((r3 + 0x1c)) = r2;
                                                                 |     }
    0x0000eaea movs r3, 1                                        |     r3 = 1;
    0x0000eaec b 0xe5ca                                          |     goto label_4;
                                                                 | label_27:
    0x0000eaee blx 0x50e4                                        |     fcn_000050e4 ();
    0x0000eaf2 blx 0x5090                                        |     fcn_00005090 ();
    0x0000eaf6 b 0xe854                                          |     goto label_5;
                                                                 | label_20:
    0x0000eaf8 mov r1, r5                                        |     r1 = r5;
    0x0000eafa mov r0, sl                                        |     r0 = sl;
    0x0000eafc bl 0x15474                                        |     fcn_00015474 (r0, r1);
    0x0000eb00 str.w r1, [r4, 0x50c]                             |     __asm ("str.w r1, aav.0x000000ff");
    0x0000eb04 b 0xe75a                                          |     goto label_6;
                                                                 | label_19:
    0x0000eb06 mov r0, sl                                        |     r0 = sl;
    0x0000eb08 mov r1, r5                                        |     r1 = r5;
    0x0000eb0a bl 0x15474                                        |     fcn_00015474 (r0, r1);
    0x0000eb0e ldr.w sl, [r4, 0x50c]                             |     sl = *((r4 + 0x50c));
    0x0000eb12 str.w r1, [r4, 0x508]                             |     __asm ("str.w r1, aav.0x000000ff");
    0x0000eb16 cmp r5, sl                                        |     
                                                                 |     if (r5 > sl) {
    0x0000eb18 bgt.w 0xe75a                                      |         goto label_6;
                                                                 |     }
    0x0000eb1c b 0xe734                                          |     goto label_7;
                                                                 |     if (r5 != sl) {
                                                                 | label_32:
    0x0000eb1e bne.w 0xe79a                                      |         goto label_2;
                                                                 |     }
    0x0000eb22 ldr r3, [r3, 0x10]                                |     r3 = *((r3 + 0x10));
    0x0000eb24 b 0xea5c                                          |     goto label_8;
                                                                 | label_18:
    0x0000eb26 mov r1, r5                                        |     r1 = r5;
    0x0000eb28 bl 0xe124                                         |     fcn_0000e124 (r0, r1, r2, r3);
    0x0000eb2c b 0xe6f2                                          |     goto label_9;
                                                                 | label_26:
    0x0000eb2e ldr r2, [sp, 0xc]                                 |     r2 = var_ch;
    0x0000eb30 movs r3, 0                                        |     r3 = 0;
    0x0000eb32 str r3, [r2]                                      |     *(r2) = r3;
                                                                 | label_12:
    0x0000eb34 mov.w r0, -1                                      |     r0 = -1;
    0x0000eb38 b 0xe9da                                          |     goto label_10;
                                                                 | label_31:
    0x0000eb3a ldr r2, [r3, 0xc]                                 |     r2 = *((r3 + 0xc));
    0x0000eb3c ldrsh.w r2, [r2, 8]                               |     r2 = *((r2 + 8));
    0x0000eb40 cmp r2, 0                                         |     
                                                                 |     if (r2 <= 0) {
    0x0000eb42 ble.w 0xe79a                                      |         goto label_2;
                                                                 |     }
    0x0000eb44 add r6, sp, 0xa8                                  |     r6 = sp + 0xa8;
    0x0000eb46 ldr.w r2, [r4, 0x388]                             |     r2 = *((r4 + 0x388));
    0x0000eb4a vldr d18, [pc, 0x3c]                              |     __asm ("vldr d18, aav.0x000000ff");
    0x0000eb4e ldr r3, [r3, 0x10]                                |     r3 = *((r3 + 0x10));
    0x0000eb50 vmov.i32 d17, 0                                   |     __asm ("vmov.i32 d17, 0");
    0x0000eb54 vdup.32 d16, r2                                   |     __asm ("vdup.32 d16, r2");
    0x0000eb58 add.w r2, r4, 0x38c                               |     r2 = r4 + 0x38c;
    0x0000eb5c vand d16, d16, d18                                |     __asm ("vand d16, d16, d18");
    0x0000eb5e lsls r2, r6, 6                                    |     r2 = r6 << 6;
    0x0000eb60 vst1.32 {d16}, [r2]                               |     __asm ("vst1.32 {d16}, [r2]");
    0x0000eb64 add.w r2, r3, 0x18                                |     r2 = r3 + 0x18;
    0x0000eb68 str.w r0, [r3, 0x248]                             |     __asm ("str.w r0, aav.0x000000ff");
    0x0000eb6c str.w r0, [r3, 0x26c]                             |     __asm ("str.w r0, aav.0x000000ff");
    0x0000eb70 str r0, [r3, 0x64]                                |     *((r3 + 0x64)) = r0;
    0x0000eb72 str.w r0, [r3, 0x98]                              |     __asm ("str.w r0, [r3, 0x98]");
    0x0000eb76 vst1.32 {d17}, [r2]                               |     __asm ("vst1.32 {d17}, [r2]");
    0x0000eb7a str.w r0, [r3, 0x20c]                             |     __asm ("str.w r0, aav.0x000000ff");
    0x0000eb7e b 0xe79a                                          |     goto label_2;
                                                                 | label_14:
    0x0000eb80 str r0, [r4, 0x10]                                |     *((r4 + 0x10)) = r0;
    0x0000eb82 b 0xe606                                          |     goto label_11;
                                                                 | label_30:
    0x0000eb84 blx 0x4bdc                                        |     r0 = fcn_00004bdc ();
    0x0000eb88 movs r0, r0                                       |     
    0x0000eb8a strh r7, [r3, 0xc]                                |     *((r3 + 0xc)) = r7;
    0x0000eb8c movs r0, r0                                       |     
    0x0000eb8e strh r7, [r7, 0xc]                                |     *((r7 + 0xc)) = r7;
    0x0000eb90 lsls r0, r0, 0xf                                  |     r0 <<= 0xf;
    0x0000eb92 movs r0, r0                                       |     
    0x0000eb94 str r2, [sp, 0xb8]                                |     *(arg_b8h) = r2;
    0x0000eb96 movs r0, r0                                       |     
    0x0000eb98 lsls r4, r2, 0xe                                  |     r4 = r2 << 0xe;
    0x0000eb9a movs r0, r0                                       |     
    0x0000eb9c ldr r0, [r2, 0x74]                                |     r0 = *((r2 + 0x74));
    0x0000eb9e movs r0, r0                                       |     
                                                                 | }

[*] Function fprintf used 1 times libncurses.so.5.9