//used in MAPCDSF_decodeACC2MainSub0 0:0 1:0 static int MAPCDSF_decodeACC2Main0_Route0(MaiBitReader mbr0, MaiAT3PlusCoreDecoderChnInfo chn_info) { int rs = 0; for (uint a0 = 0; a0 < chn_info.uk1b450; a0++) { chn_info.acc_data_now.table[a0].num_acc = mbr0.getWithI32Buffer(3); } return rs; }
static int MAPCDSF_decodeTable0DataNum(MaiBitReader mbr0, MaiAT3PlusCoreDecoderChnInfo chn_info) { chn_info.table0_data_num0 = chn_info.joint_chn_info.num_band_splited_declared; chn_info.table0_data_num1 = 0; if (chn_info.table0_flag_data_num != 0) { chn_info.table0_data_num0 = (uint)mbr0.getWithI32Buffer(5); if (chn_info.table0_data_num0 > chn_info.joint_chn_info.num_band_splited_declared) { return -5; } if (chn_info.table0_flag_data_num == 3) { chn_info.table0_data_num1 = (uint)mbr0.getWithI32Buffer(2) + 1; if (chn_info.chn_flag != 0) chn_info.table0_data_num1 = chn_info.table0_data_num1 - 1 + 3; } } return 0; }
//used in decodeTable0 0:1 static int MAPCDSF_decodeTable0_Route1(MaiBitReader mbr0, MaiAT3PlusCoreDecoderChnInfo chn_info) { int rs = 0; chn_info.table0_flag_ex = mbr0.getWithI32Buffer(2); chn_info.table0_flag_data_num = mbr0.getWithI32Buffer(2); if (0 != (rs = MAPCDSF_decodeTable0DataNum(mbr0, chn_info))) return rs; if (chn_info.table0_data_num0 != 0) { var uk1c6d0 = (uint)mbr0.getWithI32Buffer(5); var uk1c6d4 = (uint)mbr0.getWithI32Buffer(2); var uk1c6d8 = (uint)mbr0.getWithI32Buffer(3); for (uint a0 = 0; a0 < uk1c6d0; a0++) { chn_info.table0[a0] = (uint)mbr0.getWithI32Buffer(3); } if (0 == uk1c6d4) { for (uint a0 = uk1c6d0; a0 < chn_info.table0_data_num0; a0++) { chn_info.table0[a0] = uk1c6d8; } } else { for (uint a0 = uk1c6d0; a0 < chn_info.table0_data_num0; a0++) { chn_info.table0[a0] = (uint)mbr0.getWithI32Buffer((int)uk1c6d4) + uk1c6d8; } } } if ((rs = MAPCDSF_padTable0(mbr0, chn_info)) != 0) return rs; if (chn_info.table0_flag_ex != 0) { MAPCDSF_exTable0Value(chn_info); } return rs; }
//used in MAPCDSF_decodeACC6InnerSub0 1 static int MAPCDSF_decodeACC6Inner1_Route1(MaiBitReader mbr0, MaiAT3PlusCoreDecoderChnInfo chn_info) { int rs = 0; for (uint a0 = 0; a0 < (uint)chn_info.acc_table_now.inner.unk2; a0++) { if (chn_info.inner_pack_table0_check_table[a0] != 0) { chn_info.acc_table_now.table[a0].num_uk = (int)MAPCDSF_getHuffValue(MaiAT3PlusCoreDecoder_StaticData.MAPCDSD_huff_table_global_12[0], mbr0); } } return rs; }
//used in MAPCDSF_decodeACC6InnerSub0 3 static int MAPCDSF_decodeACC6Inner1_Route3(MaiBitReader mbr0, MaiAT3PlusCoreDecoderChnInfo chn_info) { int rs = 0; for (uint a0 = 0; a0 < (uint)chn_info.acc_table_now.inner.unk2; a0++) { if (chn_info.inner_pack_table0_check_table[a0] != 0) { chn_info.acc_table_now.table[a0].num_uk = chn_info.chn_ref.acc_table_now.table[a0].num_uk; } } return rs; }
//used in MAPCDSF_decodeACC2MainSub2 1:3 static int MAPCDSF_decodeACC2Main2_Route6(MaiBitReader mbr0, MaiAT3PlusCoreDecoderChnInfo chn_info) { int rs = 0; for (uint a0 = 0; a0 < chn_info.uk1b450; a0++) { for (uint a1 = 0; a1 < (uint)chn_info.acc_data_now.table[a0].num_acc; a1++) { if (a1 < (uint)chn_info.chn_ref.acc_data_now.table[a0].num_acc) { chn_info.acc_data_now.table[a0].data0[a1] = chn_info.chn_ref.acc_data_now.table[a0].data0[a1]; } else { MAPCDSF_parseACCDataMemberUsingBitRead(a0, a1, mbr0, chn_info); } } } return rs; }
//used in decodeACC2Main static int MAPCDSF_decodeACC2MainSub2(MaiBitReader mbr0, MaiAT3PlusCoreDecoderChnInfo chn_info) { int rs = 0; MAPCDSF_decodeACC2Main_func_list2[chn_info.chn_flag * 4 + mbr0.getWithI32Buffer(2)](mbr0, chn_info); //rep check for (int a0 = 0; a0 < 0x10; a0++) { for (int a1 = 0; a1 < 0x7; a1++) { if ( (chn_info.acc_data_now.table[a0].data0[a1] < 0) || (chn_info.acc_data_now.table[a0].data0[a1] >= 0x20) ) { rs = -1; break; } } if (rs != 0) break; for (int a1 = 0; a1 < (int)chn_info.acc_data_now.table[a0].num_acc - 1; a1++) { if (chn_info.acc_data_now.table[a0].data0[a1] >= chn_info.acc_data_now.table[a0].data0[a1 + 1]) { rs = -1; break; } } if (rs != 0) break; } return rs; }
//used in MAPCDSF_decodeACC2MainSub0 1:2 static int MAPCDSF_decodeACC2Main0_Route4(MaiBitReader mbr0, MaiAT3PlusCoreDecoderChnInfo chn_info) { int rs = 0; for (uint a0 = 0; a0 < chn_info.uk1b450; a0++) { chn_info.acc_data_now.table[a0].num_acc = (int)( chn_info.chn_ref.acc_data_now.table[a0].num_acc + MAPCDSF_getHuffValue(MaiAT3PlusCoreDecoder_StaticData.MAPCDSD_huff_table_global_1[0], mbr0) ); chn_info.acc_data_now.table[a0].num_acc &= 0x7; } return rs; }
//used in MAPCDSF_decodeACC2MainSub0 1:3 static int MAPCDSF_decodeACC2Main0_Route5(MaiBitReader mbr0, MaiAT3PlusCoreDecoderChnInfo chn_info) { int rs = 0; for (uint a0 = 0; a0 < chn_info.uk1b450; a0++) { chn_info.acc_data_now.table[a0].num_acc = chn_info.chn_ref.acc_data_now.table[a0].num_acc; } return rs; }
static int MAPCDSF_splitePack2_Route3(MaiBitReader mbr0, MaiAT3PlusCoreDecoderChnInfo chn_info) { int rs = 0; int l4 = 0; for (uint a0 = 0; a0 < (uint)chn_info.acc_table_now.inner.unk2; a0++) { if (chn_info.inner_pack_table0_check_table[a0] != 0) { for (int a1 = 0; a1 < chn_info.acc_table_now.table[a0].num_uk; a1++) { if (chn_info.joint_chn_info.table11c[l4 + a1] >= 0) { chn_info.acc_table_now.table[a0].ptr0[a1].unk1 = chn_info.chn_ref.acc_table_now.table[a0].ptr0[chn_info.joint_chn_info.table11c[l4 + a1]].unk1; } else { chn_info.acc_table_now.table[a0].ptr0[a1].unk1 = 0xE; } } l4 += chn_info.acc_table_now.table[a0].num_uk; } } return rs; }
//used in MAPCDSF_decodeACC2MainSub0 0:3 static int MAPCDSF_decodeACC2Main0_Route3(MaiBitReader mbr0, MaiAT3PlusCoreDecoderChnInfo chn_info) { int rs = 0; uint uk1b458 = (uint)mbr0.getWithI32Buffer(2); uint uk1b45c = (uint)mbr0.getWithI32Buffer(3); if (uk1b458 != 0) { for (uint a0 = 0; a0 < chn_info.uk1b450; a0++) { chn_info.acc_data_now.table[a0].num_acc = (int)(uk1b45c + mbr0.getWithI32Buffer((int)uk1b458)); } } else { for (uint a0 = 0; a0 < chn_info.uk1b450; a0++) { chn_info.acc_data_now.table[a0].num_acc = (int)uk1b45c; } } return rs; }
static int MAPCDSF_splitePack2_Route2(MaiBitReader mbr0, MaiAT3PlusCoreDecoderChnInfo chn_info) { int rs = 0; int l5 = 0; for (uint a0 = 0; a0 < (uint)chn_info.acc_table_now.inner.unk2; a0++) { if (chn_info.inner_pack_table0_check_table[a0] != 0) { for (int a1 = 0; a1 < chn_info.acc_table_now.table[a0].num_uk; a1++) { int atmp0 = (int)MAPCDSF_getHuffValue(MaiAT3PlusCoreDecoder_StaticData.MAPCDSD_huff_table_global_20[0], mbr0); if ((atmp0 & 0x4) != 0) { atmp0 |= unchecked((int)0xFFFFFFF8); } else { atmp0 &= 0x7; } if (chn_info.joint_chn_info.table11c[l5 + a1] >= 0) { chn_info.acc_table_now.table[a0].ptr0[a1].unk1 = chn_info.chn_ref.acc_table_now.table[a0].ptr0[ chn_info.joint_chn_info.table11c[l5 + a1] ].unk1 + atmp0; chn_info.acc_table_now.table[a0].ptr0[a1].unk1 &= 0xF; } else { chn_info.acc_table_now.table[a0].ptr0[a1].unk1 = atmp0 - 4; chn_info.acc_table_now.table[a0].ptr0[a1].unk1 &= 0xF; } } l5 += chn_info.acc_table_now.table[a0].num_uk; } } return rs; }
static int MAPCDSF_splitePack2_Route1(MaiBitReader mbr0, MaiAT3PlusCoreDecoderChnInfo chn_info) { int rs = 0; for (uint a0 = 0; a0 < (uint)chn_info.acc_table_now.inner.unk2; a0++) { if (chn_info.inner_pack_table0_check_table[a0] != 0) { if ( chn_info.acc_table_now.table[a0].num_uk == 1) { chn_info.acc_table_now.table[a0].ptr0[0].unk1 = (int)MAPCDSF_getHuffValue(MaiAT3PlusCoreDecoder_StaticData.MAPCDSD_huff_table_global_18[0], mbr0); } else { for (int a1 = 0; a1 < chn_info.acc_table_now.table[a0].num_uk; a1++) { chn_info.acc_table_now.table[a0].ptr0[a1].unk1 = (int)MAPCDSF_getHuffValue(MaiAT3PlusCoreDecoder_StaticData.MAPCDSD_huff_table_global_19[0], mbr0); } } } } return rs; }
static int MAPCDSF_splitePack2_Route0(MaiBitReader mbr0, MaiAT3PlusCoreDecoderChnInfo chn_info) { int rs = 0; for (uint a0 = 0; a0 < (uint)chn_info.acc_table_now.inner.unk2; a0++) { if (chn_info.inner_pack_table0_check_table[a0] != 0) { for (int a1 = 0; a1 < chn_info.acc_table_now.table[a0].num_uk; a1++) { chn_info.acc_table_now.table[a0].ptr0[a1].unk1 = mbr0.getWithI32Buffer(4); } } } return rs; }
//used in MAPCDSF_decodeACC2MainSub2 1:1 static int MAPCDSF_decodeACC2Main2_Route4(MaiBitReader mbr0, MaiAT3PlusCoreDecoderChnInfo chn_info) { int rs = 0; for (uint a0 = 0; a0 < chn_info.uk1b450; a0++) { MAPCDSF_parseACCDataMemberUsingHuffTable2(a0, mbr0, chn_info); } return rs; }
//used in MAPCDSF_decodeACC2MainSub1 0:0 1:0 static int MAPCDSF_decodeACC2Main1_Route0(MaiBitReader mbr0, MaiAT3PlusCoreDecoderChnInfo chn_info) { int rs = 0; for (uint a0 = 0; a0 < chn_info.uk1b450; a0++) { for (uint a1 = 0; a1 < (uint)chn_info.acc_data_now.table[a0].num_acc; a1++) { chn_info.acc_data_now.table[a0].data1[a1] = (uint)mbr0.getWithI32Buffer(4); } } return rs; }
//used in MAPCDSF_decodeACC2MainSub2 1:2 static int MAPCDSF_decodeACC2Main2_Route5(MaiBitReader mbr0, MaiAT3PlusCoreDecoderChnInfo chn_info) { int rs = 0; for (uint a0 = 0; a0 < chn_info.uk1b450; a0++) { if (chn_info.acc_data_now.table[a0].num_acc != 0) { if ( ( ((uint)chn_info.acc_data_now.table[a0].num_acc) <= ((uint)chn_info.chn_ref.acc_data_now.table[a0].num_acc) ) && (0 == mbr0.getWithI32Buffer(1)) ) { for (uint a1 = 0; a1 < (uint)chn_info.acc_data_now.table[a0].num_acc; a1++) { chn_info.acc_data_now.table[a0].data0[a1] = chn_info.chn_ref.acc_data_now.table[a0].data0[a1]; } } else { MAPCDSF_parseACCDataMemberUsingHuffTable0(a0, mbr0, chn_info); } } } return rs; }
//used in MAPCDSF_decodeACC2MainSub1 0:3 static int MAPCDSF_decodeACC2Main1_Route3(MaiBitReader mbr0, MaiAT3PlusCoreDecoderChnInfo chn_info) { int rs = 0; uint uk1b464 = (uint)mbr0.getWithI32Buffer(2); uint uk1b468 = (uint)mbr0.getWithI32Buffer(4); if (uk1b464 != 0) { for (uint a0 = 0; a0 < chn_info.uk1b450; a0++) { for (uint a1 = 0; a1 < (uint)chn_info.acc_data_now.table[a0].num_acc; a1++) { chn_info.acc_data_now.table[a0].data1[a1] = (uint)(uk1b468 + mbr0.getWithI32Buffer((int)uk1b464)); } } } else { for (uint a0 = 0; a0 < chn_info.uk1b450; a0++) { for (uint a1 = 0; a1 < (uint)chn_info.acc_data_now.table[a0].num_acc; a1++) { chn_info.acc_data_now.table[a0].data1[a1] = uk1b468; } } } return rs; }
//used in decodeACC2Main static int MAPCDSF_decodeACC2MainSub0(MaiBitReader mbr0, MaiAT3PlusCoreDecoderChnInfo chn_info) { int rs = 0; MAPCDSF_decodeACC2Main_func_list0[chn_info.chn_flag * 4 + mbr0.getWithI32Buffer(2)] (mbr0, chn_info); for (uint a0 = 0; a0 < 0x10; a0++) { if (chn_info.acc_data_now.table[a0].num_acc > 0x7) { rs = -21; break; } } return rs; }
//used in MAPCDSF_decodeACC2MainSub1 1:1 static int MAPCDSF_decodeACC2Main1_Route4(MaiBitReader mbr0, MaiAT3PlusCoreDecoderChnInfo chn_info) { int rs = 0; for (uint a0 = 0; a0 < chn_info.uk1b450; a0++) { for (uint a1 = 0; a1 < (uint)chn_info.acc_data_now.table[a0].num_acc; a1++) { if (a1 < (uint)chn_info.chn_ref.acc_data_now.table[a0].num_acc) { chn_info.acc_data_now.table[a0].data1[a1] = chn_info.chn_ref.acc_data_now.table[a0].data1[a1] + MAPCDSF_getHuffValue(MaiAT3PlusCoreDecoder_StaticData.MAPCDSD_huff_table_global_5[0], mbr0); chn_info.acc_data_now.table[a0].data1[a1] &= 0xF; } else { chn_info.acc_data_now.table[a0].data1[a1] = 0x7 + MAPCDSF_getHuffValue(MaiAT3PlusCoreDecoder_StaticData.MAPCDSD_huff_table_global_5[0], mbr0); chn_info.acc_data_now.table[a0].data1[a1] &= 0xF; } } } return rs; }
//used in MAPCDSF_decodeACC6InnerSub0 0 static int MAPCDSF_decodeACC6Inner0_Route0(MaiBitReader mbr0, MaiAT3PlusCoreDecoderChnInfo chn_info) { int rs = 0; for (uint a0 = 0; a0 < (uint)chn_info.acc_table_now.inner.unk2; a0++) { if (chn_info.inner_pack_table0_check_table[a0] != 0) { chn_info.acc_table_now.table[a0].unk[4] = mbr0.getWithI32Buffer(1); if (chn_info.acc_table_now.table[a0].unk[4] != 0) { chn_info.acc_table_now.table[a0].unk[6] = mbr0.getWithI32Buffer(5); } else { chn_info.acc_table_now.table[a0].unk[6] = -1; } chn_info.acc_table_now.table[a0].unk[5] = mbr0.getWithI32Buffer(1); if (chn_info.acc_table_now.table[a0].unk[5] != 0) { chn_info.acc_table_now.table[a0].unk[7] = mbr0.getWithI32Buffer(5); } else { chn_info.acc_table_now.table[a0].unk[7] = 0x20; } } } return rs; }
//used in MAPCDSF_decodeACC2MainSub1 1:2 static int MAPCDSF_decodeACC2Main1_Route5(MaiBitReader mbr0, MaiAT3PlusCoreDecoderChnInfo chn_info) { int rs = 0; for (uint a0 = 0; a0 < chn_info.uk1b450; a0++) { if (chn_info.acc_data_now.table[a0].num_acc != 0) { uint uk1b46c_x = (uint)mbr0.getWithI32Buffer(1); if (uk1b46c_x != 0) { chn_info.acc_data_now.table[a0].data1[0] = MAPCDSF_getHuffValue(MaiAT3PlusCoreDecoder_StaticData.MAPCDSD_huff_table_global_2[0], mbr0); for (uint a1 = 1; a1 < (uint)chn_info.acc_data_now.table[a0].num_acc; a1++) { chn_info.acc_data_now.table[a0].data1[a1] = chn_info.acc_data_now.table[a0].data1[a1 - 1] + MAPCDSF_getHuffValue(MaiAT3PlusCoreDecoder_StaticData.MAPCDSD_huff_table_global_3[0], mbr0); chn_info.acc_data_now.table[a0].data1[a1] &= 0xF; } } else { for (uint a1 = 0; a1 < (uint)chn_info.acc_data_now.table[a0].num_acc; a1++) { if (a1 < (uint)chn_info.chn_ref.acc_data_now.table[a0].num_acc) { chn_info.acc_data_now.table[a0].data1[a1] = chn_info.chn_ref.acc_data_now.table[a0].data1[a1]; } else { chn_info.acc_data_now.table[a0].data1[a1] = 0x7; } } } } } return rs; }
//used in MAPCDSF_decodeACC6InnerSub0 2 static int MAPCDSF_decodeACC6Inner1_Route2(MaiBitReader mbr0, MaiAT3PlusCoreDecoderChnInfo chn_info) { int rs = 0; for (uint a0 = 0; a0 < (uint)chn_info.acc_table_now.inner.unk2; a0++) { if (chn_info.inner_pack_table0_check_table[a0] != 0) { int atmp0 = (int)MAPCDSF_getHuffValue(MaiAT3PlusCoreDecoder_StaticData.MAPCDSD_huff_table_global_13[0], mbr0); if ((atmp0 & 0x4) != 0) { atmp0 |= unchecked((int)0xFFFFFFF8); } else { atmp0 &= 0x7; } chn_info.acc_table_now.table[a0].num_uk = chn_info.chn_ref.acc_table_now.table[a0].num_uk + atmp0; chn_info.acc_table_now.table[a0].num_uk &= 0xF; } } return rs; }
//used in MAPCDSF_decodeACC2MainSub1 1:3 static int MAPCDSF_decodeACC2Main1_Route6(MaiBitReader mbr0, MaiAT3PlusCoreDecoderChnInfo chn_info) { int rs = 0; for (uint a0 = 0; a0 < chn_info.uk1b450; a0++) { for (uint a1 = 0; a1 < (uint)chn_info.acc_data_now.table[a0].num_acc; a1++) { if (a1 < (uint)chn_info.chn_ref.acc_data_now.table[a0].num_acc) { chn_info.acc_data_now.table[a0].data1[a1] = chn_info.chn_ref.acc_data_now.table[a0].data1[a1]; } else { chn_info.acc_data_now.table[a0].data1[a1] = 0x7; } } } return rs; }
//used in decodeACC6Inner static int MAPCDSF_decodeACC6InnerSub0(MaiBitReader mbr0, MaiAT3PlusCoreDecoderChnInfo chn_info) { int rs = 0; MAPCDSF_makeInnerPackTable0CheckTable(chn_info, 1); uint route_flag0 = 0; if (chn_info.chn_flag == 1) route_flag0 = (uint)mbr0.getWithI32Buffer(1); MAPCDSF_decodeACC6InnerSub0_func_list0[route_flag0](mbr0, chn_info); { uint route_flag1 = (uint)mbr0.getWithI32Buffer(chn_info.chn_flag + 1); MAPCDSF_decodeACC6InnerSub0_func_list1[route_flag1](mbr0, chn_info); } MAPCDSF_splitePack(mbr0, chn_info); return rs; }
//used in MAPCDSF_decodeACC2MainSub2 0:2 static int MAPCDSF_decodeACC2Main2_Route2(MaiBitReader mbr0, MaiAT3PlusCoreDecoderChnInfo chn_info) { int rs = 0; for (uint a1 = 0; a1 < (uint)chn_info.acc_data_now.table[0].num_acc; a1++) { MAPCDSF_parseACCDataMemberUsingBitRead(0, a1, mbr0, chn_info); } for (uint a0 = 1; a0 < chn_info.uk1b450; a0++) { MAPCDSF_parseACCDataMemberUsingHuffTable1(a0, mbr0, chn_info); } return rs; }
//used in decodeTable0 0:0 1:0 static int MAPCDSF_decodeTable0_Route0(MaiBitReader mbr0, MaiAT3PlusCoreDecoderChnInfo chn_info) { for (uint a0 = 0; a0 < chn_info.joint_chn_info.num_band_splited_declared; a0++) { chn_info.table0[a0] = (uint)mbr0.getWithI32Buffer(3); } return 0; }
//used in MAPCDSF_decodeACC2MainSub2 0:3 static int MAPCDSF_decodeACC2Main2_Route3(MaiBitReader mbr0, MaiAT3PlusCoreDecoderChnInfo chn_info) { int rs = 0; uint uk1b4b0 = (uint)mbr0.getWithI32Buffer(2) + 1; uint uk1b4b4 = (uint)mbr0.getWithI32Buffer(5); for (uint a0 = 0; a0 < chn_info.uk1b450; a0++) { for (uint a1 = 0; a1 < (uint)chn_info.acc_data_now.table[a0].num_acc; a1++) { chn_info.acc_data_now.table[a0].data0[a1] = (int)( mbr0.getWithI32Buffer((int)uk1b4b0) + uk1b4b4 + a1 ); } } return rs; }
public int decodeFrame(byte* p_frame_data, int data_len, out int p_chns, out short[] pp_sample_buf) { int rs = 0; var mbr0 = new MaiBitReader(data_len + 0x10); mbr0.addData(p_frame_data, data_len); var Pad = stackalloc byte[0x10]; mbr0.addData(Pad, 0x10); if (mbr0.getWithI32Buffer(1) != 0) { rs = -1; } int counter_substream = 0; int counter_chn = 0; while (rs == 0) { int substream_type = mbr0.getWithI32Buffer(2); uint joint_flag = 0; uint chns = 0; if (substream_type == 0) { joint_flag = 0; chns = 1; } else if (substream_type == 1) { joint_flag = 1; chns = 2; } else if (substream_type == 3) { break; } else { rs = -1; } if (cores[counter_substream] == null) cores[counter_substream] = new MaiAT3PlusCoreDecoder(); if (0 != (rs = cores[counter_substream].parseStream(mbr0, chns, joint_flag))) break; if (0 != (rs = cores[counter_substream].decodeStream(chns))) break; for (int a0 = 0; a0 < chns; a0++) cores[counter_substream].getAudioSamplesI16((uint)a0, new ManagedPointer<short>(sample_buf_tmp, 0x800 * (counter_chn++))); counter_substream++; } for (int a0 = 0; a0 < 0x800; a0++) { for (int a1 = 0; a1 < counter_chn; a1++) { sample_buf[a0 * counter_chn + a1] = sample_buf_tmp[a1 * 0x800 + a0]; } } mbr0.Dispose(); p_chns = counter_chn; pp_sample_buf = sample_buf; return rs; }
static int MAPCDSF_splitePack1_Route2(MaiBitReader mbr0, MaiAT3PlusCoreDecoderChnInfo chn_info) { int rs = 0; int l5 = 0; if (0 == chn_info.acc_table_now.inner.unk1 ) { for (uint a0 = 0; a0 < (uint)chn_info.acc_table_now.inner.unk2; a0++) { if (chn_info.inner_pack_table0_check_table[a0] != 0) { if (chn_info.acc_table_now.table[a0].num_uk > 0) { int atmp0 = (int)MAPCDSF_getHuffValue(MaiAT3PlusCoreDecoder_StaticData.MAPCDSD_huff_table_global_17[0], mbr0); if ((atmp0 & 0x10) != 0) { atmp0 |= unchecked((int)0xFFFFFFE0); } else { atmp0 &= 0x1F; } if ( chn_info.chn_ref.acc_table_now.table[a0].num_uk > 0 ) { chn_info.acc_table_now.table[a0].ptr0[0].unk0 = chn_info.chn_ref.acc_table_now.table[a0].ptr0[0].unk0 + atmp0; } else { chn_info.acc_table_now.table[a0].ptr0[0].unk0 = 0x2C + atmp0; } chn_info.acc_table_now.table[a0].ptr0[0].unk0 &= 0x3F; for (int a1 = 1; a1 < chn_info.acc_table_now.table[a0].num_uk; a1++) { chn_info.acc_table_now.table[a0].ptr0[a1].unk0 = chn_info.acc_table_now.table[a0].ptr0[a1 - 1].unk0; } } } } } else { for (uint a0 = 0; a0 < (uint)chn_info.acc_table_now.inner.unk2; a0++) { if (chn_info.inner_pack_table0_check_table[a0] != 0) { for (int a1 = 0; a1 < chn_info.acc_table_now.table[a0].num_uk; a1++) { int atmp0 = (int)MAPCDSF_getHuffValue(MaiAT3PlusCoreDecoder_StaticData.MAPCDSD_huff_table_global_17[0], mbr0); if ((atmp0 & 0x10) != 0) { atmp0 |= unchecked((int)0xFFFFFFE0); } else { atmp0 &= 0x1F; } if (chn_info.joint_chn_info.table11c[l5 + a1] >= 0) { chn_info.acc_table_now.table[a0].ptr0[a1].unk0 = chn_info.chn_ref.acc_table_now.table[a0].ptr0[chn_info.joint_chn_info.table11c[l5 + a1]].unk0 + atmp0; } else { chn_info.acc_table_now.table[a0].ptr0[a1].unk0 = 0x22 + atmp0; } chn_info.acc_table_now.table[a0].ptr0[a1].unk0 &= 0x3F; } l5 += chn_info.acc_table_now.table[a0].num_uk; } } } return rs; }