Function at 0x4015c0
Capabilities:
Encode data using xor

Disassembly:
push ebp
lea ebp, [eax + 0x28]
push edi
mov edi, eax
push esi
push ebx
sub esp, 0x34
mov ebx, dword [edi]
mov esi, dword [edi + 4]
mov dword [esp + 0x1c], eax
mov eax, dword [eax + 0x48]
mov edx, dword [edi + 0x1c]
mov dword [esp + 0x28], ebx
add eax, ebp
mov dword [esp + 0x2c], esi
mov dword [esp + 0x18], eax
mov eax, dword [edi + 0x18]
mov dword [esp + 4], edx
mov dword [esp], eax
mov eax, 0x1f
cmp eax, ebx
mov eax, 0
sbb eax, esi
jae 0x401a10
mov ebx, edi
mov esi, dword [edi + 8]
mov edi, dword [edi + 0xc]
mov ecx, dword [ebx + 0x14]
mov edx, dword [ebx + 0x10]
imul eax, esi, 0xc2b2ae3d
mov dword [esp + 0xc], ecx
mov ecx, dword [ebx + 0x20]
mov dword [esp + 8], edx
mov ebx, dword [ebx + 0x24]
mov dword [esp + 0x10], ecx
imul ecx, edi, 0x27d4eb4f
mov dword [esp + 0x14], ebx
mov ebx, dword [esp + 0xc]
add ecx, eax
mov eax, 0x27d4eb4f
mul esi
add edx, ecx
mov ecx, edx
mov edx, eax
shld edx, ecx, 0x1f
shld ecx, eax, 0x1f
mov dword [esp + 0x24], ecx
mov ecx, esi
shld esi, edi, 1
shld edi, ecx, 1
mov ecx, dword [esp + 8]
mov eax, esi
mov dword [esp + 0x20], edx
mov edx, dword [esp + 4]
mov esi, ecx
shld ecx, ebx, 7
shld ebx, esi, 7
add ecx, eax
mov eax, dword [esp]
adc ebx, edi
mov esi, eax
shld eax, edx, 0xc
shld edx, esi, 0xc
add eax, ecx
mov ecx, dword [esp + 0x10]
adc edx, ebx
mov ebx, dword [esp + 0x14]
mov esi, ecx
mov edi, edx
mov edx, dword [esp + 0x24]
shld ecx, ebx, 0x12
shld ebx, esi, 0x12
mov esi, eax
add esi, ecx
adc edi, ebx
imul eax, dword [esp + 0x20], 0x9e3779b1
mov ebx, 0x85ebca87
imul ecx, edx, 0x85ebca87
add ecx, eax
mov eax, dword [esp + 0x20]
mul ebx
add edx, ecx
xor esi, eax
xor edi, edx
imul edx, esi, 0x9e3779b1
mov eax, esi
imul ecx, edi, 0x85ebca87
add ecx, edx
mul ebx
mov edi, edx
mov edx, dword [esp + 0xc]
mov esi, eax
add edi, ecx
imul eax, dword [esp + 8], 0xc2b2ae3d
imul ecx, edx, 0x27d4eb4f
add ecx, eax
mov eax, 0x27d4eb4f
mul dword [esp + 8]
add edx, ecx
mov ecx, eax
shld eax, edx, 0x1f
shld edx, ecx, 0x1f
add esi, 0xc2b2ae63
adc edi, 0x85ebca77
mov dword [esp + 8], eax
imul ecx, edx, 0x85ebca87
mov eax, dword [esp + 8]
mov dword [esp + 0xc], edx
imul edx, dword [esp + 8], 0x9e3779b1
add ecx, edx
mul ebx
add edx, ecx
xor esi, eax
xor edi, edx
imul edx, esi, 0x9e3779b1
mov eax, esi
imul ecx, edi, 0x85ebca87
add ecx, edx
mul ebx
mov edi, edx
mov edx, dword [esp + 4]
mov esi, eax
add edi, ecx
imul eax, dword [esp], 0xc2b2ae3d
imul ecx, edx, 0x27d4eb4f
add ecx, eax
mov eax, 0x27d4eb4f
mul dword [esp]
add edx, ecx
mov ecx, eax
shld eax, edx, 0x1f
shld edx, ecx, 0x1f
add esi, 0xc2b2ae63
adc edi, 0x85ebca77
mov dword [esp], eax
imul ecx, edx, 0x85ebca87
imul edx, dword [esp], 0x9e3779b1
mov eax, dword [esp]
add ecx, edx
mul ebx
add edx, ecx
xor esi, eax
xor edi, edx
imul edx, esi, 0x9e3779b1
mov eax, esi
imul ecx, edi, 0x85ebca87
add ecx, edx
mul ebx
mov edi, edx
mov edx, dword [esp + 0x14]
mov esi, eax
add edi, ecx
imul eax, dword [esp + 0x10], 0xc2b2ae3d
imul ecx, edx, 0x27d4eb4f
add ecx, eax
mov eax, 0x27d4eb4f
mul dword [esp + 0x10]
add edx, ecx
mov ecx, eax
shld eax, edx, 0x1f
shld edx, ecx, 0x1f
add esi, 0xc2b2ae63
adc edi, 0x85ebca77
mov dword [esp], eax
imul ecx, edx, 0x85ebca87
mov eax, dword [esp]
imul edx, dword [esp], 0x9e3779b1
add ecx, edx
mul ebx
add edx, ecx
xor eax, esi
xor edx, edi
mov dword [esp], eax
mov eax, dword [esp]
imul esi, edx, 0x85ebca87
mov dword [esp + 4], edx
imul edx, dword [esp], 0x9e3779b1
add esi, edx
mul ebx
add edx, esi
add eax, 0xc2b2ae63
adc edx, 0x85ebca77
mov ecx, eax
mov ebx, edx
mov eax, dword [esp + 0x1c]
add ecx, dword [esp + 0x28]
adc ebx, dword [esp + 0x2c]
lea edi, [eax + 0x30]
cmp dword [esp + 0x18], edi
jb 0x4018f4
mov dword [esp + 8], edi
mov ebp, 0x85ebca87
lea esi, [esi]
mov eax, dword [edi - 8]
imul esi, dword [edi - 4], 0x27d4eb4f
imul edx, eax, 0xc2b2ae3d
add esi, edx
mov edx, 0x27d4eb4f
mul edx
add edx, esi
mov esi, eax
shld eax, edx, 0x1f
shld edx, esi, 0x1f
imul esi, edx, 0x85ebca87
mov dword [esp], eax
mov eax, dword [esp]
mov dword [esp + 4], edx
imul edx, dword [esp], 0x9e3779b1
add esi, edx
mul ebp
add edx, esi
xor ecx, eax
xor ebx, edx
mov eax, ecx
shld ecx, ebx, 0x1b
shld ebx, eax, 0x1b
imul esi, ebx, 0x85ebca87
imul eax, ecx, 0x9e3779b1
add esi, eax
mov eax, ecx
mul ebp
mov ecx, eax
mov ebx, edx
add ebx, esi
add ecx, 0xc2b2ae63
adc ebx, 0x85ebca77
add edi, 8
cmp dword [esp + 0x18], edi
jae 0x401860
mov eax, dword [esp + 0x18]
mov edx, dword [esp + 0x1c]
mov edi, dword [esp + 8]
sub eax, edx
sub eax, 0x30
and eax, 0xfffffff8
lea ebp, [edi + eax]
lea esi, [ebp + 4]
cmp dword [esp + 0x18], esi
jb 0x401954
mov eax, dword [ebp]
xor edx, edx
imul edi, dword [ebp], 0x9e3779b1
mov ebp, esi
mov dword [esp + 4], edx
mov edx, 0x85ebca87
mov dword [esp], eax
mov eax, dword [esp]
mul edx
add edx, edi
xor eax, ecx
xor edx, ebx
mov ecx, eax
shld eax, edx, 0x17
shld edx, ecx, 0x17
imul ecx, edx, 0x27d4eb4f
mov edi, eax
imul edx, eax, 0xc2b2ae3d
mov eax, 0x27d4eb4f
add ecx, edx
mul edi
add edx, ecx
add eax, 0x9e3779f9
adc edx, 0x165667b1
mov ecx, eax
mov ebx, edx
mov eax, dword [esp + 0x18]
cmp ebp, eax
jae 0x4019b2
mov edi, 0x85ebca87
lea esi, cs:[esi]
lea esi, [esi]
movzx eax, byte [ebp]
mov edx, 0x165667c5
add ebp, 1
imul esi, eax, 0x27d4eb2f
mul edx
add edx, esi
xor ecx, eax
xor ebx, edx
mov eax, ecx
shld ecx, ebx, 0xb
shld ebx, eax, 0xb
imul esi, ebx, 0x85ebca87
imul eax, ecx, 0x9e3779b1
add esi, eax
mov eax, ecx
mul edi
mov ebx, edx
mov ecx, eax
add ebx, esi
cmp dword [esp + 0x18], ebp
jne 0x401970
mov eax, ebx
xor edx, edx
add esp, 0x34
shr eax, 1
xor edx, ebx
xor eax, ecx
imul ecx, edx, 0x27d4eb4f
imul edx, eax, 0xc2b2ae3d
mov ebx, eax
mov eax, 0x27d4eb4f
add ecx, edx
mul ebx
add edx, ecx
mov ecx, eax
mov ebx, edx
shrd ecx, edx, 0x1d
shr ebx, 0x1d
xor eax, ecx
xor edx, ebx
mov ebx, eax
imul ecx, edx, 0x9e3779f9
imul edx, eax, 0x165667b1
mov eax, 0x9e3779f9
add ecx, edx
mul ebx
xor ebx, ebx
add edx, ecx
xor eax, edx
xor edx, ebx
pop ebx
pop esi
pop edi
pop ebp
ret
mov ecx, dword [esp]
mov ebx, dword [esp + 4]
add ecx, 0x165667c5
adc ebx, 0x27d4eb2f
jmp 0x40183b