Code:
.Const
ITEMSECTIONSPACE Equ 40H
ITEMINDEXSPACE Equ 40H
.Data
ItemSection DB ITEMSECTIONSPACE Dup(0)
GlobalItemIndex DB ITEMINDEXSPACE Dup(0)
CalculateItemID Proc
Local CMyItemID:DWord
Local CMyItemIndex:DWord
Push Ebx
Push Esi
Push Edi
Mov Ecx, DWord Ptr Ss:[Ebp + 8H]
Mov CMyItemID, Ecx
Xor Eax, Eax
Mov Eax, 1
Cmp Ecx, 0
Je CalculateItemIDEnd
Xor Eax, Eax
CSubNumbers:
Add Eax, 1
Sub Ecx, 10H
Cmp Ecx, 0
Je CMoveItemID
Cmp Ecx, 0FFFFFFFFH
Jle CMoveItemID
Jmp CSubNumbers
CMoveItemID:
Mov Ecx, CMyItemID
Cmp Ecx, 1FH
Jle CDecreaseBytebyone
Cmp Ecx, 21H
Jge CCheckAll
Jmp CCalculateItemSection
CCheckAll:
Cmp Ecx, 20H
Je CCalculateItemSection
Cmp Ecx, 40H
Je CCalculateItemSection
Cmp Ecx, 60H
Je CCalculateItemSection
Cmp Ecx, 80H
Je CCalculateItemSection
Cmp Ecx, 0A0H
Je CCalculateItemSection
Cmp Ecx, 0C0H
Je CCalculateItemSection
Cmp Ecx, 0E0H
Je CCalculateItemSection
Cmp Ecx, 100H
Je CCalculateItemSection
Cmp Ecx, 120H
Je CCalculateItemSection
Cmp Ecx, 140H
Je CCalculateItemSection
Cmp Ecx, 160H
Je CCalculateItemSection
Cmp Ecx, 180H
Je CCalculateItemSection
Cmp Ecx, 1A0H
Je CCalculateItemSection
Cmp Ecx, 1C0H
Je CCalculateItemSection
Cmp Ecx, 1E0H
Je CCalculateItemSection
CDecreaseBytebyone:
Sub Eax, 1
CCalculateItemSection:
IMul Eax, Eax, 10H
Mov CMyItemIndex, Eax
Mov Ecx, CMyItemID
Sub Ecx, Eax
Mov DWord Ptr GlobalItemIndex, Ecx
CheckByteSection:
Mov Eax, CMyItemIndex
Cmp Eax, 10H
Je Cits0
Cmp Eax, 20H
Je Cits10
Cmp Eax, 40H
Je Cits20
Cmp Eax, 60H
Je Cits30
Cmp Eax, 80H
Je Cits40
Cmp Eax, 0A0H
Je Cits50
Cmp Eax, 0C0H
Je Cits60
Cmp Eax, 0E0H
Je Cits70
Cmp Eax, 100H
Je Cits80
Cmp Eax, 120H
Je Cits90
Cmp Eax, 140H
Je Cits100
Cmp Eax, 160H
Je Cits110
Cmp Eax, 180H
Je Cits120
Cmp Eax, 1A0H
Je Cits130
Cmp Eax, 1C0H
Je Cits140
Cmp Eax, 1E0H
Je Cits150
Xor Eax, Eax
Jmp CalculateItemIDEnd
Cits0:
Mov ItemSection, 0
Xor Eax, Eax
Mov Eax, 1
Jmp CalculateItemIDEnd
Cits10:
Mov ItemSection, 10H
Xor Eax, Eax
Mov Eax, 1
Jmp CalculateItemIDEnd
Cits20:
Mov ItemSection, 20H
Xor Eax, Eax
Mov Eax, 1
Jmp CalculateItemIDEnd
Cits30:
Mov ItemSection, 30H
Xor Eax, Eax
Mov Eax, 1
Jmp CalculateItemIDEnd
Cits40:
Mov ItemSection, 40H
Xor Eax, Eax
Mov Eax, 1
Jmp CalculateItemIDEnd
Cits50:
Mov ItemSection, 50H
Xor Eax, Eax
Mov Eax, 1
Jmp CalculateItemIDEnd
Cits60:
Mov ItemSection, 60H
Xor Eax, Eax
Mov Eax, 1
Jmp CalculateItemIDEnd
Cits70:
Mov ItemSection, 70H
Xor Eax, Eax
Mov Eax, 1
Jmp CalculateItemIDEnd
Cits80:
Mov ItemSection, 80H
Xor Eax, Eax
Mov Eax, 1
Jmp CalculateItemIDEnd
Cits90:
Mov ItemSection, 90H
Xor Eax, Eax
Mov Eax, 1
Jmp CalculateItemIDEnd
Cits100:
Mov ItemSection, 0A0H
Xor Eax, Eax
Mov Eax, 1
Jmp CalculateItemIDEnd
Cits110:
Mov ItemSection, 0B0H
Xor Eax, Eax
Mov Eax, 1
Jmp CalculateItemIDEnd
Cits120:
Mov ItemSection, 0C0H
Xor Eax, Eax
Mov Eax, 1
Jmp CalculateItemIDEnd
Cits130:
Mov ItemSection, 0D0H
Xor Eax, Eax
Mov Eax, 1
Jmp CalculateItemIDEnd
Cits140:
Mov ItemSection, 0E0H
Xor Eax, Eax
Mov Eax, 1
Jmp CalculateItemIDEnd
Cits150:
Mov ItemSection, 0F0H
Xor Eax, Eax
Mov Eax, 1
CalculateItemIDEnd:
Pop Edi
Pop Esi
Pop Ebx
Mov Esp, Ebp
Pop Ebp
Ret
CalculateItemID EndP
Well this fuction is a reeplase of the current call: