Function at 0x63edc0
Capabilities:
Encode data using xor

Disassembly:
push ebp
push edi
push esi
push ebx
sub esp, 0x4c
mov eax, dword [esp + 0x70]
mov eax, dword [eax]
bswap eax
mov edi, eax
mov eax, dword [esp + 0x70]
mov eax, dword [eax + 4]
bswap eax
mov ebp, eax
mov eax, dword [esp + 0x68]
lea ecx, [eax - 8]
mov eax, dword [esp + 0x74]
test eax, eax
je 0x63ef10
test ecx, ecx
js 0x63f270
mov ebx, ecx
mov esi, dword [esp + 0x64]
lea edx, [esp + 0x40]
mov dword [esp + 0x1c], ecx
shr ebx, 3
mov dword [esp + 0xc], edx
lea eax, [ebx*8 + 8]
mov dword [esp + 0x14], ebx
add esi, eax
mov dword [esp + 0x18], eax
mov dword [esp + 0x10], esi
mov esi, dword [esp + 0x60]
lea esi, [esi]
mov eax, dword [esi + 4]
mov edx, dword [esi]
add esi, 8
bswap eax
xor eax, ebp
bswap edx
xor edx, edi
mov dword [esp + 0x44], eax
mov eax, dword [esp + 0x6c]
mov dword [esp + 0x40], edx
mov dword [esp + 4], eax
mov eax, dword [esp + 0xc]
mov dword [esp], eax
call fcn.0063e600
mov edi, dword [esp + 0x40]
mov ebp, dword [esp + 0x44]
add dword [esp + 0x64], 8
mov ebx, edi
mov eax, edi
mov ecx, ebp
shr eax, 0x10
movzx edx, bl
mov ebx, edi
shr ecx, 0x10
movzx ebx, bh
shl edx, 8
movzx eax, al
movzx ecx, cl
or edx, ebx
mov ebx, ebp
shl edx, 8
movzx ebx, bh
or edx, eax
mov eax, ebp
movzx eax, al
shld edx, edi, 8
shl eax, 8
or eax, ebx
shl eax, 8
or eax, ecx
shld eax, ebp, 8
mov ebx, eax
mov eax, dword [esp + 0x64]
mov dword [eax - 8], edx
mov dword [eax - 4], ebx
mov eax, dword [esp + 0x10]
cmp dword [esp + 0x64], eax
jne 0x63ee28
mov ebx, dword [esp + 0x14]
mov eax, dword [esp + 0x18]
add dword [esp + 0x60], eax
mov ecx, dword [esp + 0x1c]
mov eax, ebx
neg eax
lea edx, [eax*8]
mov eax, dword [esp + 0x68]
lea esi, [edx + ecx]
mov dword [esp + 0x68], esi
lea eax, [eax + edx - 0x10]
cmp eax, 0xfffffff8
je 0x63f0c0
mov esi, dword [esp + 0x60]
cmp dword [esp + 0x68], 7
lea eax, [esi + eax + 8]
ja case.0x63ef05.0
mov esi, dword [esp + 0x68]
jmp dword [esi*4 + 0x6d9844]
cmp dword [esp + 0x68], 7
jle 0x63f260
mov ebx, ecx
mov eax, dword [esp + 0x64]
lea edx, [esp + 0x40]
mov dword [esp + 0x10], ebp
shr ebx, 3
mov dword [esp + 0xc], edx
lea esi, [ebx*8 + 8]
mov dword [esp + 0x1c], ebx
add eax, esi
mov dword [esp + 0x20], esi
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x60]
mov dword [esp + 0x24], ecx
mov dword [esp + 0x14], edi
mov edi, eax
lea esi, cs:[esi]
mov eax, dword [edi]
mov ebp, dword [esp + 0x14]
add edi, 8
mov esi, dword [esp + 0x10]
bswap eax
mov ecx, eax
mov dword [esp + 0x14], eax
mov eax, dword [edi - 4]
mov dword [esp + 0x40], ecx
bswap eax
mov dword [esp + 0x10], eax
mov dword [esp + 0x44], eax
mov eax, dword [esp + 0x6c]
mov dword [esp + 4], eax
mov eax, dword [esp + 0xc]
mov dword [esp], eax
call fcn.0063e9e0
xor ebp, dword [esp + 0x40]
xor esi, dword [esp + 0x44]
mov ebx, ebp
mov eax, ebp
mov ecx, esi
add dword [esp + 0x64], 8
shr eax, 0x10
movzx edx, bl
mov ebx, ebp
shr ecx, 0x10
movzx ebx, bh
shl edx, 8
movzx eax, al
movzx ecx, cl
or edx, ebx
mov ebx, esi
shl edx, 8
movzx ebx, bh
or edx, eax
mov eax, esi
movzx eax, al
shld edx, ebp, 8
shl eax, 8
or eax, ebx
shl eax, 8
or eax, ecx
shld eax, esi, 8
mov ebx, eax
mov eax, dword [esp + 0x64]
mov dword [eax - 8], edx
mov dword [eax - 4], ebx
mov eax, dword [esp + 0x18]
cmp dword [esp + 0x64], eax
jne 0x63ef58
mov ebx, dword [esp + 0x1c]
mov esi, dword [esp + 0x20]
mov ecx, dword [esp + 0x24]
add dword [esp + 0x60], esi
mov eax, ebx
mov esi, dword [esp + 0x68]
mov ebp, dword [esp + 0x10]
neg eax
mov edi, dword [esp + 0x14]
shl eax, 3
lea esi, [esi + eax - 0x10]
add eax, ecx
mov dword [esp + 0x68], eax
cmp esi, 0xfffffff8
je 0x63f0c0
mov eax, dword [esp + 0x60]
mov ebx, dword [eax]
mov eax, dword [eax + 4]
bswap eax
mov dword [esp + 0xc], eax
bswap ebx
mov dword [esp + 0x44], eax
mov eax, dword [esp + 0x6c]
mov dword [esp + 0x40], ebx
mov dword [esp + 4], eax
lea eax, [esp + 0x40]
mov dword [esp], eax
call fcn.0063e9e0
mov eax, dword [esp + 0x40]
xor ebp, dword [esp + 0x44]
xor eax, edi
mov edi, dword [esp + 0x18]
cmp dword [esp + 0x68], 7
lea esi, [edi + esi + 8]
ja case.0x63f079.64
mov edi, dword [esp + 0x68]
jmp dword [edi*4 + 0x6d9864]
mov ecx, ebp
sub esi, 1
mov byte [esi], ch
mov edx, ebp
sub esi, 1
shr edx, 0x10
mov byte [esi], dl
mov ecx, ebp
lea edx, [esi - 1]
shr ecx, 0x18
mov byte [esi - 1], cl
mov byte [edx - 1], al
lea esi, [edx - 1]
mov byte [esi - 1], ah
lea edx, [esi - 1]
mov ecx, eax
lea esi, [edx - 1]
shr ecx, 0x10
mov byte [edx - 1], cl
shr eax, 0x18
mov byte [esi - 1], al
mov ebp, dword [esp + 0xc]
mov edi, ebx
nop
mov eax, edi
shr eax, 0x18
mov dword [esp + 0xc], eax
mov eax, edi
shr eax, 0x10
mov byte [esp + 0x14], al
mov eax, edi
mov byte [esp + 0x18], al
movzx ecx, ah
mov eax, ebp
shr eax, 0x18
mov dword [esp + 0x1c], eax
mov eax, ebp
shr eax, 0x10
mov byte [esp + 0x20], al
mov eax, ebp
mov byte [esp + 0x24], al
movzx ebx, ah
movzx eax, byte [esp + 0x24]
movzx edx, byte [esp + 0x18]
movzx ebx, bl
movzx ecx, cl
shl eax, 8
shl edx, 8
or eax, ebx
movzx ebx, byte [esp + 0x20]
or edx, ecx
movzx ecx, byte [esp + 0x14]
shl eax, 8
shl edx, 8
or eax, ebx
movzx ebx, byte [esp + 0x1c]
or edx, ecx
movzx ecx, byte [esp + 0xc]
shl eax, 8
shl edx, 8
or eax, ebx
or edx, ecx
mov edi, eax
mov eax, dword [esp + 0x70]
mov dword [eax], edx
mov dword [eax + 4], edi
add esp, 0x4c
pop ebx
pop esi
pop edi
pop ebp
ret
xor ecx, ecx
movzx edx, byte [eax - 1]
sub eax, 1
shl edx, 0x10
or edx, ecx
lea ecx, [eax - 1]
movzx eax, byte [eax - 1]
shl eax, 0x18
or eax, edx
xor ebp, eax
movzx ebx, byte [ecx - 1]
lea eax, [ecx - 1]
movzx ecx, byte [eax - 1]
lea edx, [eax - 1]
shl ecx, 8
or ecx, ebx
lea eax, [edx - 1]
movzx edx, byte [edx - 1]
shl edx, 0x10
or ecx, edx
movzx edx, byte [eax - 1]
shl edx, 0x18
or edx, ecx
xor edi, edx
mov eax, dword [esp + 0x6c]
mov dword [esp + 0x40], edi
mov dword [esp + 0x44], ebp
mov dword [esp + 4], eax
lea eax, [esp + 0x40]
mov dword [esp], eax
call fcn.0063e600
mov esi, dword [esp + 0x40]
mov edx, dword [esp + 0x44]
mov eax, esi
mov edi, esi
mov ebp, esi
mov ebx, edx
shr eax, 0x18
shr edi, 0x10
mov byte [esp + 0x24], dl
mov dword [esp + 0x28], eax
shr ebp, 8
shr ebx, 0x10
mov dword [esp + 0x2c], edi
mov ecx, ebp
mov byte [esp + 0xc], al
mov eax, edi
mov edi, edx
movzx ebp, cl
shr edi, 0x18
mov byte [esp + 0x14], al
mov eax, esi
mov byte [esp + 0x18], al
mov eax, edi
mov byte [esp + 0x1c], al
mov eax, esi
movzx esi, al
mov dword [esp + 0x34], ebx
mov eax, dword [esp + 0x28]
shl esi, 8
mov byte [esp + 0x20], bl
mov ebx, edx
movzx edx, dl
shr ebx, 8
or esi, ebp
movzx ebp, byte [esp + 0x2c]
mov dword [esp + 0x30], edi
shl esi, 8
movzx edi, bl
shl edx, 8
or esi, ebp
or edx, edi
shl esi, 8
shl edx, 8
mov ebp, esi
movzx esi, byte [esp + 0x34]
or eax, ebp
or edx, esi
mov esi, eax
mov eax, dword [esp + 0x30]
shl edx, 8
or eax, edx
mov edi, eax
mov eax, dword [esp + 0x10]
mov dword [eax], esi
mov dword [eax + 4], edi
jmp 0x63f0f6
mov eax, dword [esp + 0x64]
mov esi, ecx
mov dword [esp + 0x18], eax
jmp 0x63f026
mov esi, dword [esp + 0x64]
mov eax, ecx
mov dword [esp + 0x10], esi
jmp 0x63eee5
xor ecx, ecx
jmp 0x63f18b
mov edx, eax
xor ecx, ecx
jmp 0x63f17f
xor ebx, ebx
jmp 0x63f173
mov ecx, eax
jmp 0x63f16c
xor edx, edx
jmp 0x63f15e
movzx ecx, byte [eax - 1]
sub eax, 1
shl ecx, 8
jmp 0x63f152
mov edx, esi
jmp 0x63f09c
mov edx, esi
jmp 0x63f0a8