System.IO.Compression.FastEncoderWindow.FindMatch C# (CSharp) Method

FindMatch() private method

private FindMatch ( int search, int &matchPos, int searchDepth, int niceLength ) : int
search int
matchPos int
searchDepth int
niceLength int
return int
        private int FindMatch(int search, out int matchPos, int searchDepth, int niceLength) {
            int num = 0;
            int num2 = 0;
            int num3 = this.bufPos - 0x2000;
            byte num4 = this.window[this.bufPos];
            while (search > num3) {
                if (this.window[search + num] == num4) {
                    int num5 = 0;
                    while (num5 < 0x102) {
                        if (this.window[this.bufPos + num5] != this.window[search + num5]) {
                            break;
                        }
                        num5++;
                    }
                    if (num5 > num) {
                        num = num5;
                        num2 = search;
                        if (num5 > 0x20) {
                            break;
                        }
                        num4 = this.window[this.bufPos + num5];
                    }
                }
                if (--searchDepth == 0) {
                    break;
                }
                search = this.prev[search & 0x1fff];
            }
            matchPos = (this.bufPos - num2) - 1;
            if ((num == 3) && (matchPos >= 0x4000)) {
                return 0;
            }
            return num;
        }