Function at 0x43ee50
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x28
mov dword [esp + 0x14], ecx
cmp dword [ecx + 8], 0
je 0x43ef40
mov eax, dword [esp + 0x14]
mov eax, dword [eax]
test eax, eax
je 0x43ef40
mov dword [esp + 0x10], eax
mov dword [esp + 4], 0xdcdddedf
mov dword [esp + 8], 0
xor eax, eax
mov ecx, 0x31588af
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov dword [esp + 0xc], ecx
movzx ecx, byte [esp + eax + 4]
mov esi, dword [esp + 0xc]
and esi, 0x314880d
mov edi, eax
and edi, 2
mov edx, ecx
and edx, 0x5d
or edx, 0x90454822
and ecx, 0xffffffa2
lea ebx, [edi + esi]
add ebx, 0x28480100
xor ebx, ecx
xor ebx, edx
mov edi, ebx
xor edi, 0xb767e2ef
mov edx, ebx
and edx, 0x100090
xor edx, 0xf7aab7f
and edx, edi
mov esi, edx
and esi, 0xfd
and edi, 2
or edx, 2
imul edx, edi
xor edi, 2
imul edi, esi
mov ecx, dword [esp + 0xc]
xor ebx, 0x10
add ebx, edx
add ebx, edi
inc bl
mov byte [esp + eax + 4], bl
inc eax
dec ecx
cmp eax, 8
jne 0x43eea0
mov eax, dword [esp + 4]
mov edx, dword [0x45064c]
test edx, edx
je 0x43ef9f
xor esi, esi
mov edi, dword [0x450650]
cmp dword [edi + esi*8], 0x2dedf0b8
je 0x43ef7f
inc esi
cmp edx, esi
jne 0x43ef30
jmp 0x43ef9f
mov dword [esp + 4], 0x490a0b14
mov dword [esp + 8], 0
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, eax
add cl, 0x43
xor cl, byte [esp + eax + 4]
add cl, 0xb1
mov byte [esp + eax + 4], cl
inc eax
cmp eax, 8
jne 0x43ef60
mov eax, dword [esp + 4]
jmp 0x43f0d5
mov ecx, dword [edi + esi*8 + 4]
cmp ecx, eax
je 0x43ef9f
push dword [ebp + 8]
push dword [esp + 0x14]
push 2
push dword [0x450654]
push ecx
call fcn.00441b40
add esp, 0x14
mov edi, dword [ebp + 0xc]
cmp edi, 1
mov esi, dword [ebp + 0x10]
mov ecx, esi
sbb ecx, 0
jl 0x43f0c4
cmp eax, 0xc000010a
jne 0x43f0c4
mov ecx, 0xffffd8f0
mov eax, edi
mul ecx
sub edx, edi
imul ecx, esi, 0xffffd8f0
add ecx, edx
mov dword [esp + 0x18], eax
mov dword [esp + 0x1c], ecx
mov eax, dword [esp + 0x14]
mov eax, dword [eax]
mov dword [esp + 0x10], eax
mov dword [esp + 4], 0xdcdddedf
mov dword [esp + 8], 0
xor eax, eax
mov ecx, 0x31588af
nop
nop
nop
nop
nop
nop
mov dword [esp + 0xc], ecx
movzx esi, byte [esp + eax + 4]
mov edx, dword [esp + 0xc]
and edx, 0x314880d
mov edi, eax
and edi, 2
mov ecx, esi
and ecx, 0x5d
or ecx, 0x90454822
and esi, 0xffffffa2
lea ebx, [edi + edx]
add ebx, 0x28480100
xor ebx, esi
xor ebx, ecx
mov edx, ebx
xor edx, 0xb767e2ef
mov edi, ebx
and edi, 0x100090
xor edi, 0xf7aab7f
and edi, edx
mov ecx, edi
and ecx, 0xfd
and edx, 2
or edi, 2
imul edi, edx
xor edx, 2
imul edx, ecx
xor ebx, 0x10
add ebx, edi
add ebx, edx
mov ecx, dword [esp + 0xc]
inc bl
mov byte [esp + eax + 4], bl
inc eax
dec ecx
cmp eax, 8
jne 0x43f000
mov eax, dword [esp + 4]
mov edx, dword [0x45064c]
test edx, edx
je 0x43f0c4
xor esi, esi
mov edi, dword [0x450650]
cmp dword [edi + esi*8], 0x4e66b5a3
je 0x43f0a0
inc esi
cmp edx, esi
jne 0x43f090
jmp 0x43f0c4
mov ecx, dword [edi + esi*8 + 4]
cmp ecx, eax
je 0x43f0c4
lea eax, [esp + 0x18]
push eax
push 0
push dword [esp + 0x18]
push 3
push dword [0x450654]
push ecx
call fcn.00441b40
add esp, 0x18
test eax, eax
js 0x43f0d5
mov ecx, dword [esp + 0x14]
mov esi, eax
call fcn.0043ed50
mov eax, esi
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret 0xc