Function at 0x5afb40
Capabilities:
Encode data using xor

Disassembly:
mov eax, 0x3c
call fcn.005c5c30
mov eax, dword [esp + 0x40]
mov edx, dword [eax + 0x10]
mov ecx, dword [eax + 8]
mov dword [esp + 0x24], edx
mov edx, dword [eax + 0x24]
push ebx
mov ebx, dword [eax + 0xc]
mov dword [esp + 0x1c], edx
mov edx, dword [esp + 0x4c]
add dword [eax], edx
mov dword [esp + 0x20], ecx
mov ecx, dword [eax + 0x20]
adc dword [eax + 4], 0
push ebp
mov ebp, dword [eax + 0x14]
push esi
mov esi, dword [eax + 0x18]
mov dword [esp + 0x20], ecx
mov ecx, dword [eax + 0x28]
push edi
mov edi, dword [eax + 0x1c]
mov dword [esp + 0x38], ebp
test ecx, ecx
je 0x5afd72
mov ebp, 8
sub ebp, ecx
lea eax, [ecx + eax + 0x38]
cmp edx, ebp
jae 0x5afbc4
push edx
mov edx, dword [esp + 0x58]
push edx
push eax
call sub.MSVCR100.dll_memcpy
mov ecx, dword [esp + 0x64]
mov eax, dword [esp + 0x5c]
add esp, 0xc
add dword [eax + 0x28], ecx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x3c
ret
mov edx, dword [esp + 0x54]
push ebp
push edx
push eax
call sub.MSVCR100.dll_memcpy
sub dword [esp + 0x64], ebp
add dword [esp + 0x60], ebp
mov ecx, dword [esp + 0x5c]
movzx eax, byte [ecx + 0x3f]
cdq
shld edx, eax, 8
shl eax, 8
mov ebp, eax
movzx eax, byte [ecx + 0x3e]
mov ecx, edx
cdq
or ebp, eax
or ecx, edx
mov edx, dword [esp + 0x5c]
movzx eax, byte [edx + 0x3d]
shld ecx, ebp, 8
cdq
shl ebp, 8
or ebp, eax
mov eax, dword [esp + 0x5c]
movzx eax, byte [eax + 0x3c]
or ecx, edx
shld ecx, ebp, 8
cdq
or ecx, edx
mov edx, dword [esp + 0x5c]
shl ebp, 8
or ebp, eax
movzx eax, byte [edx + 0x3b]
shld ecx, ebp, 8
cdq
shl ebp, 8
or ebp, eax
mov eax, dword [esp + 0x5c]
movzx eax, byte [eax + 0x3a]
or ecx, edx
shld ecx, ebp, 8
cdq
or ecx, edx
mov edx, dword [esp + 0x5c]
shl ebp, 8
or ebp, eax
movzx eax, byte [edx + 0x39]
shld ecx, ebp, 8
cdq
shl ebp, 8
or eax, ebp
or ecx, edx
mov edx, dword [esp + 0x5c]
mov ebp, ecx
shld ebp, eax, 8
shl eax, 8
mov ecx, eax
movzx eax, byte [edx + 0x38]
cdq
or ecx, eax
mov eax, dword [esp + 0x5c]
xor dword [esp + 0x30], ecx
or ebp, edx
xor dword [esp + 0x34], ebp
add esp, 0xc
cmp dword [eax + 0x30], 0
mov dword [esp + 0x40], ebp
mov ebp, dword [esp + 0x38]
mov dword [esp + 0x3c], ecx
jle 0x5afd62
mov eax, dword [eax + 0x30]
mov dword [esp + 0x10], eax
lea ecx, [ecx]
mov edx, dword [esp + 0x34]
add dword [esp + 0x2c], edx
mov eax, ebp
adc ebx, ebp
shld ebp, edx, 0xd
shl edx, 0xd
shr eax, 0x13
or eax, edx
xor eax, dword [esp + 0x2c]
mov edx, dword [esp + 0x28]
xor ecx, ecx
or ecx, ebp
mov ebp, dword [esp + 0x24]
xor ecx, ebx
add esi, ebp
adc edi, edx
mov dword [esp + 0x34], eax
mov eax, edx
shld edx, ebp, 0x10
shr eax, 0x10
shl ebp, 0x10
or eax, ebp
mov dword [esp + 0x38], ecx
xor ecx, ecx
or ecx, edx
xor edx, edx
or edx, dword [esp + 0x2c]
xor ecx, edi
xor ebp, ebp
xor eax, esi
or ebx, ebp
add ebx, eax
adc edx, ecx
mov dword [esp + 0x2c], ebx
mov ebx, edx
mov edx, ecx
shld ecx, eax, 0x15
shr edx, 0xb
shl eax, 0x15
or edx, eax
xor edx, dword [esp + 0x2c]
mov eax, dword [esp + 0x34]
or ebp, ecx
mov ecx, dword [esp + 0x38]
xor ebp, ebx
add esi, eax
adc edi, ecx
mov dword [esp + 0x24], edx
mov edx, ecx
shld ecx, eax, 0x11
mov dword [esp + 0x28], ebp
xor ebp, ebp
shl eax, 0x11
shr edx, 0xf
or edx, eax
or ebp, ecx
xor ebp, edi
xor ecx, ecx
xor eax, eax
or edi, ecx
xor edx, esi
or eax, esi
dec dword [esp + 0x10]
mov esi, edi
mov dword [esp + 0x34], edx
mov dword [esp + 0x38], ebp
mov edi, eax
jne 0x5afca0
mov ecx, dword [esp + 0x3c]
xor dword [esp + 0x2c], ecx
xor ebx, dword [esp + 0x40]
mov edx, dword [esp + 0x58]
mov eax, dword [esp + 0x50]
mov ecx, edx
mov edx, dword [esp + 0x54]
and ecx, 7
sub edx, ecx
add edx, dword [esp + 0x58]
mov dword [esp + 0x18], ecx
mov ecx, dword [esp + 0x54]
mov dword [esp + 0x14], edx
cmp ecx, edx
je 0x5aff72
mov edx, dword [eax + 0x30]
add ecx, 6
mov dword [esp + 0x1c], edx
mov dword [esp + 0x58], ecx
jmp 0x5afda9
mov ecx, dword [esp + 0x58]
movzx eax, byte [ecx + 1]
cdq
shld edx, eax, 8
shl eax, 8
mov ebp, eax
movzx eax, byte [ecx]
mov ecx, edx
cdq
or ebp, eax
or ecx, edx
mov edx, dword [esp + 0x58]
movzx eax, byte [edx - 1]
shld ecx, ebp, 8
cdq
shl ebp, 8
or ebp, eax
mov eax, dword [esp + 0x58]
movzx eax, byte [eax - 2]
or ecx, edx
shld ecx, ebp, 8
cdq
or ecx, edx
mov edx, dword [esp + 0x58]
shl ebp, 8
or ebp, eax
movzx eax, byte [edx - 3]
shld ecx, ebp, 8
cdq
shl ebp, 8
or ebp, eax
mov eax, dword [esp + 0x58]
movzx eax, byte [eax - 4]
or ecx, edx
shld ecx, ebp, 8
cdq
or ecx, edx
mov edx, dword [esp + 0x58]
shl ebp, 8
or ebp, eax
movzx eax, byte [edx - 5]
shld ecx, ebp, 8
cdq
shl ebp, 8
or eax, ebp
or ecx, edx
mov edx, dword [esp + 0x58]
mov ebp, ecx
shld ebp, eax, 8
shl eax, 8
mov ecx, eax
movzx eax, byte [edx - 6]
cdq
or ebp, edx
xor dword [esp + 0x28], ebp
or ecx, eax
xor dword [esp + 0x24], ecx
cmp dword [esp + 0x1c], 0
mov dword [esp + 0x40], ebp
mov ebp, dword [esp + 0x38]
mov dword [esp + 0x3c], ecx
jle 0x5aff4c
mov eax, dword [esp + 0x50]
mov ecx, dword [eax + 0x30]
mov dword [esp + 0x10], ecx
jmp 0x5afe70
mov edx, dword [esp + 0x34]
add dword [esp + 0x2c], edx
mov eax, ebp
mov dword [esp + 0x48], 0
adc ebx, ebp
shld ebp, edx, 0xd
shl edx, 0xd
xor ecx, ecx
or ecx, ebp
mov ebp, dword [esp + 0x24]
xor ecx, ebx
shr eax, 0x13
or eax, edx
xor eax, dword [esp + 0x2c]
mov edx, dword [esp + 0x28]
add esi, ebp
adc edi, edx
mov dword [esp + 0x38], ecx
mov ecx, edx
shld edx, ebp, 0x10
mov dword [esp + 0x20], edx
mov edx, dword [esp + 0x48]
or edx, dword [esp + 0x20]
shl ebp, 0x10
xor edx, edi
shr ecx, 0x10
or ecx, ebp
xor ebp, ebp
or ebp, dword [esp + 0x2c]
xor ecx, esi
mov dword [esp + 0x28], edx
xor edx, edx
or ebx, edx
mov edx, dword [esp + 0x28]
add ebx, ecx
adc ebp, edx
mov dword [esp + 0x30], ebp
mov ebp, edx
shld edx, ecx, 0x15
mov dword [esp + 0x2c], ebx
shl ecx, 0x15
shr ebp, 0xb
or ebp, ecx
xor ebp, dword [esp + 0x2c]
xor ebx, ebx
or ebx, edx
mov ecx, ebx
mov ebx, dword [esp + 0x30]
xor ecx, ebx
add esi, eax
mov dword [esp + 0x28], ecx
mov ecx, dword [esp + 0x38]
adc edi, ecx
mov edx, ecx
shld ecx, eax, 0x11
mov dword [esp + 0x24], ebp
xor ebp, ebp
shl eax, 0x11
shr edx, 0xf
or edx, eax
or ebp, ecx
xor ebp, edi
xor ecx, ecx
xor eax, eax
or edi, ecx
xor edx, esi
or eax, esi
dec dword [esp + 0x10]
mov esi, edi
mov dword [esp + 0x34], edx
mov dword [esp + 0x38], ebp
mov edi, eax
jne 0x5afe70
mov ecx, dword [esp + 0x3c]
mov eax, dword [esp + 0x58]
mov edx, dword [esp + 0x14]
xor dword [esp + 0x2c], ecx
xor ebx, dword [esp + 0x40]
add eax, 8
mov dword [esp + 0x58], eax
add eax, 0xfffffffa
cmp eax, edx
jne 0x5afda5
mov eax, dword [esp + 0x50]
mov ecx, dword [esp + 0x18]
test ecx, ecx
je 0x5aff8c
push ecx
push edx
add eax, 0x38
push eax
call sub.MSVCR100.dll_memcpy
mov eax, dword [esp + 0x5c]
add esp, 0xc
mov edx, dword [esp + 0x18]
mov ecx, dword [esp + 0x2c]
mov dword [eax + 0x28], edx
mov edx, dword [esp + 0x34]
mov dword [eax + 0x1c], edi
pop edi
mov dword [eax + 0x18], esi
pop esi
mov dword [eax + 8], ecx
mov ecx, dword [esp + 0x1c]
mov dword [eax + 0x10], edx
mov edx, dword [esp + 0x20]
mov dword [eax + 0x14], ebp
pop ebp
mov dword [eax + 0xc], ebx
mov dword [eax + 0x20], ecx
mov dword [eax + 0x24], edx
pop ebx
add esp, 0x3c
ret