[*] Binary protection state of chronyc
Full RELRO Canary found NX enabled PIE enabled No RPATH No RUNPATH No Symbols
[*] Function printf tear down of chronyc
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/bin/chronyc @ 0x233c */
| #include <stdint.h>
|
; (fcn) fcn.0000233c () | void fcn_0000233c (int16_t arg_0h, int16_t arg_ch, int16_t arg4) {
| int16_t var_0h;
| r3 = arg4;
| do {
| label_7:
0x00001e68 add sp, 0x14 |
0x00001e6a pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_8:
0x00001e80 str r5, [sp, 0xc] | *(arg_ch) = r5;
0x00001e82 add r4, pc | r4 += pc;
0x00001e84 str r3, [r7] | *(r7) = r3;
0x00001e86 invalid |
0x00001e88 mov r1, sl | r1 = sl;
0x00001e8a mov r0, r6 | r0 = r6;
0x00001e8c blx 0x1bbc | r0 = memcpy (r0, r1, r2);
0x00001e90 adds r3, r0, 1 | r3 = r0 + 1;
| if (r3 == r0) {
0x00001e92 beq.w 0x204e | goto label_9;
| }
0x00001e96 sub.w r3, r0, 0x34 | r3 = r0 - 0x34;
0x00001e9a cmp r3, 0x42 |
| if (r3 <= 0x42) {
0x00001e9c bhi.w 0x1fcc |
0x00001ea0 adr r2, 8 | r2 = 8;
0x00001ea2 ldr.w r3, [r2, r3, lsl 2] | offset_0 = r3 << 2;
| r3 = *((r2 + offset_0));
0x00001ea6 add r2, r3 | r2 += r3;
| /* switch table (67 cases) at 0x1eac */
0x00001ea8 bx r2 | return uint32_t (*r2)() ();
| }
0x00001fcc ldr r3, [pc, 0x2b8] |
0x00001fce movw r4, 0x143 | r4 = 0x143;
0x00001fd2 ldr r1, [pc, 0x2b8] |
0x00001fd4 movs r0, 1 | r0 = 1;
0x00001fd6 ldr r2, [sp, 8] | r2 = *(arg_0h);
0x00001fd8 add r3, pc | r3 = 0x4264;
0x00001fda str r4, [sp] | *(sp) = r4;
0x00001fdc add r1, pc | r1 = 0x426e;
0x00001fde blx 0x1a60 | printf_chk ()
0x00001fe2 movs r0, 1 | r0 = 1;
0x00001fe4 b 0x1e68 |
| } while (1);
| label_9:
0x0000204e movs r0, 0 | r0 = 0;
0x00002050 blx 0x1b8c | r0 = strlen (r0);
0x00002054 cmp r0, 0 |
| if (r0 != 0) {
0x00002056 bne.w 0x217c | goto label_10;
| }
| label_2:
0x0000205a ldr r3, [pc, 0x254] |
0x0000205c add r3, pc |
0x0000205e ldr r3, [r3, 0x28] | r3 = *(0x433a);
0x00002060 cmp r3, 0 |
| if (r3 != 0) {
0x00002062 bne.w 0x219c | goto label_11;
| }
0x00002064 strh r3, [r3, 4] | *((r3 + 4)) = r3;
| label_3:
0x00002066 mov r0, r5 | r0 = r5;
0x00002068 bl 0x8fc8 | fcn_00008fc8 (r0);
0x0000206c cmp.w r8, 0 |
0x0000206e lsrs r0, r0, 0x1c | r0 >>= 0x1c;
| if (r0 == r0) {
0x00002070 beq.w 0x21c4 | goto label_12;
| }
| label_5:
0x00002074 ldr r0, [pc, 0x23c] |
0x00002076 movs r1, 0 | r1 = 0;
0x00002078 ldr r4, [pc, 0x23c] |
0x0000207a add r0, pc | r0 = 0x4332;
0x0000207c bl 0xc7d4 | fcn_0000c7d4 (r0, r1);
0x00002080 movs r0, 0 | r0 = 0;
0x00002082 add r4, pc | r4 = 0x433e;
0x00002084 bl 0x98e0 | fcn_000098e0 (r0);
0x00002088 mov r1, sb | r1 = sb;
0x0000208a mov r0, r8 | r0 = r8;
0x0000208c bl 0x384c | fcn_0000384c (r0, r1, r2, r3);
0x00002090 str r0, [r4, 0x18] | *((r4 + 0x18)) = r0;
0x00002092 bl 0x36ac | r0 = fcn_000036ac (r0, r1);
0x00002096 cmp r0, 0 |
| if (r0 == 0) {
0x00002098 beq.w 0x2240 | goto label_13;
| }
0x0000209c ldr r0, [r7] | r0 = *(r7);
0x0000209e cmp r0, r6 |
| if (r0 < r6) {
0x000020a0 blt.w 0x21b4 | goto label_14;
| }
0x000020a4 ldr.w sl, [pc, 0x214] |
0x000020a8 movs r5, 1 | r5 = 1;
0x000020aa ldr.w sb, [pc, 0x214] |
0x000020ae add.w r7, r4, 0x30 | r7 = r4 + 0x30;
0x000020b2 ldr.w r8, [pc, 0x210] |
0x000020b6 add sl, pc | sl = 0x4376;
0x000020b8 add sb, pc | sb = 0x437e;
0x000020ba add.w r3, sl, 0x30 | r3 = sl + 0x30;
0x000020be add r8, pc | r8 = 0x4388;
0x000020c0 mov r6, sb | r6 = sb;
0x000020c2 str r3, [sp, 8] | *(arg_0h) = r3;
0x000020c4 b 0x2108 |
| while (r3 != 0) {
0x000020c6 ldr r3, [pc, 0x200] | r3 = *(0x22ca);
0x000020c8 ldr r0, [pc, 0x200] |
0x000020ca ldr.w r3, [fp, r3] | r3 = *((fp + r3));
0x000020ce add r0, pc | r0 = 0x439e;
0x000020d0 str r6, [r3] | *(r3) = r6;
0x000020d2 ldr r3, [pc, 0x1fc] | r3 = *(0x22d2);
0x000020d4 ldr.w r3, [fp, r3] | r3 = *((fp + r3));
0x000020d8 str.w r8, [r3] | __asm ("str.w r8, [r3]");
0x000020dc blx 0x1c6c | r0 = fcn_00001c6c ();
0x000020e0 mov sb, r0 | sb = r0;
| if (r0 == 0) {
0x000020e2 cbz r0, 0x2124 | goto label_15;
| }
0x000020e4 ldrb r3, [r0] | r3 = *(r0);
0x000020e6 cmp r3, 0 |
| if (r3 != 0) {
0x000020e8 bne.w 0x21fc | goto label_16;
| }
0x000020ec strb.w r3, [r4, 0x30] | *((r4 + 0x30)) = r3;
| label_0:
0x000020f0 ldr.w r3, [sl] | r3 = *(sl);
0x000020f4 cmp r3, 0 |
| if (r3 == 0) {
0x000020f6 beq 0x21cc | goto label_17;
| }
0x000020f8 ldr.w r3, [sl, 0x28] | r3 = *((sl + 0x28));
0x000020fc cmp r3, 0 |
| if (r3 != 0) {
0x000020fe bne 0x21f4 | goto label_18;
| }
| label_6:
0x00002100 ldr r3, [pc, 0x1d0] |
0x00002102 add r3, pc |
0x00002104 ldr r3, [r3] | r3 = *(0x43da);
| if (r3 != 0) {
0x00002106 cbnz r3, 0x212a | goto label_4;
| }
0x00002108 ldr r3, [r4, 0x28] | r3 = *((r4 + 0x28));
0x0000210a cmp r3, 0 |
0x0000210c bne 0x20c6 |
| }
0x0000210e ldr r3, [pc, 0x1c8] | r3 = *(0x22da);
0x00002110 mov.w r1, 0x800 | r1 = 0x800;
0x00002114 mov r0, r7 | r0 = r7;
0x00002116 ldr.w r3, [fp, r3] | r3 = *((fp + r3));
0x0000211a ldr r2, [r3] | r2 = *(0x22da);
0x0000211c blx 0x1a48 | r0 = fgets (r0, r1, r2);
0x00002120 cmp r0, 0 |
| if (r0 != 0) {
0x00002122 bne 0x20f0 | goto label_0;
| }
| label_15:
0x00002124 ldr r3, [r4, 0x28] | r3 = *((r4 + 0x28));
0x00002126 cmp r3, 0 |
| if (r3 != 0) {
0x00002128 bne 0x221c | goto label_19;
| }
| label_4:
0x0000212a ldr r4, [pc, 0x1b0] |
0x0000212c add r4, pc | r4 = 0x440e;
0x0000212e ldr.w r0, [r4, 0x118] | r0 = *(0x4526);
0x00002132 cmp r0, 0 |
| if (r0 >= 0) {
0x00002134 blt 0x214a |
0x00002136 bl 0xa04c | fcn_0000a04c (r0, r1, r2);
0x0000213a ldr.w r0, [r4, 0x118] | r0 = *((r4 + 0x118));
0x0000213e bl 0xa49c | fcn_0000a49c ();
0x00002142 mov.w r3, -1 | r3 = -1;
0x00002146 str.w r3, [r4, 0x118] | __asm ("str.w r3, [r4, 0x118]");
| }
0x0000214a ldr r3, [pc, 0x194] |
0x0000214c movs r4, 0 | r4 = 0;
0x0000214e add r3, pc | r3 = 0x4434;
0x00002150 ldr r6, [r3, 0x18] | r6 = *(0x444c);
0x00002152 b 0x2156 |
| while (r3 != 2) {
| label_1:
0x00002154 adds r4, 1 | r4++;
0x00002156 mov r0, r6 | r0 = r6;
0x00002158 bl 0x25c8 | r0 = fcn_000025c8 (r0);
0x0000215c cmp r4, r0 |
| if (r4 >= r0) {
0x0000215e bhs 0x21e2 | goto label_20;
| }
0x00002160 mov r1, r4 | r1 = r4;
0x00002162 mov r0, r6 | r0 = r6;
0x00002164 bl 0x24f8 | r0 = fcn_000024f8 (r0, r1);
0x00002168 ldr r3, [r0] | r3 = *(r0);
0x0000216a cmp r3, 2 |
0x0000216c bne 0x2154 |
| }
0x0000216e ldr r0, [r0, 4] | r0 = *((r0 + 4));
0x00002170 blx 0x1b04 | fcn_00001b04 ();
0x00002174 b 0x2154 | goto label_1;
| label_10:
0x0000217c movs r0, 1 | r0 = 1;
0x0000217e blx 0x1b8c | r0 = strlen (r0);
0x00002182 cmp r0, 0 |
| if (r0 == 0) {
0x00002184 beq.w 0x205a | goto label_2;
| }
0x00002188 movs r0, 2 | r0 = 2;
0x0000218a blx 0x1b8c | r0 = strlen (r0);
0x0000218e cmp r0, 0 |
| if (r0 == 0) {
0x00002190 beq.w 0x205a | goto label_2;
| }
0x00002194 ldr r3, [pc, 0x14c] |
0x00002196 movs r2, 1 | r2 = 1;
0x00002198 add r3, pc | r3 = 0x4480;
0x0000219a str r2, [r3, 0x28] | *((r3 + 0x28)) = r2;
| label_11:
0x0000219c ldr r3, [r7] | r3 = *(r7);
0x0000219e cmp r3, r6 |
| if (r3 != r6) {
0x000021a0 bne.w 0x2066 | goto label_3;
| }
0x000021a4 ldr r2, [pc, 0x140] |
0x000021a6 movs r0, 1 | r0 = 1;
0x000021a8 ldr r1, [pc, 0x140] |
0x000021aa add r2, pc | r2 = 0x4496;
0x000021ac add r1, pc | r1 = 0x449c;
0x000021ae blx 0x1a60 | printf_chk ()
0x000021b2 b 0x2066 | goto label_3;
| label_14:
0x000021b4 add.w r1, sl, r0, lsl 2 | r1 = sl + (r0 << 2);
0x000021b8 ldr r2, [sp, 0xc] | r2 = *(arg_ch);
0x000021ba subs r0, r6, r0 | r0 = r6 - r0;
0x000021bc bl 0x70d8 | r0 = fcn_000070d8 (r0, r1, r2, r3, r4, r5);
0x000021c0 mov r5, r0 | r5 = r0;
0x000021c2 b 0x212a | goto label_4;
| label_12:
0x000021c4 ldr.w r8, [pc, 0x128] |
0x000021c8 add r8, pc | r8 = 0x44bc;
0x000021ca b 0x2074 | goto label_5;
| label_17:
0x000021cc ldr r0, [sp, 8] | r0 = *(arg_0h);
0x000021ce bl 0x71e8 | fcn_000071e8 (r0);
0x000021d2 ldrb.w r3, [sl, 0x30] | r3 = *((sl + 0x30));
| do {
0x000021d4 adds r0, 0x30 | r0 += 0x30;
| if (r3 != 0) {
0x000021d6 cbz r3, 0x2224 |
0x000021d8 ldr r0, [sp, 8] | r0 = *(arg_0h);
0x000021da bl 0x4710 | r0 = fcn_00004710 (r0);
0x000021de mov r5, r0 | r5 = r0;
0x000021e0 b 0x2100 | goto label_6;
| label_20:
0x000021e2 mov r0, r6 | r0 = r6;
0x000021e4 bl 0x24c0 | r0 = fcn_000024c0 (r0);
0x000021e8 bl 0x9978 | r0 = fcn_00009978 ();
0x000021ec clz r0, r5 | r0 &= r5;
0x000021f0 lsrs r0, r0, 5 | r0 >>= 5;
0x000021f2 b 0x1e68 | goto label_7;
| label_18:
0x000021f4 movs r0, 0xa | r0 = 0xa;
0x000021f6 blx 0x1a78 | putchar (r0);
0x000021fa b 0x2100 | goto label_6;
| label_16:
0x000021fc mov r1, r0 | r1 = r0;
0x000021fe movw r2, 0x7ff | r2 = 0x7ff;
0x00002202 mov r0, r7 | r0 = r7;
0x00002204 blx 0x1a30 | strncpy (r0, r1, r2);
0x00002208 movs r3, 0 | r3 = 0;
0x0000220a mov r0, sb | r0 = sb;
0x0000220c strb.w r3, [r4, 0x82f] | *((r4 + 0x82f)) = r3;
0x00002210 blx 0x1d60 | getsockopt ();
0x00002214 mov r0, sb | r0 = sb;
0x00002216 blx 0x1b04 | fcn_00001b04 ();
0x0000221a b 0x20f0 | goto label_0;
| label_19:
0x0000221c movs r0, 0xa | r0 = 0xa;
0x0000221e blx 0x1a78 | putchar (r0);
0x00002222 b 0x212a | goto label_4;
| }
0x00002224 ldr r3, [pc, 0xcc] | r3 = *(0x22f4);
0x00002226 movs r5, 1 | r5 = 1;
0x00002228 ldr.w r3, [fp, r3] | r3 = *((fp + r3));
0x0000222c ldr r0, [r3] | r0 = *(0x22f4);
0x0000222e blx 0x1b74 | setuid ();
0x00002232 ldr r3, [pc, 0xc4] | r3 = *(0x22fa);
0x00002234 ldr.w r3, [fp, r3] | r3 = *((fp + r3));
0x00002238 ldr r0, [r3] | r0 = *(0x22fa);
0x0000223a blx 0x1b74 | setuid ();
0x0000223e b 0x2100 | goto label_6;
| label_13:
0x00002240 ldr r3, [pc, 0xb8] |
0x00002242 movs r0, 3 | r0 = 3;
0x00002244 ldr r4, [pc, 0xb8] |
0x00002246 movw r1, 0xd64 | r1 = 0xd64;
0x0000224a ldr r2, [pc, 0xb8] |
0x0000224c add r3, pc | r3 = 0x454c;
0x0000224e add r4, pc | r4 = 0x4552;
0x00002250 adds r3, 0x80 | r3 += 0x80;
0x00002252 add r2, pc | r2 = 0x455c;
0x00002254 str r4, [sp] | *(sp) = r4;
0x00002256 bl 0x37d8 | fcn_000037d8 (r0);
0x0000225a movs r0, 1 | r0 = 1;
0x0000225c blx 0x1dc0 | fdelt_chk ();
0x00002260 adds r0, 0x2e | r0 += 0x2e;
0x00002262 movs r1, r0 | r1 = r0;
0x00002264 lsls r0, r2, 6 | r0 = r2 << 6;
0x00002266 movs r0, r0 |
0x00002268 b 0x21d4 |
| } while (1);
0x0000233c adds r0, 0x14 | r0 += 0x14;
0x0000233e b 0x1e80 | goto label_8;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/bin/chronyc @ 0x28e0 */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) fcn.000028e0 () | void fcn_000028e0 (int16_t arg_4h) {
| 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_0h;
| int16_t var_12ch;
| int16_t var_158h;
| int16_t var_4h;
| int16_t var_4h_2;
| int16_t var_4h_3;
0x000028e0 push {r0, r1, r2, r3} |
0x000028e2 ldr.w r1, [pc, 0x90c] |
0x000028e6 ldr.w r2, [pc, 0x90c] | r2 = *(0x31f6);
0x000028ea push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x000028ee sub sp, 0x134 |
0x000028f0 add r3, sp, 0x158 | r3 += var_158h;
0x000028f2 add r1, pc | r1 = 0x5ae8;
0x000028f4 mov.w r8, 0 | r8 = 0;
0x000028f6 lsrs r0, r0, 0x20 | r0 >>= 0x20;
0x000028f8 add r7, sp, 0x2c | r7 += var_2ch;
0x000028fa ldr r2, [r1, r2] |
0x000028fc mov r6, r8 | r6 = r8;
0x000028fe ldr r4, [r3], 4 | r4 = *(r3);
| r3 += 4;
0x00002902 add.w lr, sp, 0x28 | lr += var_28h;
0x00002906 ldr.w sl, [pc, 0x8f0] |
0x0000290a ldr.w fp, [pc, 0x8f0] |
0x0000290e ldr r2, [r2] | r2 = *(0x5ae8);
0x00002910 str r2, [sp, 0x12c] | var_12ch = r2;
0x00002912 mov.w r2, 0 | r2 = 0;
0x00002916 mov sb, r3 | sb = r3;
0x00002918 str r3, [sp, 0x28] | var_28h = r3;
0x0000291a ldr.w r3, [pc, 0x8e4] |
0x0000291e add sl, pc | sl = 0x5b1c;
0x00002920 add fp, pc | fp = 0x5b22;
0x00002922 str.w lr, [sp, 0x18] | __asm ("str.w lr, [var_18h]");
0x00002926 add r3, pc | r3 = 0x5b2c;
0x00002928 str r3, [sp, 0x1c] | var_1ch = r3;
| label_0:
0x0000292a mov r2, r4 | r2 = r4;
0x0000292c mov r1, r7 | r1 = r7;
0x0000292e movs r5, 0 | r5 = 0;
0x00002930 b 0x293e |
| while (r3 != 0) {
0x00002932 adds r5, 1 | r5++;
0x00002934 strb r3, [r1], 1 | *(r1) = r3;
| r1++;
0x00002938 cmp.w r5, 0x100 |
| if (r5 == 0x100) {
0x0000293c beq 0x29fa | goto label_16;
| }
0x0000293e mov r8, r2 | r8 = r2;
0x00002940 ldrb r3, [r2], 1 | r3 = *(r2);
| r2++;
0x00002944 cmp r3, 0 |
0x00002946 it ne |
| if (r3 != 0) {
0x00002948 cmpne r3, 0x25 | __asm ("cmpne r3, 0x25");
| }
0x0000294a ite ne |
| if (r3 == 0) {
0x0000294c movne r0, 1 | r0 = 1;
| }
| if (r3 != 0) {
0x0000294e moveq r0, 0 | r0 = 0;
| }
0x00002950 bne 0x2932 |
| }
0x00002952 ldr.w r2, [sl, 4] | r2 = *((sl + 4));
0x00002956 strb r0, [r7, r5] | *((r7 + r5)) = r0;
0x00002958 cmp r2, 0 |
| if (r2 == 0) {
0x0000295a beq 0x29e8 | goto label_17;
| }
0x0000295c cmp r3, 0 |
| if (r3 == 0) {
0x0000295e beq 0x29fa | goto label_16;
| }
| do {
0x00002960 adds r5, 1 | r5++;
0x00002962 ldrb.w r8, [r4, r5] | r8 = *((r4 + r5));
0x00002966 add r4, r5 | r4 += r5;
0x00002968 cmp.w r8, 0 |
| if (r8 == 0) {
0x0000296c beq 0x29fa | goto label_16;
| }
0x0000296e sub.w r3, r8, 0x2b | r3 = r8 - 0x2b;
0x00002972 tst.w r3, 0xfd |
0x00002976 itett eq |
| if ((r3 & 0xfd) != 0) {
0x00002978 moveq r3, 1 | r3 = 1;
| }
| if ((r3 & 0xfd) == 0) {
0x0000297a movne r3, 0 | r3 = 0;
| }
| if ((r3 & 0xfd) != 0) {
0x0000297c ldrbeq r8, [r4, 1] | r8 = *((r4 + 1));
| }
| if ((r3 & 0xfd) == 0) {
0x00002980 adds r4, r4, r3 | r4 += r3;
| }
0x00002982 ite eq |
| if (r4 != r4) {
0x00002984 streq r3, [sp, 0x14] | var_14h = r3;
| }
| if (r4 == r4) {
0x00002986 strne r3, [sp, 0x14] | var_14h = r3;
| }
0x00002988 blx 0x1c60 | r0 = fcn_00001c60 ();
0x0000298c ldr r1, [r0] | r1 = *(r0);
0x0000298e mov r3, r0 | r3 = r0;
0x00002990 ldrh.w r5, [r1, r8, lsl 1] | offset_0 = r8 << 1;
| r5 = *((r1 + offset_0));
0x00002994 ands r5, r5, 0x800 | r5 &= 0x800;
| if (r5 != r5) {
0x00002998 bne.w 0x2ae2 | goto label_18;
| }
| label_2:
0x0000299c cmp.w r8, 0x2e |
0x000029a0 it ne |
| if (r8 == 0x2e) {
0x000029a2 movne r3, 5 | r3 = 5;
| }
| if (r8 == 0x2e) {
0x000029a4 beq.w 0x2b1a | goto label_19;
| }
| label_3:
0x000029a8 ldr.w r1, [fp, 4] | r1 = *(arg_4h);
0x000029ac adds r4, 1 | r4++;
0x000029ae cmp r1, 0 |
| if (r1 == 0) {
0x000029b0 beq 0x2a3e | goto label_20;
| }
0x000029b2 cmp r6, 0 |
| if (r6 != 0) {
0x000029b4 bne.w 0x2ad6 | goto label_21;
| }
| label_1:
0x000029b8 sub.w r1, r8, 0x43 | r1 = r8 - 0x43;
0x000029bc cmp r1, 0x11 |
| if (r1 > 0x11) {
0x000029be bhi 0x2a3a | goto label_22;
| }
| /* switch table (19 cases) at 0x29c4 */
0x000029c0 tbh [pc, r1, lsl 1] | __asm ("tbh [pc, r1, lsl 1]");
| label_17:
0x000029e8 ldr r1, [sp, 0x1c] | r1 = var_1ch;
0x000029ea mov r2, r7 | r2 = r7;
0x000029ec movs r0, 1 | r0 = 1;
0x000029ee blx 0x1a60 | printf_chk ()
0x000029f2 ldrb.w r3, [r8] | r3 = *(r8);
0x000029f6 cmp r3, 0 |
0x000029f8 bne 0x2960 |
| } while (r3 != 0);
| label_16:
0x000029fa ldr.w r2, [sb] | r2 = *(sb);
0x000029fe movw r3, 0x1234 | r3 = 0x1234;
0x00002a02 cmp r2, r3 |
| if (r2 != r3) {
0x00002a04 bne.w 0x342c | goto label_23;
| }
0x00002a08 ldr.w r3, [pc, 0x7f8] |
0x00002a0c add r3, pc |
0x00002a0e ldr r3, [r3, 4] | r3 = *(0x5c18);
0x00002a10 cmp r3, 0 |
| if (r3 != 0) {
0x00002a12 bne.w 0x2f56 | goto label_24;
| }
| label_7:
0x00002a16 ldr.w r2, [pc, 0x7f0] |
0x00002a1a ldr.w r3, [pc, 0x7d8] | r3 = *(0x31f6);
0x00002a1e add r2, pc | r2 = 0x5c2c;
0x00002a20 ldr r3, [r2, r3] | r3 = *(0x5c2c);
0x00002a22 ldr r2, [r3] | r2 = *(0x5c2c);
0x00002a24 ldr r3, [sp, 0x12c] | r3 = var_12ch;
0x00002a26 eors r2, r3 | r2 ^= r3;
0x00002a28 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00002a2c bne.w 0x3428 | goto label_25;
| }
0x00002a30 add sp, 0x134 |
0x00002a32 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00002a36 add sp, 0x10 |
0x00002a38 bx lr | return;
| label_22:
0x00002a3a movs r5, 0 | r5 = 0;
0x00002a3c str r5, [sp, 0x14] | var_14h = r5;
| label_20:
0x00002a3e sub.w r1, r8, 0x42 | r1 = r8 - 0x42;
0x00002a42 cmp r1, 0x33 |
| if (r1 <= 0x33) {
0x00002a44 bhi 0x2ad2 |
| /* switch table (53 cases) at 0x2a4a */
0x00002a46 tbh [pc, r1, lsl 1] | __asm ("tbh [pc, r1, lsl 1]");
0x00002ab2 ldr r3, [sp, 0x18] | r3 = var_18h;
0x00002ab4 add.w sb, sb, 4 | sb += 4;
0x00002ab8 ldr r0, [sb, -0x4] | r0 = *((sb - 0x4));
0x00002abc str.w sb, [r3] | __asm ("str.w sb, [r3]");
0x00002ac0 bl 0xba78 | fcn_0000ba78 (r0, r1);
0x00002ac4 ldr.w r1, [pc, 0x744] |
0x00002ac8 mov r2, r0 | r2 = r0;
0x00002aca movs r0, 1 | r0 = 1;
0x00002acc add r1, pc | r1 = 0x5cdc;
0x00002ace blx 0x1a60 | printf_chk ()
| }
| label_6:
0x00002ad2 adds r6, 1 | r6++;
0x00002ad4 b 0x292a | goto label_0;
| label_21:
0x00002ad6 movs r0, 0x2c | r0 = 0x2c;
0x00002ad8 str r3, [sp, 0x14] | var_14h = r3;
0x00002ada blx 0x1a78 | putchar (r0);
0x00002ade ldr r3, [sp, 0x14] | r3 = var_14h;
0x00002ae0 b 0x29b8 | goto label_1;
| label_18:
0x00002ae2 movs r1, 0 | r1 = 0;
0x00002ae4 str r0, [sp, 0x20] | var_20h = r0;
0x00002ae6 movs r2, 0xa | r2 = 0xa;
0x00002ae8 mov r0, r4 | r0 = r4;
0x00002aea blx 0x1be4 | fcn_00001be4 ();
0x00002aee ldr r3, [sp, 0x20] | r3 = var_20h;
0x00002af0 mov r5, r0 | r5 = r0;
0x00002af2 ldrb.w r8, [r4] | r8 = *(r4);
0x00002af6 ldr r0, [r3] | r0 = *(r3);
0x00002af8 ldrh.w r1, [r0, r8, lsl 1] | offset_1 = r8 << 1;
| r1 = *((r0 + offset_1));
0x00002afc lsls r1, r1, 0x14 | r1 <<= 0x14;
| if (r1 >= r1) {
0x00002afe bpl.w 0x299c | goto label_2;
| }
| do {
0x00002b02 ldrb r8, [r4, 1]! | r8 = *((r4 += 1));
0x00002b06 ldrh.w r2, [r0, r8, lsl 1] | offset_2 = r8 << 1;
| r2 = *((r0 + offset_2));
0x00002b0a lsls r2, r2, 0x14 | r2 <<= 0x14;
0x00002b0c bmi 0x2b02 |
| } while (r2 < r2);
0x00002b0e cmp.w r8, 0x2e |
0x00002b12 it ne |
| if (r8 != 0x2e) {
0x00002b14 movne r3, 5 | r3 = 5;
| goto label_26;
| }
| if (r8 != 0x2e) {
| label_26:
0x00002b16 bne.w 0x29a8 | goto label_3;
| }
| label_19:
0x00002b1a str r3, [sp, 0x24] | var_24h = r3;
0x00002b1c adds r3, r4, 1 | r3 = r4 + 1;
0x00002b1e movs r2, 0xa | r2 = 0xa;
0x00002b20 movs r1, 0 | r1 = 0;
0x00002b22 mov r0, r3 | r0 = r3;
0x00002b24 str r3, [sp, 0x20] | var_20h = r3;
0x00002b26 blx 0x1be4 | fcn_00001be4 ();
0x00002b2a ldr r3, [sp, 0x24] | r3 = var_24h;
0x00002b2c ldrb.w r8, [r4, 1] | r8 = *((r4 + 1));
0x00002b30 ldr r4, [sp, 0x20] | r4 = var_20h;
0x00002b32 ldr r2, [r3] | r2 = *(r3);
0x00002b34 mov r3, r0 | r3 = r0;
0x00002b36 ldrh.w r1, [r2, r8, lsl 1] | offset_3 = r8 << 1;
| r1 = *((r2 + offset_3));
0x00002b3a lsls r1, r1, 0x14 | r1 <<= 0x14;
| if (r1 >= r1) {
0x00002b3c bpl.w 0x29a8 | goto label_3;
| }
| do {
0x00002b40 ldrb r8, [r4, 1]! | r8 = *((r4 += 1));
0x00002b44 ldrh.w r1, [r2, r8, lsl 1] | offset_4 = r8 << 1;
| r1 = *((r2 + offset_4));
0x00002b48 lsls r0, r1, 0x14 | r0 = r1 << 0x14;
0x00002b4a bmi 0x2b40 |
| } while (r0 < r1);
0x00002b4c b 0x29a8 | goto label_3;
0x00002b4e movs r3, 9 | r3 = 9;
0x00002b50 movs r5, 0 | r5 = 0;
0x00002b52 str r5, [sp, 0x14] | var_14h = r5;
0x00002b54 add.w r2, sb, 7 | r2 = sb + 7;
0x00002b58 ldr r1, [sp, 0x18] | r1 = var_18h;
0x00002b5a bic r2, r2, 7 | r2 = BIT_MASK (r2, 7);
0x00002b5e add.w sb, r2, 8 | sb = r2 + 8;
0x00002b62 vldr d16, [r2] | __asm ("vldr d16, [r2]");
0x00002b66 ldr r2, [sp, 0x14] | r2 = var_14h;
0x00002b68 str.w sb, [r1] | __asm ("str.w sb, [r1]");
0x00002b6c cmp r2, 0 |
| if (r2 == 0) {
0x00002b6e beq.w 0x3442 | goto label_27;
| }
0x00002b72 ldr.w r1, [pc, 0x69c] |
0x00002b76 add r1, pc | r1 = 0x5d8c;
0x00002b78 b 0x2f7c | goto label_15;
0x00002b7a add.w sb, sb, 7 | sb += 7;
0x00002b7e ldr r2, [sp, 0x18] | r2 = var_18h;
0x00002b80 bic sb, sb, 7 | sb = BIT_MASK (sb, 7);
0x00002b84 cmp.w r8, 0x4f |
0x00002b88 vldr d16, [sb] | __asm ("vldr d16, [sb]");
0x00002b8c add.w sb, sb, 8 | sb += 8;
0x00002b90 str.w sb, [r2] | __asm ("str.w sb, [r2]");
0x00002b94 vabs.f64 d17, d16 | __asm ("vabs.f64 d17, d16");
| if (r8 == 0x4f) {
0x00002b98 beq.w 0x305c | goto label_28;
| }
0x00002b9c ldr.w r1, [pc, 0x674] |
0x00002ba0 add r1, pc | r1 = 0x5db8;
| label_10:
0x00002ba2 vcmpe.f64 d16, 0 | __asm ("vcmpe.f64 d16, 0");
0x00002ba6 vmrs apsr_nzcv, fpscr | __asm ("vmrs apsr_nzcv, fpscr");
0x00002baa ite gt |
| if (r8 <= 0x4f) {
0x00002bac movgt r0, 1 | r0 = 1;
| }
| if (r8 > 0x4f) {
0x00002bae movle r0, 0 | r0 = 0;
| }
0x00002bb0 subs.w r2, r8, 0x4f | r2 = r8 - 0x4f;
0x00002bb4 it ne |
| if (r2 == r8) {
0x00002bb6 movne r2, 1 | r2 = 1;
| }
0x00002bb8 cmp r0, r2 |
| if (r0 == r2) {
0x00002bba beq.w 0x3086 | goto label_29;
| }
0x00002bbe ldr.w r2, [pc, 0x658] |
0x00002bc2 add r2, pc | r2 = 0x5de0;
| label_13:
0x00002bc4 strd r1, r2, [sp, 8] | __asm ("strd r1, r2, [sp, 8]");
0x00002bc8 movs r0, 1 | r0 = 1;
0x00002bca ldr.w r1, [pc, 0x650] |
0x00002bce mov r2, r5 | r2 = r5;
0x00002bd0 vstr d17, [sp] | __asm ("vstr d17, [sp]");
0x00002bd4 adds r6, 1 | r6++;
0x00002bd6 add r1, pc | r1 = 0x5df8;
0x00002bd8 blx 0x1a60 | printf_chk ()
0x00002bdc b 0x292a | goto label_0;
0x00002bde ldr.w r3, [sb] | r3 = *(sb);
0x00002be2 add.w sb, sb, 4 | sb += var_4h_2;
0x00002be6 ldr r2, [sp, 0x18] | r2 = var_18h;
0x00002be8 str.w sb, [r2] | __asm ("str.w sb, [r2]");
0x00002bec cmp r3, 0 |
| if (r3 != 0) {
0x00002bee bne.w 0x3056 | goto label_30;
| }
0x00002bf2 ldr.w r2, [pc, 0x62c] |
0x00002bf6 add r2, pc | r2 = 0x5e1c;
| label_9:
0x00002bf8 ldr.w r1, [pc, 0x628] | r1 = "reload";
0x00002bfc movs r0, 1 | r0 = 1;
0x00002bfe adds r6, 1 | r6++;
0x00002c00 add r1, pc | r1 += pc;
0x00002c02 blx 0x1a60 | printf_chk ()
0x00002c06 b 0x292a | goto label_0;
0x00002c08 ldr.w r2, [sb] | r2 = *(sb);
0x00002c0c add.w r5, sb, 4 | r5 += var_4h_3;
0x00002c10 ldr r3, [sp, 0x18] | r3 = var_18h;
0x00002c12 cmp r2, 0x7e |
0x00002c14 str r5, [r3] | *(r3) = r5;
| if (r2 <= 0x7e) {
0x00002c16 ble.w 0x3048 | goto label_31;
| }
0x00002c1a ldr.w r1, [pc, 0x60c] |
0x00002c1e movs r0, 1 | r0 = 1;
0x00002c20 add r1, pc | r1 = 0x5e4e;
0x00002c22 blx 0x1a60 | printf_chk ()
| label_4:
0x00002c26 mov sb, r5 | sb = r5;
| do {
| label_5:
0x00002c28 adds r6, 1 | r6++;
0x00002c2a b 0x292a | goto label_0;
0x00002c2c ldr.w r3, [sb] | r3 = *(sb);
0x00002c30 add.w sb, sb, 4 | sb += 4;
0x00002c34 ldr r2, [sp, 0x18] | r2 = var_18h;
0x00002c36 cmp r3, 0x48 |
0x00002c38 str.w sb, [r2] | __asm ("str.w sb, [r2]");
| if (r3 == 0x48) {
0x00002c3c beq.w 0x307a | goto label_32;
| }
0x00002c40 cmp r3, 0x4b |
| if (r3 == 0x4b) {
0x00002c42 beq.w 0x3068 | goto label_33;
| }
0x00002c46 cmp r3, 0x44 |
| if (r3 == 0x44) {
0x00002c48 beq.w 0x3062 | goto label_34;
| }
0x00002c4c ldr.w r2, [pc, 0x5dc] |
0x00002c50 add r2, pc | r2 = 0x5e80;
| label_11:
0x00002c52 ldr.w r1, [pc, 0x5dc] |
0x00002c56 movs r0, 1 | r0 = 1;
0x00002c58 adds r6, 1 | r6++;
0x00002c5a add r1, pc | r1 = 0x5e90;
0x00002c5c blx 0x1a60 | printf_chk ()
0x00002c60 b 0x292a | goto label_0;
0x00002c62 ldr.w r3, [sb] | r3 = *(sb);
0x00002c66 add.w sb, sb, 4 | sb += 4;
0x00002c6a ldr r2, [sp, 0x18] | r2 = var_18h;
0x00002c6c cmp r3, 2 |
0x00002c6e str.w sb, [r2] | __asm ("str.w sb, [r2]");
| if (r3 == 2) {
0x00002c72 beq.w 0x3080 | goto label_35;
| }
0x00002c76 cmp r3, 4 |
| if (r3 == 4) {
0x00002c78 beq.w 0x306e | goto label_36;
| }
0x00002c7c cmp r3, 1 |
| if (r3 == 1) {
0x00002c7e beq.w 0x3074 | goto label_37;
| }
0x00002c82 ldr.w r2, [pc, 0x5b0] |
0x00002c86 add r2, pc | r2 = 0x5ec0;
| label_12:
0x00002c88 ldr.w r1, [pc, 0x5ac] |
0x00002c8c movs r0, 1 | r0 = 1;
0x00002c8e adds r6, 1 | r6++;
0x00002c90 add r1, pc | r1 = 0x5ecc;
0x00002c92 blx 0x1a60 | printf_chk ()
0x00002c96 b 0x292a | goto label_0;
0x00002c98 ldr.w r3, [sb] | r3 = *(sb);
0x00002c9c add.w sb, sb, 4 | sb += 4;
0x00002ca0 ldr r2, [sp, 0x18] | r2 = var_18h;
0x00002ca2 str.w sb, [r2] | __asm ("str.w sb, [r2]");
0x00002ca6 cmp r3, 3 |
| if (r3 > 3) {
0x00002ca8 bhi.w 0x3448 | goto label_38;
| }
| /* switch table (5 cases) at 0x2cb0 */
0x00002cac tbh [pc, r3, lsl 1] | __asm ("tbh [pc, r3, lsl 1]");
0x00002cb8 ldr.w r2, [sb] | r2 = *(sb);
0x00002cbc add.w r5, sb, 4 | r5 = sb + 4;
0x00002cc0 ldr r3, [sp, 0x18] | r3 = var_18h;
0x00002cc2 adds r1, r2, 1 | r1 = r2 + 1;
0x00002cc4 str r5, [r3] | *(r3) = r5;
| if (r1 == r2) {
0x00002cc6 beq.w 0x30ee | goto label_39;
| }
0x00002cca cmp.w r2, 0x4b0 |
| if (r2 <= 0x4b0) {
0x00002cce blo.w 0x308c | goto label_40;
| }
0x00002cd2 movw r3, 0x8c9f | r3 = 0x8c9f;
0x00002cd6 cmp r2, r3 |
| if (r2 < r3) {
0x00002cd8 bls.w 0x3148 | goto label_41;
| }
0x00002cdc movw r3, 0x45ff |
0x00002ce0 movt r3, 5 | r3 = 0x545ff;
0x00002ce4 cmp r2, r3 |
| if (r2 < r3) {
0x00002ce6 bls.w 0x30fc | goto label_42;
| }
0x00002cea movw r3, 0x5bff |
0x00002cee movt r3, 0x526 | r3 = 0x5265bff;
0x00002cf2 cmp r2, r3 |
| if (r2 < r3) {
0x00002cf4 bls.w 0x32dc | goto label_43;
| }
0x00002cf8 movw r3, 0xa47b |
0x00002cfc ldr.w r1, [pc, 0x53c] |
0x00002d00 movt r3, 0x4418 | r3 = 0xa47b;
0x00002d04 movs r0, 1 | r0 = 1;
0x00002d06 umull r2, r3, r3, r2 | r2:r3 = r3 * r2;
0x00002d0a mov sb, r5 | sb = r5;
0x00002d0c add r1, pc | r1 = 0x5f4c;
0x00002d0e lsrs r2, r3, 0x17 | r2 = r3 >> 0x17;
0x00002d10 blx 0x1a60 | printf_chk ()
0x00002d14 b 0x2c28 |
| } while (1);
0x00002d16 ldr r0, [sp, 0x18] | r0 = var_18h;
0x00002d18 add.w r1, sb, 4 | r1 = sb + 4;
0x00002d1c ldr.w r3, [sb] | r3 = *(sb);
0x00002d20 mov sb, r1 | sb = r1;
0x00002d22 mov r2, r5 | r2 = r5;
0x00002d24 adds r6, 1 | r6++;
0x00002d26 str r1, [r0] | *(r0) = r1;
0x00002d28 movs r0, 1 | r0 = 1;
0x00002d2a ldr.w r1, [pc, 0x514] |
0x00002d2c asrs r4, r2, 0x14 | r4 = r2 >> 0x14;
0x00002d2e add r1, pc | r1 = 0x5f74;
0x00002d30 blx 0x1a60 | printf_chk ()
0x00002d34 b 0x292a | goto label_0;
0x00002d36 ldr r1, [sp, 0x18] | r1 = var_18h;
0x00002d38 add.w sb, sb, 4 | sb += 4;
0x00002d3c ldr r3, [sb, -0x4] | r3 = *((sb - 0x4));
0x00002d40 mov r2, r5 | r2 = r5;
0x00002d42 movs r0, 1 | r0 = 1;
0x00002d44 adds r6, 1 | r6++;
0x00002d46 str.w sb, [r1] | __asm ("str.w sb, [r1]");
0x00002d4a ldr.w r1, [pc, 0x4f8] |
0x00002d4e add r1, pc | r1 = 0x5f98;
0x00002d50 blx 0x1a60 | printf_chk ()
0x00002d54 b 0x292a | goto label_0;
0x00002d56 ldr r1, [sp, 0x18] | r1 = var_18h;
0x00002d58 add.w r2, sb, 4 | r2 = sb + 4;
0x00002d5c mov r8, r2 | r8 = r2;
0x00002d5e ldr.w r3, [sb] | r3 = *(sb);
0x00002d62 str r2, [r1] | *(r1) = r2;
0x00002d64 ldr r2, [sp, 0x14] | r2 = var_14h;
0x00002d66 cmp r2, 0 |
| if (r2 == 0) {
0x00002d68 beq.w 0x2f8c | goto label_44;
| }
0x00002d6c ldr.w r1, [pc, 0x4d8] |
0x00002d70 mov sb, r8 | sb = r8;
0x00002d72 mov r2, r5 | r2 = r5;
0x00002d74 movs r0, 1 | r0 = 1;
0x00002d76 add r1, pc | r1 = 0x5fc2;
0x00002d78 blx 0x1a60 | printf_chk ()
| label_8:
0x00002d7c adds r6, 1 | r6++;
0x00002d7e b 0x292a | goto label_0;
0x00002d80 movs r5, 0 | r5 = 0;
0x00002d82 ldr r1, [sp, 0x18] | r1 = var_18h;
0x00002d84 add.w sb, sb, 4 | sb += var_4h_2;
0x00002d88 ldr r3, [sb, -0x4] | r3 = *((sb - 0x4));
0x00002d8c mov r2, r5 | r2 = r5;
0x00002d8e movs r0, 1 | r0 = 1;
0x00002d90 adds r6, 1 | r6++;
0x00002d92 str.w sb, [r1] | __asm ("str.w sb, [r1]");
0x00002d96 ldr.w r1, [pc, 0x4b4] |
0x00002d9a add r1, pc | r1 = 0x5fec;
0x00002d9c blx 0x1a60 | printf_chk ()
0x00002da0 b 0x292a | goto label_0;
0x00002da2 ldr r3, [sp, 0x18] | r3 = var_18h;
0x00002da4 add.w sb, sb, 4 | sb += 4;
0x00002da8 ldr r0, [sb, -0x4] | r0 = *((sb - 0x4));
0x00002dac adds r6, 1 | r6++;
0x00002dae str.w sb, [r3] | __asm ("str.w sb, [r3]");
0x00002db2 blx 0x1a78 | putchar (r0);
0x00002db6 b 0x292a | goto label_0;
0x00002db8 ldr r1, [sp, 0x18] | r1 = var_18h;
0x00002dba subs r5, r3, 1 | r5 = r3 - 1;
0x00002dbc add.w r2, sb, 4 | r2 = sb + 4;
0x00002dc0 ldr.w r8, [sb] | r8 = *(sb);
0x00002dc4 str r2, [r1] | *(r1) = r2;
| if (r5 < r3) {
0x00002dc6 bmi 0x2de0 | goto label_45;
| }
0x00002dc8 mov sb, r2 | sb = r2;
| do {
0x00002dca lsr.w r0, r8, r5 | r0 = r8 >> r5;
0x00002dce subs r5, 1 | r5--;
0x00002dd0 and r0, r0, 1 | r0 &= 1;
0x00002dd4 adds r0, 0x30 | r0 += 0x30;
0x00002dd6 blx 0x1a78 | putchar (r0);
0x00002dda adds r3, r5, 1 | r3 = r5 + 1;
0x00002ddc bne 0x2dca |
| } while (r3 != r5);
0x00002dde mov r2, sb | r2 = sb;
| label_45:
0x00002de0 mov sb, r2 | sb = r2;
0x00002de2 adds r6, 1 | r6++;
0x00002de4 b 0x292a | goto label_0;
0x00002de6 movs r5, 0 | r5 = 0;
0x00002de8 ldr r1, [sp, 0x18] | r1 = var_18h;
0x00002dea add.w sb, sb, 4 | sb += 4;
0x00002dee ldr r3, [sb, -0x4] | r3 = *((sb - 0x4));
0x00002df2 mov r2, r5 | r2 = r5;
0x00002df4 movs r0, 1 | r0 = 1;
0x00002df6 adds r6, 1 | r6++;
0x00002df8 str.w sb, [r1] | __asm ("str.w sb, [r1]");
0x00002dfc ldr.w r1, [pc, 0x450] |
0x00002e00 add r1, pc | r1 = 0x6054;
0x00002e02 blx 0x1a60 | printf_chk ()
0x00002e06 b 0x292a | goto label_0;
0x00002e08 ldr r3, [sp, 0x18] | r3 = var_18h;
0x00002e0a add.w r5, sb, 4 | r5 = sb + 4;
0x00002e0e ldr.w r0, [sb] | r0 = *(sb);
0x00002e12 str r5, [r3] | *(r3) = r5;
0x00002e14 blx 0x1d2c | fcn_00001d2c ();
0x00002e16 vmlal.s8 q1, d10, d0 | __asm ("vmlal.s8 q1, d10, d0");
| if (r6 == 1) {
0x00002e1a beq.w 0x2c26 | goto label_4;
| }
0x00002e1e ldr.w r2, [pc, 0x434] |
0x00002e22 mov r3, r0 | r3 = r0;
0x00002e24 mov.w r1, 0x100 | r1 = 0x100;
0x00002e28 mov r0, r7 | r0 = r7;
0x00002e2a mov sb, r5 | sb = r5;
0x00002e2c add r2, pc | r2 = 0x6086;
0x00002e2e blx 0x1cd4 | fcn_00001cd4 ();
0x00002e32 ldr.w r1, [pc, 0x424] |
0x00002e36 mov r2, r7 | r2 = r7;
0x00002e38 movs r0, 1 | r0 = 1;
0x00002e3a add r1, pc | r1 = 0x6098;
0x00002e3c blx 0x1a60 | printf_chk ()
0x00002e40 b 0x2c28 | goto label_5;
0x00002e42 ldr r3, [sp, 0x18] | r3 = var_18h;
0x00002e44 add.w sb, sb, 7 | sb += 7;
0x00002e48 bic sb, sb, 7 | sb = BIT_MASK (sb, 7);
0x00002e4c vldr d17, [sb] | __asm ("vldr d17, [sb]");
0x00002e50 add.w sb, sb, 8 | sb += 8;
0x00002e54 str.w sb, [r3] | __asm ("str.w sb, [r3]");
0x00002e58 ldr r3, [sp, 0x14] | r3 = var_14h;
0x00002e5a vabs.f64 d16, d17 | __asm ("vabs.f64 d16, d17");
0x00002e5e cmp r3, 0 |
| if (r3 != 0) {
0x00002e60 beq.w 0x2fb0 |
0x00002e64 vldr d18, [pc, 0x330] | __asm ("vldr d18, [0x0000319c]");
0x00002e68 vcmpe.f64 d16, d18 | __asm ("vcmpe.f64 d16, d18");
0x00002e6c vmrs apsr_nzcv, fpscr | __asm ("vmrs apsr_nzcv, fpscr");
0x00002e6e lsls.w r1, r0, r0 | r1 = r0 << r0;
0x00002e72 strh r4, [r0, 0xc] | *((r0 + 0xc)) = r4;
0x00002e74 vldr d18, [pc, 0x328] | __asm ("vldr d18, [0x000031a4]");
0x00002e78 vcmpe.f64 d16, d18 | __asm ("vcmpe.f64 d16, d18");
0x00002e7c vmrs apsr_nzcv, fpscr | __asm ("vmrs apsr_nzcv, fpscr");
| if (r1 < r0) {
0x00002e80 bmi.w 0x3118 | goto label_46;
| }
0x00002e84 vldr d18, [pc, 0x320] | __asm ("vldr d18, [0x000031ac]");
0x00002e88 vcmpe.f64 d16, d18 | __asm ("vcmpe.f64 d16, d18");
0x00002e8c vmrs apsr_nzcv, fpscr | __asm ("vmrs apsr_nzcv, fpscr");
| if (r1 < r0) {
0x00002e90 bmi.w 0x3316 | goto label_47;
| }
0x00002e94 vldr d18, [pc, 0x318] | __asm ("vldr d18, [0x000031b4]");
0x00002e98 vcmpe.f64 d16, d18 | __asm ("vcmpe.f64 d16, d18");
0x00002e9c vmrs apsr_nzcv, fpscr | __asm ("vmrs apsr_nzcv, fpscr");
| if (r1 < r0) {
0x00002ea0 bmi.w 0x3304 | goto label_48;
| }
0x00002ea4 vldr d18, [pc, 0x310] | __asm ("vldr d18, [0x000031bc]");
0x00002ea8 vcmpe.f64 d16, d18 | __asm ("vcmpe.f64 d16, d18");
0x00002eac vmrs apsr_nzcv, fpscr | __asm ("vmrs apsr_nzcv, fpscr");
| if (r1 < r0) {
0x00002eb0 bmi.w 0x33ae | goto label_49;
| }
0x00002eb4 vldr d18, [pc, 0x308] | __asm ("vldr d18, [0x000031c4]");
0x00002eb8 vcmpe.f64 d16, d18 | __asm ("vcmpe.f64 d16, d18");
0x00002ebc vmrs apsr_nzcv, fpscr | __asm ("vmrs apsr_nzcv, fpscr");
| if (r1 < r0) {
0x00002ec0 bmi.w 0x3394 | goto label_50;
| }
0x00002ec4 vldr d18, [pc, 0x300] | __asm ("vldr d18, [0x000031cc]");
0x00002ec8 vcmpe.f64 d16, d18 | __asm ("vcmpe.f64 d16, d18");
0x00002ecc vmrs apsr_nzcv, fpscr | __asm ("vmrs apsr_nzcv, fpscr");
| if (r1 < r0) {
0x00002ed0 bmi.w 0x340e | goto label_51;
| }
0x00002ed4 vldr d18, [pc, 0x2f8] | __asm ("vldr d18, [0x000031d4]");
0x00002ed8 vcmpe.f64 d16, d18 | __asm ("vcmpe.f64 d16, d18");
0x00002edc vmrs apsr_nzcv, fpscr | __asm ("vmrs apsr_nzcv, fpscr");
| if (r1 >= r0) {
0x00002ee0 bpl.w 0x33f4 | goto label_52;
| }
0x00002ee4 vldr d16, [pc, 0x2f0] | __asm ("vldr d16, [0x000031dc]");
0x00002ee8 movs r0, 1 | r0 = 1;
0x00002eea ldr r1, [pc, 0x370] |
0x00002eec vdiv.f64 d16, d17, d16 | __asm ("vdiv.f64 d16, d17, d16");
0x00002ef0 add r1, pc | r1 = 0x6152;
0x00002ef2 vmov r2, r3, d16 | __asm ("vmov r2, r3, d16");
0x00002ef6 blx 0x1a60 | printf_chk ()
0x00002efa b 0x2ad2 | goto label_6;
0x00002efc ldr r1, [pc, 0x360] |
0x00002efe add.w sb, sb, 4 | sb += 4;
0x00002f02 ldr r3, [sp, 0x18] | r3 = var_18h;
0x00002f04 movs r0, 1 | r0 = 1;
0x00002f06 ldr r2, [sb, -0x4] | r2 = *((sb - 0x4));
0x00002f0a adds r6, 1 | r6++;
0x00002f0c add r1, pc | r1 = 0x6170;
0x00002f0e str.w sb, [r3] | __asm ("str.w sb, [r3]");
0x00002f12 blx 0x1a60 | printf_chk ()
0x00002f16 b 0x292a | goto label_0;
0x00002f18 ldr r2, [sp, 0x18] | r2 = var_18h;
0x00002f1a add.w r3, sb, 7 | r3 = sb + 7;
0x00002f1e bic r3, r3, 7 | r3 = BIT_MASK (r3, 7);
0x00002f22 vldr d17, [pc, 0x294] | __asm ("vldr d17, [0x000031bc]");
0x00002f26 add.w sb, r3, 8 | sb = r3 + 8;
0x00002f2a ldr r1, [sp, 0x14] | r1 = var_14h;
0x00002f2c str.w sb, [r2] | __asm ("str.w sb, [r2]");
0x00002f30 ldrd r2, r3, [r3] | __asm ("ldrd r2, r3, [r3]");
0x00002f34 vmov d16, r2, r3 | __asm ("vmov d16, r2, r3");
0x00002f38 vabs.f64 d16, d16 | __asm ("vabs.f64 d16, d16");
0x00002f3c vcmpe.f64 d16, d17 | __asm ("vcmpe.f64 d16, d17");
| if (r1 != 0) {
0x00002f40 cbz r1, 0x2f9c |
0x00002f42 vmrs apsr_nzcv, fpscr | __asm ("vmrs apsr_nzcv, fpscr");
| if (r1 >= 0) {
0x00002f46 bpl.w 0x309a | goto label_53;
| }
0x00002f4a ldr r1, [pc, 0x318] |
0x00002f4c movs r0, 1 | r0 = 1;
0x00002f4e add r1, pc | r1 = 0x61b8;
0x00002f50 blx 0x1a60 | printf_chk ()
0x00002f54 b 0x2ad2 | goto label_6;
| label_24:
0x00002f56 movs r0, 0xa | r0 = 0xa;
0x00002f58 blx 0x1a78 | putchar (r0);
0x00002f5c b 0x2a16 | goto label_7;
0x00002f5e ldr r1, [pc, 0x308] |
0x00002f60 add.w r3, sb, 7 | r3 = sb + 7;
0x00002f64 bic r3, r3, 7 | r3 = BIT_MASK (r3, 7);
0x00002f68 ldr r2, [sp, 0x18] | r2 = var_18h;
0x00002f6a add.w sb, r3, 8 | sb = r3 + 8;
0x00002f6e vldr d16, [r3] | __asm ("vldr d16, [r3]");
0x00002f72 add r1, pc | r1 = 0x61e0;
0x00002f74 movs r3, 3 | r3 = 3;
0x00002f76 movs r5, 0 | r5 = 0;
0x00002f78 str.w sb, [r2] | __asm ("str.w sb, [r2]");
| label_15:
0x00002f7c mov r2, r5 | r2 = r5;
0x00002f7e movs r0, 1 | r0 = 1;
0x00002f80 vstr d16, [sp] | __asm ("vstr d16, [sp]");
0x00002f84 adds r6, 1 | r6++;
0x00002f86 blx 0x1a60 | printf_chk ()
0x00002f8a b 0x292a | goto label_0;
| label_44:
0x00002f8c ldr r1, [pc, 0x2dc] |
0x00002f8e mov r2, r5 | r2 = r5;
0x00002f90 movs r0, 1 | r0 = 1;
0x00002f92 mov sb, r8 | sb = r8;
0x00002f94 add r1, pc | r1 = 0x6204;
0x00002f96 blx 0x1a60 | printf_chk ()
0x00002f9a b 0x2d7c | goto label_8;
| }
0x00002f9c vmrs apsr_nzcv, fpscr | __asm ("vmrs apsr_nzcv, fpscr");
| if (r0 >= 1) {
0x00002fa0 bpl.w 0x30a6 | goto label_54;
| }
0x00002fa4 ldr r1, [pc, 0x2c8] |
0x00002fa6 movs r0, 1 | r0 = 1;
0x00002fa8 add r1, pc | r1 = 0x621c;
0x00002faa blx 0x1a60 | printf_chk ()
0x00002fae b 0x2ad2 | goto label_6;
| }
0x00002fb0 vldr d17, [pc, 0x1e4] | __asm ("vldr d17, [0x0000319c]");
0x00002fb4 vcmpe.f64 d16, d17 | __asm ("vcmpe.f64 d16, d17");
0x00002fb8 vmrs apsr_nzcv, fpscr | __asm ("vmrs apsr_nzcv, fpscr");
| if (r0 < 1) {
0x00002fbc bmi.w 0x3164 | goto label_55;
| }
0x00002fc0 vldr d17, [pc, 0x1dc] | __asm ("vldr d17, [0x000031a4]");
0x00002fc4 vcmpe.f64 d16, d17 | __asm ("vcmpe.f64 d16, d17");
0x00002fc8 vmrs apsr_nzcv, fpscr | __asm ("vmrs apsr_nzcv, fpscr");
| if (r0 < 1) {
0x00002fcc bmi.w 0x3130 | goto label_56;
| }
0x00002fd0 vldr d17, [pc, 0x1d4] | __asm ("vldr d17, [0x000031ac]");
0x00002fd4 vcmpe.f64 d16, d17 | __asm ("vcmpe.f64 d16, d17");
0x00002fd8 vmrs apsr_nzcv, fpscr | __asm ("vmrs apsr_nzcv, fpscr");
| if (r0 < 1) {
0x00002fdc bmi.w 0x334e | goto label_57;
| }
0x00002fe0 vldr d17, [pc, 0x1cc] | __asm ("vldr d17, [0x000031b4]");
0x00002fe4 vcmpe.f64 d16, d17 | __asm ("vcmpe.f64 d16, d17");
0x00002fe8 vmrs apsr_nzcv, fpscr | __asm ("vmrs apsr_nzcv, fpscr");
| if (r0 < 1) {
0x00002fec bmi.w 0x333c | goto label_58;
| }
0x00002ff0 vldr d17, [pc, 0x1c4] | __asm ("vldr d17, [0x000031bc]");
0x00002ff4 vcmpe.f64 d16, d17 | __asm ("vcmpe.f64 d16, d17");
0x00002ff8 vmrs apsr_nzcv, fpscr | __asm ("vmrs apsr_nzcv, fpscr");
| if (r0 < 1) {
0x00002ffc bmi.w 0x3382 | goto label_59;
| }
0x00003000 vldr d17, [pc, 0x1bc] | __asm ("vldr d17, [0x000031c4]");
0x00003004 vcmpe.f64 d16, d17 | __asm ("vcmpe.f64 d16, d17");
0x00003008 vmrs apsr_nzcv, fpscr | __asm ("vmrs apsr_nzcv, fpscr");
| if (r0 < 1) {
0x0000300c bmi.w 0x3368 | goto label_60;
| }
0x00003010 vldr d17, [pc, 0x1b4] | __asm ("vldr d17, [0x000031cc]");
0x00003014 vcmpe.f64 d16, d17 | __asm ("vcmpe.f64 d16, d17");
0x00003016 lsrs r1, r4, 0xf | r1 = r4 >> 0xf;
0x00003018 vmrs apsr_nzcv, fpscr | __asm ("vmrs apsr_nzcv, fpscr");
| if (r1 < r4) {
0x0000301c bmi.w 0x33da | goto label_61;
| }
0x00003020 vldr d17, [pc, 0x1ac] | __asm ("vldr d17, [0x000031d4]");
0x00003024 vcmpe.f64 d16, d17 | __asm ("vcmpe.f64 d16, d17");
0x00003028 vmrs apsr_nzcv, fpscr | __asm ("vmrs apsr_nzcv, fpscr");
| if (r1 >= r4) {
0x0000302c bpl.w 0x33c0 | goto label_62;
| }
0x00003030 vldr d17, [pc, 0x1a4] | __asm ("vldr d17, [0x000031dc]");
0x00003034 movs r0, 1 | r0 = 1;
0x00003036 ldr r1, [pc, 0x23c] |
0x00003038 vdiv.f64 d16, d16, d17 | __asm ("vdiv.f64 d16, d16, d17");
0x0000303c add r1, pc | r1 = 0x62b6;
0x0000303e vmov r2, r3, d16 | __asm ("vmov r2, r3, d16");
0x00003042 blx 0x1a60 | printf_chk ()
0x00003046 b 0x2ad2 | goto label_6;
| label_31:
0x00003048 ldr r1, [pc, 0x22c] |
0x0000304a movs r0, 1 | r0 = 1;
0x0000304c mov sb, r5 | sb = r5;
0x0000304e add r1, pc | r1 = 0x62ca;
0x00003050 blx 0x1a60 | printf_chk ()
0x00003054 b 0x2c28 | goto label_5;
| label_30:
0x00003056 ldr r2, [pc, 0x224] |
0x00003058 add r2, pc | r2 = 0x62da;
0x0000305a b 0x2bf8 | goto label_9;
| label_28:
0x0000305c ldr r1, [pc, 0x220] |
0x0000305e add r1, pc | r1 = 0x62e2;
0x00003060 b 0x2ba2 | goto label_10;
| label_34:
0x00003062 ldr r2, [pc, 0x220] |
0x00003064 add r2, pc | r2 = 0x62ee;
0x00003066 b 0x2c52 | goto label_11;
| label_33:
0x00003068 ldr r2, [pc, 0x21c] |
0x0000306a add r2, pc | r2 = 0x62f6;
0x0000306c b 0x2c52 | goto label_11;
| label_36:
0x0000306e ldr r2, [pc, 0x21c] |
0x00003070 add r2, pc | r2 = 0x6302;
0x00003072 b 0x2c88 | goto label_12;
| label_37:
0x00003074 ldr r2, [pc, 0x218] |
0x00003076 add r2, pc | r2 = 0x630a;
0x00003078 b 0x2c88 | goto label_12;
| label_32:
0x0000307a ldr r2, [pc, 0x218] |
0x0000307c add r2, pc | r2 = 0x6316;
0x0000307e b 0x2c52 | goto label_11;
| label_35:
0x00003080 ldr r2, [pc, 0x214] |
0x00003082 add r2, pc | r2 = 0x631e;
0x00003084 b 0x2c88 | goto label_12;
| label_29:
0x00003086 ldr r2, [pc, 0x214] |
0x00003088 add r2, pc | r2 = 0x632a;
0x0000308a b 0x2bc4 | goto label_13;
| label_40:
0x0000308c ldr r1, [pc, 0x210] |
0x0000308e movs r0, 1 | r0 = 1;
0x00003090 mov sb, r5 | sb = r5;
0x00003092 add r1, pc | r1 = 0x6336;
0x00003094 blx 0x1a60 | printf_chk ()
0x00003098 b 0x2c28 | goto label_5;
| label_53:
0x0000309a ldr r1, [pc, 0x208] |
0x0000309c movs r0, 1 | r0 = 1;
0x0000309e add r1, pc | r1 = 0x6348;
0x000030a0 blx 0x1a60 | printf_chk ()
0x000030a4 b 0x2ad2 | goto label_6;
| label_54:
0x000030a6 ldr r1, [pc, 0x200] |
0x000030a8 movs r0, 1 | r0 = 1;
0x000030aa add r1, pc | r1 = 0x6358;
0x000030ac blx 0x1a60 | printf_chk ()
0x000030b0 b 0x2ad2 | goto label_6;
0x000030b2 cmp r5, 1 |
| if (r5 == 1) {
0x000030b4 beq.w 0x3330 | goto label_63;
| }
0x000030b8 ldr r2, [pc, 0x1f0] |
0x000030ba add r2, pc | r2 = 0x636a;
| do {
| label_14:
0x000030bc ldr r1, [pc, 0x1f0] |
0x000030be movs r0, 1 | r0 = 1;
0x000030c0 adds r6, 1 | r6++;
0x000030c2 add r1, pc | r1 = 0x6376;
0x000030c4 blx 0x1a60 | printf_chk ()
0x000030c8 b 0x292a | goto label_0;
0x000030ca cmp r5, 1 |
| if (r5 == 1) {
0x000030cc beq.w 0x32fe | goto label_64;
| }
0x000030d0 ldr r2, [pc, 0x1e0] |
0x000030d2 add r2, pc | r2 = 0x638a;
0x000030d4 b 0x30bc |
| } while (1);
0x000030d6 cmp r5, 1 |
| if (r5 != 1) {
0x000030d8 beq.w 0x3336 |
0x000030dc ldr r2, [pc, 0x1d8] |
0x000030de add r2, pc | r2 = 0x639a;
0x000030e0 b 0x30bc | goto label_14;
0x000030e2 cmp r5, 1 |
| if (r5 != 1) {
0x000030e4 beq.w 0x32f8 |
0x000030e8 ldr r2, [pc, 0x1d0] |
0x000030ea add r2, pc | r2 = 0x63aa;
0x000030ec b 0x30bc | goto label_14;
| label_39:
0x000030ee ldr r1, [pc, 0x1d0] |
0x000030f0 movs r0, 1 | r0 = 1;
0x000030f2 mov sb, r5 | sb = r5;
0x000030f4 add r1, pc | r1 = 0x63ba;
0x000030f6 blx 0x1a60 | printf_chk ()
0x000030fa b 0x2c28 | goto label_5;
| label_42:
0x000030fc movw r3, 0xb3c5 |
0x00003100 ldr r1, [pc, 0x1c0] |
0x00003102 movt r3, 0x91a2 | r3 = 0x91a2b3c5;
0x00003106 movs r0, 1 | r0 = 1;
0x00003108 umull r2, r3, r3, r2 | r2:r3 = r3 * r2;
0x0000310c mov sb, r5 | sb = r5;
0x0000310e add r1, pc | r1 = 0x63d6;
0x00003110 lsrs r2, r3, 0xb | r2 = r3 >> 0xb;
0x00003112 blx 0x1a60 | printf_chk ()
0x00003116 b 0x2c28 | goto label_5;
| label_46:
0x00003118 vldr d16, [pc, 0xc4] | __asm ("vldr d16, [0x000031e4]");
0x0000311c movs r0, 1 | r0 = 1;
0x0000311e ldr r1, [pc, 0x1a8] |
0x00003120 vmul.f64 d16, d17, d16 | __asm ("vmul.f64 d16, d17, d16");
0x00003124 add r1, pc | r1 = 0x63f2;
0x00003126 vmov r2, r3, d16 | __asm ("vmov r2, r3, d16");
0x0000312a blx 0x1a60 | printf_chk ()
0x0000312e b 0x2ad2 | goto label_6;
| label_56:
0x00003130 vldr d17, [pc, 0xac] | __asm ("vldr d17, [0x000031e4]");
0x00003134 movs r0, 1 | r0 = 1;
0x00003136 ldr r1, [pc, 0x194] |
0x00003138 vmul.f64 d16, d16, d17 | __asm ("vmul.f64 d16, d16, d17");
0x0000313a lsrs r1, r4, 0xe | r1 = r4 >> 0xe;
0x0000313c add r1, pc | r1 = 0x640e;
0x0000313e vmov r2, r3, d16 | __asm ("vmov r2, r3, d16");
0x00003142 blx 0x1a60 | printf_chk ()
0x00003146 b 0x2ad2 | goto label_6;
| label_41:
0x00003148 movw r3, 0x8889 |
0x0000314c ldr r1, [pc, 0x180] |
| /* if there is a right shift of 8, then it's a division by 1/480 */
0x0000314e movt r3, 0x8888 | r3 = 0x88888889;
0x00003152 movs r0, 1 | r0 = 1;
0x00003154 umull r2, r3, r3, r2 | r2:r3 = r3 * r2;
0x00003158 mov sb, r5 | sb = r5;
0x0000315a add r1, pc | r1 = 0x642e;
0x0000315c lsrs r2, r3, 5 | r2 = r3 >> 5;
0x0000315e blx 0x1a60 | printf_chk ()
0x00003162 b 0x2c28 | goto label_5;
| label_55:
0x00003164 vldr d17, [pc, 0x80] | __asm ("vldr d17, [0x000031ec]");
0x00003168 movs r0, 1 | r0 = 1;
0x0000316a ldr r1, [pc, 0x168] |
0x0000316c vmul.f64 d16, d16, d17 | __asm ("vmul.f64 d16, d16, d17");
0x00003170 add r1, pc | r1 = 0x644a;
0x00003172 vmov r2, r3, d16 | __asm ("vmov r2, r3, d16");
0x00003176 blx 0x1a60 | printf_chk ()
0x0000317a b 0x2ad2 | goto label_6;
0x0000317c vldr d16, [pc, 0x68] | __asm ("vldr d16, [0x000031ec]");
0x00003180 movs r0, 1 | r0 = 1;
0x00003182 ldr r1, [pc, 0x154] |
0x00003184 vmul.f64 d16, d17, d16 | __asm ("vmul.f64 d16, d17, d16");
0x00003188 add r1, pc | r1 = 0x6466;
0x0000318a vmov r2, r3, d16 | __asm ("vmov r2, r3, d16");
0x0000318e blx 0x1a60 | printf_chk ()
0x00003192 b 0x2ad2 | goto label_6;
| label_43:
0x000032dc movw r3, 0x4507 |
0x000032e0 ldr r1, [pc, 0x194] |
0x000032e2 movt r3, 0xc22e | r3 = 0xc22e4507;
0x000032e6 movs r0, 1 | r0 = 1;
0x000032e8 umull r3, r2, r3, r2 | r3:r2 = r3 * r2;
0x000032ec mov sb, r5 | sb = r5;
0x000032ee add r1, pc | r1 = 0x676a;
0x000032f0 lsrs r2, r2, 0x10 | r2 >>= 0x10;
0x000032f2 blx 0x1a60 | printf_chk ()
0x000032f6 b 0x2c28 | goto label_5;
| }
0x000032f8 ldr r2, [pc, 0x180] |
0x000032fa add r2, pc | r2 = 0x677a;
0x000032fc b 0x30bc | goto label_14;
| label_64:
0x000032fe ldr r2, [pc, 0x180] |
0x00003300 add r2, pc | r2 = 0x6786;
0x00003302 b 0x30bc | goto label_14;
| label_48:
0x00003304 ldr r1, [pc, 0x17c] |
0x00003306 movs r0, 1 | r0 = 1;
0x00003308 vmov r2, r3, d17 | __asm ("vmov r2, r3, d17");
0x0000330c add r1, pc | r1 = 0x6794;
0x0000330e blx 0x1a60 | printf_chk ()
0x00003312 b.w 0x2ad2 | goto label_6;
| label_47:
0x00003316 vldr d16, [pc, 0x140] | __asm ("vldr d16, [0x0000345c]");
0x0000331a movs r0, 1 | r0 = 1;
0x0000331c ldr r1, [pc, 0x168] |
0x0000331e vmul.f64 d16, d17, d16 | __asm ("vmul.f64 d16, d17, d16");
0x00003322 add r1, pc | r1 = 0x67ae;
0x00003324 vmov r2, r3, d16 | __asm ("vmov r2, r3, d16");
0x00003328 blx 0x1a60 | printf_chk ()
0x0000332c b.w 0x2ad2 | goto label_6;
| if (r1 != 0) {
0x0000332e cbnz r1, 0x33a6 | goto label_65;
| }
| label_63:
0x00003330 ldr r2, [pc, 0x158] |
0x00003332 add r2, pc | r2 = 0x67c2;
0x00003334 b 0x30bc | goto label_14;
| }
0x00003336 ldr r2, [pc, 0x158] |
0x00003338 add r2, pc | r2 = 0x67ce;
0x0000333a b 0x30bc | goto label_14;
| label_58:
0x0000333c ldr r1, [pc, 0x154] |
0x0000333e movs r0, 1 | r0 = 1;
0x00003340 vmov r2, r3, d16 | __asm ("vmov r2, r3, d16");
0x00003344 add r1, pc | r1 = 0x67dc;
0x00003346 blx 0x1a60 | printf_chk ()
0x0000334a b.w 0x2ad2 | goto label_6;
| label_57:
0x0000334e vldr d17, [pc, 0x108] | __asm ("vldr d17, [0x0000345c]");
0x00003352 movs r0, 1 | r0 = 1;
0x00003354 ldr r1, [pc, 0x140] |
0x00003356 vmul.f64 d16, d16, d17 | __asm ("vmul.f64 d16, d16, d17");
0x0000335a add r1, pc | r1 = 0x67f6;
0x0000335c vmov r2, r3, d16 | __asm ("vmov r2, r3, d16");
0x00003360 blx 0x1a60 | printf_chk ()
0x00003364 b.w 0x2ad2 | goto label_6;
| label_60:
0x00003368 vldr d17, [pc, 0xf4] | __asm ("vldr d17, [0x00003464]");
0x0000336c movs r0, 1 | r0 = 1;
0x0000336e ldr r1, [pc, 0x12c] |
0x00003370 vdiv.f64 d16, d16, d17 | __asm ("vdiv.f64 d16, d16, d17");
0x00003374 add r1, pc | r1 = 0x6816;
0x00003376 vmov r2, r3, d16 | __asm ("vmov r2, r3, d16");
0x0000337a blx 0x1a60 | printf_chk ()
0x0000337e b.w 0x2ad2 | goto label_6;
| label_59:
0x00003382 ldr r1, [pc, 0x11c] |
0x00003384 movs r0, 1 | r0 = 1;
0x00003386 vmov r2, r3, d16 | __asm ("vmov r2, r3, d16");
0x0000338a add r1, pc | r1 = 0x6830;
0x0000338c blx 0x1a60 | printf_chk ()
0x00003390 b.w 0x2ad2 | goto label_6;
| label_50:
0x00003394 vldr d16, [pc, 0xc8] | __asm ("vldr d16, [0x00003464]");
0x00003398 movs r0, 1 | r0 = 1;
0x0000339a ldr r1, [pc, 0x108] |
0x0000339c vdiv.f64 d16, d17, d16 | __asm ("vdiv.f64 d16, d17, d16");
0x000033a0 add r1, pc | r1 = 0x684a;
0x000033a2 vmov r2, r3, d16 | __asm ("vmov r2, r3, d16");
| label_65:
0x000033a6 blx 0x1a60 | printf_chk ()
0x000033aa b.w 0x2ad2 | goto label_6;
| label_49:
0x000033ae ldr r1, [pc, 0xf8] |
0x000033b0 movs r0, 1 | r0 = 1;
0x000033b2 vmov r2, r3, d17 | __asm ("vmov r2, r3, d17");
0x000033b6 add r1, pc | r1 = 0x6864;
0x000033b8 blx 0x1a60 | printf_chk ()
0x000033bc b.w 0x2ad2 | goto label_6;
| label_62:
0x000033c0 vldr d17, [pc, 0xa4] | __asm ("vldr d17, [0x0000346c]");
0x000033c4 movs r0, 1 | r0 = 1;
0x000033c6 ldr r1, [pc, 0xe4] |
0x000033c8 vdiv.f64 d16, d16, d17 | __asm ("vdiv.f64 d16, d16, d17");
0x000033cc add r1, pc | r1 = 0x687e;
0x000033ce vmov r2, r3, d16 | __asm ("vmov r2, r3, d16");
0x000033d2 blx 0x1a60 | printf_chk ()
0x000033d6 b.w 0x2ad2 | goto label_6;
| label_61:
0x000033da vldr d17, [pc, 0x94] | __asm ("vldr d17, [0x00003474]");
0x000033de movs r0, 1 | r0 = 1;
0x000033e0 ldr r1, [pc, 0xcc] |
0x000033e2 vdiv.f64 d16, d16, d17 | __asm ("vdiv.f64 d16, d16, d17");
0x000033e6 add r1, pc | r1 = 0x689a;
0x000033e8 vmov r2, r3, d16 | __asm ("vmov r2, r3, d16");
0x000033ec blx 0x1a60 | printf_chk ()
0x000033f0 b.w 0x2ad2 | goto label_6;
| label_52:
0x000033f4 vldr d16, [pc, 0x70] | __asm ("vldr d16, [0x0000346c]");
0x000033f8 movs r0, 1 | r0 = 1;
0x000033fa ldr r1, [pc, 0xb8] |
0x000033fc vdiv.f64 d16, d17, d16 | __asm ("vdiv.f64 d16, d17, d16");
0x00003400 add r1, pc | r1 = 0x68ba;
0x00003402 vmov r2, r3, d16 | __asm ("vmov r2, r3, d16");
0x00003406 blx 0x1a60 | printf_chk ()
0x0000340a b.w 0x2ad2 | goto label_6;
| label_51:
0x0000340e vldr d16, [pc, 0x60] | __asm ("vldr d16, [0x00003474]");
0x00003412 movs r0, 1 | r0 = 1;
0x00003414 ldr r1, [pc, 0xa0] |
0x00003416 vdiv.f64 d16, d17, d16 | __asm ("vdiv.f64 d16, d17, d16");
0x0000341a add r1, pc | r1 = 0x68d6;
0x0000341c vmov r2, r3, d16 | __asm ("vmov r2, r3, d16");
0x00003420 blx 0x1a60 | printf_chk ()
0x00003424 b.w 0x2ad2 | goto label_6;
| label_25:
0x00003428 blx 0x1c98 | fcn_00001c98 ();
| label_23:
0x0000342c ldr r3, [pc, 0x8c] |
0x0000342e movw r2, 0x736 | r2 = 0x736;
0x00003432 ldr r1, [pc, 0x8c] |
0x00003434 ldr r0, [pc, 0x8c] |
0x00003436 add r3, pc | r3 = 0x68f6;
0x00003438 add r1, pc | r1 = 0x68fe;
0x0000343a adds r3, 0x10 | r3 += 0x10;
0x0000343c add r0, pc | r0 = 0x6904;
0x0000343e blx 0x1adc | fcn_00001adc ();
| label_27:
0x00003442 ldr r1, [pc, 0x84] |
0x00003444 add r1, pc | r1 = 0x6912;
0x00003446 b 0x2f7c | goto label_15;
| label_38:
0x00003448 cmp r5, 1 |
| if (r5 != 1) {
0x0000344a beq 0x3452 |
0x0000344c ldr r2, [pc, 0x7c] |
0x0000344e add r2, pc | r2 = 0x691e;
0x00003450 b 0x30bc | goto label_14;
| }
0x00003452 ldr r2, [pc, 0x7c] |
0x00003454 add r2, pc | r2 = 0x692a;
0x00003456 b 0x30bc | goto label_14;
| }
r2dec has crashed (info: /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/bin/chronyc @ 0x3cb0).
Please report the bug at https://github.com/radareorg/r2dec-js/issues
Use the option '--issue' or the command 'pddi' to generate
the needed data for the issue.
r2dec has crashed (info: /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/bin/chronyc @ 0x4710).
Please report the bug at https://github.com/radareorg/r2dec-js/issues
Use the option '--issue' or the command 'pddi' to generate
the needed data for the issue.
[*] Function printf used 49 times chronyc