[*] Binary protection state of pacsd
Full RELRO Canary found NX enabled PIE enabled No RPATH No RUNPATH No Symbols
[*] Function system tear down of pacsd
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/bin/pacsd @ 0x17b60 */
| #include <stdint.h>
|
; (fcn) fcn.00017b60 () | void fcn_00017b60 (int16_t arg_0h, int16_t arg_4h, int16_t arg_f8h, int16_t arg_258h, uint32_t arg1) {
| int16_t var_2ch;
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_8h_2;
| int16_t var_ch;
| int16_t var_10h_2;
| 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_2;
| int16_t var_30h;
| int16_t var_34h;
| int16_t var_38h;
| int16_t var_3ch;
| int16_t var_40h;
| int32_t var_44h;
| int32_t var_44h_2;
| int32_t var_4ch;
| int16_t var_50h;
| int16_t var_54h;
| int16_t var_60h;
| r0 = arg1;
0x00017b60 ldr r2, [pc, 0x1d0] |
0x00017b62 ldr r3, [pc, 0x1d4] | r3 = *(0x17d3a);
0x00017b64 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00017b68 sub sp, 0x5c |
0x00017b6a add r2, pc | r2 = 0x2f8a2;
0x00017b6c ldr r5, [pc, 0x1cc] |
0x00017b6e ldr r3, [r2, r3] |
0x00017b70 add r5, pc | r5 = 0x2f8b0;
0x00017b72 ldr r3, [r3] | r3 = *(0x2f8a2);
0x00017b74 str r3, [sp, 0x54] | var_54h = r3;
0x00017b76 mov.w r3, 0 | r3 = 0;
0x00017b7a cmp r0, 0 |
| if (arg_0h == ) {
0x00017b7c beq 0x17c42 | goto label_21;
| }
0x00017b7e mov r4, r0 | r4 = r0;
0x00017b80 movs r3, 0 | r3 = 0;
0x00017b82 add.w r2, r4, 0x3c | r2 = r4 + 0x3c;
0x00017b86 str r3, [sp, 0x40] | var_40h = r3;
0x00017b88 str r2, [sp, 0x24] | var_24h = r2;
0x00017b8a add.w r2, r4, 0x38 | r2 = r4 + 0x38;
0x00017b8e strd r3, r3, [sp, 0x14] | __asm ("strd r3, r3, [var_14h]");
0x00017b92 strd r3, r3, [sp, 0x1c] | __asm ("strd r3, r3, [var_1ch]");
0x00017b96 strd r3, r3, [sp, 0x44] | __asm ("strd r3, r3, [var_44h]");
0x00017b9a strd r3, r3, [sp, 0x4c] | __asm ("strd r3, r3, [var_50h]");
0x00017b9e add.w r3, r4, 0x1c | r3 = r4 + 0x1c;
0x00017ba2 strd r2, r3, [sp, 0x28] | __asm ("strd r2, r3, [var_2ch_2]");
0x00017ba6 add r3, sp, 0x14 | r3 += var_14h;
0x00017ba8 ldr r0, [r0, 0x1c] | r0 = *(arg_0hx1c);
0x00017baa str r3, [sp, 0x30] | var_30h = r3;
0x00017bac add r3, sp, 0x18 | r3 += var_18h;
0x00017bae str r3, [sp, 0x34] | var_34h = r3;
0x00017bb0 add r3, sp, 0x1c | r3 += var_1ch;
0x00017bb2 str r3, [sp, 0x38] | var_38h = r3;
0x00017bb4 add r3, sp, 0x20 | r3 += var_20h;
0x00017bb6 str r3, [sp, 0x3c] | var_3ch = r3;
| if (r0 != 0) {
0x00017bb8 cbz r0, 0x17bc0 |
0x00017bba movs r1, 1 | r1 = 1;
0x00017bbc blx 0xaf30 | strdup (r0);
| }
0x00017bc0 ldr r0, [r4, 0x38] | r0 = *((r4 + 0x38));
| if (r0 != 0) {
0x00017bc2 cbz r0, 0x17bca |
0x00017bc4 movs r1, 1 | r1 = 1;
0x00017bc6 blx 0xaf30 | strdup (r0);
| }
0x00017bca ldr r0, [r4, 0x3c] | r0 = *((r4 + 0x3c));
| if (r0 != 0) {
0x00017bcc cbz r0, 0x17bd4 |
0x00017bce movs r1, 1 | r1 = 1;
0x00017bd0 blx 0xaf30 | strdup (r0);
| }
0x00017bd4 movs r3, 0 | r3 = 0;
0x00017bd6 str r3, [r4, 0x1c] | *((r4 + 0x1c)) = r3;
0x00017bd8 strd r3, r3, [r4, 0x38] | __asm ("strd r3, r3, [r4, 0x38]");
0x00017bdc ldr r3, [pc, 0x160] | r3 = *(0x17d40);
0x00017bde ldr r6, [r5, r3] | r6 = *((r5 + r3));
0x00017be0 ldr r3, [r6, 0xc] | r3 = *((r6 + 0xc));
0x00017be2 cmp r3, 0 |
| if (r3 != 0) {
0x00017be4 bne 0x17cc0 | goto label_22;
| }
| label_1:
0x00017be6 ldr r3, [r4, 0x10] | r3 = *((r4 + 0x10));
0x00017be8 add r7, sp, 0x24 | r7 += var_24h;
0x00017bea add.w r0, r4, 0x44 | r0 = r4 + 0x44;
0x00017bee strd r3, r7, [sp] | __asm ("strd r3, r7, [sp]");
0x00017bf2 ldrd r2, r3, [r4, 8] | __asm ("ldrd r2, r3, [r4, 8]");
0x00017bf6 ldr r1, [r4, 0x40] | r1 = *((r4 + 0x40));
0x00017bf8 bl 0x14aac | fcn_00014aac (r0, r1, r2, r3, r4, r5);
0x00017bfc ldr r3, [r6, 0xc] | r3 = *((r6 + 0xc));
0x00017bfe cbnz r3, 0x17c5c |
| while (r3 == 0) {
| label_0:
0x00017c00 mov r0, r4 | r0 = r4;
0x00017c02 mov r1, r7 | r1 = r7;
0x00017c04 bl 0x170b0 | fcn_000170b0 (r0, r1, r2, r3, r4, r5);
0x00017c08 ldr r3, [sp, 0x30] | r3 = var_30h;
0x00017c0a ldr r0, [r3] | r0 = *(r3);
| if (r0 != 0) {
0x00017c0c cbz r0, 0x17c12 |
0x00017c0e blx 0xaa44 | strcpy_chk ();
| }
0x00017c12 ldr r3, [sp, 0x34] | r3 = var_34h;
0x00017c14 ldr r0, [r3] | r0 = *(r3);
| if (r0 != 0) {
0x00017c16 cbz r0, 0x17c1c |
0x00017c18 blx 0xaa44 | strcpy_chk ();
| }
0x00017c1c ldr r3, [sp, 0x38] | r3 = var_38h;
0x00017c1e ldr r0, [r3] | r0 = *(r3);
| if (r0 != 0) {
0x00017c20 cbz r0, 0x17c26 |
0x00017c22 blx 0xaa44 | strcpy_chk ();
| }
0x00017c26 ldr r2, [pc, 0x11c] |
0x00017c28 ldr r3, [pc, 0x10c] | r3 = *(0x17d38);
0x00017c2a ldr r0, [sp, 0x50] | r0 = var_50h;
0x00017c2c add r2, pc | r2 = 0x2f976;
0x00017c2e ldr r3, [r2, r3] | r3 = *(0x2f976);
0x00017c30 ldr r2, [r3] | r2 = *(0x2f976);
0x00017c32 ldr r3, [sp, 0x54] | r3 = var_54h;
0x00017c34 eors r2, r3 | r2 ^= r3;
0x00017c36 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00017c3a bne 0x17d30 | goto label_23;
| }
0x00017c3c add sp, 0x5c |
0x00017c3e pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
0x00017c40 ldrh r0, [r6, 0x3e] | r0 = *((r6 + 0x3e));
| label_21:
0x00017c42 ldr r3, [pc, 0x104] |
0x00017c44 movw r2, 0x481 | r2 = 0x481;
0x00017c48 ldr r4, [pc, 0x100] |
0x00017c4a ldr r1, [pc, 0x104] |
0x00017c4c add r3, pc |
0x00017c4e add r4, pc | r4 = 0x2f99e;
0x00017c50 add.w r3, r3, 0x154 | r3 = 0x2faee;
0x00017c54 add r1, pc | r1 = 0x2f9aa;
0x00017c56 str r4, [sp] | *(sp) = r4;
0x00017c58 blx 0xae74 | fcn_0000ae74 ();
0x00017c5c ldr r3, [pc, 0xf4] | r3 = *(0x17d54);
0x00017c5e ldr.w r8, [r5, r3] | r8 = *((r5 + r3));
0x00017c62 ldr.w r3, [r8] | r3 = *(r8);
0x00017c66 cmp r3, 0 |
0x00017c68 beq 0x17c00 |
| }
0x00017c6a ldr r3, [r3, 0x10] | r3 = *((r3 + 0x10));
0x00017c6c cmp r3, 0 |
| if (r3 == 0) {
0x00017c6e beq 0x17c00 | goto label_0;
| }
0x00017c70 blx r3 | uint32_t (*r3)() ();
0x00017c72 ldr.w r3, [r8] | r3 = *(r8);
| label_4:
0x00017c74 adds r0, 0 | r0 += 0;
0x00017c76 ldr r0, [r6, 0x10] | r0 = *((r6 + 0x10));
0x00017c78 ldr r3, [r3, 0x18] | r3 = *((r3 + 0x18));
0x00017c7a blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x00017c7c mov r5, r0 | r5 = r0;
| if (r0 == 0) {
0x00017c7e cbz r0, 0x17cb6 | goto label_24;
| }
0x00017c80 ldr.w sl, [pc, 0xd4] |
0x00017c84 ldr.w sb, [pc, 0xd4] |
0x00017c88 ldr.w fp, [pc, 0xd4] |
0x00017c8c add sl, pc | sl = 0x2f9e8;
0x00017c8e ldr r6, [r0] | r6 = *(r0);
0x00017c90 mov r3, sl | r3 = sl;
0x00017c92 add sb, pc |
0x00017c94 mov sl, r4 | sl = r4;
0x00017c96 add.w sb, sb, 0x154 | sb = 0x2fb46;
0x00017c9a add fp, pc | fp = 0x2f9fe;
0x00017c9c mov r4, r3 | r4 = r3;
| do {
0x00017c9e ldr r0, [r5, 4] | r0 = *((r5 + 4));
0x00017ca0 movw r3, 0x4a1 | r3 = 0x4a1;
0x00017ca4 mov r2, sb | r2 = sb;
0x00017ca6 mov r1, fp | r1 = fp;
0x00017ca8 str r4, [sp] | *(sp) = r4;
0x00017caa blx r6 | uint32_t (*r6)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x00017cac ldr r6, [r5, 8]! | r6 = *((r5 += 8));
0x00017cb0 cmp r6, 0 |
0x00017cb2 bne 0x17c9e |
| } while (r6 != 0);
| label_2:
0x00017cb4 mov r4, sl | r4 = sl;
| label_24:
0x00017cb6 invalid |
| label_3:
0x00017cb8 adds r0, 0 | r0 += 0;
0x00017cba ldr r3, [r3, 0x14] | r3 = *((r3 + 0x14));
0x00017cbc blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x00017cbe b 0x17c00 | goto label_0;
| label_22:
0x00017cc0 ldr r3, [pc, 0x90] | r3 = *(0x17d54);
0x00017cc2 ldr.w r8, [r5, r3] | r8 = *((r5 + r3));
0x00017cc6 ldr.w r3, [r8] | r3 = *(r8);
0x00017cca cmp r3, 0 |
| if (r3 == 0) {
0x00017ccc beq 0x17be6 | goto label_1;
| }
0x00017cce ldr r3, [r3, 0x10] | r3 = *((r3 + 0x10));
0x00017cd0 cmp r3, 0 |
| if (r3 == 0) {
0x00017cd2 beq 0x17be6 | goto label_1;
| }
0x00017cd4 blx r3 | uint32_t (*r3)() ();
0x00017cd6 ldr.w r3, [r8] | r3 = *(r8);
0x00017cda ldr r0, [r6, 0x10] | r0 = *((r6 + 0x10));
0x00017cdc ldr r3, [r3, 0x18] | r3 = *((r3 + 0x18));
0x00017cde blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x00017ce0 mov r7, r0 | r7 = r0;
| if (r0 == 0) {
0x00017ce2 cbz r0, 0x17d26 | goto label_25;
| }
0x00017ce4 ldr.w sl, [pc, 0x7c] |
0x00017ce8 mov r2, r4 | r2 = r4;
0x00017cea ldr.w fp, [pc, 0x7c] |
0x00017cee ldr r3, [pc, 0x7c] | r3 = *(0x17d6e);
0x00017cf0 ldr.w sb, [r0] | sb = *(r0);
0x00017cf4 add sl, pc | sl = 0x2fa5c;
0x00017cf6 add fp, pc | fp = 0x2fa64;
0x00017cf8 str r6, [sp, 0xc] | var_ch = r6;
| label_11:
0x00017cfa add r3, pc | r3 += pc;
0x00017cfc mov r6, fp | r6 = fp;
0x00017cfe mov r4, sb | r4 = sb;
0x00017d00 mov fp, r5 |
0x00017d02 add.w sl, sl, 0x154 | sl += 0x154;
0x00017d06 mov r5, r3 | r5 = r3;
0x00017d08 mov sb, r2 | sb = r2;
| do {
0x00017d0a ldr r0, [r7, 4] | r0 = *((r7 + 4));
0x00017d0c movw r3, 0x496 | r3 = 0x496;
0x00017d10 mov r2, sl | r2 = sl;
0x00017d12 mov r1, r6 | r1 = r6;
0x00017d14 str r5, [sp] | *(sp) = r5;
0x00017d16 blx r4 | uint32_t (*r4)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x00017d18 ldr r4, [r7, 8]! | r4 = *((r7 += 8));
0x00017d1c cmp r4, 0 |
0x00017d1e bne 0x17d0a |
| } while (r4 != 0);
0x00017d20 ldr r6, [sp, 0xc] | r6 = var_ch;
0x00017d22 mov r4, sb | r4 = sb;
0x00017d24 mov r5, fp | r5 = fp;
| label_25:
0x00017d26 ldr.w r3, [r8] | r3 = *(r8);
0x00017d2a ldr r3, [r3, 0x14] | r3 = *((r3 + 0x14));
0x00017d2c blx r3 | uint32_t (*r3)(uint32_t) (r3);
0x00017d2e b 0x17be6 | goto label_1;
| label_23:
0x00017d30 blx 0xaa28 | fcn_0000aa28 ();
0x00017d34 ldr r7, [pc, 0x1f8] | r7 = *(0x17f30);
0x00017d36 movs r5, r0 | r5 = r0;
0x00017d38 lsls r0, r0, 0x11 | r0 <<= 0x11;
0x00017d3a movs r0, r0 |
0x00017d3c ldr r7, [pc, 0x1e0] | r7 = *(0x17f20);
0x00017d3e movs r5, r0 | r5 = r0;
0x00017d40 lsls r4, r2, 0x13 | r4 = r2 << 0x13;
0x00017d42 movs r0, r0 |
0x00017d44 ldr r6, [pc, 0x2f0] | r6 = *(0x18038);
0x00017d46 movs r5, r0 | r5 = r0;
0x00017d48 bvs 0x17cb4 | __asm ("bvs aav.0x000000ff");
| goto label_2;
0x00017d4a movs r2, r0 | r2 = r0;
| if (r2 >= r0) {
0x00017d4c bhs 0x17e04 | goto label_26;
| }
0x00017d4e movs r2, r0 | r2 = r0;
| if (r2 >= r0) {
0x00017d50 bhs 0x17de4 | goto label_27;
| }
0x00017d52 movs r2, r0 | r2 = r0;
0x00017d54 lsls r4, r4, 0x12 | r4 <<= 0x12;
0x00017d56 movs r0, r0 |
| if (r0 >= r0) {
0x00017d58 bpl 0x17d8c | goto label_28;
| }
0x00017d5a movs r2, r0 | r2 = r0;
0x00017d5c bvs 0x17e3c | __asm ("bvs aav.0x000000ff");
0x00017d5e movs r2, r0 | r2 = r0;
| if (r2 >= r0) {
0x00017d60 bhs 0x17d68 | goto label_29;
| }
0x00017d62 movs r2, r0 | r2 = r0;
0x00017d64 bvs 0x17d80 | __asm ("bvs aav.0x000000ff");
0x00017d66 movs r2, r0 | r2 = r0;
| if (r2 != r0) {
| label_29:
0x00017d68 bne 0x17cb8 | goto label_3;
| }
0x00017d6a movs r2, r0 | r2 = r0;
| if (r2 < r0) {
0x00017d6c bmi 0x17c74 | goto label_4;
| }
0x00017d6e movs r2, r0 | r2 = r0;
0x00017d70 push.w {r4, r5, r6, r7, r8, sb, lr} |
0x00017d74 mov r6, r1 | r6 = r1;
0x00017d76 ldr r1, [pc, 0x1a0] |
0x00017d78 sub sp, 0x14 |
0x00017d7a ldr r3, [pc, 0x1a0] | r3 = *(0x17f1e);
0x00017d7c add r1, pc | r1 = 0x2fc9a;
0x00017d7e ldr r2, [pc, 0x1a0] | r2 = *(0x17f22);
0x00017d80 ldr r3, [r1, r3] | r3 = *((r1 + r3));
0x00017d82 add r2, pc | r2 += pc;
0x00017d84 ldr r3, [r3] | r3 = *(r3);
0x00017d86 str r3, [sp, 0xc] | var_2ch = r3;
0x00017d88 mov.w r3, 0 | r3 = 0;
| label_28:
0x00017d8c cmp r0, 0 |
| if (r0 == 0) {
0x00017d8e beq 0x17e40 | goto label_30;
| }
0x00017d90 cmp r6, 0 |
| if (r6 == 0) {
0x00017d92 beq 0x17e5a | goto label_31;
| }
0x00017d94 ldr r3, [pc, 0x18c] | r3 = *(0x17f24);
0x00017d96 mov r4, r0 | r4 = r0;
0x00017d98 ldr r7, [pc, 0x18c] |
0x00017d9a ldr.w sb, [r2, r3] | sb = *((r2 + r3));
0x00017d9e add r7, pc | r7 = 0x2fcca;
0x00017da0 mov r0, sb | r0 = sb;
0x00017da2 blx 0xa9f8 | fcn_0000a9f8 ();
0x00017da6 mov r0, r4 | r0 = r4;
0x00017da8 bl 0x11bf0 | r0 = fcn_00011bf0 (r0, r1, r2);
0x00017dac blx 0xaa44 | strcpy_chk ();
0x00017db0 add.w r1, r7, 0x18c | r1 = r7 + 0x18c;
0x00017db4 mov r0, r4 | r0 = r4;
0x00017db6 bl 0x11cfc | r0 = fcn_00011cfc (r0, r1, r2, r3);
0x00017dba cmp r0, 0 |
| if (r0 == 0) {
0x00017dbc beq 0x17e2a | goto label_32;
| }
0x00017dbe add.w r1, r7, 0x14 | r1 = r7 + 0x14;
0x00017dc2 mov r0, r4 | r0 = r4;
0x00017dc4 blx 0xae2c | r0 = fcn_0000ae2c ();
0x00017dc8 mov r8, r0 | r8 = r0;
0x00017dca cmp r0, 0 |
| if (r0 == 0) {
0x00017dcc beq 0x17e76 | goto label_33;
| }
0x00017dce movs r3, 0 | r3 = 0;
0x00017dd0 add r1, sp, 8 | r1 += var_8h_2;
0x00017dd2 str r3, [sp, 8] | var_8h_2 = r3;
0x00017dd4 bl 0x1699c | r0 = fcn_0001699c (r0, r1);
0x00017dd8 mov r5, r0 | r5 = r0;
0x00017dda cmp r0, 0 |
| if (r0 == 0) {
0x00017ddc beq 0x17e94 | goto label_34;
| }
0x00017dde ldr r3, [pc, 0x14c] |
0x00017de0 ldr r1, [r0, 8] | r1 = *((r0 + 8));
0x00017de2 add r3, pc | r3 = 0x2fd14;
| label_27:
0x00017de4 ldr r0, [r3, 4] | r0 = *((r3 + 4));
0x00017de6 blx 0xa33c | g_hash_table_steal ();
0x00017dea ldr r0, [sp, 8] | r0 = var_8h_2;
0x00017dec blx 0xaa44 | strcpy_chk ();
| label_5:
0x00017df0 mov r1, r4 | r1 = r4;
0x00017df2 mov r0, r5 | r0 = r5;
0x00017df4 bl 0x168a4 | fcn_000168a4 (r0, r1, r2, r3, r4, r5);
0x00017df8 ldr r6, [r5] | r6 = *(r5);
0x00017dfa bics r3, r6, 2 | __asm ("bics r3, r6, 2");
| if (r0 == 0) {
0x00017dfe beq 0x17e8c | goto label_35;
| }
0x00017e00 cmp r6, 1 |
| if (r6 != 1) {
0x00017e02 bne 0x17eec | goto label_36;
| }
| do {
| label_26:
0x00017e04 mov r0, sb | r0 = sb;
0x00017e06 blx 0xaab8 | fcn_0000aab8 ();
0x00017e0a mov r0, r4 | r0 = r4;
0x00017e0c blx 0xadc8 | cdb_set_transaction_commit_default_retries ();
0x00017e10 ldr r2, [pc, 0x11c] |
0x00017e12 ldr r3, [pc, 0x108] | r3 = *(0x17f1e);
0x00017e14 add r2, pc | r2 = 0x2fd48;
0x00017e16 ldr r3, [r2, r3] | r3 = *(0x2fd48);
0x00017e18 ldr r2, [r3] | r2 = *(0x2fd48);
0x00017e1a ldr r3, [sp, 0xc] | r3 = var_ch;
0x00017e1c eors r2, r3 | r2 ^= r3;
0x00017e1e mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00017e22 bne 0x17ee8 | goto label_37;
| }
0x00017e24 add sp, 0x14 |
0x00017e26 pop.w {r4, r5, r6, r7, r8, sb, pc} |
| label_32:
0x00017e2a ldr r4, [pc, 0x108] |
0x00017e2c add.w r3, r7, 0x16c | r3 = r7 + 0x16c;
0x00017e30 ldr r1, [pc, 0x104] |
0x00017e32 movw r2, 0x51b | r2 = 0x51b;
0x00017e34 strh r3, [r3, r0] | *((r3 + r0)) = r3;
0x00017e36 add r4, pc | r4 = 0x2fd70;
0x00017e38 add r1, pc | r1 = 0x2fd74;
0x00017e3a str r4, [sp] | *(sp) = r4;
0x00017e3c blx 0xae74 | fcn_0000ae74 ();
| label_30:
0x00017e40 ldr r3, [pc, 0xf8] | r3 = *(0x17f3c);
0x00017e42 movw r2, 0x50e | r2 = 0x50e;
| label_20:
0x00017e46 ldr r4, [pc, 0xf8] |
0x00017e48 ldr r1, [pc, 0xf8] |
0x00017e4a add r3, pc | r3 += pc;
0x00017e4c add r4, pc | r4 = 0x2fd92;
0x00017e4e add.w r3, r3, 0x16c | r3 += 0x16c;
0x00017e52 add r1, pc | r1 = 0x2fd9a;
0x00017e54 str r4, [sp] | *(sp) = r4;
0x00017e56 blx 0xae74 | fcn_0000ae74 ();
| label_31:
0x00017e5a ldr r3, [pc, 0xec] | r3 = *(0x17f4a);
0x00017e5c movw r2, 0x50f | r2 = 0x50f;
0x00017e60 ldr r4, [pc, 0xe8] | r4 = *(0x17f4c);
0x00017e62 mov r0, r6 | r0 = r6;
| label_6:
0x00017e64 ldr r1, [pc, 0xe8] |
0x00017e66 add r3, pc | r3 += pc;
0x00017e68 add r4, pc | r4 += pc;
0x00017e6a add.w r3, r3, 0x16c | r3 += 0x16c;
0x00017e6e add r1, pc | r1 = 0x2fdc2;
0x00017e70 str r4, [sp] | *(sp) = r4;
0x00017e72 blx 0xae74 | fcn_0000ae74 ();
| label_33:
0x00017e76 ldr r4, [pc, 0xdc] | r4 = *(0x17f56);
0x00017e78 add.w r3, r7, 0x16c | r3 = r7 + 0x16c;
0x00017e7c ldr r1, [pc, 0xd8] | r1 = *(0x17f58);
0x00017e7e invalid |
| label_8:
0x00017e80 str r4, [r4, 0x28] | *((r4 + 0x28)) = r4;
0x00017e82 add r4, pc | r4 += pc;
0x00017e84 add r1, pc | r1 += pc;
0x00017e86 str r4, [sp] | *(sp) = r4;
0x00017e88 blx 0xae74 | fcn_0000ae74 ();
| label_35:
0x00017e8c mov r0, r5 | r0 = r5;
0x00017e8e bl 0x17b60 | fcn_00017b60 (r0, r1, r2, r3, r4);
0x00017e92 b 0x17e04 |
| } while (1);
| label_34:
0x00017e94 add.w r1, r7, 0x14c | r1 = r7 + 0x14c;
0x00017e98 mov r0, r4 | r0 = r4;
0x00017e9a blx 0xae2c | fcn_0000ae2c ();
0x00017e9e add.w r1, r7, 0x7c | r1 = r7 + 0x7c;
0x00017ea2 mov r5, r0 | r5 = r0;
0x00017ea4 mov r0, r4 | r0 = r4;
0x00017ea6 blx 0xae2c | r0 = fcn_0000ae2c ();
0x00017eaa mov r3, r0 | r3 = r0;
| if (r0 != 0) {
| label_7:
0x00017eac cbz r0, 0x17eb2 |
0x00017eae ldrb r2, [r0] | r2 = *(r0);
| if (r2 != 0) {
0x00017eb0 cbnz r2, 0x17ebc | goto label_38;
| }
| }
0x00017eb2 bl 0x1befc | fcn_0001befc ();
0x00017eb6 bl 0x1bffc | r0 = fcn_0001bffc (r0);
0x00017eba mov r3, r0 | r3 = r0;
| label_38:
0x00017ebc str r5, [sp] | *(sp) = r5;
0x00017ebe mov r1, r8 | r1 = r8;
0x00017ec0 mov r0, r6 | r0 = r6;
0x00017ec2 movs r2, 0 | r2 = 0;
0x00017ec4 bl 0x1676c | r0 = fcn_0001676c (r0, r1, r2, r3, r4);
0x00017ec8 mov r5, r0 | r5 = r0;
0x00017eca cmp r0, 0 |
| if (r0 != 0) {
0x00017ecc bne 0x17df0 | goto label_5;
| }
0x00017ece ldr r3, [pc, 0x8c] |
0x00017ed0 movw r2, 0x534 | r2 = 0x534;
0x00017ed4 ldr r4, [pc, 0x88] |
0x00017ed6 ldr r1, [pc, 0x8c] | r1 = *(0x17f66);
0x00017ed8 add r3, pc |
0x00017eda add r4, pc | r4 = 0x2fe3e;
0x00017edc add.w r3, r3, 0x16c | r3 = 0x2ffa6;
| label_9:
0x00017ee0 add r1, pc | r1 += pc;
0x00017ee2 str r4, [sp] | *(sp) = r4;
0x00017ee4 blx 0xae74 | fcn_0000ae74 ();
| label_37:
0x00017ee8 blx 0xaa28 | fcn_0000aa28 ();
| label_36:
0x00017eec ldr r3, [pc, 0x78] |
0x00017eee movs r1, 0x10 | r1 = 0x10;
0x00017ef0 ldr r2, [pc, 0x78] |
0x00017ef2 movs r0, 0 | r0 = 0;
0x00017ef4 str r6, [sp] | *(sp) = r6;
0x00017ef6 add r3, pc | r3 = 0x2fe62;
0x00017ef8 add r2, pc | r2 = 0x2fe68;
0x00017efa blx 0xa584 | fcn_0000a584 ();
0x00017efe ldr r3, [pc, 0x70] |
0x00017f00 movs r0, 0 | r0 = 0;
0x00017f02 ldr r1, [pc, 0x70] |
0x00017f04 movw r2, 0x54b | r2 = 0x54b;
0x00017f08 str r0, [sp] | *(sp) = r0;
0x00017f0a add r3, pc |
0x00017f0c add r1, pc | r1 = 0x2fe86;
0x00017f0e add.w r3, r3, 0x16c | r3 = 0x2ffec;
0x00017f12 blx 0xae74 | fcn_0000ae74 ();
0x00017f16 nop |
0x00017f18 ldr r5, [pc, 0x1b0] | r5 = *(0x180cc);
0x00017f1a movs r5, r0 | r5 = r0;
0x00017f1c lsls r0, r0, 0x11 | r0 <<= 0x11;
0x00017f1e movs r0, r0 |
0x00017f20 ldr r5, [pc, 0x198] | r5 = *(0x180bc);
0x00017f22 movs r5, r0 | r5 = r0;
0x00017f24 lsls r0, r7, 0x11 | r0 = r7 << 0x11;
0x00017f26 movs r0, r0 |
| if (r0 >= r0) {
0x00017f28 bpl 0x17ff0 | goto label_39;
| }
0x00017f2a movs r2, r0 | r2 = r0;
0x00017f2c str r2, [r3, 0x1c] | *((r3 + 0x1c)) = r2;
0x00017f2e movs r5, r0 | r5 = r0;
0x00017f30 ldr r4, [pc, 0x350] | r4 = *(0x18284);
0x00017f32 movs r5, r0 | r5 = r0;
| if (r5 <= r0) {
0x00017f34 blo 0x17e64 | goto label_6;
| }
0x00017f36 movs r2, r0 | r2 = r0;
| if (r2 == r0) {
0x00017f38 beq 0x18004 | goto label_40;
| }
0x00017f3a movs r2, r0 | r2 = r0;
| if (r2 < r0) {
0x00017f3c bmi 0x17eac | goto label_7;
| }
0x00017f3e movs r2, r0 | r2 = r0;
0x00017f40 stm r0!, {r2, r4, r5, r7} | *(r0!) = r2;
| *((r0! + 4)) = r4;
| *((r0! + 8)) = r5;
| *((r0! + 12)) = r7;
0x00017f42 movs r2, r0 | r2 = r0;
| if (r2 == r0) {
0x00017f44 beq 0x17fdc | goto label_41;
| }
0x00017f46 movs r2, r0 | r2 = r0;
| if (r2 < r0) {
0x00017f48 bmi 0x17e80 | goto label_8;
| }
0x00017f4a movs r2, r0 | r2 = r0;
| if (r2 >= r0) {
0x00017f4c bhs 0x17ee0 | goto label_9;
| }
0x00017f4e movs r2, r0 | r2 = r0;
| if (r2 == r0) {
0x00017f50 beq 0x17fb0 | goto label_42;
| }
0x00017f52 movs r2, r0 | r2 = r0;
| if (r2 == r0) {
0x00017f54 beq 0x18024 | goto label_43;
| }
| label_19:
0x00017f56 movs r2, r0 | r2 = r0;
| if (r2 == r0) {
0x00017f58 beq 0x17f8c | void (*0x17f8c)() ();
| }
0x00017f5a movs r2, r0 | r2 = r0;
| if (r2 < r0) {
0x00017f5c bmi 0x17fb0 | goto label_42;
| }
0x00017f5e movs r2, r0 | r2 = r0;
| label_10:
0x00017f60 ldm r7, {r1, r2, r3, r6, r7} | r1 = *(r7);
| r2 = *((r7 + 4));
| r3 = *((r7 + 8));
| r6 = *((r7 + 12));
| r7 = *((r7 + 16));
0x00017f62 movs r2, r0 | r2 = r0;
0x00017f64 ldm r7, {r2, r3, r4, r5, r7} | r2 = *(r7);
| r3 = *((r7 + 4));
| r4 = *((r7 + 8));
| r5 = *((r7 + 12));
| r7 = *((r7 + 16));
0x00017f66 movs r2, r0 | r2 = r0;
0x00017f68 str r2, [sp, 0x258] | *(arg_258h) = r2;
0x00017f6a movs r2, r0 | r2 = r0;
| if (r2 <= r0) {
0x00017f6c blo 0x17f88 | void (*0x17f88)() ();
| }
0x00017f6e movs r2, r0 | r2 = r0;
| if (r2 <= r0) {
0x00017f70 blo 0x17f60 | goto label_10;
| }
0x00017f72 movs r2, r0 | r2 = r0;
0x00017f74 ldm r7, {r4, r7} | r4 = *(r7);
| r7 = *((r7 + 4));
0x00017f76 movs r2, r0 | r2 = r0;
| label_42:
0x00017fb0 lsls r4, r0, 0x11 | r4 = r0 << 0x11;
0x00017fb2 movs r0, r0 |
0x00017fb4 b 0x17cfa | goto label_11;
| if (r5 != 0) {
| label_41:
0x00017fdc cbz r5, 0x17ffa |
0x00017fde ldr r3, [pc, 0x354] |
0x00017fe0 movw r2, 0x65c | r2 = 0x65c;
0x00017fe4 ldr r4, [pc, 0x350] |
0x00017fe6 movs r0, 0 | r0 = 0;
0x00017fe8 ldr r1, [pc, 0x350] | r1 = *(0x1833c);
0x00017fea add r3, pc |
0x00017fec add r4, pc | r4 = 0x30328;
0x00017fee add.w r3, r3, 0x198 | r3 = 0x304bc;
| label_39:
0x00017ff0 strb r4, [r1, 0xf] | *((r1 + 0xf)) = r4;
0x00017ff2 add r1, pc | r1 += pc;
0x00017ff4 str r4, [sp] | *(sp) = r4;
0x00017ff6 blx 0xae74 | fcn_0000ae74 ();
| }
0x00017ffa movs r0, 0x10 | r0 = 0x10;
0x00017ffc mov r8, r5 | r8 = r5;
0x00017ffe blx 0xadb8 | fcn_0000adb8 ();
0x00018002 movs r2, 4 | r2 = 4;
| label_40:
0x00018004 mov r4, r0 | r4 = r0;
0x00018006 mov r1, r5 | r1 = r5;
0x00018008 str r5, [r0] | *(r0) = r5;
0x0001800a mov r0, r5 | r0 = r5;
0x0001800c blx 0xa940 | fcn_0000a940 ();
0x00018010 ldr r3, [pc, 0x32c] | r3 = *(0x18340);
0x00018012 str r0, [r4, 4] | *((r4 + 4)) = r0;
0x00018014 str r5, [r4, 8] | *((r4 + 8)) = r5;
0x00018016 ldr r1, [r6, r3] | r1 = *((r6 + r3));
0x00018018 ldr r3, [pc, 0x328] | r3 = *(0x18344);
0x0001801a ldr r2, [pc, 0x32c] |
0x0001801c ldr r0, [r6, r3] | r0 = *((r6 + r3));
0x0001801e ldr r3, [pc, 0x32c] |
0x00018020 add r2, pc | r2 = 0x3036e;
0x00018022 add r3, pc | r3 = 0x30374;
| label_43:
0x00018024 blx 0xa6b8 | fcn_0000a6b8 ();
0x00018028 str r0, [r4, 0xc] | *((r4 + 0xc)) = r0;
0x0001802a str r4, [r7, 8] | *((r7 + 8)) = r4;
0x0001802c bl 0x10a34 | fcn_00010a34 ();
0x00018030 ldr r3, [pc, 0x31c] | r3 = *(0x18350);
0x00018032 mov sl, r0 | sl = r0;
0x00018034 ldr r3, [r6, r3] | r3 = *((r6 + r3));
0x00018036 mov r0, r3 | r0 = r3;
0x00018038 str r3, [sp, 0x14] | var_14h = r3;
0x0001803a blx 0xa778 | fcn_0000a778 ();
0x0001803e ldr.w r2, [sl, 4] | r2 = *((sl + 4));
0x00018042 mov r4, r0 | r4 = r0;
| if (r2 == 0) {
0x00018044 cbz r2, 0x18098 | goto label_44;
| }
| label_13:
0x00018046 ldr.w r3, [sl] | r3 = *(sl);
0x0001804a ldr.w r7, [r3, r8, lsl 2] | offset_0 = r8 << 2;
| r7 = *((r3 + offset_0));
0x0001804e ldr r3, [r7, 0x1c] | r3 = *((r7 + 0x1c));
0x00018050 ldr r1, [r3, 4] | r1 = *((r3 + 4));
| if (r1 == 0) {
0x00018052 cbz r1, 0x18090 | goto label_45;
| }
0x00018054 movs r5, 0 | r5 = 0;
0x00018056 b 0x18062 |
| while (r0 != 0) {
0x00018058 ldr r3, [r7, 0x1c] | r3 = *((r7 + 0x1c));
0x0001805a adds r5, 1 | r5++;
0x0001805c ldr r2, [r3, 4] | r2 = *((r3 + 4));
0x0001805e cmp r5, r2 |
| if (r5 >= r2) {
0x00018060 bhs 0x1808c | goto label_46;
| }
| label_12:
0x00018062 ldr r3, [r3] | r3 = *(r3);
0x00018064 mov r1, r4 | r1 = r4;
0x00018066 ldr.w r6, [r3, r5, lsl 2] | offset_1 = r5 << 2;
| r6 = *((r3 + offset_1));
0x0001806a mov r0, r6 | r0 = r6;
0x0001806c bl 0x1c03c | r0 = fcn_0001c03c (r0, r1);
0x00018070 cmp r0, 0 |
0x00018072 bne 0x18058 |
| }
0x00018074 mov r0, r6 | r0 = r6;
0x00018076 adds r5, 1 | r5++;
0x00018078 blx 0xa6dc | r0 = fcn_0000a6dc ();
0x0001807c mov r1, r0 | r1 = r0;
0x0001807e mov r0, r4 | r0 = r4;
0x00018080 blx 0xadfc | fcn_0000adfc ();
0x00018084 ldr r3, [r7, 0x1c] | r3 = *((r7 + 0x1c));
0x00018086 ldr r2, [r3, 4] | r2 = *((r3 + 4));
0x00018088 cmp r5, r2 |
| if (r5 <= r2) {
0x0001808a blo 0x18062 | goto label_12;
| }
| label_46:
0x0001808c ldr.w r2, [sl, 4] | r2 = *((sl + 4));
| label_45:
0x00018090 add.w r8, r8, 1 | r8++;
0x00018094 cmp r8, r2 |
| if (r8 <= r2) {
0x00018096 blo 0x18046 | goto label_13;
| }
| label_44:
0x00018098 ldr r3, [pc, 0x2b8] |
0x0001809a add r3, pc | r3 = 0x303f2;
0x0001809c ldr r6, [r3, 8] | r6 = *(0x303fa);
0x0001809e cmp r6, 0 |
| if (r6 == 0) {
0x000180a0 beq.w 0x182e6 | goto label_47;
| }
0x000180a4 cmp r4, 0 |
| if (r4 == 0) {
0x000180a6 beq.w 0x18302 | goto label_48;
| }
0x000180aa ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x000180ac cmp r3, 0 |
| if (r3 == 0) {
0x000180ae beq 0x18186 | goto label_49;
| }
0x000180b0 ldr.w r8, [pc, 0x2a4] |
0x000180b4 mov.w fp, 0 |
0x000180b8 add.w sb, sp, 0x28 | sb += var_28h;
0x000180bc add r8, pc | r8 = 0x30418;
0x000180be add.w r3, r8, 0x18c | r3 = r8 + 0x18c;
0x000180c2 strd r3, sl, [sp, 0xc] | __asm ("strd r3, sl, [var_ch]");
| do {
0x000180c6 ldr r2, [r4] | r2 = *(r4);
0x000180c8 add.w r5, r8, 0x14 | r5 = r8 + 0x14;
0x000180cc ldr r0, [sp, 0xc] | r0 = var_ch;
0x000180ce ldr.w r7, [r2, fp, lsl 2] | offset_2 = fp << 2;
| r7 = *((r2 + offset_2));
0x000180d2 add.w fp, fp, 1 |
0x000180d6 bl 0x119a0 | fcn_000119a0 (r0);
0x000180da mov r1, r5 | r1 = r5;
0x000180dc mov sl, r0 | sl = r0;
0x000180de mov r2, r7 | r2 = r7;
0x000180e0 bl 0x11a54 | fcn_00011a54 (r0, r1);
0x000180e4 ldr r1, [pc, 0x274] |
0x000180e6 mov r2, r6 | r2 = r6;
0x000180e8 mov r0, sl | r0 = sl;
0x000180ea add r1, pc | r1 = 0x3044a;
0x000180ec bl 0x11ad8 | fcn_00011ad8 (r0, r1, r2);
0x000180f0 movs r2, 1 | r2 = 1;
0x000180f2 mov r1, sb | r1 = sb;
0x000180f4 str r0, [sp, 0x28] | var_28h = r0;
0x000180f6 ldr r0, [r6, 4] | r0 = *((r6 + 4));
0x000180f8 blx 0xa748 | fcn_0000a748 ();
0x000180fc add.w r0, r8, 0x1d0 | r0 = r8 + 0x1d0;
0x00018100 bl 0x119a0 | fcn_000119a0 (r0);
0x00018104 mov r1, r5 | r1 = r5;
0x00018106 mov r2, r7 | r2 = r7;
0x00018108 mov sl, r0 | sl = r0;
0x0001810a bl 0x11a54 | fcn_00011a54 (r0, r1);
0x0001810e ldr r1, [pc, 0x250] |
0x00018110 movs r2, 0 | r2 = 0;
0x00018112 mov r0, sl | r0 = sl;
0x00018114 add r1, pc | r1 = 0x3047a;
0x00018116 bl 0x11ad8 | fcn_00011ad8 (r0, r1, r2);
0x0001811a movs r2, 1 | r2 = 1;
0x0001811c mov r1, sb | r1 = sb;
0x0001811e str r0, [sp, 0x28] | var_28h = r0;
0x00018120 ldr r0, [r6, 4] | r0 = *((r6 + 4));
0x00018122 blx 0xa748 | fcn_0000a748 ();
0x00018126 add.w r0, r8, 0x138 | r0 = r8 + 0x138;
0x0001812a bl 0x119a0 | fcn_000119a0 (r0);
0x0001812e mov r1, r5 | r1 = r5;
0x00018130 mov r2, r7 | r2 = r7;
0x00018132 mov sl, r0 | sl = r0;
0x00018134 bl 0x11a54 | fcn_00011a54 (r0, r1);
0x00018138 ldr r1, [pc, 0x228] |
0x0001813a mov r2, r6 | r2 = r6;
0x0001813c mov r0, sl | r0 = sl;
0x0001813e add r1, pc | r1 = 0x304a6;
0x00018140 bl 0x11ad8 | fcn_00011ad8 (r0, r1, r2);
0x00018144 movs r2, 1 | r2 = 1;
0x00018146 mov r1, sb | r1 = sb;
0x00018148 str r0, [sp, 0x28] | var_28h = r0;
0x0001814a ldr r0, [r6, 4] | r0 = *((r6 + 4));
0x0001814c blx 0xa748 | fcn_0000a748 ();
0x00018150 add.w r0, r8, 0x1dc | r0 = r8 + 0x1dc;
0x00018154 bl 0x119a0 | fcn_000119a0 (r0);
0x00018158 mov r1, r5 | r1 = r5;
0x0001815a mov r2, r7 | r2 = r7;
0x0001815c mov sl, r0 | sl = r0;
0x0001815e bl 0x11a54 | fcn_00011a54 (r0, r1);
0x00018162 ldr r1, [pc, 0x204] |
0x00018164 movs r2, 0 | r2 = 0;
0x00018166 mov r0, sl | r0 = sl;
0x00018168 add r1, pc | r1 = 0x304d6;
0x0001816a bl 0x11ad8 | fcn_00011ad8 (r0, r1, r2);
0x0001816e movs r2, 1 | r2 = 1;
0x00018170 mov r5, r0 | r5 = r0;
0x00018172 mov r1, sb | r1 = sb;
0x00018174 ldr r0, [r6, 4] | r0 = *((r6 + 4));
0x00018176 str r5, [sp, 0x28] | var_28h = r5;
0x00018178 blx 0xa748 | fcn_0000a748 ();
0x0001817c ldr r2, [r4, 4] | r2 = *((r4 + 4));
0x0001817e cmp fp, r2 |
0x00018180 blo 0x180c6 |
| } while (fp <= r2);
0x00018182 ldr.w sl, [sp, 0x10] | sl = var_10h_2;
| label_49:
0x00018186 movs r1, 1 | r1 = 1;
0x00018188 mov r0, r4 | r0 = r4;
0x0001818a str r4, [r6] | *(r6) = r4;
0x0001818c blx 0xaf30 | strdup (r0);
0x00018190 ldr r0, [sp, 0x14] | r0 = var_14h;
0x00018192 blx 0xa778 | fcn_0000a778 ();
0x00018196 ldr.w r3, [sl, 4] | r3 = *((sl + 4));
0x0001819a mov fp, r0 |
| if (r3 == 0) {
0x0001819c cbz r3, 0x181d8 | goto label_50;
| }
0x0001819e movs r4, 0 | r4 = 0;
0x000181a0 b 0x181ac |
| while (r0 != 0) {
0x000181a2 ldr.w r3, [sl, 4] | r3 = *((sl + 4));
0x000181a6 adds r4, 1 | r4++;
0x000181a8 cmp r4, r3 |
| if (r4 >= r3) {
0x000181aa bhs 0x181d8 | goto label_50;
| }
| label_14:
0x000181ac ldr.w r3, [sl] | r3 = *(sl);
0x000181b0 mov r1, fp | r1 = fp;
0x000181b2 ldr.w r5, [r3, r4, lsl 2] | offset_3 = r4 << 2;
| r5 = *((r3 + offset_3));
0x000181b6 ldr r0, [r5, 0x10] | r0 = *((r5 + 0x10));
0x000181b8 bl 0x1c03c | r0 = fcn_0001c03c (r0, r1);
0x000181bc cmp r0, 0 |
0x000181be bne 0x181a2 |
| }
0x000181c0 ldr r0, [r5, 0x10] | r0 = *((r5 + 0x10));
0x000181c2 adds r4, 1 | r4++;
0x000181c4 blx 0xa6dc | r0 = fcn_0000a6dc ();
0x000181c8 mov r1, r0 | r1 = r0;
0x000181ca mov r0, fp | r0 = fp;
0x000181cc blx 0xadfc | fcn_0000adfc ();
0x000181d0 ldr.w r3, [sl, 4] | r3 = *((sl + 4));
0x000181d4 cmp r4, r3 |
| if (r4 <= r3) {
0x000181d6 blo 0x181ac | goto label_14;
| }
| label_50:
0x000181d8 ldr.w r3, [fp, 4] | r3 = *(arg_4h);
0x000181dc cmp r3, 0 |
| if (r3 == 0) {
0x000181de beq 0x182aa | goto label_51;
| }
0x000181e0 ldr r3, [pc, 0x188] |
0x000181e2 ldr r2, [pc, 0x18c] |
0x000181e4 add r3, pc | r3 = 0x30554;
0x000181e6 str r3, [sp, 0x18] | var_18h = r3;
0x000181e8 add r2, pc | r2 = 0x3055e;
0x000181ea ldr r3, [pc, 0x188] |
0x000181ec strd r2, sl, [sp, 0x20] | __asm ("strd r2, sl, [var_24h]");
0x000181f0 add r3, pc | r3 = 0x3056a;
0x000181f2 str r3, [sp, 0x1c] | var_1ch = r3;
0x000181f4 movs r3, 0 | r3 = 0;
0x000181f6 mov sb, r3 | sb = r3;
| label_17:
0x000181f8 ldr.w r3, [fp] | r3 = *(fp);
0x000181fc ldr.w r8, [r3, sb, lsl 2] | offset_4 = sb << 2;
| r8 = *((r3 + offset_4));
0x00018200 mov r0, r8 | r0 = r8;
0x00018202 blx 0xa6dc | fcn_0000a6dc ();
0x00018206 ldr r2, [sp, 0x18] | r2 = var_18h;
0x00018208 mov r1, r0 | r1 = r0;
0x0001820a mov r0, r8 | r0 = r8;
0x0001820c blx 0xa514 | fcn_0000a514 ();
0x00018210 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x00018212 mov r0, r8 | r0 = r8;
0x00018214 ldr r3, [r3, 8] | r3 = *((r3 + 8));
0x00018216 ldr r3, [r3, 0xc] | r3 = *((r3 + 0xc));
0x00018218 str r3, [sp, 0xc] | var_ch = r3;
0x0001821a blx 0xa6dc | fcn_0000a6dc ();
0x0001821e str r0, [sp, 0x10] | var_10h_2 = r0;
0x00018220 bl 0x10a34 | r0 = fcn_00010a34 ();
0x00018224 mov r7, r0 | r7 = r0;
0x00018226 ldr r0, [sp, 0x14] | r0 = var_14h;
0x00018228 blx 0xa778 | fcn_0000a778 ();
0x0001822c ldr r3, [r7, 4] | r3 = *((r7 + 4));
0x0001822e mov r6, r0 | r6 = r0;
| if (r3 == 0) {
0x00018230 cbz r3, 0x18284 | goto label_52;
| }
0x00018232 movs r5, 0 | r5 = 0;
0x00018234 mov sl, r5 | sl = r5;
0x00018236 b 0x18242 |
| while (r0 != 0) {
| label_15:
0x00018238 ldr r3, [r7, 4] | r3 = *((r7 + 4));
0x0001823a add.w sl, sl, 1 | sl++;
0x0001823e cmp sl, r3 |
| if (sl >= r3) {
0x00018240 bhs 0x18284 | goto label_52;
| }
| label_16:
0x00018242 ldr r3, [r7] | r3 = *(r7);
0x00018244 mov r0, r8 | r0 = r8;
0x00018246 ldr.w r5, [r3, sl, lsl 2] | offset_5 = sl << 2;
| r5 = *((r3 + offset_5));
0x0001824a ldr r1, [r5, 0x10] | r1 = *((r5 + 0x10));
0x0001824c blx 0xafc0 | r0 = fcn_0000afc0 ();
0x00018250 cmp r0, 0 |
0x00018252 bne 0x18238 |
| }
0x00018254 ldr r3, [r5, 0x1c] | r3 = *((r5 + 0x1c));
0x00018256 ldr r2, [r3, 4] | r2 = *((r3 + 4));
0x00018258 cmp r2, 0 |
| if (r2 == 0) {
0x0001825a beq 0x18238 | goto label_15;
| }
0x0001825c mov r4, r0 | r4 = r0;
| do {
0x0001825e ldr r3, [r3] | r3 = *(r3);
0x00018260 ldr.w r0, [r3, r4, lsl 2] | offset_6 = r4 << 2;
| r0 = *((r3 + offset_6));
0x00018264 adds r4, 1 | r4++;
0x00018266 blx 0xa6dc | r0 = fcn_0000a6dc ();
0x0001826a mov r1, r0 | r1 = r0;
0x0001826c mov r0, r6 | r0 = r6;
0x0001826e blx 0xadfc | fcn_0000adfc ();
0x00018272 ldr r3, [r5, 0x1c] | r3 = *((r5 + 0x1c));
0x00018274 ldr r2, [r3, 4] | r2 = *((r3 + 4));
0x00018276 cmp r4, r2 |
0x00018278 blo 0x1825e |
| } while (r4 <= r2);
0x0001827a ldr r3, [r7, 4] | r3 = *((r7 + 4));
0x0001827c add.w sl, sl, 1 | sl++;
0x00018280 cmp sl, r3 |
| if (sl <= r3) {
0x00018282 blo 0x18242 | goto label_16;
| }
| label_52:
0x00018284 ldr r0, [r6, 4] | r0 = *((r6 + 4));
| if (r0 == 0) {
0x00018286 cbz r0, 0x182d4 | goto label_53;
| }
| label_18:
0x00018288 movs r1, 1 | r1 = 1;
0x0001828a mov r0, r7 | r0 = r7;
0x0001828c blx 0xaf30 | strdup (r0);
0x00018290 ldrd r0, r1, [sp, 0xc] | __asm ("ldrd r0, r1, [var_ch]");
0x00018294 mov r2, r6 | r2 = r6;
0x00018296 blx 0xa6e8 | fcn_0000a6e8 ();
0x0001829a ldr.w r3, [fp, 4] | r3 = *(arg_4h);
0x0001829e add.w sb, sb, 1 | sb++;
0x000182a2 cmp r3, sb |
| if (r3 > sb) {
0x000182a4 bhi 0x181f8 | goto label_17;
| }
0x000182a6 ldr.w sl, [sp, 0x24] | sl = var_24h;
| label_51:
0x000182aa movs r1, 1 | r1 = 1;
0x000182ac mov r0, fp | r0 = fp;
0x000182ae blx 0xaf30 | strdup (r0);
0x000182b2 ldr r2, [pc, 0xc4] |
0x000182b4 ldr r3, [pc, 0x74] | r3 = *(0x1832c);
0x000182b6 add r2, pc | r2 = 0x30634;
0x000182b8 ldr r3, [r2, r3] | r3 = *(0x30634);
0x000182ba ldr r2, [r3] | r2 = *(0x30634);
0x000182bc ldr r3, [sp, 0x2c] | r3 = var_2ch_2;
0x000182be eors r2, r3 | r2 ^= r3;
0x000182c0 mov.w r3, 0 | r3 = 0;
| if (r2 == r3) {
0x000182c4 bne 0x1831e |
0x000182c6 movs r1, 1 | r1 = 1;
0x000182c8 mov r0, sl | r0 = sl;
0x000182ca add sp, 0x34 |
0x000182cc pop.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x000182d0 b.w 0xaf2c | void (*0xaf2c)() ();
| label_53:
0x000182d4 ldr r2, [pc, 0xa4] |
0x000182d6 movs r1, 0x10 | r1 = 0x10;
0x000182d8 ldr r3, [sp, 0x20] | r3 = var_20h;
0x000182da str.w r8, [sp] | __asm ("str.w r8, [sp]");
0x000182de add r2, pc | r2 = 0x3065e;
0x000182e0 blx 0xa584 | fcn_0000a584 ();
0x000182e4 b 0x18288 | goto label_18;
| label_47:
0x000182e6 ldr r3, [pc, 0x98] |
0x000182e8 movw r2, 0x5fe | r2 = 0x5fe;
0x000182ec ldr r4, [pc, 0x94] |
0x000182ee mov r0, r6 | r0 = r6;
0x000182f0 ldr r1, [pc, 0x94] |
0x000182f2 add r3, pc |
0x000182f4 add r4, pc | r4 = 0x3067c;
0x000182f6 add.w r3, r3, 0x1c0 | r3 = 0x30838;
0x000182fa add r1, pc | r1 = 0x30686;
0x000182fc str r4, [sp] | *(sp) = r4;
0x000182fe blx 0xae74 | fcn_0000ae74 ();
| label_48:
0x00018302 ldr r3, [pc, 0x88] |
0x00018304 movw r2, 0x5ff | r2 = 0x5ff;
0x00018308 ldr r5, [pc, 0x84] |
0x0001830a mov r0, r4 | r0 = r4;
0x0001830c ldr r1, [pc, 0x84] |
0x0001830e add r3, pc |
0x00018310 add r5, pc | r5 = 0x306a4;
0x00018312 add.w r3, r3, 0x1c0 | r3 = 0x30860;
0x00018316 add r1, pc | r1 = 0x306ae;
0x00018318 str r5, [sp] | *(sp) = r5;
0x0001831a blx 0xae74 | fcn_0000ae74 ();
| }
0x0001831e blx 0xaa28 | fcn_0000aa28 ();
0x00018322 nop |
0x00018324 ldrsh r4, [r6, r7] | r4 = *((r6 + r7));
0x00018326 movs r5, r0 | r5 = r0;
0x00018328 ldr r3, [pc, 0x70] | r3 = *(0x1839c);
0x0001832a movs r5, r0 | r5 = r0;
0x0001832c lsls r0, r0, 0x11 | r0 <<= 0x11;
0x0001832e movs r0, r0 |
0x00018330 ldr r3, [pc, 0x58] | r3 = *(0x1838c);
0x00018332 movs r5, r0 | r5 = r0;
| if (r5 > r0) {
0x00018334 blo 0x18364 |
0x00018336 movs r2, r0 | r2 = r0;
| if (r2 >= r0) {
0x00018338 bhs 0x18414 | goto label_54;
| }
0x0001833a movs r2, r0 | r2 = r0;
0x0001833c ldm r6!, {r1, r3, r5, r7} | r1 = *(r6!);
| r3 = *((r6! + 4));
| r5 = *((r6! + 8));
| r7 = *((r6! + 12));
0x0001833e movs r2, r0 | r2 = r0;
0x00018340 lsls r4, r0, 0x11 | r4 = r0 << 0x11;
0x00018342 movs r0, r0 |
0x00018344 lsls r4, r2, 0x12 | r4 = r2 << 0x12;
0x00018346 movs r0, r0 |
0x00018348 ldc p15, c15, [sb, 0x3fc]! | __asm ("ldc p15, c15, aav.0x000000ff!");
0x0001834c b 0x17f56 | goto label_19;
| }
0x00018364 bl 0xffee4366 | void (*0xffee4366)(uint32_t) (r0);
0x00018368 b 0x17e46 | goto label_20;
| label_54:
0x00018414 ldr r3, [pc, 0xfc] |
0x00018416 add r2, pc | r2 += pc;
0x00018418 ldr r7, [sp, 0x60] | r7 = var_60h;
0x0001841a ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x0001841c ldr r2, [pc, 0xf8] |
0x0001841e ldr r3, [r3] | r3 = *(0x18514);
0x00018420 str r3, [sp, 0x3c] | var_3ch = r3;
0x00018422 mov.w r3, 0 | r3 = 0;
0x00018426 add r2, pc | r2 = 0x30942;
0x00018428 cmp r0, 0 |
| if (r0 == 0) {
0x0001842a beq 0x1849e | goto label_55;
| }
0x0001842c mov r4, r1 | r4 = r1;
0x0001842e cmp r1, 0 |
| if (r1 == 0) {
0x00018430 beq 0x184b8 | goto label_56;
| }
0x00018432 cmp r5, 0 |
| if (r5 == 0) {
0x00018434 beq 0x184d4 | goto label_57;
| }
0x00018436 cmp r7, 0 |
| if (r7 == 0) {
0x00018438 beq 0x184f0 | goto label_58;
| }
0x0001843a ldr r3, [pc, 0xe0] | r3 = *(0x1851e);
0x0001843c mov r6, r0 | r6 = r0;
0x0001843e ldr.w sb, [r2, r3] | sb = *((r2 + r3));
0x00018442 mov r0, sb | r0 = sb;
0x00018444 blx 0xa9f8 | fcn_0000a9f8 ();
0x00018448 mov r0, r4 | r0 = r4;
0x0001844a movs r4, 4 | r4 = 4;
0x0001844c bl 0x101a8 | fcn_000101a8 (r0);
0x0001844e cdp2 p9, 0xa, c11, c12, c0, 4 | __asm ("cdp2 p9, 0xa, c11, c12, c0, 4");
0x00018450 cbnz r0, 0x18474 |
| while (1) {
0x00018452 mov r0, sb | r0 = sb;
0x00018454 blx 0xaab8 | fcn_0000aab8 ();
0x00018458 ldr r2, [pc, 0xc4] |
0x0001845a ldr r3, [pc, 0xb8] | r3 = *(0x18516);
0x0001845c add r2, pc | r2 = 0x30980;
0x0001845e ldr r3, [r2, r3] | r3 = *(0x30980);
0x00018460 ldr r2, [r3] | r2 = *(0x30980);
0x00018462 ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x00018464 eors r2, r3 | r2 ^= r3;
0x00018466 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0001846a bne 0x1850c | goto label_59;
| }
0x0001846c mov r0, r4 | r0 = r4;
0x0001846e add sp, 0x44 |
0x00018470 pop.w {r4, r5, r6, r7, r8, sb, pc} |
0x00018474 add r3, sp, 0xc | r3 += var_ch;
0x00018476 movs r2, 0x30 | r2 = 0x30;
0x00018478 movs r1, 0 | r1 = 0;
0x0001847a mov r0, r3 | r0 = r3;
0x0001847c blx 0xa6f4 | fcn_0000a6f4 ();
0x00018480 movs r4, 0 | r4 = 0;
0x00018482 str r0, [sp, 4] | var_4h = r0;
0x00018484 mov r3, r8 | r3 = r8;
0x00018486 add r0, sp, 8 | r0 += var_8h_2;
0x00018488 mov r2, r5 | r2 = r5;
0x0001848a mov r1, r6 | r1 = r6;
0x0001848c str r7, [sp] | *(sp) = r7;
0x0001848e str r4, [sp, 8] | var_8h_2 = r4;
0x00018490 bl 0x14aac | fcn_00014aac (r0, r1, r2, r3, r4, r5);
0x00018494 ldr r0, [sp, 8] | r0 = var_8h_2;
0x00018496 ldr r4, [sp, 0x38] | r4 = var_38h;
0x00018498 bl 0x164f4 | fcn_000164f4 (r0, r1, r2, r3, r4, r5, r6);
0x0001849c b 0x18452 |
| }
| label_55:
0x0001849e ldr r3, [pc, 0x84] |
0x000184a0 movw r2, 0x69a | r2 = 0x69a;
0x000184a4 ldr r4, [pc, 0x80] |
0x000184a6 ldr r1, [pc, 0x84] |
0x000184a8 add r3, pc |
0x000184aa add r4, pc | r4 = 0x309d6;
0x000184ac add.w r3, r3, 0x20c | r3 = 0x30bde;
0x000184b0 add r1, pc | r1 = 0x309e2;
0x000184b2 str r4, [sp] | *(sp) = r4;
0x000184b4 blx 0xae74 | fcn_0000ae74 ();
| label_56:
0x000184b8 ldr r3, [pc, 0x74] |
0x000184ba movw r2, 0x69b | r2 = 0x69b;
0x000184be ldr r5, [pc, 0x74] |
0x000184c0 mov r0, r4 | r0 = r4;
0x000184c2 ldr r1, [pc, 0x74] |
0x000184c4 add r3, pc |
0x000184c6 add r5, pc | r5 = 0x30a00;
0x000184c8 add.w r3, r3, 0x20c | r3 = 0x30c04;
0x000184cc add r1, pc | r1 = 0x30a0a;
0x000184ce str r5, [sp] | *(sp) = r5;
0x000184d0 blx 0xae74 | fcn_0000ae74 ();
| label_57:
0x000184d4 ldr r3, [pc, 0x64] |
0x000184d6 movw r2, 0x69c | r2 = 0x69c;
0x000184da ldr r4, [pc, 0x64] |
0x000184dc mov r0, r5 | r0 = r5;
0x000184de ldr r1, [pc, 0x64] |
0x000184e0 add r3, pc |
0x000184e2 add r4, pc | r4 = 0x30a28;
0x000184e4 add.w r3, r3, 0x20c | r3 = 0x30c2c;
0x000184e8 add r1, pc | r1 = 0x30a32;
0x000184ea str r4, [sp] | *(sp) = r4;
0x000184ec blx 0xae74 | fcn_0000ae74 ();
| label_58:
0x000184f0 ldr r3, [pc, 0x54] |
0x000184f2 movw r2, 0x69d | r2 = 0x69d;
0x000184f6 ldr r4, [pc, 0x54] |
0x000184f8 mov r0, r7 | r0 = r7;
0x000184fa ldr r1, [pc, 0x54] |
0x000184fc add r3, pc |
0x000184fe add r4, pc | r4 = 0x30a50;
0x00018500 add.w r3, r3, 0x20c | r3 = 0x30c54;
0x00018504 add r1, pc | r1 = 0x30a5a;
0x00018506 str r4, [sp] | *(sp) = r4;
0x00018508 blx 0xae74 | fcn_0000ae74 ();
0x0001850a invalid |
| label_59:
0x0001850c blx 0xaa28 | fcn_0000aa28 ();
0x00018510 mov sl, sl |
0x00018512 movs r5, r0 | r5 = r0;
0x00018514 lsls r0, r0, 0x11 | r0 <<= 0x11;
0x00018516 movs r0, r0 |
0x00018518 mov sl, r8 | sl = r8;
0x0001851a movs r5, r0 | r5 = r0;
0x0001851c lsls r0, r7, 0x11 | r0 = r7 << 0x11;
0x0001851e movs r0, r0 |
0x00018520 mov ip, r1 |
0x00018522 movs r5, r0 | r5 = r0;
0x00018524 ldm r6, {r3, r4, r6} | r3 = *(r6);
| r4 = *((r6 + 4));
| r6 = *((r6 + 8));
0x00018526 movs r2, r0 | r2 = r0;
0x00018528 ittt ls |
| if (r2 > r0) {
0x0001852a movls r2, r0 | r2 = r0;
| }
| if (r2 > r0) {
0x0001852c ldmls r1!, {r2, r3, r5, r6, r7} | r2 = *(r1!);
| r3 = *((r1! + 4));
| r5 = *((r1! + 8));
| r6 = *((r1! + 12));
| r7 = *((r1! + 16));
| }
| if (r2 > r0) {
0x0001852e movls r2, r0 | r2 = r0;
| }
0x00018530 ldm r6!, {r2, r3, r4, r5} | r2 = *(r6!);
| r3 = *((r6! + 4));
| r4 = *((r6! + 8));
| r5 = *((r6! + 12));
0x00018532 movs r2, r0 | r2 = r0;
0x00018534 ldm r5, {r1, r3, r4, r5, r6, r7} | r1 = *(r5);
| r3 = *((r5 + 4));
| r4 = *((r5 + 8));
| r5 = *((r5 + 12));
| r6 = *((r5 + 16));
| r7 = *((r5 + 20));
0x00018536 movs r2, r0 | r2 = r0;
0x00018538 ldm r1!, {r4, r6, r7} | r4 = *(r1!);
| r6 = *((r1! + 4));
| r7 = *((r1! + 8));
0x0001853a movs r2, r0 | r2 = r0;
0x0001853c ldm r6!, {r5} | r5 = *(r6!);
0x0001853e movs r2, r0 | r2 = r0;
0x00018540 ldm r2, {r1, r2} | r1 = *(r2);
| r2 = *((r2 + 4));
0x00018542 movs r2, r0 | r2 = r0;
0x00018544 ldm r1!, {r2, r4, r5, r7} | r2 = *(r1!);
| r4 = *((r1! + 4));
| r5 = *((r1! + 8));
| r7 = *((r1! + 12));
0x00018546 movs r2, r0 | r2 = r0;
0x00018548 ldm r6!, {r2} | r2 = *(r6!);
0x0001854a movs r2, r0 | r2 = r0;
0x0001854c str r7, [sp, 0xf8] | *(arg_f8h) = r7;
0x0001854e movs r2, r0 | r2 = r0;
0x00018550 ldm r1!, {r3, r4, r7} | r3 = *(r1!);
| r4 = *((r1! + 4));
| r7 = *((r1! + 8));
0x00018552 movs r2, r0 | r2 = r0;
| }
[*] Function system used 1 times pacsd