Function at 0x53d28c
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 0x53d4a4
mov ecx, dword [ebp + 0x18]
movzx eax, byte [ecx]
movzx ecx, byte [ecx + 1]
shl ecx, 8
or ecx, eax
mov ebx, dword [ebp + 0x18]
movzx eax, byte [ebx + 2]
shl eax, 0x10
or ecx, eax
movzx eax, byte [ebx + 3]
shl eax, 0x18
or ecx, eax
movzx eax, byte [ebx + 4]
movzx ebx, byte [ebx + 5]
shl ebx, 8
or ebx, eax
mov esi, dword [ebp + 0x18]
movzx eax, byte [esi + 6]
shl eax, 0x10
or ebx, eax
movzx eax, byte [esi + 7]
shl eax, 0x18
or ebx, eax
mov dword [ebp - 0x20], ebx
sub edx, 8
mov dword [ebp - 0x4c], edx
mov eax, edx
test edx, edx
js 0x53d3d7
mov dword [ebp - 0x24], edx
mov esi, dword [ebp + 0xc]
mov ebx, dword [ebp + 8]
lea edi, [ebp - 0x14]
mov dword [ebp - 0x48], edi
nop
movzx edi, byte [ebx]
movzx edx, byte [ebx + 1]
shl edx, 8
movzx eax, byte [ebx + 2]
shl eax, 0x10
or edx, eax
or edx, edi
movzx eax, byte [ebx + 3]
shl eax, 0x18
or edx, eax
movzx eax, byte [ebx + 4]
mov dword [ebp - 0x28], eax
movzx eax, byte [ebx + 5]
shl eax, 8
movzx edi, byte [ebx + 6]
shl edi, 0x10
or eax, edi
or eax, dword [ebp - 0x28]
movzx edi, byte [ebx + 7]
shl edi, 0x18
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 edx, dword [ebp + 0x14]
mov dword [esp + 4], edx
mov ecx, dword [ebp - 0x48]
mov dword [esp], ecx
call fcn.0053cfbc
mov ecx, dword [ebp - 0x14]
mov byte [esi], cl
mov eax, ecx
shr eax, 8
mov byte [esi + 1], al
mov eax, ecx
shr eax, 0x10
mov byte [esi + 2], al
mov eax, ecx
shr eax, 0x18
mov byte [esi + 3], al
mov eax, dword [ebp - 0x10]
mov dword [ebp - 0x20], eax
mov byte [esi + 4], al
mov eax, dword [ebp - 0x20]
shr eax, 8
mov byte [esi + 5], al
mov eax, dword [ebp - 0x20]
shr eax, 0x10
mov byte [esi + 6], al
mov eax, dword [ebp - 0x20]
shr eax, 0x18
mov byte [esi + 7], al
add esi, 8
sub dword [ebp - 0x24], 8
jns 0x53d30c
mov eax, dword [ebp - 0x4c]
shr eax, 3
lea edx, [eax*8 + 8]
add dword [ebp + 8], edx
add dword [ebp + 0xc], edx
neg eax
mov edx, dword [ebp - 0x4c]
lea eax, [edx + eax*8 - 8]
cmp eax, 0xfffffff8
je 0x53d6c0
lea edx, [eax + 8]
mov eax, dword [ebp + 8]
add eax, edx
cmp edx, 7
jbe switch.0x0053d6b0
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.0053cfbc
mov eax, dword [ebp - 0x14]
mov byte [ebp - 0x24], al
mov ecx, dword [ebp + 0xc]
mov byte [ecx], al
mov edx, eax
shr edx, 8
mov byte [ebp - 0x38], dl
mov byte [ecx + 1], dl
mov edx, eax
shr edx, 0x10
mov byte [ebp - 0x48], dl
mov byte [ecx + 2], dl
shr eax, 0x18
mov byte [ebp - 0x28], al
mov byte [ecx + 3], al
mov eax, dword [ebp - 0x10]
mov bl, al
mov byte [ecx + 4], al
mov esi, eax
shr esi, 8
mov edx, esi
mov byte [ecx + 5], dl
mov esi, eax
shr esi, 0x10
mov dword [ebp - 0x20], esi
movzx edi, byte [ebp - 0x20]
mov ecx, edi
mov esi, dword [ebp + 0xc]
mov byte [esi + 6], cl
shr eax, 0x18
mov esi, eax
mov ecx, dword [ebp + 0xc]
mov byte [ecx + 7], al
mov al, byte [ebp - 0x24]
mov ecx, dword [ebp + 0x18]
mov byte [ecx], al
mov al, byte [ebp - 0x38]
mov byte [ecx + 1], al
mov al, byte [ebp - 0x48]
mov byte [ecx + 2], al
mov al, byte [ebp - 0x28]
mov byte [ecx + 3], al
mov byte [ecx + 4], bl
mov byte [ecx + 5], dl
mov edx, edi
mov byte [ecx + 6], dl
mov ebx, esi
mov byte [ecx + 7], bl
add esp, 0x50
pop ebx
pop esi
pop edi
leave
ret
mov esi, dword [ebp + 0x18]
movzx eax, byte [esi]
movzx ecx, byte [esi + 1]
shl ecx, 8
or ecx, eax
movzx eax, byte [esi + 2]
shl eax, 0x10
or ecx, eax
movzx eax, byte [esi + 3]
shl eax, 0x18
or ecx, eax
movzx eax, byte [esi + 4]
movzx ebx, byte [esi + 5]
shl ebx, 8
or ebx, eax
movzx eax, byte [esi + 6]
shl eax, 0x10
or ebx, eax
movzx eax, byte [esi + 7]
shl eax, 0x18
or ebx, eax
mov dword [ebp - 0x20], ebx
sub edx, 8
mov dword [ebp - 0x4c], edx
mov edi, edx
test edx, edx
js 0x53d5e8
mov dword [ebp - 0x24], edx
mov eax, dword [ebp + 0xc]
mov edi, dword [ebp + 8]
lea esi, [ebp - 0x14]
mov dword [ebp - 0x48], esi
jmp 0x53d50d
mov dword [ebp - 0x20], esi
mov ecx, ebx
movzx esi, byte [edi]
movzx ebx, byte [edi + 1]
shl ebx, 8
movzx edx, byte [edi + 2]
shl edx, 0x10
or ebx, edx
or ebx, esi
movzx edx, byte [edi + 3]
shl edx, 0x18
or ebx, edx
mov dword [ebp - 0x14], ebx
movzx edx, byte [edi + 4]
mov dword [ebp - 0x28], edx
movzx esi, byte [edi + 5]
shl esi, 8
movzx edx, byte [edi + 6]
shl edx, 0x10
or esi, edx
or esi, dword [ebp - 0x28]
movzx edx, byte [edi + 7]
shl edx, 0x18
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 - 0x48]
mov dword [esp], edx
mov dword [ebp - 0x54], eax
mov dword [ebp - 0x50], ecx
call fcn.0053d0f4
mov ecx, dword [ebp - 0x50]
xor ecx, dword [ebp - 0x14]
mov edx, dword [ebp - 0x20]
xor edx, dword [ebp - 0x10]
mov dword [ebp - 0x28], edx
mov eax, dword [ebp - 0x54]
mov byte [eax], cl
mov edx, ecx
shr edx, 8
mov byte [eax + 1], dl
mov edx, ecx
shr edx, 0x10
mov byte [eax + 2], dl
shr ecx, 0x18
mov byte [eax + 3], cl
mov cl, byte [ebp - 0x28]
mov byte [eax + 4], cl
mov ecx, dword [ebp - 0x28]
shr ecx, 8
mov byte [eax + 5], cl
mov ecx, dword [ebp - 0x28]
shr ecx, 0x10
mov byte [eax + 6], cl
mov edx, dword [ebp - 0x28]
shr edx, 0x18
mov byte [eax + 7], dl
add eax, 8
sub dword [ebp - 0x24], 8
jns 0x53d508
mov eax, dword [ebp - 0x4c]
shr eax, 3
lea edx, [eax*8 + 8]
add dword [ebp + 8], edx
add dword [ebp + 0xc], edx
neg eax
mov edx, dword [ebp - 0x4c]
lea edi, [edx + eax*8 - 8]
mov dword [ebp - 0x20], esi
mov ecx, ebx
cmp edi, 0xfffffff8
je 0x53d66c
mov ebx, dword [ebp + 8]
movzx eax, byte [ebx]
movzx esi, byte [ebx + 1]
shl esi, 8
or esi, eax
movzx eax, byte [ebx + 2]
shl eax, 0x10
or esi, eax
movzx eax, byte [ebx + 3]
shl eax, 0x18
or esi, eax
mov dword [ebp - 0x14], esi
movzx eax, byte [ebx + 4]
mov edx, ebx
movzx ebx, byte [ebx + 5]
shl ebx, 8
or ebx, eax
movzx eax, byte [edx + 6]
shl eax, 0x10
or ebx, eax
movzx eax, byte [edx + 7]
shl eax, 0x18
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 - 0x50], ecx
call fcn.0053d0f4
mov ecx, dword [ebp - 0x50]
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.0x0053d6b8
mov dword [ebp - 0x20], ebx
mov ecx, esi
nop
mov ebx, dword [ebp + 0x18]
mov byte [ebx], cl
mov eax, ecx
shr eax, 8
mov byte [ebx + 1], al
mov eax, ecx
shr eax, 0x10
mov byte [ebx + 2], al
shr ecx, 0x18
mov byte [ebx + 3], cl
mov al, byte [ebp - 0x20]
mov byte [ebx + 4], al
mov eax, dword [ebp - 0x20]
shr eax, 8
mov byte [ebx + 5], al
mov eax, dword [ebp - 0x20]
shr eax, 0x10
mov byte [ebx + 6], al
mov eax, dword [ebp - 0x20]
shr eax, 0x18
mov byte [ebx + 7], al
add esp, 0x50
pop ebx
pop esi
pop edi
leave
ret
jmp dword [edx*4 + 0x6bb5b8]
jmp dword [edi*4 + 0x6bb5d8]
mov byte [ebp - 0x24], cl
mov ebx, ecx
shr ebx, 8
mov byte [ebp - 0x38], bl
mov eax, ecx
shr eax, 0x10
mov byte [ebp - 0x48], al
shr ecx, 0x18
mov byte [ebp - 0x28], cl
mov bl, byte [ebp - 0x20]
mov edx, dword [ebp - 0x20]
shr edx, 8
mov edi, dword [ebp - 0x20]
shr edi, 0x10
mov esi, dword [ebp - 0x20]
shr esi, 0x18
jmp 0x53d470
dec eax
movzx ebx, byte [eax]
shl ebx, 0x10
dec eax
movzx edx, byte [eax]
shl edx, 8
or edx, ebx
dec eax
movzx esi, byte [eax]
or esi, edx
dec eax
movzx edx, byte [eax]
shl edx, 0x18
dec eax
movzx ebx, byte [eax]
shl ebx, 0x10
or ebx, edx
dec eax
movzx edx, byte [eax]
shl edx, 8
or edx, ebx
movzx eax, byte [eax - 1]
or eax, edx
jmp 0x53d3f8
dec eax
mov edi, dword [ebp - 0x20]
shr edi, 0x10
mov edx, edi
mov byte [eax], dl
dec eax
mov edi, dword [ebp - 0x20]
shr edi, 8
mov edx, edi
mov byte [eax], dl
dec eax
mov dl, byte [ebp - 0x20]
mov byte [eax], dl
dec eax
mov edx, ecx
shr edx, 0x18
mov byte [eax], dl
dec eax
mov edx, ecx
shr edx, 0x10
mov byte [eax], dl
dec eax
mov edx, ecx
shr edx, 8
mov byte [eax], dl
mov byte [eax - 1], cl
mov dword [ebp - 0x20], ebx
mov ecx, esi
jmp 0x53d66c
xor esi, esi
xor ebx, ebx
jmp 0x53d719
xor esi, esi
xor edx, edx
jmp 0x53d710
xor esi, esi
xor edx, edx
jmp 0x53d722
xor esi, esi
jmp 0x53d709
xor edx, edx
jmp 0x53d703
xor ebx, ebx
jmp 0x53d6fa