Function at 0x4021c0
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x1c
push ebx
push ebp
mov ebp, ecx
push esi
push edi
mov dword [esp + 0x14], ebp
mov eax, dword [ebp + 0x48]
lea esi, [ebp + 0x28]
mov edx, dword [ebp + 4]
add eax, 0x28
mov ecx, dword [ebp]
add eax, ebp
mov dword [esp + 0x28], esi
mov dword [esp + 0x1c], eax
test edx, edx
jne 0x40220a
cmp ecx, 0x20
jae 0x40220a
mov ebx, dword [ebp + 0x18]
mov edi, dword [ebp + 0x1c]
add ebx, ecx
adc edi, edx
add ebx, 0x165667c5
adc edi, 0x27d4eb2f
jmp 0x4023ea
mov ebx, dword [ebp + 0x14]
mov edx, dword [ebp + 8]
mov eax, edx
mov ecx, dword [ebp + 0xc]
mov esi, dword [ebp + 0x20]
mov edi, dword [ebp + 0x10]
mov ebp, ecx
shld eax, ecx, 1
mov ecx, dword [esp + 0x14]
shld ebp, edx, 1
shld edi, ebx, 7
mov edx, ebx
mov dword [esp + 0x20], eax
mov eax, dword [ecx + 0x10]
mov ebx, dword [ecx + 0x18]
mov ecx, ebx
shld edx, eax, 7
mov dword [esp + 0x24], ebp
mov ebp, dword [esp + 0x14]
push 0xc2b2ae3d
push 0x27d4eb4f
mov eax, dword [ebp + 0x1c]
push dword [ebp + 0xc]
shld ecx, eax, 0xc
shld eax, ebx, 0xc
push dword [ebp + 8]
mov ebx, esi
mov esi, dword [ebp + 0x24]
shld ebx, esi, 0x12
mov esi, ebp
mov dword [esp + 0x28], ebx
mov ebx, dword [esi + 0x24]
mov esi, dword [ebp + 0x20]
shld ebx, esi, 0x12
add dword [esp + 0x28], ecx
adc ebx, eax
mov eax, dword [esp + 0x28]
add eax, edi
adc ebx, edx
add eax, dword [esp + 0x30]
mov dword [esp + 0x28], eax
adc ebx, dword [esp + 0x34]
call fcn.0041ac10
mov ecx, eax
push 0x9e3779b1
shld ecx, edx, 0x1f
shld edx, eax, 0x1f
push 0x85ebca87
push edx
push ecx
call fcn.0041ac10
xor eax, dword [esp + 0x18]
xor edx, ebx
push 0x9e3779b1
push 0x85ebca87
push edx
push eax
call fcn.0041ac10
push 0xc2b2ae3d
push 0x27d4eb4f
push dword [ebp + 0x14]
mov edi, eax
mov ebx, edx
mov eax, dword [ebp + 0x10]
add edi, 0xc2b2ae63
push eax
adc ebx, 0x85ebca77
call fcn.0041ac10
mov ecx, eax
push 0x9e3779b1
shld ecx, edx, 0x1f
shld edx, eax, 0x1f
push 0x85ebca87
push edx
push ecx
call fcn.0041ac10
push 0x9e3779b1
xor eax, edi
xor edx, ebx
push 0x85ebca87
push edx
push eax
call fcn.0041ac10
push 0xc2b2ae3d
mov edi, eax
mov ebx, edx
mov eax, dword [ebp + 0x1c]
add edi, 0xc2b2ae63
push 0x27d4eb4f
push eax
push dword [ebp + 0x18]
adc ebx, 0x85ebca77
call fcn.0041ac10
mov ecx, eax
push 0x9e3779b1
shld ecx, edx, 0x1f
shld edx, eax, 0x1f
push 0x85ebca87
push edx
push ecx
call fcn.0041ac10
push 0x9e3779b1
push 0x85ebca87
xor edx, ebx
xor eax, edi
push edx
push eax
call fcn.0041ac10
push 0xc2b2ae3d
mov edi, eax
mov ebx, edx
mov eax, dword [ebp + 0x24]
add edi, 0xc2b2ae63
push 0x27d4eb4f
push eax
push esi
adc ebx, 0x85ebca77
call fcn.0041ac10
mov ecx, eax
push 0x9e3779b1
shld ecx, edx, 0x1f
shld edx, eax, 0x1f
push 0x85ebca87
push edx
push ecx
call fcn.0041ac10
push 0x9e3779b1
push 0x85ebca87
xor edx, ebx
xor eax, edi
push edx
push eax
call fcn.0041ac10
mov esi, dword [esp + 0x28]
mov ebx, eax
add ebx, dword [ebp]
mov edi, edx
mov eax, dword [esp + 0x1c]
adc edi, dword [ebp + 4]
add ebx, 0xc2b2ae63
adc edi, 0x85ebca77
add ebp, 0x30
cmp ebp, eax
ja 0x40245d
push 0xc2b2ae3d
push 0x27d4eb4f
push dword [esi + 4]
push dword [esi]
call fcn.0041ac10
mov ecx, eax
push 0x9e3779b1
shld ecx, edx, 0x1f
shld edx, eax, 0x1f
push 0x85ebca87
push edx
push ecx
call fcn.0041ac10
mov ecx, eax
xor edx, edi
xor ecx, ebx
mov eax, ecx
push 0x9e3779b1
shld eax, edx, 0x1b
shld edx, ecx, 0x1b
push 0x85ebca87
push edx
push eax
call fcn.0041ac10
mov ebx, eax
mov edi, edx
add ebx, 0xc2b2ae63
adc edi, 0x85ebca77
add ebp, 8
add esi, 8
cmp ebp, dword [esp + 0x1c]
jbe 0x4023f1
mov ebp, dword [esp + 0x1c]
lea eax, [esi + 4]
mov dword [esp + 0x28], eax
cmp eax, ebp
ja 0x4024b3
mov ecx, dword [esi]
mov eax, 0x9e3779b1
mul ecx
push 0xc2b2ae3d
mov esi, eax
mov eax, 0x85ebca87
mul ecx
push 0x27d4eb4f
add esi, edx
xor eax, ebx
xor esi, edi
mov ecx, eax
shld ecx, esi, 0x17
shld esi, eax, 0x17
push esi
push ecx
call fcn.0041ac10
mov esi, dword [esp + 0x28]
mov ebx, eax
add ebx, 0x9e3779f9
mov edi, edx
adc edi, 0x165667b1
cmp esi, ebp
jae 0x4024f6
movzx eax, byte [esi]
push 0x27d4eb2f
cdq
push 0x165667c5
push edx
push eax
call fcn.0041ac10
mov ecx, eax
xor edx, edi
xor ecx, ebx
mov eax, ecx
push 0x9e3779b1
shld eax, edx, 0xb
shld edx, ecx, 0xb
push 0x85ebca87
push edx
push eax
call fcn.0041ac10
inc esi
mov ebx, eax
mov edi, edx
cmp esi, ebp
jb 0x4024b7
push 0xc2b2ae3d
xor eax, eax
mov ecx, edi
push 0x27d4eb4f
shr ecx, 1
xor eax, edi
xor ecx, ebx
push eax
push ecx
call fcn.0041ac10
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.0041ac10
mov ecx, edx
xor esi, esi
pop edi
xor eax, ecx
xor edx, esi
pop esi
pop ebp
pop ebx
add esp, 0x1c
ret