[*] Binary protection state of libpaho-mqtt3a.so.1.3.11
Full RELRO Canary found NX enabled DSO No RPATH No RUNPATH No Symbols
[*] Function strcpy tear down of libpaho-mqtt3a.so.1.3.11
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/libpaho-mqtt3a.so.1.3.11 @ 0xf060 */
| #include <stdint.h>
|
; (fcn) fcn.0000f060 () | void fcn_0000f060 (int16_t arg1, int16_t arg3) {
| int16_t var_0h;
| int32_t var_4h;
| int32_t var_4h_2;
| int16_t var_ch;
| int32_t var_10h;
| int32_t var_10h_2;
| int16_t var_18h;
| int16_t var_20h;
| int16_t var_24h;
| int16_t var_28h;
| int16_t var_2ch;
| int16_t var_30h;
| int16_t var_34h;
| int16_t var_38h;
| int16_t var_3ch;
| int32_t var_0h_2;
| int16_t var_4ch;
| r0 = arg1;
| r2 = arg3;
0x0000f060 svcmi 0xf0e92d | __asm ("svcmi aav.0x000000ff");
0x0000f064 mov r7, r2 | r7 = r2;
0x0000f066 ldr r2, [pc, 0x1c0] |
0x0000f068 sub sp, 0x54 |
0x0000f06a mov r5, r0 | r5 = r0;
0x0000f06c add r6, sp, 0x38 | r6 += var_38h;
0x0000f06e ldr r3, [pc, 0x1bc] | r3 = *(0xf22e);
0x0000f070 mov.w sb, 0 | sb = 0;
0x0000f074 ldr.w lr, [pc, 0x1b8] | lr = *(0xf230);
0x0000f078 add r2, pc | r2 = 0x1e2a6;
0x0000f07a invalid |
| if (r0 == 0) {
0x0000f07c cbz r0, 0xf0ae | void (*0xf0ae)() ();
| }
0x0000f07e mov sl, sb | sl = sb;
0x0000f080 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x0000f082 mov r4, sb | r4 = sb;
0x0000f084 add lr, pc | lr += pc;
0x0000f086 mov r8, sb | r8 = sb;
0x0000f088 mov ip, lr |
0x0000f08a add fp, pc |
0x0000f08c ldr r3, [r3] | r3 = *(r3);
0x0000f08e str r3, [sp, 0x4c] | var_4ch = r3;
0x0000f090 mov.w r3, 0 | r3 = 0;
0x0000f092 lsls r0, r0, 0xc | r0 <<= 0xc;
0x0000f094 ldm.w ip!, {r0, r1, r2, r3} | r0 = *(ip!);
| r1 = *((ip! + 4));
| r2 = *((ip! + 8));
| r3 = *((ip! + 12));
0x0000f098 invalid |
0x0000f09a ldr r1, [sp, 0x24] | r1 = var_24h;
0x0000f09c stm r6!, {r0, r1, r2, r3} | *(r6!) = r0;
| *((r6! + 4)) = r1;
| *((r6! + 8)) = r2;
| *((r6! + 12)) = r3;
0x0000f09e add.w r0, lr, 0x14 | r0 = lr + 0x14;
0x0000f0a2 ldr.w r3, [ip] | r3 = *(ip);
0x0000f0a6 movs r2, 3 | r2 = 3;
0x0000f0a8 movs r1, 0x3d | r1 = 0x3d;
0x0000f0aa str r3, [r6] | *(r6) = r3;
0x0000f0ac bl 0xf2e8 | fcn_0000f2e8 (r0, r1, r2);
0x0000f0b0 mov r2, sb | r2 = sb;
0x0000f0b2 movw r3, 0x1f90 | r3 = 0x1f90;
0x0000f0b6 add r1, sp, 0x20 | r1 += var_20h;
0x0000f0b8 mov r0, r7 | r0 = r7;
0x0000f0ba bl 0xac3c | fcn_0000ac3c (r0, r1, r2, r3);
0x0000f0be ldr r3, [r5, 0x20] | r3 = *((r5 + 0x20));
0x0000f0c0 mov r6, r0 | r6 = r0;
0x0000f0c2 ldr r2, [sp, 0x20] | r2 = var_20h;
| if (r3 == 0) {
0x0000f0c4 cbz r3, 0xf108 | goto label_3;
| }
| do {
0x0000f0c6 mov r1, r4 | r1 = r4;
0x0000f0c8 str r3, [sp, 0x18] | var_18h = r3;
0x0000f0ca str r2, [sp, 0xc] | var_ch = r2;
0x0000f0cc mov.w r3, -1 | r3 = -1;
0x0000f0d0 movs r2, 1 | r2 = 1;
0x0000f0d2 mov r0, sl | r0 = sl;
0x0000f0d4 strd r6, r7, [sp, 0x10] | __asm ("strd r6, r7, [var_10h]");
0x0000f0d8 strd r6, r7, [sp, 4] | __asm ("strd r6, r7, [var_4h]");
0x0000f0dc str.w fp, [sp] | __asm ("str.w fp, [sp]");
0x0000f0e0 blx 0x2874 | r0 = fcn_00002874 ();
0x0000f0e4 mov r4, r0 | r4 = r0;
| label_0:
0x0000f0e6 eor r3, r8, 1 | r3 = r8 ^ 1;
0x0000f0ea cmp r4, 0 |
0x0000f0ec ite le |
| if (r4 > 0) {
0x0000f0ee movle r3, 0 | r3 = 0;
| }
| if (r4 <= 0) {
0x0000f0f0 andgt r3, r3, 1 | r3 &= 1;
| }
0x0000f0f2 lsls r1, r0, 0xc | r1 = r0 << 0xc;
| if (r3 != 0) {
0x0000f0f4 cbnz r3, 0xf12a | goto label_4;
| }
| label_1:
0x0000f0f6 cmp.w r8, 0 |
| if (r8 != 0) {
0x0000f0fa bne 0xf172 | goto label_5;
| }
0x0000f0fc ldr r3, [r5, 0x20] | r3 = *((r5 + 0x20));
0x0000f0fe mov.w r8, 1 | r8 = 1;
0x0000f102 ldr r2, [sp, 0x20] | r2 = var_20h;
0x0000f104 cmp r3, 0 |
0x0000f106 bne 0xf0c6 |
| } while (r3 != 0);
| label_3:
0x0000f108 ldr r3, [pc, 0x12c] |
0x0000f10a mov r1, r4 | r1 = r4;
0x0000f10c str r2, [sp, 0xc] | var_ch = r2;
0x0000f10e mov r0, sl | r0 = sl;
0x0000f110 movs r2, 1 | r2 = 1;
0x0000f112 strd r6, r7, [sp, 0x10] | __asm ("strd r6, r7, [var_10h]");
0x0000f116 add r3, pc | r3 = 0x1e352;
0x0000f118 strd r6, r7, [sp, 4] | __asm ("strd r6, r7, [var_4h]");
0x0000f11c str r3, [sp] | *(sp) = r3;
0x0000f11e mov.w r3, -1 | r3 = -1;
0x0000f120 adds r3, 0xff | r3 += 0xff;
0x0000f122 blx 0x2874 | r0 = fcn_00002874 ();
0x0000f126 mov r4, r0 | r4 = r0;
0x0000f128 b 0xf0e6 | goto label_0;
| label_4:
0x0000f12a ldr r0, [pc, 0x110] |
0x0000f12c adds r4, 1 | r4++;
0x0000f12e mov r2, r4 | r2 = r4;
0x0000f130 movs r1, 0x68 | r1 = 0x68;
0x0000f132 add r0, pc | r0 = 0x1e374;
0x0000f134 bl 0xf7f0 | r0 = fcn_0000f7f0 (r0, r1, r2);
0x0000f138 mov sl, r0 | sl = r0;
0x0000f13a cmp r0, 0 |
| if (r0 != 0) {
0x0000f13c bne 0xf0f6 | goto label_1;
| }
0x0000f13e add r7, sp, 0x24 | r7 += var_24h;
0x0000f140 mvn r3, 0x62 | r3 = ~0x62;
0x0000f144 str r3, [sp, 0x24] | var_24h = r3;
| label_2:
0x0000f146 ldr r0, [pc, 0xf8] |
0x0000f148 movs r3, 3 | r3 = 3;
0x0000f14a mov r2, r7 | r2 = r7;
0x0000f14c movs r1, 0x98 | r1 = 0x98;
0x0000f14e add r0, pc | r0 = 0x1e394;
0x0000f150 adds r0, 0x14 | r0 += 0x14;
0x0000f152 bl 0xf388 | fcn_0000f388 (r0, r1, r2, r3);
0x0000f156 ldr r2, [pc, 0xec] |
0x0000f158 ldr r3, [pc, 0xd0] | r3 = *(0xf22c);
0x0000f15a ldr r0, [sp, 0x24] | r0 = var_24h;
0x0000f15c add r2, pc | r2 = 0x1e3a6;
0x0000f15e ldr r3, [r2, r3] | r3 = imp.__aeabi_unwind_cpp_pr0;
0x0000f160 ldr r2, [r3] | r2 = imp.__aeabi_unwind_cpp_pr0;
0x0000f162 ldr r3, [sp, 0x4c] | r3 = var_4ch;
0x0000f164 eors r2, r3 | r2 ^= r3;
0x0000f166 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0000f16a bne 0xf222 | goto label_6;
| }
0x0000f16c add sp, 0x54 |
0x0000f16e pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
0x0000f170 ldrh r0, [r6, 0x3e] | r0 = *((r6 + 0x3e));
| label_5:
0x0000f172 ldr r2, [pc, 0xd4] |
0x0000f174 mov r3, sl | r3 = sl;
0x0000f176 mov.w r1, -1 | r1 = -1;
0x0000f17a movs r0, 4 | r0 = 4;
0x0000f17c movw r8, 0xd090 |
0x0000f17e lsrs r0, r2, 2 | r0 = r2 >> 2;
0x0000f180 add r7, sp, 0x24 | r7 += var_24h;
0x0000f182 add r2, pc | r2 = 0x1e3d0;
0x0000f184 movt r8, 3 | r8 = 0x3d090;
0x0000f188 bl 0x8e8c | fcn_00008e8c (r0, r1);
0x0000f18c add r3, sp, 0x3c | r3 += var_3ch;
0x0000f18e add r6, sp, 0x28 | r6 += var_28h;
0x0000f190 ldm r3, {r0, r1, r2, r3} | r0 = *(r3);
| r1 = *((r3 + 4));
| r2 = *((r3 + 8));
| r3 = *((r3 + 12));
0x0000f192 add.w sb, sp, 0x2c | sb += var_2ch;
0x0000f196 stm.w sp, {r0, r1, r2, r3} | *(sp) = r0;
| *((sp + 4)) = r1;
| *((sp + 8)) = r2;
| *((sp + 12)) = r3;
0x0000f198 movs r7, r1 | r7 = r1;
0x0000f19a mov r2, r4 | r2 = r4;
0x0000f19c ldr r3, [sp, 0x38] | r3 = var_38h;
0x0000f19e mov r1, sl | r1 = sl;
0x0000f1a0 ldr r0, [r5] | r0 = *(r5);
0x0000f1a2 bl 0x776c | fcn_0000776c (r0, r1, r2, r3);
0x0000f1a6 ldr r0, [pc, 0xa4] |
0x0000f1a8 mov r2, sl | r2 = sl;
0x0000f1aa movs r1, 0x73 | r1 = 0x73;
0x0000f1ac add r0, pc | r0 = 0x1e3fe;
0x0000f1ae bl 0xf910 | fcn_0000f910 (r0, r1, r2);
0x0000f1b2 add r0, sp, 0x30 | r0 += var_30h;
0x0000f1b4 blx 0x2410 | fcn_00002410 ();
0x0000f1b8 ldr r3, [sp, 0x30] | r3 = var_30h;
0x0000f1ba adds r3, 0xa | r3 += 0xa;
0x0000f1bc str r3, [sp, 0x30] | var_30h = r3;
0x0000f1be b 0xf1d4 |
| while (r3 == 0) {
0x0000f1c0 mov r0, sb | r0 = sb;
0x0000f1c2 blx 0x2410 | fcn_00002410 ();
0x0000f1c6 ldrd r2, r3, [sp, 0x2c] | __asm ("ldrd r2, r3, [var_2ch]");
0x0000f1ca cmp r2, r3 |
| if (r2 > r3) {
0x0000f1cc bgt 0xf202 | goto label_7;
| }
0x0000f1ce mov r0, r8 | r0 = r8;
0x0000f1d0 blx 0x2504 | strcpy (r0, r1)
0x0000f1d4 mov r3, r7 | r3 = r7;
0x0000f1d6 ldr r0, [r5] | r0 = *(r5);
0x0000f1d8 mov r2, r6 | r2 = r6;
0x0000f1da movs r1, 0xc | r1 = 0xc;
0x0000f1dc bl 0x7598 | fcn_00007598 (r0, r1, r2, r3);
0x0000f1e0 ldr r3, [sp, 0x28] | r3 = var_28h;
0x0000f1e2 mov r4, r0 | r4 = r0;
0x0000f1e4 cmp r3, 0 |
0x0000f1e6 beq 0xf1c0 |
| }
0x0000f1e8 ldr r1, [pc, 0x64] |
0x0000f1ea movs r2, 0xc | r2 = 0xc;
0x0000f1ec add r1, pc | r1 = 0x1e440;
0x0000f1ee blx 0x2814 | r0 = fcn_00002814 ();
| if (r0 != 0) {
0x0000f1f2 cbz r0, 0xf208 |
0x0000f1f4 ldr r1, [pc, 0x5c] |
0x0000f1f6 movs r2, 0xc | r2 = 0xc;
0x0000f1f8 mov r0, r4 | r0 = r4;
0x0000f1fa add r1, pc | r1 = 0x1e452;
0x0000f1fc blx 0x2814 | r0 = fcn_00002814 ();
| if (r0 == 0) {
0x0000f200 cbz r0, 0xf208 | goto label_8;
| }
| label_7:
0x0000f202 mov.w r3, -1 | r3 = -1;
0x0000f206 str r3, [sp, 0x24] | var_24h = r3;
| }
| label_8:
0x0000f208 add r4, sp, 0x34 | r4 += var_34h;
0x0000f20a movs r3, 1 | r3 = 1;
0x0000f20c str r3, [sp, 0x28] | var_28h = r3;
| do {
0x0000f20e mov r3, r4 | r3 = r4;
0x0000f210 ldr r0, [r5] | r0 = *(r5);
0x0000f212 mov r2, r6 | r2 = r6;
0x0000f214 movs r1, 1 | r1 = 1;
0x0000f216 bl 0x7598 | fcn_00007598 (r0, r1, r2, r3);
0x0000f21a ldr r3, [sp, 0x28] | r3 = var_28h;
0x0000f21c cmp r3, 0 |
0x0000f21e bne 0xf20e |
| } while (r3 != 0);
0x0000f220 b 0xf146 | goto label_2;
| label_6:
0x0000f222 blx 0x245c | pthread_condattr_init ();
0x0000f226 nop |
0x0000f228 ldc p0, c0, [r0, -0] | __asm ("ldc p0, c0, [r0, -0]");
0x0000f22c lsls r4, r7, 7 | r4 = r7 << 7;
0x0000f22e movs r0, r0 |
| if (r4 == 0) {
0x0000f230 cbz r4, 0xf276 | void (*0xf276)() ();
| }
0x0000f232 movs r0, r0 |
0x0000f234 sxth r2, r5 | __asm ("sxth r2, r5");
0x0000f236 movs r0, r0 |
| if (r6 == 0) {
0x0000f238 cbz r6, 0xf274 | void (*0xf274)() ();
| }
0x0000f23a movs r0, r0 |
| if (r6 == 0) {
0x0000f23c cbz r6, 0xf27c | void (*0xf27c)() ();
| }
0x0000f23e movs r0, r0 |
0x0000f240 sxtb r2, r0 | r2 = (int32_t) r0;
0x0000f242 movs r0, r0 |
0x0000f244 stc p0, c0, [ip], -0 | __asm ("stc p0, c0, [ip], -0");
| if (r2 == 0) {
0x0000f248 cbz r2, 0xf282 | void (*0xf282)() ();
| }
0x0000f24a movs r0, r0 |
| if (r4 == 0) {
0x0000f24c cbz r4, 0xf26e | void (*0xf26e)() ();
| }
0x0000f24e movs r0, r0 |
| if (r4 == 0) {
0x0000f250 cbz r4, 0xf274 | void (*0xf274)() ();
| }
0x0000f252 movs r0, r0 |
| if (r6 == 0) {
0x0000f254 cbz r6, 0xf278 | void (*0xf278)() ();
| }
0x0000f256 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/lib/libpaho-mqtt3a.so.1.3.11 @ 0x12cc0 */
| #include <stdint.h>
|
; (fcn) fcn.00012cc0 () | void fcn_00012cc0 (void * ptr) {
| int16_t var_4h;
| int16_t var_8h_4;
| int16_t var_ch;
0x00012cc0 ldr r0, [pc, 0x200] |
0x00012cc2 movs r2, 3 | r2 = 3;
0x00012cc4 ldr r3, [pc, 0x200] | r3 = *(0x12ec8);
0x00012cc6 movs r1, 0xc8 | r1 = 0xc8;
0x00012cc8 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00012ccc sub sp, 0x14 |
0x00012cce ldr r6, [pc, 0x1fc] |
0x00012cd0 add r0, pc | r0 = 0x25b98;
0x00012cd2 movs r4, 0 | r4 = 0;
0x00012cd4 ldr r3, [r0, r3] |
0x00012cd6 add r6, pc | r6 = 0x25ba8;
0x00012cd8 ldr r5, [pc, 0x1f4] |
0x00012cda add.w r0, r6, 0x90 | r0 = r6 + 0x90;
0x00012cde ldr r3, [r3] | r3 = imp.__aeabi_unwind_cpp_pr0;
0x00012ce0 str r3, [sp, 0xc] | var_ch = r3;
0x00012ce2 mov.w r3, 0 | r3 = 0;
0x00012ce6 bl 0xf2e8 | fcn_0000f2e8 (r0, r1, r2);
0x00012cea movs r2, 3 | r2 = 3;
0x00012cec movw r1, 0x91e | r1 = 0x91e;
0x00012cf0 add.w r0, r6, 0xa4 | r0 = r6 + 0xa4;
0x00012cf4 str r4, [sp, 4] | var_4h = r4;
0x00012cf6 bl 0xf2e8 | fcn_0000f2e8 (r0, r1, r2);
0x00012cfa ldr r2, [pc, 0x1d8] | r2 = *(0x12ed6);
0x00012cfc add r5, pc | r5 = 0x25bd0;
0x00012cfe ldr r3, [pc, 0x1d8] | r3 = *(0x12eda);
0x00012d00 ldr.w r8, [r5, r2] | r8 = imp.__aeabi_unwind_cpp_pr0;
0x00012d04 ldr r7, [r5, r3] | r7 = imp.__aeabi_unwind_cpp_pr0;
0x00012d06 ldr.w r3, [r8] | r3 = imp.__aeabi_unwind_cpp_pr0;
0x00012d08 adds r0, 0 | r0 += 0;
0x00012d0a ldr r2, [r7] | r2 = imp.__aeabi_unwind_cpp_pr0;
0x00012d0c orrs r3, r2 | r3 |= r2;
| if (r3 == r2) {
0x00012d0e beq 0x12d5c | goto label_3;
| }
0x00012d10 ldr r3, [pc, 0x1c8] | r3 = *(0x12edc);
0x00012d12 add r6, sp, 8 | r6 += var_8h_4;
0x00012d14 str r4, [sp, 8] | var_8h_4 = r4;
0x00012d16 ldr.w sb, [r5, r3] | sb = *((r5 + r3));
0x00012d1a ldr.w r0, [sb] | r0 = *(sb);
| if (r0 != 0) {
0x00012d1e cbnz r0, 0x12d28 | goto label_6;
| }
0x00012d20 b 0x12db0 | goto label_7;
| do {
| label_1:
0x00012d22 adds r4, 1 | r4++;
| label_0:
0x00012d24 ldr.w r0, [sb] | r0 = *(sb);
| label_6:
0x00012d28 mov r1, r6 | r1 = r6;
0x00012d2a bl 0xceb0 | fcn_0000ceb0 (r0, r1);
0x00012d2c str.w fp, [r1, 0x158] | __asm ("str.w fp, aav.0x000000ff");
0x00012d30 ldr r3, [sp, 8] | r3 = var_8h_4;
0x00012d32 ldr r3, [r3, 8] | r3 = *((r3 + 8));
0x00012d34 ldr r2, [r3, 0xc] | r2 = *((r3 + 0xc));
0x00012d36 ldrh r3, [r2, 0x10] | r3 = *((r2 + 0x10));
0x00012d38 sbfx r3, r3, 6, 4 | __asm ("sbfx r3, r3, 6, 4");
0x00012d3c cmp r3, 0 |
0x00012d3e bgt 0x12d22 |
| } while (r3 > 0);
0x00012d40 ldrb r3, [r2, 0x10] | r3 = *((r2 + 0x10));
0x00012d42 lsls r3, r3, 0x1d | r3 <<= 0x1d;
| if (r3 >= r3) {
0x00012d44 bpl 0x12d24 | goto label_0;
| }
0x00012d46 b 0x12d22 | goto label_1;
0x00012d48 ldr r2, [pc, 0x194] |
0x00012d4a mov r3, r4 | r3 = r4;
0x00012d4c mov.w r1, -1 | r1 = -1;
0x00012d50 movs r0, 3 | r0 = 3;
0x00012d52 add r2, pc | r2 = 0x25c36;
0x00012d54 bl 0x8e8c | fcn_00008e8c (r0, r1);
0x00012d58 cmp r4, 0 |
| if (r4 != 0) {
0x00012d5a beq 0x12dc0 |
| label_3:
0x00012d5c ldr r0, [pc, 0x184] |
0x00012d5e movs r3, 3 | r3 = 3;
0x00012d60 add r2, sp, 4 | r2 += var_4h;
0x00012d62 movw r1, 0x941 | r1 = 0x941;
0x00012d66 add r0, pc | r0 = 0x25c4e;
0x00012d68 adds r0, 0xa4 | r0 += 0xa4;
0x00012d6a bl 0xf388 | fcn_0000f388 (r0, r1, r2, r3);
0x00012d6e ldr r3, [pc, 0x178] | r3 = *(0x12eea);
0x00012d70 ldr r4, [r5, r3] | r4 = *((r5 + r3));
0x00012d72 ldr r3, [r4] | r3 = *(r4);
| if (r3 != 0) {
0x00012d74 cbz r3, 0x12d84 |
0x00012d76 ldr r3, [pc, 0x174] |
0x00012d78 ldr r3, [r5, r3] | r3 = *((r5 + r3));
0x00012d7a ldr r3, [r3] | r3 = *(0x12eee);
0x00012d7c ldr r0, [r3, 4] | r0 = *(0x12ef2);
0x00012d7e ldr r3, [r0, 0xc] | r3 = *(0x12efe);
0x00012d80 cmp r3, 0 |
| if (r3 == 0) {
0x00012d82 beq 0x12e74 | goto label_8;
| }
| }
| label_5:
0x00012d84 ldr r2, [pc, 0x168] |
0x00012d86 ldr r3, [pc, 0x140] | r3 = *(0x12eca);
0x00012d88 add r2, pc | r2 = 0x25c7c;
0x00012d8a ldr r3, [r2, r3] | r3 = imp.__aeabi_unwind_cpp_pr0;
0x00012d8c ldr r2, [r3] | r2 = imp.__aeabi_unwind_cpp_pr0;
0x00012d8e ldr r3, [sp, 0xc] | r3 = var_ch;
0x00012d90 eors r2, r3 | r2 ^= r3;
0x00012d92 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00012d96 bne.w 0x12ec0 | goto label_9;
| }
0x00012d9a ldr r0, [pc, 0x158] |
0x00012d9c movs r3, 3 | r3 = 3;
0x00012d9e movs r2, 0 | r2 = 0;
0x00012da0 movs r1, 0xdc | r1 = 0xdc;
0x00012da2 add r0, pc | r0 = 0x25c9c;
0x00012da4 adds r0, 0x90 | r0 += 0x90;
0x00012da6 add sp, 0x14 |
0x00012da8 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00012dac b.w 0xf388 | void (*0xf388)() ();
| label_7:
0x00012db0 ldr r2, [pc, 0x144] |
0x00012db2 mov r3, r0 | r3 = r0;
0x00012db4 mov.w r1, -1 | r1 = -1;
0x00012db8 movs r0, 3 | r0 = 3;
0x00012dba add r2, pc | r2 = 0x25cb6;
0x00012dbc bl 0x8e8c | fcn_00008e8c (r0, r1);
| }
0x00012dc0 ldr r3, [pc, 0x138] | r3 = *(0x12efc);
0x00012dc2 movs r4, 0x64 | r4 = 0x64;
0x00012dc4 ldr r6, [pc, 0x138] |
0x00012dc6 movs r2, 1 | r2 = 1;
0x00012dc8 ldr.w sl, [pc, 0x138] |
0x00012dcc ldr.w sb, [r5, r3] | sb = *((r5 + r3));
0x00012dd0 add r6, pc | r6 = 0x25cd4;
0x00012dd2 adds r6, 0x80 | r6 += 0x80;
0x00012dd4 add sl, pc | sl = 0x25cdc;
0x00012dd6 str.w r2, [sb] | __asm ("str.w r2, [sb]");
| do {
0x00012dda ldr.w r3, [r8] | r3 = *(r8);
0x00012dde ldr r2, [r7] | r2 = *(r7);
0x00012de0 orrs r3, r2 | r3 |= r2;
| if (r3 == r2) {
0x00012de2 beq 0x12e56 | goto label_10;
| }
| label_2:
0x00012de4 ldr.w r3, [sb] | r3 = *(sb);
| if (r3 == 0) {
0x00012de8 cbz r3, 0x12e56 | goto label_10;
| }
0x00012dea subs r4, 1 | r4--;
| if (r4 == 1) {
0x00012dec beq 0x12e56 | goto label_10;
| }
0x00012dee ldr r3, [pc, 0x118] | r3 = *(0x12f0a);
0x00012df0 ldr.w fp, [r5, r3] | fp = *((r5 + r3));
0x00012df4 ldr.w r0, [fp] | r0 = *(fp);
0x00012df8 blx 0x270c | r0 = fcn_0000270c ();
| if (r0 != 0) {
0x00012dfc cbnz r0, 0x12e62 | goto label_11;
| }
| label_4:
0x00012dfe ldr r2, [pc, 0x10c] |
0x00012e00 mov.w r1, -1 | r1 = -1;
0x00012e04 movs r0, 3 | r0 = 3;
0x00012e06 add r2, pc | r2 = 0x25d18;
0x00012e08 bl 0x8e8c | fcn_00008e8c (r0, r1);
0x00012e0c movs r2, 3 | r2 = 3;
0x00012e0e movs r1, 0x69 | r1 = 0x69;
0x00012e10 mov r0, r6 | r0 = r6;
0x00012e12 bl 0xf2e8 | fcn_0000f2e8 (r0, r1, r2);
0x00012e16 movw r0, 0x86a0 |
0x00012e1a movt r0, 1 | r0 = 0x186a0;
0x00012e1e blx 0x2504 | strcpy (r0, r1)
0x00012e22 mov r0, r6 | r0 = r6;
0x00012e24 movs r3, 3 | r3 = 3;
0x00012e26 movs r2, 0 | r2 = 0;
0x00012e28 movs r1, 0x6f | r1 = 0x6f;
0x00012e2a bl 0xf388 | fcn_0000f388 (r0, r1, r2, r3);
0x00012e2e ldr.w r0, [fp] | r0 = *(fp);
0x00012e32 blx 0x24d4 | r0 = fwrite (r0, r1, r2, r3);
0x00012e36 cmp r0, 0 |
0x00012e38 beq 0x12dda |
| } while (r0 == 0);
0x00012e3a blx 0x2588 | localtime (r0);
0x00012e3e ldr r2, [pc, 0xd0] |
0x00012e40 mov r3, r0 | r3 = r0;
0x00012e42 movs r1, 0 | r1 = 0;
0x00012e44 movs r0, 5 | r0 = 5;
0x00012e46 add r2, pc | r2 = 0x25d5c;
0x00012e48 bl 0x8e8c | fcn_00008e8c (r0, r1);
0x00012e4c ldr.w r3, [r8] | r3 = *(r8);
0x00012e50 ldr r2, [r7] | r2 = *(r7);
0x00012e52 orrs r3, r2 | r3 |= r2;
| if (r3 != r2) {
0x00012e54 bne 0x12de4 | goto label_2;
| }
| label_10:
0x00012e56 movs r2, 1 | r2 = 1;
0x00012e58 movs r3, 0 | r3 = 0;
0x00012e5a str r2, [sp, 4] | var_4h = r2;
0x00012e5c str.w r3, [sb] | __asm ("str.w r3, [sb]");
0x00012e60 b 0x12d5c | goto label_3;
| label_11:
0x00012e62 blx 0x2588 | localtime (r0);
0x00012e66 mov r2, sl | r2 = sl;
0x00012e68 mov r3, r0 | r3 = r0;
0x00012e6a movs r1, 0 | r1 = 0;
0x00012e6c movs r0, 5 | r0 = 5;
0x00012e6e bl 0x8e8c | fcn_00008e8c (r0, r1);
0x00012e72 b 0x12dfe | goto label_4;
| label_8:
0x00012e74 str r3, [sp, 8] | var_8h_4 = r3;
0x00012e76 add r6, sp, 8 | r6 += var_8h_4;
0x00012e78 bl 0xce54 | fcn_0000ce54 (r0);
0x00012e7c ldr r3, [pc, 0x5c] | r3 = *(0x12edc);
0x00012e7e ldr.w sb, [r5, r3] | sb = *((r5 + r3));
0x00012e82 ldr.w r0, [sb] | r0 = *(sb);
0x00012e86 bl 0xce54 | fcn_0000ce54 (r0);
0x00012e8a ldr r3, [pc, 0x88] | r3 = *(0x12f16);
0x00012e8c ldr r7, [r5, r3] | r7 = *((r5 + r3));
0x00012e8e b 0x12e98 |
| while (r0 != 0) {
0x00012e90 ldr r3, [sp, 8] | r3 = var_8h_4;
0x00012e92 ldr r0, [r3, 8] | r0 = *((r3 + 8));
0x00012e94 bl 0x123e4 | fcn_000123e4 (r0);
0x00012e98 ldr r0, [r7] | r0 = *(r7);
0x00012e9a mov r1, r6 | r1 = r6;
0x00012e9c bl 0xceb0 | r0 = fcn_0000ceb0 (r0, r1);
0x00012ea0 mov r5, r0 | r5 = r0;
0x00012ea2 cmp r0, 0 |
0x00012ea4 bne 0x12e90 |
| }
0x00012ea6 ldr r0, [r7] | r0 = *(r7);
0x00012ea8 bl 0xce54 | fcn_0000ce54 (r0);
0x00012eac str.w r5, [sb] | __asm ("str.w r5, [sb]");
0x00012eb0 bl 0xecd4 | fcn_0000ecd4 ();
0x00012eb4 bl 0xfb10 | fcn_0000fb10 ();
0x00012eb8 bl 0x8e04 | fcn_00008e04 ();
0x00012ebc str r5, [r4] | *(r4) = r5;
0x00012ebe b 0x12d84 | goto label_5;
| label_9:
0x00012ec0 blx 0x245c | pthread_condattr_init ();
0x00012ec4 sub sp, 0xe0 |
0x00012ec6 movs r0, r0 |
0x00012ec8 lsls r4, r7, 7 | r4 = r7 << 7;
0x00012eca movs r0, r0 |
0x00012ecc ldrh r6, [r5, 0x1a] | r6 = *((r5 + 0x1a));
0x00012ece movs r0, r0 |
0x00012ed0 sub sp, 0x30 |
0x00012ed2 movs r0, r0 |
0x00012ed4 lsls r4, r4, 9 | r4 <<= 9;
0x00012ed6 movs r0, r0 |
0x00012ed8 lsls r4, r1, 9 | r4 = r1 << 9;
0x00012eda movs r0, r0 |
0x00012edc lsls r0, r0, 8 | r0 <<= 8;
0x00012ede movs r0, r0 |
0x00012ee0 strh r2, [r0, 0xc] | *((r0 + 0xc)) = r2;
0x00012ee2 movs r0, r0 |
0x00012ee4 ldrh r6, [r3, 0x16] | r6 = *((r3 + 0x16));
0x00012ee6 movs r0, r0 |
0x00012ee8 lsls r0, r5, 8 | r0 = r5 << 8;
0x00012eea movs r0, r0 |
0x00012eec lsls r0, r4, 8 | r0 = r4 << 8;
0x00012eee movs r0, r0 |
0x00012ef0 add sp, 0 |
0x00012ef2 movs r0, r0 |
0x00012ef4 ldrh r2, [r4, 0x14] | r2 = *((r4 + 0x14));
0x00012ef6 movs r0, r0 |
0x00012ef8 strh r2, [r3, 8] | *((r3 + 8)) = r2;
0x00012efa movs r0, r0 |
0x00012efc lsls r4, r0, 9 | r4 = r0 << 9;
0x00012efe movs r0, r0 |
0x00012f00 ldrh r4, [r6, 0x12] | r4 = *((r6 + 0x12));
0x00012f02 movs r0, r0 |
0x00012f04 strh r4, [r4, 6] | *((r4 + 6)) = r4;
0x00012f06 movs r0, r0 |
0x00012f08 lsls r0, r7, 7 | r0 = r7 << 7;
0x00012f0a movs r0, r0 |
0x00012f0c strh r2, [r4, 6] | *((r4 + 6)) = r2;
0x00012f0e movs r0, r0 |
0x00012f10 strh r2, [r3, 2] | *((r3 + 2)) = r2;
0x00012f12 movs r0, r0 |
0x00012f14 lsls r4, r7, 8 | r4 = r7 << 8;
0x00012f16 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/lib/libpaho-mqtt3a.so.1.3.11 @ 0x14664 */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) fcn.00014664 () | void fcn_00014664 (void * ptr, int16_t arg_210h, int16_t arg1, int16_t arg2, int16_t arg3) {
| int16_t var_0h_4;
| int16_t var_4h_4;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_14h;
| int16_t var_18h;
| int16_t var_1ch_2;
| int16_t var_20h_2;
| int16_t var_24h_3;
| int16_t var_28h_2;
| int16_t var_2ch_2;
| int16_t var_30h_3;
| int16_t var_34h;
| int16_t var_38h;
| int16_t var_3ch_2;
| int16_t var_40h;
| int16_t var_44h;
| int16_t var_48h;
| int16_t var_50h;
| int16_t var_64h_2;
| int16_t var_68h;
| FILE * stream;
| int16_t var_70h;
| int16_t var_74h;
| int16_t var_78h;
| int16_t var_dch;
| int16_t var_4h_5;
| int16_t var_ch_2;
| int16_t var_10h_2;
| int16_t var_30h_2;
| int16_t var_3ch;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x00014664 push {r1, r2, r3, r4, r5, r6, r8, sb, fp, lr} |
0x00014668 blx lr | lr ();
0x0001466a mov r6, r2 | r6 = r2;
0x0001466c ldr r2, [pc, 0x1f4] |
0x0001466e mov r4, r0 | r4 = r0;
0x00014670 add r3, pc | r3 += pc;
0x00014672 sub sp, 0x40 |
0x00014674 ldr r5, [r0, 0xc] | r5 = *(ptrxc);
0x00014676 add.w r0, r3, 0x24c | r0 = r3 + 0x24c;
0x0001467a ldr r3, [pc, 0x1ec] | r3 = *(0x1486a);
0x0001467c add r2, pc | r2 = 0x28ee4;
0x0001467e mov r7, r1 | r7 = r1;
0x00014680 add.w sb, r4, 0x40 | sb = r4 + 0x40;
0x00014684 movw r1, 0x643 | r1 = 0x643;
0x00014688 ldr r3, [r2, r3] |
0x0001468a movs r2, 3 | r2 = 3;
0x0001468c ldr r3, [r3] | r3 = imp.__aeabi_unwind_cpp_pr0;
0x0001468e str r3, [sp, 0x3c] | var_3ch = r3;
0x00014690 mov.w r3, 0 | r3 = 0;
0x00014694 ldrb r3, [r5, 0x10] | r3 = *((r5 + 0x10));
0x00014696 ubfx r8, r3, 2, 1 | r8 = (r3 >> 2) & ((1 << 1) - 1);
0x0001469a bl 0xf2e8 | fcn_0000f2e8 (r0, r1, r2);
0x0001469e mov r1, r4 | r1 = r4;
0x000146a0 mov r0, sb | r0 = sb;
0x000146a2 bl 0x12354 | r0 = fcn_00012354 (r0, r1, r2, r3);
0x000146a6 cmp r0, 0 |
| if (r0 != 0) {
0x000146a8 bne 0x14730 | goto label_33;
| }
0x000146aa mov r2, r0 | r2 = r0;
0x000146ac ldr r0, [r4, 0xc] | r0 = *((r4 + 0xc));
0x000146ae mov r1, r2 | r1 = r2;
0x000146b0 bl 0x144bc | fcn_000144bc (r0, r1, r2);
| label_1:
0x000146b4 ldr r2, [r4, 0x10] | r2 = *((r4 + 0x10));
0x000146b6 cmp r2, 0 |
0x000146b8 ite eq |
| if (r2 != 0) {
0x000146ba moveq r3, 0 | r3 = 0;
| }
| if (r2 == 0) {
0x000146bc andne r3, r8, 1 | r3 = r8 & 1;
| }
0x000146c0 cmp r3, 0 |
| if (r3 != 0) {
0x000146c2 bne.w 0x1483e | goto label_34;
| }
| label_6:
0x000146c6 ldr r3, [r4, 0x48] | r3 = *((r4 + 0x48));
0x000146c8 cmp r3, 0 |
| if (r3 == 0) {
0x000146ca beq 0x147b6 | goto label_35;
| }
| label_2:
0x000146cc ldr r3, [r4, 0xc] | r3 = *((r4 + 0xc));
0x000146ce movs r1, 0 | r1 = 0;
0x000146d0 ldr r2, [pc, 0x198] |
0x000146d2 movs r0, 3 | r0 = 3;
0x000146d4 strd r1, r7, [sp, 4] | __asm ("strd r1, r7, [var_4h_5]");
0x000146d8 mov.w r1, -1 | r1 = -1;
0x000146dc ldr r3, [r3] | r3 = *(r3);
0x000146de add r2, pc | r2 = 0x28f4e;
0x000146e0 str r6, [sp, 0xc] | var_ch_2 = r6;
0x000146e2 bl 0x8e8c | fcn_00008e8c (r0, r1);
0x000146e6 ldr r3, [r4, 0x48] | r3 = *((r4 + 0x48));
0x000146e8 add r1, sp, 4 | r1 += var_4h_5;
0x000146ea ldr r0, [r4, 0x58] | r0 = *((r4 + 0x58));
0x000146ec blx r3 | uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
0x000146ee vmov.i32 d16, 0 | __asm ("vmov.i32 d16, 0");
0x000146f2 add.w r3, r4, 0x44 | r3 = r4 + 0x44;
0x000146f6 vst1.32 {d16}, [r3] | __asm ("vst1.32 {d16}, [r3]");
| label_3:
0x000146fa mov r0, r4 | r0 = r4;
0x000146fc bl 0x12be8 | fcn_00012be8 (r0);
| do {
| label_0:
0x00014700 ldr r2, [pc, 0x16c] |
0x00014702 ldr r3, [pc, 0x164] | r3 = *(0x1486a);
0x00014704 add r2, pc | r2 = 0x28f78;
0x00014706 ldr r3, [r2, r3] | r3 = imp.__aeabi_unwind_cpp_pr0;
0x00014708 ldr r2, [r3] | r2 = imp.__aeabi_unwind_cpp_pr0;
0x0001470a ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x0001470c eors r2, r3 | r2 ^= r3;
0x0001470e mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00014712 bne.w 0x1485a | goto label_36;
| }
0x00014716 ldr r0, [pc, 0x15c] |
0x00014718 movs r3, 3 | r3 = 3;
0x0001471a movs r2, 0 | r2 = 0;
0x0001471c movw r1, 0x68d | r1 = 0x68d;
0x00014720 add r0, pc |
0x00014722 add.w r0, r0, 0x24c | r0 = 0x291e6;
0x00014726 add sp, 0x40 |
0x00014728 pop.w {r4, r5, r6, r7, r8, sb, sl, lr} |
0x0001472c b.w 0xf388 | void (*0xf388)() ();
| label_33:
0x00014730 movs r2, 0 | r2 = 0;
0x00014732 ldr r0, [r4, 0xc] | r0 = *((r4 + 0xc));
0x00014734 mov r1, r2 | r1 = r2;
0x00014736 bl 0x12a5c | fcn_00012a5c (r0, r1, r2);
0x0001473a ldr r2, [r4, 0x10] | r2 = *((r4 + 0x10));
0x0001473c cmp r2, 0 |
0x0001473e ite eq |
| if (r2 != 0) {
0x00014740 moveq r3, 0 | r3 = 0;
| }
| if (r2 == 0) {
0x00014742 andne r3, r8, 1 | r3 = r8 & 1;
| }
0x00014746 mov sl, r3 | sl = r3;
0x00014748 cmp r3, 0 |
| if (r3 != 0) {
0x0001474a bne 0x1481e | goto label_37;
| }
| label_5:
0x0001474c ldr r0, [pc, 0x128] |
0x0001474e movs r2, 0x60 | r2 = 0x60;
0x00014750 movw r1, 0x652 | r1 = 0x652;
0x00014754 add r0, pc | r0 = 0x28fd0;
0x00014756 bl 0xf7f0 | r0 = fcn_0000f7f0 (r0, r1, r2);
0x0001475a mov r5, r0 | r5 = r0;
0x0001475c cmp r0, 0 |
0x0001475e beq 0x14700 |
| } while (r0 == 0);
0x00014760 movs r2, 0x60 | r2 = 0x60;
0x00014762 movs r1, 0 | r1 = 0;
0x00014764 blx 0x2674 | fcn_00002674 ();
0x00014768 mov r1, sb | r1 = sb;
0x0001476a movs r2, 0x50 | r2 = 0x50;
0x0001476c mov r0, r5 | r0 = r5;
0x0001476e str r4, [r5, 0x50] | *((r5 + 0x50)) = r4;
0x00014770 blx 0x23e0 | fcn_000023e0 ();
0x00014774 ldr r2, [pc, 0x104] |
0x00014776 mov.w r1, -1 | r1 = -1;
0x0001477a movs r0, 3 | r0 = 3;
0x0001477c add r2, pc | r2 = 0x28ffc;
0x0001477e bl 0x8e8c | fcn_00008e8c (r0, r1);
0x00014782 ldr r3, [r5, 0x50] | r3 = *((r5 + 0x50));
0x00014784 ldr r3, [r3, 0xc] | r3 = *((r3 + 0xc));
0x00014786 ldr.w r3, [r3, 0x98] | r3 = *((r3 + 0x98));
0x0001478a cmp r3, 0 |
| if (r3 == 0) {
0x0001478c beq 0x1480e | goto label_38;
| }
0x0001478e ldr r3, [r5, 0x34] | r3 = *((r5 + 0x34));
0x00014790 adds r3, 1 | r3++;
0x00014792 str r3, [r5, 0x34] | *((r5 + 0x34)) = r3;
| label_4:
0x00014794 mov r0, r5 | r0 = r5;
0x00014796 movs r1, 0x50 | r1 = 0x50;
0x00014798 bl 0x132bc | r0 = fcn_000132bc (r0, r1, r2, r3);
0x0001479c cmp r0, 0 |
| if (r0 == 0) {
0x0001479e beq 0x14700 | goto label_0;
| }
0x000147a0 movs r2, 0 | r2 = 0;
0x000147a2 ldr r0, [r4, 0xc] | r0 = *((r4 + 0xc));
0x000147a4 mov r1, r2 | r1 = r2;
0x000147a6 bl 0x144bc | fcn_000144bc (r0, r1, r2);
0x000147aa cmp.w sl, 0 |
| if (sl == 0) {
0x000147ae beq 0x146b4 | goto label_1;
| }
0x000147b0 ldr r3, [r4, 0x48] | r3 = *((r4 + 0x48));
0x000147b2 cmp r3, 0 |
| if (r3 != 0) {
0x000147b4 bne 0x146cc | goto label_2;
| }
| label_35:
0x000147b6 ldr r3, [r4, 0x50] | r3 = *((r4 + 0x50));
0x000147b8 cmp r3, 0 |
| if (r3 == 0) {
0x000147ba beq 0x146fa | goto label_3;
| }
0x000147bc ldr.w ip, [pc, 0xc0] |
0x000147c0 add.w lr, sp, 0x10 | lr += var_10h_2;
0x000147c4 ldr r5, [r4, 0xc] | r5 = *((r4 + 0xc));
0x000147c6 add ip, pc |
0x000147c8 add.w ip, ip, 0x178 | ip = 0x291c2;
0x000147cc ldm.w ip!, {r0, r1, r2, r3} | r0 = *(ip!);
| r1 = *((ip! + 4));
| r2 = *((ip! + 8));
| r3 = *((ip! + 12));
0x000147d0 stm.w lr!, {r0, r1, r2, r3} | *(lr!) = r0;
| *((lr! + 4)) = r1;
| *((lr! + 8)) = r2;
| *((lr! + 12)) = r3;
0x000147d4 ldm.w ip!, {r0, r1, r2, r3} | r0 = *(ip!);
| r1 = *((ip! + 4));
| r2 = *((ip! + 8));
| r3 = *((ip! + 12));
0x000147d8 stm.w lr!, {r0, r1, r2, r3} | *(lr!) = r0;
| *((lr! + 4)) = r1;
| *((lr! + 8)) = r2;
| *((lr! + 12)) = r3;
0x000147dc ldr r3, [r5] | r3 = *(r5);
0x000147de ldm.w ip, {r0, r1, r2} | r0 = *(ip);
| r1 = *((ip + 4));
| r2 = *((ip + 8));
0x000147e2 stm.w lr, {r0, r1, r2} | *(lr) = r0;
| *((lr + 4)) = r1;
| *((lr + 8)) = r2;
0x000147e6 mov.w r1, -1 | r1 = -1;
0x000147ea ldr r2, [pc, 0x98] |
0x000147ec movs r0, 3 | r0 = 3;
0x000147ee strd r7, r6, [sp, 0x30] | __asm ("strd r7, r6, [var_30h_2]");
0x000147f2 add r2, pc | r2 = 0x2907c;
0x000147f4 bl 0x8e8c | fcn_00008e8c (r0, r1);
0x000147f6 invalid |
0x000147fa add r1, sp, 0x10 | r1 += var_10h_2;
0x000147fc ldr r0, [r4, 0x58] | r0 = *((r4 + 0x58));
0x000147fe blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r1);
0x00014800 vmov.i32 d16, 0 | __asm ("vmov.i32 d16, 0");
0x00014802 movs r0, r2 | r0 = r2;
0x00014804 add.w r3, r4, 0x4c | r3 = r4 + 0x4c;
0x00014808 vst1.32 {d16}, [r3] | __asm ("vst1.32 {d16}, [r3]");
0x0001480c b 0x146fa | goto label_3;
| label_38:
0x0001480e ldr r2, [r5, 0x38] | r2 = *((r5 + 0x38));
0x00014810 cmp r2, 3 |
| if (r2 != 3) {
0x00014812 bne 0x14794 | goto label_4;
| }
0x00014814 str r3, [r5, 0x38] | *((r5 + 0x38)) = r3;
0x00014816 ldr r3, [r5, 0x34] | r3 = *((r5 + 0x34));
0x00014818 adds r3, 1 | r3++;
0x0001481a str r3, [r5, 0x34] | *((r5 + 0x34)) = r3;
0x0001481c b 0x14794 | goto label_4;
| label_37:
0x0001481e ldr r3, [r4, 0xc] | r3 = *((r4 + 0xc));
0x00014820 mov.w r1, -1 | r1 = -1;
0x00014824 ldr r2, [pc, 0x60] |
0x00014826 movs r0, 3 | r0 = 3;
0x00014828 mov.w sl, 1 | sl = 1;
0x0001482c ldr r3, [r3] | r3 = *(r3);
0x0001482e add r2, pc | r2 = 0x290ba;
0x00014830 bl 0x8e8c | fcn_00008e8c (r0, r1);
0x00014834 ldr r3, [r4, 0x10] | r3 = *((r4 + 0x10));
0x00014836 movs r1, 0 | r1 = 0;
0x00014838 ldr r0, [r4, 0x1c] | r0 = *((r4 + 0x1c));
0x0001483a blx r3 | uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
0x0001483c b 0x1474c | goto label_5;
| label_34:
0x0001483e ldr r3, [r4, 0xc] | r3 = *((r4 + 0xc));
0x00014840 mov.w r1, -1 | r1 = -1;
0x00014844 ldr r2, [pc, 0x44] |
0x00014846 movs r0, 3 | r0 = 3;
0x00014848 ldr r3, [r3] | r3 = *(r3);
0x0001484a add r2, pc | r2 = 0x290da;
0x0001484c bl 0x8e8c | fcn_00008e8c (r0, r1);
0x00014850 ldr r3, [r4, 0x10] | r3 = *((r4 + 0x10));
0x00014852 movs r1, 0 | r1 = 0;
0x00014854 ldr r0, [r4, 0x1c] | r0 = *((r4 + 0x1c));
0x00014856 blx r3 | uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
0x00014858 b 0x146c6 | goto label_6;
| label_36:
0x0001485a blx 0x245c | pthread_condattr_init ();
0x0001485e nop |
0x00014860 strb r4, [r2, 7] | *((r2 + 7)) = r4;
0x00014862 movs r0, r0 |
0x00014864 str r7, [sp, 0x30] | var_30h_2 = r7;
0x00014866 movs r0, r0 |
0x00014868 lsls r4, r7, 7 | r4 = r7 << 7;
0x0001486a movs r0, r0 |
0x0001486c ldr r6, [r1, 0x2c] | r6 = *((r1 + 0x2c));
0x0001486e movs r0, r0 |
0x00014870 str r6, [sp, 0x210] | *(arg_210h) = r6;
0x00014872 movs r0, r0 |
0x00014874 strb r4, [r4, 4] | *((r4 + 4)) = r4;
0x00014876 movs r0, r0 |
0x00014878 str r4, [r3, 0x6c] | *((r3 + 0x6c)) = r4;
0x0001487a movs r0, r0 |
0x0001487c ldr r4, [r2, 0x20] | r4 = *((r2 + 0x20));
0x0001487e movs r0, r0 |
0x00014880 strb r6, [r7, 1] | *((r7 + 1)) = r6;
0x00014882 movs r0, r0 |
0x00014884 ldr r2, [r7, 0x18] | r2 = *((r7 + 0x18));
0x00014886 movs r0, r0 |
0x00014888 ldr r6, [r1, 0x10] | r6 = *((r1 + 0x10));
0x0001488a movs r0, r0 |
0x0001488c ldr r2, [r6, 0xc] | r2 = *((r6 + 0xc));
0x0001488e movs r0, r0 |
0x00014890 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00014894 movs r2, 3 | r2 = 3;
0x00014896 ldr.w r4, [pc, 0xb74] |
0x0001489a sub sp, 0xe4 |
0x0001489c movw r1, 0x7d3 | r1 = 0x7d3;
0x000148a0 ldr.w r3, [pc, 0xb6c] | r3 = *(0x15410);
0x000148a4 ldr.w r0, [pc, 0xb6c] |
0x000148a8 add r4, pc | r4 = 0x29cba;
0x000148aa ldr.w sl, [pc, 0xb6c] |
0x000148ae ldr r3, [r4, r3] |
0x000148b0 add r0, pc |
0x000148b2 add.w r0, r0, 0x258 | r0 = 0x29f20;
0x000148b6 add sl, pc | sl = 0x29cd4;
0x000148b8 ldr r3, [r3] | r3 = imp.__aeabi_unwind_cpp_pr0;
0x000148ba str r3, [sp, 0xdc] | var_dch = r3;
0x000148bc mov.w r3, 0 | r3 = 0;
0x000148c0 bl 0xf2e8 | fcn_0000f2e8 (r0, r1, r2);
0x000148c4 ldr.w r0, [pc, 0xb54] |
0x000148c8 add r0, pc | r0 = 0x29ce8;
0x000148ca bl 0xa768 | fcn_0000a768 (r0);
0x000148ce ldr.w r3, [pc, 0xb50] | r3 = *(0x15422);
0x000148d2 ldr.w fp, [sl, r3] | fp = imp.__aeabi_unwind_cpp_pr0;
0x000148d6 ldr.w r0, [fp] | r0 = imp.__aeabi_unwind_cpp_pr0;
0x000148da blx 0x24d4 | r0 = fwrite (r0, r1, r2, r3);
0x000148de cmp r0, 0 |
| if (r0 != 0) {
0x000148e0 bne.w 0x151a0 | goto label_39;
| }
| label_25:
0x000148e4 ldr.w r3, [pc, 0xb3c] | r3 = *(0x15424);
0x000148e8 movs r2, 2 | r2 = 2;
0x000148ea ldr.w r6, [sl, r3] | r6 = *((sl + r3));
0x000148ee str r2, [r6] | *(r6) = r2;
0x000148f0 blx 0x2778 | fcn_00002778 ();
0x000148f4 ldr.w r3, [pc, 0xb30] | r3 = *(0x15428);
0x000148f8 ldr.w r5, [sl, r3] | r5 = *((sl + r3));
0x000148fc ldr.w r3, [pc, 0xb2c] | r3 = *(0x1542c);
0x00014900 str r0, [r5] | *(r5) = r0;
0x00014902 ldr.w r8, [sl, r3] | r8 = *((sl + r3));
0x00014904 strh r3, [r0] | *(r0) = r3;
0x00014906 ldr.w r3, [r8] | r3 = *(r8);
0x0001490a str r3, [sp, 0x18] | var_18h = r3;
0x0001490c cmp r3, 0 |
| if (r3 != 0) {
0x0001490e bne.w 0x14d3c | goto label_40;
| }
0x00014912 ldr.w r3, [pc, 0xb1c] | r3 = *(0x15432);
0x00014916 add.w sb, sp, 0x78 | sb += var_78h;
0x0001491a ldr.w r2, [pc, 0xb18] | r2 = *(0x00015434);
0x0001491e movs r7, 0xa | r7 = 0xa;
0x00014920 ldr.w r3, [sl, r3] | r3 = *((sl + r3));
0x00014924 add r2, pc | r2 += pc;
0x00014926 str r6, [sp, 0x38] | var_38h = r6;
0x00014928 adds r2, 0x20 | r2 += 0x20;
0x0001492a str r5, [sp, 0x3c] | var_3ch_2 = r5;
0x0001492c str r3, [sp, 0x28] | var_28h_2 = r3;
0x0001492e ldr.w r3, [pc, 0xb08] |
0x00014932 str r2, [sp, 0x20] | var_20h_2 = r2;
0x00014934 add r2, sp, 0x6c | r2 += stream;
0x00014936 str r2, [sp, 0x24] | var_24h_3 = r2;
0x00014938 add r2, sp, 0x64 | r2 += var_64h_2;
0x0001493a add r3, pc |
0x0001493c str r2, [sp, 0x10] | var_10h = r2;
0x0001493e add.w r2, r3, 0x270 | r2 = r3 + 0x270;
0x00014942 add.w r3, r3, 0x298 | r3 = 0x2a010;
0x00014946 str r3, [sp, 0xc] | var_ch = r3;
0x00014948 mov r3, sb | r3 = sb;
0x0001494a mov sb, r8 | sb = r8;
0x0001494c mov r8, r3 | r8 = r3;
0x0001494e str r2, [sp, 0x1c] | var_1ch_2 = r2;
| do {
| label_7:
0x00014950 mov.w r3, -1 | r3 = -1;
0x00014954 ldr.w r0, [fp] | r0 = *(fp);
0x00014958 strd r3, r3, [sp, 0x64] | __asm ("strd r3, r3, [var_64h_2]");
0x0001495c blx 0x270c | r0 = fcn_0000270c ();
0x00014960 cmp r0, 0 |
| if (r0 != 0) {
0x00014962 bne.w 0x14cb4 | goto label_41;
| }
| label_9:
0x00014966 ldr r3, [sp, 0x18] | r3 = var_18h;
0x00014968 movs r2, 3 | r2 = 3;
0x0001496a ldr r0, [sp, 0x1c] | r0 = var_1ch_2;
0x0001496c movw r1, 0xbab | r1 = 0xbab;
0x00014970 str r3, [sp, 0x6c] | stream = r3;
0x00014972 bl 0xf2e8 | fcn_0000f2e8 (r0, r1, r2);
0x00014976 ldrd r3, r2, [sp, 0x24] | __asm ("ldrd r3, r2, [var_28h_2]");
0x0001497a mov r1, r7 | r1 = r7;
0x0001497c movs r0, 0 | r0 = 0;
0x0001497e ldr r2, [r2] | r2 = *(r2);
0x00014980 bl 0x83bc | fcn_000083bc (r0, r1, r2, r3);
0x00014984 ldr r3, [sp, 0x6c] | r3 = stream;
0x00014986 str r0, [sp, 0x68] | var_68h = r0;
0x00014988 ldr.w r0, [fp] | r0 = *(fp);
0x0001498c str r3, [sp, 0x64] | var_64h_2 = r3;
0x0001498e blx 0x24d4 | fwrite (r0, r1, r2, r3);
0x00014990 stc p8, c2, [r2, 0]! | __asm ("stc p8, c2, [r2, 0]!");
| if (r0 != 0) {
0x00014994 bne.w 0x14cca | goto label_42;
| }
| label_10:
0x00014998 ldr.w r0, [fp] | r0 = *(fp);
0x0001499c ldr.w r5, [sb] | r5 = *(sb);
0x000149a0 blx 0x270c | r0 = fcn_0000270c ();
0x000149a4 cmp r0, 0 |
| if (r0 != 0) {
0x000149a6 bne.w 0x14c9e | goto label_43;
| }
| label_8:
0x000149aa ldr r4, [sp, 0x68] | r4 = var_68h;
0x000149ac orrs r4, r5 | r4 |= r5;
| if (r4 == r5) {
0x000149ae bne 0x149da |
0x000149b0 ldr.w r5, [pc, 0xa88] |
0x000149b4 movs r2, 3 | r2 = 3;
0x000149b6 movs r1, 0x69 | r1 = 0x69;
0x000149b8 add r5, pc | r5 = 0x29df8;
0x000149ba adds r5, 0x80 | r5 += 0x80;
0x000149bc mov r0, r5 | r0 = r5;
0x000149be bl 0xf2e8 | fcn_0000f2e8 (r0, r1, r2);
0x000149c2 movw r0, 0x86a0 |
0x000149c6 movt r0, 1 | r0 = 0x186a0;
0x000149ca blx 0x2504 | strcpy (r0, r1)
0x000149ce mov r2, r4 | r2 = r4;
0x000149d0 mov r0, r5 | r0 = r5;
0x000149d2 movs r3, 3 | r3 = 3;
0x000149d4 movs r1, 0x6f | r1 = 0x6f;
0x000149d6 bl 0xf388 | fcn_0000f388 (r0, r1, r2, r3);
| }
0x000149da ldr.w r0, [fp] | r0 = *(fp);
0x000149de blx 0x24d4 | r0 = fwrite (r0, r1, r2, r3);
0x000149e2 cmp r0, 0 |
| if (r0 != 0) {
0x000149e4 bne.w 0x14ce0 | goto label_44;
| }
| label_11:
0x000149e8 ldr r3, [sp, 0x68] | r3 = var_68h;
0x000149ea cmp r3, 0 |
| if (r3 > 0) {
0x000149ec ble.w 0x14b1e |
0x000149f0 ldr r5, [sp, 0x6c] | r5 = stream;
0x000149f2 cmp r5, 0 |
| if (r5 != 0) {
0x000149f4 bne.w 0x14b1e | goto label_16;
| }
0x000149f8 ldr.w r3, [pc, 0xa44] | r3 = *(0x15440);
0x000149fc add r1, sp, 0x68 | r1 += var_68h;
0x000149fe ldr.w r2, [pc, 0xa44] | r2 = *(0x00015444);
0x00014a02 ldr.w r4, [sl, r3] | r4 = *((sl + r3));
0x00014a06 add r2, pc | r2 += pc;
0x00014a08 ldr r0, [r4] | r0 = *(r4);
0x00014a0a bl 0xcb84 | r0 = fcn_0000cb84 (r0, r1, r2);
0x00014a0e cmp r0, 0 |
| if (r0 == 0) {
0x00014a10 beq.w 0x14b1e | goto label_16;
| }
0x00014a14 ldr r3, [r4] | r3 = *(r4);
0x00014a16 ldr r3, [r3, 8] | r3 = *((r3 + 8));
0x00014a18 ldr r4, [r3, 8] | r4 = *((r3 + 8));
0x00014a1a cmp r4, 0 |
| if (r4 == 0) {
0x00014a1c beq 0x14b1e | goto label_16;
| }
0x00014a1e ldr r3, [r4, 0xc] | r3 = *((r4 + 0xc));
0x00014a20 mov.w r1, -1 | r1 = -1;
0x00014a24 ldr.w r2, [pc, 0xa20] |
0x00014a28 movs r0, 3 | r0 = 3;
0x00014a2a ldrh r3, [r3, 0x10] | r3 = *((r3 + 0x10));
0x00014a2c add r2, pc | r2 = 0x29e78;
0x00014a2e sbfx r3, r3, 6, 4 | __asm ("sbfx r3, r3, 6, 4");
0x00014a32 bl 0x8e8c | fcn_00008e8c (r0, r1);
0x00014a36 ldr r1, [r4, 0xc] | r1 = *((r4 + 0xc));
0x00014a38 ldrh r3, [r1, 0x10] | r3 = *((r1 + 0x10));
0x00014a3a and r2, r3, 0x340 | r2 = r3 & 0x340;
0x00014a3e and r3, r3, 0x3c0 | r3 &= 0x3c0;
0x00014a42 cmp r3, 0x80 |
0x00014a44 it ne |
| if (r3 != 0x80) {
0x00014a46 cmpne r2, 0x40 | __asm ("cmpne r2, 0x40");
| }
| if (r3 != 0x80) {
0x00014a48 bne.w 0x14db6 | goto label_45;
| }
0x00014a4c ldr.w r0, [pc, 0x9fc] |
0x00014a50 mov.w r3, -1 | r3 = -1;
0x00014a54 movs r2, 3 | r2 = 3;
0x00014a56 movw r1, 0xadb | r1 = 0xadb;
0x00014a5a str r3, [sp, 0x70] | var_70h = r3;
0x00014a5c add r0, pc |
0x00014a5e ldr r6, [r4] | r6 = *(r4);
0x00014a60 add.w r0, r0, 0x280 | r0 = 0x2a12c;
0x00014a62 strb r0, [r4] | *(r4) = r0;
0x00014a64 bl 0xf2e8 | fcn_0000f2e8 (r0, r1, r2);
0x00014a68 ldr r2, [r4, 0x78] | r2 = *((r4 + 0x78));
0x00014a6a mov.w r3, -1 | r3 = -1;
0x00014a6e cmp r2, 0 |
| if (r2 == 0) {
0x00014a70 beq.w 0x14ebc | goto label_46;
| }
0x00014a74 ldr r3, [r4, 0xc] | r3 = *((r4 + 0xc));
0x00014a76 str r3, [sp, 0x14] | var_14h = r3;
| label_20:
0x00014a78 ldr.w r3, [r4, 0x108] | r3 = *((r4 + 0x108));
0x00014a7c cmp r3, 0 |
| if (r3 > 0) {
0x00014a7e ble 0x14aa0 |
0x00014a80 ldr r2, [r4, 0x74] | r2 = *((r4 + 0x74));
0x00014a82 ldr.w r3, [r4, 0x10c] | r3 = *((r4 + 0x10c));
0x00014a86 ldr.w r0, [pc, 0x9c8] |
0x00014a8a ldr.w r6, [r3, r2, lsl 2] | offset_0 = r2 << 2;
| r6 = *((r3 + offset_0));
0x00014a8e movs r2, 6 | r2 = 6;
0x00014a90 add r0, pc | r0 = 0x29ee6;
0x00014a92 mov r1, r6 | r1 = r6;
0x00014a94 blx 0x2814 | r0 = fcn_00002814 ();
0x00014a98 cmp r0, 0 |
| if (r0 != 0) {
0x00014a9a bne.w 0x14e5c | goto label_47;
| }
0x00014a9e adds r6, 6 | r6 += 6;
| }
| label_18:
0x00014aa0 ldr r3, [sp, 0x14] | r3 = var_14h;
0x00014aa2 ldrh r3, [r3, 0x10] | r3 = *((r3 + 0x10));
0x00014aa4 and r3, r3, 0x3c0 | r3 &= 0x3c0;
0x00014aa8 cmp r3, 0x40 |
| if (r3 == 0x40) {
0x00014aaa beq.w 0x151b6 | goto label_48;
| }
0x00014aae cmp r3, 0xc0 |
| if (r3 == 0xc0) {
0x00014ab0 beq.w 0x15276 | goto label_49;
| }
0x00014ab4 ldr r1, [sp, 0x70] | r1 = var_70h;
0x00014ab6 adds.w r3, r1, 0x16 | r3 = r1 + 0x16;
0x00014aba it ne |
| if (r3 == r1) {
0x00014abc movne r3, 1 | r3 = 1;
| }
| label_26:
0x00014abe cmp r1, 0 |
0x00014ac0 ite eq |
| if (r1 != 0) {
0x00014ac2 moveq r3, 0 | r3 = 0;
| }
| if (r1 == 0) {
0x00014ac4 andne r3, r3, 1 | r3 &= 1;
| }
| if (r3 != 0) {
0x00014ac8 cbz r3, 0x14af4 |
0x00014aca ldr r3, [r4, 0xc] | r3 = *((r4 + 0xc));
0x00014acc adds r6, r1, 3 | r6 = r1 + 3;
0x00014ace ite ne |
| if (r6 == r1) {
0x00014ad0 movne r1, 0 | r1 = 0;
| }
| if (r6 != r1) {
0x00014ad2 moveq r1, 1 | r1 = 1;
| }
0x00014ad4 ldrh r3, [r3, 0x10] | r3 = *((r3 + 0x10));
0x00014ad6 and r3, r3, 0x380 | r3 &= 0x380;
0x00014ada cmp r3, 0x80 |
0x00014adc it ne |
| if (r3 == 0x80) {
0x00014ade orrne r1, r1, 1 | r1 |= 1;
| }
| if (r1 == 0) {
0x00014ae2 cbz r1, 0x14af4 | goto label_50;
| }
0x00014ae4 ldr.w r2, [pc, 0x96c] |
0x00014ae8 mov.w r1, -1 | r1 = -1;
0x00014aec mov r0, r4 | r0 = r4;
0x00014aee add r2, pc | r2 = 0x29f46;
0x00014af0 bl 0x14664 | fcn_00014664 (r0, r1, r2, r3, r4);
| }
| label_50:
0x00014af4 ldr.w r0, [pc, 0x960] |
0x00014af8 movs r3, 3 | r3 = 3;
0x00014afa add r2, sp, 0x70 | r2 += var_70h;
0x00014afc movw r1, 0xba1 | r1 = 0xba1;
0x00014b00 add r0, pc |
0x00014b02 add.w r0, r0, 0x280 | r0 = 0x2a1dc;
0x00014b06 bl 0xf388 | fcn_0000f388 (r0, r1, r2, r3);
0x00014b0a ldr r3, [r4, 0xc] | r3 = *((r4 + 0xc));
0x00014b0c ldr r2, [sp, 0x70] | r2 = var_70h;
0x00014b0e ldrh r3, [r3, 0x10] | r3 = *((r3 + 0x10));
0x00014b10 str r2, [sp, 0x64] | var_64h_2 = r2;
0x00014b12 and r3, r3, 0x3c0 | r3 &= 0x3c0;
0x00014b16 cmp.w r3, 0x100 |
| if (r3 == 0x100) {
0x00014b1a beq.w 0x14e90 | goto label_51;
| }
| }
| label_16:
0x00014b1e movs r3, 0 | r3 = 0;
0x00014b20 str r3, [sp, 0x14] | var_14h = r3;
| label_17:
0x00014b22 movs r2, 3 | r2 = 3;
0x00014b24 movw r1, 0xac5 | r1 = 0xac5;
0x00014b28 ldr r0, [sp, 0xc] | r0 = var_ch;
0x00014b2a bl 0xf2e8 | fcn_0000f2e8 (r0, r1, r2);
0x00014b2e mov r0, r8 | r0 = r8;
0x00014b30 bl 0x29e0 | fcn_000029e0 (r0);
0x00014b34 ldr r5, [sp, 0x20] | r5 = var_20h_2;
0x00014b36 ldm.w r8, {r0, r1} | r0 = *(r8);
| r1 = *((r8 + 4));
0x00014b3a ldm.w r5, {r2, r3} | r2 = *(r5);
| r3 = *((r5 + 4));
0x00014b3e bl 0x2a44 | fcn_00002a44 (r0);
0x00014b42 ldr.w r3, [pc, 0x918] |
0x00014b46 add r3, pc |
0x00014b48 ldr r3, [r3] | r3 = imp.__aeabi_unwind_cpp_pr0;
0x00014b4a cmp r0, r3 |
0x00014b4c asr.w r2, r3, 0x1f | r2 = r3 >> 0x1f;
0x00014b50 sbcs r1, r2 | __asm ("sbcs r1, r2");
| if (r0 < r3) {
0x00014b52 blt.w 0x14cf6 | goto label_52;
| }
0x00014b56 add r4, sp, 0x48 | r4 += var_48h;
0x00014b58 mov r0, r4 | r0 = r4;
0x00014b5a bl 0x29e0 | r0 = fcn_000029e0 (r0);
0x00014b5e ldm.w r4, {r0, r1} | r0 = *(r4);
| r1 = *((r4 + 4));
0x00014b62 stm.w r5, {r0, r1} | *(r5) = r0;
| *((r5 + 4)) = r1;
0x00014b66 ldm.w r8, {r0, r1} | r0 = *(r8);
| r1 = *((r8 + 4));
0x00014b6a bl 0x3ca8 | r0 = fcn_00003ca8 ();
0x00014b6e ldm.w r8, {r0, r1} | r0 = *(r8);
| r1 = *((r8 + 4));
0x00014b72 movs r3, 0 | r3 = 0;
0x00014b74 movs r2, 1 | r2 = 1;
0x00014b76 bl 0x3f14 | fcn_00003f14 (r0, r1, r2, r3);
| label_12:
0x00014b7a ldr r0, [sp, 0xc] | r0 = var_ch;
0x00014b7c movs r3, 3 | r3 = 3;
0x00014b7e movs r2, 0 | r2 = 0;
0x00014b80 movw r1, 0xacf | r1 = 0xacf;
0x00014b84 bl 0xf388 | fcn_0000f388 (r0, r1, r2, r3);
0x00014b86 invalid |
0x00014b8a movs r0, r0 |
0x00014b8c blx 0x270c | r0 = fcn_0000270c ();
0x00014b90 cmp r0, 0 |
| if (r0 != 0) {
0x00014b92 bne.w 0x14d04 | goto label_53;
| }
| label_13:
0x00014b96 ldr.w r0, [pc, 0x8c8] |
0x00014b9a movs r3, 3 | r3 = 3;
0x00014b9c ldr r2, [sp, 0x10] | r2 = var_10h;
0x00014b9e movw r1, 0xc4f | r1 = 0xc4f;
0x00014ba2 add r0, pc |
0x00014ba4 add.w r0, r0, 0x270 | r0 = 0x2a278;
0x00014ba8 bl 0xf388 | fcn_0000f388 (r0, r1, r2, r3);
0x00014bac ldr.w r0, [fp] | r0 = *(fp);
0x00014bb0 blx 0x24d4 | r0 = fwrite (r0, r1, r2, r3);
0x00014bb4 cmp r0, 0 |
| if (r0 != 0) {
0x00014bb6 bne.w 0x14d1a | goto label_54;
| }
0x00014bba ldr.w r4, [sb] | r4 = *(sb);
0x00014bbe cmp r4, 0 |
| if (r4 != 0) {
0x00014bc0 bne.w 0x14d38 | goto label_55;
| }
| label_14:
0x00014bc4 ldr r3, [sp, 0x68] | r3 = var_68h;
0x00014bc6 cmp r3, 0 |
0x00014bc8 beq.w 0x14950 |
| } while (r3 == 0);
0x00014bcc ldr.w r3, [pc, 0x870] | r3 = *(0x15440);
0x00014bd0 add r1, sp, 0x68 | r1 += var_68h;
0x00014bd2 ldr.w r2, [pc, 0x890] | r2 = *(0x00015464);
0x00014bd6 ldr.w r5, [sl, r3] | r5 = *((sl + r3));
0x00014bda add r2, pc | r2 += pc;
0x00014bdc ldr r0, [r5] | r0 = *(r5);
0x00014bde bl 0xcb84 | r0 = fcn_0000cb84 (r0, r1, r2);
0x00014be2 cmp r0, 0 |
| if (r0 == 0) {
0x00014be4 beq.w 0x14fd8 | goto label_56;
| }
0x00014be8 ldr r3, [r5] | r3 = *(r5);
0x00014bea ldr r3, [r3, 8] | r3 = *((r3 + 8));
0x00014bec ldr r5, [r3, 8] | r5 = *((r3 + 8));
0x00014bee cmp r5, 0 |
| if (r5 == 0) {
0x00014bf0 beq.w 0x15156 | goto label_57;
| }
0x00014bf4 ldr r1, [sp, 0x64] | r1 = var_64h_2;
0x00014bf6 adds r0, r1, 1 | r0 = r1 + 1;
| if (r0 == r1) {
0x00014bf8 beq.w 0x14d98 | goto label_58;
| }
0x00014bfc ldr r1, [r5, 0xc] | r1 = *((r5 + 0xc));
0x00014bfe ldr r3, [r1, 0x70] | r3 = *((r1 + 0x70));
0x00014c00 str r1, [sp, 0x30] | var_30h_3 = r1;
0x00014c02 ldr r2, [r3, 0xc] | r2 = *((r3 + 0xc));
0x00014c04 cmp r2, 0 |
0x00014c06 str r2, [sp, 0x2c] | var_2ch_2 = r2;
| if (r2 > 0) {
0x00014c08 ble 0x14c6e |
0x00014c0a ldr r0, [r5, 0x14] | r0 = *((r5 + 0x14));
0x00014c0c cmp r0, 0 |
| if (r0 == 0) {
0x00014c0e beq 0x14c6e | goto label_23;
| }
0x00014c10 ldr r3, [r3] | r3 = *(r3);
0x00014c12 ldr r6, [r3, 8] | r6 = *((r3 + 8));
0x00014c14 ldrd r7, r3, [r6, 4] | __asm ("ldrd r7, r3, [r6, 4]");
0x00014c18 mov r0, r7 | r0 = r7;
0x00014c1a str r3, [sp, 0x34] | var_34h = r3;
0x00014c1c blx 0x25dc | srand (r0);
0x00014c1e ldcl p8, c6, [lr], {0x32} | __asm ("ldcl p8, c6, [lr], {0x32}");
0x00014c22 ldr r1, [sp, 0x30] | r1 = var_30h_3;
0x00014c24 ldr r3, [sp, 0x34] | r3 = var_34h;
0x00014c26 str r2, [sp, 0x30] | var_30h_3 = r2;
0x00014c28 ldr r2, [sp, 0x2c] | r2 = var_2ch_2;
0x00014c2a cmp r0, r3 |
0x00014c2c it ne |
| if (r0 == r3) {
0x00014c2e movne r4, r3 | r4 = r3;
| }
0x00014c30 ldr r3, [r1] | r3 = *(r1);
0x00014c32 movs r0, 3 | r0 = 3;
0x00014c34 mov.w r1, -1 | r1 = -1;
0x00014c38 str r2, [sp] | *(sp) = r2;
0x00014c3a ldr.w r2, [pc, 0x82c] |
0x00014c3e add r2, pc | r2 = 0x2a0ac;
0x00014c40 bl 0x8e8c | fcn_00008e8c (r0, r1);
0x00014c44 mov r2, r4 | r2 = r4;
0x00014c46 ldr r3, [sp, 0x30] | r3 = var_30h_3;
0x00014c48 ldr r4, [r5, 0x14] | r4 = *((r5 + 0x14));
0x00014c4a mov r1, r7 | r1 = r7;
0x00014c4c ldr r0, [r5, 0x20] | r0 = *((r5 + 0x20));
0x00014c4e blx r4 | r0 = uint32_t (*r4)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x00014c50 cmp r0, 0 |
| if (r0 == 0) {
0x00014c52 beq.w 0x150f8 | goto label_59;
| }
0x00014c56 ldr r0, [r5, 0xc] | r0 = *((r5 + 0xc));
0x00014c58 ldr.w r3, [r0, 0x80] | r3 = *((r0 + 0x80));
| if (r3 != 0) {
0x00014c5c cbz r3, 0x14c66 |
0x00014c5e mov r1, r6 | r1 = r6;
0x00014c60 bl 0x9ef0 | fcn_00009ef0 (r0, r1);
0x00014c64 ldr r0, [r5, 0xc] | r0 = *((r5 + 0xc));
| }
0x00014c66 ldr r0, [r0, 0x70] | r0 = *((r0 + 0x70));
0x00014c68 mov r1, r6 | r1 = r6;
0x00014c6a bl 0xccb4 | fcn_0000ccb4 (r0, r1);
| }
| label_23:
0x00014c6e ldr r3, [sp, 0x14] | r3 = var_14h;
| if (r3 != 0) {
0x00014c70 cbz r3, 0x14c90 |
0x00014c72 ldrb r3, [r3] | r3 = *(r3);
0x00014c74 and r3, r3, 0xf0 | r3 &= 0xf0;
0x00014c78 cmp r3, 0x20 |
| if (r3 == 0x20) {
0x00014c7a beq.w 0x14ff0 | goto label_60;
| }
0x00014c7e cmp r3, 0x90 |
| if (r3 == 0x90) {
0x00014c80 beq.w 0x15244 | goto label_61;
| }
0x00014c84 cmp r3, 0xb0 |
| if (r3 == 0xb0) {
0x00014c86 beq.w 0x152b8 | goto label_62;
| }
0x00014c8a cmp r3, 0xe0 |
| if (r3 == 0xe0) {
0x00014c8c beq.w 0x1510c | goto label_63;
| }
| }
| label_15:
0x00014c90 ldr.w r3, [sb] | r3 = *(sb);
| label_22:
0x00014c94 cmp r3, 0 |
| if (r3 != 0) {
0x00014c96 bne 0x14d38 | goto label_55;
| }
0x00014c98 mov.w r7, 0x3e8 | r7 = 0x3e8;
0x00014c9c b 0x14950 | goto label_7;
| label_43:
0x00014c9e blx 0x2588 | localtime (r0);
0x00014ca2 ldr.w r2, [pc, 0x7c8] |
0x00014ca6 mov r3, r0 | r3 = r0;
0x00014ca8 movs r1, 0 | r1 = 0;
0x00014caa movs r0, 5 | r0 = 5;
0x00014cac add r2, pc | r2 = 0x2a11e;
0x00014cae bl 0x8e8c | fcn_00008e8c (r0, r1);
0x00014cb2 b 0x149aa | goto label_8;
| label_41:
0x00014cb4 blx 0x2588 | localtime (r0);
0x00014cb8 ldr.w r2, [pc, 0x7b4] |
0x00014cbc mov r3, r0 | r3 = r0;
0x00014cbe movs r1, 0 | r1 = 0;
0x00014cc0 movs r0, 5 | r0 = 5;
0x00014cc2 add r2, pc | r2 = 0x2a136;
0x00014cc4 bl 0x8e8c | fcn_00008e8c (r0, r1);
0x00014cc8 b 0x14966 | goto label_9;
| label_42:
0x00014cca blx 0x2588 | localtime (r0);
0x00014cce ldr.w r2, [pc, 0x7a4] |
0x00014cd2 mov r3, r0 | r3 = r0;
0x00014cd4 movs r1, 0 | r1 = 0;
0x00014cd6 movs r0, 5 | r0 = 5;
0x00014cd8 add r2, pc | r2 = 0x2a152;
0x00014cda bl 0x8e8c | fcn_00008e8c (r0, r1);
0x00014cde b 0x14998 | goto label_10;
| label_44:
0x00014ce0 blx 0x2588 | localtime (r0);
0x00014ce4 ldr.w r2, [pc, 0x790] |
0x00014ce8 mov r3, r0 | r3 = r0;
0x00014cea movs r1, 0 | r1 = 0;
0x00014cec movs r0, 5 | r0 = 5;
0x00014cee add r2, pc | r2 = 0x2a16a;
0x00014cf0 bl 0x8e8c | fcn_00008e8c (r0, r1);
0x00014cf4 b 0x149e8 | goto label_11;
| label_52:
0x00014cf6 movs r3, 0 | r3 = 0;
0x00014cf8 ldm.w r8, {r0, r1} | r0 = *(r8);
| r1 = *((r8 + 4));
0x00014cfc mov r2, r3 | r2 = r3;
0x00014cfe bl 0x3f14 | fcn_00003f14 (r0, r1, r2, r3);
0x00014d02 b 0x14b7a | goto label_12;
| label_53:
0x00014d04 blx 0x2588 | localtime (r0);
0x00014d08 ldr.w r2, [pc, 0x770] |
0x00014d0c mov r3, r0 | r3 = r0;
0x00014d0e movs r1, 0 | r1 = 0;
0x00014d10 movs r0, 5 | r0 = 5;
0x00014d12 add r2, pc | r2 = 0x2a192;
0x00014d14 bl 0x8e8c | fcn_00008e8c (r0, r1);
0x00014d18 b 0x14b96 | goto label_13;
| label_54:
0x00014d1a blx 0x2588 | localtime (r0);
0x00014d1e ldr.w r2, [pc, 0x760] |
0x00014d22 mov r3, r0 | r3 = r0;
0x00014d24 movs r1, 0 | r1 = 0;
0x00014d26 movs r0, 5 | r0 = 5;
0x00014d28 add r2, pc | r2 = 0x2a1ae;
0x00014d2a bl 0x8e8c | fcn_00008e8c (r0, r1);
0x00014d2e ldr.w r4, [sb] | r4 = *(sb);
0x00014d32 cmp r4, 0 |
| if (r4 == 0) {
0x00014d34 beq.w 0x14bc4 | goto label_14;
| }
| label_55:
0x00014d38 ldrd r6, r5, [sp, 0x38] | __asm ("ldrd r6, r5, [var_38h]");
| label_40:
0x00014d3c movs r4, 0 | r4 = 0;
0x00014d3e ldr.w r0, [fp] | r0 = *(fp);
0x00014d42 str r4, [r6] | *(r6) = r4;
0x00014d44 str r4, [r5] | *(r5) = r4;
0x00014d46 blx 0x270c | r0 = fcn_0000270c ();
0x00014d4a cmp r0, 0 |
| if (r0 != 0) {
0x00014d4c bne.w 0x15172 | goto label_64;
| }
0x00014d4e strh r1, [r2, 0x10] | *((r2 + 0x10)) = r1;
0x00014d50 ldr.w r3, [pc, 0x730] |
0x00014d54 ldr.w r3, [sl, r3] | r3 = *((sl + r3));
0x00014d56 adds r0, 3 | r0 += 3;
0x00014d58 ldr r3, [r3] | r3 = *(0x15484);
0x00014d5a cmp r3, 0 |
| if (r3 != 0) {
0x00014d5c bne.w 0x15192 | goto label_65;
| }
| label_24:
0x00014d60 ldr.w r0, [pc, 0x724] |
0x00014d64 movs r3, 3 | r3 = 3;
0x00014d66 movs r2, 0 | r2 = 0;
0x00014d68 mov.w r1, 0x910 | r1 = 0x910;
0x00014d6c add r0, pc |
0x00014d6e add.w r0, r0, 0x258 | r0 = 0x2a450;
0x00014d72 bl 0xf388 | fcn_0000f388 (r0, r1, r2, r3);
0x00014d76 ldr.w r2, [pc, 0x714] |
0x00014d7a ldr.w r3, [pc, 0x694] | r3 = *(0x15412);
0x00014d7e add r2, pc | r2 = 0x2a210;
0x00014d80 ldr r3, [r2, r3] | r3 = imp.__aeabi_unwind_cpp_pr0;
0x00014d82 ldr r2, [r3] | r2 = imp.__aeabi_unwind_cpp_pr0;
0x00014d84 ldr r3, [sp, 0xdc] | r3 = var_dch;
0x00014d86 eors r2, r3 | r2 ^= r3;
0x00014d88 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00014d8c bne.w 0x15b2a | goto label_66;
| }
0x00014d90 movs r0, 0 | r0 = 0;
0x00014d92 add sp, 0xe4 |
0x00014d94 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_58:
0x00014d98 ldr.w r2, [pc, 0x6f4] |
0x00014d9c movs r0, 3 | r0 = 3;
0x00014d9e ldr r3, [sp, 0x68] | r3 = var_68h;
0x00014da0 add r2, pc | r2 = 0x2a234;
0x00014da2 bl 0x8e8c | fcn_00008e8c (r0, r1);
0x00014da6 ldr.w r2, [pc, 0x6ec] |
0x00014daa mov r0, r5 | r0 = r5;
0x00014dac ldr r1, [sp, 0x64] | r1 = var_64h_2;
0x00014dae add r2, pc | r2 = 0x2a248;
0x00014db0 bl 0x14664 | fcn_00014664 (r0, r1, r2, r3, r4);
0x00014db4 b 0x14c90 | goto label_15;
| label_45:
0x00014db6 ldr.w r0, [r1, 0x98] | r0 = *((r1 + 0x98));
0x00014dba adds r1, 0x1c | r1 += 0x1c;
0x00014dbc ldr r2, [sp, 0x10] | r2 = var_10h;
0x00014dbe bl 0x5000 | fcn_00005000 (r0, r1, r2, r3, r4);
0x00014dc2 ldr r3, [r4, 0xc] | r3 = *((r4 + 0xc));
0x00014dc4 str r0, [sp, 0x14] | var_14h = r0;
0x00014dc6 ldrh r3, [r3, 0x10] | r3 = *((r3 + 0x10));
0x00014dc8 and r3, r3, 0x3c0 | r3 &= 0x3c0;
0x00014dcc cmp.w r3, 0x100 |
| if (r3 == 0x100) {
0x00014dd0 beq 0x14e88 | goto label_67;
| }
| label_19:
0x00014dd2 ldr r3, [sp, 0x14] | r3 = var_14h;
0x00014dd4 cmp r3, 0 |
| if (r3 == 0) {
0x00014dd6 beq.w 0x14b1e | goto label_16;
| }
0x00014dda ldrb r3, [r3] | r3 = *(r3);
0x00014ddc and r6, r3, 0xf0 | r6 = r3 & 0xf0;
0x00014de0 cmp r6, 0x30 |
| if (r6 == 0x30) {
0x00014de2 beq.w 0x15238 | goto label_68;
| }
0x00014de6 cmp r6, 0x60 |
| if (r6 == 0x60) {
0x00014de8 beq 0x14e50 | goto label_69;
| }
| if (r6 < 0x60) {
0x00014dea bls 0x14e02 | goto label_70;
| }
0x00014dec cmp r6, 0x70 |
| if (r6 == 0x70) {
0x00014dee beq 0x14edc | goto label_71;
| }
0x00014df0 cmp r6, 0xd0 |
| if (r6 != 0xd0) {
0x00014df2 bne.w 0x14b22 | goto label_17;
| }
0x00014df6 ldr r0, [sp, 0x14] | r0 = var_14h;
0x00014df8 ldr r1, [sp, 0x68] | r1 = var_68h;
0x00014dfa bl 0xb050 | fcn_0000b050 (r0);
0x00014dfe str r0, [sp, 0x64] | var_64h_2 = r0;
0x00014e00 b 0x14b1e | goto label_16;
| label_70:
0x00014e02 and r2, r3, 0xe0 | r2 = r3 & 0xe0;
0x00014e06 cmp r2, 0x40 |
| if (r2 != 0x40) {
0x00014e08 bne.w 0x14b22 | goto label_17;
| }
0x00014e0c lsrs r3, r3, 4 | r3 >>= 4;
0x00014e0e ldr.w lr, [sp, 0x14] | lr = var_14h;
0x00014e12 str r3, [sp, 0x2c] | var_2ch_2 = r3;
0x00014e14 movs r3, 0 | r3 = 0;
0x00014e16 strd r3, r3, [r8] | __asm ("strd r3, r3, [r8]");
0x00014e1a strd r3, r3, [r8, 8] | __asm ("strd r3, r3, [r8, 8]");
0x00014e1e str r3, [sp, 0x70] | var_70h = r3;
0x00014e20 ldr.w r3, [pc, 0x674] | r3 = *(0x00015498);
0x00014e22 adds r6, 0x74 | r6 += 0x74;
0x00014e24 add r3, pc | r3 += pc;
0x00014e26 str r3, [sp, 0x30] | var_30h_3 = r3;
0x00014e28 mov ip, r3 |
0x00014e2a ldm.w lr!, {r0, r1, r2, r3} | r0 = *(lr!);
| r1 = *((lr! + 4));
| r2 = *((lr! + 8));
| r3 = *((lr! + 12));
0x00014e2e stm.w ip!, {r0, r1, r2, r3} | *(ip!) = r0;
| *((ip! + 4)) = r1;
| *((ip! + 8)) = r2;
| *((ip! + 12)) = r3;
0x00014e32 ldr r3, [sp, 0x30] | r3 = var_30h_3;
0x00014e34 str r1, [sp, 0x34] | var_34h = r1;
0x00014e36 ldr r2, [r3, 0xc] | r2 = *((r3 + 0xc));
0x00014e38 str r2, [sp, 0x30] | var_30h_3 = r2;
0x00014e3a ldm.w lr, {r0, r1, r2, r3} | r0 = *(lr);
| r1 = *((lr + 4));
| r2 = *((lr + 8));
| r3 = *((lr + 12));
0x00014e3e stm.w ip, {r0, r1, r2, r3} | *(ip) = r0;
| *((ip + 4)) = r1;
| *((ip + 8)) = r2;
| *((ip + 12)) = r3;
0x00014e42 ldr r2, [sp, 0x30] | r2 = var_30h_3;
0x00014e44 cmp r2, 4 |
| if (r2 > 4) {
0x00014e46 bgt 0x14f24 | goto label_72;
| }
0x00014e48 movs r3, 0 | r3 = 0;
0x00014e4a str r3, [sp, 0x40] | var_40h = r3;
0x00014e4c str r3, [sp, 0x30] | var_30h_3 = r3;
0x00014e4e b 0x14f5c | goto label_73;
| label_69:
0x00014e50 ldr r0, [sp, 0x14] | r0 = var_14h;
0x00014e52 ldr r1, [sp, 0x68] | r1 = var_68h;
0x00014e54 bl 0x384c | fcn_0000384c (r0, r1);
0x00014e58 str r0, [sp, 0x64] | var_64h_2 = r0;
0x00014e5a b 0x14b1e | goto label_16;
| label_47:
0x00014e5c ldr.w r0, [pc, 0x63c] |
0x00014e60 movs r2, 7 | r2 = 7;
0x00014e62 mov r1, r6 | r1 = r6;
0x00014e64 add r0, pc | r0 = 0x2a304;
0x00014e66 blx 0x2814 | r0 = fcn_00002814 ();
0x00014e6a cmp r0, 0 |
| if (r0 == 0) {
0x00014e6c beq.w 0x152ea | goto label_74;
| }
0x00014e70 ldr.w r0, [pc, 0x62c] |
0x00014e74 movs r2, 5 | r2 = 5;
0x00014e76 mov r1, r6 | r1 = r6;
0x00014e78 add r0, pc | r0 = 0x2a31c;
0x00014e7a blx 0x2814 | r0 = fcn_00002814 ();
0x00014e7e cmp r0, 0 |
| if (r0 != 0) {
0x00014e80 bne.w 0x14aa0 | goto label_18;
| }
0x00014e84 adds r6, 5 | r6 += 5;
0x00014e86 b 0x14aa0 | goto label_18;
| label_67:
0x00014e88 ldr r3, [sp, 0x64] | r3 = var_64h_2;
0x00014e8a adds r3, 1 | r3++;
| if (r3 != 1) {
0x00014e8c bne 0x14dd2 | goto label_19;
| }
0x00014e8e b 0x14e9a | goto label_75;
| label_51:
0x00014e90 adds r2, 1 | r2++;
| if (r2 != 1) {
0x00014e92 bne.w 0x14b1e | goto label_16;
| }
0x00014e96 movs r3, 0 | r3 = 0;
0x00014e98 str r3, [sp, 0x14] | var_14h = r3;
| label_75:
0x00014e9a ldr.w r2, [pc, 0x608] |
0x00014e9e mov.w r1, -1 | r1 = -1;
0x00014ea2 movs r0, 3 | r0 = 3;
0x00014ea4 add r2, pc | r2 = 0x2a34e;
0x00014ea6 bl 0x8e8c | fcn_00008e8c (r0, r1);
0x00014eaa ldr.w r2, [pc, 0x5fc] |
0x00014eae mov.w r1, -1 | r1 = -1;
0x00014eb2 mov r0, r4 | r0 = r4;
0x00014eb4 add r2, pc | r2 = 0x2a362;
0x00014eb6 bl 0x14664 | fcn_00014664 (r0, r1, r2, r3, r4);
0x00014eba b 0x14dd2 | goto label_19;
| label_46:
0x00014ebc ldr.w r2, [pc, 0x5ec] |
0x00014ec0 mov r1, r3 | r1 = r3;
0x00014ec2 movs r0, 5 | r0 = 5;
0x00014ec4 add r2, pc | r2 = 0x2a374;
0x00014ec6 bl 0x8e8c | fcn_00008e8c (r0, r1);
0x00014eca ldr r3, [r4, 0xc] | r3 = *((r4 + 0xc));
0x00014ecc str r3, [sp, 0x14] | var_14h = r3;
0x00014ece ldr.w r3, [r3, 0x98] | r3 = *((r3 + 0x98));
0x00014ed2 cmp r3, 0 |
0x00014ed4 it eq |
| if (r3 != 0) {
0x00014ed6 moveq r3, 4 | r3 = 4;
| }
0x00014ed8 str r3, [r4, 0x78] | *((r4 + 0x78)) = r3;
0x00014eda b 0x14a78 | goto label_20;
| label_71:
0x00014edc lsrs r3, r3, 4 | r3 >>= 4;
0x00014ede ldr.w ip, [sp, 0x14] | ip = var_14h;
0x00014ee2 mov.w lr, 0 | lr = 0;
0x00014ee6 str r3, [sp, 0x2c] | var_2ch_2 = r3;
0x00014ee8 ldr.w r3, [pc, 0x5c4] | r3 = *(0x000154b0);
0x00014eea adds r5, 0xc4 | r5 += 0xc4;
0x00014eec strd lr, lr, [r8] | __asm ("strd lr, lr, [r8]");
0x00014ef0 strd lr, lr, [r8, 8] | __asm ("strd lr, lr, [r8, 8]");
0x00014ef4 add r3, pc | r3 += pc;
0x00014ef6 str.w lr, [sp, 0x70] | __asm ("str.w lr, [var_70h]");
0x00014efa str r3, [sp, 0x30] | var_30h_3 = r3;
0x00014efc mov r6, r3 | r6 = r3;
0x00014efe ldm.w ip!, {r0, r1, r2, r3} | r0 = *(ip!);
| r1 = *((ip! + 4));
| r2 = *((ip! + 8));
| r3 = *((ip! + 12));
0x00014f02 stm r6!, {r0, r1, r2, r3} | *(r6!) = r0;
| *((r6! + 4)) = r1;
| *((r6! + 8)) = r2;
| *((r6! + 12)) = r3;
0x00014f04 ldr r3, [sp, 0x30] | r3 = var_30h_3;
0x00014f06 str r1, [sp, 0x34] | var_34h = r1;
0x00014f08 ldr r2, [r3, 0xc] | r2 = *((r3 + 0xc));
0x00014f0a str r2, [sp, 0x30] | var_30h_3 = r2;
0x00014f0c ldm.w ip, {r0, r1, r2, r3} | r0 = *(ip);
| r1 = *((ip + 4));
| r2 = *((ip + 8));
| r3 = *((ip + 12));
0x00014f10 stm.w r6, {r0, r1, r2, r3} | *(r6) = r0;
| *((r6 + 4)) = r1;
| *((r6 + 8)) = r2;
| *((r6 + 12)) = r3;
0x00014f14 ldr r2, [sp, 0x30] | r2 = var_30h_3;
0x00014f16 cmp r2, 4 |
0x00014f18 ittt le |
| if (r2 > 4) {
0x00014f1a movle r3, lr | r3 = lr;
| }
| if (r2 > 4) {
0x00014f1c strle r3, [sp, 0x40] | var_40h = r3;
| }
| if (r2 > 4) {
0x00014f1e strle r3, [sp, 0x30] | var_30h_3 = r3;
| }
| if (r2 <= 4) {
0x00014f20 ble.w 0x1537c | goto label_76;
| }
| label_72:
0x00014f24 ldr.w r6, [pc, 0x58c] | r6 = *(0x000154b4);
0x00014f28 add r0, sp, 0x50 | r0 += var_50h;
0x00014f2a str r0, [sp, 0x44] | var_44h = r0;
0x00014f2c add r6, pc | r6 += pc;
0x00014f2e add.w r1, r6, 0x10 | r1 = r6 + 0x10;
0x00014f32 ldrb r5, [r6, 8] | r5 = *((r6 + 8));
0x00014f34 blx 0x2668 | fcn_00002668 ();
0x00014f38 ldr r3, [r6, 0xc] | r3 = *((r6 + 0xc));
0x00014f3a ldr r0, [sp, 0x44] | r0 = var_44h;
0x00014f3c cmp r5, 0x7f |
0x00014f3e str r3, [sp, 0x40] | var_40h = r3;
0x00014f40 ldr r3, [sp, 0x14] | r3 = var_14h;
0x00014f42 ldrb r6, [r3] | r6 = *(r3);
0x00014f44 ite le |
| if (r5 > 0x7f) {
0x00014f46 movle r3, 0 | r3 = 0;
| }
| if (r5 <= 0x7f) {
0x00014f48 movgt r3, 1 | r3 = 1;
| }
0x00014f4a str r3, [sp, 0x30] | var_30h_3 = r3;
0x00014f4c ldm r0, {r0, r1, r2, r3} | r0 = *(r0);
| r1 = *((r0 + 4));
| r2 = *((r0 + 8));
| r3 = *((r0 + 12));
0x00014f4e and r6, r6, 0xf0 | r6 &= 0xf0;
0x00014f52 cmp r6, 0x70 |
0x00014f54 stm.w r8, {r0, r1, r2, r3} | *(r8) = r0;
| *((r8 + 4)) = r1;
| *((r8 + 8)) = r2;
| *((r8 + 12)) = r3;
| if (r6 == 0x70) {
0x00014f58 beq.w 0x1537c | goto label_76;
| }
| label_73:
0x00014f5c cmp r6, 0x50 |
| if (r6 == 0x50) {
0x00014f5e beq.w 0x15616 | goto label_77;
| }
0x00014f62 cmp r6, 0x40 |
| if (r6 == 0x40) {
0x00014f64 beq.w 0x156f2 | goto label_78;
| }
| label_29:
0x00014f68 ldrd r2, r3, [sp, 0x2c] | __asm ("ldrd r2, r3, [var_30h_3]");
0x00014f6c cmp r2, 5 |
0x00014f6e it ne |
| if (r2 == 5) {
0x00014f70 orrne r3, r3, 1 | r3 |= 1;
| }
0x00014f72 lsls r1, r0, 0xc | r1 = r0 << 0xc;
| if (r3 == 0) {
0x00014f74 cbz r3, 0x14fca | goto label_79;
| }
0x00014f76 ldr r3, [r4, 0x18] | r3 = *((r4 + 0x18));
0x00014f78 movs r2, 0 | r2 = 0;
0x00014f7a str r2, [sp, 0x74] | var_74h = r2;
| if (r3 != 0) {
0x00014f7c cbz r3, 0x14f9e |
0x00014f7e ldr r3, [r4, 0xc] | r3 = *((r4 + 0xc));
0x00014f80 mov.w r1, -1 | r1 = -1;
0x00014f84 ldr r6, [sp, 0x34] | r6 = var_34h;
0x00014f86 movs r0, 3 | r0 = 3;
0x00014f88 ldr.w r2, [pc, 0x52c] |
0x00014f8c ldr r3, [r3] | r3 = *(r3);
0x00014f8e str r6, [sp] | *(sp) = r6;
0x00014f90 add r2, pc | r2 = 0x2a44c;
0x00014f92 bl 0x8e8c | fcn_00008e8c (r0, r1);
0x00014f96 ldr r3, [r4, 0x18] | r3 = *((r4 + 0x18));
0x00014f98 mov r1, r6 | r1 = r6;
0x00014f9a ldr r0, [r4, 0x24] | r0 = *((r4 + 0x24));
0x00014f9c blx r3 | uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
| }
0x00014f9e add r3, sp, 0x74 | r3 += var_74h;
0x00014fa0 str r5, [sp, 0x2c] | var_2ch_2 = r5;
0x00014fa2 ldr r6, [sp, 0x34] | r6 = var_34h;
0x00014fa4 mov r5, r3 | r5 = r3;
0x00014fa6 b 0x14fb4 | goto label_80;
| label_21:
0x00014fa8 ldr r3, [sp, 0x74] | r3 = var_74h;
0x00014faa ldr r3, [r3, 8] | r3 = *((r3 + 8));
0x00014fac ldr r2, [r3, 0x14] | r2 = *((r3 + 0x14));
0x00014fae cmp r2, r6 |
| if (r2 == r6) {
0x00014fb0 beq.w 0x1538a | void (*0x1538a)() ();
| }
| label_80:
0x00014fb4 ldr.w r0, [r4, 0xe4] | r0 = *((r4 + 0xe4));
0x00014fb8 mov r1, r5 | r1 = r5;
0x00014fba bl 0xceb0 | r0 = fcn_0000ceb0 (r0, r1);
0x00014fbe cmp r0, 0 |
| if (r0 != 0) {
0x00014fc0 bne 0x14fa8 | goto label_21;
| }
0x00014fc2 ldr r3, [sp, 0x40] | r3 = var_40h;
0x00014fc4 cmp r3, 4 |
| if (r3 > 4) {
0x00014fc6 bgt.w 0x152f0 | void (*0x152f0)() ();
| }
| label_79:
0x00014fca ldr r0, [sp, 0x70] | r0 = var_70h;
0x00014fcc cmp r0, 0 |
| if (r0 == 0) {
0x00014fce beq.w 0x14b1e | goto label_16;
| }
0x00014fd2 bl 0x3120 | fcn_00003120 (r0);
0x00014fd6 b 0x14b1e | goto label_16;
| label_56:
0x00014fd8 ldr.w r2, [pc, 0x4e0] |
0x00014fdc mov.w r1, -1 | r1 = -1;
0x00014fe0 ldr r3, [sp, 0x68] | r3 = var_68h;
0x00014fe2 movs r0, 3 | r0 = 3;
0x00014fe4 add r2, pc | r2 = 0x2a4a4;
0x00014fe6 bl 0x8e8c | fcn_00008e8c (r0, r1);
0x00014fea ldr.w r3, [sb] | r3 = *(sb);
0x00014fee b 0x14c94 | goto label_22;
| label_60:
0x00014ff0 ldr r3, [sp, 0x14] | r3 = var_14h;
0x00014ff2 movs r2, 3 | r2 = 3;
0x00014ff4 ldr.w r0, [pc, 0x4c8] |
0x00014ff8 mov.w r4, -1 | r4 = -1;
0x00014ffc movw r1, 0x7a2 | r1 = 0x7a2;
0x00015000 ldrb r3, [r3, 4] | r3 = *((r3 + 4));
0x00015002 add r0, pc |
0x00015004 str r4, [sp, 0x70] | var_70h = r4;
0x00015006 add.w r0, r0, 0x2a8 | r0 = 0x2a76e;
0x0001500a and r7, r3, 1 | r7 = r3 & 1;
0x0001500e bl 0xf2e8 | fcn_0000f2e8 (r0, r1, r2);
0x00015012 ldr r2, [r5, 0xc] | r2 = *((r5 + 0xc));
0x00015014 ldrh r3, [r2, 0x10] | r3 = *((r2 + 0x10));
0x00015016 and r3, r3, 0x3c0 | r3 &= 0x3c0;
0x0001501a cmp.w r3, 0x100 |
| if (r3 == 0x100) {
0x0001501e beq.w 0x1564c | goto label_81;
| }
| label_30:
0x00015022 ldr.w r0, [pc, 0x4a0] |
0x00015026 movw r1, 0x7c9 | r1 = 0x7c9;
0x0001502a movs r3, 3 | r3 = 3;
0x0001502c add r2, sp, 0x70 | r2 += var_70h;
0x0001502e add r0, pc |
0x00015030 add.w r0, r0, 0x2a8 | r0 = 0x2a7a0;
0x00015034 bl 0xf388 | fcn_0000f388 (r0, r1, r2, r3);
0x00015038 ldr r1, [sp, 0x70] | r1 = var_70h;
0x0001503a str r1, [sp, 0x64] | var_64h_2 = r1;
0x0001503c cmp r1, 0 |
| if (r1 != 0) {
0x0001503e bne.w 0x15370 | goto label_82;
| }
0x00015042 ldr.w r3, [r5, 0x108] | r3 = *((r5 + 0x108));
0x00015046 cmp r3, 0 |
| if (r3 > 0) {
0x00015048 ble 0x15068 |
0x0001504a ldr r2, [r5, 0x74] | r2 = *((r5 + 0x74));
0x0001504c cmp r3, r2 |
| if (r3 <= r2) {
0x0001504e ble 0x15068 | goto label_83;
| }
| }
| label_83:
0x00015068 ldr r1, [r5, 0x44] | r1 = *((r5 + 0x44));
0x0001506a cmp r1, 0 |
| if (r1 == 0) {
0x0001506c beq.w 0x152f8 | void (*0x152f8)() ();
| }
| label_28:
0x000150f0 ldr r0, [sp, 0x14] | r0 = var_14h;
0x000150f2 bl 0x6164 | fcn_00006164 (r0);
0x000150f6 b 0x14c90 | goto label_15;
| label_59:
0x000150f8 ldr r3, [r5, 0xc] | r3 = *((r5 + 0xc));
0x000150fa mov.w r1, -1 | r1 = -1;
0x000150fe ldr r2, [pc, 0x3d8] |
0x00015100 movs r0, 3 | r0 = 3;
0x00015102 ldr r3, [r3] | r3 = *(r3);
0x00015104 add r2, pc | r2 = 0x2a5e2;
0x00015106 bl 0x8e8c | fcn_00008e8c (r0, r1);
0x0001510a b 0x14c6e | goto label_23;
| label_63:
0x0001510c ldr r3, [r5, 0x30] | r3 = *((r5 + 0x30));
0x0001510e ldr r6, [sp, 0x14] | r6 = var_14h;
0x00015110 ldrb r4, [r6, 8] | r4 = *((r6 + 8));
| if (r3 != 0) {
0x00015112 cbz r3, 0x15132 |
0x00015114 ldr r3, [r5, 0xc] | r3 = *((r5 + 0xc));
0x00015116 mov.w r1, -1 | r1 = -1;
0x0001511a ldr r2, [pc, 0x3c0] |
0x0001511c movs r0, 3 | r0 = 3;
0x0001511e ldr r3, [r3] | r3 = *(r3);
0x00015120 add r2, pc | r2 = 0x2a602;
0x00015122 bl 0x8e8c | fcn_00008e8c (r0, r1);
0x00015126 ldr r3, [r5, 0x30] | r3 = *((r5 + 0x30));
0x00015128 add.w r1, r6, 0x10 | r1 = r6 + 0x10;
0x0001512c ldrb r2, [r6, 8] | r2 = *((r6 + 8));
0x0001512e ldr r0, [r5, 0x34] | r0 = *((r5 + 0x34));
0x00015130 blx r3 | uint32_t (*r3)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
| }
0x00015132 ldr r3, [r5, 0xc] | r3 = *((r5 + 0xc));
0x00015134 ldr r0, [sp, 0x14] | r0 = var_14h;
0x00015136 ldr r1, [r3, 0x1c] | r1 = *((r3 + 0x1c));
0x00015138 bl 0xb36c | fcn_0000b36c (r0, r1);
0x0001513c ldr r3, [r5, 0xc] | r3 = *((r5 + 0xc));
0x0001513e mov r1, r4 | r1 = r4;
0x00015140 ldr r2, [pc, 0x39c] |
0x00015142 str r0, [sp, 0x64] | var_64h_2 = r0;
0x00015144 mov r0, r5 | r0 = r5;
0x00015146 ldrb r4, [r3, 0x10] | r4 = *((r3 + 0x10));
0x00015148 add r2, pc | r2 = 0x2a62c;
0x0001514a bfc r4, 2, 1 | value_1 = BIT_MASK (1, );
| value_1 = ~value_1;
| r4 &= value_1;
0x0001514e strb r4, [r3, 0x10] | *((r3 + 0x10)) = r4;
0x00015150 bl 0x14664 | fcn_00014664 (r0, r1, r2, r3, r4);
0x00015154 b 0x14c90 | goto label_15;
| label_57:
0x00015156 ldr r2, [pc, 0x38c] |
0x00015158 mov.w r1, -1 | r1 = -1;
0x0001515c ldr r3, [sp, 0x68] | r3 = var_68h;
0x0001515e movs r0, 5 | r0 = 5;
0x00015160 add r2, pc | r2 = 0x2a64a;
0x00015162 bl 0x8e8c | fcn_00008e8c (r0, r1);
0x00015166 ldr r0, [sp, 0x68] | r0 = var_68h;
0x00015168 bl 0x7d4c | fcn_00007d4c (r0);
0x0001516c ldr.w r3, [sb] | r3 = *(sb);
0x00015170 b 0x14c94 | goto label_22;
| label_64:
0x00015172 blx 0x2588 | localtime (r0);
0x00015176 ldr r2, [pc, 0x370] |
0x00015178 mov r3, r0 | r3 = r0;
0x0001517a mov r1, r4 | r1 = r4;
0x0001517c movs r0, 5 | r0 = 5;
0x0001517e add r2, pc | r2 = 0x2a66c;
0x00015180 bl 0x8e8c | fcn_00008e8c (r0, r1);
0x00015184 ldr r3, [pc, 0x2fc] |
0x00015186 ldr.w r3, [sl, r3] | r3 = *((sl + r3));
0x0001518a ldr r3, [r3] | r3 = *(0x15484);
0x0001518c cmp r3, 0 |
| if (r3 == 0) {
0x0001518e beq.w 0x14d60 | goto label_24;
| }
| label_65:
0x00015192 ldr r3, [pc, 0x358] | r3 = *(0x154ee);
0x00015194 ldr.w r3, [sl, r3] | r3 = *((sl + r3));
0x00015198 ldr r0, [r3] | r0 = *(0x154ee);
0x0001519a bl 0xaab4 | fcn_0000aab4 (r0);
0x0001519e b 0x14d60 | goto label_24;
| label_39:
0x000151a0 blx 0x2588 | localtime (r0);
0x000151a4 ldr r2, [pc, 0x348] |
0x000151a6 mov r3, r0 | r3 = r0;
0x000151a8 movs r1, 0 | r1 = 0;
0x000151aa movs r0, 5 | r0 = 5;
0x000151ac add r2, pc | r2 = 0x2a6a0;
0x000151ae bl 0x8e8c | fcn_00008e8c (r0, r1);
0x000151b2 b.w 0x148e4 | goto label_25;
| label_48:
0x000151b6 ldr r3, [sp, 0x14] | r3 = var_14h;
0x000151b8 movs r2, 4 | r2 = 4;
0x000151ba movs r1, 1 | r1 = 1;
0x000151bc str r2, [sp, 0x78] | var_78h = r2;
0x000151be ldr r0, [r3, 0x1c] | r0 = *((r3 + 0x1c));
0x000151c0 add r3, sp, 0x74 | r3 += var_74h;
0x000151c2 str.w r8, [sp] | __asm ("str.w r8, [sp]");
0x000151c6 blx 0x24f8 | r0 = sem_post ();
0x000151ca mov r1, r0 | r1 = r0;
0x000151cc str r0, [sp, 0x70] | var_70h = r0;
| if (r0 == 0) {
0x000151ce cbnz r0, 0x1522e |
0x000151d0 ldr r1, [sp, 0x74] | r1 = var_74h;
0x000151d2 str r1, [sp, 0x70] | var_70h = r1;
| if (r1 != 0) {
0x000151d4 cbnz r1, 0x1522e | goto label_27;
| }
0x000151d6 ldr r3, [r4, 0xc] | r3 = *((r4 + 0xc));
0x000151d8 str r1, [sp, 0x14] | var_14h = r1;
0x000151da ldr r0, [r3, 0x1c] | r0 = *((r3 + 0x1c));
0x000151dc bl 0x7984 | fcn_00007984 (r0);
0x000151e0 ldr r0, [r4, 0xc] | r0 = *((r4 + 0xc));
0x000151e2 ldr r3, [r0, 0x38] | r3 = *((r0 + 0x38));
| if (r3 != 0) {
0x000151e4 cbz r3, 0x15206 |
0x000151e6 ldrh r3, [r0, 0x10] | r3 = *((r0 + 0x10));
0x000151e8 movs r2, 5 | r2 = 5;
0x000151ea ldr r1, [sp, 0x14] | r1 = var_14h;
0x000151ec adds r0, 0x1c | r0 += 0x1c;
0x000151ee bfi r3, r2, 6, 4 | value_2 = BIT_MASK (6, 4);
| value_3 = r2 & value_2;
| value_2 = ~value_2;
| r3 &= value_2;
| r3 |= value_3;
0x000151f2 mov r2, r6 | r2 = r6;
0x000151f4 strh r3, [r0, -0xc] | *((r0 - 0xc)) = r3;
0x000151f8 bl 0xf060 | fcn_0000f060 (r0, r1);
0x000151fc str r0, [sp, 0x70] | var_70h = r0;
0x000151fe adds r0, 1 | r0++;
| if (r0 == 1) {
0x00015200 beq.w 0x15754 | goto label_84;
| }
0x00015204 ldr r0, [r4, 0xc] | r0 = *((r4 + 0xc));
| }
0x00015206 ldr r3, [r4, 8] | r3 = *((r4 + 8));
0x00015208 cmp r3, 0 |
| if (r3 == 0) {
0x0001520a beq.w 0x15736 | goto label_85;
| }
0x0001520e ldrh r3, [r0, 0x10] | r3 = *((r0 + 0x10));
0x00015210 movs r1, 3 | r1 = 3;
0x00015212 mov r2, r6 | r2 = r6;
0x00015214 adds r0, 0x1c | r0 += 0x1c;
0x00015216 bfi r3, r1, 6, 4 | value_4 = BIT_MASK (6, 4);
| value_5 = r1 & value_4;
| value_4 = ~value_4;
| r3 &= value_4;
| r3 |= value_5;
0x0001521a movs r1, 0 | r1 = 0;
0x0001521c strh r3, [r0, -0xc] | *((r0 - 0xc)) = r3;
0x00015220 bl 0xe114 | r0 = fcn_0000e114 (r0, r1, r2);
0x00015224 adds r2, r0, 1 | r2 = r0 + 1;
0x00015226 mov r1, r0 | r1 = r0;
0x00015228 str r0, [sp, 0x70] | var_70h = r0;
| if (r2 == r0) {
0x0001522a beq.w 0x15754 | goto label_84;
| }
| }
| label_27:
0x0001522e adds.w r3, r1, 0x16 | r3 = r1 + 0x16;
0x00015232 it ne |
| if (r3 == r1) {
0x00015234 movne r3, 1 | r3 = 1;
| }
0x00015236 b 0x14abe | goto label_26;
| label_68:
0x00015238 ldr r0, [sp, 0x14] | r0 = var_14h;
0x0001523a ldr r1, [sp, 0x68] | r1 = var_68h;
0x0001523c bl 0x31ac | fcn_000031ac (r0, r1, r2, r3);
0x00015240 str r0, [sp, 0x64] | var_64h_2 = r0;
0x00015242 b 0x14b1e | goto label_16;
| label_61:
0x00015244 movs r3, 0 | r3 = 0;
0x00015246 ldr r7, [sp, 0x14] | r7 = var_14h;
0x00015248 add r6, sp, 0x74 | r6 += var_74h;
0x0001524a str r3, [sp, 0x74] | var_74h = r3;
0x0001524c b 0x1525c |
| while (r0 != 0) {
0x0001524e ldr r3, [sp, 0x74] | r3 = var_74h;
0x00015250 ldr r4, [r3, 8] | r4 = *((r3 + 8));
0x00015252 ldr r3, [r7, 4] | r3 = *((r7 + 4));
0x00015254 ldr r2, [r4, 0x14] | r2 = *((r4 + 0x14));
0x00015256 cmp r2, r3 |
| if (r2 == r3) {
0x00015258 beq.w 0x15504 | goto label_86;
| }
0x0001525a strh r4, [r2, 0xa] | *((r2 + 0xa)) = r4;
0x0001525c ldr.w r0, [r5, 0xe4] | r0 = *((r5 + 0xe4));
0x00015260 mov r1, r6 | r1 = r6;
0x00015262 bl 0xceb0 | r0 = fcn_0000ceb0 (r0, r1);
0x00015266 cmp r0, 0 |
0x00015268 bne 0x1524e |
| }
0x0001526a ldr r3, [r5, 0xc] | r3 = *((r5 + 0xc));
0x0001526c ldr r0, [sp, 0x14] | r0 = var_14h;
0x0001526e ldr r1, [r3, 0x1c] | r1 = *((r3 + 0x1c));
0x00015270 bl 0xb18c | fcn_0000b18c (r0, r1);
0x00015274 b 0x14c90 | goto label_15;
| label_49:
0x00015276 ldr r0, [sp, 0x14] | r0 = var_14h;
0x00015278 adds r0, 0x1c | r0 += 0x1c;
0x0001527a bl 0xed9c | r0 = fcn_0000ed9c (r0, r1);
0x0001527e adds.w r3, r0, 0x16 | r3 = r0 + 0x16;
0x00015282 mov r1, r0 | r1 = r0;
0x00015284 it ne |
| if (r3 == r0) {
0x00015286 movne r3, 1 | r3 = 1;
| }
0x00015288 str r0, [sp, 0x70] | var_70h = r0;
0x0001528a cmp.w r0, -1 |
0x0001528e ite eq |
| if (r0 != -1) {
0x00015290 moveq r2, 0 | r2 = 0;
| }
| if (r0 == -1) {
0x00015292 andne r2, r3, 1 | r2 = r3 & 1;
| }
0x00015296 cmp r2, 0 |
| if (r2 == 0) {
0x00015298 beq.w 0x14abe | goto label_26;
| }
0x0001529c ldr r0, [r4, 0xc] | r0 = *((r4 + 0xc));
0x0001529e movs r2, 4 | r2 = 4;
0x000152a0 ldrh r3, [r0, 0x10] | r3 = *((r0 + 0x10));
0x000152a2 bfi r3, r2, 6, 4 | value_6 = BIT_MASK (6, 4);
| value_7 = r2 & value_6;
| value_6 = ~value_6;
| r3 &= value_6;
| r3 |= value_7;
0x000152a6 strh r3, [r0, 0x10] | *((r0 + 0x10)) = r3;
0x000152a8 ldr r1, [r4, 0x78] | r1 = *((r4 + 0x78));
0x000152aa ldrd r2, r3, [r4, 0x12c] | __asm ("ldrd r2, r3, aav.0x000000ff");
0x000152ae bl 0x5da8 | r0 = fcn_00005da8 (r0, r1, r2, r3);
0x000152b2 mov r1, r0 | r1 = r0;
0x000152b4 str r0, [sp, 0x70] | var_70h = r0;
0x000152b6 b 0x1522e | goto label_27;
| label_62:
0x000152b8 movs r3, 0 | r3 = 0;
0x000152ba ldr r7, [sp, 0x14] | r7 = var_14h;
0x000152bc add r6, sp, 0x74 | r6 += var_74h;
0x000152be str r3, [sp, 0x74] | var_74h = r3;
0x000152c0 b 0x152d0 |
| while (r0 != 0) {
0x000152c2 ldr r3, [sp, 0x74] | r3 = var_74h;
0x000152c4 ldr r4, [r3, 8] | r4 = *((r3 + 8));
0x000152c6 ldr r3, [r7, 4] | r3 = *((r7 + 4));
0x000152c8 ldr r2, [r4, 0x14] | r2 = *((r4 + 0x14));
0x000152ca cmp r2, r3 |
| if (r2 == r3) {
0x000152cc beq.w 0x155b0 | goto label_87;
| }
0x000152d0 ldr.w r0, [r5, 0xe4] | r0 = *((r5 + 0xe4));
0x000152d4 mov r1, r6 | r1 = r6;
0x000152d6 bl 0xceb0 | r0 = fcn_0000ceb0 (r0, r1);
0x000152da cmp r0, 0 |
0x000152dc bne 0x152c2 |
| }
0x000152de ldr r3, [r5, 0xc] | r3 = *((r5 + 0xc));
0x000152e0 ldr r0, [sp, 0x14] | r0 = var_14h;
0x000152e2 ldr r1, [r3, 0x1c] | r1 = *((r3 + 0x1c));
0x000152e4 bl 0xb2c0 | fcn_0000b2c0 (r0, r1);
0x000152e8 b 0x14c90 | goto label_15;
| label_74:
0x000152ea adds r6, 7 | r6 += 7;
0x000152ec b.w 0x14aa0 | goto label_18;
| label_82:
0x00015370 ldr r2, [pc, 0x184] |
0x00015372 mov r0, r5 | r0 = r5;
0x00015374 add r2, pc | r2 = 0x2a870;
0x00015376 bl 0x14664 | fcn_00014664 (r0, r1, r2, r3, r4);
0x0001537a b 0x150f0 | goto label_28;
| label_76:
0x0001537c ldr r1, [sp, 0x68] | r1 = var_68h;
0x0001537e add r2, sp, 0x70 | r2 += var_70h;
0x00015380 ldr r0, [sp, 0x14] | r0 = var_14h;
0x00015382 bl 0x3ab4 | fcn_00003ab4 (r0, r1, r2);
0x00015386 str r0, [sp, 0x64] | var_64h_2 = r0;
0x00015388 b 0x14f68 | goto label_29;
| label_86:
0x00015504 ldr.w r0, [r5, 0xe4] | r0 = *((r5 + 0xe4));
0x00015508 mov r1, r4 | r1 = r4;
0x0001550a bl 0xcc3c | r0 = fcn_0000cc3c (r0, r1);
0x0001550e cmp r0, 0 |
| if (r0 == 0) {
0x00015510 beq.w 0x158e0 | goto label_88;
| }
| label_31:
0x00015514 ldr.w lr, [r5, 0xc] |
0x00015518 ldr r3, [sp, 0x14] | r3 = var_14h;
0x0001551a ldr.w r1, [lr, 0x98] | r1 = *((lr + 0x98));
0x0001551e ldr r3, [r3, 0x1c] | r3 = *((r3 + 0x1c));
0x00015520 cmp r1, 4 |
0x00015522 ldr r2, [r3, 0xc] | r2 = *((r3 + 0xc));
| if (r1 <= 4) {
0x00015524 ble.w 0x15700 | void (*0x15700)() ();
| }
| label_87:
0x000155b0 ldr.w r0, [r5, 0xe4] | r0 = *((r5 + 0xe4));
0x000155b4 mov r1, r4 | r1 = r4;
0x000155b6 bl 0xcc3c | r0 = fcn_0000cc3c (r0, r1);
0x000155ba cmp r0, 0 |
| if (r0 == 0) {
0x000155bc beq.w 0x15900 | void (*0x15900)() ();
| }
| label_77:
0x00015616 ldr r1, [sp, 0x68] | r1 = var_68h;
0x00015618 add r2, sp, 0x70 | r2 += var_70h;
0x0001561a ldr r0, [sp, 0x14] | r0 = var_14h;
0x0001561c bl 0x360c | fcn_0000360c (r0, r1, r2);
0x00015620 str r0, [sp, 0x64] | var_64h_2 = r0;
0x00015622 b 0x14f68 | goto label_29;
| label_81:
0x0001564c ldr r6, [sp, 0x14] | r6 = var_14h;
0x0001564e movs r0, 4 | r0 = 4;
0x00015650 ldr r3, [r2, 0x1c] | r3 = *((r2 + 0x1c));
0x00015652 ldrb r1, [r6, 8] | r1 = *((r6 + 8));
0x00015654 str r1, [sp, 4] | var_4h_4 = r1;
0x00015656 movs r1, 1 | r1 = 1;
0x00015658 ldr r2, [r2] | r2 = *(r2);
0x0001565a str r2, [sp] | *(sp) = r2;
0x0001565c movs r2, 0 | r2 = 0;
0x0001565e bl 0x8e8c | fcn_00008e8c (r0, r1);
0x00015662 ldrb r3, [r6, 8] | r3 = *((r6 + 8));
0x00015664 str r3, [sp, 0x70] | var_70h = r3;
0x00015666 cmp r3, 0 |
| if (r3 == 0) {
0x00015668 bne 0x156dc |
0x0001566a ldr r0, [r5, 0xc] | r0 = *((r5 + 0xc));
0x0001566c str.w r3, [r5, 0x124] | __asm ("str.w r3, aav.0x000000ff");
0x00015670 ldrh r3, [r0, 0x10] | r3 = *((r0 + 0x10));
0x00015672 bic r3, r3, 0x3cc | r3 = BIT_MASK (r3, 0x3cc);
0x00015676 orr r3, r3, 0xc | r3 |= 0xc;
0x0001567a lsls r1, r3, 0x1e | r1 = r3 << 0x1e;
0x0001567c strh r3, [r0, 0x10] | *((r0 + 0x10)) = r3;
| if (r1 != r3) {
0x0001567e bne.w 0x1591e | goto label_89;
| }
0x00015680 strh r6, [r1, 0xa] | *((r1 + 0xa)) = r6;
0x00015682 ldr.w r3, [r0, 0x98] | r3 = *((r0 + 0x98));
0x00015686 cmp r3, 3 |
| if (r3 > 3) {
0x00015688 ble 0x15694 |
0x0001568a ldr r3, [sp, 0x14] | r3 = var_14h;
0x0001568c ldrb r3, [r3, 4] | r3 = *((r3 + 4));
0x0001568e lsls r2, r3, 0x1f | r2 = r3 << 0x1f;
| if (r2 >= r3) {
0x00015690 bpl.w 0x15910 | goto label_90;
| }
| }
| label_32:
0x00015694 ldr r0, [r0, 0x64] | r0 = *((r0 + 0x64));
0x00015696 ldr r3, [r0, 0xc] | r3 = *((r0 + 0xc));
0x00015698 cmp r3, 0 |
| if (r3 <= 0) {
0x0001569a ble 0x156dc | goto label_91;
| }
0x0001569c vmov.i32 d16, 0 | __asm ("vmov.i32 d16, 0");
0x000156a0 movs r4, 0 | r4 = 0;
0x000156a2 add r6, sp, 0x74 | r6 += var_74h;
0x000156a4 str r4, [sp, 0x74] | var_74h = r4;
0x000156a6 vstr d16, [sp, 0x78] | __asm ("vstr d16, [sp, 0x78]");
0x000156aa b 0x156b8 | void (*0x156b8)() ();
| }
| label_91:
0x000156dc ldr.w r3, [pc, 0x464] | r3 = *(0x15b44);
0x000156e0 movs r2, 0 | r2 = 0;
0x000156e2 str.w r2, [r5, 0xec] | __asm ("str.w r2, [r5, 0xec]");
0x000156e6 ldr.w r3, [sl, r3] | r3 = *((sl + r3));
0x000156ea ldr r0, [r3] | r0 = *(0x15b44);
0x000156ec bl 0xaab4 | fcn_0000aab4 (r0);
0x000156f0 b 0x15022 | goto label_30;
| label_78:
0x000156f2 ldr r1, [sp, 0x68] | r1 = var_68h;
0x000156f4 add r2, sp, 0x70 | r2 += var_70h;
0x000156f6 ldr r0, [sp, 0x14] | r0 = var_14h;
0x000156f8 bl 0x3468 | fcn_00003468 (r0, r1, r2, r3, r4);
0x000156fc str r0, [sp, 0x64] | var_64h_2 = r0;
0x000156fe b 0x14f68 | goto label_29;
| label_85:
0x00015736 ldrh r3, [r0, 0x10] | r3 = *((r0 + 0x10));
0x00015738 movs r2, 4 | r2 = 4;
0x0001573a bfi r3, r2, 6, 4 | value_8 = BIT_MASK (6, 4);
| value_9 = r2 & value_8;
| value_8 = ~value_8;
| r3 &= value_8;
| r3 |= value_9;
0x0001573e strh r3, [r0, 0x10] | *((r0 + 0x10)) = r3;
0x00015740 ldrd r2, r3, [r4, 0x12c] | __asm ("ldrd r2, r3, aav.0x000000ff");
0x00015744 ldr r1, [r4, 0x78] | r1 = *((r4 + 0x78));
0x00015746 bl 0x5da8 | r0 = fcn_00005da8 (r0, r1, r2, r3);
0x0001574a adds r3, r0, 1 | r3 = r0 + 1;
0x0001574c mov r1, r0 | r1 = r0;
0x0001574e str r0, [sp, 0x70] | var_70h = r0;
| if (r3 != r0) {
0x00015750 bne.w 0x1522e | goto label_27;
| }
| label_84:
0x00015754 mov.w r1, -1 | r1 = -1;
0x00015758 b 0x1522e | goto label_27;
| label_88:
0x000158e0 ldr r2, [pc, 0x27c] |
0x000158e2 mov.w r1, -1 | r1 = -1;
0x000158e6 movs r0, 5 | r0 = 5;
0x000158e8 add r2, pc | r2 = 0x2b44c;
0x000158ea bl 0x8e8c | fcn_00008e8c (r0, r1);
0x000158ee b 0x15514 | goto label_31;
| label_90:
0x00015910 ldr r2, [pc, 0x258] |
0x00015912 movs r0, 4 | r0 = 4;
0x00015914 mov r1, r4 | r1 = r4;
0x00015916 add r2, pc | r2 = 0x2b486;
0x00015918 bl 0x8e8c | fcn_00008e8c (r0, r1);
0x0001591c ldr r0, [r5, 0xc] | r0 = *((r5 + 0xc));
| label_89:
0x0001591e bl 0x14288 | fcn_00014288 (r0, r1, r2);
0x00015922 str r0, [sp, 0x70] | var_70h = r0;
0x00015924 ldr r0, [r5, 0xc] | r0 = *((r5 + 0xc));
0x00015926 b 0x15694 | goto label_32;
| label_66:
0x00015b2a blx 0x245c | pthread_condattr_init ();
0x00015b2e nop |
0x00015b30 ldr r0, [r4, r3] | r0 = *((r4 + r3));
0x00015b32 movs r0, r0 |
0x00015b34 str r4, [r3, 8] | *((r3 + 8)) = r4;
0x00015b36 movs r0, r0 |
0x00015b38 ldr r4, [r2, r2] | r4 = *((r2 + r2));
0x00015b3a movs r0, r0 |
0x00015b3c ldrsh r4, [r3, r7] | r4 = *((r3 + r7));
0x00015b3e movs r0, r0 |
0x00015b40 ldr r2, [r4, r0] | r2 = *((r4 + r0));
0x00015b42 movs r0, r0 |
0x00015b44 lsls r4, r4, 8 | r4 <<= 8;
0x00015b46 movs r0, r0 |
0x00015b48 ldrsh r4, [r6, r3] | r4 = *((r6 + r3));
0x00015b4a movs r0, r0 |
0x00015b4c ldrh r6, [r6, r1] | r6 = *((r6 + r1));
0x00015b4e movs r0, r0 |
0x00015b50 str r0, [r0, 0xc] | *((r0 + 0xc)) = r0;
0x00015b52 movs r0, r0 |
0x00015b54 ldr r2, [r2, r0] | r2 = *((r2 + r0));
0x00015b56 movs r0, r0 |
0x00015b58 ldrsh r2, [r2, r7] | r2 = *((r2 + r7));
0x00015b5a movs r0, r0 |
0x00015b5c ldrb r4, [r4, r2] | r4 = *((r4 + r2));
0x00015b5e movs r0, r0 |
0x00015b60 ldrb r4, [r7, r0] | r4 = *((r7 + r0));
0x00015b62 movs r0, r0 |
0x00015b64 ldrh r0, [r2, r0] | r0 = *((r2 + r0));
0x00015b66 movs r0, r0 |
0x00015b68 ldrb r4, [r6, r1] | r4 = *((r6 + r1));
0x00015b6a movs r0, r0 |
0x00015b6c ldrh r2, [r3, r5] | r2 = *((r3 + r5));
0x00015b6e movs r0, r0 |
0x00015b70 strb r6, [r7, r3] | *((r7 + r3)) = r6;
0x00015b72 movs r0, r0 |
0x00015b74 ldrb r2, [r5, r0] | r2 = *((r5 + r0));
0x00015b76 movs r0, r0 |
0x00015b78 strb r4, [r2, r2] | *((r2 + r2)) = r4;
0x00015b7a movs r0, r0 |
0x00015b7c ldrb r6, [r1, r1] | r6 = *((r1 + r1));
0x00015b7e movs r0, r0 |
0x00015b80 strb r4, [r4, r6] | *((r4 + r6)) = r4;
0x00015b82 movs r0, r0 |
0x00015b84 strb r4, [r0, r0] | *((r0 + r0)) = r4;
0x00015b86 movs r0, r0 |
0x00015b88 ldrh r0, [r2, r7] | r0 = *((r2 + r7));
0x00015b8a movs r0, r0 |
0x00015b8c ldrh r4, [r5, r3] | r4 = *((r5 + r3));
0x00015b8e movs r0, r0 |
0x00015b90 ldrh r0, [r3, r5] | r0 = *((r3 + r5));
0x00015b92 movs r0, r0 |
0x00015b94 strh r6, [r3, r5] | *((r3 + r5)) = r6;
0x00015b96 movs r0, r0 |
0x00015b98 ldrh r0, [r1, r4] | r0 = *((r1 + r4));
0x00015b9a movs r0, r0 |
0x00015b9c strh r6, [r1, r4] | *((r1 + r4)) = r6;
0x00015b9e movs r0, r0 |
| }
[*] Function strcpy used 4 times libpaho-mqtt3a.so.1.3.11