Function at 0x539fd4
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
push ebx
sub esp, 0x70
mov edx, dword [ebp + 0x10]
mov eax, dword [ebp + 0x24]
test eax, eax
je 0x53a204
mov ecx, dword [ebp + 0x20]
movzx eax, byte [ecx]
movzx ecx, byte [ecx + 1]
shl ecx, 8
or ecx, eax
mov ebx, dword [ebp + 0x20]
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 dword [ebp - 0x20], ebx
mov ebx, dword [ebp + 0x20]
movzx eax, byte [ebx + 6]
shl eax, 0x10
or dword [ebp - 0x20], eax
movzx eax, byte [ebx + 7]
shl eax, 0x18
or dword [ebp - 0x20], eax
sub edx, 8
mov dword [ebp - 0x60], edx
mov eax, edx
test edx, edx
js 0x53a502
mov dword [ebp - 0x24], edx
mov esi, dword [ebp + 0xc]
mov ebx, dword [ebp + 8]
lea eax, [ebp - 0x14]
mov dword [ebp - 0x5c], eax
lea esi, [esi]
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 + 0x1c]
mov dword [esp + 0xc], edx
mov ecx, dword [ebp + 0x18]
mov dword [esp + 8], ecx
mov eax, dword [ebp + 0x14]
mov dword [esp + 4], eax
mov edx, dword [ebp - 0x5c]
mov dword [esp], edx
call fcn.00539828
mov ecx, dword [ebp - 0x14]
mov eax, dword [ebp - 0x10]
mov dword [ebp - 0x20], eax
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 dl, byte [ebp - 0x20]
mov byte [esi + 4], dl
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 0x53a058
mov eax, dword [ebp - 0x60]
shr eax, 3
lea ebx, [eax*8 + 8]
mov esi, dword [ebp + 8]
add esi, ebx
add ebx, dword [ebp + 0xc]
neg eax
mov edx, dword [ebp - 0x60]
lea eax, [edx + eax*8 - 8]
cmp eax, 0xfffffff8
je 0x53a4cc
lea edx, [eax + 8]
lea eax, [esi + edx]
cmp edx, 7
jbe switch.0x0053a440
xor edi, edi
xor eax, eax
nop
xor ecx, eax
mov dword [ebp - 0x14], ecx
xor edi, dword [ebp - 0x20]
mov dword [ebp - 0x10], edi
mov eax, dword [ebp + 0x1c]
mov dword [esp + 0xc], eax
mov edx, dword [ebp + 0x18]
mov dword [esp + 8], edx
mov ecx, dword [ebp + 0x14]
mov dword [esp + 4], ecx
lea eax, [ebp - 0x14]
mov dword [esp], eax
call fcn.00539828
mov edx, dword [ebp - 0x14]
mov eax, dword [ebp - 0x10]
mov byte [ebp - 0x24], dl
mov byte [ebx], dl
mov ecx, edx
shr ecx, 8
mov byte [ebp - 0x38], cl
mov byte [ebx + 1], cl
mov ecx, edx
shr ecx, 0x10
mov byte [ebp - 0x48], cl
mov byte [ebx + 2], cl
shr edx, 0x18
mov byte [ebp - 0x28], dl
mov byte [ebx + 3], dl
mov dl, al
mov byte [ebx + 4], al
mov esi, eax
shr esi, 8
mov ecx, esi
mov byte [ebp - 0x58], cl
mov byte [ebx + 5], cl
mov esi, eax
shr esi, 0x10
mov edi, esi
mov ecx, esi
mov byte [ebx + 6], cl
shr eax, 0x18
mov esi, eax
mov byte [ebx + 7], al
mov bl, byte [ebp - 0x24]
mov eax, dword [ebp + 0x20]
mov byte [eax], bl
mov cl, byte [ebp - 0x38]
mov byte [eax + 1], cl
mov bl, byte [ebp - 0x48]
mov byte [eax + 2], bl
mov cl, byte [ebp - 0x28]
mov byte [eax + 3], cl
mov byte [eax + 4], dl
mov bl, byte [ebp - 0x58]
mov byte [eax + 5], bl
mov edx, edi
mov byte [eax + 6], dl
mov ecx, esi
mov byte [eax + 7], cl
add esp, 0x70
pop ebx
pop esi
pop edi
leave
ret
mov ebx, dword [ebp + 0x20]
movzx eax, byte [ebx]
movzx ecx, byte [ebx + 1]
shl ecx, 8
or ecx, eax
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 dword [ebp - 0x20], ebx
mov ebx, dword [ebp + 0x20]
movzx eax, byte [ebx + 6]
shl eax, 0x10
or dword [ebp - 0x20], eax
movzx eax, byte [ebx + 7]
shl eax, 0x18
or dword [ebp - 0x20], eax
sub edx, 8
mov dword [ebp - 0x60], edx
mov edi, edx
test edx, edx
js 0x53a50d
mov dword [ebp - 0x24], edx
mov eax, dword [ebp + 0xc]
mov edi, dword [ebp + 8]
lea edx, [ebp - 0x14]
mov dword [ebp - 0x5c], edx
mov edx, edi
mov edi, eax
mov eax, edx
jmp 0x53a279
mov dword [ebp - 0x20], esi
mov ecx, ebx
movzx esi, byte [eax]
movzx ebx, byte [eax + 1]
shl ebx, 8
movzx edx, byte [eax + 2]
shl edx, 0x10
or ebx, edx
or ebx, esi
movzx edx, byte [eax + 3]
shl edx, 0x18
or ebx, edx
movzx edx, byte [eax + 4]
mov dword [ebp - 0x28], edx
movzx esi, byte [eax + 5]
shl esi, 8
movzx edx, byte [eax + 6]
shl edx, 0x10
or esi, edx
or esi, dword [ebp - 0x28]
movzx edx, byte [eax + 7]
shl edx, 0x18
or esi, edx
add eax, 8
mov dword [ebp - 0x14], ebx
mov dword [ebp - 0x10], esi
mov edx, dword [ebp + 0x1c]
mov dword [esp + 0xc], edx
mov edx, dword [ebp + 0x18]
mov dword [esp + 8], edx
mov edx, dword [ebp + 0x14]
mov dword [esp + 4], edx
mov edx, dword [ebp - 0x5c]
mov dword [esp], edx
mov dword [ebp - 0x6c], eax
mov dword [ebp - 0x68], ecx
call fcn.00539968
mov ecx, dword [ebp - 0x68]
xor ecx, dword [ebp - 0x14]
mov edx, dword [ebp - 0x20]
xor edx, dword [ebp - 0x10]
mov dword [ebp - 0x28], edx
mov byte [edi], cl
mov edx, ecx
shr edx, 8
mov byte [edi + 1], dl
mov edx, ecx
shr edx, 0x10
mov byte [edi + 2], dl
shr ecx, 0x18
mov byte [edi + 3], cl
mov cl, byte [ebp - 0x28]
mov byte [edi + 4], cl
mov ecx, dword [ebp - 0x28]
shr ecx, 8
mov byte [edi + 5], cl
mov ecx, dword [ebp - 0x28]
shr ecx, 0x10
mov byte [edi + 6], cl
mov edx, dword [ebp - 0x28]
shr edx, 0x18
mov byte [edi + 7], dl
add edi, 8
sub dword [ebp - 0x24], 8
mov eax, dword [ebp - 0x6c]
jns 0x53a274
mov ecx, dword [ebp - 0x60]
shr ecx, 3
lea eax, [ecx*8 + 8]
mov edx, dword [ebp + 8]
add edx, eax
add eax, dword [ebp + 0xc]
mov dword [ebp - 0x64], eax
mov eax, ecx
neg eax
mov ecx, dword [ebp - 0x60]
lea edi, [ecx + eax*8 - 8]
mov dword [ebp - 0x20], esi
mov ecx, ebx
cmp edi, 0xfffffff8
je 0x53a3fc
movzx eax, byte [edx]
movzx esi, byte [edx + 1]
shl esi, 8
or esi, eax
movzx eax, byte [edx + 2]
shl eax, 0x10
or esi, eax
movzx eax, byte [edx + 3]
shl eax, 0x18
or esi, eax
movzx eax, byte [edx + 4]
movzx ebx, byte [edx + 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 - 0x14], esi
mov dword [ebp - 0x10], ebx
mov eax, dword [ebp + 0x1c]
mov dword [esp + 0xc], eax
mov edx, dword [ebp + 0x18]
mov dword [esp + 8], edx
mov eax, dword [ebp + 0x14]
mov dword [esp + 4], eax
lea eax, [ebp - 0x14]
mov dword [esp], eax
mov dword [ebp - 0x68], ecx
call fcn.00539968
mov ecx, dword [ebp - 0x68]
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 - 0x64]
add eax, edi
cmp edi, 7
jbe switch.0x0053a448
mov dword [ebp - 0x20], ebx
mov ecx, esi
lea esi, [esi]
mov ebx, dword [ebp + 0x20]
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, 0x70
pop ebx
pop esi
pop edi
leave
ret
jmp dword [edx*4 + 0x6babc0]
jmp dword [edi*4 + 0x6babe0]
dec eax
movzx esi, byte [eax]
shl esi, 0x10
dec eax
movzx edx, byte [eax]
shl edx, 8
or edx, esi
dec eax
movzx edi, byte [eax]
or edi, edx
dec eax
movzx edx, byte [eax]
shl edx, 0x18
dec eax
movzx esi, byte [eax]
shl esi, 0x10
or esi, edx
dec eax
movzx edx, byte [eax]
shl edx, 8
or edx, esi
movzx eax, byte [eax - 1]
or eax, edx
jmp 0x53a154
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 0x53a3fc
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 dl, byte [ebp - 0x20]
mov ecx, dword [ebp - 0x20]
shr ecx, 8
mov byte [ebp - 0x58], cl
mov edi, dword [ebp - 0x20]
shr edi, 0x10
mov esi, dword [ebp - 0x20]
shr esi, 0x18
jmp 0x53a1cf
mov ebx, dword [ebp + 0xc]
mov esi, dword [ebp + 8]
jmp 0x53a136
mov ebx, dword [ebp + 0xc]
mov dword [ebp - 0x64], ebx
mov edx, dword [ebp + 8]
jmp 0x53a369
xor edx, edx
jmp 0x53a45f
xor edi, edi
xor edx, edx
jmp 0x53a47e
xor esi, esi
jmp 0x53a456
xor edi, edi
xor esi, esi
jmp 0x53a475
xor edi, edi
xor edx, edx
jmp 0x53a46c
xor edi, edi
jmp 0x53a465