Function at 0x43e690
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x20
mov eax, dword [esp + 0x38]
test eax, eax
je 0x43e6da
mov ecx, 0xfffffffe
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp word [eax + ecx + 2], 0
lea ecx, [ecx + 2]
jne 0x43e6b0
sar ecx, 1
mov edx, ecx
and edx, 2
mov esi, ecx
or ecx, 2
imul ecx, edx
xor edx, 2
and esi, 0xfffd
imul esi, edx
add ecx, esi
jmp 0x43e6dc
xor ecx, ecx
mov word [esp + 0x14], cx
mov edx, eax
test eax, eax
je 0x43e6ec
add ecx, 2
mov edx, ecx
mov esi, dword [esp + 0x40]
mov word [esp + 0x16], dx
mov dword [esp + 0x18], eax
mov dword [esp + 4], 0x28575655
mov eax, 0x7843ecbd
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + eax - 0x7843ecb9]
xor ecx, eax
mov ebx, ecx
and ebx, 0x38408815
mov edi, ecx
and edi, 2
mov edx, edi
xor edx, 2
imul edx, ebx
or ebx, 2
imul ebx, edi
xor ecx, 0x3de09a17
add edx, ecx
add edx, ebx
and ecx, 1
or edx, 1
add edx, ecx
mov byte [esp + eax - 0x7843ecb9], dl
inc eax
cmp eax, 0x7843ecc1
jne 0x43e710
mov eax, dword [esp + 4]
mov dword [esp + 0x10], 0xd7d6d5d6
xor ecx, ecx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov edx, ecx
or dl, 0x74
xor dl, byte [esp + ecx + 0x10]
add dl, 0x60
mov byte [esp + ecx + 0x10], dl
mov edx, ecx
and edx, 1
xor ecx, 1
lea ecx, [ecx + edx*2]
cmp ecx, 4
jb 0x43e770
mov ecx, dword [esp + 0x10]
mov dword [esp], 0xc8c9cacb
mov edx, 0x967dcd54
movzx edi, byte [esp + edx + 0x698232ac]
xor edi, edx
mov ebx, edi
and ebx, 0x5f
add ebx, ebx
xor edi, 0xa0
sub ebx, edi
mov byte [esp + edx + 0x698232ac], bl
inc edx
cmp edx, 0x967dcd58
jne 0x43e7a0
mov ebx, dword [esp]
mov edx, dword [0x44965c]
test edx, edx
je 0x43e81d
xor ebp, ebp
mov edi, dword [0x449660]
nop
nop
cmp dword [edi + ebp*8], 0x299a4ecd
je 0x43e7f0
inc ebp
cmp edx, ebp
jne 0x43e7e0
jmp 0x43e81d
mov edx, dword [edi + ebp*8 + 4]
cmp edx, ebx
je 0x43e81d
lea edi, [esp + 0xc]
lea ebx, [esp + 0x14]
push edi
push eax
push 0
push ecx
push ebx
push dword [esp + 0x48]
push 0x18
push edx
push dword [0x449664]
call fcn.0043b480
add esp, 0x24
mov ebx, eax
mov dword [esp], 0x36757450
mov eax, 0xcb61792b
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + eax + 0x349e86d5]
mov edx, eax
and edx, ecx
add edx, edx
sub ecx, edx
add ecx, eax
mov edx, ecx
xor edx, 0xdd0d1631
and ecx, 0x22f2e9ce
add ecx, ecx
sub ecx, edx
mov edx, ecx
and edx, 1
xor ecx, 1
lea ecx, [ecx + edx*2]
add cl, 0xd8
mov byte [esp + eax + 0x349e86d5], cl
inc eax
cmp eax, 0xcb61792f
jne 0x43e830
cmp ebx, dword [esp]
jne 0x43ea9a
push dword [esp + 0xc]
call fcn.00439b40
add esp, 4
mov dword [esp + 8], eax
mov ecx, dword [esp + 0xc]
mov dword [esp + 4], 0x45444340
mov eax, 0x63643ad2
mov edx, 0x2d
movzx edi, byte [esp + eax - 0x63643ace]
mov ebx, edx
xor ebx, eax
and ebx, edi
xor ebx, eax
add ebx, 0xe4de296f
mov edi, ebx
and edi, 1
xor ebx, 1
lea ebx, [ebx + edi*2]
mov byte [esp + eax - 0x63643ace], bl
inc eax
dec edx
cmp eax, 0x63643ad6
jne 0x43e8a0
mov edx, dword [esp + 4]
mov dword [esp], 0xc8c9cacb
mov eax, 0x967dcd54
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edi, byte [esp + eax + 0x698232ac]
xor edi, eax
mov ebx, edi
and ebx, 0x5f
add ebx, ebx
xor edi, 0xa0
sub ebx, edi
mov byte [esp + eax + 0x698232ac], bl
inc eax
cmp eax, 0x967dcd58
jne 0x43e8f0
mov ebx, dword [esp]
mov eax, dword [0x44965c]
test eax, eax
je 0x43e970
xor ebp, ebp
mov edi, dword [0x449660]
nop
nop
nop
nop
cmp dword [edi + ebp*8], 0x299a4ecd
je 0x43e940
inc ebp
cmp eax, ebp
jne 0x43e930
jmp 0x43e970
mov eax, dword [edi + ebp*8 + 4]
cmp eax, ebx
je 0x43e970
lea edi, [esp + 0xc]
lea ebx, [esp + 0x14]
push edi
push ecx
mov ecx, dword [esp + 0x10]
push ecx
push edx
push ebx
push dword [esp + 0x48]
push 0x18
push eax
push dword [0x449664]
call fcn.0043b480
add esp, 0x24
mov ebx, eax
test ebx, ebx
js 0x43ea8e
mov ecx, dword [esp + 0x3c]
test ecx, ecx
je 0x43e989
mov eax, dword [esp + 8]
mov eax, dword [eax + 4]
mov dword [ecx], eax
cmp dword [esp + 0x44], 0
je 0x43ea8e
mov dword [esp + 0x1c], ebx
test esi, esi
je 0x43ea7d
mov eax, dword [esp + 0x44]
mov ebx, dword [eax]
mov ecx, dword [esp + 8]
mov ecx, dword [ecx + 8]
cmp ebx, ecx
jb 0x43e9b3
mov ebx, ecx
mov edx, dword [esp + 8]
lea ebp, [edx + 0xc]
mov ecx, ebx
shr ecx, 2
mov edi, esi
xchg esi, ebp
rep movsd dword es:[edi], dword [esi]
xchg esi, ebp
mov ecx, ebx
and ecx, 0xfffffffc
add esi, ecx
add edx, ecx
add edx, 0xc
mov ecx, ebx
and ecx, 3
mov ebp, ecx
not ebp
or ebp, 1
add ebp, ecx
shr ecx, 1
mov eax, edx
mov edi, esi
xchg esi, eax
rep movsw word es:[edi], word [esi]
xchg esi, eax
mov ecx, ebp
inc ecx
je 0x43ea7d
and ebx, 2
add edx, ebx
add esi, ebx
mov edi, ecx
and edi, 7
je 0x43ea22
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ebx, byte [edx + eax]
mov byte [esi + eax], bl
inc eax
cmp edi, eax
jne 0x43ea10
add edx, eax
add esi, eax
sub ecx, eax
cmp ebp, 7
jb 0x43ea7d
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
movzx ebx, byte [edx + eax]
mov byte [esi + eax], bl
movzx ebx, byte [edx + eax + 1]
mov byte [esi + eax + 1], bl
movzx ebx, byte [edx + eax + 2]
mov byte [esi + eax + 2], bl
movzx ebx, byte [edx + eax + 3]
mov byte [esi + eax + 3], bl
movzx ebx, byte [edx + eax + 4]
mov byte [esi + eax + 4], bl
movzx ebx, byte [edx + eax + 5]
mov byte [esi + eax + 5], bl
movzx ebx, byte [edx + eax + 6]
mov byte [esi + eax + 6], bl
movzx ebx, byte [edx + eax + 7]
mov byte [esi + eax + 7], bl
add eax, 8
cmp ecx, eax
jne 0x43ea30
mov eax, dword [esp + 8]
mov eax, dword [eax + 8]
mov ecx, dword [esp + 0x44]
mov dword [ecx], eax
mov ebx, dword [esp + 0x1c]
push dword [esp + 8]
call fcn.00439b60
add esp, 4
mov eax, ebx
add esp, 0x20
pop esi
pop edi
pop ebx
pop ebp
ret