Function at 0x402370
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x34
mov ebx, dword [esp + 0x48]
mov ecx, dword [ebx]
mov eax, dword [ebx + 4]
mov dword [esp + 0x2c], ecx
cmp ecx, 0x20
mov dword [esp + 0x30], eax
sbb eax, 0
mov eax, 0x27d4eb2f
mov ecx, 0x165667c5
lea edx, [ebx + 0x28]
mov dword [esp + 4], edx
mov edx, dword [ebx + 0x48]
mov dword [esp + 0x28], edx
lea edi, [ebx + edx + 0x28]
mov dword [esp + 8], edi
jb 0x402611
mov eax, dword [ebx + 8]
mov dword [esp + 0x10], eax
mov ecx, dword [ebx + 0xc]
mov edx, dword [ebx + 0x10]
mov dword [esp], edx
mov edx, dword [ebx + 0x14]
mov ebp, ecx
shld ebp, eax, 1
mov edi, eax
shld edi, ecx, 1
mov esi, edx
mov eax, dword [esp]
shld esi, eax, 7
mov dword [esp + 0x14], edx
shld eax, edx, 7
add eax, edi
adc esi, ebp
mov edi, dword [ebx + 0x18]
mov ebp, dword [ebx + 0x1c]
mov dword [esp + 0x1c], ebp
mov edx, ebp
shld edx, edi, 0xc
mov dword [esp + 0x18], edi
shld edi, ebp, 0xc
add edi, eax
adc edx, esi
mov eax, dword [esp + 0x48]
mov esi, dword [eax + 0x20]
mov dword [esp + 0x20], esi
mov eax, dword [esp + 0x48]
mov eax, dword [eax + 0x24]
mov dword [esp + 0x24], eax
mov ebx, eax
shld ebx, esi, 0x12
shld esi, eax, 0x12
add esi, edi
mov dword [esp + 0xc], esi
adc ebx, edx
mov eax, dword [esp + 0x10]
mov esi, eax
mov edi, 0x27d4eb4f
mul edi
mov ebp, 0xc2b2ae3d
imul esi, ebp
add edx, esi
imul ecx, edi
add ecx, edx
mov edi, ecx
shld edi, eax, 0x1f
shrd ecx, eax, 1
mov esi, ecx
mov eax, ecx
mov ecx, 0x85ebca87
mul ecx
mov ecx, eax
mov eax, 0x9e3779b1
imul esi, eax
add edx, esi
mov ebp, 0x85ebca87
imul edi, ebp
add edi, edx
xor ecx, dword [esp + 0xc]
mov eax, ecx
mul ebp
mov esi, eax
xor edi, ebx
mov eax, 0x9e3779b1
imul ecx, eax
add edx, ecx
imul edi, ebp
add edi, edx
mov eax, 0xc2b2ae63
add esi, eax
mov dword [esp + 0xc], esi
mov eax, 0x85ebca77
adc edi, eax
mov eax, dword [esp]
mov ecx, eax
mov ebx, 0x27d4eb4f
mul ebx
mov esi, 0xc2b2ae3d
imul ecx, esi
add edx, ecx
mov ecx, dword [esp + 0x14]
imul ecx, ebx
add ecx, edx
mov esi, ecx
shld esi, eax, 0x1f
shrd ecx, eax, 1
mov ebx, ecx
mov eax, ecx
mov ebp, 0x85ebca87
mul ebp
mov ecx, eax
mov eax, 0x9e3779b1
imul ebx, eax
add edx, ebx
imul esi, ebp
mov ebx, 0x85ebca87
add esi, edx
mov ebp, ecx
xor ebp, dword [esp + 0xc]
mov eax, ebp
mul ebx
mov ebx, eax
mov ecx, edx
xor esi, edi
mov edx, 0x9e3779b1
imul ebp, edx
add ecx, ebp
mov ebp, 0x85ebca87
imul esi, ebp
add ecx, esi
mov eax, 0xc2b2ae63
add ebx, eax
mov dword [esp], ebx
mov eax, 0x85ebca77
adc ecx, eax
mov eax, dword [esp + 0x18]
mov esi, eax
mov ebx, 0x27d4eb4f
mul ebx
mov edi, 0xc2b2ae3d
imul esi, edi
add edx, esi
mov edi, dword [esp + 0x1c]
imul edi, ebx
add edi, edx
mov esi, edi
shld esi, eax, 0x1f
shrd edi, eax, 1
mov ebx, edi
mov eax, edi
mul ebp
mov ebp, 0x85ebca87
mov edi, 0x9e3779b1
imul ebx, edi
add edx, ebx
imul esi, ebp
add esi, edx
xor esi, ecx
xor eax, dword [esp]
mov ecx, 0x85ebca87
imul esi, ecx
mov edi, eax
mov edx, 0x9e3779b1
imul edi, edx
mul ecx
mov ecx, eax
add edx, edi
add edx, esi
mov eax, 0xc2b2ae63
add ecx, eax
mov eax, 0x85ebca77
adc edx, eax
mov dword [esp], edx
mov eax, dword [esp + 0x20]
mov esi, eax
mov ebx, 0x27d4eb4f
mul ebx
mov edi, 0xc2b2ae3d
imul esi, edi
add edx, esi
mov ebp, dword [esp + 0x24]
imul ebp, ebx
add ebp, edx
mov edi, ebp
shld edi, eax, 0x1f
shrd ebp, eax, 1
mov esi, ebp
mov eax, ebp
mov ebp, 0x85ebca87
mul ebp
mov ebx, eax
mov eax, 0x9e3779b1
imul esi, eax
add edx, esi
imul edi, ebp
mov esi, 0x85ebca87
add edi, edx
xor ebx, ecx
mov eax, ebx
mul esi
mov ebp, eax
mov esi, edx
xor edi, dword [esp]
mov ecx, 0x9e3779b1
imul ebx, ecx
add esi, ebx
mov eax, 0x85ebca87
imul edi, eax
add esi, edi
mov edi, dword [esp + 8]
mov eax, 0xc2b2ae63
add ebp, eax
mov eax, 0x85ebca77
jmp 0x402619
mov ebp, dword [ebx + 0x18]
add ebp, ecx
mov esi, dword [ebx + 0x1c]
adc esi, eax
add ebp, dword [esp + 0x2c]
adc esi, dword [esp + 0x30]
mov eax, dword [esp + 0x48]
add eax, 0x30
cmp edi, eax
mov ecx, dword [esp + 4]
jae 0x402640
mov eax, ecx
jmp 0x4026dd
mov dword [esp + 4], ecx
mov edi, dword [ecx]
mov eax, edi
mov edx, 0x27d4eb4f
mul edx
mov ebx, 0xc2b2ae3d
imul edi, ebx
add edx, edi
mov edi, dword [ecx + 4]
mov ecx, 0x27d4eb4f
imul edi, ecx
add edi, edx
mov ecx, edi
shld ecx, eax, 0x1f
shrd edi, eax, 1
mov ebx, edi
mov eax, 0x9e3779b1
imul ebx, eax
mov eax, edi
mov edx, 0x85ebca87
mul edx
mov edi, eax
add edx, ebx
mov ebx, 0x85ebca87
imul ecx, ebx
add ecx, edx
xor ecx, esi
xor edi, ebp
mov esi, ecx
shld esi, edi, 0x1b
shld edi, ecx, 0x1b
mov eax, edi
mul ebx
mov ecx, 0x85ebca87
mov ebx, 0x9e3779b1
imul edi, ebx
add edx, edi
imul esi, ecx
add esi, edx
mov edx, 0xc2b2ae63
mov ecx, 0x85ebca77
mov ebp, eax
add ebp, edx
adc esi, ecx
mov ecx, dword [esp + 4]
lea eax, [ecx + 8]
add ecx, 0x10
cmp ecx, dword [esp + 8]
mov ecx, eax
jbe 0x402640
mov edi, 0x85ebca87
lea ebx, [eax + 4]
cmp ebx, dword [esp + 8]
jbe 0x4026f8
mov ebx, eax
cmp ebx, dword [esp + 8]
jb 0x402746
jmp 0x4027a2
mov eax, dword [eax]
mov ecx, eax
mul edi
mov edi, eax
mov eax, 0x9e3779b1
imul ecx, eax
add edx, ecx
xor edx, esi
xor edi, ebp
mov esi, edx
shld esi, edi, 0x17
shld edi, edx, 0x17
mov eax, edi
mov ecx, 0x27d4eb4f
mul ecx
mov ebp, 0xc2b2ae3d
imul edi, ebp
add edx, edi
imul esi, ecx
mov ecx, 0x165667b1
add esi, edx
mov ebp, eax
mov eax, 0x9e3779f9
add ebp, eax
adc esi, ecx
cmp ebx, dword [esp + 8]
jae 0x4027a2
mov eax, dword [esp + 0x48]
mov ecx, dword [esp + 0x28]
add eax, ecx
add eax, 0x28
mov dword [esp + 4], eax
mov edi, 0x85ebca87
nop dword [eax]
movzx eax, byte [ebx]
mov ecx, eax
mov edx, 0x27d4eb2f
imul ecx, edx
mov edx, 0x165667c5
mul edx
add edx, ecx
xor edx, esi
xor eax, ebp
mov esi, edx
shld esi, eax, 0xb
shld eax, edx, 0xb
mov ecx, eax
mov edx, 0x9e3779b1
imul ecx, edx
mul edi
add edx, ecx
imul esi, edi
add esi, edx
add ebx, 1
mov ebp, eax
cmp dword [esp + 4], ebx
jne 0x402760
mov eax, esi
shr eax, 1
xor eax, ebp
mov edi, 0xc2b2ae3d
imul edi, eax
mov ecx, 0x27d4eb4f
mul ecx
add edx, edi
imul esi, ecx
add esi, edx
mov ecx, esi
shld ecx, eax, 3
mov edi, esi
shr edi, 0x1d
xor edi, esi
xor ecx, eax
mov edx, 0x9e3779f9
imul edi, edx
mov eax, ecx
mul edx
mov esi, 0x165667b1
imul esi, ecx
add edx, esi
add edx, edi
xor eax, edx
add esp, 0x34
pop esi
pop edi
pop ebx
pop ebp
ret