Function at 0x401000
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0xa4
push ebx
push ebp
mov al, 0xf8
mov cl, 0xf0
push esi
push edi
mov byte [esp + 0x17], al
mov byte [esp + 0x1b], cl
mov byte [esp + 0x1f], al
mov byte [esp + 0x20], cl
mov byte [esp + 0x23], al
mov ecx, 0x1f
xor eax, eax
lea edi, [esp + 0x35]
mov byte [esp + 0x34], 0
mov dl, 0xf4
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
mov eax, dword [esp + 0xb8]
mov byte [esp + 0x14], 0xf5
cmp eax, 1
mov byte [esp + 0x15], dl
mov byte [esp + 0x16], 0xf7
mov byte [esp + 0x18], 0xfa
mov byte [esp + 0x19], 0xfe
mov byte [esp + 0x1a], 0xef
mov byte [esp + 0x1c], 0xf6
mov byte [esp + 0x1d], dl
mov byte [esp + 0x1e], 0xe7
mov byte [esp + 0x21], 0xee
mov byte [esp + 0x22], 0xe2
je 0x401290
mov esi, dword [esp + 0xbc]
push 0x408080
mov eax, dword [esi + 4]
push eax
call fcn.004017cf
mov ebp, eax
add esp, 8
test ebp, ebp
jne 0x4010b7
push 0x408070
call fcn.0040177e
add esp, 4
or eax, 0xffffffff
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xa4
ret
mov edx, dword [esi + 4]
or ecx, 0xffffffff
mov edi, edx
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
mov ebx, ecx
js 0x4010d9
lea eax, [edx + ebx - 1]
cmp byte [eax], 0x2e
je 0x4010d9
dec ebx
dec eax
test ebx, ebx
jge 0x4010ce
lea ecx, [ebx - 1]
push ecx
push edx
lea edx, [esp + 0x3c]
push edx
call fcn.00401680
mov edi, 0x408064
or ecx, 0xffffffff
xor eax, eax
lea edx, [esp + 0x40]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov edi, edx
mov edx, ecx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, edx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov eax, dword [esp + 0xc8]
mov ecx, edx
and ecx, 3
lea edx, [esp + 0x40]
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [eax + 4]
xor eax, eax
lea edi, [ecx + ebx - 1]
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov ebx, ecx
mov edi, edx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, ebx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, ebx
lea eax, [esp + 0x40]
and ecx, 3
push eax
rep movsb byte es:[edi], byte [esi]
push 0x408060
call fcn.0040177e
lea ecx, [esp + 0x48]
push 0x40805c
push ecx
call fcn.004017cf
mov edi, eax
add esp, 0x1c
test edi, edi
jne 0x40118f
push 0x408070
call fcn.0040177e
add esp, 4
or eax, 0xffffffff
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xa4
ret
push 2
push 0
push ebp
call fcn.004015ea
push ebp
call fcn.00401492
mov esi, eax
add esp, 0x10
mov edx, esi
and edx, 0x8000000f
jns 0x4011b3
dec edx
or edx, 0xfffffff0
inc edx
jne 0x4011e2
push 2
push 0xffffffffffffffe7
push ebp
call fcn.004015ea
push ebp
push 1
lea eax, [esp + 0x24]
push 4
push eax
call fcn.004013aa
mov eax, dword [esp + 0x2c]
add esp, 0x1c
xor eax, 0xe7f4f6f0
cmp eax, esi
mov dword [esp + 0x10], eax
jl 0x4011fd
push 0x408050
call fcn.0040177e
add esp, 4
or eax, 0xffffffff
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xa4
ret
push esi
push 0x408040
call fcn.0040177e
mov ecx, dword [esp + 0x18]
push ecx
push 0x408030
call fcn.0040177e
push 0
push 0
push ebp
call fcn.004015ea
mov eax, dword [esp + 0x2c]
add esp, 0x1c
test eax, eax
jle 0x401290
push ebp
push 0x10
lea edx, [esp + 0x2c]
push 1
push edx
call fcn.004013aa
add esp, 0x10
xor eax, eax
mov cl, byte [esp + eax + 0x14]
mov bl, byte [esp + eax + 0x24]
xor bl, cl
mov byte [esp + eax + 0x24], bl
inc eax
cmp eax, 0x10
jl 0x401240
mov eax, dword [esp + 0x10]
push edi
cmp eax, 0x10
jl 0x401280
push 0x10
lea edx, [esp + 0x2c]
push 1
push edx
call fcn.004012a0
mov eax, dword [esp + 0x20]
add esp, 0x10
sub eax, 0x10
test eax, eax
mov dword [esp + 0x10], eax
jle 0x401290
jmp 0x40122c
push eax
lea eax, [esp + 0x2c]
push 1
push eax
call fcn.004012a0
add esp, 0x10
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0xa4
ret