figured out proper matrix multiplication order in model heirarchy, now this works: car wheel rotation:

        for (int i = 0; i < entity->model->meshes.count; i++) {
            render_mesh(&entity->model->meshes[i],
                        m_Translate(entity->pos)
                        * m_Rotate_RH(m_AngleDeg(entity->rot.x), m_V3(1, 0, 0))
                        * m_Rotate_RH(m_AngleDeg(entity->rot.y), m_V3(0, 1, 0))
                        * m_Rotate_RH(m_AngleDeg(entity->rot.z), m_V3(0, 0, 1))
                        * entity->model->meshes[i].parent_transform.transform
                        * entity->model->meshes[i].local_transform.translation
                        // * m_Rotate_RH(m_AngleDeg(rot.z), m_V3(0, 0, 1)) // optional case for local rotation of the wheel
                        * entity->model->meshes[i].local_transform.rotation
                        * entity->model->meshes[i].local_transform.scale
                        );
        }