Function at 0x535560
Capabilities:
Encode data using xor

Disassembly:
push ebp
push edi
push esi
push ebx
sub esp, 0x54
mov ebx, dword [esp + 0x6c]
mov eax, dword [esp + 0x7c]
test eax, eax
je 0x5357d0
mov eax, dword [esp + 0x78]
xor edx, edx
mov dl, byte [eax]
mov cl, byte [eax + 1]
and ecx, 0xff
mov ebp, ecx
shl ebp, 8
mov esi, eax
xor eax, eax
mov al, byte [esi + 2]
shl eax, 0x10
or ebp, eax
or ebp, edx
xor eax, eax
mov al, byte [esi + 3]
shl eax, 0x18
or ebp, eax
xor edx, edx
mov dl, byte [esi + 4]
xor ecx, ecx
mov cl, byte [esi + 5]
shl ecx, 8
xor eax, eax
mov al, byte [esi + 6]
shl eax, 0x10
or ecx, eax
or ecx, edx
xor eax, eax
mov al, byte [esi + 7]
shl eax, 0x18
or ecx, eax
mov eax, dword [esp + 0x70]
sub eax, 8
js 0x535b41
shr eax, 3
mov dword [esp + 0x38], eax
lea edi, [eax*8 + 8]
mov dword [esp + 0x3c], edi
mov eax, dword [esp + 0x68]
add eax, edi
mov dword [esp + 0x34], eax
mov esi, ebx
lea edx, [esp + 0x4c]
mov dword [esp + 0x24], edx
mov dword [esp + 8], ebp
mov dword [esp + 0x40], ebx
mov ebx, dword [esp + 0x68]
mov esi, esi
lea edi, [edi]
mov al, byte [ebx]
and eax, 0xff
mov edi, eax
mov dl, byte [ebx + 1]
and edx, 0xff
mov ebp, edx
shl ebp, 8
xor eax, eax
mov al, byte [ebx + 2]
shl eax, 0x10
or ebp, eax
or ebp, edi
xor eax, eax
mov al, byte [ebx + 3]
shl eax, 0x18
or ebp, eax
xor eax, eax
mov al, byte [ebx + 4]
mov dword [esp + 0x10], eax
xor eax, eax
mov al, byte [ebx + 5]
shl eax, 8
mov dl, byte [ebx + 6]
and edx, 0xff
mov edi, edx
shl edi, 0x10
or eax, edi
or eax, dword [esp + 0x10]
mov dl, byte [ebx + 7]
and edx, 0xff
mov edi, edx
shl edi, 0x18
or eax, edi
add ebx, 8
xor ebp, dword [esp + 8]
mov dword [esp + 0x4c], ebp
xor eax, ecx
mov dword [esp + 0x50], eax
mov ecx, dword [esp + 0x74]
mov dword [esp + 4], ecx
mov edi, dword [esp + 0x24]
mov dword [esp], edi
call fcn.00535250
mov eax, dword [esp + 0x4c]
mov dword [esp + 8], eax
mov byte [esi], al
shr eax, 8
mov byte [esi + 1], al
mov eax, dword [esp + 8]
shr eax, 0x10
mov byte [esi + 2], al
mov eax, dword [esp + 8]
shr eax, 0x18
mov byte [esi + 3], al
mov ecx, dword [esp + 0x50]
mov byte [esi + 4], cl
mov eax, ecx
shr eax, 8
mov byte [esi + 5], al
mov eax, ecx
shr eax, 0x10
mov byte [esi + 6], al
mov eax, ecx
shr eax, 0x18
mov byte [esi + 7], al
add esi, 8
cmp dword [esp + 0x34], ebx
jne 0x535610
mov ebp, dword [esp + 8]
mov ebx, dword [esp + 0x40]
add ebx, dword [esp + 0x3c]
mov eax, dword [esp + 0x38]
neg eax
mov edx, dword [esp + 0x70]
lea eax, [edx + eax*8 - 0x10]
cmp eax, 0xfffffff8
je 0x535b10
lea edx, [eax + 8]
mov eax, dword [esp + 0x34]
add eax, edx
cmp edx, 7
jbe switch.0x00535a30
xor edi, edi
xor edx, edx
xor edx, ebp
mov dword [esp + 0x4c], edx
xor ecx, edi
mov dword [esp + 0x50], ecx
mov ecx, dword [esp + 0x74]
mov dword [esp + 4], ecx
lea eax, [esp + 0x4c]
mov dword [esp], eax
call fcn.00535250
mov eax, dword [esp + 0x4c]
mov esi, eax
mov byte [ebx], al
mov edx, eax
shr edx, 8
mov byte [esp + 0x10], dl
mov byte [ebx + 1], dl
mov edx, eax
shr edx, 0x10
mov byte [esp + 0x14], dl
mov byte [ebx + 2], dl
shr eax, 0x18
mov byte [esp + 0x24], al
mov byte [ebx + 3], al
mov eax, dword [esp + 0x50]
mov ebp, eax
mov byte [ebx + 4], al
mov edx, eax
shr edx, 8
mov edi, edx
mov byte [ebx + 5], dl
mov ecx, eax
shr ecx, 0x10
mov dl, cl
mov byte [ebx + 6], cl
shr eax, 0x18
mov cl, al
mov byte [ebx + 7], al
mov ebx, esi
mov eax, dword [esp + 0x78]
mov byte [eax], bl
mov bl, byte [esp + 0x10]
mov byte [eax + 1], bl
mov bl, byte [esp + 0x14]
mov byte [eax + 2], bl
mov bl, byte [esp + 0x24]
mov byte [eax + 3], bl
mov ebx, ebp
mov byte [eax + 4], bl
mov ebx, edi
mov byte [eax + 5], bl
mov byte [eax + 6], dl
mov byte [eax + 7], cl
add esp, 0x54
pop ebx
pop esi
pop edi
pop ebp
ret
mov esi, dword [esp + 0x78]
xor edx, edx
mov dl, byte [esi]
xor eax, eax
mov al, byte [esi + 1]
shl eax, 8
mov dword [esp + 0x10], eax
xor eax, eax
mov al, byte [esi + 2]
shl eax, 0x10
or dword [esp + 0x10], eax
or dword [esp + 0x10], edx
xor eax, eax
mov al, byte [esi + 3]
shl eax, 0x18
or dword [esp + 0x10], eax
xor edx, edx
mov dl, byte [esi + 4]
xor ecx, ecx
mov cl, byte [esi + 5]
shl ecx, 8
xor eax, eax
mov al, byte [esi + 6]
shl eax, 0x10
or ecx, eax
or ecx, edx
xor eax, eax
mov al, byte [esi + 7]
shl eax, 0x18
or ecx, eax
mov esi, dword [esp + 0x70]
sub esi, 8
js 0x535b4e
shr esi, 3
mov dword [esp + 0x38], esi
lea edx, [esi*8 + 8]
mov dword [esp + 0x3c], edx
add edx, ebx
mov dword [esp + 0x34], edx
mov ebp, dword [esp + 0x68]
lea esi, [esp + 0x4c]
mov dword [esp + 0x24], esi
lea esi, [esi]
lea edi, [edi]
xor edx, edx
mov dl, byte [ebp]
mov al, byte [ebp + 1]
and eax, 0xff
mov edi, eax
shl edi, 8
xor eax, eax
mov al, byte [ebp + 2]
shl eax, 0x10
or edi, eax
or edi, edx
xor eax, eax
mov al, byte [ebp + 3]
shl eax, 0x18
or edi, eax
mov dword [esp + 0x4c], edi
xor edx, edx
mov dl, byte [ebp + 4]
mov al, byte [ebp + 5]
and eax, 0xff
mov esi, eax
shl esi, 8
xor eax, eax
mov al, byte [ebp + 6]
shl eax, 0x10
or esi, eax
or esi, edx
xor eax, eax
mov al, byte [ebp + 7]
shl eax, 0x18
or esi, eax
add ebp, 8
mov dword [esp + 0x50], esi
mov edx, dword [esp + 0x74]
mov dword [esp + 4], edx
mov eax, dword [esp + 0x24]
mov dword [esp], eax
mov dword [esp + 0xc], ecx
call fcn.005353a0
mov edx, dword [esp + 0x10]
xor edx, dword [esp + 0x4c]
mov ecx, dword [esp + 0xc]
xor ecx, dword [esp + 0x50]
mov byte [ebx], dl
mov eax, edx
shr eax, 8
mov byte [ebx + 1], al
mov eax, edx
shr eax, 0x10
mov byte [ebx + 2], al
mov eax, edx
shr eax, 0x18
mov byte [ebx + 3], al
mov byte [ebx + 4], cl
mov eax, ecx
shr eax, 8
mov byte [ebx + 5], al
mov eax, ecx
shr eax, 0x10
mov byte [ebx + 6], al
shr ecx, 0x18
mov byte [ebx + 7], cl
add ebx, 8
mov dword [esp + 0x10], edi
mov ecx, esi
cmp dword [esp + 0x34], ebx
jne 0x535860
mov edx, dword [esp + 0x3c]
add dword [esp + 0x68], edx
mov esi, dword [esp + 0x38]
neg esi
mov ebx, dword [esp + 0x70]
lea esi, [ebx + esi*8 - 0x10]
cmp esi, 0xfffffff8
je 0x5359e0
mov edi, dword [esp + 0x68]
xor edx, edx
mov dl, byte [edi]
mov al, byte [edi + 1]
and eax, 0xff
mov ebp, eax
shl ebp, 8
xor eax, eax
mov al, byte [edi + 2]
shl eax, 0x10
or ebp, eax
or ebp, edx
xor eax, eax
mov al, byte [edi + 3]
shl eax, 0x18
or ebp, eax
mov dword [esp + 0x4c], ebp
xor edx, edx
mov dl, byte [edi + 4]
xor ebx, ebx
mov bl, byte [edi + 5]
shl ebx, 8
xor eax, eax
mov al, byte [edi + 6]
shl eax, 0x10
or ebx, eax
or ebx, edx
xor eax, eax
mov al, byte [edi + 7]
shl eax, 0x18
or ebx, eax
mov dword [esp + 0x50], ebx
mov edx, dword [esp + 0x74]
mov dword [esp + 4], edx
lea eax, [esp + 0x4c]
mov dword [esp], eax
mov dword [esp + 0xc], ecx
call fcn.005353a0
mov edx, dword [esp + 0x10]
xor edx, dword [esp + 0x4c]
mov ecx, dword [esp + 0xc]
xor ecx, dword [esp + 0x50]
lea eax, [esi + 8]
mov esi, dword [esp + 0x34]
add esi, eax
cmp eax, 7
jbe switch.0x00535a40
mov ecx, ebx
mov dword [esp + 0x10], ebp
lea esi, [esi]
mov al, byte [esp + 0x10]
mov edx, dword [esp + 0x78]
mov byte [edx], al
mov eax, dword [esp + 0x10]
shr eax, 8
mov byte [edx + 1], al
mov eax, dword [esp + 0x10]
shr eax, 0x10
mov byte [edx + 2], al
mov edx, dword [esp + 0x10]
shr edx, 0x18
mov ebx, dword [esp + 0x78]
mov byte [ebx + 3], dl
mov byte [ebx + 4], cl
mov eax, ecx
shr eax, 8
mov byte [ebx + 5], al
mov eax, ecx
shr eax, 0x10
mov byte [ebx + 6], al
shr ecx, 0x18
mov byte [ebx + 7], cl
add esp, 0x54
pop ebx
pop esi
pop edi
pop ebp
ret
jmp dword [edx*4 + 0x60a820]
jmp dword [eax*4 + 0x60a840]
mov dl, byte [eax - 1]
and edx, 0xff
mov edi, edx
shl edi, 0x10
dec eax
lea esi, [eax - 1]
xor edx, edx
mov dl, byte [eax - 1]
shl edx, 8
or edx, edi
mov dword [esp + 0x10], edx
lea eax, [esi - 1]
mov dl, byte [esi - 1]
and edx, 0xff
mov edi, dword [esp + 0x10]
or edi, edx
lea edx, [eax - 1]
mov al, byte [eax - 1]
and eax, 0xff
mov esi, eax
shl esi, 0x18
lea eax, [edx - 1]
mov dl, byte [edx - 1]
and edx, 0xff
shl edx, 0x10
or edx, esi
lea esi, [eax - 1]
mov al, byte [eax - 1]
and eax, 0xff
shl eax, 8
or eax, edx
xor edx, edx
mov dl, byte [esi - 1]
or edx, eax
jmp 0x535720
mov eax, ecx
shr eax, 0x10
mov byte [esi - 1], al
dec esi
lea edi, [esi - 1]
mov dword [esp + 0x10], edi
mov edi, ecx
shr edi, 8
mov eax, edi
mov byte [esi - 1], al
mov esi, dword [esp + 0x10]
mov edi, dword [esp + 0x10]
dec esi
mov byte [edi - 1], cl
lea eax, [esi - 1]
mov ecx, edx
shr ecx, 0x18
mov byte [esi - 1], cl
lea esi, [eax - 1]
mov ecx, edx
shr ecx, 0x10
mov byte [eax - 1], cl
lea eax, [esi - 1]
mov ecx, edx
shr ecx, 8
mov byte [esi - 1], cl
mov byte [eax - 1], dl
mov ecx, ebx
mov dword [esp + 0x10], ebp
jmp 0x5359e0
mov esi, ebp
mov eax, ebp
shr eax, 8
mov byte [esp + 0x10], al
mov edx, ebp
shr edx, 0x10
mov byte [esp + 0x14], dl
mov ebx, ebp
shr ebx, 0x18
mov byte [esp + 0x24], bl
mov ebp, ecx
mov edi, ecx
shr edi, 8
mov edx, ecx
shr edx, 0x10
shr ecx, 0x18
jmp 0x53578f
mov esi, dword [esp + 0x68]
mov dword [esp + 0x34], esi
jmp 0x535701
mov dword [esp + 0x34], ebx
jmp 0x53593f
mov esi, eax
xor edi, edi
xor eax, eax
jmp 0x535aaa
xor edi, edi
jmp 0x535a56
xor edi, edi
xor edx, edx
jmp 0x535a9a
mov edx, eax
xor edi, edi
xor esi, esi
jmp 0x535a89
xor edi, edi
jmp 0x535a79
mov esi, eax
mov dword [esp + 0x10], 0
jmp 0x535a67
mov dword [esp + 0x10], esi
mov edi, esi
jmp 0x535ad8
mov eax, esi
jmp 0x535ae7
mov eax, esi
jmp 0x535afd