[*] Binary protection state of libpaho-mqtt3a.so.1.3.9
Full RELRO Canary found NX enabled DSO No RPATH No RUNPATH No Symbols
[*] Function strcpy tear down of libpaho-mqtt3a.so.1.3.9
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libpaho-mqtt3a.so.1.3.9 @ 0xe968 */
| #include <stdint.h>
|
; (fcn) fcn.0000e968 () | void fcn_0000e968 (int16_t arg_48h, int16_t arg_10ch, int16_t arg_148h, int16_t arg_1e8h, int16_t arg_260h, int16_t arg_268h, int16_t arg_2b0h, int16_t arg_360h, int16_t arg_3a0h, int16_t arg1, int16_t arg3) {
| int16_t var_0h;
| int32_t var_4h;
| int32_t var_4h_2;
| int16_t var_ch;
| int16_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;
| int16_t var_40h;
| int16_t var_44h;
| int32_t var_0h_2;
| int16_t var_54h;
| r0 = arg1;
| r2 = arg3;
0x0000e968 svcmi 0xf0e92d | __asm ("svcmi 0xf0e92d");
0x0000e96c mov r7, r2 | r7 = r2;
0x0000e96e ldr r2, [pc, 0x1f8] |
0x0000e970 sub sp, 0x5c |
0x0000e972 mov r4, r0 | r4 = r0;
0x0000e974 add.w ip, sp, 0x40 |
0x0000e978 ldr r3, [pc, 0x1f0] | r3 = *(0xeb6c);
0x0000e97a mov.w sb, 0 | sb = 0;
0x0000e97e add r2, pc | r2 = 0x1d4ec;
0x0000e980 ldr.w fp, [pc, 0x1ec] |
0x0000e984 mov r6, sb | r6 = sb;
0x0000e986 mov r5, sb | r5 = sb;
0x0000e988 ldr r3, [r2, r3] |
0x0000e98a mov r8, sb | r8 = sb;
0x0000e98c add fp, pc | fp = 0x1d500;
0x0000e98e ldr.w sl, [pc, 0x1e4] |
0x0000e992 add.w lr, fp, 0x48 | lr += arg_48h;
0x0000e996 ldr r3, [r3] | r3 = *(0x1d4ec);
0x0000e998 str r3, [sp, 0x54] | var_54h = r3;
0x0000e99a mov.w r3, 0 | r3 = 0;
0x0000e99e ldr r3, [pc, 0x1d8] |
0x0000e9a0 strd sb, sb, [sp, 0x2c] | __asm ("strd sb, sb, [var_2ch]");
0x0000e9a4 add sl, pc | sl = 0x1d51e;
0x0000e9a6 add r3, pc | r3 = 0x1d524;
0x0000e9a8 str r3, [sp, 0x24] | var_24h = r3;
0x0000e9aa ldr r3, [pc, 0x1d0] |
0x0000e9ac add r3, pc | r3 = 0x1d52e;
0x0000e9ae str r3, [sp, 0x20] | var_20h = r3;
0x0000e9b0 ldm.w lr!, {r0, r1, r2, r3} | r0 = *(lr!);
| r1 = *((lr! + 4));
| r2 = *((lr! + 8));
| r3 = *((lr! + 12));
0x0000e9b4 stm.w ip!, {r0, r1, r2, r3} | *(ip!) = r0;
| *((ip! + 4)) = r1;
| *((ip! + 8)) = r2;
| *((ip! + 12)) = r3;
0x0000e9b8 add.w r0, fp, 0x10c | r0 += arg_10ch;
0x0000e9bc ldr.w r3, [lr] | r3 = *(lr);
0x0000e9c0 movs r2, 3 | r2 = 3;
0x0000e9c2 movw r1, 0x5b3 | r1 = 0x5b3;
0x0000e9c6 str.w r3, [ip] | __asm ("str.w r3, [ip]");
0x0000e9ca bl 0xec20 | fcn_0000ec20 (r0, r1, r2);
0x0000e9ce mov r2, sb | r2 = sb;
0x0000e9d0 movs r3, 0x50 | r3 = 0x50;
0x0000e9d2 mov r0, r7 | r0 = r7;
0x0000e9d4 mov sb, r4 | sb = r4;
0x0000e9d6 add r1, sp, 0x28 | r1 += var_28h;
0x0000e9d8 bl 0xa5f8 | fcn_0000a5f8 (r0, r1, r2, r3);
0x0000e9da mcr2 p8, 0, pc, c14, c9, 6 | __asm ("mcr2 p8, 0, pc, c14, c9, 6");
0x0000e9de adds r0, 0x20 | r0 += 0x20;
0x0000e9e0 mov r2, r7 | r2 = r7;
0x0000e9e2 mov r4, r2 | r4 = r2;
0x0000e9e4 ldr.w fp, [sp, 0x20] | fp = var_20h;
0x0000e9e6 add sp, 0x80 |
0x0000e9e8 ldr r2, [sp, 0x28] | r2 = var_28h;
0x0000e9ea mov r7, r0 | r7 = r0;
0x0000e9ec cmp r3, 0 |
| if (r3 == 0) {
0x0000e9ee beq.w 0xeb42 | goto label_5;
| }
| label_2:
0x0000e9f2 mov r1, r5 | r1 = r5;
0x0000e9f4 str r3, [sp, 0x18] | var_18h = r3;
0x0000e9f6 str r2, [sp, 0xc] | var_ch = r2;
0x0000e9f8 mov.w r3, -1 | r3 = -1;
0x0000e9fa adds r3, 0xff | r3 += 0xff;
0x0000e9fc movs r2, 1 | r2 = 1;
0x0000e9fe mov r0, r6 | r0 = r6;
0x0000ea00 strd r7, r4, [sp, 0x10] | __asm ("strd r7, r4, [var_10h]");
0x0000ea04 strd r7, r4, [sp, 4] | __asm ("strd r7, r4, [var_4h]");
0x0000ea08 str.w fp, [sp] | __asm ("str.w fp, [sp]");
0x0000ea0c blx 0x277c | r0 = fcn_0000277c ();
0x0000ea10 mov r5, r0 | r5 = r0;
| label_3:
0x0000ea12 eor r3, r8, 1 | r3 = r8 ^ 1;
0x0000ea16 cmp r5, 0 |
0x0000ea18 ite le |
| if (r5 > 0) {
0x0000ea1a movle r3, 0 | r3 = 0;
| }
| if (r5 <= 0) {
0x0000ea1c andgt r3, r3, 1 | r3 &= 1;
| }
0x0000ea20 cmp r3, 0 |
| if (r3 != 0) {
0x0000ea22 bne 0xeb10 | goto label_6;
| }
| label_0:
0x0000ea24 cmp.w r8, 0 |
| if (r8 == 0) {
0x0000ea28 beq.w 0xeb32 | goto label_7;
| }
0x0000ea2c ldr r2, [pc, 0x150] |
0x0000ea2e mov r3, r6 | r3 = r6;
0x0000ea30 mov.w r1, -1 | r1 = -1;
0x0000ea34 movs r0, 4 | r0 = 4;
0x0000ea36 mov r4, sb | r4 = sb;
0x0000ea38 movw sb, 0xd090 |
0x0000ea3c add r2, pc | r2 = 0x1d5c0;
0x0000ea3e movt sb, 3 | sb = 0x3d090;
0x0000ea42 bl 0x8960 | fcn_00008960 (r0, r1);
0x0000ea44 invalid |
0x0000ea48 add.w r8, sp, 0x2c | r8 += var_2ch;
0x0000ea4c ldm r3, {r0, r1, r2, r3} | r0 = *(r3);
| r1 = *((r3 + 4));
| r2 = *((r3 + 8));
| r3 = *((r3 + 12));
0x0000ea4e add r7, sp, 0x30 | r7 += var_30h;
0x0000ea50 add.w sl, sp, 0x34 | sl += var_34h;
0x0000ea54 stm.w sp, {r0, r1, r2, r3} | *(sp) = r0;
| *((sp + 4)) = r1;
| *((sp + 8)) = r2;
| *((sp + 12)) = r3;
0x0000ea58 mov r2, r5 | r2 = r5;
0x0000ea5a ldr r3, [sp, 0x40] | r3 = var_40h;
0x0000ea5c mov r1, r6 | r1 = r6;
0x0000ea5e ldr r0, [r4] | r0 = *(r4);
0x0000ea60 bl 0x7308 | fcn_00007308 (r0, r1, r2, r3);
0x0000ea64 ldr r0, [pc, 0x11c] |
0x0000ea66 mov r2, r6 | r2 = r6;
0x0000ea68 movw r1, 0x5e9 | r1 = 0x5e9;
0x0000ea6c add r0, pc | r0 = 0x1d5f4;
0x0000ea6e bl 0xf264 | fcn_0000f264 (r0, r1, r2);
0x0000ea72 add r0, sp, 0x38 | r0 += var_38h;
0x0000ea74 blx 0x2324 | fcn_00002324 ();
0x0000ea78 ldr r3, [sp, 0x38] | r3 = var_38h;
0x0000ea7a adds r3, 0xa | r3 += 0xa;
0x0000ea7c str r3, [sp, 0x38] | var_38h = r3;
0x0000ea7e b 0xea94 |
| while (r3 == 0) {
0x0000ea80 mov r0, sl | r0 = sl;
0x0000ea82 blx 0x2324 | fcn_00002324 ();
0x0000ea86 ldrd r2, r3, [sp, 0x34] | __asm ("ldrd r2, r3, [var_34h]");
0x0000ea8a cmp r2, r3 |
| if (r2 > r3) {
0x0000ea8c bgt 0xeac2 | goto label_8;
| }
0x0000ea8e mov r0, sb | r0 = sb;
0x0000ea90 blx 0x240c | strcpy (r0, r1)
0x0000ea94 mov r3, r8 | r3 = r8;
0x0000ea96 ldr r0, [r4] | r0 = *(r4);
0x0000ea98 mov r2, r7 | r2 = r7;
0x0000ea9a movs r1, 0xc | r1 = 0xc;
0x0000ea9c bl 0x7138 | fcn_00007138 (r0, r1, r2, r3);
0x0000eaa0 ldr r3, [sp, 0x30] | r3 = var_30h;
0x0000eaa2 mov r5, r0 | r5 = r0;
0x0000eaa4 cmp r3, 0 |
0x0000eaa6 beq 0xea80 |
| }
0x0000eaa8 ldr r1, [pc, 0xdc] |
0x0000eaaa movs r2, 0xc | r2 = 0xc;
0x0000eaac add r1, pc | r1 = 0x1d638;
0x0000eaae blx 0x271c | r0 = fcn_0000271c ();
| if (r0 != 0) {
0x0000eab2 cbz r0, 0xeac8 |
0x0000eab4 ldr r1, [pc, 0xd4] |
0x0000eab6 movs r2, 0xc | r2 = 0xc;
0x0000eab8 mov r0, r5 | r0 = r5;
0x0000eaba add r1, pc | r1 = 0x1d64a;
0x0000eabc blx 0x271c | r0 = fcn_0000271c ();
| if (r0 == 0) {
0x0000eac0 cbz r0, 0xeac8 | goto label_9;
| }
| label_8:
0x0000eac2 mov.w r3, -1 | r3 = -1;
0x0000eac6 str r3, [sp, 0x2c] | var_2ch = r3;
| }
| label_9:
0x0000eac8 add r5, sp, 0x3c | r5 += var_3ch;
0x0000eaca movs r3, 1 | r3 = 1;
| label_4:
0x0000eacc str r3, [sp, 0x30] | var_30h = r3;
| do {
0x0000eace movs r1, 1 | r1 = 1;
0x0000ead0 ldr r0, [r4] | r0 = *(r4);
0x0000ead2 mov r3, r5 | r3 = r5;
0x0000ead4 mov r2, r7 | r2 = r7;
0x0000ead6 bl 0x7138 | fcn_00007138 (r0, r1, r2, r3);
0x0000eada ldr r1, [sp, 0x30] | r1 = var_30h;
0x0000eadc cmp r1, 0 |
0x0000eade bne 0xeace |
| } while (r1 != 0);
| label_1:
0x0000eae0 ldr r0, [pc, 0xac] |
0x0000eae2 movs r3, 3 | r3 = 3;
0x0000eae4 mov r2, r8 | r2 = r8;
0x0000eae6 movw r1, 0x60e | r1 = 0x60e;
0x0000eaea add r0, pc |
0x0000eaec add.w r0, r0, 0x10c | r0 = 0x1d78a;
0x0000eaf0 bl 0xecc0 | fcn_0000ecc0 (r0, r1, r2, r3);
0x0000eaf4 ldr r2, [pc, 0x9c] |
0x0000eaf6 ldr r3, [pc, 0x74] | r3 = *(0xeb6e);
0x0000eaf8 ldr r0, [sp, 0x2c] | r0 = var_2ch;
0x0000eafa add r2, pc | r2 = 0x1d692;
0x0000eafc ldr r3, [r2, r3] | r3 = *(0x1d692);
0x0000eafe ldr r2, [r3] | r2 = *(0x1d692);
0x0000eb00 ldr r3, [sp, 0x54] | r3 = var_54h;
0x0000eb02 eors r2, r3 | r2 ^= r3;
0x0000eb04 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0000eb08 bne 0xeb62 | goto label_10;
| }
0x0000eb0a add sp, 0x5c |
0x0000eb0c pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_6:
0x0000eb10 adds r5, 1 | r5++;
0x0000eb12 movw r1, 0x5de | r1 = 0x5de;
0x0000eb16 mov r2, r5 | r2 = r5;
0x0000eb18 mov r0, sl | r0 = sl;
0x0000eb1a bl 0xf12c | r0 = fcn_0000f12c (r0, r1, r2);
0x0000eb1e mov r6, r0 | r6 = r0;
0x0000eb20 cmp r0, 0 |
| if (r0 != 0) {
0x0000eb22 bne.w 0xea24 | goto label_0;
| }
0x0000eb26 mvn r3, 0x62 | r3 = ~0x62;
0x0000eb2a add.w r8, sp, 0x2c | r8 += var_2ch;
0x0000eb2e str r3, [sp, 0x2c] | var_2ch = r3;
0x0000eb30 b 0xeae0 | goto label_1;
| label_7:
0x0000eb32 ldr.w r3, [sb, 0x20] | r3 = *((sb + 0x20));
0x0000eb36 mov.w r8, 1 | r8 = 1;
0x0000eb3a ldr r2, [sp, 0x28] | r2 = var_28h;
0x0000eb3c cmp r3, 0 |
| if (r3 != 0) {
0x0000eb3e bne.w 0xe9f2 | goto label_2;
| }
0x0000eb40 add r7, sp, 0x160 | r7 = sp + 0x160;
| label_5:
0x0000eb42 ldr r3, [sp, 0x24] | r3 = var_24h;
0x0000eb44 mov r1, r5 | r1 = r5;
0x0000eb46 str r2, [sp, 0xc] | var_ch = r2;
0x0000eb48 mov r0, r6 | r0 = r6;
0x0000eb4a movs r2, 1 | r2 = 1;
0x0000eb4c strd r7, r4, [sp, 0x10] | __asm ("strd r7, r4, [var_10h]");
0x0000eb50 str r3, [sp] | *(sp) = r3;
0x0000eb52 mov.w r3, -1 | r3 = -1;
0x0000eb56 strd r7, r4, [sp, 4] | __asm ("strd r7, r4, [var_4h]");
0x0000eb5a blx 0x277c | r0 = fcn_0000277c ();
0x0000eb5e mov r5, r0 | r5 = r0;
0x0000eb60 b 0xea12 | goto label_3;
| label_10:
0x0000eb62 blx 0x2370 | pthread_condattr_init ();
0x0000eb66 nop |
| if (r2 < 1) {
0x0000eb68 bmi 0xeb98 | void (*0xeb98)() ();
| }
0x0000eb6a movs r1, r0 | r1 = r0;
0x0000eb6c lsls r0, r7, 7 | r0 = r7 << 7;
0x0000eb6e movs r0, r0 |
0x0000eb70 add r3, sp, 0x360 | r3 += arg_360h;
0x0000eb72 movs r0, r0 |
0x0000eb74 add r0, sp, 0x2b0 | r0 += arg_2b0h;
0x0000eb76 movs r0, r0 |
0x0000eb78 add r3, sp, 0x148 | r3 += arg_148h;
0x0000eb7a movs r0, r0 |
0x0000eb7c add r3, sp, 0x10 | r3 += var_10h;
0x0000eb7e movs r0, r0 |
0x0000eb80 add r2, sp, 0x3a0 | r2 += arg_3a0h;
0x0000eb82 movs r0, r0 |
0x0000eb84 adr r7, 0x390 | r7 = 0x390;
0x0000eb86 movs r0, r0 |
0x0000eb88 add r2, sp, 0x260 | r2 += arg_260h;
0x0000eb8a movs r0, r0 |
0x0000eb8c add r2, sp, 0x268 | r2 += arg_268h;
0x0000eb8e movs r0, r0 |
0x0000eb90 add r2, sp, 0x1e8 | r2 += arg_1e8h;
0x0000eb92 movs r0, r0 |
| if (r0 >= r0) {
0x0000eb94 bhs 0xeacc | goto label_4;
| }
0x0000eb96 movs r1, r0 | r1 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libpaho-mqtt3a.so.1.3.9 @ 0x1223c */
| #include <stdint.h>
|
; (fcn) fcn.0001223c () | void fcn_0001223c (int16_t arg_108h, int16_t arg_358h, int16_t arg1) {
| int16_t var_0h;
| int32_t var_4h;
| int32_t var_4h_2;
| int16_t var_14h;
| int16_t var_18h;
| int16_t var_24h;
| r0 = arg1;
0x0001223c ldr r3, [pc, 0xc8] |
0x0001223e movs r2, 3 | r2 = 3;
0x00012240 ldr.w ip, [pc, 0xc8] |
0x00012244 movs r1, 0xe4 | r1 = 0xe4;
0x00012246 push {r4, r5, lr} |
0x00012248 mov r4, r0 | r4 = r0;
0x0001224a add r3, pc | r3 = 0x24556;
0x0001224c sub sp, 0x2c |
0x0001224e add.w r0, r3, 0x64 | r0 = r3 + 0x64;
0x00012252 add ip, pc | ip = 0x24562;
0x00012254 ldr r3, [pc, 0xb8] | r3 = *(0x12310);
0x00012256 movs r5, 0 | r5 = 0;
0x00012258 ldr.w r3, [ip, r3] |
0x0001225c ldr r3, [r3] | r3 = *(0x24562);
0x0001225e str r3, [sp, 0x24] | var_24h = r3;
0x00012260 mov.w r3, 0 | r3 = 0;
0x00012264 str r5, [sp, 0x14] | var_14h = r5;
0x00012266 bl 0xec20 | fcn_0000ec20 (r0, r1, r2);
0x0001226a ldr r3, [r4, 0x50] | r3 = *((r4 + 0x50));
0x0001226c ldr r0, [r4, 0x54] | r0 = *((r4 + 0x54));
0x0001226e ldr r3, [r3, 0xc] | r3 = *((r3 + 0xc));
0x00012270 ldr.w r3, [r3, 0x8c] | r3 = *((r3 + 0x8c));
0x00012274 cmp r3, 4 |
| if (r3 <= 4) {
0x00012276 ble 0x122e2 | goto label_2;
| }
0x00012278 ldr r2, [pc, 0x98] |
0x0001227a ldr r1, [pc, 0x9c] |
0x0001227c add r2, pc | r2 = 0x24594;
0x0001227e add r1, pc | r1 = 0x2459c;
| label_0:
0x00012280 movs r3, 0xb | r3 = 0xb;
0x00012282 add r5, sp, 0x18 | r5 += var_18h;
0x00012284 strd r2, r0, [sp, 4] | __asm ("strd r2, r0, [var_4h]");
0x00012288 movs r2, 1 | r2 = 1;
0x0001228a str r1, [sp] | *(sp) = r1;
0x0001228c mov r0, r5 | r0 = r5;
0x0001228e mov r1, r3 | r1 = r3;
0x00012290 blx 0x277c | r0 = fcn_0000277c ();
0x00012294 cmp r0, 0xa |
| if (r0 > 0xa) {
0x00012296 bgt 0x122ec | goto label_3;
| }
0x00012298 ldr r3, [r4, 0x50] | r3 = *((r4 + 0x50));
0x0001229a mov r1, r5 | r1 = r5;
0x0001229c ldr r3, [r3, 0xc] | r3 = *((r3 + 0xc));
0x0001229e ldrd r0, r2, [r3, 0x70] | __asm ("ldrd r0, r2, [r3, 0x70]");
0x000122a2 ldr r3, [r2, 0x14] | r3 = *((r2 + 0x14));
0x000122a4 blx r3 | uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
0x000122a6 str r0, [sp, 0x14] | var_14h = r0;
0x000122a8 cbnz r0, 0x122d2 |
| while (1) {
| label_1:
0x000122aa ldr r0, [pc, 0x70] |
0x000122ac movs r3, 3 | r3 = 3;
0x000122ae add r2, sp, 0x14 | r2 += var_14h;
0x000122b0 movs r1, 0xf0 | r1 = 0xf0;
0x000122b2 add r0, pc | r0 = 0x245d4;
0x000122b4 adds r0, 0x64 | r0 += 0x64;
0x000122b6 bl 0xecc0 | fcn_0000ecc0 (r0, r1, r2, r3);
0x000122ba ldr r2, [pc, 0x64] |
0x000122bc ldr r3, [pc, 0x50] | r3 = *(0x12310);
0x000122be add r2, pc | r2 = 0x245e4;
0x000122c0 ldr r3, [r2, r3] | r3 = *(0x245e4);
0x000122c2 ldr r2, [r3] | r2 = *(0x245e4);
0x000122c4 ldr r3, [sp, 0x24] | r3 = var_24h;
0x000122c6 eors r2, r3 | r2 ^= r3;
0x000122c8 mov.w r3, 0 | r3 = 0;
0x000122ca lsls r0, r0, 0xc | r0 <<= 0xc;
| if (r0 != r0) {
0x000122cc bne 0x12302 | goto label_4;
| }
0x000122ce add sp, 0x2c |
0x000122d0 pop {r4, r5, pc} |
0x000122d2 ldr r2, [pc, 0x50] |
0x000122d4 mov r3, r0 | r3 = r0;
0x000122d6 movs r1, 0 | r1 = 0;
0x000122d8 movs r0, 5 | r0 = 5;
0x000122da add r2, pc | r2 = 0x24604;
0x000122dc bl 0x8960 | fcn_00008960 (r0, r1);
0x000122e0 b 0x122aa |
| }
| label_2:
0x000122e2 ldr r2, [pc, 0x44] |
0x000122e4 ldr r1, [pc, 0x44] |
0x000122e6 add r2, pc | r2 = 0x24614;
0x000122e8 add r1, pc | r1 = 0x24618;
0x000122ea b 0x12280 | goto label_0;
| label_3:
0x000122ec ldr r2, [pc, 0x40] |
0x000122ee mvn r4, 1 | r4 = ~1;
0x000122f2 mov r3, r0 | r3 = r0;
0x000122f4 movs r1, 0 | r1 = 0;
0x000122f6 movs r0, 5 | r0 = 5;
0x000122f8 str r4, [sp, 0x14] | var_14h = r4;
0x000122fa add r2, pc | r2 = 0x2462e;
0x000122fc bl 0x8960 | fcn_00008960 (r0, r1);
0x00012300 b 0x122aa | goto label_1;
| label_4:
0x00012302 blx 0x2370 | pthread_condattr_init ();
0x00012306 nop |
0x00012308 ldrh r2, [r0, 2] | r2 = *((r0 + 2));
0x0001230a movs r0, r0 |
0x0001230c ldr r3, [sp, 0x108] | r3 = *(arg_108h);
0x0001230e movs r1, r0 | r1 = r0;
0x00012310 lsls r0, r7, 7 | r0 = r7 << 7;
0x00012312 movs r0, r0 |
0x00012314 ldrb r0, [r1, 0x1a] | r0 = *((r1 + 0x1a));
0x00012316 movs r0, r0 |
0x00012318 ldrsh r6, [r1, r4] | r6 = *((r1 + r4));
0x0001231a movs r0, r0 |
0x0001231c strh r2, [r3, 0x3e] | *((r3 + 0x3e)) = r2;
0x0001231e movs r0, r0 |
0x00012320 ldr r2, [sp, 0x358] | r2 = *(arg_358h);
0x00012322 movs r1, r0 | r1 = r0;
0x00012324 ldrb r2, [r6, 0x18] | r2 = *((r6 + 0x18));
0x00012326 movs r0, r0 |
0x00012328 ldrb r2, [r4, 0x18] | r2 = *((r4 + 0x18));
0x0001232a movs r0, r0 |
0x0001232c ldrsh r4, [r4, r2] | r4 = *((r4 + r2));
0x0001232e movs r0, r0 |
0x00012330 ldrsh r2, [r4, r0] | r2 = *((r4 + r0));
0x00012332 movs r0, r0 |
0x00012334 push {r4, r5, r6, lr} |
0x00012336 movs r2, 3 | r2 = 3;
0x00012338 ldr r4, [pc, 0x28] |
0x0001233a movs r1, 0x68 | r1 = 0x68;
0x0001233c mov r5, r0 | r5 = r0;
0x0001233e add r4, pc | r4 = 0x246a6;
0x00012340 adds r4, 0x80 | r4 += 0x80;
0x00012342 mov r0, r4 | r0 = r4;
0x00012344 bl 0xec20 | fcn_0000ec20 (r0, r1, r2);
0x00012348 mov.w r0, 0x3e8 | r0 = 0x3e8;
0x0001234c mul r0, r5, r0 | r0 = r5 * r0;
0x00012350 blx 0x240c | strcpy (r0, r1)
0x00012354 mov r0, r4 | r0 = r4;
0x00012356 movs r3, 3 | r3 = 3;
0x00012358 pop.w {r4, r5, r6, lr} |
0x0001235c movs r2, 0 | r2 = 0;
0x0001235e movs r1, 0x6e | r1 = 0x6e;
0x00012360 b.w 0xecc0 | return void (*0xecc0)() ();
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libpaho-mqtt3a.so.1.3.9 @ 0x124bc */
| #include <stdint.h>
|
; (fcn) fcn.000124bc () | void fcn_000124bc (void * ptr, int16_t arg_78h, int16_t arg_270h, int16_t arg_320h) {
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_ch;
| int16_t var_28h;
0x000124bc ldr r0, [pc, 0x1f8] |
0x000124be movs r2, 3 | r2 = 3;
0x000124c0 ldr r3, [pc, 0x1f8] | r3 = *(0x126bc);
0x000124c2 movs r1, 0xc7 | r1 = 0xc7;
0x000124c4 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x000124c8 sub sp, 0x14 |
0x000124ca ldr r5, [pc, 0x1f4] |
0x000124cc add r0, pc | r0 = 0x24b88;
0x000124ce movs r4, 0 | r4 = 0;
0x000124d0 ldr r3, [r0, r3] |
0x000124d2 add r5, pc | r5 = 0x24b98;
0x000124d4 ldr r6, [pc, 0x1ec] |
0x000124d6 add.w r0, r5, 0x90 | r0 = r5 + 0x90;
0x000124da ldr r3, [r3] | r3 = *(0x24b88);
0x000124dc str r3, [sp, 0xc] | var_ch = r3;
0x000124de mov.w r3, 0 | r3 = 0;
0x000124e2 bl 0xec20 | fcn_0000ec20 (r0, r1, r2);
0x000124e6 movs r2, 3 | r2 = 3;
0x000124e8 movw r1, 0x8f2 | r1 = 0x8f2;
0x000124ec add.w r0, r5, 0xa4 | r0 = r5 + 0xa4;
0x000124f0 str r4, [sp, 4] | var_4h = r4;
0x000124f2 bl 0xec20 | fcn_0000ec20 (r0, r1, r2);
0x000124f6 ldr r2, [pc, 0x1d0] | r2 = *(0x126ca);
0x000124f8 add r6, pc | r6 = 0x24bc0;
0x000124fa ldr r3, [pc, 0x1d0] | r3 = *(0x126ce);
0x000124fc ldr.w r8, [r6, r2] | r8 = *(0x24bc0);
0x00012500 ldr r7, [r6, r3] | r7 = *(0x24bc0);
0x00012502 ldr.w r3, [r8] | r3 = *(0x24bc0);
0x00012506 ldr r2, [r7] | r2 = *(0x24bc0);
0x00012508 orrs r3, r2 | r3 |= r2;
| if (r3 == r2) {
0x0001250a beq 0x12556 | goto label_3;
| }
0x0001250c ldr r3, [pc, 0x1c0] | r3 = *(0x126d0);
0x0001250e add r5, sp, 8 | r5 += var_8h;
0x00012510 str r4, [sp, 8] | var_8h = r4;
0x00012512 ldr.w sb, [r6, r3] | sb = *((r6 + r3));
0x00012516 ldr.w r0, [sb] | r0 = *(sb);
| if (r0 != 0) {
0x0001251a cbnz r0, 0x12524 | goto label_6;
| }
0x0001251c b 0x1259e | goto label_7;
| do {
| label_1:
0x0001251e adds r4, 1 | r4++;
| label_0:
0x00012520 ldr.w r0, [sb] | r0 = *(sb);
| label_6:
0x00012524 mov r1, r5 | r1 = r5;
0x00012526 bl 0xc77c | r0 = fcn_0000c77c (r0, r1);
| if (r0 == 0) {
0x0001252a cbz r0, 0x12544 | goto label_8;
| }
0x0001252c ldr r3, [sp, 8] | r3 = var_8h;
0x0001252e ldr r3, [r3, 8] | r3 = *((r3 + 8));
0x00012530 ldr r2, [r3, 0xc] | r2 = *((r3 + 0xc));
0x00012532 ldrh r3, [r2, 0x10] | r3 = *((r2 + 0x10));
0x00012534 sbfx r3, r3, 6, 4 | __asm ("sbfx r3, r3, 6, 4");
0x00012536 asrs r3, r0, 0xe | r3 = r0 >> 0xe;
0x00012538 cmp r3, 0 |
0x0001253a bgt 0x1251e |
| } while (r3 > 0);
0x0001253c ldrb r3, [r2, 0x10] | r3 = *((r2 + 0x10));
0x0001253e lsls r3, r3, 0x1d | r3 <<= 0x1d;
| if (r3 >= r3) {
0x00012540 bpl 0x12520 | goto label_0;
| }
0x00012542 b 0x1251e | goto label_1;
| label_8:
0x00012544 ldr r2, [pc, 0x18c] |
0x00012546 mov r3, r4 | r3 = r4;
0x00012548 mov.w r1, -1 | r1 = -1;
0x0001254c movs r0, 3 | r0 = 3;
0x0001254e add r2, pc | r2 = 0x24c26;
0x00012550 bl 0x8960 | fcn_00008960 (r0, r1);
| if (r4 != 0) {
0x00012554 cbz r4, 0x125ae |
| label_3:
0x00012556 ldr r0, [pc, 0x180] |
0x00012558 movs r3, 3 | r3 = 3;
0x0001255a add r2, sp, 4 | r2 += var_4h;
0x0001255c movw r1, 0x915 | r1 = 0x915;
0x00012560 add r0, pc | r0 = 0x24c3e;
0x00012562 adds r0, 0xa4 | r0 += 0xa4;
0x00012564 bl 0xecc0 | fcn_0000ecc0 (r0, r1, r2, r3);
0x00012568 ldr r3, [pc, 0x170] | r3 = *(0x126dc);
0x0001256a ldr r7, [r6, r3] | r7 = *((r6 + r3));
0x0001256c ldr r3, [r7] | r3 = *(r7);
0x0001256e cmp r3, 0 |
| if (r3 != 0) {
0x00012570 bne 0x1265c | goto label_9;
| }
| label_5:
0x00012572 ldr r2, [pc, 0x16c] |
0x00012574 ldr r3, [pc, 0x144] | r3 = *(0x126bc);
0x00012576 add r2, pc | r2 = 0x24c5c;
0x00012578 ldr r3, [r2, r3] | r3 = *(0x24c5c);
0x0001257a ldr r2, [r3] | r2 = *(0x24c5c);
0x0001257c ldr r3, [sp, 0xc] | r3 = var_ch;
0x0001257e eors r2, r3 | r2 ^= r3;
0x00012580 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00012584 bne.w 0x126b2 | goto label_10;
| }
0x00012588 ldr r0, [pc, 0x158] |
0x0001258a movs r3, 3 | r3 = 3;
0x0001258c movs r2, 0 | r2 = 0;
0x0001258e movs r1, 0xd9 | r1 = 0xd9;
0x00012590 add r0, pc | r0 = 0x24c78;
0x00012592 adds r0, 0x90 | r0 += 0x90;
0x00012594 add sp, 0x14 |
0x00012596 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0001259a b.w 0xecc0 | void (*0xecc0)() ();
| label_7:
0x0001259e ldr r2, [pc, 0x148] |
0x000125a0 mov r3, r0 | r3 = r0;
0x000125a2 mov.w r1, -1 | r1 = -1;
0x000125a6 movs r0, 3 | r0 = 3;
0x000125a8 add r2, pc | r2 = 0x24c96;
0x000125aa bl 0x8960 | fcn_00008960 (r0, r1);
| }
0x000125ae ldr r3, [pc, 0x13c] | r3 = *(0x126ee);
0x000125b0 movs r4, 0x64 | r4 = 0x64;
0x000125b2 ldr r5, [pc, 0x13c] |
0x000125b4 movs r2, 1 | r2 = 1;
0x000125b6 ldr.w sb, [pc, 0x13c] |
0x000125ba ldr.w sl, [r6, r3] | sl = *((r6 + r3));
0x000125be add r5, pc | r5 = 0x24cb4;
0x000125c0 adds r5, 0x80 | r5 += 0x80;
0x000125c2 add sb, pc | sb = 0x24cbc;
0x000125c4 str.w r2, [sl] | __asm ("str.w r2, [sl]");
| do {
0x000125c8 ldr.w r3, [r8] | r3 = *(r8);
0x000125cc ldr r2, [r7] | r2 = *(r7);
0x000125ce orrs r3, r2 | r3 |= r2;
| if (r3 == r2) {
0x000125d0 beq 0x1263e | goto label_11;
| }
| label_2:
0x000125d2 subs r4, 1 | r4--;
| if (r4 == 1) {
0x000125d4 beq 0x1263e | goto label_11;
| }
0x000125d6 ldr r3, [pc, 0x120] | r3 = *(0x126fa);
0x000125d8 ldr.w fp, [r6, r3] | fp = *((r6 + r3));
0x000125dc ldr.w r0, [fp] | r0 = *(fp);
0x000125e0 blx 0x2614 | r0 = fcn_00002614 ();
| if (r0 != 0) {
0x000125e4 cbnz r0, 0x1264a | goto label_12;
| }
| label_4:
0x000125e6 ldr r2, [pc, 0x114] |
0x000125e8 mov.w r1, -1 | r1 = -1;
0x000125ec movs r0, 3 | r0 = 3;
0x000125ee add r2, pc | r2 = 0x24cf0;
0x000125f0 bl 0x8960 | fcn_00008960 (r0, r1);
0x000125f4 movs r2, 3 | r2 = 3;
0x000125f6 movs r1, 0x68 | r1 = 0x68;
0x000125f8 mov r0, r5 | r0 = r5;
0x000125fa bl 0xec20 | fcn_0000ec20 (r0, r1, r2);
0x000125fc invalid |
0x00012600 str r0, [r4, 8] |
0x00012602 movt r0, 1 | r0 = 0xNaN;
0x00012606 blx 0x240c | strcpy (r0, r1)
0x0001260a mov r0, r5 | r0 = r5;
0x0001260c movs r3, 3 | r3 = 3;
0x0001260e movs r2, 0 | r2 = 0;
0x00012610 movs r1, 0x6e | r1 = 0x6e;
0x00012612 bl 0xecc0 | fcn_0000ecc0 (r0, r1, r2, r3);
0x00012616 ldr.w r0, [fp] | r0 = *(fp);
0x0001261a blx 0x23dc | r0 = fwrite (r0, r1, r2, r3);
0x0001261e cmp r0, 0 |
0x00012620 beq 0x125c8 |
| } while (r0 == 0);
0x00012622 blx 0x2490 | localtime (r0);
0x00012626 ldr r2, [pc, 0xd8] |
0x00012628 mov r3, r0 | r3 = r0;
0x0001262a movs r1, 0 | r1 = 0;
0x0001262c movs r0, 5 | r0 = 5;
0x0001262e add r2, pc | r2 = 0x24d34;
0x00012630 bl 0x8960 | fcn_00008960 (r0, r1);
0x00012634 ldr.w r3, [r8] | r3 = *(r8);
0x00012638 ldr r2, [r7] | r2 = *(r7);
0x0001263a orrs r3, r2 | r3 |= r2;
| if (r3 != r2) {
0x0001263c bne 0x125d2 | goto label_2;
| }
| label_11:
0x0001263e movs r2, 1 | r2 = 1;
0x00012640 movs r3, 0 | r3 = 0;
0x00012642 str r2, [sp, 4] | var_4h = r2;
0x00012644 str.w r3, [sl] | __asm ("str.w r3, [sl]");
0x00012648 b 0x12556 | goto label_3;
| label_12:
0x0001264a blx 0x2490 | localtime (r0);
0x0001264e mov r2, sb | r2 = sb;
0x00012650 mov r3, r0 | r3 = r0;
0x00012652 movs r1, 0 | r1 = 0;
0x00012654 movs r0, 5 | r0 = 5;
0x00012656 bl 0x8960 | fcn_00008960 (r0, r1);
0x0001265a b 0x125e6 | goto label_4;
| label_9:
0x0001265c ldr r3, [pc, 0xa4] |
0x0001265e movs r2, 0 | r2 = 0;
0x00012660 str r2, [sp, 8] | var_8h = r2;
0x00012662 add r5, sp, 8 | r5 += var_8h;
0x00012664 ldr r3, [r6, r3] | r3 = *((r6 + r3));
0x00012666 ldr r3, [r3] | r3 = *(0x12704);
0x00012668 ldr r0, [r3, 4] | r0 = *(0x12708);
0x0001266a bl 0xc720 | fcn_0000c720 (r0);
0x0001266e ldr r3, [pc, 0x60] | r3 = *(0x126d2);
0x00012670 ldr.w sb, [r6, r3] | sb = *((r6 + r3));
0x00012674 ldr.w r0, [sb] | r0 = *(sb);
0x00012678 bl 0xc720 | fcn_0000c720 (r0);
0x0001267c ldr r3, [pc, 0x88] | r3 = *(0x12708);
0x0001267e ldr r6, [r6, r3] | r6 = *((r6 + r3));
0x00012680 b 0x1268a |
| while (r0 != 0) {
0x00012682 ldr r3, [sp, 8] | r3 = var_8h;
0x00012684 ldr r0, [r3, 8] | r0 = *((r3 + 8));
0x00012686 bl 0x11bf4 | fcn_00011bf4 (r0);
0x0001268a ldr r0, [r6] | r0 = *(r6);
0x0001268c mov r1, r5 | r1 = r5;
0x0001268e bl 0xc77c | r0 = fcn_0000c77c (r0, r1);
0x00012692 mov r4, r0 | r4 = r0;
0x00012694 cmp r0, 0 |
0x00012696 bne 0x12682 |
| }
0x00012698 ldr r0, [r6] | r0 = *(r6);
0x0001269a bl 0xc720 | fcn_0000c720 (r0);
0x0001269e str.w r4, [sb] | __asm ("str.w r4, [sb]");
0x000126a2 bl 0xe5d8 | fcn_0000e5d8 ();
0x000126a6 bl 0xf47c | fcn_0000f47c ();
0x000126aa bl 0x88d8 | fcn_000088d8 ();
0x000126ae str r4, [r7] | *(r7) = r4;
0x000126b0 b 0x12572 | goto label_5;
| label_10:
0x000126b2 blx 0x2370 | pthread_condattr_init ();
0x000126b6 nop |
0x000126b8 ldr r0, [sp, 0x320] | r0 = *(arg_320h);
0x000126ba movs r1, r0 | r1 = r0;
0x000126bc lsls r0, r7, 7 | r0 = r7 << 7;
0x000126be movs r0, r0 |
0x000126c0 strh r2, [r7, 0x2c] | *((r7 + 0x2c)) = r2;
0x000126c2 movs r0, r0 |
0x000126c4 ldr r0, [sp, 0x270] | r0 = *(arg_270h);
0x000126c6 movs r1, r0 | r1 = r0;
0x000126c8 lsls r4, r3, 9 | r4 = r3 << 9;
0x000126ca movs r0, r0 |
0x000126cc lsls r4, r0, 9 | r4 = r0 << 9;
0x000126ce movs r0, r0 |
0x000126d0 lsls r4, r7, 7 | r4 = r7 << 7;
0x000126d2 movs r0, r0 |
0x000126d4 ldrb r6, [r3, 0x10] | r6 = *((r3 + 0x10));
0x000126d6 movs r0, r0 |
0x000126d8 strh r4, [r5, 0x28] | var_28h = r4;
0x000126da movs r0, r0 |
0x000126dc lsls r4, r4, 8 | r4 <<= 8;
0x000126de movs r0, r0 |
0x000126e0 ldr r0, [sp, 0x78] | r0 = *(arg_78h);
0x000126e2 movs r1, r0 | r1 = r0;
0x000126e4 strh r4, [r7, 0x26] | *((r7 + 0x26)) = r4;
0x000126e6 movs r0, r0 |
0x000126e8 ldrb r4, [r0, 0xf] | r4 = *((r0 + 0xf));
0x000126ea movs r0, r0 |
0x000126ec lsls r4, r7, 8 | r4 = r7 << 8;
0x000126ee movs r0, r0 |
0x000126f0 strh r6, [r1, 0x26] | *((r1 + 0x26)) = r6;
0x000126f2 movs r0, r0 |
0x000126f4 ldrb r6, [r1, 0xe] | r6 = *((r1 + 0xe));
0x000126f6 movs r0, r0 |
0x000126f8 lsls r4, r6, 7 | r4 = r6 << 7;
0x000126fa movs r0, r0 |
0x000126fc ldrb r2, [r2, 0xe] | r2 = *((r2 + 0xe));
0x000126fe movs r0, r0 |
0x00012700 ldrb r2, [r1, 0xc] | r2 = *((r1 + 0xc));
0x00012702 movs r0, r0 |
0x00012704 lsls r4, r3, 8 | r4 = r3 << 8;
0x00012706 movs r0, r0 |
0x00012708 lsls r4, r6, 8 | r4 = r6 << 8;
0x0001270a movs r0, r0 |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libpaho-mqtt3a.so.1.3.9 @ 0x136e8 */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) fcn.000136e8 () | void fcn_000136e8 (void * ptr, int16_t arg_e0h, int16_t arg_e4h, int16_t arg1) {
| int16_t var_0h_2;
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_14h;
| int16_t var_18h;
| int16_t var_1ch;
| 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;
| int16_t var_40h;
| int16_t var_44h;
| int16_t var_48h;
| int16_t var_50h;
| int16_t var_64h;
| int16_t var_68h;
| int16_t var_6ch;
| int16_t var_70h;
| int16_t var_74h;
| int16_t var_78h;
| int16_t var_7ch;
| int16_t var_80h;
| int16_t var_90h;
| int16_t var_94h;
| int16_t var_98h;
| int16_t var_9ch;
| int16_t var_a0h;
| int16_t var_4ch;
| int16_t var_a8h;
| int16_t var_b0h;
| int16_t var_b4h;
| int16_t var_b8h;
| int16_t var_bch;
| int16_t var_c0h;
| int16_t var_c4h;
| r0 = arg1;
0x000136e8 svcmi 0xf0e92d | __asm ("svcmi 0xf0e92d");
0x000136ec mov r5, r0 | r5 = r0;
0x000136ee ldr r0, [pc, 0x1e8] |
0x000136f0 sub sp, 0x34 |
0x000136f2 movs r6, 0 | r6 = 0;
0x000136f4 movs r2, 3 | r2 = 3;
0x000136f6 ldr r3, [pc, 0x1e4] | r3 = *(0x138de);
0x000136f8 movw r1, 0x95d | r1 = 0x95d;
0x000136fc ldr r4, [pc, 0x1e0] |
0x000136fe add r0, pc | r0 = 0x26fdc;
0x00013700 ldr.w sl, [pc, 0x1e0] |
0x00013704 ldr r3, [r0, r3] |
0x00013706 add r4, pc | r4 = 0x26fea;
0x00013708 add.w r0, r4, 0x1a4 | r0 = r4 + 0x1a4;
0x0001370c add sl, pc | sl = 0x26ff4;
0x0001370e ldr r3, [r3] | r3 = *(0x26fdc);
0x00013710 str r3, [sp, 0x2c] | var_2ch = r3;
0x00013712 mov.w r3, 0 | r3 = 0;
0x00013716 str r6, [sp, 0x1c] | var_1ch = r6;
0x00013718 bl 0xec20 | fcn_0000ec20 (r0, r1, r2);
0x0001371c movs r2, 3 | r2 = 3;
0x0001371e add.w r0, r4, 0x1bc | r0 = r4 + 0x1bc;
0x00013722 movw r1, 0x2da | r1 = 0x2da;
0x00013726 str r6, [sp, 0x20] | var_20h = r6;
0x00013728 bl 0xec20 | fcn_0000ec20 (r0, r1, r2);
0x0001372c ldr r3, [r5, 0x74] | r3 = *((r5 + 0x74));
0x0001372e cmp r3, 0 |
| if (r3 == 0) {
0x00013730 beq 0x137e2 | goto label_53;
| }
0x00013732 ldr r3, [r3, 0x18] | r3 = *((r3 + 0x18));
0x00013734 add r2, sp, 0x28 | r2 += var_28h;
0x00013736 ldr r0, [r5, 0x70] | r0 = *((r5 + 0x70));
0x00013738 add r1, sp, 0x24 | r1 += var_24h;
0x0001373a blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x0001373c mov r7, r0 | r7 = r0;
0x0001373e str r0, [sp, 0x20] | var_20h = r0;
0x00013740 cmp r0, 0 |
| if (r0 != 0) {
0x00013742 bne 0x137e2 | goto label_53;
| }
0x00013744 ldr r3, [pc, 0x1a0] |
0x00013746 mov r6, r0 | r6 = r0;
0x00013748 ldr r1, [pc, 0x1a0] |
0x0001374a ldr.w fp, [pc, 0x1a4] |
0x0001374e add r3, pc | r3 = 0x2703a;
0x00013750 ldr r2, [sp, 0x24] | r2 = var_24h;
0x00013752 add r1, pc | r1 = 0x27042;
0x00013754 strd r1, sl, [sp, 0xc] | __asm ("strd r1, sl, [sp, 0xc]");
0x00013758 add fp, pc | fp = 0x2704e;
0x0001375a mov sl, r3 | sl = r3;
0x0001375c b 0x13794 |
| while (r8 == 0x73) {
0x0001375e ldrb r3, [r4, 1] | r3 = *((r4 + 1));
0x00013760 cmp r3, 0x2d |
| if (r3 != 0x2d) {
0x00013762 bne 0x137ac | goto label_54;
| }
| label_0:
0x00013764 ldrd r0, r3, [r5, 0x70] | __asm ("ldrd r0, r3, [r5, 0x70]");
0x00013768 mov r1, r4 | r1 = r4;
0x0001376a ldr r3, [r3, 0x14] | r3 = *((r3 + 0x14));
0x0001376c blx r3 | uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
0x0001376e str r0, [sp, 0x20] | var_20h = r0;
0x00013770 cmp r0, 0 |
| if (r0 != 0) {
0x00013772 bne 0x1386c | goto label_55;
| }
0x00013774 ldr r2, [sp, 0x24] | r2 = var_24h;
0x00013776 adds r7, 1 | r7++;
0x00013778 ldr.w r4, [r2, sb] | r4 = *((r2 + sb));
| if (r4 != 0) {
0x0001377c cbz r4, 0x13792 |
| label_1:
0x0001377e mov r2, r4 | r2 = r4;
0x00013780 mov.w r1, 0x2ec | r1 = 0x2ec;
0x00013784 mov r0, fp | r0 = fp;
0x00013786 bl 0xf264 | fcn_0000f264 (r0, r1, r2);
0x0001378a ldr r3, [sp, 0x20] | r3 = var_20h;
0x0001378c ldr r2, [sp, 0x24] | r2 = var_24h;
0x0001378e cmp r3, 0 |
| if (r3 != 0) {
0x00013790 bne 0x1388a | goto label_56;
| }
| }
| label_2:
0x00013792 adds r6, 1 | r6++;
0x00013794 ldr r3, [sp, 0x28] | r3 = var_28h;
0x00013796 cmp r3, r6 |
| if (r3 <= r6) {
0x00013798 ble 0x1388a | goto label_56;
| }
0x0001379a ldr.w r4, [r2, r6, lsl 2] | offset_0 = r6 << 2;
| r4 = *((r2 + offset_0));
0x0001379e lsl.w sb, r6, 2 | sb = r6 << 2;
0x000137a2 ldrb.w r8, [r4] | r8 = *(r4);
0x000137a6 cmp.w r8, 0x73 |
0x000137aa beq 0x1375e |
| }
| label_54:
0x000137ac ldrb r3, [r4] | r3 = *(r4);
0x000137ae cmp r3, 0x73 |
| if (r3 == 0x73) {
0x000137b0 beq 0x138a0 | goto label_57;
| }
| label_4:
0x000137b2 ldr r1, [sp, 0xc] | r1 = var_ch;
0x000137b4 movs r2, 4 | r2 = 4;
0x000137b6 mov r0, r4 | r0 = r4;
0x000137b8 str r3, [sp, 0x14] | var_14h = r3;
0x000137ba blx 0x271c | r0 = fcn_0000271c ();
0x000137be cmp r0, 0 |
| if (r0 == 0) {
0x000137c0 beq 0x13764 | goto label_0;
| }
0x000137c2 cmp.w r8, 0x72 |
0x000137c6 ldr r3, [sp, 0x14] | r3 = var_14h;
| if (r8 != 0x72) {
0x000137c8 bne 0x137d0 | goto label_58;
| }
0x000137ca ldrb r2, [r4, 1] | r2 = *((r4 + 1));
0x000137cc cmp r2, 0x2d |
| if (r2 == 0x2d) {
0x000137ce beq 0x13764 | goto label_0;
| }
| label_58:
0x000137d0 cmp r3, 0x72 |
| if (r3 != 0x72) {
0x000137d2 bne 0x1377e | goto label_1;
| }
0x000137d4 ldrb r3, [r4, 1] | r3 = *((r4 + 1));
0x000137d6 cmp r3, 0x35 |
| if (r3 != 0x35) {
0x000137d8 bne 0x1377e | goto label_1;
| }
0x000137da ldrb r3, [r4, 2] | r3 = *((r4 + 2));
0x000137dc cmp r3, 0x2d |
| if (r3 == 0x2d) {
0x000137de beq 0x13764 | goto label_0;
| }
0x000137e0 b 0x1377e | goto label_1;
| label_53:
0x000137e2 movs r7, 0 | r7 = 0;
| label_3:
0x000137e4 ldr r1, [r5] | r1 = *(r5);
0x000137e6 mov r3, r7 | r3 = r7;
0x000137e8 ldr r2, [pc, 0x108] |
0x000137ea movs r0, 3 | r0 = 3;
0x000137ec str r1, [sp] | *(sp) = r1;
0x000137ee mov.w r1, -1 | r1 = -1;
0x000137f2 add r2, pc | r2 = 0x270ea;
0x000137f4 bl 0x8960 | fcn_00008960 (r0, r1);
0x000137f8 ldr r0, [pc, 0xfc] |
0x000137fa add r2, sp, 0x20 | r2 += var_20h;
0x000137fc movw r1, 0x2f3 | r1 = 0x2f3;
0x00013800 movs r3, 3 | r3 = 3;
0x00013802 add r0, pc |
0x00013804 add.w r0, r0, 0x1bc | r0 = 0x272ba;
0x00013808 bl 0xecc0 | fcn_0000ecc0 (r0, r1, r2, r3);
0x0001380c ldr r3, [sp, 0x20] | r3 = var_20h;
0x0001380e ldr r0, [r5, 0x60] | r0 = *((r5 + 0x60));
0x00013810 str r3, [sp, 0x1c] | var_1ch = r3;
0x00013812 bl 0x3f1c | fcn_00003f1c (r0);
0x00013816 ldr r0, [r5, 0x64] | r0 = *((r5 + 0x64));
0x00013818 bl 0x3f1c | fcn_00003f1c (r0);
0x0001381c ldr r3, [pc, 0xdc] | r3 = *(0x138fc);
0x0001381e movs r1, 0 | r1 = 0;
0x00013820 str r1, [r5, 0x4c] | *((r5 + 0x4c)) = r1;
0x00013822 mov r1, r5 | r1 = r5;
0x00013824 ldr r2, [pc, 0xd8] |
0x00013826 ldr.w r3, [sl, r3] | r3 = *((sl + r3));
0x0001382a add r2, pc | r2 = 0x2712e;
0x0001382c ldr r0, [r3] | r0 = *(0x138fc);
0x0001382e bl 0xc444 | r0 = fcn_0000c444 (r0, r1, r2);
0x00013832 cmp r0, 0 |
| if (r0 == 0) {
0x00013834 beq 0x138c4 | goto label_59;
| }
0x00013836 ldr r0, [r0, 8] | r0 = *((r0 + 8));
0x00013838 bl 0x13578 | fcn_00013578 (r0);
| label_6:
0x0001383c ldr r0, [pc, 0xc4] |
0x0001383e movs r3, 3 | r3 = 3;
0x00013840 add r2, sp, 0x1c | r2 += var_1ch;
0x00013842 movw r1, 0x96b | r1 = 0x96b;
0x00013846 add r0, pc |
0x00013848 add.w r0, r0, 0x1a4 | r0 = 0x272f2;
0x0001384c bl 0xecc0 | fcn_0000ecc0 (r0, r1, r2, r3);
0x00013850 ldr r2, [pc, 0xb4] |
0x00013852 ldr r3, [pc, 0x88] | r3 = *(0x138de);
0x00013854 ldr r0, [sp, 0x1c] | r0 = var_1ch;
0x00013856 add r2, pc | r2 = 0x27162;
0x00013858 ldr r3, [r2, r3] | r3 = *(0x27162);
0x0001385a ldr r2, [r3] | r2 = *(0x27162);
0x0001385c ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x0001385e eors r2, r3 | r2 ^= r3;
0x00013860 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00013864 bne 0x138d4 | goto label_60;
| }
0x00013866 add sp, 0x34 |
0x00013868 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_55:
0x0001386c mov r3, r0 | r3 = r0;
0x0001386e mov r2, sl | r2 = sl;
0x00013870 movs r1, 0 | r1 = 0;
0x00013872 movs r0, 5 | r0 = 5;
0x00013874 bl 0x8960 | fcn_00008960 (r0, r1);
0x00013878 ldr r2, [sp, 0x24] | r2 = var_24h;
0x0001387a ldr.w r4, [r2, sb] | r4 = *((r2 + sb));
0x0001387e cmp r4, 0 |
| if (r4 != 0) {
0x00013880 bne.w 0x1377e | goto label_1;
| }
0x00013884 ldr r3, [sp, 0x20] | r3 = var_20h;
0x00013886 cmp r3, 0 |
| if (r3 == 0) {
0x00013888 beq 0x13792 | goto label_2;
| }
| label_56:
0x0001388a ldr.w sl, [sp, 0x10] | sl = var_10h;
0x0001388e cmp r2, 0 |
| if (r2 == 0) {
0x00013890 beq 0x137e4 | goto label_3;
| }
0x00013892 ldr r0, [pc, 0x78] |
0x00013894 mov.w r1, 0x2f0 | r1 = 0x2f0;
0x00013898 add r0, pc | r0 = 0x271aa;
0x0001389a bl 0xf264 | fcn_0000f264 (r0, r1, r2);
0x0001389e b 0x137e4 | goto label_3;
| label_57:
0x000138a0 ldrb r2, [r4, 1] | r2 = *((r4 + 1));
0x000138a2 cmp r2, 0x35 |
| if (r2 == 0x35) {
0x000138a4 beq 0x138ba | goto label_61;
| }
| label_5:
0x000138a6 cmp r3, 0x73 |
| if (r3 != 0x73) {
0x000138a8 bne 0x137b2 | goto label_4;
| }
0x000138aa ldrb r2, [r4, 1] | r2 = *((r4 + 1));
0x000138ac cmp r2, 0x63 |
| if (r2 != 0x63) {
0x000138ae bne 0x137b2 | goto label_4;
| }
0x000138b0 ldrb r2, [r4, 2] | r2 = *((r4 + 2));
0x000138b2 cmp r2, 0x2d |
| if (r2 == 0x2d) {
0x000138b4 beq.w 0x13764 | goto label_0;
| }
0x000138b8 b 0x137b2 | goto label_4;
| label_61:
0x000138ba ldrb r2, [r4, 2] | r2 = *((r4 + 2));
0x000138bc cmp r2, 0x2d |
| if (r2 == 0x2d) {
0x000138be beq.w 0x13764 | goto label_0;
| }
0x000138c0 add r7, sp, 0x144 | r7 = sp + 0x144;
0x000138c2 b 0x138a6 | goto label_5;
| label_59:
0x000138c4 ldr r2, [pc, 0x48] |
0x000138c6 mov.w r1, -1 | r1 = -1;
0x000138ca movs r0, 5 | r0 = 5;
0x000138cc add r2, pc | r2 = 0x271e0;
0x000138ce bl 0x8960 | fcn_00008960 (r0, r1);
0x000138d2 b 0x1383c | goto label_6;
| label_60:
0x000138d4 blx 0x2370 | pthread_condattr_init ();
0x000138d8 strh r6, [r2, 0x34] | *((r2 + 0x34)) = r6;
0x000138da movs r1, r0 | r1 = r0;
0x000138dc lsls r0, r7, 7 | r0 = r7 << 7;
0x000138de movs r0, r0 |
0x000138e0 strb r6, [r0, 0xe] | *((r0 + 0xe)) = r6;
0x000138e2 movs r0, r0 |
0x000138e4 strh r0, [r1, 0x34] | *((r1 + 0x34)) = r0;
0x000138e6 movs r1, r0 | r1 = r0;
0x000138e8 ldr r6, [r0, 0x3c] | r6 = *((r0 + 0x3c));
0x000138ea movs r0, r0 |
0x000138ec ldr r1, [pc, 0x2d8] | r1 = *(0x13bc8);
0x000138ee movs r0, r0 |
0x000138f0 ldr r4, [r5, 0x14] | r4 = *((r5 + 0x14));
0x000138f2 movs r0, r0 |
0x000138f4 ldr r6, [r2, 0x34] | r6 = *((r2 + 0x34));
0x000138f6 movs r0, r0 |
0x000138f8 strb r2, [r1, 0xa] | *((r1 + 0xa)) = r2;
0x000138fa movs r0, r0 |
0x000138fc lsls r4, r7, 7 | r4 = r7 << 7;
0x000138fe movs r0, r0 |
0x00013900 b 0x13f3a |
| while (1) {
0x00013f32 mov.w r3, -1 | r3 = -1;
0x00013f36 ldr.w r0, [fp] | r0 = *(fp);
0x00013f3a strd r3, r3, [sp, 0x64] | __asm ("strd r3, r3, [sp, 0x64]");
0x00013f3e blx 0x2614 | r0 = fcn_00002614 ();
0x00013f42 cmp r0, 0 |
| if (r0 != 0) {
0x00013f44 bne.w 0x14364 | goto label_62;
| }
| label_12:
0x00013f48 movs r2, 3 | r2 = 3;
0x00013f4a ldr r0, [sp, 0x10] | r0 = var_10h;
0x00013f4c movw r1, 0xb3c | r1 = 0xb3c;
0x00013f50 strd sb, sb, [sp, 0x78] | __asm ("strd sb, sb, [sp, 0x78]");
0x00013f54 bl 0xec20 | fcn_0000ec20 (r0, r1, r2);
0x00013f58 ldr r3, [sp, 0x14] | r3 = var_14h;
0x00013f5a mov r1, r8 | r1 = r8;
0x00013f5c movs r0, 0 | r0 = 0;
0x00013f5e str.w sb, [sp, 0x6c] | __asm ("str.w sb, [var_6ch]");
0x00013f62 umull r2, r3, r3, r5 | r2:r3 = r3 * r5;
0x00013f66 mov.w r2, 0x3e8 | r2 = 0x3e8;
0x00013f6a lsrs r3, r3, 6 | r3 >>= 6;
0x00013f6c str r3, [sp, 0x78] | var_78h = r3;
0x00013f6e mls r3, r2, r3, r5 | __asm ("mls r3, r2, r3, r5");
0x00013f72 mul r3, r2, r3 | r3 = r2 * r3;
0x00013f76 str r3, [sp, 0x7c] | var_7ch = r3;
0x00013f78 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x00013f7a ldr r2, [r3] | r2 = *(r3);
0x00013f7c ldr r3, [sp, 0x20] | r3 = var_20h;
0x00013f7e bl 0x7ebc | fcn_00007ebc (r0, r1, r2, r3);
0x00013f82 ldr r3, [sp, 0x6c] | r3 = var_6ch;
0x00013f84 str r0, [sp, 0x68] | var_68h = r0;
0x00013f86 str r3, [sp, 0x64] | var_64h = r3;
0x00013f88 ldr.w r3, [sl] | r3 = *(sl);
0x00013f8c orrs r0, r3 | r0 |= r3;
| if (r0 == r3) {
0x00013f8e beq.w 0x1437a | goto label_63;
| }
| label_13:
0x00013f92 ldr.w r0, [fp] | r0 = *(fp);
0x00013f96 blx 0x23dc | r0 = fwrite (r0, r1, r2, r3);
0x00013f9a cmp r0, 0 |
| if (r0 != 0) {
0x00013f9c bne.w 0x1434e | goto label_64;
| }
| label_11:
0x00013fa0 ldr r3, [sp, 0x68] | r3 = var_68h;
0x00013fa2 cmp r3, 0 |
| if (r3 > 0) {
0x00013fa4 ble.w 0x140be |
0x00013fa8 ldr r3, [sp, 0x6c] | r3 = var_6ch;
0x00013faa str r3, [sp, 0x24] | var_24h = r3;
0x00013fac cmp r3, 0 |
| if (r3 != 0) {
0x00013fae bne.w 0x140be | goto label_15;
| }
0x00013fb2 ldr r2, [sp, 0xc] | r2 = var_ch;
0x00013fb4 add r1, sp, 0x68 | r1 += var_68h;
0x00013fb6 ldr.w r3, [pc, 0xac8] | r3 = *(0x14a82);
0x00013fba ldr r5, [r2, r3] | r5 = *((r2 + r3));
0x00013fbc ldr.w r2, [pc, 0xac4] | r2 = *(0x00014a84);
0x00013fc0 ldr r0, [r5] | r0 = *(r5);
0x00013fc2 add r2, pc | r2 += pc;
0x00013fc4 bl 0xc444 | r0 = fcn_0000c444 (r0, r1, r2);
0x00013fc8 cmp r0, 0 |
| if (r0 == 0) {
0x00013fca beq 0x140be | goto label_15;
| }
0x00013fcc ldr r3, [r5] | r3 = *(r5);
0x00013fce ldr r3, [r3, 8] | r3 = *((r3 + 8));
0x00013fd0 ldr r6, [r3, 8] | r6 = *((r3 + 8));
0x00013fd2 cmp r6, 0 |
| if (r6 == 0) {
0x00013fd4 beq 0x140be | goto label_15;
| }
0x00013fd6 ldr r3, [r6, 0xc] | r3 = *((r6 + 0xc));
0x00013fd8 mov.w r1, -1 | r1 = -1;
0x00013fdc ldr.w r2, [pc, 0xaa8] |
0x00013fe0 movs r0, 3 | r0 = 3;
0x00013fe2 ldrh r3, [r3, 0x10] | r3 = *((r3 + 0x10));
0x00013fe4 add r2, pc | r2 = 0x28a70;
0x00013fe6 sbfx r3, r3, 6, 4 | __asm ("sbfx r3, r3, 6, 4");
0x00013fea bl 0x8960 | fcn_00008960 (r0, r1);
0x00013fee ldr r1, [r6, 0xc] | r1 = *((r6 + 0xc));
0x00013ff0 ldrh r3, [r1, 0x10] | r3 = *((r1 + 0x10));
0x00013ff2 and r2, r3, 0x340 | r2 = r3 & 0x340;
0x00013ff6 and r3, r3, 0x3c0 | r3 &= 0x3c0;
0x00013ffa cmp r3, 0x80 |
0x00013ffc it ne |
| if (r3 != 0x80) {
0x00013ffe cmpne r2, 0x40 | __asm ("cmpne r2, 0x40");
| }
| if (r3 != 0x80) {
0x00014000 bne.w 0x143e4 | goto label_65;
| }
0x00014004 ldr.w r0, [pc, 0xa84] |
0x00014008 mov.w r3, -1 | r3 = -1;
0x0001400c movs r2, 3 | r2 = 3;
0x0001400e movw r1, 0xa73 | r1 = 0xa73;
0x00014012 str r3, [sp, 0x70] | var_70h = r3;
0x00014014 add r0, pc |
0x00014016 ldr r5, [r6] | r5 = *(r6);
0x00014018 add.w r0, r0, 0x260 | r0 = 0x28d04;
0x0001401c bl 0xec20 | fcn_0000ec20 (r0, r1, r2);
0x00014020 ldr r2, [r6, 0x78] | r2 = *((r6 + 0x78));
0x00014022 mov.w r3, -1 | r3 = -1;
0x00014026 cmp r2, 0 |
| if (r2 == 0) {
0x00014028 beq.w 0x145dc | goto label_66;
| }
0x0001402c ldr r3, [r6, 0xc] | r3 = *((r6 + 0xc));
0x0001402e mov r7, r3 | r7 = r3;
| label_21:
0x00014030 ldr.w r3, [r6, 0x108] | r3 = *((r6 + 0x108));
0x00014034 cmp r3, 0 |
| if (r3 > 0) {
0x00014036 ble 0x14058 |
0x00014038 ldr r2, [r6, 0x74] | r2 = *((r6 + 0x74));
0x0001403a ldr.w r3, [r6, 0x10c] | r3 = *((r6 + 0x10c));
0x0001403e ldr.w r0, [pc, 0xa50] |
0x00014042 ldr.w r5, [r3, r2, lsl 2] | offset_1 = r2 << 2;
| r5 = *((r3 + offset_1));
0x00014046 movs r2, 6 | r2 = 6;
0x00014048 add r0, pc | r0 = 0x28ade;
0x0001404a mov r1, r5 | r1 = r5;
0x0001404c blx 0x271c | r0 = fcn_0000271c ();
0x00014050 cmp r0, 0 |
| if (r0 != 0) {
0x00014052 bne.w 0x14538 | goto label_67;
| }
0x00014056 adds r5, 6 | r5 += 6;
| }
| label_18:
0x00014058 ldrh r3, [r7, 0x10] | r3 = *((r7 + 0x10));
0x0001405a and r3, r3, 0x3c0 | r3 &= 0x3c0;
0x0001405e cmp r3, 0x40 |
| if (r3 == 0x40) {
0x00014060 beq.w 0x1455a | goto label_68;
| }
| label_19:
0x00014064 cmp r3, 0xc0 |
| if (r3 == 0xc0) {
0x00014066 beq.w 0x147a8 | goto label_69;
| }
0x0001406a ldr r1, [sp, 0x70] | r1 = var_70h;
0x0001406c adds.w r3, r1, 0x16 | r3 = r1 + 0x16;
0x00014070 it ne |
| if (r3 == r1) {
0x00014072 movne r3, 1 | r3 = 1;
| }
| label_26:
0x00014074 cmp r1, 0 |
0x00014076 ite eq |
| if (r1 != 0) {
0x00014078 moveq r3, 0 | r3 = 0;
| }
| if (r1 == 0) {
0x0001407a andne r3, r3, 1 | r3 &= 1;
| }
| if (r3 != 0) {
0x0001407e cbz r3, 0x1408e |
0x00014080 ldr r3, [r6, 0xc] | r3 = *((r6 + 0xc));
0x00014082 ldrh r3, [r3, 0x10] | r3 = *((r3 + 0x10));
0x00014084 and r3, r3, 0x380 | r3 &= 0x380;
0x00014086 strb r0, [r4, 0xd] | *((r4 + 0xd)) = r0;
0x00014088 cmp r3, 0x80 |
| if (r3 != 0x80) {
0x0001408a bne.w 0x143b4 | goto label_70;
| }
| }
0x0001408e adds r1, 3 | r1 += 3;
| if (r1 == 3) {
0x00014090 beq.w 0x143b4 | goto label_70;
| }
| label_14:
0x00014094 ldr.w r0, [pc, 0x9fc] |
0x00014098 movs r3, 3 | r3 = 3;
0x0001409a add r2, sp, 0x70 | r2 += var_70h;
0x0001409c movw r1, 0xb32 | r1 = 0xb32;
0x000140a0 add r0, pc |
0x000140a2 add.w r0, r0, 0x260 | r0 = 0x28d98;
0x000140a6 bl 0xecc0 | fcn_0000ecc0 (r0, r1, r2, r3);
0x000140aa ldr r3, [r6, 0xc] | r3 = *((r6 + 0xc));
0x000140ac ldr r2, [sp, 0x70] | r2 = var_70h;
0x000140ae ldrh r3, [r3, 0x10] | r3 = *((r3 + 0x10));
0x000140b0 str r2, [sp, 0x64] | var_64h = r2;
0x000140b2 and r3, r3, 0x3c0 | r3 &= 0x3c0;
0x000140b6 cmp.w r3, 0x100 |
| if (r3 == 0x100) {
0x000140ba beq.w 0x1450c | goto label_71;
| }
| }
| label_15:
0x000140be movs r5, 0 | r5 = 0;
| label_16:
0x000140c0 ldr.w r6, [pc, 0x9d4] | r6 = *(0x00014a98);
0x000140c4 movs r2, 3 | r2 = 3;
0x000140c6 movw r1, 0xa5d | r1 = 0xa5d;
0x000140ca ldr r0, [sp, 0x18] | r0 = var_18h;
0x000140cc bl 0xec20 | fcn_0000ec20 (r0, r1, r2);
0x000140d0 add r6, pc | r6 += pc;
0x000140d2 mov r0, r4 | r0 = r4;
0x000140d4 adds r6, 0x20 | r6 += 0x20;
0x000140d6 bl 0x28e8 | fcn_000028e8 (r0, r1, r2);
0x000140da ldm.w r6, {r2, r3} | r2 = *(r6);
| r3 = *((r6 + 4));
0x000140de ldm.w r4, {r0, r1} | r0 = *(r4);
| r1 = *((r4 + 4));
0x000140e2 bl 0x294c | fcn_0000294c (r0);
0x000140e6 ldr.w r3, [pc, 0x9b4] |
0x000140ea add r3, pc |
0x000140ec ldr r3, [r3] | r3 = *(0x28b8c);
0x000140ee cmp r0, r3 |
0x000140f0 asr.w r2, r3, 0x1f | r2 = r3 >> 0x1f;
0x000140f4 sbcs r1, r2 | __asm ("sbcs r1, r2");
| if (r0 < r3) {
0x000140f6 blt.w 0x142a6 | goto label_72;
| }
0x000140fa add r7, sp, 0x48 | r7 += var_48h;
0x000140fc mov r0, r7 | r0 = r7;
0x000140fe bl 0x28e8 | r0 = fcn_000028e8 (r0, r1, r2);
0x00014102 ldm.w r7, {r0, r1} | r0 = *(r7);
| r1 = *((r7 + 4));
0x00014106 stm.w r6, {r0, r1} | *(r6) = r0;
| *((r6 + 4)) = r1;
0x0001410a ldm.w r4, {r0, r1} | r0 = *(r4);
| r1 = *((r4 + 4));
0x0001410e bl 0x3a64 | r0 = fcn_00003a64 ();
0x00014112 ldm.w r4, {r0, r1} | r0 = *(r4);
| r1 = *((r4 + 4));
0x00014116 movs r3, 0 | r3 = 0;
0x00014118 movs r2, 1 | r2 = 1;
0x0001411a bl 0x3c60 | fcn_00003c60 (r0, r1, r2);
| label_8:
0x0001411e ldr.w r0, [pc, 0x980] |
0x00014122 movs r3, 3 | r3 = 3;
0x00014124 movs r2, 0 | r2 = 0;
0x00014126 movw r1, 0xa67 | r1 = 0xa67;
0x0001412a add r0, pc |
0x0001412c add.w r0, r0, 0x278 | r0 = 0x28e48;
0x00014130 bl 0xecc0 | fcn_0000ecc0 (r0, r1, r2, r3);
0x00014132 stc2l p8, c15, [r6, 0x36c] | __asm ("stc2l p8, c15, [r6, 0x36c]");
0x00014136 movs r0, r0 |
0x00014138 blx 0x2614 | r0 = fcn_00002614 ();
0x0001413c cmp r0, 0 |
| if (r0 != 0) {
0x0001413e bne.w 0x14338 | goto label_73;
| }
| label_10:
0x00014142 ldr.w r0, [pc, 0x960] |
0x00014146 movs r3, 3 | r3 = 3;
0x00014148 ldr r2, [sp, 8] | r2 = var_8h;
0x0001414a movw r1, 0xbd5 | r1 = 0xbd5;
0x0001414e add r0, pc |
0x00014150 add.w r0, r0, 0x250 | r0 = 0x28e48;
0x00014154 bl 0xecc0 | fcn_0000ecc0 (r0, r1, r2, r3);
0x00014158 ldr.w r0, [fp] | r0 = *(fp);
0x0001415c blx 0x23dc | r0 = fwrite (r0, r1, r2, r3);
0x00014160 cmp r0, 0 |
| if (r0 != 0) {
0x00014162 bne.w 0x142b4 | goto label_74;
| }
0x00014166 ldr.w r3, [sl] | r3 = *(sl);
0x0001416a cmp r3, 0 |
| if (r3 != 0) {
0x0001416c bne.w 0x142d2 | goto label_75;
| }
| label_9:
0x00014170 ldr r3, [sp, 0x68] | r3 = var_68h;
0x00014172 cmp r3, 0 |
| if (r3 != 0) {
0x00014174 beq 0x14250 |
0x00014176 ldr r2, [sp, 0xc] | r2 = var_ch;
0x00014178 add r1, sp, 0x68 | r1 += var_68h;
0x0001417a ldr.w r3, [pc, 0x904] | r3 = *(0x14a82);
0x0001417e ldr r6, [r2, r3] | r6 = *((r2 + r3));
0x00014180 ldr.w r2, [pc, 0x924] | r2 = *(0x00014aa8);
0x00014184 ldr r0, [r6] | r0 = *(r6);
0x00014186 add r2, pc | r2 += pc;
0x00014188 bl 0xc444 | r0 = fcn_0000c444 (r0, r1, r2);
0x0001418c cmp r0, 0 |
| if (r0 == 0) {
0x0001418e beq.w 0x145fc | goto label_76;
| }
0x00014192 ldr r3, [r6] | r3 = *(r6);
0x00014194 ldr r3, [r3, 8] | r3 = *((r3 + 8));
0x00014196 ldr r6, [r3, 8] | r6 = *((r3 + 8));
0x00014198 cmp r6, 0 |
| if (r6 == 0) {
0x0001419a beq.w 0x14754 | goto label_77;
| }
0x0001419e ldr r1, [sp, 0x64] | r1 = var_64h;
0x000141a0 adds r0, r1, 1 | r0 = r1 + 1;
| if (r0 == r1) {
0x000141a2 beq.w 0x143c6 | goto label_78;
| }
0x000141a6 ldr r1, [r6, 0xc] | r1 = *((r6 + 0xc));
0x000141a8 ldr r3, [r1, 0x68] | r3 = *((r1 + 0x68));
0x000141aa str r1, [sp, 0x2c] | var_2ch = r1;
0x000141ac ldr r2, [r3, 0xc] | r2 = *((r3 + 0xc));
0x000141ae cmp r2, 0 |
0x000141b0 str r2, [sp, 0x28] | var_28h = r2;
| if (r2 > 0) {
0x000141b2 ble 0x14220 |
0x000141b4 ldr r0, [r6, 0x14] | r0 = *((r6 + 0x14));
0x000141b6 cmp r0, 0 |
| if (r0 == 0) {
0x000141b8 beq 0x14220 | goto label_23;
| }
0x000141ba ldr r3, [r3] | r3 = *(r3);
0x000141bc ldr r3, [r3, 8] | r3 = *((r3 + 8));
0x000141be ldr r1, [r3, 4] | r1 = *((r3 + 4));
0x000141c0 str r3, [sp, 0x30] | var_30h = r3;
0x000141c2 ldr r3, [r3, 8] | r3 = *((r3 + 8));
0x000141c4 mov r0, r1 | r0 = r1;
0x000141c6 mov r7, r1 | r7 = r1;
0x000141c8 str r3, [sp, 0x24] | var_24h = r3;
0x000141ca blx 0x24e4 | srand (r0);
0x000141ce ldr r2, [sp, 0x24] | r2 = var_24h;
0x000141d0 ldr r1, [sp, 0x2c] | r1 = var_2ch;
0x000141d2 mov r3, r2 | r3 = r2;
0x000141d4 cmp r0, r2 |
0x000141d6 it eq |
| if (r0 != r2) {
0x000141d8 moveq r3, 0 | r3 = 0;
| }
0x000141da movs r0, 3 | r0 = 3;
0x000141dc str r3, [sp, 0x24] | var_24h = r3;
0x000141de ldr r3, [r1] | r3 = *(r1);
0x000141e0 ldr r1, [sp, 0x30] | r1 = var_30h;
0x000141e2 ldr r2, [r1] | r2 = *(r1);
0x000141e4 mov.w r1, -1 | r1 = -1;
0x000141e8 str r2, [sp, 0x2c] | var_2ch = r2;
0x000141ea ldr r2, [sp, 0x28] | r2 = var_28h;
0x000141ec str r2, [sp] | *(sp) = r2;
0x000141ee ldr.w r2, [pc, 0x8bc] |
0x000141f2 add r2, pc | r2 = 0x28ca4;
0x000141f4 bl 0x8960 | fcn_00008960 (r0, r1);
0x000141f8 mov r1, r7 | r1 = r7;
0x000141fa ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x000141fc ldr r2, [sp, 0x24] | r2 = var_24h;
0x000141fe ldr r0, [r6, 0x20] | r0 = *((r6 + 0x20));
0x00014200 ldr r7, [r6, 0x14] | r7 = *((r6 + 0x14));
0x00014202 blx r7 | r0 = uint32_t (*r7)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x00014204 cmp r0, 0 |
| if (r0 == 0) {
0x00014206 beq.w 0x14716 | goto label_79;
| }
0x0001420a ldr r0, [r6, 0xc] | r0 = *((r6 + 0xc));
0x0001420c ldr r3, [r0, 0x74] | r3 = *((r0 + 0x74));
| if (r3 != 0) {
0x0001420e cbz r3, 0x14218 |
0x00014210 ldr r1, [sp, 0x30] | r1 = var_30h;
0x00014212 bl 0x99a4 | fcn_000099a4 (r0, r1);
0x00014216 ldr r0, [r6, 0xc] | r0 = *((r6 + 0xc));
| }
0x00014218 ldr r0, [r0, 0x68] | r0 = *((r0 + 0x68));
0x0001421a ldr r1, [sp, 0x30] | r1 = var_30h;
0x0001421c bl 0xc584 | fcn_0000c584 (r0, r1);
| }
| if (r5 != 0) {
| label_23:
0x00014220 cbz r5, 0x14248 |
0x00014222 ldrb r3, [r5] | r3 = *(r5);
0x00014224 and r3, r3, 0xf0 | r3 &= 0xf0;
0x00014228 cmp r3, 0x20 |
| if (r3 == 0x20) {
0x0001422a beq.w 0x14614 | goto label_80;
| }
0x0001422e cmp r3, 0x90 |
0x00014230 it eq |
| if (r3 != 0x90) {
0x00014232 streq sb, [sp, 0x78] | var_78h = sb;
| }
| if (r3 == 0x90) {
0x00014236 beq 0x14264 | goto label_81;
| }
0x00014238 cmp r3, 0xb0 |
0x0001423a it eq |
| if (r3 != 0xb0) {
0x0001423c streq sb, [sp, 0x78] | var_78h = sb;
| }
| if (r3 == 0xb0) {
0x00014240 beq 0x1428c | goto label_82;
| }
0x00014242 cmp r3, 0xe0 |
| if (r3 == 0xe0) {
0x00014244 beq.w 0x1472a | goto label_83;
| }
| }
| label_7:
0x00014248 ldr.w r3, [sl] | r3 = *(sl);
| label_22:
0x0001424c cmp r3, 0 |
| if (r3 != 0) {
0x0001424e bne 0x142d2 | goto label_75;
| }
| }
0x00014250 mov.w r5, 0x3e8 | r5 = 0x3e8;
0x00014254 b 0x13f32 |
| }
| do {
0x00014256 ldr r3, [sp, 0x78] | r3 = var_78h;
0x00014258 ldr r7, [r3, 8] | r7 = *((r3 + 8));
0x0001425a ldr r3, [r5, 4] | r3 = *((r5 + 4));
0x0001425c ldr r2, [r7, 0x14] | r2 = *((r7 + 0x14));
0x0001425e cmp r2, r3 |
| if (r2 == r3) {
0x00014260 beq.w 0x148c6 | goto label_84;
| }
| label_81:
0x00014264 ldr.w r0, [r6, 0xe4] | r0 = *((r6 + 0xe4));
0x00014268 mov r1, r8 | r1 = r8;
0x0001426a bl 0xc77c | r0 = fcn_0000c77c (r0, r1);
0x0001426e cmp r0, 0 |
0x00014270 bne 0x14256 |
| } while (r0 != 0);
0x00014272 ldr r3, [r6, 0xc] | r3 = *((r6 + 0xc));
0x00014274 mov r0, r5 | r0 = r5;
0x00014276 ldr r1, [r3, 0x1c] | r1 = *((r3 + 0x1c));
0x00014278 bl 0xab2c | fcn_0000ab2c (r0, r1);
0x0001427c b 0x14248 | goto label_7;
| do {
0x0001427e ldr r3, [sp, 0x78] | r3 = var_78h;
0x00014280 ldr r7, [r3, 8] | r7 = *((r3 + 8));
0x00014282 ldr r3, [r5, 4] | r3 = *((r5 + 4));
0x00014284 ldr r2, [r7, 0x14] | r2 = *((r7 + 0x14));
0x00014286 cmp r2, r3 |
| if (r2 == r3) {
0x00014288 beq.w 0x149ea | goto label_85;
| }
| label_82:
0x0001428c ldr.w r0, [r6, 0xe4] | r0 = *((r6 + 0xe4));
0x00014290 mov r1, r8 | r1 = r8;
0x00014292 bl 0xc77c | r0 = fcn_0000c77c (r0, r1);
0x00014296 cmp r0, 0 |
0x00014298 bne 0x1427e |
| } while (r0 != 0);
| label_33:
0x0001429a ldr r3, [r6, 0xc] | r3 = *((r6 + 0xc));
0x0001429c mov r0, r5 | r0 = r5;
0x0001429e ldr r1, [r3, 0x1c] | r1 = *((r3 + 0x1c));
0x000142a0 bl 0xac5c | fcn_0000ac5c (r0, r1);
0x000142a4 b 0x14248 | goto label_7;
| label_72:
0x000142a6 movs r3, 0 | r3 = 0;
0x000142a8 ldm.w r4, {r0, r1} | r0 = *(r4);
| r1 = *((r4 + 4));
0x000142ac mov r2, r3 | r2 = r3;
0x000142ae bl 0x3c60 | fcn_00003c60 (r0, r1, r2);
0x000142b2 b 0x1411e | goto label_8;
| label_74:
0x000142b4 blx 0x2490 | localtime (r0);
0x000142b8 ldr.w r2, [pc, 0x7f4] |
0x000142bc mov r3, r0 | r3 = r0;
0x000142be movs r1, 0 | r1 = 0;
0x000142c0 movs r0, 5 | r0 = 5;
0x000142c2 add r2, pc | r2 = 0x28d76;
0x000142c4 bl 0x8960 | fcn_00008960 (r0, r1);
0x000142c8 ldr.w r3, [sl] | r3 = *(sl);
0x000142cc cmp r3, 0 |
| if (r3 == 0) {
0x000142ce beq.w 0x14170 | goto label_9;
| }
| label_75:
0x000142d2 mov sb, fp | sb = fp;
0x000142d4 ldr.w fp, [sp, 0xc] | fp = var_ch;
0x000142d8 ldr r3, [sp, 0x38] | r3 = var_38h;
0x000142da movs r4, 0 | r4 = 0;
0x000142dc ldr.w r0, [sb] | r0 = *(sb);
0x000142e0 str r4, [r3] | *(r3) = r4;
0x000142e2 ldr r3, [sp, 0x34] | r3 = var_34h;
0x000142e4 str r4, [r3] | *(r3) = r4;
0x000142e6 blx 0x2614 | r0 = fcn_00002614 ();
0x000142ea cmp r0, 0 |
| if (r0 != 0) {
0x000142ec bne.w 0x14794 | goto label_86;
| }
| label_25:
0x000142f0 ldr.w r3, [pc, 0x7c0] |
0x000142f4 ldr.w r3, [fp, r3] | r3 = *((fp + r3));
0x000142f8 ldr r3, [r3] | r3 = *(0x14ab4);
0x000142fa cmp r3, 0 |
| if (r3 != 0) {
0x000142fc bne.w 0x14786 | goto label_87;
| }
| label_24:
0x00014300 ldr.w r0, [pc, 0x7b4] |
0x00014304 movs r3, 3 | r3 = 3;
0x00014306 movs r2, 0 | r2 = 0;
0x00014308 movw r1, 0x8e4 | r1 = 0x8e4;
0x0001430c add r0, pc |
0x0001430e add.w r0, r0, 0x238 | r0 = 0x29000;
0x00014312 bl 0xecc0 | fcn_0000ecc0 (r0, r1, r2, r3);
0x00014316 ldr.w r2, [pc, 0x7a4] |
0x0001431a ldr.w r3, [pc, 0x740] | r3 = *(0x14a5e);
0x0001431e add r2, pc | r2 = 0x28de0;
0x00014320 ldr r3, [r2, r3] | r3 = *(0x28de0);
0x00014322 ldr r2, [r3] | r2 = *(0x28de0);
0x00014324 ldr r3, [sp, 0xe4] | r3 = *(arg_e4h);
0x00014326 eors r2, r3 | r2 ^= r3;
0x00014328 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0001432c bne.w 0x15048 | goto label_88;
| }
0x00014330 movs r0, 0 | r0 = 0;
0x00014332 add sp, 0xec |
0x00014334 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_73:
0x00014338 blx 0x2490 | localtime (r0);
0x0001433c ldr.w r2, [pc, 0x780] |
0x00014340 mov r3, r0 | r3 = r0;
0x00014342 movs r1, 0 | r1 = 0;
0x00014344 movs r0, 5 | r0 = 5;
0x00014346 add r2, pc | r2 = 0x28e0a;
0x00014348 bl 0x8960 | fcn_00008960 (r0, r1);
0x0001434c b 0x14142 | goto label_10;
| label_64:
0x0001434e blx 0x2490 | localtime (r0);
0x00014352 ldr.w r2, [pc, 0x770] |
0x00014356 mov r3, r0 | r3 = r0;
0x00014358 movs r1, 0 | r1 = 0;
0x0001435a movs r0, 5 | r0 = 5;
0x0001435c add r2, pc | r2 = 0x28e26;
0x0001435e bl 0x8960 | fcn_00008960 (r0, r1);
0x00014362 b 0x13fa0 | goto label_11;
| label_62:
0x00014364 blx 0x2490 | localtime (r0);
0x00014368 ldr.w r2, [pc, 0x75c] |
0x0001436c mov r3, r0 | r3 = r0;
0x0001436e movs r1, 0 | r1 = 0;
0x00014370 movs r0, 5 | r0 = 5;
0x00014372 add r2, pc | r2 = 0x28e3e;
0x00014374 bl 0x8960 | fcn_00008960 (r0, r1);
0x00014378 b 0x13f48 | goto label_12;
| label_63:
0x0001437a ldr r3, [sp, 0x78] | r3 = var_78h;
0x0001437c cmp r3, 0 |
| if (r3 > 0) {
0x0001437e bgt 0x14388 | goto label_89;
| }
0x00014380 ldr r3, [sp, 0x7c] | r3 = var_7ch;
0x00014382 cmp r3, 0 |
| if (r3 <= 0) {
0x00014384 ble.w 0x13f92 | goto label_13;
| }
| label_89:
0x00014388 ldr.w r5, [pc, 0x740] |
0x0001438c movs r2, 3 | r2 = 3;
0x0001438e movs r1, 0x68 | r1 = 0x68;
0x00014390 add r5, pc | r5 = 0x28e60;
0x00014392 adds r5, 0x80 | r5 += 0x80;
0x00014394 mov r0, r5 | r0 = r5;
0x00014396 bl 0xec20 | fcn_0000ec20 (r0, r1, r2);
0x0001439a movw r0, 0x86a0 |
0x0001439e movt r0, 1 | r0 = 0x186a0;
0x000143a2 blx 0x240c | strcpy (r0, r1)
0x000143a6 mov r0, r5 | r0 = r5;
0x000143a8 movs r3, 3 | r3 = 3;
0x000143aa movs r2, 0 | r2 = 0;
0x000143ac movs r1, 0x6e | r1 = 0x6e;
0x000143ae bl 0xecc0 | fcn_0000ecc0 (r0, r1, r2, r3);
0x000143b2 b 0x13f92 | goto label_13;
| label_70:
0x000143b4 ldr.w r2, [pc, 0x718] |
0x000143b8 mov.w r1, -1 | r1 = -1;
0x000143bc mov r0, r6 | r0 = r6;
0x000143be add r2, pc | r2 = 0x28e92;
0x000143c0 bl 0x13c74 | fcn_00013c74 (r0, r1, r2, r3);
0x000143c4 b 0x14094 | goto label_14;
| label_78:
0x000143c6 ldr.w r2, [pc, 0x70c] |
0x000143ca movs r0, 3 | r0 = 3;
0x000143cc ldr r3, [sp, 0x68] | r3 = var_68h;
0x000143ce add r2, pc | r2 = 0x28ea8;
0x000143d0 bl 0x8960 | fcn_00008960 (r0, r1);
0x000143d4 ldr.w r2, [pc, 0x700] |
0x000143d8 mov r0, r6 | r0 = r6;
0x000143da ldr r1, [sp, 0x64] | r1 = var_64h;
0x000143dc add r2, pc | r2 = 0x28eb8;
0x000143de bl 0x13c74 | fcn_00013c74 (r0, r1, r2, r3);
0x000143e2 b 0x14248 | goto label_7;
| label_65:
0x000143e4 ldr.w r0, [r1, 0x8c] | r0 = *((r1 + 0x8c));
0x000143e8 adds r1, 0x1c | r1 += 0x1c;
0x000143ea ldr r2, [sp, 8] | r2 = var_8h;
0x000143ec bl 0x4bc4 | fcn_00004bc4 (r0, r1, r2);
0x000143f0 ldr r3, [r6, 0xc] | r3 = *((r6 + 0xc));
0x000143f2 mov r5, r0 | r5 = r0;
0x000143f4 ldrh r3, [r3, 0x10] | r3 = *((r3 + 0x10));
0x000143f6 and r3, r3, 0x3c0 | r3 &= 0x3c0;
0x000143fa cmp.w r3, 0x100 |
| if (r3 == 0x100) {
0x000143fe beq.w 0x145d2 | goto label_90;
| }
| label_17:
0x00014402 cmp r5, 0 |
| if (r5 == 0) {
0x00014404 beq.w 0x140be | goto label_15;
| }
0x00014408 ldrb r3, [r5] | r3 = *(r5);
0x0001440a and ip, r3, 0xf0 |
0x0001440e cmp.w ip, 0x30 |
| if (ip == 0x30) {
0x00014412 beq.w 0x147f2 | goto label_91;
| }
0x00014416 cmp.w ip, 0x60 |
| if (ip == 0x60) {
0x0001441a beq 0x144fe | goto label_92;
| }
| if (ip < 0x60) {
0x0001441c bls 0x1443a | goto label_93;
| }
0x0001441e cmp.w ip, 0x70 |
| if (ip == 0x70) {
0x00014422 beq.w 0x1504c | goto label_94;
| }
0x00014426 cmp.w ip, 0xd0 |
| if (ip != 0xd0) {
0x0001442a bne.w 0x140c0 | goto label_16;
| }
0x0001442e ldr r1, [sp, 0x68] | r1 = var_68h;
0x00014430 mov r0, r5 | r0 = r5;
0x00014432 bl 0xa9f4 | fcn_0000a9f4 (r0);
0x00014436 str r0, [sp, 0x64] | var_64h = r0;
0x00014438 b 0x140be | goto label_15;
| label_93:
0x0001443a and r2, r3, 0xe0 | r2 = r3 & 0xe0;
0x0001443e cmp r2, 0x40 |
| if (r2 != 0x40) {
0x00014440 bne.w 0x140c0 | goto label_16;
| }
0x00014444 lsrs r3, r3, 4 | r3 >>= 4;
0x00014446 mov r7, r5 | r7 = r5;
0x00014448 strd sb, sb, [r4] | __asm ("strd sb, sb, [r4]");
0x0001444c str r3, [sp, 0x2c] | var_2ch = r3;
0x0001444e ldr.w r3, [pc, 0x68c] | r3 = *(0x00014adc);
0x00014452 strd sb, sb, [r4, 8] | __asm ("strd sb, sb, [r4, 8]");
0x00014456 add r3, pc | r3 += pc;
0x00014458 str r3, [sp, 0x28] | var_28h = r3;
0x0001445a mov lr, r3 | lr = r3;
0x0001445c ldm r7!, {r0, r1, r2, r3} | r0 = *(r7!);
| r1 = *((r7! + 4));
| r2 = *((r7! + 8));
| r3 = *((r7! + 12));
0x0001445e stm.w lr!, {r0, r1, r2, r3} | *(lr!) = r0;
| *((lr! + 4)) = r1;
| *((lr! + 8)) = r2;
| *((lr! + 12)) = r3;
0x00014462 ldr r3, [sp, 0x28] | r3 = var_28h;
0x00014464 str r1, [sp, 0x30] | var_30h = r1;
0x00014466 ldr r2, [r3, 0xc] | r2 = *((r3 + 0xc));
0x00014468 str r2, [sp, 0x28] | var_28h = r2;
0x0001446a ldm.w r7, {r0, r1, r2, r3} | r0 = *(r7);
| r1 = *((r7 + 4));
| r2 = *((r7 + 8));
| r3 = *((r7 + 12));
0x0001446e stm.w lr, {r0, r1, r2, r3} | *(lr) = r0;
| *((lr + 4)) = r1;
| *((lr + 8)) = r2;
| *((lr + 12)) = r3;
0x00014472 ldr r2, [sp, 0x28] | r2 = var_28h;
0x00014474 cmp r2, 4 |
| if (r2 > 4) {
0x00014476 bgt.w 0x14800 | goto label_51;
| }
0x0001447a movs r3, 0 | r3 = 0;
0x0001447c str r3, [sp, 0x40] | var_40h = r3;
0x0001447e str r3, [sp, 0x28] | var_28h = r3;
| label_27:
0x00014480 cmp.w ip, 0x50 |
| if (ip == 0x50) {
0x00014484 beq.w 0x14a4c | goto label_95;
| }
0x00014488 cmp.w ip, 0x40 |
| if (ip == 0x40) {
0x0001448c beq.w 0x14c14 | goto label_96;
| }
| label_28:
0x00014490 ldrd r3, r2, [sp, 0x28] | __asm ("ldrd r3, r2, [var_28h]");
0x00014494 cmp r2, 5 |
0x00014496 it ne |
| if (r2 == 5) {
0x00014498 orrne r3, r3, 1 | r3 |= 1;
| }
0x0001449c cmp r3, 0 |
| if (r3 == 0) {
0x0001449e beq.w 0x140be | goto label_15;
| }
0x000144a2 ldr r3, [r6, 0x18] | r3 = *((r6 + 0x18));
0x000144a4 str.w sb, [sp, 0x74] | __asm ("str.w sb, [var_74h]");
| if (r3 != 0) {
0x000144a8 cbz r3, 0x144ca |
0x000144aa ldr r3, [r6, 0xc] | r3 = *((r6 + 0xc));
0x000144ac mov.w r1, -1 | r1 = -1;
0x000144b0 ldr r7, [sp, 0x30] | r7 = var_30h;
0x000144b2 movs r0, 3 | r0 = 3;
0x000144b4 ldr.w r2, [pc, 0x628] |
0x000144b8 ldr r3, [r3] | r3 = *(r3);
0x000144ba str r7, [sp] | *(sp) = r7;
0x000144bc add r2, pc | r2 = 0x28fa0;
0x000144be bl 0x8960 | fcn_00008960 (r0, r1);
0x000144c2 ldr r3, [r6, 0x18] | r3 = *((r6 + 0x18));
0x000144c4 mov r1, r7 | r1 = r7;
0x000144c6 ldr r0, [r6, 0x24] | r0 = *((r6 + 0x24));
0x000144c8 blx r3 | uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
| }
0x000144ca add r1, sp, 0x74 | r1 += var_74h;
0x000144cc str r5, [sp, 0x2c] | var_2ch = r5;
0x000144ce ldr r7, [sp, 0x30] | r7 = var_30h;
0x000144d0 mov r5, r1 | r5 = r1;
0x000144d2 b 0x144e0 |
| while (r0 != 0) {
0x000144d4 ldr r3, [sp, 0x74] | r3 = var_74h;
0x000144d6 ldr r3, [r3, 8] | r3 = *((r3 + 8));
0x000144d8 ldr r2, [r3, 0x14] | r2 = *((r3 + 0x14));
0x000144da cmp r7, r2 |
| if (r7 == r2) {
0x000144dc beq.w 0x14978 | goto label_97;
| }
0x000144e0 ldr.w r0, [r6, 0xe4] | r0 = *((r6 + 0xe4));
0x000144e4 mov r1, r5 | r1 = r5;
0x000144e6 bl 0xc77c | r0 = fcn_0000c77c (r0, r1);
0x000144ea cmp r0, 0 |
0x000144ec bne 0x144d4 |
| }
0x000144ee ldr r3, [sp, 0x40] | r3 = var_40h;
0x000144f0 cmp r3, 4 |
| if (r3 <= 4) {
0x000144f2 ble.w 0x140be | goto label_15;
| }
| label_32:
0x000144f6 mov r0, r4 | r0 = r4;
0x000144f8 blx 0x26c8 | fcn_000026c8 ();
0x000144fc b 0x140be | goto label_15;
| label_92:
0x000144fe mov r0, r5 | r0 = r5;
0x00014500 ldr r1, [sp, 0x68] | r1 = var_68h;
0x00014502 bl 0x3610 | fcn_00003610 (r0, r1);
0x00014506 movs r5, 0 | r5 = 0;
0x00014508 str r0, [sp, 0x64] | var_64h = r0;
0x0001450a b 0x140c0 | goto label_16;
| label_71:
0x0001450c adds r2, 1 | r2++;
0x0001450e it eq |
| if (r2 == 1) {
0x00014510 moveq r5, 0 | r5 = 0;
| goto label_98;
| }
| if (r2 != 1) {
| label_98:
0x00014512 bne.w 0x140be | goto label_15;
| }
| label_20:
0x00014516 ldr.w r2, [pc, 0x5cc] |
0x0001451a mov.w r1, -1 | r1 = -1;
0x0001451e movs r0, 3 | r0 = 3;
0x00014520 add r2, pc | r2 = 0x2900a;
0x00014522 bl 0x8960 | fcn_00008960 (r0, r1);
0x00014526 ldr.w r2, [pc, 0x5c0] |
0x0001452a mov.w r1, -1 | r1 = -1;
0x0001452e mov r0, r6 | r0 = r6;
0x00014530 add r2, pc | r2 = 0x2901e;
0x00014532 bl 0x13c74 | fcn_00013c74 (r0, r1, r2, r3);
0x00014536 b 0x14402 | goto label_17;
| label_67:
0x00014538 ldr.w r0, [pc, 0x5b0] |
0x0001453c movs r2, 5 | r2 = 5;
0x0001453e mov r1, r5 | r1 = r5;
0x00014540 add r0, pc | r0 = 0x29030;
0x00014542 blx 0x271c | r0 = fcn_0000271c ();
0x00014546 cmp r0, 0 |
| if (r0 != 0) {
0x00014548 bne.w 0x14058 | goto label_18;
| }
0x0001454c ldrh r3, [r7, 0x10] | r3 = *((r7 + 0x10));
0x0001454e adds r5, 5 | r5 += 5;
0x00014550 and r3, r3, 0x3c0 | r3 &= 0x3c0;
0x00014554 cmp r3, 0x40 |
| if (r3 != 0x40) {
0x00014556 bne.w 0x14064 | goto label_19;
| }
| label_68:
0x0001455a movs r2, 4 | r2 = 4;
0x0001455c movs r1, 1 | r1 = 1;
0x0001455e str r2, [sp, 0x80] | var_80h = r2;
0x00014560 add r3, sp, 0x74 | r3 += var_74h;
0x00014562 ldr r0, [r7, 0x1c] | r0 = *((r7 + 0x1c));
0x00014564 str r4, [sp] | *(sp) = r4;
0x00014566 blx 0x2400 | r0 = sem_post ();
0x0001456a mov r1, r0 | r1 = r0;
0x0001456c str r0, [sp, 0x70] | var_70h = r0;
0x0001456e cmp r0, 0 |
| if (r0 != 0) {
0x00014570 bne.w 0x147e8 | goto label_99;
| }
0x00014574 ldr r1, [sp, 0x74] | r1 = var_74h;
0x00014576 str r1, [sp, 0x70] | var_70h = r1;
0x00014578 cmp r1, 0 |
| if (r1 != 0) {
0x0001457a bne.w 0x147e8 | goto label_99;
| }
0x0001457e ldr r3, [r6, 0xc] | r3 = *((r6 + 0xc));
0x00014580 str r1, [sp, 0x28] | var_28h = r1;
0x00014582 ldr r0, [r3, 0x1c] | r0 = *((r3 + 0x1c));
0x00014584 bl 0x7514 | fcn_00007514 (r0);
0x00014588 ldr r3, [r6, 8] | r3 = *((r6 + 8));
0x0001458a movs r2, 4 | r2 = 4;
0x0001458c ldr r0, [r6, 0xc] | r0 = *((r6 + 0xc));
0x0001458e cmp r3, 0 |
| if (r3 == 0) {
0x00014590 beq.w 0x147d2 | goto label_100;
| }
0x00014594 ldr r3, [r0, 0x38] | r3 = *((r0 + 0x38));
| if (r3 != 0) {
0x00014596 cbz r3, 0x145ba |
0x00014598 ldrh r3, [r0, 0x10] | r3 = *((r0 + 0x10));
0x0001459a movs r2, 5 | r2 = 5;
0x0001459c ldr r1, [sp, 0x28] | r1 = var_28h;
0x0001459e adds r0, 0x1c | r0 += 0x1c;
0x000145a0 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;
0x000145a4 mov r2, r5 | r2 = r5;
0x000145a6 strh r3, [r0, -0xc] | *((r0 - 0xc)) = r3;
0x000145aa bl 0xe968 | r0 = fcn_0000e968 (r0, r1, r2, r3, r4, r5, r6);
0x000145ae adds r7, r0, 1 | r7 = r0 + 1;
0x000145b0 mov r1, r0 | r1 = r0;
0x000145b2 str r0, [sp, 0x70] | var_70h = r0;
| if (r7 == r0) {
0x000145b4 beq.w 0x147e8 | goto label_99;
| }
0x000145b8 ldr r0, [r6, 0xc] | r0 = *((r6 + 0xc));
| }
0x000145ba ldrh r3, [r0, 0x10] | r3 = *((r0 + 0x10));
0x000145bc movs r2, 3 | r2 = 3;
0x000145be mov r1, r5 | r1 = r5;
0x000145c0 adds r0, 0x1c | r0 += 0x1c;
0x000145c2 bfi r3, r2, 6, 4 | value_4 = BIT_MASK (6, 4);
| value_5 = r2 & value_4;
| value_4 = ~value_4;
| r3 &= value_4;
| r3 |= value_5;
0x000145c6 strh r3, [r0, -0xc] | *((r0 - 0xc)) = r3;
0x000145ca bl 0xda10 | r0 = fcn_0000da10 (r0, r1);
0x000145ce mov r1, r0 | r1 = r0;
0x000145d0 b 0x147e6 | goto label_101;
| label_90:
0x000145d2 ldr r3, [sp, 0x64] | r3 = var_64h;
0x000145d4 adds r3, 1 | r3++;
| if (r3 != 1) {
0x000145d6 bne.w 0x14402 | goto label_17;
| }
0x000145da b 0x14516 | goto label_20;
| label_66:
0x000145dc ldr.w r2, [pc, 0x510] |
0x000145e0 mov r1, r3 | r1 = r3;
0x000145e2 movs r0, 5 | r0 = 5;
0x000145e4 add r2, pc | r2 = 0x290d8;
0x000145e6 bl 0x8960 | fcn_00008960 (r0, r1);
0x000145ea ldr r3, [r6, 0xc] | r3 = *((r6 + 0xc));
0x000145ec mov r7, r3 | r7 = r3;
0x000145ee ldr.w r3, [r3, 0x8c] | r3 = *((r3 + 0x8c));
0x000145f2 cmp r3, 0 |
0x000145f4 it eq |
| if (r3 != 0) {
0x000145f6 moveq r3, 4 | r3 = 4;
| }
0x000145f8 str r3, [r6, 0x78] | *((r6 + 0x78)) = r3;
0x000145fa b 0x14030 | goto label_21;
| label_76:
0x000145fc ldr.w r2, [pc, 0x4f4] |
0x00014600 mov.w r1, -1 | r1 = -1;
0x00014604 ldr r3, [sp, 0x68] | r3 = var_68h;
0x00014606 movs r0, 3 | r0 = 3;
0x00014608 add r2, pc | r2 = 0x29100;
0x0001460a bl 0x8960 | fcn_00008960 (r0, r1);
0x0001460e ldr.w r3, [sl] | r3 = *(sl);
0x00014612 b 0x1424c | goto label_22;
| label_80:
0x00014614 ldr.w r0, [pc, 0x4e0] |
0x00014618 movs r2, 3 | r2 = 3;
0x0001461a ldrb r3, [r5, 4] | r3 = *((r5 + 4));
0x0001461c mov.w r7, -1 | r7 = -1;
0x00014620 movw r1, 0x77c | r1 = 0x77c;
0x00014624 str r7, [sp, 0x74] | var_74h = r7;
0x00014626 add r0, pc |
0x00014628 and r3, r3, 1 | r3 &= 1;
0x0001462c add.w r0, r0, 0x288 | r0 = 0x293aa;
0x00014630 str r3, [sp, 0x24] | var_24h = r3;
0x00014632 bl 0xec20 | fcn_0000ec20 (r0, r1, r2);
0x00014636 ldr r2, [r6, 0xc] | r2 = *((r6 + 0xc));
0x00014638 ldrh r3, [r2, 0x10] | r3 = *((r2 + 0x10));
0x0001463a and r3, r3, 0x3c0 | r3 &= 0x3c0;
0x0001463e cmp.w r3, 0x100 |
| if (r3 == 0x100) {
0x00014642 beq.w 0x14b76 | goto label_102;
| }
| label_34:
0x00014646 ldr.w r0, [pc, 0x4b4] |
0x0001464a movw r1, 0x7a3 | r1 = 0x7a3;
0x0001464e movs r3, 3 | r3 = 3;
0x00014650 add r2, sp, 0x74 | r2 += var_74h;
0x00014652 add r0, pc |
0x00014654 add.w r0, r0, 0x288 | r0 = 0x293dc;
0x00014658 bl 0xecc0 | fcn_0000ecc0 (r0, r1, r2, r3);
0x0001465c ldr r1, [sp, 0x74] | r1 = var_74h;
0x0001465e str r1, [sp, 0x64] | var_64h = r1;
0x00014660 cmp r1, 0 |
| if (r1 != 0) {
0x00014662 bne.w 0x148ba | goto label_103;
| }
0x00014666 ldr.w r3, [r6, 0x108] | r3 = *((r6 + 0x108));
0x0001466a cmp r3, 0 |
| if (r3 > 0) {
0x0001466c ble 0x1468c |
0x0001466e ldr r2, [r6, 0x74] | r2 = *((r6 + 0x74));
0x00014670 cmp r3, r2 |
| if (r3 <= r2) {
0x00014672 ble 0x1468c | goto label_104;
| }
0x00014674 ldr.w r3, [r6, 0x10c] | r3 = *((r6 + 0x10c));
0x00014678 mov.w r1, -1 | r1 = -1;
0x0001467c movs r0, 3 | r0 = 3;
0x0001467e ldr.w r3, [r3, r2, lsl 2] | offset_6 = r2 << 2;
| r3 = *((r3 + offset_6));
0x00014682 ldr.w r2, [pc, 0x47c] |
0x00014686 add r2, pc | r2 = 0x2918c;
0x00014688 bl 0x8960 | fcn_00008960 (r0, r1);
| }
| label_104:
0x0001468c ldr r1, [r6, 0x44] | r1 = *((r6 + 0x44));
0x0001468e cmp r1, 0 |
| if (r1 == 0) {
0x00014690 beq.w 0x1484a | goto label_105;
| }
0x00014694 add r7, sp, 0x90 | r7 += var_90h;
0x00014696 movs r2, 0x38 | r2 = 0x38;
0x00014698 movs r1, 0 | r1 = 0;
0x0001469a mov r0, r7 | r0 = r7;
0x0001469c blx 0x257c | fcn_0000257c ();
0x000146a0 ldr r3, [r6, 0xc] | r3 = *((r6 + 0xc));
0x000146a2 mov.w r1, -1 | r1 = -1;
0x000146a6 ldr.w r2, [pc, 0x45c] |
0x000146aa movs r0, 3 | r0 = 3;
0x000146ac ldr r3, [r3] | r3 = *(r3);
0x000146ae add r2, pc | r2 = 0x291b8;
0x000146b0 bl 0x8960 | fcn_00008960 (r0, r1);
0x000146b4 ldr.w r3, [r6, 0x108] | r3 = *((r6 + 0x108));
0x000146b8 cmp r3, 0 |
| if (r3 > 0) {
0x000146ba ble 0x146c4 |
0x000146bc ldr r2, [r6, 0x74] | r2 = *((r6 + 0x74));
0x000146be cmp r3, r2 |
| if (r3 > r2) {
0x000146c0 bgt.w 0x14c68 | goto label_106;
| }
| }
0x000146c4 ldr r3, [r6] | r3 = *(r6);
| label_38:
0x000146c6 ldr r2, [sp, 0x24] | r2 = var_24h;
0x000146c8 mov r1, r7 | r1 = r7;
0x000146ca str r3, [sp, 0x94] | var_94h = r3;
0x000146cc ldr r3, [r6, 0x78] | r3 = *((r6 + 0x78));
0x000146ce ldr r0, [r6, 0x58] | r0 = *((r6 + 0x58));
0x000146d0 strd r3, r2, [sp, 0x98] | __asm ("strd r3, r2, [sp, 0x98]");
0x000146d4 ldr r3, [r6, 0x44] | r3 = *((r6 + 0x44));
0x000146d6 blx r3 | uint32_t (*r3)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x000146d8 ldr r3, [r6, 0x28] | r3 = *((r6 + 0x28));
0x000146da strd sb, sb, [r6, 0x44] | __asm ("strd sb, sb, [r6, 0x44]");
| if (r3 != 0) {
0x000146de cbz r3, 0x14702 |
| label_30:
0x000146e0 ldr.w r7, [pc, 0x424] |
0x000146e4 ldr r3, [r6, 0xc] | r3 = *((r6 + 0xc));
0x000146e6 add r7, pc | r7 = 0x291f2;
| label_36:
0x000146e8 ldr.w r2, [pc, 0x420] |
0x000146ec mov.w r1, -1 | r1 = -1;
0x000146f0 ldr r3, [r3] | r3 = *(r3);
0x000146f2 movs r0, 3 | r0 = 3;
0x000146f4 add r2, pc | r2 = 0x29204;
0x000146f6 bl 0x8960 | r0 = fcn_00008960 (r0, r1);
0x000146fa ldrd r3, r0, [r6, 0x28] | __asm ("ldrd r3, r0, [r6, 0x28]");
0x000146fe mov r1, r7 | r1 = r7;
0x00014700 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r1, r3);
| }
| label_29:
0x00014702 ldr r3, [r6, 0xc] | r3 = *((r6 + 0xc));
| label_37:
0x00014704 ldr.w r3, [r3, 0x8c] | r3 = *((r3 + 0x8c));
0x00014708 cmp r3, 4 |
| if (r3 > 4) {
0x0001470a bgt.w 0x14b50 | goto label_107;
| }
| label_31:
0x0001470e mov r0, r5 | r0 = r5;
0x00014710 bl 0x5d00 | fcn_00005d00 (r0);
0x00014714 b 0x14248 | goto label_7;
| label_79:
0x00014716 ldr r3, [r6, 0xc] | r3 = *((r6 + 0xc));
0x00014718 mov.w r1, -1 | r1 = -1;
0x0001471c ldr r2, [pc, 0x3f0] |
0x0001471e movs r0, 3 | r0 = 3;
0x00014720 ldr r3, [r3] | r3 = *(r3);
0x00014722 add r2, pc | r2 = 0x29236;
0x00014724 bl 0x8960 | fcn_00008960 (r0, r1);
0x00014728 b 0x14220 | goto label_23;
| label_83:
0x0001472a ldr r3, [r6, 0x30] | r3 = *((r6 + 0x30));
| if (r3 != 0) {
0x0001472c cbz r3, 0x1474c |
0x0001472e ldr r3, [r6, 0xc] | r3 = *((r6 + 0xc));
0x00014730 mov.w r1, -1 | r1 = -1;
0x00014734 ldr r2, [pc, 0x3dc] |
0x00014736 movs r0, 3 | r0 = 3;
0x00014738 ldr r3, [r3] | r3 = *(r3);
0x0001473a add r2, pc | r2 = 0x29252;
0x0001473c bl 0x8960 | r0 = fcn_00008960 (r0, r1);
0x00014740 ldrd r3, r0, [r6, 0x30] | __asm ("ldrd r3, r0, [r6, 0x30]");
0x00014744 add.w r1, r5, 0x10 | r1 = r5 + 0x10;
0x00014748 ldrb r2, [r5, 8] | r2 = *((r5 + 8));
0x0001474a blx r3 | uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r1, r2, r3);
| }
0x0001474c mov r0, r5 | r0 = r5;
0x0001474e bl 0x507c | fcn_0000507c (r0);
0x00014752 b 0x14248 | goto label_7;
| label_77:
0x00014754 ldr r2, [pc, 0x3c0] |
0x00014756 mov.w r1, -1 | r1 = -1;
0x0001475a ldr r3, [sp, 0x68] | r3 = var_68h;
0x0001475c movs r0, 5 | r0 = 5;
0x0001475e add r2, pc | r2 = 0x2927a;
0x00014760 bl 0x8960 | fcn_00008960 (r0, r1);
0x00014764 ldr r0, [sp, 0x68] | r0 = var_68h;
0x00014766 bl 0x78c0 | fcn_000078c0 (r0);
0x0001476a ldr.w r3, [sl] | r3 = *(sl);
0x0001476e b 0x1424c | goto label_22;
| label_87:
0x00014786 ldr r3, [pc, 0x398] | r3 = *(0x14b22);
0x00014788 ldr.w r3, [fp, r3] | r3 = *((fp + r3));
0x0001478c ldr r0, [r3] | r0 = *(0x14b22);
0x0001478e bl 0xa4c0 | fcn_0000a4c0 (r0);
0x00014792 b 0x14300 | goto label_24;
| label_86:
0x00014794 blx 0x2490 | localtime (r0);
0x00014798 ldr r2, [pc, 0x388] |
0x0001479a mov r3, r0 | r3 = r0;
0x0001479c mov r1, r4 | r1 = r4;
0x0001479e movs r0, 5 | r0 = 5;
0x000147a0 add r2, pc | r2 = 0x292c8;
0x000147a2 bl 0x8960 | fcn_00008960 (r0, r1);
0x000147a6 b 0x142f0 | goto label_25;
| label_69:
0x000147a8 mov r0, r7 | r0 = r7;
0x000147aa adds r0, 0x1c | r0 += 0x1c;
0x000147ac bl 0xe6a0 | r0 = fcn_0000e6a0 (r0, r1, r2, r3, r4, r5, r6);
0x000147b0 adds.w r3, r0, 0x16 | r3 = r0 + 0x16;
0x000147b4 mov r1, r0 | r1 = r0;
0x000147b6 it ne |
| if (r3 == r0) {
0x000147b8 movne r3, 1 | r3 = 1;
| }
0x000147ba str r0, [sp, 0x70] | var_70h = r0;
0x000147bc cmp.w r0, -1 |
0x000147c0 ite eq |
| if (r0 != -1) {
0x000147c2 moveq r2, 0 | r2 = 0;
| }
| if (r0 == -1) {
0x000147c4 andne r2, r3, 1 | r2 = r3 & 1;
| }
0x000147c8 cmp r2, 0 |
| if (r2 == 0) {
0x000147ca beq.w 0x14074 | goto label_26;
| }
0x000147ce ldr r0, [r6, 0xc] | r0 = *((r6 + 0xc));
0x000147d0 movs r2, 4 | r2 = 4;
| label_100:
0x000147d2 ldrh r3, [r0, 0x10] | r3 = *((r0 + 0x10));
0x000147d4 bfi r3, r2, 6, 4 | value_7 = BIT_MASK (6, 4);
| value_8 = r2 & value_7;
| value_7 = ~value_7;
| r3 &= value_7;
| r3 |= value_8;
0x000147d8 strh r3, [r0, 0x10] | *((r0 + 0x10)) = r3;
0x000147da ldr r1, [r6, 0x78] | r1 = *((r6 + 0x78));
0x000147dc ldrd r2, r3, [r6, 0x12c] | __asm ("ldrd r2, r3, [r6, 0x12c]");
0x000147e0 bl 0x593c | r0 = fcn_0000593c (r0, r1, r2, r3);
0x000147e4 mov r1, r0 | r1 = r0;
| label_101:
0x000147e6 str r1, [sp, 0x70] | var_70h = r1;
| label_99:
0x000147e8 adds.w r3, r1, 0x16 | r3 = r1 + 0x16;
0x000147ec it ne |
| if (r3 == r1) {
0x000147ee movne r3, 1 | r3 = 1;
| }
0x000147f0 b 0x14074 | goto label_26;
| label_91:
0x000147f2 mov r0, r5 | r0 = r5;
0x000147f4 ldr r1, [sp, 0x68] | r1 = var_68h;
0x000147f6 bl 0x2fe8 | fcn_00002fe8 (r0, r1);
0x000147fa movs r5, 0 | r5 = 0;
0x000147fc str r0, [sp, 0x64] | var_64h = r0;
0x000147fe b 0x140c0 | goto label_16;
| label_51:
0x00014800 ldr r3, [pc, 0x324] |
0x00014802 add r0, sp, 0x50 | r0 += var_50h;
0x00014804 str r0, [sp, 0x44] | var_44h = r0;
0x00014806 add r3, pc |
0x00014808 ldrb r7, [r3, 8] | r7 = *((r3 + 8));
0x0001480a add.w r1, r3, 0x10 | r1 = r3 + 0x10;
0x0001480e strd r7, r3, [sp, 0x24] | __asm ("strd r7, r3, [sp, 0x24]");
0x00014812 blx 0x2570 | fcn_00002570 ();
0x00014816 ldr r3, [sp, 0x28] | r3 = var_28h;
0x00014818 cmp r7, 0x7f |
0x0001481a ldr r0, [sp, 0x44] | r0 = var_44h;
0x0001481c ldrb.w ip, [r5] | ip = *(r5);
0x00014820 ldr r3, [r3, 0xc] | r3 = *(0x2933e);
0x00014822 and ip, ip, 0xf0 |
0x00014826 str r3, [sp, 0x40] | var_40h = r3;
0x00014828 ite le |
| if (r7 > 0x7f) {
0x0001482a movle r3, 0 | r3 = 0;
| }
| if (r7 <= 0x7f) {
0x0001482c movgt r3, 1 | r3 = 1;
| }
0x0001482e cmp.w ip, 0x70 |
0x00014832 str r3, [sp, 0x28] | var_28h = r3;
0x00014834 ldm r0, {r0, r1, r2, r3} | r0 = *(r0);
| r1 = *((r0 + 4));
| r2 = *((r0 + 8));
| r3 = *((r0 + 12));
0x00014836 stm.w r4, {r0, r1, r2, r3} | *(r4) = r0;
| *((r4 + 4)) = r1;
| *((r4 + 8)) = r2;
| *((r4 + 12)) = r3;
| if (ip != 0x70) {
0x0001483a bne.w 0x14480 | goto label_27;
| }
| label_52:
0x0001483e ldr r1, [sp, 0x68] | r1 = var_68h;
0x00014840 mov r0, r5 | r0 = r5;
0x00014842 bl 0x3884 | fcn_00003884 (r0, r1);
0x00014846 str r0, [sp, 0x64] | var_64h = r0;
0x00014848 b 0x14490 | goto label_28;
| label_105:
0x0001484a ldr r2, [r6, 0x4c] | r2 = *((r6 + 0x4c));
0x0001484c ldr r3, [r6, 0xc] | r3 = *((r6 + 0xc));
0x0001484e cmp r2, 0 |
| if (r2 == 0) {
0x00014850 beq.w 0x14c58 | goto label_108;
| }
0x00014854 movs r2, 0x50 | r2 = 0x50;
0x00014856 add r0, sp, 0x94 | r0 += var_94h;
0x00014858 str r3, [sp, 0x28] | var_28h = r3;
0x0001485a blx 0x257c | fcn_0000257c ();
0x0001485e ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x00014860 mov.w r1, -1 | r1 = -1;
0x00014864 ldr r2, [pc, 0x2c4] |
0x00014866 movs r0, 3 | r0 = 3;
0x00014868 str r3, [sp, 0x90] | var_90h = r3;
0x0001486a ldr r3, [sp, 0x28] | r3 = var_28h;
0x0001486c add r2, pc | r2 = 0x2939c;
0x0001486e ldr r3, [r3] | r3 = *(r3);
0x00014870 bl 0x8960 | fcn_00008960 (r0, r1);
0x00014874 ldr.w r3, [r6, 0x108] | r3 = *((r6 + 0x108));
0x00014878 add.w ip, sp, 0xa0 |
0x0001487c ldr r1, [sp, 0x24] | r1 = var_24h;
0x0001487e ldr r7, [r6, 0x4c] | r7 = *((r6 + 0x4c));
0x00014880 cmp r3, 0 |
0x00014882 ittet gt |
| if (r3 <= 0) {
0x00014884 ldrgt r2, [r6, 0x74] | r2 = *((r6 + 0x74));
| }
| if (r3 <= 0) {
0x00014886 ldrgt r3, [r6, 0x10c] | r3 = *((r6 + 0x10c));
| }
| if (r3 <= 0) {
0x0001488a ldrgt r3, [r6] | r3 = *(r6);
| }
| if (r3 > 0) {
0x0001488c ldr.w r3, [r3, r2, lsl 2] | offset_9 = r2 << 2;
| r3 = *((r3 + offset_9));
| }
0x00014890 ldr r2, [r6, 0x78] | r2 = *((r6 + 0x78));
0x00014892 str r3, [sp, 0xb0] | var_b0h = r3;
0x00014894 add.w r3, r5, 0x10 | r3 = r5 + 0x10;
0x00014898 strd r2, r1, [sp, 0xb4] | __asm ("strd r2, r1, [sp, 0xb4]");
0x0001489c ldm r3, {r0, r1, r2, r3} | r0 = *(r3);
| r1 = *((r3 + 4));
| r2 = *((r3 + 8));
| r3 = *((r3 + 12));
0x0001489e stm.w ip, {r0, r1, r2, r3} | *(ip) = r0;
| *((ip + 4)) = r1;
| *((ip + 8)) = r2;
| *((ip + 12)) = r3;
0x000148a2 add r1, sp, 0x90 | r1 += var_90h;
0x000148a4 ldrb r3, [r5, 8] | r3 = *((r5 + 8));
0x000148a6 ldr r0, [r6, 0x58] | r0 = *((r6 + 0x58));
0x000148a8 str r3, [sp, 0x9c] | var_9ch = r3;
0x000148aa blx r7 | uint32_t (*r7)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x000148ac ldr r3, [r6, 0x28] | r3 = *((r6 + 0x28));
0x000148ae strd sb, sb, [r6, 0x4c] | __asm ("strd sb, sb, [r6, 0x4c]");
0x000148b2 cmp r3, 0 |
| if (r3 == 0) {
0x000148b4 beq.w 0x14702 | goto label_29;
| }
0x000148b8 b 0x146e0 | goto label_30;
| label_103:
0x000148ba ldr r2, [pc, 0x274] |
0x000148bc mov r0, r6 | r0 = r6;
0x000148be add r2, pc | r2 = 0x293f4;
0x000148c0 bl 0x13c74 | fcn_00013c74 (r0, r1, r2, r3);
0x000148c4 b 0x1470e | goto label_31;
| label_84:
0x000148c6 ldr.w r0, [r6, 0xe4] | r0 = *((r6 + 0xe4));
0x000148ca mov r1, r7 | r1 = r7;
0x000148cc str r7, [sp, 0x24] | var_24h = r7;
0x000148ce bl 0xc4fc | r0 = fcn_0000c4fc (r0, r1);
0x000148d2 cmp r0, 0 |
| if (r0 == 0) {
0x000148d4 beq.w 0x14dd8 | goto label_109;
| }
| label_43:
0x000148d8 ldr.w lr, [r6, 0xc] |
0x000148dc ldr r3, [r5, 0x1c] | r3 = *((r5 + 0x1c));
0x000148de ldr.w r1, [lr, 0x8c] | r1 = *((lr + 0x8c));
0x000148e2 ldr r2, [r3, 0xc] | r2 = *((r3 + 0xc));
0x000148e4 cmp r1, 4 |
| if (r1 <= 4) {
0x000148e6 ble.w 0x14c20 | goto label_110;
| }
0x000148ea cmp r2, 1 |
| if (r2 == 1) {
0x000148ec beq.w 0x14cde | goto label_111;
| }
0x000148f0 ldr r1, [sp, 0x24] | r1 = var_24h;
0x000148f2 ldr r1, [r1, 0xc] | r1 = *((r1 + 0xc));
0x000148f4 cmp r1, 0 |
| if (r1 != 0) {
0x000148f6 beq 0x14956 |
0x000148f8 ldr r3, [r3] | r3 = *(r3);
0x000148fa cmp r2, 1 |
0x000148fc ldr r3, [r3, 8] | r3 = *((r3 + 8));
0x000148fe ldr r3, [r3] | r3 = *(r3);
0x00014900 str r2, [sp, 0xb0] | var_b0h = r2;
0x00014902 str r3, [sp, 0x9c] | var_9ch = r3;
| if (r2 <= 1) {
0x00014904 ble.w 0x14eac | goto label_112;
| }
0x00014908 ldr r0, [pc, 0x228] |
0x0001490a lsls r2, r2, 2 | r2 <<= 2;
0x0001490c movw r1, 0x862 | r1 = 0x862;
0x00014910 str.w sb, [sp, 0x80] | __asm ("str.w sb, [var_80h]");
0x00014914 add r0, pc | r0 = 0x2944c;
0x00014916 bl 0xf12c | fcn_0000f12c (r0, r1, r2);
0x0001491a str r0, [sp, 0x28] | var_28h = r0;
0x0001491c str r0, [sp, 0xb4] | var_b4h = r0;
0x0001491e cmp r0, 0 |
| if (r0 != 0) {
0x00014920 bne.w 0x14f8a | goto label_113;
| }
0x00014924 ldr r7, [sp, 0x24] | r7 = var_24h;
0x00014926 add.w r3, r5, 0xc | r3 = r5 + 0xc;
0x0001492a ldr.w lr, [r6, 0xc] |
0x0001492e add.w ip, sp, 0xa0 |
0x00014932 ldr r2, [r7, 0x14] | r2 = *((r7 + 0x14));
0x00014934 str r2, [sp, 0x98] | var_98h = r2;
0x00014936 ldm r3, {r0, r1, r2, r3} | r0 = *(r3);
| r1 = *((r3 + 4));
| r2 = *((r3 + 8));
| r3 = *((r3 + 12));
0x00014938 stm.w ip, {r0, r1, r2, r3} | *(ip) = r0;
| *((ip + 4)) = r1;
| *((ip + 8)) = r2;
| *((ip + 12)) = r3;
0x0001493c ldr r2, [pc, 0x1f8] |
0x0001493e ldr.w r3, [lr] | r3 = *(lr);
0x00014942 add r2, pc | r2 = 0x2947e;
| label_48:
0x00014944 mov.w r1, -1 | r1 = -1;
0x00014948 movs r0, 3 | r0 = 3;
0x0001494a bl 0x8960 | fcn_00008960 (r0, r1);
0x0001494e ldr r3, [r7, 0xc] | r3 = *((r7 + 0xc));
0x00014950 add r1, sp, 0x90 | r1 += var_90h;
0x00014952 ldr r0, [r7, 0x18] | r0 = *((r7 + 0x18));
0x00014954 blx r3 | uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
| }
| label_35:
0x00014956 ldr r7, [sp, 0x24] | r7 = var_24h;
0x00014958 mov r0, r7 | r0 = r7;
0x0001495a bl 0x11bf4 | fcn_00011bf4 (r0);
0x0001495e ldr r0, [pc, 0x1dc] |
0x00014960 mov r2, r7 | r2 = r7;
0x00014962 movw r1, 0x422 | r1 = 0x422;
0x00014966 add r0, pc | r0 = 0x294a8;
0x00014968 bl 0xf264 | fcn_0000f264 (r0, r1, r2);
0x0001496c ldr r3, [r6, 0xc] | r3 = *((r6 + 0xc));
0x0001496e mov r0, r5 | r0 = r5;
0x00014970 ldr r1, [r3, 0x1c] | r1 = *((r3 + 0x1c));
0x00014972 bl 0xab2c | fcn_0000ab2c (r0, r1);
0x00014976 b 0x14248 | goto label_7;
| label_97:
0x00014978 ldr.w r0, [r6, 0xe4] | r0 = *((r6 + 0xe4));
0x0001497c mov r1, r3 | r1 = r3;
0x0001497e ldr r5, [sp, 0x2c] | r5 = var_2ch;
0x00014980 str r3, [sp, 0x2c] | var_2ch = r3;
0x00014982 bl 0xc4fc | r0 = fcn_0000c4fc (r0, r1);
0x00014986 cmp r0, 0 |
| if (r0 == 0) {
0x00014988 beq.w 0x14de8 | goto label_114;
| }
| label_44:
0x0001498c ldr r2, [sp, 0x2c] | r2 = var_2ch;
0x0001498e ldr r1, [r2, 4] | r1 = *((r2 + 4));
0x00014990 cmp r1, 0 |
| if (r1 == 0) {
0x00014992 beq.w 0x14d5c | goto label_115;
| }
0x00014996 ldr r3, [r6, 0xc] | r3 = *((r6 + 0xc));
0x00014998 mov r5, r2 | r5 = r2;
0x0001499a ldr r2, [r2, 0x14] | r2 = *((r2 + 0x14));
0x0001499c mov.w r1, -1 | r1 = -1;
0x000149a0 movs r0, 3 | r0 = 3;
0x000149a2 ldr r3, [r3] | r3 = *(r3);
0x000149a4 str r2, [sp, 0x90] | var_90h = r2;
0x000149a6 ldr r2, [r5, 0x34] | r2 = *((r5 + 0x34));
0x000149a8 str r2, [sp, 0xc4] | var_c4h = r2;
0x000149aa ldr r2, [r5, 0x3c] | r2 = *((r5 + 0x3c));
0x000149ac str r2, [sp, 0xa0] | var_a0h = r2;
0x000149ae ldr r2, [r5, 0x38] | r2 = *((r5 + 0x38));
0x000149b0 str r2, [sp, 0x9c] | var_9ch = r2;
0x000149b2 ldr r2, [r5, 0x40] | r2 = *((r5 + 0x40));
0x000149b4 str r2, [sp, 0xa4] | var_4ch = r2;
0x000149b6 ldr r2, [r5, 0x44] | r2 = *((r5 + 0x44));
0x000149b8 str r2, [sp, 0xa8] | var_a8h = r2;
0x000149ba ldr r2, [pc, 0x184] |
0x000149bc add r2, pc | r2 = 0x29502;
0x000149be bl 0x8960 | fcn_00008960 (r0, r1);
0x000149c2 ldr r3, [r5, 4] | r3 = *((r5 + 4));
0x000149c4 add r1, sp, 0x90 | r1 += var_90h;
0x000149c6 ldr r0, [r5, 0x18] | r0 = *((r5 + 0x18));
0x000149c8 blx r3 | uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
| label_42:
0x000149ca ldr r5, [sp, 0x2c] | r5 = var_2ch;
0x000149cc mov r0, r5 | r0 = r5;
0x000149ce bl 0x11bf4 | fcn_00011bf4 (r0);
0x000149d2 ldr r0, [pc, 0x170] |
0x000149d4 mov r2, r5 | r2 = r5;
0x000149d6 movw r1, 0x422 | r1 = 0x422;
0x000149da add r0, pc | r0 = 0x29524;
0x000149dc bl 0xf264 | fcn_0000f264 (r0, r1, r2);
0x000149e0 ldr r3, [sp, 0x40] | r3 = var_40h;
0x000149e2 cmp r3, 4 |
| if (r3 <= 4) {
0x000149e4 ble.w 0x140be | goto label_15;
| }
0x000149e8 b 0x144f6 | goto label_32;
| label_85:
0x000149ea ldr.w r0, [r6, 0xe4] | r0 = *((r6 + 0xe4));
0x000149ee mov r1, r7 | r1 = r7;
0x000149f0 bl 0xc4fc | r0 = fcn_0000c4fc (r0, r1);
0x000149f4 cmp r0, 0 |
| if (r0 == 0) {
0x000149f6 beq.w 0x14df8 | goto label_116;
| }
| label_45:
0x000149fa ldr r3, [r7, 4] | r3 = *((r7 + 4));
0x000149fc cmp r3, 0 |
| if (r3 == 0) {
0x000149fe beq.w 0x14d52 | goto label_117;
| }
| label_41:
0x00014a02 ldr r3, [r6, 0xc] | r3 = *((r6 + 0xc));
0x00014a04 mov.w r1, -1 | r1 = -1;
0x00014a08 ldr r2, [pc, 0x13c] |
0x00014a0a movs r0, 3 | r0 = 3;
0x00014a0c ldr r3, [r3] | r3 = *(r3);
0x00014a0e add r2, pc | r2 = 0x2955a;
0x00014a10 str r2, [sp, 0x24] | var_24h = r2;
0x00014a12 bl 0x8960 | fcn_00008960 (r0, r1);
0x00014a16 ldr r1, [r7, 4] | r1 = *((r7 + 4));
0x00014a18 cmp r1, 0 |
| if (r1 == 0) {
0x00014a1a beq.w 0x14c72 | goto label_118;
| }
0x00014a1e add r3, sp, 0x90 | r3 += var_90h;
0x00014a20 movs r1, 0 | r1 = 0;
0x00014a22 mov r0, r3 | r0 = r3;
0x00014a24 movs r2, 0x38 | r2 = 0x38;
0x00014a26 blx 0x257c | fcn_0000257c ();
0x00014a2a ldr r3, [r7, 0x14] | r3 = *((r7 + 0x14));
0x00014a2c mov r1, r0 | r1 = r0;
0x00014a2e ldr r0, [r7, 0x18] | r0 = *((r7 + 0x18));
0x00014a30 str r3, [sp, 0x90] | var_90h = r3;
0x00014a32 ldr r3, [r7, 4] | r3 = *((r7 + 4));
0x00014a34 blx r3 | uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
| label_39:
0x00014a36 mov r0, r7 | r0 = r7;
0x00014a38 bl 0x11bf4 | fcn_00011bf4 (r0);
0x00014a3c ldr r0, [pc, 0x10c] |
0x00014a3e mov r2, r7 | r2 = r7;
0x00014a40 movw r1, 0x422 | r1 = 0x422;
0x00014a44 add r0, pc | r0 = 0x29594;
0x00014a46 bl 0xf264 | fcn_0000f264 (r0, r1, r2);
0x00014a4a b 0x1429a | goto label_33;
| label_95:
0x00014a4c ldr r1, [sp, 0x68] | r1 = var_68h;
0x00014a4e mov r0, r5 | r0 = r5;
0x00014a50 bl 0x3404 | fcn_00003404 (r0, r1);
0x00014a54 str r0, [sp, 0x64] | var_64h = r0;
0x00014a56 b 0x14490 | goto label_28;
| label_107:
0x00014b50 add.w r7, r5, 0x10 | r7 = r5 + 0x10;
0x00014b54 movs r1, 0x21 | r1 = 0x21;
0x00014b56 mov r0, r7 | r0 = r7;
0x00014b58 blx 0x2770 | r0 = fcn_00002770 ();
0x00014b5c cmp r0, 0 |
| if (r0 == 0) {
0x00014b5e beq.w 0x1470e | goto label_31;
| }
0x00014b62 mov r0, r7 | r0 = r7;
0x00014b64 movs r1, 0x21 | r1 = 0x21;
0x00014b66 blx 0x254c | fcn_0000254c ();
0x00014b6a ldr r3, [r6, 0xc] | r3 = *((r6 + 0xc));
0x00014b6c ldr r2, [r3, 0x58] | r2 = *((r3 + 0x58));
0x00014b6e cmp r2, r0 |
0x00014b70 it gt |
| if (r2 <= r0) {
0x00014b72 strgt r0, [r3, 0x58] | *((r3 + 0x58)) = r0;
| }
0x00014b74 b 0x1470e | goto label_31;
| label_102:
0x00014b76 ldrb r1, [r5, 8] | r1 = *((r5 + 8));
0x00014b78 movs r0, 4 | r0 = 4;
0x00014b7a ldr r3, [r2, 0x1c] | r3 = *((r2 + 0x1c));
0x00014b7c str r1, [sp, 4] | var_4h = r1;
0x00014b7e movs r1, 1 | r1 = 1;
0x00014b80 ldr r2, [r2] | r2 = *(r2);
0x00014b82 str r2, [sp] | *(sp) = r2;
0x00014b84 movs r2, 0 | r2 = 0;
0x00014b86 bl 0x8960 | fcn_00008960 (r0, r1);
0x00014b8a ldrb r3, [r5, 8] | r3 = *((r5 + 8));
0x00014b8c str r3, [sp, 0x74] | var_74h = r3;
0x00014b8e cmp r3, 0 |
| if (r3 != 0) {
0x00014b90 bne 0x14c00 | goto label_119;
| }
0x00014b92 ldr r0, [r6, 0xc] | r0 = *((r6 + 0xc));
0x00014b94 str.w r3, [r6, 0x124] | __asm ("str.w r3, [r6, 0x124]");
0x00014b98 ldrh r3, [r0, 0x10] | r3 = *((r0 + 0x10));
0x00014b9a bic r3, r3, 0x3cc | r3 = BIT_MASK (r3, 0x3cc);
0x00014b9e orr r3, r3, 0xc | r3 |= 0xc;
0x00014ba2 lsls r1, r3, 0x1e | r1 = r3 << 0x1e;
0x00014ba4 strh r3, [r0, 0x10] | *((r0 + 0x10)) = r3;
| if (r1 != r3) {
0x00014ba6 bne.w 0x14e96 | goto label_120;
| }
0x00014baa ldr.w r3, [r0, 0x8c] | r3 = *((r0 + 0x8c));
0x00014bae cmp r3, 3 |
| if (r3 > 3) {
0x00014bb0 ble 0x14bba |
0x00014bb2 ldrb r3, [r5, 4] | r3 = *((r5 + 4));
0x00014bb4 lsls r2, r3, 0x1f | r2 = r3 << 0x1f;
| if (r2 >= r3) {
0x00014bb6 bpl.w 0x14e88 | goto label_121;
| }
| }
| label_47:
0x00014bba ldr r0, [r0, 0x64] | r0 = *((r0 + 0x64));
0x00014bbc ldr r3, [r0, 0xc] | r3 = *((r0 + 0xc));
0x00014bbe cmp r3, 0 |
| if (r3 <= 0) {
0x00014bc0 ble 0x14c00 | goto label_119;
| }
0x00014bc2 str.w sb, [sp, 0x78] | __asm ("str.w sb, [var_78h]");
0x00014bc6 strd sb, sb, [sp, 0x80] | __asm ("strd sb, sb, [sp, 0x80]");
0x00014bca b 0x14bdc |
| while (r0 != 0) {
0x00014bcc ldr r3, [sp, 0x78] | r3 = var_78h;
0x00014bce ldr r3, [r3, 8] | r3 = *((r3 + 8));
0x00014bd0 str.w sb, [r3, 0x24] | __asm ("str.w sb, [r3, 0x24]");
0x00014bd4 str.w sb, [r3, 0x28] | __asm ("str.w sb, [r3, 0x28]");
0x00014bd8 ldr r3, [r6, 0xc] | r3 = *((r6 + 0xc));
0x00014bda ldr r0, [r3, 0x64] | r0 = *((r3 + 0x64));
0x00014bdc mov r1, r8 | r1 = r8;
0x00014bde bl 0xc77c | r0 = fcn_0000c77c (r0, r1);
0x00014be2 cmp r0, 0 |
0x00014be4 bne 0x14bcc |
| }
0x00014be6 movs r3, 1 | r3 = 1;
0x00014be8 ldm.w r4, {r0, r1} | r0 = *(r4);
| r1 = *((r4 + 4));
0x00014bec mov r2, r3 | r2 = r3;
0x00014bee bl 0x3c60 | fcn_00003c60 (r0, r1, r2);
0x00014bf2 ldr r3, [r6, 0xc] | r3 = *((r6 + 0xc));
0x00014bf4 ldrb r3, [r3, 0x10] | r3 = *((r3 + 0x10));
0x00014bf6 lsls r3, r3, 0x1d | r3 <<= 0x1d;
0x00014bf8 itt pl |
| if (r3 < r3) {
0x00014bfa mvnpl r3, 2 | r3 = ~2;
| }
| if (r3 >= r3) {
0x00014bfe str r3, [sp, 0x74] | var_74h = r3;
| }
| label_119:
0x00014c00 ldr r2, [sp, 0xc] | r2 = var_ch;
0x00014c02 ldr.w r3, [pc, 0x484] | r3 = *(0x1508a);
0x00014c06 str.w sb, [r6, 0xec] | __asm ("str.w sb, [r6, 0xec]");
0x00014c0a ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x00014c0c ldr r0, [r3] | r0 = *(0x1508a);
0x00014c0e bl 0xa4c0 | fcn_0000a4c0 (r0);
0x00014c12 b 0x14646 | goto label_34;
| label_96:
0x00014c14 ldr r1, [sp, 0x68] | r1 = var_68h;
0x00014c16 mov r0, r5 | r0 = r5;
0x00014c18 bl 0x3280 | fcn_00003280 (r0, r1);
0x00014c1c str r0, [sp, 0x64] | var_64h = r0;
0x00014c1e b 0x14490 | goto label_28;
| label_110:
0x00014c20 cmp r2, 1 |
| if (r2 == 1) {
0x00014c22 beq 0x14cc4 | goto label_122;
| }
0x00014c24 ldr r3, [sp, 0x24] | r3 = var_24h;
0x00014c26 ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x00014c28 cmp r3, 0 |
| if (r3 == 0) {
0x00014c2a beq.w 0x14956 | goto label_35;
| }
0x00014c2e cmp r2, 1 |
| if (r2 > 1) {
0x00014c30 bgt.w 0x14f30 | goto label_123;
| }
| label_40:
0x00014c34 ldr r7, [sp, 0x24] | r7 = var_24h;
0x00014c36 ldr.w r3, [lr] | r3 = *(lr);
0x00014c3a ldr r2, [r7, 0x14] | r2 = *((r7 + 0x14));
0x00014c3c str r2, [sp, 0x90] | var_90h = r2;
0x00014c3e ldr.w r2, [pc, 0x44c] |
0x00014c42 add r2, pc | r2 = 0x29cd4;
| label_50:
0x00014c44 mov.w r1, -1 | r1 = -1;
0x00014c48 movs r0, 3 | r0 = 3;
0x00014c4a bl 0x8960 | fcn_00008960 (r0, r1);
0x00014c4e ldr r3, [r7, 4] | r3 = *((r7 + 4));
0x00014c50 add r1, sp, 0x90 | r1 += var_90h;
0x00014c52 ldr r0, [r7, 0x18] | r0 = *((r7 + 0x18));
0x00014c54 blx r3 | uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
0x00014c56 b 0x14956 | goto label_35;
| label_108:
0x00014c58 ldr r2, [r6, 0x28] | r2 = *((r6 + 0x28));
0x00014c5a ldr.w r7, [pc, 0x434] |
0x00014c5e add r7, pc | r7 = 0x29cf4;
0x00014c60 cmp r2, 0 |
| if (r2 != 0) {
0x00014c62 bne.w 0x146e8 | goto label_36;
| }
0x00014c66 b 0x14704 | goto label_37;
| label_106:
0x00014c68 ldr.w r3, [r6, 0x10c] | r3 = *((r6 + 0x10c));
0x00014c6c ldr.w r3, [r3, r2, lsl 2] | offset_10 = r2 << 2;
| r3 = *((r3 + offset_10));
0x00014c70 b 0x146c6 | goto label_38;
| label_118:
0x00014c72 movs r2, 0x50 | r2 = 0x50;
0x00014c74 add r0, sp, 0x94 | r0 += var_94h;
0x00014c76 str r1, [sp, 0x28] | var_28h = r1;
0x00014c78 blx 0x257c | fcn_0000257c ();
0x00014c7c ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x00014c7e str r3, [sp, 0x90] | var_90h = r3;
0x00014c80 ldr r3, [r5, 0x1c] | r3 = *((r5 + 0x1c));
0x00014c82 ldr r0, [r3] | r0 = *(r3);
0x00014c84 ldr r2, [r3, 0xc] | r2 = *((r3 + 0xc));
0x00014c86 ldr r3, [r0, 8] | r3 = *((r0 + 8));
0x00014c88 cmp r2, 1 |
0x00014c8a ldr r3, [r3] | r3 = *(r3);
0x00014c8c str r2, [sp, 0xb0] | var_b0h = r2;
0x00014c8e str r3, [sp, 0x9c] | var_9ch = r3;
| if (r2 > 1) {
0x00014c90 bgt.w 0x14e08 | goto label_124;
| }
| label_46:
0x00014c94 ldr r2, [r7, 0x14] | r2 = *((r7 + 0x14));
0x00014c96 add.w r3, r5, 0xc | r3 = r5 + 0xc;
0x00014c9a ldr.w lr, [r6, 0xc] |
0x00014c9e add.w ip, sp, 0xa0 |
0x00014ca2 str r2, [sp, 0x98] | var_98h = r2;
0x00014ca4 ldm r3, {r0, r1, r2, r3} | r0 = *(r3);
| r1 = *((r3 + 4));
| r2 = *((r3 + 8));
| r3 = *((r3 + 12));
0x00014ca6 stm.w ip, {r0, r1, r2, r3} | *(ip) = r0;
| *((ip + 4)) = r1;
| *((ip + 8)) = r2;
| *((ip + 12)) = r3;
0x00014caa mov.w r1, -1 | r1 = -1;
0x00014cae ldr.w r3, [lr] | r3 = *(lr);
0x00014cb2 movs r0, 3 | r0 = 3;
0x00014cb4 ldr r2, [sp, 0x24] | r2 = var_24h;
0x00014cb6 bl 0x8960 | fcn_00008960 (r0, r1);
0x00014cba ldr r3, [r7, 0xc] | r3 = *((r7 + 0xc));
0x00014cbc add r1, sp, 0x90 | r1 += var_90h;
0x00014cbe ldr r0, [r7, 0x18] | r0 = *((r7 + 0x18));
0x00014cc0 blx r3 | uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
0x00014cc2 b 0x14a36 | goto label_39;
| label_122:
0x00014cc4 ldr r3, [r3] | r3 = *(r3);
0x00014cc6 ldr r2, [r3, 8] | r2 = *((r3 + 8));
0x00014cc8 ldr r3, [r2] | r3 = *(r2);
0x00014cca cmp r3, 0x80 |
| if (r3 == 0x80) {
0x00014ccc beq.w 0x14f5a | goto label_125;
| }
0x00014cd0 ldr r2, [sp, 0x24] | r2 = var_24h;
0x00014cd2 ldr r2, [r2, 4] | r2 = *((r2 + 4));
0x00014cd4 cmp r2, 0 |
| if (r2 == 0) {
0x00014cd6 beq.w 0x14956 | goto label_35;
| }
0x00014cda str r3, [sp, 0x94] | var_94h = r3;
0x00014cdc b 0x14c34 | goto label_40;
| label_111:
0x00014cde ldr r3, [r3] | r3 = *(r3);
0x00014ce0 ldr r1, [sp, 0x24] | r1 = var_24h;
0x00014ce2 ldr r3, [r3, 8] | r3 = *((r3 + 8));
0x00014ce4 str r3, [sp, 0x28] | var_28h = r3;
0x00014ce6 ldr r3, [r3] | r3 = *(r3);
0x00014ce8 cmp r3, 0x7f |
| if (r3 <= 0x7f) {
0x00014cea ble.w 0x14ea0 | goto label_126;
| }
0x00014cee ldr r3, [r1, 0x10] | r3 = *((r1 + 0x10));
0x00014cf0 cmp r3, 0 |
| if (r3 == 0) {
0x00014cf2 beq.w 0x14956 | goto label_35;
| }
0x00014cf6 ldr.w ip, [pc, 0x39c] |
0x00014cfa add r2, sp, 0x90 | r2 += var_90h;
0x00014cfc ldr r1, [r1, 0x14] | r1 = *((r1 + 0x14));
0x00014cfe mov r7, r2 | r7 = r2;
0x00014d00 add ip, pc |
0x00014d02 add.w ip, ip, 0x178 | ip = 0x29f12;
0x00014d06 str r1, [sp, 0x2c] | var_2ch = r1;
0x00014d08 ldm.w ip!, {r0, r1, r2, r3} | r0 = *(ip!);
| r1 = *((ip! + 4));
| r2 = *((ip! + 8));
| r3 = *((ip! + 12));
0x00014d0c stm r7!, {r0, r1, r2, r3} | *(r7!) = r0;
| *((r7! + 4)) = r1;
| *((r7! + 8)) = r2;
| *((r7! + 12)) = r3;
0x00014d0e ldm.w ip!, {r0, r1, r2, r3} | r0 = *(ip!);
| r1 = *((ip! + 4));
| r2 = *((ip! + 8));
| r3 = *((ip! + 12));
0x00014d12 stm r7!, {r0, r1, r2, r3} | *(r7!) = r0;
| *((r7! + 4)) = r1;
| *((r7! + 8)) = r2;
| *((r7! + 12)) = r3;
0x00014d14 ldr r3, [sp, 0x28] | r3 = var_28h;
0x00014d16 ldm.w ip, {r0, r1, r2} | r0 = *(ip);
| r1 = *((ip + 4));
| r2 = *((ip + 8));
0x00014d1a add.w ip, sp, 0xa0 |
0x00014d1e stm.w r7, {r0, r1, r2} | *(r7) = r0;
| *((r7 + 4)) = r1;
| *((r7 + 8)) = r2;
0x00014d22 ldr r1, [sp, 0x2c] | r1 = var_2ch;
0x00014d24 str r1, [sp, 0x98] | var_98h = r1;
0x00014d26 ldr r3, [r3] | r3 = *(r3);
0x00014d28 str r3, [sp, 0x9c] | var_9ch = r3;
0x00014d2a add.w r3, r5, 0xc | r3 = r5 + 0xc;
0x00014d2e ldm r3, {r0, r1, r2, r3} | r0 = *(r3);
| r1 = *((r3 + 4));
| r2 = *((r3 + 8));
| r3 = *((r3 + 12));
0x00014d30 stm.w ip, {r0, r1, r2, r3} | *(ip) = r0;
| *((ip + 4)) = r1;
| *((ip + 8)) = r2;
| *((ip + 12)) = r3;
0x00014d34 mov.w r1, -1 | r1 = -1;
0x00014d38 ldr r2, [pc, 0x35c] |
0x00014d3a movs r0, 3 | r0 = 3;
0x00014d3c ldr.w r3, [lr] | r3 = *(lr);
0x00014d40 add r2, pc | r2 = 0x29ddc;
0x00014d42 bl 0x8960 | fcn_00008960 (r0, r1);
0x00014d46 ldr r1, [sp, 0x24] | r1 = var_24h;
0x00014d48 ldr r3, [r1, 0x10] | r3 = *((r1 + 0x10));
0x00014d4a ldr r0, [r1, 0x18] | r0 = *((r1 + 0x18));
0x00014d4c add r1, sp, 0x90 | r1 += var_90h;
0x00014d4e blx r3 | uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
0x00014d50 b 0x14956 | goto label_35;
| label_117:
0x00014d52 ldr r3, [r7, 0xc] | r3 = *((r7 + 0xc));
0x00014d54 cmp r3, 0 |
| if (r3 != 0) {
0x00014d56 bne.w 0x14a02 | goto label_41;
| }
0x00014d5a b 0x14a36 | goto label_39;
| label_115:
0x00014d5c ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x00014d5e ldr r3, [r3, 0xc] | r3 = *((r3 + 0xc));
0x00014d60 cmp r3, 0 |
| if (r3 == 0) {
0x00014d62 beq.w 0x14eca | goto label_127;
| }
0x00014d66 ldr r3, [sp, 0x24] | r3 = var_24h;
0x00014d68 cmp r3, 0x7f |
| if (r3 <= 0x7f) {
0x00014d6a ble.w 0x14ee2 | goto label_128;
| }
0x00014d6e ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x00014d70 ldr r3, [r3, 0x10] | r3 = *((r3 + 0x10));
0x00014d72 cmp r3, 0 |
| if (r3 == 0) {
0x00014d74 beq.w 0x149ca | goto label_42;
| }
| label_49:
0x00014d78 ldr r2, [sp, 0x2c] | r2 = var_2ch;
0x00014d7a add.w lr, sp, 0x90 | lr += var_90h;
0x00014d7e ldr.w ip, [pc, 0x31c] |
0x00014d82 ldr r3, [r2, 0x14] | r3 = *((r2 + 0x14));
0x00014d84 add ip, pc |
0x00014d86 add.w ip, ip, 0x178 | ip = 0x29f9e;
0x00014d8a mov r7, r3 | r7 = r3;
0x00014d8c ldm.w ip!, {r0, r1, r2, r3} | r0 = *(ip!);
| r1 = *((ip! + 4));
| r2 = *((ip! + 8));
| r3 = *((ip! + 12));
0x00014d90 stm.w lr!, {r0, r1, r2, r3} | *(lr!) = r0;
| *((lr! + 4)) = r1;
| *((lr! + 8)) = r2;
| *((lr! + 12)) = r3;
0x00014d94 ldm.w ip!, {r0, r1, r2, r3} | r0 = *(ip!);
| r1 = *((ip! + 4));
| r2 = *((ip! + 8));
| r3 = *((ip! + 12));
0x00014d98 stm.w lr!, {r0, r1, r2, r3} | *(lr!) = r0;
| *((lr! + 4)) = r1;
| *((lr! + 8)) = r2;
| *((lr! + 12)) = r3;
0x00014d9c ldr r3, [sp, 0x24] | r3 = var_24h;
0x00014d9e ldm.w ip, {r0, r1, r2} | r0 = *(ip);
| r1 = *((ip + 4));
| r2 = *((ip + 8));
0x00014da2 stm.w lr, {r0, r1, r2} | *(lr) = r0;
| *((lr + 4)) = r1;
| *((lr + 8)) = r2;
0x00014da6 str r3, [sp, 0x9c] | var_9ch = r3;
0x00014da8 ldm.w r4, {r0, r1, r2, r3} | r0 = *(r4);
| r1 = *((r4 + 4));
| r2 = *((r4 + 8));
| r3 = *((r4 + 12));
0x00014dac str r7, [sp, 0x98] | var_98h = r7;
0x00014dae add r7, sp, 0xa0 | r7 += var_a0h;
0x00014db0 stm.w r7, {r0, r1, r2, r3} | *(r7) = r0;
| *((r7 + 4)) = r1;
| *((r7 + 8)) = r2;
| *((r7 + 12)) = r3;
0x00014db4 mov.w r1, -1 | r1 = -1;
0x00014db8 ldrb r3, [r5] | r3 = *(r5);
0x00014dba movs r0, 3 | r0 = 3;
0x00014dbc ldr r2, [r6, 0xc] | r2 = *((r6 + 0xc));
0x00014dbe lsrs r3, r3, 4 | r3 >>= 4;
0x00014dc0 str r3, [sp, 0xb8] | var_b8h = r3;
0x00014dc2 ldr r3, [r2] | r3 = *(r2);
0x00014dc4 ldr r2, [pc, 0x2d8] |
0x00014dc6 add r2, pc | r2 = 0x29e6a;
0x00014dc8 bl 0x8960 | fcn_00008960 (r0, r1);
0x00014dcc ldr r2, [sp, 0x2c] | r2 = var_2ch;
0x00014dce add r1, sp, 0x90 | r1 += var_90h;
0x00014dd0 ldr r3, [r2, 0x10] | r3 = *(0x29e7a);
0x00014dd2 ldr r0, [r2, 0x18] | r0 = *(0x29e82);
0x00014dd4 blx r3 | uint32_t (*r3)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x00014dd6 b 0x149ca | goto label_42;
| label_109:
0x00014dd8 ldr r2, [pc, 0x2c8] |
0x00014dda mov.w r1, -1 | r1 = -1;
0x00014dde movs r0, 5 | r0 = 5;
0x00014de0 add r2, pc | r2 = 0x29e88;
0x00014de2 bl 0x8960 | fcn_00008960 (r0, r1);
0x00014de6 b 0x148d8 | goto label_43;
| label_114:
0x00014de8 ldr r2, [pc, 0x2bc] |
0x00014dea mov.w r1, -1 | r1 = -1;
0x00014dee movs r0, 5 | r0 = 5;
0x00014df0 add r2, pc | r2 = 0x29e9c;
0x00014df2 bl 0x8960 | fcn_00008960 (r0, r1);
0x00014df6 b 0x1498c | goto label_44;
| label_116:
0x00014df8 ldr r2, [pc, 0x2b0] |
0x00014dfa mov.w r1, -1 | r1 = -1;
0x00014dfe movs r0, 5 | r0 = 5;
0x00014e00 add r2, pc | r2 = 0x29eb0;
0x00014e02 bl 0x8960 | fcn_00008960 (r0, r1);
0x00014e06 b 0x149fa | goto label_45;
| label_124:
0x00014e08 ldr r1, [sp, 0x28] | r1 = var_28h;
0x00014e0a lsls r2, r2, 2 | r2 <<= 2;
0x00014e0c ldr r0, [pc, 0x2a0] |
0x00014e0e str r1, [sp, 0x80] | var_80h = r1;
0x00014e10 movw r1, 0x8b9 | r1 = 0x8b9;
0x00014e14 add r0, pc | r0 = 0x29ec8;
0x00014e16 bl 0xf12c | fcn_0000f12c (r0, r1, r2);
0x00014e1a str r0, [sp, 0x28] | var_28h = r0;
0x00014e1c str r0, [sp, 0xb4] | var_b4h = r0;
0x00014e1e cmp r0, 0 |
| if (r0 == 0) {
0x00014e20 beq.w 0x14c94 | goto label_46;
| }
0x00014e24 ldr r3, [sp, 0x28] | r3 = var_28h;
0x00014e26 str r6, [sp, 0x24] | var_24h = r6;
0x00014e28 mov r6, r4 | r6 = r4;
0x00014e2a mov r4, r3 | r4 = r3;
0x00014e2c b 0x14e38 |
| while (r0 != 0) {
0x00014e2e ldr r3, [sp, 0x80] | r3 = var_80h;
0x00014e30 ldr r3, [r3, 8] | r3 = *((r3 + 8));
0x00014e32 ldr r3, [r3] | r3 = *(r3);
0x00014e34 str r3, [r4], 4 | *(r4) = r3;
| r4 += 4;
0x00014e38 ldr r0, [r5, 0x1c] | r0 = *((r5 + 0x1c));
0x00014e3a mov r1, r6 | r1 = r6;
0x00014e3c bl 0xc77c | r0 = fcn_0000c77c (r0, r1);
0x00014e40 cmp r0, 0 |
0x00014e42 bne 0x14e2e |
| }
0x00014e44 ldr r2, [r7, 0x14] | r2 = *((r7 + 0x14));
0x00014e46 mov r4, r6 | r4 = r6;
0x00014e48 ldr r6, [sp, 0x24] | r6 = var_24h;
0x00014e4a add.w r3, r5, 0xc | r3 = r5 + 0xc;
0x00014e4e add.w ip, sp, 0xa0 |
0x00014e52 ldr.w lr, [r6, 0xc] |
0x00014e56 str r2, [sp, 0x98] | var_98h = r2;
0x00014e58 ldm r3, {r0, r1, r2, r3} | r0 = *(r3);
| r1 = *((r3 + 4));
| r2 = *((r3 + 8));
| r3 = *((r3 + 12));
0x00014e5a stm.w ip, {r0, r1, r2, r3} | *(ip) = r0;
| *((ip + 4)) = r1;
| *((ip + 8)) = r2;
| *((ip + 12)) = r3;
0x00014e5e mov.w r1, -1 | r1 = -1;
0x00014e62 ldr r2, [pc, 0x250] |
0x00014e64 movs r0, 3 | r0 = 3;
0x00014e66 ldr.w r3, [lr] | r3 = *(lr);
0x00014e6a add r2, pc | r2 = 0x29f24;
0x00014e6c bl 0x8960 | fcn_00008960 (r0, r1);
0x00014e70 ldr r0, [r7, 0x18] | r0 = *((r7 + 0x18));
0x00014e72 add r1, sp, 0x90 | r1 += var_90h;
0x00014e74 ldr r3, [r7, 0xc] | r3 = *((r7 + 0xc));
0x00014e76 blx r3 | uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
0x00014e78 ldr r0, [pc, 0x23c] |
0x00014e7a movw r1, 0x8c3 | r1 = 0x8c3;
0x00014e7e ldr r2, [sp, 0x28] | r2 = var_28h;
0x00014e80 add r0, pc | r0 = 0x29f3c;
0x00014e82 bl 0xf264 | fcn_0000f264 (r0, r1, r2);
0x00014e86 b 0x14a36 | goto label_39;
| label_121:
0x00014e88 ldr r2, [pc, 0x230] |
0x00014e8a movs r0, 4 | r0 = 4;
0x00014e8c mov r1, r7 | r1 = r7;
0x00014e8e add r2, pc | r2 = 0x29f4e;
0x00014e90 bl 0x8960 | fcn_00008960 (r0, r1);
0x00014e94 ldr r0, [r6, 0xc] | r0 = *((r6 + 0xc));
| label_120:
0x00014e96 bl 0x136e8 | fcn_000136e8 (r0, r1, r2, r3);
0x00014e9a str r0, [sp, 0x74] | var_74h = r0;
0x00014e9c ldr r0, [r6, 0xc] | r0 = *((r6 + 0xc));
0x00014e9e b 0x14bba | goto label_47;
| label_126:
0x00014ea0 ldr r1, [r1, 0xc] | r1 = *((r1 + 0xc));
0x00014ea2 cmp r1, 0 |
| if (r1 == 0) {
0x00014ea4 beq.w 0x14956 | goto label_35;
| }
0x00014ea8 str r3, [sp, 0x9c] | var_9ch = r3;
0x00014eaa str r2, [sp, 0xb0] | var_b0h = r2;
| label_112:
0x00014eac ldr r7, [sp, 0x24] | r7 = var_24h;
0x00014eae add.w r3, r5, 0xc | r3 = r5 + 0xc;
0x00014eb2 add.w ip, sp, 0xa0 |
0x00014eb6 ldr r2, [r7, 0x14] | r2 = *((r7 + 0x14));
0x00014eb8 str r2, [sp, 0x98] | var_98h = r2;
0x00014eba ldm r3, {r0, r1, r2, r3} | r0 = *(r3);
| r1 = *((r3 + 4));
| r2 = *((r3 + 8));
| r3 = *((r3 + 12));
0x00014ebc stm.w ip, {r0, r1, r2, r3} | *(ip) = r0;
| *((ip + 4)) = r1;
| *((ip + 8)) = r2;
| *((ip + 12)) = r3;
0x00014ec0 ldr r2, [pc, 0x1fc] |
0x00014ec2 ldr.w r3, [lr] | r3 = *(lr);
0x00014ec6 add r2, pc | r2 = 0x29f8a;
0x00014ec8 b 0x14944 | goto label_48;
| label_127:
0x00014eca ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x00014ecc ldr r2, [r3, 0x10] | r2 = *((r3 + 0x10));
0x00014ece ldr r3, [sp, 0x28] | r3 = var_28h;
0x00014ed0 cmp r2, 0 |
0x00014ed2 ite eq |
| if (r2 != 0) {
0x00014ed4 moveq r3, 0 | r3 = 0;
| }
| if (r2 == 0) {
0x00014ed6 andne r3, r3, 1 | r3 &= 1;
| }
0x00014eda cmp r3, 0 |
| if (r3 == 0) {
0x00014edc beq.w 0x149ca | goto label_42;
| }
0x00014ee0 b 0x14d78 | goto label_49;
| label_128:
0x00014ee2 movs r2, 0x4c | r2 = 0x4c;
0x00014ee4 add r0, sp, 0x94 | r0 += var_94h;
0x00014ee6 blx 0x257c | fcn_0000257c ();
0x00014eea ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x00014eec add r5, sp, 0xa0 | r5 += var_a0h;
0x00014eee ldr r7, [sp, 0x2c] | r7 = var_2ch;
0x00014ef0 str r3, [sp, 0x90] | var_90h = r3;
0x00014ef2 ldr r2, [r7, 0x14] | r2 = *((r7 + 0x14));
0x00014ef4 add.w r3, r7, 0x24 | r3 = r7 + 0x24;
0x00014ef8 ldr r6, [r6, 0xc] | r6 = *((r6 + 0xc));
0x00014efa str r2, [sp, 0x98] | var_98h = r2;
0x00014efc ldr r2, [r7, 0x34] | r2 = *((r7 + 0x34));
0x00014efe str r2, [sp, 0xe0] | *(arg_e0h) = r2;
0x00014f00 ldr r2, [r7, 0x3c] | r2 = *((r7 + 0x3c));
0x00014f02 str r2, [sp, 0xbc] | var_bch = r2;
0x00014f04 ldr r2, [r7, 0x38] | r2 = *((r7 + 0x38));
0x00014f06 str r2, [sp, 0xb8] | var_b8h = r2;
0x00014f08 ldr r2, [r7, 0x40] | r2 = *((r7 + 0x40));
0x00014f0a str r2, [sp, 0xc0] | var_c0h = r2;
0x00014f0c ldr r2, [r7, 0x44] | r2 = *((r7 + 0x44));
0x00014f0e str r2, [sp, 0xc4] | var_c4h = r2;
0x00014f10 ldm r3, {r0, r1, r2, r3} | r0 = *(r3);
| r1 = *((r3 + 4));
| r2 = *((r3 + 8));
| r3 = *((r3 + 12));
0x00014f12 stm.w r5, {r0, r1, r2, r3} | *(r5) = r0;
| *((r5 + 4)) = r1;
| *((r5 + 8)) = r2;
| *((r5 + 12)) = r3;
0x00014f16 mov.w r1, -1 | r1 = -1;
0x00014f1a ldr r2, [pc, 0x1a8] |
0x00014f1c movs r0, 3 | r0 = 3;
0x00014f1e ldr r3, [r6] | r3 = *(r6);
0x00014f20 add r2, pc | r2 = 0x29fea;
0x00014f22 bl 0x8960 | fcn_00008960 (r0, r1);
0x00014f26 ldr r3, [r7, 0xc] | r3 = *((r7 + 0xc));
0x00014f28 add r1, sp, 0x90 | r1 += var_90h;
0x00014f2a ldr r0, [r7, 0x18] | r0 = *((r7 + 0x18));
0x00014f2c blx r3 | uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
0x00014f2e b 0x149ca | goto label_42;
| label_123:
0x00014f30 ldr r0, [pc, 0x194] |
0x00014f32 lsls r2, r2, 2 | r2 <<= 2;
0x00014f34 movw r1, 0x886 | r1 = 0x886;
0x00014f38 str.w sb, [sp, 0x80] | __asm ("str.w sb, [var_80h]");
0x00014f3c add r0, pc | r0 = 0x2a008;
0x00014f3e bl 0xf12c | fcn_0000f12c (r0, r1, r2);
0x00014f42 str r0, [sp, 0x28] | var_28h = r0;
0x00014f44 str r0, [sp, 0x94] | var_94h = r0;
0x00014f46 cmp r0, 0 |
| if (r0 != 0) {
0x00014f48 bne 0x14ff2 | goto label_129;
| }
0x00014f4a ldr r7, [sp, 0x24] | r7 = var_24h;
0x00014f4c ldr r3, [r6, 0xc] | r3 = *((r6 + 0xc));
0x00014f4e ldr r2, [r7, 0x14] | r2 = *((r7 + 0x14));
0x00014f50 ldr r3, [r3] | r3 = *(r3);
0x00014f52 str r2, [sp, 0x90] | var_90h = r2;
0x00014f54 ldr r2, [pc, 0x174] |
0x00014f56 add r2, pc | r2 = 0x2a026;
0x00014f58 b 0x14c44 | goto label_50;
| label_125:
0x00014f5a ldr r7, [sp, 0x24] | r7 = var_24h;
0x00014f5c ldr r3, [r7, 8] | r3 = *((r7 + 8));
0x00014f5e cmp r3, 0 |
| if (r3 == 0) {
0x00014f60 beq.w 0x14956 | goto label_35;
| }
0x00014f64 ldr r1, [r7, 0x14] | r1 = *((r7 + 0x14));
0x00014f66 movs r0, 3 | r0 = 3;
0x00014f68 ldr.w r3, [lr] | r3 = *(lr);
0x00014f6c str r1, [sp, 0x80] | var_80h = r1;
0x00014f6e mov.w r1, -1 | r1 = -1;
0x00014f72 ldr r2, [r2] | r2 = *(r2);
0x00014f74 strd r2, sb, [sp, 0x84] | __asm ("strd r2, sb, [sp, 0x84]");
0x00014f78 ldr r2, [pc, 0x154] |
0x00014f7a add r2, pc | r2 = 0x2a04e;
0x00014f7c bl 0x8960 | fcn_00008960 (r0, r1);
0x00014f80 ldr r3, [r7, 8] | r3 = *((r7 + 8));
0x00014f82 mov r1, r4 | r1 = r4;
0x00014f84 ldr r0, [r7, 0x18] | r0 = *((r7 + 0x18));
0x00014f86 blx r3 | uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
0x00014f88 b 0x14956 | goto label_35;
| label_113:
0x00014f8a ldr r3, [sp, 0x28] | r3 = var_28h;
0x00014f8c str r6, [sp, 0x2c] | var_2ch = r6;
0x00014f8e mov r6, r4 | r6 = r4;
0x00014f90 ldr r7, [sp, 0x24] | r7 = var_24h;
0x00014f92 mov r4, r3 | r4 = r3;
0x00014f94 b 0x14fa0 |
| while (r0 != 0) {
0x00014f96 ldr r3, [sp, 0x80] | r3 = var_80h;
0x00014f98 ldr r3, [r3, 8] | r3 = *((r3 + 8));
0x00014f9a ldr r3, [r3] | r3 = *(r3);
0x00014f9c str r3, [r4], 4 | *(r4) = r3;
| r4 += 4;
0x00014fa0 ldr r0, [r5, 0x1c] | r0 = *((r5 + 0x1c));
0x00014fa2 mov r1, r6 | r1 = r6;
0x00014fa4 bl 0xc77c | r0 = fcn_0000c77c (r0, r1);
0x00014fa8 cmp r0, 0 |
0x00014faa bne 0x14f96 |
| }
0x00014fac ldr r2, [r7, 0x14] | r2 = *((r7 + 0x14));
0x00014fae mov r4, r6 | r4 = r6;
0x00014fb0 ldr r6, [sp, 0x2c] | r6 = var_2ch;
0x00014fb2 add.w r3, r5, 0xc | r3 = r5 + 0xc;
0x00014fb6 add.w ip, sp, 0xa0 |
0x00014fba str r7, [sp, 0x24] | var_24h = r7;
0x00014fbc ldr.w lr, [r6, 0xc] |
0x00014fc0 str r2, [sp, 0x98] | var_98h = r2;
0x00014fc2 ldm r3, {r0, r1, r2, r3} | r0 = *(r3);
| r1 = *((r3 + 4));
| r2 = *((r3 + 8));
| r3 = *((r3 + 12));
0x00014fc4 stm.w ip, {r0, r1, r2, r3} | *(ip) = r0;
| *((ip + 4)) = r1;
| *((ip + 8)) = r2;
| *((ip + 12)) = r3;
0x00014fc8 mov.w r1, -1 | r1 = -1;
0x00014fcc ldr r2, [pc, 0x104] |
0x00014fce movs r0, 3 | r0 = 3;
0x00014fd0 ldr.w r3, [lr] | r3 = *(lr);
0x00014fd4 add r2, pc | r2 = 0x2a0ac;
0x00014fd6 bl 0x8960 | fcn_00008960 (r0, r1);
0x00014fda ldr r0, [r7, 0x18] | r0 = *((r7 + 0x18));
0x00014fdc add r1, sp, 0x90 | r1 += var_90h;
0x00014fde ldr r3, [r7, 0xc] | r3 = *((r7 + 0xc));
0x00014fe0 blx r3 | uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
0x00014fe2 ldr r0, [pc, 0xf4] |
0x00014fe4 movw r1, 0x86c | r1 = 0x86c;
0x00014fe8 ldr r2, [sp, 0x28] | r2 = var_28h;
0x00014fea add r0, pc | r0 = 0x2a0c8;
0x00014fec bl 0xf264 | fcn_0000f264 (r0, r1, r2);
0x00014ff0 b 0x14956 | goto label_35;
| label_129:
0x00014ff2 ldr r2, [sp, 0x28] | r2 = var_28h;
0x00014ff4 str r6, [sp, 0x2c] | var_2ch = r6;
0x00014ff6 mov r6, r4 | r6 = r4;
0x00014ff8 ldr r7, [sp, 0x24] | r7 = var_24h;
0x00014ffa mov r4, r2 | r4 = r2;
0x00014ffc b 0x15008 |
| while (r0 != 0) {
0x00014ffe ldr r3, [sp, 0x80] | r3 = var_80h;
0x00015000 ldr r3, [r3, 8] | r3 = *((r3 + 8));
0x00015002 ldr r3, [r3] | r3 = *(r3);
0x00015004 str r3, [r4], 4 | *(r4) = r3;
| r4 += 4;
0x00015008 ldr r0, [r5, 0x1c] | r0 = *((r5 + 0x1c));
0x0001500a mov r1, r6 | r1 = r6;
0x0001500c bl 0xc77c | r0 = fcn_0000c77c (r0, r1);
0x00015010 cmp r0, 0 |
0x00015012 bne 0x14ffe |
| }
0x00015014 mov r4, r6 | r4 = r6;
0x00015016 ldr r6, [sp, 0x2c] | r6 = var_2ch;
0x00015018 ldr r2, [r7, 0x14] | r2 = *((r7 + 0x14));
0x0001501a mov.w r1, -1 | r1 = -1;
0x0001501e movs r0, 3 | r0 = 3;
0x00015020 str r7, [sp, 0x24] | var_24h = r7;
0x00015022 ldr r3, [r6, 0xc] | r3 = *((r6 + 0xc));
0x00015024 ldr r3, [r3] | r3 = *(r3);
0x00015026 str r2, [sp, 0x90] | var_90h = r2;
0x00015028 ldr r2, [pc, 0xb0] |
0x0001502a add r2, pc | r2 = 0x2a10a;
0x0001502c bl 0x8960 | fcn_00008960 (r0, r1);
0x00015030 ldr r0, [r7, 0x18] | r0 = *((r7 + 0x18));
0x00015032 add r1, sp, 0x90 | r1 += var_90h;
0x00015034 ldr r3, [r7, 4] | r3 = *((r7 + 4));
0x00015036 blx r3 | uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
0x00015038 ldr r0, [pc, 0xa4] |
0x0001503a movw r1, 0x88f | r1 = 0x88f;
0x0001503e ldr r2, [sp, 0x28] | r2 = var_28h;
0x00015040 add r0, pc | r0 = 0x2a124;
0x00015042 bl 0xf264 | fcn_0000f264 (r0, r1, r2);
0x00015046 b 0x14956 | goto label_35;
| label_88:
0x00015048 blx 0x2370 | pthread_condattr_init ();
| label_94:
0x0001504c lsrs r3, r3, 4 | r3 >>= 4;
0x0001504e mov ip, r5 |
0x00015050 strd sb, sb, [r4] | __asm ("strd sb, sb, [r4]");
0x00015054 str r3, [sp, 0x2c] | var_2ch = r3;
0x00015056 ldr r3, [pc, 0x8c] |
0x00015058 strd sb, sb, [r4, 8] | __asm ("strd sb, sb, [r4, 8]");
0x0001505c add r3, pc | r3 = 0x2a146;
0x0001505e mov r7, r3 | r7 = r3;
0x00015060 mov lr, r3 | lr = r3;
0x00015062 ldm.w ip!, {r0, r1, r2, r3} | r0 = *(ip!);
| r1 = *((ip! + 4));
| r2 = *((ip! + 8));
| r3 = *((ip! + 12));
0x00015066 stm.w lr!, {r0, r1, r2, r3} | *(lr!) = r0;
| *((lr! + 4)) = r1;
| *((lr! + 8)) = r2;
| *((lr! + 12)) = r3;
0x0001506a ldr r7, [r7, 0xc] | r7 = *((r7 + 0xc));
0x0001506c str r1, [sp, 0x30] | var_30h = r1;
0x0001506e ldm.w ip, {r0, r1, r2, r3} | r0 = *(ip);
| r1 = *((ip + 4));
| r2 = *((ip + 8));
| r3 = *((ip + 12));
0x00015072 cmp r7, 4 |
0x00015074 stm.w lr, {r0, r1, r2, r3} | *(lr) = r0;
| *((lr + 4)) = r1;
| *((lr + 8)) = r2;
| *((lr + 12)) = r3;
| if (r7 > 4) {
0x00015078 bgt.w 0x14800 | goto label_51;
| }
0x0001507c movs r3, 0 | r3 = 0;
0x0001507e str r3, [sp, 0x40] | var_40h = r3;
0x00015080 str r3, [sp, 0x28] | var_28h = r3;
0x00015082 b.w 0x1483e | goto label_52;
| }
[*] Function strcpy used 5 times libpaho-mqtt3a.so.1.3.9