extern int Camera_HandleInput(int,int);
extern int Sub_08008530(int);
extern int Level_SetFlags(int,int);
void Sub_0800A4D0(int a) __attribute__((naked));
void Sub_0800A4D0(int a)
{
  (void)a;
  __asm__ volatile(
  ".syntax unified\n"
  ".thumb\n"
  "Sec_%=:\n"
  "push {r4, r5, r6, lr}\n"
  "adds r5, r0, #0\n"
  "ldr	r0, .LpQ800A568\n"
  "ldr r6, [r0, #0]\n"
  "movs r0, #129\n"
  "lsls r0, r0, #2\n"
  "adds r2, r5, r0\n"
  "ldr r0, [r5, #16]\n"
  "cmp r0, #0\n"
  "bne QQL800A4EC_%=\n"
  "movs r1, #1\n"
  "ldr	r3, .LpQ800A56C\n"
  "adds r0, r5, r3\n"
  "str r1, [r0, #0]\n"
  "QQL800A4EC_%=:\n"
  "movs r1, #226\n"
  "lsls r1, r1, #5\n"
  "adds r0, r6, r1\n"
  "ldr r4, [r0, #0]\n"
  "cmp r4, #0\n"
  "bne QQL800A5F0_%=\n"
  "adds r0, r2, #0\n"
  "bl Camera_HandleInput\n"
  "movs r2, #164\n"
  "lsls r2, r2, #2\n"
  "adds r0, r5, r2\n"
  "ldr r1, [r0, #0]\n"
  "negs r0, r1\n"
  "orrs r0, r1\n"
  "lsrs r1, r0, #31\n"
  "cmp r1, #0\n"
  "beq QQL800A584_%=\n"
  "ldr	r0, .LpQ800A570\n"
  "adds r3, r5, r0\n"
  "str r4, [r3, #0]\n"
  "str r4, [r3, #4]\n"
  "ldr	r2, .LpQ800A574\n"
  "ldr r0, [r2, #0]\n"
  "ldrh r0, [r0, #0]\n"
  "movs r1, #32\n"
  "ands r0, r1\n"
  "cmp r0, #0\n"
  "beq QQL800A52A_%=\n"
  "ldr	r0, .LpQ800A578\n"
  "str r0, [r3, #0]\n"
  "QQL800A52A_%=:\n"
  "ldr r4, [r2, #0]\n"
  "ldrh r0, [r4, #0]\n"
  "movs r1, #16\n"
  "ands r0, r1\n"
  "adds r1, r4, #0\n"
  "cmp r0, #0\n"
  "beq QQL800A53E_%=\n"
  "movs r0, #192\n"
  "lsls r0, r0, #11\n"
  "str r0, [r3, #0]\n"
  "QQL800A53E_%=:\n"
  "ldrh r0, [r1, #0]\n"
  "movs r1, #64\n"
  "ands r0, r1\n"
  "cmp r0, #0\n"
  "beq QQL800A552_%=\n"
  "ldr	r3, .LpQ800A57C\n"
  "adds r1, r5, r3\n"
  "movs r0, #128\n"
  "lsls r0, r0, #11\n"
  "str r0, [r1, #0]\n"
  "QQL800A552_%=:\n"
  "ldrh r0, [r4, #0]\n"
  "movs r1, #128\n"
  "ands r0, r1\n"
  "cmp r0, #0\n"
  "beq QQL800A58E_%=\n"
  "ldr	r0, .LpQ800A57C\n"
  "adds r1, r5, r0\n"
  "ldr	r0, .LpQ800A580\n"
  "str r0, [r1, #0]\n"
  "b QQL800A58E_%=\n"
  "movs r0, r0\n"
  ".LpQ800A568: .word 0x02000134\n"
  ".LpQ800A56C: .word 0x00002554\n"
  ".LpQ800A570: .word 0x00002548\n"
  ".LpQ800A574: .word 0x02000150\n"
  ".LpQ800A578: .word 0xFFFA0000\n"
  ".LpQ800A57C: .word 0x0000254C\n"
  ".LpQ800A580: .word 0xFFFC0000\n"
  "QQL800A584_%=:\n"
  "ldr	r2, QQL800A5E0_%=\n"
  "adds r0, r5, r2\n"
  "str r1, [r0, #0]\n"
  "str r1, [r0, #4]\n"
  "ldr	r2, .LpQ800A5E4\n"
  "QQL800A58E_%=:\n"
  "ldr r0, [r2, #0]\n"
  "ldrh r0, [r0, #2]\n"
  "movs r1, #8\n"
  "ands r0, r1\n"
  "cmp r0, #0\n"
  "beq QQL800A5A2_%=\n"
  "movs r0, #3\n"
  "subs r1, #9\n"
  "str r0, [r5, #8]\n"
  "str r1, [r5, #12]\n"
  "QQL800A5A2_%=:\n"
  "ldr r0, [r2, #0]\n"
  "ldrh r0, [r0, #2]\n"
  "movs r4, #4\n"
  "ands r0, r4\n"
  "cmp r0, #0\n"
  "beq QQL800A5B8_%=\n"
  "movs r0, #7\n"
  "movs r1, #1\n"
  "negs r1, r1\n"
  "str r0, [r5, #8]\n"
  "str r1, [r5, #12]\n"
  "QQL800A5B8_%=:\n"
  "adds r0, r5, #0\n"
  "bl Sub_08008530\n"
  "lsls r0, r0, #24\n"
  "cmp r0, #0\n"
  "beq QQL800A5CC_%=\n"
  "movs r0, #1\n"
  "negs r0, r0\n"
  "str r4, [r5, #8]\n"
  "str r0, [r5, #12]\n"
  "QQL800A5CC_%=:\n"
  "ldr	r3, .LpQ800A5E8\n"
  "adds r2, r6, r3\n"
  "ldr r1, [r2, #0]\n"
  "ldr	r0, .LpQ800A5EC\n"
  "cmp r1, r0\n"
  "bhi QQL800A5F8_%=\n"
  "adds r0, r1, #1\n"
  "str r0, [r2, #0]\n"
  "b QQL800A5F8_%=\n"
  "movs r0, r0\n"
  "QQL800A5E0_%=:\n"
  "movs r5, #72\n"
  "movs r0, r0\n"
  ".LpQ800A5E4: .word 0x02000150\n"
  ".LpQ800A5E8: .word 0x00001DEC\n"
  ".LpQ800A5EC: .word 0x014996C3\n"
  "QQL800A5F0_%=:\n"
  "ldr	r0, .LpQ800A644\n"
  "adds r1, r5, r0\n"
  "movs r0, #1\n"
  "strb r0, [r1, #0]\n"
  "QQL800A5F8_%=:\n"
  "ldr	r1, .LpQ800A648\n"
  "adds r2, r5, r1\n"
  "ldr r1, [r2, #0]\n"
  "ldr	r0, .LpQ800A64C\n"
  "cmp r1, r0\n"
  "bgt QQL800A608_%=\n"
  "adds r0, r1, #1\n"
  "str r0, [r2, #0]\n"
  "QQL800A608_%=:\n"
  "ldr	r2, .LpQ800A650\n"
  "adds r1, r5, r2\n"
  "ldrh r2, [r1, #0]\n"
  "movs r3, #0\n"
  "ldrsh r0, [r1, r3]\n"
  "cmp r0, #0\n"
  "ble QQL800A63C_%=\n"
  "subs r0, r2, #1\n"
  "strh r0, [r1, #0]\n"
  "lsls r0, r0, #16\n"
  "asrs r6, r0, #16\n"
  "cmp r6, #0\n"
  "bne QQL800A63C_%=\n"
  "ldr	r0, .LpQ800A654\n"
  "adds r4, r5, r0\n"
  "ldrh r0, [r4, #0]\n"
  "subs r0, #1\n"
  "strh r0, [r4, #0]\n"
  "lsls r0, r0, #16\n"
  "cmp r0, #0\n"
  "bgt QQL800A63C_%=\n"
  "adds r0, r5, #0\n"
  "movs r1, #2\n"
  "bl Level_SetFlags\n"
  "strh r6, [r4, #0]\n"
  "QQL800A63C_%=:\n"
  "pop {r4, r5, r6}\n"
  "pop {r0}\n"
  "bx r0\n"
  "movs r0, r0\n"
  ".LpQ800A644: .word 0x0000256A\n"
  ".LpQ800A648: .word 0x00002564\n"
  ".LpQ800A64C: .word 0x00034B83\n"
  ".LpQ800A650: .word 0x000025EE\n"
  ".LpQ800A654: .word 0x000025EC\n"
  ::: "r0","r1","r2","r3","memory");
}
