Function at 0x565890
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0x7a0
mov dword [esp + 4], edx
mov dword [esp + 0x1c], ecx
mov esi, dword [ebp + 0x14]
mov ebx, dword [ebp + 0xc]
lea eax, [esp + 0x46c]
push 0x110
push 0
push eax
call sub.api_ms_win_crt_string_l1_1_0.dll_memset
add esp, 0xc
lea eax, [esp + 0x57c]
push 0x220
push 0
push eax
call sub.api_ms_win_crt_string_l1_1_0.dll_memset
add esp, 0xc
dec ebx
je 0x565b7d
mov edx, dword [esi]
mov eax, edx
mov ecx, edx
mov edi, edx
mov dword [esp], edx
shr ecx, 3
mov edx, dword [ebp + 0x18]
movzx esi, byte [edx + ecx]
and al, 7
bts esi, eax
lea edx, [edi + 1]
mov eax, dword [ebp + 0x18]
mov dword [eax + ecx], esi
bsr edi, ebx
mov dword [eax + ecx + 4], 0
mov eax, dword [ebp + 0x14]
mov dword [eax], edx
mov esi, edi
shr esi, 1
mov eax, edx
and dl, 7
mov ecx, edx
xor cl, 0x1f
shr esi, cl
mov dword [esp + 8], ebx
mov ebx, edi
mov ecx, edx
shl edi, cl
shr eax, 3
mov edx, dword [ebp + 0x18]
movzx ecx, byte [edx + eax]
or edi, ecx
mov dword [edx + eax + 4], esi
mov dword [edx + eax], edi
mov eax, dword [esp]
lea edx, [eax + 4]
mov eax, dword [ebp + 0x14]
mov dword [eax], edx
mov esi, 0xffffffff
mov ecx, ebx
shl esi, cl
add esi, dword [esp + 8]
mov edi, edx
shr edi, 3
mov eax, esi
shr eax, 1
and dl, 7
mov ecx, edx
xor cl, 0x1f
shr eax, cl
mov ecx, edx
shl esi, cl
mov edx, dword [ebp + 0x18]
movzx ecx, byte [edx + edi]
or esi, ecx
mov dword [edx + edi + 4], eax
mov dword [edx + edi], esi
mov eax, dword [esp]
add eax, ebx
add eax, 4
mov edi, dword [ebp + 8]
mov ecx, dword [ebp + 0x14]
mov dword [ecx], eax
lea eax, [edi*4]
push eax
push dword [esp + 0x20]
call fcn.00554f90
add esp, 8
mov dword [esp], eax
pxor xmm0, xmm0
movdqa xmmword [esp + 0x110], xmm0
movdqa xmmword [esp + 0x100], xmm0
movdqa xmmword [esp + 0xf0], xmm0
movdqa xmmword [esp + 0xe0], xmm0
movdqa xmmword [esp + 0xd0], xmm0
movdqa xmmword [esp + 0xc0], xmm0
movdqa xmmword [esp + 0xb0], xmm0
movdqa xmmword [esp + 0xa0], xmm0
movdqa xmmword [esp + 0x90], xmm0
movdqa xmmword [esp + 0x80], xmm0
movdqa xmmword [esp + 0x70], xmm0
movdqa xmmword [esp + 0x60], xmm0
movdqa xmmword [esp + 0x50], xmm0
movdqa xmmword [esp + 0x40], xmm0
movdqa xmmword [esp + 0x30], xmm0
movdqa xmmword [esp + 0x20], xmm0
mov esi, dword [esp + 4]
mov ecx, dword [esi]
cmp edi, 2
jb 0x565b4d
mov eax, 1
cmp edi, 9
jb 0x565b40
lea ebx, [edi - 1]
mov edx, ebx
and edx, 0xfffffff8
lea eax, [edx + 1]
movd xmm0, ecx
pshufd xmm1, xmm0, 0
xor ecx, ecx
movdqa xmm0, xmmword [0x8b60a0]
movdqa xmm2, xmm1
nop dword [eax]
movdqu xmm4, xmmword [esi + ecx*4 + 4]
movdqu xmm3, xmmword [esi + ecx*4 + 0x14]
movdqa xmm5, xmm1
pxor xmm5, xmm0
movdqa xmm6, xmm4
pxor xmm6, xmm0
pcmpgtd xmm6, xmm5
pand xmm4, xmm6
pandn xmm6, xmm1
movdqa xmm1, xmm6
por xmm1, xmm4
movdqa xmm4, xmm2
pxor xmm4, xmm0
movdqa xmm5, xmm3
pxor xmm5, xmm0
pcmpgtd xmm5, xmm4
pand xmm3, xmm5
pandn xmm5, xmm2
movdqa xmm2, xmm5
por xmm2, xmm3
add ecx, 8
cmp edx, ecx
jne 0x565a70
movdqa xmm4, xmm2
pxor xmm4, xmm0
movdqa xmm3, xmm1
pxor xmm3, xmm0
pcmpgtd xmm3, xmm4
pand xmm1, xmm3
pandn xmm3, xmm2
por xmm3, xmm1
pshufd xmm2, xmm3, 0xee
movdqa xmm1, xmm3
pxor xmm1, xmm0
movdqa xmm4, xmm2
pxor xmm4, xmm0
pcmpgtd xmm1, xmm4
pand xmm3, xmm1
pandn xmm1, xmm2
por xmm1, xmm3
pshufd xmm2, xmm1, 0x55
movdqa xmm3, xmm1
pxor xmm3, xmm0
pxor xmm0, xmm2
pcmpgtd xmm3, xmm0
pand xmm1, xmm3
pandn xmm3, xmm2
por xmm3, xmm1
movd ecx, xmm3
cmp ebx, edx
je 0x565b4d
nop dword [eax]
mov edx, dword [esi + eax*4]
cmp edx, ecx
cmova ecx, edx
inc eax
cmp edi, eax
jne 0x565b40
lea esi, [ecx + 1]
xor edx, edx
cmp esi, 0x20
jb 0x565cc0
add ecx, 0xffffffe1
mov edx, ecx
shr edx, 5
inc edx
mov eax, edx
and eax, 3
cmp ecx, 0x60
jae 0x565b9e
movdqa xmm0, xmmword [0x8b60b0]
xor ecx, ecx
jmp 0x565c66
mov eax, dword [esi]
mov ecx, eax
shr ecx, 3
mov edi, dword [ebp + 0x18]
movzx edx, byte [edi + ecx]
mov dword [edi + ecx], edx
mov dword [edi + ecx + 4], 0
inc eax
mov dword [esi], eax
jmp 0x566039
and edx, 0xfffffffc
movdqa xmm0, xmmword [0x8b60b0]
xor ecx, ecx
movdqa xmm3, xmmword [0x8b60e0]
movdqa xmm4, xmmword [0x8b60f0]
movdqa xmm5, xmmword [0x8b6100]
movdqa xmm6, xmmword [0x8b6110]
movdqa xmm7, xmmword [0x8b6120]
movdqa xmm1, xmmword [0x8b6130]
nop dword [eax + eax]
movdqa xmm2, xmm0
paddb xmm2, xmmword [0x8b60c0]
movdqu xmmword [esp + ecx + 0x20], xmm0
movdqu xmmword [esp + ecx + 0x30], xmm2
movdqa xmm2, xmm0
paddb xmm2, xmmword [str.________________0000000000000000________________PPPPPPPPPPPPPPPP________________pppppppppppppppp]
movdqu xmmword [esp + ecx + 0x40], xmm2
movdqa xmm2, xmm0
paddb xmm2, xmm3
movdqu xmmword [esp + ecx + 0x50], xmm2
movdqa xmm2, xmm0
paddb xmm2, xmm4
movdqu xmmword [esp + ecx + 0x60], xmm2
movdqa xmm2, xmm0
paddb xmm2, xmm5
movdqu xmmword [esp + ecx + 0x70], xmm2
movdqa xmm2, xmm0
paddb xmm2, xmm6
movdqu xmmword [esp + ecx + 0x80], xmm2
movdqa xmm2, xmm0
paddb xmm2, xmm7
movdqu xmmword [esp + ecx + 0x90], xmm2
sub ecx, 0xffffff80
pxor xmm0, xmm1
add edx, 0xfffffffc
jne 0x565be0
mov edx, esi
and edx, 0xffffffe0
test eax, eax
je 0x565cae
lea edi, [esp + 0x20]
add ecx, edi
add ecx, 0x10
shl eax, 5
xor edi, edi
movdqa xmm1, xmmword [0x8b60c0]
movdqa xmm2, xmmword [str.________________0000000000000000________________PPPPPPPPPPPPPPPP________________pppppppppppppppp]
nop dword [eax]
movdqa xmm3, xmm0
paddb xmm3, xmm1
movdqu xmmword [ecx + edi - 0x10], xmm0
movdqu xmmword [ecx + edi], xmm3
paddb xmm0, xmm2
add edi, 0x20
cmp eax, edi
jne 0x565c90
cmp esi, edx
mov edi, dword [ebp + 8]
je 0x565cc9
nop word cs:[eax + eax]
mov byte [esp + edx + 0x20], dl
inc edx
cmp esi, edx
jne 0x565cc0
test edi, edi
je 0x565d48
xor edi, edi
mov ecx, dword [esp]
jmp 0x565d08
mov dword [ecx + edi*4], eax
test eax, eax
je 0x565cfe
push eax
lea eax, [esp + 0x24]
push eax
lea eax, [esp + 0x29]
push eax
call sub.api_ms_win_crt_private_l1_1_0.dll_memmove
mov ecx, dword [esp + 0xc]
add esp, 0xc
mov byte [esp + 0x20], bl
inc edi
cmp edi, dword [ebp + 8]
je 0x565d37
mov eax, dword [esp + 4]
movzx ebx, byte [eax + edi*4]
xor eax, eax
nop word cs:[eax + eax]
cmp byte [esp + eax + 0x20], bl
je 0x565ce0
inc eax
cmp esi, eax
jne 0x565d20
movzx ebx, byte [esp + esi + 0x20]
mov dword [ecx + edi*4], esi
mov eax, esi
jmp 0x565ce7
mov edi, dword [ebp + 8]
mov eax, edi
neg eax
mov dword [esp + 4], eax
xor eax, eax
xor edx, edx
jmp 0x565d5b
mov edx, dword [esp]
jmp 0x565db9
add edx, esi
mov edi, dword [ebp + 8]
cmp esi, eax
cmova eax, esi
cmp edx, edi
jae 0x565dad
cmp edx, edi
jae 0x565d70
nop
mov ecx, dword [esp]
cmp dword [ecx + edx*4], 0
je 0x565d70
inc edx
cmp edi, edx
jne 0x565d60
jmp 0x565da6
xor esi, esi
cmp edx, edi
jae 0x565d52
sub edi, edx
mov dword [esp + 8], edi
mov ecx, dword [esp]
lea ebx, [ecx + edx*4]
mov ecx, dword [esp + 4]
lea edi, [ecx + edx]
xor esi, esi
nop dword [eax + eax]
cmp dword [ebx + esi*4], 0
jne 0x565d4d
inc esi
mov ecx, edi
add ecx, esi
jne 0x565d90
mov edi, dword [ebp + 8]
mov ecx, dword [esp + 8]
jmp 0x565da8
xor ecx, ecx
cmp ecx, eax
cmova eax, ecx
test eax, eax
mov edx, dword [esp]
je 0x565db9
bsr eax, eax
jmp 0x565dbb
xor eax, eax
cmp eax, 6
mov ecx, 6
cmovb ecx, eax
test edi, edi
mov dword [esp + 0x10], ecx
je 0x565f20
mov eax, 2
shl eax, cl
mov esi, 0xffffffff
shl esi, cl
not esi
shl esi, 9
or esi, ecx
mov dword [esp + 0xc], esi
mov esi, 1
mov dword [esp + 8], eax
sub esi, eax
xor ebx, ebx
xor ecx, ecx
jmp 0x565e11
add eax, dword [esp + 0x10]
mov dword [edx + ebx*4], eax
inc ecx
inc ebx
cmp ecx, edi
jae 0x565ead
mov eax, dword [edx + ecx*4]
test eax, eax
jne 0x565e00
lea eax, [ecx + 1]
mov edi, 1
mov dword [esp + 4], eax
cmp eax, dword [ebp + 8]
jae 0x565e5a
mov eax, dword [ebp + 8]
sub eax, ecx
lea edx, [edx + ecx*4]
mov edi, 1
nop word cs:[eax + eax]
cmp dword [edx + edi*4], 0
jne 0x565e4d
inc edi
cmp eax, edi
jne 0x565e40
mov edi, eax
add ecx, edi
mov dword [esp + 4], ecx
test edi, edi
mov edx, dword [esp]
je 0x565ea5
mov eax, dword [esp + 8]
mov ecx, dword [esp + 0xc]
nop word cs:[eax + eax]
cmp edi, eax
jb 0x565e85
mov dword [edx + ebx*4], ecx
inc ebx
add edi, esi
jne 0x565e70
mov ecx, dword [esp + 4]
mov edi, dword [ebp + 8]
jmp 0x565e09
bsr ecx, edi
mov eax, 0xffffffff
shl eax, cl
add eax, edi
shl eax, 9
or eax, ecx
mov dword [edx + ebx*4], eax
mov ecx, dword [esp + 4]
mov edi, dword [ebp + 8]
jmp 0x565e08
mov edi, dword [ebp + 8]
jmp 0x565e09
lea eax, [esp + 0x20]
push 0x440
push 0
push eax
call sub.api_ms_win_crt_string_l1_1_0.dll_memset
add esp, 0xc
test ebx, ebx
sete al
je 0x565f34
mov byte [esp + 8], al
xor eax, eax
cmp ebx, 1
mov edi, dword [esp]
je 0x565f0a
mov ecx, ebx
and ecx, 0xfffffffe
xor eax, eax
mov edx, 0x1ff
nop word cs:[eax + eax]
mov esi, dword [edi + eax*4]
and esi, edx
inc dword [esp + esi*4 + 0x20]
mov esi, dword [edi + eax*4 + 4]
and esi, edx
inc dword [esp + esi*4 + 0x20]
add eax, 2
cmp ecx, eax
jne 0x565ef0
test bl, 1
je 0x565f3b
mov ecx, 0x1ff
mov edx, dword [esp]
and ecx, dword [edx + eax*4]
inc dword [esp + ecx*4 + 0x20]
jmp 0x565f3b
lea eax, [esp + 0x20]
push 0x440
push 0
push eax
call sub.api_ms_win_crt_string_l1_1_0.dll_memset
add esp, 0xc
xor ebx, ebx
mov byte [esp + 8], 1
mov esi, dword [ebp + 0x14]
xor eax, eax
mov edi, dword [esp + 0x10]
test edi, edi
setne al
mov edx, dword [esi]
mov dword [esp + 4], edx
shr edx, 3
mov ecx, dword [esp + 4]
and cl, 7
shl eax, cl
mov esi, dword [ebp + 0x18]
movzx ecx, byte [esi + edx]
or eax, ecx
mov dword [esi + edx], eax
mov dword [esi + edx + 4], 0
mov esi, dword [ebp + 0x14]
mov eax, dword [esp + 4]
inc eax
mov dword [esi], eax
test edi, edi
je 0x565fd0
mov ecx, dword [esp + 0x10]
lea edi, [ecx - 1]
mov esi, eax
mov edx, edi
shr edx, 1
and al, 7
mov ecx, eax
xor cl, 0x1f
shr edx, cl
shr esi, 3
mov dword [esp + 0xc], esi
mov ecx, dword [ebp + 0x18]
mov esi, dword [esp + 0xc]
movzx esi, byte [ecx + esi]
mov dword [esp + 0x18], esi
mov esi, ecx
mov ecx, eax
shl edi, cl
or edi, dword [esp + 0x18]
mov eax, esi
mov ecx, dword [esp + 0xc]
mov dword [esi + ecx + 4], edx
mov dword [esi + ecx], edi
mov edi, dword [esp + 0x10]
mov esi, dword [ebp + 0x14]
mov eax, dword [esp + 4]
add eax, 5
mov dword [esi], eax
mov edx, dword [ebp + 0xc]
add edx, edi
lea ecx, [esp + 0x20]
push dword [ebp + 0x18]
push esi
lea eax, [esp + 0x584]
push eax
lea eax, [esp + 0x478]
push eax
push dword [ebp + 0x10]
push edx
call fcn.005669d0
add esp, 0x18
mov ecx, dword [esi]
cmp byte [esp + 8], 0
je 0x566041
mov edx, dword [esp]
mov eax, ecx
shr eax, 3
mov ebx, ecx
and cl, 7
mov edi, edx
mov esi, dword [ebp + 0x18]
movzx edx, byte [esi + eax]
bts edx, ecx
mov dword [esi + eax], edx
mov dword [esi + eax + 4], 0
inc ebx
mov eax, dword [ebp + 0x14]
mov dword [eax], ebx
push edi
push dword [esp + 0x20]
call fcn.00554fb0
add esp, 8
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
xor eax, eax
mov edx, dword [esp]
mov dword [esp + 0x14], ebx
jmp 0x566060
mov edx, dword [esp]
mov eax, dword [esp + 0xc]
mov ebx, dword [esp + 0x14]
inc eax
cmp ebx, eax
je 0x566005
mov dword [esp + 8], ecx
mov dword [esp + 0xc], eax
mov eax, dword [edx + eax*4]
mov dword [esp + 0x18], eax
and eax, 0x1ff
mov dword [esp + 4], eax
movzx esi, word [esp + eax*2 + 0x57c]
mov edx, ecx
shr edx, 3
mov edi, esi
shr edi, 1
mov eax, ecx
and al, 7
mov ecx, eax
xor cl, 0x1f
shr edi, cl
mov ecx, eax
shl esi, cl
mov eax, dword [ebp + 0x18]
movzx eax, byte [eax + edx]
or esi, eax
mov eax, dword [esp + 4]
movzx ecx, byte [esp + eax + 0x46c]
mov ebx, dword [ebp + 0x18]
mov dword [ebx + edx + 4], edi
mov edi, dword [ebp + 0x18]
mov dword [edi + edx], esi
add ecx, dword [esp + 8]
mov edx, dword [ebp + 0x14]
mov dword [edx], ecx
test eax, eax
je 0x566050
cmp eax, dword [esp + 0x10]
ja 0x566050
mov edi, dword [esp + 0x18]
mov edx, edi
shr edx, 9
shr edi, 0xa
mov eax, ecx
and al, 7
mov dword [esp + 8], ecx
mov ecx, eax
xor cl, 0x1f
shr edi, cl
mov esi, dword [esp + 8]
shr esi, 3
mov ecx, dword [ebp + 0x18]
movzx ebx, byte [ecx + esi]
mov ecx, eax
shl edx, cl
mov ecx, dword [esp + 8]
or edx, ebx
mov eax, dword [ebp + 0x18]
mov dword [eax + esi + 4], edi
mov dword [eax + esi], edx
add ecx, dword [esp + 4]
mov eax, dword [ebp + 0x14]
mov dword [eax], ecx
jmp 0x566050