[*] 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