Function at 0x4216e0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x24
push ebx
push esi
push edi
push 0
push 0x2f5
mov eax, edx
mov dword [ebp - 0x18], ecx
push 0
push eax
mov dword [ebp - 0xc], eax
mov ebx, ecx
call fcn.0045b0e0
mov ecx, dword [ebp - 0xc]
xor edx, edx
mov dword [ebp - 0x1c], 0
mov edi, dword [eax*8 + reloc.USER32.dll_PeekMessageA]
mov esi, dword [eax*8 + reloc.USER32.dll_PeekMessageA]
xor edi, 0x4190944b
xor esi, 0x313b88a3
mov dword [ebp - 0x10], edi
mov eax, edi
mov dword [ebp - 0x14], esi
xor eax, 0xcf82b318
mov dword [ebp - 4], eax
mov eax, esi
xor eax, 0xa0f643cc
mov dword [ebp - 8], eax
mov eax, ecx
and ecx, 0xfffffff8
and eax, 7
mov dword [ebp - 0x24], eax
lea eax, [ecx + ebx]
shr ecx, 3
cmp ebx, eax
cmova ecx, edx
mov dword [ebp - 0xc], ecx
test ecx, ecx
je 0x4217fb
mov eax, dword [ebx + 4]
mov ecx, dword [ebx]
xor eax, 0x57ff7a3a
push 0xda5174b5
push 0xa1d8414f
xor ecx, 0xd28cb573
push eax
push ecx
call fcn.0043d380
mov ecx, dword [ebp - 0x14]
mov edi, eax
mov ebx, edx
xor esi, esi
mov edx, dword [ebp - 0x10]
mov eax, edx
shrd edx, ecx, 0x11
shl eax, 0xf
shr ecx, 0x11
or esi, edx
or eax, ecx
mov ecx, edi
xor ecx, dword [ebp - 4]
mov dword [ebp - 0x14], eax
mov eax, ebx
xor eax, dword [ebp - 8]
push 0
push 0x2f5
push eax
push ecx
call fcn.0045b0e0
mov ecx, dword [ebp - 0x14]
xor esi, dword [eax*8 + reloc.USER32.dll_PeekMessageA]
xor ecx, dword [eax*8 + reloc.USER32.dll_PeekMessageA]
xor esi, edi
mov eax, dword [ebp - 0x1c]
xor ecx, ebx
add dword [ebp - 4], 0x17
mov edi, esi
mov ebx, dword [ebp - 0x18]
adc dword [ebp - 8], 0
add ebx, 8
inc eax
mov dword [ebp - 0x10], esi
mov esi, ecx
mov dword [ebp - 0x18], ebx
mov dword [ebp - 0x14], esi
mov dword [ebp - 0x1c], eax
cmp eax, dword [ebp - 0xc]
jb case.default.0x4217fe
mov eax, dword [ebp - 0x24]
jmp dword [eax*4 + 0x4218e8]
mov eax, 0x88888888
mov edx, eax
jmp 0x4218c8
mov al, byte [ebx]
mov edx, 0x11111111
mov dword [ebp - 0x20], 0x11111111
mov byte [ebp - 0x20], al
jmp 0x4218c5
mov ax, word [ebx]
mov edx, 0x22222222
mov dword [ebp - 0x20], 0x22222222
mov word [ebp - 0x20], ax
jmp 0x4218c5
mov ax, word [ebx]
mov edx, 0x33333333
mov dword [ebp - 0x20], 0x33333333
mov word [ebp - 0x20], ax
mov al, byte [ebx + 2]
mov byte [ebp - 0x1e], al
jmp 0x4218c5
mov eax, dword [ebx]
mov edx, 0x44444444
mov dword [ebp - 0x20], 0x44444444
jmp 0x4218c8
mov cl, byte [ebx + 4]
mov eax, dword [ebx]
mov dword [ebp - 0x1c], 0x55555555
mov byte [ebp - 0x1c], cl
mov edx, dword [ebp - 0x1c]
mov dword [ebp - 0x20], 0x55555555
jmp 0x4218c8
mov cx, word [ebx + 4]
mov eax, dword [ebx]
mov dword [ebp - 0x1c], 0x66666666
mov word [ebp - 0x1c], cx
mov edx, dword [ebp - 0x1c]
mov dword [ebp - 0x20], 0x66666666
jmp 0x4218c8
mov cx, word [ebx + 4]
mov eax, dword [ebx]
mov dword [ebp - 0x1c], 0x77777777
mov word [ebp - 0x1c], cx
mov cl, byte [ebx + 6]
mov byte [ebp - 0x1a], cl
mov edx, dword [ebp - 0x1c]
mov dword [ebp - 0x20], 0x77777777
jmp 0x4218c8
mov eax, dword [ebp - 0x20]
mov ebx, dword [ebp - 0x24]
xor ecx, ecx
add ebx, dword [ebp - 4]
adc ecx, dword [ebp - 8]
push ecx
push ebx
push edx
push eax
push esi
push edi
call fcn.00421660
add esp, 0x18
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret