Function at 0x800edb
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x28
push ebx
push ebp
mov ebp, dword [esp + 0x34]
push esi
push edi
mov eax, dword [ebp + 0x48]
lea ebx, [ebp + 0x28]
mov edx, dword [ebp + 4]
add eax, 0x28
mov ecx, dword [ebp]
add eax, ebp
mov dword [esp + 0x14], eax
xor eax, eax
mov dword [esp + 0x30], ecx
mov dword [esp + 0x34], edx
mov dword [esp + 0x2c], ebx
mov dword [esp + 0x18], eax
cmp edx, eax
ja 0x800f2d
cmp ecx, 0x20
jae 0x800f2d
mov edi, dword [ebp + 0x18]
mov esi, dword [ebp + 0x1c]
add edi, 0x165667c5
adc esi, 0x27d4eb2f
jmp 0x801010
mov edi, dword [ebp + 0x14]
mov edx, dword [ebp + 0x1c]
mov ecx, dword [ebp + 0x20]
mov ebx, dword [ebp + 0x10]
mov esi, dword [ebp + 0x18]
mov ebp, dword [ebp + 0x24]
mov dword [esp + 0x1c], ecx
mov ecx, dword [esp + 0x3c]
mov dword [esp + 0x10], ebp
mov ebp, ecx
shld ebx, edi, 7
shld esi, edx, 0xc
mov eax, dword [ecx + 8]
mov ecx, dword [ebp + 0xc]
shld eax, ecx, 1
mov ecx, ebp
mov dword [esp + 0x20], ebx
mov dword [esp + 0x24], eax
mov eax, dword [ecx + 0xc]
mov ecx, dword [ebp + 8]
shld eax, ecx, 1
mov ecx, ebp
mov ebp, dword [esp + 0x10]
mov dword [esp + 0x28], eax
mov eax, dword [ecx + 0x10]
shld edi, eax, 7
mov eax, dword [ecx + 0x18]
mov ecx, dword [esp + 0x1c]
shld edx, eax, 0xc
shld ecx, ebp, 0x12
mov eax, ebp
mov ebp, dword [esp + 0x3c]
mov ebx, dword [ebp + 0x20]
mov ebp, dword [esp + 0x10]
shld eax, ebx, 0x12
mov ebx, dword [esp + 0x3c]
push ebp
mov ebp, dword [ebx + 0x20]
push ebp
mov ebp, ebx
push dword [ebp + 0x1c]
mov ebx, dword [ebp + 0xc]
push dword [ebp + 0x18]
push dword [ebp + 0x14]
push dword [ebp + 0x10]
push ebx
mov ebx, dword [esp + 0x3c]
add ebx, dword [esp + 0x40]
push dword [ebp + 8]
adc edi, dword [esp + 0x48]
add ebx, ecx
adc edi, eax
add ebx, esi
adc edi, edx
push edi
push ebx
call fcn.0080116d
add esp, 0x10
push edx
push eax
call fcn.0080116d
add esp, 0x10
push edx
push eax
call fcn.0080116d
add esp, 0x10
push edx
push eax
call fcn.0080116d
mov ebx, dword [esp + 0x3c]
add esp, 0x10
mov ecx, dword [esp + 0x30]
mov edi, eax
mov esi, edx
xor eax, eax
mov edx, dword [esp + 0x34]
mov ebp, dword [esp + 0x14]
add edi, ecx
lea ecx, [ebx + 8]
adc esi, edx
mov dword [esp + 0x10], ecx
cmp ecx, ebp
ja 0x801078
push dword [ebx + 4]
push dword [ebx]
push eax
push eax
call fcn.00801219
add esp, 0x10
mov ecx, eax
xor ecx, edi
xor edx, esi
mov eax, ecx
shld eax, edx, 0x1b
push 0x9e3779b1
shld edx, ecx, 0x1b
push 0x85ebca87
push edx
push eax
call fcn.00801460
mov edi, eax
mov esi, edx
mov eax, dword [esp + 0x10]
add edi, 0xc2b2ae63
push 0
adc esi, 0x85ebca77
add eax, 8
add ebx, 8
mov dword [esp + 0x14], eax
cmp eax, ebp
pop eax
jbe 0x801023
lea eax, [ebx + 4]
mov dword [esp + 0x34], eax
cmp eax, ebp
ja 0x8010cb
push 0x9e3779b1
push 0x85ebca87
push 0
push dword [ebx]
call fcn.00801460
mov ecx, eax
xor edx, esi
xor ecx, edi
mov eax, ecx
push 0xc2b2ae3d
shld eax, edx, 0x17
shld edx, ecx, 0x17
push 0x27d4eb4f
push edx
push eax
call fcn.00801460
mov ebx, dword [esp + 0x34]
mov edi, eax
add edi, 0x9e3779f9
mov esi, edx
adc esi, 0x165667b1
sub ebp, ebx
xor ecx, ecx
cmp ebx, dword [esp + 0x14]
cmova ebp, ecx
test ebp, ebp
je 0x801122
movzx eax, byte [ebx]
push 0x27d4eb2f
cdq
push 0x165667c5
push edx
push eax
call fcn.00801460
mov ecx, eax
xor edx, esi
xor ecx, edi
mov eax, ecx
push 0x9e3779b1
shld eax, edx, 0xb
shld edx, ecx, 0xb
push 0x85ebca87
push edx
push eax
call fcn.00801460
mov edi, eax
inc ebx
mov eax, dword [esp + 0x18]
mov esi, edx
inc eax
mov dword [esp + 0x18], eax
cmp eax, ebp
jb 0x8010da
push 0xc2b2ae3d
xor eax, eax
mov ecx, esi
push 0x27d4eb4f
shr ecx, 1
xor eax, esi
xor ecx, edi
push eax
push ecx
call fcn.00801460
mov esi, eax
mov ecx, edx
shrd esi, ecx, 0x1d
push 0x165667b1
shr ecx, 0x1d
xor esi, eax
push 0x9e3779f9
xor ecx, edx
push ecx
push esi
call fcn.00801460
mov ecx, edx
xor esi, esi
pop edi
xor eax, ecx
xor edx, esi
pop esi
pop ebp
pop ebx
add esp, 0x28
ret