Function at 0x4103ea
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 8
mov edx, dword [esp + 0x20]
mov dword [esp + 4], edx
add dword [0x456b40], 0x7dffe17f
xor dword [0x4576e8], 0x1ec58db1
mov eax, dword [0x451438]
xor dword [0x457490], eax
mov eax, dword [0x44bc50]
and eax, 0x7aa3b1df
movsx ecx, word [0x43fccc]
xor ecx, eax
xor dword [0x44b408], ecx
lea eax, [edx + 4]
push eax
call sub.msvcrt.dll_malloc
add esp, 4
movsx esi, word [0x444ba2]
lea ecx, [esi - 1]
mov word [0x444ba2], cx
xor esi, 0xd957bad
mov ecx, dword [0x44dae0]
shl ecx, 8
mov edx, 0x3e8b2f60
and edx, dword [0x44988c]
xor edx, ecx
cmp esi, edx
jne 0x410483
mov ecx, dword [0x4487d8]
sar ecx, 5
or ecx, 0xc2e442de
sub dword [0x44b370], ecx
mov ebx, dword [esp + 0x1c]
mov edx, dword [0x44afc0]
mov ecx, 0x2cdb28a3
sub ecx, edx
xor ecx, 0xf7e6
movzx edx, word [0x446ee2]
imul edx, ecx
mov word [0x446ee2], dx
mov dword [esp], eax
jmp 0x41050f
mov dword [esp + 4], ecx
imul ecx, dword [0x454818], 0xe3993e23
mov dword [0x454818], ecx
mov byte [eax], 0
and dword [0x44f508], 0x6ef2e5b8
imul ecx, dword [0x44830c], 0xf8f072d
add ecx, dword [0x452f44]
mov dword [0x4504e8], ecx
mov ebx, dword [eax - 3]
add eax, 0xfffffffd
xor dword [0x44e810], 0xbae3afbe
mov dword [0x456e6c], 0xff9f9e01
mov ecx, dword [0x447ac4]
not ecx
sub dword [0x455954], ecx
mov ebp, eax
imul eax, dword [0x451628], 0x8d12446f
or eax, 0xbb5ba560
imul eax, dword [0x448d68]
mov dword [0x448d68], eax
mov al, byte [ebx + 0x438008]
mov byte [ebp], al
mov eax, dword [0x45542c]
movsx ecx, word [0x442ee8]
shl ecx, 8
sub eax, ecx
imul eax, dword [0x44fba0]
mov dword [0x44fba0], eax
mov eax, dword [0x458398]
mov al, byte [eax + ebx]
xor byte [ebp], al
movsx eax, word [0x443758]
not eax
imul eax, eax, 0x39393717
xor eax, 0xa1b6408f
or dword [0x454b80], eax
mov eax, dword [0x452960]
not eax
imul eax, eax, 0xfdcc21c9
add eax, 0xdf304c40
or dword [0x44ab68], eax
imul eax, dword [0x44fe44], 0x71ca7d6d
mov dword [0x44fe44], eax
mov al, byte [ebx + 0x438009]
mov byte [ebp + 1], al
mov eax, dword [0x452480]
lea ecx, [eax + 1]
mov dword [0x452480], ecx
add eax, 0x94b9585d
cmp eax, 0xa7edc77c
jl 0x4105de
mov eax, dword [0x4565e0]
lea ecx, [eax + 1]
mov dword [0x4565e0], ecx
movsx ecx, word [0x446878]
sub eax, ecx
add dword [0x4492c4], eax
mov eax, dword [0x458398]
mov al, byte [eax + ebx + 1]
xor byte [ebp + 1], al
and dword [0x44d6d4], 0x77a86ca
and dword [0x4529b0], 0x10060745
add ebx, 2
mov dword [0x457dec], 0xd7ffb7b7
movzx esi, word [ebp]
mov eax, dword [0x44b874]
cmp eax, 0xda23d298
jl 0x410626
mov eax, dword [0x44c6cc]
mov word [0x4422c4], ax
lea eax, [ebx + 0x438008]
lea edi, [esi + 3]
push edi
push eax
push ebp
call sub.msvcrt.dll_memcpy
add esp, 0xc
xor word [0x442900], 0xb4f3
mov eax, dword [0x44a354]
cmp eax, 0x2ef97041
je 0x410667
mov eax, dword [0x44a7ec]
shr eax, 1
imul eax, eax, 0x5279e8e0
or eax, 0xcca060f1
and dword [0x44ac10], eax
mov eax, dword [0x44a4cc]
mov eax, dword [0x453d44]
lea ecx, [eax - 1]
mov dword [0x453d44], ecx
add eax, 0x76c0c0af
and dword [0x44e850], eax
mov ecx, dword [0x458398]
mov eax, dword [0x451904]
cmp eax, 0x1cc155fc
je 0x4106a1
add dword [0x454550], 0x96f5b766
lea eax, [ebp + edi]
add ecx, ebx
or dword [0x44b010], 0x42b3ff1f
mov dl, byte [ecx]
xor byte [ebp], dl
add dword [0x453c98], 0x6671ee6f
inc ebp
inc ecx
dec edi
jne 0x4106a7
mov ecx, dword [0x449c00]
dec ecx
mov dword [0x449c00], ecx
xor ecx, 0xe8840132
cmp ecx, 0x80d99b0a
jg 0x4106ee
mov ecx, dword [0x44915c]
sub dword [0x44aebc], ecx
jmp 0x4106f8
xor dword [0x44e470], 0xbd7cf5dd
mov ecx, dword [esp + 4]
sub ecx, esi
jne 0x4104b0
mov eax, dword [0x44c2fc]
lea ecx, [eax + 1]
mov dword [0x44c2fc], ecx
mov ecx, 0x264696da
sub ecx, eax
or dword [0x44f654], ecx
mov eax, dword [esp]
add esp, 8
pop esi
pop edi
pop ebx
pop ebp
ret