Function at 0x4021e0
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x30
mov edx, dword [esp + 0x44]
mov ecx, dword [edx]
mov eax, dword [edx + 4]
mov dword [esp + 8], ecx
cmp ecx, 0x20
mov dword [esp + 4], eax
sbb eax, 0
mov eax, 0x27d4eb2f
mov ecx, 0x165667c5
mov esi, dword [edx + 0x48]
lea edi, [edx + esi + 0x28]
mov dword [esp], edi
mov dword [esp + 0xc], esi
jb 0x40244a
mov esi, dword [edx + 8]
mov dword [esp + 0x10], esi
mov ebx, dword [edx + 0xc]
mov edx, ebx
shld edx, esi, 1
mov eax, dword [esp + 0x44]
mov edi, dword [eax + 0x10]
mov dword [esp + 0x18], edi
shld esi, ebx, 1
mov ecx, dword [eax + 0x14]
mov dword [esp + 0x1c], ecx
mov eax, ecx
shld eax, edi, 7
shld edi, ecx, 7
add edi, esi
adc eax, edx
mov edx, dword [esp + 0x44]
mov ebp, dword [edx + 0x18]
mov esi, dword [edx + 0x1c]
mov dword [esp + 0x24], esi
mov edx, esi
shld edx, ebp, 0xc
mov dword [esp + 0x20], ebp
shld ebp, esi, 0xc
add ebp, edi
adc edx, eax
mov eax, dword [esp + 0x44]
mov esi, dword [eax + 0x20]
mov eax, dword [eax + 0x24]
mov dword [esp + 0x2c], eax
mov edi, eax
shld edi, esi, 0x12
mov dword [esp + 0x28], esi
shld esi, eax, 0x12
add esi, ebp
mov dword [esp + 0x14], esi
adc edi, edx
mov ecx, dword [esp + 0x10]
mov eax, ecx
mov ebp, 0x27d4eb4f
mul ebp
mov esi, 0xc2b2ae3d
imul ecx, esi
add ecx, edx
imul ebx, ebp
add ebx, ecx
mov ecx, ebx
shld ecx, eax, 0x1f
shld eax, ebx, 0x1f
mov ebx, eax
mov ebp, 0x9e3779b1
imul ebx, ebp
mov esi, 0x85ebca87
mul esi
add edx, ebx
imul ecx, esi
add ecx, edx
xor ecx, edi
xor eax, dword [esp + 0x14]
mov esi, eax
imul esi, ebp
mov edi, 0x85ebca87
mul edi
mov ebx, eax
add edx, esi
imul ecx, edi
add ecx, edx
mov eax, 0xc2b2ae63
add ebx, eax
mov eax, 0x85ebca77
adc ecx, eax
mov esi, dword [esp + 0x18]
mov eax, esi
mov edi, 0x27d4eb4f
mul edi
mov ebp, 0xc2b2ae3d
imul esi, ebp
add esi, edx
mov edx, dword [esp + 0x1c]
imul edx, edi
add edx, esi
mov esi, edx
shld esi, eax, 0x1f
shld eax, edx, 0x1f
mov edi, eax
mov edx, 0x9e3779b1
imul edi, edx
mov ebp, 0x85ebca87
mul ebp
add edx, edi
imul esi, ebp
add esi, edx
xor esi, ecx
xor eax, ebx
mov ecx, eax
mov edx, 0x9e3779b1
imul ecx, edx
mul ebp
mov edi, eax
mov ebx, edx
add ebx, ecx
imul esi, ebp
add ebx, esi
mov eax, 0xc2b2ae63
add edi, eax
mov eax, 0x85ebca77
adc ebx, eax
mov ecx, dword [esp + 0x20]
mov eax, ecx
mov ebp, 0x27d4eb4f
mul ebp
mov esi, 0xc2b2ae3d
imul ecx, esi
add ecx, edx
mov edx, dword [esp + 0x24]
imul edx, ebp
add edx, ecx
mov ecx, edx
shld ecx, eax, 0x1f
shld eax, edx, 0x1f
mov esi, eax
mov edx, 0x9e3779b1
imul esi, edx
mov ebp, 0x9e3779b1
mov edx, 0x85ebca87
mul edx
add edx, esi
mov esi, 0x85ebca87
imul ecx, esi
add ecx, edx
xor ecx, ebx
xor eax, edi
imul ecx, esi
mov ebx, eax
mul esi
mov esi, eax
mov edi, edx
imul ebx, ebp
add edi, ebx
add edi, ecx
mov eax, 0xc2b2ae63
add esi, eax
mov eax, 0x85ebca77
adc edi, eax
mov ecx, dword [esp + 0x28]
mov eax, ecx
mov ebx, 0x27d4eb4f
mul ebx
mov ebp, 0xc2b2ae3d
imul ecx, ebp
add ecx, edx
mov edx, dword [esp + 0x2c]
imul edx, ebx
add edx, ecx
mov ebx, edx
shld ebx, eax, 0x1f
shld eax, edx, 0x1f
mov ecx, eax
mov edx, 0x9e3779b1
imul ecx, edx
mov ebp, 0x85ebca87
mul ebp
add edx, ecx
imul ebx, ebp
add ebx, edx
xor ebx, edi
xor eax, esi
mov ecx, eax
mov edx, 0x9e3779b1
imul ecx, edx
mov edi, 0x85ebca87
mul edi
mov esi, eax
mov ebp, edx
mov edx, dword [esp + 0x44]
add ebp, ecx
imul ebx, edi
add ebp, ebx
mov eax, 0xc2b2ae63
add esi, eax
mov eax, 0x85ebca77
jmp 0x402452
mov esi, dword [edx + 0x18]
add esi, ecx
mov ebp, dword [edx + 0x1c]
adc ebp, eax
mov ecx, dword [esp]
mov eax, dword [esp + 4]
mov edi, dword [esp + 8]
lea ebx, [edx + 0x28]
add esi, edi
adc ebp, eax
lea eax, [edx + 0x30]
cmp eax, ecx
jbe 0x402480
mov eax, ebx
jmp 0x402510
mov dword [esp + 4], esi
mov eax, dword [ebx]
mov ecx, eax
mov esi, 0x27d4eb4f
mul esi
mov edi, eax
mov eax, 0xc2b2ae3d
imul ecx, eax
add ecx, edx
mov eax, dword [ebx + 4]
imul eax, esi
add eax, ecx
mov ecx, eax
shld ecx, edi, 0x1f
shld edi, eax, 0x1f
mov eax, edi
mov edx, 0x85ebca87
mul edx
mov esi, 0x9e3779b1
imul edi, esi
add edi, edx
mov edx, 0x85ebca87
imul ecx, edx
add ecx, edi
xor ecx, ebp
xor eax, dword [esp + 4]
mov ebp, ecx
shld ebp, eax, 0x1b
shld eax, ecx, 0x1b
mov ecx, eax
imul ecx, esi
mov esi, 0x85ebca87
mul esi
add edx, ecx
mov ecx, dword [esp]
imul ebp, esi
add ebp, edx
mov esi, eax
mov eax, 0xc2b2ae63
add esi, eax
mov eax, 0x85ebca77
adc ebp, eax
lea eax, [ebx + 8]
add ebx, 0x10
cmp ebx, ecx
mov ebx, eax
jbe 0x402480
mov edx, 0x85ebca87
lea edi, [eax + 4]
cmp edi, ecx
jbe 0x402520
mov edi, eax
jmp 0x402566
mov eax, dword [eax]
mov ecx, eax
mov ebx, 0x9e3779b1
imul ecx, ebx
mov ebx, 0x9e3779f9
mul edx
add ecx, edx
xor ecx, ebp
xor eax, esi
mov ebp, ecx
shld ebp, eax, 0x17
shld eax, ecx, 0x17
mov ecx, eax
mov edx, 0xc2b2ae3d
imul ecx, edx
mov esi, 0x27d4eb4f
mul esi
add edx, ecx
imul ebp, esi
add ebp, edx
mov esi, eax
add esi, ebx
mov eax, 0x165667b1
adc ebp, eax
mov ecx, dword [esp + 0x44]
cmp edi, dword [esp]
jae 0x402696
mov edx, dword [esp + 0xc]
lea ebx, [edx + ecx]
add ebx, 0x28
mov eax, ebx
sub eax, edi
add ecx, edx
add ecx, 0x27
test al, 1
jne 0x40258e
mov edx, edi
jmp 0x4025e5
movzx eax, byte [edi]
mov dword [esp + 0xc], eax
mov dword [esp], ecx
mov ecx, 0x165667c5
mul ecx
mov dword [esp + 8], edi
mov edi, eax
mov eax, dword [esp + 0xc]
mov ecx, 0x27d4eb2f
imul eax, ecx
add eax, edx
xor eax, ebp
xor edi, esi
mov ebp, eax
shld ebp, edi, 0xb
shld edi, eax, 0xb
mov eax, edi
mov ecx, 0x85ebca87
mul ecx
mov esi, 0x9e3779b1
imul edi, esi
add edx, edi
imul ebp, ecx
mov ecx, dword [esp]
add ebp, edx
mov edx, dword [esp + 8]
lea edi, [edx + 1]
mov esi, eax
cmp ecx, edx
mov edx, 0x27d4eb2f
je 0x402696
mov dword [esp + 4], ebx
nop word cs:[eax + eax]
movzx eax, byte [edi]
mov ecx, eax
imul ecx, edx
mov edx, 0x165667c5
mul edx
add ecx, edx
xor ecx, ebp
xor eax, esi
mov esi, ecx
shld esi, eax, 0xb
shld eax, ecx, 0xb
mov ebx, eax
mov ecx, 0x9e3779b1
imul ebx, ecx
mov ecx, 0x85ebca87
mul ecx
mov ecx, eax
add ebx, edx
mov eax, 0x85ebca87
imul esi, eax
add esi, ebx
movzx eax, byte [edi + 1]
mov ebx, eax
mov edx, 0x27d4eb2f
imul ebx, edx
mov edx, 0x165667c5
mul edx
add ebx, edx
xor ebx, esi
xor eax, ecx
mov ebp, ebx
shld ebp, eax, 0xb
shld eax, ebx, 0xb
mov ebx, dword [esp + 4]
mov ecx, eax
mov edx, 0x85ebca87
mul edx
mov esi, 0x9e3779b1
imul ecx, esi
add edx, ecx
mov ecx, 0x85ebca87
imul ebp, ecx
add ebp, edx
mov edx, 0x27d4eb2f
add edi, 2
mov esi, eax
cmp edi, ebx
jne 0x402600
mov eax, ebp
shr eax, 1
xor eax, esi
mov ecx, 0xc2b2ae3d
imul ecx, eax
mov ebx, 0x27d4eb4f
mul ebx
mov edi, eax
mov esi, edx
imul ebp, ebx
add esi, ebp
add esi, ecx
mov eax, esi
shld eax, edi, 3
mov ecx, esi
shr ecx, 0x1d
xor esi, ecx
xor edi, eax
mov ecx, 0x9e3779f9
imul esi, ecx
mov eax, edi
mul ecx
mov ecx, 0x165667b1
imul ecx, edi
add edx, esi
add edx, ecx
xor eax, edx
add esp, 0x30
pop esi
pop edi
pop ebx
pop ebp
ret