Function at 0x43da60
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 0x43de0b
mov ebp, dword [esp + 0x48]
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp + 4], 0
jmp 0x43dac9
add esi, ecx
dec esi
mov eax, dword [esp + 0x34]
inc esi
cmp esi, dword [esp + 0x1c]
jae 0x43de0b
test ebp, ebp
je 0x43db6e
movzx ecx, byte [ebp]
mov byte [esp + 0x10], 0xe5
lea eax, [esp + 0x11]
mov byte [eax + 4], 0
mov dword [eax], 0
xor edx, edx
nop
nop
nop
nop
nop
nop
movzx edi, byte [esp + edx + 0x10]
lea ebx, [edx + 0x3d2d9d47]
mov eax, edi
and eax, 0x31
mov ebp, 0x42d262b8
sub ebp, edx
and ebp, 0x4202408e
and ebx, 0x3d241d01
or ebx, ebp
and edi, 0xffffffce
or edi, 0x9c840f00
or eax, 0xde8d0f46
xor eax, ebx
xor eax, edi
mov edi, eax
xor edi, 0x2c088
mov ebx, 0x63
sub ebx, edi
or ebx, 1
add ebx, edi
xor eax, 0x89
lea eax, [eax + ebx*2]
add al, 0xd6
mov byte [esp + edx + 0x10], al
mov eax, edx
not eax
or eax, 1
add eax, edx
inc eax
or edx, 1
mov edi, eax
and edi, edx
xor edx, eax
lea edx, [edx + edi*2]
cmp edx, 6
jb 0x43daf0
cmp cl, byte [esp + 0x10]
mov ebp, dword [esp + 0x48]
je 0x43db7d
movzx eax, byte [esi]
mov ecx, dword [esp + 0x40]
cmp al, byte [ecx]
jne 0x43daba
cmp dword [esp + 0x44], 2
jb 0x43dc50
mov ecx, 1
jmp 0x43dbac
movzx eax, byte [esi + ecx]
mov edx, dword [esp + 0x40]
cmp al, byte [edx + ecx]
jne 0x43dab7
inc ecx
cmp ecx, dword [esp + 0x44]
je 0x43dc50
test ebp, ebp
je 0x43db90
movzx eax, byte [ebp + ecx]
mov byte [esp], al
mov byte [esp + 0x10], 0x1f
lea eax, [esp + 0x11]
mov word [eax + 4], 0
mov dword [eax], 0
xor edi, edi
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ebp, byte [esp + eax + 0x10]
mov edx, eax
xor edx, 0xa791b8cb
mov ebx, edi
and ebx, 8
sub ebx, edx
mov edx, 0x13a6e804
sub edx, ebx
add ebx, 0x6c5917fb
and edx, 0x93008019
and ebx, 0x448417e6
or ebx, edx
xor ebx, ebp
mov edx, ebx
xor edx, 0xe9
and ebx, 0xd78497f0
xor ebx, 0x9343c81f
and edx, ebx
add edx, ebx
inc dl
mov byte [esp + eax + 0x10], dl
inc eax
add edi, 2
cmp eax, 7
jne 0x43dbe0
movzx eax, byte [esp]
cmp al, byte [esp + 0x10]
mov ebp, dword [esp + 0x48]
jne 0x43db90
jmp 0x43dba1
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 0x43dc6f
mov edx, dword [esp + 0xc]
jmp 0x43ddf2
mov ecx, edi
sar ecx, 2
lea eax, [ecx + 1]
mov ebx, ecx
shr ebx, 1
add ebx, ecx
cmp ebx, eax
ja 0x43dc83
mov ebx, eax
lea eax, [ebx*4]
push eax
call fcn.00408810
add esp, 4
mov ecx, eax
mov eax, dword [esp + 8]
test eax, eax
mov dword [esp], ecx
je 0x43ddd0
mov dword [esp + 0x18], ebx
cmp ecx, eax
mov eax, dword [esp + 0xc]
mov dword [esp + 4], edi
jbe 0x43dd6f
cmp eax, ecx
jbe 0x43dd6f
test edi, edi
je 0x43ddb9
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 0x43dd04
neg edi
xor edx, edx
nop
nop
nop
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 0x43dcf0
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 0x43ddb9
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 0x43dd20
jmp 0x43ddb9
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 0x43ddb9
mov ecx, dword [esp + 4]
and ecx, 2
movzx edx, byte [edx + ecx]
mov byte [eax + ecx], dl
push dword [esp + 8]
call fcn.00408820
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 0x43dabe
add esp, 0x20
pop esi
pop edi
pop ebx
pop ebp
ret