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 ecx, dword [eax]
mov esi, dword [eax + 4]
push 0x1d
push ecx
call fcn.0043f703
push 0x1d
push esi
mov dword [ebp - 8], eax
call fcn.0043f703
add esp, 0x10
cmp dword [ebp + 0x10], 0
mov dword [ebp - 4], eax
mov eax, dword [ebp + 0xc]
je 0x401154
push 0x3f
lea ebx, [eax + 8]
mov dword [ebp + 0xc], 8
pop esi
mov eax, dword [ebx - 4]
mov edi, dword [ebx - 8]
xor eax, dword [ebp - 8]
xor edi, dword [ebp - 8]
push 4
push eax
call fcn.0043f703
mov ecx, eax
mov edx, eax
shr ecx, 0x12
and ecx, esi
push 4
shr edx, 0xa
mov ecx, dword [ecx*4 + 0x4486c0]
and edx, esi
xor ecx, dword [edx*4 + 0x4484c0]
mov edx, eax
shr edx, 2
and edx, esi
shr eax, 0x1a
xor ecx, dword [edx*4 + 0x4482c0]
mov edx, edi
shr edx, 0x12
and edx, esi
xor ecx, dword [edx*4 + 0x4485c0]
mov edx, edi
shr edx, 0xa
and edx, esi
xor ecx, dword [edx*4 + 0x4483c0]
mov edx, edi
shr edx, 2
and edx, esi
shr edi, 0x1a
xor ecx, dword [edx*4 + 0x4481c0]
xor ecx, dword [eax*4 + 0x4488c0]
mov eax, dword [ebx + 4]
xor ecx, dword [edi*4 + 0x4487c0]
mov edi, dword [ebx]
xor dword [ebp - 4], ecx
xor eax, dword [ebp - 4]
xor edi, dword [ebp - 4]
push eax
call fcn.0043f703
mov ecx, eax
mov edx, eax
shr ecx, 0x12
and ecx, esi
add esp, 0x10
shr edx, 0xa
mov ecx, dword [ecx*4 + 0x4486c0]
and edx, esi
add ebx, 0x10
xor ecx, dword [edx*4 + 0x4484c0]
mov edx, eax
shr edx, 2
and edx, esi
shr eax, 0x1a
xor ecx, dword [edx*4 + 0x4482c0]
mov edx, edi
shr edx, 0x12
and edx, esi
xor ecx, dword [edx*4 + 0x4485c0]
mov edx, edi
shr edx, 0xa
and edx, esi
xor ecx, dword [edx*4 + 0x4483c0]
mov edx, edi
shr edx, 2
and edx, esi
shr edi, 0x1a
xor ecx, dword [edx*4 + 0x4481c0]
xor ecx, dword [eax*4 + 0x4488c0]
xor ecx, dword [edi*4 + 0x4487c0]
xor dword [ebp - 8], ecx
dec dword [ebp + 0xc]
jne 0x401043
jmp 0x40126d
push 0x3f
lea ebx, [eax + 0x70]
mov dword [ebp + 0xc], 8
pop esi
mov eax, dword [ebx + 0xc]
mov edi, dword [ebx + 8]
xor eax, dword [ebp - 8]
xor edi, dword [ebp - 8]
push 4
push eax
call fcn.0043f703
mov ecx, eax
mov edx, eax
shr ecx, 0x12
and ecx, esi
push 4
shr edx, 0xa
mov ecx, dword [ecx*4 + 0x4486c0]
and edx, esi
xor ecx, dword [edx*4 + 0x4484c0]
mov edx, eax
shr edx, 2
and edx, esi
shr eax, 0x1a
xor ecx, dword [edx*4 + 0x4482c0]
mov edx, edi
shr edx, 0x12
and edx, esi
xor ecx, dword [edx*4 + 0x4485c0]
mov edx, edi
shr edx, 0xa
and edx, esi
xor ecx, dword [edx*4 + 0x4483c0]
mov edx, edi
shr edx, 2
and edx, esi
shr edi, 0x1a
xor ecx, dword [edx*4 + 0x4481c0]
xor ecx, dword [eax*4 + 0x4488c0]
mov eax, dword [ebx + 4]
xor ecx, dword [edi*4 + 0x4487c0]
mov edi, dword [ebx]
xor dword [ebp - 4], ecx
xor eax, dword [ebp - 4]
xor edi, dword [ebp - 4]
push eax
call fcn.0043f703
mov ecx, eax
mov edx, eax
shr ecx, 0x12
and ecx, esi
add esp, 0x10
shr edx, 0xa
mov ecx, dword [ecx*4 + 0x4486c0]
and edx, esi
sub ebx, 0x10
xor ecx, dword [edx*4 + 0x4484c0]
mov edx, eax
shr edx, 2
and edx, esi
shr eax, 0x1a
xor ecx, dword [edx*4 + 0x4482c0]
mov edx, edi
shr edx, 0x12
and edx, esi
xor ecx, dword [edx*4 + 0x4485c0]
mov edx, edi
shr edx, 0xa
and edx, esi
xor ecx, dword [edx*4 + 0x4483c0]
mov edx, edi
shr edx, 2
and edx, esi
shr edi, 0x1a
xor ecx, dword [edx*4 + 0x4481c0]
xor ecx, dword [eax*4 + 0x4488c0]
xor ecx, dword [edi*4 + 0x4487c0]
xor dword [ebp - 8], ecx
dec dword [ebp + 0xc]
jne 0x401161
push 3
push dword [ebp - 4]
call fcn.0043f703
mov esi, dword [ebp + 8]
push 3
push dword [ebp - 8]
mov dword [esi], eax
call fcn.0043f703
add esp, 0x10
mov dword [esi + 4], eax
pop edi
pop esi
pop ebx
leave
ret