Function at 0x5af840
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x3c
mov eax, dword [esp + 0x40]
mov ecx, dword [eax + 0x48]
mov edx, dword [eax]
push ebx
push ebp
lea ebp, [ecx + eax + 0x28]
mov ecx, dword [eax + 4]
push esi
push edi
lea esi, [eax + 0x28]
mov dword [esp + 0x10], ebp
mov dword [esp + 0x3c], edx
mov dword [esp + 0x40], ecx
test ecx, ecx
ja 0x5af873
cmp edx, 0x20
jb 0x5af963
mov edx, dword [eax + 0x14]
mov ecx, dword [eax + 0x18]
mov edi, dword [eax + 8]
mov ebx, dword [eax + 0xc]
mov ebp, dword [eax + 0x10]
mov dword [esp + 0x1c], ecx
mov ecx, dword [eax + 0x20]
mov dword [esp + 0x48], edx
mov edx, dword [eax + 0x1c]
mov dword [esp + 0x14], ecx
mov dword [esp + 0x20], edx
mov edx, dword [eax + 0x24]
mov ecx, ebx
mov eax, edi
shld eax, ecx, 1
shld ecx, edi, 1
mov dword [esp + 0x34], eax
mov dword [esp + 0x38], ecx
mov ecx, dword [esp + 0x48]
mov eax, ebp
shld eax, ecx, 7
shld ecx, ebp, 7
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x18], edx
mov dword [esp + 0x30], ecx
mov ecx, dword [esp + 0x20]
mov edx, eax
shld edx, ecx, 0xc
shld ecx, eax, 0xc
mov eax, dword [esp + 0x14]
mov dword [esp + 0x24], edx
mov edx, dword [esp + 0x18]
mov dword [esp + 0x28], ecx
mov ecx, eax
shld ecx, edx, 0x12
shld edx, eax, 0x12
mov eax, dword [esp + 0x18]
add ecx, dword [esp + 0x24]
push eax
mov eax, dword [esp + 0x18]
adc edx, dword [esp + 0x2c]
add ecx, dword [esp + 0x30]
push eax
mov eax, dword [esp + 0x28]
adc edx, dword [esp + 0x38]
add ecx, dword [esp + 0x3c]
push eax
mov eax, dword [esp + 0x28]
adc edx, dword [esp + 0x44]
push eax
mov eax, dword [esp + 0x58]
push eax
push ebp
push ebx
push edi
push edx
push ecx
call fcn.005af440
add esp, 0x10
push edx
push eax
call fcn.005af440
add esp, 0x10
push edx
push eax
call fcn.005af440
add esp, 0x10
push edx
push eax
call fcn.005af440
mov ebp, dword [esp + 0x20]
mov ecx, dword [esp + 0x50]
mov edi, edx
mov edx, dword [esp + 0x4c]
add esp, 0x10
mov ebx, eax
jmp 0x5af975
mov ebx, dword [eax + 0x18]
mov edi, dword [eax + 0x1c]
add ebx, 0x165667c5
adc edi, 0x27d4eb2f
add ebx, edx
lea eax, [esi + 8]
adc edi, ecx
cmp eax, ebp
ja 0x5af9f5
mov ebp, eax
mov ecx, dword [esi + 4]
mov eax, dword [esi]
push 0xc2b2ae3d
push 0x27d4eb4f
push ecx
push eax
call fcn.005b7010
mov ecx, eax
mov eax, edx
mov edx, ecx
shld edx, eax, 0x1f
push 0x9e3779b1
shld eax, ecx, 0x1f
push 0x85ebca87
push eax
push edx
call fcn.005b7010
xor eax, ebx
xor edx, edi
mov ecx, eax
shld ecx, edx, 0x1b
push 0x9e3779b1
shld edx, eax, 0x1b
push 0x85ebca87
push edx
push ecx
call fcn.005b7010
add eax, 0xc2b2ae63
adc edx, 0x85ebca77
add ebp, 8
add esi, 8
mov ebx, eax
mov edi, edx
cmp ebp, dword [esp + 0x10]
jbe 0x5af982
mov ebp, dword [esp + 0x10]
lea eax, [esi + 4]
mov dword [esp + 0x10], eax
cmp eax, ebp
ja 0x5afa46
mov ecx, dword [esi]
push 0x9e3779b1
push 0x85ebca87
push 0
push ecx
call fcn.005b7010
xor eax, ebx
xor edx, edi
mov ecx, eax
shld ecx, edx, 0x17
push 0xc2b2ae3d
shld edx, eax, 0x17
push 0x27d4eb4f
push edx
push ecx
call fcn.005b7010
mov esi, dword [esp + 0x10]
add eax, 0x9e3779f9
adc edx, 0x165667b1
mov ebx, eax
mov edi, edx
cmp esi, ebp
jae 0x5afa8d
lea ebx, [ebx]
movzx eax, byte [esi]
push 0x27d4eb2f
cdq
push 0x165667c5
push edx
push eax
call fcn.005b7010
xor eax, ebx
xor edx, edi
mov ecx, eax
shld ecx, edx, 0xb
push 0x9e3779b1
shld edx, eax, 0xb
push 0x85ebca87
push edx
push ecx
call fcn.005b7010
inc esi
mov ebx, eax
mov edi, edx
cmp esi, ebp
jb 0x5afa50
push 0xc2b2ae3d
xor eax, eax
mov edx, edi
push 0x27d4eb4f
shr edx, 1
xor eax, edi
xor edx, ebx
push eax
push edx
call fcn.005b7010
mov ecx, eax
mov esi, edx
shrd ecx, esi, 0x1d
push 0x165667b1
shr esi, 0x1d
push 0x9e3779f9
xor esi, edx
xor ecx, eax
push esi
push ecx
call fcn.005b7010
mov ecx, edx
mov esi, eax
pop edi
mov eax, ecx
xor eax, esi
pop esi
xor edx, edx
pop ebp
xor edx, ecx
pop ebx
add esp, 0x3c
ret