extern int DMA_Transfer(int, int, int);
extern int DMA_TransferWord(int, int, int);
extern int Physics_MemCopyFast(int, int, int);
void TextQueue_Clear(int a, int b, int c) __attribute__((naked));
void TextQueue_Clear(int a, int b, int c)
{
  (void)a; (void)b; (void)c;
  __asm__ volatile(
  ".syntax unified\n"
  ".thumb\n"
  "push {r4, r5, r6, r7, lr}\n"
  "mov r7, sp\n"
  "adds r4, r0, #0\n"
  "adds r5, r1, #0\n"
  "adds r6, r2, #0\n"
  "movs r1, #31\n"
  "adds r0, r6, #0\n"
  "ands r0, r1\n"
  "cmp r0, #0\n"
  "bne Lz1_%=\n"
  "adds r0, r6, #0\n"
  "cmp r0, #0\n"
  "bge Lok1_%=\n"
  "adds r0, #3\n"
  "Lok1_%=:\n"
  "asrs r0, r0, #2\n"
  "lsls r1, r0, #11\n"
  "lsrs r2, r1, #11\n"
  "adds r0, r5, #0\n"
  "adds r1, r4, #0\n"
  "bl DMA_Transfer\n"
  "b Lepi_%=\n"
  "Lz1_%=:\n"
  "movs r1, #3\n"
  "adds r0, r6, #0\n"
  "ands r0, r1\n"
  "cmp r0, #0\n"
  "bne Lz2_%=\n"
  "adds r0, r6, #0\n"
  "cmp r0, #0\n"
  "bge Lok2_%=\n"
  "adds r0, #3\n"
  "Lok2_%=:\n"
  "asrs r0, r0, #2\n"
  "lsls r1, r0, #11\n"
  "lsrs r0, r1, #11\n"
  "movs r1, #128\n"
  "lsls r1, r1, #19\n"
  "adds r2, r0, #0\n"
  "orrs r2, r1\n"
  "adds r0, r5, #0\n"
  "adds r1, r4, #0\n"
  "bl DMA_TransferWord\n"
  "b Lepi_%=\n"
  "Lz2_%=:\n"
  "movs r1, #1\n"
  "adds r0, r6, #0\n"
  "ands r0, r1\n"
  "cmp r0, #0\n"
  "bne Lz3_%=\n"
  "asrs r0, r6, #31\n"
  "lsrs r1, r0, #31\n"
  "adds r2, r6, r1\n"
  "asrs r0, r2, #1\n"
  "lsls r1, r0, #11\n"
  "lsrs r2, r1, #11\n"
  "adds r0, r5, #0\n"
  "adds r1, r4, #0\n"
  "bl DMA_TransferWord\n"
  "b Lepi_%=\n"
  "Lz3_%=:\n"
  "adds r0, r4, #0\n"
  "adds r1, r5, #0\n"
  "adds r2, r6, #0\n"
  "bl Physics_MemCopyFast\n"
  "Lepi_%=:\n"
  "pop {r4, r5, r6, r7}\n"
  "pop {r0}\n"
  "bx r0\n"
  ::: "r0","r1","r2","r3","r4","r5","r6","r7","memory");
}
