movzx edx, si ;mov si [8bit esi] into edx
mov esi, 38E38E39h ; set esi value
mov [esp+98h+var_98], offset cfstr_0zaq9xsw8cde7v ; "0ZAQ9XSW8CDE7VFR6BGT5NHY4MJU3KILO2P1" ; irrelevant to what i need you to do
movzx edi, ax ; mov ax value into edi
movzx eax, [ebp+var_6E] ; mov local variable into eax
add eax, [ebp+var_6C] ; add local variable to eax
lea ecx, [edx+eax] ; load affective address into ecx depending on edx+eax
mov eax, ecx ; mov ecx value into eax
imul esi ; multiply eax with esi
mov eax, ds:off_5DE5DC ; dont worry about this, its moving the offset of characterAtIndex, it should be irrelevant to the algo
shr edx, 3 ; shift edx to right
lea edx, [edx+edx*8] ; load effective address into edx
shl edx, 2 ; shift left in edx
sub ecx, edx ; subtract edx from ecx