[*] Binary protection state of flashaudit
Full RELRO Canary found NX enabled PIE enabled No RPATH No RUNPATH No Symbols
[*] Function printf tear down of flashaudit
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/bin/flashaudit @ 0x153c */
| #include <stdint.h>
|
; (fcn) fcn.0000153c () | void fcn_0000153c (int16_t arg_340h, int16_t arg_2300h, int16_t arg1, int16_t arg2, int16_t arg3) {
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_10h;
| int16_t var_20h;
| int16_t var_4ch;
| int16_t var_78h;
| int16_t var_2300h;
| int16_t var_11ch;
| int32_t var_0h_2;
| int16_t var_0h;
| int16_t var_4h_2;
| int16_t var_4h_3;
| int32_t var_4h_4;
| int16_t var_ch;
| int16_t var_10h_2;
| int16_t var_14h;
| int16_t var_40h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| label_6:
0x00000bc0 bx pc | return void (*pc)() ();
| label_16:
0x00000bf4 bx pc | return void (*pc)() ();
0x0000153c push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00001540 mov r8, r2 | r8 = r2;
0x00001542 ldr r2, [pc, 0x240] |
0x00001544 mov r6, r1 | r6 = r1;
0x00001546 sub sp, 0x1c |
0x00001548 mov r7, r0 | r7 = r0;
0x0000154a ldr r3, [pc, 0x23c] | r3 = *(0x178a);
0x0000154c movs r1, 0x2e | r1 = 0x2e;
0x0000154e add r2, pc | r2 = 0x2cd8;
0x00001550 mov r0, r6 | r0 = r6;
0x00001552 ldr r3, [r2, r3] |
0x00001554 ldr r3, [r3] | r3 = *(0x2cd8);
0x00001556 str r3, [sp, 0x14] | var_14h = r3;
0x00001558 mov.w r3, 0 | r3 = 0;
0x0000155c blx 0xbb4 | r0 = fcn_00000bb4 ();
0x00001560 cmp r0, 0 |
| if (r0 == 0) {
0x00001562 beq 0x15fc | goto label_3;
| }
0x00001564 ldr r1, [pc, 0x224] |
0x00001566 adds r5, r0, 1 | r5 = r0 + 1;
0x00001568 mov r4, r0 | r4 = r0;
0x0000156a mov r0, r5 | r0 = r5;
0x0000156c add r1, pc | r1 = 0x2cfc;
0x0000156e blx 0xd20 | r0 = fcn_00000d20 ();
| if (r0 == 0) {
0x00001572 cbz r0, 0x158c | goto label_0;
| }
0x00001574 ldr r1, [pc, 0x218] |
0x00001576 mov r0, r5 | r0 = r5;
0x00001578 add r1, pc | r1 = 0x2d0c;
0x0000157a blx 0xd20 | r0 = fcn_00000d20 ();
| if (r0 == 0) {
0x0000157e cbz r0, 0x158c | goto label_0;
| }
0x00001580 ldr r1, [pc, 0x210] |
0x00001582 mov r0, r6 | r0 = r6;
0x00001584 add r1, pc | r1 = 0x2d1c;
0x00001586 blx 0xc4c | r0 = realpath ();
0x0000158a cbz r0, 0x15d8 |
| while (r0 != 0) {
| label_0:
0x0000158c ldr r3, [pc, 0x208] |
0x0000158e add r3, pc |
0x00001590 ldr r3, [r3] | r3 = *(0x2d2a);
| if (r3 == 0) {
0x00001592 cbnz r3, 0x15b0 |
| label_5:
0x00001594 ldr r2, [pc, 0x204] |
0x00001596 ldr r3, [pc, 0x1f0] | r3 = *(0x178a);
0x00001598 add r2, pc | r2 = 0x2d38;
0x0000159a ldr r3, [r2, r3] | r3 = *(0x2d38);
0x0000159c ldr r2, [r3] | r2 = *(0x2d38);
0x0000159e ldr r3, [sp, 0x14] | r3 = var_14h;
0x000015a0 eors r2, r3 | r2 ^= r3;
0x000015a2 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x000015a6 bne.w 0x177e | goto label_17;
| }
0x000015aa add sp, 0x1c |
0x000015ac pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| }
0x000015b0 ldr r2, [pc, 0x1ec] |
0x000015b2 ldr r3, [pc, 0x1d4] | r3 = *(0x178a);
0x000015b4 add r2, pc | r2 = 0x2d58;
0x000015b6 ldr r3, [r2, r3] | r3 = *(0x2d58);
0x000015b8 ldr r2, [r3] | r2 = *(0x2d58);
0x000015ba ldr r3, [sp, 0x14] | r3 = var_14h;
0x000015bc eors r2, r3 | r2 ^= r3;
0x000015be mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x000015c2 bne.w 0x177e | goto label_17;
| }
0x000015c6 ldr r1, [pc, 0x1dc] |
0x000015c8 mov r2, r6 | r2 = r6;
0x000015ca movs r0, 1 | r0 = 1;
0x000015cc add r1, pc | r1 = 0x2d76;
0x000015ce add sp, 0x1c |
0x000015d0 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x000015d4 b.w 0xb80 | void (*0xb80)() ();
0x000015d8 ldr r1, [pc, 0x1cc] |
0x000015da mov r0, r6 | r0 = r6;
0x000015dc add r1, pc | r1 = 0x2d88;
0x000015de blx 0xc4c | r0 = realpath ();
0x000015e2 cmp r0, 0 |
0x000015e4 bne 0x158c |
| }
0x000015e6 mov r0, r5 | r0 = r5;
0x000015e8 blx 0xc1c | memcpy (r0, r1, r2);
0x000015ec movw r3, 0xfffa |
0x000015f0 subs r2, r0, 5 | r2 = r0 - 5;
0x000015f2 movt r3, 0x7fff | r3 = 0x7ffffffa;
0x000015f6 mov r5, r0 | r5 = r0;
0x000015f8 cmp r2, r3 |
| if (r2 < r3) {
0x000015fa bls 0x169c | goto label_18;
| }
| label_3:
0x000015fc ldr r5, [pc, 0x1ac] |
0x000015fe add r5, pc | r5 = 0x2dae;
0x00001600 ldr.w sb, [r5, 0x1c] | sb = *(0x2dca);
0x00001604 cmp.w sb, 0 |
| if (sb <= 0) {
0x00001608 ble 0x1622 | goto label_19;
| }
0x0000160a adds r5, 0x20 | r5 += 0x20;
0x0000160c movs r4, 0 | r4 = 0;
| label_1:
0x0000160e ldr r1, [r5], 4 | r1 = *(r5);
| r5 += 4;
0x00001612 mov r0, r7 | r0 = r7;
0x00001614 blx 0xd20 | fcn_00000d20 ();
0x00001616 invalid |
| if (r4 == 0) {
0x0000161a beq 0x158c | goto label_0;
| }
0x0000161c adds r4, 1 | r4++;
0x0000161e cmp r4, sb |
| if (r4 != sb) {
0x00001620 bne 0x160e | goto label_1;
| }
| label_19:
0x00001622 ldr r5, [pc, 0x18c] |
0x00001624 add r5, pc | r5 = 0x2dda;
0x00001626 ldr.w sl, [r5, 0x48] | sl = *(0x2e22);
0x0000162a cmp.w sl, 0 |
| if (sl <= 0) {
0x0000162e ble 0x166a | goto label_20;
| }
0x00001630 adds r5, 0x50 | r5 += 0x50;
0x00001632 mov.w sb, 0 | sb = 0;
| label_2:
0x00001636 ldr r4, [r5], 4 | r4 = *(r5);
| r5 += 4;
0x0000163a mov r0, r6 | r0 = r6;
0x0000163c mov r1, r4 | r1 = r4;
0x0000163e blx 0xc4c | r0 = realpath ();
0x00001642 mov r3, r0 | r3 = r0;
| if (r0 == 0) {
0x00001644 cbz r0, 0x1662 | goto label_21;
| }
0x00001646 mov r0, r4 | r0 = r4;
0x00001648 subs r4, r3, r6 | r4 = r3 - r6;
0x0000164a blx 0xc1c | memcpy (r0, r1, r2);
0x0000164e add r0, r6 | r0 += r6;
0x00001650 ldrb r3, [r0, r4] | r3 = *((r0 + r4));
| if (r3 != 0) {
0x00001652 cbnz r3, 0x1662 | goto label_21;
| }
0x00001654 cmp r4, 0 |
| if (r4 <= 0) {
0x00001656 ble 0x158c | goto label_0;
| }
0x00001658 adds r3, r6, r4 | r3 = r6 + r4;
0x0000165a ldrb r3, [r3, -0x1] | r3 = *((r3 - 0x1));
0x0000165e cmp r3, 0x2f |
| if (r3 == 0x2f) {
0x00001660 beq 0x158c | goto label_0;
| }
| label_21:
0x00001662 add.w sb, sb, 1 | sb++;
0x00001666 cmp sb, sl |
| if (sb != sl) {
0x00001668 bne 0x1636 | goto label_2;
| }
| label_20:
0x0000166a cmp.w r8, 0 |
| if (r8 != 0) {
0x0000166e beq 0x167a |
0x00001670 ldr r5, [pc, 0x140] |
0x00001672 add r5, pc | r5 = 0x2e2a;
0x00001674 ldr.w r3, [r5, 0x8c] | r3 = *(0x2eb6);
| if (r3 != 0) {
0x00001678 cbnz r3, 0x16ba | goto label_22;
| }
| }
0x0000167a ldr r2, [pc, 0x13c] |
0x0000167c ldr r3, [pc, 0x108] | r3 = *(0x1788);
0x0000167e add r2, pc | r2 = 0x2e3c;
0x00001680 ldr r3, [r2, r3] | r3 = *(0x2e3c);
0x00001682 ldr r2, [r3] | r2 = *(0x2e3c);
0x00001684 ldr r3, [sp, 0x14] | r3 = var_14h;
0x00001686 eors r2, r3 | r2 ^= r3;
0x00001688 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0000168c bne 0x177e | goto label_17;
| }
0x0000168e mov r2, r8 | r2 = r8;
0x00001690 mov r1, r6 | r1 = r6;
0x00001692 mov r0, r7 | r0 = r7;
0x00001694 add sp, 0x1c |
0x00001696 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0000169a b 0x141c | void (*0x141c)() ();
| label_18:
0x0000169c blx 0xc80 | fcn_00000c80 ();
0x000016a0 adds r2, r4, r5 | r2 = r4 + r5;
0x000016a2 ldr r1, [r0] | r1 = *(r0);
0x000016a4 b 0x16aa | goto label_23;
| label_4:
0x000016a6 cmp r4, r2 |
| if (r4 == r2) {
0x000016a8 beq 0x15fc | goto label_3;
| }
| label_23:
0x000016aa ldrb r3, [r4, 1]! | r3 = *((r4 += 1));
0x000016ae ldrh.w r3, [r1, r3, lsl 1] | offset_0 = r3 << 1;
| r3 = *((r1 + offset_0));
0x000016b2 lsls r3, r3, 0x17 | r3 <<= 0x17;
| if (r3 < r3) {
0x000016b4 bmi.w 0x158c | goto label_0;
| }
0x000016b8 b 0x16a6 | goto label_4;
| label_22:
0x000016ba mov.w sb, 0 | sb = 0;
0x000016be mov r0, r6 | r0 = r6;
0x000016c0 str r3, [sp, 0xc] | var_ch = r3;
0x000016c2 add.w fp, sp, 4 |
0x000016c6 strd sb, sb, [sp, 4] | __asm ("strd sb, sb, [var_4h_3]");
0x000016ca str.w sb, [sp, 0x10] | __asm ("str.w sb, [var_10h_2]");
0x000016ce blx 0xc1c | r0 = memcpy (r0, r1, r2);
0x000016d2 mov r8, r0 | r8 = r0;
0x000016d4 mov r0, r7 | r0 = r7;
0x000016d6 blx 0xc1c | r0 = memcpy (r0, r1, r2);
0x000016da mov sl, r0 | sl = r0;
0x000016dc add r0, r8 | r0 += r8;
0x000016de adds r0, 0x2a | r0 += 0x2a;
0x000016e0 blx 0xc98 | r0 = fcn_00000c98 ();
0x000016e4 mov r4, r0 | r4 = r0;
0x000016e6 cmp r0, 0 |
| if (r0 == 0) {
0x000016e8 beq.w 0x1594 | goto label_5;
| }
0x000016ec mov r3, r0 | r3 = r0;
0x000016ee add.w r8, r8, 1 | r8++;
0x000016f2 strb sb, [r3, 0x24]! | *((r3 += 0x24)) = sb;
0x000016f6 mov r1, r6 | r1 = r6;
0x000016f8 mov r2, r8 | r2 = r8;
0x000016fa mov r0, r3 | r0 = r3;
0x000016fc blx 0xc28 | r0 = strtol (r0, r1, r2);
0x00001700 mov r3, r0 | r3 = r0;
0x00001702 add r0, r8 | r0 += r8;
0x00001704 str r0, [r4, 0x20] | *((r4 + 0x20)) = r0;
0x00001706 add.w r2, sl, 1 | r2 = sl + 1;
0x0000170a strb.w sb, [r3, r8] | *((r3 + r8)) = sb;
0x0000170e mov r1, r7 | r1 = r7;
0x00001710 ldr r0, [r4, 0x20] | r0 = *((r4 + 0x20));
0x00001712 blx 0xc28 | strtol (r0, r1, r2);
0x00001716 mov r1, sb | r1 = sb;
0x00001718 movs r0, 1 | r0 = 1;
0x0000171a blx 0xcd8 | r0 = fcn_00000cd8 ();
0x0000171e cmp r0, sb |
0x00001720 str r0, [r4, 8] | *((r4 + 8)) = r0;
| if (r0 >= sb) {
0x00001722 blt 0x175e |
0x00001724 movs r6, 1 | r6 = 1;
0x00001726 mov r2, fp | r2 = fp;
0x00001728 mov r3, sb | r3 = sb;
0x0000172a mov r1, sb | r1 = sb;
0x0000172c str r4, [r4, 0x18] | *((r4 + 0x18)) = r4;
0x0000172e str r6, [r4, 0x10] | *((r4 + 0x10)) = r6;
0x00001730 blx 0xce4 | r0 = fcn_00000ce4 ();
0x00001734 cmp r0, sb |
| if (r0 >= sb) {
0x00001736 blt 0x1758 |
0x00001738 ldr r2, [r4, 8] | r2 = *((r4 + 8));
0x0000173a add.w r3, r4, 0x10 | r3 = r4 + 0x10;
0x0000173e ldr.w r0, [r5, 0x90] | r0 = *((r5 + 0x90));
0x00001742 mov r1, r6 | r1 = r6;
0x00001744 blx 0xcf0 | r0 = fcn_00000cf0 ();
0x00001748 cmp r0, sb |
| if (r0 < sb) {
0x0000174a blt 0x1758 | goto label_24;
| }
0x0000174c ldr r3, [r5, 0x10] | r3 = *((r5 + 0x10));
0x0000174e strd sb, r3, [r4] | __asm ("strd sb, r3, [r4]");
0x00001752 str r4, [r3] | *(r3) = r4;
0x00001754 str r4, [r5, 0x10] | *((r5 + 0x10)) = r4;
0x00001756 b 0x1594 | goto label_5;
| }
| label_24:
0x00001758 ldr r0, [r4, 8] | r0 = *((r4 + 8));
0x0000175a blx 0xc68 | fcn_00000c68 ();
| }
0x0000175e ldr r2, [pc, 0x5c] |
0x00001760 ldr r3, [pc, 0x24] | r3 = *(0x1788);
0x00001762 add r2, pc | r2 = 0x2f24;
0x00001764 ldr r3, [r2, r3] | r3 = *(0x2f24);
0x00001766 ldr r2, [r3] | r2 = *(0x2f24);
0x00001768 ldr r3, [sp, 0x14] | r3 = var_14h;
0x0000176a eors r2, r3 | r2 ^= r3;
0x0000176c mov.w r3, 0 | r3 = 0;
| if (r2 == r3) {
0x00001770 bne 0x177e |
0x00001772 mov r0, r4 | r0 = r4;
0x00001774 add sp, 0x1c |
0x00001776 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0000177a b.w 0xbc0 | goto label_6;
| }
| label_17:
0x0000177e blx 0xca4 | fcn_00000ca4 ();
0x00001782 nop |
0x00001784 cmp r1, 0xce |
0x00001786 movs r0, r0 |
0x00001788 lsls r0, r2, 3 | r0 = r2 << 3;
0x0000178a movs r0, r0 |
0x0000178c lsrs r4, r3, 6 | r4 = r3 >> 6;
0x0000178e movs r0, r0 |
0x00001790 lsrs r4, r2, 6 | r4 = r2 >> 6;
0x00001792 movs r0, r0 |
0x00001794 lsrs r0, r2, 6 | r0 = r2 >> 6;
0x00001796 movs r0, r0 |
0x00001798 cmp r2, 0xbe |
0x0000179a movs r0, r0 |
0x0000179c cmp r1, 0x84 |
0x0000179e movs r0, r0 |
0x000017a0 cmp r1, 0x68 |
0x000017a2 movs r0, r0 |
0x000017a4 lsrs r0, r3, 5 | r0 = r3 >> 5;
0x000017a6 movs r0, r0 |
0x000017a8 lsrs r0, r0, 5 | r0 >>= 5;
0x000017aa movs r0, r0 |
0x000017ac cmp r2, 0x4e |
0x000017ae movs r0, r0 |
0x000017b0 cmp r2, 0x28 |
0x000017b2 movs r0, r0 |
0x000017b4 cmp r1, 0xda |
0x000017b6 movs r0, r0 |
0x000017b8 cmp r0, 0x9e |
0x000017ba movs r0, r0 |
0x000017bc movs r7, 0xba | r7 = 0xba;
0x000017be movs r0, r0 |
0x000017c0 push.w {r4, r5, r6, r7, r8, lr} |
0x000017c4 sub.w sp, sp, 0x2340 |
0x000017c8 ldr r5, [pc, 0x1a8] |
0x000017ca add.w r6, sp, 0x2300 | r6 += arg_2300h;
0x000017ce add r4, sp, 0x40 | r4 += var_40h;
0x000017d0 movs r2, 0 | r2 = 0;
0x000017d2 ldr r3, [pc, 0x1a4] | r3 = *(0x197a);
0x000017d4 sub.w r1, r4, 0x30 | r1 = r4 - 0x30;
0x000017d8 add r5, pc | r5 = 0x3150;
0x000017da adds r6, 0x3c | r6 += 0x3c;
0x000017dc ldr r3, [r5, r3] |
0x000017de ldr r3, [r3] | r3 = *(0x3150);
0x000017e0 str r3, [r6] | *(r6) = r3;
0x000017e2 mov.w r3, 0 | r3 = 0;
0x000017e6 bl 0x1b2c | r0 = fcn_00001b2c (r0, r1, r2, r3);
0x000017ea cmp r0, 0 |
| if (r0 < 0) {
0x000017ec blt.w 0x1968 | goto label_25;
| }
0x000017f0 add r5, sp, 0x340 | r5 += arg_340h;
0x000017f2 movw r1, 0x2309 | r1 = 0x2309;
0x000017f6 sub.w r2, r5, 0x330 | r2 = r5 - 0x330;
0x000017fa ldr r3, [r2, 4] | r3 = *((r2 + 4));
0x000017fc cmp r3, r1 |
| if (r3 > r1) {
0x000017fe bhi 0x1818 | goto label_7;
| }
0x00001800 add r3, r2 | r3 += r2;
0x00001802 ldr r2, [r2] | r2 = *(r2);
0x00001804 movs r1, 0 | r1 = 0;
0x00001806 strb r1, [r3, 0x1c] | *((r3 + 0x1c)) = r1;
0x00001808 movw r3, 0x514 | r3 = 0x514;
0x0000180c cmp r2, r3 |
| if (r2 == r3) {
0x0000180e beq 0x18ea | goto label_26;
| }
0x00001810 movw r3, 0x516 | r3 = 0x516;
0x00001814 cmp r2, r3 |
0x00001816 beq 0x183c |
| while (1) {
| label_7:
0x00001818 ldr r2, [pc, 0x160] |
0x0000181a add.w r1, sp, 0x2300 | r1 += arg_2300h;
0x0000181e ldr r3, [pc, 0x158] | r3 = *(0x197a);
0x00001820 adds r1, 0x3c | r1 += 0x3c;
0x00001822 add r2, pc | r2 = 0x31a2;
0x00001824 ldr r3, [r2, r3] | r3 = *(0x31a2);
0x00001826 ldr r2, [r3] | r2 = *(0x31a2);
0x00001828 ldr r3, [r1] | r3 = *(r1);
0x0000182a eors r2, r3 | r2 ^= r3;
0x0000182c mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00001830 bne.w 0x1970 | goto label_27;
| }
0x00001834 add.w sp, sp, 0x2340 |
0x00001838 pop.w {r4, r5, r6, r7, r8, pc} |
0x0000183c ldr r1, [pc, 0x140] |
0x0000183e sub.w r6, r4, 0x14 | r6 = r4 - 0x14;
0x00001842 mov r0, r6 | r0 = r6;
0x00001844 add r1, pc | r1 = 0x31c8;
0x00001846 blx 0xc4c | r0 = realpath ();
0x0000184a cmp r0, 0 |
| if (r0 != 0) {
0x0000184c bne 0x1908 | goto label_28;
| }
0x0000184e ldr r1, [pc, 0x134] |
0x00001850 mov r0, r6 | r0 = r6;
0x00001852 add r1, pc | r1 = 0x31dc;
0x00001854 blx 0xc4c | r0 = realpath ();
0x00001858 mov r7, r0 | r7 = r0;
0x0000185a ldr r0, [pc, 0x12c] |
0x0000185c mov r1, r6 | r1 = r6;
0x0000185e add r0, pc | r0 = 0x31ec;
0x00001860 bl 0x12c8 | r0 = fcn_000012c8 (r0, r1);
0x00001864 mov r6, r0 | r6 = r0;
0x00001866 cmp r0, 0 |
| if (r0 == 0) {
0x00001868 beq 0x194a | goto label_29;
| }
0x0000186a ldr r1, [pc, 0x120] |
0x0000186c add r1, pc | r1 = 0x31fe;
0x0000186e blx 0xd20 | r0 = fcn_00000d20 ();
0x00001872 cmp r0, 0 |
| if (r0 == 0) {
0x00001874 beq 0x1940 | goto label_30;
| }
0x00001876 ldrb r3, [r6] | r3 = *(r6);
0x00001878 subs r7, 0 |
0x0000187a it ne |
| if (r7 == 0) {
0x0000187c movne r7, 1 | r7 = 1;
| }
0x0000187e cmp r3, 0x2f |
| if (r3 == 0x2f) {
0x00001880 beq 0x1924 | goto label_31;
| }
0x00001882 ldr r3, [pc, 0x10c] |
0x00001884 add r3, pc | r3 = 0x321a;
0x00001886 ldr.w r8, [r3, 0x98] | r8 = *(0x32b2);
0x0000188a cmp.w r8, 0 |
| if (r8 == 0) {
0x0000188e beq 0x1954 | goto label_32;
| }
0x00001890 ldr r2, [pc, 0x100] |
0x00001892 mov r3, r8 | r3 = r8;
0x00001894 add r2, pc | r2 = 0x322c;
| label_10:
0x00001896 str r2, [sp] | *(sp) = r2;
0x00001898 sub.w r0, r4, 0x34 | r0 = r4 - 0x34;
0x0000189c ldr r2, [pc, 0xf8] |
0x0000189e movs r1, 1 | r1 = 1;
0x000018a0 str r6, [sp, 4] | var_4h_2 = r6;
0x000018a2 add r2, pc | r2 = 0x323e;
0x000018a4 blx 0xbdc | r0 = fcn_00000bdc ();
0x000018a8 cmp r0, 0 |
| if (r0 >= 0) {
0x000018aa blt 0x18d2 |
0x000018ac ldr r3, [pc, 0xec] |
0x000018ae add r3, pc | r3 = 0x324e;
0x000018b0 ldr.w r0, [r3, 0x94] | r0 = *(0x32e2);
0x000018b4 cmp r0, 0 |
| if (r0 == 0) {
0x000018b6 beq 0x195c | goto label_33;
| }
| label_11:
0x000018b8 sub.w r5, r5, 0x334 | r5 -= 0x334;
0x000018bc mov r2, r7 | r2 = r7;
0x000018be ldr r1, [r5] | r1 = *(r5);
0x000018c0 bl 0x153c | fcn_0000153c (r0, r1, r2, r3, r4);
0x000018c4 ldr r0, [r5] | r0 = *(r5);
0x000018c6 blx 0xbc4 | fcn_00000bc4 ();
0x000018ca ldr r3, [pc, 0xd4] |
0x000018cc add r3, pc | r3 = 0x3272;
0x000018ce ldr.w r8, [r3, 0x98] | r8 = *(0x330a);
| }
| label_8:
0x000018d2 mov r0, r6 | r0 = r6;
0x000018d4 blx 0xbc4 | fcn_00000bc4 ();
| label_9:
0x000018d8 mov r0, r8 | r0 = r8;
0x000018da blx 0xbc4 | fcn_00000bc4 ();
0x000018de ldr r3, [pc, 0xc4] |
0x000018e0 movs r2, 0 | r2 = 0;
0x000018e2 add r3, pc | r3 = 0x328c;
0x000018e4 str.w r2, [r3, 0x98] | __asm ("str.w r2, [r3, 0x98]");
0x000018e8 b 0x1818 |
| }
| label_26:
0x000018ea ldr r5, [pc, 0xbc] |
0x000018ec add r5, pc | r5 = 0x329a;
0x000018ee ldr.w r0, [r5, 0x94] | r0 = *(0x332e);
0x000018f2 blx 0xbc4 | fcn_00000bc4 ();
0x000018f6 ldr r0, [pc, 0xb4] |
0x000018f8 sub.w r1, r4, 0x14 | r1 = r4 - 0x14;
0x000018fc add r0, pc | r0 = 0x32ae;
0x000018fe bl 0x12c8 | fcn_000012c8 (r0, r1);
0x00001902 str.w r0, [r5, 0x94] | __asm ("str.w r0, [r5, 0x94]");
0x00001906 b 0x1818 | goto label_7;
| label_28:
0x00001908 ldr r4, [pc, 0xa4] |
0x0000190a add r4, pc | r4 = 0x32be;
0x0000190c ldr.w r0, [r4, 0x98] | r0 = *(0x3356);
0x00001910 blx 0xbc4 | fcn_00000bc4 ();
0x00001914 ldr r0, [pc, 0x9c] |
0x00001916 mov r1, r6 | r1 = r6;
0x00001918 add r0, pc | r0 = 0x32d0;
0x0000191a bl 0x12c8 | fcn_000012c8 (r0, r1);
0x0000191e str.w r0, [r4, 0x98] | __asm ("str.w r0, [r4, 0x98]");
0x00001922 b 0x1818 | goto label_7;
| label_31:
0x00001924 ldr r3, [pc, 0x90] |
0x00001926 add r3, pc | r3 = 0x32e2;
0x00001928 ldr.w r0, [r3, 0x94] | r0 = *(0x3376);
0x0000192c cbz r0, 0x1962 |
| while (1) {
0x0000192e mov r2, r7 | r2 = r7;
0x00001930 mov r1, r6 | r1 = r6;
0x00001932 bl 0x153c | fcn_0000153c (r0, r1, r2, r3, r4);
0x00001936 ldr r3, [pc, 0x84] |
0x00001938 add r3, pc | r3 = 0x32fa;
0x0000193a ldr.w r8, [r3, 0x98] | r8 = *(0x3392);
0x0000193e b 0x18d2 | goto label_8;
| label_30:
0x00001940 ldr r3, [pc, 0x7c] |
0x00001942 add r3, pc | r3 = 0x3306;
0x00001944 ldr.w r8, [r3, 0x98] | r8 = *(0x339e);
0x00001948 b 0x18d2 | goto label_8;
| label_29:
0x0000194a ldr r3, [pc, 0x78] |
0x0000194c add r3, pc | r3 = 0x3316;
0x0000194e ldr.w r8, [r3, 0x98] | r8 = *(0x33ae);
0x00001952 b 0x18d8 | goto label_9;
| label_32:
0x00001954 ldr r3, [pc, 0x70] |
0x00001956 add r3, pc | r3 = 0x3322;
0x00001958 mov r2, r3 | r2 = r3;
0x0000195a b 0x1896 | goto label_10;
| label_33:
0x0000195c ldr r0, [pc, 0x6c] |
0x0000195e add r0, pc | r0 = 0x332e;
0x00001960 b 0x18b8 | goto label_11;
0x00001962 ldr r0, [pc, 0x6c] |
0x00001964 add r0, pc | r0 = 0x333a;
0x00001966 b 0x192e |
| }
| label_25:
0x00001968 ldr r0, [pc, 0x68] |
0x0000196a add r0, pc | r0 = 0x3342;
0x0000196c bl 0x11e0 | r0 = fcn_000011e0 (r0);
| label_27:
0x00001970 blx 0xca4 | fcn_00000ca4 ();
0x00001974 movs r7, 0x44 | r7 = 0x44;
0x00001976 movs r0, r0 |
0x00001978 lsls r0, r2, 3 | r0 = r2 << 3;
0x0000197a movs r0, r0 |
0x0000197c movs r6, 0xfa | r6 = 0xfa;
0x0000197e movs r0, r0 |
0x00001980 lsls r4, r3, 0x1c | r4 = r3 << 0x1c;
0x00001982 movs r0, r0 |
0x00001984 lsls r6, r4, 0x1c | r6 = r4 << 0x1c;
0x00001986 movs r0, r0 |
0x00001988 lsls r2, r2, 0x1c | r2 <<= 0x1c;
0x0000198a movs r0, r0 |
0x0000198c lsls r4, r3, 0x1c | r4 = r3 << 0x1c;
0x0000198e movs r0, r0 |
0x00001990 movs r7, 0xc8 | r7 = 0xc8;
0x00001992 movs r0, r0 |
0x00001994 lsls r0, r6, 0x1a | r0 = r6 << 0x1a;
0x00001996 movs r0, r0 |
0x00001998 lsls r6, r5, 0x1b | r6 = r5 << 0x1b;
0x0000199a movs r0, r0 |
0x0000199c movs r7, 0x9e | r7 = 0x9e;
0x0000199e movs r0, r0 |
0x000019a0 movs r7, 0x80 | r7 = 0x80;
0x000019a2 movs r0, r0 |
0x000019a4 movs r7, 0x6a | r7 = 0x6a;
0x000019a6 movs r0, r0 |
0x000019a8 movs r7, 0x60 | r7 = 0x60;
0x000019aa movs r0, r0 |
0x000019ac lsls r4, r3, 0x19 | r4 = r3 << 0x19;
0x000019ae movs r0, r0 |
0x000019b0 movs r7, 0x42 | r7 = 0x42;
0x000019b2 movs r0, r0 |
0x000019b4 lsls r0, r3, 0x19 | r0 = r3 << 0x19;
0x000019b6 movs r0, r0 |
0x000019b8 movs r7, 0x26 | r7 = 0x26;
0x000019ba movs r0, r0 |
0x000019bc movs r7, 0x14 | r7 = 0x14;
0x000019be movs r0, r0 |
0x000019c0 movs r7, 0xa | r7 = 0xa;
0x000019c2 movs r0, r0 |
0x000019c4 movs r7, 0 | r7 = 0;
0x000019c6 movs r0, r0 |
0x000019c8 lsls r2, r2, 0x1c | r2 <<= 0x1c;
0x000019ca movs r0, r0 |
0x000019cc lsls r6, r3, 0x17 | r6 = r3 << 0x17;
0x000019ce movs r0, r0 |
0x000019d0 lsls r0, r3, 0x17 | r0 = r3 << 0x17;
0x000019d2 movs r0, r0 |
0x000019d4 lsls r6, r3, 0x17 | r6 = r3 << 0x17;
0x000019d6 movs r0, r0 |
0x000019d8 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x000019dc sub sp, 0x124 |
0x000019de ldr r4, [pc, 0x110] |
0x000019e0 add r3, sp, 0x10 | r3 += var_10h;
0x000019e2 movs r1, 1 | r1 = 1;
0x000019e4 ldr r0, [pc, 0x10c] | r0 = *(0x1af4);
0x000019e6 add r4, pc | r4 = 0x34dc;
0x000019e8 ldr.w r8, [pc, 0x10c] | r8 = *(0x00001af8);
0x000019ec ldr r2, [pc, 0x10c] |
0x000019ee ldr r0, [r4, r0] |
0x000019f0 add r8, pc | r8 += pc;
0x000019f2 add r2, pc | r2 = 0x34f2;
0x000019f4 ldr r0, [r0] | r0 = *(0x34dc);
0x000019f6 str r0, [sp, 0x11c] | var_11ch = r0;
0x000019f8 mov.w r0, 0 | r0 = 0;
0x000019fc str r2, [r3, 8] | *((r3 + 8)) = r2;
0x000019fe ldr.w r0, [r8, 0x90] | r0 = *((r8 + 0x90));
0x00001a02 ldr.w r2, [r8, 0x14] | r2 = *((r8 + 0x14));
0x00001a06 str r1, [r3] | *(r3) = r1;
0x00001a08 blx 0xcf0 | r0 = fcn_00000cf0 ();
0x00001a0c cmp r0, 0 |
| if (r0 < 0) {
0x00001a0e blt 0x1ae0 | goto label_34;
| }
0x00001a10 ldr r1, [pc, 0xec] |
0x00001a12 movs r0, 0 | r0 = 0;
0x00001a14 add.w sb, sp, 0x78 | sb += var_78h;
0x00001a16 lsrs r0, r7, 5 | r0 = r7 >> 5;
0x00001a18 add r1, pc | r1 = 0x351c;
0x00001a1a blx 0xb2c | sd_notify ();
| do {
| label_12:
0x00001a1e ldr.w r0, [r8, 0x90] | r0 = *((r8 + 0x90));
0x00001a22 mov.w r3, -1 | r3 = -1;
0x00001a26 movs r2, 0xa | r2 = 0xa;
0x00001a28 mov r1, sb | r1 = sb;
0x00001a2a blx 0xc04 | r0 = strndup (r0, r1);
0x00001a2e subs.w fp, r0, 0 |
| if (fp >= r0) {
0x00001a32 bge 0x1a60 | goto label_35;
| }
0x00001a34 blx 0xd38 | r0 = fcn_00000d38 ();
0x00001a38 ldr r3, [r0] | r3 = *(r0);
0x00001a3a cmp r3, 4 |
0x00001a3c beq 0x1a1e |
| } while (r3 == 4);
0x00001a3e ldr r0, [pc, 0xc4] |
0x00001a40 add r0, pc | r0 = 0x354a;
0x00001a42 blx 0xc74 | fcn_00000c74 ();
| label_15:
0x00001a46 ldr r2, [pc, 0xc0] |
0x00001a48 ldr r3, [pc, 0xa8] | r3 = *(0x1af4);
0x00001a4a add r2, pc | r2 = 0x3558;
0x00001a4c ldr r3, [r2, r3] | r3 = *(0x3558);
0x00001a4e ldr r2, [r3] | r2 = *(0x3558);
0x00001a50 ldr r3, [sp, 0x11c] | r3 = var_11ch;
0x00001a52 eors r2, r3 | r2 ^= r3;
0x00001a54 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00001a58 bne 0x1aea | goto label_36;
| }
0x00001a5a add sp, 0x124 |
0x00001a5c pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| if (r2 == r3) {
| label_35:
0x00001a60 beq 0x1a1e | goto label_12;
| }
0x00001a62 ldr r3, [pc, 0xa8] |
0x00001a64 mov r6, sb | r6 = sb;
0x00001a66 ldr r7, [pc, 0xa8] |
0x00001a68 movs r5, 0 | r5 = 0;
0x00001a6a ldr.w sl, [pc, 0xa8] | sl = *(0x00001b14);
0x00001a6e add r3, pc | r3 = 0x3580;
0x00001a70 strd r8, sb, [sp, 8] | __asm ("strd r8, sb, [sp, 8]");
0x00001a74 add r7, pc | r7 = 0x358a;
0x00001a76 str r3, [sp, 4] | var_4h = r3;
0x00001a78 add sl, pc | sl += pc;
0x00001a7a b 0x1abc |
| while (r4 != r7) {
0x00001a7c ldrd r2, r1, [r4] | __asm ("ldrd r2, r1, [r4]");
| if (r2 == 0) {
0x00001a80 cbz r2, 0x1ada | goto label_37;
| }
0x00001a82 str r1, [r2, 4] | *((r2 + 4)) = r1;
| label_14:
0x00001a84 add.w r8, r4, 0x24 | r8 = r4 + 0x24;
0x00001a88 add.w sb, sp, 0x20 | sb += var_20h;
0x00001a8c str r2, [r1] | *(r1) = r2;
0x00001a8e mov r0, r8 | r0 = r8;
0x00001a90 mov r1, sb | r1 = sb;
0x00001a92 blx 0xd14 | r0 = fcn_00000d14 ();
0x00001a96 cmp r0, 0 |
| if (r0 >= 0) {
0x00001a98 blt 0x1aa8 |
0x00001a9a ldr r1, [sp, 0x4c] | r1 = var_4ch;
| if (r1 == 0) {
0x00001a9c cbz r1, 0x1aa8 | goto label_38;
| }
0x00001a9e ldr r0, [r4, 0x20] | r0 = *((r4 + 0x20));
0x00001aa0 mov r1, r8 | r1 = r8;
0x00001aa2 movs r2, 1 | r2 = 1;
0x00001aa4 bl 0x141c | fcn_0000141c (r0, r1, r2);
| }
| label_38:
0x00001aa8 ldr r0, [r4, 8] | r0 = *((r4 + 8));
0x00001aaa adds r5, 1 | r5++;
0x00001aac blx 0xc68 | fcn_00000c68 ();
0x00001ab0 mov r0, r4 | r0 = r4;
0x00001ab2 adds r6, 0x10 | r6 += 0x10;
0x00001ab4 blx 0xbc4 | fcn_00000bc4 ();
0x00001ab8 cmp fp, r5 |
| if (fp == r5) {
0x00001aba beq 0x1ad4 | goto label_39;
| }
| label_13:
0x00001abc ldr r4, [r6, 8] | r4 = *((r6 + 8));
0x00001abe cmp r4, r7 |
0x00001ac0 bne 0x1a7c |
| }
0x00001ac2 ldr.w r0, [sl, 0x14] | r0 = *((sl + 0x14));
0x00001ac6 adds r5, 1 | r5++;
0x00001ac8 bl 0x17c0 | void (*0x17c0)(uint32_t, uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3, r4);
0x00001acc cmp fp, r5 |
0x00001ace add.w r6, r6, 0x10 | r6 += 0x10;
| if (fp != r5) {
0x00001ad2 bne 0x1abc | goto label_13;
| }
| label_39:
0x00001ad4 ldrd r8, sb, [sp, 8] | __asm ("ldrd r8, sb, [var_8h]");
0x00001ad8 b 0x1a1e | goto label_12;
| label_37:
0x00001ada ldr r3, [sp, 4] | r3 = var_4h;
0x00001adc str r1, [r3, 0x10] | *((r3 + 0x10)) = r1;
0x00001ade b 0x1a84 | goto label_14;
| label_34:
0x00001ae0 ldr r0, [pc, 0x34] |
0x00001ae2 add r0, pc | r0 = 0x35fe;
0x00001ae4 blx 0xc74 | fcn_00000c74 ();
0x00001ae8 b 0x1a46 | goto label_15;
| label_36:
0x00001aea blx 0xca4 | fcn_00000ca4 ();
0x00001aee nop |
0x00001af0 movs r5, 0x36 | r5 = 0x36;
0x00001af2 movs r0, r0 |
0x00001af4 lsls r0, r2, 3 | r0 = r2 << 3;
0x00001af6 movs r0, r0 |
0x00001af8 movs r6, 0x5c | r6 = 0x5c;
0x00001afa movs r0, r0 |
0x00001afc stc2l p15, c15, [fp, 0x3fc] | __asm ("stc2l p15, c15, [fp, 0x3fc]");
0x00001b00 lsls r4, r1, 0x16 | r4 = r1 << 0x16;
0x00001b02 movs r0, r0 |
0x00001b04 lsls r4, r5, 0x15 | r4 = r5 << 0x15;
0x00001b06 movs r0, r0 |
0x00001b08 movs r4, 0xd2 | r4 = 0xd2;
0x00001b0a movs r0, r0 |
0x00001b0c movs r5, 0xde | r5 = 0xde;
0x00001b0e movs r0, r0 |
0x00001b10 stc2l p15, c15, [sb, -0x3fc] | __asm ("stc2l p15, c15, [sb, -0x3fc]");
0x00001b14 movs r5, 0xd4 | r5 = 0xd4;
0x00001b16 movs r0, r0 |
0x00001b18 lsls r6, r6, 0x12 | r6 <<= 0x12;
0x00001b1a movs r0, r0 |
0x00001b1c movs r2, 9 | r2 = 9;
0x00001b1e movs r1, 3 | r1 = 3;
0x00001b20 movs r0, 0x10 | r0 = 0x10;
0x00001b22 b.w 0xbf4 | goto label_16;
| }
[*] Function printf used 1 times flashaudit