extern int Mem_GetStackFrame(int);
extern int Math_InitSystem(int);
extern int Mem_Compare(int);
extern int Collision_ResolveAdvanced(int, int, int);
extern int Mem_PopStack(int);
extern int Mem_CopyWords(int);
extern int Mem_GetStackFrame_08015DC8(int);
extern int Mem_FillWords(int, int);
extern int Mem_PushStack(int);
extern int Physics_ApplyForceAndCopy(int);
extern int Mem_CopyBytes(int);
extern int List_GetHead(int);
extern int Mem_Swap(int, int);
extern int Math_Init(int);
void Collision_Resolve(int a, int b) __attribute__((naked));
void Collision_Resolve(int a, int b)
{
  (void)a; (void)b;
  __asm__ volatile(
  ".syntax unified\n"
  ".thumb\n"
  "push {r4, r5, r6, r7, lr}\n"
  "mov r7, sl\n"
  "mov r6, r9\n"
  "mov r5, r8\n"
  "push {r5, r6, r7}\n"
  "sub sp, #224\n"
  "mov r7, sp\n"
  "movs r2, #160\n"
  "adds r2, r2, r7\n"
  "str r0, [r2, #0]\n"
  "movs r3, #164\n"
  "adds r3, r3, r7\n"
  "str r1, [r3, #0]\n"
  "bl Mem_GetStackFrame\n"
  "movs r6, #176\n"
  "adds r6, r6, r7\n"
  "str r0, [r6, #0]\n"
  "movs r1, #200\n"
  "adds r1, r1, r7\n"
  "str r0, [r1, #0]\n"
  "bl Math_InitSystem\n"
  "ldr r0, [r0, #0]\n"
  "movs r2, #168\n"
  "adds r2, r2, r7\n"
  "str r0, [r2, #0]\n"
  "adds r3, r7, #0\n"
  "adds r3, #8\n"
  "movs r6, #204\n"
  "adds r6, r6, r7\n"
  "str r3, [r6, #0]\n"
  "adds r0, r7, #0\n"
  "adds r0, #32\n"
  "movs r1, #212\n"
  "adds r1, r1, r7\n"
  "str r0, [r1, #0]\n"
  "movs r2, #160\n"
  "adds r2, r2, r7\n"
  "ldr r2, [r2, #0]\n"
  "cmp r2, #0\n"
  "ble LloopEnd_%=\n"
  "Lloop_%=:\n"
  "movs r3, #164\n"
  "adds r3, r3, r7\n"
  "ldr r3, [r3, #0]\n"
  "movs r6, #220\n"
  "adds r6, r6, r7\n"
  "str r3, [r6, #0]\n"
  "movs r6, #172\n"
  "adds r6, r6, r7\n"
  "str r2, [r6, #0]\n"
  "Lloop0_%=:\n"
  "movs r1, #220\n"
  "adds r1, r1, r7\n"
  "ldr r1, [r1, #0]\n"
  "ldr r0, [r1, #0]\n"
  "movs r2, #168\n"
  "adds r2, r2, r7\n"
  "ldr r2, [r2, #0]\n"
  "ldr r1, [r2, #12]\n"
  "ldr r2, [r2, #8]\n"
  "bl Collision_ResolveAdvanced\n"
  "cmp r0, #0\n"
  "beq Lok1_%=\n"
  "bl Mem_Compare\n"
  "bl Mem_PopStack\n"
  "Lok1_%=:\n"
  "movs r0, #220\n"
  "adds r0, r0, r7\n"
  "ldr r6, [r0, #0]\n"
  "adds r6, #4\n"
  "str r6, [r0, #0]\n"
  "movs r2, #172\n"
  "adds r2, r2, r7\n"
  "ldr r1, [r2, #0]\n"
  "subs r1, #1\n"
  "str r1, [r2, #0]\n"
  "cmp r1, #0\n"
  "bne Lloop0_%=\n"
  "LloopEnd_%=:\n"
  "movs r3, #176\n"
  "adds r3, r3, r7\n"
  "ldr r1, [r3, #0]\n"
  "adds r1, #4\n"
  "ldr r6, [r3, #0]\n"
  "ldr r0, [r6, #4]\n"
  "str r0, [r7, #0]\n"
  "movs r0, #0\n"
  "str r0, [r7, #4]\n"
  "str r7, [r7, #8]\n"
  "ldr r0, .LpA\n"
  "movs r2, #204\n"
  "adds r2, r2, r7\n"
  "ldr r2, [r2, #0]\n"
  "str r0, [r2, #4]\n"
  "mov r3, sp\n"
  "str r3, [r2, #8]\n"
  "movs r0, #208\n"
  "adds r0, r0, r7\n"
  "str r1, [r0, #0]\n"
  "b Lenter1_%=\n"
  ".hword 0x0000\n"
  ".LpA: .word 0x08015FC8\n"
  "LcodeA_%=:\n"
  "b LresA_%=\n"
  "Lenter1_%=:\n"
  "str r7, [r1, #0]\n"
  "bl Mem_CopyWords\n"
  "LresA_%=:\n"
  "bl Mem_GetStackFrame_08015DC8\n"
  "movs r1, #180\n"
  "adds r1, r1, r7\n"
  "str r0, [r1, #0]\n"
  "movs r2, #176\n"
  "adds r2, r2, r7\n"
  "ldr r2, [r2, #0]\n"
  "ldr r0, [r2, #4]\n"
  "str r0, [r7, #24]\n"
  "movs r0, #0\n"
  "str r0, [r7, #28]\n"
  "str r7, [r7, #32]\n"
  "ldr r0, .LpB\n"
  "movs r3, #212\n"
  "adds r3, r3, r7\n"
  "ldr r3, [r3, #0]\n"
  "str r0, [r3, #4]\n"
  "mov r6, sp\n"
  "str r6, [r3, #8]\n"
  "b Lenter2_%=\n"
  ".hword 0x0000\n"
  ".LpB: .word 0x08016000\n"
  "LcodeB_%=:\n"
  "b LtailB_%=\n"
  "Lenter2_%=:\n"
  "adds r0, r7, #0\n"
  "adds r0, #24\n"
  "movs r1, #208\n"
  "adds r1, r1, r7\n"
  "ldr r1, [r1, #0]\n"
  "str r0, [r1, #0]\n"
  "movs r2, #168\n"
  "adds r2, r2, r7\n"
  "ldr r2, [r2, #0]\n"
  "movs r3, #180\n"
  "adds r3, r3, r7\n"
  "ldr r3, [r3, #0]\n"
  "cmp r2, r3\n"
  "beq LpairEnd_%=\n"
  "movs r6, #168\n"
  "adds r6, r6, r7\n"
  "str r3, [r6, #0]\n"
  "movs r0, #160\n"
  "adds r0, r0, r7\n"
  "ldr r0, [r0, #0]\n"
  "cmp r0, #0\n"
  "ble LpairEnd_%=\n"
  "movs r1, #164\n"
  "adds r1, r1, r7\n"
  "ldr r1, [r1, #0]\n"
  "movs r2, #216\n"
  "adds r2, r2, r7\n"
  "str r1, [r2, #0]\n"
  "movs r2, #184\n"
  "adds r2, r2, r7\n"
  "str r0, [r2, #0]\n"
  "Lpair_%=:\n"
  "movs r3, #216\n"
  "adds r3, r3, r7\n"
  "ldr r3, [r3, #0]\n"
  "ldr r0, [r3, #0]\n"
  "movs r6, #168\n"
  "adds r6, r6, r7\n"
  "ldr r6, [r6, #0]\n"
  "ldr r1, [r6, #12]\n"
  "ldr r2, [r6, #8]\n"
  "bl Collision_ResolveAdvanced\n"
  "cmp r0, #0\n"
  "beq Lok2_%=\n"
  "bl Mem_Compare\n"
  "bl Mem_PopStack\n"
  "Lok2_%=:\n"
  "movs r0, #216\n"
  "adds r0, r0, r7\n"
  "ldr r6, [r0, #0]\n"
  "adds r6, #4\n"
  "str r6, [r0, #0]\n"
  "movs r2, #184\n"
  "adds r2, r2, r7\n"
  "ldr r1, [r2, #0]\n"
  "subs r1, #1\n"
  "str r1, [r2, #0]\n"
  "cmp r1, #0\n"
  "bne Lpair_%=\n"
  "LpairEnd_%=:\n"
  "bl List_GetHead\n"
  "movs r3, #188\n"
  "adds r3, r3, r7\n"
  "str r0, [r3, #0]\n"
  "movs r6, #0\n"
  "movs r0, #192\n"
  "adds r0, r0, r7\n"
  "str r6, [r0, #0]\n"
  "movs r1, #160\n"
  "adds r1, r1, r7\n"
  "ldr r1, [r1, #0]\n"
  "cmp r6, r1\n"
  "blt Lbig_%=\n"
  "b Ltail_%=\n"
  "Lbig_%=:\n"
  "movs r2, #192\n"
  "adds r2, r2, r7\n"
  "ldr r2, [r2, #0]\n"
  "lsls r0, r2, #2\n"
  "movs r3, #164\n"
  "adds r3, r3, r7\n"
  "ldr r3, [r3, #0]\n"
  "adds r0, r0, r3\n"
  "ldr r0, [r0, #0]\n"
  "movs r6, #168\n"
  "adds r6, r6, r7\n"
  "ldr r6, [r6, #0]\n"
  "ldr r2, [r6, #8]\n"
  "movs r3, #188\n"
  "adds r3, r3, r7\n"
  "ldr r1, [r3, #0]\n"
  "bl Collision_ResolveAdvanced\n"
  "cmp r0, #0\n"
  "bne Lok3_%=\n"
  "b LtailA_%=\n"
  "Lok3_%=:\n"
  "movs r6, #176\n"
  "adds r6, r6, r7\n"
  "ldr r6, [r6, #0]\n"
  "ldr r1, [r6, #4]\n"
  "ldr r0, [r1, #4]\n"
  "str r0, [r7, #52]\n"
  "ldr r0, .LpC\n"
  "str r0, [r7, #56]\n"
  "adds r4, r7, #0\n"
  "adds r4, #48\n"
  "str r4, [r7, #60]\n"
  "adds r0, r7, #0\n"
  "adds r0, #52\n"
  "str r0, [r1, #4]\n"
  "adds r2, r7, #0\n"
  "adds r2, #64\n"
  "mov ip, r4\n"
  "movs r0, #200\n"
  "adds r0, r0, r7\n"
  "ldr r3, [r0, #0]\n"
  "ldr r1, .LpD\n"
  "str r1, [r7, #48]\n"
  "ldr r5, [r0, #0]\n"
  "adds r5, #4\n"
  "ldr r6, [r0, #0]\n"
  "ldr r0, [r6, #4]\n"
  "str r0, [r7, #64]\n"
  "movs r0, #0\n"
  "str r0, [r2, #4]\n"
  "str r2, [r7, #72]\n"
  "ldr r0, .LpE\n"
  "str r0, [r7, #76]\n"
  "mov r0, sp\n"
  "str r0, [r7, #80]\n"
  "adds r6, r1, #0\n"
  "b Lenter3_%=\n"
  ".hword 0x0000\n"
  ".LpC: .word 0x08016651\n"
  ".LpD: .word 0x02000B38\n"
  ".LpE: .word 0x08016118\n"
  "LcodeE_%=:\n"
  "subs r7, #64\n"
  "b Lback_%=\n"
  "Lenter3_%=:\n"
  "str r2, [r5, #0]\n"
  "ldr r0, .LpF\n"
  "str r0, [r4, #0]\n"
  "movs r1, #200\n"
  "adds r1, r1, r7\n"
  "ldr r1, [r1, #0]\n"
  "ldr r0, [r1, #4]\n"
  "ldr r0, [r0, #0]\n"
  "str r0, [r1, #4]\n"
  "b Lback0_%=\n"
  ".LpF: .word 0x02000B20\n"
  "Lback_%=:\n"
  "adds r1, r3, #4\n"
  "ldr r0, [r3, #4]\n"
  "str r0, [r7, #88]\n"
  "movs r0, #0\n"
  "str r0, [r2, #28]\n"
  "str r2, [r7, #96]\n"
  "ldr r0, .LpG\n"
  "str r0, [r7, #100]\n"
  "mov r0, sp\n"
  "str r0, [r7, #104]\n"
  "b Lenter4_%=\n"
  ".hword 0x0000\n"
  ".LpG: .word 0x08016150\n"
  "LcodeG_%=:\n"
  "subs r7, #64\n"
  "b LtailD_%=\n"
  "Lenter4_%=:\n"
  "adds r0, r7, #0\n"
  "adds r0, #88\n"
  "str r0, [r1, #0]\n"
  "mov r1, ip\n"
  "str r6, [r1, #0]\n"
  "ldr r0, [r3, #4]\n"
  "ldr r0, [r0, #0]\n"
  "str r0, [r3, #4]\n"
  "bl Mem_PopStack\n"
  "LtailD_%=:\n"
  "bl Mem_PushStack\n"
  "Lback0_%=:\n"
  "movs r0, #4\n"
  "bl Physics_ApplyForceAndCopy\n"
  "movs r2, #196\n"
  "adds r2, r2, r7\n"
  "str r0, [r2, #0]\n"
  "movs r3, #176\n"
  "adds r3, r3, r7\n"
  "ldr r3, [r3, #0]\n"
  "ldr r0, [r3, #4]\n"
  "str r0, [r7, #112]\n"
  "movs r0, #0\n"
  "str r0, [r7, #116]\n"
  "adds r1, r7, #0\n"
  "adds r1, #120\n"
  "str r7, [r7, #120]\n"
  "ldr r0, .LpH\n"
  "str r0, [r1, #4]\n"
  "mov r6, sp\n"
  "str r6, [r1, #8]\n"
  "b Lenter5_%=\n"
  ".hword 0x0000\n"
  ".LpH: .word 0x0801619C\n"
  "LcodeH_%=:\n"
  "b Ltail0_%=\n"
  "Lenter5_%=:\n"
  "adds r0, r7, #0\n"
  "adds r0, #112\n"
  "movs r1, #208\n"
  "adds r1, r1, r7\n"
  "ldr r1, [r1, #0]\n"
  "str r0, [r1, #0]\n"
  "adds r3, r7, #0\n"
  "adds r3, #64\n"
  "movs r2, #196\n"
  "adds r2, r2, r7\n"
  "ldr r5, [r2, #0]\n"
  "movs r6, #200\n"
  "adds r6, r6, r7\n"
  "ldr r2, [r6, #0]\n"
  "ldr r1, .LpI\n"
  "movs r0, #196\n"
  "adds r0, r0, r7\n"
  "ldr r0, [r0, #0]\n"
  "str r1, [r0, #0]\n"
  "adds r4, r2, #4\n"
  "ldr r0, [r2, #4]\n"
  "str r0, [r7, #64]\n"
  "movs r0, #0\n"
  "str r0, [r3, #4]\n"
  "str r3, [r7, #72]\n"
  "ldr r0, .LpJ\n"
  "str r0, [r7, #76]\n"
  "mov r6, sp\n"
  "str r6, [r7, #80]\n"
  "adds r6, r1, #0\n"
  "b Lenter6_%=\n"
  ".LpI: .word 0x02000B38\n"
  ".LpJ: .word 0x080161E4\n"
  "LcodeJ_%=:\n"
  "subs r7, #64\n"
  "b Lback2_%=\n"
  "Lenter6_%=:\n"
  "movs r0, #64\n"
  "adds r0, r0, r7\n"
  "str r0, [r4, #0]\n"
  "ldr r0, .LpK\n"
  "movs r1, #196\n"
  "adds r1, r1, r7\n"
  "ldr r1, [r1, #0]\n"
  "str r0, [r1, #0]\n"
  "movs r2, #200\n"
  "adds r2, r2, r7\n"
  "ldr r2, [r2, #0]\n"
  "ldr r0, [r2, #4]\n"
  "ldr r0, [r0, #0]\n"
  "str r0, [r2, #4]\n"
  "b Lback20_%=\n"
  ".hword 0x0000\n"
  ".LpK: .word 0x02000B20\n"
  "Lback2_%=:\n"
  "adds r1, r2, #4\n"
  "ldr r0, [r2, #4]\n"
  "str r0, [r7, #88]\n"
  "movs r0, #0\n"
  "str r0, [r3, #28]\n"
  "str r3, [r7, #96]\n"
  "ldr r0, .LpL\n"
  "str r0, [r7, #100]\n"
  "mov r0, sp\n"
  "str r0, [r7, #104]\n"
  "b Lenter7_%=\n"
  ".hword 0x0000\n"
  ".LpL: .word 0x08016228\n"
  "LcodeL_%=:\n"
  "subs r7, #64\n"
  "b LtailE_%=\n"
  "Lenter7_%=:\n"
  "adds r0, r7, #0\n"
  "adds r0, #88\n"
  "str r0, [r1, #0]\n"
  "str r6, [r5, #0]\n"
  "ldr r0, [r2, #4]\n"
  "ldr r0, [r0, #0]\n"
  "str r0, [r2, #4]\n"
  "bl Mem_PopStack\n"
  "LtailE_%=:\n"
  "bl Mem_PushStack\n"
  "Lback20_%=:\n"
  "movs r1, #176\n"
  "adds r1, r1, r7\n"
  "ldr r1, [r1, #0]\n"
  "ldr r0, [r1, #4]\n"
  "ldr r1, [r0, #0]\n"
  "movs r2, #176\n"
  "adds r2, r2, r7\n"
  "ldr r2, [r2, #0]\n"
  "str r1, [r2, #4]\n"
  "ldr r0, [r1, #4]\n"
  "ldr r0, [r0, #0]\n"
  "str r0, [r1, #4]\n"
  "str r6, [r7, #48]\n"
  "movs r3, #196\n"
  "adds r3, r3, r7\n"
  "ldr r3, [r3, #0]\n"
  "ldr r0, [r3, #0]\n"
  "ldr r0, [r0, #4]\n"
  "bl Math_Init\n"
  "adds r1, r0, #0\n"
  "ldr r2, LpM\n"
  "movs r6, #196\n"
  "adds r6, r6, r7\n"
  "ldr r0, [r6, #0]\n"
  "bl Mem_FillWords\n"
  "bl Mem_PopStack\n"
  "LpM:\n"
  "str r1, [r2, #100]\n"
  "lsrs r1, r0, #32\n"
  "LtailA_%=:\n"
  "movs r1, #192\n"
  "adds r1, r1, r7\n"
  "ldr r0, [r1, #0]\n"
  "adds r0, #1\n"
  "str r0, [r1, #0]\n"
  "movs r2, #160\n"
  "adds r2, r2, r7\n"
  "ldr r2, [r2, #0]\n"
  "cmp r0, r2\n"
  "bge Ltail_%=\n"
  "b Lbig_%=\n"
  "Ltail_%=:\n"
  "bl Mem_CopyBytes\n"
  "Ltail0_%=:\n"
  "bl Mem_CopyBytes\n"
  "LtailB_%=:\n"
  "adds r2, r7, #0\n"
  "adds r2, #136\n"
  "movs r3, #176\n"
  "adds r3, r3, r7\n"
  "ldr r3, [r3, #0]\n"
  "ldr r0, [r3, #4]\n"
  "str r0, [r2, #0]\n"
  "movs r0, #0\n"
  "str r0, [r2, #4]\n"
  "adds r0, r7, #0\n"
  "adds r0, #144\n"
  "str r7, [r0, #0]\n"
  "ldr r1, .LpN\n"
  "str r1, [r0, #4]\n"
  "mov r6, sp\n"
  "str r6, [r0, #8]\n"
  "b Lenter8_%=\n"
  ".LpN: .word 0x080162C4\n"
  "LcodeN_%=:\n"
  "b Ltrail_%=\n"
  "Lenter8_%=:\n"
  "movs r0, #208\n"
  "adds r0, r0, r7\n"
  "ldr r0, [r0, #0]\n"
  "str r2, [r0, #0]\n"
  "movs r1, #180\n"
  "adds r1, r1, r7\n"
  "ldr r0, [r1, #0]\n"
  "bl Mem_Swap\n"
  "movs r2, #176\n"
  "adds r2, r2, r7\n"
  "ldr r2, [r2, #0]\n"
  "ldr r0, [r2, #4]\n"
  "ldr r0, [r0, #0]\n"
  "str r0, [r2, #4]\n"
  "bl Mem_PopStack\n"
  "Ltrail_%=:\n"
  "bl Mem_PushStack\n"
    "Sec2_%=:\n"
  "push {r4, r5, r6, r7, lr}\n"
  "mov r7, sl\n"
  "mov r6, r9\n"
  "mov r5, r8\n"
  "push {r5, r6, r7}\n"
  "sub sp, #100\n"
  "mov r7, sp\n"
  "bl Mem_GetStackFrame\n"
  "str r0, [r7, #88]\n"
  "adds r3, r0, #0\n"
  "str r3, [r7, #96]\n"
  "adds r5, r3, #0\n"
  "adds r5, #4\n"
  "ldr r1, [r3, #4]\n"
  "ldr r0, [r1, #4]\n"
  "str r0, [r7, #4]\n"
  "ldr	r0, .LpS2801633C\n"
  "str r0, [r7, #8]\n"
  "str r7, [r7, #12]\n"
  "adds r0, r7, #4\n"
  "str r0, [r1, #4]\n"
  "adds r1, r7, #0\n"
  "adds r1, #16\n"
  "adds r4, r7, #0\n"
  "ldr r2, [r7, #88]\n"
  "ldr	r0, .LpS28016340\n"
  "str r0, [r7, #0]\n"
  "adds r6, r2, #0\n"
  "ldr r0, [r6, #4]\n"
  "str r0, [r7, #16]\n"
  "movs r0, #0\n"
  "str r0, [r1, #4]\n"
  "str r1, [r7, #24]\n"
  "ldr	r0, .LpS28016344\n"
  "str r0, [r7, #28]\n"
  "mov r0, sp\n"
  "str r0, [r7, #32]\n"
  "b S2L801634C_%=\n"
  "movs r0, r0\n"
  ".LpS2801633C: .word 0x080173F9\n"
  ".LpS28016340: .word 0x02000B38\n"
  ".LpS28016344: .word 0x08016348\n"
  "subs r7, #16\n"
  "b S2L8016360_%=\n"
  "S2L801634C_%=:\n"
  "str r1, [r5, #0]\n"
  "ldr	r0, .LpS2801635C\n"
  "str r0, [r4, #0]\n"
  "ldr r0, [r3, #4]\n"
  "ldr r0, [r0, #0]\n"
  "str r0, [r3, #4]\n"
  "b S2L801639C_%=\n"
  "movs r0, r0\n"
  ".LpS2801635C: .word 0x02000BC8\n"
  "S2L8016360_%=:\n"
  "adds r3, r2, #4\n"
  "ldr r0, [r2, #4]\n"
  "str r0, [r7, #40]\n"
  "movs r0, #0\n"
  "str r0, [r1, #28]\n"
  "str r1, [r7, #48]\n"
  "ldr	r0, .LpS28016378\n"
  "str r0, [r7, #52]\n"
  "mov r1, sp\n"
  "str r1, [r7, #56]\n"
  "b S2L8016380_%=\n"
  "movs r0, r0\n"
  ".LpS28016378: .word 0x0801637C\n"
  "subs r7, #16\n"
  "b S2L8016398_%=\n"
  "S2L8016380_%=:\n"
  "adds r0, r7, #0\n"
  "adds r0, #40\n"
  "str r0, [r3, #0]\n"
  "ldr	r0, .LpS28016394\n"
  "str r0, [r4, #0]\n"
  "ldr r0, [r2, #4]\n"
  "ldr r0, [r0, #0]\n"
  "str r0, [r2, #4]\n"
  "bl Mem_PopStack\n"
  ".LpS28016394: .word 0x02000B38\n"
  "S2L8016398_%=:\n"
  "bl Mem_PushStack\n"
  "S2L801639C_%=:\n"
  "movs r0, #4\n"
  "bl Physics_ApplyForceAndCopy\n"
  "str r0, [r7, #92]\n"
  "ldr r2, [r7, #88]\n"
  "adds r2, #4\n"
  "ldr r6, [r7, #88]\n"
  "ldr r0, [r6, #4]\n"
  "str r0, [r7, #64]\n"
  "movs r0, #0\n"
  "str r0, [r7, #68]\n"
  "adds r1, r7, #0\n"
  "adds r1, #72\n"
  "str r7, [r7, #72]\n"
  "ldr	r0, .LpS280163C4\n"
  "str r0, [r1, #4]\n"
  "mov r0, sp\n"
  "str r0, [r1, #8]\n"
  "b S2L80163CA_%=\n"
  "movs r0, r0\n"
  ".LpS280163C4: .word 0x080163C8\n"
  "b S2L8016484_%=\n"
  "S2L80163CA_%=:\n"
  "adds r0, r7, #0\n"
  "adds r0, #64\n"
  "str r0, [r2, #0]\n"
  "adds r3, r7, #0\n"
  "adds r3, #16\n"
  "ldr r5, [r7, #92]\n"
  "ldr r2, [r7, #96]\n"
  "ldr	r1, .LpS280163F4\n"
  "str r1, [r5, #0]\n"
  "adds r4, r2, #4\n"
  "ldr r0, [r2, #4]\n"
  "str r0, [r7, #16]\n"
  "movs r0, #0\n"
  "str r0, [r3, #4]\n"
  "str r3, [r7, #24]\n"
  "ldr	r0, .LpS280163F8\n"
  "str r0, [r7, #28]\n"
  "mov r6, sp\n"
  "str r6, [r7, #32]\n"
  "b S2L8016400_%=\n"
  "movs r0, r0\n"
  ".LpS280163F4: .word 0x02000B38\n"
  ".LpS280163F8: .word 0x080163FC\n"
  "subs r7, #16\n"
  "b S2L801641C_%=\n"
  "S2L8016400_%=:\n"
  "movs r0, #16\n"
  "adds r0, r0, r7\n"
  "str r0, [r4, #0]\n"
  "ldr	r0, .LpS28016418\n"
  "ldr r1, [r7, #92]\n"
  "str r0, [r1, #0]\n"
  "ldr r6, [r7, #96]\n"
  "ldr r0, [r6, #4]\n"
  "ldr r0, [r0, #0]\n"
  "str r0, [r6, #4]\n"
  "b S2L8016452_%=\n"
  "movs r0, r0\n"
  ".LpS28016418: .word 0x02000BC8\n"
  "S2L801641C_%=:\n"
  "adds r4, r2, #4\n"
  "ldr r0, [r2, #4]\n"
  "str r0, [r7, #40]\n"
  "movs r0, #0\n"
  "str r0, [r3, #28]\n"
  "str r3, [r7, #48]\n"
  "ldr	r0, .LpS28016434\n"
  "str r0, [r7, #52]\n"
  "mov r0, sp\n"
  "str r0, [r7, #56]\n"
  "b S2L801643C_%=\n"
  "movs r0, r0\n"
  ".LpS28016434: .word 0x08016438\n"
  "subs r7, #16\n"
  "b S2L801644E_%=\n"
  "S2L801643C_%=:\n"
  "adds r0, r7, #0\n"
  "adds r0, #40\n"
  "str r0, [r4, #0]\n"
  "str r1, [r5, #0]\n"
  "ldr r0, [r2, #4]\n"
  "ldr r0, [r0, #0]\n"
  "str r0, [r2, #4]\n"
  "bl Mem_PopStack\n"
  "S2L801644E_%=:\n"
  "bl Mem_PushStack\n"
  "S2L8016452_%=:\n"
  "ldr r1, [r7, #88]\n"
  "ldr r0, [r1, #4]\n"
  "ldr r0, [r0, #0]\n"
  "str r0, [r1, #4]\n"
  "ldr r1, [r0, #4]\n"
  "ldr r1, [r1, #0]\n"
  "str r1, [r0, #4]\n"
  "ldr	r0, .LpS2801647C\n"
  "str r0, [r7, #0]\n"
  "ldr r6, [r7, #92]\n"
  "ldr r0, [r6, #0]\n"
  "ldr r0, [r0, #4]\n"
  "bl Math_Init\n"
  "adds r1, r0, #0\n"
  "ldr	r2, .LpS28016480\n"
  "ldr r0, [r7, #92]\n"
  "bl Mem_FillWords\n"
  "bl Mem_PopStack\n"
  ".LpS2801647C: .word 0x02000B38\n"
  ".LpS28016480: .word 0x080173F9\n"
  "S2L8016484_%=:\n"
  "bl Mem_CopyBytes\n"

  "Sec3_%=:\n"
  "push {r4, r5, r6, r7, lr}\n"
  "mov r7, sl\n"
  "mov r6, r9\n"
  "mov r5, r8\n"
  "push {r5, r6, r7}\n"
  "sub sp, #100\n"
  "mov r7, sp\n"
  "bl Mem_GetStackFrame\n"
  "str r0, [r7, #88]\n"
  "adds r3, r0, #0\n"
  "str r3, [r7, #96]\n"
  "adds r5, r3, #0\n"
  "adds r5, #4\n"
  "ldr r1, [r3, #4]\n"
  "ldr r0, [r1, #4]\n"
  "str r0, [r7, #4]\n"
  "ldr	r0, .LpS380164D8\n"
  "str r0, [r7, #8]\n"
  "str r7, [r7, #12]\n"
  "adds r0, r7, #4\n"
  "str r0, [r1, #4]\n"
  "adds r1, r7, #0\n"
  "adds r1, #16\n"
  "adds r4, r7, #0\n"
  "ldr r2, [r7, #88]\n"
  "ldr	r0, .LpS380164DC\n"
  "str r0, [r7, #0]\n"
  "adds r6, r2, #0\n"
  "ldr r0, [r6, #4]\n"
  "str r0, [r7, #16]\n"
  "movs r0, #0\n"
  "str r0, [r1, #4]\n"
  "str r1, [r7, #24]\n"
  "ldr	r0, .LpS380164E0\n"
  "str r0, [r7, #28]\n"
  "mov r0, sp\n"
  "str r0, [r7, #32]\n"
  "b S3L80164E8_%=\n"
  "movs r0, r0\n"
  ".LpS380164D8: .word 0x08017339\n"
  ".LpS380164DC: .word 0x02000B38\n"
  ".LpS380164E0: .word 0x080164E4\n"
  "subs r7, #16\n"
  "b S3L80164FC_%=\n"
  "S3L80164E8_%=:\n"
  "str r1, [r5, #0]\n"
  "ldr	r0, .LpS380164F8\n"
  "str r0, [r4, #0]\n"
  "ldr r0, [r3, #4]\n"
  "ldr r0, [r0, #0]\n"
  "str r0, [r3, #4]\n"
  "b S3L8016538_%=\n"
  "movs r0, r0\n"
  ".LpS380164F8: .word 0x02000BB0\n"
  "S3L80164FC_%=:\n"
  "adds r3, r2, #4\n"
  "ldr r0, [r2, #4]\n"
  "str r0, [r7, #40]\n"
  "movs r0, #0\n"
  "str r0, [r1, #28]\n"
  "str r1, [r7, #48]\n"
  "ldr	r0, .LpS38016514\n"
  "str r0, [r7, #52]\n"
  "mov r1, sp\n"
  "str r1, [r7, #56]\n"
  "b S3L801651C_%=\n"
  "movs r0, r0\n"
  ".LpS38016514: .word 0x08016518\n"
  "subs r7, #16\n"
  "b S3L8016534_%=\n"
  "S3L801651C_%=:\n"
  "adds r0, r7, #0\n"
  "adds r0, #40\n"
  "str r0, [r3, #0]\n"
  "ldr	r0, .LpS38016530\n"
  "str r0, [r4, #0]\n"
  "ldr r0, [r2, #4]\n"
  "ldr r0, [r0, #0]\n"
  "str r0, [r2, #4]\n"
  "bl Mem_PopStack\n"
  ".LpS38016530: .word 0x02000B38\n"
  "S3L8016534_%=:\n"
  "bl Mem_PushStack\n"
  "S3L8016538_%=:\n"
  "movs r0, #4\n"
  "bl Physics_ApplyForceAndCopy\n"
  "str r0, [r7, #92]\n"
  "ldr r2, [r7, #88]\n"
  "adds r2, #4\n"
  "ldr r6, [r7, #88]\n"
  "ldr r0, [r6, #4]\n"
  "str r0, [r7, #64]\n"
  "movs r0, #0\n"
  "str r0, [r7, #68]\n"
  "adds r1, r7, #0\n"
  "adds r1, #72\n"
  "str r7, [r7, #72]\n"
  "ldr	r0, .LpS38016560\n"
  "str r0, [r1, #4]\n"
  "mov r0, sp\n"
  "str r0, [r1, #8]\n"
  "b S3L8016566_%=\n"
  "movs r0, r0\n"
  ".LpS38016560: .word 0x08016564\n"
  "b S3L8016620_%=\n"
  "S3L8016566_%=:\n"
  "adds r0, r7, #0\n"
  "adds r0, #64\n"
  "str r0, [r2, #0]\n"
  "adds r3, r7, #0\n"
  "adds r3, #16\n"
  "ldr r5, [r7, #92]\n"
  "ldr r2, [r7, #96]\n"
  "ldr	r1, .LpS38016590\n"
  "str r1, [r5, #0]\n"
  "adds r4, r2, #4\n"
  "ldr r0, [r2, #4]\n"
  "str r0, [r7, #16]\n"
  "movs r0, #0\n"
  "str r0, [r3, #4]\n"
  "str r3, [r7, #24]\n"
  "ldr	r0, .LpS38016594\n"
  "str r0, [r7, #28]\n"
  "mov r6, sp\n"
  "str r6, [r7, #32]\n"
  "b S3L801659C_%=\n"
  "movs r0, r0\n"
  ".LpS38016590: .word 0x02000B38\n"
  ".LpS38016594: .word 0x08016598\n"
  "subs r7, #16\n"
  "b S3L80165B8_%=\n"
  "S3L801659C_%=:\n"
  "movs r0, #16\n"
  "adds r0, r0, r7\n"
  "str r0, [r4, #0]\n"
  "ldr	r0, .LpS380165B4\n"
  "ldr r1, [r7, #92]\n"
  "str r0, [r1, #0]\n"
  "ldr r6, [r7, #96]\n"
  "ldr r0, [r6, #4]\n"
  "ldr r0, [r0, #0]\n"
  "str r0, [r6, #4]\n"
  "b S3L80165EE_%=\n"
  "movs r0, r0\n"
  ".LpS380165B4: .word 0x02000BB0\n"
  "S3L80165B8_%=:\n"
  "adds r4, r2, #4\n"
  "ldr r0, [r2, #4]\n"
  "str r0, [r7, #40]\n"
  "movs r0, #0\n"
  "str r0, [r3, #28]\n"
  "str r3, [r7, #48]\n"
  "ldr	r0, .LpS380165D0\n"
  "str r0, [r7, #52]\n"
  "mov r0, sp\n"
  "str r0, [r7, #56]\n"
  "b S3L80165D8_%=\n"
  "movs r0, r0\n"
  ".LpS380165D0: .word 0x080165D4\n"
  "subs r7, #16\n"
  "b S3L80165EA_%=\n"
  "S3L80165D8_%=:\n"
  "adds r0, r7, #0\n"
  "adds r0, #40\n"
  "str r0, [r4, #0]\n"
  "str r1, [r5, #0]\n"
  "ldr r0, [r2, #4]\n"
  "ldr r0, [r0, #0]\n"
  "str r0, [r2, #4]\n"
  "bl Mem_PopStack\n"
  "S3L80165EA_%=:\n"
  "bl Mem_PushStack\n"
  "S3L80165EE_%=:\n"
  "ldr r1, [r7, #88]\n"
  "ldr r0, [r1, #4]\n"
  "ldr r0, [r0, #0]\n"
  "str r0, [r1, #4]\n"
  "ldr r1, [r0, #4]\n"
  "ldr r1, [r1, #0]\n"
  "str r1, [r0, #4]\n"
  "ldr	r0, .LpS38016618\n"
  "str r0, [r7, #0]\n"
  "ldr r6, [r7, #92]\n"
  "ldr r0, [r6, #0]\n"
  "ldr r0, [r0, #4]\n"
  "bl Math_Init\n"
  "adds r1, r0, #0\n"
  "ldr	r2, .LpS3801661C\n"
  "ldr r0, [r7, #92]\n"
  "bl Mem_FillWords\n"
  "bl Mem_PopStack\n"
  ".LpS38016618: .word 0x02000B38\n"
  ".LpS3801661C: .word 0x08017339\n"
  "S3L8016620_%=:\n"
  "bl Mem_CopyBytes\n"

  "Sec4_%=:\n"
  "push {lr}\n"
  "bl Math_InitSystem\n"
  "ldr r0, [r0, #0]\n"
  "movs r1, #0\n"
  "cmp r0, #0\n"
  "beq LokV_%=\n"
  "ldrb r0, [r0, #20]\n"
  "cmp r0, #0\n"
  "bne LokV_%=\n"
  "movs r1, #1\n"
  "LokV_%=:\n"
  "adds r0, r1, #0\n"
  "pop {pc}\n"
  ::: "r0","r1","r2","r3","memory");
}
