#include #include "internal.h" #include "mp3.h" #define CHANNELMODE_STEREO 0 #define CHANNELMODE_JOINTSTEREO 1 #define CHANNELMODE_DUALMONO 2 #define CHANNELMODE_SINGLEMONO 3 #define VERSION_2 0x0 #define VERSION_1 0x1 struct mp3decthing { u8 unk00; u8 unk01; u8 unk02; u8 unk03; u32 unk04; }; extern const struct mp3decthing var70054b40[]; f32 sine_block[4][36]; struct mp3decfourbytes *var8009c640; f32 *var8009c644; f32 *var8009c648; const struct mp3decthing var70054b40[] = { { 0, 0, 1, 0, 1 }, { 0, 1, 3, 0, 4 }, { 1, 0, 2, 0, 2 }, { 1, 1, 3, 0, 0 }, { 100, 100, 100, 0, 0 }, }; const struct mp3decthing var70054b68[] = { { 0, 0, 1, 0, 1 }, { 0, 1, 3, 0, 2 }, { 0, 2, 6, 0, 32 }, { 1, 0, 3, 0, 6 }, { 1, 1, 3, 0, 4 }, { 1, 2, 5, 0, 16 }, { 2, 0, 5, 0, 24 }, { 2, 1, 5, 0, 8 }, { 2, 2, 6, 0, 0 }, { 100, 100, 100, 0, 0 }, }; const struct mp3decthing var70054bb8[] = { { 0, 0, 2, 0, 3 }, { 0, 1, 2, 0, 1 }, { 0, 2, 6, 0, 32 }, { 1, 0, 3, 0, 4 }, { 1, 1, 2, 0, 2 }, { 1, 2, 5, 0, 16 }, { 2, 0, 5, 0, 24 }, { 2, 1, 5, 0, 8 }, { 2, 2, 6, 0, 0 }, { 100, 100, 100, 0, 0 }, }; const struct mp3decthing var70054c08[] = { { 0, 0, 1, 0, 1 }, { 0, 1, 3, 0, 2 }, { 0, 2, 6, 0, 24 }, { 0, 3, 7, 0, 80 }, { 1, 0, 3, 0, 6 }, { 1, 1, 3, 0, 4 }, { 1, 2, 6, 0, 8 }, { 1, 3, 7, 0, 16 }, { 2, 0, 6, 0, 56 }, { 2, 1, 6, 0, 40 }, { 2, 2, 7, 0, 112 }, { 2, 3, 8, 0, 128 }, { 3, 0, 7, 0, 48 }, { 3, 1, 6, 0, 32 }, { 3, 2, 7, 0, 64 }, { 3, 3, 8, 0, 0 }, { 100, 100, 100, 0, 0 }, }; const struct mp3decthing var70054c90[] = { { 0, 0, 3, 0, 7 }, { 0, 1, 3, 0, 6 }, { 0, 2, 5, 0, 20 }, { 0, 3, 7, 0, 64 }, { 1, 0, 3, 0, 3 }, { 1, 1, 2, 0, 1 }, { 1, 2, 4, 0, 12 }, { 1, 3, 5, 0, 8 }, { 2, 0, 4, 0, 10 }, { 2, 1, 4, 0, 2 }, { 2, 2, 5, 0, 4 }, { 2, 3, 6, 0, 32 }, { 3, 0, 6, 0, 48 }, { 3, 1, 5, 0, 24 }, { 3, 2, 6, 0, 16 }, { 3, 3, 7, 0, 0 }, { 100, 100, 100, 0, 0 }, }; const struct mp3decthing var70054d18[] = { { 0, 0, 1, 0, 1 }, { 0, 1, 3, 0, 2 }, { 0, 2, 6, 0, 20 }, { 0, 3, 8, 0, 200 }, { 0, 4, 8, 0, 8 }, { 0, 5, 9, 0, 160 }, { 1, 0, 3, 0, 6 }, { 1, 1, 4, 0, 12 }, { 1, 2, 6, 0, 56 }, { 1, 3, 7, 0, 40 }, { 1, 4, 7, 0, 80 }, { 1, 5, 8, 0, 192 }, { 2, 0, 6, 0, 52 }, { 2, 1, 5, 0, 4 }, { 2, 2, 7, 0, 88 }, { 2, 3, 8, 0, 136 }, { 2, 4, 8, 0, 16 }, { 2, 5, 9, 0, 64 }, { 3, 0, 7, 0, 24 }, { 3, 1, 7, 0, 104 }, { 3, 2, 8, 0, 72 }, { 3, 3, 9, 0, 480 }, { 3, 4, 9, 0, 416 }, { 3, 5, 9, 0, 128 }, { 4, 0, 7, 0, 112 }, { 4, 1, 7, 0, 48 }, { 4, 2, 8, 0, 144 }, { 4, 3, 9, 0, 224 }, { 4, 4, 9, 0, 384 }, { 4, 5, 10, 0, 512 }, { 5, 0, 8, 0, 96 }, { 5, 1, 8, 0, 32 }, { 5, 2, 9, 0, 320 }, { 5, 3, 10, 0, 768 }, { 5, 4, 10, 0, 256 }, { 5, 5, 10, 0, 0 }, { 100, 100, 100, 0, 0 }, }; const struct mp3decthing var70054e40[] = { { 0, 0, 2, 0, 3 }, { 0, 1, 3, 0, 1 }, { 0, 2, 6, 0, 24 }, { 0, 3, 8, 0, 72 }, { 0, 4, 8, 0, 48 }, { 0, 5, 9, 0, 320 }, { 1, 0, 3, 0, 5 }, { 1, 1, 2, 0, 2 }, { 1, 2, 4, 0, 4 }, { 1, 3, 8, 0, 8 }, { 1, 4, 8, 0, 144 }, { 1, 5, 8, 0, 192 }, { 2, 0, 6, 0, 56 }, { 2, 1, 4, 0, 12 }, { 2, 2, 6, 0, 40 }, { 2, 3, 8, 0, 112 }, { 2, 4, 8, 0, 224 }, { 2, 5, 9, 0, 384 }, { 3, 0, 8, 0, 200 }, { 3, 1, 8, 0, 136 }, { 3, 2, 8, 0, 240 }, { 3, 3, 9, 0, 352 }, { 3, 4, 9, 0, 160 }, { 3, 5, 10, 0, 128 }, { 4, 0, 8, 0, 176 }, { 4, 1, 7, 0, 80 }, { 4, 2, 8, 0, 16 }, { 4, 3, 9, 0, 416 }, { 4, 4, 10, 0, 640 }, { 4, 5, 10, 0, 512 }, { 5, 0, 9, 0, 96 }, { 5, 1, 8, 0, 32 }, { 5, 2, 9, 0, 64 }, { 5, 3, 9, 0, 256 }, { 5, 4, 11, 0, 1024 }, { 5, 5, 11, 0, 0 }, { 100, 100, 100, 0, 0 }, }; const struct mp3decthing var70054f68[] = { { 0, 0, 3, 0, 7 }, { 0, 1, 3, 0, 5 }, { 0, 2, 5, 0, 18 }, { 0, 3, 6, 0, 28 }, { 0, 4, 8, 0, 240 }, { 0, 5, 9, 0, 448 }, { 1, 0, 3, 0, 3 }, { 1, 1, 3, 0, 1 }, { 1, 2, 4, 0, 10 }, { 1, 3, 5, 0, 20 }, { 1, 4, 6, 0, 24 }, { 1, 5, 8, 0, 224 }, { 2, 0, 4, 0, 14 }, { 2, 1, 4, 0, 6 }, { 2, 2, 5, 0, 2 }, { 2, 3, 6, 0, 4 }, { 2, 4, 7, 0, 8 }, { 2, 5, 8, 0, 160 }, { 3, 0, 6, 0, 60 }, { 3, 1, 5, 0, 12 }, { 3, 2, 6, 0, 36 }, { 3, 3, 7, 0, 40 }, { 3, 4, 7, 0, 80 }, { 3, 5, 8, 0, 128 }, { 4, 0, 7, 0, 104 }, { 4, 1, 6, 0, 56 }, { 4, 2, 7, 0, 72 }, { 4, 3, 7, 0, 48 }, { 4, 4, 8, 0, 32 }, { 4, 5, 9, 0, 256 }, { 5, 0, 8, 0, 112 }, { 5, 1, 7, 0, 16 }, { 5, 2, 8, 0, 96 }, { 5, 3, 8, 0, 64 }, { 5, 4, 9, 0, 192 }, { 5, 5, 9, 0, 0 }, { 100, 100, 100, 0, 0 }, }; const struct mp3decthing var70055090[] = { { 0, 0, 1, 0, 1 }, { 0, 1, 3, 0, 2 }, { 0, 2, 6, 0, 20 }, { 0, 3, 8, 0, 232 }, { 0, 4, 9, 0, 392 }, { 0, 5, 9, 0, 240 }, { 0, 6, 9, 0, 96 }, { 0, 7, 10, 0, 544 }, { 1, 0, 3, 0, 6 }, { 1, 1, 4, 0, 12 }, { 1, 2, 6, 0, 4 }, { 1, 3, 7, 0, 24 }, { 1, 4, 8, 0, 72 }, { 1, 5, 9, 0, 336 }, { 1, 6, 8, 0, 48 }, { 1, 7, 8, 0, 224 }, { 2, 0, 6, 0, 52 }, { 2, 1, 6, 0, 36 }, { 2, 2, 7, 0, 120 }, { 2, 3, 8, 0, 168 }, { 2, 4, 9, 0, 8 }, { 2, 5, 10, 0, 80 }, { 2, 6, 9, 0, 400 }, { 2, 7, 9, 0, 192 }, { 3, 0, 7, 0, 56 }, { 3, 1, 7, 0, 88 }, { 3, 2, 8, 0, 104 }, { 3, 3, 9, 0, 136 }, { 3, 4, 10, 0, 464 }, { 3, 5, 10, 0, 928 }, { 3, 6, 9, 0, 144 }, { 3, 7, 10, 0, 896 }, { 4, 0, 8, 0, 40 }, { 4, 1, 8, 0, 200 }, { 4, 2, 9, 0, 264 }, { 4, 3, 10, 0, 976 }, { 4, 4, 10, 0, 864 }, { 4, 5, 10, 0, 416 }, { 4, 6, 10, 0, 576 }, { 4, 7, 10, 0, 768 }, { 5, 0, 9, 0, 496 }, { 5, 1, 9, 0, 208 }, { 5, 2, 10, 0, 592 }, { 5, 3, 10, 0, 352 }, { 5, 4, 11, 0, 1344 }, { 5, 5, 11, 0, 320 }, { 5, 6, 10, 0, 640 }, { 5, 7, 11, 0, 1536 }, { 6, 0, 8, 0, 112 }, { 6, 1, 8, 0, 176 }, { 6, 2, 9, 0, 160 }, { 6, 3, 10, 0, 832 }, { 6, 4, 10, 0, 32 }, { 6, 5, 10, 0, 384 }, { 6, 6, 11, 0, 1280 }, { 6, 7, 11, 0, 1024 }, { 7, 0, 9, 0, 288 }, { 7, 1, 8, 0, 16 }, { 7, 2, 9, 0, 448 }, { 7, 3, 10, 0, 64 }, { 7, 4, 10, 0, 128 }, { 7, 5, 11, 0, 256 }, { 7, 6, 11, 0, 512 }, { 7, 7, 11, 0, 0 }, { 100, 100, 100, 0, 0 }, }; const struct mp3decthing var70055298[] = { { 0, 0, 2, 0, 3 }, { 0, 1, 3, 0, 1 }, { 0, 2, 5, 0, 10 }, { 0, 3, 7, 0, 12 }, { 0, 4, 8, 0, 68 }, { 0, 5, 9, 0, 264 }, { 0, 6, 8, 0, 168 }, { 0, 7, 9, 0, 480 }, { 1, 0, 3, 0, 5 }, { 1, 1, 3, 0, 6 }, { 1, 2, 4, 0, 2 }, { 1, 3, 6, 0, 20 }, { 1, 4, 8, 0, 4 }, { 1, 5, 8, 0, 136 }, { 1, 6, 7, 0, 104 }, { 1, 7, 8, 0, 80 }, { 2, 0, 5, 0, 26 }, { 2, 1, 5, 0, 28 }, { 2, 2, 6, 0, 44 }, { 2, 3, 7, 0, 36 }, { 2, 4, 8, 0, 120 }, { 2, 5, 9, 0, 496 }, { 2, 6, 8, 0, 40 }, { 2, 7, 8, 0, 160 }, { 3, 0, 7, 0, 76 }, { 3, 1, 6, 0, 52 }, { 3, 2, 7, 0, 100 }, { 3, 3, 9, 0, 440 }, { 3, 4, 8, 0, 216 }, { 3, 5, 10, 0, 288 }, { 3, 6, 8, 0, 48 }, { 3, 7, 9, 0, 320 }, { 4, 0, 8, 0, 196 }, { 4, 1, 8, 0, 132 }, { 4, 2, 8, 0, 248 }, { 4, 3, 9, 0, 184 }, { 4, 4, 9, 0, 240 }, { 4, 5, 10, 0, 32 }, { 4, 6, 9, 0, 448 }, { 4, 7, 10, 0, 640 }, { 5, 0, 8, 0, 56 }, { 5, 1, 8, 0, 88 }, { 5, 2, 9, 0, 8 }, { 5, 3, 10, 0, 800 }, { 5, 4, 10, 0, 544 }, { 5, 5, 11, 0, 1920 }, { 5, 6, 10, 0, 64 }, { 5, 7, 11, 0, 896 }, { 6, 0, 8, 0, 112 }, { 6, 1, 7, 0, 24 }, { 6, 2, 7, 0, 72 }, { 6, 3, 8, 0, 176 }, { 6, 4, 9, 0, 224 }, { 6, 5, 10, 0, 576 }, { 6, 6, 10, 0, 128 }, { 6, 7, 10, 0, 512 }, { 7, 0, 8, 0, 208 }, { 7, 1, 7, 0, 16 }, { 7, 2, 8, 0, 96 }, { 7, 3, 9, 0, 192 }, { 7, 4, 10, 0, 384 }, { 7, 5, 10, 0, 768 }, { 7, 6, 10, 0, 256 }, { 7, 7, 10, 0, 0 }, { 100, 100, 100, 0, 0 }, }; const struct mp3decthing var700554a0[] = { { 0, 0, 4, 0, 9 }, { 0, 1, 3, 0, 3 }, { 0, 2, 5, 0, 1 }, { 0, 3, 7, 0, 66 }, { 0, 4, 8, 0, 148 }, { 0, 5, 9, 0, 456 }, { 0, 6, 9, 0, 200 }, { 0, 7, 9, 0, 176 }, { 1, 0, 3, 0, 7 }, { 1, 1, 3, 0, 5 }, { 1, 2, 4, 0, 6 }, { 1, 3, 5, 0, 18 }, { 1, 4, 7, 0, 116 }, { 1, 5, 7, 0, 4 }, { 1, 6, 8, 0, 88 }, { 1, 7, 8, 0, 208 }, { 2, 0, 5, 0, 17 }, { 2, 1, 4, 0, 14 }, { 2, 2, 5, 0, 26 }, { 2, 3, 6, 0, 28 }, { 2, 4, 7, 0, 84 }, { 2, 5, 8, 0, 120 }, { 2, 6, 7, 0, 40 }, { 2, 7, 8, 0, 224 }, { 3, 0, 6, 0, 34 }, { 3, 1, 5, 0, 10 }, { 3, 2, 6, 0, 60 }, { 3, 3, 6, 0, 12 }, { 3, 4, 7, 0, 36 }, { 3, 5, 8, 0, 56 }, { 3, 6, 8, 0, 112 }, { 3, 7, 8, 0, 160 }, { 4, 0, 7, 0, 2 }, { 4, 1, 6, 0, 44 }, { 4, 2, 7, 0, 52 }, { 4, 3, 7, 0, 100 }, { 4, 4, 8, 0, 72 }, { 4, 5, 8, 0, 8 }, { 4, 6, 8, 0, 144 }, { 4, 7, 9, 0, 320 }, { 5, 0, 8, 0, 20 }, { 5, 1, 7, 0, 68 }, { 5, 2, 8, 0, 248 }, { 5, 3, 8, 0, 184 }, { 5, 4, 8, 0, 136 }, { 5, 5, 9, 0, 352 }, { 5, 6, 8, 0, 32 }, { 5, 7, 9, 0, 128 }, { 6, 0, 8, 0, 216 }, { 6, 1, 7, 0, 24 }, { 6, 2, 7, 0, 104 }, { 6, 3, 8, 0, 240 }, { 6, 4, 8, 0, 80 }, { 6, 5, 9, 0, 448 }, { 6, 6, 9, 0, 64 }, { 6, 7, 10, 0, 512 }, { 7, 0, 9, 0, 432 }, { 7, 1, 8, 0, 48 }, { 7, 2, 8, 0, 16 }, { 7, 3, 9, 0, 96 }, { 7, 4, 9, 0, 192 }, { 7, 5, 9, 0, 384 }, { 7, 6, 9, 0, 256 }, { 7, 7, 10, 0, 0 }, { 100, 100, 100, 0, 0 }, }; const struct mp3decthing var700556a8[] = { { 0, 0, 1, 0, 1 }, { 0, 1, 4, 0, 10 }, { 0, 2, 6, 0, 28 }, { 0, 3, 7, 0, 84 }, { 0, 4, 8, 0, 68 }, { 0, 5, 9, 0, 408 }, { 0, 6, 9, 0, 232 }, { 0, 7, 10, 0, 904 }, { 0, 8, 9, 0, 168 }, { 0, 9, 10, 0, 176 }, { 0, 10, 11, 0, 272 }, { 0, 11, 11, 0, 352 }, { 0, 12, 12, 0, 3104 }, { 0, 13, 12, 0, 832 }, { 0, 14, 13, 0, 6784 }, { 0, 15, 13, 0, 6400 }, { 1, 0, 3, 0, 6 }, { 1, 1, 4, 0, 2 }, { 1, 2, 6, 0, 12 }, { 1, 3, 7, 0, 100 }, { 1, 4, 8, 0, 248 }, { 1, 5, 8, 0, 88 }, { 1, 6, 9, 0, 104 }, { 1, 7, 9, 0, 264 }, { 1, 8, 9, 0, 496 }, { 1, 9, 9, 0, 48 }, { 1, 10, 10, 0, 16 }, { 1, 11, 10, 0, 96 }, { 1, 12, 11, 0, 1984 }, { 1, 13, 12, 0, 3136 }, { 1, 14, 12, 0, 1664 }, { 1, 15, 12, 0, 1792 }, { 2, 0, 6, 0, 60 }, { 2, 1, 6, 0, 44 }, { 2, 2, 7, 0, 116 }, { 2, 3, 8, 0, 36 }, { 2, 4, 9, 0, 440 }, { 2, 5, 9, 0, 280 }, { 2, 6, 10, 0, 712 }, { 2, 7, 10, 0, 520 }, { 2, 8, 9, 0, 368 }, { 2, 9, 10, 0, 80 }, { 2, 10, 10, 0, 480 }, { 2, 11, 11, 0, 160 }, { 2, 12, 11, 0, 1728 }, { 2, 13, 12, 0, 2112 }, { 2, 14, 13, 0, 2688 }, { 2, 15, 13, 0, 256 }, { 3, 0, 7, 0, 52 }, { 3, 1, 7, 0, 20 }, { 3, 2, 8, 0, 164 }, { 3, 3, 9, 0, 376 }, { 3, 4, 9, 0, 56 }, { 3, 5, 10, 0, 968 }, { 3, 6, 10, 0, 584 }, { 3, 7, 10, 0, 8 }, { 3, 8, 10, 0, 848 }, { 3, 9, 11, 0, 400 }, { 3, 10, 11, 0, 224 }, { 3, 11, 11, 0, 1312 }, { 3, 12, 11, 0, 704 }, { 3, 13, 12, 0, 3968 }, { 3, 14, 13, 0, 4864 }, { 3, 15, 13, 0, 3584 }, { 4, 0, 8, 0, 196 }, { 4, 1, 7, 0, 4 }, { 4, 2, 9, 0, 120 }, { 4, 3, 9, 0, 312 }, { 4, 4, 10, 0, 536 }, { 4, 5, 10, 0, 840 }, { 4, 6, 11, 0, 624 }, { 4, 7, 11, 0, 1744 }, { 4, 8, 10, 0, 432 }, { 4, 9, 11, 0, 1168 }, { 4, 10, 11, 0, 1888 }, { 4, 11, 12, 0, 2368 }, { 4, 12, 12, 0, 192 }, { 4, 13, 13, 0, 5504 }, { 4, 14, 13, 0, 7424 }, { 4, 15, 14, 0, 1536 }, { 5, 0, 9, 0, 184 }, { 5, 1, 8, 0, 216 }, { 5, 2, 9, 0, 152 }, { 5, 3, 10, 0, 24 }, { 5, 4, 10, 0, 200 }, { 5, 5, 10, 0, 392 }, { 5, 6, 11, 0, 1488 }, { 5, 7, 11, 0, 336 }, { 5, 8, 11, 0, 1424 }, { 5, 9, 11, 0, 736 }, { 5, 10, 12, 0, 3872 }, { 5, 11, 11, 0, 1472 }, { 5, 12, 13, 0, 2624 }, { 5, 13, 13, 0, 4480 }, { 5, 14, 14, 0, 9472 }, { 5, 15, 14, 0, 8704 }, { 6, 0, 9, 0, 488 }, { 6, 1, 9, 0, 360 }, { 6, 2, 10, 0, 456 }, { 6, 3, 10, 0, 328 }, { 6, 4, 11, 0, 1648 }, { 6, 5, 11, 0, 976 }, { 6, 6, 11, 0, 720 }, { 6, 7, 11, 0, 1936 }, { 6, 8, 11, 0, 1296 }, { 6, 9, 12, 0, 3232 }, { 6, 10, 12, 0, 3616 }, { 6, 11, 12, 0, 1216 }, { 6, 12, 13, 0, 7040 }, { 6, 13, 13, 0, 3200 }, { 6, 14, 14, 0, 2304 }, { 6, 15, 14, 0, 15360 }, { 7, 0, 10, 0, 72 }, { 7, 1, 9, 0, 136 }, { 7, 2, 10, 0, 112 }, { 7, 3, 11, 0, 2000 }, { 7, 4, 11, 0, 464 }, { 7, 5, 11, 0, 1360 }, { 7, 6, 12, 0, 3488 }, { 7, 7, 12, 0, 1440 }, { 7, 8, 12, 0, 1696 }, { 7, 9, 12, 0, 2336 }, { 7, 10, 13, 0, 5696 }, { 7, 11, 13, 0, 4160 }, { 7, 12, 13, 0, 6528 }, { 7, 13, 14, 0, 3328 }, { 7, 14, 16, 0, 54272 }, { 7, 15, 16, 0, 21504 }, { 8, 0, 9, 0, 424 }, { 8, 1, 8, 0, 40 }, { 8, 2, 9, 0, 240 }, { 8, 3, 10, 0, 208 }, { 8, 4, 10, 0, 944 }, { 8, 5, 11, 0, 912 }, { 8, 6, 11, 0, 144 }, { 8, 7, 12, 0, 3744 }, { 8, 8, 12, 0, 1824 }, { 8, 9, 12, 0, 3008 }, { 8, 10, 12, 0, 1856 }, { 8, 11, 13, 0, 3456 }, { 8, 12, 13, 0, 5248 }, { 8, 13, 14, 0, 7680 }, { 8, 14, 15, 0, 5120 }, { 8, 15, 15, 0, 1024 }, { 9, 0, 10, 0, 688 }, { 9, 1, 9, 0, 304 }, { 9, 2, 10, 0, 592 }, { 9, 3, 10, 0, 656 }, { 9, 4, 11, 0, 416 }, { 9, 5, 11, 0, 1760 }, { 9, 6, 11, 0, 864 }, { 9, 7, 13, 0, 4416 }, { 9, 8, 12, 0, 1056 }, { 9, 9, 13, 0, 1600 }, { 9, 10, 13, 0, 4992 }, { 9, 11, 14, 0, 6912 }, { 9, 12, 14, 0, 10496 }, { 9, 13, 14, 0, 4608 }, { 9, 14, 16, 0, 58368 }, { 9, 15, 15, 0, 26624 }, { 10, 0, 10, 0, 784 }, { 10, 1, 10, 0, 528 }, { 10, 2, 10, 0, 992 }, { 10, 3, 11, 0, 1248 }, { 10, 4, 11, 0, 672 }, { 10, 5, 12, 0, 1184 }, { 10, 6, 12, 0, 288 }, { 10, 7, 13, 0, 320 }, { 10, 8, 12, 0, 3904 }, { 10, 9, 13, 0, 2944 }, { 10, 10, 14, 0, 15104 }, { 10, 11, 13, 0, 5376 }, { 10, 12, 14, 0, 6656 }, { 10, 13, 15, 0, 11264 }, { 10, 14, 16, 0, 25600 }, { 10, 15, 17, 0, 53248 }, { 11, 0, 11, 0, 1376 }, { 11, 1, 10, 0, 608 }, { 11, 2, 10, 0, 928 }, { 11, 3, 11, 0, 800 }, { 11, 4, 12, 0, 1568 }, { 11, 5, 12, 0, 960 }, { 11, 6, 12, 0, 3264 }, { 11, 7, 12, 0, 576 }, { 11, 8, 13, 0, 7552 }, { 11, 9, 13, 0, 2816 }, { 11, 10, 13, 0, 2176 }, { 11, 11, 14, 0, 14848 }, { 11, 12, 15, 0, 27648 }, { 11, 13, 15, 0, 14336 }, { 11, 14, 15, 0, 18432 }, { 11, 15, 16, 0, 57344 }, { 12, 0, 11, 0, 544 }, { 12, 1, 11, 0, 32 }, { 12, 2, 11, 0, 448 }, { 12, 3, 12, 0, 3648 }, { 12, 4, 12, 0, 2240 }, { 12, 5, 13, 0, 6720 }, { 12, 6, 12, 0, 1920 }, { 12, 7, 13, 0, 1408 }, { 12, 8, 14, 0, 768 }, { 12, 9, 14, 0, 1280 }, { 12, 10, 15, 0, 5632 }, { 12, 11, 15, 0, 7168 }, { 12, 12, 15, 0, 9216 }, { 12, 13, 16, 0, 34816 }, { 12, 14, 16, 0, 36864 }, { 12, 15, 16, 0, 40960 }, { 13, 0, 12, 0, 2880 }, { 13, 1, 11, 0, 1344 }, { 13, 2, 12, 0, 1088 }, { 13, 3, 13, 0, 64 }, { 13, 4, 13, 0, 896 }, { 13, 5, 13, 0, 2432 }, { 13, 6, 14, 0, 8960 }, { 13, 7, 14, 0, 11520 }, { 13, 8, 14, 0, 15872 }, { 13, 9, 14, 0, 12800 }, { 13, 10, 14, 0, 3072 }, { 13, 11, 15, 0, 30720 }, { 13, 12, 16, 0, 20480 }, { 13, 13, 15, 0, 28672 }, { 13, 14, 16, 0, 24576 }, { 13, 15, 16, 0, 49152 }, { 14, 0, 13, 0, 384 }, { 14, 1, 12, 0, 3712 }, { 14, 2, 12, 0, 640 }, { 14, 3, 13, 0, 7296 }, { 14, 4, 13, 0, 1152 }, { 14, 5, 13, 0, 6272 }, { 14, 6, 15, 0, 22016 }, { 14, 7, 14, 0, 10752 }, { 14, 8, 14, 0, 512 }, { 14, 9, 17, 0, 118784 }, { 14, 10, 15, 0, 22528 }, { 14, 11, 15, 0, 10240 }, { 14, 12, 15, 0, 12288 }, { 14, 13, 17, 0, 65536 }, { 14, 14, 16, 0, 8192 }, { 14, 15, 16, 0, 16384 }, { 15, 0, 12, 0, 128 }, { 15, 1, 12, 0, 3840 }, { 15, 2, 13, 0, 4352 }, { 15, 3, 14, 0, 13824 }, { 15, 4, 14, 0, 9728 }, { 15, 5, 14, 0, 2560 }, { 15, 6, 15, 0, 23552 }, { 15, 7, 14, 0, 13312 }, { 15, 8, 15, 0, 17408 }, { 15, 9, 15, 0, 6144 }, { 15, 10, 16, 0, 2048 }, { 15, 11, 16, 0, 4096 }, { 15, 12, 19, 0, 262144 }, { 15, 13, 18, 0, 131072 }, { 15, 14, 19, 0, 0 }, { 15, 15, 16, 0, 32768 }, { 100, 100, 100, 0, 0 }, }; const struct mp3decthing var70055eb0[] = { { 0, 0, 3, 0, 7 }, { 0, 1, 4, 0, 3 }, { 0, 2, 5, 0, 9 }, { 0, 3, 7, 0, 86 }, { 0, 4, 7, 0, 122 }, { 0, 5, 8, 0, 50 }, { 0, 6, 9, 0, 124 }, { 0, 7, 9, 0, 108 }, { 0, 8, 9, 0, 308 }, { 0, 9, 10, 0, 888 }, { 0, 10, 10, 0, 216 }, { 0, 11, 11, 0, 1904 }, { 0, 12, 11, 0, 1712 }, { 0, 13, 11, 0, 1104 }, { 0, 14, 12, 0, 1504 }, { 0, 15, 13, 0, 8064 }, { 1, 0, 4, 0, 11 }, { 1, 1, 3, 0, 5 }, { 1, 2, 5, 0, 1 }, { 1, 3, 6, 0, 54 }, { 1, 4, 7, 0, 58 }, { 1, 5, 7, 0, 18 }, { 1, 6, 8, 0, 188 }, { 1, 7, 8, 0, 204 }, { 1, 8, 8, 0, 84 }, { 1, 9, 9, 0, 196 }, { 1, 10, 9, 0, 88 }, { 1, 11, 10, 0, 808 }, { 1, 12, 10, 0, 520 }, { 1, 13, 10, 0, 592 }, { 1, 14, 11, 0, 1760 }, { 1, 15, 11, 0, 288 }, { 2, 0, 5, 0, 25 }, { 2, 1, 5, 0, 17 }, { 2, 2, 5, 0, 30 }, { 2, 3, 6, 0, 6 }, { 2, 4, 7, 0, 74 }, { 2, 5, 7, 0, 34 }, { 2, 6, 8, 0, 220 }, { 2, 7, 8, 0, 12 }, { 2, 8, 8, 0, 20 }, { 2, 9, 9, 0, 4 }, { 2, 10, 9, 0, 152 }, { 2, 11, 10, 0, 456 }, { 2, 12, 10, 0, 496 }, { 2, 13, 11, 0, 80 }, { 2, 14, 11, 0, 224 }, { 2, 15, 11, 0, 1056 }, { 3, 0, 6, 0, 46 }, { 3, 1, 6, 0, 14 }, { 3, 2, 6, 0, 38 }, { 3, 3, 7, 0, 106 }, { 3, 4, 7, 0, 114 }, { 3, 5, 8, 0, 252 }, { 3, 6, 8, 0, 236 }, { 3, 7, 9, 0, 372 }, { 3, 8, 9, 0, 100 }, { 3, 9, 9, 0, 440 }, { 3, 10, 10, 0, 744 }, { 3, 11, 10, 0, 72 }, { 3, 12, 10, 0, 432 }, { 3, 13, 11, 0, 1680 }, { 3, 14, 11, 0, 608 }, { 3, 15, 11, 0, 1472 }, { 4, 0, 7, 0, 22 }, { 4, 1, 6, 0, 26 }, { 4, 2, 7, 0, 42 }, { 4, 3, 7, 0, 10 }, { 4, 4, 8, 0, 194 }, { 4, 5, 8, 0, 156 }, { 4, 6, 9, 0, 500 }, { 4, 7, 9, 0, 484 }, { 4, 8, 9, 0, 36 }, { 4, 9, 9, 0, 312 }, { 4, 10, 10, 0, 616 }, { 4, 11, 10, 0, 648 }, { 4, 12, 10, 0, 560 }, { 4, 13, 11, 0, 528 }, { 4, 14, 11, 0, 928 }, { 4, 15, 11, 0, 1728 }, { 5, 0, 8, 0, 178 }, { 5, 1, 7, 0, 82 }, { 5, 2, 7, 0, 98 }, { 5, 3, 8, 0, 66 }, { 5, 4, 8, 0, 92 }, { 5, 5, 8, 0, 44 }, { 5, 6, 9, 0, 436 }, { 5, 7, 9, 0, 164 }, { 5, 8, 9, 0, 248 }, { 5, 9, 9, 0, 24 }, { 5, 10, 10, 0, 968 }, { 5, 11, 10, 0, 1008 }, { 5, 12, 11, 0, 720 }, { 5, 13, 11, 0, 992 }, { 5, 14, 11, 0, 160 }, { 5, 15, 12, 0, 1600 }, { 6, 0, 9, 0, 380 }, { 6, 1, 7, 0, 2 }, { 6, 2, 8, 0, 60 }, { 6, 3, 8, 0, 28 }, { 6, 4, 8, 0, 76 }, { 6, 5, 9, 0, 116 }, { 6, 6, 9, 0, 228 }, { 6, 7, 9, 0, 260 }, { 6, 8, 9, 0, 472 }, { 6, 9, 10, 0, 936 }, { 6, 10, 10, 0, 904 }, { 6, 11, 10, 0, 816 }, { 6, 12, 11, 0, 1168 }, { 6, 13, 11, 0, 1632 }, { 6, 14, 12, 0, 1568 }, { 6, 15, 12, 0, 1920 }, { 7, 0, 9, 0, 364 }, { 7, 1, 8, 0, 172 }, { 7, 2, 8, 0, 140 }, { 7, 3, 9, 0, 244 }, { 7, 4, 9, 0, 52 }, { 7, 5, 9, 0, 420 }, { 7, 6, 9, 0, 132 }, { 7, 7, 10, 0, 376 }, { 7, 8, 10, 0, 872 }, { 7, 9, 10, 0, 584 }, { 7, 10, 10, 0, 112 }, { 7, 11, 10, 0, 336 }, { 7, 12, 11, 0, 16 }, { 7, 13, 11, 0, 416 }, { 7, 14, 11, 0, 1344 }, { 7, 15, 12, 0, 2432 }, { 8, 0, 9, 0, 180 }, { 8, 1, 8, 0, 212 }, { 8, 2, 8, 0, 148 }, { 8, 3, 9, 0, 356 }, { 8, 4, 9, 0, 292 }, { 8, 5, 9, 0, 504 }, { 8, 6, 9, 0, 56 }, { 8, 7, 10, 0, 232 }, { 8, 8, 10, 0, 712 }, { 8, 9, 10, 0, 264 }, { 8, 10, 10, 0, 976 }, { 8, 11, 11, 0, 1552 }, { 8, 12, 11, 0, 96 }, { 8, 13, 12, 0, 2752 }, { 8, 14, 12, 0, 576 }, { 8, 15, 12, 0, 640 }, { 9, 0, 9, 0, 452 }, { 9, 1, 8, 0, 68 }, { 9, 2, 9, 0, 388 }, { 9, 3, 9, 0, 120 }, { 9, 4, 9, 0, 184 }, { 9, 5, 9, 0, 280 }, { 9, 6, 10, 0, 104 }, { 9, 7, 10, 0, 200 }, { 9, 8, 10, 0, 776 }, { 9, 9, 11, 0, 688 }, { 9, 10, 11, 0, 1808 }, { 9, 11, 11, 0, 864 }, { 9, 12, 11, 0, 800 }, { 9, 13, 12, 0, 3648 }, { 9, 14, 12, 0, 3712 }, { 9, 15, 12, 0, 3840 }, { 10, 0, 10, 0, 728 }, { 10, 1, 9, 0, 344 }, { 10, 2, 9, 0, 408 }, { 10, 3, 9, 0, 488 }, { 10, 4, 10, 0, 360 }, { 10, 5, 10, 0, 296 }, { 10, 6, 10, 0, 368 }, { 10, 7, 10, 0, 624 }, { 10, 8, 10, 0, 48 }, { 10, 9, 11, 0, 144 }, { 10, 10, 11, 0, 1248 }, { 10, 11, 11, 0, 1184 }, { 10, 12, 11, 0, 1856 }, { 10, 13, 12, 0, 3456 }, { 10, 14, 13, 0, 3968 }, { 10, 15, 12, 0, 2304 }, { 11, 0, 10, 0, 424 }, { 11, 1, 9, 0, 168 }, { 11, 2, 9, 0, 40 }, { 11, 3, 9, 0, 328 }, { 11, 4, 10, 0, 392 }, { 11, 5, 10, 0, 8 }, { 11, 6, 10, 0, 176 }, { 11, 7, 10, 0, 848 }, { 11, 8, 11, 0, 784 }, { 11, 9, 11, 0, 1888 }, { 11, 10, 11, 0, 672 }, { 11, 11, 11, 0, 1216 }, { 11, 12, 12, 0, 2944 }, { 11, 13, 12, 0, 1152 }, { 11, 14, 12, 0, 3328 }, { 11, 15, 13, 0, 6656 }, { 12, 0, 11, 0, 880 }, { 12, 1, 10, 0, 136 }, { 12, 2, 9, 0, 240 }, { 12, 3, 10, 0, 944 }, { 12, 4, 10, 0, 304 }, { 12, 5, 10, 0, 464 }, { 12, 6, 11, 0, 656 }, { 12, 7, 11, 0, 1040 }, { 12, 8, 11, 0, 1120 }, { 12, 9, 11, 0, 1824 }, { 12, 10, 11, 0, 192 }, { 12, 11, 11, 0, 64 }, { 12, 12, 12, 0, 1664 }, { 12, 13, 12, 0, 2816 }, { 12, 14, 13, 0, 3584 }, { 12, 15, 13, 0, 7168 }, { 13, 0, 11, 0, 1744 }, { 13, 1, 10, 0, 208 }, { 13, 2, 10, 0, 912 }, { 13, 3, 10, 0, 400 }, { 13, 4, 10, 0, 272 }, { 13, 5, 11, 0, 2016 }, { 13, 6, 11, 0, 352 }, { 13, 7, 11, 0, 1440 }, { 13, 8, 11, 0, 1984 }, { 13, 9, 12, 0, 704 }, { 13, 10, 12, 0, 896 }, { 13, 11, 12, 0, 3200 }, { 13, 12, 12, 0, 1792 }, { 13, 13, 12, 0, 256 }, { 13, 14, 13, 0, 4608 }, { 13, 15, 13, 0, 6144 }, { 14, 0, 12, 0, 3552 }, { 14, 1, 11, 0, 480 }, { 14, 2, 11, 0, 736 }, { 14, 3, 11, 0, 1376 }, { 14, 4, 11, 0, 1952 }, { 14, 5, 11, 0, 1696 }, { 14, 6, 11, 0, 32 }, { 14, 7, 11, 0, 832 }, { 14, 8, 12, 0, 2624 }, { 14, 9, 12, 0, 384 }, { 14, 10, 12, 0, 2176 }, { 14, 11, 12, 0, 768 }, { 14, 12, 13, 0, 7680 }, { 14, 13, 13, 0, 2560 }, { 14, 14, 12, 0, 1024 }, { 14, 15, 13, 0, 4096 }, { 15, 0, 12, 0, 3616 }, { 15, 1, 11, 0, 1312 }, { 15, 2, 11, 0, 544 }, { 15, 3, 11, 0, 960 }, { 15, 4, 11, 0, 448 }, { 15, 5, 11, 0, 320 }, { 15, 6, 11, 0, 1088 }, { 15, 7, 12, 0, 1408 }, { 15, 8, 12, 0, 2688 }, { 15, 9, 12, 0, 128 }, { 15, 10, 12, 0, 1280 }, { 15, 11, 12, 0, 1536 }, { 15, 12, 13, 0, 512 }, { 15, 13, 13, 0, 3072 }, { 15, 14, 13, 0, 2048 }, { 15, 15, 13, 0, 0 }, { 100, 100, 100, 0, 0 }, }; const struct mp3decthing var700566b8[] = { { 0, 0, 1, 0, 1 }, { 0, 1, 4, 0, 10 }, { 0, 2, 6, 0, 28 }, { 0, 3, 8, 0, 52 }, { 0, 4, 9, 0, 164 }, { 0, 5, 9, 0, 504 }, { 0, 6, 10, 0, 472 }, { 0, 7, 10, 0, 744 }, { 0, 8, 11, 0, 424 }, { 0, 9, 11, 0, 1352 }, { 0, 10, 11, 0, 648 }, { 0, 11, 12, 0, 1264 }, { 0, 12, 12, 0, 2160 }, { 0, 13, 12, 0, 3120 }, { 0, 14, 13, 0, 976 }, { 0, 15, 9, 0, 272 }, { 1, 0, 3, 0, 6 }, { 1, 1, 4, 0, 2 }, { 1, 2, 6, 0, 12 }, { 1, 3, 7, 0, 20 }, { 1, 4, 8, 0, 196 }, { 1, 5, 9, 0, 248 }, { 1, 6, 9, 0, 344 }, { 1, 7, 9, 0, 488 }, { 1, 8, 10, 0, 808 }, { 1, 9, 10, 0, 840 }, { 1, 10, 10, 0, 136 }, { 1, 11, 11, 0, 1904 }, { 1, 12, 12, 0, 2352 }, { 1, 13, 11, 0, 1712 }, { 1, 14, 12, 0, 3888 }, { 1, 15, 8, 0, 144 }, { 2, 0, 6, 0, 60 }, { 2, 1, 6, 0, 44 }, { 2, 2, 7, 0, 116 }, { 2, 3, 8, 0, 100 }, { 2, 4, 9, 0, 388 }, { 2, 5, 9, 0, 184 }, { 2, 6, 10, 0, 920 }, { 2, 7, 10, 0, 360 }, { 2, 8, 11, 0, 1064 }, { 2, 9, 10, 0, 72 }, { 2, 10, 11, 0, 2032 }, { 2, 11, 11, 0, 1392 }, { 2, 12, 11, 0, 944 }, { 2, 13, 12, 0, 2224 }, { 2, 14, 12, 0, 1840 }, { 2, 15, 9, 0, 16 }, { 3, 0, 8, 0, 180 }, { 3, 1, 7, 0, 84 }, { 3, 2, 8, 0, 228 }, { 3, 3, 9, 0, 324 }, { 3, 4, 9, 0, 4 }, { 3, 5, 10, 0, 312 }, { 3, 6, 10, 0, 792 }, { 3, 7, 10, 0, 936 }, { 3, 8, 11, 0, 968 }, { 3, 9, 11, 0, 392 }, { 3, 10, 12, 0, 1008 }, { 3, 11, 12, 0, 688 }, { 3, 12, 12, 0, 3632 }, { 3, 13, 13, 0, 6192 }, { 3, 14, 13, 0, 5840 }, { 3, 15, 10, 0, 352 }, { 4, 0, 9, 0, 420 }, { 4, 1, 8, 0, 36 }, { 4, 2, 9, 0, 68 }, { 4, 3, 9, 0, 260 }, { 4, 4, 10, 0, 824 }, { 4, 5, 10, 0, 664 }, { 4, 6, 11, 0, 1640 }, { 4, 7, 11, 0, 296 }, { 4, 8, 11, 0, 1736 }, { 4, 9, 12, 0, 264 }, { 4, 10, 12, 0, 1776 }, { 4, 11, 12, 0, 1136 }, { 4, 12, 13, 0, 6704 }, { 4, 13, 13, 0, 4048 }, { 4, 14, 13, 0, 2768 }, { 4, 15, 9, 0, 288 }, { 5, 0, 9, 0, 132 }, { 5, 1, 8, 0, 120 }, { 5, 2, 9, 0, 440 }, { 5, 3, 9, 0, 56 }, { 5, 4, 10, 0, 408 }, { 5, 5, 11, 0, 1256 }, { 5, 6, 11, 0, 1448 }, { 5, 7, 12, 0, 2312 }, { 5, 8, 11, 0, 904 }, { 5, 9, 12, 0, 3056 }, { 5, 10, 12, 0, 368 }, { 5, 11, 13, 0, 304 }, { 5, 12, 13, 0, 1072 }, { 5, 13, 13, 0, 3024 }, { 5, 14, 14, 0, 12128 }, { 5, 15, 10, 0, 32 }, { 6, 0, 10, 0, 984 }, { 6, 1, 9, 0, 216 }, { 6, 2, 9, 0, 88 }, { 6, 3, 10, 0, 152 }, { 6, 4, 11, 0, 232 }, { 6, 5, 11, 0, 616 }, { 6, 6, 11, 0, 40 }, { 6, 7, 11, 0, 1288 }, { 6, 8, 12, 0, 2056 }, { 6, 9, 12, 0, 752 }, { 6, 10, 12, 0, 624 }, { 6, 11, 12, 0, 2480 }, { 6, 12, 13, 0, 4144 }, { 6, 13, 13, 0, 3792 }, { 6, 14, 14, 0, 13520 }, { 6, 15, 10, 0, 320 }, { 7, 0, 10, 0, 280 }, { 7, 1, 9, 0, 24 }, { 7, 2, 10, 0, 872 }, { 7, 3, 10, 0, 104 }, { 7, 4, 11, 0, 1320 }, { 7, 5, 11, 0, 1480 }, { 7, 6, 11, 0, 328 }, { 7, 7, 12, 0, 2568 }, { 7, 8, 12, 0, 496 }, { 7, 9, 13, 0, 7472 }, { 7, 10, 13, 0, 5680 }, { 7, 11, 13, 0, 1488 }, { 7, 12, 13, 0, 2000 }, { 7, 13, 15, 0, 20320 }, { 7, 14, 15, 0, 5984 }, { 7, 15, 10, 0, 64 }, { 8, 0, 10, 0, 680 }, { 8, 1, 10, 0, 168 }, { 8, 2, 10, 0, 552 }, { 8, 3, 11, 0, 1992 }, { 8, 4, 11, 0, 456 }, { 8, 5, 11, 0, 1928 }, { 8, 6, 12, 0, 520 }, { 8, 7, 12, 0, 2544 }, { 8, 8, 13, 0, 6832 }, { 8, 9, 13, 0, 4400 }, { 8, 10, 13, 0, 560 }, { 8, 11, 13, 0, 8144 }, { 8, 12, 14, 0, 15056 }, { 8, 13, 14, 0, 9424 }, { 8, 14, 14, 0, 2256 }, { 8, 15, 10, 0, 896 }, { 9, 0, 11, 0, 712 }, { 9, 1, 10, 0, 200 }, { 9, 2, 10, 0, 584 }, { 9, 3, 11, 0, 1416 }, { 9, 4, 11, 0, 1544 }, { 9, 5, 12, 0, 8 }, { 9, 6, 12, 0, 2800 }, { 9, 7, 13, 0, 2736 }, { 9, 8, 13, 0, 3376 }, { 9, 9, 13, 0, 2608 }, { 9, 10, 13, 0, 48 }, { 9, 11, 14, 0, 16080 }, { 9, 12, 13, 0, 7376 }, { 9, 13, 14, 0, 6352 }, { 9, 14, 13, 0, 208 }, { 9, 15, 11, 0, 1664 }, { 10, 0, 11, 0, 1672 }, { 10, 1, 11, 0, 1032 }, { 10, 2, 10, 0, 776 }, { 10, 3, 11, 0, 1520 }, { 10, 4, 12, 0, 3824 }, { 10, 5, 12, 0, 2416 }, { 10, 6, 12, 0, 2672 }, { 10, 7, 12, 0, 3504 }, { 10, 8, 13, 0, 4656 }, { 10, 9, 14, 0, 14800 }, { 10, 10, 14, 0, 8656 }, { 10, 11, 14, 0, 720 }, { 10, 12, 15, 0, 22368 }, { 10, 13, 15, 0, 10080 }, { 10, 14, 14, 0, 15200 }, { 10, 15, 10, 0, 128 }, { 11, 0, 12, 0, 3312 }, { 11, 1, 11, 0, 240 }, { 11, 2, 11, 0, 880 }, { 11, 3, 11, 0, 1648 }, { 11, 4, 12, 0, 3184 }, { 11, 5, 12, 0, 4016 }, { 11, 6, 13, 0, 1584 }, { 11, 7, 14, 0, 5584 }, { 11, 8, 14, 0, 6608 }, { 11, 9, 14, 0, 464 }, { 11, 10, 14, 0, 8912 }, { 11, 11, 14, 0, 1232 }, { 11, 12, 14, 0, 4304 }, { 11, 13, 13, 0, 8032 }, { 11, 14, 14, 0, 2912 }, { 11, 15, 11, 0, 768 }, { 12, 0, 12, 0, 1328 }, { 12, 1, 12, 0, 112 }, { 12, 2, 12, 0, 1968 }, { 12, 3, 12, 0, 1456 }, { 12, 4, 12, 0, 432 }, { 12, 5, 13, 0, 5168 }, { 12, 6, 13, 0, 2096 }, { 12, 7, 13, 0, 6096 }, { 12, 8, 13, 0, 1744 }, { 12, 9, 15, 0, 3936 }, { 12, 10, 14, 0, 14176 }, { 12, 11, 14, 0, 12496 }, { 12, 12, 14, 0, 1888 }, { 12, 13, 14, 0, 11104 }, { 12, 14, 16, 0, 864 }, { 12, 15, 11, 0, 256 }, { 13, 0, 14, 0, 13776 }, { 13, 1, 12, 0, 3248 }, { 13, 2, 12, 0, 1200 }, { 13, 3, 12, 0, 176 }, { 13, 4, 13, 0, 2512 }, { 13, 5, 13, 0, 7120 }, { 13, 6, 14, 0, 7888 }, { 13, 7, 14, 0, 13008 }, { 13, 8, 14, 0, 5328 }, { 13, 9, 16, 0, 58208 }, { 13, 10, 15, 0, 26464 }, { 13, 11, 15, 0, 23392 }, { 13, 12, 15, 0, 7008 }, { 13, 13, 17, 0, 99168 }, { 13, 14, 15, 0, 17248 }, { 13, 15, 11, 0, 512 }, { 14, 0, 13, 0, 5072 }, { 14, 1, 13, 0, 4560 }, { 14, 2, 11, 0, 816 }, { 14, 3, 12, 0, 3536 }, { 14, 4, 14, 0, 6864 }, { 14, 5, 14, 0, 4816 }, { 14, 6, 13, 0, 3280 }, { 14, 7, 14, 0, 14544 }, { 14, 8, 14, 0, 10448 }, { 14, 9, 15, 0, 9056 }, { 14, 10, 16, 0, 25440 }, { 14, 11, 15, 0, 29536 }, { 14, 12, 17, 0, 33632 }, { 14, 13, 15, 0, 13152 }, { 14, 14, 14, 0, 4960 }, { 14, 15, 11, 0, 0 }, { 15, 0, 9, 0, 96 }, { 15, 1, 8, 0, 80 }, { 15, 2, 8, 0, 224 }, { 15, 3, 9, 0, 416 }, { 15, 4, 9, 0, 160 }, { 15, 5, 10, 0, 544 }, { 15, 6, 10, 0, 832 }, { 15, 7, 10, 0, 576 }, { 15, 8, 11, 0, 1408 }, { 15, 9, 11, 0, 384 }, { 15, 10, 11, 0, 640 }, { 15, 11, 11, 0, 1792 }, { 15, 12, 11, 0, 1280 }, { 15, 13, 11, 0, 1536 }, { 15, 14, 11, 0, 1024 }, { 15, 15, 8, 0, 192 }, { 100, 100, 100, 0, 0 }, }; const struct mp3decthing var70056ec0[] = { { 0, 0, 4, 0, 15 }, { 0, 1, 4, 0, 11 }, { 0, 2, 6, 0, 29 }, { 0, 3, 7, 0, 5 }, { 0, 4, 8, 0, 73 }, { 0, 5, 9, 0, 193 }, { 0, 6, 9, 0, 62 }, { 0, 7, 10, 0, 310 }, { 0, 8, 10, 0, 342 }, { 0, 9, 11, 0, 1482 }, { 0, 10, 11, 0, 1418 }, { 0, 11, 11, 0, 1162 }, { 0, 12, 11, 0, 1458 }, { 0, 13, 11, 0, 1282 }, { 0, 14, 12, 0, 258 }, { 0, 15, 9, 0, 52 }, { 1, 0, 4, 0, 7 }, { 1, 1, 4, 0, 3 }, { 1, 2, 5, 0, 21 }, { 1, 3, 6, 0, 25 }, { 1, 4, 7, 0, 113 }, { 1, 5, 8, 0, 65 }, { 1, 6, 8, 0, 94 }, { 1, 7, 9, 0, 54 }, { 1, 8, 9, 0, 278 }, { 1, 9, 9, 0, 198 }, { 1, 10, 10, 0, 906 }, { 1, 11, 10, 0, 618 }, { 1, 12, 10, 0, 1010 }, { 1, 13, 10, 0, 594 }, { 1, 14, 10, 0, 930 }, { 1, 15, 8, 0, 84 }, { 2, 0, 6, 0, 61 }, { 2, 1, 5, 0, 13 }, { 2, 2, 6, 0, 37 }, { 2, 3, 7, 0, 41 }, { 2, 4, 7, 0, 17 }, { 2, 5, 8, 0, 1 }, { 2, 6, 8, 0, 30 }, { 2, 7, 9, 0, 374 }, { 2, 8, 9, 0, 486 }, { 2, 9, 9, 0, 134 }, { 2, 10, 9, 0, 218 }, { 2, 11, 10, 0, 170 }, { 2, 12, 10, 0, 882 }, { 2, 13, 10, 0, 914 }, { 2, 14, 11, 0, 1474 }, { 2, 15, 7, 0, 36 }, { 3, 0, 7, 0, 69 }, { 3, 1, 6, 0, 57 }, { 3, 2, 7, 0, 105 }, { 3, 3, 7, 0, 49 }, { 3, 4, 8, 0, 97 }, { 3, 5, 8, 0, 190 }, { 3, 6, 8, 0, 46 }, { 3, 7, 9, 0, 118 }, { 3, 8, 9, 0, 102 }, { 3, 9, 9, 0, 250 }, { 3, 10, 9, 0, 154 }, { 3, 11, 10, 0, 650 }, { 3, 12, 10, 0, 946 }, { 3, 13, 10, 0, 658 }, { 3, 14, 10, 0, 962 }, { 3, 15, 7, 0, 4 }, { 4, 0, 8, 0, 201 }, { 4, 1, 7, 0, 9 }, { 4, 2, 7, 0, 81 }, { 4, 3, 8, 0, 225 }, { 4, 4, 8, 0, 254 }, { 4, 5, 8, 0, 110 }, { 4, 6, 8, 0, 14 }, { 4, 7, 9, 0, 150 }, { 4, 8, 9, 0, 38 }, { 4, 9, 9, 0, 122 }, { 4, 10, 10, 0, 26 }, { 4, 11, 10, 0, 778 }, { 4, 12, 10, 0, 306 }, { 4, 13, 10, 0, 738 }, { 4, 14, 11, 0, 450 }, { 4, 15, 7, 0, 56 }, { 5, 0, 9, 0, 449 }, { 5, 1, 7, 0, 33 }, { 5, 2, 8, 0, 129 }, { 5, 3, 8, 0, 126 }, { 5, 4, 8, 0, 238 }, { 5, 5, 8, 0, 78 }, { 5, 6, 9, 0, 214 }, { 5, 7, 9, 0, 166 }, { 5, 8, 9, 0, 6 }, { 5, 9, 9, 0, 90 }, { 5, 10, 10, 0, 682 }, { 5, 11, 10, 0, 754 }, { 5, 12, 10, 0, 722 }, { 5, 13, 10, 0, 610 }, { 5, 14, 10, 0, 386 }, { 5, 15, 7, 0, 24 }, { 6, 0, 9, 0, 318 }, { 6, 1, 8, 0, 222 }, { 6, 2, 8, 0, 158 }, { 6, 3, 8, 0, 174 }, { 6, 4, 8, 0, 142 }, { 6, 5, 9, 0, 470 }, { 6, 6, 9, 0, 230 }, { 6, 7, 9, 0, 390 }, { 6, 8, 9, 0, 314 }, { 6, 9, 10, 0, 874 }, { 6, 10, 10, 0, 330 }, { 6, 11, 10, 0, 178 }, { 6, 12, 10, 0, 786 }, { 6, 13, 10, 0, 34 }, { 6, 14, 11, 0, 130 }, { 6, 15, 7, 0, 40 }, { 7, 0, 10, 0, 822 }, { 7, 1, 8, 0, 206 }, { 7, 2, 8, 0, 246 }, { 7, 3, 8, 0, 182 }, { 7, 4, 9, 0, 406 }, { 7, 5, 9, 0, 422 }, { 7, 6, 9, 0, 70 }, { 7, 7, 9, 0, 442 }, { 7, 8, 10, 0, 538 }, { 7, 9, 10, 0, 202 }, { 7, 10, 10, 0, 626 }, { 7, 11, 10, 0, 338 }, { 7, 12, 10, 0, 866 }, { 7, 13, 11, 0, 1602 }, { 7, 14, 11, 0, 1524 }, { 7, 15, 8, 0, 136 }, { 8, 0, 10, 0, 854 }, { 8, 1, 9, 0, 86 }, { 8, 2, 9, 0, 22 }, { 8, 3, 9, 0, 358 }, { 8, 4, 9, 0, 294 }, { 8, 5, 9, 0, 262 }, { 8, 6, 9, 0, 186 }, { 8, 7, 9, 0, 282 }, { 8, 8, 9, 0, 298 }, { 8, 9, 10, 0, 10 }, { 8, 10, 10, 0, 978 }, { 8, 11, 10, 0, 482 }, { 8, 12, 10, 0, 194 }, { 8, 13, 11, 0, 514 }, { 8, 14, 11, 0, 1268 }, { 8, 15, 8, 0, 8 }, { 9, 0, 10, 0, 970 }, { 9, 1, 9, 0, 454 }, { 9, 2, 9, 0, 326 }, { 9, 3, 9, 0, 506 }, { 9, 4, 9, 0, 378 }, { 9, 5, 9, 0, 346 }, { 9, 6, 9, 0, 234 }, { 9, 7, 10, 0, 714 }, { 9, 8, 10, 0, 522 }, { 9, 9, 10, 0, 562 }, { 9, 10, 10, 0, 530 }, { 9, 11, 10, 0, 802 }, { 9, 12, 11, 0, 1154 }, { 9, 13, 11, 0, 1780 }, { 9, 14, 11, 0, 1652 }, { 9, 15, 8, 0, 208 }, { 10, 0, 11, 0, 458 }, { 10, 1, 9, 0, 58 }, { 10, 2, 9, 0, 474 }, { 10, 3, 9, 0, 410 }, { 10, 4, 9, 0, 490 }, { 10, 5, 10, 0, 106 }, { 10, 6, 10, 0, 842 }, { 10, 7, 10, 0, 370 }, { 10, 8, 10, 0, 50 }, { 10, 9, 10, 0, 274 }, { 10, 10, 10, 0, 674 }, { 10, 11, 11, 0, 578 }, { 10, 12, 11, 0, 2036 }, { 10, 13, 11, 0, 1396 }, { 10, 14, 11, 0, 948 }, { 10, 15, 8, 0, 80 }, { 11, 0, 11, 0, 394 }, { 11, 1, 10, 0, 362 }, { 11, 2, 9, 0, 426 }, { 11, 3, 9, 0, 42 }, { 11, 4, 9, 0, 74 }, { 11, 5, 10, 0, 498 }, { 11, 6, 10, 0, 690 }, { 11, 7, 10, 0, 850 }, { 11, 8, 10, 0, 994 }, { 11, 9, 10, 0, 162 }, { 11, 10, 10, 0, 898 }, { 11, 11, 11, 0, 1026 }, { 11, 12, 11, 0, 1908 }, { 11, 13, 11, 0, 116 }, { 11, 14, 11, 0, 692 }, { 11, 15, 8, 0, 96 }, { 12, 0, 11, 0, 138 }, { 12, 1, 10, 0, 266 }, { 12, 2, 10, 0, 242 }, { 12, 3, 10, 0, 114 }, { 12, 4, 10, 0, 818 }, { 12, 5, 10, 0, 466 }, { 12, 6, 10, 0, 146 }, { 12, 7, 10, 0, 226 }, { 12, 8, 10, 0, 706 }, { 12, 9, 10, 0, 642 }, { 12, 10, 11, 0, 2 }, { 12, 11, 11, 0, 244 }, { 12, 12, 11, 0, 628 }, { 12, 13, 11, 0, 436 }, { 12, 14, 11, 0, 1844 }, { 12, 15, 8, 0, 32 }, { 13, 0, 11, 0, 434 }, { 13, 1, 10, 0, 210 }, { 13, 2, 10, 0, 82 }, { 13, 3, 10, 0, 402 }, { 13, 4, 10, 0, 18 }, { 13, 5, 10, 0, 354 }, { 13, 6, 10, 0, 546 }, { 13, 7, 10, 0, 322 }, { 13, 8, 11, 0, 1538 }, { 13, 9, 11, 0, 500 }, { 13, 10, 11, 0, 884 }, { 13, 11, 11, 0, 1140 }, { 13, 12, 11, 0, 1460 }, { 13, 13, 11, 0, 1204 }, { 13, 14, 11, 0, 1332 }, { 13, 15, 8, 0, 64 }, { 14, 0, 12, 0, 2306 }, { 14, 1, 10, 0, 98 }, { 14, 2, 10, 0, 418 }, { 14, 3, 10, 0, 290 }, { 14, 4, 10, 0, 834 }, { 14, 5, 10, 0, 66 }, { 14, 6, 10, 0, 770 }, { 14, 7, 11, 0, 1012 }, { 14, 8, 11, 0, 756 }, { 14, 9, 11, 0, 372 }, { 14, 10, 11, 0, 1972 }, { 14, 11, 11, 0, 1716 }, { 14, 12, 11, 0, 180 }, { 14, 13, 11, 0, 820 }, { 14, 14, 11, 0, 308 }, { 14, 15, 8, 0, 0 }, { 15, 0, 8, 0, 212 }, { 15, 1, 7, 0, 20 }, { 15, 2, 7, 0, 100 }, { 15, 3, 7, 0, 68 }, { 15, 4, 7, 0, 120 }, { 15, 5, 7, 0, 88 }, { 15, 6, 7, 0, 104 }, { 15, 7, 7, 0, 72 }, { 15, 8, 7, 0, 112 }, { 15, 9, 7, 0, 48 }, { 15, 10, 7, 0, 16 }, { 15, 11, 8, 0, 224 }, { 15, 12, 8, 0, 160 }, { 15, 13, 8, 0, 192 }, { 15, 14, 8, 0, 128 }, { 15, 15, 4, 0, 12 }, { 100, 100, 100, 0, 0 }, }; const struct mp3decthing var700576c8[] = { { 0, 0, 1, 0, 1 }, { 1, 1, 4, 0, 10 }, { 2, 2, 4, 0, 2 }, { 3, 3, 5, 0, 20 }, { 4, 4, 4, 0, 6 }, { 5, 5, 6, 0, 40 }, { 6, 6, 5, 0, 4 }, { 7, 7, 6, 0, 8 }, { 8, 8, 4, 0, 14 }, { 9, 9, 5, 0, 24 }, { 10, 10, 5, 0, 12 }, { 11, 11, 6, 0, 0 }, { 12, 12, 5, 0, 28 }, { 13, 13, 6, 0, 16 }, { 14, 14, 6, 0, 48 }, { 15, 15, 6, 0, 32 }, { 100, 100, 100, 0, 0 }, }; const struct mp3decthing var70057750[] = { { 0, 0, 4, 0, 15 }, { 1, 1, 4, 0, 7 }, { 2, 2, 4, 0, 11 }, { 3, 3, 4, 0, 3 }, { 4, 4, 4, 0, 13 }, { 5, 5, 4, 0, 5 }, { 6, 6, 4, 0, 9 }, { 7, 7, 4, 0, 1 }, { 8, 8, 4, 0, 14 }, { 9, 9, 4, 0, 6 }, { 10, 10, 4, 0, 10 }, { 11, 11, 4, 0, 2 }, { 12, 12, 4, 0, 12 }, { 13, 13, 4, 0, 4 }, { 14, 14, 4, 0, 8 }, { 15, 15, 4, 0, 0 }, { 100, 100, 100, 0, 0 }, }; struct mp3decthing *var8005f670[] = { NULL, (struct mp3decthing *)var70054b40, (struct mp3decthing *)var70054b68, (struct mp3decthing *)var70054bb8, (struct mp3decthing *)var70054c08, (struct mp3decthing *)var70054c08, (struct mp3decthing *)var70054c90, (struct mp3decthing *)var70054d18, (struct mp3decthing *)var70054e40, (struct mp3decthing *)var70054f68, (struct mp3decthing *)var70055090, (struct mp3decthing *)var70055298, (struct mp3decthing *)var700554a0, (struct mp3decthing *)var700556a8, (struct mp3decthing *)var70055eb0, (struct mp3decthing *)var70055eb0, (struct mp3decthing *)var700566b8, (struct mp3decthing *)var700566b8, (struct mp3decthing *)var700566b8, (struct mp3decthing *)var700566b8, (struct mp3decthing *)var700566b8, (struct mp3decthing *)var700566b8, (struct mp3decthing *)var700566b8, (struct mp3decthing *)var700566b8, (struct mp3decthing *)var70056ec0, (struct mp3decthing *)var70056ec0, (struct mp3decthing *)var70056ec0, (struct mp3decthing *)var70056ec0, (struct mp3decthing *)var70056ec0, (struct mp3decthing *)var70056ec0, (struct mp3decthing *)var70056ec0, (struct mp3decthing *)var70056ec0, (struct mp3decthing *)var700576c8, (struct mp3decthing *)var70057750, }; u8 *var8005f6f8 = NULL; u8 *var8005f6fc = NULL; const s32 var700577d8[34] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 6, 8, 10, 13, 4, 5, 6, 7, 8, 9, 11, 13, -1, -1, }; const s16 var70057860[2][3][22] = { { { 5, 11, 17, 23, 29, 35, 43, 53, 65, 79, 95, 115, 139, 167, 199, 237, 283, 335, 395, 463, 521, 575 }, { 5, 11, 17, 23, 29, 35, 43, 53, 65, 79, 95, 113, 135, 161, 193, 231, 277, 331, 393, 463, 539, 575 }, { 5, 11, 17, 23, 29, 35, 43, 53, 65, 79, 95, 115, 139, 167, 199, 237, 283, 335, 395, 463, 521, 575 }, }, { { 3, 7, 11, 15, 19, 23, 29, 35, 43, 51, 61, 73, 89, 109, 133, 161, 195, 237, 287, 341, 417, 575 }, { 3, 7, 11, 15, 19, 23, 29, 35, 41, 49, 59, 71, 87, 105, 127, 155, 189, 229, 275, 329, 383, 575 }, { 3, 7, 11, 15, 19, 23, 29, 35, 43, 53, 65, 81, 101, 125, 155, 193, 239, 295, 363, 447, 549, 575 }, }, }; const u8 var70057968[2][3][13] = { { { 3, 7, 11, 17, 23, 31, 41, 55, 73, 99, 131, 173, 191 }, { 3, 7, 11, 17, 25, 35, 47, 61, 79, 103, 135, 179, 191 }, { 3, 7, 11, 17, 25, 35, 47, 61, 79, 103, 133, 173, 191 }, }, { { 3, 7, 11, 15, 21, 29, 39, 51, 65, 83, 105, 135, 191 }, { 3, 7, 11, 15, 21, 27, 37, 49, 63, 79, 99, 125, 191 }, { 3, 7, 11, 15, 21, 29, 41, 57, 77, 103, 137, 179, 191 }, }, }; struct mp3decthing2 { s16 unk00[23]; s16 unk2e[14]; }; const struct mp3decthing2 var700579b8[6] = { { { 0, 6, 12, 18, 24, 30, 36, 44, 54, 66, 80, 96, 116, 140, 168, 200, 238, 284, 336, 396, 464, 522, 576 }, { 0, 4, 8, 12, 18, 24, 32, 42, 56, 74, 100, 132, 174, 192 } }, { { 0, 6, 12, 18, 24, 30, 36, 44, 54, 66, 80, 96, 114, 136, 162, 194, 232, 278, 330, 394, 464, 540, 576 }, { 0, 4, 8, 12, 18, 26, 36, 48, 62, 80, 104, 136, 180, 192 } }, { { 0, 6, 12, 18, 24, 30, 36, 44, 54, 66, 80, 96, 116, 140, 168, 200, 238, 284, 336, 396, 464, 522, 576 }, { 0, 4, 8, 12, 18, 26, 36, 48, 62, 80, 104, 134, 174, 192 } }, { { 0, 4, 8, 12, 16, 20, 24, 30, 36, 44, 52, 62, 74, 90, 110, 134, 162, 196, 238, 288, 342, 418, 576 }, { 0, 4, 8, 12, 16, 22, 30, 40, 52, 66, 84, 106, 136, 192 } }, { { 0, 4, 8, 12, 16, 20, 24, 30, 36, 42, 50, 60, 72, 88, 106, 128, 156, 190, 230, 276, 330, 384, 576 }, { 0, 4, 8, 12, 16, 22, 28, 38, 50, 64, 80, 100, 126, 192 } }, { { 0, 4, 8, 12, 16, 20, 24, 30, 36, 44, 54, 66, 82, 102, 126, 156, 194, 240, 296, 364, 448, 550, 576 }, { 0, 4, 8, 12, 16, 22, 30, 42, 58, 78, 104, 138, 180, 192 } }, }; const u8 var70057b74[] = { 0, 6, 11, 16, 21, 0, 6, 12 }; const u8 var70057b7c[2][16] = { { 0, 0, 0, 0, 3, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4 }, { 0, 1, 2, 3, 0, 1, 2, 3, 1, 2, 3, 1, 2, 3, 2, 3 }, }; const s16 var70057b9c[2][3][576] = { { { 0, 1, 2, 3, 6, 7, 8, 9, 12, 13, 14, 15, 4, 5, 18, 19, 10, 11, 24, 25, 16, 17, 30, 31, 20, 21, 22, 23, 26, 27, 28, 29, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 90, 91, 78, 79, 80, 81, 82, 83, 96, 97, 84, 85, 86, 87, 88, 89, 102, 103, 92, 93, 94, 95, 108, 109, 110, 111, 112, 113, 98, 99, 100, 101, 114, 115, 116, 117, 118, 119, 104, 105, 106, 107, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 144, 145, 146, 147, 148, 149, 162, 163, 132, 133, 134, 135, 136, 137, 150, 151, 152, 153, 154, 155, 168, 169, 138, 139, 140, 141, 142, 143, 156, 157, 158, 159, 160, 161, 174, 175, 164, 165, 166, 167, 180, 181, 182, 183, 184, 185, 198, 199, 200, 201, 202, 203, 216, 217, 170, 171, 172, 173, 186, 187, 188, 189, 190, 191, 204, 205, 206, 207, 208, 209, 222, 223, 176, 177, 178, 179, 192, 193, 194, 195, 196, 197, 210, 211, 212, 213, 214, 215, 228, 229, 218, 219, 220, 221, 234, 235, 236, 237, 238, 239, 252, 253, 254, 255, 256, 257, 270, 271, 272, 273, 274, 275, 288, 289, 290, 291, 224, 225, 226, 227, 240, 241, 242, 243, 244, 245, 258, 259, 260, 261, 262, 263, 276, 277, 278, 279, 280, 281, 294, 295, 296, 297, 230, 231, 232, 233, 246, 247, 248, 249, 250, 251, 264, 265, 266, 267, 268, 269, 282, 283, 284, 285, 286, 287, 300, 301, 302, 303, 292, 293, 306, 307, 308, 309, 310, 311, 324, 325, 326, 327, 328, 329, 342, 343, 344, 345, 346, 347, 360, 361, 362, 363, 364, 365, 378, 379, 380, 381, 382, 383, 298, 299, 312, 313, 314, 315, 316, 317, 330, 331, 332, 333, 334, 335, 348, 349, 350, 351, 352, 353, 366, 367, 368, 369, 370, 371, 384, 385, 386, 387, 388, 389, 304, 305, 318, 319, 320, 321, 322, 323, 336, 337, 338, 339, 340, 341, 354, 355, 356, 357, 358, 359, 372, 373, 374, 375, 376, 377, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 414, 415, 416, 417, 418, 419, 432, 433, 434, 435, 436, 437, 450, 451, 452, 453, 454, 455, 468, 469, 470, 471, 472, 473, 486, 487, 488, 489, 490, 491, 504, 505, 506, 507, 508, 509, 402, 403, 404, 405, 406, 407, 420, 421, 422, 423, 424, 425, 438, 439, 440, 441, 442, 443, 456, 457, 458, 459, 460, 461, 474, 475, 476, 477, 478, 479, 492, 493, 494, 495, 496, 497, 510, 511, 512, 513, 514, 515, 408, 409, 410, 411, 412, 413, 426, 427, 428, 429, 430, 431, 444, 445, 446, 447, 448, 449, 462, 463, 464, 465, 466, 467, 480, 481, 482, 483, 484, 485, 498, 499, 500, 501, 502, 503, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 540, 541, 542, 543, 544, 545, 558, 559, 560, 561, 562, 563, 528, 529, 530, 531, 532, 533, 546, 547, 548, 549, 550, 551, 564, 565, 566, 567, 568, 569, 534, 535, 536, 537, 538, 539, 552, 553, 554, 555, 556, 557, 570, 571, 572, 573, 574, 575, }, { 0, 1, 2, 3, 6, 7, 8, 9, 12, 13, 14, 15, 4, 5, 18, 19, 10, 11, 24, 25, 16, 17, 30, 31, 20, 21, 22, 23, 26, 27, 28, 29, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 72, 73, 60, 61, 62, 63, 64, 65, 78, 79, 66, 67, 68, 69, 70, 71, 84, 85, 74, 75, 76, 77, 90, 91, 92, 93, 94, 95, 80, 81, 82, 83, 96, 97, 98, 99, 100, 101, 86, 87, 88, 89, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 126, 127, 128, 129, 130, 131, 114, 115, 116, 117, 118, 119, 132, 133, 134, 135, 136, 137, 120, 121, 122, 123, 124, 125, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 162, 163, 164, 165, 166, 167, 180, 181, 150, 151, 152, 153, 154, 155, 168, 169, 170, 171, 172, 173, 186, 187, 156, 157, 158, 159, 160, 161, 174, 175, 176, 177, 178, 179, 192, 193, 182, 183, 184, 185, 198, 199, 200, 201, 202, 203, 216, 217, 218, 219, 220, 221, 234, 235, 188, 189, 190, 191, 204, 205, 206, 207, 208, 209, 222, 223, 224, 225, 226, 227, 240, 241, 194, 195, 196, 197, 210, 211, 212, 213, 214, 215, 228, 229, 230, 231, 232, 233, 246, 247, 236, 237, 238, 239, 252, 253, 254, 255, 256, 257, 270, 271, 272, 273, 274, 275, 288, 289, 290, 291, 292, 293, 306, 307, 242, 243, 244, 245, 258, 259, 260, 261, 262, 263, 276, 277, 278, 279, 280, 281, 294, 295, 296, 297, 298, 299, 312, 313, 248, 249, 250, 251, 264, 265, 266, 267, 268, 269, 282, 283, 284, 285, 286, 287, 300, 301, 302, 303, 304, 305, 318, 319, 308, 309, 310, 311, 324, 325, 326, 327, 328, 329, 342, 343, 344, 345, 346, 347, 360, 361, 362, 363, 364, 365, 378, 379, 380, 381, 382, 383, 396, 397, 398, 399, 314, 315, 316, 317, 330, 331, 332, 333, 334, 335, 348, 349, 350, 351, 352, 353, 366, 367, 368, 369, 370, 371, 384, 385, 386, 387, 388, 389, 402, 403, 404, 405, 320, 321, 322, 323, 336, 337, 338, 339, 340, 341, 354, 355, 356, 357, 358, 359, 372, 373, 374, 375, 376, 377, 390, 391, 392, 393, 394, 395, 408, 409, 410, 411, 400, 401, 414, 415, 416, 417, 418, 419, 432, 433, 434, 435, 436, 437, 450, 451, 452, 453, 454, 455, 468, 469, 470, 471, 472, 473, 486, 487, 488, 489, 490, 491, 504, 505, 506, 507, 508, 509, 522, 523, 524, 525, 526, 527, 406, 407, 420, 421, 422, 423, 424, 425, 438, 439, 440, 441, 442, 443, 456, 457, 458, 459, 460, 461, 474, 475, 476, 477, 478, 479, 492, 493, 494, 495, 496, 497, 510, 511, 512, 513, 514, 515, 528, 529, 530, 531, 532, 533, 412, 413, 426, 427, 428, 429, 430, 431, 444, 445, 446, 447, 448, 449, 462, 463, 464, 465, 466, 467, 480, 481, 482, 483, 484, 485, 498, 499, 500, 501, 502, 503, 516, 517, 518, 519, 520, 521, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 558, 559, 560, 561, 562, 563, 546, 547, 548, 549, 550, 551, 564, 565, 566, 567, 568, 569, 552, 553, 554, 555, 556, 557, 570, 571, 572, 573, 574, 575, }, { 0, 1, 2, 3, 6, 7, 8, 9, 12, 13, 14, 15, 4, 5, 18, 19, 10, 11, 24, 25, 16, 17, 30, 31, 20, 21, 22, 23, 26, 27, 28, 29, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 72, 73, 60, 61, 62, 63, 64, 65, 78, 79, 66, 67, 68, 69, 70, 71, 84, 85, 74, 75, 76, 77, 90, 91, 92, 93, 94, 95, 80, 81, 82, 83, 96, 97, 98, 99, 100, 101, 86, 87, 88, 89, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 126, 127, 128, 129, 130, 131, 114, 115, 116, 117, 118, 119, 132, 133, 134, 135, 136, 137, 120, 121, 122, 123, 124, 125, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 162, 163, 164, 165, 166, 167, 180, 181, 150, 151, 152, 153, 154, 155, 168, 169, 170, 171, 172, 173, 186, 187, 156, 157, 158, 159, 160, 161, 174, 175, 176, 177, 178, 179, 192, 193, 182, 183, 184, 185, 198, 199, 200, 201, 202, 203, 216, 217, 218, 219, 220, 221, 234, 235, 188, 189, 190, 191, 204, 205, 206, 207, 208, 209, 222, 223, 224, 225, 226, 227, 240, 241, 194, 195, 196, 197, 210, 211, 212, 213, 214, 215, 228, 229, 230, 231, 232, 233, 246, 247, 236, 237, 238, 239, 252, 253, 254, 255, 256, 257, 270, 271, 272, 273, 274, 275, 288, 289, 290, 291, 292, 293, 306, 307, 242, 243, 244, 245, 258, 259, 260, 261, 262, 263, 276, 277, 278, 279, 280, 281, 294, 295, 296, 297, 298, 299, 312, 313, 248, 249, 250, 251, 264, 265, 266, 267, 268, 269, 282, 283, 284, 285, 286, 287, 300, 301, 302, 303, 304, 305, 318, 319, 308, 309, 310, 311, 324, 325, 326, 327, 328, 329, 342, 343, 344, 345, 346, 347, 360, 361, 362, 363, 364, 365, 378, 379, 380, 381, 382, 383, 396, 397, 314, 315, 316, 317, 330, 331, 332, 333, 334, 335, 348, 349, 350, 351, 352, 353, 366, 367, 368, 369, 370, 371, 384, 385, 386, 387, 388, 389, 402, 403, 320, 321, 322, 323, 336, 337, 338, 339, 340, 341, 354, 355, 356, 357, 358, 359, 372, 373, 374, 375, 376, 377, 390, 391, 392, 393, 394, 395, 408, 409, 398, 399, 400, 401, 414, 415, 416, 417, 418, 419, 432, 433, 434, 435, 436, 437, 450, 451, 452, 453, 454, 455, 468, 469, 470, 471, 472, 473, 486, 487, 488, 489, 490, 491, 504, 505, 506, 507, 508, 509, 404, 405, 406, 407, 420, 421, 422, 423, 424, 425, 438, 439, 440, 441, 442, 443, 456, 457, 458, 459, 460, 461, 474, 475, 476, 477, 478, 479, 492, 493, 494, 495, 496, 497, 510, 511, 512, 513, 514, 515, 410, 411, 412, 413, 426, 427, 428, 429, 430, 431, 444, 445, 446, 447, 448, 449, 462, 463, 464, 465, 466, 467, 480, 481, 482, 483, 484, 485, 498, 499, 500, 501, 502, 503, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 540, 541, 542, 543, 544, 545, 558, 559, 560, 561, 562, 563, 528, 529, 530, 531, 532, 533, 546, 547, 548, 549, 550, 551, 564, 565, 566, 567, 568, 569, 534, 535, 536, 537, 538, 539, 552, 553, 554, 555, 556, 557, 570, 571, 572, 573, 574, 575, }, }, { { 0, 1, 2, 3, 6, 7, 8, 9, 12, 13, 14, 15, 4, 5, 18, 19, 10, 11, 24, 25, 16, 17, 30, 31, 20, 21, 22, 23, 26, 27, 28, 29, 32, 33, 34, 35, 36, 37, 38, 39, 42, 43, 44, 45, 48, 49, 50, 51, 40, 41, 54, 55, 56, 57, 46, 47, 60, 61, 62, 63, 52, 53, 66, 67, 68, 69, 58, 59, 72, 73, 74, 75, 76, 77, 64, 65, 78, 79, 80, 81, 82, 83, 70, 71, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 108, 109, 110, 111, 96, 97, 98, 99, 100, 101, 114, 115, 116, 117, 102, 103, 104, 105, 106, 107, 120, 121, 122, 123, 112, 113, 126, 127, 128, 129, 130, 131, 144, 145, 146, 147, 118, 119, 132, 133, 134, 135, 136, 137, 150, 151, 152, 153, 124, 125, 138, 139, 140, 141, 142, 143, 156, 157, 158, 159, 148, 149, 162, 163, 164, 165, 166, 167, 180, 181, 182, 183, 184, 185, 154, 155, 168, 169, 170, 171, 172, 173, 186, 187, 188, 189, 190, 191, 160, 161, 174, 175, 176, 177, 178, 179, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 216, 217, 218, 219, 220, 221, 234, 235, 236, 237, 238, 239, 204, 205, 206, 207, 208, 209, 222, 223, 224, 225, 226, 227, 240, 241, 242, 243, 244, 245, 210, 211, 212, 213, 214, 215, 228, 229, 230, 231, 232, 233, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 270, 271, 272, 273, 274, 275, 288, 289, 290, 291, 292, 293, 306, 307, 308, 309, 258, 259, 260, 261, 262, 263, 276, 277, 278, 279, 280, 281, 294, 295, 296, 297, 298, 299, 312, 313, 314, 315, 264, 265, 266, 267, 268, 269, 282, 283, 284, 285, 286, 287, 300, 301, 302, 303, 304, 305, 318, 319, 320, 321, 310, 311, 324, 325, 326, 327, 328, 329, 342, 343, 344, 345, 346, 347, 360, 361, 362, 363, 364, 365, 378, 379, 380, 381, 382, 383, 396, 397, 398, 399, 316, 317, 330, 331, 332, 333, 334, 335, 348, 349, 350, 351, 352, 353, 366, 367, 368, 369, 370, 371, 384, 385, 386, 387, 388, 389, 402, 403, 404, 405, 322, 323, 336, 337, 338, 339, 340, 341, 354, 355, 356, 357, 358, 359, 372, 373, 374, 375, 376, 377, 390, 391, 392, 393, 394, 395, 408, 409, 410, 411, 400, 401, 414, 415, 416, 417, 418, 419, 432, 433, 434, 435, 436, 437, 450, 451, 452, 453, 454, 455, 468, 469, 470, 471, 472, 473, 486, 487, 488, 489, 490, 491, 504, 505, 506, 507, 508, 509, 522, 523, 524, 525, 526, 527, 540, 541, 542, 543, 544, 545, 558, 559, 560, 561, 562, 563, 406, 407, 420, 421, 422, 423, 424, 425, 438, 439, 440, 441, 442, 443, 456, 457, 458, 459, 460, 461, 474, 475, 476, 477, 478, 479, 492, 493, 494, 495, 496, 497, 510, 511, 512, 513, 514, 515, 528, 529, 530, 531, 532, 533, 546, 547, 548, 549, 550, 551, 564, 565, 566, 567, 568, 569, 412, 413, 426, 427, 428, 429, 430, 431, 444, 445, 446, 447, 448, 449, 462, 463, 464, 465, 466, 467, 480, 481, 482, 483, 484, 485, 498, 499, 500, 501, 502, 503, 516, 517, 518, 519, 520, 521, 534, 535, 536, 537, 538, 539, 552, 553, 554, 555, 556, 557, 570, 571, 572, 573, 574, 575, }, { 0, 1, 2, 3, 6, 7, 8, 9, 12, 13, 14, 15, 4, 5, 18, 19, 10, 11, 24, 25, 16, 17, 30, 31, 20, 21, 22, 23, 26, 27, 28, 29, 32, 33, 34, 35, 36, 37, 38, 39, 42, 43, 44, 45, 48, 49, 50, 51, 40, 41, 54, 55, 56, 57, 46, 47, 60, 61, 62, 63, 52, 53, 66, 67, 68, 69, 58, 59, 72, 73, 74, 75, 64, 65, 78, 79, 80, 81, 70, 71, 84, 85, 86, 87, 76, 77, 90, 91, 92, 93, 94, 95, 108, 109, 82, 83, 96, 97, 98, 99, 100, 101, 114, 115, 88, 89, 102, 103, 104, 105, 106, 107, 120, 121, 110, 111, 112, 113, 126, 127, 128, 129, 130, 131, 144, 145, 116, 117, 118, 119, 132, 133, 134, 135, 136, 137, 150, 151, 122, 123, 124, 125, 138, 139, 140, 141, 142, 143, 156, 157, 146, 147, 148, 149, 162, 163, 164, 165, 166, 167, 180, 181, 182, 183, 152, 153, 154, 155, 168, 169, 170, 171, 172, 173, 186, 187, 188, 189, 158, 159, 160, 161, 174, 175, 176, 177, 178, 179, 192, 193, 194, 195, 184, 185, 198, 199, 200, 201, 202, 203, 216, 217, 218, 219, 220, 221, 234, 235, 190, 191, 204, 205, 206, 207, 208, 209, 222, 223, 224, 225, 226, 227, 240, 241, 196, 197, 210, 211, 212, 213, 214, 215, 228, 229, 230, 231, 232, 233, 246, 247, 236, 237, 238, 239, 252, 253, 254, 255, 256, 257, 270, 271, 272, 273, 274, 275, 288, 289, 290, 291, 242, 243, 244, 245, 258, 259, 260, 261, 262, 263, 276, 277, 278, 279, 280, 281, 294, 295, 296, 297, 248, 249, 250, 251, 264, 265, 266, 267, 268, 269, 282, 283, 284, 285, 286, 287, 300, 301, 302, 303, 292, 293, 306, 307, 308, 309, 310, 311, 324, 325, 326, 327, 328, 329, 342, 343, 344, 345, 346, 347, 360, 361, 362, 363, 364, 365, 298, 299, 312, 313, 314, 315, 316, 317, 330, 331, 332, 333, 334, 335, 348, 349, 350, 351, 352, 353, 366, 367, 368, 369, 370, 371, 304, 305, 318, 319, 320, 321, 322, 323, 336, 337, 338, 339, 340, 341, 354, 355, 356, 357, 358, 359, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 396, 397, 398, 399, 400, 401, 414, 415, 416, 417, 418, 419, 432, 433, 434, 435, 436, 437, 450, 451, 452, 453, 454, 455, 468, 469, 470, 471, 472, 473, 486, 487, 488, 489, 490, 491, 504, 505, 506, 507, 508, 509, 522, 523, 524, 525, 526, 527, 540, 541, 542, 543, 544, 545, 558, 559, 560, 561, 562, 563, 384, 385, 386, 387, 388, 389, 402, 403, 404, 405, 406, 407, 420, 421, 422, 423, 424, 425, 438, 439, 440, 441, 442, 443, 456, 457, 458, 459, 460, 461, 474, 475, 476, 477, 478, 479, 492, 493, 494, 495, 496, 497, 510, 511, 512, 513, 514, 515, 528, 529, 530, 531, 532, 533, 546, 547, 548, 549, 550, 551, 564, 565, 566, 567, 568, 569, 390, 391, 392, 393, 394, 395, 408, 409, 410, 411, 412, 413, 426, 427, 428, 429, 430, 431, 444, 445, 446, 447, 448, 449, 462, 463, 464, 465, 466, 467, 480, 481, 482, 483, 484, 485, 498, 499, 500, 501, 502, 503, 516, 517, 518, 519, 520, 521, 534, 535, 536, 537, 538, 539, 552, 553, 554, 555, 556, 557, 570, 571, 572, 573, 574, 575, }, { 0, 1, 2, 3, 6, 7, 8, 9, 12, 13, 14, 15, 4, 5, 18, 19, 10, 11, 24, 25, 16, 17, 30, 31, 20, 21, 22, 23, 26, 27, 28, 29, 32, 33, 34, 35, 36, 37, 38, 39, 42, 43, 44, 45, 48, 49, 50, 51, 40, 41, 54, 55, 56, 57, 46, 47, 60, 61, 62, 63, 52, 53, 66, 67, 68, 69, 58, 59, 72, 73, 74, 75, 76, 77, 64, 65, 78, 79, 80, 81, 82, 83, 70, 71, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 108, 109, 110, 111, 112, 113, 96, 97, 98, 99, 100, 101, 114, 115, 116, 117, 118, 119, 102, 103, 104, 105, 106, 107, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 144, 145, 146, 147, 148, 149, 162, 163, 164, 165, 132, 133, 134, 135, 136, 137, 150, 151, 152, 153, 154, 155, 168, 169, 170, 171, 138, 139, 140, 141, 142, 143, 156, 157, 158, 159, 160, 161, 174, 175, 176, 177, 166, 167, 180, 181, 182, 183, 184, 185, 198, 199, 200, 201, 202, 203, 216, 217, 218, 219, 220, 221, 172, 173, 186, 187, 188, 189, 190, 191, 204, 205, 206, 207, 208, 209, 222, 223, 224, 225, 226, 227, 178, 179, 192, 193, 194, 195, 196, 197, 210, 211, 212, 213, 214, 215, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 252, 253, 254, 255, 256, 257, 270, 271, 272, 273, 274, 275, 288, 289, 290, 291, 292, 293, 306, 307, 240, 241, 242, 243, 244, 245, 258, 259, 260, 261, 262, 263, 276, 277, 278, 279, 280, 281, 294, 295, 296, 297, 298, 299, 312, 313, 246, 247, 248, 249, 250, 251, 264, 265, 266, 267, 268, 269, 282, 283, 284, 285, 286, 287, 300, 301, 302, 303, 304, 305, 318, 319, 308, 309, 310, 311, 324, 325, 326, 327, 328, 329, 342, 343, 344, 345, 346, 347, 360, 361, 362, 363, 364, 365, 378, 379, 380, 381, 382, 383, 396, 397, 398, 399, 400, 401, 314, 315, 316, 317, 330, 331, 332, 333, 334, 335, 348, 349, 350, 351, 352, 353, 366, 367, 368, 369, 370, 371, 384, 385, 386, 387, 388, 389, 402, 403, 404, 405, 406, 407, 320, 321, 322, 323, 336, 337, 338, 339, 340, 341, 354, 355, 356, 357, 358, 359, 372, 373, 374, 375, 376, 377, 390, 391, 392, 393, 394, 395, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 432, 433, 434, 435, 436, 437, 450, 451, 452, 453, 454, 455, 468, 469, 470, 471, 472, 473, 486, 487, 488, 489, 490, 491, 504, 505, 506, 507, 508, 509, 522, 523, 524, 525, 526, 527, 420, 421, 422, 423, 424, 425, 438, 439, 440, 441, 442, 443, 456, 457, 458, 459, 460, 461, 474, 475, 476, 477, 478, 479, 492, 493, 494, 495, 496, 497, 510, 511, 512, 513, 514, 515, 528, 529, 530, 531, 532, 533, 426, 427, 428, 429, 430, 431, 444, 445, 446, 447, 448, 449, 462, 463, 464, 465, 466, 467, 480, 481, 482, 483, 484, 485, 498, 499, 500, 501, 502, 503, 516, 517, 518, 519, 520, 521, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 558, 559, 560, 561, 562, 563, 546, 547, 548, 549, 550, 551, 564, 565, 566, 567, 568, 569, 552, 553, 554, 555, 556, 557, 570, 571, 572, 573, 574, 575, }, }, }; const f32 var7005969c[] = { -0.51449573040009, -0.47173196077347, -0.31337743997574, -0.18191319704056, -0.094574190676212, -0.040965583175421, -0.01419856864959, -0.0036999746225774, }; const f32 var700596bc[] = { 0.85749292373657, 0.88174200057983, 0.94962865114212, 0.9833145737648, 0.99551779031754, 0.99916058778763, 0.99989920854568, 0.99999314546585, }; const u32 var700596dc[2][15] = { { 0, 8000, 16000, 24000, 32000, 40000, 48000, 56000, 64000, 80000, 96000, 112000, 128000, 144000, 160000 }, { 0, 32000, 40000, 48000, 56000, 64000, 80000, 96000, 112000, 128000, 160000, 192000, 224000, 256000, 320000 }, }; const u32 var70059754[2][4] = { { 22050, 24000, 16000, 22050 }, { 44100, 48000, 32000, 44100 }, }; extern struct mp3decfourbytes *var8009c650[]; extern f32 *var8009c6d8; extern f32 *var8009c6dc; bool mp3decInit(void) { s32 i; s32 sp268; s32 sp264; s32 sp260 = 1; s32 sp25c; u8 *sp258; struct mp3decthing *sp254; struct mp3decfourbytes *sp250; const u8 sp248[] = { 0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01 }; s32 sp244; u8 sp243; s32 sp23c; s32 sp238; s32 sp234; s32 sp230; s32 sp22c; s32 sp228; s16 sp28[256]; s32 sp24; sp234 = 0; for (i = 0; i < 36; i++) { sine_block[0][i] = sinf((i + 0.5f) * 0.087266460061073f); } for (i = 0; i < 18; i++) { sine_block[1][i] = sinf((i + 0.5f) * 0.087266460061073f); } for (i = 18; i < 24; i++) { sine_block[1][i] = 1.0f; } for (i = 24; i < 30; i++) { sine_block[1][i] = sinf((i + 0.5f - 18.0f) * 0.26179939508438f); } for (i = 30; i < 36; i++) { sine_block[1][i] = 0.0f; } for (i = 0; i < 6; i++) { sine_block[3][i] = 0.0f; } for (i = 6; i < 12; i++) { sine_block[3][i] = sinf((i + 0.5f - 6.0f) * 0.26179939508438f); } for (i = 12; i < 18; i++) { sine_block[3][i] = 1.0f; } for (i = 18; i < 36; i++) { sine_block[3][i] = sinf((i + 0.5f) * 0.087266460061073f); } if (var8009c640 == NULL) { return false; } bzero(var8009c640, 10500 * sizeof(struct mp3decfourbytes)); for (sp264 = 0; sp264 < 34; sp264++) { sp254 = var8005f670[sp264]; if (sp254 == NULL) { var8009c650[sp264] = NULL; continue; } var8009c650[sp264] = &var8009c640[sp234]; sp250 = var8009c650[sp264]; for (sp268 = 0; sp268 < 10500; sp268++) { sp250[sp268].unk02 = -1; sp250[sp268].unk03 = -1; } sp230 = 1; sp228 = 1; bzero(sp28, sizeof(sp28)); sp260 = 1; while (sp228) { sp228 = 0; for (sp22c = 0, sp254 = var8005f670[sp264]; sp254->unk00 != 100; sp254++, sp22c++) { sp25c = sp28[sp22c]; if (sp230 <= sp254->unk02) { sp258 = &sp250[sp25c].bytes[sp254->unk04 & 1 << (sp230 - 1) ? 1 : 0]; if (*sp258) { sp25c = sp28[sp22c] + *sp258; } else { *sp258 = sp260 - sp25c; sp25c = sp260++; } if (sp254->unk02 == sp230) { sp250[sp25c].unk02 = sp254->unk00; sp250[sp25c].unk03 = sp254->unk01; } else { sp228++; } sp28[sp22c] = sp25c; } } sp230++; } sp234 += sp260; for (sp254 = var8005f670[sp264]; sp254->unk00 != 100; sp254++) { sp244 = sp254->unk02 < 8 ? sp254->unk02 : 8; sp243 = 0; for (i = 0; i < sp244; i++) { if (sp254->unk04 & (1 << i)) { sp243 |= sp248[i]; } } if (sp254->unk02 >= 9) { var8005f6fc[sp264 * 256 + sp243] = 0; continue; } sp23c = 256 >> sp244; sp238 = (sp254->unk01 * 16) | sp254->unk00; for (i = 0; i < sp23c; i++) { sp24 = sp243 | i; var8005f6f8[((sp264 * 256) + (sp243 | i))] = sp238; var8005f6fc[((sp264 * 256) + (sp243 | i))] = sp244; } } } var8009c648 = var8009c644; if (var8009c648 == NULL) { return false; } for (i = 0; i < 8192; i++) { var8009c648[i] = func00045ed0(i, 1.3333333730698f); } for (i = 0; i < 256; i++) { var8009c6d8[i] = func00045ed0(2.0f, i * -0.5f); var8009c6dc[i] = func00045ed0(2.0f, i * -2.0f); } return true; } bool mp3dec00040164(struct asistream *stream, u32 gr, u32 ch) { s32 sp1bc; s32 sp1b8; s32 sp1b4; s32 sp1b0; const s32 sp158[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 3, 3, 3, 2, 0, }; f32 sp100[22]; f32 sp64[3][13]; f32 sp60; s32 sfb; s32 sp58; s32 scale; s32 sp50; s32 sp4c; s32 sp48; s32 sp44; f32 *sp40; s16 *sp3c; u8 *sp38; s32 sp34; s32 sp30; s32 window_switching; s32 sp28; f32 *sp24; sp1bc = stream->samplerateindex + stream->version * 3; if (stream->window_switching[gr][ch] && stream->block_type[gr][ch] == 2) { if (stream->mixed_block_flag[gr][ch]) { sp1b8 = var700579b8[sp1bc].unk00[1]; } else { sp1b8 = var700579b8[sp1bc].unk2e[1] * 3; sp1b0 = var700579b8[sp1bc].unk2e[1]; sp1b4 = 0; } } else { sp1b8 = var700579b8[sp1bc].unk00[1]; } sp60 = func00045ed0(2, (stream->global_gain[gr][ch] - 210.0f) * 0.25f); scale = stream->scalefac_scale[gr][ch]; for (sfb = 0; sfb < 22; sfb++) { sp4c = (stream->scalefac[gr][ch].l[sfb] + stream->preflag[gr][ch] * sp158[sfb]) * (scale + 1); sp100[sfb] = var8009c6d8[sp4c] * sp60; } for (sp58 = 0; sp58 < 3; sp58++) { for (sfb = 0; sfb < 13; sfb++) { sp50 = stream->subblock_gain[gr][ch][sp58]; sp4c = stream->scalefac[gr][ch].s[sp58][sfb] * (scale + 1); sp64[sp58][sfb] = sp60 * var8009c6dc[sp50] * var8009c6d8[sp4c]; } } sfb = 0; sp48 = 0; sp44 = stream->unk465c[ch]; sp40 = stream->unk4664[ch][0].unk00; sp3c = stream->unk3f94[ch]; sp38 = stream->unk4418[ch]; sp34 = stream->block_type[gr][ch] == 2 && stream->mixed_block_flag[gr][ch] == 0; sp30 = stream->block_type[gr][ch] == 2 && stream->mixed_block_flag[gr][ch] != 0; window_switching = stream->window_switching[gr][ch]; while (sp48 < sp44) { if (sp1b8 > sp44) { sp1b8 = sp44; } if (window_switching) { if (sp34 || (sp30 && sp48 >= 36)) { sp58 = (sp48 - sp1b4) / sp1b0; sp28 = sp1b4 + sp1b0; } } while (sp48 < sp1b8) { if (window_switching && (sp34 || (sp30 && sp48 >= 36))) { if (sp48 >= sp28) { sp28 += sp1b0; sp58++; } sp24 = sp64[sp58]; if (*sp38++) { *sp40++ = -(var8009c648[*sp3c++] * sp24[sfb]); } else { *sp40++ = var8009c648[*sp3c++] * sp24[sfb]; } } else { if (*sp38++) { *sp40++ = -(var8009c648[*sp3c++] * sp100[sfb]); } else { *sp40++ = var8009c648[*sp3c++] * sp100[sfb]; } } sp48++; } if (stream->window_switching[gr][ch] && stream->block_type[gr][ch] == 2) { if (stream->mixed_block_flag[gr][ch]) { if (var700579b8[sp1bc].unk00[8] == sp48) { sp1b8 = var700579b8[sp1bc].unk2e[4] * 3; sfb = 3; sp1b0 = var700579b8[sp1bc].unk2e[sfb + 1] - var700579b8[sp1bc].unk2e[sfb]; sp1b4 = var700579b8[sp1bc].unk2e[sfb] * 3; } else if (sp48 < var700579b8[sp1bc].unk00[8]) { sp1b8 = var700579b8[sp1bc].unk00[++sfb + 1]; } else { sp1b8 = var700579b8[sp1bc].unk2e[++sfb + 1] * 3; sp1b0 = var700579b8[sp1bc].unk2e[sfb + 1] - var700579b8[sp1bc].unk2e[sfb]; sp1b4 = var700579b8[sp1bc].unk2e[sfb] * 3; } } else { sp1b8 = var700579b8[sp1bc].unk2e[++sfb + 1] * 3; sp1b0 = var700579b8[sp1bc].unk2e[sfb + 1] - var700579b8[sp1bc].unk2e[sfb]; sp1b4 = var700579b8[sp1bc].unk2e[sfb] * 3; } } else { sp1b8 = var700579b8[sp1bc].unk00[++sfb + 1]; } } if (sp48 < 576) { bzero(sp40, stream->unk4660[ch] * 4); return true; } return true; } bool mp3decUnpackScaleFac(struct asistream *stream, u32 gr, u32 ch) { s32 i; s32 sfb; s32 window; if (stream->window_switching[gr][ch] != 0 && stream->block_type[gr][ch] == 2) { if (stream->mixed_block_flag[gr][ch] != 0) { for (sfb = 0; sfb < 8; sfb++) { stream->scalefac[gr][ch].l[sfb] = var70057b7c[0][stream->scalefac_compress[gr][ch]] ? mp3utilGetBits(stream->unk1c, &stream->unk2020, var70057b7c[0][stream->scalefac_compress[gr][ch]]) : 0; } for (sfb = 3; sfb < 6; sfb++) { for (window = 0; window < 3; window++) { stream->scalefac[gr][ch].s[window][sfb] = var70057b7c[0][stream->scalefac_compress[gr][ch]] ? mp3utilGetBits(stream->unk1c, &stream->unk2020, var70057b7c[0][stream->scalefac_compress[gr][ch]]) : 0; } } for (sfb = 6; sfb < 12; sfb++) { for (window = 0; window < 3; window++) { stream->scalefac[gr][ch].s[window][sfb] = var70057b7c[1][stream->scalefac_compress[gr][ch]] ? mp3utilGetBits(stream->unk1c, &stream->unk2020, var70057b7c[1][stream->scalefac_compress[gr][ch]]) : 0; } } } else { for (i = 0; i < 2; i++) { for (sfb = var70057b74[5 + i]; sfb < var70057b74[6 + i]; sfb++) { for (window = 0; window < 3; window++) { stream->scalefac[gr][ch].s[window][sfb] = var70057b7c[i][stream->scalefac_compress[gr][ch]] ? mp3utilGetBits(stream->unk1c, &stream->unk2020, var70057b7c[i][stream->scalefac_compress[gr][ch]]) : 0; } } } } for (window = 0; window < 3; window++) { stream->scalefac[gr][ch].s[window][12] = 0; } } else { for (i = 0; i < 4; i++) { if (stream->scfsi[ch][i] == 0 || gr == 0) { for (sfb = var70057b74[i]; sfb < var70057b74[i + 1]; sfb++) { stream->scalefac[gr][ch].l[sfb] = var70057b7c[i < 2 ? 0 : 1][stream->scalefac_compress[gr][ch]] ? mp3utilGetBits(stream->unk1c, &stream->unk2020, var70057b7c[i < 2 ? 0 : 1][stream->scalefac_compress[gr][ch]]) : 0; } } else { for (sfb = var70057b74[i]; sfb < var70057b74[1 + i]; sfb++) { stream->scalefac[1][ch].l[sfb] = stream->scalefac[0][ch].l[sfb]; } } } stream->scalefac[gr][ch].unk3d60 = 0; } return true; } bool mp3dec00041600(struct asistream *stream, u32 gr, u32 ch) { const s32 sp70[2][3][3][4] = { { { { 6, 5, 5, 5 }, { 9, 9, 9, 9 }, { 6, 9, 9, 9 } }, { { 6, 5, 7, 3 }, { 9, 9, 12, 6 }, { 6, 9, 12, 6 } }, { { 11, 10, 0, 0 }, { 18, 18, 0, 0 }, { 15, 18, 0, 0 } }, }, { { { 7, 7, 7, 0 }, { 12, 12, 12, 0 }, { 6, 15, 12, 0 } }, { { 6, 6, 6, 3 }, { 12, 9, 9, 6 }, { 6, 12, 9, 6 } }, { { 8, 8, 5, 0 }, { 15, 12, 9, 0 }, { 6, 18, 9, 0 } }, }, }; s32 sp60[4]; s32 compress; u32 *preflag; s32 mixed; s32 block_type; s32 window_switching; s32 sp48; s32 sp44; s32 i; s32 j; s32 sp38; s32 sp28[4]; s32 sfb; s32 sp20; s32 sp1c; compress = stream->scalefac_compress[0][ch]; preflag = &stream->preflag[0][ch]; mixed = stream->mixed_block_flag[0][ch]; block_type = stream->block_type[0][ch]; window_switching = stream->window_switching[0][ch]; if ((stream->unk3bc4 != 1 && stream->unk3bc4 != 3) || ch != 1) { sp48 = 0; if (compress < 400) { sp60[0] = (compress >> 4) / 5; sp60[1] = (compress >> 4) % 5; sp60[2] = (compress % 16) >> 2; sp60[3] = compress % 4; *preflag = 0; sp44 = 0; } else if (compress >= 400 && compress < 500) { sp60[0] = ((compress - 400) >> 2) / 5; sp60[1] = ((compress - 400) >> 2) % 5; sp60[2] = (compress - 400) % 4; sp60[3] = 0; *preflag = 0; sp44 = 1; } else if (compress >= 500 && compress < 512) { sp60[0] = (compress - 500) / 3; sp60[1] = (compress - 500) % 3; sp60[2] = 0; sp60[3] = 0; *preflag = 1; sp44 = 2; } } if (stream->unk3bc4 == 1 || stream->unk3bc4 == 3) { if (ch == 1) { stream->unk3ef8 = compress % 2; sp38 = compress >> 1; sp48 = 1; if (sp38 < 180) { sp60[0] = sp38 / 36; sp60[1] = (sp38 % 36) / 6; sp60[2] = (sp38 % 36) % 6; sp60[3] = 0; *preflag = 0; sp44 = 0; } else if (sp38 >= 180 && sp38 < 244) { sp60[0] = ((sp38 - 180) % 64) >> 4; sp60[1] = ((sp38 - 180) % 16) >> 2; sp60[2] = (sp38 - 180) % 4; sp60[3] = 0; *preflag = 0; sp44 = 1; } else if (sp38 >= 244 && sp38 < 255) { sp60[0] = (sp38 - 244) / 3; sp60[1] = (sp38 - 244) % 3; sp60[2] = 0; sp60[3] = 0; *preflag = 0; sp44 = 2; } } } if (window_switching && block_type == 2) { bcopy(sp70[sp48][sp44][mixed + 1], sp28, 0x10); } else { bcopy(sp70[sp48][sp44][0], sp28, 0x10); } sfb = 0; if (!window_switching || (window_switching && block_type != 2)) { for (i = 0; i < 4; i++) { sp20 = sp60[i]; sp1c = (1 << sp20) - 1; for (j = 0; j < sp28[i]; j++) { stream->scalefac[0][ch].l[sfb] = sp20 ? mp3utilGetBits(stream->unk1c, &stream->unk2020, sp20) : 0; if (ch != 0) { stream->unk3efc[sfb] = sp1c; } sfb++; } } } else if (block_type == 2) { if (mixed == 0) { for (i = 0; i < 4; i++) { sp20 = sp60[i]; sp1c = (1 << sp20) - 1; for (j = 0; j < sp28[i]; j += 3) { stream->scalefac[0][ch].s[0][sfb] = sp20 ? mp3utilGetBits(stream->unk1c, &stream->unk2020, sp20) : 0; stream->scalefac[0][ch].s[1][sfb] = sp20 ? mp3utilGetBits(stream->unk1c, &stream->unk2020, sp20) : 0; stream->scalefac[0][ch].s[2][sfb] = sp20 ? mp3utilGetBits(stream->unk1c, &stream->unk2020, sp20) : 0; if (ch != 0) { stream->unk3f14[sfb] = sp1c; } sfb++; } } } else { sp20 = sp60[0]; sp1c = (1 << sp20) - 1; for (j = 0; j < 6; j++) { stream->scalefac[0][ch].l[sfb] = sp20 ? mp3utilGetBits(stream->unk1c, &stream->unk2020, sp20) : 0; if (ch != 0) { stream->unk3efc[sfb] = sp1c; } sfb++; } sp28[0] -= 6; sfb = 3; for (i = 0; i < 4; i++) { sp20 = sp60[i]; sp1c = (1 << sp20) - 1; for (j = 0; j < sp28[i]; j += 3) { stream->scalefac[0][ch].s[0][sfb] = sp20 ? mp3utilGetBits(stream->unk1c, &stream->unk2020, sp20) : 0; stream->scalefac[0][ch].s[1][sfb] = sp20 ? mp3utilGetBits(stream->unk1c, &stream->unk2020, sp20) : 0; stream->scalefac[0][ch].s[2][sfb] = sp20 ? mp3utilGetBits(stream->unk1c, &stream->unk2020, sp20) : 0; if (ch != 0) { stream->unk3f14[sfb] = sp1c; } sfb++; } } } } return true; } bool mp3dec00042238(struct asistream *stream, u32 gr, u32 ch) { s32 sp64 = stream->unk2020; s32 sp60; s32 sp54[3]; const s16 *sp50; const u8 *sp4c; s32 sp48; s16 *sp44; u8 *sp40; s32 i; u32 sp38; s32 sp34; s32 sp30; s32 sp2c; s32 sp28; if (stream->version != VERSION_2) { mp3decUnpackScaleFac(stream, gr, ch); } else { mp3dec00041600(stream, gr, ch); } sp60 = stream->big_value[gr][ch] * 2; sp50 = var70057860[stream->version][stream->samplerateindex]; sp4c = var70057968[stream->version][stream->samplerateindex]; if (stream->window_switching[gr][ch] == 0 && stream->block_type[gr][ch] == 0) { sp54[0] = sp50[stream->region0_count[gr][ch]] + 1; if (sp54[0] > sp60) { sp54[0] = sp54[1] = sp60; } else { sp54[1] = sp50[stream->region0_count[gr][ch] + stream->region1_count[gr][ch] + 1] + 1; if (sp54[1] > sp60) { sp54[1] = sp60; } } } else { if (stream->block_type[gr][ch] == 2 && stream->mixed_block_flag[gr][ch] == 0) { sp54[0] = sp4c[2] * 3 + 3; } else { sp54[0] = sp50[7] + 1; } if (sp54[0] > sp60) { sp54[0] = sp60; } sp54[1] = sp60; } sp54[2] = sp60; sp48 = 0; sp44 = stream->unk3f94[ch]; sp40 = stream->unk4418[ch]; for (i = 0; i < 3; i++) { sp38 = stream->table_select[gr][ch][i]; sp34 = var700577d8[sp38]; sp30 = sp54[i]; if (var8009c650[sp38] == NULL) { sp2c = sp30 - sp48; bzero(sp44, sp2c * 2); sp44 += sp2c; sp40 += sp2c; sp48 = sp30; } else { sp48 = mp3util000462f8(stream->unk1c, &stream->unk2020, sp38, sp48, sp34, sp30, &sp44, &sp40); } } sp38 = stream->count1table_select[gr][ch] + 32; sp28 = stream->part2_3_length[gr][ch] + sp64; sp48 = mp3util000464a8(stream->unk1c, &stream->unk2020, sp38, sp48, sp28, &sp44, &sp40); stream->unk2020 = sp28; if (sp48 > 576) { stream->unk465c[ch] = 576; } else { stream->unk465c[ch] = sp48; } if (sp48 < 576) { stream->unk4660[ch] = 576 - sp48; bzero(sp44, stream->unk4660[ch] * 2); } else { stream->unk4660[ch] = 0; } return true; } bool mp3dec000427d8(struct asistream *stream, u32 gr) { const s16 *sp14 = var70057b9c[stream->version][stream->samplerateindex]; f32 *sp10 = stream->unk4f64[0][0].unk00; f32 *sp0c = stream->unk4664[0][0].unk00; s32 i = 0; if (stream->window_switching[gr][0] && stream->window_switching[gr][2] == 2) { if (stream->window_switching[gr][4]) { while (i++ < 36) { *(sp10++) = *(sp0c++); } } while (i < 576) { sp10[sp14[i++]] = *(sp0c++); } } else { while (i++ < 576) { *(sp10++) = *(sp0c++); } } return true; } bool mp3decReduceAliases(struct asistream *stream, u32 gr, u32 ch) { s32 i; if (stream->window_switching[gr][ch] && stream->block_type[gr][ch] == 2) { return true; } for (i = 1; i < 32; i++) { struct asistream_4f64 *sp08 = &stream->unk4f64[ch][i]; f32 sp04; f32 sp00; sp04 = sp08->unk00[0]; sp00 = sp08->unk00[-1]; sp08->unk00[-1] = sp00 * var700596bc[0] - var7005969c[0] * sp04; sp08->unk00[0] = sp04 * var700596bc[0] + var7005969c[0] * sp00; sp04 = sp08->unk00[1]; sp00 = sp08->unk00[-2]; sp08->unk00[-2] = sp00 * var700596bc[1] - var7005969c[1] * sp04; sp08->unk00[1] = sp04 * var700596bc[1] + var7005969c[1] * sp00; sp04 = sp08->unk00[2]; sp00 = sp08->unk00[-3]; sp08->unk00[-3] = sp00 * var700596bc[2] - var7005969c[2] * sp04; sp08->unk00[2] = sp04 * var700596bc[2] + var7005969c[2] * sp00; sp04 = sp08->unk00[3]; sp00 = sp08->unk00[-4]; sp08->unk00[-4] = sp00 * var700596bc[3] - var7005969c[3] * sp04; sp08->unk00[3] = sp04 * var700596bc[3] + var7005969c[3] * sp00; sp04 = sp08->unk00[4]; sp00 = sp08->unk00[-5]; sp08->unk00[-5] = sp00 * var700596bc[4] - var7005969c[4] * sp04; sp08->unk00[4] = sp04 * var700596bc[4] + var7005969c[4] * sp00; sp04 = sp08->unk00[5]; sp00 = sp08->unk00[-6]; sp08->unk00[-6] = sp00 * var700596bc[5] - var7005969c[5] * sp04; sp08->unk00[5] = sp04 * var700596bc[5] + var7005969c[5] * sp00; sp04 = sp08->unk00[6]; sp00 = sp08->unk00[-7]; sp08->unk00[-7] = sp00 * var700596bc[6] - var7005969c[6] * sp04; sp08->unk00[6] = sp04 * var700596bc[6] + var7005969c[6] * sp00; sp04 = sp08->unk00[7]; sp00 = sp08->unk00[-8]; sp08->unk00[-8] = sp00 * var700596bc[7] - var7005969c[7] * sp04; sp08->unk00[7] = sp04 * var700596bc[7] + var7005969c[7] * sp00; } return true; } bool mp3decSetSideInfo(struct asistream *stream) { s32 sp34; s32 ch; s32 scfsi_band; s32 sp28; s32 gr; s32 region; s32 window; if (stream->version != VERSION_2) { stream->unk206c = stream->channelmode == CHANNELMODE_SINGLEMONO ? 17 : 32; } else { stream->unk206c = stream->channelmode == CHANNELMODE_SINGLEMONO ? 9 : 17; } sp34 = stream->unk04(stream->unk00, &stream->buffer[stream->unk2068], stream->unk206c, -1); if (stream->unk206c != sp34) { return false; } stream->unk18 += stream->unk206c; stream->numchannels = stream->channelmode == CHANNELMODE_SINGLEMONO ? 1 : 2; stream->numgranules = stream->version != VERSION_2 ? 2 : 1; if (stream->version != VERSION_2) { stream->main_data_begin = mp3utilGetBits(stream->buffer, &stream->count, 9); // skip private bits stream->numchannels == 1 ? mp3utilGetBits(stream->buffer, &stream->count, 5) : mp3utilGetBits(stream->buffer, &stream->count, 3); } else { stream->main_data_begin = mp3utilGetBits(stream->buffer, &stream->count, 8); stream->numchannels == 1 ? mp3utilGetBits(stream->buffer, &stream->count, 1) : mp3utilGetBits(stream->buffer, &stream->count, 2); } if (stream->version != VERSION_2) { for (ch = 0; ch < stream->numchannels; ch++) { for (scfsi_band = 0; scfsi_band < 4; scfsi_band++) { stream->scfsi[ch][scfsi_band] = mp3utilGetBits(stream->buffer, &stream->count, 1); } } } if (stream->version != VERSION_2) { sp28 = 4; } else { sp28 = 9; } for (gr = 0; gr < stream->numgranules; gr++) { for (ch = 0; ch < stream->numchannels; ch++) { stream->part2_3_length[gr][ch] = mp3utilGetBits(stream->buffer, &stream->count, 12); stream->big_value[gr][ch] = mp3utilGetBits(stream->buffer, &stream->count, 9); stream->global_gain[gr][ch] = mp3utilGetBits(stream->buffer, &stream->count, 8); stream->scalefac_compress[gr][ch] = sp28 ? mp3utilGetBits(stream->buffer, &stream->count, sp28) : 0; stream->window_switching[gr][ch] = mp3utilGetBits(stream->buffer, &stream->count, 1); if (stream->window_switching[gr][ch]) { stream->block_type[gr][ch] = mp3utilGetBits(stream->buffer, &stream->count, 2); stream->mixed_block_flag[gr][ch] = mp3utilGetBits(stream->buffer, &stream->count, 1); for (region = 0; region < 2; region++) { stream->table_select[gr][ch][region] = mp3utilGetBits(stream->buffer, &stream->count, 5); } stream->table_select[gr][ch][2] = 0; for (window = 0; window < 3; window++) { stream->subblock_gain[gr][ch][window] = mp3utilGetBits(stream->buffer, &stream->count, 3); } } else { stream->block_type[gr][ch] = 0; stream->mixed_block_flag[gr][ch] = false; for (region = 0; region < 3; region++) { stream->table_select[gr][ch][region] = mp3utilGetBits(stream->buffer, &stream->count, 5); } stream->region0_count[gr][ch] = mp3utilGetBits(stream->buffer, &stream->count, 4); stream->region1_count[gr][ch] = mp3utilGetBits(stream->buffer, &stream->count, 3); } if (stream->version != VERSION_2) { stream->preflag[gr][ch] = mp3utilGetBits(stream->buffer, &stream->count, 1); } stream->scalefac_scale[gr][ch] = mp3utilGetBits(stream->buffer, &stream->count, 1); stream->count1table_select[gr][ch] = mp3utilGetBits(stream->buffer, &stream->count, 1); } } stream->unk3f7c = var700596dc[stream->version][stream->bitrateindex]; stream->unk3f80 = var70059754[stream->version][stream->samplerateindex]; if (stream->version != VERSION_2) { stream->unk3f84 = stream->unk3f7c * 144 / stream->unk3f80; } else { stream->unk3f84 = stream->unk3f7c * 72 / stream->unk3f80; } stream->unk3f88 = (stream->unk3f84 + stream->haspadding) - (stream->unk2068 + stream->unk206c); return true; } bool mp3decDecodeFrame(struct asistream *stream) { s32 sp954; s32 gr = 0; s32 ch; s32 sp948; s32 sp944; s32 sp940; s32 i; s32 j; u16 *sp934; struct asistream_4f64 sp34[32]; f32 sp30; f32 sp2c; f32 sp28; s32 sp24; s32 sp20; sp934 = stream->unk2070[stream->unk3ba0].unk00; sp954 = mp3main00043dd0(stream); if (sp954 == -1) { return false; } stream->unk2020 = (sp954 - stream->main_data_begin) * 8; if (stream->unk2020 < 0) { return true; } for (ch = 0; ch < stream->numchannels; ch++) { mp3dec00042238(stream, gr, ch); mp3dec00040164(stream, gr, ch); } mp3dec000427d8(stream, gr); if (stream->window_switching[gr][0] != 0 && stream->block_type[gr][0] == 2) { sp948 = 32; } else { sp944 = (stream->unk465c[0] - 1) / 18 + 1; sp948 = sp944; } for (ch = 0; ch < stream->numchannels; ch++) { mp3decReduceAliases(stream, gr, ch); if (stream->window_switching[gr][ch] != 0 && stream->block_type[gr][ch] == 2 && stream->mixed_block_flag[gr][ch] != 0) { sp940 = 0; } else if (stream->window_switching[gr][ch] == 0) { sp940 = 0; } else { sp940 = stream->block_type[gr][ch]; } if (sp940 == 2) { for (i = 0; i < 2; i++) { func00047550(&stream->unk4f64[ch][i], i, &sp34[i], &stream->unk6a64[ch][i]); } } else { for (i = 0; i < 2; i++) { func00046650(&stream->unk4f64[ch][i], i, &sp34[i], &stream->unk6a64[ch][i], sine_block[sp940]); } } if (stream->window_switching[gr][ch] && stream->block_type[gr][ch] == 2 && stream->mixed_block_flag[gr][ch]) { sp940 = 2; } if (sp940 == 2) { for (i = 2; i < sp948; i++) { func00047550(&stream->unk4f64[ch][i], i, &sp34[i], &stream->unk6a64[ch][i]); } } else { for (i = 2; i < sp948; i++) { func00046650(&stream->unk4f64[ch][i], i, &sp34[i], &stream->unk6a64[ch][i], sine_block[sp940]); } } while (i < 32) { bcopy(&stream->unk6a64[ch][i], &sp34[i], sizeof(struct asistream_4f64)); bzero(&stream->unk6a64[ch][i], sizeof(struct asistream_4f64)); i++; } sp30 = 65536; sp28 = 1; sp20 = sp30 * sp28 * 16; *sp934 = sp20 >> 16; sp934++; *sp934 = sp20 & 0xffff; sp934++; sp20 = -sp20; *sp934 = sp20 >> 16; sp934++; *sp934 = sp20 & 0xffff; sp934++; sp2c = 2048 / sp28; for (j = 0; j < 18; j++) { for (i = 0; i < 32; i++) { sp24 = sp34[i].unk00[j] * sp2c; *sp934 = sp24; sp934++; } } } return true; }