Function at 0x402d30
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x38
mov eax, dword [section..data]
xor eax, ebp
mov dword [ebp - 8], eax
push ebx
push esi
push edi
push 0x268
mov ebx, ecx
xorps xmm0, xmm0
push 0
push ebx
mov edi, edx
mov dword [ebp - 0x34], ebx
movups xmmword [ebp - 0x18], xmm0
call fcn.004096f0
add esp, 0xc
lea esi, [ebx + 0x148]
cmp dword [0x421e18], 0
jne 0x402d84
or eax, 0xffffffff
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 8]
xor ecx, ebp
call fcn.0040802b
mov esp, ebp
pop ebp
ret
lea eax, [esi + 0xc]
mov dword [esi], 1
push ecx
mov edx, edi
mov dword [esi + 8], eax
mov ecx, esi
mov dword [esi + 4], 0xe
call fcn.00401260
add esp, 4
test eax, eax
jne 0x402f66
lea eax, [ebp - 0x18]
mov ecx, esi
push eax
mov edx, eax
call fcn.004021a0
add esp, 4
test eax, eax
jne 0x402f66
movzx esi, byte [ebp - 0x18]
xor edx, edx
movzx eax, byte [ebp - 0x17]
movzx ecx, byte [ebp - 0x14]
movzx edi, byte [ebp - 0x10]
shl esi, 8
or esi, eax
shl ecx, 8
movzx eax, byte [ebp - 0x16]
shl esi, 8
or esi, eax
shl edi, 8
movzx eax, byte [ebp - 0x15]
shl esi, 8
or esi, eax
mov dword [ebx + 0x98], 0
movzx eax, byte [ebp - 0x13]
or ecx, eax
mov dword [ebx + 0xdc], esi
movzx eax, byte [ebp - 0x12]
shl ecx, 8
or ecx, eax
mov dword [ebx + 0x9c], 0
movzx eax, byte [ebp - 0x11]
shl ecx, 8
or ecx, eax
mov dword [ebx + 0x18], 0
movzx eax, byte [ebp - 0xf]
or edx, ecx
movzx ecx, byte [ebp - 0xc]
or edi, eax
movzx eax, byte [ebp - 0xe]
shl edi, 8
or edi, eax
shl ecx, 8
movzx eax, byte [ebp - 0xd]
shl edi, 8
or edi, eax
mov dword [ebp - 0x20], edx
movzx eax, byte [ebp - 0xb]
xor edx, edx
or ecx, eax
mov dword [ebx + 0x5c], edi
movzx eax, byte [ebp - 0xa]
shl ecx, 8
or ecx, eax
mov dword [ebx + 0x1c], 0
movzx eax, byte [ebp - 9]
shl ecx, 8
or ecx, eax
mov dword [ebp - 0x24], 4
or edx, ecx
mov ecx, dword [ebp - 0x20]
mov dword [ebp - 0x1c], edx
mov dword [ebx + 0x58], edx
mov dword [ebx + 0xd8], ecx
nop dword [eax]
shrd dword [ebp - 0x1c], edi, 1
shl ecx, 0x1f
and edx, 1
shr edi, 1
xor eax, eax
or dword [ebp - 0x1c], eax
or edi, ecx
mov ecx, dword [ebp - 0x20]
shrd ecx, esi, 1
imul edx, edx, 0xe1000000
xor ecx, eax
shr esi, 1
mov eax, dword [ebp - 0x24]
mov dword [ebp - 0x20], ecx
xor esi, edx
mov edx, dword [ebp - 0x1c]
mov dword [ebx + eax*8 + 0x18], edx
mov dword [ebx + eax*8 + 0x1c], edi
mov dword [ebx + eax*8 + 0x98], ecx
mov dword [ebx + eax*8 + 0x9c], esi
shr eax, 1
mov dword [ebp - 0x24], eax
jne 0x402e90
mov ecx, 2
mov dword [ebp - 0x24], ecx
lea edi, [ecx + 0x13]
mov eax, dword [ebx + edi*8 + 4]
lea edi, [ebx + edi*8]
mov edx, dword [edi]
lea esi, [ecx + 3]
mov dword [ebp - 0x1c], eax
lea esi, [ebx + esi*8]
mov eax, dword [esi]
mov dword [ebp - 0x28], eax
mov eax, dword [esi + 4]
mov dword [ebp - 0x20], esi
mov dword [ebp - 0x30], edx
mov dword [ebp - 0x2c], eax
cmp ecx, 1
jle 0x402f5a
add esi, 8
lea eax, [ebx + 0x20]
sub edi, dword [ebp - 0x20]
lea ebx, [ecx - 1]
nop dword [eax]
xor edx, dword [eax + 0x80]
lea eax, [eax + 8]
mov ecx, dword [eax + 0x7c]
lea esi, [esi + 8]
xor ecx, dword [ebp - 0x1c]
mov dword [esi + edi - 8], edx
mov edx, dword [ebp - 0x28]
mov dword [esi + edi - 4], ecx
mov ecx, dword [eax - 4]
xor edx, dword [eax - 8]
xor ecx, dword [ebp - 0x2c]
mov dword [esi - 8], edx
mov edx, dword [ebp - 0x30]
mov dword [esi - 4], ecx
sub ebx, 1
jne 0x402f20
mov ecx, dword [ebp - 0x24]
mov ebx, dword [ebp - 0x34]
add ecx, ecx
mov dword [ebp - 0x24], ecx
cmp ecx, 0x10
jl 0x402ee5
xor eax, eax
mov ecx, dword [ebp - 8]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.0040802b
mov esp, ebp
pop ebp
ret