Function at 0x401000
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ecx
push ecx
mov eax, dword [ebp + 8]
push ebx
push esi
push edi
mov esi, dword [eax + 4]
mov ecx, dword [eax]
mov eax, esi
mov edx, 0xf0f0f0f
shr eax, 4
mov edi, ecx
and eax, edx
and edi, edx
push 0x1d
xor eax, edi
xor ecx, eax
shl eax, 4
xor esi, eax
mov eax, ecx
mov edx, esi
shr eax, 0x10
and edx, 0xffff
xor eax, edx
mov edx, 0x33333333
xor esi, eax
shl eax, 0x10
xor ecx, eax
mov eax, esi
shr eax, 2
mov edi, ecx
and eax, edx
and edi, edx
mov edx, 0xff00ff
xor eax, edi
xor ecx, eax
shl eax, 2
xor esi, eax
mov eax, ecx
shr eax, 8
mov edi, esi
and eax, edx
and edi, edx
xor eax, edi
xor esi, eax
shl eax, 8
xor ecx, eax
mov edi, esi
shr edi, 1
mov eax, 0x55555555
mov edx, ecx
and edi, eax
and edx, eax
xor edi, edx
mov eax, edi
xor eax, ecx
push eax
call fcn.00417468
mov dword [ebp - 8], eax
lea eax, [edi + edi]
xor eax, esi
push 0x1d
push eax
call fcn.00417468
add esp, 0x10
cmp dword [ebp + 0x10], 0
mov dword [ebp - 4], eax
mov eax, dword [ebp + 0xc]
je 0x4012cd
push 0x3f
lea edi, [eax + 8]
mov dword [ebp + 0xc], 4
pop esi
mov eax, dword [edi - 4]
mov ebx, dword [edi - 8]
xor eax, dword [ebp - 8]
xor ebx, dword [ebp - 8]
push 4
push eax
call fcn.00417468
mov ecx, eax
mov edx, eax
shr ecx, 0x12
and ecx, esi
push 4
shr edx, 0xa
mov ecx, dword [ecx*4 + 0x420760]
and edx, esi
xor ecx, dword [edx*4 + 0x420560]
mov edx, eax
shr edx, 2
and edx, esi
shr eax, 0x1a
xor ecx, dword [edx*4 + 0x420360]
mov edx, ebx
shr edx, 0x12
and edx, esi
xor ecx, dword [edx*4 + 0x420660]
mov edx, ebx
shr edx, 0xa
and edx, esi
xor ecx, dword [edx*4 + 0x420460]
mov edx, ebx
shr edx, 2
and edx, esi
shr ebx, 0x1a
xor ecx, dword [edx*4 + 0x420260]
xor ecx, dword [eax*4 + 0x420960]
mov eax, dword [edi + 4]
xor ecx, dword [ebx*4 + 0x420860]
mov ebx, dword [edi]
xor dword [ebp - 4], ecx
xor eax, dword [ebp - 4]
xor ebx, dword [ebp - 4]
push eax
call fcn.00417468
mov ecx, eax
mov edx, eax
shr ecx, 0x12
and ecx, esi
push 4
shr edx, 0xa
mov ecx, dword [ecx*4 + 0x420760]
and edx, esi
xor ecx, dword [edx*4 + 0x420560]
mov edx, eax
shr edx, 2
and edx, esi
shr eax, 0x1a
xor ecx, dword [edx*4 + 0x420360]
mov edx, ebx
shr edx, 0x12
and edx, esi
xor ecx, dword [edx*4 + 0x420660]
mov edx, ebx
shr edx, 0xa
and edx, esi
xor ecx, dword [edx*4 + 0x420460]
mov edx, ebx
shr edx, 2
and edx, esi
shr ebx, 0x1a
xor ecx, dword [edx*4 + 0x420260]
xor ecx, dword [eax*4 + 0x420960]
mov eax, dword [edi + 0xc]
xor ecx, dword [ebx*4 + 0x420860]
mov ebx, dword [edi + 8]
xor dword [ebp - 8], ecx
xor eax, dword [ebp - 8]
xor ebx, dword [ebp - 8]
push eax
call fcn.00417468
mov ecx, eax
shr ecx, 0x12
mov edx, eax
and ecx, esi
shr edx, 0xa
mov ecx, dword [ecx*4 + 0x420760]
and edx, esi
push 4
xor ecx, dword [edx*4 + 0x420560]
mov edx, eax
shr edx, 2
and edx, esi
shr eax, 0x1a
xor ecx, dword [edx*4 + 0x420360]
mov edx, ebx
shr edx, 0x12
and edx, esi
xor ecx, dword [edx*4 + 0x420660]
mov edx, ebx
shr edx, 0xa
and edx, esi
xor ecx, dword [edx*4 + 0x420460]
mov edx, ebx
shr edx, 2
and edx, esi
shr ebx, 0x1a
xor ecx, dword [edx*4 + 0x420260]
xor ecx, dword [eax*4 + 0x420960]
mov eax, dword [edi + 0x14]
xor ecx, dword [ebx*4 + 0x420860]
mov ebx, dword [edi + 0x10]
xor dword [ebp - 4], ecx
xor eax, dword [ebp - 4]
xor ebx, dword [ebp - 4]
push eax
call fcn.00417468
mov ecx, eax
mov edx, eax
shr ecx, 0x12
and ecx, esi
add esp, 0x20
shr edx, 0xa
mov ecx, dword [ecx*4 + 0x420760]
and edx, esi
add edi, 0x20
xor ecx, dword [edx*4 + 0x420560]
mov edx, eax
shr edx, 2
and edx, esi
shr eax, 0x1a
xor ecx, dword [edx*4 + 0x420360]
mov edx, ebx
shr edx, 0x12
and edx, esi
xor ecx, dword [edx*4 + 0x420660]
mov edx, ebx
shr edx, 0xa
and edx, esi
xor ecx, dword [edx*4 + 0x420460]
mov edx, ebx
shr edx, 2
and edx, esi
shr ebx, 0x1a
xor ecx, dword [edx*4 + 0x420260]
xor ecx, dword [eax*4 + 0x420960]
xor ecx, dword [ebx*4 + 0x420860]
xor dword [ebp - 8], ecx
dec dword [ebp + 0xc]
jne 0x4010be
jmp 0x4014e4
push 0x3f
lea edi, [eax + 0x70]
mov dword [ebp + 0xc], 4
pop esi
mov eax, dword [edi + 0xc]
mov ebx, dword [edi + 8]
xor eax, dword [ebp - 8]
xor ebx, dword [ebp - 8]
push 4
push eax
call fcn.00417468
mov ecx, eax
mov edx, eax
shr ecx, 0x12
and ecx, esi
push 4
shr edx, 0xa
mov ecx, dword [ecx*4 + 0x420760]
and edx, esi
xor ecx, dword [edx*4 + 0x420560]
mov edx, eax
shr edx, 2
and edx, esi
shr eax, 0x1a
xor ecx, dword [edx*4 + 0x420360]
mov edx, ebx
shr edx, 0x12
and edx, esi
xor ecx, dword [edx*4 + 0x420660]
mov edx, ebx
shr edx, 0xa
and edx, esi
xor ecx, dword [edx*4 + 0x420460]
mov edx, ebx
shr edx, 2
and edx, esi
shr ebx, 0x1a
xor ecx, dword [edx*4 + 0x420260]
xor ecx, dword [eax*4 + 0x420960]
mov eax, dword [edi + 4]
xor ecx, dword [ebx*4 + 0x420860]
xor dword [ebp - 4], ecx
xor eax, dword [ebp - 4]
mov ebx, dword [ebp - 4]
xor ebx, dword [edi]
push eax
call fcn.00417468
mov ecx, eax
mov edx, eax
shr ecx, 0x12
and ecx, esi
push 4
shr edx, 0xa
mov ecx, dword [ecx*4 + 0x420760]
and edx, esi
xor ecx, dword [edx*4 + 0x420560]
mov edx, eax
shr edx, 2
and edx, esi
shr eax, 0x1a
xor ecx, dword [edx*4 + 0x420360]
mov edx, ebx
shr edx, 0x12
and edx, esi
xor ecx, dword [edx*4 + 0x420660]
mov edx, ebx
shr edx, 0xa
and edx, esi
xor ecx, dword [edx*4 + 0x420460]
mov edx, ebx
shr edx, 2
and edx, esi
shr ebx, 0x1a
xor ecx, dword [edx*4 + 0x420260]
xor ecx, dword [eax*4 + 0x420960]
mov eax, dword [edi - 4]
xor ecx, dword [ebx*4 + 0x420860]
mov ebx, dword [edi - 8]
xor dword [ebp - 8], ecx
xor eax, dword [ebp - 8]
xor ebx, dword [ebp - 8]
push eax
call fcn.00417468
mov ecx, eax
shr ecx, 0x12
mov edx, eax
and ecx, esi
shr edx, 0xa
mov ecx, dword [ecx*4 + 0x420760]
and edx, esi
push 4
xor ecx, dword [edx*4 + 0x420560]
mov edx, eax
shr edx, 2
and edx, esi
shr eax, 0x1a
xor ecx, dword [edx*4 + 0x420360]
mov edx, ebx
shr edx, 0x12
and edx, esi
xor ecx, dword [edx*4 + 0x420660]
mov edx, ebx
shr edx, 0xa
and edx, esi
xor ecx, dword [edx*4 + 0x420460]
mov edx, ebx
shr edx, 2
and edx, esi
shr ebx, 0x1a
xor ecx, dword [edx*4 + 0x420260]
xor ecx, dword [eax*4 + 0x420960]
mov eax, dword [edi - 0xc]
xor ecx, dword [ebx*4 + 0x420860]
mov ebx, dword [edi - 0x10]
xor dword [ebp - 4], ecx
xor eax, dword [ebp - 4]
xor ebx, dword [ebp - 4]
push eax
call fcn.00417468
mov ecx, eax
mov edx, eax
shr ecx, 0x12
and ecx, esi
add esp, 0x20
shr edx, 0xa
mov ecx, dword [ecx*4 + 0x420760]
and edx, esi
sub edi, 0x20
xor ecx, dword [edx*4 + 0x420560]
mov edx, eax
shr edx, 2
and edx, esi
shr eax, 0x1a
xor ecx, dword [edx*4 + 0x420360]
mov edx, ebx
shr edx, 0x12
and edx, esi
xor ecx, dword [edx*4 + 0x420660]
mov edx, ebx
shr edx, 0xa
and edx, esi
xor ecx, dword [edx*4 + 0x420460]
mov edx, ebx
shr edx, 2
and edx, esi
shr ebx, 0x1a
xor ecx, dword [edx*4 + 0x420260]
xor ecx, dword [eax*4 + 0x420960]
xor ecx, dword [ebx*4 + 0x420860]
xor dword [ebp - 8], ecx
dec dword [ebp + 0xc]
jne 0x4012da
push 3
push dword [ebp - 4]
call fcn.00417468
push 3
mov esi, eax
push dword [ebp - 8]
call fcn.00417468
mov ecx, eax
mov edx, 0x55555555
shr ecx, 1
mov edi, esi
and ecx, edx
and edi, edx
mov edx, 0xff00ff
xor ecx, edi
add esp, 0x10
xor esi, ecx
add ecx, ecx
xor eax, ecx
mov ecx, esi
shr ecx, 8
mov edi, eax
and ecx, edx
and edi, edx
mov edx, 0x33333333
xor ecx, edi
xor eax, ecx
shl ecx, 8
xor esi, ecx
mov ecx, eax
shr ecx, 2
mov edi, esi
and ecx, edx
and edi, edx
xor ecx, edi
xor esi, ecx
shl ecx, 2
xor eax, ecx
mov ecx, esi
mov edx, eax
shr ecx, 0x10
and edx, 0xffff
xor ecx, edx
mov edx, 0xf0f0f0f
xor eax, ecx
shl ecx, 0x10
xor esi, ecx
mov ecx, eax
shr ecx, 4
mov edi, esi
and ecx, edx
and edi, edx
mov edx, dword [ebp + 8]
xor ecx, edi
mov edi, ecx
xor edi, esi
shl ecx, 4
mov dword [edx], edi
xor ecx, eax
pop edi
pop esi
mov dword [edx + 4], ecx
pop ebx
leave
ret