// Copyright 2025 International Digital Economy Academy
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
///|
let ll_predefined_table_log = 6
///|
let of_predefined_table_log = 5
///|
let ml_predefined_table_log = 6
///|
fn ll_predefined_entry(state : Int) -> (Int, Int, Int, Int) raise ZstdError {
match state {
0 => (0, 0, 4, 0)
1 => (16, 0, 4, 0)
2 => (32, 0, 5, 1)
3 => (0, 0, 5, 3)
4 => (0, 0, 5, 4)
5 => (0, 0, 5, 6)
6 => (0, 0, 5, 7)
7 => (0, 0, 5, 9)
8 => (0, 0, 5, 10)
9 => (0, 0, 5, 12)
10 => (0, 0, 6, 14)
11 => (0, 1, 5, 16)
12 => (0, 1, 5, 20)
13 => (0, 1, 5, 22)
14 => (0, 2, 5, 28)
15 => (0, 3, 5, 32)
16 => (0, 4, 5, 48)
17 => (32, 6, 5, 64)
18 => (0, 7, 5, 128)
19 => (0, 8, 6, 256)
20 => (0, 10, 6, 1024)
21 => (0, 12, 6, 4096)
22 => (32, 0, 4, 0)
23 => (0, 0, 4, 1)
24 => (0, 0, 5, 2)
25 => (32, 0, 5, 4)
26 => (0, 0, 5, 5)
27 => (32, 0, 5, 7)
28 => (0, 0, 5, 8)
29 => (32, 0, 5, 10)
30 => (0, 0, 5, 11)
31 => (0, 0, 6, 13)
32 => (32, 1, 5, 16)
33 => (0, 1, 5, 18)
34 => (32, 1, 5, 22)
35 => (0, 2, 5, 24)
36 => (32, 3, 5, 32)
37 => (0, 3, 5, 40)
38 => (0, 6, 4, 64)
39 => (16, 6, 4, 64)
40 => (32, 7, 5, 128)
41 => (0, 9, 6, 512)
42 => (0, 11, 6, 2048)
43 => (48, 0, 4, 0)
44 => (16, 0, 4, 1)
45 => (32, 0, 5, 2)
46 => (32, 0, 5, 3)
47 => (32, 0, 5, 5)
48 => (32, 0, 5, 6)
49 => (32, 0, 5, 8)
50 => (32, 0, 5, 9)
51 => (32, 0, 5, 11)
52 => (32, 0, 5, 12)
53 => (0, 0, 6, 15)
54 => (32, 1, 5, 18)
55 => (32, 1, 5, 20)
56 => (32, 2, 5, 24)
57 => (32, 2, 5, 28)
58 => (32, 3, 5, 40)
59 => (32, 4, 5, 48)
60 => (0, 16, 6, 65536)
61 => (0, 15, 6, 32768)
62 => (0, 14, 6, 16384)
63 => (0, 13, 6, 8192)
_ => raise CorruptionDetected
}
}
///|
fn of_predefined_entry(state : Int) -> (Int, Int, Int, Int) raise ZstdError {
match state {
0 => (0, 0, 5, 0)
1 => (0, 6, 4, 61)
2 => (0, 9, 5, 509)
3 => (0, 15, 5, 32765)
4 => (0, 21, 5, 2097149)
5 => (0, 3, 5, 5)
6 => (0, 7, 4, 125)
7 => (0, 12, 5, 4093)
8 => (0, 18, 5, 262141)
9 => (0, 23, 5, 8388605)
10 => (0, 5, 5, 29)
11 => (0, 8, 4, 253)
12 => (0, 14, 5, 16381)
13 => (0, 20, 5, 1048573)
14 => (0, 2, 5, 1)
15 => (16, 7, 4, 125)
16 => (0, 11, 5, 2045)
17 => (0, 17, 5, 131069)
18 => (0, 22, 5, 4194301)
19 => (0, 4, 5, 13)
20 => (16, 8, 4, 253)
21 => (0, 13, 5, 8189)
22 => (0, 19, 5, 524285)
23 => (0, 1, 5, 1)
24 => (16, 6, 4, 61)
25 => (0, 10, 5, 1021)
26 => (0, 16, 5, 65533)
27 => (0, 28, 5, 268435453)
28 => (0, 27, 5, 134217725)
29 => (0, 26, 5, 67108861)
30 => (0, 25, 5, 33554429)
31 => (0, 24, 5, 16777213)
_ => raise CorruptionDetected
}
}
///|
fn ml_predefined_entry(state : Int) -> (Int, Int, Int, Int) raise ZstdError {
match state {
0 => (0, 0, 6, 3)
1 => (0, 0, 4, 4)
2 => (32, 0, 5, 5)
3 => (0, 0, 5, 6)
4 => (0, 0, 5, 8)
5 => (0, 0, 5, 9)
6 => (0, 0, 5, 11)
7 => (0, 0, 6, 13)
8 => (0, 0, 6, 16)
9 => (0, 0, 6, 19)
10 => (0, 0, 6, 22)
11 => (0, 0, 6, 25)
12 => (0, 0, 6, 28)
13 => (0, 0, 6, 31)
14 => (0, 0, 6, 34)
15 => (0, 1, 6, 37)
16 => (0, 1, 6, 41)
17 => (0, 2, 6, 47)
18 => (0, 3, 6, 59)
19 => (0, 4, 6, 83)
20 => (0, 7, 6, 131)
21 => (0, 9, 6, 515)
22 => (16, 0, 4, 4)
23 => (0, 0, 4, 5)
24 => (32, 0, 5, 6)
25 => (0, 0, 5, 7)
26 => (32, 0, 5, 9)
27 => (0, 0, 5, 10)
28 => (0, 0, 6, 12)
29 => (0, 0, 6, 15)
30 => (0, 0, 6, 18)
31 => (0, 0, 6, 21)
32 => (0, 0, 6, 24)
33 => (0, 0, 6, 27)
34 => (0, 0, 6, 30)
35 => (0, 0, 6, 33)
36 => (0, 1, 6, 35)
37 => (0, 1, 6, 39)
38 => (0, 2, 6, 43)
39 => (0, 3, 6, 51)
40 => (0, 4, 6, 67)
41 => (0, 5, 6, 99)
42 => (0, 8, 6, 259)
43 => (32, 0, 4, 4)
44 => (48, 0, 4, 4)
45 => (16, 0, 4, 5)
46 => (32, 0, 5, 7)
47 => (32, 0, 5, 8)
48 => (32, 0, 5, 10)
49 => (32, 0, 5, 11)
50 => (0, 0, 6, 14)
51 => (0, 0, 6, 17)
52 => (0, 0, 6, 20)
53 => (0, 0, 6, 23)
54 => (0, 0, 6, 26)
55 => (0, 0, 6, 29)
56 => (0, 0, 6, 32)
57 => (0, 16, 6, 65539)
58 => (0, 15, 6, 32771)
59 => (0, 14, 6, 16387)
60 => (0, 13, 6, 8195)
61 => (0, 12, 6, 4099)
62 => (0, 11, 6, 2051)
63 => (0, 10, 6, 1027)
_ => raise CorruptionDetected
}
}