Function at 0x43cc90
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x20
mov eax, dword [esp + 0x34]
mov esi, dword [esp + 0x38]
mov ecx, dword [esp + 0x3c]
add ecx, esi
sub ecx, dword [esp + 0x44]
mov dword [eax + 8], 0
mov dword [eax + 4], 0
mov dword [eax], 0
mov dword [esp + 0x1c], ecx
cmp ecx, esi
jbe 0x43cffb
mov ebp, dword [esp + 0x48]
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp + 4], 0
jmp 0x43ccf9
add esi, ecx
dec esi
mov eax, dword [esp + 0x34]
inc esi
cmp esi, dword [esp + 0x1c]
jae 0x43cffb
test ebp, ebp
je 0x43cd68
movzx ecx, byte [ebp]
mov byte [esp + 0x10], 0xbb
lea eax, [esp + 0x11]
mov word [eax + 4], 0
mov dword [eax], 0
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
movzx edi, byte [esp + eax + 0x10]
mov edx, eax
xor edx, 0xb6ec6c29
mov ebx, eax
or ebx, 0x491393d6
and edx, ebx
add edx, ebx
xor edx, edi
mov edi, edx
xor edi, 0x6d61e32e
or edx, 0x929e1cd1
and edi, edx
add edi, edx
mov edx, edi
and edx, 1
xor edi, 1
lea edx, [edi + edx*2]
mov byte [esp + eax + 0x10], dl
inc eax
cmp eax, 7
jne 0x43cd20
cmp cl, byte [esp + 0x10]
je 0x43cd77
movzx eax, byte [esi]
mov ecx, dword [esp + 0x40]
cmp al, byte [ecx]
jne 0x43ccea
cmp dword [esp + 0x44], 2
jb 0x43ce30
mov ecx, 1
jmp 0x43cdac
movzx eax, byte [esi + ecx]
mov edx, dword [esp + 0x40]
cmp al, byte [edx + ecx]
jne 0x43cce7
inc ecx
cmp ecx, dword [esp + 0x44]
je 0x43ce30
test ebp, ebp
je 0x43cd90
movzx eax, byte [ebp + ecx]
mov byte [esp], al
mov byte [esp + 0x10], 0xdb
lea eax, [esp + 0x11]
mov byte [eax + 4], 0
mov dword [eax], 0
mov ebx, 0x1a
mov eax, 0x8489b2e5
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edi, byte [esp + ebx - 0xa]
mov edx, edi
not edx
mov ebp, eax
and ebp, edx
xor edi, eax
sub edi, ebp
or edx, ebx
add edi, eax
and edi, edx
mov edx, edi
not edx
and edx, 0x7d
and edi, 0x82
sub edx, edi
mov byte [esp + ebx - 0xa], dl
inc ebx
dec eax
cmp ebx, 0x20
jne 0x43cde0
movzx eax, byte [esp]
cmp al, byte [esp + 0x10]
mov ebp, dword [esp + 0x48]
jne 0x43cd90
jmp 0x43cda1
mov eax, dword [esp + 0xc]
mov edi, eax
mov ecx, dword [esp + 8]
sub edi, ecx
cmp eax, dword [esp + 4]
mov eax, dword [esp + 0x34]
je 0x43ce4f
mov edx, dword [esp + 0xc]
jmp 0x43cfe2
mov ecx, edi
sar ecx, 2
lea eax, [ecx + 1]
mov ebx, ecx
shr ebx, 1
add ebx, ecx
cmp ebx, eax
ja 0x43ce63
mov ebx, eax
mov eax, ebx
and eax, 4
mov ecx, ebx
or ecx, 4
imul ecx, eax
xor eax, 4
mov edx, ebx
and edx, 0xfffffffb
imul edx, eax
add ecx, edx
push ecx
call fcn.00408380
add esp, 4
mov ecx, eax
mov eax, dword [esp + 8]
test eax, eax
mov dword [esp], ecx
je 0x43cfc0
mov dword [esp + 0x18], ebx
cmp ecx, eax
mov eax, dword [esp + 0xc]
mov dword [esp + 4], edi
jbe 0x43cf5f
cmp eax, ecx
jbe 0x43cf5f
test edi, edi
je 0x43cfa9
mov eax, dword [esp + 8]
mov edx, dword [esp + 4]
add eax, edx
dec eax
mov ecx, dword [esp]
add ecx, edx
dec ecx
mov edi, edx
and edi, 7
je 0x43cef4
neg edi
xor edx, edx
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ebx, byte [eax + edx]
mov byte [ecx + edx], bl
dec edx
cmp edi, edx
jne 0x43cee0
add eax, edx
add ecx, edx
add edx, dword [esp + 4]
mov edi, dword [esp + 8]
sub edi, dword [esp + 0xc]
cmp edi, 0xfffffff8
ja 0x43cfa9
neg edx
xor edi, edi
nop
nop
nop
nop
nop
nop
nop
movzx ebx, byte [eax + edi]
mov byte [ecx + edi], bl
movzx ebx, byte [eax + edi - 1]
mov byte [ecx + edi - 1], bl
movzx ebx, byte [eax + edi - 2]
mov byte [ecx + edi - 2], bl
movzx ebx, byte [eax + edi - 3]
mov byte [ecx + edi - 3], bl
movzx ebx, byte [eax + edi - 4]
mov byte [ecx + edi - 4], bl
movzx ebx, byte [eax + edi - 5]
mov byte [ecx + edi - 5], bl
movzx ebx, byte [eax + edi - 6]
mov byte [ecx + edi - 6], bl
movzx ebx, byte [eax + edi - 7]
mov byte [ecx + edi - 7], bl
add edi, 0xfffffff8
cmp edx, edi
jne 0x43cf10
jmp 0x43cfa9
mov ebp, ecx
mov ecx, edi
shr ecx, 2
mov edx, edi
mov ebx, dword [esp + 8]
mov eax, ebx
mov edi, ebp
xchg esi, eax
rep movsd dword es:[edi], dword [esi]
xchg esi, eax
mov edi, edx
and edx, 0xfffffffc
lea eax, [edx + ebp]
add edx, ebx
mov ecx, edi
mov ebx, edi
shr ecx, 1
and ecx, 1
mov ebp, edx
mov edi, eax
xchg esi, ebp
rep movsw word es:[edi], word [esi]
xchg esi, ebp
mov ebp, dword [esp + 0x48]
test bl, 1
je 0x43cfa9
mov ecx, dword [esp + 4]
and ecx, 2
movzx edx, byte [edx + ecx]
mov byte [eax + ecx], dl
push dword [esp + 8]
call fcn.00408390
add esp, 4
mov edi, dword [esp + 4]
mov ebx, dword [esp + 0x18]
mov ecx, dword [esp]
mov eax, dword [esp + 0x34]
mov dword [eax], ecx
mov ecx, dword [esp]
lea ecx, [ecx + ebx*4]
mov edx, dword [esp]
add edx, edi
mov dword [esp + 4], ecx
mov dword [eax + 8], ecx
mov ecx, dword [esp]
mov dword [esp + 8], ecx
mov ecx, dword [esp]
mov dword [ecx + edi], esi
add edx, 4
mov dword [esp + 0xc], edx
mov dword [eax + 4], edx
mov ecx, dword [esp + 0x44]
add esi, ecx
dec esi
jmp 0x43ccee
add esp, 0x20
pop esi
pop edi
pop ebx
pop ebp
ret