Function at 0x4862d0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x1c
push ebx
push esi
mov esi, ecx
push edi
mov dword [ebp - 4], esi
mov edi, dword [esi + 4]
lea ecx, [esi + 0x28]
add ecx, dword [esi + 0x48]
lea ebx, [esi + 0x28]
mov edx, dword [esi]
mov dword [ebp - 8], edi
mov dword [ebp - 0x1c], ebx
mov dword [ebp - 0xc], ecx
test edi, edi
jne 0x48631a
cmp edx, 0x20
jae 0x48631a
mov edi, dword [esi + 0x18]
mov esi, dword [esi + 0x1c]
add edi, edx
adc esi, dword [ebp - 8]
add edi, 0x165667c5
adc esi, 0x27d4eb2f
jmp 0x4864f5
mov ebx, dword [ebp - 4]
mov ecx, dword [esi + 0xc]
mov edx, dword [esi + 8]
mov eax, edx
mov esi, dword [esi + 0x10]
mov edi, dword [ebx + 0x14]
mov ebx, ecx
shld ebx, edx, 1
shld esi, edi, 7
shld eax, ecx, 1
mov dword [ebp - 0x18], ebx
mov edx, edi
mov ebx, dword [ebp - 4]
mov dword [ebp - 0x14], eax
mov dword [ebp - 0x10], esi
mov esi, ebx
push 0xc2b2ae3d
mov edi, dword [ebx + 0x18]
mov ecx, edi
mov eax, dword [ebx + 0x10]
shld edx, eax, 7
mov eax, dword [ebx + 0x1c]
shld ecx, eax, 0xc
shld eax, edi, 0xc
mov edi, dword [ebx + 0x20]
mov ebx, dword [esi + 0x24]
shld edi, ebx, 0x12
mov ebx, esi
mov dword [ebp - 8], edi
push 0x27d4eb4f
mov edi, dword [ebx + 0x24]
mov ebx, dword [esi + 0x20]
shld edi, ebx, 0x12
add dword [ebp - 8], ecx
mov ebx, esi
adc edi, eax
mov eax, dword [ebp - 8]
add eax, dword [ebp - 0x10]
push dword [ebx + 0xc]
adc edi, edx
add eax, dword [ebp - 0x14]
push dword [ebx + 8]
adc edi, dword [ebp - 0x18]
mov dword [ebp - 8], eax
call fcn.004cb9f0
mov ecx, eax
push 0x9e3779b1
shld ecx, edx, 0x1f
shld edx, eax, 0x1f
push 0x85ebca87
push edx
push ecx
call fcn.004cb9f0
xor eax, dword [ebp - 8]
xor edx, edi
push 0x9e3779b1
push 0x85ebca87
push edx
push eax
call fcn.004cb9f0
push 0xc2b2ae3d
push 0x27d4eb4f
push dword [ebx + 0x14]
mov esi, eax
mov edi, edx
mov eax, dword [ebx + 0x10]
add esi, 0xc2b2ae63
push eax
adc edi, 0x85ebca77
call fcn.004cb9f0
mov ecx, eax
push 0x9e3779b1
shld ecx, edx, 0x1f
shld edx, eax, 0x1f
push 0x85ebca87
push edx
push ecx
call fcn.004cb9f0
xor eax, esi
xor edx, edi
push 0x9e3779b1
push 0x85ebca87
push edx
push eax
call fcn.004cb9f0
push 0xc2b2ae3d
mov esi, eax
mov edi, edx
mov eax, dword [ebx + 0x1c]
add esi, 0xc2b2ae63
push 0x27d4eb4f
push eax
push dword [ebx + 0x18]
adc edi, 0x85ebca77
call fcn.004cb9f0
mov ecx, eax
push 0x9e3779b1
shld ecx, edx, 0x1f
shld edx, eax, 0x1f
push 0x85ebca87
push edx
push ecx
call fcn.004cb9f0
push 0x9e3779b1
push 0x85ebca87
xor edx, edi
xor eax, esi
push edx
push eax
call fcn.004cb9f0
push 0xc2b2ae3d
mov esi, eax
mov edi, edx
mov eax, dword [ebx + 0x24]
add esi, 0xc2b2ae63
push 0x27d4eb4f
push eax
mov eax, dword [ebx + 0x20]
adc edi, 0x85ebca77
push eax
call fcn.004cb9f0
mov ecx, eax
push 0x9e3779b1
shld ecx, edx, 0x1f
shld edx, eax, 0x1f
push 0x85ebca87
push edx
push ecx
call fcn.004cb9f0
push 0x9e3779b1
push 0x85ebca87
xor edx, edi
xor eax, esi
push edx
push eax
call fcn.004cb9f0
mov ecx, dword [ebp - 0xc]
mov edi, eax
add edi, dword [ebx]
mov esi, edx
adc esi, dword [ebx + 4]
add edi, 0xc2b2ae63
mov ebx, dword [ebp - 0x1c]
adc esi, 0x85ebca77
lea eax, [ebx + 8]
mov dword [ebp - 8], edi
mov dword [ebp - 4], eax
cmp eax, ecx
ja 0x486578
push 0xc2b2ae3d
push 0x27d4eb4f
push dword [ebx + 4]
push dword [ebx]
call fcn.004cb9f0
mov ecx, eax
push 0x9e3779b1
shld ecx, edx, 0x1f
shld edx, eax, 0x1f
push 0x85ebca87
push edx
push ecx
call fcn.004cb9f0
mov ecx, eax
xor edx, esi
xor ecx, edi
mov eax, ecx
push 0x9e3779b1
shld eax, edx, 0x1b
shld edx, ecx, 0x1b
push 0x85ebca87
push edx
push eax
call fcn.004cb9f0
mov ecx, dword [ebp - 0xc]
mov edi, eax
mov eax, dword [ebp - 4]
add edi, 0xc2b2ae63
mov esi, edx
adc esi, 0x85ebca77
add eax, 8
add ebx, 8
mov dword [ebp - 4], eax
cmp eax, ecx
jbe 0x486502
mov dword [ebp - 8], edi
lea eax, [ebx + 4]
mov dword [ebp - 0x1c], eax
cmp eax, ecx
ja 0x4865ca
mov eax, 0x9e3779b1
mul dword [ebx]
push 0xc2b2ae3d
mov edi, eax
mov eax, 0x85ebca87
mul dword [ebx]
push 0x27d4eb4f
xor eax, dword [ebp - 8]
add edi, edx
xor edi, esi
mov ecx, eax
shld ecx, edi, 0x17
shld edi, eax, 0x17
push edi
push ecx
call fcn.004cb9f0
mov ebx, dword [ebp - 0x1c]
mov edi, eax
mov ecx, dword [ebp - 0xc]
add edi, 0x9e3779f9
mov esi, edx
adc esi, 0x165667b1
mov eax, ecx
mov dword [ebp - 0xc], 0
sub eax, ebx
xor edx, edx
cmp ebx, ecx
cmova eax, edx
mov dword [ebp - 0x1c], eax
test eax, eax
je 0x48662c
movzx eax, byte [ebx]
push 0x27d4eb2f
cdq
push 0x165667c5
push edx
push eax
call fcn.004cb9f0
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.004cb9f0
mov edi, eax
lea ebx, [ebx + 1]
mov eax, dword [ebp - 0xc]
mov esi, edx
inc eax
mov dword [ebp - 0xc], eax
cmp eax, dword [ebp - 0x1c]
jb 0x4865e3
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.004cb9f0
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.004cb9f0
mov ecx, edx
xor esi, esi
pop edi
xor eax, ecx
xor edx, esi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret