Function at 0x4021e0
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x1c
push ebx
push ebp
push esi
push edi
mov edi, ecx
mov dword [esp + 0x14], edi
mov eax, dword [edi + 0x48]
lea esi, [edi + 0x28]
mov ebx, dword [edi + 4]
add eax, 0x28
mov ebp, dword [edi]
add eax, edi
mov dword [esp + 0x28], esi
mov dword [esp + 0x18], eax
test ebx, ebx
jne 0x402225
cmp ebp, 0x20
jae 0x402225
add ebp, dword [edi + 0x18]
adc ebx, dword [edi + 0x1c]
add ebp, 0x165667c5
adc ebx, 0x27d4eb2f
jmp 0x4023f2
mov edx, dword [edi + 8]
mov eax, edx
mov ecx, dword [edi + 0xc]
mov esi, dword [esp + 0x14]
mov ebp, dword [edi + 0x10]
mov ebx, dword [edi + 0x14]
mov edi, ebp
shld eax, ecx, 1
shld edi, ebx, 7
mov dword [esp + 0x20], eax
mov eax, ecx
shld eax, edx, 1
mov edx, ebx
mov dword [esp + 0x1c], edi
mov ebx, dword [esi + 0x18]
mov edi, esi
mov ecx, ebx
mov dword [esp + 0x24], eax
mov eax, dword [esi + 0x1c]
shld edx, ebp, 7
mov ebp, dword [esi + 0x20]
shld ecx, eax, 0xc
shld eax, ebx, 0xc
mov ebx, dword [esi + 0x24]
mov esi, dword [edi + 0x20]
shld ebp, ebx, 0x12
shld ebx, esi, 0x12
add ebp, ecx
mov esi, edi
push 0xc2b2ae3d
adc ebx, eax
add ebp, dword [esp + 0x20]
push 0x27d4eb4f
push dword [esi + 0xc]
adc ebx, edx
add ebp, dword [esp + 0x2c]
push dword [esi + 8]
adc ebx, dword [esp + 0x34]
call fcn.0041cc80
mov ecx, eax
push 0x9e3779b1
shld ecx, edx, 0x1f
shld edx, eax, 0x1f
push 0x85ebca87
push edx
push ecx
call fcn.0041cc80
push 0x9e3779b1
push 0x85ebca87
xor edx, ebx
xor eax, ebp
push edx
push eax
call fcn.0041cc80
push 0xc2b2ae3d
push 0x27d4eb4f
push dword [esi + 0x14]
mov edi, eax
mov ebx, edx
push dword [esi + 0x10]
add edi, 0xc2b2ae63
adc ebx, 0x85ebca77
call fcn.0041cc80
mov ecx, eax
push 0x9e3779b1
shld ecx, edx, 0x1f
shld edx, eax, 0x1f
push 0x85ebca87
push edx
push ecx
call fcn.0041cc80
push 0x9e3779b1
push 0x85ebca87
xor edx, ebx
xor eax, edi
push edx
push eax
call fcn.0041cc80
mov edi, eax
mov ebx, edx
add edi, 0xc2b2ae63
mov eax, dword [esi + 0x1c]
adc ebx, 0x85ebca77
push 0xc2b2ae3d
push 0x27d4eb4f
push eax
push dword [esi + 0x18]
call fcn.0041cc80
mov ecx, eax
push 0x9e3779b1
shld ecx, edx, 0x1f
shld edx, eax, 0x1f
push 0x85ebca87
push edx
push ecx
call fcn.0041cc80
push 0x9e3779b1
push 0x85ebca87
xor edx, ebx
xor eax, edi
push edx
push eax
call fcn.0041cc80
push 0xc2b2ae3d
push 0x27d4eb4f
push dword [esi + 0x24]
mov edi, eax
mov ebx, edx
mov eax, dword [esi + 0x20]
add edi, 0xc2b2ae63
push eax
adc ebx, 0x85ebca77
call fcn.0041cc80
mov ecx, eax
push 0x9e3779b1
shld ecx, edx, 0x1f
shld edx, eax, 0x1f
push 0x85ebca87
push edx
push ecx
call fcn.0041cc80
push 0x9e3779b1
push 0x85ebca87
xor edx, ebx
xor eax, edi
push edx
push eax
call fcn.0041cc80
add eax, dword [esi]
adc edx, dword [esi + 4]
add eax, 0xc2b2ae63
mov esi, dword [esp + 0x28]
mov ebp, eax
mov eax, dword [esp + 0x18]
adc edx, 0x85ebca77
mov ebx, edx
lea edi, [esi + 8]
cmp edi, eax
ja 0x40246c
nop dword [eax]
push 0xc2b2ae3d
push 0x27d4eb4f
push dword [esi + 4]
push dword [esi]
call fcn.0041cc80
mov ecx, eax
push 0x9e3779b1
shld ecx, edx, 0x1f
shld edx, eax, 0x1f
push 0x85ebca87
push edx
push ecx
call fcn.0041cc80
mov ecx, eax
xor edx, ebx
xor ecx, ebp
mov eax, ecx
push 0x9e3779b1
shld eax, edx, 0x1b
shld edx, ecx, 0x1b
push 0x85ebca87
push edx
push eax
call fcn.0041cc80
mov ebp, eax
mov ebx, edx
add ebp, 0xc2b2ae63
adc ebx, 0x85ebca77
add edi, 8
add esi, 8
cmp edi, dword [esp + 0x18]
jbe 0x402400
mov edi, dword [esp + 0x18]
lea eax, [esi + 4]
mov dword [esp + 0x28], eax
cmp eax, edi
ja 0x4024c2
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, ebp
xor esi, ebx
mov ecx, eax
shld ecx, esi, 0x17
shld esi, eax, 0x17
push esi
push ecx
call fcn.0041cc80
mov esi, dword [esp + 0x28]
mov ebp, eax
add ebp, 0x9e3779f9
mov ebx, edx
adc ebx, 0x165667b1
cmp esi, edi
jae 0x402505
movzx eax, byte [esi]
push 0x27d4eb2f
cdq
push 0x165667c5
push edx
push eax
call fcn.0041cc80
mov ecx, eax
xor edx, ebx
xor ecx, ebp
mov eax, ecx
push 0x9e3779b1
shld eax, edx, 0xb
shld edx, ecx, 0xb
push 0x85ebca87
push edx
push eax
call fcn.0041cc80
inc esi
mov ebp, eax
mov ebx, edx
cmp esi, edi
jb 0x4024c6
push 0xc2b2ae3d
xor eax, eax
mov ecx, ebx
push 0x27d4eb4f
shr ecx, 1
xor eax, ebx
xor ecx, ebp
push eax
push ecx
call fcn.0041cc80
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.0041cc80
mov ecx, edx
xor esi, esi
pop edi
xor eax, ecx
xor edx, esi
pop esi
pop ebp
pop ebx
add esp, 0x1c
ret