static int Player_actor_request_main_wade(GAME* game, int dir, int priority) {
    if (Player_actor_check_request_main_able(game, mPlayer_INDEX_WADE, priority)) {
        PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game);
        mPlayer_request_wade_c* request_wade_p = &player->requested_main_index_data.wade;

        request_wade_p->dir = dir;
        Player_actor_request_main_index(game, mPlayer_INDEX_WADE, priority);
        return TRUE;
    }

    return FALSE;
}

static int Player_actor_request_main_wade_all(GAME* game, int dir, int priority) {
    return Player_actor_request_main_wade(game, dir, priority) != FALSE;
}

static void Player_actor_setup_main_Wade_common(ACTOR* actorx, GAME* game) {
    PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx;
    mPlayer_request_wade_c* request_wade_p = &player->requested_main_index_data.wade;
    mPlayer_main_wade_c* main_wade_p = &player->main_data.wade;
    xyz_t* pos_p;
    int anim1_idx;
    int part_table_idx;
    int dir;
    GAME_PLAY* play = (GAME_PLAY*)game;
    xyz_t eye_pos;

    Player_actor_setup_main_Wade_other_func1(actorx, game);
    dir = request_wade_p->dir;
    pos_p = &actorx->world.position;
    Player_actor_SetupItem_Base1(actorx, 0, -5.0f, &anim1_idx, &part_table_idx);
    Player_actor_InitAnimation_Base1(actorx, game, mPlayer_ANIM_WAIT1, anim1_idx, 1.0f, 1.0f, 0.5f, -5.0f,
                                     part_table_idx);
    main_wade_p->dir = dir;
    main_wade_p->start_pos = *pos_p;

    Player_actor_Culc_wade_end_pos(pos_p, &main_wade_p->end_pos, dir, 18.00001f);
    main_wade_p->timer = 0.0f;
    Player_actor_setup_main_Base(actorx, game);

    eye_pos = main_wade_p->end_pos;
    eye_pos.y += actorx->eye.position.y - pos_p->y;
    Camera2_request_main_wade(play, &eye_pos, 9, 36.0f);
    Player_actor_setup_main_Wade_other_func2(actorx, game);
}

static void Player_actor_setup_main_Wade(ACTOR* actorx, GAME* game) {
    Player_actor_setup_main_Wade_common(actorx, game);
}

static void Player_actor_settle_main_Wade(ACTOR* actorx, GAME* game) {
    mDemo_End(actorx);
}

static void Player_actor_CulcAnimation_Wade(ACTOR* actorx) {
    f32 last_kf0_current_frame;

    Player_actor_CulcAnimation_Base2(actorx, &last_kf0_current_frame);
}

static void Player_actor_Movement_Wade(ACTOR* actorx) {
    PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx;
    mPlayer_main_wade_c* main_wade_p = &player->main_data.wade;
    xyz_t* start_pos_p = &main_wade_p->start_pos;
    xyz_t* end_pos_p = &main_wade_p->end_pos;
    xyz_t* pos_p = &actorx->world.position;
    f32 timer = main_wade_p->timer;
    f32 percent = get_percent_forAccelBrake(timer, 0.0f, 36.0f, 1.2f, 34.8f);

    pos_p->x = start_pos_p->x + percent * (end_pos_p->x - start_pos_p->x);
    pos_p->y = start_pos_p->y + percent * (end_pos_p->y - start_pos_p->y);
    pos_p->z = start_pos_p->z + percent * (end_pos_p->z - start_pos_p->z);

    Player_actor_Movement_Base_Stop(actorx, FALSE);
}

static void Player_actor_ObjCheck_Wade(ACTOR* actorx, GAME* game) {
    Player_actor_Excute_Corect_forStand(actorx, game);
}

static void Player_actor_BGcheck_Wade(ACTOR* actorx) {
    Player_actor_BGcheck_common_type2(actorx);
}

static int Player_actor_able_request_proc_index_fromWade_common(ACTOR* actorx) {
    PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx;
    mPlayer_main_wade_c* main_wade_p = &player->main_data.wade;
    f32* timer_p = &main_wade_p->timer;

    if (*timer_p > 36.0f) {
        return TRUE;
    }

    *timer_p += 1.0f;
    return FALSE;
}

static void Player_actor_request_proc_index_fromWade(ACTOR* actorx, GAME* game) {
    PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx;
    mPlayer_main_wade_c* main_wade_p = &player->main_data.wade;

    if (Player_actor_able_request_proc_index_fromWade_common(actorx)) {
        Player_actor_SettleRequestMainIndexPriority(actorx);
        Player_actor_request_main_walk_all(game, &main_wade_p->end_pos, -5.0f,
                                           mPlayer_WALK_FLAG_SET_POS | mPlayer_WALK_FLAG_RESET_MORPH, 1);
    }
}

static int Player_actor_Request_Wade(ACTOR* actorx) {
    return TRUE;
}

static void Player_actor_main_Wade(ACTOR* actorx, GAME* game) {
    if (Player_actor_Request_Wade(actorx)) {
        Player_actor_main_Wade_other_func1(actorx, game);
        Player_actor_Movement_Wade(actorx);
        Player_actor_Reinput_force_position_angle(actorx, game);
        Player_actor_CulcAnimation_Wade(actorx);
        Player_actor_recover_lean_angle(actorx);
        Player_actor_set_eye_pattern_normal(actorx);
        Player_actor_ObjCheck_Wade(actorx, game);
        Player_actor_BGcheck_Wade(actorx);
        Player_actor_Item_main(actorx, game);
        Player_actor_request_proc_index_fromWade(actorx, game);
    }
}
