Function at 0x402980
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xc
mov eax, dword [ebp + 8]
push ebx
mov ebx, ecx
mov dword [ebp - 8], edx
mov ecx, edx
mov eax, dword [eax]
push esi
push edi
lea edi, [ecx - 0x21524111]
add edi, eax
mov eax, dword [ebp + 0xc]
mov edx, edi
mov esi, edi
mov dword [ebp - 4], edx
add edi, dword [eax]
test bl, 3
jne 0x402abe
cmp ecx, 0xc
jbe switch.0x00402a3f
add ecx, 0xfffffff3
mov eax, 0xaaaaaaab
mul ecx
mov eax, edx
mov edx, esi
shr eax, 3
inc eax
mov dword [ebp - 0xc], eax
add edi, dword [ebx + 8]
mov eax, dword [ebx]
add esi, dword [ebx + 4]
add ebx, 0xc
mov dword [ebp - 4], edi
sub eax, dword [ebp - 4]
add eax, edx
rol edi, 4
mov edx, dword [ebp - 4]
xor edi, eax
add edx, esi
mov eax, edi
sub esi, edi
rol eax, 6
xor eax, esi
add edi, edx
sub edx, eax
mov ecx, eax
rol ecx, 8
add eax, edi
xor ecx, edx
sub edi, ecx
mov edx, ecx
rol edx, 0x10
add ecx, eax
xor edx, edi
mov esi, edx
sub eax, edx
ror esi, 0xd
add edx, ecx
xor esi, eax
sub ecx, esi
mov edi, esi
rol edi, 4
add esi, edx
xor edi, ecx
mov ecx, dword [ebp - 8]
sub ecx, 0xc
sub dword [ebp - 0xc], 1
mov dword [ebp - 8], ecx
jne 0x4029d0
mov dword [ebp - 4], edx
cmp ecx, 0xc
ja 0x402d5f
jmp dword [ecx*4 + 0x402db4]
add edi, dword [ebx + 8]
add esi, dword [ebx + 4]
add edx, dword [ebx]
jmp 0x402d5c
mov eax, dword [ebx + 8]
add esi, dword [ebx + 4]
and eax, 0xffffff
add edi, eax
add edx, dword [ebx]
jmp 0x402d5c
movzx eax, word [ebx + 8]
add esi, dword [ebx + 4]
add edi, eax
add edx, dword [ebx]
jmp 0x402d5c
movzx eax, byte [ebx + 8]
add esi, dword [ebx + 4]
add edi, eax
add edx, dword [ebx]
jmp 0x402d5c
mov eax, dword [ebx + 4]
and eax, 0xffffff
add esi, eax
add edx, dword [ebx]
jmp 0x402d5c
movzx eax, word [ebx + 4]
add esi, eax
add edx, dword [ebx]
jmp 0x402d5c
movzx eax, byte [ebx + 4]
add esi, eax
add edx, dword [ebx]
jmp 0x402d5c
mov eax, dword [ebx]
and eax, 0xffffff
jmp 0x402d5a
test bl, 1
jne 0x402c10
cmp ecx, 0xc
jbe switch.0x00402b74
add ecx, 0xfffffff3
mov eax, 0xaaaaaaab
mul ecx
mov eax, edx
shr eax, 3
inc eax
mov dword [ebp - 0xc], eax
movzx ecx, word [ebx + 6]
movzx edx, word [ebx + 4]
movzx eax, word [ebx]
add edx, esi
movzx esi, word [ebx + 8]
shl ecx, 0x10
add esi, edi
add edx, ecx
movzx ecx, word [ebx + 0xa]
shl ecx, 0x10
add esi, ecx
movzx ecx, word [ebx + 2]
shl ecx, 0x10
mov edi, esi
add ecx, eax
rol edi, 4
sub ecx, esi
add ebx, 0xc
add ecx, dword [ebp - 4]
add esi, edx
xor edi, ecx
sub edx, edi
mov eax, edi
add edi, esi
rol eax, 6
xor eax, edx
sub esi, eax
mov ecx, eax
rol ecx, 8
add eax, edi
xor ecx, esi
sub edi, ecx
mov edx, ecx
rol edx, 0x10
add ecx, eax
xor edx, edi
mov esi, edx
sub eax, edx
ror esi, 0xd
add edx, ecx
xor esi, eax
mov dword [ebp - 4], edx
sub ecx, esi
mov edi, esi
rol edi, 4
add esi, edx
xor edi, ecx
mov ecx, dword [ebp - 8]
sub ecx, 0xc
sub dword [ebp - 0xc], 1
mov dword [ebp - 8], ecx
jne 0x402ae3
cmp ecx, 0xc
ja 0x402d5f
jmp dword [ecx*4 + 0x402de8]
movzx eax, word [ebx + 8]
movzx ecx, word [ebx + 0xa]
add edi, eax
movzx eax, word [ebx + 4]
shl ecx, 0x10
add esi, eax
movzx eax, word [ebx]
add edi, ecx
movzx ecx, word [ebx + 6]
add edx, eax
shl ecx, 0x10
add esi, ecx
movzx ecx, word [ebx + 2]
shl ecx, 0x10
add edx, ecx
jmp 0x402d5c
movzx eax, byte [ebx + 0xa]
shl eax, 0x10
add edi, eax
movzx eax, word [ebx + 8]
add edi, eax
movzx ecx, word [ebx + 6]
movzx eax, word [ebx + 4]
shl ecx, 0x10
add esi, eax
add esi, ecx
movzx ecx, word [ebx + 2]
movzx eax, word [ebx]
shl ecx, 0x10
add eax, edx
add eax, ecx
mov dword [ebp - 4], eax
jmp 0x402d5f
movzx eax, byte [ebx + 8]
jmp 0x402bb9
movzx eax, byte [ebx + 6]
shl eax, 0x10
add esi, eax
movzx eax, word [ebx + 4]
add esi, eax
jmp case.0x402b74.4
movzx eax, byte [ebx + 4]
add esi, eax
jmp case.0x402b74.4
movzx eax, byte [ebx + 2]
shl eax, 0x10
add edx, eax
movzx eax, word [ebx]
jmp 0x402d5a
cmp ecx, 0xc
jbe switch.0x00402cf3
add ecx, 0xfffffff3
mov eax, 0xaaaaaaab
mul ecx
mov eax, edx
shr eax, 3
inc eax
mov dword [ebp - 0xc], eax
nop dword [eax]
movzx ecx, byte [ebx + 7]
movzx eax, byte [ebx + 6]
shl ecx, 8
add ecx, eax
movzx edx, byte [ebx + 8]
movzx eax, byte [ebx + 5]
add edx, edi
shl ecx, 8
add ecx, eax
movzx eax, byte [ebx + 4]
shl ecx, 8
add esi, eax
movzx eax, byte [ebx + 0xa]
add esi, ecx
movzx ecx, byte [ebx + 0xb]
shl ecx, 8
add ecx, eax
movzx eax, byte [ebx + 9]
shl ecx, 8
add ecx, eax
movzx eax, byte [ebx + 2]
shl ecx, 8
add edx, ecx
movzx ecx, byte [ebx + 3]
shl ecx, 8
mov edi, edx
add ecx, eax
rol edi, 4
movzx eax, byte [ebx + 1]
shl ecx, 8
add ecx, eax
movzx eax, byte [ebx]
shl ecx, 8
add ebx, 0xc
add ecx, eax
sub ecx, edx
add edx, esi
add ecx, dword [ebp - 4]
xor edi, ecx
sub esi, edi
mov eax, edi
add edi, edx
rol eax, 6
xor eax, esi
sub edx, eax
mov ecx, eax
rol ecx, 8
add eax, edi
xor ecx, edx
sub edi, ecx
mov edx, ecx
rol edx, 0x10
add ecx, eax
xor edx, edi
mov esi, edx
sub eax, edx
ror esi, 0xd
add edx, ecx
xor esi, eax
mov dword [ebp - 4], edx
sub ecx, esi
mov edi, esi
rol edi, 4
add esi, edx
xor edi, ecx
mov ecx, dword [ebp - 8]
sub ecx, 0xc
sub dword [ebp - 0xc], 1
mov dword [ebp - 8], ecx
jne 0x402c30
cmp ecx, 0xc
ja 0x402d5f
jmp dword [ecx*4 + 0x402e1c]
movzx eax, byte [ebx + 0xb]
shl eax, 0x18
add edi, eax
movzx eax, byte [ebx + 0xa]
shl eax, 0x10
add edi, eax
movzx eax, byte [ebx + 9]
shl eax, 8
add edi, eax
movzx eax, byte [ebx + 8]
add edi, eax
movzx eax, byte [ebx + 7]
shl eax, 0x18
add esi, eax
movzx eax, byte [ebx + 6]
shl eax, 0x10
add esi, eax
movzx eax, byte [ebx + 5]
shl eax, 8
add esi, eax
movzx eax, byte [ebx + 4]
add esi, eax
movzx eax, byte [ebx + 3]
shl eax, 0x18
add edx, eax
movzx eax, byte [ebx + 2]
shl eax, 0x10
add edx, eax
movzx eax, byte [ebx + 1]
shl eax, 8
add edx, eax
movzx eax, byte [ebx]
add edx, eax
mov dword [ebp - 4], edx
xor edi, esi
mov eax, esi
rol eax, 0xe
sub edi, eax
mov eax, edi
mov edx, edi
xor edx, dword [ebp - 4]
rol eax, 0xb
sub edx, eax
xor esi, edx
mov eax, edx
ror eax, 7
sub esi, eax
mov eax, esi
xor edi, esi
rol eax, 0x10
sub edi, eax
mov eax, edi
mov ecx, edi
rol eax, 4
xor ecx, edx
sub ecx, eax
mov eax, ecx
xor esi, ecx
rol eax, 0xe
sub esi, eax
mov eax, esi
xor edi, esi
ror eax, 8
sub edi, eax
mov eax, dword [ebp + 8]
mov dword [eax], edi
mov eax, dword [ebp + 0xc]
pop edi
mov dword [eax], esi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret