Function at 0x538848
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
push ebx
sub esp, 0x54
mov edx, dword [ebp + 0x10]
mov edi, dword [ebp + 0x1c]
test edi, edi
je 0x538a70
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 0x53899b
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 dword [esp + 8], 1
mov edx, dword [ebp + 0x14]
mov dword [esp + 4], edx
mov ecx, dword [ebp - 0x48]
mov dword [esp], ecx
call fcn.005357f0
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 0x5388c8
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 0x538ca0
lea edx, [eax + 8]
mov eax, dword [ebp + 8]
add eax, edx
cmp edx, 7
jbe switch.0x00538c90
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 dword [esp + 8], 1
mov edx, dword [ebp + 0x14]
mov dword [esp + 4], edx
lea eax, [ebp - 0x14]
mov dword [esp], eax
call fcn.005357f0
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, 0x54
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 0x538bbc
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 0x538ad9
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 dword [esp + 8], 0
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.005357f0
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 0x538ad4
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 0x538c4c
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 dword [esp + 8], 0
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.005357f0
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.0x00538c98
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, 0x54
pop ebx
pop esi
pop edi
leave
ret
jmp dword [edx*4 + 0x69e240]
jmp dword [edi*4 + 0x69e260]
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 0x538a3c
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 0x5389bc
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 0x538c4c
xor esi, esi
xor ebx, ebx
jmp 0x538cf9
xor esi, esi
xor edx, edx
jmp 0x538cf0
xor esi, esi
xor edx, edx
jmp 0x538d02
xor esi, esi
jmp 0x538ce9
xor edx, edx
jmp 0x538ce3
xor ebx, ebx
jmp 0x538cda