Function at 0x422330
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x90
test byte [0x6234c3], 1
mov ebx, ecx
je 0x422357
test byte [0x6234c4], 2
jne 0x422614
mov eax, dword [ebx]
mov ecx, dword [ebx + 4]
mov esi, dword [ebx + 0xc]
mov edi, dword [ebx + 8]
cmp dword [ebp + 8], 0x10
mov dword [esp + 0x38], ebx
bswap edi
bswap esi
bswap eax
bswap ecx
mov dword [esp + 0xc], edi
mov dword [esp + 8], esi
jae 0x422385
mov esi, dword [esp + 8]
jmp 0x4225ad
mov esi, dword [ebx + 0x14]
mov edi, dword [ebp + 8]
mov dword [esp + 0x28], esi
mov esi, dword [ebx + 0x10]
shr edi, 4
shl edi, 4
add edi, edx
mov dword [esp + 0x48], edi
mov dword [esp + 0x24], esi
mov esi, dword [ebx + 0x1c]
mov ebx, dword [ebx + 0x18]
mov dword [esp + 0x20], esi
mov dword [esp + 0x44], ebx
xor ebx, dword [esp + 0x24]
mov esi, dword [esp + 0x20]
mov dword [esp + 0x40], ebx
xor esi, dword [esp + 0x28]
mov dword [esp + 0x3c], esi
mov esi, dword [esp + 8]
nop dword [eax + eax]
mov dword [esp + 0x14], edx
mov edx, dword [edx]
bswap edx
xor edx, eax
mov eax, dword [esp + 0x14]
mov dword [esp + 0x18], edx
mov edx, dword [esp + 0x14]
mov eax, dword [eax + 4]
mov edi, dword [edx + 8]
bswap eax
xor eax, ecx
mov ecx, dword [esp + 0x14]
bswap edi
xor edi, dword [esp + 0xc]
mov dword [esp + 4], eax
mov ebx, dword [ecx + 0xc]
lea ecx, [esp + 0x78]
bswap ebx
xor ebx, esi
mov edx, ebx
push dword [esp + 0x20]
push dword [esp + 0x48]
push edi
call fcn.00422990
add esp, 0xc
mov eax, dword [esp + 0x84]
mov edx, dword [esp + 4]
lea ecx, [esp + 0x68]
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x80]
mov dword [esp + 8], eax
mov eax, dword [esp + 0x78]
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x7c]
mov dword [esp + 0x1c], eax
push dword [esp + 0x28]
push dword [esp + 0x28]
mov esi, dword [esp + 0x20]
push esi
call fcn.00422990
add esp, 0xc
mov eax, dword [esp + 0x70]
xor ebx, dword [esp + 4]
xor edi, esi
lea ecx, [esp + 0x58]
mov dword [esp + 0x34], eax
mov edx, ebx
mov eax, dword [esp + 0x74]
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0x68]
mov dword [esp + 4], eax
mov esi, dword [esp + 0x6c]
mov dword [esp + 0xc], esi
push dword [esp + 0x3c]
push dword [esp + 0x44]
push edi
call fcn.00422990
add esp, 0xc
mov edx, dword [esp + 0x10]
mov ebx, dword [esp + 0x1c]
mov eax, edx
mov ecx, edx
mov edi, ebx
shl eax, 0x1f
shl ecx, 0x1e
xor edi, dword [esp + 0x2c]
xor ecx, eax
mov eax, edx
shl eax, 0x19
xor eax, ecx
mov ecx, dword [esp + 8]
xor eax, dword [esp + 0x5c]
xor edi, esi
mov esi, ebx
xor ecx, dword [esp + 4]
xor edi, eax
mov eax, dword [esp + 0x58]
xor eax, edx
mov edx, ebx
xor ecx, eax
mov eax, ebx
shr edx, 1
shr eax, 2
mov dword [esp + 0x54], ecx
xor eax, edx
mov edx, ebx
mov ebx, ecx
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0x10]
shl ebx, 0x1f
shld esi, eax, 0x1f
shld edx, eax, 0x1e
mov eax, ecx
xor edx, esi
mov esi, ecx
shl esi, 0x1e
xor esi, ebx
mov ebx, edi
shld ebx, ecx, 0x1f
mov ecx, edi
shld ecx, eax, 0x1e
mov eax, edi
xor ecx, ebx
mov ebx, edi
shr eax, 2
shr ebx, 1
mov dword [esp + 0x18], ecx
mov ecx, dword [esp + 0x1c]
xor eax, ebx
mov dword [esp + 0x50], eax
mov eax, dword [esp + 0x10]
mov ebx, ecx
shld ebx, eax, 0x19
mov eax, edi
shr eax, 7
xor ebx, edx
mov edx, ecx
mov ecx, edi
xor eax, dword [esp + 0x30]
shr edx, 7
xor edx, dword [esp + 0x4c]
xor eax, dword [esp + 0x50]
xor edx, dword [esp + 0x64]
xor eax, edi
mov edi, dword [esp + 0x54]
xor edx, esi
mov esi, dword [esp + 8]
shld ecx, edi, 0x19
xor ecx, dword [esp + 0x34]
xor esi, dword [esp + 0x10]
xor ecx, dword [esp + 0x18]
xor esi, dword [esp + 0x34]
xor ecx, edi
shl edi, 0x19
xor esi, dword [esp + 4]
xor edi, dword [esp + 0x2c]
xor edi, dword [esp + 0x1c]
xor edi, edx
mov edx, dword [esp + 0xc]
xor edx, dword [esp + 0x30]
xor edx, edi
mov dword [esp + 0xc], edx
mov edx, dword [esp + 0x14]
xor ebx, dword [esp + 0x60]
add edx, 0x10
xor esi, ebx
cmp edx, dword [esp + 0x48]
jne 0x4223d0
mov edi, dword [esp + 0x38]
bswap eax
bswap ecx
mov ebx, esi
mov edx, eax
bswap ebx
shr edx, 0x10
mov byte [edi], al
mov byte [edi + 1], ah
mov byte [edi + 2], dl
mov edx, dword [esp + 0xc]
shr eax, 0x18
mov byte [edi + 3], al
mov eax, ecx
mov byte [edi + 4], cl
mov byte [edi + 5], ch
shr ecx, 0x18
shr eax, 0x10
mov byte [edi + 6], al
mov byte [edi + 7], cl
bswap edx
mov eax, edx
mov byte [edi + 8], dl
mov byte [edi + 9], dh
shr eax, 0x10
mov byte [edi + 0xa], al
mov eax, edx
shr eax, 0x18
mov byte [edi + 0xb], al
mov eax, ebx
mov byte [edi + 0xc], bl
mov byte [edi + 0xd], bh
shr eax, 0x10
mov byte [edi + 0xe], al
mov eax, ebx
shr eax, 0x18
mov byte [edi + 0xf], al
jmp 0x422625
lea eax, [ebx + 0x10]
push dword [ebp + 8]
push edx
push eax
push ebx
call fcn.004c9630
add esp, 0x10
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret