### RAW ASSEMBLY INSTRUCTIONS:

glabel func_8024E40C
/* 17CCEC 8024E40C 3C028028 */  lui       $v0, %hi(BattleCam_IsFrozen)
/* 17CCF0 8024E410 80420CE0 */  lb        $v0, %lo(BattleCam_IsFrozen)($v0)
/* 17CCF4 8024E414 27BDFFE8 */  addiu     $sp, $sp, -0x18
/* 17CCF8 8024E418 14400005 */  bnez      $v0, .L8024E430
/* 17CCFC 8024E41C AFBF0010 */   sw       $ra, 0x10($sp)
/* 17CD00 8024E420 3C01802A */  lui       $at, %hi(BattleCam_SetImmediately)
/* 17CD04 8024E424 A020F2A4 */  sb        $zero, %lo(BattleCam_SetImmediately)($at)
/* 17CD08 8024E428 0C0933CD */  jal       func_8024CF34
/* 17CD0C 8024E42C 00000000 */   nop
.L8024E430:
/* 17CD10 8024E430 8FBF0010 */  lw        $ra, 0x10($sp)
/* 17CD14 8024E434 03E00008 */  jr        $ra
D_8024E438:
/* 17CD18 8024E438 27BD0018 */   addiu    $sp, $sp, 0x18

### DECOMPILED C INSTRUCTIONS:

void btl_cam_use_preset_impl(s32 id) {
    BattleStatus* battleStatus = &gBattleStatus;
    EvtScript* preset = NULL;
    Evt* newScript;

    if (!BattleCam_IsFrozen) {
        D_8029F2A6 = TRUE;
        BattleCam_ModeY = BTL_CAM_MODEY_0;
        BattleCam_ModeX = BTL_CAM_MODEX_0;
        BattleCam_UseLinearInterp = FALSE;
        D_8029F2A7 = 0;

        switch (id) {
            case BTL_CAM_PRESET_00:
                preset = &CamPreset_A;
                break;
            case BTL_CAM_PRESET_01:
                preset = &CamPreset_B;
                break;
            case BTL_CAM_DEFAULT:
                if (BattleCam_CurrentPresetID == id) {
                    return;
                }
                BattleCam_BoomLength = 500;
                BattleCam_MoveTimeLeft = 30;
                preset = &EVS_BattleCam_Default;
                break;
            case BTL_CAM_PRESET_03:
                if (BattleCam_CurrentPresetID == id) {
                    return;
                }
                BattleCam_BoomLength = 480;
                BattleCam_MoveTimeLeft = 20;
                BattleCam_BoomZOffset = 0;
                preset = &CamPreset_D;
                break;
            case BTL_CAM_PRESET_04:
                if (BattleCam_CurrentPresetID == id) {
                    return;
                }
                BattleCam_BoomLength = 500;
                BattleCam_MoveTimeLeft = 10;
                BattleCam_BoomZOffset = 0;
                preset = &CamPreset_E;
                break;
            case BTL_CAM_PRESET_05:
                BattleCam_BoomLength = 300;
                BattleCam_MoveTimeLeft = 20;
                BattleCam_ModeY = BTL_CAM_MODEY_1;
                BattleCam_ModeX = BTL_CAM_MODEX_1;
                preset = &CamPreset_F;
                break;
            case BTL_CAM_PRESET_06:
                BattleCam_BoomLength = 300;
                BattleCam_MoveTimeLeft = 20;
                BattleCam_ModeY = BTL_CAM_MODEY_1;
                BattleCam_ModeX = BTL_CAM_MODEX_1;
                preset = &CamPreset_G;
                break;
            case BTL_CAM_PRESET_07:
                BattleCam_BoomLength = 300;
                BattleCam_MoveTimeLeft = 20;
                preset = &CamPreset_H;
                break;
            case BTL_CAM_PRESET_08:
                BattleCam_BoomLength = 300;
                BattleCam_MoveTimeLeft = 20;
                BattleCam_ModeY = BTL_CAM_MODEY_1;
                BattleCam_ModeX = BTL_CAM_MODEX_1;
                preset = &CamPreset_I;
                break;
            case BTL_CAM_PRESET_09:
                if (BattleCam_ControlScript != &EVS_BattleCam_Default) {
                    BattleCam_BoomLength = 500;
                    BattleCam_MoveTimeLeft = 120;
                    preset = &EVS_BattleCam_Default;
                    break;
                }
                return;
            case BTL_CAM_PRESET_10:
                BattleCam_BoomLength = 200;
                BattleCam_BoomPitch = 8;
                BattleCam_MoveTimeLeft = 20;
                BattleCam_BoomZOffset = 15;
                BattleCam_BoomYaw = 0;
                BattleCam_ModeY = BTL_CAM_MODEY_1;
                BattleCam_ModeX = BTL_CAM_MODEX_1;
                preset = &CamPreset_F;
                break;
            case BTL_CAM_PRESET_11:
                BattleCam_BoomLength = 300;
                BattleCam_BoomPitch = 8;
                BattleCam_MoveTimeLeft = 20;
                BattleCam_BoomZOffset = 16;
                BattleCam_BoomYaw = 0;
                BattleCam_ModeY = BTL_CAM_MODEY_1;
                BattleCam_ModeX = BTL_CAM_MODEX_1;
                preset = &CamPreset_F;
                break;
            case BTL_CAM_PRESET_12:
                BattleCam_BoomLength = 400;
                BattleCam_BoomPitch = 8;
                BattleCam_MoveTimeLeft = 20;
                BattleCam_BoomZOffset = 30;
                BattleCam_BoomYaw = 0;
                BattleCam_ModeY = BTL_CAM_MODEY_1;
                BattleCam_ModeX = BTL_CAM_MODEX_1;
                preset = &CamPreset_F;
                break;
            case BTL_CAM_PRESET_13:
                BattleCam_BoomLength = 200;
                BattleCam_BoomPitch = 8;
                BattleCam_MoveTimeLeft = 20;
                BattleCam_BoomZOffset = 15;
                BattleCam_BoomYaw = 0;
                BattleCam_ModeY = BTL_CAM_MODEY_1;
                BattleCam_ModeX = BTL_CAM_MODEX_1;
                preset = &CamPreset_I;
                break;
            case BTL_CAM_PRESET_14:
                BattleCam_BoomLength = 300;
                BattleCam_BoomPitch = 8;
                BattleCam_MoveTimeLeft = 20;
                BattleCam_BoomZOffset = 16;
                BattleCam_BoomYaw = 0;
                BattleCam_ModeY = BTL_CAM_MODEY_1;
                BattleCam_ModeX = BTL_CAM_MODEX_1;
                preset = &CamPreset_I;
                break;
            case BTL_CAM_PRESET_15:
                BattleCam_BoomLength = 400;
                BattleCam_BoomPitch = 8;
                BattleCam_MoveTimeLeft = 20;
                BattleCam_BoomZOffset = 30;
                BattleCam_BoomYaw = 0;
                BattleCam_ModeY = BTL_CAM_MODEY_1;
                BattleCam_ModeX = BTL_CAM_MODEX_1;
                preset = &CamPreset_I;
                break;
            case BTL_CAM_PRESET_16:
                BattleCam_BoomLength = 267;
                BattleCam_BoomPitch = 8;
                BattleCam_MoveTimeLeft = 20;
                BattleCam_BoomYaw = 0;
                BattleCam_BoomZOffset = 23;
                preset = &CamPreset_H;
                break;
            case BTL_CAM_PRESET_17:
                BattleCam_BoomLength = 300;
                BattleCam_BoomYaw = 0;
                BattleCam_BoomPitch = 8;
                BattleCam_MoveTimeLeft = 20;
                BattleCam_BoomZOffset = 8;
                preset = &CamPreset_H;
                break;
            case BTL_CAM_PRESET_18:
                BattleCam_BoomLength = 400;
                BattleCam_BoomPitch = 8;
                BattleCam_BoomYaw = 0;
                BattleCam_MoveTimeLeft = 20;
                BattleCam_BoomZOffset = 0;
                preset = &CamPreset_H;
                break;
            case BTL_CAM_PRESET_19:
                BattleCam_MoveTimeLeft = 20;
                preset = &CamPreset_J;
                break;
            case BTL_CAM_PRESET_20:
                BattleCam_MoveTimeLeft = 20;
                BattleCam_BoomZOffset = 0;
                preset = &CamPreset_K;
                break;
            case BTL_CAM_PRESET_21:
                BattleCam_MoveTimeLeft = 20;
                BattleCam_BoomZOffset = 0;
                preset = &CamPreset_L;
                break;
            case BTL_CAM_PRESET_25:
                BattleCam_BoomLength = 266;
                BattleCam_BoomPitch = 8;
                BattleCam_BoomYaw = 0;
                BattleCam_BoomZOffset = 40;
                btl_cam_set_target_pos(-80.0f, 0.0f, 0.0f);
                BattleCam_MoveTimeLeft = 20;
                BattleCam_TargetActor = ACTOR_PLAYER;
                preset = &CamPreset_J;
                break;
            case BTL_CAM_PRESET_24:
                BattleCam_BoomLength = 250;
                BattleCam_BoomPitch = 8;
                BattleCam_MoveTimeLeft = 20;
                BattleCam_BoomZOffset = 14;
                BattleCam_BoomYaw = 0;
                BattleCam_ModeY = BTL_CAM_MODEY_1;
                BattleCam_ModeX = BTL_CAM_MODEX_1;
                D_8029F2A6 = FALSE;
                BattleCam_TargetActor = ACTOR_PLAYER;
                BattleCam_IsFrozen = TRUE;
                preset = &CamPreset_I;
                break;
            case BTL_CAM_VICTORY:
                BattleCam_BoomLength = 255;
                BattleCam_BoomPitch = 8;
                BattleCam_MoveTimeLeft = 20;
                BattleCam_BoomYaw = 0;
                BattleCam_BoomZOffset = 29;
                BattleCam_ModeY = BTL_CAM_MODEY_0;
                BattleCam_ModeX = BTL_CAM_MODEX_0;
                btl_cam_set_target_pos(-95.0f, 18.0f, 10.0f);
                BattleCam_TargetActor = ACTOR_PLAYER;
                preset = &CamPreset_J;
                break;
            case BTL_CAM_PLAYER_ENTRY:
                BattleCam_BoomLength = 230;
                BattleCam_BoomPitch = 8;
                BattleCam_BoomYaw = 0;
                BattleCam_MoveTimeLeft = 20;
                BattleCam_BoomZOffset = 0;
                BattleCam_TargetActor = ACTOR_PLAYER;
                preset = &CamPreset_J;
                break;
            case BTL_CAM_PLAYER_ATTACK_APPROACH:
                BattleCam_BoomLength = 310;
                BattleCam_BoomPitch = 8;
                BattleCam_MoveTimeLeft = 30;
                BattleCam_BoomZOffset = 16;
                BattleCam_BoomYaw = 0;
                BattleCam_TargetActor = ACTOR_PLAYER;
                BattleCam_ModeY = BTL_CAM_MODEY_1;
                BattleCam_ModeX = BTL_CAM_MODEX_1;
                D_8029F2A6 = FALSE;
                preset = &CamPreset_M;
                break;
            case BTL_CAM_PRESET_27:
                BattleCam_BoomLength = 320;
                BattleCam_BoomPitch = 8;
                BattleCam_MoveTimeLeft = 5;
                BattleCam_BoomYaw = 0;
                BattleCam_BoomZOffset = 0;
                BattleCam_ModeY = BTL_CAM_MODEY_1;
                BattleCam_ModeX = BTL_CAM_MODEX_0;
                D_8029F2A6 = FALSE;
                BattleCam_TargetActor = ACTOR_PLAYER;
                preset = &CamPreset_M;
                break;
            case BTL_CAM_PRESET_28:
                BattleCam_BoomLength = 340;
                BattleCam_BoomPitch = 8;
                BattleCam_MoveTimeLeft = 5;
                BattleCam_BoomYaw = 0;
                BattleCam_BoomZOffset = 0;
                BattleCam_ModeY = BTL_CAM_MODEY_1;
                BattleCam_ModeX = BTL_CAM_MODEX_0;
                BattleCam_TargetActor = ACTOR_PLAYER;
                D_8029F2A6 = FALSE;
                preset = &CamPreset_M;
                break;
            case BTL_CAM_PLAYER_HIT_SPIKE:
            case BTL_CAM_PLAYER_HIT_HAZARD:
                BattleCam_BoomLength = 300;
                BattleCam_BoomPitch = 8;
                BattleCam_MoveTimeLeft = 15;
                BattleCam_BoomZOffset = -32;
                D_8029F2A7 = 20;
                BattleCam_BoomYaw = 0;
                BattleCam_ModeY = BTL_CAM_MODEY_1;
                BattleCam_ModeX = BTL_CAM_MODEX_1;
                BattleCam_TargetActor = ACTOR_PLAYER;
                preset = &CamPreset_I;
                break;
            case BTL_CAM_PLAYER_CHARGE_UP:
                BattleCam_BoomLength = 300;
                BattleCam_BoomPitch = 8;
                BattleCam_BoomYaw = 0;
                BattleCam_MoveTimeLeft = 10;
                BattleCam_BoomZOffset = 10;
                BattleCam_ModeY = BTL_CAM_MODEY_0;
                BattleCam_ModeX = BTL_CAM_MODEX_0;
                BattleCam_PosZ = 0.0f;
                BattleCam_PosX = -65.0f;
                BattleCam_PosY = 30.0f;
                preset = &CamPreset_N;
                break;
            case BTL_CAM_PLAYER_STATUS_AFFLICTED:
                BattleCam_BoomLength = 220;
                BattleCam_BoomPitch = 8;
                BattleCam_MoveTimeLeft = 30;
                BattleCam_BoomZOffset = 24;
                BattleCam_BoomYaw = 0;
                BattleCam_ModeY = BTL_CAM_MODEY_1;
                BattleCam_ModeX = BTL_CAM_MODEX_1;
                D_8029F2A6 = FALSE;
                BattleCam_TargetActor = ACTOR_PLAYER;
                preset = &CamPreset_I;
                break;
            case BTL_CAM_PRESET_34:
                BattleCam_BoomLength = 280;
                BattleCam_BoomPitch = 8;
                BattleCam_MoveTimeLeft = 30;
                BattleCam_BoomZOffset = -4;
                BattleCam_BoomYaw = 0;
                BattleCam_ModeY = BTL_CAM_MODEY_1;
                BattleCam_ModeX = BTL_CAM_MODEX_0;
                BattleCam_TargetActor = ACTOR_PLAYER;
                D_8029F2A6 = FALSE;
                preset = &CamPreset_M;
                break;
            case BTL_CAM_PRESET_35:
                BattleCam_BoomLength = 380;
                BattleCam_BoomPitch = 8;
                BattleCam_MoveTimeLeft = 60;
                BattleCam_BoomYaw = 0;
                BattleCam_BoomZOffset = 0;
                BattleCam_ModeY = BTL_CAM_MODEY_1;
                BattleCam_ModeX = BTL_CAM_MODEX_0;
                BattleCam_UseLinearInterp = TRUE;
                D_8029F2A6 = FALSE;
                BattleCam_TargetActor = ACTOR_PLAYER;
                preset = &CamPreset_M;
                break;
            case BTL_CAM_PRESET_37:
                BattleCam_BoomLength = 320;
                BattleCam_BoomPitch = 8;
                BattleCam_MoveTimeLeft = 30;
                BattleCam_BoomZOffset = -4;
                BattleCam_BoomYaw = 0;
                BattleCam_ModeY = BTL_CAM_MODEY_1;
                BattleCam_ModeX = BTL_CAM_MODEX_0;
                D_8029F2A6 = FALSE;
                BattleCam_TargetActor = ACTOR_PLAYER;
                preset = &CamPreset_M;
                break;
            case BTL_CAM_PRESET_36:
                BattleCam_BoomLength = 300;
                BattleCam_BoomPitch = 8;
                BattleCam_MoveTimeLeft = 60;
                BattleCam_BoomYaw = 0;
                BattleCam_BoomZOffset = 0;
                BattleCam_ModeY = BTL_CAM_MODEY_1;
                BattleCam_ModeX = BTL_CAM_MODEX_0;
                BattleCam_UseLinearInterp = TRUE;
                D_8029F2A6 = FALSE;
                BattleCam_TargetActor = ACTOR_PLAYER;
                preset = &CamPreset_M;
                break;
            case BTL_CAM_PRESET_38:
                BattleCam_BoomLength = 320;
                BattleCam_BoomPitch = 8;
                BattleCam_MoveTimeLeft = 30;
                BattleCam_BoomZOffset = -4;
                BattleCam_BoomYaw = 0;
                BattleCam_ModeY = BTL_CAM_MODEY_1;
                BattleCam_ModeX = BTL_CAM_MODEX_0;
                D_8029F2A6 = FALSE;
                BattleCam_TargetActor = ACTOR_PLAYER;
                preset = &CamPreset_M;
                break;
            case BTL_CAM_PRESET_39:
                BattleCam_BoomLength = 320;
                BattleCam_BoomPitch = 8;
                BattleCam_MoveTimeLeft = 30;
                BattleCam_BoomYaw = 0;
                BattleCam_BoomZOffset = 0;
                BattleCam_ModeY = BTL_CAM_MODEY_1;
                BattleCam_ModeX = BTL_CAM_MODEX_0;
                D_8029F2A6 = FALSE;
                BattleCam_TargetActor = ACTOR_PLAYER;
                preset = &CamPreset_M;
                break;
            case BTL_CAM_PRESET_40:
                BattleCam_BoomLength = 360;
                BattleCam_BoomPitch = 8;
                BattleCam_MoveTimeLeft = 20;
                BattleCam_BoomZOffset = -4;
                BattleCam_BoomYaw = 0;
                BattleCam_ModeY = BTL_CAM_MODEY_1;
                BattleCam_ModeX = BTL_CAM_MODEX_1;
                D_8029F2A6 = FALSE;
                BattleCam_TargetActor = ACTOR_PLAYER;
                preset = &CamPreset_M;
                break;
            case BTL_CAM_PRESET_41:
            case BTL_CAM_PRESET_42:
                BattleCam_BoomLength = 200;
                BattleCam_MoveTimeLeft = 7;
                BattleCam_MoveTimeTotal = 7;
                BattleCam_DoneMoving = FALSE;
                D_8029F2A6 = FALSE;
                preset = BattleCam_ControlScript;
                break;
            case BTL_CAM_PLAYER_AIM_HAMMER:
                BattleCam_BoomLength = 214;
                BattleCam_BoomPitch = 8;
                BattleCam_MoveTimeLeft = 20;
                BattleCam_BoomZOffset = 16;
                BattleCam_ModeY = BTL_CAM_MODEY_MINUS_2;
                BattleCam_BoomYaw = 0;
                BattleCam_TargetActor = ACTOR_PLAYER;
                BattleCam_ModeX = BTL_CAM_MODEX_1;
                D_8029F2A6 = FALSE;
                preset = &CamPreset_M;
                break;
            case BTL_CAM_PLAYER_HAMMER_STRIKE:
                BattleCam_BoomLength = 300;
                BattleCam_BoomPitch = 8;
                BattleCam_MoveTimeLeft = 8;
                BattleCam_BoomZOffset = 16;
                BattleCam_BoomYaw = 0;
                BattleCam_TargetActor = ACTOR_PLAYER;
                BattleCam_ModeY = BTL_CAM_MODEY_0;
                BattleCam_ModeX = BTL_CAM_MODEX_1;
                D_8029F2A6 = FALSE;
                preset = &CamPreset_M;
                break;
            case BTL_CAM_PRESET_45:
                BattleCam_BoomLength = 430;
                BattleCam_BoomPitch = 8;
                BattleCam_MoveTimeLeft = 10;
                BattleCam_BoomYaw = 0;
                BattleCam_BoomZOffset = 16;
                BattleCam_TargetActor = ACTOR_PLAYER;
                BattleCam_ModeY = BTL_CAM_MODEY_0;
                BattleCam_ModeX = BTL_CAM_MODEX_0;
                BattleCam_PosZ = 0.0f;
                BattleCam_PosX = 60.0f;
                BattleCam_PosY = 40.0f;
                preset = &CamPreset_N;
                break;
            case BTL_CAM_PRESET_46:
                BattleCam_BoomLength = 460;
                BattleCam_BoomPitch = 8;
                BattleCam_MoveTimeLeft = 10;
                BattleCam_BoomYaw = 0;
                BattleCam_BoomZOffset = 27;
                BattleCam_TargetActor = ACTOR_PLAYER;
                BattleCam_ModeY = BTL_CAM_MODEY_0;
                BattleCam_PosZ = 0.0f;
                BattleCam_PosX = 60.0f;
                BattleCam_PosY = 40.0f;
                preset = &CamPreset_N;
                break;
            case BTL_CAM_PRESET_70:
                BattleCam_BoomLength = 390;
                BattleCam_BoomPitch = 8;
                BattleCam_BoomYaw = 0;
                BattleCam_BoomZOffset = 45;
                btl_cam_set_target_pos(-70.0f, 0.0f, 0.0f);
                BattleCam_MoveTimeLeft = 10;
                D_8029F2A6 = FALSE;
                preset = &CamPreset_J;
                break;
            case BTL_CAM_PRESET_71:
                BattleCam_BoomLength = 500;
                BattleCam_BoomPitch = 8;
                BattleCam_BoomYaw = 0;
                BattleCam_BoomZOffset = 45;
                btl_cam_set_target_pos(0.0f, 0.0f, 0.0f);
                BattleCam_MoveTimeLeft = 40;
                D_8029F2A6 = FALSE;
                preset = &CamPreset_J;
                break;
            case BTL_CAM_PRESET_69:
            case BTL_CAM_PRESET_72:
                BattleCam_BoomLength = 300;
                BattleCam_BoomPitch = 8;
                BattleCam_BoomYaw = 0;
                BattleCam_BoomZOffset = 45;
                btl_cam_set_target_pos(-50.0f, 0.0f, 0.0f);
                BattleCam_MoveTimeLeft = 20;
                D_8029F2A6 = FALSE;
                preset = &CamPreset_J;
                break;
            case BTL_CAM_PRESET_73:
                BattleCam_BoomLength = 166;
                BattleCam_BoomPitch = 8;
                BattleCam_MoveTimeLeft = 1;
                BattleCam_BoomYaw = 0;
                BattleCam_BoomZOffset = 17;
                BattleCam_ModeY = BTL_CAM_MODEY_0;
                BattleCam_ModeX = BTL_CAM_MODEX_0;
                BattleCam_PosX = -75.0f;
                BattleCam_PosY = 150.0f;
                BattleCam_PosZ = 0.0f;
                preset = &CamPreset_N;
                break;
            case BTL_CAM_PARTNER_APPROACH:
                BattleCam_BoomLength = 310;
                BattleCam_BoomPitch = 8;
                BattleCam_MoveTimeLeft = 30;
                BattleCam_BoomZOffset = 16;
                BattleCam_BoomYaw = 0;
                BattleCam_ModeY = BTL_CAM_MODEY_1;
                BattleCam_ModeX = BTL_CAM_MODEX_1;
                BattleCam_TargetActor = ACTOR_PARTNER;
                D_8029F2A6 = FALSE;
                preset = &CamPreset_M;
                break;
            case BTL_CAM_PRESET_48:
                BattleCam_BoomLength = 250;
                BattleCam_BoomPitch = 8;
                BattleCam_MoveTimeLeft = 120;
                BattleCam_BoomZOffset = 16;
                BattleCam_ModeY = BTL_CAM_MODEY_1;
                BattleCam_ModeX = BTL_CAM_MODEX_1;
                BattleCam_UseLinearInterp = TRUE;
                BattleCam_BoomYaw = 0;
                D_8029F2A6 = FALSE;
                BattleCam_TargetActor = ACTOR_PARTNER;
                preset = &CamPreset_M;
                break;
            case BTL_CAM_PRESET_49:
                BattleCam_BoomLength = 300;
                BattleCam_BoomPitch = 8;
                BattleCam_MoveTimeLeft = 120;
                BattleCam_BoomZOffset = 16;
                BattleCam_ModeY = BTL_CAM_MODEY_1;
                BattleCam_ModeX = BTL_CAM_MODEX_1;
                BattleCam_UseLinearInterp = TRUE;
                BattleCam_BoomYaw = 0;
                D_8029F2A6 = FALSE;
                BattleCam_TargetActor = ACTOR_PARTNER;
                preset = &CamPreset_I;
                break;
            case BTL_CAM_PRESET_50:
                BattleCam_BoomLength = 320;
                BattleCam_BoomPitch = 8;
                BattleCam_MoveTimeLeft = 5;
                BattleCam_ModeY = BTL_CAM_MODEY_1;
                BattleCam_BoomYaw = 0;
                BattleCam_BoomZOffset = 0;
                BattleCam_ModeX = BTL_CAM_MODEX_0;
                BattleCam_TargetActor = ACTOR_PARTNER;
                D_8029F2A6 = FALSE;
                preset = &CamPreset_M;
                break;
            case BTL_CAM_PRESET_29:
            case BTL_CAM_PRESET_51:
                BattleCam_MoveTimeLeft = 50;
                BattleCam_BoomLength = 500;
                BattleCam_BoomZOffset = 0;
                preset = &CamPreset_D;
                break;
            case BTL_CAM_PRESET_52:
                BattleCam_BoomLength = 280;
                BattleCam_BoomPitch = 8;
                BattleCam_MoveTimeLeft = 30;
                BattleCam_BoomZOffset = -4;
                BattleCam_ModeY = BTL_CAM_MODEY_1;
                BattleCam_BoomYaw = 0;
                BattleCam_ModeX = BTL_CAM_MODEX_0;
                D_8029F2A6 = FALSE;
                BattleCam_TargetActor = ACTOR_PARTNER;
                preset = &CamPreset_M;
                break;
            case BTL_CAM_PRESET_53:
                BattleCam_BoomLength = 380;
                BattleCam_BoomPitch = 8;
                BattleCam_MoveTimeLeft = 60;
                BattleCam_ModeY = BTL_CAM_MODEY_1;
                BattleCam_UseLinearInterp = TRUE;
                BattleCam_BoomYaw = 0;
                BattleCam_BoomZOffset = 0;
                BattleCam_ModeX = BTL_CAM_MODEX_0;
                D_8029F2A6 = FALSE;
                BattleCam_TargetActor = ACTOR_PARTNER;
                preset = &CamPreset_M;
                break;
            case BTL_CAM_PARTNER_INJURED:
                BattleCam_BoomLength = 220;
                BattleCam_BoomPitch = 8;
                BattleCam_MoveTimeLeft = 30;
                BattleCam_BoomZOffset = 24;
                BattleCam_ModeY = BTL_CAM_MODEY_1;
                BattleCam_ModeX = BTL_CAM_MODEX_1;
                BattleCam_BoomYaw = 0;
                D_8029F2A6 = FALSE;
                BattleCam_TargetActor = ACTOR_PARTNER;
                preset = &CamPreset_I;
                break;
            case BTL_CAM_PRESET_55:
                BattleCam_BoomLength = 210;
                BattleCam_BoomPitch = 8;
                BattleCam_MoveTimeLeft = 20;
                BattleCam_BoomYaw = 0;
                BattleCam_BoomZOffset = 10;
                BattleCam_ModeY = BTL_CAM_MODEY_0;
                BattleCam_ModeX = BTL_CAM_MODEX_0;
                BattleCam_PosZ = 0.0f;
                BattleCam_PosX = -95.0f;
                BattleCam_PosY = 22.0f;
                preset = &CamPreset_N;
                break;
            case BTL_CAM_PRESET_56:
                BattleCam_BoomLength = 320;
                BattleCam_BoomPitch = 8;
                BattleCam_MoveTimeLeft = 30;
                BattleCam_BoomZOffset = -4;
                BattleCam_ModeY = BTL_CAM_MODEY_1;
                BattleCam_BoomYaw = 0;
                BattleCam_ModeX = BTL_CAM_MODEX_0;
                BattleCam_TargetActor = ACTOR_PARTNER;
                preset = &CamPreset_M;
                break;
            case BTL_CAM_PRESET_57:
                BattleCam_BoomLength = 320;
                BattleCam_BoomPitch = 8;
                BattleCam_MoveTimeLeft = 30;
                BattleCam_ModeY = BTL_CAM_MODEY_1;
                BattleCam_BoomYaw = 0;
                BattleCam_BoomZOffset = 0;
                BattleCam_ModeX = BTL_CAM_MODEX_0;
                BattleCam_TargetActor = ACTOR_PARTNER;
                preset = &CamPreset_M;
                break;
            case BTL_CAM_PRESET_58:
                BattleCam_BoomLength = 400;
                BattleCam_BoomPitch = 8;
                BattleCam_MoveTimeLeft = 30;
                BattleCam_BoomYaw = 0;
                BattleCam_BoomZOffset = 10;
                BattleCam_ModeY = BTL_CAM_MODEY_0;
                BattleCam_ModeX = BTL_CAM_MODEX_0;
                BattleCam_PosZ = 0.0f;
                BattleCam_PosX = 25.0f;
                BattleCam_PosY = 60.0f;
                preset = &CamPreset_N;
                break;
            case BTL_CAM_PRESET_59:
                BattleCam_BoomLength = 200;
                BattleCam_BoomPitch = 8;
                BattleCam_MoveTimeLeft = 60;
                BattleCam_BoomZOffset = 11;
                BattleCam_ModeY = BTL_CAM_MODEY_1;
                BattleCam_ModeX = BTL_CAM_MODEX_1;
                BattleCam_UseLinearInterp = TRUE;
                BattleCam_BoomYaw = 0;
                BattleCam_TargetActor = ACTOR_PARTNER;
                D_8029F2A6 = FALSE;
                preset = &CamPreset_I;
                break;
            case BTL_CAM_PRESET_60:
                BattleCam_BoomLength = 300;
                BattleCam_BoomPitch = 8;
                BattleCam_MoveTimeLeft = 8;
                BattleCam_BoomZOffset = 16;
                BattleCam_BoomYaw = 0;
                BattleCam_TargetActor = ACTOR_PARTNER;
                BattleCam_ModeY = BTL_CAM_MODEY_0;
                BattleCam_ModeX = BTL_CAM_MODEX_0;
                preset = &CamPreset_I;
                break;
            case BTL_CAM_PRESET_61:
            case BTL_CAM_PRESET_62:
                BattleCam_BoomLength = 300;
                BattleCam_BoomPitch = 8;
                BattleCam_MoveTimeLeft = 15;
                BattleCam_BoomZOffset = -32;
                D_8029F2A7 = 20;
                BattleCam_ModeY = BTL_CAM_MODEY_1;
                BattleCam_ModeX = BTL_CAM_MODEX_1;
                BattleCam_BoomYaw = 0;
                BattleCam_TargetActor = ACTOR_PARTNER;
                preset = &CamPreset_I;
                break;
            case BTL_CAM_ENEMY_APPROACH:
                BattleCam_BoomLength = 400;
                BattleCam_BoomPitch = 8;
                BattleCam_MoveTimeLeft = 20;
                BattleCam_BoomZOffset = 27;
                BattleCam_BoomYaw = 0;
                BattleCam_ModeY = BTL_CAM_MODEY_1;
                BattleCam_ModeX = BTL_CAM_MODEX_1;
                preset = &CamPreset_F;
                break;
            case BTL_CAM_PRESET_64:
                BattleCam_BoomLength = 358;
                BattleCam_BoomPitch = 8;
                BattleCam_MoveTimeLeft = 10;
                BattleCam_BoomZOffset = 16;
                BattleCam_BoomYaw = 0;
                BattleCam_ModeY = BTL_CAM_MODEY_1;
                BattleCam_ModeX = BTL_CAM_MODEX_0;
                preset = &CamPreset_F;
                break;
            case BTL_CAM_PRESET_65:
                BattleCam_MoveTimeLeft = 50;
                BattleCam_BoomLength = 500;
                preset = &EVS_BattleCam_Default;
                break;
            case BTL_CAM_PRESET_66:
                BattleCam_BoomLength = 267;
                BattleCam_BoomPitch = 8;
                BattleCam_MoveTimeLeft = 20;
                BattleCam_BoomZOffset = 16;
                BattleCam_BoomYaw = 0;
                BattleCam_ModeY = BTL_CAM_MODEY_1;
                BattleCam_ModeX = BTL_CAM_MODEX_0;
                preset = &CamPreset_F;
                break;
            case BTL_CAM_PRESET_67:
                BattleCam_BoomLength = 214;
                BattleCam_BoomPitch = 8;
                BattleCam_MoveTimeLeft = 20;
                BattleCam_BoomZOffset = 16;
                BattleCam_BoomYaw = 0;
                BattleCam_ModeY = BTL_CAM_MODEY_1;
                BattleCam_ModeX = BTL_CAM_MODEX_1;
                preset = &CamPreset_F;
                break;
            case BTL_CAM_PRESET_68:
                BattleCam_BoomLength = 300;
                BattleCam_BoomPitch = 8;
                BattleCam_MoveTimeLeft = 4;
                BattleCam_BoomZOffset = 16;
                BattleCam_BoomYaw = 0;
                BattleCam_ModeY = BTL_CAM_MODEY_1;
                BattleCam_ModeX = BTL_CAM_MODEX_1;
                preset = &CamPreset_F;
                break;
        }

        BattleCam_CurrentPresetID = id;

        if (battleStatus->camMovementScript != NULL) {
            kill_script_by_ID(battleStatus->camMovementScriptID);
        }

        BattleCam_ControlScript = preset;
        newScript = start_script(preset, EVT_PRIORITY_A, EVT_FLAG_RUN_IMMEDIATELY);
        BattleCam_DoneMoving = FALSE;
        battleStatus->camMovementScript = newScript;
        battleStatus->camMovementScriptID = newScript->id;
    }
}


### RAW ASSEMBLY INSTRUCTIONS:

glabel water_block_appendGfx
/* 3B626C E00B457C 27BDFEF8 */  addiu     $sp, $sp, -0x108
/* 3B6270 E00B4580 0080282D */  daddu     $a1, $a0, $zero
/* 3B6274 E00B4584 3C06DB06 */  lui       $a2, (0xDB060024 >> 16)
/* 3B6278 E00B4588 34C60024 */  ori       $a2, $a2, (0xDB060024 & 0xFFFF)
/* 3B627C E00B458C 27A40020 */  addiu     $a0, $sp, 0x20
/* 3B6280 E00B4590 AFB300BC */  sw        $s3, 0xBC($sp)
/* 3B6284 E00B4594 3C130001 */  lui       $s3, (0x11630 >> 16)
/* 3B6288 E00B4598 36731630 */  ori       $s3, $s3, (0x11630 & 0xFFFF)
/* 3B628C E00B459C AFB600C8 */  sw        $s6, 0xC8($sp)
/* 3B6290 E00B45A0 3C16E00B */  lui       $s6, %hi(D_E00B4CF0)
/* 3B6294 E00B45A4 26D64CF0 */  addiu     $s6, $s6, %lo(D_E00B4CF0)
/* 3B6298 E00B45A8 AFB100B4 */  sw        $s1, 0xB4($sp)
/* 3B629C E00B45AC 3C11800A */  lui       $s1, %hi(gMainGfxPos)
/* 3B62A0 E00B45B0 2631A66C */  addiu     $s1, $s1, %lo(gMainGfxPos)
/* 3B62A4 E00B45B4 3C02E700 */  lui       $v0, (0xE7000000 >> 16)
/* 3B62A8 E00B45B8 AFBF00D4 */  sw        $ra, 0xD4($sp)
/* 3B62AC E00B45BC AFBE00D0 */  sw        $fp, 0xD0($sp)
/* 3B62B0 E00B45C0 AFB700CC */  sw        $s7, 0xCC($sp)
/* 3B62B4 E00B45C4 AFB500C4 */  sw        $s5, 0xC4($sp)
/* 3B62B8 E00B45C8 AFB400C0 */  sw        $s4, 0xC0($sp)
/* 3B62BC E00B45CC AFB200B8 */  sw        $s2, 0xB8($sp)
/* 3B62C0 E00B45D0 AFB000B0 */  sw        $s0, 0xB0($sp)
/* 3B62C4 E00B45D4 F7BE0100 */  sdc1      $f30, 0x100($sp)
/* 3B62C8 E00B45D8 F7BC00F8 */  sdc1      $f28, 0xF8($sp)
/* 3B62CC E00B45DC F7BA00F0 */  sdc1      $f26, 0xF0($sp)
/* 3B62D0 E00B45E0 F7B800E8 */  sdc1      $f24, 0xE8($sp)
/* 3B62D4 E00B45E4 F7B600E0 */  sdc1      $f22, 0xE0($sp)
/* 3B62D8 E00B45E8 F7B400D8 */  sdc1      $f20, 0xD8($sp)
/* 3B62DC E00B45EC 8E280000 */  lw        $t0, 0x0($s1)
/* 3B62E0 E00B45F0 8CAD000C */  lw        $t5, 0xC($a1)
/* 3B62E4 E00B45F4 0100182D */  daddu     $v1, $t0, $zero
/* 3B62E8 E00B45F8 AFAD00A0 */  sw        $t5, 0xA0($sp)
/* 3B62EC E00B45FC 8DAD0024 */  lw        $t5, 0x24($t5)
/* 3B62F0 E00B4600 25080008 */  addiu     $t0, $t0, 0x8
/* 3B62F4 E00B4604 AFAD00A4 */  sw        $t5, 0xA4($sp)
/* 3B62F8 E00B4608 AC620000 */  sw        $v0, 0x0($v1)
/* 3B62FC E00B460C AC600004 */  sw        $zero, 0x4($v1)
/* 3B6300 E00B4610 AD060000 */  sw        $a2, 0x0($t0)
/* 3B6304 E00B4614 8CA20010 */  lw        $v0, 0x10($a1)
/* 3B6308 E00B4618 0000B82D */  daddu     $s7, $zero, $zero
/* 3B630C E00B461C AE280000 */  sw        $t0, 0x0($s1)
/* 3B6310 E00B4620 8C42001C */  lw        $v0, 0x1C($v0)
/* 3B6314 E00B4624 3C038000 */  lui       $v1, (0x80000000 >> 16)
/* 3B6318 E00B4628 00431021 */  addu      $v0, $v0, $v1
/* 3B631C E00B462C AD020004 */  sw        $v0, 0x4($t0)
/* 3B6320 E00B4630 8FAD00A0 */  lw        $t5, 0xA0($sp)
/* 3B6324 E00B4634 26D5000A */  addiu     $s5, $s6, 0xA
/* 3B6328 E00B4638 8DA50004 */  lw        $a1, 0x4($t5)
/* 3B632C E00B463C 8DA60008 */  lw        $a2, 0x8($t5)
/* 3B6330 E00B4640 8DA7000C */  lw        $a3, 0xC($t5)
/* 3B6334 E00B4644 25080008 */  addiu     $t0, $t0, 0x8
/* 3B6338 E00B4648 0C080108 */  jal       shim_guTranslateF
/* 3B633C E00B464C AE280000 */   sw       $t0, 0x0($s1)
/* 3B6340 E00B4650 27A40020 */  addiu     $a0, $sp, 0x20
/* 3B6344 E00B4654 3C108007 */  lui       $s0, %hi(gMatrixListPos)
/* 3B6348 E00B4658 261041F0 */  addiu     $s0, $s0, %lo(gMatrixListPos)
/* 3B634C E00B465C 3C12800A */  lui       $s2, %hi(gDisplayContext)
/* 3B6350 E00B4660 2652A674 */  addiu     $s2, $s2, %lo(gDisplayContext)
/* 3B6354 E00B4664 96050000 */  lhu       $a1, 0x0($s0)
/* 3B6358 E00B4668 8E420000 */  lw        $v0, 0x0($s2)
/* 3B635C E00B466C 00052980 */  sll       $a1, $a1, 6
/* 3B6360 E00B4670 00B32821 */  addu      $a1, $a1, $s3
/* 3B6364 E00B4674 0C080118 */  jal       shim_guMtxF2L
/* 3B6368 E00B4678 00452821 */   addu     $a1, $v0, $a1
/* 3B636C E00B467C 3C02DA38 */  lui       $v0, (0xDA380002 >> 16)
/* 3B6370 E00B4680 8E240000 */  lw        $a0, 0x0($s1)
/* 3B6374 E00B4684 34420002 */  ori       $v0, $v0, (0xDA380002 & 0xFFFF)
/* 3B6378 E00B4688 0080302D */  daddu     $a2, $a0, $zero
/* 3B637C E00B468C 24840008 */  addiu     $a0, $a0, 0x8
/* 3B6380 E00B4690 248D0008 */  addiu     $t5, $a0, 0x8
/* 3B6384 E00B4694 01A0F02D */  daddu     $fp, $t5, $zero
/* 3B6388 E00B4698 AFAD00A8 */  sw        $t5, 0xA8($sp)
/* 3B638C E00B469C 96050000 */  lhu       $a1, 0x0($s0)
/* 3B6390 E00B46A0 24940017 */  addiu     $s4, $a0, 0x17
/* 3B6394 E00B46A4 AE240000 */  sw        $a0, 0x0($s1)
/* 3B6398 E00B46A8 ACC20000 */  sw        $v0, 0x0($a2)
/* 3B639C E00B46AC 8E430000 */  lw        $v1, 0x0($s2)
/* 3B63A0 E00B46B0 30A2FFFF */  andi      $v0, $a1, 0xFFFF
/* 3B63A4 E00B46B4 00021180 */  sll       $v0, $v0, 6
/* 3B63A8 E00B46B8 00531021 */  addu      $v0, $v0, $s3
/* 3B63AC E00B46BC 00621821 */  addu      $v1, $v1, $v0
/* 3B63B0 E00B46C0 3C02DE01 */  lui       $v0, (0xDE010000 >> 16)
/* 3B63B4 E00B46C4 ACC30004 */  sw        $v1, 0x4($a2)
/* 3B63B8 E00B46C8 AC820000 */  sw        $v0, 0x0($a0)
/* 3B63BC E00B46CC 3C028007 */  lui       $v0, %hi(gGameStatusPtr)
/* 3B63C0 E00B46D0 8C42419C */  lw        $v0, %lo(gGameStatusPtr)($v0)
/* 3B63C4 E00B46D4 24830288 */  addiu     $v1, $a0, 0x288
/* 3B63C8 E00B46D8 AC830004 */  sw        $v1, 0x4($a0)
/* 3B63CC E00B46DC 94420134 */  lhu       $v0, 0x134($v0)
/* 3B63D0 E00B46E0 24A50001 */  addiu     $a1, $a1, 0x1
/* 3B63D4 E00B46E4 A6050000 */  sh        $a1, 0x0($s0)
/* 3B63D8 E00B46E8 AE230000 */  sw        $v1, 0x0($s1)
/* 3B63DC E00B46EC 00028080 */  sll       $s0, $v0, 2
.LE00B46F0:
/* 3B63E0 E00B46F0 82C30000 */  lb        $v1, 0x0($s6)
/* 3B63E4 E00B46F4 4480F000 */  mtc1      $zero, $f30
/* 3B63E8 E00B46F8 00031080 */  sll       $v0, $v1, 2
/* 3B63EC E00B46FC 00431021 */  addu      $v0, $v0, $v1
/* 3B63F0 E00B4700 00021040 */  sll       $v0, $v0, 1
/* 3B63F4 E00B4704 82A3FFF7 */  lb        $v1, -0x9($s5)
/* 3B63F8 E00B4708 4482E000 */  mtc1      $v0, $f28
/* 3B63FC E00B470C 00000000 */  nop
/* 3B6400 E00B4710 4680E720 */  cvt.s.w   $f28, $f28
/* 3B6404 E00B4714 00031080 */  sll       $v0, $v1, 2
/* 3B6408 E00B4718 00431021 */  addu      $v0, $v0, $v1
/* 3B640C E00B471C 00021040 */  sll       $v0, $v0, 1
/* 3B6410 E00B4720 4482C000 */  mtc1      $v0, $f24
/* 3B6414 E00B4724 00000000 */  nop
/* 3B6418 E00B4728 4680C620 */  cvt.s.w   $f24, $f24
/* 3B641C E00B472C 82A3FFF8 */  lb        $v1, -0x8($s5)
/* 3B6420 E00B4730 461EC032 */  c.eq.s    $f24, $f30
/* 3B6424 E00B4734 00031080 */  sll       $v0, $v1, 2
/* 3B6428 E00B4738 00431021 */  addu      $v0, $v0, $v1
/* 3B642C E00B473C 00021040 */  sll       $v0, $v0, 1
/* 3B6430 E00B4740 4482D000 */  mtc1      $v0, $f26
/* 3B6434 E00B4744 00000000 */  nop
/* 3B6438 E00B4748 4680D6A0 */  cvt.s.w   $f26, $f26
/* 3B643C E00B474C 45010052 */  bc1t      .LE00B4898
/* 3B6440 E00B4750 00000000 */   nop
/* 3B6444 E00B4754 3C014120 */  lui       $at, (0x41200000 >> 16)
/* 3B6448 E00B4758 44813000 */  mtc1      $at, $f6
/* 3B644C E00B475C 00000000 */  nop
/* 3B6450 E00B4760 4606C002 */  mul.s     $f0, $f24, $f6
/* 3B6454 E00B4764 00000000 */  nop
/* 3B6458 E00B4768 3C0142C8 */  lui       $at, (0x42C80000 >> 16)
/* 3B645C E00B476C 44813000 */  mtc1      $at, $f6
/* 3B6460 E00B4770 00000000 */  nop
/* 3B6464 E00B4774 4606D082 */  mul.s     $f2, $f26, $f6
/* 3B6468 E00B4778 00000000 */  nop
/* 3B646C E00B477C 4600E000 */  add.s     $f0, $f28, $f0
/* 3B6470 E00B4780 46020000 */  add.s     $f0, $f0, $f2
/* 3B6474 E00B4784 4600018D */  trunc.w.s $f6, $f0
/* 3B6478 E00B4788 44053000 */  mfc1      $a1, $f6
/* 3B647C E00B478C 0C080011 */  jal       func_E0200044
/* 3B6480 E00B4790 240403E8 */   addiu    $a0, $zero, 0x3E8
/* 3B6484 E00B4794 02021021 */  addu      $v0, $s0, $v0
/* 3B6488 E00B4798 44826000 */  mtc1      $v0, $f12
/* 3B648C E00B479C 00000000 */  nop
/* 3B6490 E00B47A0 0C080140 */  jal       shim_sin_deg
/* 3B6494 E00B47A4 46806320 */   cvt.s.w  $f12, $f12
/* 3B6498 E00B47A8 3C014120 */  lui       $at, (0x41200000 >> 16)
/* 3B649C E00B47AC 44813000 */  mtc1      $at, $f6
/* 3B64A0 E00B47B0 00000000 */  nop
/* 3B64A4 E00B47B4 4606E102 */  mul.s     $f4, $f28, $f6
/* 3B64A8 E00B47B8 00000000 */  nop
/* 3B64AC E00B47BC 3C0142C8 */  lui       $at, (0x42C80000 >> 16)
/* 3B64B0 E00B47C0 44813000 */  mtc1      $at, $f6
/* 3B64B4 E00B47C4 00000000 */  nop
/* 3B64B8 E00B47C8 4606C082 */  mul.s     $f2, $f24, $f6
/* 3B64BC E00B47CC 00000000 */  nop
/* 3B64C0 E00B47D0 46022100 */  add.s     $f4, $f4, $f2
/* 3B64C4 E00B47D4 461A2100 */  add.s     $f4, $f4, $f26
/* 3B64C8 E00B47D8 4600218D */  trunc.w.s $f6, $f4
/* 3B64CC E00B47DC 44053000 */  mfc1      $a1, $f6
/* 3B64D0 E00B47E0 3C0141A0 */  lui       $at, (0x41A00000 >> 16)
/* 3B64D4 E00B47E4 44813000 */  mtc1      $at, $f6
/* 3B64D8 E00B47E8 00000000 */  nop
/* 3B64DC E00B47EC 46060582 */  mul.s     $f22, $f0, $f6
/* 3B64E0 E00B47F0 00000000 */  nop
/* 3B64E4 E00B47F4 0C080011 */  jal       func_E0200044
/* 3B64E8 E00B47F8 240403E8 */   addiu    $a0, $zero, 0x3E8
/* 3B64EC E00B47FC 02021021 */  addu      $v0, $s0, $v0
/* 3B64F0 E00B4800 44826000 */  mtc1      $v0, $f12
/* 3B64F4 E00B4804 00000000 */  nop
/* 3B64F8 E00B4808 0C080140 */  jal       shim_sin_deg
/* 3B64FC E00B480C 46806320 */   cvt.s.w  $f12, $f12
/* 3B6500 E00B4810 3C0142C8 */  lui       $at, (0x42C80000 >> 16)
/* 3B6504 E00B4814 44813000 */  mtc1      $at, $f6
/* 3B6508 E00B4818 00000000 */  nop
/* 3B650C E00B481C 4606E082 */  mul.s     $f2, $f28, $f6
/* 3B6510 E00B4820 00000000 */  nop
/* 3B6514 E00B4824 3C014120 */  lui       $at, (0x41200000 >> 16)
/* 3B6518 E00B4828 44813000 */  mtc1      $at, $f6
/* 3B651C E00B482C 00000000 */  nop
/* 3B6520 E00B4830 4606D102 */  mul.s     $f4, $f26, $f6
/* 3B6524 E00B4834 00000000 */  nop
/* 3B6528 E00B4838 46181080 */  add.s     $f2, $f2, $f24
/* 3B652C E00B483C 46041080 */  add.s     $f2, $f2, $f4
/* 3B6530 E00B4840 4600118D */  trunc.w.s $f6, $f2
/* 3B6534 E00B4844 44053000 */  mfc1      $a1, $f6
/* 3B6538 E00B4848 3C0141A0 */  lui       $at, (0x41A00000 >> 16)
/* 3B653C E00B484C 44813000 */  mtc1      $at, $f6
/* 3B6540 E00B4850 00000000 */  nop
/* 3B6544 E00B4854 46060502 */  mul.s     $f20, $f0, $f6
/* 3B6548 E00B4858 00000000 */  nop
/* 3B654C E00B485C 0C080011 */  jal       func_E0200044
/* 3B6550 E00B4860 240403E8 */   addiu    $a0, $zero, 0x3E8
/* 3B6554 E00B4864 02021021 */  addu      $v0, $s0, $v0
/* 3B6558 E00B4868 44826000 */  mtc1      $v0, $f12
/* 3B655C E00B486C 00000000 */  nop
/* 3B6560 E00B4870 0C080140 */  jal       shim_sin_deg
/* 3B6564 E00B4874 46806320 */   cvt.s.w  $f12, $f12
/* 3B6568 E00B4878 3C0141A0 */  lui       $at, (0x41A00000 >> 16)
/* 3B656C E00B487C 44813000 */  mtc1      $at, $f6
/* 3B6570 E00B4880 00000000 */  nop
/* 3B6574 E00B4884 46060002 */  mul.s     $f0, $f0, $f6
/* 3B6578 E00B4888 00000000 */  nop
/* 3B657C E00B488C 4616E700 */  add.s     $f28, $f28, $f22
/* 3B6580 E00B4890 4614C600 */  add.s     $f24, $f24, $f20
/* 3B6584 E00B4894 4600D680 */  add.s     $f26, $f26, $f0
.LE00B4898:
/* 3B6588 E00B4898 4600E18D */  trunc.w.s $f6, $f28
/* 3B658C E00B489C 44023000 */  mfc1      $v0, $f6
/* 3B6590 E00B48A0 00000000 */  nop
/* 3B6594 E00B48A4 A7C20000 */  sh        $v0, 0x0($fp)
/* 3B6598 E00B48A8 4600C18D */  trunc.w.s $f6, $f24
/* 3B659C E00B48AC 44023000 */  mfc1      $v0, $f6
/* 3B65A0 E00B48B0 00000000 */  nop
/* 3B65A4 E00B48B4 A682FFF3 */  sh        $v0, -0xD($s4)
/* 3B65A8 E00B48B8 4600D18D */  trunc.w.s $f6, $f26
/* 3B65AC E00B48BC 44023000 */  mfc1      $v0, $f6
/* 3B65B0 E00B48C0 00000000 */  nop
/* 3B65B4 E00B48C4 A682FFF5 */  sh        $v0, -0xB($s4)
/* 3B65B8 E00B48C8 96A2FFFA */  lhu       $v0, -0x6($s5)
/* 3B65BC E00B48CC A682FFF9 */  sh        $v0, -0x7($s4)
/* 3B65C0 E00B48D0 96A2FFFC */  lhu       $v0, -0x4($s5)
/* 3B65C4 E00B48D4 26F70001 */  addiu     $s7, $s7, 0x1
/* 3B65C8 E00B48D8 A682FFFB */  sh        $v0, -0x5($s4)
/* 3B65CC E00B48DC 92A2FFFE */  lbu       $v0, -0x2($s5)
/* 3B65D0 E00B48E0 26D6000C */  addiu     $s6, $s6, 0xC
/* 3B65D4 E00B48E4 A282FFFD */  sb        $v0, -0x3($s4)
/* 3B65D8 E00B48E8 92A2FFFF */  lbu       $v0, -0x1($s5)
/* 3B65DC E00B48EC 27DE0010 */  addiu     $fp, $fp, 0x10
/* 3B65E0 E00B48F0 A282FFFE */  sb        $v0, -0x2($s4)
/* 3B65E4 E00B48F4 92A30000 */  lbu       $v1, 0x0($s5)
/* 3B65E8 E00B48F8 26B5000C */  addiu     $s5, $s5, 0xC
/* 3B65EC E00B48FC 24020050 */  addiu     $v0, $zero, 0x50
/* 3B65F0 E00B4900 A2820000 */  sb        $v0, 0x0($s4)
/* 3B65F4 E00B4904 2AE20028 */  slti      $v0, $s7, 0x28
/* 3B65F8 E00B4908 A283FFFF */  sb        $v1, -0x1($s4)
/* 3B65FC E00B490C 1440FF78 */  bnez      $v0, .LE00B46F0
/* 3B6600 E00B4910 26940010 */   addiu    $s4, $s4, 0x10
/* 3B6604 E00B4914 27A40020 */  addiu     $a0, $sp, 0x20
/* 3B6608 E00B4918 3C100001 */  lui       $s0, (0x11630 >> 16)
/* 3B660C E00B491C 36101630 */  ori       $s0, $s0, (0x11630 & 0xFFFF)
/* 3B6610 E00B4920 0000B82D */  daddu     $s7, $zero, $zero
/* 3B6614 E00B4924 4600F506 */  mov.s     $f20, $f30
/* 3B6618 E00B4928 3C02800A */  lui       $v0, %hi(gDisplayContext)
/* 3B661C E00B492C 2442A674 */  addiu     $v0, $v0, %lo(gDisplayContext)
/* 3B6620 E00B4930 0040A82D */  daddu     $s5, $v0, $zero
/* 3B6624 E00B4934 3C028007 */  lui       $v0, %hi(gMatrixListPos)
/* 3B6628 E00B4938 244241F0 */  addiu     $v0, $v0, %lo(gMatrixListPos)
/* 3B662C E00B493C 0040982D */  daddu     $s3, $v0, $zero
/* 3B6630 E00B4940 3C013DCC */  lui       $at, (0x3DCCCCCD >> 16)
/* 3B6634 E00B4944 3421CCCD */  ori       $at, $at, (0x3DCCCCCD & 0xFFFF)
/* 3B6638 E00B4948 44810000 */  mtc1      $at, $f0
/* 3B663C E00B494C 3C140001 */  lui       $s4, (0x11630 >> 16)
/* 3B6640 E00B4950 44050000 */  mfc1      $a1, $f0
/* 3B6644 E00B4954 8FB100A0 */  lw        $s1, 0xA0($sp)
/* 3B6648 E00B4958 00A0302D */  daddu     $a2, $a1, $zero
/* 3B664C E00B495C 0C080110 */  jal       shim_guScaleF
/* 3B6650 E00B4960 00A0382D */   daddu    $a3, $a1, $zero
/* 3B6654 E00B4964 27A40020 */  addiu     $a0, $sp, 0x20
/* 3B6658 E00B4968 96650000 */  lhu       $a1, 0x0($s3)
/* 3B665C E00B496C 8EA20000 */  lw        $v0, 0x0($s5)
/* 3B6660 E00B4970 00052980 */  sll       $a1, $a1, 6
/* 3B6664 E00B4974 00B02821 */  addu      $a1, $a1, $s0
/* 3B6668 E00B4978 0C080118 */  jal       shim_guMtxF2L
/* 3B666C E00B497C 00452821 */   addu     $a1, $v0, $a1
/* 3B6670 E00B4980 3C02800A */  lui       $v0, %hi(gMainGfxPos)
/* 3B6674 E00B4984 2442A66C */  addiu     $v0, $v0, %lo(gMainGfxPos)
/* 3B6678 E00B4988 8C440000 */  lw        $a0, 0x0($v0)
/* 3B667C E00B498C 0040902D */  daddu     $s2, $v0, $zero
/* 3B6680 E00B4990 0080282D */  daddu     $a1, $a0, $zero
/* 3B6684 E00B4994 24840008 */  addiu     $a0, $a0, 0x8
/* 3B6688 E00B4998 AE440000 */  sw        $a0, 0x0($s2)
/* 3B668C E00B499C 96620000 */  lhu       $v0, 0x0($s3)
/* 3B6690 E00B49A0 3C03DA38 */  lui       $v1, (0xDA380000 >> 16)
/* 3B6694 E00B49A4 ACA30000 */  sw        $v1, 0x0($a1)
/* 3B6698 E00B49A8 24430001 */  addiu     $v1, $v0, 0x1
/* 3B669C E00B49AC 3042FFFF */  andi      $v0, $v0, 0xFFFF
/* 3B66A0 E00B49B0 00021180 */  sll       $v0, $v0, 6
/* 3B66A4 E00B49B4 A6630000 */  sh        $v1, 0x0($s3)
/* 3B66A8 E00B49B8 8EA30000 */  lw        $v1, 0x0($s5)
/* 3B66AC E00B49BC 00501021 */  addu      $v0, $v0, $s0
/* 3B66B0 E00B49C0 00621821 */  addu      $v1, $v1, $v0
/* 3B66B4 E00B49C4 24820008 */  addiu     $v0, $a0, 0x8
/* 3B66B8 E00B49C8 ACA30004 */  sw        $v1, 0x4($a1)
/* 3B66BC E00B49CC AE420000 */  sw        $v0, 0x0($s2)
/* 3B66C0 E00B49D0 3C02FB00 */  lui       $v0, (0xFB000000 >> 16)
/* 3B66C4 E00B49D4 AC820000 */  sw        $v0, 0x0($a0)
/* 3B66C8 E00B49D8 8FAD00A0 */  lw        $t5, 0xA0($sp)
/* 3B66CC E00B49DC 36941630 */  ori       $s4, $s4, (0x11630 & 0xFFFF)
/* 3B66D0 E00B49E0 91A3002B */  lbu       $v1, 0x2B($t5)
/* 3B66D4 E00B49E4 24820010 */  addiu     $v0, $a0, 0x10
/* 3B66D8 E00B49E8 AE420000 */  sw        $v0, 0x0($s2)
/* 3B66DC E00B49EC 3C02FA00 */  lui       $v0, (0xFA000000 >> 16)
/* 3B66E0 E00B49F0 AC820008 */  sw        $v0, 0x8($a0)
/* 3B66E4 E00B49F4 8FAD00A4 */  lw        $t5, 0xA4($sp)
/* 3B66E8 E00B49F8 2402FF00 */  addiu     $v0, $zero, -0x100
/* 3B66EC E00B49FC 01A21025 */  or        $v0, $t5, $v0
/* 3B66F0 E00B4A00 AC82000C */  sw        $v0, 0xC($a0)
/* 3B66F4 E00B4A04 24820018 */  addiu     $v0, $a0, 0x18
/* 3B66F8 E00B4A08 AE420000 */  sw        $v0, 0x0($s2)
/* 3B66FC E00B4A0C 3C02DE00 */  lui       $v0, (0xDE000000 >> 16)
/* 3B6700 E00B4A10 AC820010 */  sw        $v0, 0x10($a0)
/* 3B6704 E00B4A14 3C020900 */  lui       $v0, %hi(D_090003B0_415410)
/* 3B6708 E00B4A18 244203B0 */  addiu     $v0, $v0, %lo(D_090003B0_415410)
/* 3B670C E00B4A1C 3463FF00 */  ori       $v1, $v1, 0xFF00
/* 3B6710 E00B4A20 AC820014 */  sw        $v0, 0x14($a0)
/* 3B6714 E00B4A24 AC830004 */  sw        $v1, 0x4($a0)
.LE00B4A28:
/* 3B6718 E00B4A28 8E220088 */  lw        $v0, 0x88($s1)
/* 3B671C E00B4A2C 04420032 */  bltzl     $v0, .LE00B4AF8
/* 3B6720 E00B4A30 26F70001 */   addiu    $s7, $s7, 0x1
/* 3B6724 E00B4A34 C6200078 */  lwc1      $f0, 0x78($s1)
/* 3B6728 E00B4A38 4405A000 */  mfc1      $a1, $f20
/* 3B672C E00B4A3C 4406A000 */  mfc1      $a2, $f20
/* 3B6730 E00B4A40 4407A000 */  mfc1      $a3, $f20
/* 3B6734 E00B4A44 E7A00010 */  swc1      $f0, 0x10($sp)
/* 3B6738 E00B4A48 C6200038 */  lwc1      $f0, 0x38($s1)
/* 3B673C E00B4A4C E7A00014 */  swc1      $f0, 0x14($sp)
/* 3B6740 E00B4A50 C6200048 */  lwc1      $f0, 0x48($s1)
/* 3B6744 E00B4A54 27A40020 */  addiu     $a0, $sp, 0x20
/* 3B6748 E00B4A58 E7B4001C */  swc1      $f20, 0x1C($sp)
/* 3B674C E00B4A5C 0C080180 */  jal       shim_guPositionF
/* 3B6750 E00B4A60 E7A00018 */   swc1     $f0, 0x18($sp)
/* 3B6754 E00B4A64 27A40020 */  addiu     $a0, $sp, 0x20
/* 3B6758 E00B4A68 96650000 */  lhu       $a1, 0x0($s3)
/* 3B675C E00B4A6C 8EA20000 */  lw        $v0, 0x0($s5)
/* 3B6760 E00B4A70 00052980 */  sll       $a1, $a1, 6
/* 3B6764 E00B4A74 00B42821 */  addu      $a1, $a1, $s4
/* 3B6768 E00B4A78 0C080118 */  jal       shim_guMtxF2L
/* 3B676C E00B4A7C 00452821 */   addu     $a1, $v0, $a1
/* 3B6770 E00B4A80 3C06D838 */  lui       $a2, (0xD8380002 >> 16)
/* 3B6774 E00B4A84 8E440000 */  lw        $a0, 0x0($s2)
/* 3B6778 E00B4A88 34C60002 */  ori       $a2, $a2, (0xD8380002 & 0xFFFF)
/* 3B677C E00B4A8C 0080282D */  daddu     $a1, $a0, $zero
/* 3B6780 E00B4A90 24840008 */  addiu     $a0, $a0, 0x8
/* 3B6784 E00B4A94 AE440000 */  sw        $a0, 0x0($s2)
/* 3B6788 E00B4A98 96620000 */  lhu       $v0, 0x0($s3)
/* 3B678C E00B4A9C 3C03DA38 */  lui       $v1, (0xDA380000 >> 16)
/* 3B6790 E00B4AA0 ACA30000 */  sw        $v1, 0x0($a1)
/* 3B6794 E00B4AA4 24430001 */  addiu     $v1, $v0, 0x1
/* 3B6798 E00B4AA8 3042FFFF */  andi      $v0, $v0, 0xFFFF
/* 3B679C E00B4AAC 00021180 */  sll       $v0, $v0, 6
/* 3B67A0 E00B4AB0 A6630000 */  sh        $v1, 0x0($s3)
/* 3B67A4 E00B4AB4 8EA30000 */  lw        $v1, 0x0($s5)
/* 3B67A8 E00B4AB8 00541021 */  addu      $v0, $v0, $s4
/* 3B67AC E00B4ABC 00621821 */  addu      $v1, $v1, $v0
/* 3B67B0 E00B4AC0 24820008 */  addiu     $v0, $a0, 0x8
/* 3B67B4 E00B4AC4 ACA30004 */  sw        $v1, 0x4($a1)
/* 3B67B8 E00B4AC8 AE420000 */  sw        $v0, 0x0($s2)
/* 3B67BC E00B4ACC 3C02DE00 */  lui       $v0, (0xDE000000 >> 16)
/* 3B67C0 E00B4AD0 AC820000 */  sw        $v0, 0x0($a0)
/* 3B67C4 E00B4AD4 3C020900 */  lui       $v0, %hi(D_090004A0_415500)
/* 3B67C8 E00B4AD8 244204A0 */  addiu     $v0, $v0, %lo(D_090004A0_415500)
/* 3B67CC E00B4ADC AC820004 */  sw        $v0, 0x4($a0)
/* 3B67D0 E00B4AE0 24820010 */  addiu     $v0, $a0, 0x10
/* 3B67D4 E00B4AE4 AE420000 */  sw        $v0, 0x0($s2)
/* 3B67D8 E00B4AE8 24020040 */  addiu     $v0, $zero, 0x40
/* 3B67DC E00B4AEC AC860008 */  sw        $a2, 0x8($a0)
/* 3B67E0 E00B4AF0 AC82000C */  sw        $v0, 0xC($a0)
/* 3B67E4 E00B4AF4 26F70001 */  addiu     $s7, $s7, 0x1
.LE00B4AF8:
/* 3B67E8 E00B4AF8 2AE20004 */  slti      $v0, $s7, 0x4
/* 3B67EC E00B4AFC 1440FFCA */  bnez      $v0, .LE00B4A28
/* 3B67F0 E00B4B00 26310004 */   addiu    $s1, $s1, 0x4
/* 3B67F4 E00B4B04 3C04800A */  lui       $a0, %hi(gMainGfxPos)
/* 3B67F8 E00B4B08 2484A66C */  addiu     $a0, $a0, %lo(gMainGfxPos)
/* 3B67FC E00B4B0C 3C02DE00 */  lui       $v0, (0xDE000000 >> 16)
/* 3B6800 E00B4B10 8C830000 */  lw        $v1, 0x0($a0)
/* 3B6804 E00B4B14 3C01E00B */  lui       $at, (0xE00B4EF8 >> 16)
/* 3B6808 E00B4B18 D4224EF8 */  ldc1      $f2, (0xE00B4EF8 & 0xFFFF)($at)
/* 3B680C E00B4B1C 0060282D */  daddu     $a1, $v1, $zero
/* 3B6810 E00B4B20 24630008 */  addiu     $v1, $v1, 0x8
/* 3B6814 E00B4B24 AC830000 */  sw        $v1, 0x0($a0)
/* 3B6818 E00B4B28 ACA20000 */  sw        $v0, 0x0($a1)
/* 3B681C E00B4B2C C7A000A4 */  lwc1      $f0, 0xA4($sp)
/* 3B6820 E00B4B30 46800021 */  cvt.d.w   $f0, $f0
/* 3B6824 E00B4B34 3C020900 */  lui       $v0, %hi(D_09000300_415360)
/* 3B6828 E00B4B38 24420300 */  addiu     $v0, $v0, %lo(D_09000300_415360)
/* 3B682C E00B4B3C ACA20004 */  sw        $v0, 0x4($a1)
/* 3B6830 E00B4B40 24620008 */  addiu     $v0, $v1, 0x8
/* 3B6834 E00B4B44 AC820000 */  sw        $v0, 0x0($a0)
/* 3B6838 E00B4B48 3C02FA00 */  lui       $v0, (0xFA000000 >> 16)
/* 3B683C E00B4B4C 246C0004 */  addiu     $t4, $v1, 0x4
/* 3B6840 E00B4B50 46220002 */  mul.d     $f0, $f0, $f2
/* 3B6844 E00B4B54 00000000 */  nop
/* 3B6848 E00B4B58 AC620000 */  sw        $v0, 0x0($v1)
/* 3B684C E00B4B5C 8FAD00A0 */  lw        $t5, 0xA0($sp)
/* 3B6850 E00B4B60 3C0141E0 */  lui       $at, (0x41E00000 >> 16)
/* 3B6854 E00B4B64 44811800 */  mtc1      $at, $f3
/* 3B6858 E00B4B68 44801000 */  mtc1      $zero, $f2
/* 3B685C E00B4B6C 91A4001B */  lbu       $a0, 0x1B($t5)
/* 3B6860 E00B4B70 91A3001F */  lbu       $v1, 0x1F($t5)
/* 3B6864 E00B4B74 91A20023 */  lbu       $v0, 0x23($t5)
/* 3B6868 E00B4B78 00042600 */  sll       $a0, $a0, 24
/* 3B686C E00B4B7C 00031C00 */  sll       $v1, $v1, 16
/* 3B6870 E00B4B80 00832025 */  or        $a0, $a0, $v1
/* 3B6874 E00B4B84 00021200 */  sll       $v0, $v0, 8
/* 3B6878 E00B4B88 4620103E */  c.le.d    $f2, $f0
/* 3B687C E00B4B8C 00000000 */  nop
/* 3B6880 E00B4B90 45010005 */  bc1t      .LE00B4BA8
/* 3B6884 E00B4B94 00825825 */   or       $t3, $a0, $v0
/* 3B6888 E00B4B98 4620018D */  trunc.w.d $f6, $f0
/* 3B688C E00B4B9C 440A3000 */  mfc1      $t2, $f6
/* 3B6890 E00B4BA0 0802D2F1 */  j         .LE00B4BC4
/* 3B6894 E00B4BA4 3C05D9FF */   lui      $a1, (0xD9FFF9FF >> 16)
.LE00B4BA8:
/* 3B6898 E00B4BA8 46220001 */  sub.d     $f0, $f0, $f2
/* 3B689C E00B4BAC 3C028000 */  lui       $v0, (0x80000000 >> 16)
/* 3B68A0 E00B4BB0 4620018D */  trunc.w.d $f6, $f0
/* 3B68A4 E00B4BB4 440A3000 */  mfc1      $t2, $f6
/* 3B68A8 E00B4BB8 00000000 */  nop
/* 3B68AC E00B4BBC 01425025 */  or        $t2, $t2, $v0
/* 3B68B0 E00B4BC0 3C05D9FF */  lui       $a1, (0xD9FFF9FF >> 16)
.LE00B4BC4:
/* 3B68B4 E00B4BC4 34A5F9FF */  ori       $a1, $a1, (0xD9FFF9FF & 0xFFFF)
/* 3B68B8 E00B4BC8 3C06D9FF */  lui       $a2, (0xD9FFFFFF >> 16)
/* 3B68BC E00B4BCC 34C6FFFF */  ori       $a2, $a2, (0xD9FFFFFF & 0xFFFF)
/* 3B68C0 E00B4BD0 3C070101 */  lui       $a3, (0x101E03C >> 16)
/* 3B68C4 E00B4BD4 34E7E03C */  ori       $a3, $a3, (0x101E03C & 0xFFFF)
/* 3B68C8 E00B4BD8 3C090100 */  lui       $t1, (0x100C018 >> 16)
/* 3B68CC E00B4BDC 3529C018 */  ori       $t1, $t1, (0x100C018 & 0xFFFF)
/* 3B68D0 E00B4BE0 3C08D838 */  lui       $t0, (0xD8380002 >> 16)
/* 3B68D4 E00B4BE4 35080002 */  ori       $t0, $t0, (0xD8380002 & 0xFFFF)
/* 3B68D8 E00B4BE8 3C04800A */  lui       $a0, %hi(gMainGfxPos)
/* 3B68DC E00B4BEC 2484A66C */  addiu     $a0, $a0, %lo(gMainGfxPos)
/* 3B68E0 E00B4BF0 314200FF */  andi      $v0, $t2, 0xFF
/* 3B68E4 E00B4BF4 8C830000 */  lw        $v1, 0x0($a0)
/* 3B68E8 E00B4BF8 01621025 */  or        $v0, $t3, $v0
/* 3B68EC E00B4BFC AD820000 */  sw        $v0, 0x0($t4)
/* 3B68F0 E00B4C00 0060102D */  daddu     $v0, $v1, $zero
/* 3B68F4 E00B4C04 24630008 */  addiu     $v1, $v1, 0x8
/* 3B68F8 E00B4C08 AC830000 */  sw        $v1, 0x0($a0)
/* 3B68FC E00B4C0C AC450000 */  sw        $a1, 0x0($v0)
/* 3B6900 E00B4C10 AC400004 */  sw        $zero, 0x4($v0)
/* 3B6904 E00B4C14 24620008 */  addiu     $v0, $v1, 0x8
/* 3B6908 E00B4C18 AC820000 */  sw        $v0, 0x0($a0)
/* 3B690C E00B4C1C 24020400 */  addiu     $v0, $zero, 0x400
/* 3B6910 E00B4C20 AC620004 */  sw        $v0, 0x4($v1)
/* 3B6914 E00B4C24 24620010 */  addiu     $v0, $v1, 0x10
/* 3B6918 E00B4C28 AC660000 */  sw        $a2, 0x0($v1)
/* 3B691C E00B4C2C AC820000 */  sw        $v0, 0x0($a0)
/* 3B6920 E00B4C30 24620018 */  addiu     $v0, $v1, 0x18
/* 3B6924 E00B4C34 AC670008 */  sw        $a3, 0x8($v1)
/* 3B6928 E00B4C38 8FAD00A8 */  lw        $t5, 0xA8($sp)
/* 3B692C E00B4C3C 3C05DE00 */  lui       $a1, (0xDE000000 >> 16)
/* 3B6930 E00B4C40 AC6D000C */  sw        $t5, 0xC($v1)
/* 3B6934 E00B4C44 AC820000 */  sw        $v0, 0x0($a0)
/* 3B6938 E00B4C48 3C020900 */  lui       $v0, %hi(D_090004D8_415538)
/* 3B693C E00B4C4C 244204D8 */  addiu     $v0, $v0, %lo(D_090004D8_415538)
/* 3B6940 E00B4C50 AC620014 */  sw        $v0, 0x14($v1)
/* 3B6944 E00B4C54 24620020 */  addiu     $v0, $v1, 0x20
/* 3B6948 E00B4C58 AC650010 */  sw        $a1, 0x10($v1)
/* 3B694C E00B4C5C AC820000 */  sw        $v0, 0x0($a0)
/* 3B6950 E00B4C60 AC690018 */  sw        $t1, 0x18($v1)
/* 3B6954 E00B4C64 25A201C0 */  addiu     $v0, $t5, 0x1C0
/* 3B6958 E00B4C68 AC62001C */  sw        $v0, 0x1C($v1)
/* 3B695C E00B4C6C 24620028 */  addiu     $v0, $v1, 0x28
/* 3B6960 E00B4C70 AC820000 */  sw        $v0, 0x0($a0)
/* 3B6964 E00B4C74 3C020900 */  lui       $v0, %hi(D_09000538_415598)
/* 3B6968 E00B4C78 24420538 */  addiu     $v0, $v0, %lo(D_09000538_415598)
/* 3B696C E00B4C7C AC620024 */  sw        $v0, 0x24($v1)
/* 3B6970 E00B4C80 24620030 */  addiu     $v0, $v1, 0x30
/* 3B6974 E00B4C84 AC650020 */  sw        $a1, 0x20($v1)
/* 3B6978 E00B4C88 24050040 */  addiu     $a1, $zero, 0x40
/* 3B697C E00B4C8C AC820000 */  sw        $v0, 0x0($a0)
/* 3B6980 E00B4C90 24620038 */  addiu     $v0, $v1, 0x38
/* 3B6984 E00B4C94 AC680028 */  sw        $t0, 0x28($v1)
/* 3B6988 E00B4C98 AC65002C */  sw        $a1, 0x2C($v1)
/* 3B698C E00B4C9C AC820000 */  sw        $v0, 0x0($a0)
/* 3B6990 E00B4CA0 AC680030 */  sw        $t0, 0x30($v1)
/* 3B6994 E00B4CA4 AC650034 */  sw        $a1, 0x34($v1)
/* 3B6998 E00B4CA8 8FBF00D4 */  lw        $ra, 0xD4($sp)
/* 3B699C E00B4CAC 8FBE00D0 */  lw        $fp, 0xD0($sp)
/* 3B69A0 E00B4CB0 8FB700CC */  lw        $s7, 0xCC($sp)
/* 3B69A4 E00B4CB4 8FB600C8 */  lw        $s6, 0xC8($sp)
/* 3B69A8 E00B4CB8 8FB500C4 */  lw        $s5, 0xC4($sp)
/* 3B69AC E00B4CBC 8FB400C0 */  lw        $s4, 0xC0($sp)
/* 3B69B0 E00B4CC0 8FB300BC */  lw        $s3, 0xBC($sp)
/* 3B69B4 E00B4CC4 8FB200B8 */  lw        $s2, 0xB8($sp)
/* 3B69B8 E00B4CC8 8FB100B4 */  lw        $s1, 0xB4($sp)
/* 3B69BC E00B4CCC 8FB000B0 */  lw        $s0, 0xB0($sp)
/* 3B69C0 E00B4CD0 D7BE0100 */  ldc1      $f30, 0x100($sp)
/* 3B69C4 E00B4CD4 D7BC00F8 */  ldc1      $f28, 0xF8($sp)
/* 3B69C8 E00B4CD8 D7BA00F0 */  ldc1      $f26, 0xF0($sp)
/* 3B69CC E00B4CDC D7B800E8 */  ldc1      $f24, 0xE8($sp)
/* 3B69D0 E00B4CE0 D7B600E0 */  ldc1      $f22, 0xE0($sp)
/* 3B69D4 E00B4CE4 D7B400D8 */  ldc1      $f20, 0xD8($sp)
/* 3B69D8 E00B4CE8 03E00008 */  jr        $ra
/* 3B69DC E00B4CEC 27BD0108 */   addiu    $sp, $sp, 0x108

### DECOMPILED C INSTRUCTIONS:

void water_block_appendGfx(void *effect) {
    Matrix4f sp20;
    Matrix4f sp60;
    WaterBlockFXData* data = ((EffectInstance*)effect)->data.waterBlock;
    s32 spA4 = data->unk_24;
    Vtx* spA8;
    EffectInstance* effectTemp = effect;
    WaterBlockVtxData* var_s6;
    Vtx* var_fp;
    s32 temp_s0;
    s32 i;

    gDPPipeSync(gMainGfxPos++);
    gSPSegment(gMainGfxPos++, 0x09, VIRTUAL_TO_PHYSICAL(effectTemp->graphics->data));
    shim_guTranslateF(sp20, data->pos.x, data->pos.y, data->pos.z);
    shim_guMtxF2L(sp20, &gDisplayContext->matrixStack[gMatrixListPos]);

    gSPMatrix(gMainGfxPos++, &gDisplayContext->matrixStack[gMatrixListPos++], G_MTX_PUSH | G_MTX_LOAD | G_MTX_MODELVIEW);

    gSPBranchList(gMainGfxPos, &gMainGfxPos[81]);
    spA8 = (Vtx*)++gMainGfxPos;
    gMainGfxPos = &gMainGfxPos[80];

    temp_s0 = gGameStatusPtr->frameCounter * 4;

    for (var_s6 = D_E00B4CF0, i = 0, var_fp = spA8; i < 40; i++, var_s6++, var_fp++) {
        f32 x = var_s6->unk_00 * 10;
        f32 y = var_s6->unk_01 * 10;
        f32 z = var_s6->unk_02 * 10;

        if (y != 0.0f) {
            f32 dx = shim_sin_deg(temp_s0 + func_E0200044(1000, (x + (y * 10.0f) + (z * 100.0f)))) * 20.0f;
            f32 dy = shim_sin_deg(temp_s0 + func_E0200044(1000, ((x * 10.0f) + (y * 100.0f) + z))) * 20.0f;
            f32 dz = shim_sin_deg(temp_s0 + func_E0200044(1000, ((x * 100.0f) + y + (z * 10.0f)))) * 20.0f;
            x += dx;
            y += dy;
            z += dz;
        }

        var_fp->v.ob[0] = x;
        var_fp->v.ob[1] = y;
        var_fp->v.ob[2] = z;

        var_fp->v.tc[0] = var_s6->unk_04;
        var_fp->v.tc[1] = var_s6->unk_06;

        var_fp->v.cn[0] = var_s6->unk_08;
        var_fp->v.cn[1] = var_s6->unk_09;
        var_fp->v.cn[2] = var_s6->unk_0A;
        var_fp->v.cn[3] = 80;
    }

    shim_guScaleF(sp20, 0.1f, 0.1f, 0.1f);
    shim_guMtxF2L(sp20, &gDisplayContext->matrixStack[gMatrixListPos]);

    gSPMatrix(gMainGfxPos++, &gDisplayContext->matrixStack[gMatrixListPos++], G_MTX_PUSH | G_MTX_MUL | G_MTX_MODELVIEW);
    gDPSetEnvColor(gMainGfxPos++, 0, 0, 255, data->unk_28);
    gDPSetPrimColor(gMainGfxPos++, 0, 0, 255, 255, 255, spA4);
    gSPDisplayList(gMainGfxPos++, D_090003B0_3B6FA0);

    for (i = 0; i < NUM_WATER_BLOCK_COMPONENTS; i++) {
        if (data->unk_88[i] >= 0) {
            shim_guPositionF(sp20, 0.0f, 0.0f, 0.0f, data->unk_78[i], data->unk_38[i], data->unk_48[i], 0.0f);
            shim_guMtxF2L(sp20, &gDisplayContext->matrixStack[gMatrixListPos]);
            gSPMatrix(gMainGfxPos++, &gDisplayContext->matrixStack[gMatrixListPos++], G_MTX_PUSH | G_MTX_MUL | G_MTX_MODELVIEW);
            gSPDisplayList(gMainGfxPos++, D_090004A0_3B7090);
            gSPPopMatrix(gMainGfxPos++, G_MTX_MODELVIEW);
        }
    }

    gSPDisplayList(gMainGfxPos++, D_09000300_3B6EF0);
    gDPSetPrimColor(gMainGfxPos++, 0, 0, data->unk_18, data->unk_1C, data->unk_20, spA4 * 0.3);
    gSPClearGeometryMode(gMainGfxPos++, G_CULL_BOTH);
    gSPSetGeometryMode(gMainGfxPos++, G_CULL_BACK);

    gSPVertex(gMainGfxPos++, spA8, 30, 0);

    gSPDisplayList(gMainGfxPos++, D_090004D8_3B70C8);

    gSPVertex(gMainGfxPos++, &spA8[28], 12, 0);

    gSPDisplayList(gMainGfxPos++, D_09000538_3B7128)
    gSPPopMatrix(gMainGfxPos++, G_MTX_MODELVIEW);
    gSPPopMatrix(gMainGfxPos++, G_MTX_MODELVIEW);
}


### RAW ASSEMBLY INSTRUCTIONS:

glabel msg_draw_speech_arrow
/* C3ADC 8012D3DC 27BDFF58 */  addiu     $sp, $sp, -0xA8
/* C3AE0 8012D3E0 AFB10064 */  sw        $s1, 0x64($sp)
/* C3AE4 8012D3E4 0080882D */  daddu     $s1, $a0, $zero
/* C3AE8 8012D3E8 0000282D */  daddu     $a1, $zero, $zero
/* C3AEC 8012D3EC AFBF0084 */  sw        $ra, 0x84($sp)
/* C3AF0 8012D3F0 AFBE0080 */  sw        $fp, 0x80($sp)
/* C3AF4 8012D3F4 AFB7007C */  sw        $s7, 0x7C($sp)
/* C3AF8 8012D3F8 AFB60078 */  sw        $s6, 0x78($sp)
/* C3AFC 8012D3FC AFB50074 */  sw        $s5, 0x74($sp)
/* C3B00 8012D400 AFB40070 */  sw        $s4, 0x70($sp)
/* C3B04 8012D404 AFB3006C */  sw        $s3, 0x6C($sp)
/* C3B08 8012D408 AFB20068 */  sw        $s2, 0x68($sp)
/* C3B0C 8012D40C AFB00060 */  sw        $s0, 0x60($sp)
/* C3B10 8012D410 F7BA00A0 */  sdc1      $f26, 0xA0($sp)
/* C3B14 8012D414 F7B80098 */  sdc1      $f24, 0x98($sp)
/* C3B18 8012D418 F7B60090 */  sdc1      $f22, 0x90($sp)
/* C3B1C 8012D41C F7B40088 */  sdc1      $f20, 0x88($sp)
/* C3B20 8012D420 96230456 */  lhu       $v1, 0x456($s1)
/* C3B24 8012D424 9622045A */  lhu       $v0, 0x45A($s1)
/* C3B28 8012D428 96240458 */  lhu       $a0, 0x458($s1)
/* C3B2C 8012D42C 00623021 */  addu      $a2, $v1, $v0
/* C3B30 8012D430 9622045C */  lhu       $v0, 0x45C($s1)
/* C3B34 8012D434 9623050E */  lhu       $v1, 0x50E($s1)
/* C3B38 8012D438 106001B7 */  beqz      $v1, .L8012DB18
/* C3B3C 8012D43C 00822021 */   addu     $a0, $a0, $v0
/* C3B40 8012D440 92220508 */  lbu       $v0, 0x508($s1)
/* C3B44 8012D444 2442FFFF */  addiu     $v0, $v0, -0x1
/* C3B48 8012D448 2C420003 */  sltiu     $v0, $v0, 0x3
/* C3B4C 8012D44C 14400004 */  bnez      $v0, .L8012D460
/* C3B50 8012D450 24020003 */   addiu    $v0, $zero, 0x3
/* C3B54 8012D454 9223053C */  lbu       $v1, 0x53C($s1)
/* C3B58 8012D458 14620005 */  bne       $v1, $v0, .L8012D470
/* C3B5C 8012D45C 00000000 */   nop
.L8012D460:
/* C3B60 8012D460 96220516 */  lhu       $v0, 0x516($s1)
/* C3B64 8012D464 00821021 */  addu      $v0, $a0, $v0
/* C3B68 8012D468 0804B51F */  j         .L8012D47C
/* C3B6C 8012D46C 2454FFFC */   addiu    $s4, $v0, -0x4
.L8012D470:
/* C3B70 8012D470 96220516 */  lhu       $v0, 0x516($s1)
/* C3B74 8012D474 00821021 */  addu      $v0, $a0, $v0
/* C3B78 8012D478 2454FFFD */  addiu     $s4, $v0, -0x3
.L8012D47C:
/* C3B7C 8012D47C 92230508 */  lbu       $v1, 0x508($s1)
/* C3B80 8012D480 24020002 */  addiu     $v0, $zero, 0x2
/* C3B84 8012D484 14620003 */  bne       $v1, $v0, .L8012D494
/* C3B88 8012D488 24020003 */   addiu    $v0, $zero, 0x3
/* C3B8C 8012D48C 0804B52C */  j         .L8012D4B0
/* C3B90 8012D490 0000282D */   daddu    $a1, $zero, $zero
.L8012D494:
/* C3B94 8012D494 50620006 */  beql      $v1, $v0, .L8012D4B0
/* C3B98 8012D498 24050001 */   addiu    $a1, $zero, 0x1
/* C3B9C 8012D49C 9622050E */  lhu       $v0, 0x50E($s1)
/* C3BA0 8012D4A0 2C4200A0 */  sltiu     $v0, $v0, 0xA0
/* C3BA4 8012D4A4 14400003 */  bnez      $v0, .L8012D4B4
/* C3BA8 8012D4A8 30A200FF */   andi     $v0, $a1, 0xFF
/* C3BAC 8012D4AC 24050001 */  addiu     $a1, $zero, 0x1
.L8012D4B0:
/* C3BB0 8012D4B0 30A200FF */  andi      $v0, $a1, 0xFF
.L8012D4B4:
/* C3BB4 8012D4B4 10400056 */  beqz      $v0, .L8012D610
/* C3BB8 8012D4B8 00000000 */   nop
/* C3BBC 8012D4BC 96220514 */  lhu       $v0, 0x514($s1)
/* C3BC0 8012D4C0 3C018015 */  lui       $at, %hi(D_80150A08)
/* C3BC4 8012D4C4 D4200A08 */  ldc1      $f0, %lo(D_80150A08)($at)
/* C3BC8 8012D4C8 44821000 */  mtc1      $v0, $f2
/* C3BCC 8012D4CC 00000000 */  nop
/* C3BD0 8012D4D0 468010A0 */  cvt.s.w   $f2, $f2
/* C3BD4 8012D4D4 460010A1 */  cvt.d.s   $f2, $f2
/* C3BD8 8012D4D8 46201082 */  mul.d     $f2, $f2, $f0
/* C3BDC 8012D4DC 00000000 */  nop
/* C3BE0 8012D4E0 00061400 */  sll       $v0, $a2, 16
/* C3BE4 8012D4E4 00022403 */  sra       $a0, $v0, 16
/* C3BE8 8012D4E8 44840000 */  mtc1      $a0, $f0
/* C3BEC 8012D4EC 00000000 */  nop
/* C3BF0 8012D4F0 46800021 */  cvt.d.w   $f0, $f0
/* C3BF4 8012D4F4 46220000 */  add.d     $f0, $f0, $f2
/* C3BF8 8012D4F8 9623050E */  lhu       $v1, 0x50E($s1)
/* C3BFC 8012D4FC 4620010D */  trunc.w.d $f4, $f0
/* C3C00 8012D500 44022000 */  mfc1      $v0, $f4
/* C3C04 8012D504 00000000 */  nop
/* C3C08 8012D508 0040902D */  daddu     $s2, $v0, $zero
/* C3C0C 8012D50C 00021400 */  sll       $v0, $v0, 16
/* C3C10 8012D510 00021403 */  sra       $v0, $v0, 16
/* C3C14 8012D514 0062182A */  slt       $v1, $v1, $v0
/* C3C18 8012D518 10600090 */  beqz      $v1, .L8012D75C
/* C3C1C 8012D51C 00141400 */   sll      $v0, $s4, 16
/* C3C20 8012D520 4484D000 */  mtc1      $a0, $f26
/* C3C24 8012D524 00000000 */  nop
/* C3C28 8012D528 4680D6A0 */  cvt.s.w   $f26, $f26
/* C3C2C 8012D52C 00029C03 */  sra       $s3, $v0, 16
/* C3C30 8012D530 3C013F33 */  lui       $at, (0x3F333333 >> 16)
/* C3C34 8012D534 34213333 */  ori       $at, $at, (0x3F333333 & 0xFFFF)
/* C3C38 8012D538 4481A000 */  mtc1      $at, $f20
/* C3C3C 8012D53C 3C018015 */  lui       $at, %hi(D_80150A10)
/* C3C40 8012D540 D4380A10 */  ldc1      $f24, %lo(D_80150A10)($at)
/* C3C44 8012D544 3C018015 */  lui       $at, %hi(D_80150A18)
/* C3C48 8012D548 D4360A18 */  ldc1      $f22, %lo(D_80150A18)($at)
.L8012D54C:
/* C3C4C 8012D54C 96220514 */  lhu       $v0, 0x514($s1)
/* C3C50 8012D550 44820000 */  mtc1      $v0, $f0
/* C3C54 8012D554 00000000 */  nop
/* C3C58 8012D558 46800020 */  cvt.s.w   $f0, $f0
/* C3C5C 8012D55C 46140002 */  mul.s     $f0, $f0, $f20
/* C3C60 8012D560 00000000 */  nop
/* C3C64 8012D564 44932000 */  mtc1      $s3, $f4
/* C3C68 8012D568 00000000 */  nop
/* C3C6C 8012D56C 46802120 */  cvt.s.w   $f4, $f4
/* C3C70 8012D570 44072000 */  mfc1      $a3, $f4
/* C3C74 8012D574 9622050E */  lhu       $v0, 0x50E($s1)
/* C3C78 8012D578 4600D000 */  add.s     $f0, $f26, $f0
/* C3C7C 8012D57C 96230510 */  lhu       $v1, 0x510($s1)
/* C3C80 8012D580 44826000 */  mtc1      $v0, $f12
/* C3C84 8012D584 00000000 */  nop
/* C3C88 8012D588 46806320 */  cvt.s.w   $f12, $f12
/* C3C8C 8012D58C 4600010D */  trunc.w.s $f4, $f0
/* C3C90 8012D590 44022000 */  mfc1      $v0, $f4
/* C3C94 8012D594 00000000 */  nop
/* C3C98 8012D598 0040902D */  daddu     $s2, $v0, $zero
/* C3C9C 8012D59C 00021400 */  sll       $v0, $v0, 16
/* C3CA0 8012D5A0 00021403 */  sra       $v0, $v0, 16
/* C3CA4 8012D5A4 44822000 */  mtc1      $v0, $f4
/* C3CA8 8012D5A8 00000000 */  nop
/* C3CAC 8012D5AC 46802120 */  cvt.s.w   $f4, $f4
/* C3CB0 8012D5B0 44062000 */  mfc1      $a2, $f4
/* C3CB4 8012D5B4 44837000 */  mtc1      $v1, $f14
/* C3CB8 8012D5B8 00000000 */  nop
/* C3CBC 8012D5BC 0C00A720 */  jal       atan2
/* C3CC0 8012D5C0 468073A0 */   cvt.s.w  $f14, $f14
/* C3CC4 8012D5C4 4600010D */  trunc.w.s $f4, $f0
/* C3CC8 8012D5C8 44102000 */  mfc1      $s0, $f4
/* C3CCC 8012D5CC 00000000 */  nop
/* C3CD0 8012D5D0 06010002 */  bgez      $s0, .L8012D5DC
/* C3CD4 8012D5D4 0200102D */   daddu    $v0, $s0, $zero
/* C3CD8 8012D5D8 00021023 */  negu      $v0, $v0
.L8012D5DC:
/* C3CDC 8012D5DC 2842002D */  slti      $v0, $v0, 0x2D
/* C3CE0 8012D5E0 1440005F */  bnez      $v0, .L8012D760
/* C3CE4 8012D5E4 00121400 */   sll      $v0, $s2, 16
/* C3CE8 8012D5E8 4600A021 */  cvt.d.s   $f0, $f20
/* C3CEC 8012D5EC 46380001 */  sub.d     $f0, $f0, $f24
/* C3CF0 8012D5F0 46200520 */  cvt.s.d   $f20, $f0
/* C3CF4 8012D5F4 4600A021 */  cvt.d.s   $f0, $f20
/* C3CF8 8012D5F8 4620B03E */  c.le.d    $f22, $f0
/* C3CFC 8012D5FC 00000000 */  nop
/* C3D00 8012D600 45000058 */  bc1f      .L8012D764
/* C3D04 8012D604 00021403 */   sra      $v0, $v0, 16
/* C3D08 8012D608 0804B553 */  j         .L8012D54C
/* C3D0C 8012D60C 00000000 */   nop
.L8012D610:
/* C3D10 8012D610 96220514 */  lhu       $v0, 0x514($s1)
/* C3D14 8012D614 3C018015 */  lui       $at, %hi(D_80150A20)
/* C3D18 8012D618 D4200A20 */  ldc1      $f0, %lo(D_80150A20)($at)
/* C3D1C 8012D61C 44821000 */  mtc1      $v0, $f2
/* C3D20 8012D620 00000000 */  nop
/* C3D24 8012D624 468010A0 */  cvt.s.w   $f2, $f2
/* C3D28 8012D628 460010A1 */  cvt.d.s   $f2, $f2
/* C3D2C 8012D62C 46201082 */  mul.d     $f2, $f2, $f0
/* C3D30 8012D630 00000000 */  nop
/* C3D34 8012D634 00061400 */  sll       $v0, $a2, 16
/* C3D38 8012D638 00022403 */  sra       $a0, $v0, 16
/* C3D3C 8012D63C 44840000 */  mtc1      $a0, $f0
/* C3D40 8012D640 00000000 */  nop
/* C3D44 8012D644 46800021 */  cvt.d.w   $f0, $f0
/* C3D48 8012D648 46220000 */  add.d     $f0, $f0, $f2
/* C3D4C 8012D64C 9623050E */  lhu       $v1, 0x50E($s1)
/* C3D50 8012D650 4620010D */  trunc.w.d $f4, $f0
/* C3D54 8012D654 44022000 */  mfc1      $v0, $f4
/* C3D58 8012D658 00000000 */  nop
/* C3D5C 8012D65C 0040902D */  daddu     $s2, $v0, $zero
/* C3D60 8012D660 00021400 */  sll       $v0, $v0, 16
/* C3D64 8012D664 00021403 */  sra       $v0, $v0, 16
/* C3D68 8012D668 0043102A */  slt       $v0, $v0, $v1
/* C3D6C 8012D66C 1040003B */  beqz      $v0, .L8012D75C
/* C3D70 8012D670 00141400 */   sll      $v0, $s4, 16
/* C3D74 8012D674 4484D000 */  mtc1      $a0, $f26
/* C3D78 8012D678 00000000 */  nop
/* C3D7C 8012D67C 4680D6A0 */  cvt.s.w   $f26, $f26
/* C3D80 8012D680 00029C03 */  sra       $s3, $v0, 16
/* C3D84 8012D684 3C013E99 */  lui       $at, (0x3E99999A >> 16)
/* C3D88 8012D688 3421999A */  ori       $at, $at, (0x3E99999A & 0xFFFF)
/* C3D8C 8012D68C 4481A000 */  mtc1      $at, $f20
/* C3D90 8012D690 3C018015 */  lui       $at, %hi(D_80150A28)
/* C3D94 8012D694 D4380A28 */  ldc1      $f24, %lo(D_80150A28)($at)
/* C3D98 8012D698 3C018015 */  lui       $at, %hi(D_80150A30)
/* C3D9C 8012D69C D4360A30 */  ldc1      $f22, %lo(D_80150A30)($at)
.L8012D6A0:
/* C3DA0 8012D6A0 96220514 */  lhu       $v0, 0x514($s1)
/* C3DA4 8012D6A4 44820000 */  mtc1      $v0, $f0
/* C3DA8 8012D6A8 00000000 */  nop
/* C3DAC 8012D6AC 46800020 */  cvt.s.w   $f0, $f0
/* C3DB0 8012D6B0 46140002 */  mul.s     $f0, $f0, $f20
/* C3DB4 8012D6B4 00000000 */  nop
/* C3DB8 8012D6B8 44932000 */  mtc1      $s3, $f4
/* C3DBC 8012D6BC 00000000 */  nop
/* C3DC0 8012D6C0 46802120 */  cvt.s.w   $f4, $f4
/* C3DC4 8012D6C4 44072000 */  mfc1      $a3, $f4
/* C3DC8 8012D6C8 9622050E */  lhu       $v0, 0x50E($s1)
/* C3DCC 8012D6CC 4600D000 */  add.s     $f0, $f26, $f0
/* C3DD0 8012D6D0 96230510 */  lhu       $v1, 0x510($s1)
/* C3DD4 8012D6D4 44826000 */  mtc1      $v0, $f12
/* C3DD8 8012D6D8 00000000 */  nop
/* C3DDC 8012D6DC 46806320 */  cvt.s.w   $f12, $f12
/* C3DE0 8012D6E0 4600010D */  trunc.w.s $f4, $f0
/* C3DE4 8012D6E4 44022000 */  mfc1      $v0, $f4
/* C3DE8 8012D6E8 00000000 */  nop
/* C3DEC 8012D6EC 0040902D */  daddu     $s2, $v0, $zero
/* C3DF0 8012D6F0 00021400 */  sll       $v0, $v0, 16
/* C3DF4 8012D6F4 00021403 */  sra       $v0, $v0, 16
/* C3DF8 8012D6F8 44822000 */  mtc1      $v0, $f4
/* C3DFC 8012D6FC 00000000 */  nop
/* C3E00 8012D700 46802120 */  cvt.s.w   $f4, $f4
/* C3E04 8012D704 44062000 */  mfc1      $a2, $f4
/* C3E08 8012D708 44837000 */  mtc1      $v1, $f14
/* C3E0C 8012D70C 00000000 */  nop
/* C3E10 8012D710 0C00A720 */  jal       atan2
/* C3E14 8012D714 468073A0 */   cvt.s.w  $f14, $f14
/* C3E18 8012D718 4600010D */  trunc.w.s $f4, $f0
/* C3E1C 8012D71C 44102000 */  mfc1      $s0, $f4
/* C3E20 8012D720 00000000 */  nop
/* C3E24 8012D724 06010002 */  bgez      $s0, .L8012D730
/* C3E28 8012D728 0200102D */   daddu    $v0, $s0, $zero
/* C3E2C 8012D72C 00021023 */  negu      $v0, $v0
.L8012D730:
/* C3E30 8012D730 2842002D */  slti      $v0, $v0, 0x2D
/* C3E34 8012D734 1440000A */  bnez      $v0, .L8012D760
/* C3E38 8012D738 00121400 */   sll      $v0, $s2, 16
/* C3E3C 8012D73C 4600A021 */  cvt.d.s   $f0, $f20
/* C3E40 8012D740 46380000 */  add.d     $f0, $f0, $f24
/* C3E44 8012D744 46200520 */  cvt.s.d   $f20, $f0
/* C3E48 8012D748 4600A021 */  cvt.d.s   $f0, $f20
/* C3E4C 8012D74C 4636003E */  c.le.d    $f0, $f22
/* C3E50 8012D750 00000000 */  nop
/* C3E54 8012D754 4501FFD2 */  bc1t      .L8012D6A0
/* C3E58 8012D758 00000000 */   nop
.L8012D75C:
/* C3E5C 8012D75C 00121400 */  sll       $v0, $s2, 16
.L8012D760:
/* C3E60 8012D760 00021403 */  sra       $v0, $v0, 16
.L8012D764:
/* C3E64 8012D764 4482C000 */  mtc1      $v0, $f24
/* C3E68 8012D768 00000000 */  nop
/* C3E6C 8012D76C 4680C620 */  cvt.s.w   $f24, $f24
/* C3E70 8012D770 00141400 */  sll       $v0, $s4, 16
/* C3E74 8012D774 0002B403 */  sra       $s6, $v0, 16
/* C3E78 8012D778 4496B000 */  mtc1      $s6, $f22
/* C3E7C 8012D77C 00000000 */  nop
/* C3E80 8012D780 4680B5A0 */  cvt.s.w   $f22, $f22
/* C3E84 8012D784 4406C000 */  mfc1      $a2, $f24
/* C3E88 8012D788 4407B000 */  mfc1      $a3, $f22
/* C3E8C 8012D78C 8622050A */  lh        $v0, 0x50A($s1)
/* C3E90 8012D790 8623050C */  lh        $v1, 0x50C($s1)
/* C3E94 8012D794 44826000 */  mtc1      $v0, $f12
/* C3E98 8012D798 00000000 */  nop
/* C3E9C 8012D79C 46806320 */  cvt.s.w   $f12, $f12
/* C3EA0 8012D7A0 44837000 */  mtc1      $v1, $f14
/* C3EA4 8012D7A4 00000000 */  nop
/* C3EA8 8012D7A8 468073A0 */  cvt.s.w   $f14, $f14
/* C3EAC 8012D7AC 0C00A7B5 */  jal       dist2D
/* C3EB0 8012D7B0 2655FFF7 */   addiu    $s5, $s2, -0x9
/* C3EB4 8012D7B4 4600010D */  trunc.w.s $f4, $f0
/* C3EB8 8012D7B8 44172000 */  mfc1      $s7, $f4
/* C3EBC 8012D7BC 26520009 */  addiu     $s2, $s2, 0x9
/* C3EC0 8012D7C0 2AE2000A */  slti      $v0, $s7, 0xA
/* C3EC4 8012D7C4 144000D4 */  bnez      $v0, .L8012DB18
/* C3EC8 8012D7C8 AFB20050 */   sw       $s2, 0x50($sp)
/* C3ECC 8012D7CC 2AE2001A */  slti      $v0, $s7, 0x1A
/* C3ED0 8012D7D0 50400001 */  beql      $v0, $zero, .L8012D7D8
/* C3ED4 8012D7D4 24170019 */   addiu    $s7, $zero, 0x19
.L8012D7D8:
/* C3ED8 8012D7D8 3C028007 */  lui       $v0, %hi(gCurrentDisplayContextIndex)
/* C3EDC 8012D7DC 8C4241F4 */  lw        $v0, %lo(gCurrentDisplayContextIndex)($v0)
/* C3EE0 8012D7E0 3C1E8015 */  lui       $fp, %hi(gMsgArrowQuad2)
/* C3EE4 8012D7E4 27DEC4C0 */  addiu     $fp, $fp, %lo(gMsgArrowQuad2)
/* C3EE8 8012D7E8 10400003 */  beqz      $v0, .L8012D7F8
/* C3EEC 8012D7EC 4600C306 */   mov.s    $f12, $f24
/* C3EF0 8012D7F0 3C1E8015 */  lui       $fp, %hi(gMsgArrowQuad1)
/* C3EF4 8012D7F4 27DEC480 */  addiu     $fp, $fp, %lo(gMsgArrowQuad1)
.L8012D7F8:
/* C3EF8 8012D7F8 8622050A */  lh        $v0, 0x50A($s1)
/* C3EFC 8012D7FC 8623050C */  lh        $v1, 0x50C($s1)
/* C3F00 8012D800 44822000 */  mtc1      $v0, $f4
/* C3F04 8012D804 00000000 */  nop
/* C3F08 8012D808 46802120 */  cvt.s.w   $f4, $f4
/* C3F0C 8012D80C 44062000 */  mfc1      $a2, $f4
/* C3F10 8012D810 44832000 */  mtc1      $v1, $f4
/* C3F14 8012D814 00000000 */  nop
/* C3F18 8012D818 46802120 */  cvt.s.w   $f4, $f4
/* C3F1C 8012D81C 44072000 */  mfc1      $a3, $f4
/* C3F20 8012D820 0C00A720 */  jal       atan2
/* C3F24 8012D824 4600B386 */   mov.s    $f14, $f22
/* C3F28 8012D828 4600010D */  trunc.w.s $f4, $f0
/* C3F2C 8012D82C 44102000 */  mfc1      $s0, $f4
/* C3F30 8012D830 00000000 */  nop
/* C3F34 8012D834 2610FF4C */  addiu     $s0, $s0, -0xB4
/* C3F38 8012D838 06010002 */  bgez      $s0, .L8012D844
/* C3F3C 8012D83C 0200102D */   daddu    $v0, $s0, $zero
/* C3F40 8012D840 00021023 */  negu      $v0, $v0
.L8012D844:
/* C3F44 8012D844 2842004B */  slti      $v0, $v0, 0x4B
/* C3F48 8012D848 104000B3 */  beqz      $v0, .L8012DB18
/* C3F4C 8012D84C 00102400 */   sll      $a0, $s0, 16
/* C3F50 8012D850 0C00A4F5 */  jal       cosine
/* C3F54 8012D854 00042403 */   sra      $a0, $a0, 16
/* C3F58 8012D858 2604005A */  addiu     $a0, $s0, 0x5A
/* C3F5C 8012D85C 00042400 */  sll       $a0, $a0, 16
/* C3F60 8012D860 00042403 */  sra       $a0, $a0, 16
/* C3F64 8012D864 0C00A4F5 */  jal       cosine
/* C3F68 8012D868 46000506 */   mov.s    $f20, $f0
/* C3F6C 8012D86C 3C13E200 */  lui       $s3, (0xE200001C >> 16)
/* C3F70 8012D870 3673001C */  ori       $s3, $s3, (0xE200001C & 0xFFFF)
/* C3F74 8012D874 3C0F0F0A */  lui       $t7, (0xF0A4000 >> 16)
/* C3F78 8012D878 35EF4000 */  ori       $t7, $t7, (0xF0A4000 & 0xFFFF)
/* C3F7C 8012D87C 3C0CFCFF */  lui       $t4, (0xFCFFFFFF >> 16)
/* C3F80 8012D880 358CFFFF */  ori       $t4, $t4, (0xFCFFFFFF & 0xFFFF)
/* C3F84 8012D884 3C0BFFFC */  lui       $t3, (0xFFFCFC7E >> 16)
/* C3F88 8012D888 356BFC7E */  ori       $t3, $t3, (0xFFFCFC7E & 0xFFFF)
/* C3F8C 8012D88C 3C0AE300 */  lui       $t2, (0xE3001201 >> 16)
/* C3F90 8012D890 354A1201 */  ori       $t2, $t2, (0xE3001201 & 0xFFFF)
/* C3F94 8012D894 3C112020 */  lui       $s1, (0x202020FF >> 16)
/* C3F98 8012D898 363120FF */  ori       $s1, $s1, (0x202020FF & 0xFFFF)
/* C3F9C 8012D89C 3C0DFD48 */  lui       $t5, (0xFD480007 >> 16)
/* C3FA0 8012D8A0 35AD0007 */  ori       $t5, $t5, (0xFD480007 & 0xFFFF)
/* C3FA4 8012D8A4 3C12F548 */  lui       $s2, (0xF5480200 >> 16)
/* C3FA8 8012D8A8 36520200 */  ori       $s2, $s2, (0xF5480200 & 0xFFFF)
/* C3FAC 8012D8AC 3C0E0701 */  lui       $t6, (0x7010040 >> 16)
/* C3FB0 8012D8B0 35CE0040 */  ori       $t6, $t6, (0x7010040 & 0xFFFF)
/* C3FB4 8012D8B4 3C190701 */  lui       $t9, (0x701E03C >> 16)
/* C3FB8 8012D8B8 3739E03C */  ori       $t9, $t9, (0x701E03C & 0xFFFF)
/* C3FBC 8012D8BC AFB90054 */  sw        $t9, 0x54($sp)
/* C3FC0 8012D8C0 3C19F540 */  lui       $t9, (0xF5400200 >> 16)
/* C3FC4 8012D8C4 37390200 */  ori       $t9, $t9, (0xF5400200 & 0xFFFF)
/* C3FC8 8012D8C8 AFB90058 */  sw        $t9, 0x58($sp)
/* C3FCC 8012D8CC 3C190001 */  lui       $t9, (0x10040 >> 16)
/* C3FD0 8012D8D0 37390040 */  ori       $t9, $t9, (0x10040 & 0xFFFF)
/* C3FD4 8012D8D4 3C180003 */  lui       $t8, (0x3C03C >> 16)
/* C3FD8 8012D8D8 3718C03C */  ori       $t8, $t8, (0x3C03C & 0xFFFF)
/* C3FDC 8012D8DC 27A40010 */  addiu     $a0, $sp, 0x10
/* C3FE0 8012D8E0 3C140001 */  lui       $s4, (0x11630 >> 16)
/* C3FE4 8012D8E4 3C10800A */  lui       $s0, %hi(gMainGfxPos)
/* C3FE8 8012D8E8 2610A66C */  addiu     $s0, $s0, %lo(gMainGfxPos)
/* C3FEC 8012D8EC 36941630 */  ori       $s4, $s4, (0x11630 & 0xFFFF)
/* C3FF0 8012D8F0 AFB9005C */  sw        $t9, 0x5C($sp)
/* C3FF4 8012D8F4 8E030000 */  lw        $v1, 0x0($s0)
/* C3FF8 8012D8F8 44801000 */  mtc1      $zero, $f2
/* C3FFC 8012D8FC 00161023 */  negu      $v0, $s6
/* C4000 8012D900 A7D50000 */  sh        $s5, 0x0($fp)
/* C4004 8012D904 A7C20002 */  sh        $v0, 0x2($fp)
/* C4008 8012D908 97B90052 */  lhu       $t9, 0x52($sp)
/* C400C 8012D90C A7C20012 */  sh        $v0, 0x12($fp)
/* C4010 8012D910 0060482D */  daddu     $t1, $v1, $zero
/* C4014 8012D914 24630008 */  addiu     $v1, $v1, 0x8
/* C4018 8012D918 24620008 */  addiu     $v0, $v1, 0x8
/* C401C 8012D91C A7D90010 */  sh        $t9, 0x10($fp)
/* C4020 8012D920 AE030000 */  sw        $v1, 0x0($s0)
/* C4024 8012D924 AE020000 */  sw        $v0, 0x0($s0)
/* C4028 8012D928 24620010 */  addiu     $v0, $v1, 0x10
/* C402C 8012D92C 44051000 */  mfc1      $a1, $f2
/* C4030 8012D930 44971000 */  mtc1      $s7, $f2
/* C4034 8012D934 00000000 */  nop
/* C4038 8012D938 468010A0 */  cvt.s.w   $f2, $f2
/* C403C 8012D93C 46141502 */  mul.s     $f20, $f2, $f20
/* C4040 8012D940 00000000 */  nop
/* C4044 8012D944 AE020000 */  sw        $v0, 0x0($s0)
/* C4048 8012D948 24620018 */  addiu     $v0, $v1, 0x18
/* C404C 8012D94C AE020000 */  sw        $v0, 0x0($s0)
/* C4050 8012D950 24620020 */  addiu     $v0, $v1, 0x20
/* C4054 8012D954 46001082 */  mul.s     $f2, $f2, $f0
/* C4058 8012D958 00000000 */  nop
/* C405C 8012D95C AE020000 */  sw        $v0, 0x0($s0)
/* C4060 8012D960 24620028 */  addiu     $v0, $v1, 0x28
/* C4064 8012D964 AE020000 */  sw        $v0, 0x0($s0)
/* C4068 8012D968 24620030 */  addiu     $v0, $v1, 0x30
/* C406C 8012D96C AE020000 */  sw        $v0, 0x0($s0)
/* C4070 8012D970 4614C501 */  sub.s     $f20, $f24, $f20
/* C4074 8012D974 24620038 */  addiu     $v0, $v1, 0x38
/* C4078 8012D978 AE020000 */  sw        $v0, 0x0($s0)
/* C407C 8012D97C 4602B080 */  add.s     $f2, $f22, $f2
/* C4080 8012D980 00A0302D */  daddu     $a2, $a1, $zero
/* C4084 8012D984 4600A10D */  trunc.w.s $f4, $f20
/* C4088 8012D988 44082000 */  mfc1      $t0, $f4
/* C408C 8012D98C 4600110D */  trunc.w.s $f4, $f2
/* C4090 8012D990 44022000 */  mfc1      $v0, $f4
/* C4094 8012D994 00000000 */  nop
/* C4098 8012D998 00021400 */  sll       $v0, $v0, 16
/* C409C 8012D99C 00021403 */  sra       $v0, $v0, 16
/* C40A0 8012D9A0 00021023 */  negu      $v0, $v0
/* C40A4 8012D9A4 A7C80020 */  sh        $t0, 0x20($fp)
/* C40A8 8012D9A8 25080001 */  addiu     $t0, $t0, 0x1
/* C40AC 8012D9AC A7C80030 */  sh        $t0, 0x30($fp)
/* C40B0 8012D9B0 3C08E700 */  lui       $t0, (0xE7000000 >> 16)
/* C40B4 8012D9B4 A7C20022 */  sh        $v0, 0x22($fp)
/* C40B8 8012D9B8 A7C20032 */  sh        $v0, 0x32($fp)
/* C40BC 8012D9BC 24022000 */  addiu     $v0, $zero, 0x2000
/* C40C0 8012D9C0 AD280000 */  sw        $t0, 0x0($t1)
/* C40C4 8012D9C4 AD200004 */  sw        $zero, 0x4($t1)
/* C40C8 8012D9C8 AC620014 */  sw        $v0, 0x14($v1)
/* C40CC 8012D9CC 3C02FA00 */  lui       $v0, (0xFA000000 >> 16)
/* C40D0 8012D9D0 AC620018 */  sw        $v0, 0x18($v1)
/* C40D4 8012D9D4 3C02802F */  lui       $v0, %hi(ui_msg_arrow_png)
/* C40D8 8012D9D8 2442BF70 */  addiu     $v0, $v0, %lo(ui_msg_arrow_png)
/* C40DC 8012D9DC AC730000 */  sw        $s3, 0x0($v1)
/* C40E0 8012D9E0 AC6F0004 */  sw        $t7, 0x4($v1)
/* C40E4 8012D9E4 AC6C0008 */  sw        $t4, 0x8($v1)
/* C40E8 8012D9E8 AC6B000C */  sw        $t3, 0xC($v1)
/* C40EC 8012D9EC AC6A0010 */  sw        $t2, 0x10($v1)
/* C40F0 8012D9F0 AC71001C */  sw        $s1, 0x1C($v1)
/* C40F4 8012D9F4 AC6D0020 */  sw        $t5, 0x20($v1)
/* C40F8 8012D9F8 AC620024 */  sw        $v0, 0x24($v1)
/* C40FC 8012D9FC 3C02E600 */  lui       $v0, (0xE6000000 >> 16)
/* C4100 8012DA00 AC620030 */  sw        $v0, 0x30($v1)
/* C4104 8012DA04 24620040 */  addiu     $v0, $v1, 0x40
/* C4108 8012DA08 AC720028 */  sw        $s2, 0x28($v1)
/* C410C 8012DA0C AC6E002C */  sw        $t6, 0x2C($v1)
/* C4110 8012DA10 AC600034 */  sw        $zero, 0x34($v1)
/* C4114 8012DA14 AE020000 */  sw        $v0, 0x0($s0)
/* C4118 8012DA18 3C02F400 */  lui       $v0, (0xF4000000 >> 16)
/* C411C 8012DA1C AC620038 */  sw        $v0, 0x38($v1)
/* C4120 8012DA20 8FB90054 */  lw        $t9, 0x54($sp)
/* C4124 8012DA24 24620048 */  addiu     $v0, $v1, 0x48
/* C4128 8012DA28 AC79003C */  sw        $t9, 0x3C($v1)
/* C412C 8012DA2C AE020000 */  sw        $v0, 0x0($s0)
/* C4130 8012DA30 24620050 */  addiu     $v0, $v1, 0x50
/* C4134 8012DA34 AC680040 */  sw        $t0, 0x40($v1)
/* C4138 8012DA38 AC600044 */  sw        $zero, 0x44($v1)
/* C413C 8012DA3C AE020000 */  sw        $v0, 0x0($s0)
/* C4140 8012DA40 8FB90058 */  lw        $t9, 0x58($sp)
/* C4144 8012DA44 00A0382D */  daddu     $a3, $a1, $zero
/* C4148 8012DA48 AC790048 */  sw        $t9, 0x48($v1)
/* C414C 8012DA4C 8FB9005C */  lw        $t9, 0x5C($sp)
/* C4150 8012DA50 24620058 */  addiu     $v0, $v1, 0x58
/* C4154 8012DA54 AC79004C */  sw        $t9, 0x4C($v1)
/* C4158 8012DA58 AE020000 */  sw        $v0, 0x0($s0)
/* C415C 8012DA5C 3C02F200 */  lui       $v0, (0xF2000000 >> 16)
/* C4160 8012DA60 AC620050 */  sw        $v0, 0x50($v1)
/* C4164 8012DA64 0C019E40 */  jal       guTranslateF
/* C4168 8012DA68 AC780054 */   sw       $t8, 0x54($v1)
/* C416C 8012DA6C 27A40010 */  addiu     $a0, $sp, 0x10
/* C4170 8012DA70 3C118007 */  lui       $s1, %hi(gMatrixListPos)
/* C4174 8012DA74 263141F0 */  addiu     $s1, $s1, %lo(gMatrixListPos)
/* C4178 8012DA78 3C12800A */  lui       $s2, %hi(gDisplayContext)
/* C417C 8012DA7C 2652A674 */  addiu     $s2, $s2, %lo(gDisplayContext)
/* C4180 8012DA80 96250000 */  lhu       $a1, 0x0($s1)
/* C4184 8012DA84 8E420000 */  lw        $v0, 0x0($s2)
/* C4188 8012DA88 00052980 */  sll       $a1, $a1, 6
/* C418C 8012DA8C 00B42821 */  addu      $a1, $a1, $s4
/* C4190 8012DA90 0C019D40 */  jal       guMtxF2L
/* C4194 8012DA94 00452821 */   addu     $a1, $v0, $a1
/* C4198 8012DA98 3C03DA38 */  lui       $v1, (0xDA380003 >> 16)
/* C419C 8012DA9C 34630003 */  ori       $v1, $v1, (0xDA380003 & 0xFFFF)
/* C41A0 8012DAA0 3C060100 */  lui       $a2, (0x1004008 >> 16)
/* C41A4 8012DAA4 34C64008 */  ori       $a2, $a2, (0x1004008 & 0xFFFF)
/* C41A8 8012DAA8 3C080600 */  lui       $t0, (0x6000402 >> 16)
/* C41AC 8012DAAC 35080402 */  ori       $t0, $t0, (0x6000402 & 0xFFFF)
/* C41B0 8012DAB0 3C070002 */  lui       $a3, (0x20406 >> 16)
/* C41B4 8012DAB4 34E70406 */  ori       $a3, $a3, (0x20406 & 0xFFFF)
/* C41B8 8012DAB8 8E040000 */  lw        $a0, 0x0($s0)
/* C41BC 8012DABC 96220000 */  lhu       $v0, 0x0($s1)
/* C41C0 8012DAC0 0080282D */  daddu     $a1, $a0, $zero
/* C41C4 8012DAC4 24840008 */  addiu     $a0, $a0, 0x8
/* C41C8 8012DAC8 AE040000 */  sw        $a0, 0x0($s0)
/* C41CC 8012DACC ACA30000 */  sw        $v1, 0x0($a1)
/* C41D0 8012DAD0 24430001 */  addiu     $v1, $v0, 0x1
/* C41D4 8012DAD4 3042FFFF */  andi      $v0, $v0, 0xFFFF
/* C41D8 8012DAD8 00021180 */  sll       $v0, $v0, 6
/* C41DC 8012DADC A6230000 */  sh        $v1, 0x0($s1)
/* C41E0 8012DAE0 8E430000 */  lw        $v1, 0x0($s2)
/* C41E4 8012DAE4 00541021 */  addu      $v0, $v0, $s4
/* C41E8 8012DAE8 00621821 */  addu      $v1, $v1, $v0
/* C41EC 8012DAEC 3C028000 */  lui       $v0, (0x80000000 >> 16)
/* C41F0 8012DAF0 00621821 */  addu      $v1, $v1, $v0
/* C41F4 8012DAF4 24820008 */  addiu     $v0, $a0, 0x8
/* C41F8 8012DAF8 ACA30004 */  sw        $v1, 0x4($a1)
/* C41FC 8012DAFC AE020000 */  sw        $v0, 0x0($s0)
/* C4200 8012DB00 24820010 */  addiu     $v0, $a0, 0x10
/* C4204 8012DB04 AC860000 */  sw        $a2, 0x0($a0)
/* C4208 8012DB08 AC9E0004 */  sw        $fp, 0x4($a0)
/* C420C 8012DB0C AE020000 */  sw        $v0, 0x0($s0)
/* C4210 8012DB10 AC880008 */  sw        $t0, 0x8($a0)
/* C4214 8012DB14 AC87000C */  sw        $a3, 0xC($a0)
.L8012DB18:
/* C4218 8012DB18 8FBF0084 */  lw        $ra, 0x84($sp)
/* C421C 8012DB1C 8FBE0080 */  lw        $fp, 0x80($sp)
/* C4220 8012DB20 8FB7007C */  lw        $s7, 0x7C($sp)
/* C4224 8012DB24 8FB60078 */  lw        $s6, 0x78($sp)
/* C4228 8012DB28 8FB50074 */  lw        $s5, 0x74($sp)
/* C422C 8012DB2C 8FB40070 */  lw        $s4, 0x70($sp)
/* C4230 8012DB30 8FB3006C */  lw        $s3, 0x6C($sp)
/* C4234 8012DB34 8FB20068 */  lw        $s2, 0x68($sp)
/* C4238 8012DB38 8FB10064 */  lw        $s1, 0x64($sp)
/* C423C 8012DB3C 8FB00060 */  lw        $s0, 0x60($sp)
/* C4240 8012DB40 D7BA00A0 */  ldc1      $f26, 0xA0($sp)
/* C4244 8012DB44 D7B80098 */  ldc1      $f24, 0x98($sp)
/* C4248 8012DB48 D7B60090 */  ldc1      $f22, 0x90($sp)
/* C424C 8012DB4C D7B40088 */  ldc1      $f20, 0x88($sp)
/* C4250 8012DB50 03E00008 */  jr        $ra
/* C4254 8012DB54 27BD00A8 */   addiu    $sp, $sp, 0xA8

### DECOMPILED C INSTRUCTIONS:

void msg_draw_speech_arrow(MessagePrintState* printer) {
    s16 targetX, targetY;
    f32 windowXpart;
    s32 arrowLength;
    Vtx* quad;
    s32 angle;
    f32 cosAngle, sinAngle;
    Matrix4f sp10;
    s16 x1, x2, x3, x4;
    s32 y1, y2;
    u8 pointRightSide = FALSE;
    s16 windowX = printer->windowOffsetPos.x + printer->windowBasePos.x;
    s16 windowY = printer->windowOffsetPos.y + printer->windowBasePos.y;

    if (printer->openStartPos.x == 0) {
        return;
    }

    if (printer->style == MSG_STYLE_RIGHT ||
        printer->style == MSG_STYLE_LEFT ||
        printer->style == MSG_STYLE_CENTER ||
        printer->maxLinesPerPage == 3) {
        targetY = windowY + printer->windowSize.y - 4;
    } else {
        targetY = windowY + printer->windowSize.y - 3;
    }

    if (printer->style == MSG_STYLE_LEFT) {
        pointRightSide = FALSE;
    } else if (printer->style == MSG_STYLE_CENTER || printer->openStartPos.x >= 160) {
        pointRightSide = TRUE;
    }

    if (pointRightSide) {
        targetX = windowX + (f32)printer->windowSize.x * 0.7;
        if (printer->openStartPos.x < targetX) {
            for (windowXpart = 0.7f; windowXpart >= 0.67; windowXpart -= 0.005) {
                targetX = windowX + printer->windowSize.x * windowXpart;
                angle = atan2(printer->openStartPos.x, printer->openStartPos.y, targetX, targetY);
                if (abs(angle) < 45) {
                    break;
                }
            }
        }
    } else {
        targetX = windowX + (f32)printer->windowSize.x * 0.3;
        if (printer->openStartPos.x > targetX) {
            for (windowXpart = 0.3f; windowXpart <= 0.38; windowXpart += 0.005) {
                targetX = windowX + printer->windowSize.x * windowXpart;
                angle = atan2(printer->openStartPos.x, printer->openStartPos.y, targetX, targetY);
                if (abs(angle) < 45) {
                    break;
                }
            }
        }
    }

    x1 = targetX - 9;
    x2 = targetX + 9;
    x3 = targetX;

    arrowLength = dist2D(printer->initOpenPos.x, printer->initOpenPos.y, targetX, targetY);
    if (arrowLength < 10) {
        return;
    }

    if (arrowLength > 25) {
        arrowLength = 25;
    }

    // alternate quads between frames
    if (gCurrentDisplayContextIndex != 0) {
        quad = gMsgArrowQuad1;
    } else {
        quad = gMsgArrowQuad2;
    }

    angle = atan2(targetX, targetY, printer->initOpenPos.x, printer->initOpenPos.y);
    angle -= 180;
    if (abs(angle) >= 75) {
        return;
    }

    cosAngle = cosine(angle);
    sinAngle = cosine(angle + 90);

    x3 = x3 - arrowLength * cosAngle;
    x4 = x3 + 1;

    y1 = -targetY;
    y2 = -(s16)(targetY + arrowLength * sinAngle);

    quad[0].v.ob[0] = x1;
    quad[0].v.ob[1] = y1;
    quad[1].v.ob[0] = x2;
    quad[1].v.ob[1] = y1;

    quad[2].v.ob[0] = x3;
    quad[2].v.ob[1] = y2;
    quad[3].v.ob[0] = x4;
    quad[3].v.ob[1] = y2;

    gDPPipeSync(gMainGfxPos++);
    gDPSetRenderMode(gMainGfxPos++, G_RM_OPA_SURF, G_RM_OPA_SURF2);
    gDPSetCombineMode(gMainGfxPos++, PM_CC_0F, PM_CC_0F);
    gDPSetTextureFilter(gMainGfxPos++, G_TF_BILERP);
    gDPSetPrimColor(gMainGfxPos++, 0, 0, 32, 32, 32, 255);
    gDPLoadTextureTile_4b(gMainGfxPos++, ui_msg_arrow_png, G_IM_FMT_CI, 16, 0, 0, 0, 15, 15, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, 4, 4, G_TX_NOLOD, G_TX_NOLOD);
    guTranslateF(sp10, 0.0f, 0.0f, 0.0f);
    guMtxF2L(sp10, &gDisplayContext->matrixStack[gMatrixListPos]);
    gSPMatrix(gMainGfxPos++, VIRTUAL_TO_PHYSICAL(&gDisplayContext->matrixStack[gMatrixListPos++]), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
    gSPVertex(gMainGfxPos++, quad, 4, 0);
    gSP2Triangles(gMainGfxPos++, 0, 2, 1, 0, 1, 2, 3, 0);
}