Function at 0x53ae78
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
push ebx
sub esp, 0x50
mov edx, dword [ebp + 0x10]
mov eax, dword [ebp + 0x1c]
test eax, eax
je 0x53b094
mov ecx, dword [ebp + 0x18]
movzx eax, byte [ecx]
shl eax, 0x18
movzx ecx, byte [ecx + 1]
shl ecx, 0x10
or ecx, eax
mov ebx, dword [ebp + 0x18]
movzx eax, byte [ebx + 2]
shl eax, 8
or ecx, eax
movzx eax, byte [ebx + 3]
or ecx, eax
movzx eax, byte [ebx + 4]
shl eax, 0x18
movzx ebx, byte [ebx + 5]
shl ebx, 0x10
or ebx, eax
mov esi, dword [ebp + 0x18]
movzx eax, byte [esi + 6]
shl eax, 8
or ebx, eax
movzx eax, byte [esi + 7]
or ebx, eax
mov dword [ebp - 0x20], ebx
sub edx, 8
mov dword [ebp - 0x48], edx
mov eax, edx
test edx, edx
js 0x53afbf
mov dword [ebp - 0x24], edx
mov esi, dword [ebp + 0xc]
mov ebx, dword [ebp + 8]
lea edi, [ebp - 0x14]
mov dword [ebp - 0x44], edi
nop
movzx edx, byte [ebx]
shl edx, 0x18
movzx eax, byte [ebx + 1]
shl eax, 0x10
or edx, eax
movzx eax, byte [ebx + 3]
or edx, eax
movzx eax, byte [ebx + 2]
shl eax, 8
or edx, eax
movzx eax, byte [ebx + 4]
shl eax, 0x18
movzx edi, byte [ebx + 5]
shl edi, 0x10
or eax, edi
movzx edi, byte [ebx + 7]
or eax, edi
movzx edi, byte [ebx + 6]
shl edi, 8
or eax, edi
add ebx, 8
xor edx, ecx
mov dword [ebp - 0x14], edx
xor eax, dword [ebp - 0x20]
mov dword [ebp - 0x10], eax
mov eax, dword [ebp + 0x14]
mov dword [esp + 4], eax
mov edx, dword [ebp - 0x44]
mov dword [esp], edx
call fcn.0053a51c
mov ecx, dword [ebp - 0x14]
mov eax, ecx
shr eax, 0x18
mov byte [esi], al
mov eax, ecx
shr eax, 0x10
mov byte [esi + 1], al
mov eax, ecx
shr eax, 8
mov byte [esi + 2], al
mov byte [esi + 3], cl
mov eax, dword [ebp - 0x10]
mov dword [ebp - 0x20], eax
shr eax, 0x18
mov byte [esi + 4], al
mov eax, dword [ebp - 0x20]
shr eax, 0x10
mov byte [esi + 5], al
mov eax, dword [ebp - 0x20]
shr eax, 8
mov byte [esi + 6], al
mov dl, byte [ebp - 0x20]
mov byte [esi + 7], dl
add esi, 8
sub dword [ebp - 0x24], 8
jns 0x53aef8
mov eax, dword [ebp - 0x48]
shr eax, 3
lea edx, [eax*8 + 8]
add dword [ebp + 8], edx
add dword [ebp + 0xc], edx
neg eax
mov ebx, dword [ebp - 0x48]
lea eax, [ebx + eax*8 - 8]
cmp eax, 0xfffffff8
je 0x53b2c0
lea edx, [eax + 8]
mov eax, dword [ebp + 8]
add eax, edx
cmp edx, 7
jbe switch.0x0053b2b0
xor esi, esi
xor eax, eax
lea esi, [esi]
xor ecx, eax
mov dword [ebp - 0x14], ecx
xor esi, dword [ebp - 0x20]
mov dword [ebp - 0x10], esi
mov edx, dword [ebp + 0x14]
mov dword [esp + 4], edx
lea eax, [ebp - 0x14]
mov dword [esp], eax
call fcn.0053a51c
mov eax, dword [ebp - 0x14]
mov edx, eax
shr edx, 0x18
mov byte [ebp - 0x24], dl
mov ecx, dword [ebp + 0xc]
mov byte [ecx], dl
mov edx, eax
shr edx, 0x10
mov byte [ebp - 0x34], dl
mov byte [ecx + 1], dl
mov edx, eax
shr edx, 8
mov byte [ebp - 0x44], dl
mov byte [ecx + 2], dl
mov cl, al
mov ebx, dword [ebp + 0xc]
mov byte [ebx + 3], al
mov eax, dword [ebp - 0x10]
mov edx, eax
shr edx, 0x18
mov byte [ebp - 0x48], dl
mov byte [ebx + 4], dl
mov esi, eax
shr esi, 0x10
mov edx, esi
mov byte [ebx + 5], dl
mov esi, eax
shr esi, 8
mov dword [ebp - 0x20], esi
movzx edi, byte [ebp - 0x20]
mov ebx, edi
mov esi, dword [ebp + 0xc]
mov byte [esi + 6], bl
mov esi, eax
mov ebx, dword [ebp + 0xc]
mov byte [ebx + 7], al
mov al, byte [ebp - 0x24]
mov ebx, dword [ebp + 0x18]
mov byte [ebx], al
mov al, byte [ebp - 0x34]
mov byte [ebx + 1], al
mov al, byte [ebp - 0x44]
mov byte [ebx + 2], al
mov byte [ebx + 3], cl
mov cl, byte [ebp - 0x48]
mov byte [ebx + 4], cl
mov byte [ebx + 5], dl
mov eax, edi
mov byte [ebx + 6], al
mov edx, esi
mov byte [ebx + 7], dl
add esp, 0x50
pop ebx
pop esi
pop edi
leave
ret
mov ecx, dword [ebp + 0x18]
movzx eax, byte [ecx]
shl eax, 0x18
movzx ecx, byte [ecx + 1]
shl ecx, 0x10
or ecx, eax
mov ebx, dword [ebp + 0x18]
movzx eax, byte [ebx + 2]
shl eax, 8
or ecx, eax
movzx eax, byte [ebx + 3]
or ecx, eax
movzx eax, byte [ebx + 4]
shl eax, 0x18
movzx ebx, byte [ebx + 5]
shl ebx, 0x10
or ebx, eax
mov esi, dword [ebp + 0x18]
movzx eax, byte [esi + 6]
shl eax, 8
or ebx, eax
movzx eax, byte [esi + 7]
or ebx, eax
mov dword [ebp - 0x20], ebx
sub edx, 8
mov dword [ebp - 0x48], edx
mov edi, edx
test edx, edx
js 0x53b1de
mov dword [ebp - 0x24], edx
mov eax, dword [ebp + 0xc]
mov edi, dword [ebp + 8]
lea edx, [ebp - 0x14]
mov dword [ebp - 0x44], edx
jmp 0x53b105
mov dword [ebp - 0x20], esi
mov ecx, ebx
movzx ebx, byte [edi]
shl ebx, 0x18
movzx edx, byte [edi + 1]
shl edx, 0x10
or ebx, edx
movzx edx, byte [edi + 3]
or ebx, edx
movzx edx, byte [edi + 2]
shl edx, 8
or ebx, edx
mov dword [ebp - 0x14], ebx
movzx esi, byte [edi + 4]
shl esi, 0x18
movzx edx, byte [edi + 5]
shl edx, 0x10
or esi, edx
movzx edx, byte [edi + 7]
or esi, edx
movzx edx, byte [edi + 6]
shl edx, 8
or esi, edx
add edi, 8
mov dword [ebp - 0x10], esi
mov edx, dword [ebp + 0x14]
mov dword [esp + 4], edx
mov edx, dword [ebp - 0x44]
mov dword [esp], edx
mov dword [ebp - 0x50], eax
mov dword [ebp - 0x4c], ecx
call fcn.0053a51c
mov ecx, dword [ebp - 0x4c]
xor ecx, dword [ebp - 0x14]
mov edx, dword [ebp - 0x20]
xor edx, dword [ebp - 0x10]
mov dword [ebp - 0x54], edx
mov edx, ecx
shr edx, 0x18
mov eax, dword [ebp - 0x50]
mov byte [eax], dl
mov edx, ecx
shr edx, 0x10
mov byte [eax + 1], dl
mov edx, ecx
shr edx, 8
mov byte [eax + 2], dl
mov byte [eax + 3], cl
mov ecx, dword [ebp - 0x54]
shr ecx, 0x18
mov byte [eax + 4], cl
mov ecx, dword [ebp - 0x54]
shr ecx, 0x10
mov byte [eax + 5], cl
mov ecx, dword [ebp - 0x54]
shr ecx, 8
mov byte [eax + 6], cl
mov cl, byte [ebp - 0x54]
mov byte [eax + 7], cl
add eax, 8
sub dword [ebp - 0x24], 8
jns 0x53b100
mov eax, dword [ebp - 0x48]
shr eax, 3
lea edx, [eax*8 + 8]
add dword [ebp + 8], edx
add dword [ebp + 0xc], edx
neg eax
mov edx, dword [ebp - 0x48]
lea edi, [edx + eax*8 - 8]
mov dword [ebp - 0x20], esi
mov ecx, ebx
cmp edi, 0xfffffff8
je 0x53b268
mov ebx, dword [ebp + 8]
movzx eax, byte [ebx]
shl eax, 0x18
movzx esi, byte [ebx + 1]
shl esi, 0x10
or esi, eax
movzx eax, byte [ebx + 2]
shl eax, 8
or esi, eax
movzx eax, byte [ebx + 3]
or esi, eax
mov dword [ebp - 0x14], esi
movzx eax, byte [ebx + 4]
shl eax, 0x18
mov edx, ebx
movzx ebx, byte [ebx + 5]
shl ebx, 0x10
or ebx, eax
movzx eax, byte [edx + 6]
shl eax, 8
or ebx, eax
movzx eax, byte [edx + 7]
or ebx, eax
mov dword [ebp - 0x10], ebx
mov eax, dword [ebp + 0x14]
mov dword [esp + 4], eax
lea eax, [ebp - 0x14]
mov dword [esp], eax
mov dword [ebp - 0x4c], ecx
call fcn.0053a51c
mov ecx, dword [ebp - 0x4c]
xor ecx, dword [ebp - 0x14]
mov edx, dword [ebp - 0x20]
xor edx, dword [ebp - 0x10]
mov dword [ebp - 0x20], edx
add edi, 8
mov eax, dword [ebp + 0xc]
add eax, edi
cmp edi, 7
jbe switch.0x0053b2b8
mov dword [ebp - 0x20], ebx
mov ecx, esi
lea esi, [esi]
mov eax, ecx
shr eax, 0x18
mov ebx, dword [ebp + 0x18]
mov byte [ebx], al
mov eax, ecx
shr eax, 0x10
mov byte [ebx + 1], al
mov eax, ecx
shr eax, 8
mov byte [ebx + 2], al
mov byte [ebx + 3], cl
mov eax, dword [ebp - 0x20]
shr eax, 0x18
mov byte [ebx + 4], al
mov eax, dword [ebp - 0x20]
shr eax, 0x10
mov byte [ebx + 5], al
mov eax, dword [ebp - 0x20]
shr eax, 8
mov byte [ebx + 6], al
mov al, byte [ebp - 0x20]
mov byte [ebx + 7], al
add esp, 0x50
pop ebx
pop esi
pop edi
leave
ret
jmp dword [edx*4 + 0x69ebc0]
jmp dword [edi*4 + 0x69ebe0]
mov eax, ecx
shr eax, 0x18
mov byte [ebp - 0x24], al
mov edx, ecx
shr edx, 0x10
mov byte [ebp - 0x34], dl
mov ebx, ecx
shr ebx, 8
mov byte [ebp - 0x44], bl
mov eax, dword [ebp - 0x20]
shr eax, 0x18
mov byte [ebp - 0x48], al
mov edx, dword [ebp - 0x20]
shr edx, 0x10
mov edi, dword [ebp - 0x20]
shr edi, 8
movzx esi, byte [ebp - 0x20]
jmp 0x53b05f
dec eax
movzx ebx, byte [eax]
shl ebx, 8
dec eax
movzx edx, byte [eax]
shl edx, 0x10
or edx, ebx
dec eax
movzx esi, byte [eax]
shl esi, 0x18
or esi, edx
dec eax
movzx edx, byte [eax]
dec eax
movzx ebx, byte [eax]
shl ebx, 8
or ebx, edx
dec eax
movzx edx, byte [eax]
shl edx, 0x10
or edx, ebx
movzx eax, byte [eax - 1]
shl eax, 0x18
or eax, edx
jmp 0x53afe0
dec eax
mov edi, dword [ebp - 0x20]
shr edi, 8
mov edx, edi
mov byte [eax], dl
dec eax
mov edi, dword [ebp - 0x20]
shr edi, 0x10
mov edx, edi
mov byte [eax], dl
dec eax
mov edx, dword [ebp - 0x20]
shr edx, 0x18
mov byte [eax], dl
dec eax
mov byte [eax], cl
dec eax
mov edx, ecx
shr edx, 8
mov byte [eax], dl
dec eax
mov edx, ecx
shr edx, 0x10
mov byte [eax], dl
shr ecx, 0x18
mov byte [eax - 1], cl
mov dword [ebp - 0x20], ebx
mov ecx, esi
jmp 0x53b268
xor esi, esi
xor ebx, ebx
jmp 0x53b31c
xor esi, esi
xor edx, edx
jmp 0x53b313
xor esi, esi
xor edx, edx
jmp 0x53b325
xor esi, esi
jmp 0x53b30f
xor edx, edx
jmp 0x53b306
xor ebx, ebx
jmp 0x53b2fd