Function at 0x4a5e80
Capabilities:
Encode data using xor

Disassembly:
sub esp, 8
push ebx
push ebp
mov ebp, ecx
mov eax, dword [ebp + 0x14]
push esi
mov esi, dword [esp + 0x18]
mov cl, byte [esi + 1]
push edi
mov edi, dword [ebp + 0x24]
shl edi, 4
sub cl, byte [eax + edi + 1]
add eax, edi
mov byte [esp + 0x1c], cl
mov cl, byte [esi + 2]
sub cl, byte [eax + 2]
mov bl, byte [eax]
mov dl, byte [eax + 7]
xor bl, byte [esi]
xor dl, byte [esi + 7]
mov byte [esp + 0x11], cl
mov cl, byte [eax + 3]
xor cl, byte [esi + 3]
mov byte [esp + 0x13], cl
mov cl, byte [eax + 4]
xor cl, byte [esi + 4]
mov byte [esp + 0x12], cl
mov cl, byte [esi + 5]
sub cl, byte [eax + 5]
mov byte [esp + 0x14], cl
mov cl, byte [esi + 6]
sub cl, byte [eax + 6]
add edi, 0xfffffff0
mov byte [esp + 0x15], cl
js 0x4a60c2
mov ecx, dword [ebp + 0x14]
lea esi, [edi + ecx + 7]
lea eax, [edi + ecx + 0xb]
add edi, 0x10
shr edi, 4
lea esp, [esp]
movzx ecx, byte [esp + 0x12]
mov byte [esp + 0x17], cl
movzx ecx, byte [esp + 0x1c]
mov byte [esp + 0x12], cl
movzx ecx, byte [esp + 0x11]
mov byte [esp + 0x1c], cl
movzx ecx, byte [esp + 0x17]
mov byte [esp + 0x11], cl
movzx ecx, byte [esp + 0x14]
mov byte [esp + 0x17], cl
movzx ecx, byte [esp + 0x13]
mov byte [esp + 0x14], cl
movzx ecx, byte [esp + 0x13]
sub byte [esp + 0x1c], cl
sub bl, byte [esp + 0x12]
movzx ecx, byte [esp + 0x17]
sub byte [esp + 0x11], cl
mov cl, byte [esp + 0x15]
sub cl, dl
mov byte [esp + 0x13], cl
movzx ecx, bl
sub byte [esp + 0x12], cl
movzx ecx, byte [esp + 0x1c]
sub byte [esp + 0x14], cl
mov cl, byte [esp + 0x17]
sub cl, byte [esp + 0x11]
sub dl, byte [esp + 0x13]
mov byte [esp + 0x15], cl
movzx ecx, byte [esp + 0x11]
mov byte [esp + 0x16], bl
sub byte [esp + 0x16], cl
movzx ecx, byte [esp + 0x15]
sub byte [esp + 0x12], cl
movzx ecx, byte [esp + 0x13]
sub byte [esp + 0x1c], cl
movzx ecx, byte [esp + 0x16]
sub byte [esp + 0x11], cl
movzx ecx, byte [esp + 0x12]
sub byte [esp + 0x15], cl
movzx ecx, byte [esp + 0x1c]
sub byte [esp + 0x13], cl
movzx ecx, byte [esp + 0x1c]
sub byte [esp + 0x16], cl
sub byte [esp + 0x14], dl
movzx ecx, byte [esp + 0x13]
sub byte [esp + 0x11], cl
movzx ecx, byte [esp + 0x14]
sub byte [esp + 0x12], cl
mov cl, byte [esp + 0x1c]
sub cl, byte [esp + 0x16]
movzx ebx, byte [eax - 2]
movzx ecx, cl
xor ecx, ebx
movzx ecx, byte [ecx + 0x509430]
movzx ebx, byte [eax]
sub dl, byte [esp + 0x14]
mov byte [esp + 0x1c], cl
mov cl, byte [esp + 0x13]
sub cl, byte [esp + 0x11]
sub byte [esp + 0x15], dl
sub dl, byte [esp + 0x15]
movzx ecx, cl
sub ecx, ebx
movzx ecx, byte [ecx + 0x509630]
movzx ebx, byte [eax + 2]
mov byte [esp + 0x13], cl
mov cl, byte [esp + 0x14]
sub cl, byte [esp + 0x12]
movzx edx, dl
movzx ecx, cl
xor ecx, ebx
movzx ecx, byte [ecx + 0x509430]
movzx ebx, byte [esp + 0x16]
mov byte [esp + 0x14], cl
movzx ecx, byte [eax + 4]
sub edx, ecx
movzx ecx, byte [eax - 3]
mov dl, byte [edx + 0x509630]
sub ebx, ecx
mov bl, byte [ebx + 0x509630]
xor bl, byte [eax - 0xb]
movzx ecx, byte [eax - 0xa]
sub byte [esp + 0x1c], cl
movzx ebp, byte [esp + 0x11]
movzx ecx, byte [eax - 1]
xor ecx, ebp
movzx ecx, byte [ecx + 0x509430]
sub cl, byte [eax - 9]
movzx ebp, byte [esp + 0x12]
mov byte [esp + 0x11], cl
movzx ecx, byte [eax - 8]
xor byte [esp + 0x13], cl
movzx ecx, byte [eax + 1]
xor dl, byte [esi]
sub ebp, ecx
movzx ecx, byte [ebp + 0x509630]
xor cl, byte [eax - 7]
movzx ebp, byte [esp + 0x15]
mov byte [esp + 0x12], cl
movzx ecx, byte [eax - 6]
sub byte [esp + 0x14], cl
movzx ecx, byte [eax + 3]
xor ecx, ebp
mov cl, byte [ecx + 0x509430]
sub cl, byte [esi - 1]
sub eax, 0x10
sub esi, 0x10
dec edi
mov byte [esp + 0x15], cl
jne 0x4a5f00
mov esi, dword [esp + 0x20]
movzx eax, byte [esp + 0x1c]
mov byte [esi + 1], al
movzx eax, byte [esp + 0x11]
mov byte [esi + 2], al
movzx eax, byte [esp + 0x13]
mov byte [esi + 3], al
movzx eax, byte [esp + 0x12]
mov byte [esi + 4], al
movzx eax, byte [esp + 0x14]
pop edi
mov byte [esi], bl
mov byte [esi + 5], al
mov byte [esi + 6], cl
mov byte [esi + 7], dl
pop esi
pop ebp
pop ebx
add esp, 8
ret 8