Function at 0x564129
Capabilities:
Encode data using xor

Disassembly:
mov eax, 0x28
call fcn.0057aae0
mov ecx, dword [esp + 0x2c]
push ebx
push ebp
push esi
mov eax, dword [ecx]
mov edx, dword [ecx + 4]
mov cl, 0x38
push edi
call fcn.0057b530
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x3c]
mov dword [esp + 0x1c], edx
mov ecx, dword [eax + 8]
mov ebx, dword [eax + 0x24]
mov edx, dword [eax + 0xc]
mov edi, dword [eax + 0x1c]
mov esi, dword [eax + 0x10]
mov ebp, dword [eax + 0x14]
mov dword [esp + 0x10], ecx
mov ecx, dword [eax + 0x18]
mov dword [esp + 0x28], ebx
mov ebx, dword [eax + 0x30]
mov dword [esp + 0x14], ecx
mov ecx, dword [eax + 0x20]
mov dword [esp + 0x20], edx
mov dword [esp + 0x24], edi
mov dword [esp + 0x2c], ebx
test ebx, ebx
je 0x5644dc
mov ebx, dword [esp + 0x44]
test ebx, ebx
je 0x5644dc
mov edi, dword [eax + 0x2c]
cmp ebx, edi
mov dword [esp + 0x30], edi
mov edi, dword [esp + 0x24]
jne 0x5644dc
mov eax, dword [eax + 0x28]
dec eax
cmp eax, 6
ja case.default.0x564081
jmp dword [eax*4 + 0x5644e8]
mov ebx, dword [esp + 0x3c]
movzx eax, byte [ebx + 0x3e]
cdq
shl eax, 0x10
or dword [esp + 0x1c], eax
movzx eax, byte [ebx + 0x3d]
cdq
shl eax, 8
or dword [esp + 0x1c], eax
movzx eax, byte [ebx + 0x3c]
cdq
or dword [esp + 0x1c], eax
jmp 0x5640dd
mov ebx, dword [esp + 0x3c]
movzx eax, byte [ebx + 0x3d]
cdq
shl eax, 8
or dword [esp + 0x1c], eax
movzx eax, byte [ebx + 0x3c]
cdq
or dword [esp + 0x1c], eax
jmp 0x5640dd
mov ebx, dword [esp + 0x3c]
movzx eax, byte [ebx + 0x3c]
cdq
or dword [esp + 0x1c], eax
jmp 0x5640dd
mov ebx, dword [esp + 0x3c]
movzx eax, byte [ebx + 0x3b]
cdq
shld edx, eax, 0x18
shl eax, 0x18
or dword [esp + 0x18], eax
or dword [esp + 0x1c], edx
jmp 0x5640f7
mov ebx, dword [esp + 0x3c]
movzx eax, byte [ebx + 0x3a]
cdq
shld edx, eax, 0x10
shl eax, 0x10
or dword [esp + 0x18], eax
or dword [esp + 0x1c], edx
jmp 0x564111
mov ebx, dword [esp + 0x3c]
movzx eax, byte [ebx + 0x39]
mov ebx, dword [esp + 0x18]
cdq
shld edx, eax, 8
shl eax, 8
or ebx, eax
or dword [esp + 0x1c], edx
jmp 0x56412d
mov ebx, dword [esp + 0x18]
mov eax, dword [esp + 0x3c]
movzx eax, byte [eax + 0x38]
cdq
or ebx, eax
or dword [esp + 0x1c], edx
mov edx, dword [esp + 0x20]
mov dword [esp + 0x18], ebx
jmp 0x56414a
mov ebx, dword [esp + 0x18]
mov eax, dword [esp + 0x28]
xor ecx, ebx
xor eax, dword [esp + 0x1c]
cmp dword [esp + 0x2c], 0
mov dword [esp + 0x28], eax
jbe 0x564228
add dword [esp + 0x10], esi
mov ebx, ebp
adc edx, ebp
xor edi, edi
shld ebp, esi, 0xd
shr ebx, 0x13
shl esi, 0xd
or edi, ebp
mov ebp, dword [esp + 0x24]
or ebx, esi
xor ebx, dword [esp + 0x10]
xor edi, edx
add dword [esp + 0x14], ecx
mov esi, eax
mov dword [esp + 0x20], edx
adc ebp, eax
shr esi, 0x10
shld eax, ecx, 0x10
xor edx, edx
shl ecx, 0x10
or edx, eax
mov eax, dword [esp + 0x20]
or esi, ecx
xor esi, dword [esp + 0x14]
xor edx, ebp
xor ecx, ecx
or ecx, dword [esp + 0x10]
add eax, esi
mov dword [esp + 0x10], eax
adc ecx, edx
xor eax, eax
mov dword [esp + 0x20], ecx
mov ecx, edx
shld edx, esi, 0x15
shr ecx, 0xb
or eax, edx
shl esi, 0x15
mov edx, dword [esp + 0x20]
or ecx, esi
xor ecx, dword [esp + 0x10]
xor eax, edx
mov dword [esp + 0x28], eax
mov esi, edi
mov eax, dword [esp + 0x14]
add eax, ebx
mov dword [esp + 0x14], eax
adc ebp, edi
shr esi, 0xf
shld edi, ebx, 0x11
mov dword [esp + 0x24], ebp
xor ebp, ebp
shl ebx, 0x11
or ebp, edi
or esi, ebx
xor edi, edi
or edi, dword [esp + 0x14]
xor esi, eax
mov eax, dword [esp + 0x24]
xor ebp, eax
sub dword [esp + 0x2c], 1
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x28]
mov dword [esp + 0x24], edi
jne 0x564163
mov ebx, dword [esp + 0x18]
xor edx, dword [esp + 0x1c]
xor dword [esp + 0x10], ebx
cmp dword [esp + 0x30], 0x10
mov dword [esp + 0x20], edx
mov dword [esp + 0x24], 0xee
je 0x56424b
mov dword [esp + 0x24], 0xff
mov ebx, dword [esp + 0x3c]
xor edi, 0
mov ebx, dword [ebx + 0x34]
mov dword [esp + 0x2c], ebx
mov ebx, dword [esp + 0x14]
xor ebx, dword [esp + 0x24]
cmp dword [esp + 0x2c], 0
mov dword [esp + 0x14], ebx
mov dword [esp + 0x24], edi
jbe 0x564339
jmp 0x56427a
mov eax, dword [esp + 0x28]
add dword [esp + 0x10], esi
mov ebx, ebp
adc edx, ebp
shr ebx, 0x13
shld ebp, esi, 0xd
xor edi, edi
mov dword [esp + 0x20], edx
shl esi, 0xd
or edi, ebp
mov ebp, dword [esp + 0x24]
or ebx, esi
xor ebx, dword [esp + 0x10]
xor edi, edx
add dword [esp + 0x14], ecx
mov esi, eax
adc ebp, eax
shr esi, 0x10
shld eax, ecx, 0x10
xor edx, edx
shl ecx, 0x10
or edx, eax
mov eax, dword [esp + 0x20]
or esi, ecx
xor esi, dword [esp + 0x14]
xor edx, ebp
xor ecx, ecx
or ecx, dword [esp + 0x10]
add eax, esi
mov dword [esp + 0x10], eax
adc ecx, edx
xor eax, eax
mov dword [esp + 0x20], ecx
mov ecx, edx
shld edx, esi, 0x15
shr ecx, 0xb
or eax, edx
shl esi, 0x15
mov edx, dword [esp + 0x20]
or ecx, esi
xor ecx, dword [esp + 0x10]
xor eax, edx
mov dword [esp + 0x28], eax
mov esi, edi
mov eax, dword [esp + 0x14]
add eax, ebx
mov dword [esp + 0x14], eax
adc ebp, edi
shr esi, 0xf
shld edi, ebx, 0x11
mov dword [esp + 0x24], ebp
xor ebp, ebp
shl ebx, 0x11
or ebp, edi
or esi, ebx
xor edi, edi
or edi, dword [esp + 0x14]
xor esi, eax
mov eax, dword [esp + 0x24]
xor ebp, eax
sub dword [esp + 0x2c], 1
mov ebx, eax
mov dword [esp + 0x24], edi
mov dword [esp + 0x14], ebx
jne 0x564276
mov eax, dword [esp + 0x40]
mov edx, ecx
xor edx, ebx
mov dword [esp + 0x34], 0
mov ebx, dword [esp + 0x28]
xor edx, esi
xor edx, dword [esp + 0x10]
xor ebx, edi
mov edi, dword [esp + 0x40]
xor ebx, ebp
xor ebx, dword [esp + 0x20]
mov byte [eax], dl
mov eax, edx
shr eax, 8
mov byte [edi + 1], al
mov eax, edx
shr eax, 0x10
mov byte [edi + 2], al
mov eax, edi
mov edi, dword [esp + 0x24]
shr edx, 0x18
mov byte [eax + 3], dl
mov edx, eax
mov eax, ebx
shr eax, 8
mov byte [edx + 5], al
mov eax, ebx
shr eax, 0x10
mov byte [edx + 6], al
mov eax, dword [esp + 0x3c]
mov byte [edx + 4], bl
shr ebx, 0x18
mov byte [edx + 7], bl
cmp dword [eax + 0x2c], 8
je 0x5644cf
mov eax, dword [eax + 0x34]
xor esi, 0xdd
mov edx, dword [esp + 0x14]
xor ebp, 0
mov dword [esp + 0x3c], eax
test eax, eax
je 0x56447d
add dword [esp + 0x10], esi
mov ebx, ebp
mov eax, dword [esp + 0x20]
adc eax, ebp
xor edi, edi
shld ebp, esi, 0xd
shr ebx, 0x13
shl esi, 0xd
or edi, ebp
mov ebp, dword [esp + 0x24]
or ebx, esi
xor ebx, dword [esp + 0x10]
xor edi, eax
add edx, ecx
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x28]
mov esi, eax
adc ebp, eax
mov dword [esp + 0x14], edx
shld eax, ecx, 0x10
shr esi, 0x10
xor edx, edx
or edx, eax
shl ecx, 0x10
mov eax, dword [esp + 0x20]
or esi, ecx
xor esi, dword [esp + 0x14]
xor edx, ebp
mov dword [esp + 0x24], ebp
mov ecx, edx
xor ebp, ebp
or ebp, dword [esp + 0x10]
add eax, esi
mov dword [esp + 0x10], eax
adc ebp, edx
xor eax, eax
shld edx, esi, 0x15
shr ecx, 0xb
shl esi, 0x15
or eax, edx
mov edx, dword [esp + 0x14]
or ecx, esi
xor ecx, dword [esp + 0x10]
xor eax, ebp
add edx, ebx
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x24]
mov esi, edi
adc eax, edi
mov dword [esp + 0x20], ebp
shld edi, ebx, 0x11
xor ebp, ebp
shr esi, 0xf
or ebp, edi
shl ebx, 0x11
or esi, ebx
xor edi, edi
or edi, edx
xor esi, edx
xor ebp, eax
mov dword [esp + 0x24], edi
sub dword [esp + 0x3c], 1
mov edx, eax
jne 0x5643c2
mov ebx, dword [esp + 0x40]
xor ecx, edx
mov edx, dword [esp + 0x28]
xor ecx, esi
xor ecx, dword [esp + 0x10]
xor edx, edi
mov eax, ecx
mov dword [esp + 0x34], 0
shr eax, 8
xor edx, ebp
xor edx, dword [esp + 0x20]
mov byte [ebx + 9], al
mov eax, ecx
shr eax, 0x10
mov byte [ebx + 0xa], al
mov eax, edx
shr eax, 8
mov byte [ebx + 0xd], al
mov eax, edx
mov byte [ebx + 8], cl
shr ecx, 0x18
shr eax, 0x10
mov byte [ebx + 0xc], dl
shr edx, 0x18
mov byte [ebx + 0xb], cl
mov byte [ebx + 0xe], al
mov byte [ebx + 0xf], dl
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 0x28
ret
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x28
ret