diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c
index 1f90c02b9..a68a72c76 100755
--- a/src/field_effect_helpers.c
+++ b/src/field_effect_helpers.c
@@ -1547,150 +1547,35 @@ void WaitFieldEffectSpriteAnim(struct Sprite *sprite)
         UpdateEventObjectSpriteVisibility(sprite, FALSE);
 }
 
-#ifdef NONMATCHING
-static void sub_81561FC(struct Sprite *sprite /*r6*/, u8 z, u8 offset)
+static void sub_81561FC(struct Sprite *sprite, u8 z, u8 offset)
 {
     u8 i;
-    s16 xlo;
-    s16 xhi;
-    s16 lx;
-    s16 lyhi;
-    s16 ly;
-    s16 ylo;
-    s16 yhi;
-    struct EventObject *eventObject; // r4
-    const struct EventObjectGraphicsInfo *graphicsInfo; // destroyed
-    struct Sprite *linkedSprite; // r5
+    s16 var, xhi, lyhi, yhi, ylo;
+    const struct EventObjectGraphicsInfo *graphicsInfo; // Unused Variable
+    struct Sprite *linkedSprite;
 
     SetObjectSubpriorityByZCoord(z, sprite, offset);
-    for (i = 0; i < 16; i ++)
+    for (i = 0; i < EVENT_OBJECTS_COUNT; i ++)
     {
-        eventObject = &gEventObjects[i];
+        struct EventObject *eventObject = &gEventObjects[i];
         if (eventObject->active)
         {
             graphicsInfo = GetEventObjectGraphicsInfo(eventObject->graphicsId);
             linkedSprite = &gSprites[eventObject->spriteId];
             xhi = sprite->pos1.x + sprite->centerToCornerVecX;
-            xlo = sprite->pos1.x - sprite->centerToCornerVecX;
-            lx = linkedSprite->pos1.x;
-            if (xhi < lx && xlo > lx)
+            var = sprite->pos1.x - sprite->centerToCornerVecX;
+            if (xhi < linkedSprite->pos1.x && var > linkedSprite->pos1.x)
             {
                 lyhi = linkedSprite->pos1.y + linkedSprite->centerToCornerVecY;
-                ly = linkedSprite->pos1.y;
+                var = linkedSprite->pos1.y;
                 ylo = sprite->pos1.y - sprite->centerToCornerVecY;
                 yhi = ylo + linkedSprite->centerToCornerVecY;
-                if ((lyhi < yhi || lyhi < ylo) && ly > yhi)
+                if ((lyhi < yhi || lyhi < ylo) && var > yhi && sprite->subpriority <= linkedSprite->subpriority)
                 {
-                    if (sprite->subpriority <= linkedSprite->subpriority)
-                    {
-                        sprite->subpriority = linkedSprite->subpriority + 2;
-                        break;
-                    }
+                    sprite->subpriority = linkedSprite->subpriority + 2;
+                    break;
                 }
             }
         }
     }
 }
-#else
-NAKED void sub_81561FC(struct Sprite *sprite /*r6*/, u8 z, u8 offset)
-{
-    asm_unified("push {r4-r7,lr}\n\
-    adds r6, r0, 0\n\
-    adds r0, r1, 0\n\
-    lsls r0, 24\n\
-    lsrs r0, 24\n\
-    lsls r2, 24\n\
-    lsrs r2, 24\n\
-    adds r1, r6, 0\n\
-    bl SetObjectSubpriorityByZCoord\n\
-    movs r7, 0\n\
-_08156212:\n\
-    lsls r0, r7, 3\n\
-    adds r0, r7\n\
-    lsls r0, 2\n\
-    ldr r1, =gEventObjects\n\
-    adds r4, r0, r1\n\
-    ldrb r0, [r4]\n\
-    lsls r0, 31\n\
-    cmp r0, 0\n\
-    beq _081562B4\n\
-    ldrb r0, [r4, 0x5]\n\
-    bl GetEventObjectGraphicsInfo\n\
-    ldrb r1, [r4, 0x4]\n\
-    lsls r0, r1, 4\n\
-    adds r0, r1\n\
-    lsls r0, 2\n\
-    ldr r1, =gSprites\n\
-    adds r5, r0, r1\n\
-    adds r0, r6, 0\n\
-    adds r0, 0x28\n\
-    movs r2, 0\n\
-    ldrsb r2, [r0, r2]\n\
-    ldrh r0, [r6, 0x20]\n\
-    adds r1, r0, r2\n\
-    subs r0, r2\n\
-    lsls r0, 16\n\
-    lsrs r4, r0, 16\n\
-    lsls r1, 16\n\
-    asrs r1, 16\n\
-    movs r0, 0x20\n\
-    ldrsh r2, [r5, r0]\n\
-    cmp r1, r2\n\
-    bge _081562B4\n\
-    lsls r0, r4, 16\n\
-    asrs r0, 16\n\
-    cmp r0, r2\n\
-    ble _081562B4\n\
-    adds r0, r5, 0\n\
-    adds r0, 0x29\n\
-    movs r3, 0\n\
-    ldrsb r3, [r0, r3]\n\
-    ldrh r2, [r5, 0x22]\n\
-    adds r2, r3\n\
-    ldrh r4, [r5, 0x22]\n\
-    adds r0, r6, 0\n\
-    adds r0, 0x29\n\
-    movs r1, 0\n\
-    ldrsb r1, [r0, r1]\n\
-    ldrh r0, [r6, 0x22]\n\
-    subs r0, r1\n\
-    lsls r0, 16\n\
-    asrs r0, 16\n\
-    adds r3, r0, r3\n\
-    lsls r2, 16\n\
-    asrs r2, 16\n\
-    lsls r3, 16\n\
-    asrs r3, 16\n\
-    cmp r2, r3\n\
-    blt _0815628C\n\
-    cmp r2, r0\n\
-    bge _081562B4\n\
-_0815628C:\n\
-    lsls r0, r4, 16\n\
-    asrs r0, 16\n\
-    cmp r0, r3\n\
-    ble _081562B4\n\
-    adds r2, r6, 0\n\
-    adds r2, 0x43\n\
-    adds r0, r5, 0\n\
-    adds r0, 0x43\n\
-    ldrb r1, [r0]\n\
-    ldrb r0, [r2]\n\
-    cmp r0, r1\n\
-    bhi _081562B4\n\
-    adds r0, r1, 0x2\n\
-    strb r0, [r2]\n\
-    b _081562BE\n\
-    .pool\n\
-_081562B4:\n\
-    adds r0, r7, 0x1\n\
-    lsls r0, 24\n\
-    lsrs r7, r0, 24\n\
-    cmp r7, 0xF\n\
-    bls _08156212\n\
-_081562BE:\n\
-    pop {r4-r7}\n\
-    pop {r0}\n\
-    bx r0");
-}
-#endif
diff --git a/src/field_specials.c b/src/field_specials.c
index 562127890..4da751b27 100644
--- a/src/field_specials.c
+++ b/src/field_specials.c
@@ -1709,8 +1709,18 @@ const u8 *const gElevatorFloorsTable[] = {
 	gText_Rooftop
 };
 
-const u16 gUnknown_085B2BF4[] = { 0x0329, 0x032a, 0x032b, 0x0331, 0x0332, 0x0333, 0x0339, 0x033a, 0x033b };
-const u16 gUnknown_085B2C06[] = { 0x0329, 0x032b, 0x032a, 0x0331, 0x0333, 0x0332, 0x0339, 0x033b, 0x033a };
+const u16 gUnknown_085B2BF4[][3] =
+{
+    {0x0329, 0x032a, 0x032b},
+    {0x0331, 0x0332, 0x0333},
+    {0x0339, 0x033a, 0x033b},
+};
+const u16 gUnknown_085B2C06[][3] =
+{
+    {0x0329, 0x032b, 0x032a},
+    {0x0331, 0x0333, 0x0332},
+    {0x0339, 0x033b, 0x033a},
+};
 
 void SetDepartmentStoreFloorVar(void)
 {
@@ -1866,9 +1876,6 @@ static void sub_8139C2C(u16 a1, u8 a2)
     }
 }
 
-// Annoyingly close but compiler wants to add all the parts of the index into the arrays
-// first and then shift by one, whereas we need each individual part to shift and then be added.
-#ifdef NONMATCHING
 static void sub_8139C80(u8 taskId)
 {
     u8 x, y;
@@ -1883,7 +1890,7 @@ static void sub_8139C80(u8 taskId)
             {
                 for (x = 0; x < 3; x++)
                 {
-                    MapGridSetMetatileIdAt(x + 8, y + 7, gUnknown_085B2BF4[y * 3 + data[0] % 3] | 0xC00);
+                    MapGridSetMetatileIdAt(x + 8, y + 7, gUnknown_085B2BF4[y][data[0] % 3] | 0xC00);
                 }
             }
         }
@@ -1893,7 +1900,7 @@ static void sub_8139C80(u8 taskId)
             {
                 for (x = 0; x < 3; x++)
                 {
-                    MapGridSetMetatileIdAt(x + 8, y + 7, gUnknown_085B2C06[y * 3 + data[0] % 3] | 0xC00);
+                    MapGridSetMetatileIdAt(x + 8, y + 7, gUnknown_085B2C06[y][data[0] % 3] | 0xC00);
                 }
             }
         }
@@ -1906,148 +1913,6 @@ static void sub_8139C80(u8 taskId)
     }
     data[1]++;
 }
-#else
-NAKED
-static void sub_8139C80(u8 taskId)
-{
-    asm_unified("push {r4-r7,lr}\n\
-	mov r7, r10\n\
-	mov r6, r9\n\
-	mov r5, r8\n\
-	push {r5-r7}\n\
-	sub sp, 0x4\n\
-	lsls r0, 24\n\
-	lsrs r0, 24\n\
-	str r0, [sp]\n\
-	lsls r0, 2\n\
-	ldr r1, [sp]\n\
-	adds r0, r1\n\
-	lsls r0, 3\n\
-	ldr r1, =gTasks + 0x8\n\
-	adds r6, r0, r1\n\
-	movs r2, 0x2\n\
-	ldrsh r0, [r6, r2]\n\
-	cmp r0, 0x6\n\
-	bne _08139D7C\n\
-	ldrh r0, [r6]\n\
-	adds r0, 0x1\n\
-	strh r0, [r6]\n\
-	movs r1, 0x4\n\
-	ldrsh r0, [r6, r1]\n\
-	cmp r0, 0\n\
-	bne _08139D10\n\
-	movs r1, 0\n\
-	ldr r2, =gUnknown_085B2BF4\n\
-	mov r10, r2\n\
-_08139CBA:\n\
-	movs r5, 0\n\
-	adds r7, r1, 0x7\n\
-	lsls r0, r1, 1\n\
-	adds r2, r1, 0x1\n\
-	mov r8, r2\n\
-	adds r0, r1\n\
-	lsls r0, 1\n\
-	mov r9, r0\n\
-_08139CCA:\n\
-	adds r4, r5, 0\n\
-	adds r4, 0x8\n\
-	movs r1, 0\n\
-	ldrsh r0, [r6, r1]\n\
-	movs r1, 0x3\n\
-	bl __modsi3\n\
-	lsls r0, 16\n\
-	asrs r0, 15\n\
-	add r0, r9\n\
-	add r0, r10\n\
-	ldrh r0, [r0]\n\
-	movs r1, 0xC0\n\
-	lsls r1, 4\n\
-	adds r2, r1, 0\n\
-	orrs r2, r0\n\
-	adds r0, r4, 0\n\
-	adds r1, r7, 0\n\
-	bl MapGridSetMetatileIdAt\n\
-	adds r0, r5, 0x1\n\
-	lsls r0, 24\n\
-	lsrs r5, r0, 24\n\
-	cmp r5, 0x2\n\
-	bls _08139CCA\n\
-	mov r2, r8\n\
-	lsls r0, r2, 24\n\
-	lsrs r1, r0, 24\n\
-	cmp r1, 0x2\n\
-	bls _08139CBA\n\
-	b _08139D62\n\
-	.pool\n\
-_08139D10:\n\
-	movs r1, 0\n\
-	ldr r0, =gUnknown_085B2C06\n\
-	mov r10, r0\n\
-_08139D16:\n\
-	movs r5, 0\n\
-	adds r7, r1, 0x7\n\
-	lsls r0, r1, 1\n\
-	adds r2, r1, 0x1\n\
-	mov r8, r2\n\
-	adds r0, r1\n\
-	lsls r0, 1\n\
-	mov r9, r0\n\
-_08139D26:\n\
-	adds r4, r5, 0\n\
-	adds r4, 0x8\n\
-	movs r1, 0\n\
-	ldrsh r0, [r6, r1]\n\
-	movs r1, 0x3\n\
-	bl __modsi3\n\
-	lsls r0, 16\n\
-	asrs r0, 15\n\
-	add r0, r9\n\
-	add r0, r10\n\
-	ldrh r0, [r0]\n\
-	movs r1, 0xC0\n\
-	lsls r1, 4\n\
-	adds r2, r1, 0\n\
-	orrs r2, r0\n\
-	adds r0, r4, 0\n\
-	adds r1, r7, 0\n\
-	bl MapGridSetMetatileIdAt\n\
-	adds r0, r5, 0x1\n\
-	lsls r0, 24\n\
-	lsrs r5, r0, 24\n\
-	cmp r5, 0x2\n\
-	bls _08139D26\n\
-	mov r2, r8\n\
-	lsls r0, r2, 24\n\
-	lsrs r1, r0, 24\n\
-	cmp r1, 0x2\n\
-	bls _08139D16\n\
-_08139D62:\n\
-	bl DrawWholeMapView\n\
-	movs r0, 0\n\
-	strh r0, [r6, 0x2]\n\
-	movs r0, 0\n\
-	ldrsh r1, [r6, r0]\n\
-	movs r2, 0x6\n\
-	ldrsh r0, [r6, r2]\n\
-	cmp r1, r0\n\
-	bne _08139D7C\n\
-	ldr r0, [sp]\n\
-	bl DestroyTask\n\
-_08139D7C:\n\
-	ldrh r0, [r6, 0x2]\n\
-	adds r0, 0x1\n\
-	strh r0, [r6, 0x2]\n\
-	add sp, 0x4\n\
-	pop {r3-r5}\n\
-	mov r8, r3\n\
-	mov r9, r4\n\
-	mov r10, r5\n\
-	pop {r4-r7}\n\
-	pop {r0}\n\
-	bx r0\n\
-	.pool");
-}
-#endif // NAKED
 
 void sub_8139D98(void)
 {
@@ -2069,7 +1934,7 @@ void sub_8139D98(void)
     }
 
     gSpecialVar_0x8006 = 0;
-    gSpecialVar_0x8007 = ivStorage[STAT_HP]; 
+    gSpecialVar_0x8007 = ivStorage[STAT_HP];
 
     for (i = 1; i < NUM_STATS; i++)
     {