Function at 0x40f880
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x44
mov ecx, dword [eax + 0x48]
lea edx, [ecx + eax + 0x28]
mov ecx, dword [eax + 4]
push ebx
mov dword [ebp - 4], edx
mov edx, dword [eax]
push esi
push edi
lea ebx, [eax + 0x28]
mov dword [ebp - 0x40], edx
mov dword [ebp - 0x3c], ecx
test ecx, ecx
jne 0x40f8ae
cmp edx, 0x20
jb 0x40faac
mov ecx, dword [eax + 0x10]
mov edx, dword [eax + 8]
mov esi, dword [eax + 0xc]
mov dword [ebp - 0x10], ecx
mov ecx, dword [eax + 0x14]
mov dword [ebp - 0xc], ecx
mov ecx, dword [eax + 0x18]
mov dword [ebp - 0x18], ecx
mov ecx, dword [eax + 0x1c]
mov dword [ebp - 0x14], ecx
mov ecx, dword [eax + 0x20]
mov eax, dword [eax + 0x24]
mov dword [ebp - 0x1c], eax
mov dword [ebp - 0x20], ecx
mov eax, esi
mov ecx, edx
shld ecx, eax, 1
shld eax, edx, 1
mov dword [ebp - 0x34], eax
mov eax, dword [ebp - 0xc]
mov dword [ebp - 0x38], ecx
mov ecx, dword [ebp - 0x10]
mov edi, ecx
shld edi, eax, 7
shld eax, ecx, 7
mov ecx, dword [ebp - 0x18]
mov dword [ebp - 0x2c], eax
mov eax, dword [ebp - 0x14]
mov dword [ebp - 0x30], edi
mov edi, ecx
shld edi, eax, 0xc
shld eax, ecx, 0xc
mov ecx, dword [ebp - 0x1c]
mov dword [ebp - 0x24], eax
mov dword [ebp - 0x28], edi
mov edi, dword [ebp - 0x20]
mov eax, edi
shld eax, ecx, 0x12
shld ecx, edi, 0x12
add eax, dword [ebp - 0x28]
push 0xc2b2ae3d
adc ecx, dword [ebp - 0x24]
add eax, dword [ebp - 0x30]
push 0x27d4eb4f
adc ecx, dword [ebp - 0x2c]
add eax, dword [ebp - 0x38]
push esi
adc ecx, dword [ebp - 0x34]
push edx
mov edi, eax
mov dword [ebp - 0x34], ecx
call fcn.004a1fa0
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.004a1fa0
xor edx, dword [ebp - 0x34]
push 0x9e3779b1
push 0x85ebca87
xor eax, edi
push edx
push eax
call fcn.004a1fa0
mov ecx, dword [ebp - 0xc]
push 0xc2b2ae3d
push 0x27d4eb4f
mov edi, edx
mov edx, dword [ebp - 0x10]
mov esi, eax
push ecx
add esi, 0xc2b2ae63
push edx
adc edi, 0x85ebca77
call fcn.004a1fa0
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.004a1fa0
push 0x9e3779b1
push 0x85ebca87
xor edx, edi
xor eax, esi
push edx
push eax
call fcn.004a1fa0
mov ecx, dword [ebp - 0x18]
push 0xc2b2ae3d
mov esi, eax
mov eax, dword [ebp - 0x14]
push 0x27d4eb4f
push eax
mov edi, edx
add esi, 0xc2b2ae63
push ecx
adc edi, 0x85ebca77
call fcn.004a1fa0
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.004a1fa0
push 0x9e3779b1
push 0x85ebca87
xor edx, edi
xor eax, esi
push edx
push eax
call fcn.004a1fa0
push 0xc2b2ae3d
mov edi, edx
mov edx, dword [ebp - 0x1c]
push 0x27d4eb4f
mov esi, eax
mov eax, dword [ebp - 0x20]
push edx
add esi, 0xc2b2ae63
push eax
adc edi, 0x85ebca77
call fcn.004a1fa0
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.004a1fa0
push 0x9e3779b1
push 0x85ebca87
xor edx, edi
xor eax, esi
push edx
push eax
call fcn.004a1fa0
mov ecx, dword [ebp - 0x3c]
mov edi, eax
mov esi, edx
mov edx, dword [ebp - 0x40]
add edi, 0xc2b2ae63
adc esi, 0x85ebca77
jmp 0x40fabe
mov edi, dword [eax + 0x18]
mov esi, dword [eax + 0x1c]
add edi, 0x165667c5
adc esi, 0x27d4eb2f
add edi, edx
lea eax, [ebx + 8]
adc esi, ecx
cmp eax, dword [ebp - 4]
ja 0x40fb44
mov dword [ebp - 0xc], eax
lea ecx, [ecx]
mov ecx, dword [ebx + 4]
mov eax, dword [ebx]
push 0xc2b2ae3d
push 0x27d4eb4f
push ecx
push eax
call fcn.004a1fa0
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.004a1fa0
xor eax, edi
xor edx, esi
mov ecx, eax
shld ecx, edx, 0x1b
push 0x9e3779b1
shld edx, eax, 0x1b
push 0x85ebca87
push edx
push ecx
call fcn.004a1fa0
add eax, 0xc2b2ae63
adc edx, 0x85ebca77
mov edi, eax
mov eax, dword [ebp - 0xc]
add eax, 8
add ebx, 8
mov esi, edx
mov dword [ebp - 0xc], eax
cmp eax, dword [ebp - 4]
jbe 0x40fad0
lea eax, [ebx + 4]
mov dword [ebp - 0xc], eax
cmp eax, dword [ebp - 4]
ja 0x40fb94
mov ecx, dword [ebx]
push 0x9e3779b1
push 0x85ebca87
push 0
push ecx
call fcn.004a1fa0
xor eax, edi
xor edx, esi
mov ecx, eax
shld ecx, edx, 0x17
push 0xc2b2ae3d
shld edx, eax, 0x17
push 0x27d4eb4f
push edx
push ecx
call fcn.004a1fa0
mov ebx, dword [ebp - 0xc]
add eax, 0x9e3779f9
adc edx, 0x165667b1
mov edi, eax
mov esi, edx
cmp ebx, dword [ebp - 4]
jae 0x40fbd7
movzx eax, byte [ebx]
push 0x27d4eb2f
cdq
push 0x165667c5
push edx
push eax
call fcn.004a1fa0
xor eax, edi
xor edx, esi
mov ecx, eax
shld ecx, edx, 0xb
push 0x9e3779b1
shld edx, eax, 0xb
push 0x85ebca87
push edx
push ecx
call fcn.004a1fa0
inc ebx
mov edi, eax
mov esi, edx
cmp ebx, dword [ebp - 4]
jb 0x40fb99
push 0xc2b2ae3d
xor eax, eax
mov edx, esi
push 0x27d4eb4f
shr edx, 1
xor eax, esi
xor edx, edi
push eax
push edx
call fcn.004a1fa0
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.004a1fa0
mov ecx, edx
mov esi, eax
mov eax, ecx
pop edi
xor eax, esi
xor edx, edx
pop esi
xor edx, ecx
pop ebx
mov esp, ebp
pop ebp
ret