Function at 0x5ffe40
Capabilities:
Encode data using xor

Disassembly:
push ebp
push edi
push esi
push ebx
sub esp, 0x4c
mov eax, dword [esp + 0x70]
mov eax, dword [eax]
bswap eax
mov edi, eax
mov eax, dword [esp + 0x70]
mov eax, dword [eax + 4]
bswap eax
mov ebp, eax
mov eax, dword [esp + 0x68]
lea ecx, [eax - 8]
mov eax, dword [esp + 0x74]
test eax, eax
je 0x5fff90
test ecx, ecx
js 0x6002f0
mov ebx, ecx
mov esi, dword [esp + 0x64]
lea edx, [esp + 0x40]
mov dword [esp + 0x1c], ecx
shr ebx, 3
mov dword [esp + 0xc], edx
lea eax, [ebx*8 + 8]
mov dword [esp + 0x14], ebx
add esi, eax
mov dword [esp + 0x18], eax
mov dword [esp + 0x10], esi
mov esi, dword [esp + 0x60]
lea esi, [esi]
mov eax, dword [esi + 4]
mov edx, dword [esi]
add esi, 8
bswap eax
xor eax, ebp
bswap edx
xor edx, edi
mov dword [esp + 0x44], eax
mov eax, dword [esp + 0x6c]
mov dword [esp + 0x40], edx
mov dword [esp + 4], eax
mov eax, dword [esp + 0xc]
mov dword [esp], eax
call fcn.005ff520
mov edi, dword [esp + 0x40]
mov ebp, dword [esp + 0x44]
add dword [esp + 0x64], 8
mov ebx, edi
mov eax, edi
mov ecx, ebp
shr eax, 0x10
movzx edx, bl
mov ebx, edi
shr ecx, 0x10
movzx ebx, bh
shl edx, 8
movzx eax, al
movzx ecx, cl
or edx, ebx
mov ebx, ebp
shl edx, 8
movzx ebx, bh
or edx, eax
mov eax, ebp
movzx eax, al
shld edx, edi, 8
shl eax, 8
or eax, ebx
shl eax, 8
or eax, ecx
shld eax, ebp, 8
mov ebx, eax
mov eax, dword [esp + 0x64]
mov dword [eax - 8], edx
mov dword [eax - 4], ebx
mov eax, dword [esp + 0x10]
cmp dword [esp + 0x64], eax
jne 0x5ffea8
mov ebx, dword [esp + 0x14]
mov eax, dword [esp + 0x18]
add dword [esp + 0x60], eax
mov ecx, dword [esp + 0x1c]
mov eax, ebx
neg eax
lea edx, [eax*8]
mov eax, dword [esp + 0x68]
lea esi, [edx + ecx]
mov dword [esp + 0x68], esi
lea eax, [eax + edx - 0x10]
cmp eax, 0xfffffff8
je 0x600140
mov esi, dword [esp + 0x60]
cmp dword [esp + 0x68], 7
lea eax, [esi + eax + 8]
ja case.0x5fff85.0
mov esi, dword [esp + 0x68]
jmp dword [esi*4 + 0x6cf860]
cmp dword [esp + 0x68], 7
jle 0x6002e0
mov ebx, ecx
mov eax, dword [esp + 0x64]
lea edx, [esp + 0x40]
mov dword [esp + 0x10], ebp
shr ebx, 3
mov dword [esp + 0xc], edx
lea esi, [ebx*8 + 8]
mov dword [esp + 0x1c], ebx
add eax, esi
mov dword [esp + 0x20], esi
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x60]
mov dword [esp + 0x24], ecx
mov dword [esp + 0x14], edi
mov edi, eax
lea esi, cs:[esi]
mov eax, dword [edi]
mov ebp, dword [esp + 0x14]
add edi, 8
mov esi, dword [esp + 0x10]
bswap eax
mov dword [esp + 0x14], eax
mov dword [esp + 0x40], eax
mov eax, dword [edi - 4]
bswap eax
mov dword [esp + 0x10], eax
mov dword [esp + 0x44], eax
mov eax, dword [esp + 0x6c]
mov dword [esp + 4], eax
mov eax, dword [esp + 0xc]
mov dword [esp], eax
call fcn.005ff520
xor ebp, dword [esp + 0x40]
xor esi, dword [esp + 0x44]
mov ebx, ebp
mov eax, ebp
mov ecx, esi
add dword [esp + 0x64], 8
shr eax, 0x10
movzx edx, bl
mov ebx, ebp
shr ecx, 0x10
movzx ebx, bh
shl edx, 8
movzx eax, al
movzx ecx, cl
or edx, ebx
mov ebx, esi
shl edx, 8
movzx ebx, bh
or edx, eax
mov eax, esi
movzx eax, al
shld edx, ebp, 8
shl eax, 8
or eax, ebx
shl eax, 8
or eax, ecx
shld eax, esi, 8
mov ebx, eax
mov eax, dword [esp + 0x64]
mov dword [eax - 8], edx
mov dword [eax - 4], ebx
mov eax, dword [esp + 0x18]
cmp dword [esp + 0x64], eax
jne 0x5fffd8
mov ebx, dword [esp + 0x1c]
mov esi, dword [esp + 0x20]
mov ecx, dword [esp + 0x24]
add dword [esp + 0x60], esi
mov eax, ebx
mov esi, dword [esp + 0x68]
mov ebp, dword [esp + 0x10]
neg eax
mov edi, dword [esp + 0x14]
shl eax, 3
lea esi, [esi + eax - 0x10]
add eax, ecx
mov dword [esp + 0x68], eax
cmp esi, 0xfffffff8
je 0x600140
mov eax, dword [esp + 0x60]
mov ebx, dword [eax]
mov eax, dword [eax + 4]
bswap eax
mov dword [esp + 0xc], eax
bswap ebx
mov dword [esp + 0x44], eax
mov eax, dword [esp + 0x6c]
mov dword [esp + 0x40], ebx
mov dword [esp + 4], eax
lea eax, [esp + 0x40]
mov dword [esp], eax
call fcn.005ff520
mov eax, dword [esp + 0x40]
xor ebp, dword [esp + 0x44]
xor eax, edi
mov edi, dword [esp + 0x18]
cmp dword [esp + 0x68], 7
lea esi, [edi + esi + 8]
ja case.0x6000f7.64
mov edi, dword [esp + 0x68]
jmp dword [edi*4 + 0x6cf880]
mov ecx, ebp
sub esi, 1
mov byte [esi], ch
mov edx, ebp
sub esi, 1
shr edx, 0x10
mov byte [esi], dl
mov ecx, ebp
lea edx, [esi - 1]
shr ecx, 0x18
mov byte [esi - 1], cl
mov byte [edx - 1], al
lea esi, [edx - 1]
mov byte [esi - 1], ah
lea edx, [esi - 1]
mov ecx, eax
lea esi, [edx - 1]
shr ecx, 0x10
mov byte [edx - 1], cl
shr eax, 0x18
mov byte [esi - 1], al
mov ebp, dword [esp + 0xc]
mov edi, ebx
lea esi, [esi]
mov eax, edi
shr eax, 0x18
mov dword [esp + 0xc], eax
mov eax, edi
shr eax, 0x10
mov byte [esp + 0x14], al
mov eax, edi
mov byte [esp + 0x18], al
movzx ecx, ah
mov eax, ebp
shr eax, 0x18
mov dword [esp + 0x1c], eax
mov eax, ebp
shr eax, 0x10
mov byte [esp + 0x20], al
mov eax, ebp
mov byte [esp + 0x24], al
movzx ebx, ah
movzx eax, byte [esp + 0x24]
movzx edx, byte [esp + 0x18]
movzx ebx, bl
movzx ecx, cl
shl eax, 8
shl edx, 8
or eax, ebx
movzx ebx, byte [esp + 0x20]
or edx, ecx
movzx ecx, byte [esp + 0x14]
shl eax, 8
shl edx, 8
or eax, ebx
movzx ebx, byte [esp + 0x1c]
or edx, ecx
movzx ecx, byte [esp + 0xc]
shl eax, 8
shl edx, 8
or eax, ebx
or edx, ecx
mov edi, eax
mov eax, dword [esp + 0x70]
mov dword [eax], edx
mov dword [eax + 4], edi
add esp, 0x4c
pop ebx
pop esi
pop edi
pop ebp
ret
xor ecx, ecx
movzx edx, byte [eax - 1]
sub eax, 1
shl edx, 0x10
or edx, ecx
lea ecx, [eax - 1]
movzx eax, byte [eax - 1]
shl eax, 0x18
or eax, edx
xor ebp, eax
movzx ebx, byte [ecx - 1]
lea eax, [ecx - 1]
movzx ecx, byte [eax - 1]
lea edx, [eax - 1]
shl ecx, 8
or ecx, ebx
lea eax, [edx - 1]
movzx edx, byte [edx - 1]
shl edx, 0x10
or ecx, edx
movzx edx, byte [eax - 1]
shl edx, 0x18
or edx, ecx
xor edi, edx
mov eax, dword [esp + 0x6c]
mov dword [esp + 0x40], edi
mov dword [esp + 0x44], ebp
mov dword [esp + 4], eax
lea eax, [esp + 0x40]
mov dword [esp], eax
call fcn.005ff520
mov esi, dword [esp + 0x40]
mov edx, dword [esp + 0x44]
mov eax, esi
mov edi, esi
mov ebp, esi
mov ebx, edx
shr eax, 0x18
shr edi, 0x10
mov byte [esp + 0x24], dl
mov dword [esp + 0x28], eax
shr ebp, 8
shr ebx, 0x10
mov dword [esp + 0x2c], edi
mov ecx, ebp
mov byte [esp + 0xc], al
mov eax, edi
mov edi, edx
movzx ebp, cl
shr edi, 0x18
mov byte [esp + 0x14], al
mov eax, esi
mov byte [esp + 0x18], al
mov eax, edi
mov byte [esp + 0x1c], al
mov eax, esi
movzx esi, al
mov dword [esp + 0x34], ebx
mov eax, dword [esp + 0x28]
shl esi, 8
mov byte [esp + 0x20], bl
mov ebx, edx
movzx edx, dl
shr ebx, 8
or esi, ebp
movzx ebp, byte [esp + 0x2c]
mov dword [esp + 0x30], edi
shl esi, 8
movzx edi, bl
shl edx, 8
or esi, ebp
or edx, edi
shl esi, 8
shl edx, 8
mov ebp, esi
movzx esi, byte [esp + 0x34]
or eax, ebp
or edx, esi
mov esi, eax
mov eax, dword [esp + 0x30]
shl edx, 8
or eax, edx
mov edi, eax
mov eax, dword [esp + 0x10]
mov dword [eax], esi
mov dword [eax + 4], edi
jmp 0x600176
mov eax, dword [esp + 0x64]
mov esi, ecx
mov dword [esp + 0x18], eax
jmp 0x6000a4
mov esi, dword [esp + 0x64]
mov eax, ecx
mov dword [esp + 0x10], esi
jmp 0x5fff65
xor ecx, ecx
jmp 0x60020b
mov edx, eax
xor ecx, ecx
jmp 0x6001ff
xor ebx, ebx
jmp 0x6001f3
mov ecx, eax
jmp 0x6001ec
xor edx, edx
jmp 0x6001de
movzx ecx, byte [eax - 1]
sub eax, 1
shl ecx, 8
jmp 0x6001d2
mov edx, esi
jmp 0x60011a
mov edx, esi
jmp 0x600126