Created
September 5, 2018 10:26
-
-
Save brainstorm/925221e4787578567f1048570baa6d16 to your computer and use it in GitHub Desktop.
ARDrone ESC motor pseudocode (with r2dec decompiler, pdd command)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <stdint.h> | |
#include <limits.h> | |
#define DISABLE_INTERRUPTS __asm(cli) | |
#define ENABLE_INTERRUPTS __asm(sei) | |
#define MEM_X ((uint16_t*)((r27 << 8) | r26)) | |
#define MEM_Y ((uint16_t*)((r29 << 8) | r28)) | |
#define MEM_Z ((uint16_t*)((r31 << 8) | r30)) | |
#define READ_FROM_IO(x,y) __asm(in (y), (x)) | |
#define WRITE_TO_IO(x,y) __asm(in (x), (y)) | |
uint8_t rotate_left8 (uint8_t value, uint32_t count) { | |
const uint8_t mask = (CHAR_BIT * sizeof (value)) - 1; | |
count &= mask; | |
return (value << count) | (value >> (-count & mask)); | |
} | |
uint8_t rotate_right8 (uint8_t value, uint32_t count) { | |
const uint8_t mask = (CHAR_BIT * sizeof (value)) - 1; | |
count &= mask; | |
return (value >> count) | (value << (-count & mask)); | |
} | |
uint8_t fcn_000019e8 () { | |
uint16_t value1 = r22 * r18; | |
r0 = (value1 & 0xFF); | |
r1 = (value1 >> 8); | |
r26 = r0; | |
r27 = r1; | |
uint16_t value2 = r23 * r19; | |
r0 = (value2 & 0xFF); | |
r1 = (value2 >> 8); | |
r30 = r0; | |
r31 = r1; | |
uint16_t value3 = r24 * r18; | |
r0 = (value3 & 0xFF); | |
r1 = (value3 >> 8); | |
r30 += r0; | |
r31 += r1; | |
uint16_t value4 = r22 * r20; | |
r0 = (value4 & 0xFF); | |
r1 = (value4 >> 8); | |
r30 += r0; | |
r31 += r1; | |
uint16_t value5 = r25 * r18; | |
r0 = (value5 & 0xFF); | |
r1 = (value5 >> 8); | |
r31 += r0; | |
uint16_t value6 = r24 * r19; | |
r0 = (value6 & 0xFF); | |
r1 = (value6 >> 8); | |
r31 += r0; | |
uint16_t value7 = r23 * r20; | |
r0 = (value7 & 0xFF); | |
r1 = (value7 >> 8); | |
r31 += r0; | |
uint16_t value8 = r22 * r21; | |
r0 = (value8 & 0xFF); | |
r1 = (value8 >> 8); | |
r31 += r0; | |
r25 = 0; | |
uint16_t value9 = r23 * r18; | |
r0 = (value9 & 0xFF); | |
r1 = (value9 >> 8); | |
r27 += r0; | |
r30 += r1; | |
r31 += r25; | |
uint16_t value10 = r22 * r19; | |
r0 = (value10 & 0xFF); | |
r1 = (value10 >> 8); | |
r27 += r0; | |
r30 += r1; | |
r31 += r25; | |
r22 = r26; | |
r23 = r27; | |
r24 = r30; | |
r25 = r31; | |
r1 = 0; | |
return r0; | |
} | |
uint8_t fcn_0000005e () { | |
READ_FROM_IO (0x3d, r28); | |
READ_FROM_IO (0x3e, r29); | |
r28 -= 0x08; | |
r29 -= 0x08; | |
READ_FROM_IO (0x3f, r0); | |
DISABLE_INTERRUPTS; | |
WRITE_TO_IO (0x3e, r29); | |
WRITE_TO_IO (0x3f, r0); | |
WRITE_TO_IO (0x3d, r28); | |
r24 = *(fcn.0000023a); | |
r18 = r24; | |
r19 = 0x00; | |
r20 = 0x00; | |
r21 = 0x00; | |
*(MEM_Y + 1) = r18; | |
*(MEM_Y + 2) = r19; | |
*(MEM_Y + 3) = r20; | |
*(MEM_Y + 4) = r21; | |
r18 = *(0x23b); | |
r19 = 0x00; | |
r24 = *(vector.timer2ovf); | |
r25 = *(0x239); | |
uint16_t value1 = r18 * r24; | |
r0 = (value1 & 0xFF); | |
r1 = (value1 >> 8); | |
r20 = r0; | |
r21 = r1; | |
uint16_t value2 = r18 * r25; | |
r0 = (value2 & 0xFF); | |
r1 = (value2 >> 8); | |
r21 += r0; | |
uint16_t value3 = r19 * r24; | |
r0 = (value3 & 0xFF); | |
r1 = (value3 >> 8); | |
r21 += r0; | |
r1 = 0; | |
r24 = r20; | |
r25 = r21; | |
r26 = 0x00; | |
r27 = 0x00; | |
*(MEM_Y + 5) = r24; | |
*(MEM_Y + 6) = r25; | |
*(MEM_Y + 7) = r26; | |
*(MEM_Y + 8) = r27; | |
r22 = *(MEM_Y + 1); | |
r23 = *(MEM_Y + 2); | |
r24 = *(MEM_Y + 3); | |
r25 = *(MEM_Y + 4); | |
r18 = 0xc0; | |
r19 = 0xb8; | |
r20 = 0xa5; | |
r21 = 0x1d; | |
(*(void(*)()) 0xfffff9e8) (); | |
r18 = *(MEM_Y + 5); | |
r19 = *(MEM_Y + 6); | |
r20 = *(MEM_Y + 7); | |
r21 = *(MEM_Y + 8); | |
(*(void(*)()) 0xfffffa4e) (); | |
*(0x26b) = r18; | |
*(0x26c) = r19; | |
*(0x26d) = r20; | |
*(0x00000080) = r21; | |
r24 = r20; | |
r25 = r21; | |
r22 = r18; | |
r23 = r19; | |
r18 = 0x00; | |
r19 = 0x18; | |
r20 = 0x00; | |
r21 = 0x00; | |
(*(void(*)()) 0xfffffa4e) (); | |
*(0x22b) = r18; | |
*(0x22c) = r19; | |
*(0x22d) = r20; | |
*(0x22e) = r21; | |
r18 = *(0x25c); | |
r19 = *(0x25d); | |
r20 = 0x00; | |
r21 = 0x00; | |
r22 = *(MEM_Y + 1); | |
r23 = *(MEM_Y + 2); | |
r24 = *(MEM_Y + 3); | |
r25 = *(MEM_Y + 4); | |
(*(void(*)()) 0xfffff9e8) (); | |
r18 = 0xc3; | |
r19 = 0x43; | |
r20 = 0x00; | |
r21 = 0x00; | |
(*(void(*)()) 0xfffff9e8) (); | |
r18 = *(MEM_Y + 5); | |
r19 = *(MEM_Y + 6); | |
r20 = *(MEM_Y + 7); | |
r21 = *(MEM_Y + 8); | |
(*(void(*)()) 0xfffffa4e) (); | |
*(0x26f) = r18; | |
*(0x270) = r19; | |
*(0x271) = r20; | |
*(0x272) = r21; | |
r24 = 0xff; | |
*(0x1a2) = r24; | |
r24 = 0x01; | |
*(0x1a3) = r24; | |
r28 += 0x08; | |
r29 += 0x08; | |
READ_FROM_IO (0x3f, r0); | |
DISABLE_INTERRUPTS; | |
WRITE_TO_IO (0x3e, r29); | |
WRITE_TO_IO (0x3f, r0); | |
WRITE_TO_IO (0x3d, r28); | |
return r0; | |
} | |
void fcn_000002ae () { | |
WRITE_TO_IO (0x08, r1); | |
return; | |
} | |
void fcn_0000027a () { | |
READ_FROM_IO (0x38, r24); | |
r24 |= 0x40; | |
WRITE_TO_IO (0x38, r24); | |
READ_FROM_IO (0x39, r24); | |
r24 &= 0xbf; | |
WRITE_TO_IO (0x39, r24); | |
return; | |
} | |
void fcn_0000048e () { | |
READ_FROM_IO (0x39, r24); | |
r24 &= 0xe3; | |
WRITE_TO_IO (0x39, r24); | |
WRITE_TO_IO (0x2f, r1); | |
WRITE_TO_IO (0x2e, r1); | |
WRITE_TO_IO (0x18, r1); | |
WRITE_TO_IO (0x12, r1); | |
WRITE_TO_IO (0x11, r1); | |
r24 = 0x01; | |
*(0x22f) = r24; | |
r3 = 0; | |
r4 = 0; | |
r8 = 0; | |
r5 = 0; | |
return; | |
} | |
void fcn_00000e2e () { | |
r20 = *(0x220); | |
r21 = *(0x221); | |
*(0x21f) = r21; | |
*(0x21e) = r20; | |
r18 = r20; | |
r19 = r21; | |
r18 <<= 1; | |
r19 = rotate_left8 (r19, 1); | |
r18 += r20; | |
r19 += r21; | |
r24 = r18; | |
r25 = r19; | |
r24 <<= 1; | |
r25 = rotate_left8 (r25, 1); | |
r24 <<= 1; | |
r25 = rotate_left8 (r25, 1); | |
r24 += r18; | |
r25 += r19; | |
r18 = *(0x1a8); | |
r19 = *(0x1a9); | |
r24 += r18; | |
r25 += r19; | |
__asm (swap r25); | |
__asm (swap r24); | |
r24 &= 0x0f; | |
r24 ^= r25; | |
r25 &= 0x0f; | |
r24 ^= r25; | |
*(0x221) = r25; | |
*(0x220) = r24; | |
if ((r20 | (r21 << 8)) >= (r24 | (r25 << 8))) { | |
r20 -= r24; | |
r21 -= r25; | |
*(0x227) = r21; | |
*(0x226) = r20; | |
return; | |
} | |
r24 -= r20; | |
r25 -= r21; | |
*(0x227) = r25; | |
*(0x226) = r24; | |
return; | |
} | |
uint8_t fcn_000019ca () { | |
int16_t value1 = r21 * r19; | |
r0 = (value1 & 0xFF); | |
r1 = (value1 >> 8); | |
r24 = r0; | |
r25 = r1; | |
uint16_t value2 = r20 * r18; | |
r0 = (value2 & 0xFF); | |
r1 = (value2 >> 8); | |
r22 = r0; | |
r23 = r1; | |
uint16_t value3 = r21 * r18; | |
r0 = (value3 & 0xFF); | |
r1 = (value3 >> 8); | |
r23 += r0; | |
r24 += r1; | |
r1 = 0; | |
r25 += r1; | |
uint16_t value4 = r19 * r20; | |
r0 = (value4 & 0xFF); | |
r1 = (value4 >> 8); | |
r23 += r0; | |
r24 += r1; | |
r1 = 0; | |
r25 += r1; | |
return r0; | |
} | |
void fcn_00000476 () { | |
r3 = 0; | |
READ_FROM_IO (0x30, r24); | |
r24 |= 0x04; | |
WRITE_TO_IO (0x30, r24); | |
r24 = 0x38; | |
WRITE_TO_IO (0x14, r24); | |
__asm (cbi 0x15, 3); | |
__asm (sbi 0x15, 4); | |
__asm (sbi 0x15, 5); | |
r24 = 0x01; | |
(*(void(*)()) fcn_000002b2) (); | |
return; | |
} | |
void fcn_00000288 () { | |
r24 = 0x02; | |
WRITE_TO_IO (0x0b, r24); | |
WRITE_TO_IO (0x20, r1); | |
r24 = 0x08; | |
WRITE_TO_IO (0x09, r24); | |
r24 = 0xd8; | |
WRITE_TO_IO (0x0a, r24); | |
return; | |
} | |
void fcn_00000224 () { | |
r24 = 0x04; | |
WRITE_TO_IO (0x33, r24); | |
r24 = 0x64; | |
WRITE_TO_IO (0x32, r24); | |
READ_FROM_IO (0x39, r24); | |
r24 &= 0xfe; | |
WRITE_TO_IO (0x39, r24); | |
READ_FROM_IO (0x38, r24); | |
r24 |= 0x01; | |
WRITE_TO_IO (0x38, r24); | |
return; | |
} | |
void fcn_00000946 () { | |
r24 = *(0x1fc); | |
if (r24 == 0) { | |
r24 = *(0x197); | |
r25 = *(0x198); | |
r24--; | |
r25--; | |
*(0x198) = r25; | |
*(0x197) = r24; | |
if ((r24 | (r25 << 8)) == 0) { | |
__asm (sbi 0x15, 4); | |
__asm (cbi 0x15, 5); | |
READ_FROM_IO (0x0a, r24); | |
r24 &= 0x3f; | |
WRITE_TO_IO (0x0a, r24); | |
r24 = *(0x1f9); | |
if (r24 != 0x02) { | |
*(0x1f9) = r1; | |
} | |
*(0x1d2) = r1; | |
*(0x1d1) = r1; | |
READ_FROM_IO (0x0a, r24); | |
r24 |= 0xc0; | |
WRITE_TO_IO (0x0a, r24); | |
*(0x1a9) = r1; | |
*(0x1a8) = r1; | |
return; | |
r24 = *(0x230); | |
if (r24 >= 0x03) { | |
r24 = 0x58; | |
r25 = 0x02; | |
*(0x198) = r25; | |
*(0x197) = r24; | |
label_0: | |
READ_FROM_IO (0x0a, r24); | |
r24 &= 0x3f; | |
WRITE_TO_IO (0x0a, r24); | |
r24 = *(0x1fa); | |
r25 = *(0x1fb); | |
*(0x1a9) = r25; | |
*(0x1a8) = r24; | |
READ_FROM_IO (0x0a, r24); | |
r24 |= 0xc0; | |
WRITE_TO_IO (0x0a, r24); | |
(*(void(*)()) fcn_00000e2e) (); | |
*(0x1fc) = r1; | |
return; | |
} | |
} | |
} | |
r24 = 0x1e; | |
r25 = 0x00; | |
*(0x198) = r25; | |
*(0x197) = r24; | |
goto label_0; | |
} | |
void fcn_0000023a () { | |
r24 = 0xfa; | |
WRITE_TO_IO (0x24, r24); | |
*(0x1a0) = r1; | |
r24 = 0x07; | |
WRITE_TO_IO (0x25, r24); | |
WRITE_TO_IO (0x22, r1); | |
READ_FROM_IO (0x38, r24); | |
r24 |= 0x40; | |
WRITE_TO_IO (0x38, r24); | |
READ_FROM_IO (0x39, r24); | |
r24 |= 0x40; | |
WRITE_TO_IO (0x39, r24); | |
return; | |
} | |
void fcn_00000298 () { | |
READ_FROM_IO (0x30, r24); | |
r24 |= 0x08; | |
WRITE_TO_IO (0x30, r24); | |
r24 = 0x03; | |
WRITE_TO_IO (0x08, r24); | |
READ_FROM_IO (0x08, r24); | |
r24 |= 0x18; | |
WRITE_TO_IO (0x08, r24); | |
r24 = 0x02; | |
WRITE_TO_IO (0x07, r24); | |
return; | |
} | |
void fcn_00000256 () { | |
r24 = 0x01; | |
*(0x1a0) = r24; | |
READ_FROM_IO (0x39, r24); | |
r24 &= 0xbf; | |
WRITE_TO_IO (0x39, r24); | |
r24 = 0x06; | |
WRITE_TO_IO (0x25, r24); | |
r24 = 0xff; | |
WRITE_TO_IO (0x24, r24); | |
WRITE_TO_IO (0x22, r1); | |
READ_FROM_IO (0x38, r24); | |
r24 |= 0x40; | |
WRITE_TO_IO (0x38, r24); | |
READ_FROM_IO (0x39, r24); | |
r24 |= 0x40; | |
WRITE_TO_IO (0x39, r24); | |
return; | |
} | |
void fcn_00000da2 () { | |
*(0x209) = r1; | |
*(0x00000080) = r1; | |
*(0x20b) = r1; | |
*(0x20c) = r1; | |
r24 = 0x20; | |
*(0x20d) = r24; | |
*(0x20e) = r1; | |
*(0x20f) = r1; | |
*(0x00000080) = r1; | |
*(0x211) = r1; | |
*(0x212) = r1; | |
*(vector.int0) = r1; | |
*(0x214) = r1; | |
*(0x215) = r1; | |
r24 = *(vector.int1); | |
r25 = *(0x1a7); | |
r26 = 0x00; | |
r27 = 0x00; | |
*(0x216) = r24; | |
*(0x217) = r25; | |
*(0x218) = r26; | |
*(0x219) = r27; | |
*(0x00000080) = r24; | |
*(0x21b) = r25; | |
*(0x21c) = r26; | |
*(0x21d) = r27; | |
*(0x21f) = r1; | |
*(0x21e) = r1; | |
*(0x221) = r1; | |
*(0x220) = r1; | |
r24 = 0xc8; | |
r25 = 0x00; | |
*(0x223) = r25; | |
*(0x222) = r24; | |
r24 = 0xff; | |
r25 = 0x01; | |
*(0x225) = r25; | |
*(fcn.00000224) = r24; | |
return; | |
} | |
void fcn_000008b0 () { | |
DISABLE_INTERRUPTS; | |
r8 = *(0x1ca); | |
r30 = r24; | |
r31 = 0x00; | |
r30 -= 0x3c; | |
r31 -= 0xfe; | |
r4 = *(MEM_Z); | |
ENABLE_INTERRUPTS; | |
r24 = 0xfe; | |
do { | |
} while (r24 == 0x01); | |
return; | |
} | |
void fcn_00001ab6 () { | |
do { | |
return; | |
} while (1); | |
__asm (brtc 0x1ab4); | |
r25 = 0xff - r25; | |
r24 = 0xff - r24; | |
r23 = 0xff - r23; | |
r22 = -r22; | |
r23 -= 0xff; | |
r24 -= 0xff; | |
r25 -= 0xff; | |
return; | |
} | |
void fcn_00001aa6 () { | |
r21 = 0xff - r21; | |
r20 = 0xff - r20; | |
r19 = 0xff - r19; | |
r18 = -r18; | |
r19 -= 0xff; | |
r20 -= 0xff; | |
r21 -= 0xff; | |
return; | |
} | |
void fcn_00001f30 () { | |
r27 = 0; | |
r26 = 0; | |
do { | |
r27++; | |
do { | |
r26++; | |
} while (r26 == 0); | |
} while (r27 == 0xa0); | |
return; | |
} | |
void fcn_00001f26 () { | |
__asm (spm); | |
} | |
void fcn_00001f00 () { | |
r30 += 0x20; | |
r31 += 0x20; | |
r30 += 0x20; | |
r31 += 0x20; | |
if (r31 == 0x1e) { | |
if (r30 == 0x00) { | |
r16 = 0x01; | |
return; | |
} | |
} | |
r16 = 0x00; | |
return; | |
} | |
uint8_t fcn_00001598 () { | |
(*(void(*)()) 0x159e) (); | |
(*(void(*)()) 0x15a0) (); | |
READ_FROM_IO (0x3d, r28); | |
READ_FROM_IO (0x3e, r29); | |
(*(void(*)()) 0x2476) (); | |
(*(void(*)()) 0x2162) (); | |
(*(void(*)()) 0x2288) (); | |
(*(void(*)()) 0x2224) (); | |
ENABLE_INTERRUPTS; | |
r24 = 0x01; | |
*(0x230) = r24; | |
r10 = 0; | |
r11 = 0; | |
r6 = 0; | |
r7 = 0; | |
r14 = 0; | |
r15 = 0; | |
*(MEM_Y + 2) = r1; | |
*(MEM_Y + 1) = r1; | |
r21 = 0x30; | |
r13 = r21; | |
r22 = 0x04; | |
r12 = r22; | |
r23 = 0x40; | |
r9 = r23; | |
do { | |
label_11: | |
r24 = *(0x230); | |
if (r24 == 0) { | |
} | |
else { | |
r2 = 0; | |
r2++; | |
do { | |
r24 = *(0x230); | |
if (r24 != 0x01) { | |
goto label_0; | |
do { | |
READ_FROM_IO (0x38, r0); | |
__asm (sbrs r0, 0); | |
r19 = 0x64; | |
WRITE_TO_IO (0x32, r19); | |
READ_FROM_IO (0x38, r24); | |
r24 |= 0x01; | |
WRITE_TO_IO (0x38, r24); | |
(*(void(*)()) fcn_00000946) (); | |
r24 = *(0x00000080); | |
if (r16 != 0) { | |
goto label_1; | |
} | |
else { | |
if (r24 != 0) { | |
r24 = *(0x19b); | |
if (r24 == 0) { | |
goto label_2; | |
} | |
else { | |
label_12: | |
r24 = *(0x00000080); | |
if (r24 != 0) { | |
r24 = *(0x1a8); | |
r25 = *(0x1a9); | |
if ((r24 | (r25 << 8)) != 0) { | |
r24 = *(0x1a1); | |
if (r24 == 0) { | |
__asm (sec); | |
r14 += r1; | |
r15 += r1; | |
} | |
} | |
} | |
r31 = 0x65; | |
} | |
} | |
} | |
(*(void(*)()) 0x205e) (); | |
r24 = 0x02; | |
*(0x230) = r24; | |
*(0x268) = r2; | |
r24 = 0xff; | |
*(0x1a2) = r24; | |
r24 = 0x41; | |
*(0x1a3) = r24; | |
r24 = 0x05; | |
*(0x1ab) = r24; | |
*(0x22a) = r1; | |
*(0x1a7) = r1; | |
*(vector.int1) = r1; | |
*(0x1a5) = r1; | |
*(0x00000080) = r1; | |
(*(void(*)()) 0x24ae) (); | |
r24 = *(0x00000080); | |
r24 = *(0x00000080); | |
goto label_3; | |
} while (1); | |
} | |
} while ((r14 | (r15 << 8)) >= (r31 | (r1 << 8))); | |
} | |
r24 = 0x01; | |
(*(void(*)()) 0x22b2) (); | |
label_13: | |
r24 = *(0x240); | |
r25 = *(0x241); | |
(*(void(*)()) 0x260a) (); | |
r24 = 0x00; | |
(*(void(*)()) fcn_00000854) (); | |
r24 = 0x01; | |
(*(void(*)()) fcn_00000854) (); | |
r18 = *(0x246); | |
r19 = *(0x247); | |
*(MEM_Y + 2) = r19; | |
*(MEM_Y + 1) = r18; | |
(*(void(*)()) 0x223a) (); | |
r24 = *(0x242); | |
r25 = *(0x243); | |
(*(void(*)()) 0x260a) (); | |
r24 = 0xf8; | |
WRITE_TO_IO (0x32, r24); | |
READ_FROM_IO (0x38, r24); | |
r24 |= 0x01; | |
WRITE_TO_IO (0x38, r24); | |
r14 = 0; | |
r15 = 0; | |
r24 = *(0x230); | |
goto label_0; | |
if (r24 == 0x01) { | |
} | |
label_0: | |
r20 = 0x03; | |
r2 = r20; | |
do { | |
r24 = *(0x230); | |
if (r24 != 0x02) { | |
goto label_4; | |
} | |
else { | |
label_6: | |
READ_FROM_IO (0x38, r0); | |
__asm (sbrs r0, 0); | |
r19 = 0x64; | |
WRITE_TO_IO (0x32, r19); | |
READ_FROM_IO (0x38, r24); | |
r24 |= 0x01; | |
WRITE_TO_IO (0x38, r24); | |
(*(void(*)()) fcn_00000946) (); | |
r22 = *(MEM_Y + 1); | |
r23 = *(MEM_Y + 2); | |
r18 = r22; | |
r19 = r23; | |
r20 = 0x00; | |
r21 = 0x00; | |
r22 = *(0x22b); | |
r23 = *(0x22c); | |
r24 = *(0x22d); | |
r25 = *(0x22e); | |
(*(void(*)()) 0x1a4e) (); | |
if ((r18 | (r19 << 8)) != (0xff | (r1 << 8))) { | |
if ((r18 | (r19 << 8)) >= (0xff | (r1 << 8))) { | |
goto label_5; | |
} | |
else { | |
r23 = 0xff; | |
r23 -= r18; | |
r24 = r23; | |
label_14: | |
*(0x231) = r24; | |
r24 = *(0x00000080); | |
r25 = *(0x24b); | |
r30 = *(MEM_Y + 1); | |
r31 = *(MEM_Y + 2); | |
r30 += r24; | |
r31 += r25; | |
*(MEM_Y + 2) = r31; | |
*(MEM_Y + 1) = r30; | |
r24 = *(0x248); | |
r25 = *(0x249); | |
} | |
} | |
} | |
} while ((r30 | (r31 << 8)) >= (r24 | (r25 << 8))); | |
*(0x230) = r2; | |
(*(void(*)()) 0x2298) (); | |
r24 = *(0x244); | |
r25 = *(0x245); | |
(*(void(*)()) 0x260a) (); | |
(*(void(*)()) 0x227a) (); | |
(*(void(*)()) 0x2256) (); | |
r14 = 0; | |
r15 = 0; | |
r24 = *(0x230); | |
if (r24 == 0x02) { | |
goto label_6; | |
} | |
label_4: | |
r2 = 0; | |
r2--; | |
do { | |
label_9: | |
r24 = *(0x230); | |
if (r24 != 0x03) { | |
goto label_7; | |
} | |
else { | |
label_15: | |
READ_FROM_IO (0x38, r0); | |
__asm (sbrs r0, 0); | |
r31 = 0xf8; | |
WRITE_TO_IO (0x32, r31); | |
READ_FROM_IO (0x38, r24); | |
r24 |= 0x01; | |
WRITE_TO_IO (0x38, r24); | |
(*(void(*)()) fcn_00000946) (); | |
(*(void(*)()) fcn_00000e98) (); | |
__asm (sec); | |
r14 += r1; | |
r15 += r1; | |
r18 = 0x01; | |
r18 = 0x02; | |
if (r15 >= r18) { | |
goto label_8; | |
} | |
else { | |
r19 = 0x02; | |
} | |
} | |
} while ((r14 | (r15 << 8)) == (r19 | (r1 << 8))); | |
(*(void(*)()) fcn_00000da2) (); | |
goto label_9; | |
READ_FROM_IO (0x38, r0); | |
__asm (sbrs r0, 0); | |
r18 = 0x64; | |
WRITE_TO_IO (0x32, r18); | |
READ_FROM_IO (0x38, r24); | |
r24 |= 0x01; | |
WRITE_TO_IO (0x38, r24); | |
(*(void(*)()) fcn_00000946) (); | |
r24 = *(0x1a8); | |
r25 = *(0x1a9); | |
if ((r24 | (r25 << 8)) == 0) { | |
goto label_10; | |
} | |
label_10: | |
*(0x1a1) = r1; | |
__asm (cbi 0x15, 3); | |
*(0x268) = r1; | |
r24 = 0x01; | |
*(0x230) = r24; | |
*(0x1a7) = r1; | |
*(vector.int1) = r1; | |
r25 = 0xff; | |
*(0x1a2) = r25; | |
*(0x1a3) = r24; | |
r14 = 0; | |
r15 = 0; | |
goto label_11; | |
label_1: | |
goto label_12; | |
r24 = *(0x19c); | |
goto label_12; | |
*(0x19c) = r2; | |
(*(void(*)()) 0x24ae) (); | |
r24 = *(0x00000080); | |
r25 = 0x00; | |
r20 = 0x00; | |
r21 = 0x00; | |
do { | |
r20 -= 0xff; | |
r21 -= 0xff; | |
r24 = *(0x00000080); | |
r25 = 0x00; | |
r24--; | |
r25--; | |
r22 = 0xbc; | |
r23 = 0x02; | |
uint16_t value1 = r24 * r22; | |
r0 = (value1 & 0xFF); | |
r1 = (value1 >> 8); | |
r18 = r0; | |
r19 = r1; | |
uint16_t value2 = r24 * r23; | |
r0 = (value2 & 0xFF); | |
r1 = (value2 >> 8); | |
r19 += r0; | |
uint16_t value3 = r25 * r22; | |
r0 = (value3 & 0xFF); | |
r1 = (value3 >> 8); | |
r19 += r0; | |
r1 = 0; | |
} while ((r20 | (r21 << 8)) >= (r18 | (r19 << 8))); | |
r24 = 0x32; | |
r25 = 0x00; | |
(*(void(*)()) 0x260a) (); | |
r18 = 0x90; | |
r19 = 0x01; | |
DISABLE_INTERRUPTS; | |
WRITE_TO_IO (0x11, r13); | |
WRITE_TO_IO (0x18, r12); | |
ENABLE_INTERRUPTS; | |
r24 = 0x3c; | |
r25 = 0x00; | |
do { | |
} while ((r24 | (r25 << 8)) == (0x01 | (0x01 << 8))); | |
WRITE_TO_IO (0x18, r1); | |
r24 = 0x8c; | |
r25 = 0x00; | |
do { | |
} while ((r24 | (r25 << 8)) == (0x01 | (0x01 << 8))); | |
r18 -= 0x01; | |
r18 = 0x90; | |
r19 = 0x01; | |
DISABLE_INTERRUPTS; | |
WRITE_TO_IO (0x11, r13); | |
WRITE_TO_IO (0x18, r9); | |
ENABLE_INTERRUPTS; | |
r24 = 0x3c; | |
r25 = 0x00; | |
do { | |
} while ((r24 | (r25 << 8)) == (0x01 | (0x01 << 8))); | |
WRITE_TO_IO (0x18, r1); | |
r24 = 0x8c; | |
r25 = 0x00; | |
do { | |
} while ((r24 | (r25 << 8)) == (0x01 | (0x01 << 8))); | |
r18 -= 0x01; | |
(*(void(*)()) 0x248e) (); | |
goto label_12; | |
label_2: | |
*(0x19b) = r2; | |
(*(void(*)()) 0x24ae) (); | |
r18 = *(0x00000080); | |
r19 = 0x00; | |
r18 -= 0x01; | |
r19 -= 0x00; | |
r30 = 0xbc; | |
r31 = 0x02; | |
uint16_t value4 = r18 * r30; | |
r0 = (value4 & 0xFF); | |
r1 = (value4 >> 8); | |
r24 = r0; | |
r25 = r1; | |
uint16_t value5 = r18 * r31; | |
r0 = (value5 & 0xFF); | |
r1 = (value5 >> 8); | |
r25 += r0; | |
uint16_t value6 = r19 * r30; | |
r0 = (value6 & 0xFF); | |
r1 = (value6 >> 8); | |
r25 += r0; | |
r1 = 0; | |
r24--; | |
r25--; | |
r24 = 0x32; | |
r25 = 0x00; | |
(*(void(*)()) 0x260a) (); | |
r18 = 0xe7; | |
r19 = 0x03; | |
r24 = 0x00; | |
*(MEM_Y + 3) = r18; | |
*(MEM_Y + 4) = r19; | |
(*(void(*)()) 0x28b0) (); | |
(*(void(*)()) 0x2836) (); | |
r18 = *(MEM_Y + 3); | |
r19 = *(MEM_Y + 4); | |
r18 -= 0x01; | |
r18 = 0xe7; | |
r19 = 0x03; | |
r24 = 0x01; | |
*(MEM_Y + 3) = r18; | |
*(MEM_Y + 4) = r19; | |
(*(void(*)()) 0x28b0) (); | |
(*(void(*)()) 0x2836) (); | |
r18 = *(MEM_Y + 3); | |
r19 = *(MEM_Y + 4); | |
r18 -= 0x01; | |
(*(void(*)()) 0x248e) (); | |
goto label_12; | |
label_3: | |
r24 = 0x00; | |
(*(void(*)()) 0x22b2) (); | |
goto label_13; | |
label_5: | |
r24 = 0x00; | |
goto label_14; | |
label_8: | |
r20 = 0x02; | |
*(0x268) = r20; | |
*(0x1a2) = r2; | |
r21 = 0x81; | |
*(0x1a3) = r21; | |
r22 = 0x04; | |
*(0x230) = r22; | |
r24 = *(0x24e); | |
r24 >>= 1; | |
r24 >>= 1; | |
r24 &= 0x01; | |
*(0x22a) = r24; | |
r10 = 0; | |
r11 = 0; | |
r6 = 0; | |
r7 = 0; | |
r14 = 0; | |
r15 = 0; | |
r24 = *(0x230); | |
goto label_15; | |
label_7: | |
r24 = *(0x230); | |
goto label_16; | |
} while (1); | |
label_16: | |
r19 = 0xf8; | |
r2 = r19; | |
do { | |
READ_FROM_IO (0x38, r0); | |
__asm (sbrs r0, 0); | |
WRITE_TO_IO (0x32, r2); | |
READ_FROM_IO (0x38, r24); | |
r24 |= 0x01; | |
WRITE_TO_IO (0x38, r24); | |
(*(void(*)()) 0x2946) (); | |
r24 = r14; | |
r25 = r15; | |
r24 &= 0x03; | |
r25 &= 0x00; | |
if ((r24 | (r25 << 8)) != 0) { | |
goto label_17; | |
} | |
r22 = *(0x1a8); | |
r23 = *(0x1a9); | |
r24 = *(0x23c); | |
r25 = *(0x23d); | |
uint16_t value7 = r22 * r24; | |
r0 = (value7 & 0xFF); | |
r1 = (value7 >> 8); | |
r10 = r0; | |
r11 = r1; | |
uint16_t value8 = r22 * r25; | |
r0 = (value8 & 0xFF); | |
r1 = (value8 >> 8); | |
r11 += r0; | |
uint16_t value9 = r23 * r24; | |
r0 = (value9 & 0xFF); | |
r1 = (value9 >> 8); | |
r11 += r0; | |
r1 = 0; | |
r24 = *(vector.int1); | |
r25 = *(0x1a7); | |
r10 -= r24; | |
r11 -= r25; | |
r24 = *(0x236); | |
r25 = *(0x237); | |
r10 += r24; | |
r11 += r25; | |
r24 = r10; | |
r25 = r11; | |
(*(void(*)()) fcn_000011ac) (); | |
r6 = r24; | |
r7 = r25; | |
(*(void(*)()) 0x260a) (); | |
r24 = r14; | |
r25 = r15; | |
r24 &= 0x0f; | |
r25 &= 0x00; | |
if ((r24 | (r25 << 8)) == 0) { | |
goto label_18; | |
} | |
label_19: | |
__asm (sec); | |
r14 += r1; | |
r15 += r1; | |
label_20: | |
r24 = *(0x230); | |
} while (r24 != 0x04); | |
goto label_11; | |
label_17: | |
(*(void(*)()) fcn_00000e98) (); | |
r24 = r10; | |
r25 = r11; | |
r22 = r6; | |
r23 = r7; | |
(*(void(*)()) fcn_0000108a) (); | |
goto label_19; | |
label_18: | |
(*(void(*)()) fcn_00001024) (); | |
r24 = r6; | |
r25 = r7; | |
(*(void(*)()) fcn_00001514) (); | |
r18 = 0x01; | |
r14 = r18; | |
r15 = r1; | |
goto label_20; | |
} | |
void fcn_00001a4e () { | |
r26 = 0x21; | |
r1 = r26; | |
r26 -= r26; | |
r27 -= r27; | |
r30 = r26; | |
r31 = r27; | |
while (--r1 != 0) { | |
r26 = rotate_left8 (r26, 1); | |
r27 = rotate_left8 (r27, 1); | |
r30 = rotate_left8 (r30, 1); | |
r31 = rotate_left8 (r31, 1); | |
if ((((r26 | (r27 << 8)) | (r30 << 8)) | (r31 << 8)) >= (((r18 | (r19 << 8)) | (r20 << 8)) | (r21 << 8))) { | |
r26 -= r18; | |
r27 -= r19; | |
r30 -= r20; | |
r31 -= r21; | |
} | |
r22 = rotate_left8 (r22, 1); | |
r23 = rotate_left8 (r23, 1); | |
r24 = rotate_left8 (r24, 1); | |
r25 = rotate_left8 (r25, 1); | |
} | |
r22 = 0xff - r22; | |
r23 = 0xff - r23; | |
r24 = 0xff - r24; | |
r25 = 0xff - r25; | |
r18 = r22; | |
r19 = r23; | |
r20 = r24; | |
r21 = r25; | |
r22 = r26; | |
r23 = r27; | |
r24 = r30; | |
r25 = r31; | |
return; | |
} | |
void fcn_00001ac8 () { | |
r26 = r24; | |
r27 = r25; | |
r24 = r22; | |
r25 = r23; | |
r30 = r24; | |
r31 = r25; | |
do { | |
__asm (sbic 0x1c, 1); | |
} while (1); | |
} | |
void fcn_000002b2 () { | |
r25 = *(0x24e); | |
__asm (swap r25); | |
r25 &= 0x0f; | |
r25 += r24; | |
if ((r25 & (1 << 0)) == 0) { | |
r24 = 0x04; | |
} | |
*(0x1c4) = r24; | |
if (r16 != 0) { | |
} | |
else { | |
r25 = 0x02; | |
*(0x1c5) = r25; | |
*(0x1c6) = r25; | |
r25 = 0x01; | |
*(0x1c7) = r25; | |
*(0x1c8) = r25; | |
*(0x1c9) = r24; | |
r24 = 0x80; | |
*(0x1ca) = r24; | |
*(0x1cb) = r24; | |
r24 = 0x20; | |
*(0x1cc) = r24; | |
*(0x1cd) = r24; | |
r24 = 0x10; | |
*(0x1ce) = r24; | |
*(0x1cf) = r24; | |
r18 = 0xa0; | |
*(0x1be) = r18; | |
r25 = 0x90; | |
*(0x1bf) = r25; | |
r24 = 0x30; | |
*(0x1c0) = r24; | |
*(0x1c1) = r18; | |
*(0x1c2) = r25; | |
*(0x1c3) = r24; | |
label_0: | |
r25 = 0x01; | |
*(0x1b8) = r25; | |
r24 = 0x02; | |
*(0x1b9) = r24; | |
*(0x1ba) = r1; | |
*(0x1bb) = r25; | |
*(0x1bc) = r24; | |
*(0x1bd) = r1; | |
r25 = 0x1b; | |
*(0x1b2) = r25; | |
r24 = 0x1a; | |
*(0x1b3) = r24; | |
*(0x1b4) = r25; | |
*(0x1b5) = r24; | |
*(0x1b6) = r25; | |
*(0x1b7) = r24; | |
return; | |
} | |
r25 = 0x40; | |
*(0x1c5) = r25; | |
*(0x1c6) = r25; | |
r25 = 0x01; | |
*(0x1c7) = r25; | |
*(0x1c8) = r25; | |
*(0x1c9) = r24; | |
r24 = 0x30; | |
*(0x1ca) = r24; | |
*(0x1cb) = r24; | |
r24 = 0x90; | |
*(0x1cc) = r24; | |
*(0x1cd) = r24; | |
r24 = 0xa0; | |
*(0x1ce) = r24; | |
*(0x1cf) = r24; | |
r24 = 0x20; | |
*(0x1be) = r24; | |
r25 = 0x10; | |
*(0x1bf) = r25; | |
*(0x1c0) = r25; | |
r25 = 0x80; | |
*(0x1c1) = r25; | |
*(0x1c2) = r25; | |
*(0x1c3) = r24; | |
goto label_0; | |
} | |
void fcn_00001a26 () { | |
r26 -= r26; | |
r27 -= r27; | |
r21 = 0x11; | |
while (--r21 != 0) { | |
r26 = rotate_left8 (r26, 1); | |
r27 = rotate_left8 (r27, 1); | |
if ((r26 | (r27 << 8)) >= (r22 | (r23 << 8))) { | |
r26 -= r22; | |
r27 -= r23; | |
} | |
r24 = rotate_left8 (r24, 1); | |
r25 = rotate_left8 (r25, 1); | |
} | |
r24 = 0xff - r24; | |
r25 = 0xff - r25; | |
r22 = r24; | |
r23 = r25; | |
r24 = r26; | |
r25 = r27; | |
return; | |
} | |
void fcn_00000836 () { | |
if (r16 != 0) { | |
WRITE_TO_IO (0x18, r1); | |
WRITE_TO_IO (0x12, r1); | |
r24 = 0x7f; | |
do { | |
label_0: | |
} while (r24 == 0x01); | |
return; | |
} | |
DISABLE_INTERRUPTS; | |
r8 = 0; | |
r4 = 0; | |
ENABLE_INTERRUPTS; | |
r24 = 0x7f; | |
goto label_0; | |
} | |
void fcn_0000060a () { | |
if (r16 != 0) { | |
DISABLE_INTERRUPTS; | |
if ((r25 & (1 << 7)) == 0) { | |
r18 = 0x01; | |
} | |
*(0x22f) = r18; | |
WRITE_TO_IO (0x2b, r25); | |
WRITE_TO_IO (0x2a, r24); | |
ENABLE_INTERRUPTS; | |
return; | |
} | |
r18 = r24; | |
r19 = r25; | |
r18 -= 0x90; | |
r19 -= 0xfe; | |
r20 = 0x02; | |
if ((r18 | (r19 << 8)) < (0xe1 | (r20 << 8))) { | |
*(0x19f) = r1; | |
label_0: | |
DISABLE_INTERRUPTS; | |
if ((r25 & (1 << 7)) == 0) { | |
r18 = 0x01; | |
} | |
*(0x22f) = r18; | |
WRITE_TO_IO (0x29, r25); | |
WRITE_TO_IO (0x28, r24); | |
ENABLE_INTERRUPTS; | |
return; | |
} | |
r18 = 0x08; | |
*(0x19f) = r18; | |
goto label_0; | |
} | |
uint8_t fcn_00001a92 () { | |
__asm (bst r25, 7); | |
r0 = r25; | |
r0 ^= r21; | |
(*(void(*)()) fcn_00001ab6) (); | |
if ((r21 & (1 << 7)) == 0) { | |
(*(void(*)()) fcn_00001a4e) (); | |
} | |
(*(void(*)()) fcn_00001ab6) (); | |
r0 = rotate_left8 (r0, 1); | |
if ((r21 & (1 << 7)) >= 0) { | |
(*(void(*)()) 0x1ab4) (); | |
} | |
} | |
void fcn_000008cc () { | |
r24 = 0x01; | |
r25 = 0xff; | |
(*(void(*)()) fcn_0000060a) (); | |
r24 = 0xff; | |
*(0x1a2) = r24; | |
r18 = 0x01; | |
*(0x1a3) = r18; | |
r24 = *(0x1a8); | |
r25 = *(0x1a9); | |
if ((r24 | (r25 << 8)) != 0) { | |
__asm (sbi 0x15, 3); | |
__asm (cbi 0x15, 4); | |
__asm (cbi 0x15, 5); | |
r24 = 0x03; | |
*(0x268) = r24; | |
*(0x230) = r1; | |
r24 = *(0x1a3); | |
r24 |= 0xc0; | |
*(0x1a3) = r24; | |
*(0x1a1) = r18; | |
label_0: | |
r18 = 0x28; | |
r19 = 0x00; | |
do { | |
r24 = 0xe8; | |
r25 = 0x03; | |
do { | |
} while ((r24 | (r25 << 8)) == (0x01 | (0x01 << 8))); | |
r18 -= 0x01; | |
} while (r19 == 0x00); | |
(*(void(*)()) fcn_000002ae) (); | |
(*(void(*)()) fcn_0000027a) (); | |
(*(void(*)()) fcn_0000048e) (); | |
*(0x1a7) = r1; | |
*(vector.int1) = r1; | |
*(0x00000080) = r1; | |
*(0x1a5) = r1; | |
return; | |
} | |
*(0x268) = r1; | |
*(0x230) = r18; | |
r24 = *(0x1a3); | |
*(0x1a3) = r24; | |
goto label_0; | |
} | |
uint8_t fcn_00000162 () { | |
r24 = *(0x19a); | |
if (r24 == 0) { | |
r24 = 0x01; | |
*(0x19a) = r24; | |
WRITE_TO_IO (0x12, r1); | |
WRITE_TO_IO (0x11, r1); | |
r24 = 0x47; | |
WRITE_TO_IO (0x17, r24); | |
r24 = 0x02; | |
WRITE_TO_IO (0x18, r24); | |
r24 = 0x0a; | |
do { | |
} while (r24 == 0x01); | |
READ_FROM_IO (0x10, r24); | |
r24 &= 0xb0; | |
if (r24 != 0x01) { | |
} | |
else { | |
r16 = 0x00; | |
label_4: | |
WRITE_TO_IO (0x18, r1); | |
WRITE_TO_IO (0x12, r1); | |
r24 = 0x8e; | |
r25 = 0x01; | |
r22 = 0x01; | |
r23 = 0x00; | |
r20 = 0x09; | |
r21 = 0x00; | |
(*(void(*)()) 0xfffffac8) (); | |
r30 = 0x61; | |
r31 = 0x00; | |
r24 = 0x00; | |
while (r18 != r25) { | |
r24 -= 0xff; | |
r30 += 0x32; | |
r31 += 0x32; | |
if (r24 == 0x06) { | |
goto label_0; | |
} | |
do { | |
r25 = *(0x190); | |
r26 = r30; | |
r27 = r31; | |
r26--; | |
r27--; | |
r18 = *(MEM_X); | |
r25 = *(0x191); | |
r18 = *(MEM_Z); | |
goto label_1; | |
r24 -= 0xff; | |
r30 += 0x32; | |
r31 += 0x32; | |
} while (r24 == 0x06); | |
} | |
} | |
} | |
else { | |
label_0: | |
r24 = 0x00; | |
label_1: | |
if (r16 != 0) { | |
if (r24 != 0) { | |
while (r24 != 0x01) { | |
r25 = 0x00; | |
label_2: | |
r18 = 0x32; | |
r19 = 0x00; | |
uint16_t value1 = r24 * r18; | |
r0 = (value1 & 0xFF); | |
r1 = (value1 >> 8); | |
r30 = r0; | |
r31 = r1; | |
uint16_t value2 = r24 * r19; | |
r0 = (value2 & 0xFF); | |
r1 = (value2 >> 8); | |
r31 += r0; | |
uint16_t value3 = r25 * r18; | |
r0 = (value3 & 0xFF); | |
r1 = (value3 >> 8); | |
r31 += r0; | |
r1 = 0; | |
r26 = 0x32; | |
r27 = 0x02; | |
r30 -= 0xa0; | |
r31 -= 0xff; | |
r24 = 0x32; | |
do { | |
r0 = *(MEM_Z); | |
uint8_t value0 = r30; | |
r30 += 1; | |
r31 = (r30 < value0) ? (r31 + 1) : r31; | |
*(MEM_X) = r0; | |
uint8_t value1 = r26; | |
r26 += 1; | |
r27 = (r26 < value1) ? (r27 + 1) : r27; | |
} while (r24 == 0x01); | |
(*(void(*)()) 0x5e) (); | |
return r0; | |
r24 = 0x01; | |
r25 = 0x00; | |
goto label_2; | |
goto label_3; | |
r24 = 0x03; | |
*(0x268) = r24; | |
while (1); | |
} | |
} | |
} | |
} | |
r24 = 0x00; | |
r25 = 0x00; | |
goto label_2; | |
label_3: | |
r16 = 0x01; | |
goto label_4; | |
} | |
uint8_t fcn_000004ae () { | |
*(0x19d) = r1; | |
*(0x19e) = r1; | |
*(0x1b1) = r1; | |
*(0x1b0) = r1; | |
*(0x1af) = r1; | |
*(0x1ae) = r1; | |
*(0x1ad) = r1; | |
*(0x1ac) = r1; | |
WRITE_TO_IO (0x18, r1); | |
WRITE_TO_IO (0x12, r1); | |
WRITE_TO_IO (0x11, r1); | |
r24 = 0x01; | |
*(0x22f) = r24; | |
r3 = 0; | |
r4 = 0; | |
r8 = 0; | |
r5 = 0; | |
r18 = 0x01; | |
r19 = 0x00; | |
r0 = *(0x24c); | |
while (--r0 > 0) { | |
r18 <<= 1; | |
r19 = rotate_left8 (r19, 1); | |
} | |
r18 -= 0x01; | |
r19 -= 0x00; | |
*(0x267) = r19; | |
*(0x266) = r18; | |
r24 = *(0x24e); | |
r24 &= 0x21; | |
if (r24 == 0x21) { | |
} | |
else { | |
*(0x265) = r1; | |
*(0x264) = r1; | |
do { | |
r24 = r18; | |
r25 = r19; | |
r24 <<= 1; | |
r25 = rotate_left8 (r25, 1); | |
r24 <<= 1; | |
r25 = rotate_left8 (r25, 1); | |
r24 <<= 1; | |
r25 = rotate_left8 (r25, 1); | |
r24 += r18; | |
r25 += r19; | |
r22 = 0x0a; | |
r23 = 0x00; | |
(*(void(*)()) 0x1a26) (); | |
*(0x26a) = r23; | |
*(0x269) = r22; | |
if (r16 != 0) { | |
r24 = 0xb0; | |
WRITE_TO_IO (0x11, r24); | |
r24 = 0x47; | |
WRITE_TO_IO (0x17, r24); | |
r24 = *(0x24c); | |
r25 = *(0x24d); | |
if ((r24 | (r25 << 8)) == (0x08 | (r1 << 8))) { | |
goto label_0; | |
} | |
else { | |
if ((r24 | (r25 << 8)) >= (0x09 | (r1 << 8))) { | |
goto label_1; | |
} | |
} | |
} | |
if ((r24 | (r25 << 8)) == (0x07 | (r1 << 8))) { | |
r24 = 0x82; | |
WRITE_TO_IO (0x2f, r24); | |
r24 = 0x19; | |
WRITE_TO_IO (0x2e, r24); | |
r24 = 0x7f; | |
r25 = 0x00; | |
WRITE_TO_IO (0x27, r25); | |
WRITE_TO_IO (0x26, r24); | |
} | |
} while (1); | |
} | |
label_2: | |
WRITE_TO_IO (0x29, r1); | |
if ((r24 | (r25 << 8)) >= (0x09 | (r1 << 8))) { | |
WRITE_TO_IO (0x28, r1); | |
WRITE_TO_IO (0x2b, r1); | |
WRITE_TO_IO (0x2a, r1); | |
READ_FROM_IO (0x39, r24); | |
r24 |= 0x04; | |
WRITE_TO_IO (0x39, r24); | |
return r0; | |
r24 = 0xbc; | |
WRITE_TO_IO (0x11, r24); | |
r24 = 0xcf; | |
WRITE_TO_IO (0x17, r24); | |
r24 = 0x03; | |
WRITE_TO_IO (0x2f, r24); | |
r24 = 0x19; | |
WRITE_TO_IO (0x2e, r24); | |
r24 = *(0x266); | |
r25 = *(0x267); | |
WRITE_TO_IO (0x2b, r25); | |
WRITE_TO_IO (0x2a, r24); | |
WRITE_TO_IO (0x29, r1); | |
WRITE_TO_IO (0x28, r1); | |
READ_FROM_IO (0x39, r24); | |
r24 |= 0x18; | |
WRITE_TO_IO (0x39, r24); | |
return r0; | |
r24 = 0; | |
r25 = 0; | |
r24 -= r18; | |
r25 -= r19; | |
*(0x265) = r25; | |
*(0x264) = r24; | |
} | |
label_1: | |
if ((r24 | (r25 << 8)) != (0x09 | (r1 << 8))) { | |
goto label_2; | |
} | |
r24 = 0x83; | |
WRITE_TO_IO (0x2f, r24); | |
r24 = 0x09; | |
WRITE_TO_IO (0x2e, r24); | |
WRITE_TO_IO (0x29, r1); | |
WRITE_TO_IO (0x28, r1); | |
WRITE_TO_IO (0x2b, r1); | |
WRITE_TO_IO (0x2a, r1); | |
READ_FROM_IO (0x39, r24); | |
r24 |= 0x04; | |
WRITE_TO_IO (0x39, r24); | |
return r0; | |
label_0: | |
r24 = 0x81; | |
WRITE_TO_IO (0x2f, r24); | |
r24 = 0x09; | |
WRITE_TO_IO (0x2e, r24); | |
WRITE_TO_IO (0x29, r1); | |
WRITE_TO_IO (0x28, r1); | |
WRITE_TO_IO (0x2b, r1); | |
WRITE_TO_IO (0x2a, r1); | |
READ_FROM_IO (0x39, r24); | |
r24 |= 0x04; | |
WRITE_TO_IO (0x39, r24); | |
return r0; | |
r24 = 0x82; | |
WRITE_TO_IO (0x2f, r24); | |
r24 = 0x09; | |
WRITE_TO_IO (0x2e, r24); | |
WRITE_TO_IO (0x29, r1); | |
WRITE_TO_IO (0x28, r1); | |
WRITE_TO_IO (0x2b, r1); | |
WRITE_TO_IO (0x2a, r1); | |
READ_FROM_IO (0x39, r24); | |
r24 |= 0x04; | |
WRITE_TO_IO (0x39, r24); | |
return r0; | |
} | |
void fcn_00000854 () { | |
r17 = r24; | |
DISABLE_INTERRUPTS; | |
if (r16 != 0) { | |
WRITE_TO_IO (0x18, r1); | |
WRITE_TO_IO (0x12, r1); | |
r25 = 0x00; | |
r30 = r24; | |
r31 = r25; | |
r30 -= 0x36; | |
r31 -= 0xfe; | |
r18 = *(MEM_Z); | |
WRITE_TO_IO (0x11, r18); | |
r24 -= 0x3c; | |
r25 -= 0xfe; | |
r30 = r24; | |
r31 = r25; | |
r24 = *(MEM_Z); | |
WRITE_TO_IO (0x18, r24); | |
ENABLE_INTERRUPTS; | |
label_0: | |
r18 = *(0x23e); | |
r19 = *(0x23f); | |
if ((r18 | (r19 << 8)) != (r1 | (r1 << 8))) { | |
do { | |
r24 = 0xe8; | |
r25 = 0x03; | |
do { | |
} while ((r24 | (r25 << 8)) == (0x01 | (0x01 << 8))); | |
r18 -= 0x01; | |
} while (r19 == 0x00); | |
} | |
(*(void(*)()) fcn_00000836) (); | |
return; | |
} | |
r25 = 0x00; | |
r30 = r24; | |
r31 = r25; | |
r30 -= 0x36; | |
r31 -= 0xfe; | |
r8 = *(MEM_Z); | |
r24 -= 0x3c; | |
r25 -= 0xfe; | |
r30 = r24; | |
r31 = r25; | |
r4 = *(MEM_Z); | |
ENABLE_INTERRUPTS; | |
goto label_0; | |
} | |
void fcn_00000e98 () { | |
r24 = *(0x1ac); | |
r12 = *(0x1ad); | |
r13 = 0; | |
r12 += r24; | |
r13 += r1; | |
r24 = *(0x1ae); | |
r12 += r24; | |
r13 += r1; | |
r24 = *(0x1af); | |
r12 += r24; | |
r13 += r1; | |
r24 = *(0x1b0); | |
r12 += r24; | |
r13 += r1; | |
r24 = *(0x1b1); | |
r12 += r24; | |
r13 += r1; | |
r14 = 0; | |
r15 = 0; | |
r24 = *(0x24c); | |
r24 -= 0x01; | |
while (--r24 > 0) { | |
r12 <<= 1; | |
r13 = rotate_left8 (r13, 1); | |
r14 = rotate_left8 (r14, 1); | |
r15 = rotate_left8 (r15, 1); | |
} | |
if ((((r12 | (r13 << 8)) | (r14 << 8)) | (r15 << 8)) == (((r1 | (r1 << 8)) | (r1 << 8)) | (r1 << 8))) { | |
r19 = 0x01; | |
r12 = r19; | |
r13 = r1; | |
r14 = r1; | |
r15 = r1; | |
} | |
r22 = *(0x26b); | |
r23 = *(0x26c); | |
r24 = *(0x26d); | |
r25 = *(0x00000080); | |
r20 = r14; | |
r21 = r15; | |
r18 = r12; | |
r19 = r13; | |
(*(void(*)()) fcn_00001a4e) (); | |
r24 = *(0x00000080); | |
r25 = *(0x259); | |
r26 = 0x00; | |
r27 = 0x00; | |
if ((((r18 | (r19 << 8)) | (r20 << 8)) | (r21 << 8)) >= (((r24 | (r25 << 8)) | (r26 << 8)) | (r27 << 8))) { | |
r24 = *(0x25a); | |
r25 = *(0x25b); | |
r26 = 0x00; | |
r27 = 0x00; | |
if ((((r24 | (r25 << 8)) | (r26 << 8)) | (r27 << 8)) >= (((r18 | (r19 << 8)) | (r20 << 8)) | (r21 << 8))) { | |
} | |
else { | |
r24 = 0x01; | |
r25 = 0x00; | |
*(0x1a7) = r25; | |
*(vector.int1) = r24; | |
do { | |
READ_FROM_IO (0x0a, r24); | |
r24 &= 0x3f; | |
WRITE_TO_IO (0x0a, r24); | |
r25 = *(vector.int1); | |
r24 = *(0x1a7); | |
*(0x00000080) = r25; | |
*(0x1a5) = r24; | |
READ_FROM_IO (0x0a, r24); | |
r24 |= 0xc0; | |
WRITE_TO_IO (0x0a, r24); | |
r12 = *(0x00000080); | |
r13 = *(0x21b); | |
r14 = *(0x21c); | |
r15 = *(0x21d); | |
*(0x216) = r12; | |
*(0x217) = r13; | |
*(0x218) = r14; | |
*(0x219) = r15; | |
r26 = r14; | |
r27 = r15; | |
r24 = r12; | |
r25 = r13; | |
r24 <<= 1; | |
r25 = rotate_left8 (r25, 1); | |
r26 = rotate_left8 (r26, 1); | |
r27 = rotate_left8 (r27, 1); | |
r24 <<= 1; | |
r25 = rotate_left8 (r25, 1); | |
r26 = rotate_left8 (r26, 1); | |
r27 = rotate_left8 (r27, 1); | |
r24 <<= 1; | |
r25 = rotate_left8 (r25, 1); | |
r26 = rotate_left8 (r26, 1); | |
r27 = rotate_left8 (r27, 1); | |
r24 <<= 1; | |
r25 = rotate_left8 (r25, 1); | |
r26 = rotate_left8 (r26, 1); | |
r27 = rotate_left8 (r27, 1); | |
r24 -= r12; | |
r25 -= r13; | |
r26 -= r14; | |
r27 -= r15; | |
r20 = *(vector.int1); | |
r21 = *(0x1a7); | |
r22 = 0x00; | |
r23 = 0x00; | |
r24 += r20; | |
r25 += r21; | |
r26 += r22; | |
r27 += r23; | |
r18 = 0x04; | |
do { | |
r27 >>= 1; | |
r26 = rotate_right8 (r26, 1); | |
r25 = rotate_right8 (r25, 1); | |
r24 = rotate_right8 (r24, 1); | |
} while (--r18 == 0); | |
*(0x00000080) = r24; | |
*(0x21b) = r25; | |
*(0x21c) = r26; | |
*(0x21d) = r27; | |
if ((((r12 | (r13 << 8)) | (r14 << 8)) | (r15 << 8)) < (((r24 | (r25 << 8)) | (r26 << 8)) | (r27 << 8))) { | |
goto label_0; | |
} | |
r12 -= r24; | |
r13 -= r25; | |
*(0x229) = r13; | |
*(0x228) = r12; | |
return; | |
*(0x1a7) = r19; | |
*(vector.int1) = r18; | |
} while (1); | |
} | |
} | |
label_0: | |
r24 -= r12; | |
r25 -= r13; | |
*(0x229) = r25; | |
*(0x228) = r24; | |
return; | |
} | |
uint8_t fcn_000011ac () { | |
READ_FROM_IO (0x3d, r28); | |
READ_FROM_IO (0x3e, r29); | |
r28 -= 0x0a; | |
r29 -= 0x0a; | |
READ_FROM_IO (0x3f, r0); | |
DISABLE_INTERRUPTS; | |
WRITE_TO_IO (0x3e, r29); | |
WRITE_TO_IO (0x3f, r0); | |
WRITE_TO_IO (0x3d, r28); | |
*(MEM_Y + 10) = r23; | |
*(MEM_Y + 9) = r22; | |
r18 = *(0x00000080); | |
r19 = *(0x251); | |
r20 = 0x00; | |
r21 = 0x00; | |
r12 = r24; | |
r13 = r25; | |
r14 = 0; | |
if ((r13 & (1 << 7)) == 0) { | |
r15 = r14; | |
} | |
*(MEM_Y + 1) = r12; | |
*(MEM_Y + 2) = r13; | |
*(MEM_Y + 3) = r14; | |
*(MEM_Y + 4) = r15; | |
r24 = r14; | |
r25 = r15; | |
r22 = r12; | |
r23 = r13; | |
(*(void(*)()) fcn_000019e8) (); | |
*(MEM_Y + 5) = r22; | |
*(MEM_Y + 6) = r23; | |
*(MEM_Y + 7) = r24; | |
*(MEM_Y + 8) = r25; | |
r24 = *(0x20e); | |
r25 = *(0x20f); | |
r26 = *(0x00000080); | |
r27 = *(0x211); | |
r6 = *(0x264); | |
r7 = *(0x265); | |
r20 = r6; | |
r21 = r7; | |
r22 = 0; | |
if ((r21 & (1 << 7)) == 0) { | |
r23 = r22; | |
} | |
__asm (brge 0x122e); | |
r12 = *(0x209); | |
r13 = *(0x00000080); | |
r14 = *(0x20b); | |
r15 = *(0x20c); | |
r10 = *(0x266); | |
r11 = *(0x267); | |
do { | |
label_5: | |
r19 = 0x41; | |
r19 = 0x42; | |
r19 = 0x0f; | |
r19 = 0x00; | |
__asm (brge 0x125a); | |
goto label_0; | |
r24 = 0x40; | |
r25 = 0x42; | |
r26 = 0x0f; | |
r27 = 0x00; | |
*(0x209) = r24; | |
*(0x00000080) = r25; | |
*(0x20b) = r26; | |
*(0x20c) = r27; | |
r31 = 0x40; | |
r12 = r31; | |
r31 = 0x42; | |
r13 = r31; | |
r31 = 0x0f; | |
r14 = r31; | |
r15 = r1; | |
do { | |
label_7: | |
r22 = *(0x252); | |
r23 = *(0x253); | |
r24 = 0x00; | |
r25 = 0x00; | |
r20 = r14; | |
r21 = r15; | |
r18 = r12; | |
r19 = r13; | |
(*(void(*)()) 0x19e8) (); | |
r12 = *(MEM_Y + 5); | |
r13 = *(MEM_Y + 6); | |
r14 = *(MEM_Y + 7); | |
r15 = *(MEM_Y + 8); | |
r22 += r12; | |
r23 += r13; | |
r24 += r14; | |
r25 += r15; | |
r18 = *(fcn.00000256); | |
r19 = *(0x257); | |
r20 = 0x00; | |
r21 = 0x00; | |
(*(void(*)()) 0x1a92) (); | |
*(MEM_Y + 5) = r18; | |
*(MEM_Y + 6) = r19; | |
*(MEM_Y + 7) = r20; | |
*(MEM_Y + 8) = r21; | |
r24 = r20; | |
r25 = r21; | |
r22 = r18; | |
r23 = r19; | |
r18 = 0xd4; | |
r19 = 0x03; | |
r20 = 0x00; | |
r21 = 0x00; | |
(*(void(*)()) 0x19e8) (); | |
r12 = r22; | |
r13 = r23; | |
r14 = r24; | |
r15 = r25; | |
r22 = *(0x212); | |
r23 = *(vector.int0); | |
r24 = *(0x214); | |
r25 = *(0x215); | |
r18 = 0xfe; | |
r19 = 0x01; | |
r20 = 0x00; | |
r21 = 0x00; | |
(*(void(*)()) 0x19e8) (); | |
r26 = r24; | |
r27 = r25; | |
r24 = r22; | |
r25 = r23; | |
r12 += r24; | |
r13 += r25; | |
r14 += r26; | |
r15 += r27; | |
r24 = r14; | |
r25 = r15; | |
r22 = r12; | |
r23 = r13; | |
r18 = 0x00; | |
r19 = 0x04; | |
r20 = 0x00; | |
r21 = 0x00; | |
(*(void(*)()) 0x1a92) (); | |
*(MEM_Y + 1) = r18; | |
*(MEM_Y + 2) = r19; | |
*(MEM_Y + 3) = r20; | |
*(MEM_Y + 4) = r21; | |
*(0x212) = r18; | |
*(vector.int0) = r19; | |
*(0x214) = r20; | |
*(0x215) = r21; | |
r14 = *(MEM_Y + 9); | |
r15 = *(MEM_Y + 10); | |
r24 = r14; | |
r25 = r15; | |
r26 = 0; | |
if ((r25 & (1 << 7)) == 0) { | |
r27 = r26; | |
} | |
if (r16 == 0x01) { | |
goto label_1; | |
} | |
else { | |
r18 = *(0x232); | |
if (r18 == 0) { | |
goto label_2; | |
} | |
else { | |
r12 = *(MEM_Y + 1); | |
r13 = *(MEM_Y + 2); | |
r14 = *(MEM_Y + 3); | |
r15 = *(MEM_Y + 4); | |
r12 += r24; | |
r13 += r25; | |
r14 += r26; | |
r15 += r27; | |
*(0x20e) = r12; | |
*(0x20f) = r13; | |
*(0x00000080) = r14; | |
*(0x211) = r15; | |
label_10: | |
r24 = r10; | |
r25 = r11; | |
r26 = 0x00; | |
r27 = 0x00; | |
__asm (brge 0x1366); | |
goto label_3; | |
} | |
else { | |
label_8: | |
r24 = r6; | |
r25 = r7; | |
r20 = r6; | |
r21 = r7; | |
r22 = 0; | |
if ((r21 & (1 << 7)) == 0) { | |
r23 = r22; | |
} | |
if ((((r12 | (r13 << 8)) | (r14 << 8)) | (r15 << 8)) >= (((r20 | (r21 << 8)) | (r22 << 8)) | (r23 << 8))) { | |
r24 = r12; | |
r25 = r13; | |
} | |
label_9: | |
r28 += 0x0a; | |
r29 += 0x0a; | |
READ_FROM_IO (0x3f, r0); | |
DISABLE_INTERRUPTS; | |
WRITE_TO_IO (0x3e, r29); | |
WRITE_TO_IO (0x3f, r0); | |
WRITE_TO_IO (0x3d, r28); | |
return r0; | |
r10 = *(0x266); | |
r11 = *(0x267); | |
r20 = r10; | |
r21 = r11; | |
r22 = 0x00; | |
r23 = 0x00; | |
r12 = *(0x209); | |
r13 = *(0x00000080); | |
r14 = *(0x20b); | |
r15 = *(0x20c); | |
if ((((r24 | (r25 << 8)) | (r26 << 8)) | (r27 << 8)) < (((r20 | (r21 << 8)) | (r22 << 8)) | (r23 << 8))) { | |
goto label_4; | |
} | |
} | |
} | |
label_4: | |
r18 = *(MEM_Y + 1); | |
r19 = *(MEM_Y + 2); | |
r20 = *(MEM_Y + 3); | |
r21 = *(MEM_Y + 4); | |
r12 += r18; | |
r13 += r19; | |
r14 += r20; | |
r15 += r21; | |
*(0x209) = r12; | |
*(0x00000080) = r13; | |
*(0x20b) = r14; | |
*(0x20c) = r15; | |
goto label_5; | |
label_0: | |
r20 = 0xc0; | |
r20 = 0xbd; | |
r20 = 0xf0; | |
r20 = 0xff; | |
goto label_6; | |
} while (1); | |
} while (1); | |
label_6: | |
r24 = 0xc0; | |
r25 = 0xbd; | |
r26 = 0xf0; | |
r27 = 0xff; | |
*(0x209) = r24; | |
*(0x00000080) = r25; | |
*(0x20b) = r26; | |
*(0x20c) = r27; | |
r30 = 0xc0; | |
r12 = r30; | |
r30 = 0xbd; | |
r13 = r30; | |
r30 = 0xf0; | |
r14 = r30; | |
r30 = 0xff; | |
r15 = r30; | |
goto label_7; | |
label_2: | |
r18 = *(MEM_Y + 9); | |
r19 = *(MEM_Y + 10); | |
r20 = r18; | |
r21 = r19; | |
(*(void(*)()) fcn_000019ca) (); | |
r18 = 0xa8; | |
r19 = 0xfd; | |
r20 = 0xff; | |
r21 = 0xff; | |
(*(void(*)()) fcn_00001a92) (); | |
r12 = r18; | |
r13 = r19; | |
r14 = r20; | |
r15 = r21; | |
r18 = *(MEM_Y + 5); | |
r19 = *(MEM_Y + 6); | |
r20 = *(MEM_Y + 7); | |
r21 = *(MEM_Y + 8); | |
r12 += r18; | |
r13 += r19; | |
r14 += r20; | |
r15 += r21; | |
r24 = *(MEM_Y + 9); | |
r25 = *(MEM_Y + 10); | |
r24 <<= 1; | |
r25 = rotate_left8 (r25, 1); | |
r24 <<= 1; | |
r25 = rotate_left8 (r25, 1); | |
r24 <<= 1; | |
r25 = rotate_left8 (r25, 1); | |
r20 = *(MEM_Y + 9); | |
r21 = *(MEM_Y + 10); | |
r24 += r20; | |
r25 += r21; | |
r22 = 0x05; | |
r23 = 0x00; | |
(*(void(*)()) fcn_00001a26) (); | |
r24 = r22; | |
r25 = r23; | |
r26 = 0x00; | |
r27 = 0x00; | |
r12 += r24; | |
r13 += r25; | |
r14 += r26; | |
r15 += r27; | |
r24 = 0xad; | |
r25 = 0xff; | |
r26 = 0xff; | |
r27 = 0xff; | |
r12 += r24; | |
r13 += r25; | |
r14 += r26; | |
r15 += r27; | |
*(0x20e) = r12; | |
*(0x20f) = r13; | |
*(0x00000080) = r14; | |
*(0x211) = r15; | |
r24 = r10; | |
r25 = r11; | |
r26 = 0x00; | |
r27 = 0x00; | |
if ((((r24 | (r25 << 8)) | (r26 << 8)) | (r27 << 8)) >= (((r12 | (r13 << 8)) | (r14 << 8)) | (r15 << 8))) { | |
goto label_8; | |
} | |
label_3: | |
r24 = r10; | |
r25 = r11; | |
goto label_9; | |
label_1: | |
r18 = r14; | |
r19 = r15; | |
r20 = r14; | |
r21 = r15; | |
(*(void(*)()) fcn_000019ca) (); | |
r18 = 0x88; | |
r19 = 0x13; | |
r20 = 0x00; | |
r21 = 0x00; | |
(*(void(*)()) fcn_00001a92) (); | |
r12 = r18; | |
r13 = r19; | |
r14 = r20; | |
r15 = r21; | |
r18 = *(MEM_Y + 1); | |
r19 = *(MEM_Y + 2); | |
r20 = *(MEM_Y + 3); | |
r21 = *(MEM_Y + 4); | |
r12 += r18; | |
r13 += r19; | |
r14 += r20; | |
r15 += r21; | |
r24 = *(MEM_Y + 9); | |
r25 = *(MEM_Y + 10); | |
r24 <<= 1; | |
r25 = rotate_left8 (r25, 1); | |
r22 = 0x05; | |
r23 = 0x00; | |
(*(void(*)()) fcn_00001a26) (); | |
r24 = r22; | |
r25 = r23; | |
r26 = 0x00; | |
r27 = 0x00; | |
r12 += r24; | |
r13 += r25; | |
r14 += r26; | |
r15 += r27; | |
r24 = 0xd3; | |
r25 = 0xff; | |
r26 = 0xff; | |
r27 = 0xff; | |
r12 += r24; | |
r13 += r25; | |
r14 += r26; | |
r15 += r27; | |
*(0x20e) = r12; | |
*(0x20f) = r13; | |
*(0x00000080) = r14; | |
*(0x211) = r15; | |
goto label_10; | |
} | |
void fcn_0000108a () { | |
r28 = r24; | |
r29 = r25; | |
r10 = r22; | |
r11 = r23; | |
r12 = *(0x00000080); | |
r13 = *(0x21b); | |
r14 = *(0x21c); | |
r15 = *(0x21d); | |
r18 = *(0x260); | |
r19 = *(0x261); | |
r20 = 0x00; | |
r21 = 0x00; | |
r24 = r14; | |
r25 = r15; | |
r22 = r12; | |
r23 = r13; | |
(*(void(*)()) fcn_00001a92) (); | |
r24 = *(0x262); | |
r25 = *(0x263); | |
r22 = r18; | |
r23 = r19; | |
r22 -= r24; | |
r23 -= r25; | |
r24 = r22; | |
r25 = r23; | |
r24 <<= 1; | |
r25 = rotate_left8 (r25, 1); | |
r18 = *(0x228); | |
r19 = *(0x229); | |
if ((r18 | (r19 << 8)) >= (r24 | (r25 << 8))) { | |
r24 = r14; | |
r25 = r15; | |
r22 = r12; | |
r23 = r13; | |
r18 = 0xe8; | |
r19 = 0x03; | |
r20 = 0x00; | |
r21 = 0x00; | |
(*(void(*)()) fcn_00001a92) (); | |
r24 = r18; | |
r25 = r19; | |
r24++; | |
r25++; | |
r18 = *(0x226); | |
r19 = *(0x227); | |
if ((r18 | (r19 << 8)) < (r24 | (r25 << 8))) { | |
} | |
else { | |
if ((r1 | (r1 << 8)) >= (r28 | (r29 << 8))) { | |
} | |
else { | |
label_3: | |
r29 >>= 1; | |
r28 = rotate_right8 (r28, 1); | |
r28 += 0x04; | |
r29 += 0x04; | |
*(0x223) = r29; | |
*(0x222) = r28; | |
r24 = *(0x1a8); | |
r25 = *(0x1a9); | |
if ((r24 | (r25 << 8)) == 0) { | |
do { | |
label_0: | |
(*(void(*)()) fcn_000008cc) (); | |
label_1: | |
return; | |
r24 = 0x04; | |
r25 = 0x00; | |
*(0x223) = r25; | |
*(0x222) = r24; | |
label_2: | |
r24 = *(0x1a8); | |
r25 = *(0x1a9); | |
} while ((r24 | (r25 << 8)) != 0); | |
} | |
r24 = *(0x24e); | |
__asm (sbrs r24, 1); | |
r24 = *(vector.int1); | |
r25 = *(0x1a7); | |
r18 = *(0x25a); | |
r19 = *(0x25b); | |
goto label_0; | |
r18 = *(0x00000080); | |
r19 = *(0x259); | |
goto label_0; | |
r24 = *(0x222); | |
r25 = *(0x223); | |
goto label_0; | |
r24 = r10; | |
r25 = r11; | |
(*(void(*)()) fcn_0000060a) (); | |
goto label_1; | |
r24 = *(0x222); | |
r25 = *(0x223); | |
r24--; | |
r25--; | |
*(0x223) = r25; | |
*(0x222) = r24; | |
goto label_2; | |
} | |
} | |
} | |
r29 = 0xff - r29; | |
r28 = -r28; | |
r29 -= 0xff; | |
goto label_3; | |
} | |
void fcn_00001024 () { | |
r24 = *(0x24e); | |
__asm (sbrs r24, 3); | |
r18 = *(vector.int1); | |
r19 = *(0x1a7); | |
r24 = *(0x236); | |
r25 = *(0x237); | |
if ((r24 | (r25 << 8)) < (r18 | (r19 << 8))) { | |
r20 = 0x00; | |
r21 = 0x00; | |
r22 = *(0x26f); | |
r23 = *(0x270); | |
r24 = *(0x271); | |
r25 = *(0x272); | |
(*(void(*)()) fcn_00001a4e) (); | |
r24 = r18; | |
r25 = r19; | |
if ((r18 | (r19 << 8)) != (0xff | (r1 << 8))) { | |
if ((r18 | (r19 << 8)) < (0xff | (r1 << 8))) { | |
r24 = 0xff - r24; | |
DISABLE_INTERRUPTS; | |
*(0x231) = r24; | |
ENABLE_INTERRUPTS; | |
return; | |
DISABLE_INTERRUPTS; | |
r24 = 0xff; | |
*(0x231) = r24; | |
ENABLE_INTERRUPTS; | |
return; | |
} | |
} | |
} | |
r24 = 0xff; | |
r25 = 0x00; | |
r24 = 0xff - r24; | |
DISABLE_INTERRUPTS; | |
*(0x231) = r24; | |
ENABLE_INTERRUPTS; | |
return; | |
} | |
void fcn_00001514 () { | |
r18 = *(0x269); | |
r19 = *(0x26a); | |
if ((r18 | (r19 << 8)) < (r24 | (r25 << 8))) { | |
r24 = *(0x20d); | |
if (r24 == 0) { | |
r24 = *(vector.int1); | |
r25 = *(0x1a7); | |
r18 = *(0x236); | |
r19 = *(0x237); | |
r24 -= r18; | |
r25 -= r19; | |
r22 = *(0x23c); | |
r23 = *(0x23d); | |
(*(void(*)()) fcn_00001a26) (); | |
*(0x225) = r23; | |
*(fcn.00000224) = r22; | |
r24 = 0xff; | |
r25 = 0x01; | |
*(0x225) = r25; | |
*(fcn.00000224) = r24; | |
r24 = 0x20; | |
*(0x20d) = r24; | |
label_0: | |
READ_FROM_IO (0x0a, r24); | |
r24 &= 0x3f; | |
WRITE_TO_IO (0x0a, r24); | |
r24 = *(fcn.00000224); | |
r25 = *(0x225); | |
*(0x1a2) = r24; | |
r24 = *(0x268); | |
__asm (swap r24); | |
r24 <<= 1; | |
r24 <<= 1; | |
r24 &= 0xc0; | |
r24 |= r25; | |
*(0x1a3) = r24; | |
READ_FROM_IO (0x0a, r24); | |
r24 |= 0xc0; | |
WRITE_TO_IO (0x0a, r24); | |
return; | |
} | |
} | |
r24 -= 0x01; | |
*(0x20d) = r24; | |
goto label_0; | |
} | |
void fcn_00001f14 () { | |
WRITE_TO_IO (0x0c, r16); | |
do { | |
__asm (sbis 0x0b, 5); | |
} while (1); | |
} | |
void fcn_00001f1e () { | |
do { | |
__asm (sbis 0x0b, 7); | |
} while (1); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment