Cant understand how lookup worked in gen~

hello guys,I am studying gen~ recently and saw this patch in the Learning material,here is my question:
lookup in gen~ is basically the same as it's mirror in msp right?so maybe I never truly understand this object,what I thought is the lookup object use a input signal as index value to fetch the different Position of a buffer,which we have to name it inside lookup,and finally we can hear the “buffer” sound,but in different orders as index value change the playback Position of the buffer
But within this patch,I heard the opposite,the input signal is the final result coming out of lookup,and the buffer is kind of a Distortion function that changes the input signal's waveform,I cant understand why
Then I checked the help of lookup~ in msp,it uses different wave shape as input to alter a drumloop’s playback order,the final result is more close to what I can understand:a index controled drumloop
I know this maybe a basic question but can anyone tell me why?
lookup~ is best for waveshaping the input based on a transfer function you have stored in buffer~.
if you have a wavetable which is asymmetrical/symmetrical and achieves a zero-crossing point directly in its center, lookup~ makes it easier to address the memory-indexing of it, based around that center axis. that way, whatever you feed into it, can often achieve silence, when it goes silent(because a 0 in the input, addresses the center of the wavetable, where there will also be a 0, and negative values will read earlier on in the buffer from that 0-crossing point, while positive values will read later on in the buffer from that 0-crossing point):

it's great for many types of distortion, you can also drive it with cycle~ or any bipolar input to create oscillators, and you don't necessarily need to have a zero-crossing point in it(maybe for some control-voltage based functions, when the input goes silent, you might need for there to be a resting dc-offset at all times, like a resting pitch or something), so it can be used for many other things where you want to read from a wavetable in a symmetrical/asymmetrical way.
(edit: now that i think about my wording here, it may not be the clearest, because a phasor~ is also 'asymmetrical' in some ways(?), but it holds a much more boring application than what i'm trying to explain here, hopefully you understand me anyways and can try it out in a 'waveshapey' way 😊)
2nd edit: very important - remember to hold an odd number of samples in your wavetable to achieve good symmetry around a middle-value
see "Examples/synths/cheby" for a great usage of lookup~. hope it helps 🍻
so basically what lookup can do to a signal is to use it's original amplitude as index to fetch a new value from a waveshape and use this new value as amplitude of the signal,then output the signal again,i get the order wrong~thanks