Function at 0x423854
Capabilities:
Encode data using xor

Disassembly:
push ebx
push esi
push edi
push ecx
mov ecx, dword [eax + 0x38]
mov esi, ecx
mov edi, ecx
add edi, 0x100
add ecx, 0x1f8
mov ebx, dword [eax + 0x40]
add ebx, ebx
inc ebx
shl ebx, 3
add ecx, ebx
mov bl, byte [ecx + 7]
xor byte [edx + 7], bl
mov bl, byte [ecx + 6]
sub byte [edx + 6], bl
mov bl, byte [ecx + 5]
sub byte [edx + 5], bl
mov bl, byte [ecx + 4]
xor byte [edx + 4], bl
mov bl, byte [ecx + 3]
xor byte [edx + 3], bl
mov bl, byte [ecx + 2]
sub byte [edx + 2], bl
mov bl, byte [ecx + 1]
sub byte [edx + 1], bl
mov bl, byte [ecx]
xor byte [edx], bl
mov eax, dword [eax + 0x40]
test eax, eax
jle 0x423a08
mov dword [esp], eax
sub ecx, 0x10
mov al, byte [edx + 4]
mov bl, byte [edx + 1]
mov byte [edx + 4], bl
mov bl, byte [edx + 2]
mov byte [edx + 1], bl
mov byte [edx + 2], al
mov al, byte [edx + 5]
mov bl, byte [edx + 3]
mov byte [edx + 5], bl
mov bl, byte [edx + 6]
mov byte [edx + 3], bl
mov byte [edx + 6], al
mov al, byte [edx + 4]
sub byte [edx], al
mov al, byte [edx]
sub byte [edx + 4], al
mov al, byte [edx + 5]
sub byte [edx + 1], al
mov al, byte [edx + 1]
sub byte [edx + 5], al
mov al, byte [edx + 6]
sub byte [edx + 2], al
mov al, byte [edx + 2]
sub byte [edx + 6], al
mov al, byte [edx + 7]
sub byte [edx + 3], al
mov al, byte [edx + 3]
sub byte [edx + 7], al
mov al, byte [edx + 2]
sub byte [edx], al
mov al, byte [edx]
sub byte [edx + 2], al
mov al, byte [edx + 6]
sub byte [edx + 4], al
mov al, byte [edx + 4]
sub byte [edx + 6], al
mov al, byte [edx + 3]
sub byte [edx + 1], al
mov al, byte [edx + 1]
sub byte [edx + 3], al
mov al, byte [edx + 7]
sub byte [edx + 5], al
mov al, byte [edx + 5]
sub byte [edx + 7], al
mov al, byte [edx + 1]
sub byte [edx], al
mov al, byte [edx]
sub byte [edx + 1], al
mov al, byte [edx + 3]
sub byte [edx + 2], al
mov al, byte [edx + 2]
sub byte [edx + 3], al
mov al, byte [edx + 5]
sub byte [edx + 4], al
mov al, byte [edx + 4]
sub byte [edx + 5], al
mov al, byte [edx + 7]
sub byte [edx + 6], al
mov al, byte [edx + 6]
sub byte [edx + 7], al
mov al, byte [ecx + 0xf]
sub byte [edx + 7], al
mov al, byte [ecx + 0xe]
xor byte [edx + 6], al
mov al, byte [ecx + 0xd]
xor byte [edx + 5], al
mov al, byte [ecx + 0xc]
sub byte [edx + 4], al
mov al, byte [ecx + 0xb]
sub byte [edx + 3], al
mov al, byte [ecx + 0xa]
xor byte [edx + 2], al
mov al, byte [ecx + 9]
xor byte [edx + 1], al
mov al, byte [ecx + 8]
sub byte [edx], al
xor eax, eax
mov al, byte [edx + 7]
mov al, byte [edi + eax]
xor al, byte [ecx + 7]
mov byte [edx + 7], al
xor eax, eax
mov al, byte [edx + 6]
mov al, byte [esi + eax]
sub al, byte [ecx + 6]
mov byte [edx + 6], al
xor eax, eax
mov al, byte [edx + 5]
mov al, byte [esi + eax]
sub al, byte [ecx + 5]
mov byte [edx + 5], al
xor eax, eax
mov al, byte [edx + 4]
mov al, byte [edi + eax]
xor al, byte [ecx + 4]
mov byte [edx + 4], al
xor eax, eax
mov al, byte [edx + 3]
mov al, byte [edi + eax]
xor al, byte [ecx + 3]
mov byte [edx + 3], al
xor eax, eax
mov al, byte [edx + 2]
mov al, byte [esi + eax]
sub al, byte [ecx + 2]
mov byte [edx + 2], al
xor eax, eax
mov al, byte [edx + 1]
mov al, byte [esi + eax]
sub al, byte [ecx + 1]
mov byte [edx + 1], al
xor eax, eax
mov al, byte [edx]
mov al, byte [edi + eax]
xor al, byte [ecx]
mov byte [edx], al
dec dword [esp]
jne 0x4238b2
pop edx
pop edi
pop esi
pop ebx
ret