Function at 0x440c00
Capabilities:
Encode data using xor

Disassembly:
push ebp
push edi
push esi
push ebx
sub esp, 0x14
mov eax, dword [esp + 0x30]
sub eax, 0xb
mov dword [esp + 8], eax
cmp dword [esp + 0x38], eax
jae 0x440c20
mov eax, dword [esp + 0x38]
mov dword [esp + 8], eax
mov eax, dword [esp + 0x2c]
mov dl, byte [eax]
mov al, byte [eax + 1]
cmp dword [esp + 0x28], 1
je 0x440df2
xor eax, 1
or eax, edx
mov edi, eax
and edi, 0xff
cmp dword [esp + 0x30], 2
jbe 0x440ed5
mov eax, dword [esp + 0x2c]
lea esi, [eax + 2]
add eax, dword [esp + 0x30]
mov dword [esp], eax
xor ebp, ebp
xor ecx, ecx
nop
xor eax, eax
mov al, byte [esi]
neg eax
shr eax, 0x1f
xor eax, 1
or ebp, eax
mov eax, ebp
and eax, 0xff
mov edx, eax
neg edx
or eax, edx
shr edx, 0x1f
xor edx, 1
add ecx, edx
sar eax, 0x1f
not eax
mov bl, byte [esi]
not ebx
and ebx, 0xff
and eax, ebx
or edi, eax
inc esi
cmp dword [esp], esi
jne 0x440c60
lea eax, [ecx - 8]
shr eax, 0x1f
or edi, edx
or edi, eax
mov eax, dword [esp + 0x30]
lea edx, [eax - 3]
sub edx, ecx
mov eax, edi
neg eax
or eax, edi
sar eax, 0x1f
mov ebx, dword [esp + 8]
mov ecx, ebx
xor ecx, edx
and ecx, eax
xor ecx, edx
mov esi, ecx
sub ebx, ecx
mov edx, ebx
mov ecx, ebx
shr ecx, 0x1f
sar edx, 0x1f
or edx, ecx
sar edx, 0x1f
mov ebp, edx
mov ebx, edx
and ebx, 0x4400
mov edx, ebx
xor dh, 0x41
and edx, eax
xor edx, ebx
neg edx
mov dword [esp + 0xc], edx
or edi, ecx
mov edx, edi
neg edx
or edx, edi
sar edx, 0x1f
cmp dword [esp + 0x30], 0xb
jbe 0x440d27
not edx
mov eax, dword [esp + 0x2c]
add eax, 0xb
mov ecx, dword [esp + 0x2c]
add ecx, dword [esp + 0x30]
lea esi, [esi]
lea esi, [esi]
and byte [eax], dl
inc eax
cmp eax, ecx
jne 0x440d20
mov edi, dword [esp + 8]
mov eax, edi
xor eax, esi
and eax, ebp
xor eax, esi
mov edx, eax
mov eax, dword [esp + 0x30]
sub eax, edi
add eax, dword [esp + 0x2c]
mov ecx, eax
test edi, edi
je 0x440dd8
mov ebp, edx
neg ebp
mov eax, ebp
sar eax, 0x1f
neg eax
sbb esi, esi
mov eax, dword [esp + 8]
cmp eax, 1
je 0x440dcd
mov ebx, eax
sub ebx, edx
lea edi, [ecx + eax - 1]
mov dword [esp + 4], ecx
mov dword [esp + 0x10], edx
mov ecx, ebx
lea esi, [esi]
lea esi, [esi]
nop
mov edx, dword [esp + 4]
mov dword [esp], ebp
lea esi, [esi]
nop
mov ebp, edx
mov al, byte [edx]
inc edx
mov bl, byte [edx]
xor eax, ebx
and eax, 0xff
and eax, esi
and ebx, 0xff
xor eax, ebx
mov byte [ebp], al
cmp edx, edi
jne 0x440d90
mov ebp, dword [esp]
mov al, byte [edi]
and eax, 0xff
and eax, esi
mov byte [edi], al
inc ebp
cmp ebp, ecx
je 0x440ee6
mov esi, ebp
sar esi, 0x1f
jmp 0x440d80
mov al, byte [ecx]
and eax, 0xff
and eax, esi
mov byte [ecx], al
mov eax, dword [esp + 0x38]
test eax, eax
jne 0x440e59
mov eax, dword [esp + 0x3c]
mov dword [eax], edx
mov eax, dword [esp + 0xc]
add esp, 0x14
pop ebx
pop esi
pop edi
pop ebp
ret
xor eax, 2
or eax, edx
mov edi, eax
and edi, 0xff
cmp dword [esp + 0x30], 2
jbe 0x440ed5
mov eax, dword [esp + 0x2c]
lea ebx, [eax + 2]
mov esi, dword [esp + 0x30]
add esi, eax
xor eax, eax
xor ecx, ecx
lea esi, [esi]
nop
mov dl, byte [ebx]
neg edx
or dl, byte [ebx]
shr dl, 7
xor edx, 1
or eax, edx
mov dl, al
neg edx
or edx, eax
shr dl, 7
cmp dl, 1
adc ecx, 0
inc ebx
cmp ebx, esi
jne 0x440e20
xor edx, edx
mov dl, al
neg edx
shr edx, 0x1f
xor edx, 1
lea eax, [ecx - 8]
shr eax, 0x1f
jmp 0x440ca2
mov edi, dword [esp + 8]
cmp edi, 4
jae 0x440ea0
test edi, edi
je 0x440de0
mov esi, dword [esp + 0x34]
mov al, byte [ecx]
mov byte [esi], al
and edi, 2
je 0x440de0
mov edi, dword [esp + 8]
mov ax, word [ecx + edi - 2]
mov ecx, dword [esp + 0x34]
mov word [ecx + edi - 2], ax
jmp 0x440de0
mov eax, dword [ecx]
mov edi, dword [esp + 0x34]
mov dword [edi], eax
mov ebx, dword [esp + 8]
mov eax, dword [ecx + ebx - 4]
mov edi, dword [esp + 0x34]
mov dword [edi + ebx - 4], eax
mov eax, dword [esp + 0x34]
lea edi, [eax + 4]
and edi, 0xfffffffc
sub eax, edi
sub ecx, eax
mov esi, ecx
lea ecx, [ebx + eax]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
jmp 0x440de0
mov eax, 1
mov edx, 1
xor ecx, ecx
jmp 0x440ca2
mov ecx, dword [esp + 4]
mov edx, dword [esp + 0x10]
jmp 0x440dd8