[*] Binary protection state of scheduled
Full RELRO Canary found NX enabled PIE enabled No RPATH No RUNPATH No Symbols
[*] Function fprintf tear down of scheduled
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/bin/scheduled @ 0x367c */
| #include <stdint.h>
|
; (fcn) fcn.0000367c () | void fcn_0000367c (int16_t arg1) {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_24h;
| int16_t var_30h;
| int16_t var_50h;
| int16_t var_5ch;
| r0 = arg1;
0x0000367c ldr r2, [pc, 0x6c] |
0x0000367e ldr r3, [pc, 0x70] | r3 = *(0x36f2);
0x00003680 push {r4, r5, r6, r7, lr} |
0x00003682 sub sp, 0x64 |
0x00003684 add r2, pc | r2 = 0x6d74;
0x00003686 mov r5, r0 | r5 = r0;
0x00003688 add r6, sp, 4 | r6 += var_4h;
0x0000368a mov r7, sp | r7 = sp;
0x0000368c ldr r3, [r2, r3] |
0x0000368e movs r0, 0 | r0 = 0;
0x00003690 add r4, sp, 0x30 | r4 += var_30h;
0x00003692 ldr r3, [r3] | r3 = *(0x6d74);
0x00003694 str r3, [sp, 0x5c] | var_5ch = r3;
0x00003696 mov.w r3, 0 | r3 = 0;
0x0000369a blx 0x2ca4 | g_signal_connect_data ();
0x0000369e mov r1, r6 | r1 = r6;
0x000036a0 str r0, [sp] | *(sp) = r0;
0x000036a2 mov r0, r7 | r0 = r7;
0x000036a4 blx 0x2cf8 | event_scheduled_complete_get_scheduled_events ();
0x000036a8 mov r1, r4 | r1 = r4;
0x000036aa mov r0, r7 | r0 = r7;
0x000036ac blx 0x2780 | fcn_00002780 ();
0x000036b0 ldr r3, [sp, 0x50] | r3 = var_50h;
0x000036b2 mov r0, r6 | r0 = r6;
0x000036b4 str r3, [sp, 0x24] | var_24h = r3;
0x000036b6 blx 0x2934 | r0 = fcn_00002934 ();
0x000036b8 ldmdb lr!, {r0, r1, sb, sl, lr} | __asm ("ldmdb lr!, {r0, r1, sb, sl, lr}");
0x000036bc mov r0, r4 | r0 = r4;
0x000036be mov r4, r3 | r4 = r3;
0x000036c0 blx 0x2934 | fcn_00002934 ();
0x000036c4 ldr r2, [r5, 0x30] | r2 = *((r5 + 0x30));
0x000036c6 subs r0, r4, r0 | r0 = r4 - r0;
0x000036c8 str r0, [r5, 0x30] | *((r5 + 0x30)) = r0;
0x000036ca ldr r3, [pc, 0x24] | r3 = *(0x36f2);
0x000036cc subs r0, r2, r0 | r0 = r2 - r0;
0x000036ce ldr r2, [pc, 0x24] |
0x000036d0 it ne |
| if (r0 == r2) {
0x000036d2 movne r0, 1 | r0 = 1;
| }
0x000036d4 add r2, pc | r2 = 0x6dce;
0x000036d6 ldr r3, [r2, r3] | r3 = *(0x6dce);
0x000036d8 ldr r2, [r3] | r2 = *(0x6dce);
0x000036da ldr r3, [sp, 0x5c] | r3 = var_5ch;
0x000036dc eors r2, r3 | r2 ^= r3;
0x000036de mov.w r3, 0 | r3 = 0;
| if (r2 == r3) {
0x000036e2 bne 0x36e8 |
0x000036e4 add sp, 0x64 |
0x000036e6 pop {r4, r5, r6, r7, pc} |
| }
0x000036e8 blx 0x2cec | fprintf_chk ()
0x000036ec adr r6, 0x120 | r6 = 0x120;
0x000036ee movs r0, r0 |
0x000036f0 lsls r0, r3, 0xc | r0 = r3 << 0xc;
0x000036f2 movs r0, r0 |
0x000036f4 adr r5, 0x3e0 | r5 = 0x3e0;
0x000036f6 movs r0, r0 |
0x000036f8 push {r4, lr} |
0x000036fa mov r4, r0 | r4 = r0;
0x000036fc blx 0x2f70 | fcn_00002f70 ();
0x00003700 ldr r1, [pc, 0x20] |
0x00003702 add r1, pc | r1 = 0x6e2a;
0x00003704 ldr r3, [r1, 4] | r3 = *(0x6e2e);
0x00003706 str r0, [r1] | *(r1) = r0;
0x00003708 cbnz r3, 0x371a |
| while (1) {
0x0000370a movs r1, 0x50 | r1 = 0x50;
0x0000370c mov r0, r4 | r0 = r4;
0x0000370e blx 0x2a94 | g_hash_table_iter_next ();
0x00003712 ldr r3, [pc, 0x14] |
0x00003714 add r3, pc | r3 = 0x6e42;
0x00003716 str r3, [r0, 0x18] | *((r0 + 0x18)) = r3;
0x00003718 pop {r4, pc} |
0x0000371a adds r1, 4 | r1 += 4;
0x0000371c mov r0, r4 | r0 = r4;
0x0000371e blx 0x2fc4 | fcn_00002fc4 ();
0x00003722 b 0x370a |
| }
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/bin/scheduled @ 0x372c */
| #include <stdint.h>
|
; (fcn) fcn.0000372c () | void fcn_0000372c (int16_t arg1) {
| int16_t var_4h_2;
| int16_t var_ch;
| int16_t var_14h;
| int16_t var_4h;
| int16_t var_44h;
| r0 = arg1;
0x0000372c ldr r2, [pc, 0x84] |
0x0000372e ldr r3, [pc, 0x88] | r3 = *(0x37ba);
0x00003730 push.w {r4, r5, r6, r7, r8, sb, lr} |
0x00003734 sub sp, 0x4c |
0x00003736 add r2, pc | r2 = 0x6eee;
0x00003738 ldr.w r8, [pc, 0x80] |
0x0000373c add r6, sp, 4 | r6 += var_4h;
0x0000373e mov r5, r0 | r5 = r0;
0x00003740 ldr r7, [pc, 0x7c] |
0x00003742 ldr r3, [r2, r3] |
0x00003744 add r8, pc | r8 = 0x6f04;
0x00003746 add r7, pc | r7 = 0x6f0a;
0x00003748 ldr r3, [r3] | r3 = *(0x6eee);
0x0000374a str r3, [sp, 0x44] | var_44h = r3;
0x0000374c mov.w r3, 0 | r3 = 0;
0x00003750 b 0x3758 |
| while (r0 != 0) {
0x00003752 mov r0, r4 | r0 = r4;
0x00003754 blx 0x272c | fcn_0000272c ();
0x00003756 invalid |
| label_0:
0x00003758 ldr r3, [r5, 0x18] | r3 = *((r5 + 0x18));
0x0000375a mov r2, r8 | r2 = r8;
0x0000375c movs r1, 0x40 | r1 = 0x40;
0x0000375e mov r0, r6 | r0 = r6;
0x00003760 blx 0x2b50 | fcn_00002b50 ();
0x00003764 ldr r3, [r5, 0x18] | r3 = *((r5 + 0x18));
0x00003766 mov r1, r6 | r1 = r6;
0x00003768 mov r0, r7 | r0 = r7;
0x0000376a adds r3, 1 | r3++;
0x0000376c str r3, [r5, 0x18] | *((r5 + 0x18)) = r3;
0x0000376e blx 0x2a58 | r0 = property_state_add_key_value ();
0x00003772 mov r4, r0 | r4 = r0;
0x00003774 ldr r0, [r5, 0x10] | r0 = *((r5 + 0x10));
0x00003776 mov r1, r4 | r1 = r4;
0x00003778 blx 0x2d9c | r0 = fcn_00002d9c ();
0x0000377c cmp r0, 0 |
0x0000377e bne 0x3752 |
| }
0x00003780 mov r0, r6 | r0 = r6;
0x00003782 blx 0x2894 | r0 = fcn_00002894 ();
0x00003786 mov sb, r0 | sb = r0;
0x00003788 mov r0, r4 | r0 = r4;
0x0000378a blx 0x272c | fcn_0000272c ();
0x0000378e cmp.w sb, 0 |
| if (sb == 0) {
0x00003792 beq 0x3758 | goto label_0;
| }
0x00003794 ldr r2, [pc, 0x2c] |
0x00003796 ldr r3, [pc, 0x20] | r3 = *(0x37ba);
0x00003798 add r2, pc | r2 = 0x6f60;
0x0000379a ldr r3, [r2, r3] | r3 = *(0x6f60);
0x0000379c ldr r2, [r3] | r2 = *(0x6f60);
0x0000379e ldr r3, [sp, 0x44] | r3 = var_44h;
0x000037a0 eors r2, r3 | r2 ^= r3;
0x000037a2 mov.w r3, 0 | r3 = 0;
| if (r2 == r3) {
0x000037a6 bne 0x37b0 |
0x000037a8 mov r0, sb | r0 = sb;
0x000037aa add sp, 0x4c |
0x000037ac pop.w {r4, r5, r6, r7, r8, sb, pc} |
| }
0x000037b0 blx 0x2cec | fprintf_chk ()
0x000037b4 adr r5, 0x258 | r5 = 0x258;
0x000037b6 movs r0, r0 |
0x000037b8 lsls r0, r3, 0xc | r0 = r3 << 0xc;
0x000037ba movs r0, r0 |
0x000037bc strb r4, [r7, 0x15] | *((r7 + 0x15)) = r4;
0x000037be movs r0, r0 |
0x000037c0 strb r2, [r3, 0x16] | *((r3 + 0x16)) = r2;
0x000037c2 movs r0, r0 |
0x000037c4 adr r5, 0xd0 | r5 = 0xd0;
0x000037c6 movs r0, r0 |
| }
r2dec has crashed (info: /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/bin/scheduled @ 0x37c8).
Please report the bug at https://github.com/radareorg/r2dec-js/issues
Use the option '--issue' or the command 'pddi' to generate
the needed data for the issue.
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/bin/scheduled @ 0x3914 */
| #include <stdint.h>
|
; (fcn) fcn.00003914 () | void fcn_00003914 (int16_t arg_48h, int16_t arg_4ch, int16_t arg_358h, int16_t arg_3d8h, int16_t arg_434h, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_bp_0h;
| int16_t var_6h;
| int16_t var_14h_2;
| int16_t var_18h_3;
| int16_t var_1ch_2;
| int32_t var_434h;
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_ch;
| int16_t var_10h_2;
| int16_t var_14h_3;
| int16_t var_18h_2;
| int16_t var_1ch_3;
| int16_t var_20h;
| int16_t var_24h;
| int16_t var_28h;
| int16_t var_2ch;
| int16_t var_10h;
| int16_t var_14h;
| int16_t var_18h;
| int16_t var_1ch;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x00003914 svcmi 0xf0e92d | __asm ("svcmi 0xf0e92d");
0x00003918 mov r7, r2 | r7 = r2;
0x0000391a sub sp, 0x24 |
0x0000391c ldr r2, [pc, 0x1a4] |
0x0000391e mov r5, r3 | r5 = r3;
0x00003920 mov r6, r1 | r6 = r1;
0x00003922 ldr r4, [sp, 0x48] | r4 = *(arg_48h);
0x00003924 ldr r3, [pc, 0x1a0] | r3 = *(0x3ac8);
0x00003926 add r2, pc | r2 = 0x73ee;
0x00003928 ldr r1, [pc, 0x1a0] |
0x0000392a str r4, [sp, 0x14] | var_14h = r4;
0x0000392c ldr r3, [r2, r3] |
0x0000392e movs r2, 0 | r2 = 0;
0x00003930 add r1, pc | r1 = 0x7400;
0x00003932 ldr r3, [r3] | r3 = *(0x73ee);
0x00003934 str r3, [sp, 0x1c] | var_1ch = r3;
0x00003936 mov.w r3, 0 | r3 = 0;
0x0000393a ldr r3, [sp, 0x4c] | r3 = *(arg_4ch);
0x0000393c str r2, [sp, 0x18] | var_18h = r2;
0x0000393e str r3, [sp, 0x10] | var_10h = r3;
0x00003940 blx 0x27e0 | r0 = fcn_000027e0 ();
0x00003944 ldr.w fp, [r0] | fp = *(r0);
0x00003948 mov sb, r0 | sb = r0;
0x0000394a ldr r0, [r6] | r0 = *(r6);
0x0000394c cmp.w fp, 0 |
| if (fp == 0) {
0x00003950 beq.w 0x3a56 | goto label_10;
| }
0x00003954 ldr r3, [pc, 0x178] |
0x00003956 mov r4, sb | r4 = sb;
0x00003958 ldr.w r8, [pc, 0x178] |
0x0000395c ldr.w sl, [pc, 0x178] |
0x00003960 add r3, pc | r3 = 0x7434;
0x00003962 add r8, pc | r8 = 0x743a;
0x00003964 str r3, [sp, 0xc] | var_bp_0h = r3;
0x00003966 add sl, pc | sl = 0x7442;
0x00003968 b 0x399c | goto label_11;
| label_0:
0x0000396a ldr r2, [r7] | r2 = *(r7);
0x0000396c cmp r2, 0 |
| if (r2 == 0) {
0x0000396e beq 0x3a16 | goto label_12;
| }
| label_2:
0x00003970 ldr r2, [r5] | r2 = *(r5);
0x00003972 cmp r2, 0 |
| if (r2 != 0) {
0x00003974 bne 0x3a38 | goto label_13;
| }
0x00003976 mov r1, r8 | r1 = r8;
0x00003978 mov r0, fp | r0 = fp;
0x0000397a blx 0x2c98 | r0 = schedule_get_iCal ();
0x0000397e cmp r0, 0 |
| if (r0 == 0) {
0x00003980 beq 0x3a38 | goto label_13;
| }
0x00003982 add r2, sp, 0x18 | r2 += var_18h;
0x00003984 movs r1, 1 | r1 = 1;
0x00003986 mov r0, fp | r0 = fp;
0x00003988 bl 0x877c | fcn_0000877c (r0, r1, r2);
0x0000398c str r0, [r5] | *(r5) = r0;
| if (r0 == 0) {
0x0000398e cbz r0, 0x39c8 | goto label_3;
| }
| label_1:
0x00003990 ldr r0, [r6] | r0 = *(r6);
| do {
0x00003992 ldr fp, [r4, 4]! | fp = *((r4 += 4));
0x00003996 cmp.w fp, 0 |
| if (fp == 0) {
0x0000399a beq 0x3a56 | goto label_10;
| }
| label_11:
0x0000399c ldrb.w r2, [fp] | r2 = *(fp);
0x000039a0 cmp r2, 0 |
0x000039a2 beq 0x3992 |
| } while (r2 == 0);
0x000039a4 cmp r0, 0 |
| if (r0 != 0) {
0x000039a6 bne 0x396a | goto label_0;
| }
0x000039a8 mov r1, sl | r1 = sl;
0x000039aa mov r0, fp | r0 = fp;
0x000039ac blx 0x2c98 | r0 = schedule_get_iCal ();
0x000039b0 cmp r0, 0 |
| if (r0 == 0) {
0x000039b2 beq 0x396a | goto label_0;
| }
0x000039b4 blx 0x2df0 | fcn_00002df0 ();
0x000039b8 add.w r1, fp, 8 | r1 += var_14h;
0x000039bc add r2, sp, 0x18 | r2 += var_18h;
0x000039be str r0, [r6] | *(r6) = r0;
0x000039c0 blx 0x2970 | r0 = fcn_00002970 ();
0x000039c4 cmp r0, 0 |
| if (r0 != 0) {
0x000039c6 bne 0x3990 | goto label_1;
| }
| label_3:
0x000039c8 ldr r0, [sp, 0x10] | r0 = var_10h;
0x000039ca ldr r1, [sp, 0x18] | r1 = var_18h;
0x000039cc blx 0x2b34 | fcn_00002b34 ();
0x000039d0 mov r0, sb | r0 = sb;
0x000039d2 blx 0x2e8c | fcn_00002e8c ();
| label_4:
0x000039d6 ldr r0, [r6] | r0 = *(r6);
| if (r0 != 0) {
0x000039d8 cbz r0, 0x39e2 |
0x000039da blx 0x2d38 | fcn_00002d38 ();
0x000039de movs r3, 0 | r3 = 0;
0x000039e0 str r3, [r6] | *(r6) = r3;
| }
0x000039e2 ldr r0, [r7] | r0 = *(r7);
| if (r0 != 0) {
0x000039e4 cbz r0, 0x39ee |
0x000039e6 blx 0x2d38 | fcn_00002d38 ();
0x000039ea movs r3, 0 | r3 = 0;
0x000039ec str r3, [r7] | *(r7) = r3;
| }
0x000039ee ldr r0, [r5] | r0 = *(r5);
| if (r0 != 0) {
0x000039f0 cbz r0, 0x39fa |
0x000039f2 blx 0x2864 | fcn_00002864 ();
0x000039f6 movs r3, 0 | r3 = 0;
0x000039f8 str r3, [r5] | *(r5) = r3;
| }
0x000039fa movs r0, 0 | r0 = 0;
| label_5:
0x000039fc ldr r2, [pc, 0xdc] |
0x000039fe ldr r3, [pc, 0xc8] | r3 = *(0x3aca);
0x00003a00 add r2, pc | r2 = 0x74e0;
0x00003a02 ldr r3, [r2, r3] | r3 = *(0x74e0);
0x00003a04 ldr r2, [r3] | r2 = *(0x74e0);
0x00003a06 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x00003a08 eors r2, r3 | r2 ^= r3;
0x00003a0a mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00003a0e bne 0x3abe | goto label_14;
| }
0x00003a10 add sp, 0x24 |
0x00003a12 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_12:
0x00003a16 ldr r1, [sp, 0xc] | r1 = var_bp_0h;
0x00003a18 mov r0, fp | r0 = fp;
0x00003a1a blx 0x2c98 | r0 = schedule_get_iCal ();
0x00003a1e cmp r0, 0 |
| if (r0 == 0) {
0x00003a20 beq 0x3970 | goto label_2;
| }
0x00003a22 blx 0x2df0 | fcn_00002df0 ();
0x00003a26 add.w r1, fp, 6 | r1 += var_6h;
0x00003a2a add r2, sp, 0x18 | r2 += var_18h;
0x00003a2c str r0, [r7] | *(r7) = r0;
0x00003a2e blx 0x2970 | r0 = fcn_00002970 ();
0x00003a32 cmp r0, 0 |
| if (r0 != 0) {
0x00003a34 bne 0x3990 | goto label_1;
| }
0x00003a36 b 0x39c8 | goto label_3;
| label_13:
0x00003a38 blx 0x28ac | fcn_000028ac ();
0x00003a3c ldr r3, [pc, 0xa0] |
0x00003a3e mov r1, r0 | r1 = r0;
0x00003a40 movs r2, 3 | r2 = 3;
0x00003a42 ldr r0, [sp, 0x10] | r0 = var_10h;
0x00003a44 str.w fp, [sp] | __asm ("str.w fp, [sp]");
0x00003a46 add sp, 0 |
0x00003a48 add r3, pc | r3 = 0x752c;
0x00003a4a blx 0x2bbc | fcn_00002bbc ();
0x00003a4e mov r0, sb | r0 = sb;
0x00003a50 blx 0x2e8c | fcn_00002e8c ();
0x00003a54 b 0x39d6 | goto label_4;
| if (r0 == 0) {
| label_10:
0x00003a56 cbz r0, 0x3aa4 | goto label_15;
| }
0x00003a58 ldr r1, [r7] | r1 = *(r7);
| if (r1 == 0) {
0x00003a5a cbz r1, 0x3a76 | goto label_16;
| }
0x00003a5c blx 0x2e14 | r0 = fcn_00002e14 ();
0x00003a60 mov r4, r0 | r4 = r0;
| if (r0 == 0) {
0x00003a62 cbz r0, 0x3a80 | goto label_17;
| }
0x00003a64 ldr r1, [r7] | r1 = *(r7);
| if (r1 == 0) {
0x00003a66 cbz r1, 0x3a76 | goto label_16;
| }
0x00003a68 ldr r0, [r6] | r0 = *(r6);
0x00003a6a blx 0x2e14 | fcn_00002e14 ();
0x00003a6e ldr r3, [sp, 0x14] | r3 = var_14h;
0x00003a70 cmp r0, 0 |
0x00003a72 str r0, [r3] | *(r3) = r0;
| if (r0 < 0) {
0x00003a74 blt 0x3a8a | goto label_18;
| }
| do {
| label_16:
0x00003a76 mov r0, sb | r0 = sb;
0x00003a78 blx 0x2e8c | fcn_00002e8c ();
0x00003a7c movs r0, 1 | r0 = 1;
0x00003a7e b 0x39fc | goto label_5;
| label_17:
0x00003a80 ldr r0, [r7] | r0 = *(r7);
0x00003a82 blx 0x2d38 | fcn_00002d38 ();
0x00003a86 str r4, [r7] | *(r7) = r4;
0x00003a88 b 0x3a76 |
| } while (1);
| label_18:
0x00003a8a blx 0x28ac | fcn_000028ac ();
0x00003a8e ldr r3, [pc, 0x54] |
0x00003a90 mov r1, r0 | r1 = r0;
0x00003a92 movs r2, 3 | r2 = 3;
0x00003a94 ldr r0, [sp, 0x10] | r0 = var_10h;
0x00003a96 add r3, pc | r3 = 0x7580;
0x00003a98 blx 0x2bbc | fcn_00002bbc ();
0x00003a9c mov r0, sb | r0 = sb;
0x00003a9e blx 0x2e8c | fcn_00002e8c ();
0x00003aa2 b 0x39d6 | goto label_4;
| label_15:
0x00003aa4 blx 0x28ac | fcn_000028ac ();
0x00003aa8 ldr r3, [pc, 0x3c] |
0x00003aaa mov r1, r0 | r1 = r0;
0x00003aac movs r2, 3 | r2 = 3;
0x00003aae ldr r0, [sp, 0x10] | r0 = var_10h;
0x00003ab0 add r3, pc | r3 = 0x759c;
0x00003ab2 blx 0x2bbc | fcn_00002bbc ();
0x00003ab6 mov r0, sb | r0 = sb;
0x00003ab8 blx 0x2e8c | fcn_00002e8c ();
0x00003abc b 0x39d6 | goto label_4;
| label_14:
0x00003abe blx 0x2cec | fprintf_chk ()
0x00003ac2 nop |
0x00003ac4 adr r3, 0x298 | r3 = 0x298;
0x00003ac6 movs r0, r0 |
0x00003ac8 lsls r0, r3, 0xc | r0 = r3 << 0xc;
0x00003aca movs r0, r0 |
0x00003acc strb r0, [r7, 0xe] | *((r7 + 0xe)) = r0;
0x00003ace movs r0, r0 |
0x00003ad0 strb r0, [r3, 0xe] | *((r3 + 0xe)) = r0;
0x00003ad2 movs r0, r0 |
0x00003ad4 strb r6, [r3, 0xe] | *((r3 + 0xe)) = r6;
0x00003ad6 movs r0, r0 |
0x00003ad8 strb r6, [r0, 0xe] | *((r0 + 0xe)) = r6;
0x00003ada movs r0, r0 |
0x00003adc adr r2, 0x330 | r2 = 0x330;
0x00003ade movs r0, r0 |
0x00003ae0 strb r0, [r0, 0xb] | *((r0 + 0xb)) = r0;
0x00003ae2 movs r0, r0 |
0x00003ae4 strb r2, [r1, 0xb] | *((r1 + 0xb)) = r2;
0x00003ae6 movs r0, r0 |
0x00003ae8 strb r4, [r2, 0xa] | *((r2 + 0xa)) = r4;
0x00003aea movs r0, r0 |
0x00003aec push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00003af0 subw sp, sp, 0x43c | __asm ("subw sp, sp, 0x43c");
0x00003af4 str r0, [sp, 0x18] | var_18h_2 = r0;
0x00003af6 mov r6, r1 | r6 = r1;
0x00003af8 movs r3, 0 | r3 = 0;
0x00003afa add.w sl, sp, 0x20 | sl += var_20h;
0x00003afe ldr r0, [pc, 0x1a8] |
0x00003b00 mov r2, sl | r2 = sl;
0x00003b02 ldr r1, [pc, 0x1a8] | r1 = *(0x3cae);
0x00003b04 add r0, pc | r0 = 0x77b2;
0x00003b06 ldr r1, [r0, r1] |
0x00003b08 ldr r0, [pc, 0x1a4] |
0x00003b0a ldr r1, [r1] | r1 = *(0x77b2);
0x00003b0c str.w r1, [sp, 0x434] | __asm ("str.w r1, [arg_434h]");
0x00003b10 mov.w r1, 0 | r1 = 0;
0x00003b14 mov r1, r3 | r1 = r3;
0x00003b16 add r0, pc | r0 = 0x77ca;
0x00003b18 str.w r3, [sl] | __asm ("str.w r3, [sl]");
0x00003b1c blx 0x2fa0 | r0 = fcn_00002fa0 ();
0x00003b20 mov sb, r0 | sb = r0;
0x00003b22 cmp r0, 0 |
| if (r0 == 0) {
0x00003b24 beq.w 0x3c94 | goto label_19;
| }
0x00003b28 ldr r3, [pc, 0x188] |
0x00003b2a str r6, [sp, 0x1c] | var_1ch_3 = r6;
0x00003b2c add r3, pc | r3 = 0x77e4;
0x00003b2e str r3, [sp, 0xc] | var_ch = r3;
0x00003b30 ldr r3, [pc, 0x184] |
0x00003b32 add r3, pc | r3 = 0x77ee;
0x00003b34 str r3, [sp, 0x10] | var_10h_2 = r3;
0x00003b36 ldr r3, [pc, 0x184] |
0x00003b38 add r3, pc | r3 = 0x77fa;
0x00003b3a str r3, [sp, 0x14] | var_14h_3 = r3;
| do {
| label_7:
0x00003b3c mov r0, sb | r0 = sb;
0x00003b3e blx 0x2810 | r0 = fcn_00002810 ();
0x00003b42 mov r4, r0 | r4 = r0;
0x00003b44 cmp r0, 0 |
| if (r0 == 0) {
0x00003b46 beq 0x3c1e | goto label_20;
| }
| label_6:
0x00003b48 movs r1, 0 | r1 = 0;
0x00003b4a add.w fp, sp, 0x34 |
0x00003b4e str r1, [sp, 0x24] | var_24h = r1;
0x00003b50 mov r3, r4 | r3 = r4;
0x00003b52 str r1, [sp, 0x28] | var_28h = r1;
0x00003b54 mov r0, fp | r0 = fp;
0x00003b56 str r1, [sp, 0x2c] | var_2ch = r1;
0x00003b58 add r7, sp, 0x24 | r7 += var_24h;
0x00003b5a ldr r1, [sp, 0x10] | r1 = var_10h_2;
0x00003b5c add r6, sp, 0x28 | r6 += var_28h;
0x00003b5e ldr r2, [sp, 0xc] | r2 = var_ch;
0x00003b60 add r5, sp, 0x2c | r5 += var_2ch;
0x00003b62 blx 0x2eec | fcn_00002eec ();
0x00003b66 ldr r1, [sp, 0x14] | r1 = var_14h_3;
0x00003b68 mov r0, r4 | r0 = r4;
0x00003b6a blx 0x2ea4 | r0 = fcn_00002ea4 ();
0x00003b6e cmp r0, 0 |
| if (r0 == 0) {
0x00003b70 beq 0x3c4c | goto label_21;
| }
0x00003b72 movs r1, 1 | r1 = 1;
0x00003b74 mov r0, fp | r0 = fp;
0x00003b76 blx 0x2fac | r0 = fcn_00002fac ();
0x00003b7a cmp r0, 0 |
| if (r0 == 0) {
0x00003b7c beq 0x3c4c | goto label_21;
| }
0x00003b7e mov r0, r4 | r0 = r4;
0x00003b80 blx 0x2b1c | r0 = fcn_00002b1c ();
0x00003b84 subs r1, r0, 5 | r1 = r0 - 5;
0x00003b86 mov r0, r4 | r0 = r4;
0x00003b88 blx 0x29b8 | fcn_000029b8 ();
0x00003b8a vmin.s16 q2, q3, q1 | __asm ("vmin.s16 q2, q3, q1");
0x00003b8e mov r1, fp | r1 = fp;
0x00003b90 mov r4, r0 | r4 = r0;
0x00003b92 blx 0x2f88 | r0 = fcn_00002f88 ();
0x00003b96 mov r8, r0 | r8 = r0;
0x00003b98 cmp r0, 0 |
| if (r0 == 0) {
0x00003b9a beq 0x3c5c | goto label_22;
| }
0x00003b9c add.w fp, sp, 0x30 |
0x00003ba0 ldr r0, [r0, 0x14] | r0 = *((r0 + 0x14));
0x00003ba2 mov r3, r5 | r3 = r5;
0x00003ba4 mov r2, r6 | r2 = r6;
0x00003ba6 mov r1, r7 | r1 = r7;
0x00003ba8 str.w sl, [sp, 4] | __asm ("str.w sl, [var_4h]");
0x00003bac str.w fp, [sp] | __asm ("str.w fp, [sp]");
0x00003bb0 bl 0x3914 | r0 = fcn_00003914 (r0, r1, r2, r3, r4, r5, r6);
0x00003bb4 cmp r0, 0 |
| if (r0 == 0) {
0x00003bb6 beq 0x3c72 | goto label_23;
| }
0x00003bb8 ldr.w r3, [fp] | r3 = *(fp);
0x00003bbc mov r0, r8 | r0 = r8;
0x00003bbe ldr r7, [r7] | r7 = *(r7);
0x00003bc0 ldr r6, [r6] | r6 = *(r6);
0x00003bc2 ldr r5, [r5] | r5 = *(r5);
0x00003bc4 mov r1, r7 | r1 = r7;
0x00003bc6 strd r3, sl, [sp] | __asm ("strd r3, sl, [sp]");
0x00003bca mov r2, r6 | r2 = r6;
0x00003bcc mov r3, r5 | r3 = r5;
0x00003bce bl 0x5688 | r0 = fcn_00005688 (r0, r1, r2, r3, r4, r5);
0x00003bd2 mov fp, r0 |
0x00003bd4 cmp r0, 0 |
| if (r0 == 0) {
0x00003bd6 beq 0x3c86 | goto label_24;
| }
0x00003bd8 mov r0, r8 | r0 = r8;
0x00003bda blx 0x2864 | fcn_00002864 ();
0x00003bde bl 0x4f18 | r0 = fcn_00004f18 ();
0x00003be2 mov r1, r0 | r1 = r0;
0x00003be4 mov r0, fp | r0 = fp;
0x00003be6 blx 0x2ce0 | r0 = g_thread_new ();
0x00003bea mov r1, r0 | r1 = r0;
0x00003bec ldr r0, [sp, 0x18] | r0 = var_18h_2;
0x00003bee bl 0x35dc | fcn_000035dc (r0, r1);
0x00003bf2 mov r0, r4 | r0 = r4;
0x00003bf4 blx 0x272c | fcn_0000272c ();
| if (r7 != 0) {
0x00003bf8 cbz r7, 0x3c00 |
0x00003bfa mov r0, r7 | r0 = r7;
0x00003bfc blx 0x2d38 | fcn_00002d38 ();
| }
| if (r6 != 0) {
0x00003c00 cbz r6, 0x3c08 |
0x00003c02 mov r0, r6 | r0 = r6;
0x00003c04 blx 0x2d38 | fcn_00002d38 ();
| }
0x00003c08 cmp r5, 0 |
0x00003c0a beq 0x3b3c |
| } while (r5 == 0);
0x00003c0c mov r0, r5 | r0 = r5;
0x00003c0e blx 0x2864 | fcn_00002864 ();
0x00003c12 mov r0, sb | r0 = sb;
0x00003c14 blx 0x2810 | fcn_00002810 ();
0x00003c16 ldcl p6, c4, [ip, 0x10]! | __asm ("ldcl p6, c4, [ip, 0x10]!");
0x00003c1a cmp r0, 0 |
| if (r0 != 0) {
0x00003c1c bne 0x3b48 | goto label_6;
| }
| label_20:
0x00003c1e movs r5, 1 | r5 = 1;
| do {
0x00003c20 mov r0, sb | r0 = sb;
0x00003c22 blx 0x27c8 | fcn_000027c8 ();
| label_9:
0x00003c26 mov r0, r4 | r0 = r4;
0x00003c28 blx 0x272c | fcn_0000272c ();
0x00003c2c ldr r2, [pc, 0x90] |
0x00003c2e ldr r3, [pc, 0x7c] | r3 = *(0x3cae);
0x00003c30 add r2, pc | r2 = 0x78f4;
0x00003c32 ldr r3, [r2, r3] | r3 = *(0x78f4);
0x00003c34 ldr r2, [r3] | r2 = *(0x78f4);
0x00003c36 ldr.w r3, [sp, 0x434] | r3 = *(arg_434h);
0x00003c3a eors r2, r3 | r2 ^= r3;
0x00003c3c mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00003c40 bne 0x3ca4 | goto label_25;
| }
0x00003c42 mov r0, r5 | r0 = r5;
0x00003c44 addw sp, sp, 0x43c | __asm ("addw sp, var_0h");
0x00003c48 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_21:
0x00003c4c ldr r2, [pc, 0x74] |
0x00003c4e mov r3, r4 | r3 = r4;
0x00003c50 movs r1, 0x10 | r1 = 0x10;
0x00003c52 movs r0, 0 | r0 = 0;
0x00003c54 add r2, pc | r2 = 0x791c;
0x00003c56 blx 0x2f7c | fcn_00002f7c ();
0x00003c5a b 0x3b3c | goto label_7;
| label_22:
0x00003c5c ldr r6, [sp, 0x1c] | r6 = var_1ch_3;
0x00003c5e mov r3, fp | r3 = fp;
0x00003c60 ldr r2, [pc, 0x64] |
0x00003c62 ldr.w r1, [sl] | r1 = *(sl);
0x00003c66 mov r0, r6 | r0 = r6;
0x00003c68 add r2, pc | r2 = 0x7934;
0x00003c6a blx 0x2a30 | fcn_00002a30 ();
| label_8:
0x00003c6e movs r5, 0 | r5 = 0;
0x00003c70 b 0x3c20 |
| } while (1);
| label_23:
0x00003c72 ldr r6, [sp, 0x1c] | r6 = var_1ch_3;
0x00003c74 ldr.w r1, [sl] | r1 = *(sl);
0x00003c78 mov r0, r6 | r0 = r6;
0x00003c7a blx 0x2b34 | fcn_00002b34 ();
0x00003c7e mov r0, r8 | r0 = r8;
0x00003c80 blx 0x2864 | fcn_00002864 ();
0x00003c84 b 0x3c6e | goto label_8;
| label_24:
0x00003c86 ldr r6, [sp, 0x1c] | r6 = var_1ch_3;
0x00003c88 ldr.w r1, [sl] | r1 = *(sl);
0x00003c8c mov r0, r6 | r0 = r6;
0x00003c8e blx 0x2b34 | fcn_00002b34 ();
0x00003c92 b 0x3c6e | goto label_8;
| label_19:
0x00003c94 ldr.w r1, [sl] | r1 = *(sl);
0x00003c98 mov r0, r6 | r0 = r6;
0x00003c9a mov r4, sb | r4 = sb;
0x00003c9c mov r5, sb | r5 = sb;
0x00003c9e blx 0x2b34 | fcn_00002b34 ();
0x00003ca2 b 0x3c26 | goto label_9;
| label_25:
0x00003ca4 blx 0x2cec | fprintf_chk ()
0x00003ca8 adr r1, 0x320 | r1 = 0x320;
0x00003caa movs r0, r0 |
0x00003cac lsls r0, r3, 0xc | r0 = r3 << 0xc;
0x00003cae movs r0, r0 |
0x00003cb0 strb r2, [r4, 9] | *((r4 + 9)) = r2;
0x00003cb2 movs r0, r0 |
0x00003cb4 strb r4, [r1, 9] | *((r1 + 9)) = r4;
0x00003cb6 movs r0, r0 |
0x00003cb8 strb r6, [r4, 9] | *((r4 + 9)) = r6;
0x00003cba movs r0, r0 |
0x00003cbc strb r0, [r5, 9] | *((r5 + 9)) = r0;
0x00003cbe movs r0, r0 |
0x00003cc0 adr r0, 0x270 | r0 = 0x270;
0x00003cc2 movs r0, r0 |
0x00003cc4 strb r4, [r2, 5] | *((r2 + 5)) = r4;
0x00003cc6 movs r0, r0 |
0x00003cc8 strb r4, [r5, 5] | *((r5 + 5)) = r4;
0x00003cca movs r0, r0 |
0x00003ccc ldr r2, [pc, 0x15c] |
0x00003cce ldr r3, [pc, 0x160] | r3 = *(0x3e32);
0x00003cd0 push {r4, r5, r6, r7, lr} |
0x00003cd2 movs r6, 0 | r6 = 0;
0x00003cd4 ldr r4, [pc, 0x15c] |
0x00003cd6 add r2, pc | r2 = 0x7b06;
0x00003cd8 sub sp, 0x24 |
0x00003cda mov r5, r0 | r5 = r0;
0x00003cdc ldr r3, [r2, r3] |
0x00003cde add r4, pc | r4 = 0x7b16;
0x00003ce0 ldr r7, [pc, 0x154] |
0x00003ce2 mov r0, r4 | r0 = r4;
0x00003ce4 ldr r3, [r3] | r3 = *(0x7b06);
0x00003ce6 str r3, [sp, 0x1c] | var_1ch_2 = r3;
0x00003ce8 mov.w r3, 0 | r3 = 0;
0x00003cec str r6, [sp, 0x18] | var_18h_3 = r6;
0x00003cee blx 0x2c04 | fcn_00002c04 ();
0x00003cf2 ldr r2, [pc, 0x148] |
0x00003cf4 movs r1, 0x65 | r1 = 0x65;
0x00003cf6 add r7, pc | r7 = 0x7b32;
0x00003cf8 add r2, pc | r2 = 0x7b3a;
0x00003cfa blx 0x2d44 | fcn_00002d44 ();
0x00003cfe mov r0, r4 | r0 = r4;
0x00003d00 blx 0x2c04 | fcn_00002c04 ();
0x00003d04 ldr r2, [pc, 0x138] |
0x00003d06 mov r1, r6 | r1 = r6;
0x00003d08 add r2, pc | r2 = 0x7b4c;
0x00003d0a blx 0x2d44 | fcn_00002d44 ();
0x00003d0e mov r0, r4 | r0 = r4;
0x00003d10 blx 0x2c04 | fcn_00002c04 ();
0x00003d14 ldr r2, [pc, 0x12c] |
0x00003d16 movs r1, 1 | r1 = 1;
0x00003d18 add r2, pc | r2 = 0x7b60;
0x00003d1a blx 0x2d44 | fcn_00002d44 ();
0x00003d1e mov r0, r4 | r0 = r4;
0x00003d20 blx 0x2c04 | fcn_00002c04 ();
0x00003d24 ldr r2, [pc, 0x120] |
0x00003d26 movs r1, 2 | r1 = 2;
0x00003d28 add r2, pc | r2 = 0x7b74;
0x00003d2a blx 0x2d44 | fcn_00002d44 ();
0x00003d2e mov r0, r4 | r0 = r4;
0x00003d30 blx 0x2c04 | fcn_00002c04 ();
0x00003d34 ldr r2, [pc, 0x114] |
0x00003d36 movs r1, 3 | r1 = 3;
0x00003d38 add r2, pc | r2 = 0x7b88;
0x00003d3a blx 0x2d44 | fcn_00002d44 ();
0x00003d3e mov r0, r4 | r0 = r4;
0x00003d40 blx 0x2c04 | fcn_00002c04 ();
0x00003d44 ldr r2, [pc, 0x108] |
0x00003d46 movs r1, 4 | r1 = 4;
0x00003d48 add r2, pc | r2 = 0x7b9c;
0x00003d4a blx 0x2d44 | fcn_00002d44 ();
0x00003d4c vext.16 d20, d12, d16, 3 | __asm ("vext.16 d20, d12, d16, 3");
0x00003d50 blx 0x2c04 | fcn_00002c04 ();
0x00003d54 ldr r2, [pc, 0xfc] |
0x00003d56 movs r1, 5 | r1 = 5;
0x00003d58 add r2, pc | r2 = 0x7bb0;
0x00003d5a blx 0x2d44 | fcn_00002d44 ();
0x00003d5e ldr r2, [pc, 0xf8] |
0x00003d60 movs r0, 1 | r0 = 1;
0x00003d62 ldr r3, [pc, 0xf8] |
0x00003d64 ldr r1, [pc, 0xf8] |
0x00003d66 add r2, pc | r2 = 0x7bc4;
0x00003d68 strd r5, r6, [sp, 8] | __asm ("strd r5, r6, [sp, 8]");
0x00003d6a ldrsb r2, [r0, r0] | r2 = *((r0 + r0));
0x00003d6c add r3, pc | r3 = 0x7bce;
0x00003d6e invalid |
0x00003d72 add r1, pc | r1 = 0x7bd6;
0x00003d74 ldr r3, [pc, 0xec] |
0x00003d76 mov r2, r6 | r2 = r6;
0x00003d78 add r3, pc | r3 = 0x7be0;
0x00003d7a blx 0x2ed4 | fcn_00002ed4 ();
0x00003d7e str r0, [r5, 0xc] | *((r5 + 0xc)) = r0;
| if (r0 == 0) {
0x00003d80 cbnz r0, 0x3d8e |
0x00003d82 ldr r2, [pc, 0xe4] |
0x00003d84 movs r1, 4 | r1 = 4;
0x00003d86 add r2, pc | r2 = 0x7bf4;
0x00003d88 blx 0x2f7c | fcn_00002f7c ();
0x00003d8c b 0x3d8c |
| }
0x00003d8e ldr r0, [pc, 0xdc] |
0x00003d90 mov r2, r5 | r2 = r5;
0x00003d92 mov r1, r6 | r1 = r6;
0x00003d94 add r0, pc | r0 = 0x7c06;
0x00003d96 blx 0x2ef8 | fcn_00002ef8 ();
0x00003d9a str r0, [r5, 0x14] | *((r5 + 0x14)) = r0;
0x00003d9c cmp r0, 0 |
| if (r0 != 0) {
0x00003d9e beq 0x3e1a |
0x00003da0 ldr r0, [pc, 0xcc] |
0x00003da2 mov r1, r5 | r1 = r5;
0x00003da4 add r0, pc | r0 = 0x7c18;
0x00003da6 blx 0x29a0 | fcn_000029a0 ();
0x00003daa ldr r3, [pc, 0xc8] | r3 = *(0x3e76);
0x00003dac str r0, [r5, 0x34] | *((r5 + 0x34)) = r0;
0x00003dae ldr r2, [pc, 0xc8] | r2 = *(0x3e7a);
0x00003db0 ldr r3, [r7, r3] | r3 = *((r7 + r3));
0x00003db2 ldr r1, [pc, 0xc8] | r1 = *(0x3e7e);
0x00003db4 ldr r0, [pc, 0xc8] | r0 = *(0x3e80);
0x00003db6 str r3, [sp, 0x14] | var_14h_2 = r3;
0x00003db8 ldr r2, [r7, r2] | r2 = *((r7 + r2));
0x00003dba str r2, [sp, 0x14] | var_14h_2 = r2;
0x00003dbc ldr r1, [r7, r1] | r1 = *((r7 + r1));
0x00003dbe str r1, [sp, 0x14] | var_14h_2 = r1;
0x00003dc0 ldr r0, [r7, r0] | r0 = *((r7 + r0));
0x00003dc2 str r0, [sp, 0x14] | var_14h_2 = r0;
0x00003dc4 blx 0x2ad0 | r0 = event_producer_declare ();
0x00003dc8 mov r3, r0 | r3 = r0;
0x00003dca add r1, sp, 0x18 | r1 += var_18h_3;
0x00003dcc mov r0, r5 | r0 = r5;
0x00003dce str r3, [r5, 0x10] | *((r5 + 0x10)) = r3;
0x00003dd0 str r6, [r5, 0x18] | *((r5 + 0x18)) = r6;
0x00003dd2 bl 0x3aec | r0 = void (*0x3aec)(uint32_t, uint32_t, uint32_t, uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3, r4, r5, r6);
| if (r0 != 0) {
0x00003dd6 cbz r0, 0x3e0a |
0x00003dd8 mov r0, r5 | r0 = r5;
0x00003dda bl 0x37c8 | fcn_000037c8 (r0);
0x00003dde mov r0, r5 | r0 = r5;
0x00003de0 bl 0x367c | fcn_0000367c (r0);
0x00003de4 ldr r1, [pc, 0x9c] |
0x00003de6 mov r2, r5 | r2 = r5;
0x00003de8 movs r0, 1 | r0 = 1;
0x00003dea add r1, pc | r1 = 0x7c72;
0x00003dec blx 0x2a3c | fcn_00002a3c ();
0x00003df0 ldr r2, [pc, 0x94] |
0x00003df2 ldr r3, [pc, 0x3c] | r3 = *(0x3e32);
0x00003df4 str r0, [r5, 0x1c] | *((r5 + 0x1c)) = r0;
0x00003df6 add r2, pc | r2 = 0x7c82;
0x00003df8 ldr r3, [r2, r3] | r3 = *(0x7c82);
0x00003dfa ldr r2, [r3] | r2 = *(0x7c82);
0x00003dfc ldr r3, [sp, 0x1c] | r3 = var_1ch_2;
0x00003dfe eors r2, r3 | r2 ^= r3;
0x00003e00 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00003e04 bne 0x3e26 | goto label_26;
| }
0x00003e06 add sp, 0x24 |
0x00003e08 pop {r4, r5, r6, r7, pc} |
| }
0x00003e0a ldr r3, [sp, 0x18] | r3 = var_18h_3;
0x00003e0c movs r1, 4 | r1 = 4;
0x00003e0e ldr r2, [pc, 0x7c] |
0x00003e10 ldr r3, [r3, 8] | r3 = *((r3 + 8));
0x00003e12 add r2, pc | r2 = 0x7ca4;
0x00003e14 blx 0x2f7c | fcn_00002f7c ();
0x00003e16 invalid |
0x00003e18 b 0x3e18 |
| }
0x00003e1a ldr r2, [pc, 0] | r2 = *(0x00003e1c);
0x00003e1c movs r1, 4 | r1 = 4;
0x00003e1e add r2, pc | r2 += pc;
0x00003e20 blx 0x2f7c | fcn_00002f7c ();
0x00003e24 b 0x3e24 |
| label_26:
0x00003e26 blx 0x2cec | fprintf_chk ()
0x00003e2a nop |
0x00003e2c ldr r7, [sp, 0x3d8] | r7 = *(arg_3d8h);
0x00003e2e movs r0, r0 |
0x00003e30 lsls r0, r3, 0xc | r0 = r3 << 0xc;
0x00003e32 movs r0, r0 |
0x00003e34 ldr r6, [r4, 0x64] | r6 = *((r4 + 0x64));
0x00003e36 movs r0, r0 |
0x00003e38 ldr r7, [sp, 0x358] | r7 = *(arg_358h);
0x00003e3a movs r0, r0 |
0x00003e3c strb r0, [r7, 3] | *((r7 + 3)) = r0;
0x00003e3e movs r0, r0 |
0x00003e40 strb r0, [r3, 4] | *((r3 + 4)) = r0;
0x00003e42 movs r0, r0 |
0x00003e44 strb r0, [r6, 4] | *((r6 + 4)) = r0;
0x00003e46 movs r0, r0 |
0x00003e48 strb r4, [r1, 5] | *((r1 + 5)) = r4;
0x00003e4a movs r0, r0 |
0x00003e4c strb r4, [r5, 5] | *((r5 + 5)) = r4;
0x00003e4e movs r0, r0 |
0x00003e50 strb r0, [r2, 6] | *((r2 + 6)) = r0;
0x00003e52 movs r0, r0 |
0x00003e54 strb r4, [r6, 6] | *((r6 + 6)) = r4;
0x00003e56 movs r0, r0 |
0x00003e58 bl 0xffdffe5a | r0 = void (*0xffdffe5a)(uint32_t) (r0);
0x00003e5c bl 0xffe11e5e | void (*0xffe11e5e)(uint32_t) (r0);
0x00003e60 strb r6, [r1, 7] | *((r1 + 7)) = r6;
0x00003e62 movs r0, r0 |
0x00003e64 bl 0xffe29e66 | void (*0xffe29e66)(uint32_t) (r0);
0x00003e68 strb r6, [r2, 7] | *((r2 + 7)) = r6;
0x00003e6a movs r0, r0 |
0x00003e6c strb r4, [r4, 7] | *((r4 + 7)) = r4;
0x00003e6e movs r0, r0 |
0x00003e70 bl 0xffd81e72 | void (*0xffd81e72)(uint32_t) (r0);
0x00003e74 lsls r0, r1, 0xc | r0 = r1 << 0xc;
0x00003e76 movs r0, r0 |
0x00003e78 lsls r0, r7, 0xb | r0 = r7 << 0xb;
0x00003e7a movs r0, r0 |
0x00003e7c lsls r4, r4, 0xc | r4 <<= 0xc;
0x00003e7e movs r0, r0 |
0x00003e80 lsls r0, r0, 0xc | r0 <<= 0xc;
0x00003e82 movs r0, r0 |
0x00003e84 lsls r7, r4, 3 | r7 = r4 << 3;
0x00003e86 movs r0, r0 |
0x00003e88 ldr r6, [sp, 0x358] | r6 = *(arg_358h);
0x00003e8a movs r0, r0 |
0x00003e8c strb r6, [r4, 6] | *((r4 + 6)) = r6;
0x00003e8e movs r0, r0 |
0x00003e90 strb r2, [r6, 5] | *((r6 + 5)) = r2;
0x00003e92 movs r0, r0 |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/bin/scheduled @ 0x4038 */
| #include <stdint.h>
|
; (fcn) fcn.00004038 () | void fcn_00004038 (int16_t arg_f8h, int16_t arg_f0h, int16_t arg_240h, int16_t arg_1f0h, int16_t arg_208h, int16_t arg_308h, int16_t arg_310h, int16_t arg_3b8h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_0h_4;
| int16_t var_ch_3;
| int16_t var_10h_2;
| int16_t var_14h_3;
| int16_t var_0h_2;
| int16_t var_4h_2;
| int16_t var_28h_2;
| int16_t var_ch_2;
| int16_t var_10h;
| int16_t var_14h_2;
| int32_t var_70h;
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_ch;
| 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;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x00004038 svcmi 0xf0e92d | __asm ("svcmi 0xf0e92d");
0x0000403c mov r6, r1 | r6 = r1;
0x0000403e ldr r1, [pc, 0x1e4] |
0x00004040 mov r5, r2 | r5 = r2;
0x00004042 sub sp, 0x34 |
0x00004044 movs r4, 0 | r4 = 0;
0x00004046 ldr r2, [pc, 0x1e0] | r2 = *(0x422a);
0x00004048 mov r7, r0 | r7 = r0;
0x0000404a add r1, pc | r1 = 0x8274;
0x0000404c mov r0, r4 | r0 = r4;
0x0000404e mov r8, r3 | r8 = r3;
0x00004050 ldr r2, [r1, r2] |
0x00004052 mov r1, r4 | r1 = r4;
0x00004054 ldr r2, [r2] | r2 = *(0x8274);
0x00004056 str r2, [sp, 0x2c] | var_2ch = r2;
0x00004058 mov.w r2, 0 | r2 = 0;
0x0000405c movs r2, 1 | r2 = 1;
0x0000405e str r4, [r5] | *(r5) = r4;
0x00004060 strd r4, r4, [sp, 0x14] | __asm ("strd r4, r4, [var_14h]");
0x00004064 strd r4, r4, [sp, 0x1c] | __asm ("strd r4, r4, [var_1ch]");
0x00004068 str r4, [sp, 0x28] | var_28h = r4;
0x0000406a blx 0x28f8 | r0 = fcn_000028f8 ();
0x0000406e mov r4, r0 | r4 = r0;
0x00004070 mov r0, r6 | r0 = r6;
0x00004072 blx 0x29ec | r0 = g_object_new ();
0x00004076 mov sb, r0 | sb = r0;
0x00004078 mov r0, r6 | r0 = r6;
0x0000407a blx 0x2928 | fcn_00002928 ();
0x0000407e mov r1, sb | r1 = sb;
0x00004080 mov r2, r0 | r2 = r0;
0x00004082 mov r0, r4 | r0 = r4;
0x00004084 blx 0x2f64 | fcn_00002f64 ();
0x00004088 add r1, sp, 0x14 | r1 += var_14h;
0x0000408a mov sb, r0 | sb = r0;
0x0000408c blx 0x275c | r0 = fcn_0000275c ();
0x00004090 mov r4, r0 | r4 = r0;
0x00004092 blx 0x29c8 | schedule_get_vevent ();
0x00004096 str r0, [r5] | *(r5) = r0;
0x00004098 cmp r0, 0 |
| if (r0 == 0) {
0x0000409a beq.w 0x41d6 | goto label_6;
| }
| label_2:
0x0000409e mov r0, r4 | r0 = r4;
0x000040a0 blx 0x29c8 | schedule_get_vevent ();
0x000040a2 ldc p6, c4, [r2], {1} | __asm ("ldc p6, c4, [r2], {1}");
0x000040a6 ldr r0, [pc, 0x184] |
0x000040a8 add r0, pc | r0 = 0x82da;
0x000040aa blx 0x2a58 | r0 = property_state_add_key_value ();
0x000040ae mov r6, r0 | r6 = r0;
0x000040b0 ldr r0, [r7, 0x10] | r0 = *((r7 + 0x10));
0x000040b2 mov r1, r6 | r1 = r6;
0x000040b4 blx 0x2d9c | r0 = fcn_00002d9c ();
0x000040b8 mov r5, r0 | r5 = r0;
0x000040ba bl 0x50b4 | r0 = fcn_000050b4 ();
0x000040be mov r1, r0 | r1 = r0;
0x000040c0 mov r0, r5 | r0 = r5;
0x000040c2 blx 0x2ce0 | r0 = g_thread_new ();
0x000040c6 mov r5, r0 | r5 = r0;
0x000040c8 mov r0, r6 | r0 = r6;
0x000040ca blx 0x272c | fcn_0000272c ();
| if (r5 == 0) {
0x000040ce cbz r5, 0x4122 | goto label_7;
| }
0x000040d0 blx 0x28ac | r0 = fcn_000028ac ();
0x000040d4 mov r5, r0 | r5 = r0;
0x000040d6 mov r0, r4 | r0 = r4;
0x000040d8 blx 0x29c8 | r0 = schedule_get_vevent ();
0x000040dc mov r3, r0 | r3 = r0;
0x000040de mov r1, r5 | r1 = r5;
0x000040e0 str r3, [sp] | *(sp) = r3;
0x000040e2 mov r0, r8 | r0 = r8;
0x000040e4 ldr r3, [pc, 0x148] |
0x000040e6 movs r2, 5 | r2 = 5;
0x000040e8 add r3, pc | r3 = 0x831c;
0x000040ea blx 0x2bbc | fcn_00002bbc ();
0x000040ee movs r0, 0 | r0 = 0;
0x000040f0 mov r6, r0 | r6 = r0;
0x000040f2 blx 0x272c | fcn_0000272c ();
| do {
| label_0:
0x000040f6 mov r0, r4 | r0 = r4;
0x000040f8 blx 0x2864 | fcn_00002864 ();
0x000040fc movs r1, 1 | r1 = 1;
0x000040fe mov r0, sb | r0 = sb;
0x00004100 blx 0x2958 | fcn_00002958 ();
0x00004104 ldr r2, [pc, 0x12c] |
0x00004106 ldr r3, [pc, 0x120] | r3 = *(0x422a);
0x00004108 add r2, pc | r2 = 0x8340;
0x0000410a ldr r3, [r2, r3] | r3 = *(0x8340);
0x0000410c ldr r2, [r3] | r2 = *(0x8340);
0x0000410e ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x00004110 eors r2, r3 | r2 ^= r3;
0x00004112 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00004116 bne.w 0x421e | goto label_8;
| }
0x0000411a mov r0, r6 | r0 = r6;
0x0000411c add sp, 0x34 |
0x0000411e pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_7:
0x00004122 mov r0, r4 | r0 = r4;
0x00004124 blx 0x29d4 | g_mutex_init ();
0x00004128 add r3, sp, 0x24 | r3 += var_24h;
0x0000412a add r2, sp, 0x1c | r2 += var_1ch;
0x0000412c str r3, [sp] | *(sp) = r3;
0x0000412e add r1, sp, 0x18 | r1 += var_18h;
0x00004130 add r3, sp, 0x20 | r3 += var_20h;
0x00004132 str.w r8, [sp, 4] | __asm ("str.w r8, [var_4h]");
0x00004136 bl 0x3914 | fcn_00003914 (r0, r1, r2, r3, r4, r5, r6);
0x0000413a ldr.w fp, [sp, 0x18] | fp = var_18h;
0x0000413e mov r6, r0 | r6 = r0;
| if (r0 != 0) {
0x00004140 cbnz r0, 0x4180 | goto label_9;
| }
0x00004142 ldr.w sl, [sp, 0x20] | sl = var_20h;
0x00004146 mov r7, r0 | r7 = r0;
0x00004148 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x0000414a str r0, [sp, 0xc] | var_ch = r0;
0x0000414c str r3, [sp, 8] | var_8h = r3;
| label_1:
0x0000414e cmp.w fp, 0 |
| if (fp != 0) {
0x00004152 beq 0x415a |
0x00004154 mov r0, fp | r0 = fp;
0x00004156 blx 0x2d38 | fcn_00002d38 ();
| }
0x0000415a ldr r0, [sp, 8] | r0 = var_8h;
| if (r0 != 0) {
0x0000415c cbz r0, 0x4162 |
0x0000415e blx 0x2d38 | fcn_00002d38 ();
| }
0x00004162 cmp.w sl, 0 |
| if (sl != 0) {
0x00004166 beq 0x416e |
0x00004168 mov r0, sl | r0 = sl;
0x0000416a blx 0x2864 | fcn_00002864 ();
| }
0x0000416e ldr r0, [sp, 0xc] | r0 = var_ch;
0x00004170 blx 0x272c | fcn_0000272c ();
0x00004174 cmp r7, 0 |
0x00004176 beq 0x40f6 |
| } while (r7 == 0);
0x00004178 mov r0, r5 | r0 = r5;
0x0000417a blx 0x2864 | fcn_00002864 ();
0x0000417e b 0x40f6 | goto label_0;
| label_9:
0x00004180 ldrd sl, r3, [sp, 0x20] | __asm ("ldrd sl, r3, [var_24h]");
0x00004184 add r6, sp, 0x28 | r6 += var_28h;
0x00004186 ldr r2, [sp, 0x1c] | r2 = var_1ch;
0x00004188 mov r1, fp | r1 = fp;
0x0000418a mov r0, r4 | r0 = r4;
0x0000418c str r6, [sp, 4] | var_4h = r6;
0x0000418e str r3, [sp] | *(sp) = r3;
0x00004190 mov r3, sl | r3 = sl;
0x00004192 str r2, [sp, 8] | var_8h = r2;
0x00004194 bl 0x5688 | r0 = fcn_00005688 (r0, r1, r2, r3, r4, r5);
0x00004198 mov r5, r0 | r5 = r0;
| if (r0 != 0) {
0x0000419a cbz r0, 0x41ec |
0x0000419c mov r0, r4 | r0 = r4;
0x0000419e blx 0x29c8 | r0 = schedule_get_vevent ();
0x000041a2 mov r1, r0 | r1 = r0;
0x000041a4 ldr r0, [pc, 0x90] |
0x000041a6 add r0, pc | r0 = 0x83e2;
0x000041a8 blx 0x2a58 | property_state_add_key_value ();
0x000041ac mov r2, r8 | r2 = r8;
0x000041ae mov r1, r0 | r1 = r0;
0x000041b0 str r0, [sp, 0xc] | var_ch = r0;
0x000041b2 mov r0, r4 | r0 = r4;
0x000041b4 blx 0x2fb8 | r0 = fcn_00002fb8 ();
0x000041b8 mov r6, r0 | r6 = r0;
| if (r0 != 0) {
0x000041ba cbz r0, 0x41e8 |
0x000041bc bl 0x4f18 | r0 = fcn_00004f18 ();
0x000041c0 mov r1, r0 | r1 = r0;
0x000041c2 mov r0, r5 | r0 = r5;
0x000041c4 blx 0x2ce0 | r0 = g_thread_new ();
0x000041c8 mov r1, r0 | r1 = r0;
0x000041ca mov r0, r7 | r0 = r7;
0x000041cc movs r6, 1 | r6 = 1;
0x000041ce movs r7, 0 | r7 = 0;
0x000041d0 bl 0x35dc | fcn_000035dc (r0, r1);
0x000041d4 b 0x414e | goto label_1;
| label_6:
0x000041d6 mov r0, r7 | r0 = r7;
0x000041d8 bl 0x372c | r0 = fcn_0000372c (r0);
0x000041dc mov r1, r0 | r1 = r0;
0x000041de str r0, [r5] | *(r5) = r0;
0x000041e0 mov r0, r4 | r0 = r4;
0x000041e2 blx 0x2e38 | fcn_00002e38 ();
0x000041e6 b 0x409e | goto label_2;
| }
0x000041e8 movs r7, 1 | r7 = 1;
0x000041ea b 0x414e | goto label_1;
| }
0x000041ec blx 0x28ac | r0 = fcn_000028ac ();
0x000041f0 mov r7, r0 | r7 = r0;
0x000041f2 mov r0, r4 | r0 = r4;
0x000041f4 blx 0x29c8 | schedule_get_vevent ();
0x000041f8 ldr r3, [sp, 0x28] | r3 = var_28h;
0x000041fa mov r2, r0 | r2 = r0;
0x000041fc mov r1, r7 | r1 = r7;
0x000041fe mov r0, r8 | r0 = r8;
0x00004200 mov r7, r5 | r7 = r5;
0x00004202 ldr r3, [r3, 8] | r3 = *((r3 + 8));
0x00004204 strd r2, r3, [sp] | __asm ("strd r2, r3, [sp]");
0x00004208 movs r2, 2 | r2 = 2;
0x0000420a ldr r3, [pc, 0x30] |
0x0000420c add r3, pc | r3 = 0x844e;
0x0000420e blx 0x2bbc | fcn_00002bbc ();
0x00004212 mov r0, r6 | r0 = r6;
0x00004214 mov r6, r5 | r6 = r5;
0x00004216 blx 0x28a0 | fcn_000028a0 ();
0x0000421a str r5, [sp, 0xc] | var_ch = r5;
0x0000421c b 0x414e | goto label_1;
| label_8:
0x0000421e blx 0x2cec | fprintf_chk ()
0x00004222 nop |
0x00004224 ldr r4, [sp, 0x208] | r4 = *(arg_208h);
0x00004226 movs r0, r0 |
0x00004228 lsls r0, r3, 0xc | r0 = r3 << 0xc;
0x0000422a movs r0, r0 |
0x0000422c ldr r0, [r7, 0x40] | r0 = *((r7 + 0x40));
0x0000422e movs r0, r0 |
0x00004230 ldr r0, [r5, 0x70] | r0 = *((r5 + 0x70));
0x00004232 movs r0, r0 |
0x00004234 ldr r3, [sp, 0x310] | r3 = *(arg_310h);
0x00004236 movs r0, r0 |
0x00004238 ldr r2, [r0, 0x6c] | r2 = *((r0 + 0x6c));
0x0000423a movs r0, r0 |
0x0000423c ldr r0, [r6, 0x60] | r0 = *((r6 + 0x60));
0x0000423e movs r0, r0 |
0x00004240 push {r4, r5, r6, lr} |
0x00004242 mov r4, r1 | r4 = r1;
0x00004244 mov r1, r2 | r1 = r2;
0x00004246 ldr r2, [pc, 0x70] |
0x00004248 mov r5, r0 | r5 = r0;
0x0000424a mov r0, r3 | r0 = r3;
0x0000424c ldr r3, [pc, 0x6c] | r3 = *(0x42bc);
0x0000424e sub sp, 0x18 |
0x00004250 add r2, pc | r2 = 0x850e;
0x00004252 movs r6, 0 | r6 = 0;
0x00004254 ldr r3, [r2, r3] |
0x00004256 add r2, sp, 0x10 | r2 += var_10h;
0x00004258 ldr r3, [r3] | r3 = *(0x850e);
0x0000425a str r3, [sp, 0x14] | var_14h_2 = r3;
0x0000425c mov.w r3, 0 | r3 = 0;
0x00004260 add r3, sp, 0xc | r3 += var_ch_2;
0x00004262 str r6, [sp, 0xc] | var_ch_2 = r6;
0x00004264 bl 0x4038 | r0 = fcn_00004038 (r0, r1, r2, r3, r4, r5, r6);
| if (r0 != 0) {
0x00004268 cbnz r0, 0x42a6 | goto label_10;
| }
0x0000426a ldr r0, [pc, 0x54] |
0x0000426c add r0, pc | r0 = 0x8532;
0x0000426e blx 0x2c04 | fcn_00002c04 ();
0x00004272 ldr r3, [sp, 0xc] | r3 = var_ch_2;
0x00004274 mov r1, r0 | r1 = r0;
0x00004276 mov r0, r4 | r0 = r4;
0x00004278 ldrd r2, r3, [r3, 4] | __asm ("ldrd r2, r3, [r3, 4]");
0x0000427c str r3, [sp] | *(sp) = r3;
0x0000427e ldr r3, [pc, 0x44] |
0x00004280 add r3, pc | r3 = 0x854a;
0x00004282 blx 0x2f94 | fcn_00002f94 ();
0x00004286 ldr r0, [sp, 0xc] | r0 = var_ch_2;
0x00004288 blx 0x2e74 | fcn_00002e74 ();
| do {
0x0000428c ldr r2, [pc, 0x38] |
0x0000428e ldr r3, [pc, 0x2c] | r3 = *(0x42be);
0x00004290 add r2, pc | r2 = 0x855c;
0x00004292 ldr r3, [r2, r3] | r3 = *(0x855c);
0x00004294 ldr r2, [r3] | r2 = *(0x855c);
0x00004296 ldr r3, [sp, 0x14] | r3 = var_14h_2;
0x00004298 eors r2, r3 | r2 ^= r3;
0x0000429a mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0000429e bne 0x42b2 | goto label_11;
| }
0x000042a0 movs r0, 1 | r0 = 1;
0x000042a2 add sp, 0x18 |
0x000042a4 pop {r4, r5, r6, pc} |
| label_10:
0x000042a6 ldr r2, [sp, 0x10] | r2 = var_10h;
0x000042a8 mov r1, r4 | r1 = r4;
0x000042aa mov r0, r5 | r0 = r5;
0x000042ac blx 0x2bec | fcn_00002bec ();
0x000042b0 b 0x428c |
| } while (1);
| label_11:
0x000042b2 blx 0x2cec | fprintf_chk ()
0x000042b6 nop |
0x000042b8 ldr r2, [sp, 0x1f0] | r2 = *(arg_1f0h);
0x000042ba movs r0, r0 |
0x000042bc lsls r0, r3, 0xc | r0 = r3 << 0xc;
0x000042be movs r0, r0 |
0x000042c0 ldr r0, [r3, 0xc] | r0 = *((r3 + 0xc));
0x000042c2 movs r0, r0 |
0x000042c4 ldrb r0, [r0, 7] | r0 = *((r0 + 7));
0x000042c6 movs r0, r0 |
0x000042c8 ldr r2, [sp, 0xf0] | r2 = *(arg_f0h);
0x000042ca movs r0, r0 |
0x000042cc push.w {r4, r5, r6, r7, r8, sb, lr} |
0x000042d0 mov r5, r1 | r5 = r1;
0x000042d2 ldr r6, [pc, 0x118] |
0x000042d4 sub sp, 0xc |
0x000042d6 movs r3, 0 | r3 = 0;
0x000042d8 mov r4, r2 | r4 = r2;
0x000042da ldr r1, [pc, 0x114] | r1 = *(0x43f2);
0x000042dc movs r2, 1 | r2 = 1;
0x000042de add r6, pc | r6 = 0x86d0;
0x000042e0 mov r8, r0 | r8 = r0;
0x000042e2 mov r0, r3 | r0 = r3;
0x000042e4 ldr.w sb, [sp, 0x28] | sb = var_28h_2;
0x000042e8 ldr r1, [r6, r1] |
0x000042ea ldr r1, [r1] | r1 = *(0x86d0);
0x000042ec str r1, [sp, 4] | var_4h_2 = r1;
0x000042ee mov.w r1, 0 | r1 = 0;
0x000042f2 mov r1, r3 | r1 = r3;
0x000042f4 str r3, [r4] | *(r4) = r3;
0x000042f6 str r3, [sp] | *(sp) = r3;
0x000042f8 blx 0x28f8 | r0 = fcn_000028f8 ();
0x000042fc mov r6, r0 | r6 = r0;
0x000042fe mov r0, r5 | r0 = r5;
0x00004300 blx 0x29ec | r0 = g_object_new ();
0x00004304 mov r7, r0 | r7 = r0;
0x00004306 mov r0, r5 | r0 = r5;
0x00004308 blx 0x2928 | fcn_00002928 ();
0x0000430c mov r1, r7 | r1 = r7;
0x0000430e mov r2, r0 | r2 = r0;
0x00004310 mov r0, r6 | r0 = r6;
0x00004312 blx 0x2f64 | fcn_00002f64 ();
0x00004316 mov r1, sp | r1 = sp;
0x00004318 mov r7, r0 | r7 = r0;
0x0000431a blx 0x275c | r0 = fcn_0000275c ();
0x0000431e mov r5, r0 | r5 = r0;
0x00004320 blx 0x29c8 | schedule_get_vevent ();
0x00004324 str r0, [r4] | *(r4) = r0;
0x00004326 cmp r0, 0 |
| if (r0 == 0) {
0x00004328 beq 0x43d4 | goto label_12;
| }
| label_4:
0x0000432a mov r0, r5 | r0 = r5;
0x0000432c blx 0x29c8 | r0 = schedule_get_vevent ();
0x00004330 mov r1, r0 | r1 = r0;
0x00004332 ldr r0, [pc, 0xc0] |
0x00004334 add r0, pc | r0 = 0x872e;
0x00004336 blx 0x2a58 | r0 = property_state_add_key_value ();
0x0000433a mov r6, r0 | r6 = r0;
0x0000433c ldr.w r0, [r8, 0x10] | r0 = *((r8 + 0x10));
0x00004340 mov r1, r6 | r1 = r6;
0x00004342 blx 0x2d9c | r0 = fcn_00002d9c ();
0x00004346 mov r4, r0 | r4 = r0;
0x00004348 bl 0x5d18 | r0 = fcn_00005d18 ();
0x0000434c mov r1, r0 | r1 = r0;
0x0000434e mov r0, r4 | r0 = r4;
0x00004350 blx 0x2ce0 | r0 = g_thread_new ();
0x00004354 mov r4, r0 | r4 = r0;
0x00004356 mov r0, r6 | r0 = r6;
0x00004358 blx 0x272c | fcn_0000272c ();
| if (r4 == 0) {
0x0000435c cbz r4, 0x43a6 | goto label_13;
| }
0x0000435e bl 0x5d18 | r0 = fcn_00005d18 ();
0x00004362 mov r1, r0 | r1 = r0;
0x00004364 mov r0, r4 | r0 = r4;
0x00004366 blx 0x2ce0 | g_thread_new ();
0x0000436a mov r2, sb | r2 = sb;
0x0000436c mov r1, r5 | r1 = r5;
0x0000436e bl 0x61dc | fcn_000061dc (r0, r1, r2);
0x00004372 ldr.w r4, [sb] | r4 = *(sb);
0x00004376 clz r4, r4 | r4 &= r4;
0x0000437a lsrs r4, r4, 5 | r4 >>= 5;
| do {
| label_3:
0x0000437c mov r0, r5 | r0 = r5;
0x0000437e blx 0x2864 | fcn_00002864 ();
0x00004382 movs r1, 1 | r1 = 1;
0x00004384 mov r0, r7 | r0 = r7;
0x00004386 blx 0x2958 | fcn_00002958 ();
0x0000438a ldr r2, [pc, 0x6c] |
0x0000438c ldr r3, [pc, 0x60] | r3 = *(0x43f0);
0x0000438e add r2, pc | r2 = 0x878c;
0x00004390 ldr r3, [r2, r3] | r3 = *(0x878c);
0x00004392 ldr r2, [r3] | r2 = *(0x878c);
0x00004394 ldr r3, [sp, 4] | r3 = var_4h_2;
0x00004396 eors r2, r3 | r2 ^= r3;
0x00004398 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0000439c bne 0x43e6 | goto label_14;
| }
0x0000439e mov r0, r4 | r0 = r4;
0x000043a0 add sp, 0xc |
0x000043a2 pop.w {r4, r5, r6, r7, r8, sb, pc} |
| label_13:
0x000043a6 mov r3, sb | r3 = sb;
0x000043a8 mov r2, r4 | r2 = r4;
0x000043aa mov r1, r4 | r1 = r4;
0x000043ac mov r0, r5 | r0 = r5;
0x000043ae bl 0x6304 | fcn_00006304 (r0, r1, r2, r3);
0x000043b2 ldr.w r3, [sb] | r3 = *(sb);
0x000043b6 mov r6, r0 | r6 = r0;
0x000043b8 cmp r3, 0 |
0x000043ba bne 0x437c |
| } while (r3 != 0);
0x000043bc bl 0x4f18 | r0 = fcn_00004f18 ();
0x000043c0 mov r1, r0 | r1 = r0;
0x000043c2 mov r0, r6 | r0 = r6;
0x000043c4 blx 0x2ce0 | r0 = g_thread_new ();
0x000043c8 mov r1, r0 | r1 = r0;
0x000043ca mov r0, r8 | r0 = r8;
0x000043cc movs r4, 1 | r4 = 1;
0x000043ce bl 0x35dc | fcn_000035dc (r0, r1);
0x000043d2 b 0x437c | goto label_3;
| label_12:
0x000043d4 mov r0, r8 | r0 = r8;
0x000043d6 bl 0x372c | r0 = fcn_0000372c (r0);
0x000043da mov r1, r0 | r1 = r0;
0x000043dc str r0, [r4] | *(r4) = r0;
0x000043de mov r0, r5 | r0 = r5;
0x000043e0 blx 0x2e38 | fcn_00002e38 ();
0x000043e4 b 0x432a | goto label_4;
| label_14:
0x000043e6 blx 0x2cec | fprintf_chk ()
0x000043ea nop |
0x000043ec ldr r1, [sp, 0x3b8] | r1 = *(arg_3b8h);
0x000043ee movs r0, r0 |
0x000043f0 lsls r0, r3, 0xc | r0 = r3 << 0xc;
0x000043f2 movs r0, r0 |
0x000043f4 ldr r4, [r3, 0x54] | r4 = *((r3 + 0x54));
0x000043f6 movs r0, r0 |
0x000043f8 ldr r1, [sp, 0xf8] | r1 = *(arg_f8h);
0x000043fa movs r0, r0 |
0x000043fc push {r4, r5, r6, r7, lr} |
0x000043fe mov r6, r0 | r6 = r0;
0x00004400 ldr r0, [pc, 0xd4] |
0x00004402 mov r5, r1 | r5 = r1;
0x00004404 sub sp, 0x1c |
0x00004406 movs r4, 0 | r4 = 0;
0x00004408 ldr r1, [pc, 0xd0] | r1 = *(0x44dc);
0x0000440a add r0, pc | r0 = 0x88e6;
0x0000440c ldr r7, [sp, 0x34] | r7 = var_4h_2;
0x0000440e ldr r1, [r0, r1] |
0x00004410 ldr r1, [r1] | r1 = *(0x88e6);
0x00004412 str r1, [sp, 0x14] | var_14h_3 = r1;
0x00004414 mov.w r1, 0 | r1 = 0;
0x00004416 lsls r0, r0, 4 | r0 <<= 4;
0x00004418 str r4, [sp, 0xc] | var_ch_3 = r4;
0x0000441a cmp r3, 0 |
| if (r3 == 0) {
0x0000441c beq 0x4488 | goto label_15;
| }
0x0000441e cmp r3, 1 |
| if (r3 == 1) {
0x00004420 beq 0x4452 | goto label_16;
| }
0x00004422 ldr r0, [pc, 0xbc] |
0x00004424 add r0, pc | r0 = 0x890a;
0x00004426 blx 0x2c04 | fcn_00002c04 ();
0x0000442a ldr r3, [pc, 0xb8] |
0x0000442c mov r1, r0 | r1 = r0;
0x0000442e movs r2, 3 | r2 = 3;
0x00004430 mov r0, r5 | r0 = r5;
0x00004432 add r3, pc | r3 = 0x891c;
0x00004434 blx 0x2f94 | fcn_00002f94 ();
| do {
| label_5:
0x00004438 ldr r2, [pc, 0xac] |
0x0000443a ldr r3, [pc, 0xa0] | r3 = *(0x44de);
0x0000443c add r2, pc | r2 = 0x8928;
0x0000443e ldr r3, [r2, r3] | r3 = *(0x8928);
0x00004440 ldr r2, [r3] | r2 = *(0x8928);
0x00004442 ldr r3, [sp, 0x14] | r3 = var_14h_3;
0x00004444 eors r2, r3 | r2 ^= r3;
0x00004446 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0000444a bne 0x44d4 | goto label_17;
| }
0x0000444c movs r0, 1 | r0 = 1;
0x0000444e add sp, 0x1c |
0x00004450 pop {r4, r5, r6, r7, pc} |
| label_16:
0x00004452 add r4, sp, 0xc | r4 += var_ch_3;
0x00004454 mov r1, r2 | r1 = r2;
0x00004456 ldr r3, [sp, 0x30] | r3 = var_0h_2;
0x00004458 mov r0, r7 | r0 = r7;
0x0000445a add r2, sp, 0x10 | r2 += var_10h_2;
0x0000445c str r4, [sp] | *(sp) = r4;
0x0000445e bl 0x42cc | r0 = void (*0x42cc)(uint32_t, uint32_t, uint32_t, uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3, r4, r5, r6);
| if (r0 != 0) {
0x00004462 cbnz r0, 0x44c8 | goto label_18;
| }
0x00004464 ldr r0, [pc, 0x84] |
0x00004466 add r0, pc | r0 = 0x8956;
0x00004468 blx 0x2c04 | fcn_00002c04 ();
0x0000446c ldr r3, [sp, 0xc] | r3 = var_ch_3;
0x0000446e mov r1, r0 | r1 = r0;
0x00004470 mov r0, r5 | r0 = r5;
0x00004472 ldrd r2, r3, [r3, 4] | __asm ("ldrd r2, r3, [r3, 4]");
0x00004476 str r3, [sp] | *(sp) = r3;
0x00004478 ldr r3, [pc, 0x74] |
0x0000447a add r3, pc | r3 = 0x896e;
0x0000447c blx 0x2f94 | fcn_00002f94 ();
0x00004480 mov r0, r4 | r0 = r4;
0x00004482 blx 0x28a0 | fcn_000028a0 ();
0x00004486 b 0x4438 |
| } while (1);
| label_15:
0x00004488 add r4, sp, 0xc | r4 += var_ch_3;
0x0000448a mov r1, r2 | r1 = r2;
0x0000448c mov r0, r7 | r0 = r7;
0x0000448e mov r3, r4 | r3 = r4;
0x00004490 add r2, sp, 0x10 | r2 += var_10h_2;
0x00004492 bl 0x4038 | r0 = fcn_00004038 (r0, r1, r2, r3, r4, r5, r6);
| if (r0 == 0) {
0x00004496 cbnz r0, 0x44bc |
0x00004498 ldr r0, [pc, 0x58] |
0x0000449a add r0, pc | r0 = 0x8992;
0x0000449c blx 0x2c04 | fcn_00002c04 ();
0x000044a0 ldr r3, [sp, 0xc] | r3 = var_ch_3;
0x000044a2 mov r1, r0 | r1 = r0;
0x000044a4 mov r0, r5 | r0 = r5;
0x000044a6 ldrd r2, r3, [r3, 4] | __asm ("ldrd r2, r3, [r3, 4]");
0x000044aa str r3, [sp] | *(sp) = r3;
0x000044ac ldr r3, [pc, 0x48] |
0x000044ae add r3, pc | r3 = 0x89aa;
0x000044b0 blx 0x2f94 | fcn_00002f94 ();
0x000044b4 mov r0, r4 | r0 = r4;
0x000044b6 blx 0x28a0 | fcn_000028a0 ();
0x000044ba b 0x4438 | goto label_5;
| }
0x000044bc ldr r2, [sp, 0x10] | r2 = var_10h_2;
0x000044be mov r1, r5 | r1 = r5;
0x000044c0 mov r0, r6 | r0 = r6;
0x000044c2 blx 0x2bec | fcn_00002bec ();
0x000044c6 b 0x4438 | goto label_5;
| label_18:
0x000044c8 ldr r2, [sp, 0x10] | r2 = var_10h_2;
0x000044ca mov r1, r5 | r1 = r5;
0x000044cc mov r0, r6 | r0 = r6;
0x000044ce blx 0x297c | fcn_0000297c ();
0x000044d2 b 0x4438 | goto label_5;
| label_17:
0x000044d4 blx 0x2cec | fprintf_chk ()
0x000044d8 ldr r0, [sp, 0x308] | r0 = *(arg_308h);
0x000044da movs r0, r0 |
0x000044dc lsls r0, r3, 0xc | r0 = r3 << 0xc;
0x000044de movs r0, r0 |
0x000044e0 str r0, [r4, 0x70] | var_70h = r0;
0x000044e2 movs r0, r0 |
0x000044e4 ldr r6, [r3, 4] | r6 = *((r3 + 4));
0x000044e6 movs r0, r0 |
0x000044e8 ldr r0, [sp, 0x240] | r0 = *(arg_240h);
0x000044ea movs r0, r0 |
0x000044ec str r6, [r3, 0x6c] | *((r3 + 0x6c)) = r6;
0x000044ee movs r0, r0 |
0x000044f0 strb r6, [r0, 0x1f] | *((r0 + 0x1f)) = r6;
0x000044f2 movs r0, r0 |
0x000044f4 str r2, [r5, 0x68] | *((r5 + 0x68)) = r2;
0x000044f6 movs r0, r0 |
0x000044f8 strb r2, [r2, 0x1e] | *((r2 + 0x1e)) = r2;
0x000044fa movs r0, r0 |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/bin/scheduled @ 0x4920 */
| #include <stdint.h>
|
; (fcn) fcn.00004920 () | void fcn_00004920 (int16_t arg_178h, int16_t arg_270h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_0h;
| int16_t var_8h;
| int16_t var_ch;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x00004920 invalid |
0x00004924 mov r1, r2 | r1 = r2;
0x00004926 ldr r2, [pc, 0x6c] |
0x00004928 mov r5, r0 | r5 = r0;
0x0000492a mov r0, r3 | r0 = r3;
0x0000492c ldr r3, [pc, 0x68] | r3 = *(0x4998);
0x0000492e sub sp, 0x10 |
0x00004930 add r2, pc | r2 = 0x92ca;
0x00004932 movs r6, 0 | r6 = 0;
0x00004934 ldr r3, [r2, r3] |
0x00004936 add r2, sp, 8 | r2 += var_8h;
0x00004938 ldr r3, [r3] | r3 = *(0x92ca);
0x0000493a str r3, [sp, 0xc] | var_ch = r3;
0x0000493c mov.w r3, 0 | r3 = 0;
0x00004940 str r6, [sp, 8] | var_8h = r6;
0x00004942 bl 0x488c | r0 = fcn_0000488c (r0, r1, r2);
| if (r0 != 0) {
0x00004946 cbnz r0, 0x4984 | goto label_0;
| }
0x00004948 ldr r0, [pc, 0x50] |
0x0000494a add r0, pc | r0 = 0x92ea;
0x0000494c blx 0x2c04 | fcn_00002c04 ();
0x00004950 ldr r3, [sp, 8] | r3 = var_8h;
0x00004952 mov r1, r0 | r1 = r0;
0x00004954 mov r0, r4 | r0 = r4;
0x00004956 ldrd r2, r3, [r3, 4] | __asm ("ldrd r2, r3, [r3, 4]");
0x0000495a str r3, [sp] | *(sp) = r3;
0x0000495c ldr r3, [pc, 0x40] |
0x0000495e add r3, pc | r3 = 0x9302;
0x00004960 blx 0x2f94 | fcn_00002f94 ();
0x00004964 ldr r0, [sp, 8] | r0 = var_8h;
0x00004966 blx 0x2e74 | fcn_00002e74 ();
| do {
0x0000496a ldr r2, [pc, 0x38] |
0x0000496c ldr r3, [pc, 0x28] | r3 = *(0x4998);
0x0000496e add r2, pc | r2 = 0x9318;
0x00004970 ldr r3, [r2, r3] | r3 = *(0x9318);
0x00004972 ldr r2, [r3] | r2 = *(0x9318);
0x00004974 ldr r3, [sp, 0xc] | r3 = var_ch;
0x00004976 eors r2, r3 | r2 ^= r3;
0x00004978 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0000497c bne 0x498e | goto label_1;
| }
0x0000497e movs r0, 1 | r0 = 1;
0x00004980 add sp, 0x10 |
0x00004982 pop {r4, r5, r6, pc} |
| label_0:
0x00004984 mov r1, r4 | r1 = r4;
0x00004986 mov r0, r5 | r0 = r5;
0x00004988 blx 0x281c | fcn_0000281c ();
0x0000498c b 0x496a |
| } while (1);
| label_1:
0x0000498e blx 0x2cec | fprintf_chk ()
0x00004992 nop |
0x00004994 str r3, [sp, 0x270] | *(arg_270h) = r3;
0x00004996 movs r0, r0 |
0x00004998 lsls r0, r3, 0xc | r0 = r3 << 0xc;
0x0000499a movs r0, r0 |
0x0000499c str r2, [r7, 0x1c] | *((r7 + 0x1c)) = r2;
0x0000499e movs r0, r0 |
0x000049a0 strb r2, [r4, 0xb] | *((r4 + 0xb)) = r2;
0x000049a2 movs r0, r0 |
0x000049a4 str r3, [sp, 0x178] | *(arg_178h) = r3;
0x000049a6 movs r0, r0 |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/bin/scheduled @ 0x584c */
| #include <stdint.h>
|
; (fcn) fcn.0000584c () | void fcn_0000584c (int16_t arg1, int16_t arg2, uint32_t arg3, int16_t arg4) {
| int16_t var_0h;
| uint32_t var_ch;
| int16_t var_14h;
| int16_t var_18h;
| int16_t var_1ch;
| int16_t var_20h;
| int16_t var_24h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x0000584c invalid |
0x00005850 sub sp, 0x2c |
0x00005852 ldr r4, [pc, 0xa0] |
0x00005854 cmp r2, r7 |
0x00005856 mov r5, r0 | r5 = r0;
0x00005858 str r2, [sp, 0xc] | var_ch = r2;
0x0000585a mov r6, r3 | r6 = r3;
0x0000585c ldr r2, [pc, 0x98] | r2 = *(0x58f8);
0x0000585e add r4, pc | r4 = "%sAttempted to stop non-existing vevent";
0x00005860 ite eq |
| if (r2 != r7) {
0x00005862 moveq r3, r1 | r3 = r1;
| }
| if (r2 == r7) {
0x00005864 movne r3, r7 | r3 = r7;
| }
0x00005866 ldr r1, [r5, 0x2c] | r1 = *((r5 + 0x2c));
0x00005868 ldr r2, [r4, r2] |
0x0000586a ldr r0, [r0, 0x30] | r0 = *((r0 + 0x30));
0x0000586c ldr r2, [r2] | r2 = "%sAttempted to stop non-existing vevent";
0x0000586e str r2, [sp, 0x24] | var_24h = r2;
0x00005870 mov.w r2, 0 | r2 = 0;
0x00005874 strd r7, r3, [sp, 0x14] | __asm ("strd r7, r3, [var_18h]");
0x00005878 blx 0x2c74 | g_str_has_prefix ();
0x0000587c ldr r1, [pc, 0x7c] |
0x0000587e add r2, sp, 0x18 | r2 += var_18h;
0x00005880 mov r4, r0 | r4 = r0;
0x00005882 add r1, pc | r1 = 0xb182;
0x00005884 blx 0x2a4c | event_scheduled_complete_get_scheduled_events2 ();
0x00005888 ldr r1, [pc, 0x74] |
0x0000588a add r2, sp, 0xc | r2 += var_ch;
0x0000588c mov r0, r4 | r0 = r4;
0x0000588e add r1, pc | r1 = 0xb192;
0x00005890 blx 0x2a4c | event_scheduled_complete_get_scheduled_events2 ();
0x00005894 mov r0, r6 | r0 = r6;
0x00005896 str r7, [sp, 0x20] | var_20h = r7;
0x00005898 blx 0x2fd0 | fcn_00002fd0 ();
0x0000589c add r3, sp, 0x1c | r3 += var_1ch;
0x0000589e str r0, [sp, 0x1c] | var_1ch = r0;
0x000058a0 mov r0, r4 | r0 = r4;
0x000058a2 ldm.w r3, {r1, r2} | r1 = *(r3);
| r2 = *((r3 + 4));
0x000058a6 blx 0x27ec | fcn_000027ec ();
0x000058aa ldr r0, [r5, 0x30] | r0 = *((r5 + 0x30));
0x000058ac add r2, sp, 0x14 | r2 += var_14h;
0x000058ae mov r1, r4 | r1 = r4;
0x000058b0 blx 0x291c | r0 = fcn_0000291c ();
0x000058b4 cbz r0, 0x58d4 |
| while (1) {
0x000058b6 mov r0, r4 | r0 = r4;
0x000058b8 blx 0x2d74 | fcn_00002d74 (r0);
0x000058bc ldr r2, [pc, 0x44] |
0x000058be ldr r3, [pc, 0x38] | r3 = *(0x58fa);
0x000058c0 add r2, pc | r2 = "tnsaxis";
0x000058c2 ldr r3, [r2, r3] | r3 = "tnsaxis";
0x000058c4 ldr r2, [r3] | r2 = "tnsaxis";
0x000058c6 ldr r3, [sp, 0x24] | r3 = var_24h;
0x000058c8 eors r2, r3 | r2 ^= r3;
0x000058ca mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x000058ce bne 0x58f0 | goto label_0;
| }
0x000058d0 add sp, 0x2c |
0x000058d2 pop {r4, r5, r6, r7, pc} |
0x000058d4 ldr r1, [sp, 0x14] | r1 = var_14h;
0x000058d6 ldr r3, [pc, 0x30] |
0x000058d8 ldr r2, [pc, 0x30] |
0x000058da ldr r1, [r1, 8] | r1 = *((r1 + 8));
0x000058dc add r3, pc | r3 = 0xb1ea;
0x000058de add r2, pc | r2 = 0xb1ee;
0x000058e0 str r1, [sp] | *(sp) = r1;
0x000058e2 movs r1, 0x10 | r1 = 0x10;
0x000058e4 blx 0x2f7c | fcn_00002f7c ();
0x000058e8 ldr r0, [sp, 0x14] | r0 = var_14h;
0x000058ea blx 0x2e74 | fcn_00002e74 ();
0x000058ee b 0x58b6 |
| }
| label_0:
0x000058f0 blx 0x2cec | fprintf_chk ()
0x000058f4 strh r6, [r5, 0x22] | *((r5 + 0x22)) = r6;
0x000058f6 movs r0, r0 |
0x000058f8 lsls r0, r3, 0xc | r0 = r3 << 0xc;
0x000058fa movs r0, r0 |
0x000058fc ldr r6, [r7, r5] | r6 = *((r7 + r5));
0x000058fe movs r0, r0 |
0x00005900 ldr r6, [r5, r6] | r6 = *((r5 + r6));
0x00005902 movs r0, r0 |
0x00005904 strh r4, [r1, 0x20] | *((r1 + 0x20)) = r4;
0x00005906 movs r0, r0 |
0x00005908 str r0, [r4, r4] | *((r4 + r4)) = r0;
0x0000590a movs r0, r0 |
0x0000590c ldr r2, [r5, r5] | r2 = *((r5 + r5));
0x0000590e movs r0, r0 |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/bin/scheduled @ 0x5910 */
| #include <stdint.h>
|
; (fcn) fcn.00005910 () | void fcn_00005910 (int16_t arg1, int16_t arg2) {
| int16_t var_8h;
| int16_t var_ch_2;
| int16_t var_0h_2;
| int16_t var_ch_3;
| int16_t var_10h;
| int16_t var_14h_2;
| int16_t var_18h_2;
| int16_t var_1ch_2;
| r0 = arg1;
| r1 = arg2;
0x00005910 andseq lr, r0, r0, asr 31 | __asm ("andseq lr, r0, r0, asr 31");
0x00005914 add.w r2, r0, 0x34 | r2 = r0 + 0x34;
0x00005916 lsls r4, r6, 8 | r4 = r6 << 8;
0x00005918 push.w {r4, r5, r6, r7, r8, sb, sl, lr} |
0x0000591c movs r3, 0 | r3 = 0;
0x0000591e mov r7, r1 | r7 = r1;
0x00005920 ldr r1, [pc, 0x24c] |
0x00005922 mov r4, r0 | r4 = r0;
0x00005924 sub sp, 0x10 |
0x00005926 str r3, [r0, 0x18] | *((r0 + 0x18)) = r3;
0x00005928 str r3, [r0, 0x20] | *((r0 + 0x20)) = r3;
0x0000592a add r1, pc | r1 = 0xb49e;
0x0000592c ldr r6, [r0, 0xc] | r6 = *((r0 + 0xc));
0x0000592e vst1.32 {d16}, [r2] | __asm ("vst1.32 {d16}, [r2]");
0x00005932 ldr r2, [pc, 0x240] | r2 = *(0x5b76);
0x00005934 str r3, [r4, 0x24] | *((r4 + 0x24)) = r3;
0x00005936 mov r0, r6 | r0 = r6;
0x00005938 str r3, [r4, 0x1c] | *((r4 + 0x1c)) = r3;
0x0000593a str r3, [r4, 0x44] | *((r4 + 0x44)) = r3;
0x0000593c ldr r2, [r1, r2] |
0x0000593e ldr r2, [r2] | r2 = *(0xb49e);
0x00005940 str r2, [sp, 0xc] | var_ch_2 = r2;
0x00005942 mov.w r2, 0 | r2 = 0;
0x00005946 str r3, [sp, 8] | var_8h = r3;
0x00005948 blx 0x2cbc | r0 = g_type_check_instance_cast ();
0x0000594c cmp r0, 0 |
| if (r0 == 0) {
0x0000594e beq.w 0x5a74 | goto label_13;
| }
0x00005952 ldrb r3, [r0] | r3 = *(r0);
0x00005954 mov r5, r0 | r5 = r0;
0x00005956 cmp r3, 0 |
| if (r3 == 0) {
0x00005958 beq.w 0x5a74 | goto label_13;
| }
0x0000595c mov r0, r6 | r0 = r6;
0x0000595e blx 0x2840 | r0 = fcn_00002840 ();
0x00005962 mov r6, r0 | r6 = r0;
0x00005964 cmp r0, 0 |
| if (r0 == 0) {
0x00005966 beq.w 0x5b26 | goto label_14;
| }
0x0000596a ldrb.w sb, [r0] | sb = *(r0);
0x0000596e mov r0, r5 | r0 = r5;
0x00005970 cmp.w sb, 0 |
| if (sb == 0) {
0x00005974 beq.w 0x5ae0 | goto label_15;
| }
0x00005978 movw r8, 0xc350 | r8 = 0xc350;
0x0000597c blx 0x2b1c | fcn_00002b1c ();
0x0000597e invalid |
| if (sb > 0) {
0x00005982 bhi.w 0x5aee | goto label_5;
| }
0x00005986 mov r0, r6 | r0 = r6;
0x00005988 blx 0x2b1c | r0 = fcn_00002b1c ();
0x0000598c cmp r0, r8 |
0x0000598e it ls |
| if (r0 > r8) {
0x00005990 movls sb, 1 | sb = 1;
| }
| if (r0 > r8) {
0x00005994 bhi.w 0x5b10 | goto label_16;
| }
| label_3:
0x00005998 add.w sl, sp, 8 | sl += var_8h;
0x0000599c mov r0, r5 | r0 = r5;
0x0000599e mov r1, sl | r1 = sl;
0x000059a0 bl 0x70a4 | r0 = fcn_000070a4 (r0, r1, r2);
0x000059a4 mov r8, r0 | r8 = r0;
0x000059a6 cmp r0, 0 |
| if (r0 == 0) {
0x000059a8 beq.w 0x5b5c | goto label_17;
| }
0x000059ac mov r3, sl | r3 = sl;
0x000059ae add.w r2, r4, 0x18 | r2 = r4 + 0x18;
0x000059b2 add.w r1, r4, 0x1c | r1 = r4 + 0x1c;
0x000059b6 bl 0x7854 | r0 = fcn_00007854 (r0, r1, r2, r3, r4);
0x000059ba mov r5, r0 | r5 = r0;
0x000059bc cmp r0, 0 |
| if (r0 == 0) {
0x000059be beq.w 0x5b44 | goto label_18;
| }
0x000059c2 mov r0, r8 | r0 = r8;
0x000059c4 bl 0x7084 | fcn_00007084 (r0);
0x000059c8 cmp.w sb, 0 |
| if (sb != 0) {
0x000059cc bne 0x5a94 | goto label_19;
| }
0x000059ce mov r8, sb | r8 = sb;
| label_1:
0x000059d0 vmov.i32 d16, 0 | __asm ("vmov.i32 d16, 0");
0x000059d4 add.w r3, r4, 0x3c | r3 = r4 + 0x3c;
0x000059d8 ldr r0, [r4, 0x18] | r0 = *((r4 + 0x18));
0x000059da vst1.32 {d16}, [r3] | __asm ("vst1.32 {d16}, [r3]");
0x000059de blx 0x2e44 | r0 = fcn_00002e44 ();
0x000059e2 mov r5, r0 | r5 = r0;
| if (r0 != 0) {
0x000059e4 cbnz r0, 0x59f2 | goto label_0;
| }
0x000059e6 b 0x5a18 | goto label_20;
| do {
0x000059e8 ldr r3, [r4, 0x3c] | r3 = *((r4 + 0x3c));
0x000059ea ldr r5, [r5, 4] | r5 = *((r5 + 4));
0x000059ec adds r3, 1 | r3++;
0x000059ee str r3, [r4, 0x3c] | *((r4 + 0x3c)) = r3;
| if (r5 == 0) {
0x000059f0 cbz r5, 0x5a18 | goto label_20;
| }
| label_0:
0x000059f2 ldr r6, [r5] | r6 = *(r5);
0x000059f4 bl 0x4f18 | r0 = fcn_00004f18 ();
0x000059f8 mov r1, r0 | r1 = r0;
0x000059fa mov r0, r4 | r0 = r4;
0x000059fc blx 0x2ce0 | g_thread_new ();
0x000059fe ldrd r6, r3, [r0, -0x1c0]! | __asm ("ldrd r6, r3, [r0, -0x1c0]!");
0x00005a02 mov r0, r6 | r0 = r6;
0x00005a04 bl 0x689c | r0 = fcn_0000689c (r0);
0x00005a08 cmp r0, 0 |
0x00005a0a bne 0x59e8 |
| } while (r0 != 0);
0x00005a0c ldr r3, [r4, 0x40] | r3 = *((r4 + 0x40));
0x00005a0e ldr r5, [r5, 4] | r5 = *((r5 + 4));
0x00005a10 adds r3, 1 | r3++;
0x00005a12 str r3, [r4, 0x40] | *((r4 + 0x40)) = r3;
0x00005a14 cmp r5, 0 |
| if (r5 != 0) {
0x00005a16 bne 0x59f2 | goto label_0;
| }
| label_20:
0x00005a18 ldr r0, [r4, 0x20] | r0 = *((r4 + 0x20));
0x00005a1a blx 0x2e44 | r0 = fcn_00002e44 ();
0x00005a1e mov r5, r0 | r5 = r0;
| if (r0 == 0) {
0x00005a20 cbz r0, 0x5a46 | goto label_21;
| }
| do {
0x00005a22 ldr r6, [r5] | r6 = *(r5);
0x00005a24 bl 0x4f18 | r0 = fcn_00004f18 ();
0x00005a28 mov r1, r0 | r1 = r0;
0x00005a2a mov r0, r4 | r0 = r4;
0x00005a2c blx 0x2ce0 | g_thread_new ();
0x00005a30 str r0, [r6, 0x34] | *((r6 + 0x34)) = r0;
0x00005a32 mov r0, r6 | r0 = r6;
0x00005a34 bl 0x689c | r0 = fcn_0000689c (r0);
| if (r0 != 0) {
0x00005a38 cbz r0, 0x5a40 |
0x00005a3a ldr r3, [r4, 0x3c] | r3 = *((r4 + 0x3c));
0x00005a3c adds r3, 1 | r3++;
0x00005a3e str r3, [r4, 0x3c] | *((r4 + 0x3c)) = r3;
| }
0x00005a40 ldr r5, [r5, 4] | r5 = *((r5 + 4));
0x00005a42 cmp r5, 0 |
0x00005a44 bne 0x5a22 |
| } while (r5 != 0);
| label_21:
0x00005a46 movs r5, 1 | r5 = 1;
| label_2:
0x00005a48 mov r0, r8 | r0 = r8;
0x00005a4a bl 0x7084 | fcn_00007084 (r0);
0x00005a4e ldr r1, [sp, 8] | r1 = var_8h;
| if (r1 != 0) {
0x00005a50 cbz r1, 0x5a58 |
0x00005a52 ldr r3, [r7] | r3 = *(r7);
0x00005a54 cmp r3, 0 |
| if (r3 == 0) {
0x00005a56 beq 0x5b3c | goto label_22;
| }
| }
| label_6:
0x00005a58 ldr r2, [pc, 0x11c] |
0x00005a5a ldr r3, [pc, 0x118] | r3 = *(0x5b76);
0x00005a5c add r2, pc | r2 = "CR not followed by LF at line %d";
0x00005a5e ldr r3, [r2, r3] | r3 = "CR not followed by LF at line %d";
0x00005a60 ldr r2, [r3] | r2 = "CR not followed by LF at line %d";
0x00005a62 ldr r3, [sp, 0xc] | r3 = var_ch_2;
0x00005a64 eors r2, r3 | r2 ^= r3;
0x00005a66 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00005a6a bne 0x5b6a | goto label_23;
| }
0x00005a6c mov r0, r5 | r0 = r5;
0x00005a6e add sp, 0x10 |
0x00005a70 pop.w {r4, r5, r6, r7, r8, sb, sl, pc} |
| label_13:
0x00005a74 mov r0, r6 | r0 = r6;
0x00005a76 blx 0x2840 | r0 = fcn_00002840 ();
0x00005a7a mov r6, r0 | r6 = r0;
| if (r0 == 0) {
0x00005a7c cbz r0, 0x5ac4 | goto label_24;
| }
0x00005a7e ldrb r3, [r0] | r3 = *(r0);
| if (r3 == 0) {
0x00005a80 cbz r3, 0x5ac4 | goto label_24;
| }
0x00005a82 blx 0x2b1c | fcn_00002b1c ();
0x00005a86 movw r3, 0xc350 | r3 = 0xc350;
0x00005a8a cmp r0, r3 |
0x00005a8c it ls |
| if (r0 > r3) {
0x00005a8e addls sl, sp, 8 | sl += var_8h;
| }
| if (r0 > r3) {
0x00005a92 bhi 0x5b10 | goto label_16;
| }
| label_19:
0x00005a94 mov r1, sl | r1 = sl;
0x00005a96 mov r0, r6 | r0 = r6;
0x00005a98 bl 0x70a4 | r0 = fcn_000070a4 (r0, r1, r2);
0x00005a9c mov r8, r0 | r8 = r0;
0x00005a9e cmp r0, 0 |
| if (r0 == 0) {
0x00005aa0 beq 0x5b4e | goto label_25;
| }
0x00005aa2 mov r3, sl | r3 = sl;
0x00005aa4 add.w r2, r4, 0x20 | r2 = r4 + 0x20;
0x00005aa8 add.w r1, r4, 0x24 | r1 = r4 + 0x24;
0x00005aac bl 0x7854 | r0 = fcn_00007854 (r0, r1, r2, r3, r4);
0x00005ab0 mov r5, r0 | r5 = r0;
0x00005ab2 cmp r0, 0 |
| if (r0 != 0) {
0x00005ab4 bne 0x59d0 | goto label_1;
| }
0x00005ab6 ldr r2, [pc, 0xc4] |
0x00005ab8 mov r0, r7 | r0 = r7;
0x00005aba ldr r1, [sp, 8] | r1 = var_8h;
0x00005abc add r2, pc | r2 = 0xb63e;
0x00005abe blx 0x2a30 | fcn_00002a30 ();
0x00005ac2 b 0x5a48 | goto label_2;
| label_24:
0x00005ac4 ldr r0, [pc, 0xb8] |
0x00005ac6 add r0, pc | r0 = 0xb64a;
0x00005ac8 blx 0x2c04 | fcn_00002c04 ();
0x00005acc ldr r3, [pc, 0xb4] |
0x00005ace mov r1, r0 | r1 = r0;
0x00005ad0 movs r2, 0x65 | r2 = 0x65;
0x00005ad2 add r0, sp, 8 | r0 += var_8h;
0x00005ad4 add r3, pc | r3 = "PRODID";
0x00005ad6 blx 0x2bbc | fcn_00002bbc ();
| label_4:
0x00005ada movs r5, 0 | r5 = 0;
0x00005adc mov r8, r5 | r8 = r5;
0x00005ade b 0x5a48 | goto label_2;
| label_15:
0x00005ae0 blx 0x2b1c | fcn_00002b1c ();
0x00005ae4 movw r3, 0xc350 | r3 = 0xc350;
0x00005ae8 cmp r0, r3 |
| if (r0 < r3) {
0x00005aea bls.w 0x5998 | goto label_3;
| }
| label_5:
0x00005aee mov r4, r0 | r4 = r0;
0x00005af0 ldr r0, [pc, 0x94] |
0x00005af2 add r0, pc | r0 = 0xb67e;
0x00005af4 blx 0x2c04 | fcn_00002c04 ();
0x00005af8 ldr r3, [pc, 0x90] |
0x00005afa mov r1, r0 | r1 = r0;
0x00005afc movw r2, 0xc350 | r2 = 0xc350;
0x00005b00 add r3, pc | r3 = 0xb690;
| do {
0x00005b02 strd r4, r2, [sp] | __asm ("strd r4, r2, [sp]");
0x00005b06 add r0, sp, 8 | r0 += var_8h;
0x00005b08 movs r2, 0x66 | r2 = 0x66;
0x00005b0a blx 0x2bbc | fcn_00002bbc ();
0x00005b0e b 0x5ada | goto label_4;
| label_16:
0x00005b10 mov r4, r0 | r4 = r0;
0x00005b12 ldr r0, [pc, 0x7c] |
0x00005b14 add r0, pc | r0 = 0xb6aa;
0x00005b16 blx 0x2c04 | fcn_00002c04 ();
0x00005b1a ldr r3, [pc, 0x78] |
0x00005b1c mov r1, r0 | r1 = r0;
0x00005b1e movw r2, 0xc350 | r2 = 0xc350;
0x00005b22 add r3, pc | r3 = 0xb6bc;
0x00005b24 b 0x5b02 |
| } while (1);
| label_14:
0x00005b26 mov r0, r5 | r0 = r5;
0x00005b28 blx 0x2b1c | fcn_00002b1c ();
0x00005b2c movw r3, 0xc350 | r3 = 0xc350;
0x00005b30 cmp r0, r3 |
0x00005b32 it ls |
| if (r0 <= r3) {
0x00005b34 movls sb, r6 | sb = r6;
| goto label_26;
| }
| if (r0 < r3) {
| label_26:
0x00005b36 bls.w 0x5998 | goto label_3;
| }
0x00005b3a b 0x5aee | goto label_5;
| label_22:
0x00005b3c mov r0, r7 | r0 = r7;
0x00005b3e blx 0x2b34 | fcn_00002b34 ();
0x00005b42 b 0x5a58 | goto label_6;
| label_18:
0x00005b44 ldr r1, [sp, 8] | r1 = var_8h;
0x00005b46 mov r0, r7 | r0 = r7;
0x00005b48 blx 0x2b34 | fcn_00002b34 ();
0x00005b4c b 0x5a48 | goto label_2;
| label_25:
0x00005b4e ldr r2, [pc, 0x48] |
0x00005b50 mov r0, r7 | r0 = r7;
0x00005b52 ldr r1, [sp, 8] | r1 = var_8h;
0x00005b54 add r2, pc | r2 = 0xb6f2;
0x00005b56 blx 0x2a30 | fcn_00002a30 ();
0x00005b5a b 0x5ada | goto label_4;
| label_17:
0x00005b5c ldr r2, [pc, 0x3c] |
0x00005b5e mov r0, r7 | r0 = r7;
0x00005b60 ldr r1, [sp, 8] | r1 = var_8h;
0x00005b62 add r2, pc | r2 = 0xb702;
0x00005b64 blx 0x2a30 | fcn_00002a30 ();
0x00005b68 b 0x5ada | goto label_4;
| label_23:
0x00005b6a blx 0x2cec | fprintf_chk ()
0x00005b6e nop |
0x00005b70 strh r2, [r4, 0x1c] | *((r4 + 0x1c)) = r2;
0x00005b72 movs r0, r0 |
0x00005b74 lsls r0, r3, 0xc | r0 = r3 << 0xc;
0x00005b76 movs r0, r0 |
0x00005b78 strh r0, [r6, 0x12] | *((r6 + 0x12)) = r0;
0x00005b7a movs r0, r0 |
0x00005b7c ldr r0, [r5, r1] | r0 = *((r5 + r1));
0x00005b7e movs r0, r0 |
0x00005b80 ldrsb r2, [r4, r5] | r2 = *((r4 + r5));
0x00005b82 movs r0, r0 |
0x00005b84 ldr r0, [r0, r0] | r0 = *((r0 + r0));
0x00005b86 movs r0, r0 |
0x00005b88 ldrsb r6, [r6, r4] | r6 = *((r6 + r4));
0x00005b8a movs r0, r0 |
0x00005b8c ldrsb r4, [r4, r5] | r4 = *((r4 + r5));
0x00005b8e movs r0, r0 |
0x00005b90 ldrsb r4, [r2, r4] | r4 = *((r2 + r4));
0x00005b92 movs r0, r0 |
0x00005b94 ldrsb r2, [r7, r5] | r2 = *((r7 + r5));
0x00005b96 movs r0, r0 |
0x00005b98 ldrsb r0, [r2, r7] | r0 = *((r2 + r7));
0x00005b9a movs r0, r0 |
0x00005b9c ldrsb r2, [r5, r6] | r2 = *((r5 + r6));
0x00005b9e movs r0, r0 |
0x00005ba0 ldr r2, [pc, 0x160] |
0x00005ba2 ldr r3, [pc, 0x164] | r3 = *(0x5d0a);
0x00005ba4 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00005ba8 sub sp, 0x24 |
0x00005baa add r2, pc | r2 = 0xb8b2;
0x00005bac ldr r4, [r0, 0x18] | r4 = *((r0 + 0x18));
0x00005bae mov r7, r0 | r7 = r0;
0x00005bb0 mov r6, r1 | r6 = r1;
0x00005bb2 ldr r3, [r2, r3] |
0x00005bb4 ldr r3, [r3] | r3 = *(0xb8b2);
0x00005bb6 str r3, [sp, 0x1c] | var_1ch_2 = r3;
0x00005bb8 mov.w r3, 0 | r3 = 0;
| if (r4 != 0) {
0x00005bbc cbnz r4, 0x5bc6 | goto label_27;
| }
0x00005bbe b 0x5c32 | goto label_28;
| do {
0x00005bc0 ldr r4, [r4, 4] | r4 = *((r4 + 4));
0x00005bc2 cmp r4, 0 |
| if (r4 == 0) {
0x00005bc4 beq 0x5c32 | goto label_28;
| }
| label_27:
0x00005bc6 ldr r5, [r4] | r5 = *(r4);
0x00005bc8 ldr r1, [r5, 0x18] | r1 = *((r5 + 0x18));
| if (r1 != 0) {
0x00005bca cbz r1, 0x5bd4 |
0x00005bcc mov r0, r6 | r0 = r6;
0x00005bce blx 0x2e14 | r0 = fcn_00002e14 ();
| if (r0 == 0) {
0x00005bd2 cbz r0, 0x5c18 | goto label_11;
| }
| }
0x00005bd4 mov r0, r5 | r0 = r5;
0x00005bd6 bl 0x68a8 | r0 = fcn_000068a8 (r0);
0x00005bda cmp r0, 0 |
0x00005bdc beq 0x5bc0 |
| } while (r0 == 0);
0x00005bde mov.w r8, 1 | r8 = 1;
| label_7:
0x00005be2 ldr r4, [r7, 0x20] | r4 = *((r7 + 0x20));
| if (r4 != 0) {
0x00005be4 cbnz r4, 0x5bec | goto label_29;
| }
0x00005be6 b 0x5ccc | goto label_30;
| do {
0x00005be8 ldr r4, [r4, 4] | r4 = *((r4 + 4));
| if (r4 == 0) {
0x00005bea cbz r4, 0x5c38 | goto label_31;
| }
| label_29:
0x00005bec ldr r5, [r4] | r5 = *(r4);
0x00005bee ldr r1, [r5, 0x18] | r1 = *((r5 + 0x18));
| if (r1 != 0) {
0x00005bf0 cbz r1, 0x5bfa |
0x00005bf2 mov r0, r6 | r0 = r6;
0x00005bf4 blx 0x2e14 | fcn_00002e14 ();
0x00005bf6 invalid |
| }
0x00005bfa mov r0, r5 | r0 = r5;
0x00005bfc bl 0x68a8 | r0 = fcn_000068a8 (r0);
0x00005c00 cmp r0, 0 |
0x00005c02 beq 0x5be8 |
| } while (r0 == 0);
0x00005c04 ldr r3, [r7, 0x4c] | r3 = *((r7 + 0x4c));
0x00005c06 cmp r3, 1 |
| if (r3 != 1) {
0x00005c08 bne 0x5cf0 | goto label_32;
| }
0x00005c0a ldr r3, [r7, 0x44] | r3 = *((r7 + 0x44));
0x00005c0c str.w r8, [r7, 0x48] | __asm ("str.w r8, [r7, 0x48]");
0x00005c10 cmp r3, 0 |
| if (r3 <= 0) {
0x00005c12 ble 0x5c18 | goto label_11;
| }
| label_8:
0x00005c14 movs r3, 0 | r3 = 0;
0x00005c16 str r3, [r7, 0x44] | *((r7 + 0x44)) = r3;
| do {
| label_11:
0x00005c18 ldr r2, [pc, 0xf0] |
0x00005c1a ldr r3, [pc, 0xec] | r3 = *(0x5d0a);
0x00005c1c add r2, pc | r2 = 0xb92c;
0x00005c1e ldr r3, [r2, r3] | r3 = *(0xb92c);
0x00005c20 ldr r2, [r3] | r2 = *(0xb92c);
0x00005c22 ldr r3, [sp, 0x1c] | r3 = var_1ch_2;
0x00005c24 eors r2, r3 | r2 ^= r3;
0x00005c26 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00005c2a bne 0x5d00 | goto label_33;
| }
0x00005c2c add sp, 0x24 |
0x00005c2e pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_28:
0x00005c32 mov.w r8, 0 | r8 = 0;
0x00005c36 b 0x5be2 | goto label_7;
| label_31:
0x00005c38 ldr r3, [r7, 0x4c] | r3 = *((r7 + 0x4c));
0x00005c3a mov r5, r0 | r5 = r0;
0x00005c3c cmp r3, 0 |
| if (r3 == 0) {
0x00005c3e beq 0x5cd0 | goto label_34;
| }
| label_12:
0x00005c40 mov r3, r6 | r3 = r6;
0x00005c42 mov r2, r5 | r2 = r5;
0x00005c44 mov r1, r8 | r1 = r8;
0x00005c46 mov r0, r7 | r0 = r7;
0x00005c48 bl 0x584c | fcn_0000584c (r0, r1, r2, r3);
0x00005c4c ldr r3, [r7, 0x44] | r3 = *((r7 + 0x44));
0x00005c4e strd r8, r5, [r7, 0x48] | __asm ("strd r8, r5, [r7, 0x48]");
0x00005c52 cmp r3, 0 |
0x00005c54 ble 0x5c18 |
| } while (r3 <= 0);
0x00005c56 cmp r5, 0 |
| if (r5 != 0) {
0x00005c58 bne 0x5c14 | goto label_8;
| }
| label_10:
0x00005c5a ldr r3, [pc, 0xb4] |
0x00005c5c mov.w sl, 0 | sl = 0;
0x00005c60 ldr.w fp, [pc, 0xb0] |
0x00005c64 add.w r8, sp, 0x14 | r8 += var_14h_2;
0x00005c66 lsrs r4, r2, 0x20 | r4 = r2 >> 0x20;
0x00005c68 add.w sb, sp, 0x10 | sb += var_10h;
0x00005c6c mov r5, sl | r5 = sl;
0x00005c6e add r3, pc | r3 = 0xb984;
0x00005c70 add fp, pc | fp = 0xb988;
0x00005c72 str r3, [sp, 0xc] | var_ch_3 = r3;
0x00005c74 b 0x5c86 | goto label_35;
| label_9:
0x00005c76 mov r0, r4 | r0 = r4;
0x00005c78 add.w sl, sl, 1 | sl++;
0x00005c7c blx 0x2d74 | fcn_00002d74 (r0);
0x00005c80 ldr r3, [r7, 0x44] | r3 = *((r7 + 0x44));
0x00005c82 cmp sl, r3 |
| if (sl >= r3) {
0x00005c84 bge 0x5c14 | goto label_8;
| }
| label_35:
0x00005c86 ldr r1, [r7, 0x28] | r1 = *((r7 + 0x28));
0x00005c88 ldr r0, [r7, 0x30] | r0 = *((r7 + 0x30));
0x00005c8a str r5, [sp, 0x10] | var_10h = r5;
0x00005c8c blx 0x2c74 | r0 = g_str_has_prefix ();
0x00005c90 mov r4, r0 | r4 = r0;
0x00005c92 mov r0, r6 | r0 = r6;
0x00005c94 str r5, [sp, 0x18] | var_18h_2 = r5;
0x00005c96 blx 0x2fd0 | fcn_00002fd0 ();
0x00005c9a str r0, [sp, 0x14] | var_14h_2 = r0;
0x00005c9c mov r0, r4 | r0 = r4;
0x00005c9e ldm.w r8, {r1, r2} | r1 = *(r8);
| r2 = *((r8 + 4));
0x00005ca2 blx 0x27ec | fcn_000027ec ();
0x00005ca6 ldr r0, [r7, 0x30] | r0 = *((r7 + 0x30));
0x00005ca8 mov r2, sb | r2 = sb;
0x00005caa mov r1, r4 | r1 = r4;
0x00005cac blx 0x291c | r0 = fcn_0000291c ();
0x00005cb0 cmp r0, 0 |
| if (r0 != 0) {
0x00005cb2 bne 0x5c76 | goto label_9;
| }
0x00005cb4 ldr r3, [sp, 0x10] | r3 = var_10h;
0x00005cb6 movs r1, 0x10 | r1 = 0x10;
0x00005cb8 ldr r2, [sp, 0xc] | r2 = var_ch_3;
0x00005cba ldr r3, [r3, 8] | r3 = *((r3 + 8));
0x00005cbc str r3, [sp] | *(sp) = r3;
0x00005cbe mov r3, fp | r3 = fp;
0x00005cc0 blx 0x2f7c | fcn_00002f7c ();
0x00005cc4 ldr r0, [sp, 0x10] | r0 = var_10h;
0x00005cc6 blx 0x2e74 | fcn_00002e74 ();
0x00005cca b 0x5c76 | goto label_9;
| label_30:
0x00005ccc ldr r3, [r7, 0x4c] | r3 = *((r7 + 0x4c));
| if (r3 == 0) {
0x00005cce cbnz r3, 0x5cd6 |
| label_34:
0x00005cd0 ldr r3, [r7, 0x48] | r3 = *((r7 + 0x48));
0x00005cd2 cmp r3, r8 |
| if (r3 == r8) {
0x00005cd4 beq 0x5cf4 | goto label_36;
| }
| }
0x00005cd6 mov r3, r6 | r3 = r6;
0x00005cd8 movs r2, 0 | r2 = 0;
0x00005cda mov r1, r8 | r1 = r8;
0x00005cdc mov r0, r7 | r0 = r7;
0x00005cde bl 0x584c | fcn_0000584c (r0, r1, r2, r3);
0x00005ce0 ldc2 p12, c6, [r5, 0x1ec]! | __asm ("ldc2 p12, c6, [r5, 0x1ec]!");
0x00005ce4 movs r2, 0 | r2 = 0;
0x00005ce6 strd r8, r2, [r7, 0x48] | __asm ("strd r8, r2, [r7, 0x48]");
0x00005cea cmp r3, r2 |
| if (r3 > r2) {
0x00005cec bgt 0x5c5a | goto label_10;
| }
0x00005cee b 0x5c18 | goto label_11;
| label_32:
0x00005cf0 movs r5, 1 | r5 = 1;
0x00005cf2 b 0x5c40 | goto label_12;
| label_36:
0x00005cf4 ldr r3, [r7, 0x44] | r3 = *((r7 + 0x44));
0x00005cf6 movs r2, 0 | r2 = 0;
0x00005cf8 str r2, [r7, 0x4c] | *((r7 + 0x4c)) = r2;
0x00005cfa cmp r3, r2 |
| if (r3 > r2) {
0x00005cfc bgt 0x5c5a | goto label_10;
| }
0x00005cfe b 0x5c18 | goto label_11;
| label_33:
0x00005d00 blx 0x2cec | fprintf_chk ()
0x00005d04 strh r2, [r4, 8] | *((r4 + 8)) = r2;
0x00005d06 movs r0, r0 |
0x00005d08 lsls r0, r3, 0xc | r0 = r3 << 0xc;
0x00005d0a movs r0, r0 |
0x00005d0c strh r0, [r6, 4] | *((r6 + 4)) = r0;
0x00005d0e movs r0, r0 |
0x00005d10 strb r2, [r3, r7] | *((r3 + r7)) = r2;
0x00005d12 movs r0, r0 |
0x00005d14 ldr r5, [pc, 0x230] | r5 = *(0x5f48);
0x00005d16 movs r0, r0 |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/bin/scheduled @ 0x61dc */
| #include <stdint.h>
|
; (fcn) fcn.000061dc () | void fcn_000061dc (int16_t arg1, int16_t arg2, int16_t arg3) {
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_ch;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x000061dc mvnsmi lr, 0xb4000 | __asm ("mvnsmi lr, 0xb4000");
0x000061e0 mov r5, r1 | r5 = r1;
0x000061e2 ldr r1, [pc, 0x108] |
0x000061e4 mov r7, r2 | r7 = r2;
0x000061e6 sub sp, 0x14 |
0x000061e8 movs r3, 0 | r3 = 0;
0x000061ea ldr r2, [pc, 0x104] | r2 = *(0x62f2);
0x000061ec mov r4, r0 | r4 = r0;
0x000061ee add r1, pc | r1 = 0xc4e0;
0x000061f0 mov.w sb, 1 | sb = 1;
0x000061f4 ldr r2, [r1, r2] |
0x000061f6 ldr r2, [r2] | r2 = *(0xc4e0);
0x000061f8 str r2, [sp, 0xc] | var_ch = r2;
0x000061fa mov.w r2, 0 | r2 = 0;
0x000061fe strd r3, r3, [sp, 4] | __asm ("strd r3, r3, [var_4h]");
0x00006202 blx 0x2744 | fcn_00002744 ();
0x00006206 str.w sb, [r4, 0x38] | __asm ("str.w sb, [r4, 0x38]");
0x0000620a mov r6, r0 | r6 = r0;
0x0000620c ldr r0, [r4, 0xc] | r0 = *((r4 + 0xc));
0x0000620e blx 0x2a24 | r0 = fcn_00002a24 ();
0x00006212 mov r8, r0 | r8 = r0;
0x00006214 bl 0x4f18 | fcn_00004f18 ();
0x00006216 cdp2 p6, 8, c4, c0, c1, 0 | __asm ("cdp2 p6, 8, c4, c0, c1, 0");
0x0000621a mov r0, r4 | r0 = r4;
0x0000621c blx 0x2ce0 | g_thread_new ();
0x00006220 mov r1, r6 | r1 = r6;
0x00006222 bl 0x5e58 | fcn_00005e58 (r0, r1);
0x00006226 ldr r0, [r4, 0x18] | r0 = *((r4 + 0x18));
0x00006228 bl 0x7834 | fcn_00007834 (r0);
0x0000622c ldr r0, [r4, 0x20] | r0 = *((r4 + 0x20));
0x0000622e bl 0x7834 | fcn_00007834 (r0);
0x00006232 ldr r0, [r4, 0xc] | r0 = *((r4 + 0xc));
0x00006234 blx 0x2864 | fcn_00002864 ();
0x00006238 mov r0, r5 | r0 = r5;
0x0000623a mov r5, sb | r5 = sb;
0x0000623c blx 0x2a24 | fcn_00002a24 ();
0x00006240 add r1, sp, 4 | r1 += var_4h;
0x00006242 str r0, [r4, 0xc] | *((r4 + 0xc)) = r0;
0x00006244 mov r0, r4 | r0 = r4;
0x00006246 bl 0x5910 | r0 = fcn_00005910 (r0, r1);
| if (r0 == 0) {
0x0000624a cbz r0, 0x62a0 | goto label_1;
| }
| label_0:
0x0000624c ldr r1, [sp, 4] | r1 = var_4h;
0x0000624e movs r3, 0 | r3 = 0;
0x00006250 str r3, [r4, 0x38] | *((r4 + 0x38)) = r3;
| if (r1 == 0) {
0x00006252 cbz r1, 0x628c | goto label_2;
| }
0x00006254 mov r0, r7 | r0 = r7;
0x00006256 blx 0x2b34 | fcn_00002b34 ();
0x0000625a ldr r1, [sp, 8] | r1 = var_8h;
| if (r1 == 0) {
0x0000625c cbz r1, 0x6264 | goto label_3;
| }
0x0000625e mov r0, r7 | r0 = r7;
0x00006260 blx 0x2b34 | fcn_00002b34 ();
| do {
| label_3:
0x00006264 mov r0, r8 | r0 = r8;
0x00006266 blx 0x2864 | fcn_00002864 ();
0x0000626a mov r0, r6 | r0 = r6;
0x0000626c blx 0x2d38 | fcn_00002d38 ();
0x00006270 ldr r2, [pc, 0x80] |
0x00006272 ldr r3, [pc, 0x7c] | r3 = *(0x62f2);
0x00006274 add r2, pc | r2 = 0xc56c;
0x00006276 ldr r3, [r2, r3] | r3 = *(0xc56c);
0x00006278 ldr r2, [r3] | r2 = *(0xc56c);
0x0000627a ldr r3, [sp, 0xc] | r3 = var_ch;
0x0000627c eors r2, r3 | r2 ^= r3;
0x0000627e mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00006282 bne 0x62e8 | goto label_4;
| }
0x00006284 mov r0, r5 | r0 = r5;
0x00006286 add sp, 0x14 |
0x00006288 pop.w {r4, r5, r6, r7, r8, sb, pc} |
| label_2:
0x0000628c bl 0x4f18 | r0 = fcn_00004f18 ();
0x00006290 mov r1, r0 | r1 = r0;
0x00006292 mov r0, r4 | r0 = r4;
0x00006294 blx 0x2ce0 | g_thread_new ();
0x00006298 mov r1, r6 | r1 = r6;
0x0000629a bl 0x5dfc | fcn_00005dfc (r0, r1);
0x0000629e b 0x6264 |
| } while (1);
| label_1:
0x000062a0 ldr.w sb, [pc, 0x54] |
0x000062a4 movs r1, 8 | r1 = 8;
0x000062a6 ldr r2, [pc, 0x54] |
0x000062a8 mov r5, r0 | r5 = r0;
0x000062aa add sb, pc | sb = 0xc5a6;
0x000062ac add r2, pc | r2 = 0xc5ae;
0x000062ae mov r3, sb | r3 = sb;
0x000062b0 blx 0x2f7c | fcn_00002f7c ();
0x000062b4 ldr r0, [r4, 0x18] | r0 = *((r4 + 0x18));
0x000062b6 bl 0x7834 | fcn_00007834 (r0);
0x000062ba ldr r0, [r4, 0x20] | r0 = *((r4 + 0x20));
0x000062bc bl 0x7834 | fcn_00007834 (r0);
0x000062c0 ldr r0, [r4, 0xc] | r0 = *((r4 + 0xc));
0x000062c2 blx 0x2864 | fcn_00002864 ();
0x000062c6 mov r0, r8 | r0 = r8;
0x000062c8 blx 0x2a24 | fcn_00002a24 ();
0x000062cc add r1, sp, 8 | r1 += var_8h;
0x000062ce str r0, [r4, 0xc] | *((r4 + 0xc)) = r0;
0x000062d0 mov r0, r4 | r0 = r4;
0x000062d2 bl 0x5910 | r0 = fcn_00005910 (r0, r1);
0x000062d6 cmp r0, 0 |
| if (r0 != 0) {
0x000062d8 bne 0x624c | goto label_0;
| }
0x000062da ldr r2, [pc, 0x24] |
0x000062dc mov r3, sb | r3 = sb;
0x000062de movs r1, 8 | r1 = 8;
0x000062e0 add r2, pc | r2 = 0xc5e6;
0x000062e2 blx 0x2f7c | fcn_00002f7c ();
0x000062e6 b 0x624c | goto label_0;
| label_4:
0x000062e8 blx 0x2cec | fprintf_chk ()
0x000062ec ldrb r6, [r3, 0xb] | r6 = *((r3 + 0xb));
0x000062ee movs r0, r0 |
0x000062f0 lsls r0, r3, 0xc | r0 = r3 << 0xc;
0x000062f2 movs r0, r0 |
0x000062f4 ldrb r0, [r3, 9] | r0 = *((r3 + 9));
0x000062f6 movs r0, r0 |
0x000062f8 bx sl | return uint32_t (*sl)() ();
| }
r2dec has crashed (info: /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/bin/scheduled @ 0x6304).
Please report the bug at https://github.com/radareorg/r2dec-js/issues
Use the option '--issue' or the command 'pddi' to generate
the needed data for the issue.
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/bin/scheduled @ 0x6a40 */
| #include <stdint.h>
|
; (fcn) fcn.00006a40 () | void fcn_00006a40 (int16_t arg_30h, int16_t arg_34h, int16_t arg_3ch, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_0h;
| int16_t var_4h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x00006a40 svcmi 0xf0e92d | __asm ("svcmi 0xf0e92d");
0x00006a44 mov r7, r2 | r7 = r2;
0x00006a46 ldr r2, [pc, 0x150] |
0x00006a48 mov r6, r3 | r6 = r3;
0x00006a4a sub sp, 0xc |
0x00006a4c mov r8, r1 | r8 = r1;
0x00006a4e ldr r3, [pc, 0x14c] | r3 = *(0x6b9e);
0x00006a50 mov sb, r0 | sb = r0;
0x00006a52 add r2, pc | r2 = 0xd5f0;
0x00006a54 ldrd fp, sl, [sp, 0x34] | __asm ("ldrd fp, sl, [arg_34h]");
0x00006a58 ldr r5, [sp, 0x3c] | r5 = *(arg_3ch);
0x00006a5a ldr r3, [r2, r3] |
0x00006a5c ldr r3, [r3] | r3 = *(0xd5f0);
0x00006a5e str r3, [sp, 4] | var_4h = r3;
0x00006a60 mov.w r3, 0 | r3 = 0;
0x00006a64 bl 0x666c | fcn_0000666c ();
0x00006a68 movs r1, 0 | r1 = 0;
0x00006a6a blx 0x29fc | fcn_000029fc ();
0x00006a6e movs r3, 0 | r3 = 0;
0x00006a70 mov r4, r0 | r4 = r0;
0x00006a72 str.w sb, [r0, 0x34] | __asm ("str.w sb, [r0, 0x34]");
0x00006a76 mov r0, r8 | r0 = r8;
0x00006a78 str r3, [sp] | *(sp) = r3;
0x00006a7a blx 0x284c | fcn_0000284c ();
0x00006a7e ldr r3, [sp, 0x30] | r3 = *(arg_30h);
0x00006a80 vmov.i32 d16, 0 | __asm ("vmov.i32 d16, 0");
0x00006a84 str r0, [r4, 0x20] | *((r4 + 0x20)) = r0;
0x00006a86 str r3, [r4, 0x30] | *((r4 + 0x30)) = r3;
0x00006a88 strd fp, sl, [r4, 0x38] | __asm ("strd fp, sl, [r4, 0x38]");
0x00006a8c vstr d16, [r4, 0x10] | __asm ("vstr d16, [r4, 0x10]");
| if (r6 != 0) {
0x00006a90 cbz r6, 0x6a9a |
0x00006a92 mov r0, r6 | r0 = r6;
0x00006a94 blx 0x2a24 | r0 = fcn_00002a24 ();
0x00006a98 mov r6, r0 | r6 = r0;
| }
0x00006a9a ldr.w r3, [r8, 8] | r3 = *((r8 + 8));
0x00006a9e str r6, [r4, 0x28] | *((r4 + 0x28)) = r6;
0x00006aa0 cmp r7, 0 |
| if (r7 == 0) {
0x00006aa2 beq 0x6b62 | goto label_6;
| }
0x00006aa4 ldr r2, [r7, 8] | r2 = *((r7 + 8));
0x00006aa6 cmp r2, r3 |
| if (r2 != r3) {
0x00006aa8 bne 0x6b2c | goto label_7;
| }
0x00006aaa mov r1, r7 | r1 = r7;
0x00006aac mov r0, r8 | r0 = r8;
0x00006aae blx 0x2e14 | r0 = fcn_00002e14 ();
0x00006ab2 cmp r0, 0 |
| if (r0 != 0) {
0x00006ab4 bne 0x6b68 | goto label_8;
| }
| label_4:
0x00006ab6 str r0, [r4, 0x24] | *((r4 + 0x24)) = r0;
| label_3:
0x00006ab8 ldr r6, [r4, 0x38] | r6 = *((r4 + 0x38));
0x00006aba cmp r6, 0 |
| if (r6 == 0) {
0x00006abc beq 0x6b58 | goto label_9;
| }
| label_1:
0x00006abe ldr r0, [r4, 0x20] | r0 = *((r4 + 0x20));
0x00006ac0 blx 0x284c | r0 = fcn_0000284c ();
0x00006ac4 mov r1, r0 | r1 = r0;
0x00006ac6 mov r0, r6 | r0 = r6;
0x00006ac8 blx 0x2c68 | remove (r0);
0x00006acc str r0, [r4, 0x38] | *((r4 + 0x38)) = r0;
0x00006ace cmp r0, 0 |
| if (r0 == 0) {
0x00006ad0 beq 0x6b5e | goto label_10;
| }
0x00006ad2 mov r3, r0 | r3 = r0;
| do {
0x00006ad4 ldr r2, [r3] | r2 = *(r3);
0x00006ad6 ldr r1, [r2, 8] | r1 = *((r2 + 8));
| if (r1 == 0) {
0x00006ad8 cbnz r1, 0x6ae0 |
0x00006ada ldr r1, [r4, 0x20] | r1 = *((r4 + 0x20));
0x00006adc ldr r1, [r1, 4] | r1 = *((r1 + 4));
0x00006ade str r1, [r2, 4] | *((r2 + 4)) = r1;
| }
0x00006ae0 ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x00006ae2 cmp r3, 0 |
0x00006ae4 bne 0x6ad4 |
| } while (r3 != 0);
| label_2:
0x00006ae6 ldr r1, [pc, 0xb8] |
0x00006ae8 add r1, pc | r1 = 0xd68e;
0x00006aea blx 0x2c34 | fcn_00002c34 ();
0x00006aee str r0, [r4, 0x38] | *((r4 + 0x38)) = r0;
| if (r0 == 0) {
0x00006af0 cbz r0, 0x6af8 | goto label_11;
| }
| do {
0x00006af2 ldr r0, [r0, 4] | r0 = *((r0 + 4));
0x00006af4 cmp r0, 0 |
0x00006af6 bne 0x6af2 |
| } while (r0 != 0);
| label_11:
0x00006af8 ldr r1, [pc, 0xa8] |
0x00006afa ldr r0, [r4, 0x3c] | r0 = *((r4 + 0x3c));
0x00006afc add r1, pc | r1 = 0xd6a4;
0x00006afe blx 0x2c34 | fcn_00002c34 ();
0x00006b02 str r0, [r4, 0x3c] | *((r4 + 0x3c)) = r0;
| if (r0 == 0) {
0x00006b04 cbz r0, 0x6b0c | goto label_12;
| }
| do {
0x00006b06 ldr r0, [r0, 4] | r0 = *((r0 + 4));
0x00006b08 cmp r0, 0 |
0x00006b0a bne 0x6b06 |
| } while (r0 != 0);
| label_12:
0x00006b0c ldr r3, [sp] | r3 = *(sp);
| if (r3 != 0) {
0x00006b0e cbnz r3, 0x6b48 | goto label_13;
| }
| do {
| label_0:
0x00006b10 ldr r2, [pc, 0x94] |
0x00006b12 ldr r3, [pc, 0x88] | r3 = *(0x6b9e);
0x00006b14 add r2, pc | r2 = 0xd6c0;
0x00006b16 ldr r3, [r2, r3] | r3 = *(0xd6c0);
0x00006b18 ldr r2, [r3] | r2 = *(0xd6c0);
0x00006b1a ldr r3, [sp, 4] | r3 = var_4h;
0x00006b1c eors r2, r3 | r2 ^= r3;
0x00006b1e mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00006b22 bne 0x6b94 | goto label_14;
| }
0x00006b24 mov r0, r4 | r0 = r4;
0x00006b26 add sp, 0xc |
0x00006b28 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
0x00006b2a ldrh r0, [r6, 0x3e] | r0 = *((r6 + 0x3e));
| label_7:
0x00006b2c ldr r0, [pc, 0x7c] |
0x00006b2e add r0, pc | r0 = 0xd6de;
0x00006b30 blx 0x2c04 | fcn_00002c04 ();
0x00006b34 ldr r3, [pc, 0x78] |
0x00006b36 mov r1, r0 | r1 = r0;
0x00006b38 movs r2, 0x65 | r2 = 0x65;
0x00006b3a mov r0, sp | r0 = sp;
0x00006b3c add r3, pc | r3 = 0xd6f0;
0x00006b3e blx 0x2bbc | fcn_00002bbc ();
0x00006b42 ldr r3, [sp] | r3 = *(sp);
0x00006b44 cmp r3, 0 |
0x00006b46 beq 0x6b10 |
| } while (r3 == 0);
| label_13:
0x00006b48 mov r0, r4 | r0 = r4;
0x00006b4a blx 0x2864 | fcn_00002864 ();
| if (r5 != 0) {
0x00006b4e cbz r5, 0x6b54 |
0x00006b50 ldr r3, [r5] | r3 = *(r5);
| if (r3 == 0) {
0x00006b52 cbz r3, 0x6b8a | goto label_15;
| }
| }
| label_5:
0x00006b54 movs r4, 0 | r4 = 0;
0x00006b56 b 0x6b10 | goto label_0;
| label_9:
0x00006b58 ldr r6, [r4, 0x28] | r6 = *((r4 + 0x28));
0x00006b5a cmp r6, 0 |
| if (r6 == 0) {
0x00006b5c beq 0x6abe | goto label_1;
| }
| label_10:
0x00006b5e movs r0, 0 | r0 = 0;
0x00006b60 b 0x6ae6 | goto label_2;
| if (r3 != 0) {
| label_6:
0x00006b62 cbz r3, 0x6b70 |
0x00006b64 str r7, [r4, 0x24] | *((r4 + 0x24)) = r7;
0x00006b66 b 0x6ab8 | goto label_3;
| label_8:
0x00006b68 mov r0, r7 | r0 = r7;
0x00006b6a blx 0x284c | fcn_0000284c ();
0x00006b6e b 0x6ab6 | goto label_4;
| }
0x00006b70 mov.w r6, 0x5180 | r6 = 0x5180;
0x00006b74 ldr r0, [r4, 0x20] | r0 = *((r4 + 0x20));
0x00006b76 movt r6, 1 | r6 = (r6 & 0xFFFF) | 0x10000;
0x00006b7a blx 0x284c | fcn_0000284c ();
0x00006b7e mov r1, r6 | r1 = r6;
0x00006b80 str r0, [r4, 0x24] | *((r4 + 0x24)) = r0;
0x00006b82 blx 0x2828 | fcn_00002828 ();
0x00006b86 str r6, [r4, 0x30] | *((r4 + 0x30)) = r6;
0x00006b88 b 0x6ab8 | goto label_3;
| label_15:
0x00006b8a ldr r1, [sp] | r1 = *(sp);
0x00006b8c mov r0, r5 | r0 = r5;
0x00006b8e blx 0x2b34 | fcn_00002b34 ();
0x00006b92 b 0x6b54 | goto label_5;
| label_14:
0x00006b94 blx 0x2cec | fprintf_chk ()
0x00006b98 strb r2, [r7, 9] | *((r7 + 9)) = r2;
0x00006b9a movs r0, r0 |
0x00006b9c lsls r0, r3, 0xc | r0 = r3 << 0xc;
0x00006b9e movs r0, r0 |
0x00006ba0 invalid |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/bin/scheduled @ 0x6c34 */
| #include <stdint.h>
|
; (fcn) fcn.00006c34 () | void fcn_00006c34 (int16_t arg1, int16_t arg2, int16_t arg3) {
| int16_t var_0h;
| int32_t var_0h_2;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_14h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x00006c34 svcmi 0xf0e92d | __asm ("svcmi 0xf0e92d");
0x00006c38 mov r7, r1 | r7 = r1;
0x00006c3a ldr r1, [pc, 0x1cc] |
0x00006c3c mov sb, r2 | sb = r2;
0x00006c3e sub sp, 0x1c |
0x00006c40 movs r3, 0 | r3 = 0;
0x00006c42 ldr r2, [pc, 0x1c8] | r2 = *(0x6e0e);
0x00006c44 mov sl, r0 | sl = r0;
0x00006c46 add r1, pc | r1 = 0xda54;
0x00006c48 ldr r2, [r1, r2] |
0x00006c4a ldr r2, [r2] | r2 = *(0xda54);
0x00006c4c str r2, [sp, 0x14] | var_14h = r2;
0x00006c4e mov.w r2, 0 | r2 = 0;
0x00006c52 str r3, [sp, 0xc] | var_ch = r3;
0x00006c54 bl 0x6bb4 | fcn_00006bb4 ();
0x00006c58 ldr r6, [r7, 0xc] | r6 = *((r7 + 0xc));
0x00006c5a cmp r6, 0 |
| if (r6 == 0) {
0x00006c5c beq.w 0x6db4 | goto label_4;
| }
0x00006c60 ldr.w fp, [pc, 0x1ac] |
0x00006c64 mov r8, r0 | r8 = r0;
0x00006c66 add fp, pc | fp = 0xda7a;
| label_1:
0x00006c68 ldr r5, [r6] | r5 = *(r6);
0x00006c6a mov r1, fp | r1 = fp;
0x00006c6c ldr r0, [r5] | r0 = *(r5);
0x00006c6e blx 0x287c | r0 = fcn_0000287c ();
0x00006c72 mov r4, r0 | r4 = r0;
0x00006c74 cmp r0, 0 |
| if (r0 != 0) {
0x00006c76 bne.w 0x6d7e | goto label_5;
| }
0x00006c7a ldr r1, [r5, 4] | r1 = *((r5 + 4));
0x00006c7c mov r0, r8 | r0 = r8;
0x00006c7e blx 0x2d9c | r0 = fcn_00002d9c ();
0x00006c82 cmp r0, 2 |
| if (r0 > 2) {
0x00006c84 bhi 0x6cdc | goto label_6;
| }
0x00006c86 cmp r0, 0 |
| if (r0 != 0) {
0x00006c88 bne 0x6d0e | goto label_7;
| }
| do {
0x00006c8a ldr r1, [r5, 4] | r1 = *((r5 + 4));
0x00006c8c movs r0, 0 | r0 = 0;
0x00006c8e ldr r2, [r7, 4] | r2 = *((r7 + 4));
0x00006c90 ldr r3, [pc, 0x180] |
0x00006c92 strd r2, r1, [sp] | __asm ("strd r2, r1, [sp]");
0x00006c96 movs r1, 0x10 | r1 = 0x10;
0x00006c98 ldr r2, [pc, 0x17c] |
0x00006c9a add r3, pc | r3 = 0xdab2;
0x00006c9c add r2, pc | r2 = 0xdab8;
0x00006c9e blx 0x2f7c | fcn_00002f7c ();
0x00006ca2 ldr r0, [pc, 0x178] |
0x00006ca4 add r0, pc | r0 = 0xdac6;
0x00006ca6 blx 0x2c04 | fcn_00002c04 ();
0x00006caa ldr r4, [r5, 4] | r4 = *((r5 + 4));
0x00006cac mov r1, r0 | r1 = r0;
0x00006cae ldr r3, [pc, 0x170] |
0x00006cb0 movw r2, 0x131 | r2 = 0x131;
0x00006cb4 mov r0, sb | r0 = sb;
0x00006cb6 str r4, [sp] | *(sp) = r4;
0x00006cb8 add r3, pc | r3 = 0xdade;
0x00006cba blx 0x2bbc | fcn_00002bbc ();
| label_0:
0x00006cbe movs r0, 0 | r0 = 0;
| label_3:
0x00006cc0 ldr r2, [pc, 0x160] |
0x00006cc2 ldr r3, [pc, 0x148] | r3 = *(0x6e0e);
0x00006cc4 add r2, pc | r2 = 0xdaec;
0x00006cc6 ldr r3, [r2, r3] | r3 = *(0xdaec);
0x00006cc8 ldr r2, [r3] | r2 = *(0xdaec);
0x00006cca ldr r3, [sp, 0x14] | r3 = var_14h;
0x00006ccc eors r2, r3 | r2 ^= r3;
0x00006cce mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00006cd2 bne.w 0x6e02 | goto label_8;
| }
0x00006cd6 add sp, 0x1c |
0x00006cd8 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_6:
0x00006cdc cmp r0, 3 |
0x00006cde bne 0x6c8a |
| } while (r0 != 3);
0x00006ce0 ldr r3, [pc, 0x144] |
0x00006ce2 mov r0, r4 | r0 = r4;
0x00006ce4 ldr r2, [pc, 0x144] |
0x00006ce6 movs r1, 0x10 | r1 = 0x10;
0x00006ce8 add r3, pc | r3 = 0xdb14;
0x00006cea add r2, pc | r2 = 0xdb1a;
0x00006cec blx 0x2f7c | fcn_00002f7c ();
0x00006cf0 ldr r0, [pc, 0x13c] |
0x00006cf2 add r0, pc | r0 = 0xdb26;
0x00006cf4 blx 0x2c04 | fcn_00002c04 ();
0x00006cf8 ldr r4, [r5, 4] | r4 = *((r5 + 4));
0x00006cfa mov r1, r0 | r1 = r0;
0x00006cfc ldr r3, [pc, 0x134] |
0x00006cfe movw r2, 0x131 | r2 = 0x131;
0x00006d02 mov r0, sb | r0 = sb;
0x00006d04 str r4, [sp] | *(sp) = r4;
0x00006d06 add r3, pc | r3 = 0xdb3e;
0x00006d08 blx 0x2bbc | fcn_00002bbc ();
0x00006d0c b 0x6cbe | goto label_0;
| label_7:
0x00006d0e ldr r6, [r6, 4] | r6 = *((r6 + 4));
0x00006d10 cmp r6, 0 |
| if (r6 != 0) {
0x00006d12 bne 0x6c68 | goto label_1;
| }
0x00006d14 cmp r0, 2 |
0x00006d16 ldr r3, [r7, 8] | r3 = *((r7 + 8));
| if (r0 == 2) {
0x00006d18 beq 0x6db6 | goto label_9;
| }
0x00006d1a ldr r1, [pc, 0x11c] |
0x00006d1c mov r0, r3 | r0 = r3;
0x00006d1e mov r2, r6 | r2 = r6;
0x00006d20 str r6, [sp, 0x10] | var_10h = r6;
0x00006d22 add r1, pc | r1 = 0xdb60;
0x00006d24 blx 0x2d90 | r0 = fcn_00002d90 ();
0x00006d28 ldr r3, [r0] | r3 = *(r0);
0x00006d2a mov r7, r0 | r7 = r0;
0x00006d2c cmp r3, 0 |
| if (r3 == 0) {
0x00006d2e beq 0x6df8 | goto label_10;
| }
0x00006d30 mov r5, r0 | r5 = r0;
0x00006d32 add r6, sp, 0x10 | r6 += var_10h;
0x00006d34 b 0x6d4c |
| while (r0 != 0) {
0x00006d36 ldr.w r0, [sl] | r0 = *(sl);
0x00006d3a mov r1, r4 | r1 = r4;
0x00006d3c blx 0x2c68 | remove (r0);
0x00006d40 ldr r3, [r5, 4]! | r3 = *((r5 += 4));
0x00006d44 str.w r0, [sl] | __asm ("str.w r0, [sl]");
0x00006d48 cmp r3, 0 |
| if (r3 == 0) {
0x00006d4a beq 0x6df8 | goto label_10;
| }
0x00006d4c blx 0x2df0 | fcn_00002df0 ();
0x00006d50 ldr r1, [r5] | r1 = *(r5);
0x00006d52 mov r2, r6 | r2 = r6;
0x00006d54 mov r4, r0 | r4 = r0;
0x00006d56 blx 0x2d50 | r0 = fcn_00002d50 ();
0x00006d5a cmp r0, 0 |
0x00006d5c bne 0x6d36 |
| }
| label_2:
0x00006d5e add r0, sp, 0xc | r0 += var_ch;
0x00006d60 ldr r1, [sp, 0x10] | r1 = var_10h;
0x00006d62 blx 0x2b34 | fcn_00002b34 ();
0x00006d66 mov r0, r7 | r0 = r7;
0x00006d68 blx 0x2e8c | fcn_00002e8c ();
| if (r4 != 0) {
0x00006d6c cbz r4, 0x6d74 |
0x00006d6e mov r0, r4 | r0 = r4;
0x00006d70 blx 0x2d38 | fcn_00002d38 ();
0x00006d72 invalid |
| }
0x00006d74 ldr r1, [sp, 0xc] | r1 = var_ch;
0x00006d76 mov r0, sb | r0 = sb;
0x00006d78 blx 0x2b34 | fcn_00002b34 ();
0x00006d7c b 0x6cbe | goto label_0;
| label_5:
0x00006d7e ldr r0, [pc, 0xbc] |
0x00006d80 add r0, pc | r0 = 0xdbc2;
0x00006d82 blx 0x2c04 | fcn_00002c04 ();
0x00006d86 ldr r3, [r5] | r3 = *(r5);
0x00006d88 mov r1, r0 | r1 = r0;
0x00006d8a mov.w r2, 0x130 | r2 = 0x130;
0x00006d8e mov r0, sb | r0 = sb;
0x00006d90 str r3, [sp] | *(sp) = r3;
0x00006d92 ldr r3, [pc, 0xac] |
0x00006d94 add r3, pc | r3 = 0xdbda;
0x00006d96 blx 0x2bbc | fcn_00002bbc ();
0x00006d9a ldr r0, [r7, 4] | r0 = *((r7 + 4));
0x00006d9c movs r1, 0x10 | r1 = 0x10;
0x00006d9e ldr r4, [r5] | r4 = *(r5);
0x00006da0 ldr r3, [pc, 0xa0] |
0x00006da2 ldr r2, [pc, 0xa4] |
0x00006da4 strd r0, r4, [sp] | __asm ("strd r0, r4, [sp]");
0x00006da8 movs r0, 0 | r0 = 0;
0x00006daa add r3, pc | r3 = 0xdbf2;
0x00006dac add r2, pc | r2 = 0xdbfa;
0x00006dae blx 0x2f7c | fcn_00002f7c ();
0x00006db2 b 0x6cbe | goto label_0;
| label_4:
0x00006db4 ldr r3, [r7, 8] | r3 = *((r7 + 8));
| label_9:
0x00006db6 ldr r1, [pc, 0x94] |
0x00006db8 movs r2, 0 | r2 = 0;
0x00006dba mov r0, r3 | r0 = r3;
0x00006dbc str r2, [sp, 0x10] | var_10h = r2;
0x00006dbe add r6, sp, 0x10 | r6 += var_10h;
0x00006dc0 add r1, pc | r1 = 0xdc12;
0x00006dc2 blx 0x2d90 | r0 = fcn_00002d90 ();
0x00006dc6 ldr r3, [r0] | r3 = *(r0);
0x00006dc8 mov r7, r0 | r7 = r0;
0x00006dca mov r5, r0 | r5 = r0;
| if (r3 != 0) {
0x00006dcc cbnz r3, 0x6de4 | goto label_11;
| }
0x00006dce b 0x6df8 | goto label_10;
| do {
0x00006dd0 ldr.w r0, [sl] | r0 = *(sl);
0x00006dd4 mov r1, r4 | r1 = r4;
0x00006dd6 blx 0x2c68 | remove (r0);
0x00006dda ldr r3, [r5, 4]! | r3 = *((r5 += 4));
0x00006dde str.w r0, [sl] | __asm ("str.w r0, [sl]");
| if (r3 == 0) {
0x00006de2 cbz r3, 0x6df8 | goto label_10;
| }
| label_11:
0x00006de4 blx 0x2df0 | fcn_00002df0 ();
0x00006de8 ldr r1, [r5] | r1 = *(r5);
0x00006dea mov r2, r6 | r2 = r6;
0x00006dec mov r4, r0 | r4 = r0;
0x00006dee blx 0x2970 | r0 = fcn_00002970 ();
0x00006df2 cmp r0, 0 |
0x00006df4 bne 0x6dd0 |
| } while (r0 != 0);
0x00006df6 b 0x6d5e | goto label_2;
| label_10:
0x00006df8 mov r0, r7 | r0 = r7;
0x00006dfa blx 0x2e8c | fcn_00002e8c ();
0x00006dfe movs r0, 1 | r0 = 1;
0x00006e00 b 0x6cc0 | goto label_3;
| label_8:
0x00006e02 blx 0x2cec | fprintf_chk ()
0x00006e06 nop |
0x00006e08 strb r6, [r0, 2] | *((r0 + 2)) = r6;
0x00006e0a movs r0, r0 |
0x00006e0c lsls r0, r3, 0xc | r0 = r3 << 0xc;
0x00006e0e movs r0, r0 |
0x00006e10 invalid |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/bin/scheduled @ 0x6eb0 */
| #include <stdint.h>
|
; (fcn) fcn.00006eb0 () | void fcn_00006eb0 (int16_t arg1, int16_t arg2) {
| int16_t var_0h;
| int16_t var_8h;
| int16_t var_ch;
| r0 = arg1;
| r1 = arg2;
| if (? >= ?) {
0x00006eb0 ldrbmi lr, [r0, sp, lsr 18]! |
| }
0x00006eb4 mov sb, r1 | sb = r1;
0x00006eb6 ldr r1, [pc, 0x114] |
0x00006eb8 sub sp, 0x10 |
0x00006eba movs r3, 0 | r3 = 0;
0x00006ebc mov r8, r0 | r8 = r0;
0x00006ebe ldr r2, [pc, 0x110] | r2 = *(0x6fd2);
0x00006ec0 add r1, pc | r1 = 0xde92;
0x00006ec2 ldr r2, [r1, r2] |
0x00006ec4 ldr r2, [r2] | r2 = *(0xde92);
0x00006ec6 str r2, [sp, 0xc] | var_ch = r2;
0x00006ec8 mov.w r2, 0 | r2 = 0;
0x00006ecc str r3, [sp, 8] | var_8h = r3;
0x00006ece bl 0x6bb4 | r0 = fcn_00006bb4 ();
0x00006ed2 mov sl, r0 | sl = r0;
0x00006ed4 blx 0x2df0 | fcn_00002df0 ();
0x00006ed8 ldr.w r4, [r8, 0xc] | r4 = *((r8 + 0xc));
0x00006edc mov r7, r0 | r7 = r0;
| if (r4 == 0) {
0x00006ede cbz r4, 0x6f40 | goto label_2;
| }
0x00006ee0 ldr r6, [pc, 0xf0] |
0x00006ee2 add r6, pc | r6 = 0xdeba;
0x00006ee4 b 0x6eea |
| while (r0 != 0) {
0x00006ee6 ldr r4, [r4, 4] | r4 = *((r4 + 4));
| if (r4 == 0) {
0x00006ee8 cbz r4, 0x6f40 | goto label_2;
| }
0x00006eea ldr r5, [r4] | r5 = *(r4);
0x00006eec mov r0, r6 | r0 = r6;
0x00006eee ldr r1, [r5] | r1 = *(r5);
0x00006ef0 blx 0x287c | r0 = fcn_0000287c ();
0x00006ef4 cmp r0, 0 |
0x00006ef6 bne 0x6ee6 |
| }
0x00006ef8 ldr r4, [r5, 4] | r4 = *((r5 + 4));
| if (r4 == 0) {
0x00006efa cbz r4, 0x6f40 | goto label_2;
| }
0x00006efc mov r0, sl | r0 = sl;
0x00006efe mov r1, r4 | r1 = r4;
0x00006f00 blx 0x2d9c | r0 = fcn_00002d9c ();
0x00006f04 cmp r0, 2 |
| if (r0 == 2) {
0x00006f06 beq 0x6f42 | goto label_3;
| }
0x00006f08 cmp r0, 3 |
| if (r0 == 3) {
0x00006f0a beq 0x6f92 | goto label_4;
| }
0x00006f0c cmp r0, 1 |
| if (r0 == 1) {
0x00006f0e beq 0x6f72 | goto label_5;
| }
0x00006f10 ldr r0, [pc, 0xc4] |
0x00006f12 add r0, pc | r0 = 0xdeee;
0x00006f14 blx 0x2c04 | fcn_00002c04 ();
0x00006f16 vmov.s8 r4, d6[5] | __asm ("vmov.s8 r4, d6[5]");
0x00006f1a mov r1, r0 | r1 = r0;
0x00006f1c movw r2, 0x133 | r2 = 0x133;
0x00006f20 add r0, sp, 8 | r0 += var_8h;
0x00006f22 str r4, [sp] | *(sp) = r4;
0x00006f24 add r3, pc | r3 += pc;
0x00006f26 blx 0x2bbc | fcn_00002bbc ();
0x00006f28 vmla.f64 d25, d10, d2 | __asm ("vmla.f64 d25, d10, d2");
| if (r3 == 0) {
0x00006f2c cbz r3, 0x6f56 | goto label_6;
| }
| do {
0x00006f2e mov r0, r7 | r0 = r7;
0x00006f30 blx 0x2d38 | fcn_00002d38 ();
0x00006f34 ldr.w r3, [sb] | r3 = *(sb);
0x00006f38 cmp r3, 0 |
| if (r3 == 0) {
0x00006f3a beq 0x6fbc | goto label_7;
| }
| label_1:
0x00006f3c movs r7, 0 | r7 = 0;
0x00006f3e b 0x6f56 | goto label_6;
| label_2:
0x00006f40 movs r4, 0 | r4 = 0;
| label_3:
0x00006f42 ldr.w r1, [r8, 8] | r1 = *((r8 + 8));
0x00006f46 add r2, sp, 8 | r2 += var_8h;
0x00006f48 mov r0, r7 | r0 = r7;
0x00006f4a blx 0x2970 | r0 = fcn_00002970 ();
| if (r0 == 0) {
0x00006f4e cbz r0, 0x6fac | goto label_8;
| }
| label_0:
0x00006f50 ldr r3, [sp, 8] | r3 = var_8h;
0x00006f52 cmp r3, 0 |
0x00006f54 bne 0x6f2e |
| } while (r3 != 0);
| label_6:
0x00006f56 ldr r2, [pc, 0x88] |
0x00006f58 ldr r3, [pc, 0x74] | r3 = *(0x6fd0);
0x00006f5a add r2, pc | r2 = 0xdf40;
0x00006f5c ldr r3, [r2, r3] | r3 = *(0xdf40);
0x00006f5e ldr r2, [r3] | r2 = *(0xdf40);
0x00006f60 ldr r3, [sp, 0xc] | r3 = var_ch;
0x00006f62 eors r2, r3 | r2 ^= r3;
0x00006f64 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00006f68 bne 0x6fc6 | goto label_9;
| }
0x00006f6a mov r0, r7 | r0 = r7;
0x00006f6c add sp, 0x10 |
0x00006f6e pop.w {r4, r5, r6, r7, r8, sb, sl, pc} |
| label_5:
0x00006f72 ldr.w r1, [r8, 8] | r1 = *((r8 + 8));
0x00006f76 add r2, sp, 8 | r2 += var_8h;
0x00006f78 mov r0, r7 | r0 = r7;
0x00006f7a blx 0x2d50 | r0 = fcn_00002d50 ();
0x00006f7e cmp r0, 0 |
| if (r0 != 0) {
0x00006f80 bne 0x6f50 | goto label_0;
| }
0x00006f82 ldr r2, [pc, 0x60] |
0x00006f84 mov r3, r4 | r3 = r4;
0x00006f86 ldr r1, [sp, 8] | r1 = var_8h;
0x00006f88 mov r0, sb | r0 = sb;
0x00006f8a add r2, pc | r2 = 0xdf74;
0x00006f8c blx 0x2a30 | fcn_00002a30 ();
0x00006f90 b 0x6f50 | goto label_0;
| label_4:
0x00006f92 ldr r0, [pc, 0x54] |
0x00006f94 add r0, pc | r0 = 0xdf82;
0x00006f96 blx 0x2c04 | fcn_00002c04 ();
0x00006f9a ldr r3, [pc, 0x50] |
0x00006f9c mov r1, r0 | r1 = r0;
0x00006f9e movw r2, 0x133 | r2 = 0x133;
0x00006fa2 add r0, sp, 8 | r0 += var_8h;
0x00006fa4 add r3, pc | r3 = 0xdf96;
0x00006fa6 blx 0x2bbc | fcn_00002bbc ();
0x00006faa b 0x6f50 | goto label_0;
| label_8:
0x00006fac ldr r2, [pc, 0x40] |
0x00006fae mov r3, r4 | r3 = r4;
0x00006fb0 ldr r1, [sp, 8] | r1 = var_8h;
0x00006fb2 mov r0, sb | r0 = sb;
0x00006fb4 add r2, pc | r2 = 0xdfa8;
0x00006fb6 blx 0x2a30 | fcn_00002a30 ();
0x00006fba b 0x6f50 | goto label_0;
| label_7:
0x00006fbc ldr r1, [sp, 8] | r1 = var_8h;
0x00006fbe mov r0, sb | r0 = sb;
0x00006fc0 blx 0x2b34 | fcn_00002b34 ();
0x00006fc4 b 0x6f3c | goto label_1;
| label_9:
0x00006fc6 blx 0x2cec | fprintf_chk ()
0x00006fca nop |
0x00006fcc ldr r4, [r1, 0x60] | r4 = *((r1 + 0x60));
0x00006fce movs r0, r0 |
0x00006fd0 lsls r0, r3, 0xc | r0 = r3 << 0xc;
0x00006fd2 movs r0, r0 |
0x00006fd4 cmp r2, fp |
0x00006fd6 movs r0, r0 |
0x00006fd8 cmp r6, sl |
0x00006fda movs r0, r0 |
0x00006fdc cmp r8, fp |
0x00006fde movs r0, r0 |
0x00006fe0 ldr r2, [r6, 0x54] | r2 = *((r6 + 0x54));
0x00006fe2 movs r0, r0 |
0x00006fe4 cmp r2, sb |
0x00006fe6 movs r0, r0 |
0x00006fe8 add ip, sl |
0x00006fea movs r0, r0 |
0x00006fec cmp r0, r7 |
0x00006fee movs r0, r0 |
0x00006ff0 cmp r0, r4 |
0x00006ff2 movs r0, r0 |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/bin/scheduled @ 0x70a4 */
| #include <stdint.h>
|
; (fcn) fcn.000070a4 () | void fcn_000070a4 (int16_t arg_4h, uint32_t arg1, int16_t arg2) {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_14h;
| int16_t var_18h;
| int16_t var_1ch;
| r0 = arg1;
| r1 = arg2;
0x000070a4 svcmi 0xf0e92d | __asm ("svcmi 0xf0e92d");
0x000070a8 sub sp, 0x24 |
0x000070aa ldr.w r5, [pc, 0x720] |
0x000070ae mov r4, r0 | r4 = r0;
0x000070b0 movs r3, 0 | r3 = 0;
0x000070b2 str r1, [sp, 0x14] | var_14h = r1;
0x000070b4 ldr.w r1, [pc, 0x718] | r1 = *(0x77d0);
0x000070b8 add r5, pc | r5 = 0xe88a;
0x000070ba ldrb r0, [r0] | r0 = *(r0);
0x000070bc ldr.w r8, [pc, 0x714] |
0x000070c0 ldr r1, [r5, r1] |
0x000070c2 add r8, pc | r8 = 0xe89a;
0x000070c4 ldr r1, [r1] | r1 = *(0xe88a);
0x000070c6 str r1, [sp, 0x1c] | var_1ch = r1;
0x000070c8 mov.w r1, 0 | r1 = 0;
0x000070cc str r3, [sp, 0x18] | var_18h = r3;
0x000070ce cmp r0, 0 |
| if (r0 == 0) {
0x000070d0 beq.w 0x772a | goto label_39;
| }
0x000070d4 mov fp, r3 |
0x000070d6 movs r5, 1 | r5 = 1;
0x000070d8 mov sl, r3 | sl = r3;
0x000070da mov sb, r3 | sb = r3;
0x000070dc mov r6, r3 | r6 = r3;
0x000070de mov r7, r3 | r7 = r3;
0x000070e0 strd r3, r3, [sp, 0xc] | __asm ("strd r3, r3, [var_ch]");
| do {
| label_10:
0x000070e4 cmp r0, 0xd |
| if (r0 == 0xd) {
0x000070e6 beq 0x7138 | goto label_40;
| }
0x000070e8 cmp r0, 0xa |
| if (r0 != 0xa) {
0x000070ea bne 0x7140 | goto label_9;
| }
| label_0:
0x000070ec ldrb r2, [r4, 1] | r2 = *((r4 + 1));
0x000070ee movs r0, 0xa | r0 = 0xa;
0x000070f0 cmp r2, 9 |
0x000070f2 it ne |
| if (r2 != 9) {
0x000070f4 cmpne r2, 0x20 | __asm ("cmpne r2, 0x20");
| }
| if (r2 != 9) {
0x000070f6 bne 0x7140 | goto label_9;
| }
0x000070f8 ldrb r0, [r4, 2] | r0 = *((r4 + 2));
0x000070fa adds r5, 1 | r5++;
0x000070fc adds r4, 2 | r4 += 2;
0x000070fe cmp r0, 0 |
0x00007100 bne 0x70e4 |
| } while (r0 != 0);
| label_11:
0x00007102 cmp r3, 5 |
| if (r3 == 5) {
0x00007104 beq.w 0x7664 | goto label_41;
| }
0x00007106 strh r6, [r5, 0x14] | *((r5 + 0x14)) = r6;
0x00007108 cmp r3, 0 |
| if (r3 != 0) {
0x0000710a bne.w 0x76fc | goto label_42;
| }
| label_28:
0x0000710e cmp r7, 0 |
| if (r7 == 0) {
0x00007110 beq.w 0x772c | goto label_43;
| }
0x00007114 ldr r3, [sp, 0x18] | r3 = var_18h;
0x00007116 cmp r3, 0 |
| if (r3 != 0) {
0x00007118 beq 0x71c8 |
| if (r6 != 0) {
0x0000711a cbz r6, 0x7122 |
0x0000711c mov r0, r6 | r0 = r6;
0x0000711e bl 0x6e50 | fcn_00006e50 (r0);
| }
| label_12:
0x00007122 ldr.w r1, [pc, 0x6b4] | r1 = *(0x000077d8);
0x00007126 mov r0, r7 | r0 = r7;
0x00007128 movs r2, 0 | r2 = 0;
0x0000712a add r1, pc | r1 += pc;
0x0000712c blx 0x28c4 | fcn_000028c4 ();
0x00007130 mov r0, r7 | r0 = r7;
0x00007132 blx 0x28e0 | fcn_000028e0 ();
0x00007136 b 0x7476 | goto label_37;
| label_40:
0x00007138 ldrb r2, [r4, 1] | r2 = *((r4 + 1));
0x0000713a cmp r2, 0xa |
| if (r2 == 0xa) {
0x0000713c beq.w 0x7440 | goto label_44;
| }
| label_9:
0x00007140 cmp r3, 5 |
| if (r3 > 5) {
0x00007142 bhi.w 0x77be | goto label_45;
| }
| /* switch table (7 cases) at 0x714a */
0x00007146 tbh [pc, r3, lsl 1] | __asm ("tbh [pc, r3, lsl 1]");
| label_4:
0x00007156 ldrb r0, [r4, 1] | r0 = *((r4 + 1));
0x00007158 adds r3, r4, 1 | r3 = r4 + 1;
0x0000715a str r3, [sp, 0xc] | var_ch = r3;
0x0000715c cmp r0, 0x22 |
| if (r0 == 0x22) {
0x0000715e beq.w 0x76a2 | goto label_46;
| }
0x00007162 cmp r0, 0 |
| if (r0 == 0) {
0x00007164 beq.w 0x76fc | goto label_42;
| }
0x00007168 cmp r0, 0xd |
| if (r0 != 0xd) {
0x0000716a bne.w 0x75aa | goto label_47;
| }
0x0000716c strh r6, [r3, 0x10] | *((r3 + 0x10)) = r6;
0x0000716e ldrb r2, [r4, 2] | r2 = *((r4 + 2));
0x00007170 movs r3, 3 | r3 = 3;
0x00007172 str r4, [sp, 0x10] | var_10h = r4;
0x00007174 cmp r2, 0xa |
| if (r2 == 0xa) {
0x00007176 beq.w 0x7724 | goto label_48;
| }
| label_22:
0x0000717a ldr r4, [sp, 0xc] | r4 = var_ch;
| label_15:
0x0000717c cmp r0, 0x3b |
| if (r0 == 0x3b) {
0x0000717e beq.w 0x735a | goto label_49;
| }
0x00007182 cmp r0, 0x3a |
| if (r0 == 0x3a) {
0x00007184 beq.w 0x760a | goto label_50;
| }
| label_36:
0x00007188 sub.w r3, r0, 9 | r3 = r0 - 9;
0x0000718c clz r3, r3 | r3 &= r3;
0x00007190 lsrs r3, r3, 5 | r3 >>= 5;
0x00007192 cmp r0, 0x1f |
0x00007194 it hi |
| if (r0 <= 0x1f) {
0x00007196 orrhi r3, r3, 1 | r3 |= 1;
| }
0x0000719a cmp r3, 0 |
| if (r3 != 0) {
0x0000719c bne.w 0x7486 | goto label_51;
| }
| label_14:
0x000071a0 ldr.w r0, [pc, 0x638] |
0x000071a4 add r0, pc | r0 = 0xe984;
0x000071a6 blx 0x2c04 | fcn_00002c04 ();
0x000071aa str r5, [sp, 4] | var_4h = r5;
0x000071ac mov r1, r0 | r1 = r0;
0x000071ae ldrb r3, [r4] | r3 = *(r4);
0x000071b0 movs r2, 0x66 | r2 = 0x66;
0x000071b2 add r0, sp, 0x18 | r0 += var_18h;
0x000071b4 str r3, [sp] | *(sp) = r3;
0x000071b6 ldr.w r3, [pc, 0x628] |
0x000071b8 adds r6, 0x28 | r6 += 0x28;
0x000071ba add r3, pc | r3 = 0xe9a0;
0x000071bc blx 0x2bbc | fcn_00002bbc ();
0x000071be invalid |
| label_16:
0x000071c0 ldr r3, [sp, 0x18] | r3 = var_18h;
0x000071c2 cmp r3, 0 |
| if (r3 != 0) {
0x000071c4 bne.w 0x7468 | goto label_52;
| }
| }
| label_13:
0x000071c8 ldr.w r2, [pc, 0x618] |
0x000071cc ldr.w r3, [pc, 0x600] | r3 = *(0x77d0);
0x000071ce adds r6, 0 | r6 += 0;
0x000071d0 add r2, pc | r2 = 0xe9b8;
0x000071d2 ldr r3, [r2, r3] | r3 = *(0xe9b8);
0x000071d4 ldr r2, [r3] | r2 = *(0xe9b8);
0x000071d6 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x000071d8 eors r2, r3 | r2 ^= r3;
0x000071da mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x000071de bne.w 0x77ba | goto label_53;
| }
0x000071e2 mov r0, r7 | r0 = r7;
0x000071e4 add sp, 0x24 |
0x000071e6 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_2:
0x000071ea movs r0, 8 | r0 = 8;
0x000071ec blx 0x2dc0 | fcn_00002dc0 ();
0x000071f0 ldr r2, [sp, 0x10] | r2 = var_10h;
0x000071f2 mov r1, sl | r1 = sl;
0x000071f4 str r0, [sp, 8] | var_8h = r0;
0x000071f6 bl 0x6ff4 | fcn_00006ff4 (r0, r1, r2);
0x000071fa ldr r3, [sp, 8] | r3 = var_8h;
0x000071fc mov r2, r4 | r2 = r4;
0x000071fe adds r0, r3, 4 | r0 = r3 + 4;
0x00007200 ldr r3, [sp, 0xc] | r3 = var_ch;
0x00007202 adds r1, r3, 1 | r1 = r3 + 1;
0x00007204 bl 0x6ff4 | fcn_00006ff4 (r0, r1, r2);
0x00007208 ldr r1, [sp, 8] | r1 = var_8h;
0x0000720a ldr r0, [r6, 0xc] | r0 = *((r6 + 0xc));
0x0000720c blx 0x2c68 | remove (r0);
0x00007210 str r0, [r6, 0xc] | *((r6 + 0xc)) = r0;
0x00007212 ldrb r3, [r4, 1] | r3 = *((r4 + 1));
0x00007214 cmp r3, 0x3b |
| if (r3 == 0x3b) {
0x00007216 beq.w 0x75d4 | goto label_54;
| }
0x0000721a cmp r3, 0x3a |
| if (r3 != 0x3a) {
0x0000721c bne.w 0x7794 | goto label_55;
| }
0x00007220 ldrb r0, [r4, 3] | r0 = *((r4 + 3));
0x00007222 add.w fp, r4, 2 |
0x00007226 add.w ip, r4, 3 |
0x0000722a cmp r0, 0 |
| if (r0 == 0) {
0x0000722c beq.w 0x7662 | goto label_56;
| }
0x00007230 cmp r0, 0xd |
| if (r0 == 0xd) {
0x00007232 beq.w 0x76ee | goto label_57;
| }
| label_1:
0x00007236 cmp r0, 0xa |
0x00007238 itt eq |
| if (r0 != 0xa) {
0x0000723a moveq r4, ip | r4 = ip;
| }
| if (r0 == 0xa) {
0x0000723c moveq r3, 5 | r3 = 5;
| goto label_58;
| }
| if (r0 == 0xa) {
| label_58:
0x0000723e beq.w 0x70ec | goto label_0;
| }
0x00007242 mov r4, ip | r4 = ip;
| label_26:
0x00007244 cmp r0, 0xa |
| if (r0 == 0xa) {
0x00007246 beq.w 0x753c | goto label_59;
| }
0x0000724a cmp r0, 0xd |
| if (r0 == 0xd) {
0x0000724c beq 0x7284 | goto label_60;
| }
0x0000724e sub.w r3, r0, 9 | r3 = r0 - 9;
0x00007252 clz r3, r3 | r3 &= r3;
0x00007256 lsrs r3, r3, 5 | r3 >>= 5;
0x00007258 cmp r0, 0x1f |
0x0000725a it hi |
| if (r0 <= 0x1f) {
0x0000725c orrhi r3, r3, 1 | r3 |= 1;
| }
0x00007260 cmp r3, 0 |
| if (r3 == 0) {
0x00007262 beq.w 0x7758 | goto label_61;
| }
0x00007266 ldrb r0, [r4, 1] | r0 = *((r4 + 1));
0x00007268 add.w ip, r4, 1 |
0x0000726c cmp r0, 0 |
| if (r0 == 0) {
0x0000726e beq.w 0x7662 | goto label_56;
| }
0x00007270 strh r0, [r7, 0xe] | *((r7 + 0xe)) = r0;
0x00007272 cmp r0, 0xd |
| if (r0 != 0xd) {
0x00007274 bne 0x7236 | goto label_1;
| }
0x00007276 ldrb r2, [r4, 2] | r2 = *((r4 + 2));
0x00007278 movs r3, 5 | r3 = 5;
0x0000727a cmp r2, 0xa |
0x0000727c it ne |
| if (r2 == 0xa) {
0x0000727e movne r4, ip | r4 = ip;
| }
| if (r2 == 0xa) {
0x00007280 beq.w 0x7442 | goto label_17;
| }
| label_60:
0x00007284 ldrb r3, [r4, 1] | r3 = *((r4 + 1));
0x00007286 cmp r3, 0xa |
| if (r3 != 0xa) {
0x00007288 bne.w 0x777a | goto label_62;
| }
0x0000728c mov r2, r4 | r2 = r4;
0x0000728e mov r1, fp | r1 = fp;
0x00007290 add.w r0, r6, 8 | r0 = r6 + 8;
0x00007294 adds r5, 1 | r5++;
0x00007296 bl 0x6ff4 | fcn_00006ff4 (r0, r1, r2);
0x0000729a mov r2, r4 | r2 = r4;
0x0000729c mov r1, sb | r1 = sb;
0x0000729e mov r0, r6 | r0 = r6;
0x000072a0 bl 0x6ff4 | fcn_00006ff4 (r0, r1, r2);
0x000072a4 mov r0, r7 | r0 = r7;
0x000072a6 mov r1, r6 | r1 = r6;
0x000072a8 blx 0x2c68 | r0 = remove (r0);
0x000072ac mov r7, r0 | r7 = r0;
0x000072ae ldrb r0, [r4, 2] | r0 = *((r4 + 2));
0x000072b0 add.w ip, r4, 2 |
0x000072b4 cmp r0, 0 |
| if (r0 == 0) {
0x000072b6 beq.w 0x7776 | goto label_63;
| }
0x000072ba cmp r0, 0xd |
| if (r0 == 0xd) {
0x000072bc beq.w 0x75b8 | goto label_64;
| }
| label_18:
0x000072c0 cmp r0, 0xa |
0x000072c2 mov.w r6, 0 | r6 = 0;
0x000072c6 itt eq |
| if (r0 != 0xa) {
0x000072c8 moveq r4, ip | r4 = ip;
| }
| if (r0 == 0xa) {
0x000072ca moveq r3, r6 | r3 = r6;
| goto label_65;
| }
| if (r0 == 0xa) {
| label_65:
0x000072cc beq.w 0x70ec | goto label_0;
| }
0x000072d0 mov r4, ip | r4 = ip;
| label_19:
0x000072d2 ldr.w r3, [pc, 0x514] |
0x000072d6 ldr.w r3, [r8, r3] | r3 = *((r8 + r3));
0x000072da ldr r3, [r3] | r3 = *(0x77ea);
0x000072dc str r3, [sp, 8] | var_8h = r3;
| label_8:
0x000072de ldr r3, [sp, 8] | r3 = var_8h;
0x000072e0 ldrh.w r3, [r3, r0, lsl 1] | offset_0 = r0 << 1;
| r3 = *((r3 + offset_0));
0x000072e2 adds r0, 0x10 | r0 += 0x10;
0x000072e4 and r3, r3, 1 | r3 &= 1;
0x000072e8 cmp r0, 0x2d |
0x000072ea it eq |
| if (r0 != 0x2d) {
0x000072ec orreq r3, r3, 1 | r3 |= 1;
| }
0x000072f0 cmp r3, 0 |
| if (r3 == 0) {
0x000072f2 beq.w 0x74ec | goto label_66;
| }
0x000072f6 movs r0, 0x10 | r0 = 0x10;
0x000072f8 blx 0x2964 | fcn_00002964 ();
0x000072fc vmov.i32 q8, 0 | __asm ("vmov.i32 q8, 0");
0x00007300 mov r6, r0 | r6 = r0;
0x00007302 add.w ip, r4, 1 |
0x00007306 vst1.32 {d16, d17}, [r0] | __asm ("vst1.32 {d16, d17}, [r0]");
0x0000730a ldrb r0, [r4, 1] | r0 = *((r4 + 1));
0x0000730c cmp r0, 0 |
| if (r0 == 0) {
0x0000730e beq.w 0x76fc | goto label_42;
| }
0x00007312 cmp r0, 0xd |
| if (r0 == 0xd) {
0x00007314 beq 0x73e4 | goto label_67;
| }
0x00007316 cmp r0, 0xa |
0x00007318 mov sb, r4 | sb = r4;
0x0000731a mov r4, ip | r4 = ip;
| if (r0 != 0xa) {
0x0000731c bne 0x73f0 | goto label_7;
| }
| label_6:
0x0000731e movs r3, 1 | r3 = 1;
0x00007320 b 0x70ec | goto label_0;
| label_30:
0x00007322 ldrb r2, [r4, 3] | r2 = *((r4 + 3));
0x00007324 movs r3, 4 | r3 = 4;
0x00007326 str r4, [sp, 0x10] | var_10h = r4;
0x00007328 cmp r2, 0xa |
| if (r2 == 0xa) {
0x0000732a beq.w 0x7442 | goto label_17;
| }
| label_3:
0x0000732e mov r4, ip | r4 = ip;
| label_32:
0x00007330 cmp r0, 0x22 |
| if (r0 == 0x22) {
0x00007332 beq.w 0x71ea | goto label_2;
| }
0x00007336 cmp r0, 0x1f |
| if (r0 < 0x1f) {
0x00007338 bls.w 0x751e | goto label_68;
| }
0x0000733c ldrb r0, [r4, 1] | r0 = *((r4 + 1));
0x0000733e add.w ip, r4, 1 |
0x00007342 cmp r0, 0 |
| if (r0 == 0) {
0x00007344 beq.w 0x76fc | goto label_42;
| }
0x00007348 cmp r0, 0xd |
| if (r0 == 0xd) {
0x0000734a beq.w 0x7514 | goto label_69;
| }
0x0000734e cmp r0, 0xa |
0x00007350 it eq |
| if (r0 == 0xa) {
0x00007352 moveq r4, ip | r4 = ip;
| goto label_70;
| }
| if (r0 != 0xa) {
| label_70:
0x00007354 bne 0x732e | goto label_3;
| }
| label_31:
0x00007356 movs r3, 4 | r3 = 4;
0x00007358 b 0x70ec | goto label_0;
| label_49:
0x0000735a movs r0, 8 | r0 = 8;
0x0000735c blx 0x2dc0 | fcn_00002dc0 ();
0x00007360 mov r1, sl | r1 = sl;
0x00007362 ldr r2, [sp, 0x10] | r2 = var_10h;
0x00007364 str r0, [sp, 8] | var_8h = r0;
0x00007366 add.w sl, r4, 1 | sl = r4 + 1;
0x0000736a bl 0x6ff4 | fcn_00006ff4 (r0, r1, r2);
0x0000736e ldrd r3, r1, [sp, 8] | __asm ("ldrd r3, r1, [var_8h]");
0x00007372 mov r2, r4 | r2 = r4;
0x00007374 adds r0, r3, 4 | r0 = r3 + 4;
0x00007376 bl 0x6ff4 | fcn_00006ff4 (r0, r1, r2);
0x0000737a ldr r1, [sp, 8] | r1 = var_8h;
0x0000737c ldr r0, [r6, 0xc] | r0 = *((r6 + 0xc));
0x0000737e blx 0x2c68 | remove (r0);
0x00007382 str r0, [r6, 0xc] | *((r6 + 0xc)) = r0;
0x00007384 ldrb r0, [r4, 1] | r0 = *((r4 + 1));
0x00007386 cmp r0, 0 |
| if (r0 == 0) {
0x00007388 beq.w 0x76fc | goto label_42;
| }
0x0000738c cmp r0, 0xd |
| if (r0 == 0xd) {
0x0000738e beq.w 0x75f8 | goto label_71;
| }
| label_20:
0x00007392 cmp r0, 0xa |
0x00007394 itt eq |
| if (r0 != 0xa) {
0x00007396 moveq r4, sl | r4 = sl;
| }
| if (r0 == 0xa) {
0x00007398 moveq r3, 2 | r3 = 2;
| goto label_72;
| }
| if (r0 == 0xa) {
| label_72:
0x0000739a beq.w 0x70ec | goto label_0;
| }
| label_21:
0x0000739e mov r4, sl | r4 = sl;
| label_5:
0x000073a0 cmp r0, 0x3d |
| if (r0 == 0x3d) {
0x000073a2 beq.w 0x7156 | goto label_4;
| }
| label_25:
0x000073a6 ldr.w r3, [pc, 0x440] |
0x000073aa ldr.w r3, [r8, r3] | r3 = *((r8 + r3));
0x000073ae ldr r3, [r3] | r3 = *(0x77ea);
0x000073b0 ldrh.w r3, [r3, r0, lsl 1] | offset_1 = r0 << 1;
| r3 = *((r3 + offset_1));
0x000073b4 and r3, r3, 1 | r3 &= 1;
0x000073b8 cmp r0, 0x2d |
0x000073ba it eq |
| if (r0 != 0x2d) {
0x000073bc orreq r3, r3, 1 | r3 |= 1;
| }
0x000073c0 cmp r3, 0 |
| if (r3 == 0) {
0x000073c2 beq 0x74b0 | goto label_73;
| }
0x000073c4 ldrb r0, [r4, 1] | r0 = *((r4 + 1));
0x000073c6 add.w ip, r4, 1 |
0x000073ca cmp r0, 0 |
| if (r0 == 0) {
0x000073cc beq.w 0x76fc | goto label_42;
| }
0x000073d0 cmp r0, 0xd |
| if (r0 == 0xd) {
0x000073d2 beq.w 0x7686 | goto label_74;
| }
| label_24:
0x000073d6 cmp r0, 0xa |
0x000073d8 mov r4, ip | r4 = ip;
0x000073da it eq |
| if (r0 == 0xa) {
0x000073dc moveq r3, 2 | r3 = 2;
| goto label_75;
| }
| if (r0 == 0xa) {
| label_75:
0x000073de beq.w 0x70ec | goto label_0;
| }
0x000073e2 b 0x73a0 | goto label_5;
| label_67:
0x000073e4 ldrb r2, [r4, 2] | r2 = *((r4 + 2));
0x000073e6 movs r3, 1 | r3 = 1;
0x000073e8 mov sb, r4 | sb = r4;
0x000073ea cmp r2, 0xa |
| if (r2 == 0xa) {
0x000073ec beq 0x7442 | goto label_17;
| }
0x000073ee mov r4, ip | r4 = ip;
| label_7:
0x000073f0 cmp r0, 0x3b |
| if (r0 == 0x3b) {
0x000073f2 beq.w 0x7580 | goto label_76;
| }
0x000073f6 cmp r0, 0x3a |
| if (r0 == 0x3a) {
0x000073f8 beq.w 0x764c | goto label_77;
| }
| label_29:
0x000073fc ldr r3, [pc, 0x3e8] |
0x000073fe ldr.w r3, [r8, r3] | r3 = *((r8 + r3));
0x00007402 ldr r3, [r3] | r3 = *(0x77e8);
0x00007404 ldrh.w r3, [r3, r0, lsl 1] | offset_2 = r0 << 1;
| r3 = *((r3 + offset_2));
0x00007408 and r3, r3, 1 | r3 &= 1;
0x0000740c cmp r0, 0x2d |
0x0000740e it eq |
| if (r0 != 0x2d) {
0x00007410 orreq r3, r3, 1 | r3 |= 1;
| }
0x00007414 cmp r3, 0 |
| if (r3 == 0) {
0x00007416 beq 0x74ce | goto label_78;
| }
0x00007418 ldrb r0, [r4, 1] | r0 = *((r4 + 1));
0x0000741a add.w ip, r4, 1 |
0x0000741e cmp r0, 0 |
| if (r0 == 0) {
0x00007420 beq.w 0x76fc | goto label_42;
| }
0x00007424 cmp r0, 0xd |
| if (r0 == 0xd) {
0x00007426 beq.w 0x7694 | goto label_79;
| }
0x0000742a cmp r0, 0xa |
0x0000742c it eq |
| if (r0 == 0xa) {
0x0000742e moveq r4, ip | r4 = ip;
| goto label_80;
| }
| if (r0 == 0xa) {
| label_80:
0x00007430 beq.w 0x731e | goto label_6;
| }
0x00007434 mov r4, ip | r4 = ip;
0x00007436 b 0x73f0 | goto label_7;
| label_33:
0x00007438 ldrb r2, [r4, 1] | r2 = *((r4 + 1));
0x0000743a cmp r2, 0xa |
| if (r2 != 0xa) {
0x0000743c bne.w 0x72de | goto label_8;
| }
| label_44:
0x00007440 mov ip, r4 |
| label_17:
0x00007442 ldrb.w r2, [ip, 2] | r2 = *((ip + 2));
0x00007446 cmp r2, 9 |
0x00007448 it ne |
| if (r2 != 9) {
0x0000744a cmpne r2, 0x20 | __asm ("cmpne r2, 0x20");
| }
0x0000744c itt ne |
| if (r2 == 9) {
0x0000744e movne r4, ip | r4 = ip;
| }
| if (r2 != 9) {
0x00007450 movne r0, 0xd | r0 = 0xd;
| goto label_81;
| }
| if (r2 != 9) {
| label_81:
0x00007452 bne.w 0x7140 | goto label_9;
| }
0x00007456 ldrb.w r0, [ip, 3] | r0 = *((ip + 3));
0x0000745a adds r5, 1 | r5++;
0x0000745c add.w r4, ip, 3 | r4 = ip + 3;
0x00007460 cmp r0, 0 |
| if (r0 != 0) {
0x00007462 bne.w 0x70e4 | goto label_10;
| }
0x00007466 b 0x7102 | goto label_11;
| if (r6 != 0) {
| label_52:
0x00007468 cbz r6, 0x7470 |
| label_38:
0x0000746a mov r0, r6 | r0 = r6;
0x0000746c bl 0x6e50 | fcn_00006e50 (r0);
0x0000746e invalid |
| }
0x00007470 cmp r7, 0 |
| if (r7 != 0) {
0x00007472 bne.w 0x7122 | goto label_12;
| }
0x00007474 add r6, sp, 0x158 | r6 = sp + 0x158;
| label_37:
0x00007476 ldr r3, [sp, 0x14] | r3 = var_14h;
| if (r3 != 0) {
0x00007478 cbz r3, 0x7482 |
0x0000747a ldr r3, [r3] | r3 = *(r3);
0x0000747c cmp r3, 0 |
| if (r3 == 0) {
0x0000747e beq.w 0x76e4 | goto label_82;
| }
| }
| label_35:
0x00007482 movs r7, 0 | r7 = 0;
0x00007484 b 0x71c8 | goto label_13;
| label_51:
0x00007486 cmp r0, 0x22 |
| if (r0 == 0x22) {
0x00007488 beq.w 0x71a0 | goto label_14;
| }
0x0000748c cmp r0, 0x2c |
| if (r0 == 0x2c) {
0x0000748e beq.w 0x71a0 | goto label_14;
| }
0x00007492 ldrb r0, [r4, 1] | r0 = *((r4 + 1));
0x00007494 add.w ip, r4, 1 |
0x00007498 cmp r0, 0 |
| if (r0 == 0) {
0x0000749a beq.w 0x76fc | goto label_42;
| }
0x0000749e cmp r0, 0xd |
| if (r0 == 0xd) {
0x000074a0 beq.w 0x7716 | goto label_83;
| }
0x000074a4 cmp r0, 0xa |
0x000074a6 mov r4, ip | r4 = ip;
| if (r0 != 0xa) {
0x000074a8 bne.w 0x717c | goto label_15;
| }
0x000074ac movs r3, 3 | r3 = 3;
0x000074ae b 0x70ec | goto label_0;
| label_73:
0x000074b0 ldr r0, [pc, 0x338] |
0x000074b2 add r0, pc | r0 = 0xeca2;
0x000074b4 blx 0x2c04 | fcn_00002c04 ();
0x000074b8 str r5, [sp, 4] | var_4h = r5;
0x000074ba mov r1, r0 | r1 = r0;
0x000074bc ldrb r3, [r4] | r3 = *(r4);
0x000074be movs r2, 0x65 | r2 = 0x65;
0x000074c0 add r0, sp, 0x18 | r0 += var_18h;
0x000074c2 str r3, [sp] | *(sp) = r3;
0x000074c4 ldr r3, [pc, 0x328] |
0x000074c6 add r3, pc | r3 = 0xecba;
0x000074c8 blx 0x2bbc | fcn_00002bbc ();
0x000074cc b 0x71c0 | goto label_16;
| label_78:
0x000074ce ldr r0, [pc, 0x324] |
0x000074d0 add r0, pc | r0 = 0xecca;
0x000074d2 blx 0x2c04 | fcn_00002c04 ();
0x000074d6 str r5, [sp, 4] | var_4h = r5;
0x000074d8 mov r1, r0 | r1 = r0;
0x000074da ldrb r3, [r4] | r3 = *(r4);
0x000074dc movs r2, 0x64 | r2 = 0x64;
0x000074de add r0, sp, 0x18 | r0 += var_18h;
0x000074e0 str r3, [sp] | *(sp) = r3;
0x000074e2 ldr r3, [pc, 0x314] |
0x000074e4 add r3, pc | r3 = 0xece2;
0x000074e6 blx 0x2bbc | fcn_00002bbc ();
0x000074ea b 0x71c0 | goto label_16;
| label_66:
0x000074ec cmp r0, 0xa |
| if (r0 == 0xa) {
0x000074ee beq.w 0x76bc | goto label_84;
| }
0x000074f2 cmp r0, 0xd |
| if (r0 == 0xd) {
0x000074f4 beq 0x75c8 | goto label_85;
| }
| label_23:
0x000074f6 ldr r0, [pc, 0x304] |
0x000074f8 add r0, pc | r0 = 0xecfa;
0x000074fa blx 0x2c04 | fcn_00002c04 ();
0x000074fe str r5, [sp, 4] | var_4h = r5;
0x00007500 mov r1, r0 | r1 = r0;
0x00007502 ldrb r3, [r4] | r3 = *(r4);
0x00007504 movs r2, 0x64 | r2 = 0x64;
0x00007506 add r0, sp, 0x18 | r0 += var_18h;
0x00007508 str r3, [sp] | *(sp) = r3;
0x0000750a ldr r3, [pc, 0x2f4] |
0x0000750c add r3, pc | r3 = 0xed12;
0x0000750e blx 0x2bbc | fcn_00002bbc ();
0x00007512 b 0x71c0 | goto label_16;
| label_69:
0x00007514 ldrb r2, [r4, 2] | r2 = *((r4 + 2));
0x00007516 movs r3, 4 | r3 = 4;
0x00007518 cmp r2, 0xa |
| if (r2 == 0xa) {
0x0000751a beq 0x7442 | goto label_17;
| }
0x0000751c mov r4, ip | r4 = ip;
| label_68:
0x0000751e ldr r0, [pc, 0x2e4] |
0x00007520 add r0, pc | r0 = 0xed2a;
0x00007522 blx 0x2c04 | fcn_00002c04 ();
0x00007526 str r5, [sp, 4] | var_4h = r5;
0x00007528 mov r1, r0 | r1 = r0;
0x0000752a ldrb r3, [r4] | r3 = *(r4);
0x0000752c movs r2, 0x66 | r2 = 0x66;
0x0000752e add r0, sp, 0x18 | r0 += var_18h;
0x00007530 str r3, [sp] | *(sp) = r3;
0x00007532 ldr r3, [pc, 0x2d4] |
0x00007534 add r3, pc | r3 = 0xed42;
0x00007536 blx 0x2bbc | fcn_00002bbc ();
0x0000753a b 0x71c0 | goto label_16;
| label_59:
0x0000753c mov r2, r4 | r2 = r4;
0x0000753e mov r1, fp | r1 = fp;
0x00007540 add.w r0, r6, 8 | r0 = r6 + 8;
0x00007544 adds r5, 1 | r5++;
0x00007546 bl 0x6ff4 | fcn_00006ff4 (r0, r1, r2);
0x0000754a mov r2, r4 | r2 = r4;
0x0000754c mov r1, sb | r1 = sb;
0x0000754e mov r0, r6 | r0 = r6;
0x00007550 bl 0x6ff4 | fcn_00006ff4 (r0, r1, r2);
0x00007554 mov r0, r7 | r0 = r7;
0x00007556 mov r1, r6 | r1 = r6;
0x00007558 blx 0x2c68 | r0 = remove (r0);
0x0000755c mov r7, r0 | r7 = r0;
0x0000755e ldrb r0, [r4, 1] | r0 = *((r4 + 1));
0x00007560 add.w ip, r4, 1 |
0x00007564 cmp r0, 0 |
| if (r0 == 0) {
0x00007566 beq.w 0x7776 | goto label_63;
| }
0x0000756a cmp r0, 0xd |
| if (r0 != 0xd) {
0x0000756c bne.w 0x72c0 | goto label_18;
| }
0x00007570 ldrb r2, [r4, 2] | r2 = *((r4 + 2));
0x00007572 movs r6, 0 | r6 = 0;
0x00007574 mov r3, r6 | r3 = r6;
0x00007576 cmp r2, 0xa |
| if (r2 == 0xa) {
0x00007578 beq.w 0x7442 | goto label_17;
| }
0x0000757c mov r4, ip | r4 = ip;
0x0000757e b 0x72d2 | goto label_19;
| label_76:
0x00007580 adds r0, r6, 4 | r0 = r6 + 4;
0x00007582 mov r2, r4 | r2 = r4;
0x00007584 mov r1, sb | r1 = sb;
0x00007586 add.w sl, r4, 1 | sl = r4 + 1;
0x0000758a bl 0x6ff4 | fcn_00006ff4 (r0, r1, r2);
0x0000758e ldrb r0, [r4, 1] | r0 = *((r4 + 1));
0x00007590 cmp r0, 0 |
| if (r0 == 0) {
0x00007592 beq.w 0x76fc | goto label_42;
| }
0x00007596 cmp r0, 0xd |
| if (r0 != 0xd) {
0x00007598 bne.w 0x7392 | goto label_20;
| }
0x0000759a add r6, sp, 0x3ec | r6 = sp + 0x3ec;
0x0000759c ldrb r2, [r4, 2] | r2 = *((r4 + 2));
0x0000759e movs r3, 2 | r3 = 2;
0x000075a0 cmp r2, 0xa |
| if (r2 != 0xa) {
0x000075a2 bne.w 0x739e | goto label_21;
| }
0x000075a6 mov ip, sl |
0x000075a8 b 0x7442 | goto label_17;
| label_47:
0x000075aa cmp r0, 0xa |
0x000075ac str r4, [sp, 0x10] | var_10h = r4;
| if (r0 != 0xa) {
0x000075ae bne.w 0x717a | goto label_22;
| }
0x000075b2 ldr r4, [sp, 0xc] | r4 = var_ch;
0x000075b4 movs r3, 3 | r3 = 3;
0x000075b6 b 0x70ec | goto label_0;
| label_64:
0x000075b8 ldrb r2, [r4, 3] | r2 = *((r4 + 3));
0x000075ba movs r6, 0 | r6 = 0;
0x000075bc mov r3, r6 | r3 = r6;
0x000075be cmp r2, 0xa |
| if (r2 == 0xa) {
0x000075c0 beq.w 0x7442 | goto label_17;
| }
0x000075c4 mov r4, ip | r4 = ip;
0x000075c6 b 0x72d2 | goto label_19;
| label_85:
0x000075c8 ldrb r0, [r4, 1] | r0 = *((r4 + 1));
0x000075ca cmp r0, 0xa |
| if (r0 != 0xa) {
0x000075cc bne 0x74f6 | goto label_23;
| }
0x000075ce adds r5, 1 | r5++;
0x000075d0 adds r4, 1 | r4++;
0x000075d2 b 0x76d4 | goto label_86;
| label_54:
0x000075d4 ldrb r0, [r4, 3] | r0 = *((r4 + 3));
0x000075d6 add.w sl, r4, 2 | sl = r4 + 2;
0x000075da add.w ip, r4, 3 |
0x000075de cmp r0, 0 |
| if (r0 == 0) {
0x000075e0 beq.w 0x76fc | goto label_42;
| }
0x000075e4 cmp r0, 0xd |
| if (r0 != 0xd) {
0x000075e6 bne.w 0x73d6 | goto label_24;
| }
0x000075ea ldrb r2, [r4, 4] | r2 = *((r4 + 4));
0x000075ec movs r3, 2 | r3 = 2;
0x000075ee cmp r2, 0xa |
| if (r2 == 0xa) {
0x000075f0 beq.w 0x7442 | goto label_17;
| }
0x000075f4 mov r4, ip | r4 = ip;
0x000075f6 b 0x73a6 | goto label_25;
| label_71:
0x000075f8 ldrb r2, [r4, 2] | r2 = *((r4 + 2));
0x000075fa movs r3, 2 | r3 = 2;
0x000075fc cmp r2, 0xa |
0x000075fe it ne |
| if (r2 != 0xa) {
0x00007600 movne r4, sl | r4 = sl;
| goto label_87;
| }
| if (r2 != 0xa) {
| label_87:
0x00007602 bne.w 0x73a6 | goto label_25;
| }
0x00007606 mov ip, sl |
0x00007608 b 0x7442 | goto label_17;
| label_50:
0x0000760a movs r0, 8 | r0 = 8;
0x0000760c blx 0x2dc0 | fcn_00002dc0 ();
0x00007610 ldr r2, [sp, 0x10] | r2 = var_10h;
0x00007612 mov fp, r0 |
0x00007614 mov r1, sl | r1 = sl;
0x00007616 bl 0x6ff4 | fcn_00006ff4 (r0, r1, r2);
0x0000761a add.w r0, fp, 4 | r0 += arg_4h;
0x0000761e ldr r1, [sp, 0xc] | r1 = var_ch;
0x00007620 mov r2, r4 | r2 = r4;
0x00007622 bl 0x6ff4 | fcn_00006ff4 (r0, r1, r2);
0x00007626 mov r1, fp | r1 = fp;
0x00007628 ldr r0, [r6, 0xc] | r0 = *((r6 + 0xc));
0x0000762a blx 0x2c68 | remove (r0);
0x0000762e str r0, [r6, 0xc] | *((r6 + 0xc)) = r0;
0x00007630 add.w fp, r4, 1 |
0x00007634 ldrb r0, [r4, 1] | r0 = *((r4 + 1));
| if (r0 == 0) {
0x00007636 cbz r0, 0x7660 | goto label_88;
| }
| label_27:
0x00007638 cmp r0, 0xd |
| if (r0 == 0xd) {
0x0000763a beq 0x76d8 | goto label_89;
| }
0x0000763c cmp r0, 0xa |
0x0000763e itt eq |
| if (r0 != 0xa) {
0x00007640 moveq r4, fp | r4 = fp;
| }
| if (r0 == 0xa) {
0x00007642 moveq r3, 5 | r3 = 5;
| goto label_90;
| }
| if (r0 == 0xa) {
| label_90:
0x00007644 beq.w 0x70ec | goto label_0;
| }
| label_34:
0x00007648 mov r4, fp | r4 = fp;
0x0000764a b 0x7244 | goto label_26;
| label_77:
0x0000764c adds r0, r6, 4 | r0 = r6 + 4;
0x0000764e mov r2, r4 | r2 = r4;
0x00007650 mov r1, sb | r1 = sb;
0x00007652 add.w fp, r4, 1 |
0x00007656 bl 0x6ff4 | fcn_00006ff4 (r0, r1, r2);
0x0000765a ldrb r0, [r4, 1] | r0 = *((r4 + 1));
0x0000765c cmp r0, 0 |
| if (r0 != 0) {
0x0000765e bne 0x7638 | goto label_27;
| }
| label_88:
0x00007660 mov ip, fp |
| label_56:
0x00007662 mov r4, ip | r4 = ip;
| label_41:
0x00007664 mov r1, fp | r1 = fp;
0x00007666 mov r2, r4 | r2 = r4;
0x00007668 add.w r0, r6, 8 | r0 = r6 + 8;
0x0000766c bl 0x6ff4 | fcn_00006ff4 (r0, r1, r2);
0x00007670 mov r2, r4 | r2 = r4;
0x00007672 mov r1, sb | r1 = sb;
0x00007674 mov r0, r6 | r0 = r6;
0x00007676 bl 0x6ff4 | fcn_00006ff4 (r0, r1, r2);
0x0000767a mov r0, r7 | r0 = r7;
0x0000767c mov r1, r6 | r1 = r6;
0x0000767e blx 0x2c68 | r0 = remove (r0);
0x00007682 mov r7, r0 | r7 = r0;
0x00007684 b 0x710e | goto label_28;
| label_74:
0x00007686 ldrb r2, [r4, 2] | r2 = *((r4 + 2));
0x00007688 movs r3, 2 | r3 = 2;
0x0000768a cmp r2, 0xa |
| if (r2 == 0xa) {
0x0000768c beq.w 0x7442 | goto label_17;
| }
0x00007690 mov r4, ip | r4 = ip;
0x00007692 b 0x73a6 | goto label_25;
| label_79:
0x00007694 ldrb r2, [r4, 2] | r2 = *((r4 + 2));
0x00007696 movs r3, 1 | r3 = 1;
0x00007698 cmp r2, 0xa |
| if (r2 == 0xa) {
0x0000769a beq.w 0x7442 | goto label_17;
| }
0x0000769c add r6, sp, 0x348 | r6 = sp + 0x348;
0x0000769e mov r4, ip | r4 = ip;
0x000076a0 b 0x73fc | goto label_29;
| label_46:
0x000076a2 ldrb r0, [r4, 2] | r0 = *((r4 + 2));
0x000076a4 add.w ip, r4, 2 |
| if (r0 == 0) {
0x000076a8 cbz r0, 0x76fc | goto label_42;
| }
0x000076aa cmp r0, 0xd |
| if (r0 == 0xd) {
0x000076ac beq.w 0x7322 | goto label_30;
| }
0x000076b0 cmp r0, 0xa |
0x000076b2 str r4, [sp, 0x10] | var_10h = r4;
0x000076b4 mov r4, ip | r4 = ip;
| if (r0 == 0xa) {
0x000076b6 beq.w 0x7356 | goto label_31;
| }
0x000076ba b 0x7330 | goto label_32;
| label_84:
0x000076bc ldrb r0, [r4, 1]! | r0 = *((r4 += 1));
0x000076c0 adds r5, 1 | r5++;
0x000076c2 cmp r0, 0 |
| if (r0 == 0) {
0x000076c4 beq.w 0x710e | goto label_28;
| }
0x000076c8 cmp r0, 0xd |
| if (r0 == 0xd) {
0x000076ca beq.w 0x7438 | goto label_33;
| }
0x000076ce cmp r0, 0xa |
| if (r0 != 0xa) {
0x000076d0 bne.w 0x72de | goto label_8;
| }
| label_86:
0x000076d4 movs r3, 0 | r3 = 0;
0x000076d6 b 0x70ec | goto label_0;
| label_89:
0x000076d8 ldrb r2, [r4, 2] | r2 = *((r4 + 2));
0x000076da movs r3, 5 | r3 = 5;
0x000076dc cmp r2, 0xa |
| if (r2 != 0xa) {
0x000076de bne 0x7648 | goto label_34;
| }
0x000076e0 mov ip, fp |
0x000076e2 b 0x7442 | goto label_17;
| label_82:
0x000076e4 ldrd r0, r1, [sp, 0x14] | __asm ("ldrd r0, r1, [var_14h]");
0x000076e8 blx 0x2b34 | fcn_00002b34 ();
0x000076ec b 0x7482 | goto label_35;
| label_57:
0x000076ee ldrb r2, [r4, 4] | r2 = *((r4 + 4));
0x000076f0 movs r3, 5 | r3 = 5;
0x000076f2 cmp r2, 0xa |
| if (r2 == 0xa) {
0x000076f4 beq.w 0x7442 | goto label_17;
| }
0x000076f8 mov r4, ip | r4 = ip;
0x000076fa b 0x7244 | goto label_26;
| label_42:
0x000076fc ldr r0, [pc, 0x10c] |
0x000076fe add r0, pc | r0 = 0xef0e;
0x00007700 blx 0x2c04 | fcn_00002c04 ();
0x00007704 ldr r3, [pc, 0x108] |
0x00007706 mov r1, r0 | r1 = r0;
0x00007708 movs r2, 0x69 | r2 = 0x69;
0x0000770a add r0, sp, 0x18 | r0 += var_18h;
0x0000770c str r5, [sp] | *(sp) = r5;
0x0000770e add r3, pc | r3 = 0xef22;
0x00007710 blx 0x2bbc | fcn_00002bbc ();
0x00007714 b 0x71c0 | goto label_16;
| label_83:
0x00007716 ldrb r2, [r4, 2] | r2 = *((r4 + 2));
0x00007718 movs r3, 3 | r3 = 3;
0x0000771a cmp r2, 0xa |
| if (r2 == 0xa) {
0x0000771c beq.w 0x7442 | goto label_17;
| }
0x00007720 mov r4, ip | r4 = ip;
0x00007722 b 0x7188 | goto label_36;
| label_48:
0x00007724 ldr.w ip, [sp, 0xc] | ip = var_ch;
0x00007728 b 0x7442 | goto label_17;
| label_39:
0x0000772a mov r6, r0 | r6 = r0;
| label_43:
0x0000772c ldr r0, [pc, 0xe4] |
0x0000772e add r0, pc | r0 = 0xef46;
0x00007730 blx 0x2c04 | fcn_00002c04 ();
0x00007734 ldr r3, [pc, 0xe0] |
0x00007736 mov r1, r0 | r1 = r0;
0x00007738 movs r2, 0xc8 | r2 = 0xc8;
0x0000773a add r0, sp, 0x18 | r0 += var_18h;
0x0000773c add r3, pc | r3 = 0xef58;
0x0000773e blx 0x2bbc | fcn_00002bbc ();
0x00007742 ldr r3, [sp, 0x18] | r3 = var_18h;
0x00007744 cmp r3, 0 |
| if (r3 == 0) {
0x00007746 beq.w 0x7482 | goto label_35;
| }
0x0000774a cmp r6, 0 |
| if (r6 == 0) {
0x0000774c beq.w 0x7476 | goto label_37;
| }
0x00007750 mov r0, r6 | r0 = r6;
0x00007752 bl 0x6e50 | fcn_00006e50 (r0);
0x00007756 b 0x7476 | goto label_37;
| label_61:
0x00007758 ldr r0, [pc, 0xc0] |
0x0000775a add r0, pc | r0 = 0xef7a;
0x0000775c blx 0x2c04 | fcn_00002c04 ();
0x00007760 str r5, [sp, 4] | var_4h = r5;
0x00007762 mov r1, r0 | r1 = r0;
0x00007764 ldrb r3, [r4] | r3 = *(r4);
0x00007766 movs r2, 0x67 | r2 = 0x67;
0x00007768 add r0, sp, 0x18 | r0 += var_18h;
0x0000776a str r3, [sp] | *(sp) = r3;
0x0000776c ldr r3, [pc, 0xb0] |
0x0000776e add r3, pc | r3 = 0xef92;
0x00007770 blx 0x2bbc | fcn_00002bbc ();
0x00007774 b 0x71c0 | goto label_16;
| label_63:
0x00007776 mov r6, r0 | r6 = r0;
0x00007778 b 0x710e | goto label_28;
| label_62:
0x0000777a ldr r0, [pc, 0xa8] |
0x0000777c add r0, pc | r0 = 0xefa6;
0x0000777e blx 0x2c04 | fcn_00002c04 ();
0x00007782 ldr r3, [pc, 0xa4] |
0x00007784 mov r1, r0 | r1 = r0;
0x00007786 movs r2, 0x67 | r2 = 0x67;
0x00007788 add r0, sp, 0x18 | r0 += var_18h;
0x0000778a str r5, [sp] | *(sp) = r5;
0x0000778c add r3, pc | r3 = 0xefba;
0x0000778e blx 0x2bbc | fcn_00002bbc ();
0x00007790 ands.w r5, r6, r5, lsr 24 | r5 = r6 & (r5 >> 24);
0x00007792 b 0x71c0 | goto label_16;
| label_55:
0x00007794 ldr r0, [pc, 0x94] |
0x00007796 add r0, pc | r0 = 0xefc6;
0x00007798 blx 0x2c04 | fcn_00002c04 ();
0x0000779c str r5, [sp, 4] | var_4h = r5;
0x0000779e mov r1, r0 | r1 = r0;
0x000077a0 ldrb r3, [r4, 2] | r3 = *((r4 + 2));
0x000077a2 movs r2, 0x68 | r2 = 0x68;
0x000077a4 add r0, sp, 0x18 | r0 += var_18h;
0x000077a6 str r3, [sp] | *(sp) = r3;
0x000077a8 ldr r3, [pc, 0x84] |
0x000077aa add r3, pc | r3 = 0xefde;
0x000077ac blx 0x2bbc | fcn_00002bbc ();
0x000077b0 ldr r3, [sp, 0x18] | r3 = var_18h;
0x000077b2 cmp r3, 0 |
| if (r3 == 0) {
0x000077b4 beq.w 0x71c8 | goto label_13;
| }
0x000077b8 b 0x746a | goto label_38;
| label_53:
0x000077ba blx 0x2cec | fprintf_chk ()
| label_45:
0x000077be ldrb r0, [r4, 1] | r0 = *((r4 + 1));
0x000077c0 adds r4, 1 | r4++;
0x000077c2 cmp r0, 0 |
| if (r0 != 0) {
0x000077c4 bne.w 0x70e4 | goto label_10;
| }
0x000077c6 add r4, sp, 0x238 | r4 = sp + 0x238;
0x000077c8 b 0x7102 | goto label_11;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/bin/scheduled @ 0x7854 */
| #include <stdint.h>
|
; (fcn) fcn.00007854 () | void fcn_00007854 (int16_t arg_4h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_ch;
| int16_t var_14h;
| char * filename;
| int16_t var_1ch;
| int16_t var_20h;
| int16_t var_24h;
| char * var_28h;
| int16_t var_2ch;
| int16_t var_30h;
| int16_t var_34h;
| int16_t var_38h;
| int16_t var_3ch;
| int16_t var_44h;
| int16_t var_48h;
| int16_t var_4ch;
| int16_t var_50h;
| int16_t var_54h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x00007854 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00007858 sub sp, 0x5c |
0x0000785a str r2, [sp, 0x14] | var_14h = r2;
0x0000785c mov r7, r3 | r7 = r3;
0x0000785e mov r4, r0 | r4 = r0;
0x00007860 ldr.w r2, [pc, 0x600] |
0x00007864 ldr.w r3, [pc, 0x600] | r3 = *(0x7e68);
0x00007868 str r1, [sp, 0x20] | var_20h = r1;
0x0000786a add r2, pc | r2 = 0xf6d2;
0x0000786c ldr.w r5, [pc, 0x5fc] |
0x00007870 ldr r3, [r2, r3] |
0x00007872 add r5, pc | r5 = 0xf6e2;
0x00007874 ldr r3, [r3] | r3 = *(0xf6d2);
0x00007876 str r3, [sp, 0x54] | var_54h = r3;
0x00007878 mov.w r3, 0 | r3 = 0;
0x0000787a lsls r0, r0, 0xc | r0 <<= 0xc;
0x0000787c ldr.w r3, [pc, 0x5f0] |
0x00007880 add.w r0, r5, 0xc | r0 = r5 + 0xc;
0x00007884 add r3, pc | r3 = 0xf6f8;
0x00007886 str r3, [sp, 0x24] | var_24h = r3;
0x00007888 blx 0x2de4 | fcn_00002de4 ();
0x0000788c ldr r3, [r5, 0x14] | r3 = *(0xf6f6);
0x0000788e cmp r3, 0 |
| if (r3 == 0) {
0x00007890 beq.w 0x7bfa | goto label_16;
| }
0x00007892 strh r3, [r6, 0xc] | *((r6 + 0xc)) = r3;
| label_10:
0x00007894 ldr.w r5, [pc, 0x5dc] |
0x00007898 add r5, pc | r5 = 0xf710;
0x0000789a add.w r0, r5, 0xc | r0 = r5 + 0xc;
0x0000789e blx 0x2b10 | fcn_00002b10 ();
0x000078a2 ldr r2, [sp, 0x14] | r2 = var_14h;
0x000078a4 movs r3, 0 | r3 = 0;
0x000078a6 ldr.w sb, [r5, 0x14] | sb = *(0xf724);
0x000078aa str r3, [sp, 0x44] | var_44h = r3;
0x000078ac str r3, [r2] | *(r2) = r3;
0x000078ae cmp r4, 0 |
| if (r4 == 0) {
0x000078b0 beq.w 0x7d06 | goto label_17;
| }
0x000078b4 ldr.w sl, [pc, 0x5c0] |
0x000078b8 mov.w r8, 1 | r8 = 1;
0x000078ba lsrs r1, r0, 0x20 | r1 = r0 >> 0x20;
0x000078bc mov fp, r3 |
0x000078be str r3, [sp, 0x18] | filename = r3;
0x000078c0 str r7, [sp, 0x1c] | var_1ch = r7;
0x000078c2 add sl, pc | sl = 0xf73e;
| label_0:
0x000078c4 ldr r6, [r4] | r6 = *(r4);
0x000078c6 mov r1, sl | r1 = sl;
0x000078c8 ldr r0, [r6, 4] | r0 = *((r6 + 4));
0x000078ca blx 0x2c98 | r0 = schedule_get_iCal ();
0x000078ce mov r5, r0 | r5 = r0;
0x000078d0 cmp r0, 0 |
| if (r0 != 0) {
0x000078d2 bne 0x79d2 | goto label_3;
| }
0x000078d4 ldr r1, [r6, 4] | r1 = *((r6 + 4));
0x000078d6 mov r0, sb | r0 = sb;
0x000078d8 blx 0x2d9c | fcn_00002d9c ();
0x000078dc ldr r1, [r6, 8] | r1 = *((r6 + 8));
0x000078de mov r7, r0 | r7 = r0;
0x000078e0 mov r0, sb | r0 = sb;
0x000078e2 blx 0x2d9c | fcn_00002d9c ();
0x000078e6 cmp.w fp, 3 |
| if (fp > 3) {
0x000078ea bhi 0x79d2 | goto label_3;
| }
| /* switch table (4 cases) at 0x78f0 */
0x000078ec tbb [pc, fp] | __asm ("tbb [0x000078f4]");
0x000078f4 ldr.w r0, [pc, 0x584] |
0x000078f8 ldr r7, [sp, 0x1c] | r7 = var_1ch;
0x000078fa add r0, pc | r0 = 0xf77a;
0x000078fc blx 0x2c04 | fcn_00002c04 ();
0x00007900 ldr.w r3, [pc, 0x57c] |
0x00007904 mov r1, r0 | r1 = r0;
0x00007906 movs r2, 0xcf | r2 = 0xcf;
0x00007908 add r0, sp, 0x44 | r0 += var_44h;
0x0000790a add r3, pc | r3 = 0xf78e;
0x0000790c blx 0x2bbc | fcn_00002bbc ();
| label_1:
0x00007910 ldr r3, [sp, 0x44] | r3 = var_44h;
| if (r3 == 0) {
0x00007912 cbz r3, 0x7944 | goto label_9;
| }
0x00007914 ldr r3, [sp, 0x14] | r3 = var_14h;
0x00007916 ldr r6, [r3] | r6 = *(r3);
| if (r6 == 0) {
0x00007918 cbz r6, 0x7928 | goto label_18;
| }
0x0000791a mov r4, r6 | r4 = r6;
| do {
0x0000791c ldr r0, [r4] | r0 = *(r4);
0x0000791e blx 0x2864 | fcn_00002864 ();
0x00007922 ldr r4, [r4, 4] | r4 = *((r4 + 4));
0x00007924 cmp r4, 0 |
0x00007926 bne 0x791c |
| } while (r4 != 0);
| label_18:
0x00007928 mov r0, r6 | r0 = r6;
0x0000792a blx 0x28e0 | r0 = fcn_000028e0 ();
0x0000792e ldrd r2, r0, [sp, 0x14] | __asm ("ldrd r2, r0, [var_14h]");
0x00007932 movs r3, 0 | r3 = 0;
0x00007934 str r3, [r2] | *(r2) = r3;
0x00007936 blx 0x28e0 | fcn_000028e0 ();
| if (r7 != 0) {
0x0000793a cbz r7, 0x7944 |
0x0000793c ldr r3, [r7] | r3 = *(r7);
0x0000793e cmp r3, 0 |
| if (r3 == 0) {
0x00007940 beq.w 0x7bf0 | goto label_19;
| }
| }
| label_9:
0x00007944 ldr.w r2, [pc, 0x53c] |
0x00007948 ldr.w r3, [pc, 0x51c] | r3 = *(0x7e68);
0x0000794c add r2, pc | r2 = 0xf7d4;
0x0000794e ldr r3, [r2, r3] | r3 = *(0xf7d4);
0x00007950 ldr r2, [r3] | r2 = *(0xf7d4);
0x00007952 ldr r3, [sp, 0x54] | r3 = var_54h;
0x00007954 eors r2, r3 | r2 ^= r3;
0x00007956 mov.w r3, 0 | r3 = 0;
0x00007958 lsls r0, r0, 0xc | r0 <<= 0xc;
| if (r0 != r0) {
0x0000795a bne.w 0x7e2a | goto label_20;
| }
0x0000795e mov r0, r5 | r0 = r5;
0x00007960 add sp, 0x5c |
0x00007962 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
0x00007966 cmp r7, 2 |
| if (r7 == 2) {
0x00007968 beq 0x79ec | goto label_21;
| }
0x0000796a ldr r0, [sp, 0x18] | r0 = filename;
0x0000796c mov r1, r6 | r1 = r6;
0x0000796e blx 0x2c68 | remove (r0);
0x00007972 ldr r4, [r4, 4] | r4 = *((r4 + 4));
0x00007974 add.w r8, r8, 1 | r8++;
0x00007978 str r0, [sp, 0x18] | filename = r0;
0x0000797a cmp r4, 0 |
| if (r4 != 0) {
0x0000797c bne 0x78c4 | goto label_0;
| }
0x0000797e cmp.w fp, 3 |
0x00007982 ldr r7, [sp, 0x1c] | r7 = var_1ch;
0x00007984 it eq |
| if (fp == 3) {
0x00007986 moveq r5, 1 | r5 = 1;
| goto label_22;
| }
| if (fp == 3) {
| label_22:
0x00007988 beq 0x7910 | goto label_1;
| }
| label_2:
0x0000798a ldr.w r0, [pc, 0x4fc] |
0x0000798e movs r5, 0 | r5 = 0;
0x00007990 add r0, pc | r0 = 0xf81e;
0x00007992 blx 0x2c04 | fcn_00002c04 ();
0x00007996 ldr.w r3, [pc, 0x4f4] |
0x0000799a mov r1, r0 | r1 = r0;
0x0000799c movs r2, 0xce | r2 = 0xce;
0x0000799e add r0, sp, 0x44 | r0 += var_44h;
0x000079a0 add r3, pc | r3 = 0xf832;
0x000079a2 blx 0x2bbc | fcn_00002bbc ();
0x000079a6 b 0x7910 | goto label_1;
0x000079a8 subs r7, 1 | r7--;
0x000079aa cmp r7, 7 |
| if (r7 > 7) {
0x000079ac bhi.w 0x7b92 | goto label_23;
| }
| /* switch table (9 cases) at 0x79b4 */
0x000079b0 tbh [pc, r7, lsl 1] | __asm ("tbh [pc, r7, lsl 1]");
0x000079c4 cmp r7, 1 |
0x000079c6 it eq |
| if (r7 == 1) {
0x000079c8 cmpeq r0, 4 | __asm ("cmpeq r0, 4");
| }
| if (r7 != 1) {
0x000079ca bne.w 0x7d0e | goto label_24;
| }
0x000079ce mov.w fp, 1 |
| label_3:
0x000079d2 ldr r4, [r4, 4] | r4 = *((r4 + 4));
0x000079d4 add.w r8, r8, 1 | r8++;
0x000079d8 cmp r4, 0 |
| if (r4 != 0) {
0x000079da bne.w 0x78c4 | goto label_0;
| }
0x000079de cmp.w fp, 3 |
0x000079e2 ldr r7, [sp, 0x1c] | r7 = var_1ch;
0x000079e4 it eq |
| if (fp == 3) {
0x000079e6 moveq r5, 1 | r5 = 1;
| goto label_25;
| }
| if (fp == 3) {
| label_25:
0x000079e8 beq 0x7910 | goto label_1;
| }
0x000079ea b 0x798a | goto label_2;
| label_21:
0x000079ec cmp r0, 3 |
0x000079ee str r0, [sp, 0x28] | var_28h = r0;
| if (r0 != 3) {
0x000079f0 bne.w 0x7d28 | goto label_26;
| }
0x000079f4 ldr.w r6, [pc, 0x498] |
0x000079f8 movs r2, 0 | r2 = 0;
0x000079fa strd r2, r2, [sp, 0x48] | __asm ("strd r2, r2, [sp, 0x48]");
0x000079fe str r2, [sp, 0x50] | var_50h = r2;
0x00007a00 add r6, pc | r6 = 0xf894;
0x00007a02 add.w r0, r6, 0x18 | r0 = r6 + 0x18;
0x00007a06 blx 0x2de4 | fcn_00002de4 ();
0x00007a0a ldr r2, [r6, 0x20] | r2 = *(0xf8b4);
0x00007a0c ldr r3, [sp, 0x28] | r3 = var_28h;
0x00007a0e cmp r2, 0 |
| if (r2 == 0) {
0x00007a10 beq.w 0x7c7e | goto label_27;
| }
| label_11:
0x00007a14 ldr.w r6, [pc, 0x47c] |
0x00007a18 add r6, pc | r6 = 0xf8b0;
0x00007a1a add.w r0, r6, 0x18 | r0 = r6 + 0x18;
0x00007a1e blx 0x2b10 | fcn_00002b10 ();
0x00007a22 ldr.w fp, [r6, 0x20] | fp = *(0xf8d0);
0x00007a26 ldr r6, [sp, 0x18] | r6 = filename;
0x00007a28 cmp r6, 0 |
| if (r6 == 0) {
0x00007a2a beq.w 0x7d46 | goto label_28;
| }
0x00007a2e add r3, sp, 0x48 | r3 += var_48h;
0x00007a30 str r4, [sp, 0x38] | var_38h = r4;
0x00007a32 mov r4, r6 | r4 = r6;
0x00007a34 mov r6, r3 | r6 = r3;
0x00007a36 movs r7, 0 | r7 = 0;
0x00007a38 strd r3, r5, [sp, 0x30] | __asm ("strd r3, r5, [sp, 0x30]");
0x00007a3c strd r7, r7, [sp, 0x28] | __asm ("strd r7, r7, [sp, 0x28]");
| do {
| label_6:
0x00007a40 ldr r5, [r4] | r5 = *(r4);
0x00007a42 mov r0, fp | r0 = fp;
0x00007a44 ldr r1, [r5, 4] | r1 = *((r5 + 4));
0x00007a46 blx 0x2d9c | fcn_00002d9c ();
0x00007a4a subs r0, 1 | r0--;
0x00007a4c cmp r0, 8 |
| if (r0 > 8) {
0x00007a4e bhi.w 0x7e3c | goto label_29;
| }
| /* switch table (9 cases) at 0x7a56 */
0x00007a52 tbb [pc, r0] | __asm ("tbb [0x00007a58]");
0x00007a60 ldr r3, [r5] | r3 = *(r5);
0x00007a62 str r3, [sp, 0x2c] | var_2ch = r3;
| label_4:
0x00007a64 ldr r4, [r4, 4] | r4 = *((r4 + 4));
0x00007a66 cmp r4, 0 |
0x00007a68 bne 0x7a40 |
| } while (r4 != 0);
| label_7:
0x00007a6a ldrd r5, r4, [sp, 0x34] | __asm ("ldrd r5, r4, [var_34h]");
0x00007a6e str r7, [sp, 0x3c] | var_3ch = r7;
0x00007a70 cmp r7, 0 |
| if (r7 == 0) {
0x00007a72 beq.w 0x7e2e | goto label_30;
| }
0x00007a76 ldr r1, [sp, 0x28] | r1 = var_28h;
0x00007a78 cmp r1, 0 |
| if (r1 == 0) {
0x00007a7a beq.w 0x7d0a | goto label_31;
| }
0x00007a7e ldr r0, [sp, 0x3c] | r0 = var_3ch;
0x00007a80 blx 0x2e14 | r0 = fcn_00002e14 ();
0x00007a84 subs r6, r0, 0 | r6 = r0 - 0;
| if (r6 < r0) {
0x00007a86 blt.w 0x7e0c | goto label_32;
| }
| label_12:
0x00007a8a ldr r3, [sp, 0x2c] | r3 = var_2ch;
| if (r3 != 0) {
0x00007a8c cbz r3, 0x7aa2 |
0x00007a8e mov r0, r3 | r0 = r3;
0x00007a90 ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x00007a92 ldr r2, [sp, 0x30] | r2 = var_30h;
0x00007a94 ldr r1, [r3, 8] | r1 = *((r3 + 8));
0x00007a96 bl 0x877c | fcn_0000877c (r0, r1, r2);
0x00007a9a str r0, [sp, 0x2c] | var_2ch = r0;
0x00007a9c cmp r0, 0 |
| if (r0 == 0) {
0x00007a9e beq.w 0x7e06 | goto label_33;
| }
| }
0x00007aa2 ldr r3, [sp, 0x30] | r3 = var_30h;
0x00007aa4 movs r0, 0 | r0 = 0;
0x00007aa6 ldr r7, [sp, 0x3c] | r7 = var_3ch;
0x00007aa8 str r6, [sp] | *(sp) = r6;
0x00007aaa str r3, [sp, 0xc] | var_ch = r3;
0x00007aac ldr r3, [sp, 0x50] | r3 = var_50h;
0x00007aae mov r1, r7 | r1 = r7;
0x00007ab0 str r3, [sp, 8] | var_8h = r3;
0x00007ab2 ldr r3, [sp, 0x4c] | r3 = var_4ch;
0x00007ab4 str r3, [sp, 4] | var_4h = r3;
0x00007ab6 ldrd fp, r3, [sp, 0x28] | __asm ("ldrd fp, r3, [var_28h]");
0x00007aba mov r2, fp | r2 = fp;
0x00007abc bl 0x6a40 | r0 = fcn_00006a40 (r0, r1, r2, r3, r4, r5, r6);
0x00007ac0 mov r6, r0 | r6 = r0;
0x00007ac2 mov r0, r7 | r0 = r7;
0x00007ac4 blx 0x2d38 | fcn_00002d38 ();
0x00007ac8 mov r0, fp | r0 = fp;
0x00007aca blx 0x2d38 | fcn_00002d38 ();
0x00007ace ldr r0, [sp, 0x2c] | r0 = var_2ch;
| if (r0 != 0) {
0x00007ad0 cbz r0, 0x7ad6 |
0x00007ad2 blx 0x2864 | fcn_00002864 ();
| }
0x00007ad6 ldr r3, [sp, 0x48] | r3 = var_48h;
| if (r3 != 0) {
0x00007ad8 cbz r3, 0x7aee |
| label_5:
0x00007ada ldr r0, [sp, 0x4c] | r0 = var_4ch;
0x00007adc bl 0x6880 | fcn_00006880 (r0);
0x00007ade mrc2 p8, 6, sb, c0, c4, 0 | __asm ("mrc2 p8, 6, sb, c0, c4, 0");
0x00007ae2 bl 0x6880 | fcn_00006880 (r0);
0x00007ae6 ldr r3, [sp, 0x44] | r3 = var_44h;
0x00007ae8 cmp r3, 0 |
| if (r3 == 0) {
0x00007aea beq.w 0x7e32 | goto label_34;
| }
| }
| label_15:
0x00007aee cmp r6, 0 |
| if (r6 == 0) {
0x00007af0 beq.w 0x7da2 | goto label_35;
| }
0x00007af4 ldr r5, [sp, 0x14] | r5 = var_14h;
0x00007af6 mov r1, r6 | r1 = r6;
0x00007af8 mov.w fp, 1 |
0x00007afc ldr r0, [r5] | r0 = *(r5);
0x00007afe blx 0x2c68 | remove (r0);
0x00007b02 ldr r2, [sp, 0x20] | r2 = var_20h;
0x00007b04 str r0, [r5] | *(r5) = r0;
0x00007b06 ldr r0, [sp, 0x18] | r0 = filename;
0x00007b08 ldr r3, [r2] | r3 = *(r2);
0x00007b0a adds r3, 1 | r3++;
0x00007b0c str r3, [r2] | *(r2) = r3;
0x00007b0e blx 0x28e0 | fcn_000028e0 ();
0x00007b12 movs r3, 0 | r3 = 0;
0x00007b14 str r3, [sp, 0x18] | filename = r3;
0x00007b16 b 0x79d2 | goto label_3;
0x00007b18 mov r1, r5 | r1 = r5;
0x00007b1a mov r2, r6 | r2 = r6;
0x00007b1c add r0, sp, 0x50 | r0 += var_50h;
0x00007b1e bl 0x6c34 | r0 = fcn_00006c34 (r0, r1, r2);
0x00007b22 cmp r0, 0 |
| if (r0 != 0) {
0x00007b24 bne 0x7a64 | goto label_4;
| }
| do {
| label_8:
0x00007b26 str r7, [sp, 0x3c] | var_3ch = r7;
0x00007b28 ldr r0, [sp, 0x3c] | r0 = var_3ch;
0x00007b2a ldrd r5, r4, [sp, 0x34] | __asm ("ldrd r5, r4, [var_34h]");
0x00007b2e blx 0x2d38 | fcn_00002d38 ();
0x00007b32 ldr r0, [sp, 0x28] | r0 = var_28h;
0x00007b34 blx 0x2d38 | fcn_00002d38 ();
0x00007b38 ldr r3, [sp, 0x48] | r3 = var_48h;
0x00007b3a cmp r3, 0 |
| if (r3 == 0) {
0x00007b3c beq.w 0x7da2 | goto label_35;
| }
0x00007b40 movs r6, 0 | r6 = 0;
0x00007b42 b 0x7ada | goto label_5;
0x00007b44 mov r1, r5 | r1 = r5;
0x00007b46 mov r2, r6 | r2 = r6;
0x00007b48 add r0, sp, 0x4c | r0 += var_4ch;
0x00007b4a bl 0x6c34 | r0 = fcn_00006c34 (r0, r1, r2);
0x00007b4e cmp r0, 0 |
0x00007b50 beq 0x7b26 |
| } while (r0 == 0);
0x00007b52 ldr r4, [r4, 4] | r4 = *((r4 + 4));
0x00007b54 cmp r4, 0 |
| if (r4 != 0) {
0x00007b56 bne.w 0x7a40 | goto label_6;
| }
0x00007b5a b 0x7a6a | goto label_7;
0x00007b5c mov r0, r5 | r0 = r5;
0x00007b5e mov r1, r6 | r1 = r6;
0x00007b60 bl 0x6eb0 | fcn_00006eb0 (r0, r1);
0x00007b64 str r0, [sp, 0x28] | var_28h = r0;
0x00007b66 cmp r0, 0 |
| if (r0 == 0) {
0x00007b68 beq 0x7b26 | goto label_8;
| }
0x00007b6a ldr r4, [r4, 4] | r4 = *((r4 + 4));
0x00007b6c cmp r4, 0 |
| if (r4 != 0) {
0x00007b6e bne.w 0x7a40 | goto label_6;
| }
0x00007b72 b 0x7a6a | goto label_7;
0x00007b74 cmp r7, 0 |
| if (r7 != 0) {
0x00007b76 bne.w 0x7da8 | goto label_36;
| }
0x00007b7a mov r0, r5 | r0 = r5;
0x00007b7c mov r1, r6 | r1 = r6;
0x00007b7e bl 0x6eb0 | r0 = fcn_00006eb0 (r0, r1);
0x00007b82 mov r7, r0 | r7 = r0;
0x00007b84 cmp r0, 0 |
| if (r0 == 0) {
0x00007b86 beq 0x7b26 | goto label_8;
| }
0x00007b88 ldr r4, [r4, 4] | r4 = *((r4 + 4));
0x00007b8a cmp r4, 0 |
| if (r4 != 0) {
0x00007b8c bne.w 0x7a40 | goto label_6;
| }
0x00007b90 b 0x7a6a | goto label_7;
| label_23:
0x00007b92 ldr r0, [pc, 0x304] |
0x00007b94 ldr r7, [sp, 0x1c] | r7 = var_1ch;
0x00007b96 add r0, pc | r0 = 0xfa34;
0x00007b98 blx 0x2c04 | fcn_00002c04 ();
0x00007b9c ldr r3, [r6, 4] | r3 = *((r6 + 4));
0x00007b9e mov r1, r0 | r1 = r0;
0x00007ba0 movs r2, 0xcc | r2 = 0xcc;
0x00007ba2 add r0, sp, 0x44 | r0 += var_44h;
0x00007ba4 str r3, [sp] | *(sp) = r3;
0x00007ba6 ldr r3, [pc, 0x2f4] |
0x00007ba8 add r3, pc | r3 = 0xfa4a;
0x00007baa blx 0x2bbc | fcn_00002bbc ();
0x00007bae b 0x7910 | goto label_1;
0x00007bb0 cmp r0, 3 |
| if (r0 != 3) {
0x00007bb2 bne.w 0x7dca | goto label_37;
| }
0x00007bb6 movs r3, 0 | r3 = 0;
0x00007bb8 mov.w fp, 2 |
0x00007bbc str r3, [sp, 0x18] | filename = r3;
0x00007bbe b 0x79d2 | goto label_3;
0x00007bc0 cmp r0, 4 |
| if (r0 != 4) {
0x00007bc2 bne.w 0x7de8 | goto label_38;
| }
0x00007bc6 mov.w fp, 3 |
0x00007bca b 0x79d2 | goto label_3;
0x00007bcc cmp r0, 9 |
| if (r0 == 9) {
0x00007bce beq.w 0x79d2 | goto label_3;
| }
0x00007bd2 ldr r0, [pc, 0x2cc] |
0x00007bd4 ldr r7, [sp, 0x1c] | r7 = var_1ch;
0x00007bd6 add r0, pc | r0 = 0xfa7c;
0x00007bd8 blx 0x2c04 | fcn_00002c04 ();
0x00007bdc ldr r3, [r6, 8] | r3 = *((r6 + 8));
0x00007bde mov r1, r0 | r1 = r0;
0x00007be0 movs r2, 0xcc | r2 = 0xcc;
0x00007be2 add r0, sp, 0x44 | r0 += var_44h;
0x00007be4 str r3, [sp] | *(sp) = r3;
0x00007be6 ldr r3, [pc, 0x2bc] |
0x00007be8 add r3, pc | r3 = 0xfa92;
0x00007bea blx 0x2bbc | fcn_00002bbc ();
0x00007bee b 0x7910 | goto label_1;
| label_19:
0x00007bf0 ldr r1, [sp, 0x44] | r1 = var_44h;
0x00007bf2 mov r0, r7 | r0 = r7;
0x00007bf4 blx 0x2b34 | fcn_00002b34 ();
0x00007bf8 b 0x7944 | goto label_9;
| label_16:
0x00007bfa ldr r2, [sp, 0x24] | r2 = var_24h;
0x00007bfc ldr r3, [pc, 0x2a8] | r3 = *(0x7ea8);
0x00007bfe ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x00007c00 str r3, [sp, 0x18] | filename = r3;
0x00007c02 mov r1, r3 | r1 = r3;
0x00007c04 ldr r3, [pc, 0x2a4] | r3 = *(0x7eac);
0x00007c06 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x00007c08 mov r0, r3 | r0 = r3;
0x00007c0a str r3, [sp, 0x18] | filename = r3;
0x00007c0c blx 0x2aa0 | g_hash_table_iter_init ();
0x00007c10 ldr r1, [pc, 0x29c] |
0x00007c12 movs r2, 1 | r2 = 1;
0x00007c14 str r0, [r5, 0x14] | *((r5 + 0x14)) = r0;
0x00007c16 add r1, pc | r1 = 0xfaca;
0x00007c18 blx 0x28d0 | fcn_000028d0 ();
0x00007c1c ldr r1, [pc, 0x294] |
0x00007c1e movs r2, 2 | r2 = 2;
0x00007c20 ldr r0, [r5, 0x14] | r0 = *((r5 + 0x14));
0x00007c22 add r1, pc | r1 = 0xfada;
0x00007c24 blx 0x28d0 | fcn_000028d0 ();
0x00007c28 ldr r1, [pc, 0x28c] |
0x00007c2a movs r2, 3 | r2 = 3;
0x00007c2c ldr r0, [r5, 0x14] | r0 = *((r5 + 0x14));
0x00007c2e add r1, pc | r1 = 0xfaea;
0x00007c30 blx 0x28d0 | fcn_000028d0 ();
0x00007c34 ldr r1, [pc, 0x284] |
0x00007c36 movs r2, 4 | r2 = 4;
0x00007c38 ldr r0, [r5, 0x14] | r0 = *((r5 + 0x14));
0x00007c3a add r1, pc |
0x00007c3c blx 0x28d0 | fcn_000028d0 ();
0x00007c3e mcr p9, 2, r4, c8, c15, 4 | __asm ("mcr p9, 2, r4, c8, c15, 4");
0x00007c42 movs r2, 5 | r2 = 5;
0x00007c44 ldr r0, [r5, 0x14] | r0 = *((r5 + 0x14));
0x00007c46 add r1, pc | r1 = 0x17744;
0x00007c48 blx 0x28d0 | fcn_000028d0 ();
0x00007c4c ldr r1, [pc, 0x274] |
0x00007c4e movs r2, 6 | r2 = 6;
0x00007c50 ldr r0, [r5, 0x14] | r0 = *((r5 + 0x14));
0x00007c52 add r1, pc | r1 = 0xfb1a;
0x00007c54 blx 0x28d0 | fcn_000028d0 ();
0x00007c58 ldr r1, [pc, 0x26c] |
0x00007c5a movs r2, 7 | r2 = 7;
0x00007c5c ldr r0, [r5, 0x14] | r0 = *((r5 + 0x14));
0x00007c5e add r1, pc | r1 = 0xfb2a;
0x00007c60 blx 0x28d0 | fcn_000028d0 ();
0x00007c64 ldr r1, [pc, 0x264] |
0x00007c66 movs r2, 8 | r2 = 8;
0x00007c68 ldr r0, [r5, 0x14] | r0 = *((r5 + 0x14));
0x00007c6a add r1, pc | r1 = 0xfb3a;
0x00007c6c blx 0x28d0 | fcn_000028d0 ();
0x00007c70 ldr r1, [pc, 0x25c] |
0x00007c72 movs r2, 9 | r2 = 9;
0x00007c74 ldr r0, [r5, 0x14] | r0 = *((r5 + 0x14));
0x00007c76 add r1, pc | r1 = 0xfb4a;
0x00007c78 blx 0x28d0 | fcn_000028d0 ();
0x00007c7c b 0x7894 | goto label_10;
| label_27:
0x00007c7e str r3, [sp, 0x2c] | var_2ch = r3;
0x00007c80 ldr r2, [pc, 0x224] | r2 = *(0x7ea8);
0x00007c82 ldr r3, [sp, 0x24] | r3 = var_24h;
0x00007c84 ldr r2, [r3, r2] | r2 = *((r3 + r2));
0x00007c86 str r2, [sp, 0x28] | var_28h = r2;
0x00007c88 mov r1, r2 | r1 = r2;
0x00007c8a ldr r2, [pc, 0x220] | r2 = *(0x7eae);
0x00007c8c ldr r3, [r3, r2] | r3 = *((r3 + r2));
0x00007c8e mov r0, r3 | r0 = r3;
0x00007c90 str r3, [sp, 0x28] | var_28h = r3;
0x00007c92 blx 0x2aa0 | g_hash_table_iter_init ();
0x00007c96 ldr r1, [pc, 0x23c] |
0x00007c98 movs r2, 1 | r2 = 1;
0x00007c9a str r0, [r6, 0x20] | *((r6 + 0x20)) = r0;
0x00007c9c add r1, pc | r1 = 0xfb76;
0x00007c9e blx 0x28d0 | fcn_000028d0 ();
0x00007ca2 ldr r1, [pc, 0x234] |
0x00007ca4 mov r2, r7 | r2 = r7;
0x00007ca6 ldr r0, [r6, 0x20] | r0 = *((r6 + 0x20));
0x00007ca8 add r1, pc | r1 = 0xfb86;
0x00007caa blx 0x28d0 | fcn_000028d0 ();
0x00007cae ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x00007cb0 ldr r1, [pc, 0x228] |
0x00007cb2 ldr r0, [r6, 0x20] | r0 = *((r6 + 0x20));
0x00007cb4 mov r2, r3 | r2 = r3;
0x00007cb6 add r1, pc | r1 = 0xfb96;
0x00007cb8 blx 0x28d0 | fcn_000028d0 ();
0x00007cbc ldr r1, [pc, 0x220] |
0x00007cbe movs r2, 4 | r2 = 4;
0x00007cc0 ldr r0, [r6, 0x20] | r0 = *((r6 + 0x20));
0x00007cc2 add r1, pc | r1 = 0xfba6;
0x00007cc4 blx 0x28d0 | fcn_000028d0 ();
0x00007cc8 ldr r1, [pc, 0x218] |
0x00007cca movs r2, 5 | r2 = 5;
0x00007ccc ldr r0, [r6, 0x20] | r0 = *((r6 + 0x20));
0x00007cce add r1, pc | r1 = 0xfbb6;
0x00007cd0 blx 0x28d0 | fcn_000028d0 ();
0x00007cd4 ldr r1, [pc, 0x210] |
0x00007cd6 movs r2, 6 | r2 = 6;
0x00007cd8 ldr r0, [r6, 0x20] | r0 = *((r6 + 0x20));
0x00007cda add r1, pc | r1 = 0xfbc6;
0x00007cdc blx 0x28d0 | fcn_000028d0 ();
0x00007ce0 ldr r1, [pc, 0x208] |
0x00007ce2 movs r2, 7 | r2 = 7;
0x00007ce4 ldr r0, [r6, 0x20] | r0 = *((r6 + 0x20));
0x00007ce6 add r1, pc | r1 = 0xfbd6;
0x00007ce8 blx 0x28d0 | fcn_000028d0 ();
0x00007cec ldr r1, [pc, 0x200] |
0x00007cee movs r2, 8 | r2 = 8;
0x00007cf0 ldr r0, [r6, 0x20] | r0 = *((r6 + 0x20));
0x00007cf2 add r1, pc | r1 = 0xfbe6;
0x00007cf4 blx 0x28d0 | fcn_000028d0 ();
0x00007cf8 ldr r1, [pc, 0x1f8] |
0x00007cfa movs r2, 9 | r2 = 9;
0x00007cfc ldr r0, [r6, 0x20] | r0 = *((r6 + 0x20));
0x00007cfe add r1, pc | r1 = 0xfbf6;
0x00007d00 blx 0x28d0 | fcn_000028d0 ();
0x00007d04 b 0x7a14 | goto label_11;
| label_17:
0x00007d06 str r4, [sp, 0x18] | filename = r4;
0x00007d08 b 0x798a | goto label_2;
| label_31:
0x00007d0a ldr r6, [sp, 0x28] | r6 = var_28h;
0x00007d0c b 0x7a8a | goto label_12;
| label_24:
0x00007d0e ldr r0, [pc, 0x1e8] |
0x00007d10 ldr r7, [sp, 0x1c] | r7 = var_1ch;
0x00007d12 add r0, pc | r0 = 0xfc10;
0x00007d14 blx 0x2c04 | fcn_00002c04 ();
0x00007d16 invalid |
0x00007d1a mov r1, r0 | r1 = r0;
0x00007d1c movs r2, 0xc9 | r2 = 0xc9;
0x00007d1e add r0, sp, 0x44 | r0 += var_44h;
0x00007d20 add r3, pc | r3 += pc;
0x00007d22 blx 0x2bbc | fcn_00002bbc ();
0x00007d26 b 0x7910 | goto label_1;
| label_26:
0x00007d28 ldr r0, [pc, 0x1d4] |
0x00007d2a ldr r7, [sp, 0x1c] | r7 = var_1ch;
0x00007d2c add r0, pc | r0 = 0xfc30;
0x00007d2e blx 0x2c04 | fcn_00002c04 ();
0x00007d32 ldr r3, [r6, 8] | r3 = *((r6 + 8));
0x00007d34 mov r1, r0 | r1 = r0;
0x00007d36 movs r2, 0xcd | r2 = 0xcd;
0x00007d38 add r0, sp, 0x44 | r0 += var_44h;
0x00007d3a str r3, [sp] | *(sp) = r3;
0x00007d3c ldr r3, [pc, 0x1c4] |
0x00007d3e add r3, pc | r3 = 0xfc46;
0x00007d40 blx 0x2bbc | fcn_00002bbc ();
0x00007d44 b 0x7910 | goto label_1;
| label_28:
0x00007d46 ldrd r3, r7, [sp, 0x18] | __asm ("ldrd r3, r7, [filename]");
0x00007d4a str r3, [sp, 0x28] | var_28h = r3;
0x00007d4c add r3, sp, 0x48 | r3 += var_48h;
0x00007d4e str r3, [sp, 0x30] | var_30h = r3;
| label_14:
0x00007d50 ldr r0, [pc, 0x1b4] |
0x00007d52 add r0, pc | r0 = 0xfc5e;
0x00007d54 blx 0x2c04 | fcn_00002c04 ();
0x00007d58 ldr r3, [pc, 0x1b0] |
0x00007d5a mov r1, r0 | r1 = r0;
0x00007d5c mov.w r2, 0x12c | r2 = 0x12c;
0x00007d60 ldr r0, [sp, 0x30] | r0 = var_30h;
0x00007d62 add r3, pc | r3 = 0xfc72;
0x00007d64 blx 0x2bbc | fcn_00002bbc ();
0x00007d68 movs r0, 0 | r0 = 0;
| label_13:
0x00007d6a blx 0x2d38 | fcn_00002d38 ();
0x00007d6e ldr r0, [sp, 0x28] | r0 = var_28h;
0x00007d70 blx 0x2d38 | fcn_00002d38 ();
0x00007d74 ldr r3, [sp, 0x48] | r3 = var_48h;
| if (r3 == 0) {
0x00007d76 cbz r3, 0x7da4 | goto label_39;
| }
0x00007d78 ldr r0, [sp, 0x4c] | r0 = var_4ch;
0x00007d7a bl 0x6880 | fcn_00006880 (r0);
0x00007d7e ldr r0, [sp, 0x50] | r0 = var_50h;
0x00007d80 bl 0x6880 | fcn_00006880 (r0);
0x00007d84 ldr r1, [sp, 0x44] | r1 = var_44h;
| if (r1 != 0) {
0x00007d86 cbnz r1, 0x7d92 | goto label_40;
| }
0x00007d88 ldr r1, [sp, 0x48] | r1 = var_48h;
0x00007d8a add r0, sp, 0x44 | r0 += var_44h;
0x00007d8c blx 0x2b34 | fcn_00002b34 ();
0x00007d90 ldr r1, [sp, 0x44] | r1 = var_44h;
| do {
| label_40:
0x00007d92 ldr r2, [pc, 0x17c] |
0x00007d94 add.w r3, r8, -1 | r3 = r8 + -1;
0x00007d98 mov r0, r7 | r0 = r7;
0x00007d9a add r2, pc | r2 = 0xfcb0;
0x00007d9c blx 0x2a30 | fcn_00002a30 ();
0x00007da0 b 0x7910 | goto label_1;
| label_35:
0x00007da2 ldr r7, [sp, 0x1c] | r7 = var_1ch;
| label_39:
0x00007da4 ldr r1, [sp, 0x44] | r1 = var_44h;
0x00007da6 b 0x7d92 |
| } while (1);
| label_36:
0x00007da8 ldr r0, [pc, 0x168] |
0x00007daa mov r4, r7 | r4 = r7;
0x00007dac ldr r5, [sp, 0x34] | r5 = var_34h;
0x00007dae ldr r7, [sp, 0x1c] | r7 = var_1ch;
0x00007db0 add r0, pc | r0 = 0xfcc8;
0x00007db2 blx 0x2c04 | fcn_00002c04 ();
0x00007db6 ldr r3, [pc, 0x160] |
0x00007db8 mov r1, r0 | r1 = r0;
0x00007dba movw r2, 0x12d | r2 = 0x12d;
0x00007dbe ldr r0, [sp, 0x30] | r0 = var_30h;
0x00007dc0 add r3, pc | r3 = 0xfcde;
0x00007dc2 blx 0x2bbc | fcn_00002bbc ();
0x00007dc6 mov r0, r4 | r0 = r4;
0x00007dc8 b 0x7d6a | goto label_13;
| label_37:
0x00007dca ldr r0, [pc, 0x150] |
0x00007dcc ldr r7, [sp, 0x1c] | r7 = var_1ch;
0x00007dce add r0, pc | r0 = 0xfcf0;
0x00007dd0 blx 0x2c04 | fcn_00002c04 ();
0x00007dd4 ldr r3, [r6, 8] | r3 = *((r6 + 8));
0x00007dd6 mov r1, r0 | r1 = r0;
0x00007dd8 movs r2, 0xca | r2 = 0xca;
0x00007dda add r0, sp, 0x44 | r0 += var_44h;
0x00007ddc str r3, [sp] | *(sp) = r3;
0x00007dde ldr r3, [pc, 0x140] |
0x00007de0 add r3, pc | r3 = 0xfd06;
0x00007de2 blx 0x2bbc | fcn_00002bbc ();
0x00007de6 b 0x7910 | goto label_1;
| label_38:
0x00007de8 ldr r0, [pc, 0x138] |
0x00007dea ldr r7, [sp, 0x1c] | r7 = var_1ch;
0x00007dec add r0, pc | r0 = 0xfd14;
0x00007dee blx 0x2c04 | fcn_00002c04 ();
0x00007df2 ldr r3, [r6, 8] | r3 = *((r6 + 8));
0x00007df4 mov r1, r0 | r1 = r0;
0x00007df6 movs r2, 0xcb | r2 = 0xcb;
0x00007df8 add r0, sp, 0x44 | r0 += var_44h;
0x00007dfa str r3, [sp] | *(sp) = r3;
0x00007dfc ldr r3, [pc, 0x128] |
0x00007dfe add r3, pc | r3 = 0xfd2a;
0x00007e00 blx 0x2bbc | fcn_00002bbc ();
0x00007e04 b 0x7910 | goto label_1;
| label_33:
0x00007e06 ldr r7, [sp, 0x1c] | r7 = var_1ch;
0x00007e08 ldr r0, [sp, 0x3c] | r0 = var_3ch;
0x00007e0a b 0x7d6a | goto label_13;
| label_32:
0x00007e0c ldr r0, [pc, 0x11c] |
0x00007e0e ldr r7, [sp, 0x1c] | r7 = var_1ch;
0x00007e10 add r0, pc | r0 = 0xfd40;
0x00007e12 blx 0x2c04 | fcn_00002c04 ();
0x00007e16 ldr r3, [pc, 0x118] |
0x00007e18 mov r1, r0 | r1 = r0;
0x00007e1a movw r2, 0x12f | r2 = 0x12f;
0x00007e1e ldr r0, [sp, 0x30] | r0 = var_30h;
0x00007e20 add r3, pc | r3 = 0xfd56;
0x00007e22 blx 0x2bbc | fcn_00002bbc ();
0x00007e26 ldr r0, [sp, 0x3c] | r0 = var_3ch;
0x00007e28 b 0x7d6a | goto label_13;
| label_20:
0x00007e2a blx 0x2cec | fprintf_chk ()
| label_30:
0x00007e2e ldr r7, [sp, 0x1c] | r7 = var_1ch;
0x00007e30 b 0x7d50 | goto label_14;
| label_34:
0x00007e32 ldr r1, [sp, 0x48] | r1 = var_48h;
0x00007e34 add r0, sp, 0x44 | r0 += var_44h;
0x00007e36 blx 0x2b34 | fcn_00002b34 ();
0x00007e3a b 0x7aee | goto label_15;
| label_29:
0x00007e3c ldr r0, [pc, 0xf4] |
0x00007e3e mov fp, r5 |
0x00007e40 mov r4, r7 | r4 = r7;
0x00007e42 ldr r5, [sp, 0x34] | r5 = var_34h;
0x00007e44 ldr r7, [sp, 0x1c] | r7 = var_1ch;
0x00007e46 add r0, pc | r0 = 0xfd7e;
0x00007e48 blx 0x2c04 | fcn_00002c04 ();
0x00007e4c ldr.w r3, [fp, 4] | r3 = *(arg_4h);
0x00007e50 mov r1, r0 | r1 = r0;
0x00007e52 movs r2, 0xd0 | r2 = 0xd0;
0x00007e54 ldr r0, [sp, 0x30] | r0 = var_30h;
0x00007e56 str r3, [sp] | *(sp) = r3;
0x00007e58 ldr r3, [pc, 0xdc] |
0x00007e5a add r3, pc | r3 = 0xfd96;
0x00007e5c blx 0x2bbc | fcn_00002bbc ();
0x00007e60 mov r0, r4 | r0 = r4;
0x00007e62 b 0x7d6a | goto label_13;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/bin/scheduled @ 0x7f3c */
| #include <stdint.h>
|
; (fcn) fcn.00007f3c () | void fcn_00007f3c (int16_t arg2) {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_ch;
| r1 = arg2;
0x00007f3c ldr r2, [pc, 0x9c] |
0x00007f3e ldr r3, [pc, 0xa0] | r3 = *(0x7fe2);
0x00007f40 push {r4, r5, r6, r7, lr} |
0x00007f42 sub sp, 0x14 |
0x00007f44 add r2, pc | r2 = 0xff24;
0x00007f46 add r5, sp, 8 | r5 += var_8h;
0x00007f48 movs r4, 0 | r4 = 0;
0x00007f4a mov r7, r1 | r7 = r1;
0x00007f4c ldr r3, [r2, r3] |
0x00007f4e mov r1, r5 | r1 = r5;
0x00007f50 ldr r3, [r3] | r3 = *(0xff24);
0x00007f52 str r3, [sp, 0xc] | var_ch = r3;
0x00007f54 mov.w r3, 0 | r3 = 0;
0x00007f58 strd r4, r4, [sp] | __asm ("strd r4, r4, [sp]");
0x00007f5c str r4, [sp, 8] | var_8h = r4;
0x00007f5e bl 0x70a4 | fcn_000070a4 (r0, r1, r2);
0x00007f62 ldr r1, [sp, 8] | r1 = var_8h;
0x00007f64 mov r6, r0 | r6 = r0;
| if (r1 == 0) {
0x00007f66 cbz r1, 0x7fa6 | goto label_2;
| }
0x00007f68 mov r0, r7 | r0 = r7;
0x00007f6a mov r5, r4 | r5 = r4;
0x00007f6c mov r7, r4 | r7 = r4;
0x00007f6e blx 0x2b34 | fcn_00002b34 ();
| do {
| label_0:
0x00007f72 mov r0, r7 | r0 = r7;
0x00007f74 blx 0x28e0 | fcn_000028e0 ();
| if (r6 != 0) {
0x00007f78 cbz r6, 0x7f8c |
0x00007f7a ldr r1, [pc, 0x68] |
0x00007f7c mov r0, r6 | r0 = r6;
0x00007f7e movs r2, 0 | r2 = 0;
0x00007f80 add r1, pc | r1 = 0xff6a;
0x00007f82 blx 0x28c4 | fcn_000028c4 ();
0x00007f86 mov r0, r6 | r0 = r6;
0x00007f88 blx 0x28e0 | fcn_000028e0 ();
| }
0x00007f8c ldr r2, [pc, 0x58] |
0x00007f8e ldr r3, [pc, 0x50] | r3 = *(0x7fe2);
0x00007f90 add r2, pc | r2 = 0xff7c;
0x00007f92 ldr r3, [r2, r3] | r3 = *(0xff7c);
0x00007f94 ldr r2, [r3] | r2 = *(0xff7c);
0x00007f96 ldr r3, [sp, 0xc] | r3 = var_ch;
0x00007f98 eors r2, r3 | r2 ^= r3;
0x00007f9a mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00007f9e bne 0x7fd6 | goto label_3;
| }
0x00007fa0 mov r0, r5 | r0 = r5;
0x00007fa2 add sp, 0x14 |
0x00007fa4 pop {r4, r5, r6, r7, pc} |
| label_2:
0x00007fa6 mov r3, r5 | r3 = r5;
0x00007fa8 add r1, sp, 4 | r1 += var_4h;
0x00007faa mov r2, sp | r2 = sp;
0x00007fac bl 0x7854 | fcn_00007854 (r0, r1, r2, r3, r4);
0x00007fb0 ldr r1, [sp, 8] | r1 = var_8h;
0x00007fb2 mov r5, r0 | r5 = r0;
| if (r1 != 0) {
0x00007fb4 cbnz r1, 0x7fcc | goto label_4;
| }
0x00007fb6 ldr r7, [sp] | r7 = *(sp);
| label_1:
0x00007fb8 mov r4, r7 | r4 = r7;
0x00007fba cmp r7, 0 |
0x00007fbc beq 0x7f72 |
| } while (r7 == 0);
| do {
0x00007fbe ldr r0, [r4] | r0 = *(r4);
0x00007fc0 blx 0x2864 | fcn_00002864 ();
0x00007fc4 ldr r4, [r4, 4] | r4 = *((r4 + 4));
0x00007fc6 cmp r4, 0 |
0x00007fc8 bne 0x7fbe |
| } while (r4 != 0);
0x00007fca b 0x7f72 | goto label_0;
| label_4:
0x00007fcc mov r0, r7 | r0 = r7;
0x00007fce ldr r7, [sp] | r7 = *(sp);
0x00007fd0 blx 0x2b34 | fcn_00002b34 ();
0x00007fd4 b 0x7fb8 | goto label_1;
| label_3:
0x00007fd6 blx 0x2cec | fprintf_chk ()
0x00007fda nop |
0x00007fdc ldrb r0, [r1, r6] | r0 = *((r1 + r6));
0x00007fde movs r0, r0 |
0x00007fe0 lsls r0, r3, 0xc | r0 = r3 << 0xc;
0x00007fe2 movs r0, r0 |
0x00007fe4 invalid |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/bin/scheduled @ 0x84c0 */
| #include <stdint.h>
|
; (fcn) fcn.000084c0 () | void fcn_000084c0 (int16_t arg1, int16_t arg2, int16_t arg3) {
| int16_t var_0h_3;
| int16_t var_8h;
| int16_t var_ch;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x000084c0 invalid |
0x000084c4 ldr r0, [pc, 0x7c] |
0x000084c6 mov r5, r2 | r5 = r2;
0x000084c8 sub sp, 0x10 |
0x000084ca mov r4, r1 | r4 = r1;
0x000084cc ldr r2, [pc, 0x78] | r2 = *(0x8548);
0x000084ce add r0, pc | r0 = 0x10a16;
0x000084d0 ldrb r3, [r1] | r3 = *(r1);
0x000084d2 movs r1, 0 | r1 = 0;
0x000084d4 ldr r2, [r0, r2] |
0x000084d6 ldr r2, [r2] | r2 = *(0x10a16);
0x000084d8 str r2, [sp, 0xc] | var_ch = r2;
0x000084da mov.w r2, 0 | r2 = 0;
0x000084de str r1, [sp, 8] | var_8h = r1;
| if (r3 == 0) {
0x000084e0 cbz r3, 0x852c | goto label_1;
| }
0x000084e2 ldr r1, [pc, 0x68] |
0x000084e4 add r2, sp, 8 | r2 += var_8h;
0x000084e6 mov r0, r4 | r0 = r4;
0x000084e8 add r1, pc | r1 = 0x10a3a;
0x000084ea blx 0x2888 | r0 = fcn_00002888 ();
0x000084ee cmp r0, 1 |
| if (r0 != 1) {
0x000084f0 bne 0x8514 | goto label_2;
| }
0x000084f2 ldr r3, [sp, 8] | r3 = var_8h;
0x000084f4 cmp r3, 0 |
0x000084f6 it gt |
| if (r3 <= 0) {
0x000084f8 strgt r3, [r6, 0xc] | *((r6 + 0xc)) = r3;
| }
0x000084fa ble 0x8514 |
| while (1) {
0x000084fc ldr r2, [pc, 0x50] |
0x000084fe ldr r3, [pc, 0x48] | r3 = *(0x854a);
0x00008500 add r2, pc | r2 = 0x10a54;
0x00008502 ldr r3, [r2, r3] | r3 = *(0x10a54);
0x00008504 ldr r2, [r3] | r2 = *(0x10a54);
0x00008506 ldr r3, [sp, 0xc] | r3 = var_ch;
0x00008508 eors r2, r3 | r2 ^= r3;
0x0000850a mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0000850e bne 0x8540 | goto label_3;
| }
0x00008510 add sp, 0x10 |
0x00008512 pop {r4, r5, r6, pc} |
| label_2:
0x00008514 blx 0x28ac | fcn_000028ac ();
0x00008518 ldr r3, [pc, 0x38] |
0x0000851a mov r1, r0 | r1 = r0;
0x0000851c movs r2, 3 | r2 = 3;
0x0000851e mov r0, r5 | r0 = r5;
0x00008520 str r4, [sp] | *(sp) = r4;
0x00008522 add r3, pc | r3 = 0x10a7a;
0x00008524 blx 0x2bbc | fcn_00002bbc ();
| label_0:
0x00008528 movs r0, 0 | r0 = 0;
0x0000852a b 0x84fc |
| }
| label_1:
0x0000852c blx 0x28ac | fcn_000028ac ();
0x00008530 ldr r3, [pc, 0x24] |
0x00008532 mov r1, r0 | r1 = r0;
0x00008534 movs r2, 3 | r2 = 3;
0x00008536 mov r0, r5 | r0 = r5;
0x00008538 add r3, pc | r3 = 0x10a94;
0x0000853a blx 0x2bbc | fcn_00002bbc ();
0x0000853e b 0x8528 | goto label_0;
| label_3:
0x00008540 blx 0x2cec | fprintf_chk ()
0x00008544 ldrsb r6, [r7, r7] | r6 = *((r7 + r7));
0x00008546 movs r0, r0 |
0x00008548 lsls r0, r3, 0xc | r0 = r3 << 0xc;
0x0000854a movs r0, r0 |
0x0000854c adds r0, 0x50 | r0 += 0x50;
0x0000854e movs r0, r0 |
0x00008550 ldrsb r4, [r1, r7] | r4 = *((r1 + r7));
0x00008552 movs r0, r0 |
0x00008554 adds r3, 0x46 | r3 += 0x46;
0x00008556 movs r0, r0 |
0x00008558 adds r3, 0x18 | r3 += 0x18;
0x0000855a movs r0, r0 |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/bin/scheduled @ 0x855c */
| #include <stdint.h>
|
; (fcn) fcn.0000855c () | void fcn_0000855c (int16_t arg1, int16_t arg2, int16_t arg3) {
| int16_t var_0h_2;
| int16_t var_8h_3;
| int16_t var_ch_2;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x0000855c ssub16mi fp, r5, r0 | __asm ("ssub16mi fp, r5, r0");
0x00008560 ldr r2, [pc, 0xa8] |
0x00008562 sub sp, 0x10 |
0x00008564 ldr r3, [pc, 0xa8] | r3 = *(0x8610);
0x00008566 add r2, pc | r2 = 0x10b76;
0x00008568 ldr r3, [r2, r3] |
0x0000856a ldr r3, [r3] | r3 = *(0x10b76);
0x0000856c str r3, [sp, 0xc] | var_ch_2 = r3;
0x0000856e mov.w r3, 0 | r3 = 0;
| if (r1 != 0) {
0x00008572 cbz r1, 0x857a |
0x00008574 ldrb r3, [r1] | r3 = *(r1);
0x00008576 mov r4, r1 | r4 = r1;
| if (r3 != 0) {
0x00008578 cbnz r3, 0x85a6 | goto label_1;
| }
| }
0x0000857a blx 0x28ac | fcn_000028ac ();
0x0000857e ldr r3, [pc, 0x94] |
0x00008580 mov r1, r0 | r1 = r0;
0x00008582 movs r2, 3 | r2 = 3;
0x00008584 mov r0, r5 | r0 = r5;
0x00008586 add r3, pc | r3 = 0x10ba0;
0x00008588 blx 0x2bbc | fcn_00002bbc ();
| label_0:
0x0000858c movs r0, 0 | r0 = 0;
| do {
0x0000858e ldr r2, [pc, 0x88] |
0x00008590 ldr r3, [pc, 0x7c] | r3 = *(0x8610);
0x00008592 add r2, pc | r2 = 0x10bb0;
0x00008594 ldr r3, [r2, r3] | r3 = *(0x10bb0);
0x00008596 ldr r2, [r3] | r2 = *(0x10bb0);
0x00008598 ldr r3, [sp, 0xc] | r3 = var_ch_2;
0x0000859a eors r2, r3 | r2 ^= r3;
0x0000859c mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x000085a0 bne 0x8606 | goto label_2;
| }
0x000085a2 add sp, 0x10 |
0x000085a4 pop {r4, r5, r6, pc} |
| label_1:
0x000085a6 movs r2, 0xa | r2 = 0xa;
0x000085a8 mov r6, r0 | r6 = r0;
0x000085aa add r1, sp, 8 | r1 += var_8h_3;
0x000085ac mov r0, r4 | r0 = r4;
0x000085ae blx 0x2b8c | fcn_00002b8c ();
0x000085b2 ldr r2, [sp, 8] | r2 = var_8h_3;
0x000085b4 mov r3, r0 | r3 = r0;
0x000085b6 ldrb r2, [r2] | r2 = *(r2);
| if (r2 != 0) {
0x000085b8 cbnz r2, 0x85dc | goto label_3;
| }
0x000085ba ldr r2, [r6, 0x18] | r2 = *((r6 + 0x18));
| if (r2 != 0) {
0x000085bc cbnz r2, 0x85f2 | goto label_4;
| }
0x000085be ldr r2, [r6, 0x1c] | r2 = *((r6 + 0x1c));
| if (r2 != 0) {
0x000085c0 cbnz r2, 0x85c8 | goto label_5;
| }
0x000085c2 movs r0, 1 | r0 = 1;
0x000085c4 str r3, [r6, 0x18] | *((r6 + 0x18)) = r3;
0x000085c6 b 0x858e |
| } while (1);
| label_5:
0x000085c8 blx 0x28ac | fcn_000028ac ();
0x000085cc ldr r3, [pc, 0x4c] |
0x000085ce mov r1, r0 | r1 = r0;
0x000085d0 movs r2, 3 | r2 = 3;
0x000085d2 mov r0, r5 | r0 = r5;
0x000085d4 add r3, pc | r3 = 0x10bf4;
0x000085d6 blx 0x2bbc | fcn_00002bbc ();
0x000085da b 0x858c | goto label_0;
| label_3:
0x000085dc blx 0x28ac | fcn_000028ac ();
0x000085e0 ldr r3, [pc, 0x3c] |
0x000085e2 mov r1, r0 | r1 = r0;
0x000085e4 movs r2, 3 | r2 = 3;
0x000085e6 mov r0, r5 | r0 = r5;
0x000085e8 str r4, [sp] | *(sp) = r4;
0x000085ea add r3, pc | r3 = 0x10c0e;
0x000085ec blx 0x2bbc | fcn_00002bbc ();
0x000085f0 b 0x858c | goto label_0;
| label_4:
0x000085f2 blx 0x28ac | fcn_000028ac ();
0x000085f6 ldr r3, [pc, 0x2c] |
0x000085f8 mov r1, r0 | r1 = r0;
0x000085fa movs r2, 3 | r2 = 3;
0x000085fc mov r0, r5 | r0 = r5;
0x000085fe add r3, pc | r3 = 0x10c28;
0x00008600 blx 0x2bbc | fcn_00002bbc ();
0x00008604 b 0x858c | goto label_0;
| label_2:
0x00008606 blx 0x2cec | fprintf_chk ()
0x0000860a nop |
0x0000860c ldrsb r6, [r4, r5] | r6 = *((r4 + r5));
0x0000860e movs r0, r0 |
0x00008610 lsls r0, r3, 0xc | r0 = r3 << 0xc;
0x00008612 movs r0, r0 |
0x00008614 adds r3, 2 | r3 += 2;
0x00008616 movs r0, r0 |
0x00008618 ldrsb r2, [r7, r4] | r2 = *((r7 + r4));
0x0000861a movs r0, r0 |
0x0000861c adds r2, 0xfc | r2 += 0xfc;
0x0000861e movs r0, r0 |
0x00008620 adds r2, 0xb2 | r2 += 0xb2;
0x00008622 movs r0, r0 |
0x00008624 adds r2, 0xba | r2 += 0xba;
0x00008626 movs r0, r0 |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/bin/scheduled @ 0x8628 */
| #include <stdint.h>
|
; (fcn) fcn.00008628 () | void fcn_00008628 (int16_t arg1, int16_t arg2, int16_t arg3) {
| int16_t var_0h;
| int16_t var_8h_2;
| int16_t var_ch_3;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x00008628 invalid |
0x0000862c ldr r1, [pc, 0xdc] |
0x0000862e mov r6, r2 | r6 = r2;
0x00008630 sub sp, 0x10 |
0x00008632 movs r3, 0 | r3 = 0;
0x00008634 ldr r2, [pc, 0xd8] | r2 = *(0x8710);
0x00008636 add r1, pc | r1 = 0x10d46;
0x00008638 ldr r2, [r1, r2] |
0x0000863a ldr r2, [r2] | r2 = *(0x10d46);
0x0000863c str r2, [sp, 0xc] | var_ch_3 = r2;
0x0000863e mov.w r2, 0 | r2 = 0;
0x00008642 str r3, [sp, 8] | var_8h_2 = r3;
0x00008644 cmp r4, 0 |
| if (r4 == 0) {
0x00008646 beq 0x86aa | goto label_2;
| }
0x00008648 ldrb r3, [r4] | r3 = *(r4);
| if (r3 == 0) {
0x0000864a cbz r3, 0x86aa | goto label_2;
| }
0x0000864c ldr r3, [r0, 0x1c] | r3 = *(var_0hx1c);
0x0000864e mov r5, r0 | r5 = r0;
| if (r3 == 0) {
0x00008650 cbnz r3, 0x8672 |
0x00008652 ldr r3, [r0, 0x18] | r3 = *(var_0hx18);
0x00008654 cmp r3, 0 |
| if (r3 != 0) {
0x00008656 bne 0x86dc | goto label_3;
| }
0x00008658 blx 0x2df0 | fcn_00002df0 ();
0x0000865c ldr r3, [r5, 0x20] | r3 = *((r5 + 0x20));
0x0000865e add r2, sp, 8 | r2 += var_8h_2;
0x00008660 mov r1, r4 | r1 = r4;
0x00008662 str r0, [r5, 0x1c] | *((r5 + 0x1c)) = r0;
| if (r3 != 0) {
0x00008664 cbnz r3, 0x86be | goto label_4;
| }
0x00008666 blx 0x2d50 | r0 = fcn_00002d50 ();
0x0000866a cmp r0, 0 |
| if (r0 == 0) {
0x0000866c beq 0x86f0 | goto label_5;
| }
| label_0:
0x0000866e movs r4, 1 | r4 = 1;
0x00008670 b 0x8686 | goto label_6;
| }
0x00008672 blx 0x28ac | fcn_000028ac ();
0x00008676 ldr r3, [pc, 0x9c] |
0x00008678 mov r1, r0 | r1 = r0;
0x0000867a movs r2, 3 | r2 = 3;
0x0000867c mov r0, r6 | r0 = r6;
0x0000867e add r3, pc | r3 = 0x10d98;
0x00008680 blx 0x2bbc | fcn_00002bbc ();
| do {
| label_1:
0x00008684 movs r4, 0 | r4 = 0;
| label_6:
0x00008686 ldr r3, [sp, 8] | r3 = var_8h_2;
| if (r3 != 0) {
0x00008688 cbz r3, 0x8690 |
0x0000868a add r0, sp, 8 | r0 += var_8h_2;
0x0000868c blx 0x28a0 | fcn_000028a0 ();
| }
0x00008690 ldr r2, [pc, 0x84] |
0x00008692 ldr r3, [pc, 0x7c] | r3 = *(0x8712);
0x00008694 add r2, pc | r2 = 0x10db0;
0x00008696 ldr r3, [r2, r3] | r3 = *(0x10db0);
0x00008698 ldr r2, [r3] | r2 = *(0x10db0);
0x0000869a ldr r3, [sp, 0xc] | r3 = var_ch_3;
0x0000869c eors r2, r3 | r2 ^= r3;
0x0000869e mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x000086a2 bne 0x8706 | goto label_7;
| }
0x000086a4 mov r0, r4 | r0 = r4;
0x000086a6 add sp, 0x10 |
0x000086a8 pop {r4, r5, r6, pc} |
| label_2:
0x000086aa blx 0x28ac | fcn_000028ac ();
0x000086ae ldr r3, [pc, 0x6c] |
0x000086b0 mov r1, r0 | r1 = r0;
0x000086b2 movs r2, 3 | r2 = 3;
0x000086b4 mov r0, r6 | r0 = r6;
0x000086b6 add r3, pc | r3 = 0x10dd8;
0x000086b8 blx 0x2bbc | fcn_00002bbc ();
0x000086bc b 0x8684 |
| } while (1);
| label_4:
0x000086be blx 0x2970 | r0 = fcn_00002970 ();
0x000086c2 cmp r0, 0 |
| if (r0 != 0) {
0x000086c4 bne 0x866e | goto label_0;
| }
0x000086c6 blx 0x28ac | fcn_000028ac ();
0x000086ca ldr r3, [pc, 0x54] |
0x000086cc mov r1, r0 | r1 = r0;
0x000086ce movs r2, 3 | r2 = 3;
0x000086d0 mov r0, r6 | r0 = r6;
0x000086d2 str r4, [sp] | *(sp) = r4;
0x000086d4 add r3, pc | r3 = 0x10dfa;
0x000086d6 blx 0x2bbc | fcn_00002bbc ();
0x000086da b 0x8684 | goto label_1;
| label_3:
0x000086dc blx 0x28ac | fcn_000028ac ();
0x000086e0 ldr r3, [pc, 0x40] |
0x000086e2 mov r1, r0 | r1 = r0;
0x000086e4 movs r2, 3 | r2 = 3;
0x000086e6 mov r0, r6 | r0 = r6;
0x000086e8 add r3, pc | r3 = 0x10e10;
0x000086ea blx 0x2bbc | fcn_00002bbc ();
0x000086ee b 0x8684 | goto label_1;
| label_5:
0x000086f0 blx 0x28ac | fcn_000028ac ();
0x000086f4 ldr r3, [pc, 0x30] |
0x000086f6 mov r1, r0 | r1 = r0;
0x000086f8 movs r2, 3 | r2 = 3;
0x000086fa mov r0, r6 | r0 = r6;
0x000086fc str r4, [sp] | *(sp) = r4;
0x000086fe add r3, pc | r3 = 0x10e2a;
0x00008700 blx 0x2bbc | fcn_00002bbc ();
0x00008704 b 0x8684 | goto label_1;
| label_7:
0x00008706 blx 0x2cec | fprintf_chk ()
0x0000870a nop |
0x0000870c ldrsb r6, [r2, r2] | r6 = *((r2 + r2));
0x0000870e movs r0, r0 |
0x00008710 lsls r0, r3, 0xc | r0 = r3 << 0xc;
0x00008712 movs r0, r0 |
0x00008714 adds r2, 0x86 | r2 += 0x86;
0x00008716 movs r0, r0 |
0x00008718 ldrsb r0, [r7, r0] | r0 = *((r7 + r0));
0x0000871a movs r0, r0 |
0x0000871c adds r2, 0x3a | r2 += 0x3a;
0x0000871e movs r0, r0 |
0x00008720 adds r2, 0x48 | r2 += 0x48;
0x00008722 movs r0, r0 |
0x00008724 adds r1, 0xe8 | r1 += 0xe8;
0x00008726 movs r0, r0 |
0x00008728 adds r2, 0x4e | r2 += 0x4e;
0x0000872a movs r0, r0 |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/bin/scheduled @ 0x8b54 */
| #include <stdint.h>
|
; (fcn) fcn.00008b54 () | void fcn_00008b54 (int16_t arg1, int16_t arg2, int16_t arg3) {
| int16_t var_0h;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_14h;
| int16_t var_18h;
| int16_t var_1ch;
| int16_t var_24h;
| int16_t var_28h;
| int16_t var_2ch;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x00008b54 svcmi 0xf0e92d | __asm ("svcmi 0xf0e92d");
0x00008b58 mov sb, r2 | sb = r2;
0x00008b5a ldr r2, [pc, 0x2a4] |
0x00008b5c sub sp, 0x34 |
0x00008b5e movs r7, 0 | r7 = 0;
0x00008b60 mov r6, r1 | r6 = r1;
0x00008b62 ldr r3, [pc, 0x2a0] | r3 = *(0x8e06);
0x00008b64 mov r4, r0 | r4 = r0;
0x00008b66 add r2, pc | r2 = 0x1196c;
0x00008b68 ldr r3, [r2, r3] |
0x00008b6a ldr r3, [r3] | r3 = *(0x1196c);
0x00008b6c str r3, [sp, 0x2c] | var_2ch = r3;
0x00008b6e mov.w r3, 0 | r3 = 0;
0x00008b72 str r7, [sp, 0x24] | var_24h = r7;
0x00008b74 bl 0x8a0c | fcn_00008a0c ();
0x00008b78 mov r1, r7 | r1 = r7;
0x00008b7a blx 0x29fc | r0 = fcn_000029fc ();
0x00008b7e mov r5, r0 | r5 = r0;
0x00008b80 bl 0x8318 | r0 = fcn_00008318 ();
0x00008b84 mov r1, r0 | r1 = r0;
0x00008b86 mov r0, r5 | r0 = r5;
0x00008b88 blx 0x2ce0 | g_thread_new ();
0x00008b8c ldr r1, [pc, 0x278] |
0x00008b8e str r6, [r0, 0x20] | *((r0 + 0x20)) = r6;
0x00008b90 mov r0, r4 | r0 = r4;
0x00008b92 add r1, pc | r1 = 0x1199e;
0x00008b94 blx 0x2c98 | r0 = schedule_get_iCal ();
0x00008b98 cmp r0, 0 |
| if (r0 == 0) {
0x00008b9a beq.w 0x8d9e | goto label_8;
| }
0x00008b9e ldr r1, [pc, 0x26c] |
0x00008ba0 adds r0, r4, 6 | r0 = r4 + 6;
0x00008ba2 mov r2, r7 | r2 = r7;
0x00008ba4 add r1, pc | r1 = 0x119b6;
0x00008ba6 blx 0x2d90 | r0 = fcn_00002d90 ();
0x00008baa ldr r6, [r0] | r6 = *(r0);
0x00008bac mov r4, r0 | r4 = r0;
0x00008bae cmp r6, 0 |
| if (r6 == 0) {
0x00008bb0 beq 0x8c9a | goto label_3;
| }
0x00008bb2 ldr r3, [pc, 0x25c] |
0x00008bb4 ldr.w sl, [pc, 0x25c] |
0x00008bb8 str.w sb, [sp, 0x18] | __asm ("str.w sb, [var_18h]");
0x00008bbc mov sb, r0 | sb = r0;
0x00008bbe add r3, pc | r3 = 0x119d4;
0x00008bc0 str r3, [sp, 0xc] | var_ch = r3;
0x00008bc2 add sl, pc | sl = 0x119da;
0x00008bc4 ldr r3, [pc, 0x250] |
0x00008bc6 mov fp, sl |
0x00008bc8 add r3, pc | r3 = 0x119e4;
0x00008bca strd r3, r0, [sp, 0x10] | __asm ("strd r3, r0, [var_14h]");
0x00008bce b 0x8bea |
| while (r0 != 0) {
0x00008bd0 ldr r1, [pc, 0x248] |
0x00008bd2 adds r0, r6, 5 | r0 = r6 + 5;
0x00008bd4 add r1, pc | r1 = 0x119f4;
0x00008bd6 blx 0x2fe8 | r0 = fcn_00002fe8 ();
0x00008bda cmp r0, 0 |
| if (r0 != 0) {
0x00008bdc bne.w 0x8dbc | goto label_9;
| }
| label_0:
0x00008be0 ldr r6, [sb, 4]! | r6 = *((sb += 4));
0x00008be4 cmp r6, 0 |
| if (r6 == 0) {
0x00008be6 beq.w 0x8d22 | goto label_10;
| }
| label_2:
0x00008bea mov r1, fp | r1 = fp;
0x00008bec mov r0, r6 | r0 = r6;
0x00008bee blx 0x2c98 | r0 = schedule_get_iCal ();
0x00008bf2 mov r7, r0 | r7 = r0;
0x00008bf4 cmp r0, 0 |
0x00008bf6 bne 0x8bd0 |
| }
0x00008bf8 ldr r1, [sp, 0xc] | r1 = var_ch;
0x00008bfa mov r0, r6 | r0 = r6;
0x00008bfc blx 0x2c98 | r0 = schedule_get_iCal ();
0x00008c00 cmp r0, 0 |
| if (r0 == 0) {
0x00008c02 beq 0x8cc8 | goto label_11;
| }
0x00008c04 ldrb r3, [r6, 8] | r3 = *((r6 + 8));
0x00008c06 cmp r3, 0 |
| if (r3 == 0) {
0x00008c08 beq.w 0x8d26 | goto label_12;
| }
0x00008c0c ldr r1, [pc, 0x210] |
0x00008c0e mov r2, r7 | r2 = r7;
0x00008c10 add.w r0, r6, 8 | r0 = r6 + 8;
0x00008c14 add r1, pc | r1 = 0x11a38;
0x00008c16 blx 0x2d90 | r0 = fcn_00002d90 ();
0x00008c1a ldr r4, [r0] | r4 = *(r0);
0x00008c1c mov r2, r0 | r2 = r0;
0x00008c1e cmp r4, 0 |
| if (r4 == 0) {
0x00008c20 beq.w 0x8d76 | goto label_13;
| }
0x00008c24 ldr.w sl, [pc, 0x1fc] | sl = fcn.00002904;
0x00008c28 mov r6, r0 | r6 = r0;
0x00008c2a str.w fp, [sp, 0x1c] | __asm ("str.w fp, [var_1ch]");
0x00008c2e add.w r8, sp, 0x28 | r8 += var_28h;
0x00008c32 mov fp, r0 |
0x00008c34 add sl, pc | sl += pc;
0x00008c36 b 0x8c54 |
| while (r0 == 1) {
0x00008c38 ldr r2, [sp, 0x28] | r2 = var_28h;
0x00008c3a subs r1, r2, 1 | r1 = r2 - 1;
0x00008c3c cmp r1, 0xb |
| if (r1 > 0xb) {
0x00008c3e bhi.w 0x8d7e | goto label_14;
| }
0x00008c42 ldr r4, [r6, 4]! | r4 = *((r6 += 4));
0x00008c46 add.w r2, r5, r2, lsl 2 | r2 = r5 + (r2 << 2);
0x00008c4a str r0, [r2, 0x24] | *((r2 + 0x24)) = r0;
0x00008c4c str r7, [r5, 0x24] | *((r5 + 0x24)) = r7;
0x00008c4e cmp r4, 0 |
| if (r4 == 0) {
0x00008c50 beq.w 0x8d70 | goto label_15;
| }
0x00008c54 mov r2, r8 | r2 = r8;
0x00008c56 mov r1, sl | r1 = sl;
0x00008c58 mov r0, r4 | r0 = r4;
0x00008c5a str r7, [sp, 0x28] | var_28h = r7;
0x00008c5c blx 0x2888 | r0 = fcn_00002888 ();
0x00008c60 cmp r0, 1 |
0x00008c62 beq 0x8c38 |
| }
0x00008c64 mov r6, fp | r6 = fp;
0x00008c66 mov fp, r4 |
0x00008c68 ldrd r4, sb, [sp, 0x14] | __asm ("ldrd r4, sb, [var_18h]");
0x00008c6c blx 0x28ac | fcn_000028ac ();
0x00008c70 ldr r3, [pc, 0x1b4] |
0x00008c72 mov r1, r0 | r1 = r0;
0x00008c74 movs r2, 3 | r2 = 3;
0x00008c76 add r0, sp, 0x24 | r0 += var_24h;
0x00008c78 str.w fp, [sp] | __asm ("str.w fp, [sp]");
0x00008c7c add r3, pc | r3 = 0x11aa8;
0x00008c7e blx 0x2bbc | fcn_00002bbc ();
| label_5:
0x00008c82 mov r0, r6 | r0 = r6;
0x00008c84 blx 0x2e8c | fcn_00002e8c ();
| label_1:
0x00008c88 ldr r1, [sp, 0x24] | r1 = var_24h;
0x00008c8a mov r0, sb | r0 = sb;
0x00008c8c blx 0x2b34 | fcn_00002b34 ();
| if (r5 != 0) {
0x00008c90 cbz r5, 0x8c98 |
| label_6:
0x00008c92 mov r0, r5 | r0 = r5;
0x00008c94 blx 0x2864 | fcn_00002864 ();
| }
| label_7:
0x00008c98 movs r5, 0 | r5 = 0;
| label_3:
0x00008c9a mov r0, r4 | r0 = r4;
0x00008c9c blx 0x2e8c | fcn_00002e8c ();
0x00008ca0 bl 0x8318 | r0 = fcn_00008318 ();
0x00008ca4 mov r1, r0 | r1 = r0;
0x00008ca6 mov r0, r5 | r0 = r5;
0x00008ca8 blx 0x2ce0 | g_thread_new ();
0x00008cac ldr r2, [pc, 0x17c] |
0x00008cae ldr r3, [pc, 0x154] | r3 = *(0x8e06);
0x00008cb0 add r2, pc | r2 = 0x11ae0;
0x00008cb2 ldr r3, [r2, r3] | r3 = *(0x11ae0);
0x00008cb4 ldr r2, [r3] | r2 = *(0x11ae0);
0x00008cb6 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x00008cb8 eors r2, r3 | r2 ^= r3;
0x00008cba mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00008cbe bne.w 0x8dfc | goto label_16;
| }
0x00008cc2 add sp, 0x34 |
0x00008cc4 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_11:
0x00008cc8 ldr r1, [sp, 0x10] | r1 = var_10h;
0x00008cca mov r0, r6 | r0 = r6;
0x00008ccc blx 0x2c98 | r0 = schedule_get_iCal ();
| if (r0 == 0) {
0x00008cd0 cbz r0, 0x8cf4 | goto label_17;
| }
0x00008cd2 bl 0x8318 | r0 = fcn_00008318 ();
0x00008cd6 mov r1, r0 | r1 = r0;
0x00008cd8 mov r0, r5 | r0 = r5;
0x00008cda blx 0x2ce0 | g_thread_new ();
0x00008cde add.w r1, r6, 9 | r1 = r6 + 9;
0x00008ce2 add r2, sp, 0x24 | r2 += var_24h;
0x00008ce4 bl 0x84c0 | r0 = fcn_000084c0 (r0, r1, r2);
0x00008ce8 cmp r0, 0 |
| if (r0 != 0) {
0x00008cea bne.w 0x8be0 | goto label_0;
| }
| do {
| label_4:
0x00008cee ldrd r4, sb, [sp, 0x14] | __asm ("ldrd r4, sb, [var_18h]");
0x00008cf2 b 0x8c88 | goto label_1;
| label_17:
0x00008cf4 ldr r1, [pc, 0x138] |
0x00008cf6 mov r0, r6 | r0 = r6;
0x00008cf8 add r1, pc | r1 = 0x11b2c;
0x00008cfa blx 0x2c98 | r0 = schedule_get_iCal ();
| if (r0 == 0) {
0x00008cfe cbz r0, 0x8d46 | goto label_18;
| }
0x00008d00 bl 0x8318 | r0 = fcn_00008318 ();
0x00008d04 mov r1, r0 | r1 = r0;
0x00008d06 mov r0, r5 | r0 = r5;
0x00008d08 blx 0x2ce0 | g_thread_new ();
0x00008d0c adds r1, r6, 6 | r1 = r6 + 6;
0x00008d0e add r2, sp, 0x24 | r2 += var_24h;
0x00008d10 bl 0x855c | r0 = fcn_0000855c (r0, r1, r2);
0x00008d14 cmp r0, 0 |
0x00008d16 beq 0x8cee |
| } while (r0 == 0);
0x00008d18 ldr r6, [sb, 4]! | r6 = *((sb += 4));
0x00008d1c cmp r6, 0 |
| if (r6 != 0) {
0x00008d1e bne.w 0x8bea | goto label_2;
| }
| label_10:
0x00008d22 ldr r4, [sp, 0x14] | r4 = var_14h;
0x00008d24 b 0x8c9a | goto label_3;
| label_12:
0x00008d26 mov r8, r3 | r8 = r3;
0x00008d28 ldrd r4, sb, [sp, 0x14] | __asm ("ldrd r4, sb, [var_18h]");
0x00008d2c blx 0x28ac | fcn_000028ac ();
0x00008d30 ldr r3, [pc, 0x100] |
0x00008d32 mov r1, r0 | r1 = r0;
0x00008d34 movs r2, 3 | r2 = 3;
0x00008d36 add r0, sp, 0x24 | r0 += var_24h;
0x00008d38 add r3, pc | r3 = 0x11b70;
0x00008d3a blx 0x2bbc | fcn_00002bbc ();
0x00008d3e mov r0, r8 | r0 = r8;
0x00008d40 blx 0x2e8c | fcn_00002e8c ();
0x00008d44 b 0x8c88 | goto label_1;
| label_18:
0x00008d46 ldr r1, [pc, 0xf0] |
0x00008d48 mov r0, r6 | r0 = r6;
0x00008d4a add r1, pc | r1 = 0x11b88;
0x00008d4c blx 0x2c98 | r0 = schedule_get_iCal ();
0x00008d50 cmp r0, 0 |
| if (r0 == 0) {
0x00008d52 beq 0x8ddc | goto label_19;
| }
0x00008d54 bl 0x8318 | r0 = fcn_00008318 ();
0x00008d58 mov r1, r0 | r1 = r0;
0x00008d5a mov r0, r5 | r0 = r5;
0x00008d5c blx 0x2ce0 | g_thread_new ();
0x00008d60 adds r1, r6, 6 | r1 = r6 + 6;
0x00008d62 add r2, sp, 0x24 | r2 += var_24h;
0x00008d64 bl 0x8628 | r0 = fcn_00008628 (r0, r1, r2);
0x00008d68 cmp r0, 0 |
| if (r0 != 0) {
0x00008d6a bne.w 0x8be0 | goto label_0;
| }
0x00008d6e b 0x8cee | goto label_4;
| label_15:
0x00008d70 mov r2, fp | r2 = fp;
0x00008d72 ldr.w fp, [sp, 0x1c] | fp = var_1ch;
| label_13:
0x00008d76 mov r0, r2 | r0 = r2;
0x00008d78 blx 0x2e8c | fcn_00002e8c ();
0x00008d7c b 0x8be0 | goto label_0;
| label_14:
0x00008d7e ldr r4, [sp, 0x14] | r4 = var_14h;
0x00008d80 mov r6, fp | r6 = fp;
0x00008d82 ldr.w sb, [sp, 0x18] | sb = var_18h;
0x00008d86 blx 0x28ac | fcn_000028ac ();
0x00008d8a ldr r3, [sp, 0x28] | r3 = var_28h;
0x00008d8c mov r1, r0 | r1 = r0;
0x00008d8e movs r2, 3 | r2 = 3;
0x00008d90 add r0, sp, 0x24 | r0 += var_24h;
0x00008d92 str r3, [sp] | *(sp) = r3;
0x00008d94 ldr r3, [pc, 0xa4] |
0x00008d96 add r3, pc | r3 = 0x11bd6;
0x00008d98 blx 0x2bbc | fcn_00002bbc ();
0x00008d9c b 0x8c82 | goto label_5;
| label_8:
0x00008d9e mov r6, r0 | r6 = r0;
0x00008da0 blx 0x28ac | fcn_000028ac ();
0x00008da4 ldr r3, [pc, 0x98] |
0x00008da6 mov r1, r0 | r1 = r0;
0x00008da8 movs r2, 3 | r2 = 3;
0x00008daa mov r0, sb | r0 = sb;
0x00008dac mov r4, r6 | r4 = r6;
0x00008dae add r3, pc | r3 = 0x11bf2;
0x00008db0 blx 0x2bbc | fcn_00002bbc ();
0x00008db4 cmp r5, 0 |
| if (r5 != 0) {
0x00008db6 bne.w 0x8c92 | goto label_6;
| }
0x00008dba b 0x8c98 | goto label_7;
| label_9:
0x00008dbc ldrd r4, sb, [sp, 0x14] | __asm ("ldrd r4, sb, [var_18h]");
0x00008dc0 blx 0x28ac | fcn_000028ac ();
0x00008dc4 ldr r3, [pc, 0x7c] |
0x00008dc6 mov r1, r0 | r1 = r0;
0x00008dc8 movs r2, 3 | r2 = 3;
0x00008dca mov r0, sb | r0 = sb;
0x00008dcc str r6, [sp] | *(sp) = r6;
0x00008dce add r3, pc | r3 = 0x11c16;
0x00008dd0 blx 0x2bbc | fcn_00002bbc ();
0x00008dd4 cmp r5, 0 |
| if (r5 != 0) {
0x00008dd6 bne.w 0x8c92 | goto label_6;
| }
0x00008dda b 0x8c98 | goto label_7;
| label_19:
0x00008ddc ldrd r4, sb, [sp, 0x14] | __asm ("ldrd r4, sb, [var_18h]");
0x00008de0 blx 0x28ac | fcn_000028ac ();
0x00008de4 ldr r3, [pc, 0x60] |
0x00008de6 mov r1, r0 | r1 = r0;
0x00008de8 movs r2, 3 | r2 = 3;
0x00008dea mov r0, sb | r0 = sb;
0x00008dec str r6, [sp] | *(sp) = r6;
0x00008dee add r3, pc | r3 = 0x11c3a;
0x00008df0 blx 0x2bbc | fcn_00002bbc ();
0x00008df4 cmp r5, 0 |
| if (r5 != 0) {
0x00008df6 bne.w 0x8c92 | goto label_6;
| }
0x00008dfa b 0x8c98 | goto label_7;
| label_16:
0x00008dfc blx 0x2cec | fprintf_chk ()
0x00008e00 str r6, [r4, r5] | *((r4 + r5)) = r6;
0x00008e02 movs r0, r0 |
0x00008e04 lsls r0, r3, 0xc | r0 = r3 << 0xc;
0x00008e06 movs r0, r0 |
0x00008e08 movs r1, 0x6e | r1 = 0x6e;
0x00008e0a movs r0, r0 |
0x00008e0c cmp r6, 4 |
0x00008e0e movs r0, r0 |
0x00008e10 cmp r7, 0x22 |
0x00008e12 movs r0, r0 |
0x00008e14 cmp r5, 0xea |
0x00008e16 movs r0, r0 |
0x00008e18 cmp r7, 0x80 |
0x00008e1a movs r0, r0 |
0x00008e1c cmp r5, 0xe0 |
0x00008e1e movs r0, r0 |
0x00008e20 cmp r0, 0x24 |
0x00008e22 movs r0, r0 |
0x00008e24 cmp r1, 4 |
0x00008e26 movs r0, r0 |
0x00008e28 cmp r6, 0x88 |
0x00008e2a movs r0, r0 |
0x00008e2c str r4, [r3, r0] | *((r3 + r0)) = r4;
0x00008e2e movs r0, r0 |
0x00008e30 cmp r6, 0x5c |
0x00008e32 movs r0, r0 |
0x00008e34 cmp r5, 0xb4 |
0x00008e36 movs r0, r0 |
0x00008e38 cmp r6, 0x12 |
0x00008e3a movs r0, r0 |
0x00008e3c cmp r5, 0x92 |
0x00008e3e movs r0, r0 |
0x00008e40 cmp r4, 0xfe |
0x00008e42 movs r0, r0 |
0x00008e44 cmp r4, 0xf2 |
0x00008e46 movs r0, r0 |
0x00008e48 cmp r5, 0x76 |
0x00008e4a movs r0, r0 |
0x00008e4c movs r0, r0 |
0x00008e4e movs r0, r0 |
0x00008e50 movs r3, 0 | r3 = 0;
0x00008e52 str r3, [r0, 0x24] | *((r0 + 0x24)) = r3;
0x00008e54 bx lr | return;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/bin/scheduled @ 0x90d8 */
| #include <stdint.h>
|
; (fcn) fcn.000090d8 () | void fcn_000090d8 (int16_t arg_4h, int16_t arg_8h, int16_t arg_ch, int16_t arg1, int16_t arg2, int16_t arg3) {
| int16_t var_0h;
| int16_t var_8h;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_14h;
| int16_t var_18h;
| int16_t var_1ch;
| int16_t var_24h;
| int16_t var_28h;
| int16_t var_2ch;
| int16_t var_30h;
| int16_t var_34h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x000090d8 svcmi 0xf0e92d | __asm ("svcmi 0xf0e92d");
0x000090dc mov r8, r2 | r8 = r2;
0x000090de ldr r2, [pc, 0x378] |
0x000090e0 movs r6, 0 | r6 = 0;
0x000090e2 mov r5, r1 | r5 = r1;
0x000090e4 mov r4, r0 | r4 = r0;
0x000090e6 ldr r3, [pc, 0x374] | r3 = *(0x945e);
0x000090e8 add r2, pc | r2 = 0x12546;
0x000090ea vpush {d8} | __asm ("vpush {d8}");
0x000090ee sub sp, 0x3c |
0x000090f0 ldr r3, [r2, r3] |
0x000090f2 ldr r3, [r3] | r3 = *(0x12546);
0x000090f4 str r3, [sp, 0x34] | var_34h = r3;
0x000090f6 mov.w r3, 0 | r3 = 0;
0x000090fa str r6, [sp, 0x24] | var_24h = r6;
0x000090fc bl 0x8f10 | fcn_00008f10 ();
0x00009100 mov r1, r6 | r1 = r6;
0x00009102 blx 0x29fc | r0 = fcn_000029fc ();
0x00009106 mov r7, r0 | r7 = r0;
0x00009108 bl 0x8318 | r0 = fcn_00008318 ();
0x0000910c mov r1, r0 | r1 = r0;
0x0000910e mov r0, r7 | r0 = r7;
0x00009110 blx 0x2ce0 | g_thread_new ();
0x00009114 ldr r1, [pc, 0x348] |
0x00009116 str r5, [r0, 0x20] | *((r0 + 0x20)) = r5;
0x00009118 mov r0, r4 | r0 = r4;
0x0000911a add r1, pc | r1 = 0x1257e;
0x0000911c blx 0x2c98 | r0 = schedule_get_iCal ();
0x00009120 cmp r0, 0 |
| if (r0 == 0) {
0x00009122 beq.w 0x9412 | goto label_9;
| }
0x00009126 ldr r1, [pc, 0x33c] |
0x00009128 mov r2, r6 | r2 = r6;
0x0000912a adds r0, r4, 6 | r0 = r4 + 6;
0x0000912c add r1, pc | r1 = 0x12596;
0x0000912e blx 0x2d90 | r0 = fcn_00002d90 ();
0x00009132 ldr.w fp, [r0] | fp = *(r0);
0x00009134 add sp, 0 |
0x00009136 str r0, [sp, 0x1c] | var_1ch = r0;
0x00009138 cmp.w fp, 0 |
| if (fp == 0) {
0x0000913c beq.w 0x92a4 | goto label_2;
| }
0x00009140 ldr.w sl, [pc, 0x324] |
0x00009144 mov r4, fp | r4 = fp;
0x00009146 ldr r3, [pc, 0x324] |
0x00009148 ldr r6, [pc, 0x324] |
0x0000914a add sl, pc | sl = 0x125b6;
0x0000914c vldr d8, [pc, 0x300] | __asm ("vldr d8, [0x00009454]");
0x00009150 add r3, pc | r3 = 0x125c2;
0x00009152 str.w sl, [sp, 8] | __asm ("str.w sl, [var_8h]");
0x00009156 add r6, pc | r6 = 0x125ca;
0x00009158 mov sl, r0 | sl = r0;
0x0000915a str r3, [sp, 0xc] | var_ch = r3;
0x0000915c b 0x9178 |
| while (r0 != 0) {
0x0000915e ldr r1, [pc, 0x314] |
0x00009160 adds r0, r4, 5 | r0 = r4 + 5;
0x00009162 add r1, pc | r1 = 0x125dc;
0x00009164 blx 0x2fe8 | r0 = fcn_00002fe8 ();
0x00009168 cmp r0, 0 |
| if (r0 != 0) {
0x0000916a bne.w 0x9430 | goto label_10;
| }
| label_0:
0x0000916e ldr r4, [sl, 4]! | r4 = *((sl += 4));
0x00009172 cmp r4, 0 |
| if (r4 == 0) {
0x00009174 beq.w 0x92a4 | goto label_2;
| }
0x00009178 ldr r1, [sp, 8] | r1 = var_8h;
0x0000917a mov r0, r4 | r0 = r4;
0x0000917c blx 0x2c98 | r0 = schedule_get_iCal ();
0x00009180 mov r5, r0 | r5 = r0;
0x00009182 cmp r0, 0 |
0x00009184 bne 0x915e |
| }
0x00009186 mov r1, r6 | r1 = r6;
0x00009188 mov r0, r4 | r0 = r4;
0x0000918a blx 0x2c98 | r0 = schedule_get_iCal ();
0x0000918e cmp r0, 0 |
| if (r0 == 0) {
0x00009190 beq.w 0x92d6 | goto label_11;
| }
0x00009194 ldrb r3, [r4, 6] | r3 = *((r4 + 6));
0x00009196 str r5, [sp, 0x28] | var_28h = r5;
0x00009198 cmp r3, 0 |
| if (r3 == 0) {
0x0000919a beq.w 0x93ba | goto label_12;
| }
0x0000919e ldr r1, [pc, 0x2d8] |
0x000091a0 mov r2, r5 | r2 = r5;
0x000091a2 adds r0, r4, 6 | r0 = r4 + 6;
0x000091a4 add r1, pc | r1 = 0x12622;
0x000091a6 blx 0x2d90 | r0 = fcn_00002d90 ();
0x000091aa ldr r5, [r0] | r5 = *(r0);
0x000091ac mov r4, r0 | r4 = r0;
0x000091ae cmp r5, 0 |
| if (r5 == 0) {
0x000091b0 beq.w 0x93d6 | goto label_13;
| }
0x000091b4 ldr r3, [pc, 0x2c4] |
0x000091b6 mov sb, r0 | sb = r0;
0x000091b8 str r6, [sp, 0x18] | var_18h = r6;
0x000091ba add r3, pc | r3 = 0x1263a;
0x000091bc strd r3, sl, [sp, 0x10] | __asm ("strd r3, sl, [var_10h]");
0x000091c0 b 0x9230 |
| while (sl < 2) {
0x000091c2 add sl, r5 | sl += r5;
0x000091c4 ldr r1, [sp, 0xc] | r1 = var_ch;
0x000091c6 mov r0, sl | r0 = sl;
0x000091c8 blx 0x2c98 | schedule_get_iCal ();
0x000091cc movs r2, 1 | r2 = 1;
0x000091ce cmp r0, 0 |
| if (r0 == 0) {
0x000091d0 beq.w 0x931a | goto label_14;
| }
| label_4:
0x000091d4 cmp r6, 2 |
0x000091d6 str.w r2, [fp, 0xc] | __asm ("str.w r2, [arg_ch]");
| if (r6 == 2) {
0x000091da beq.w 0x930e | goto label_15;
| }
0x000091de cmp r6, 4 |
0x000091e0 mov.w r2, 0x30 | r2 = 0x30;
0x000091e4 strh.w r2, [sp, 0x30] | var_30h = r2;
0x000091e8 ldrb r3, [r5] | r3 = *(r5);
| if (r6 == 4) {
0x000091ea beq.w 0x9386 | goto label_16;
| }
| label_6:
0x000091ee subs r3, 0x2b | r3 -= 0x2b;
0x000091f0 ldr r1, [pc, 0x28c] |
0x000091f2 tst.w r3, 0xfd |
0x000091f6 add r2, sp, 0x2c | r2 += var_2ch;
0x000091f8 ite eq |
| if ((r3 & 0xfd) != 0) {
0x000091fa moveq r3, 1 | r3 = 1;
| }
| if ((r3 & 0xfd) == 0) {
0x000091fc movne r3, 0 | r3 = 0;
| }
0x000091fe ldrb r3, [r5, r3] | r3 = *((r5 + r3));
0x00009200 add r1, pc | r1 = 0x12684;
0x00009202 add r0, sp, 0x30 | r0 += var_30h;
0x00009204 strb.w r3, [sp, 0x30] | var_30h = r3;
0x00009208 blx 0x2888 | r0 = fcn_00002888 ();
0x0000920c cmp r0, 1 |
| if (r0 != 1) {
0x0000920e bne 0x924a | goto label_5;
| }
0x00009210 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x00009212 subs r2, r3, 1 | r2 = r3 - 1;
0x00009214 cmp r2, 4 |
| if (r2 > 4) {
0x00009216 bhi 0x924a | goto label_5;
| }
0x00009218 str.w r3, [fp, 8] | __asm ("str.w r3, [arg_8h]");
| label_3:
0x0000921c ldr r0, [r7, 0x24] | r0 = *((r7 + 0x24));
0x0000921e mov r1, fp | r1 = fp;
0x00009220 blx 0x2c68 | remove (r0);
0x00009224 ldr r5, [sb, 4]! | r5 = *((sb += 4));
0x00009228 str r0, [r7, 0x24] | *((r7 + 0x24)) = r0;
0x0000922a cmp r5, 0 |
| if (r5 == 0) {
0x0000922c beq.w 0x93d2 | goto label_17;
| }
0x00009230 movs r0, 0x10 | r0 = 0x10;
0x00009232 blx 0x2dc0 | r0 = fcn_00002dc0 ();
0x00009236 mov fp, r0 |
0x00009238 mov r0, r5 | r0 = r5;
0x0000923a blx 0x2b1c | r0 = fcn_00002b1c ();
0x0000923e sub.w sl, r0, 2 | sl = r0 - 2;
0x00009242 mov r6, r0 | r6 = r0;
0x00009244 cmp.w sl, 2 |
0x00009248 bls 0x91c2 |
| }
| label_5:
0x0000924a mov r3, fp | r3 = fp;
0x0000924c mov fp, r4 |
0x0000924e mov r4, r3 | r4 = r3;
0x00009250 blx 0x28ac | fcn_000028ac ();
0x00009254 ldr r3, [pc, 0x22c] |
0x00009256 mov r1, r0 | r1 = r0;
0x00009258 movs r2, 3 | r2 = 3;
0x0000925a add r0, sp, 0x28 | r0 += var_28h;
0x0000925c str r5, [sp] | *(sp) = r5;
0x0000925e add r3, pc | r3 = 0x126e6;
0x00009260 blx 0x2bbc | fcn_00002bbc ();
0x00009264 mov r0, r4 | r0 = r4;
0x00009266 blx 0x272c | fcn_0000272c ();
0x0000926a ldr r1, [sp, 0x28] | r1 = var_28h;
0x0000926c add r0, sp, 0x24 | r0 += var_24h;
0x0000926e blx 0x2b34 | fcn_00002b34 ();
| label_8:
0x00009272 ldr r5, [r7, 0x24] | r5 = *((r7 + 0x24));
0x00009274 mov r4, r5 | r4 = r5;
| if (r5 == 0) {
0x00009276 cbz r5, 0x9284 | goto label_18;
| }
| do {
0x00009278 ldr r0, [r4] | r0 = *(r4);
0x0000927a blx 0x272c | fcn_0000272c ();
0x0000927e ldr r4, [r4, 4] | r4 = *((r4 + 4));
0x00009280 cmp r4, 0 |
0x00009282 bne 0x9278 |
| } while (r4 != 0);
| label_18:
0x00009284 mov r0, r5 | r0 = r5;
0x00009286 blx 0x28e0 | fcn_000028e0 ();
0x0000928a movs r3, 0 | r3 = 0;
0x0000928c mov r0, fp | r0 = fp;
0x0000928e str r3, [r7, 0x24] | *((r7 + 0x24)) = r3;
0x00009290 blx 0x2e8c | fcn_00002e8c ();
0x00009294 ldr r1, [sp, 0x24] | r1 = var_24h;
0x00009296 mov r0, r8 | r0 = r8;
0x00009298 blx 0x2b34 | fcn_00002b34 ();
| label_1:
0x0000929c mov r0, r7 | r0 = r7;
0x0000929e movs r7, 0 | r7 = 0;
0x000092a0 blx 0x2864 | fcn_00002864 ();
| label_2:
0x000092a4 ldr r0, [sp, 0x1c] | r0 = var_1ch;
0x000092a6 blx 0x2e8c | fcn_00002e8c ();
0x000092aa bl 0x8318 | r0 = fcn_00008318 ();
0x000092ae mov r1, r0 | r1 = r0;
0x000092b0 mov r0, r7 | r0 = r7;
0x000092b2 blx 0x2ce0 | g_thread_new ();
0x000092b6 ldr r2, [pc, 0x1d0] |
0x000092b8 ldr r3, [pc, 0x1a0] | r3 = *(0x945c);
0x000092ba add r2, pc | r2 = 0x12748;
0x000092bc ldr r3, [r2, r3] | r3 = *(0x12748);
0x000092be ldr r2, [r3] | r2 = *(0x12748);
0x000092c0 ldr r3, [sp, 0x34] | r3 = var_34h;
0x000092c2 eors r2, r3 | r2 ^= r3;
0x000092c4 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x000092c8 bne.w 0x94d4 | goto label_19;
| }
0x000092cc add sp, 0x3c |
0x000092ce vpop {d8} | __asm ("vpop {d8}");
0x000092d2 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_11:
0x000092d6 ldr r1, [pc, 0x1b4] |
0x000092d8 mov r0, r4 | r0 = r4;
0x000092da add r1, pc | r1 = 0x1276c;
0x000092dc blx 0x2c98 | r0 = schedule_get_iCal ();
0x000092e0 cmp r0, 0 |
| if (r0 == 0) {
0x000092e2 beq 0x9392 | goto label_20;
| }
0x000092e4 bl 0x8318 | r0 = fcn_00008318 ();
0x000092e8 mov r1, r0 | r1 = r0;
0x000092ea mov r0, r7 | r0 = r7;
0x000092ec blx 0x2ce0 | g_thread_new ();
0x000092f0 add.w r1, r4, 9 | r1 = r4 + 9;
0x000092f4 add r2, sp, 0x24 | r2 += var_24h;
0x000092f6 bl 0x84c0 | r0 = fcn_000084c0 (r0, r1, r2);
0x000092fa cmp r0, 0 |
| if (r0 != 0) {
0x000092fc bne.w 0x916e | goto label_0;
| }
| label_7:
0x00009300 ldr r1, [sp, 0x24] | r1 = var_24h;
0x00009302 mov r0, r8 | r0 = r8;
0x00009304 blx 0x2b34 | fcn_00002b34 ();
0x00009308 cmp r7, 0 |
| if (r7 != 0) {
0x0000930a bne 0x929c | goto label_1;
| }
0x0000930c b 0x92a4 | goto label_2;
| label_15:
0x0000930e movs r3, 0 | r3 = 0;
0x00009310 vst1.32 {d8}, [fp] | __asm ("vst1.32 {d8}, [fp]");
0x00009314 str.w r3, [fp, 8] | __asm ("str.w r3, [arg_8h]");
0x00009316 adds r0, 8 | r0 += 8;
0x00009318 b 0x921c | goto label_3;
| label_14:
0x0000931a ldr r1, [sp, 0x10] | r1 = var_10h;
0x0000931c mov r0, sl | r0 = sl;
0x0000931e blx 0x2c98 | schedule_get_iCal ();
0x00009322 movs r2, 2 | r2 = 2;
0x00009324 cmp r0, 0 |
| if (r0 != 0) {
0x00009326 bne.w 0x91d4 | goto label_4;
| }
0x0000932a ldr r1, [pc, 0x164] |
0x0000932c mov r0, sl | r0 = sl;
0x0000932e add r1, pc | r1 = 0x127c4;
0x00009330 blx 0x2c98 | schedule_get_iCal ();
0x00009334 movs r2, 3 | r2 = 3;
0x00009336 cmp r0, 0 |
| if (r0 != 0) {
0x00009338 bne.w 0x91d4 | goto label_4;
| }
0x0000933c ldr r1, [pc, 0x154] |
0x0000933e mov r0, sl | r0 = sl;
0x00009340 add r1, pc | r1 = 0x127d8;
0x00009342 blx 0x2c98 | schedule_get_iCal ();
0x00009346 movs r2, 4 | r2 = 4;
0x00009348 cmp r0, 0 |
| if (r0 != 0) {
0x0000934a bne.w 0x91d4 | goto label_4;
| }
0x0000934e ldr r1, [pc, 0x148] |
0x00009350 mov r0, sl | r0 = sl;
0x00009352 add r1, pc | r1 = 0x127f0;
0x00009354 blx 0x2c98 | schedule_get_iCal ();
0x00009358 movs r2, 5 | r2 = 5;
0x0000935a cmp r0, 0 |
| if (r0 != 0) {
0x0000935c bne.w 0x91d4 | goto label_4;
| }
0x0000935e add r7, sp, 0xe8 | r7 = sp + 0xe8;
0x00009360 ldr r1, [pc, 0x138] |
0x00009362 mov r0, sl | r0 = sl;
0x00009364 add r1, pc | r1 = 0x12804;
0x00009366 blx 0x2c98 | schedule_get_iCal ();
0x0000936a movs r2, 6 | r2 = 6;
0x0000936c cmp r0, 0 |
| if (r0 != 0) {
0x0000936e bne.w 0x91d4 | goto label_4;
| }
0x00009372 ldr r1, [pc, 0x12c] |
0x00009374 mov r0, sl | r0 = sl;
0x00009376 add r1, pc | r1 = 0x1281c;
0x00009378 blx 0x2c98 | r0 = schedule_get_iCal ();
0x0000937c cmp r0, 0 |
| if (r0 == 0) {
0x0000937e beq.w 0x924a | goto label_5;
| }
0x00009382 movs r2, 7 | r2 = 7;
0x00009384 b 0x91d4 | goto label_4;
| label_16:
0x00009386 cmp r3, 0x2d |
| if (r3 == 0x2d) {
0x00009388 beq 0x9408 | goto label_21;
| }
0x0000938a cmp r3, 0x2b |
| if (r3 != 0x2b) {
0x0000938c bne.w 0x924a | goto label_5;
| }
0x00009390 b 0x91ee | goto label_6;
| label_20:
0x00009392 ldr r1, [pc, 0x110] |
0x00009394 mov r0, r4 | r0 = r4;
0x00009396 add r1, pc | r1 = 0x12840;
0x00009398 blx 0x2c98 | r0 = schedule_get_iCal ();
| if (r0 == 0) {
0x0000939c cbz r0, 0x93de | goto label_22;
| }
0x0000939e bl 0x8318 | r0 = fcn_00008318 ();
0x000093a2 mov r1, r0 | r1 = r0;
0x000093a4 mov r0, r7 | r0 = r7;
0x000093a6 blx 0x2ce0 | g_thread_new ();
0x000093aa adds r1, r4, 6 | r1 = r4 + 6;
0x000093ac add r2, sp, 0x24 | r2 += var_24h;
0x000093ae bl 0x855c | r0 = fcn_0000855c (r0, r1, r2);
0x000093b2 cmp r0, 0 |
| if (r0 != 0) {
0x000093b4 bne.w 0x916e | goto label_0;
| }
0x000093b8 b 0x9300 | goto label_7;
| label_12:
0x000093ba mov r4, r3 | r4 = r3;
0x000093bc blx 0x28ac | fcn_000028ac ();
0x000093c0 ldr r3, [pc, 0xe4] |
0x000093c2 mov r1, r0 | r1 = r0;
0x000093c4 movs r2, 3 | r2 = 3;
0x000093c6 add r0, sp, 0x24 | r0 += var_24h;
0x000093c8 mov fp, r4 |
0x000093ca add r3, pc | r3 = 0x12876;
0x000093cc blx 0x2bbc | fcn_00002bbc ();
0x000093d0 b 0x9272 | goto label_8;
| label_17:
0x000093d2 ldrd sl, r6, [sp, 0x14] | __asm ("ldrd sl, r6, [var_18h]");
| label_13:
0x000093d6 mov r0, r4 | r0 = r4;
0x000093d8 blx 0x2e8c | fcn_00002e8c ();
0x000093dc b 0x916e | goto label_0;
| label_22:
0x000093de ldr r1, [pc, 0xcc] |
0x000093e0 mov r0, r4 | r0 = r4;
0x000093e2 add r1, pc | r1 = 0x12894;
0x000093e4 blx 0x2c98 | r0 = schedule_get_iCal ();
0x000093e8 cmp r0, 0 |
| if (r0 == 0) {
0x000093ea beq 0x94b8 | goto label_23;
| }
0x000093ec bl 0x8318 | r0 = fcn_00008318 ();
0x000093f0 mov r1, r0 | r1 = r0;
0x000093f2 mov r0, r7 | r0 = r7;
0x000093f4 blx 0x2ce0 | g_thread_new ();
0x000093f8 adds r1, r4, 6 | r1 = r4 + 6;
0x000093fa add r2, sp, 0x24 | r2 += var_24h;
0x000093fc bl 0x8628 | r0 = fcn_00008628 (r0, r1, r2);
0x00009400 cmp r0, 0 |
| if (r0 != 0) {
0x00009402 bne.w 0x916e | goto label_0;
| }
0x00009406 b 0x9300 | goto label_7;
| label_21:
0x00009408 movs r3, 1 | r3 = 1;
0x0000940a str.w r3, [fp, 4] | __asm ("str.w r3, [arg_4h]");
0x0000940e ldrb r3, [r5] | r3 = *(r5);
0x00009410 b 0x91ee | goto label_6;
| label_9:
0x00009412 mov r5, r0 | r5 = r0;
0x00009414 blx 0x28ac | fcn_000028ac ();
0x00009416 orr.w fp, sl, r5, asr 16 |
0x0000941a mov r1, r0 | r1 = r0;
0x0000941c movs r2, 3 | r2 = 3;
0x0000941e mov r0, r8 | r0 = r8;
0x00009420 str r5, [sp, 0x1c] | var_1ch = r5;
0x00009422 add r3, pc | r3 += pc;
0x00009424 blx 0x2bbc | fcn_00002bbc ();
0x00009428 cmp r7, 0 |
| if (r7 != 0) {
0x0000942a bne.w 0x929c | goto label_1;
| }
0x0000942e b 0x92a4 | goto label_2;
| label_10:
0x00009430 blx 0x28ac | fcn_000028ac ();
0x00009434 ldr r3, [pc, 0x7c] |
0x00009436 mov r1, r0 | r1 = r0;
0x00009438 movs r2, 3 | r2 = 3;
0x0000943a mov r0, r8 | r0 = r8;
0x0000943c str r4, [sp] | *(sp) = r4;
0x0000943e add r3, pc | r3 = 0x128f6;
0x00009440 blx 0x2bbc | fcn_00002bbc ();
0x00009444 cmp r7, 0 |
| if (r7 != 0) {
0x00009446 bne.w 0x929c | goto label_1;
| }
0x0000944a b 0x92a4 | goto label_2;
| label_23:
0x000094b8 blx 0x28ac | fcn_000028ac ();
0x000094bc ldr r3, [pc, 0x18] |
0x000094be mov r1, r0 | r1 = r0;
0x000094c0 movs r2, 3 | r2 = 3;
0x000094c2 mov r0, r8 | r0 = r8;
0x000094c4 str r4, [sp] | *(sp) = r4;
0x000094c6 add r3, pc | r3 = 0x129a2;
0x000094c8 blx 0x2bbc | fcn_00002bbc ();
0x000094cc cmp r7, 0 |
| if (r7 != 0) {
0x000094ce bne.w 0x929c | goto label_1;
| }
0x000094d2 b 0x92a4 | goto label_2;
| label_19:
0x000094d4 blx 0x2cec | fprintf_chk ()
0x000094d8 movs r7, 0x56 | r7 = 0x56;
0x000094da movs r0, r0 |
0x000094dc movs r0, r0 |
0x000094de movs r0, r0 |
0x000094e0 vmov.i32 q8, 0 | __asm ("vmov.i32 q8, 0");
0x000094e4 add.w r3, r0, 0x24 | r3 = r0 + 0x24;
0x000094e8 vldr d18, [pc, 0x14] | __asm ("vldr d18, [0x00009504]");
0x000094ec vldr d19, [pc, 0x18] | __asm ("vldr d19, [0x0000950c]");
0x000094f0 adds r0, 0x34 | r0 += 0x34;
0x000094f2 vst1.32 {d18, d19}, [r3] | __asm ("vst1.32 {d18, d19}, [r3]");
0x000094f6 vst1.32 {d16, d17}, [r0] | __asm ("vst1.32 {d16, d17}, [r0]");
0x000094fa bx lr | return;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/bin/scheduled @ 0x96a0 */
| #include <stdint.h>
|
; (fcn) fcn.000096a0 () | uint32_t fcn_000096a0 (int16_t arg1, int16_t arg2, int16_t arg3) {
| int16_t var_0h;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_14h;
| int16_t var_18h;
| int16_t var_1ch;
| int16_t var_24h;
| int16_t var_28h;
| int16_t var_2ch;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x000096a0 svcmi 0xf0e92d | __asm ("svcmi 0xf0e92d");
0x000096a4 sub sp, 0x34 |
0x000096a6 str r2, [sp, 0x1c] | var_1ch = r2;
0x000096a8 movs r7, 0 | r7 = 0;
0x000096aa mov r6, r1 | r6 = r1;
0x000096ac mov r4, r0 | r4 = r0;
0x000096ae ldr r2, [pc, 0x2d0] |
0x000096b0 ldr r3, [pc, 0x2d0] | r3 = *(0x9984);
0x000096b2 add r2, pc | r2 = 0x13038;
0x000096b4 ldr r3, [r2, r3] |
0x000096b6 ldr r3, [r3] | r3 = *(0x13038);
0x000096b8 str r3, [sp, 0x2c] | var_2ch = r3;
0x000096ba mov.w r3, 0 | r3 = 0;
0x000096be str r7, [sp, 0x24] | var_24h = r7;
0x000096c0 bl 0x95e8 | fcn_000095e8 ();
0x000096c4 mov r1, r7 | r1 = r7;
0x000096c6 blx 0x29fc | r0 = fcn_000029fc ();
0x000096ca mov r5, r0 | r5 = r0;
0x000096cc bl 0x8318 | r0 = fcn_00008318 ();
0x000096d0 mov r1, r0 | r1 = r0;
0x000096d2 mov r0, r5 | r0 = r5;
0x000096d4 blx 0x2ce0 | g_thread_new ();
0x000096d8 ldr r1, [pc, 0x2ac] |
0x000096da str r6, [r0, 0x20] | *((r0 + 0x20)) = r6;
0x000096dc mov r0, r4 | r0 = r4;
0x000096de add r1, pc | r1 = 0x1306a;
0x000096e0 blx 0x2c98 | r0 = schedule_get_iCal ();
0x000096e4 cmp r0, 0 |
| if (r0 == 0) {
0x000096e6 beq.w 0x9924 | goto label_6;
| }
0x000096ea ldr r1, [pc, 0x2a0] |
0x000096ec mov r2, r7 | r2 = r7;
0x000096ee adds r0, r4, 6 | r0 = r4 + 6;
0x000096f0 add r1, pc | r1 = 0x13082;
0x000096f2 blx 0x2d90 | r0 = fcn_00002d90 ();
0x000096f6 ldr r6, [r0] | r6 = *(r0);
0x000096f8 mov r7, r0 | r7 = r0;
0x000096fa str r0, [sp, 0x18] | var_18h = r0;
0x000096fc cmp r6, 0 |
| if (r6 == 0) {
0x000096fe beq 0x97be | goto label_7;
| }
0x00009700 ldr r3, [pc, 0x28c] |
0x00009702 ldr.w sl, [pc, 0x290] |
0x00009706 ldr.w fp, [pc, 0x290] |
0x0000970a add r3, pc | r3 = 0x1309e;
0x0000970c str r3, [sp, 0xc] | var_ch = r3;
0x0000970e add sl, pc | sl = 0x130a8;
0x00009710 ldr r3, [pc, 0x288] |
0x00009712 add fp, pc | fp = 0x130b0;
0x00009714 add r3, pc | r3 = 0x130b4;
0x00009716 str r3, [sp, 0x10] | var_10h = r3;
0x00009718 b 0x9732 |
| while (r0 != 0) {
0x0000971a ldr r1, [pc, 0x284] |
0x0000971c adds r0, r6, 5 | r0 = r6 + 5;
0x0000971e add r1, pc | r1 = 0x130c4;
0x00009720 blx 0x2fe8 | r0 = fcn_00002fe8 ();
0x00009724 cmp r0, 0 |
| if (r0 != 0) {
0x00009726 bne.w 0x9942 | goto label_8;
| }
| label_1:
0x0000972a ldr r6, [r7, 4]! | r6 = *((r7 += 4));
0x0000972e cmp r6, 0 |
| if (r6 == 0) {
0x00009730 beq 0x97be | goto label_7;
| }
0x00009732 mov r1, sl | r1 = sl;
0x00009734 mov r0, r6 | r0 = r6;
0x00009736 blx 0x2c98 | r0 = schedule_get_iCal ();
0x0000973a mov r4, r0 | r4 = r0;
0x0000973c cmp r0, 0 |
0x0000973e bne 0x971a |
| }
0x00009740 mov r1, fp | r1 = fp;
0x00009742 mov r0, r6 | r0 = r6;
0x00009744 blx 0x2c98 | r0 = schedule_get_iCal ();
0x00009748 cmp r0, 0 |
| if (r0 == 0) {
0x0000974a beq.w 0x986e | goto label_9;
| }
0x0000974e ldrb r3, [r6, 6] | r3 = *((r6 + 6));
0x00009750 str r4, [sp, 0x28] | var_28h = r4;
0x00009752 cmp r3, 0 |
| if (r3 == 0) {
0x00009754 beq.w 0x98c6 | goto label_10;
| }
0x00009758 ldr r1, [pc, 0x248] |
0x0000975a mov r2, r4 | r2 = r4;
0x0000975c adds r0, r6, 6 | r0 = r6 + 6;
0x0000975e add r1, pc | r1 = 0x13106;
0x00009760 blx 0x2d90 | r0 = fcn_00002d90 ();
0x00009764 ldr.w sb, [r0] | sb = *(r0);
0x00009768 mov r8, r0 | r8 = r0;
0x0000976a cmp.w sb, 0 |
| if (sb == 0) {
0x0000976e beq 0x9866 | goto label_11;
| }
0x00009770 str.w fp, [sp, 0x14] | __asm ("str.w fp, [var_14h]");
0x00009774 mov r6, r0 | r6 = r0;
0x00009776 mov fp, sl |
0x00009778 movs r4, 1 | r4 = 1;
0x0000977a mov sl, r7 | sl = r7;
0x0000977c mov r7, sb | r7 = sb;
| label_0:
0x0000977e mov r0, r7 | r0 = r7;
0x00009780 blx 0x2b1c | r0 = fcn_00002b1c ();
0x00009784 cmp r0, 2 |
0x00009786 mov sb, r0 | sb = r0;
0x00009788 beq 0x97ec |
| while (r0 == 0) {
0x0000978a blx 0x28ac | fcn_000028ac ();
0x0000978e ldr r3, [pc, 0x218] |
0x00009790 mov r1, r0 | r1 = r0;
0x00009792 movs r2, 3 | r2 = 3;
0x00009794 add r0, sp, 0x28 | r0 += var_28h;
0x00009796 str r7, [sp] | *(sp) = r7;
0x00009798 add r3, pc | r3 = 0x13146;
0x0000979a blx 0x2bbc | fcn_00002bbc ();
0x0000979e add r0, sp, 0x24 | r0 += var_24h;
0x000097a0 ldr r1, [sp, 0x28] | r1 = var_28h;
0x000097a2 blx 0x2b34 | fcn_00002b34 ();
0x000097a6 mov r0, r8 | r0 = r8;
0x000097a8 blx 0x2e8c | fcn_00002e8c ();
| label_2:
0x000097ac ldr r1, [sp, 0x24] | r1 = var_24h;
0x000097ae ldr r0, [sp, 0x1c] | r0 = var_1ch;
0x000097b0 blx 0x2b34 | fcn_00002b34 ();
| if (r5 != 0) {
0x000097b4 cbz r5, 0x97bc |
| label_4:
0x000097b6 mov r0, r5 | r0 = r5;
0x000097b8 blx 0x2864 | fcn_00002864 ();
| }
| label_5:
0x000097bc movs r5, 0 | r5 = 0;
| label_7:
0x000097be ldr r0, [sp, 0x18] | r0 = var_18h;
0x000097c0 blx 0x2e8c | fcn_00002e8c ();
0x000097c4 bl 0x8318 | r0 = fcn_00008318 ();
0x000097c8 mov r1, r0 | r1 = r0;
0x000097ca mov r0, r5 | r0 = r5;
0x000097cc blx 0x2ce0 | g_thread_new ();
0x000097d0 ldr r2, [pc, 0x1d8] |
0x000097d2 ldr r3, [pc, 0x1b0] | r3 = *(0x9986);
0x000097d4 add r2, pc | r2 = 0x13184;
0x000097d6 ldr r3, [r2, r3] | r3 = *(0x13184);
0x000097d8 ldr r2, [r3] | r2 = *(0x13184);
0x000097da ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x000097dc eors r2, r3 | r2 ^= r3;
0x000097de mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x000097e2 bne.w 0x997a | goto label_12;
| }
0x000097e6 add sp, 0x34 |
0x000097e8 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
0x000097ec ldr r1, [sp, 0xc] | r1 = var_ch;
0x000097ee mov r0, r7 | r0 = r7;
0x000097f0 blx 0x2c98 | r0 = schedule_get_iCal ();
0x000097f4 cmp r0, 0 |
| if (r0 != 0) {
0x000097f6 bne 0x9898 | goto label_13;
| }
0x000097f8 ldr r1, [sp, 0x10] | r1 = var_10h;
0x000097fa mov r0, r7 | r0 = r7;
0x000097fc blx 0x2c98 | r0 = schedule_get_iCal ();
| if (r0 != 0) {
0x00009800 cbnz r0, 0x984c | goto label_3;
| }
0x00009802 ldr r1, [pc, 0x1ac] |
0x00009804 mov r0, r7 | r0 = r7;
0x00009806 add r1, pc | r1 = 0x131bc;
0x00009808 blx 0x2c98 | r0 = schedule_get_iCal ();
0x0000980c cmp r0, 0 |
| if (r0 != 0) {
0x0000980e bne 0x990c | goto label_14;
| }
0x00009810 ldr r1, [pc, 0x1a0] |
0x00009812 mov r0, r7 | r0 = r7;
0x00009814 add r1, pc | r1 = 0x131cc;
0x00009816 blx 0x2c98 | r0 = schedule_get_iCal ();
0x0000981a cmp r0, 0 |
| if (r0 != 0) {
0x0000981c bne 0x9912 | goto label_15;
| }
0x0000981e ldr r1, [pc, 0x198] |
0x00009820 mov r0, r7 | r0 = r7;
0x00009822 add r1, pc | r1 = 0x131e0;
0x00009824 blx 0x2c98 | r0 = schedule_get_iCal ();
0x00009828 cmp r0, 0 |
| if (r0 != 0) {
0x0000982a bne 0x991e | goto label_16;
| }
0x0000982c ldr r1, [pc, 0x18c] |
0x0000982e mov r0, r7 | r0 = r7;
0x00009830 add r1, pc | r1 = 0x131f0;
0x00009832 blx 0x2c98 | r0 = schedule_get_iCal ();
0x00009836 cmp r0, 0 |
| if (r0 != 0) {
0x00009838 bne 0x9918 | goto label_17;
| }
0x0000983a ldr r1, [pc, 0x184] |
0x0000983c mov r0, r7 | r0 = r7;
0x0000983e add r1, pc | r1 = 0x13204;
0x00009840 blx 0x2c98 | r0 = schedule_get_iCal ();
0x00009844 cmp r0, 0 |
0x00009846 beq 0x978a |
| }
0x00009848 mov.w sb, 7 | sb = 7;
| label_3:
0x0000984c ldr r7, [r6, 4]! | r7 = *((r6 += 4));
0x00009850 add.w r3, r5, sb, lsl 2 | r3 = r5 + (sb << 2);
0x00009854 movs r1, 0 | r1 = 0;
0x00009856 str r4, [r3, 0x24] | *((r3 + 0x24)) = r4;
0x00009858 str r1, [r5, 0x24] | *((r5 + 0x24)) = r1;
0x0000985a cmp r7, 0 |
| if (r7 != 0) {
0x0000985c bne 0x977e | goto label_0;
| }
0x0000985e mov r7, sl | r7 = sl;
0x00009860 mov sl, fp | sl = fp;
0x00009862 ldr.w fp, [sp, 0x14] | fp = var_14h;
| label_11:
0x00009866 mov r0, r8 | r0 = r8;
0x00009868 blx 0x2e8c | fcn_00002e8c ();
0x0000986c b 0x972a | goto label_1;
| label_9:
0x0000986e ldr r1, [pc, 0x154] |
0x00009870 mov r0, r6 | r0 = r6;
0x00009872 add r1, pc | r1 = 0x1323c;
0x00009874 blx 0x2c98 | r0 = schedule_get_iCal ();
| if (r0 == 0) {
0x00009878 cbz r0, 0x989e | goto label_18;
| }
0x0000987a bl 0x8318 | r0 = fcn_00008318 ();
0x0000987e mov r1, r0 | r1 = r0;
0x00009880 mov r0, r5 | r0 = r5;
0x00009882 blx 0x2ce0 | g_thread_new ();
0x00009886 add.w r1, r6, 9 | r1 = r6 + 9;
0x0000988a add r2, sp, 0x24 | r2 += var_24h;
0x0000988c bl 0x84c0 | r0 = fcn_000084c0 (r0, r1, r2);
0x00009890 cmp r0, 0 |
| if (r0 != 0) {
0x00009892 bne.w 0x972a | goto label_1;
| }
0x00009896 b 0x97ac | goto label_2;
| label_13:
0x00009898 mov.w sb, 1 | sb = 1;
0x0000989c b 0x984c | goto label_3;
| label_18:
0x0000989e ldr r1, [pc, 0x128] |
0x000098a0 mov r0, r6 | r0 = r6;
0x000098a2 add r1, pc | r1 = 0x13270;
0x000098a4 blx 0x2c98 | r0 = schedule_get_iCal ();
| if (r0 == 0) {
0x000098a8 cbz r0, 0x98e2 | goto label_19;
| }
0x000098aa bl 0x8318 | r0 = fcn_00008318 ();
0x000098ae mov r1, r0 | r1 = r0;
0x000098b0 mov r0, r5 | r0 = r5;
0x000098b2 blx 0x2ce0 | g_thread_new ();
0x000098b6 adds r1, r6, 6 | r1 = r6 + 6;
0x000098b8 add r2, sp, 0x24 | r2 += var_24h;
0x000098ba bl 0x855c | r0 = fcn_0000855c (r0, r1, r2);
0x000098be cmp r0, 0 |
| if (r0 != 0) {
0x000098c0 bne.w 0x972a | goto label_1;
| }
0x000098c2 add r7, sp, 0xcc | r7 = sp + 0xcc;
0x000098c4 b 0x97ac | goto label_2;
| label_10:
0x000098c6 mov r4, r3 | r4 = r3;
0x000098c8 blx 0x28ac | fcn_000028ac ();
0x000098cc ldr r3, [pc, 0xfc] |
0x000098ce mov r1, r0 | r1 = r0;
0x000098d0 movs r2, 3 | r2 = 3;
0x000098d2 add r0, sp, 0x24 | r0 += var_24h;
0x000098d4 add r3, pc | r3 = 0x132a4;
0x000098d6 blx 0x2bbc | fcn_00002bbc ();
0x000098da mov r0, r4 | r0 = r4;
0x000098dc blx 0x2e8c | fcn_00002e8c ();
0x000098e0 b 0x97ac | goto label_2;
| label_19:
0x000098e2 ldr r1, [pc, 0xec] |
0x000098e4 mov r0, r6 | r0 = r6;
0x000098e6 add r1, pc | r1 = 0x132bc;
0x000098e8 blx 0x2c98 | r0 = schedule_get_iCal ();
0x000098ec cmp r0, 0 |
| if (r0 == 0) {
0x000098ee beq 0x995e | goto label_20;
| }
0x000098f0 bl 0x8318 | r0 = fcn_00008318 ();
0x000098f4 mov r1, r0 | r1 = r0;
0x000098f6 mov r0, r5 | r0 = r5;
0x000098f8 blx 0x2ce0 | g_thread_new ();
0x000098fc adds r1, r6, 6 | r1 = r6 + 6;
0x000098fe add r2, sp, 0x24 | r2 += var_24h;
0x00009900 bl 0x8628 | r0 = fcn_00008628 (r0, r1, r2);
0x00009904 cmp r0, 0 |
| if (r0 != 0) {
0x00009906 bne.w 0x972a | goto label_1;
| }
0x0000990a b 0x97ac | goto label_2;
| label_14:
0x0000990c mov.w sb, 3 | sb = 3;
0x00009910 b 0x984c | goto label_3;
| label_15:
0x00009912 mov.w sb, 4 | sb = 4;
0x00009916 b 0x984c | goto label_3;
| label_17:
0x00009918 mov.w sb, 6 | sb = 6;
0x0000991c b 0x984c | goto label_3;
| label_16:
0x0000991e mov.w sb, 5 | sb = 5;
0x00009922 b 0x984c | goto label_3;
| label_6:
0x00009924 mov r6, r0 | r6 = r0;
0x00009926 blx 0x28ac | fcn_000028ac ();
0x0000992a ldr r3, [pc, 0xa8] |
0x0000992c mov r1, r0 | r1 = r0;
0x0000992e movs r2, 3 | r2 = 3;
0x00009930 ldr r0, [sp, 0x1c] | r0 = var_1ch;
0x00009932 str r6, [sp, 0x18] | var_18h = r6;
0x00009934 add r3, pc | r3 = 0x1330e;
0x00009936 blx 0x2bbc | fcn_00002bbc ();
0x0000993a cmp r5, 0 |
| if (r5 != 0) {
0x0000993c bne.w 0x97b6 | goto label_4;
| }
0x0000993e add r7, sp, 0xec | r7 = sp + 0xec;
0x00009940 b 0x97bc | goto label_5;
| label_8:
0x00009942 blx 0x28ac | fcn_000028ac ();
0x00009946 ldr r3, [pc, 0x90] |
0x00009948 mov r1, r0 | r1 = r0;
0x0000994a movs r2, 3 | r2 = 3;
0x0000994c ldr r0, [sp, 0x1c] | r0 = var_1ch;
0x0000994e str r6, [sp] | *(sp) = r6;
0x00009950 add r3, pc | r3 = 0x1332e;
0x00009952 blx 0x2bbc | fcn_00002bbc ();
0x00009956 cmp r5, 0 |
| if (r5 != 0) {
0x00009958 bne.w 0x97b6 | goto label_4;
| }
0x0000995c b 0x97bc | goto label_5;
| label_20:
0x0000995e blx 0x28ac | fcn_000028ac ();
0x00009962 ldr r3, [pc, 0x78] |
0x00009964 mov r1, r0 | r1 = r0;
0x00009966 movs r2, 3 | r2 = 3;
0x00009968 ldr r0, [sp, 0x1c] | r0 = var_1ch;
0x0000996a str r6, [sp] | *(sp) = r6;
0x0000996c add r3, pc | r3 = 0x1334e;
0x0000996e blx 0x2bbc | fcn_00002bbc ();
0x00009972 cmp r5, 0 |
| if (r5 != 0) {
0x00009974 bne.w 0x97b6 | goto label_4;
| }
0x00009978 b 0x97bc | goto label_5;
| label_12:
0x0000997a blx 0x2cec | fprintf_chk ()
0x0000997e nop |
0x00009980 mov r2, r3 | r2 = r3;
0x00009982 movs r0, r0 |
0x00009984 lsls r0, r3, 0xc | r0 = r3 << 0xc;
0x00009986 movs r0, r0 |
0x00009988 asrs r2, r4, 0x18 | r2 = r4 >> 0x18;
0x0000998a movs r0, r0 |
0x0000998c movs r2, 0xb8 | r2 = 0xb8;
0x0000998e movs r0, r0 |
0x00009990 movs r4, 0xda | r4 = 0xda;
0x00009992 movs r0, r0 |
0x00009994 movs r2, 0x9e | r2 = 0x9e;
0x00009996 movs r0, r0 |
0x00009998 movs r4, 0xb6 | r4 = 0xb6;
0x0000999a movs r0, r0 |
0x0000999c movs r4, 0xd4 | r4 = 0xd4;
0x0000999e movs r0, r0 |
0x000099a0 movs r2, 0xba | r2 = 0xba;
0x000099a2 movs r0, r0 |
0x000099a4 adds r2, r3, 3 | r2 = r3 + 3;
0x000099a6 movs r0, r0 |
0x000099a8 movs r4, 0x68 | r4 = 0x68;
0x000099aa movs r0, r0 |
0x000099ac add r8, pc | r8 += pc;
0x000099ae movs r0, r0 |
0x000099b0 movs r3, 0xe6 | r3 = 0xe6;
0x000099b2 movs r0, r0 |
0x000099b4 movs r3, 0xdc | r3 = 0xdc;
0x000099b6 movs r0, r0 |
0x000099b8 movs r3, 0xd2 | r3 = 0xd2;
0x000099ba movs r0, r0 |
0x000099bc movs r3, 0xc8 | r3 = 0xc8;
0x000099be movs r0, r0 |
0x000099c0 movs r3, 0xbe | r3 = 0xbe;
0x000099c2 movs r0, r0 |
0x000099c4 movs r2, 0xd6 | r2 = 0xd6;
0x000099c6 movs r0, r0 |
0x000099c8 movs r2, 0xb2 | r2 = 0xb2;
0x000099ca movs r0, r0 |
0x000099cc movs r2, 0xfc | r2 = 0xfc;
0x000099ce movs r0, r0 |
0x000099d0 movs r2, 0x76 | r2 = 0x76;
0x000099d2 movs r0, r0 |
0x000099d4 movs r1, 0x78 | r1 = 0x78;
0x000099d6 movs r0, r0 |
0x000099d8 movs r3, 0xc | r3 = 0xc;
0x000099da movs r0, r0 |
0x000099dc movs r3, 0x10 | r3 = 0x10;
0x000099de movs r0, r0 |
0x000099e0 bx lr | return r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/bin/scheduled @ 0x9b50 */
| #include <stdint.h>
|
; (fcn) fcn.00009b50 () | uint32_t fcn_00009b50 (int16_t arg1, int16_t arg2, int16_t arg3) {
| int16_t var_0h;
| int16_t var_8h;
| int16_t var_ch;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x00009b50 svcmi 0xf0e92d | __asm ("svcmi 0xf0e92d");
0x00009b54 mov fp, r2 |
0x00009b56 ldr r2, [pc, 0x178] |
0x00009b58 sub sp, 0x14 |
0x00009b5a movs r6, 0 | r6 = 0;
0x00009b5c mov r5, r1 | r5 = r1;
0x00009b5e ldr r3, [pc, 0x174] | r3 = *(0x9cd6);
0x00009b60 mov r4, r0 | r4 = r0;
0x00009b62 add r2, pc | r2 = 0x13838;
0x00009b64 ldr r3, [r2, r3] |
0x00009b66 ldr r3, [r3] | r3 = *(0x13838);
0x00009b68 str r3, [sp, 0xc] | var_ch = r3;
0x00009b6a mov.w r3, 0 | r3 = 0;
0x00009b6e str r6, [sp, 8] | var_8h = r6;
0x00009b70 bl 0x9b00 | fcn_00009b00 ();
0x00009b74 mov r1, r6 | r1 = r6;
0x00009b76 blx 0x29fc | r0 = fcn_000029fc ();
0x00009b7a mov r7, r0 | r7 = r0;
0x00009b7c bl 0x8318 | r0 = fcn_00008318 ();
0x00009b80 mov r1, r0 | r1 = r0;
0x00009b82 mov r0, r7 | r0 = r7;
0x00009b84 blx 0x2ce0 | g_thread_new ();
0x00009b88 ldr r1, [pc, 0x14c] |
0x00009b8a str r5, [r0, 0x20] | *((r0 + 0x20)) = r5;
0x00009b8c mov r0, r4 | r0 = r4;
0x00009b8e add r1, pc | r1 = 0x1386a;
0x00009b90 blx 0x2c98 | r0 = schedule_get_iCal ();
0x00009b94 cmp r0, 0 |
| if (r0 == 0) {
0x00009b96 beq 0x9c8a | goto label_3;
| }
0x00009b98 ldr r1, [pc, 0x140] |
0x00009b9a adds r0, r4, 6 | r0 = r4 + 6;
0x00009b9c mov r2, r6 | r2 = r6;
0x00009b9e add r1, pc | r1 = 0x1387e;
0x00009ba0 blx 0x2d90 | r0 = fcn_00002d90 ();
0x00009ba4 ldr r4, [r0] | r4 = *(r0);
0x00009ba6 mov r8, r0 | r8 = r0;
| if (r4 == 0) {
0x00009ba8 cbz r4, 0x9c14 | goto label_4;
| }
0x00009baa ldr r6, [pc, 0x134] |
0x00009bac mov r5, r0 | r5 = r0;
0x00009bae ldr.w sb, [pc, 0x134] |
0x00009bb2 ldr.w sl, [pc, 0x134] |
0x00009bb6 add r6, pc | r6 = 0x1389c;
0x00009bb8 add sb, pc | sb = 0x138a2;
0x00009bba add sl, pc | sl = 0x138a8;
0x00009bbc b 0x9bd2 |
| while (r0 != 0) {
0x00009bbe ldr r1, [pc, 0x12c] |
0x00009bc0 adds r0, r4, 5 | r0 = r4 + 5;
0x00009bc2 add r1, pc | r1 = 0x138b4;
0x00009bc4 blx 0x2fe8 | r0 = fcn_00002fe8 ();
0x00009bc8 cmp r0, 0 |
| if (r0 != 0) {
0x00009bca bne 0x9ca0 | goto label_5;
| }
| label_0:
0x00009bcc ldr r4, [r5, 4]! | r4 = *((r5 += 4));
| if (r4 == 0) {
0x00009bd0 cbz r4, 0x9c14 | goto label_4;
| }
0x00009bd2 mov r1, r6 | r1 = r6;
0x00009bd4 mov r0, r4 | r0 = r4;
0x00009bd6 blx 0x2c98 | r0 = schedule_get_iCal ();
0x00009bda cmp r0, 0 |
0x00009bdc bne 0x9bbe |
| }
0x00009bde mov r1, sb | r1 = sb;
0x00009be0 mov r0, r4 | r0 = r4;
0x00009be2 blx 0x2c98 | r0 = schedule_get_iCal ();
| if (r0 == 0) {
0x00009be6 cbz r0, 0x9c40 | goto label_6;
| }
0x00009be8 bl 0x8318 | r0 = fcn_00008318 ();
0x00009bec mov r1, r0 | r1 = r0;
0x00009bee mov r0, r7 | r0 = r7;
0x00009bf0 blx 0x2ce0 | g_thread_new ();
0x00009bf4 add r2, sp, 8 | r2 += var_8h;
0x00009bf6 add.w r1, r4, 9 | r1 = r4 + 9;
0x00009bfa bl 0x84c0 | r0 = fcn_000084c0 (r0, r1, r2);
0x00009bfe cmp r0, 0 |
| if (r0 != 0) {
0x00009c00 bne 0x9bcc | goto label_0;
| }
| label_1:
0x00009c02 ldr r1, [sp, 8] | r1 = var_8h;
0x00009c04 mov r0, fp | r0 = fp;
0x00009c06 blx 0x2b34 | fcn_00002b34 ();
| if (r7 != 0) {
| label_2:
0x00009c0a cbz r7, 0x9c12 |
0x00009c0c mov r0, r7 | r0 = r7;
0x00009c0e blx 0x2864 | fcn_00002864 ();
| }
0x00009c12 movs r7, 0 | r7 = 0;
| label_4:
0x00009c14 mov r0, r8 | r0 = r8;
0x00009c16 blx 0x2e8c | fcn_00002e8c ();
0x00009c1a bl 0x8318 | r0 = fcn_00008318 ();
0x00009c1e mov r1, r0 | r1 = r0;
0x00009c20 mov r0, r7 | r0 = r7;
0x00009c22 blx 0x2ce0 | g_thread_new ();
0x00009c26 ldr r2, [pc, 0xc8] |
0x00009c28 ldr r3, [pc, 0xa8] | r3 = *(0x9cd4);
0x00009c2a add r2, pc | r2 = 0x13920;
0x00009c2c ldr r3, [r2, r3] | r3 = *(0x13920);
0x00009c2e ldr r2, [r3] | r2 = *(0x13920);
0x00009c30 ldr r3, [sp, 0xc] | r3 = var_ch;
0x00009c32 eors r2, r3 | r2 ^= r3;
0x00009c34 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00009c38 bne 0x9ccc | goto label_7;
| }
0x00009c3a add sp, 0x14 |
0x00009c3c pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_6:
0x00009c40 mov r1, sl | r1 = sl;
0x00009c42 mov r0, r4 | r0 = r4;
0x00009c44 blx 0x2c98 | r0 = schedule_get_iCal ();
| if (r0 == 0) {
0x00009c48 cbz r0, 0x9c64 | goto label_8;
| }
0x00009c4a bl 0x8318 | r0 = fcn_00008318 ();
0x00009c4e mov r1, r0 | r1 = r0;
0x00009c50 mov r0, r7 | r0 = r7;
0x00009c52 blx 0x2ce0 | g_thread_new ();
0x00009c56 adds r1, r4, 6 | r1 = r4 + 6;
0x00009c58 add r2, sp, 8 | r2 += var_8h;
0x00009c5a bl 0x855c | r0 = fcn_0000855c (r0, r1, r2);
0x00009c5e cmp r0, 0 |
| if (r0 != 0) {
0x00009c60 bne 0x9bcc | goto label_0;
| }
0x00009c62 b 0x9c02 | goto label_1;
| label_8:
0x00009c64 ldr r1, [pc, 0x8c] |
0x00009c66 mov r0, r4 | r0 = r4;
0x00009c68 add r1, pc | r1 = 0x13960;
0x00009c6a blx 0x2c98 | r0 = schedule_get_iCal ();
| if (r0 == 0) {
0x00009c6e cbz r0, 0x9cb6 | goto label_9;
| }
0x00009c70 bl 0x8318 | r0 = fcn_00008318 ();
0x00009c74 mov r1, r0 | r1 = r0;
0x00009c76 mov r0, r7 | r0 = r7;
0x00009c78 blx 0x2ce0 | g_thread_new ();
0x00009c7c adds r1, r4, 6 | r1 = r4 + 6;
0x00009c7e add r2, sp, 8 | r2 += var_8h;
0x00009c80 bl 0x8628 | fcn_00008628 (r0, r1, r2);
0x00009c82 ldc2l p8, c2, [r2], {0} | __asm ("ldc2l p8, c2, [r2], {0}");
| if (r1 != r4) {
0x00009c86 bne 0x9bcc | goto label_0;
| }
0x00009c88 b 0x9c02 | goto label_1;
| label_3:
0x00009c8a mov r8, r0 | r8 = r0;
0x00009c8c blx 0x28ac | fcn_000028ac ();
0x00009c90 ldr r3, [pc, 0x64] |
0x00009c92 mov r1, r0 | r1 = r0;
0x00009c94 movs r2, 3 | r2 = 3;
0x00009c96 mov r0, fp | r0 = fp;
0x00009c98 add r3, pc | r3 = 0x13994;
0x00009c9a blx 0x2bbc | fcn_00002bbc ();
0x00009c9e b 0x9c0a | goto label_2;
| label_5:
0x00009ca0 blx 0x28ac | fcn_000028ac ();
0x00009ca4 ldr r3, [pc, 0x54] |
0x00009ca6 mov r1, r0 | r1 = r0;
0x00009ca8 movs r2, 3 | r2 = 3;
0x00009caa mov r0, fp | r0 = fp;
0x00009cac str r4, [sp] | *(sp) = r4;
0x00009cae add r3, pc | r3 = 0x139ae;
0x00009cb0 blx 0x2bbc | fcn_00002bbc ();
0x00009cb4 b 0x9c0a | goto label_2;
| label_9:
0x00009cb6 blx 0x28ac | fcn_000028ac ();
0x00009cba ldr r3, [pc, 0x44] |
0x00009cbc mov r1, r0 | r1 = r0;
0x00009cbe movs r2, 3 | r2 = 3;
0x00009cc0 mov r0, fp | r0 = fp;
0x00009cc2 str r4, [sp] | *(sp) = r4;
0x00009cc4 add r3, pc | r3 = 0x139ca;
0x00009cc6 blx 0x2bbc | fcn_00002bbc ();
0x00009cca b 0x9c0a | goto label_2;
| label_7:
0x00009ccc blx 0x2cec | fprintf_chk ()
0x00009cd0 adcs r2, r5 | __asm ("adcs r2, r5");
0x00009cd2 movs r0, r0 |
0x00009cd4 lsls r0, r3, 0xc | r0 = r3 << 0xc;
0x00009cd6 movs r0, r0 |
0x00009cd8 asrs r2, r6, 5 | r2 = r6 >> 5;
0x00009cda movs r0, r0 |
0x00009cdc subs r2, r1, 0 | r2 = r1 - 0;
0x00009cde movs r0, r0 |
0x00009ce0 adds r6, r6, 7 | r6 += 7;
0x00009ce2 movs r0, r0 |
0x00009ce4 subs r0, r2, 6 | r0 = r2 - 6;
0x00009ce6 movs r0, r0 |
0x00009ce8 subs r2, r3, 6 | r2 = r3 - 6;
0x00009cea movs r0, r0 |
0x00009cec subs r6, r3, 0 | r6 = r3 - 0;
0x00009cee movs r0, r0 |
0x00009cf0 lsls r2, r4 | r2 <<= r4;
0x00009cf2 movs r0, r0 |
0x00009cf4 subs r4, r6, 3 | r4 = r6 - 3;
0x00009cf6 movs r0, r0 |
0x00009cf8 subs r4, r2, 0 | r4 = r2 - 0;
0x00009cfa movs r0, r0 |
0x00009cfc movs r0, 0xa | r0 = 0xa;
0x00009cfe movs r0, r0 |
0x00009d00 movs r0, 0x14 | r0 = 0x14;
0x00009d02 movs r0, r0 |
0x00009d04 bx lr | return r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/bin/scheduled @ 0x9e74 */
| #include <stdint.h>
|
; (fcn) fcn.00009e74 () | uint32_t fcn_00009e74 (int16_t arg1, int16_t arg2, int16_t arg3) {
| int16_t var_0h;
| int16_t var_8h;
| int16_t var_ch;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x00009e74 svcmi 0xf0e92d | __asm ("svcmi 0xf0e92d");
0x00009e78 mov fp, r2 |
0x00009e7a ldr r2, [pc, 0x178] |
0x00009e7c sub sp, 0x14 |
0x00009e7e movs r6, 0 | r6 = 0;
0x00009e80 mov r5, r1 | r5 = r1;
0x00009e82 ldr r3, [pc, 0x174] | r3 = *(0x9ffa);
0x00009e84 mov r4, r0 | r4 = r0;
0x00009e86 add r2, pc | r2 = 0x13e80;
0x00009e88 ldr r3, [r2, r3] |
0x00009e8a ldr r3, [r3] | r3 = *(0x13e80);
0x00009e8c str r3, [sp, 0xc] | var_ch = r3;
0x00009e8e mov.w r3, 0 | r3 = 0;
0x00009e92 str r6, [sp, 8] | var_8h = r6;
0x00009e94 bl 0x9e24 | fcn_00009e24 ();
0x00009e98 mov r1, r6 | r1 = r6;
0x00009e9a blx 0x29fc | r0 = fcn_000029fc ();
0x00009e9e mov r7, r0 | r7 = r0;
0x00009ea0 bl 0x8318 | r0 = fcn_00008318 ();
0x00009ea4 mov r1, r0 | r1 = r0;
0x00009ea6 mov r0, r7 | r0 = r7;
0x00009ea8 blx 0x2ce0 | g_thread_new ();
0x00009eac ldr r1, [pc, 0x14c] |
0x00009eae str r5, [r0, 0x20] | *((r0 + 0x20)) = r5;
0x00009eb0 mov r0, r4 | r0 = r4;
0x00009eb2 add r1, pc | r1 = 0x13eb2;
0x00009eb4 blx 0x2c98 | r0 = schedule_get_iCal ();
0x00009eb8 cmp r0, 0 |
| if (r0 == 0) {
0x00009eba beq 0x9fae | goto label_3;
| }
0x00009ebc ldr r1, [pc, 0x140] |
0x00009ebe adds r0, r4, 6 | r0 = r4 + 6;
0x00009ec0 mov r2, r6 | r2 = r6;
0x00009ec2 add r1, pc | r1 = 0x13ec6;
0x00009ec4 blx 0x2d90 | r0 = fcn_00002d90 ();
0x00009ec8 ldr r4, [r0] | r4 = *(r0);
0x00009eca mov r8, r0 | r8 = r0;
| if (r4 == 0) {
0x00009ecc cbz r4, 0x9f38 | goto label_4;
| }
0x00009ece ldr r6, [pc, 0x134] |
0x00009ed0 mov r5, r0 | r5 = r0;
0x00009ed2 ldr.w sb, [pc, 0x134] |
0x00009ed6 ldr.w sl, [pc, 0x134] |
0x00009eda add r6, pc | r6 = 0x13ee4;
0x00009edc add sb, pc | sb = 0x13eea;
0x00009ede add sl, pc | sl = 0x13ef0;
0x00009ee0 b 0x9ef6 |
| while (r0 != 0) {
0x00009ee2 ldr r1, [pc, 0x12c] |
0x00009ee4 adds r0, r4, 5 | r0 = r4 + 5;
0x00009ee6 add r1, pc | r1 = 0x13efc;
0x00009ee8 blx 0x2fe8 | r0 = fcn_00002fe8 ();
0x00009eec cmp r0, 0 |
| if (r0 != 0) {
0x00009eee bne 0x9fc4 | goto label_5;
| }
| label_0:
0x00009ef0 ldr r4, [r5, 4]! | r4 = *((r5 += 4));
| if (r4 == 0) {
0x00009ef4 cbz r4, 0x9f38 | goto label_4;
| }
0x00009ef6 mov r1, r6 | r1 = r6;
0x00009ef8 mov r0, r4 | r0 = r4;
0x00009efa blx 0x2c98 | r0 = schedule_get_iCal ();
0x00009efe cmp r0, 0 |
0x00009f00 bne 0x9ee2 |
| }
0x00009f02 mov r1, sb | r1 = sb;
0x00009f04 mov r0, r4 | r0 = r4;
0x00009f06 blx 0x2c98 | r0 = schedule_get_iCal ();
| if (r0 == 0) {
0x00009f0a cbz r0, 0x9f64 | goto label_6;
| }
0x00009f0c bl 0x8318 | r0 = fcn_00008318 ();
0x00009f10 mov r1, r0 | r1 = r0;
0x00009f12 mov r0, r7 | r0 = r7;
0x00009f14 blx 0x2ce0 | g_thread_new ();
0x00009f16 vfma.f32 s21, s8, s4 | __asm ("vfma.f32 s21, s8, s4");
0x00009f1a add.w r1, r4, 9 | r1 = r4 + 9;
0x00009f1e bl 0x84c0 | r0 = fcn_000084c0 (r0, r1, r2);
0x00009f22 cmp r0, 0 |
| if (r0 != 0) {
0x00009f24 bne 0x9ef0 | goto label_0;
| }
| label_1:
0x00009f26 ldr r1, [sp, 8] | r1 = var_8h;
0x00009f28 mov r0, fp | r0 = fp;
0x00009f2a blx 0x2b34 | fcn_00002b34 ();
| if (r7 != 0) {
| label_2:
0x00009f2e cbz r7, 0x9f36 |
0x00009f30 mov r0, r7 | r0 = r7;
0x00009f32 blx 0x2864 | fcn_00002864 ();
| }
0x00009f36 movs r7, 0 | r7 = 0;
| label_4:
0x00009f38 mov r0, r8 | r0 = r8;
0x00009f3a blx 0x2e8c | fcn_00002e8c ();
0x00009f3e bl 0x8318 | r0 = fcn_00008318 ();
0x00009f42 mov r1, r0 | r1 = r0;
0x00009f44 mov r0, r7 | r0 = r7;
0x00009f46 blx 0x2ce0 | g_thread_new ();
0x00009f4a ldr r2, [pc, 0xc8] |
0x00009f4c ldr r3, [pc, 0xa8] | r3 = *(0x9ff8);
0x00009f4e add r2, pc | r2 = 0x13f68;
0x00009f50 ldr r3, [r2, r3] | r3 = *(0x13f68);
0x00009f52 ldr r2, [r3] | r2 = *(0x13f68);
0x00009f54 ldr r3, [sp, 0xc] | r3 = var_ch;
0x00009f56 eors r2, r3 | r2 ^= r3;
0x00009f58 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00009f5c bne 0x9ff0 | goto label_7;
| }
0x00009f5e add sp, 0x14 |
0x00009f60 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_6:
0x00009f64 mov r1, sl | r1 = sl;
0x00009f66 mov r0, r4 | r0 = r4;
0x00009f68 blx 0x2c98 | r0 = schedule_get_iCal ();
| if (r0 == 0) {
0x00009f6c cbz r0, 0x9f88 | goto label_8;
| }
0x00009f6e bl 0x8318 | r0 = fcn_00008318 ();
0x00009f72 mov r1, r0 | r1 = r0;
0x00009f74 mov r0, r7 | r0 = r7;
0x00009f76 blx 0x2ce0 | g_thread_new ();
0x00009f7a adds r1, r4, 6 | r1 = r4 + 6;
0x00009f7c add r2, sp, 8 | r2 += var_8h;
0x00009f7e bl 0x855c | r0 = fcn_0000855c (r0, r1, r2);
0x00009f82 cmp r0, 0 |
| if (r0 != 0) {
0x00009f84 bne 0x9ef0 | goto label_0;
| }
0x00009f86 b 0x9f26 | goto label_1;
| label_8:
0x00009f88 ldr r1, [pc, 0x8c] |
0x00009f8a mov r0, r4 | r0 = r4;
0x00009f8c add r1, pc | r1 = 0x13fa8;
0x00009f8e blx 0x2c98 | r0 = schedule_get_iCal ();
| if (r0 == 0) {
0x00009f92 cbz r0, 0x9fda | goto label_9;
| }
0x00009f94 bl 0x8318 | r0 = fcn_00008318 ();
0x00009f98 mov r1, r0 | r1 = r0;
0x00009f9a mov r0, r7 | r0 = r7;
0x00009f9c blx 0x2ce0 | g_thread_new ();
0x00009fa0 adds r1, r4, 6 | r1 = r4 + 6;
0x00009fa2 add r2, sp, 8 | r2 += var_8h;
0x00009fa4 bl 0x8628 | r0 = fcn_00008628 (r0, r1, r2);
0x00009fa8 cmp r0, 0 |
| if (r0 != 0) {
0x00009faa bne 0x9ef0 | goto label_0;
| }
0x00009fac b 0x9f26 | goto label_1;
| label_3:
0x00009fae mov r8, r0 | r8 = r0;
0x00009fb0 blx 0x28ac | fcn_000028ac ();
0x00009fb4 ldr r3, [pc, 0x64] |
0x00009fb6 mov r1, r0 | r1 = r0;
0x00009fb8 movs r2, 3 | r2 = 3;
0x00009fba mov r0, fp | r0 = fp;
0x00009fbc add r3, pc | r3 = 0x13fdc;
0x00009fbe blx 0x2bbc | fcn_00002bbc ();
0x00009fc2 b 0x9f2e | goto label_2;
| label_5:
0x00009fc4 blx 0x28ac | fcn_000028ac ();
0x00009fc8 ldr r3, [pc, 0x54] |
0x00009fca mov r1, r0 | r1 = r0;
0x00009fcc movs r2, 3 | r2 = 3;
0x00009fce mov r0, fp | r0 = fp;
0x00009fd0 str r4, [sp] | *(sp) = r4;
0x00009fd2 add r3, pc | r3 = 0x13ff6;
0x00009fd4 blx 0x2bbc | fcn_00002bbc ();
0x00009fd6 ldcl p7, c14, [r2, 0x2a4]! | __asm ("ldcl p7, c14, [r2, 0x2a4]!");
| label_9:
0x00009fda blx 0x28ac | fcn_000028ac ();
0x00009fde ldr r3, [pc, 0x44] |
0x00009fe0 mov r1, r0 | r1 = r0;
0x00009fe2 movs r2, 3 | r2 = 3;
0x00009fe4 mov r0, fp | r0 = fp;
0x00009fe6 str r4, [sp] | *(sp) = r4;
0x00009fe8 add r3, pc | r3 = 0x14012;
0x00009fea blx 0x2bbc | fcn_00002bbc ();
0x00009fee b 0x9f2e | goto label_2;
| label_7:
0x00009ff0 blx 0x2cec | fprintf_chk ()
0x00009ff4 subs r6, 0x46 | r6 -= 0x46;
0x00009ff6 movs r0, r0 |
0x00009ff8 lsls r0, r3, 0xc | r0 = r3 << 0xc;
0x00009ffa movs r0, r0 |
0x00009ffc lsrs r6, r1, 0x19 | r6 = r1 >> 0x19;
0x00009ffe movs r0, r0 |
0x0000a000 subs r6, r4, r3 | r6 = r4 - r3;
0x0000a002 movs r0, r0 |
0x0000a004 subs r2, r2, r3 | r2 -= r3;
0x0000a006 movs r0, r0 |
0x0000a008 adds r4, r5, 1 | r4 = r5 + 1;
0x0000a00a movs r0, r0 |
0x0000a00c adds r6, r6, 1 | r6++;
0x0000a00e movs r0, r0 |
0x0000a010 subs r2, r0, r4 | r2 = r0 - r4;
0x0000a012 movs r0, r0 |
0x0000a014 subs r5, 0x7e | r5 -= 0x7e;
0x0000a016 movs r0, r0 |
0x0000a018 subs r0, r2, r7 | r0 = r2 - r7;
0x0000a01a movs r0, r0 |
0x0000a01c subs r0, r6, r3 | r0 = r6 - r3;
0x0000a01e movs r0, r0 |
0x0000a020 adds r6, r0, 5 | r6 = r0 + 5;
0x0000a022 movs r0, r0 |
0x0000a024 adds r0, r2, 5 | r0 = r2 + 5;
0x0000a026 movs r0, r0 |
0x0000a028 bx lr | return r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/bin/scheduled @ 0xa198 */
| #include <stdint.h>
|
; (fcn) fcn.0000a198 () | uint32_t fcn_0000a198 (int16_t arg1, int16_t arg2, int16_t arg3) {
| int16_t var_0h;
| int16_t var_8h;
| int16_t var_ch;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x0000a198 svcmi 0xf0e92d | __asm ("svcmi 0xf0e92d");
0x0000a19c mov fp, r2 |
0x0000a19e ldr r2, [pc, 0x178] |
0x0000a1a0 sub sp, 0x14 |
0x0000a1a2 movs r6, 0 | r6 = 0;
0x0000a1a4 mov r5, r1 | r5 = r1;
0x0000a1a6 ldr r3, [pc, 0x174] | r3 = *(0xa31e);
0x0000a1a8 mov r4, r0 | r4 = r0;
0x0000a1aa add r2, pc | r2 = 0x144c8;
0x0000a1ac ldr r3, [r2, r3] |
0x0000a1ae ldr r3, [r3] | r3 = *(0x144c8);
0x0000a1b0 str r3, [sp, 0xc] | var_ch = r3;
0x0000a1b2 mov.w r3, 0 | r3 = 0;
0x0000a1b6 str r6, [sp, 8] | var_8h = r6;
0x0000a1b8 bl 0xa148 | fcn_0000a148 ();
0x0000a1bc mov r1, r6 | r1 = r6;
0x0000a1be blx 0x29fc | r0 = fcn_000029fc ();
0x0000a1c2 mov r7, r0 | r7 = r0;
0x0000a1c4 bl 0x8318 | r0 = fcn_00008318 ();
0x0000a1c8 mov r1, r0 | r1 = r0;
0x0000a1ca mov r0, r7 | r0 = r7;
0x0000a1cc blx 0x2ce0 | g_thread_new ();
0x0000a1d0 ldr r1, [pc, 0x14c] |
0x0000a1d2 str r5, [r0, 0x20] | *((r0 + 0x20)) = r5;
0x0000a1d4 mov r0, r4 | r0 = r4;
0x0000a1d6 add r1, pc | r1 = 0x144fa;
0x0000a1d8 blx 0x2c98 | r0 = schedule_get_iCal ();
0x0000a1dc cmp r0, 0 |
| if (r0 == 0) {
0x0000a1de beq 0xa2d2 | goto label_3;
| }
0x0000a1e0 ldr r1, [pc, 0x140] |
0x0000a1e2 adds r0, r4, 6 | r0 = r4 + 6;
0x0000a1e4 mov r2, r6 | r2 = r6;
0x0000a1e6 add r1, pc | r1 = 0x1450e;
0x0000a1e8 blx 0x2d90 | r0 = fcn_00002d90 ();
0x0000a1ec ldr r4, [r0] | r4 = *(r0);
0x0000a1ee mov r8, r0 | r8 = r0;
| if (r4 == 0) {
0x0000a1f0 cbz r4, 0xa25c | goto label_4;
| }
0x0000a1f2 ldr r6, [pc, 0x134] |
0x0000a1f4 mov r5, r0 | r5 = r0;
0x0000a1f6 ldr.w sb, [pc, 0x134] |
0x0000a1fa ldr.w sl, [pc, 0x134] |
0x0000a1fe add r6, pc | r6 = 0x1452c;
0x0000a200 add sb, pc | sb = 0x14532;
0x0000a202 add sl, pc | sl = 0x14538;
0x0000a204 b 0xa21a |
| while (r0 != 0) {
0x0000a206 ldr r1, [pc, 0x12c] |
0x0000a208 adds r0, r4, 5 | r0 = r4 + 5;
0x0000a20a add r1, pc | r1 = 0x14544;
0x0000a20c blx 0x2fe8 | r0 = fcn_00002fe8 ();
0x0000a210 cmp r0, 0 |
| if (r0 != 0) {
0x0000a212 bne 0xa2e8 | goto label_5;
| }
| label_0:
0x0000a214 ldr r4, [r5, 4]! | r4 = *((r5 += 4));
| if (r4 == 0) {
0x0000a218 cbz r4, 0xa25c | goto label_4;
| }
0x0000a21a mov r1, r6 | r1 = r6;
0x0000a21c mov r0, r4 | r0 = r4;
0x0000a21e blx 0x2c98 | r0 = schedule_get_iCal ();
0x0000a222 cmp r0, 0 |
0x0000a224 bne 0xa206 |
| }
0x0000a226 mov r1, sb | r1 = sb;
0x0000a228 mov r0, r4 | r0 = r4;
0x0000a22a blx 0x2c98 | r0 = schedule_get_iCal ();
| if (r0 == 0) {
0x0000a22e cbz r0, 0xa288 | goto label_6;
| }
0x0000a230 bl 0x8318 | r0 = fcn_00008318 ();
0x0000a234 mov r1, r0 | r1 = r0;
0x0000a236 mov r0, r7 | r0 = r7;
0x0000a238 blx 0x2ce0 | g_thread_new ();
0x0000a23c add r2, sp, 8 | r2 += var_8h;
0x0000a23e add.w r1, r4, 9 | r1 = r4 + 9;
0x0000a242 bl 0x84c0 | r0 = fcn_000084c0 (r0, r1, r2);
0x0000a246 cmp r0, 0 |
| if (r0 != 0) {
0x0000a248 bne 0xa214 | goto label_0;
| }
| label_1:
0x0000a24a ldr r1, [sp, 8] | r1 = var_8h;
0x0000a24c mov r0, fp | r0 = fp;
0x0000a24e blx 0x2b34 | fcn_00002b34 ();
| if (r7 != 0) {
| label_2:
0x0000a252 cbz r7, 0xa25a |
0x0000a254 mov r0, r7 | r0 = r7;
0x0000a256 blx 0x2864 | fcn_00002864 ();
| }
0x0000a25a movs r7, 0 | r7 = 0;
| label_4:
0x0000a25c mov r0, r8 | r0 = r8;
0x0000a25e blx 0x2e8c | fcn_00002e8c ();
0x0000a262 bl 0x8318 | r0 = fcn_00008318 ();
0x0000a266 mov r1, r0 | r1 = r0;
0x0000a268 mov r0, r7 | r0 = r7;
0x0000a26a blx 0x2ce0 | g_thread_new ();
0x0000a26e ldr r2, [pc, 0xc8] |
0x0000a270 ldr r3, [pc, 0xa8] | r3 = *(0xa31c);
0x0000a272 add r2, pc | r2 = 0x145b0;
0x0000a274 ldr r3, [r2, r3] | r3 = *(0x145b0);
0x0000a276 ldr r2, [r3] | r2 = *(0x145b0);
0x0000a278 ldr r3, [sp, 0xc] | r3 = var_ch;
0x0000a27a eors r2, r3 | r2 ^= r3;
0x0000a27c mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0000a280 bne 0xa314 | goto label_7;
| }
0x0000a282 add sp, 0x14 |
0x0000a284 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_6:
0x0000a288 mov r1, sl | r1 = sl;
0x0000a28a mov r0, r4 | r0 = r4;
0x0000a28c blx 0x2c98 | r0 = schedule_get_iCal ();
| if (r0 == 0) {
0x0000a290 cbz r0, 0xa2ac | goto label_8;
| }
0x0000a292 bl 0x8318 | r0 = fcn_00008318 ();
0x0000a296 mov r1, r0 | r1 = r0;
0x0000a298 mov r0, r7 | r0 = r7;
0x0000a29a blx 0x2ce0 | g_thread_new ();
0x0000a29e adds r1, r4, 6 | r1 = r4 + 6;
0x0000a2a0 add r2, sp, 8 | r2 += var_8h;
0x0000a2a2 bl 0x855c | r0 = fcn_0000855c (r0, r1, r2);
0x0000a2a6 cmp r0, 0 |
| if (r0 != 0) {
0x0000a2a8 bne 0xa214 | goto label_0;
| }
0x0000a2aa b 0xa24a | goto label_1;
| label_8:
0x0000a2ac ldr r1, [pc, 0x8c] |
0x0000a2ae mov r0, r4 | r0 = r4;
0x0000a2b0 add r1, pc | r1 = 0x145f0;
0x0000a2b2 blx 0x2c98 | r0 = schedule_get_iCal ();
| if (r0 == 0) {
0x0000a2b6 cbz r0, 0xa2fe | goto label_9;
| }
0x0000a2b8 bl 0x8318 | r0 = fcn_00008318 ();
0x0000a2bc mov r1, r0 | r1 = r0;
0x0000a2be mov r0, r7 | r0 = r7;
0x0000a2c0 blx 0x2ce0 | g_thread_new ();
0x0000a2c4 adds r1, r4, 6 | r1 = r4 + 6;
0x0000a2c6 add r2, sp, 8 | r2 += var_8h;
0x0000a2c8 bl 0x8628 | r0 = fcn_00008628 (r0, r1, r2);
0x0000a2cc cmp r0, 0 |
| if (r0 != 0) {
0x0000a2ce bne 0xa214 | goto label_0;
| }
0x0000a2d0 b 0xa24a | goto label_1;
| label_3:
0x0000a2d2 mov r8, r0 | r8 = r0;
0x0000a2d4 blx 0x28ac | fcn_000028ac ();
0x0000a2d8 ldr r3, [pc, 0x64] |
0x0000a2da mov r1, r0 | r1 = r0;
0x0000a2dc movs r2, 3 | r2 = 3;
0x0000a2de mov r0, fp | r0 = fp;
0x0000a2e0 add r3, pc | r3 = 0x14624;
0x0000a2e2 blx 0x2bbc | fcn_00002bbc ();
0x0000a2e6 b 0xa252 | goto label_2;
| label_5:
0x0000a2e8 blx 0x28ac | fcn_000028ac ();
0x0000a2ec ldr r3, [pc, 0x54] |
0x0000a2ee mov r1, r0 | r1 = r0;
0x0000a2f0 movs r2, 3 | r2 = 3;
0x0000a2f2 mov r0, fp | r0 = fp;
0x0000a2f4 str r4, [sp] | *(sp) = r4;
0x0000a2f6 add r3, pc | r3 = 0x1463e;
0x0000a2f8 blx 0x2bbc | fcn_00002bbc ();
0x0000a2fc b 0xa252 | goto label_2;
| label_9:
0x0000a2fe blx 0x28ac | fcn_000028ac ();
0x0000a302 ldr r3, [pc, 0x44] |
0x0000a304 mov r1, r0 | r1 = r0;
0x0000a306 movs r2, 3 | r2 = 3;
0x0000a308 mov r0, fp | r0 = fp;
0x0000a30a str r4, [sp] | *(sp) = r4;
0x0000a30c add r3, pc | r3 = 0x1465a;
0x0000a30e blx 0x2bbc | fcn_00002bbc ();
0x0000a312 b 0xa252 | goto label_2;
| label_7:
0x0000a314 blx 0x2cec | fprintf_chk ()
0x0000a318 subs r3, 0x22 | r3 -= 0x22;
0x0000a31a movs r0, r0 |
0x0000a31c lsls r0, r3, 0xc | r0 = r3 << 0xc;
0x0000a31e movs r0, r0 |
0x0000a320 lsrs r2, r5, 0xc | r2 = r5 >> 0xc;
0x0000a322 movs r0, r0 |
0x0000a324 asrs r2, r0, 0x1f | r2 = r0 >> 0x1f;
0x0000a326 movs r0, r0 |
0x0000a328 asrs r6, r5, 0x1e | r6 = r5 >> 0x1e;
0x0000a32a movs r0, r0 |
0x0000a32c adds r0, r1, r5 | r0 = r1 + r5;
0x0000a32e movs r0, r0 |
0x0000a330 adds r2, r2, r5 | r2 += r5;
0x0000a332 movs r0, r0 |
0x0000a334 asrs r6, r4, 0x1f | r6 = r4 >> 0x1f;
0x0000a336 movs r0, r0 |
0x0000a338 subs r2, 0x5a | r2 -= 0x5a;
0x0000a33a movs r0, r0 |
0x0000a33c adds r4, r5, r2 | r4 = r5 + r2;
0x0000a33e movs r0, r0 |
0x0000a340 asrs r4, r1, 0x1f | r4 = r1 >> 0x1f;
0x0000a342 movs r0, r0 |
0x0000a344 subs r2, r0, r2 | r2 = r0 - r2;
0x0000a346 movs r0, r0 |
0x0000a348 subs r0, r2, r2 | r0 = r2 - r2;
0x0000a34a movs r0, r0 |
0x0000a34c bx lr | return r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/bin/scheduled @ 0xa4ac */
| #include <stdint.h>
|
; (fcn) fcn.0000a4ac () | void fcn_0000a4ac (int16_t arg1, int16_t arg2, int16_t arg3) {
| int16_t var_0h;
| int16_t var_8h;
| int16_t var_ch;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x0000a4ac svcmi 0xf0e92d | __asm ("svcmi 0xf0e92d");
0x0000a4b0 mov fp, r2 |
0x0000a4b2 ldr r2, [pc, 0x178] |
0x0000a4b4 sub sp, 0x14 |
0x0000a4b6 movs r6, 0 | r6 = 0;
0x0000a4b8 mov r5, r1 | r5 = r1;
0x0000a4ba ldr r3, [pc, 0x174] | r3 = *(0xa632);
0x0000a4bc mov r4, r0 | r4 = r0;
0x0000a4be add r2, pc | r2 = 0x14af0;
0x0000a4c0 ldr r3, [r2, r3] |
0x0000a4c2 ldr r3, [r3] | r3 = *(0x14af0);
0x0000a4c4 str r3, [sp, 0xc] | var_ch = r3;
0x0000a4c6 mov.w r3, 0 | r3 = 0;
0x0000a4ca str r6, [sp, 8] | var_8h = r6;
0x0000a4cc bl 0xa45c | fcn_0000a45c ();
0x0000a4d0 mov r1, r6 | r1 = r6;
0x0000a4d2 blx 0x29fc | r0 = fcn_000029fc ();
0x0000a4d6 mov r7, r0 | r7 = r0;
0x0000a4d8 bl 0x8318 | r0 = fcn_00008318 ();
0x0000a4dc mov r1, r0 | r1 = r0;
0x0000a4de mov r0, r7 | r0 = r7;
0x0000a4e0 blx 0x2ce0 | g_thread_new ();
0x0000a4e4 ldr r1, [pc, 0x14c] |
0x0000a4e6 str r5, [r0, 0x20] | *((r0 + 0x20)) = r5;
0x0000a4e8 mov r0, r4 | r0 = r4;
0x0000a4ea add r1, pc | r1 = 0x14b22;
0x0000a4ec blx 0x2c98 | r0 = schedule_get_iCal ();
0x0000a4f0 cmp r0, 0 |
| if (r0 == 0) {
0x0000a4f2 beq 0xa5e6 | goto label_3;
| }
0x0000a4f4 ldr r1, [pc, 0x140] |
0x0000a4f6 adds r0, r4, 6 | r0 = r4 + 6;
0x0000a4f8 mov r2, r6 | r2 = r6;
0x0000a4fa add r1, pc | r1 = 0x14b36;
0x0000a4fc blx 0x2d90 | r0 = fcn_00002d90 ();
0x0000a500 ldr r4, [r0] | r4 = *(r0);
0x0000a502 mov r8, r0 | r8 = r0;
| if (r4 == 0) {
0x0000a504 cbz r4, 0xa570 | goto label_4;
| }
0x0000a506 ldr r6, [pc, 0x134] |
0x0000a508 mov r5, r0 | r5 = r0;
0x0000a50a ldr.w sb, [pc, 0x134] |
0x0000a50e ldr.w sl, [pc, 0x134] |
0x0000a512 add r6, pc | r6 = 0x14b54;
0x0000a514 add sb, pc | sb = 0x14b5a;
0x0000a516 add sl, pc | sl = 0x14b60;
0x0000a518 b 0xa52e |
| while (r8 != r2) {
0x0000a51a ldr r1, [pc, 0x12c] |
0x0000a51c adds r0, r4, 5 | r0 = r4 + 5;
0x0000a51e add r1, pc | r1 = 0x14b6c;
0x0000a520 blx 0x2fe8 | r0 = fcn_00002fe8 ();
0x0000a524 cmp r0, 0 |
| if (r0 != 0) {
0x0000a526 bne 0xa5fc | goto label_5;
| }
| label_0:
0x0000a528 ldr r4, [r5, 4]! | r4 = *((r5 += 4));
| if (r4 == 0) {
0x0000a52c cbz r4, 0xa570 | goto label_4;
| }
0x0000a52e mov r1, r6 | r1 = r6;
0x0000a530 mov r0, r4 | r0 = r4;
0x0000a532 blx 0x2c98 | r0 = schedule_get_iCal ();
0x0000a534 subs.w r8, r2, r0, lsl 8 | r8 = r2 - (r0 << 8);
0x0000a538 bne 0xa51a |
| }
0x0000a53a mov r1, sb | r1 = sb;
0x0000a53c mov r0, r4 | r0 = r4;
0x0000a53e blx 0x2c98 | r0 = schedule_get_iCal ();
| if (r0 == 0) {
0x0000a542 cbz r0, 0xa59c | goto label_6;
| }
0x0000a544 bl 0x8318 | r0 = fcn_00008318 ();
0x0000a548 mov r1, r0 | r1 = r0;
0x0000a54a mov r0, r7 | r0 = r7;
0x0000a54c blx 0x2ce0 | g_thread_new ();
0x0000a550 add r2, sp, 8 | r2 += var_8h;
0x0000a552 add.w r1, r4, 9 | r1 = r4 + 9;
0x0000a556 bl 0x84c0 | r0 = fcn_000084c0 (r0, r1, r2);
0x0000a55a cmp r0, 0 |
| if (r0 != 0) {
0x0000a55c bne 0xa528 | goto label_0;
| }
| label_1:
0x0000a55e ldr r1, [sp, 8] | r1 = var_8h;
0x0000a560 mov r0, fp | r0 = fp;
0x0000a562 blx 0x2b34 | fcn_00002b34 ();
| if (r7 != 0) {
| label_2:
0x0000a566 cbz r7, 0xa56e |
0x0000a568 mov r0, r7 | r0 = r7;
0x0000a56a blx 0x2864 | fcn_00002864 ();
| }
0x0000a56e movs r7, 0 | r7 = 0;
| label_4:
0x0000a570 mov r0, r8 | r0 = r8;
0x0000a572 blx 0x2e8c | fcn_00002e8c ();
0x0000a576 bl 0x8318 | r0 = fcn_00008318 ();
0x0000a57a mov r1, r0 | r1 = r0;
0x0000a57c mov r0, r7 | r0 = r7;
0x0000a57e blx 0x2ce0 | g_thread_new ();
0x0000a582 ldr r2, [pc, 0xc8] |
0x0000a584 ldr r3, [pc, 0xa8] | r3 = *(0xa630);
0x0000a586 add r2, pc | r2 = 0x14bd8;
0x0000a588 ldr r3, [r2, r3] | r3 = *(0x14bd8);
0x0000a58a ldr r2, [r3] | r2 = *(0x14bd8);
0x0000a58c ldr r3, [sp, 0xc] | r3 = var_ch;
0x0000a58e eors r2, r3 | r2 ^= r3;
0x0000a590 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0000a594 bne 0xa628 | goto label_7;
| }
0x0000a596 add sp, 0x14 |
0x0000a598 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_6:
0x0000a59c mov r1, sl | r1 = sl;
0x0000a59e mov r0, r4 | r0 = r4;
0x0000a5a0 blx 0x2c98 | r0 = schedule_get_iCal ();
| if (r0 == 0) {
0x0000a5a4 cbz r0, 0xa5c0 | goto label_8;
| }
0x0000a5a6 bl 0x8318 | r0 = fcn_00008318 ();
0x0000a5aa mov r1, r0 | r1 = r0;
0x0000a5ac mov r0, r7 | r0 = r7;
0x0000a5ae blx 0x2ce0 | g_thread_new ();
0x0000a5b2 adds r1, r4, 6 | r1 = r4 + 6;
0x0000a5b4 add r2, sp, 8 | r2 += var_8h;
0x0000a5b6 bl 0x855c | r0 = fcn_0000855c (r0, r1, r2);
0x0000a5ba cmp r0, 0 |
| if (r0 != 0) {
0x0000a5bc bne 0xa528 | goto label_0;
| }
0x0000a5be b 0xa55e | goto label_1;
| label_8:
0x0000a5c0 ldr r1, [pc, 0x8c] |
0x0000a5c2 mov r0, r4 | r0 = r4;
0x0000a5c4 add r1, pc | r1 = 0x14c18;
0x0000a5c6 blx 0x2c98 | r0 = schedule_get_iCal ();
| if (r0 == 0) {
0x0000a5ca cbz r0, 0xa612 | goto label_9;
| }
0x0000a5cc bl 0x8318 | r0 = fcn_00008318 ();
0x0000a5d0 mov r1, r0 | r1 = r0;
0x0000a5d2 mov r0, r7 | r0 = r7;
0x0000a5d4 blx 0x2ce0 | g_thread_new ();
0x0000a5d8 adds r1, r4, 6 | r1 = r4 + 6;
0x0000a5da add r2, sp, 8 | r2 += var_8h;
0x0000a5dc bl 0x8628 | r0 = fcn_00008628 (r0, r1, r2);
0x0000a5e0 cmp r0, 0 |
| if (r0 != 0) {
0x0000a5e2 bne 0xa528 | goto label_0;
| }
0x0000a5e4 b 0xa55e | goto label_1;
| label_3:
0x0000a5e6 mov r8, r0 | r8 = r0;
0x0000a5e8 blx 0x28ac | fcn_000028ac ();
0x0000a5ec ldr r3, [pc, 0x64] |
0x0000a5ee mov r1, r0 | r1 = r0;
0x0000a5f0 movs r2, 3 | r2 = 3;
0x0000a5f2 mov r0, fp | r0 = fp;
0x0000a5f4 add r3, pc | r3 = 0x14c4c;
0x0000a5f6 blx 0x2bbc | fcn_00002bbc ();
0x0000a5f8 invalid |
| label_5:
0x0000a5fc blx 0x28ac | fcn_000028ac ();
0x0000a600 ldr r3, [pc, 0x54] |
0x0000a602 mov r1, r0 | r1 = r0;
0x0000a604 movs r2, 3 | r2 = 3;
0x0000a606 mov r0, fp | r0 = fp;
0x0000a608 str r4, [sp] | *(sp) = r4;
0x0000a60a add r3, pc | r3 = 0x14c66;
0x0000a60c blx 0x2bbc | fcn_00002bbc ();
0x0000a610 b 0xa566 | goto label_2;
| label_9:
0x0000a612 blx 0x28ac | fcn_000028ac ();
0x0000a616 ldr r3, [pc, 0x44] |
0x0000a618 mov r1, r0 | r1 = r0;
0x0000a61a movs r2, 3 | r2 = 3;
0x0000a61c mov r0, fp | r0 = fp;
0x0000a61e str r4, [sp] | *(sp) = r4;
0x0000a620 add r3, pc | r3 = 0x14c82;
0x0000a622 blx 0x2bbc | fcn_00002bbc ();
0x0000a626 b 0xa566 | goto label_2;
| label_7:
0x0000a628 blx 0x2cec | fprintf_chk ()
0x0000a62c subs r0, 0xe | r0 -= 0xe;
0x0000a62e movs r0, r0 |
0x0000a630 lsls r0, r3, 0xc | r0 = r3 << 0xc;
0x0000a632 movs r0, r0 |
0x0000a634 lsrs r6, r2, 0x20 | r6 = r2 >> 0x20;
0x0000a636 movs r0, r0 |
0x0000a638 asrs r6, r5, 0x12 | r6 = r5 >> 0x12;
0x0000a63a movs r0, r0 |
0x0000a63c asrs r2, r3, 0x12 | r2 = r3 >> 0x12;
0x0000a63e movs r0, r0 |
0x0000a640 asrs r4, r6, 0x18 | r4 = r6 >> 0x18;
0x0000a642 movs r0, r0 |
0x0000a644 asrs r6, r7, 0x18 | r6 = r7 >> 0x18;
0x0000a646 movs r0, r0 |
0x0000a648 asrs r6, r3, 0x13 | r6 = r3 >> 0x13;
0x0000a64a movs r0, r0 |
0x0000a64c adds r7, 0x46 | r7 += 0x46;
0x0000a64e movs r0, r0 |
0x0000a650 asrs r0, r3, 0x16 | r0 = r3 >> 0x16;
0x0000a652 movs r0, r0 |
0x0000a654 asrs r0, r7, 0x12 | r0 = r7 >> 0x12;
0x0000a656 movs r0, r0 |
0x0000a658 asrs r2, r2, 0x1f | r2 >>= 0x1f;
0x0000a65a movs r0, r0 |
0x0000a65c asrs r0, r4, 0x1f | r0 = r4 >> 0x1f;
0x0000a65e movs r0, r0 |
| }
[*] Function fprintf used 31 times scheduled