Function at 0x421c40
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 8
push esi
mov esi, dword [ebp + 8]
mov eax, dword [esi + 0x240]
cmp eax, 0x10
jg 0x421c79
test eax, eax
js 0x421c79
mov eax, dword [esi + 0x234]
push eax
call fcn.00425ec0
add esp, 4
test eax, eax
jne 0x421ea5
cmp dword [esi + 0x23c], 2
je 0x421c83
mov eax, 0x10
pop esi
mov esp, ebp
pop ebp
ret
mov eax, dword [esi + 0x240]
test eax, eax
je 0x421cb4
cdq
shld edx, eax, 3
add eax, eax
add eax, eax
add eax, eax
add dword [esi + 0x250], eax
lea ecx, [esi + 0x1f4]
push ecx
adc dword [esi + 0x254], edx
push esi
call fcn.00425e30
add esp, 8
movzx edx, byte [esi + 0x24f]
movzx eax, byte [esi + 0x24e]
movzx ecx, byte [esi + 0x24d]
mov byte [esi + 0x224], dl
movzx edx, byte [esi + 0x24c]
push edi
lea edi, [esi + 0x224]
mov byte [esi + 0x225], al
movzx eax, byte [esi + 0x24b]
mov byte [esi + 0x226], cl
movzx ecx, byte [esi + 0x24a]
mov byte [esi + 0x227], dl
movzx edx, byte [esi + 0x249]
mov byte [esi + 0x228], al
movzx eax, byte [esi + 0x248]
mov byte [esi + 0x229], cl
movzx ecx, byte [esi + 0x257]
mov byte [esi + 0x22a], dl
movzx edx, byte [esi + 0x256]
mov byte [esi + 0x22b], al
movzx eax, byte [esi + 0x255]
mov byte [esi + 0x22c], cl
movzx ecx, byte [esi + 0x254]
mov byte [esi + 0x22d], dl
movzx edx, byte [esi + 0x253]
mov byte [esi + 0x22e], al
movzx eax, byte [esi + 0x252]
mov byte [esi + 0x22f], cl
movzx ecx, byte [esi + 0x251]
mov byte [esi + 0x230], dl
movzx edx, byte [esi + 0x250]
mov byte [esi + 0x231], al
mov byte [esi + 0x232], cl
mov byte [esi + 0x233], dl
lea eax, [esi + 0x1f4]
mov ecx, 4
movzx edx, byte [eax + 0x30]
xor byte [eax], dl
movzx edx, byte [eax + 0x31]
xor byte [eax + 1], dl
movzx edx, byte [eax + 0x32]
xor byte [eax + 2], dl
movzx edx, byte [eax + 0x33]
xor byte [eax + 3], dl
add eax, 4
dec ecx
jne 0x421d96
lea eax, [esi + 0x1f4]
push eax
push esi
call fcn.00425e30
mov eax, dword [esi + 0x234]
lea eax, [eax + eax*2]
push esi
shl eax, 5
mov edx, dword [eax + 0x48f81c]
lea ecx, [esi + 0x214]
push edi
push ecx
call edx
add esp, 0x14
test eax, eax
jne 0x421ea4
mov edx, dword [ebp + 0x10]
mov edi, dword [ebp + 0xc]
mov ecx, 0xfffffe0d
sub ecx, esi
mov dword [ebp + 8], ecx
mov ecx, 0xfffffe0e
sub ecx, esi
mov dword [ebp - 4], ecx
mov ecx, 0xfffffe0f
sub ecx, esi
mov dword [ebp - 8], ecx
push ebx
cmp eax, dword [edx]
jae 0x421e87
mov bl, byte [esi + eax + 0x224]
xor bl, byte [esi + eax + 0x1f4]
lea ecx, [esi + eax + 0x1f4]
mov byte [eax + edi], bl
mov ebx, dword [ebp + 8]
add ebx, ecx
cmp ebx, dword [edx]
jae 0x421e7c
mov bl, byte [eax + esi + 0x1f5]
xor bl, byte [ecx + 0x31]
mov byte [eax + edi + 1], bl
mov ebx, dword [ebp - 4]
add ebx, ecx
cmp ebx, dword [edx]
jae 0x421e7f
mov bl, byte [eax + esi + 0x1f6]
xor bl, byte [ecx + 0x32]
mov byte [eax + edi + 2], bl
mov ebx, dword [ebp - 8]
add ebx, ecx
cmp ebx, dword [edx]
jae 0x421e84
mov bl, byte [eax + esi + 0x1f7]
xor bl, byte [ecx + 0x33]
add eax, 4
mov byte [eax + edi - 1], bl
cmp eax, 0x10
jb 0x421e11
jmp 0x421e87
inc eax
jmp 0x421e87
add eax, 2
jmp 0x421e87
add eax, 3
mov dword [edx], eax
mov eax, dword [esi + 0x234]
lea eax, [eax + eax*2]
shl eax, 5
mov ecx, dword [eax + 0x48f828]
push esi
call ecx
add esp, 4
xor eax, eax
pop ebx
pop edi
pop esi
mov esp, ebp
pop ebp
ret