Function at 0x563170
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0x630
mov edi, dword [ebp + 0xc]
lea ebx, [esp + 0xac]
push 0x2c0
push 0
push ebx
call sub.api_ms_win_crt_string_l1_1_0.dll_memset
add esp, 0xc
lea esi, [esp + 0x36c]
push 0x2c0
push 0
push esi
call sub.api_ms_win_crt_string_l1_1_0.dll_memset
add esp, 0xc
mov dword [esp + 0x2c], 0
pxor xmm0, xmm0
movdqa xmmword [esp + 0x10], xmm0
mov word [esp + 0x20], 0
movdqa xmmword [esp + 0x90], xmm0
movdqa xmmword [esp + 0x80], xmm0
mov dword [esp + 0xa0], 0
movdqa xmmword [esp + 0x60], xmm0
movdqa xmmword [esp + 0x50], xmm0
movdqa xmmword [esp + 0x40], xmm0
movdqa xmmword [esp + 0x30], xmm0
mov dword [esp + 0x74], 0
mov dword [esp + 0x70], 0
lea eax, [esp + 0x2c]
push esi
push ebx
push eax
push edi
push dword [ebp + 8]
call fcn.007183d0
add esp, 0x14
mov ecx, dword [esp + 0x2c]
test ecx, ecx
je 0x5632d1
mov eax, ecx
and eax, 3
xor edx, edx
cmp ecx, 4
jb 0x563277
and ecx, 0xfffffffc
xor edx, edx
nop
movzx esi, byte [esp + edx + 0xac]
inc dword [esp + esi*4 + 0x30]
movzx esi, byte [esp + edx + 0xad]
inc dword [esp + esi*4 + 0x30]
movzx esi, byte [esp + edx + 0xae]
inc dword [esp + esi*4 + 0x30]
movzx esi, byte [esp + edx + 0xaf]
inc dword [esp + esi*4 + 0x30]
add edx, 4
cmp ecx, edx
jne 0x563240
test eax, eax
je 0x56329d
lea ecx, [esp + edx]
add ecx, 0xac
xor edx, edx
nop word cs:[eax + eax]
movzx esi, byte [ecx + edx]
inc dword [esp + esi*4 + 0x30]
inc edx
cmp eax, edx
jne 0x563290
movq xmm1, qword [esp + 0x30]
pxor xmm0, xmm0
pcmpeqd xmm0, xmm1
pshufd xmm1, xmm0, 0x60
movmskpd edx, xmm1
xor eax, eax
cmp dl, 3
setne cl
test edx, edx
je 0x563316
pextrw edx, xmm0, 2
not dl
movzx edi, dl
and edi, 1
mov al, cl
jmp 0x5632e2
mov eax, 1
cmp dword [esp + 0x34], 0
mov edi, 1
je 0x563322
cmp dword [esp + 0x38], 0
je 0x563300
mov ebx, 2
test eax, eax
jne 0x5634e3
mov eax, 1
mov edi, 2
cmp dword [esp + 0x3c], 0
je 0x563351
mov ebx, 2
test eax, eax
jne 0x5634e3
jmp 0x563347
xor edi, edi
mov ebx, 2
jmp 0x5634e3
cmp dword [esp + 0x38], 0
je 0x56333c
mov edi, 2
mov eax, 1
cmp dword [esp + 0x3c], 0
jne 0x563307
jmp 0x563351
cmp dword [esp + 0x3c], 0
je 0x5637fa
mov edi, 3
mov eax, 1
cmp dword [esp + 0x40], 0
je 0x56336f
mov ebx, 2
test eax, eax
jne 0x5634e3
mov edi, 4
mov eax, 1
cmp dword [esp + 0x44], 0
je 0x56338d
mov ebx, 2
test eax, eax
jne 0x5634e3
mov edi, 5
mov eax, 1
cmp dword [esp + 0x48], 0
je 0x5633ab
mov ebx, 2
test eax, eax
jne 0x5634e3
mov edi, 6
mov eax, 1
cmp dword [esp + 0x4c], 0
je 0x5633c9
mov ebx, 2
test eax, eax
jne 0x5634e3
mov edi, 7
mov eax, 1
cmp dword [esp + 0x50], 0
je 0x5633e7
mov ebx, 2
test eax, eax
jne 0x5634e3
mov edi, 8
mov eax, 1
cmp dword [esp + 0x54], 0
je 0x563405
mov ebx, 2
test eax, eax
jne 0x5634e3
mov edi, 9
mov eax, 1
cmp dword [esp + 0x58], 0
je 0x563423
mov ebx, 2
test eax, eax
jne 0x5634e3
mov edi, 0xa
mov eax, 1
cmp dword [esp + 0x5c], 0
je 0x563441
mov ebx, 2
test eax, eax
jne 0x5634e3
mov edi, 0xb
mov eax, 1
cmp dword [esp + 0x60], 0
je 0x56345f
mov ebx, 2
test eax, eax
jne 0x5634e3
mov edi, 0xc
mov eax, 1
cmp dword [esp + 0x64], 0
je 0x563479
mov ebx, 2
test eax, eax
jne 0x5634e3
mov edi, 0xd
mov eax, 1
cmp dword [esp + 0x68], 0
je 0x563493
mov ebx, 2
test eax, eax
jne 0x5634e3
mov edi, 0xe
mov eax, 1
cmp dword [esp + 0x6c], 0
je 0x5634ad
mov ebx, 2
test eax, eax
jne 0x5634e3
mov edi, 0xf
mov eax, 1
cmp dword [esp + 0x70], 0
je 0x5634c7
mov ebx, 2
test eax, eax
jne 0x5634e3
mov edi, 0x10
mov eax, 1
cmp dword [esp + 0x74], 0
je 0x5634e1
mov ebx, 2
test eax, eax
jne 0x5634e3
mov edi, 0x11
mov eax, 1
mov ebx, eax
lea esi, [esp + 0x10]
lea eax, [esp + 0x30]
push esi
push dword [ebp + 0x10]
push 5
push 0x12
push eax
call fcn.00717b00
add esp, 0x14
lea eax, [esp + 0x80]
push eax
push 0x12
push esi
call fcn.00718920
add esp, 0xc
mov eax, 0x12
cmp ebx, 2
mov dword [esp + 0x28], edi
mov dword [esp + 0xc], ebx
jb 0x563612
cmp byte [esp + 0x1f], 0
jne 0x563612
mov eax, 0x11
cmp byte [esp + 0x1e], 0
jne 0x563612
mov eax, 0x10
cmp byte [esp + 0x1d], 0
jne 0x563612
mov eax, 0xf
cmp byte [esp + 0x1c], 0
jne 0x563612
mov eax, 0xe
cmp byte [esp + 0x1b], 0
jne 0x563612
mov eax, 0xd
cmp byte [esp + 0x1a], 0
jne 0x563612
mov eax, 0xc
cmp byte [esp + 0x19], 0
jne 0x563612
mov eax, 0xb
cmp byte [esp + 0x18], 0
jne 0x563612
mov eax, 0xa
cmp byte [esp + 0x17], 0
jne 0x563612
mov eax, 9
cmp byte [esp + 0x20], 0
jne 0x563612
mov eax, 8
cmp byte [esp + 0x16], 0
jne 0x563612
mov eax, 7
cmp byte [esp + 0x21], 0
jne 0x563612
mov eax, 6
cmp byte [esp + 0x15], 0
jne 0x563612
mov eax, 5
cmp byte [esp + 0x10], 0
jne 0x563612
mov eax, 4
cmp byte [esp + 0x14], 0
jne 0x563612
mov eax, 3
cmp byte [esp + 0x13], 0
jne 0x563612
mov eax, 2
cmp byte [esp + 0x12], 0
jne 0x563612
xor eax, eax
cmp byte [esp + 0x11], 0
setne al
mov dword [esp + 4], eax
movzx eax, word [esp + 0x11]
movd xmm0, eax
pxor xmm1, xmm1
pcmpeqb xmm1, xmm0
punpcklbw xmm0, xmm1
pshuflw xmm0, xmm0, 0x60
pshufd xmm0, xmm0, 0x50
movmskpd eax, xmm0
xor edx, edx
cmp byte [esp + 0x13], 0
sete dl
or edx, 2
xor ecx, ecx
test al, 2
cmove edx, ecx
test al, 1
cmove edx, ecx
mov eax, dword [ebp + 0x14]
mov ebx, dword [eax]
mov esi, ebx
mov edi, edx
shr edi, 1
mov ch, bl
and ch, 7
mov cl, ch
xor cl, 0x1f
shr edi, cl
mov eax, edx
mov cl, ch
shl eax, cl
shr esi, 3
mov ecx, dword [ebp + 0x18]
movzx ecx, byte [ecx + esi]
or eax, ecx
mov ecx, dword [ebp + 0x18]
mov dword [ecx + esi + 4], edi
mov dword [ecx + esi], eax
add ebx, 2
mov eax, dword [ebp + 0x14]
mov dword [eax], ebx
cmp edx, dword [esp + 4]
jae 0x5636fb
nop word cs:[eax + eax]
mov ecx, ebx
mov dword [esp + 8], ebx
movzx eax, byte [edx + 0x8baca0]
movzx ebx, byte [esp + eax + 0x10]
movzx edi, byte [ebx + 0x8bacb2]
mov eax, ecx
and al, 7
mov ecx, eax
xor cl, 0x1f
mov esi, edi
shr esi, 1
shr esi, cl
mov ecx, eax
shl edi, cl
movzx ebx, byte [ebx + 0x8bacb8]
mov eax, dword [esp + 8]
add ebx, eax
shr eax, 3
mov ecx, dword [ebp + 0x18]
movzx ecx, byte [ecx + eax]
or edi, ecx
mov ecx, dword [ebp + 0x18]
mov dword [ecx + eax + 4], esi
mov dword [ecx + eax], edi
inc edx
cmp dword [esp + 4], edx
jne 0x5636a0
mov eax, dword [ebp + 0x14]
mov dword [eax], ebx
cmp dword [esp + 0xc], 1
jne 0x56370b
mov eax, dword [esp + 0x28]
mov byte [esp + eax + 0x10], 0
mov eax, dword [esp + 0x2c]
mov dword [esp + 0x28], eax
test eax, eax
je 0x5637f2
xor eax, eax
jmp 0x563774
mov dword [esp + 4], 3
mov eax, dword [esp + 8]
movzx edi, byte [esp + eax + 0x36c]
mov edx, ebx
shr edx, 3
mov esi, edi
shr esi, 1
mov eax, ebx
and al, 7
mov ecx, eax
xor cl, 0x1f
shr esi, cl
mov ecx, dword [ebp + 0x18]
movzx ecx, byte [ecx + edx]
mov dword [esp + 0xc], ecx
mov ecx, eax
mov eax, dword [esp + 8]
shl edi, cl
or edi, dword [esp + 0xc]
mov ecx, dword [ebp + 0x18]
mov dword [ecx + edx + 4], esi
mov dword [ecx + edx], edi
add ebx, dword [esp + 4]
inc eax
cmp dword [esp + 0x28], eax
je 0x5637ed
mov edx, ebx
mov dword [esp + 8], eax
movzx eax, byte [esp + eax + 0xac]
mov dword [esp + 4], eax
movzx edi, word [esp + eax*2 + 0x80]
mov esi, edi
shr esi, 1
mov eax, edx
mov dword [esp + 0xc], ebx
and al, 7
mov ecx, eax
xor cl, 0x1f
shr esi, cl
mov ecx, eax
shl edi, cl
shr edx, 3
mov ecx, dword [ebp + 0x18]
movzx eax, byte [ecx + edx]
or edi, eax
mov eax, dword [esp + 4]
movzx ebx, byte [esp + eax + 0x10]
mov dword [ecx + edx + 4], esi
mov dword [ecx + edx], edi
add ebx, dword [esp + 0xc]
cmp eax, 0x10
je 0x5637e0
cmp eax, 0x11
je 0x563720
mov eax, dword [esp + 8]
jmp 0x56376d
mov dword [esp + 4], 2
jmp 0x563728
mov eax, dword [ebp + 0x14]
mov dword [eax], ebx
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
cmp dword [esp + 0x40], 0
jne 0x563365
cmp dword [esp + 0x44], 0
jne 0x563383
cmp dword [esp + 0x48], 0
jne 0x5633a1
cmp dword [esp + 0x4c], 0
jne 0x5633bf
cmp dword [esp + 0x50], 0
jne 0x5633dd
cmp dword [esp + 0x54], 0
jne 0x5633fb
cmp dword [esp + 0x58], 0
jne 0x563419
cmp dword [esp + 0x5c], 0
jne 0x563437
cmp dword [esp + 0x60], 0
jne 0x563455
cmp dword [esp + 0x64], 0
jne 0x56346f
cmp dword [esp + 0x68], 0
jne 0x563489
cmp dword [esp + 0x6c], 0
jne 0x5634a3
cmp dword [esp + 0x70], 0
jne 0x5634bd
mov ecx, dword [esp + 0x74]
xor eax, eax
test ecx, ecx
setne al
mov edi, 0x11
cmove edi, ecx
jmp 0x5634e1