Function at 0x43cd70
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x14
mov edi, dword [esp + 0x30]
mov dword [esp + 0xc], 0x785d785e
xor eax, eax
mov cl, 1
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx esi, word [esp + eax*2 + 0xc]
mov edx, 0x6366
sub edx, eax
mov ebx, eax
add ebx, 0x5d6e9c99
xor edx, ebx
and edx, esi
xor edx, ebx
mov esi, edx
mov ebx, edx
xor ebx, 0x148b1b37
add ebx, edx
and edx, 0x140a1b37
and esi, 0x4964e4c8
sub ebx, esi
mov esi, ebx
and esi, edx
xor ebx, edx
lea edx, [ebx + esi*2]
inc edx
mov word [esp + eax*2 + 0xc], dx
mov eax, 1
test cl, 1
mov ecx, 0
jne 0x43cd90
mov ebx, dword [esp + 0xc]
mov eax, dword [0x4482e0]
test eax, eax
je 0x43ce3e
xor ecx, ecx
mov edx, dword [0x4482e4]
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp dword [edx + ecx*8], 0xcf2d66db
je 0x43ce10
inc ecx
cmp eax, ecx
jne 0x43ce00
jmp 0x43ce3e
mov eax, dword [edx + ecx*8 + 4]
cmp eax, ebx
je 0x43ce3e
lea ecx, [esp + 8]
push ecx
push 0
push 0
push 1
push dword [esp + 0x3c]
push dword [esp + 0x3c]
push 0x18
push eax
push dword [0x4482e8]
call fcn.00439ac0
add esp, 0x24
mov ebx, eax
cmp ebx, 0xc0000023
jne 0x43d09c
push dword [esp + 8]
call fcn.00438390
add esp, 4
mov dword [esp], eax
mov ecx, dword [esp + 8]
mov dword [esp + 4], ecx
mov dword [esp + 0x10], 0x785d785e
xor ebp, ebp
mov bl, 1
nop
nop
nop
movzx ecx, word [esp + ebp*2 + 0x10]
mov esi, 0x6366
sub esi, ebp
mov edx, ebp
add edx, 0x5d6e9c99
xor esi, edx
and esi, ecx
xor esi, edx
mov ecx, esi
mov edx, esi
xor edx, 0x148b1b37
add edx, esi
and esi, 0x140a1b37
and ecx, 0x4964e4c8
sub edx, ecx
mov ecx, edx
and ecx, esi
xor edx, esi
lea ecx, [edx + ecx*2]
inc ecx
mov word [esp + ebp*2 + 0x10], cx
mov ebp, 1
test bl, 1
mov ebx, 0
jne 0x43ce70
mov ebx, dword [esp + 0x10]
mov edx, dword [0x4482e0]
test edx, edx
je 0x43cef0
xor esi, esi
mov ecx, dword [0x4482e4]
mov ebp, dword [esp + 0x40]
nop
nop
nop
nop
cmp dword [ecx + esi*8], 0xcf2d66db
je 0x43cef6
inc esi
cmp edx, esi
jne 0x43cee0
jmp 0x43cf2c
mov ebp, dword [esp + 0x40]
jmp 0x43cf2c
mov edx, dword [ecx + esi*8 + 4]
cmp edx, ebx
mov esi, dword [esp]
je 0x43cf2f
lea ecx, [esp + 8]
push ecx
push dword [esp + 8]
push esi
push 1
push dword [esp + 0x3c]
push dword [esp + 0x3c]
push 0x18
push edx
push dword [0x4482e8]
mov esi, eax
call fcn.00439ac0
add esp, 0x24
mov ebx, eax
mov eax, esi
mov esi, dword [esp]
test ebx, ebx
js 0x43d093
mov ecx, dword [esp + 0x34]
test ecx, ecx
je 0x43d01b
test edi, edi
je 0x43d014
mov edx, dword [esi + 0x10]
shr edx, 1
mov ecx, dword [ecx]
cmp ecx, edx
jb 0x43cf58
mov ecx, edx
test ecx, ecx
je 0x43d00b
add eax, 0x14
mov edx, ecx
and ecx, 3
je 0x43cf9f
mov dword [esp + 4], edx
xor esi, esi
movzx ebp, word [eax]
xor edx, edx
test bp, bp
setne dl
lea eax, [eax + edx*2]
mov word [edi], bp
add edi, 2
inc esi
cmp ecx, esi
jne 0x43cf70
mov edx, dword [esp + 4]
mov ecx, edx
sub ecx, esi
mov ebp, dword [esp + 0x40]
mov esi, dword [esp]
cmp edx, 4
jae 0x43cfa6
jmp 0x43d00b
mov ecx, edx
cmp edx, 4
jb 0x43d00b
mov ebp, ebx
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, word [eax]
xor ebx, ebx
test dx, dx
setne bl
lea esi, [eax + ebx*2]
mov word [edi], dx
movzx eax, word [eax + ebx*2]
xor edx, edx
test ax, ax
setne dl
lea ebx, [esi + edx*2]
mov word [edi + 2], ax
movzx eax, word [esi + edx*2]
xor edx, edx
test ax, ax
setne dl
lea esi, [ebx + edx*2]
mov word [edi + 4], ax
movzx edx, word [ebx + edx*2]
xor eax, eax
test dx, dx
setne al
mov word [edi + 6], dx
add edi, 8
lea eax, [esi + eax*2]
add ecx, 0xfffffffc
jne 0x43cfb0
mov esi, dword [esp]
mov ebx, ebp
mov ebp, dword [esp + 0x40]
mov word [edi], 0
mov ecx, dword [esp + 0x34]
mov eax, dword [esi + 0x10]
shr eax, 1
mov dword [ecx], eax
mov ecx, dword [esp + 0x38]
test ecx, ecx
je 0x43d028
mov eax, dword [esi + 4]
mov dword [ecx], eax
test ebp, ebp
je 0x43d093
mov dword [esp + 4], ebx
cmp dword [esp + 0x3c], 0
je 0x43d089
mov eax, dword [ebp]
mov ecx, dword [esi + 0xc]
cmp eax, ecx
jb 0x43d043
mov eax, ecx
mov ecx, dword [esp]
mov esi, dword [ecx + 8]
add esi, dword [esp]
mov ecx, eax
shr ecx, 2
mov edx, eax
and edx, 0xfffffffc
mov ebx, dword [esp + 0x3c]
mov edi, ebx
add ebx, edx
add edx, esi
xchg esi, esi
rep movsd dword es:[edi], dword [esi]
xchg esi, esi
mov ecx, eax
shr ecx, 1
and ecx, 1
mov esi, edx
mov edi, ebx
xchg esi, esi
rep movsw word es:[edi], word [esi]
xchg esi, esi
mov esi, dword [esp]
test al, 1
je 0x43d089
and eax, 2
movzx ecx, byte [edx + eax]
mov byte [ebx + eax], cl
mov eax, dword [esi + 0xc]
mov dword [ebp], eax
mov ebx, dword [esp + 4]
push esi
call fcn.004383b0
add esp, 4
mov eax, ebx
add esp, 0x14
pop esi
pop edi
pop ebx
pop ebp
ret