Function at 0x43cb00
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x28
mov eax, dword [esp + 0x3c]
mov esi, dword [esp + 0x40]
mov ecx, dword [esp + 0x44]
add ecx, esi
sub ecx, dword [esp + 0x4c]
mov dword [eax + 8], 0
mov dword [eax + 4], 0
mov dword [eax], 0
mov dword [esp + 0x24], ecx
cmp ecx, esi
jbe 0x43ce31
mov edi, dword [esp + 0x50]
mov dword [esp + 4], 0
mov dword [esp], 0
mov dword [esp + 8], 0
jmp 0x43cb99
mov edx, dword [esp + 4]
mov ebx, edx
mov ebp, dword [esp]
sub ebx, ebp
cmp edx, dword [esp + 8]
mov eax, dword [esp + 0x3c]
je 0x43cc89
mov dword [ebp + ebx], esi
add edx, 4
mov dword [esp + 4], edx
mov dword [eax + 4], edx
mov ecx, dword [esp + 0x4c]
add esi, ecx
dec esi
inc esi
cmp esi, dword [esp + 0x24]
jae 0x43ce31
test edi, edi
je 0x43cbda
movzx ecx, byte [edi]
mov byte [esp + 0x18], 0x4b
lea eax, [esp + 0x19]
mov word [eax + 4], 0
mov dword [eax], 0
xor edx, edx
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, edx
add al, 0x82
xor al, byte [esp + edx + 0x18]
add al, 0x76
mov byte [esp + edx + 0x18], al
inc edx
cmp edx, 7
jne 0x43cbc0
cmp cl, byte [esp + 0x18]
je 0x43cbe9
movzx eax, byte [esi]
mov ecx, dword [esp + 0x48]
cmp al, byte [ecx]
jne 0x43cc80
cmp dword [esp + 0x4c], 2
jb 0x43cb60
mov ecx, 1
jmp 0x43cc1c
movzx eax, byte [esi + ecx]
mov edx, dword [esp + 0x48]
cmp al, byte [edx + ecx]
jne 0x43cdaf
inc ecx
cmp ecx, dword [esp + 0x4c]
je 0x43cb60
test edi, edi
je 0x43cc00
movzx edx, byte [edi + ecx]
mov byte [esp + 0xc], 0xdd
lea eax, [esp + 0xd]
mov byte [eax + 2], 0
mov word [eax], 0
xor ebx, ebx
nop
nop
nop
nop
nop
nop
nop
nop
movzx edi, byte [esp + ebx + 0xc]
lea eax, [ebx + 0xa5]
mov ebp, 0x5a
sub ebp, ebx
xor eax, ebp
and eax, edi
xor eax, ebp
mov dh, 0xc6
sub dh, al
mov byte [esp + ebx + 0xc], dh
mov eax, ebx
and eax, 1
xor ebx, 1
lea ebx, [ebx + eax*2]
cmp ebx, 4
jb 0x43cc40
cmp dl, byte [esp + 0xc]
mov edi, dword [esp + 0x50]
jne 0x43cc00
jmp 0x43cc11
mov eax, dword [esp + 0x3c]
jmp 0x43cb8e
mov dword [esp + 0x20], ebx
mov ecx, ebx
sar ecx, 2
lea eax, [ecx + 1]
mov edx, ecx
shr edx, 1
add edx, ecx
cmp edx, eax
ja 0x43cca1
mov edx, eax
mov eax, edx
and eax, 0xfffffffb
mov ecx, edx
and ecx, 4
mov ebx, edx
mov dword [esp + 8], edx
or edx, 4
imul edx, ecx
xor ecx, 4
imul ecx, eax
add edx, ecx
push edx
call fcn.004086e0
add esp, 4
mov ebp, eax
mov ebx, dword [esp]
test ebx, ebx
je 0x43ce05
mov ecx, ebx
mov eax, dword [esp + 4]
xor ecx, eax
mov edx, ebx
not edx
and edx, eax
add edx, edx
mov dword [esp + 4], edx
sub edx, ecx
cmp ebp, ebx
mov dword [esp + 0x14], ebp
jbe 0x43cdbb
lea eax, [ebx + edx]
cmp eax, ebp
jbe 0x43cdbb
test edx, edx
je 0x43cdf6
mov ebp, ecx
mov eax, dword [esp]
add eax, edx
dec eax
mov ecx, dword [esp + 0x14]
add ecx, edx
dec ecx
mov dword [esp + 0x10], edx
and edx, 7
je 0x43cd48
neg edx
xor edi, edi
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ebx, byte [eax + edi]
mov byte [ecx + edi], bl
dec edi
cmp edx, edi
jne 0x43cd30
add eax, edi
add ecx, edi
add dword [esp + 0x10], edi
mov edi, dword [esp + 0x50]
sub ebp, dword [esp + 4]
cmp ebp, 0xfffffff8
mov ebp, dword [esp + 0x10]
ja 0x43cdf6
neg ebp
xor edx, edx
nop
nop
nop
movzx ebx, byte [eax + edx]
mov byte [ecx + edx], bl
movzx ebx, byte [eax + edx - 1]
mov byte [ecx + edx - 1], bl
movzx ebx, byte [eax + edx - 2]
mov byte [ecx + edx - 2], bl
movzx ebx, byte [eax + edx - 3]
mov byte [ecx + edx - 3], bl
movzx ebx, byte [eax + edx - 4]
mov byte [ecx + edx - 4], bl
movzx ebx, byte [eax + edx - 5]
mov byte [ecx + edx - 5], bl
movzx ebx, byte [eax + edx - 6]
mov byte [ecx + edx - 6], bl
movzx ebx, byte [eax + edx - 7]
mov byte [ecx + edx - 7], bl
add edx, 0xfffffff8
cmp ebp, edx
jne 0x43cd60
jmp 0x43cdf6
add esi, ecx
dec esi
mov eax, dword [esp + 0x3c]
jmp 0x43cb8e
mov ecx, edx
shr ecx, 2
mov eax, ebx
mov edi, ebp
xchg esi, eax
rep movsd dword es:[edi], dword [esi]
xchg esi, eax
mov eax, edx
and edx, 0xfffffffc
add ebp, edx
add edx, ebx
mov ecx, eax
shr ecx, 1
and ecx, 1
mov ebx, edx
mov edi, ebp
xchg esi, ebx
rep movsw word es:[edi], word [esi]
xchg esi, ebx
mov edi, dword [esp + 0x50]
test al, 1
je 0x43cdf6
and eax, 2
movzx ecx, byte [edx + eax]
mov byte [ebp + eax], cl
push dword [esp]
call fcn.004086f0
add esp, 4
mov ebp, dword [esp + 0x14]
mov eax, dword [esp + 0x3c]
mov dword [eax], ebp
mov ecx, dword [esp + 8]
lea ecx, [ecx*4]
add ecx, ebp
mov edx, ebp
mov ebx, dword [esp + 0x20]
add edx, ebx
mov dword [esp + 8], ecx
mov dword [eax + 8], ecx
mov ecx, ebp
mov dword [esp], ebp
jmp 0x43cb79
add esp, 0x28
pop esi
pop edi
pop ebx
pop ebp
ret