Function at 0x4236a4
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, 0x200
mov eax, dword [eax + 0x40]
test eax, eax
jle 0x42381f
mov dword [esp], eax
mov al, byte [ecx]
xor byte [edx], al
mov al, byte [ecx + 1]
add byte [edx + 1], al
mov al, byte [ecx + 2]
add byte [edx + 2], al
mov al, byte [ecx + 3]
xor byte [edx + 3], al
mov al, byte [ecx + 4]
xor byte [edx + 4], al
mov al, byte [ecx + 5]
add byte [edx + 5], al
mov al, byte [ecx + 6]
add byte [edx + 6], al
mov al, byte [ecx + 7]
xor byte [edx + 7], al
xor eax, eax
mov al, byte [edx]
mov al, byte [esi + eax]
add al, byte [ecx + 8]
mov byte [edx], al
xor eax, eax
mov al, byte [edx + 1]
mov al, byte [edi + eax]
xor al, byte [ecx + 9]
mov byte [edx + 1], al
xor eax, eax
mov al, byte [edx + 2]
mov al, byte [edi + eax]
xor al, byte [ecx + 0xa]
mov byte [edx + 2], al
xor eax, eax
mov al, byte [edx + 3]
mov al, byte [esi + eax]
add al, byte [ecx + 0xb]
mov byte [edx + 3], al
xor eax, eax
mov al, byte [edx + 4]
mov al, byte [esi + eax]
add al, byte [ecx + 0xc]
mov byte [edx + 4], al
xor eax, eax
mov al, byte [edx + 5]
mov al, byte [edi + eax]
xor al, byte [ecx + 0xd]
mov byte [edx + 5], al
xor eax, eax
mov al, byte [edx + 6]
mov al, byte [edi + eax]
xor al, byte [ecx + 0xe]
mov byte [edx + 6], al
xor eax, eax
mov al, byte [edx + 7]
mov al, byte [esi + eax]
add al, byte [ecx + 0xf]
mov byte [edx + 7], al
mov al, byte [edx]
add byte [edx + 1], al
mov al, byte [edx + 1]
add byte [edx], al
mov al, byte [edx + 2]
add byte [edx + 3], al
mov al, byte [edx + 3]
add byte [edx + 2], al
mov al, byte [edx + 4]
add byte [edx + 5], al
mov al, byte [edx + 5]
add byte [edx + 4], al
mov al, byte [edx + 6]
add byte [edx + 7], al
mov al, byte [edx + 7]
add byte [edx + 6], al
mov al, byte [edx]
add byte [edx + 2], al
mov al, byte [edx + 2]
add byte [edx], al
mov al, byte [edx + 4]
add byte [edx + 6], al
mov al, byte [edx + 6]
add byte [edx + 4], al
mov al, byte [edx + 1]
add byte [edx + 3], al
mov al, byte [edx + 3]
add byte [edx + 1], al
mov al, byte [edx + 5]
add byte [edx + 7], al
mov al, byte [edx + 7]
add byte [edx + 5], al
mov al, byte [edx]
add byte [edx + 4], al
mov al, byte [edx + 4]
add byte [edx], al
mov al, byte [edx + 1]
add byte [edx + 5], al
mov al, byte [edx + 5]
add byte [edx + 1], al
mov al, byte [edx + 2]
add byte [edx + 6], al
mov al, byte [edx + 6]
add byte [edx + 2], al
mov al, byte [edx + 3]
add byte [edx + 7], al
mov al, byte [edx + 7]
add byte [edx + 3], al
mov al, byte [edx + 1]
mov bl, byte [edx + 4]
mov byte [edx + 1], bl
mov bl, byte [edx + 2]
mov byte [edx + 4], bl
mov byte [edx + 2], al
mov al, byte [edx + 3]
mov bl, byte [edx + 5]
mov byte [edx + 3], bl
mov bl, byte [edx + 6]
mov byte [edx + 5], bl
mov byte [edx + 6], al
add ecx, 0x10
dec dword [esp]
jne 0x4236c9
mov al, byte [ecx]
xor byte [edx], al
mov al, byte [ecx + 1]
add byte [edx + 1], al
mov al, byte [ecx + 2]
add byte [edx + 2], al
mov al, byte [ecx + 3]
xor byte [edx + 3], al
mov al, byte [ecx + 4]
xor byte [edx + 4], al
mov al, byte [ecx + 5]
add byte [edx + 5], al
mov al, byte [ecx + 6]
add byte [edx + 6], al
mov al, byte [ecx + 7]
xor byte [edx + 7], al
pop edx
pop edi
pop esi
pop ebx
ret