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