MCPcopy Create free account
hub / github.com/Scobalula/Greyhound / GetItem0

Method GetItem0

src/External/CascLib/src/CascRootFile_MNDX.cpp:882–1034  ·  view source on GitHub ↗

Returns the value of Item0[index] (HOTS: 1959CB0)

Source from the content-addressed store, hash-verified

880
881 // Returns the value of Item0[index] (HOTS: 1959CB0)
882 DWORD GetItem0(DWORD index)
883 {
884 SETBITS zeroBits;
885 DWORD groupIndex;
886 DWORD dwordIndex;
887 DWORD itemIndex;
888 DWORD bitGroup;
889 DWORD edx = index;
890
891#ifdef CASCLIB_DEBUG
892 //if(TotalItemCount > 0x200)
893 //{
894 // FILE * fp = fopen("e:\\Ladik\\Appdir\\CascLib\\doc\\mndx-sparse-array.txt", "wt");
895 // Dump(fp);
896 // fclose(fp);
897 //}
898#endif
899
900 // If the index is at begin of the group, we just return the start value
901 if((index & 0x1FF) == 0)
902 return IndexToItem0[INDEX_TO_GROUP(index)];
903
904 // Find the group where the index belongs to
905 groupIndex = FindGroup_Items0(index);
906
907 // HOTS: 1959D5F
908 edx += BaseVals[groupIndex].BaseValue200 - (groupIndex << 0x09);
909 dwordIndex = (groupIndex << 4);
910
911 if(edx < 0x100 - BaseVals[groupIndex].AddValue100)
912 {
913 // HOTS: 1959D8C
914 if(edx < 0x80 - BaseVals[groupIndex].AddValue80)
915 {
916 // HOTS: 01959DA2
917 if(edx >= 0x40 - BaseVals[groupIndex].AddValue40)
918 {
919 // HOTS: 01959DB7
920 dwordIndex += 2;
921 edx = edx + BaseVals[groupIndex].AddValue40 - 0x40;
922 }
923 }
924 else
925 {
926 // HOTS: 1959DC0
927 if(edx < 0xC0 - BaseVals[groupIndex].AddValueC0)
928 {
929 // HOTS: 1959DD3
930 dwordIndex += 4;
931 edx = edx + BaseVals[groupIndex].AddValue80 - 0x80;
932 }
933 else
934 {
935 // HOTS: 1959DD3
936 dwordIndex += 6;
937 edx = edx + BaseVals[groupIndex].AddValueC0 - 0xC0;
938 }
939 }

Callers 3

ComparePathFragmentMethod · 0.80
DoSearchMethod · 0.80

Calls 1

GetNumberOfSetBitsFunction · 0.85

Tested by

no test coverage detected