Function at 0x43c770
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x14
mov ebx, 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 edi, eax
add edi, 0x5d6e9c99
xor edx, edi
and edx, esi
xor edx, edi
mov esi, edx
mov edi, edx
xor edi, 0x148b1b37
add edi, edx
and edx, 0x140a1b37
and esi, 0x4964e4c8
sub edi, esi
mov esi, edi
and esi, edx
xor edi, edx
lea edx, [edi + esi*2]
inc edx
mov word [esp + eax*2 + 0xc], dx
mov eax, 1
test cl, 1
mov ecx, 0
jne 0x43c790
mov esi, dword [esp + 0xc]
mov eax, dword [0x4482e0]
test eax, eax
je 0x43c83e
xor ecx, ecx
mov edx, dword [0x4482e4]
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp dword [edx + ecx*8], 0x29df508e
je 0x43c810
inc ecx
cmp eax, ecx
jne 0x43c800
jmp 0x43c83e
mov eax, dword [edx + ecx*8 + 4]
cmp eax, esi
je 0x43c83e
lea ecx, [esp + 8]
push ecx
push 0
push 0
push 0
push dword [esp + 0x3c]
push dword [esp + 0x3c]
push 0x18
push eax
push dword [0x4482e8]
call fcn.00439ac0
add esp, 0x24
mov esi, eax
cmp esi, 0xc0000023
jne 0x43c9de
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 edi, edi
mov cl, 1
nop
nop
nop
movzx ebp, word [esp + edi*2 + 0x10]
mov esi, 0x6366
sub esi, edi
mov edx, edi
add edx, 0x5d6e9c99
xor esi, edx
and esi, ebp
xor esi, edx
mov edx, esi
mov ebp, esi
xor ebp, 0x148b1b37
add ebp, esi
and esi, 0x140a1b37
and edx, 0x4964e4c8
sub ebp, edx
mov edx, ebp
and edx, esi
xor ebp, esi
lea edx, [edx*2 + 1]
add edx, ebp
mov word [esp + edi*2 + 0x10], dx
mov edi, 1
test cl, 1
mov ecx, 0
jne 0x43c870
mov esi, dword [esp + 0x10]
mov ecx, dword [0x4482e0]
test ecx, ecx
je 0x43c8f3
xor edx, edx
mov ebp, dword [0x4482e4]
nop
nop
nop
cmp dword [ebp + edx*8], 0x29df508e
je 0x43c9e8
inc edx
cmp ecx, edx
jne 0x43c8e0
mov ebp, dword [esp]
mov edx, dword [esp + 0x34]
test edx, edx
je 0x43c9d5
test esi, esi
js 0x43c9d5
test ebx, ebx
je 0x43c9ce
mov ecx, dword [ebp + 0xc]
shr ecx, 1
mov edx, dword [edx]
cmp edx, ecx
jb 0x43c91f
mov edx, ecx
test edx, edx
je 0x43c9c2
add eax, 0x10
mov ecx, edx
and ecx, 3
je 0x43ca27
mov dword [esp + 4], edx
xor edi, edi
nop
nop
nop
nop
nop
movzx ebp, word [eax]
xor edx, edx
test bp, bp
setne dl
lea eax, [eax + edx*2]
mov word [ebx], bp
add ebx, 2
inc edi
cmp ecx, edi
jne 0x43c940
mov edx, dword [esp + 4]
mov ebp, edx
sub ebp, edi
cmp edx, 4
jb 0x43c9c2
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, word [eax]
xor ecx, ecx
test dx, dx
setne cl
lea edi, [eax + ecx*2]
mov word [ebx], dx
movzx eax, word [eax + ecx*2]
xor ecx, ecx
test ax, ax
setne cl
lea edx, [edi + ecx*2]
mov word [ebx + 2], ax
movzx eax, word [edi + ecx*2]
xor ecx, ecx
test ax, ax
setne cl
lea edi, [edx + ecx*2]
mov word [ebx + 4], ax
movzx ecx, word [edx + ecx*2]
xor eax, eax
test cx, cx
setne al
mov word [ebx + 6], cx
add ebx, 8
lea eax, [edi + eax*2]
add ebp, 0xfffffffc
jne 0x43c970
mov word [ebx], 0
mov edx, dword [esp + 0x34]
mov ebp, dword [esp]
mov eax, dword [ebp + 0xc]
shr eax, 1
mov dword [edx], eax
push ebp
call fcn.004383b0
add esp, 4
mov eax, esi
add esp, 0x14
pop esi
pop edi
pop ebx
pop ebp
ret
mov ecx, dword [ebp + edx*8 + 4]
cmp ecx, esi
mov ebp, dword [esp]
je 0x43c8f6
lea edx, [esp + 8]
push edx
push dword [esp + 8]
push ebp
push 0
push dword [esp + 0x3c]
push dword [esp + 0x3c]
push 0x18
push ecx
push dword [0x4482e8]
mov edi, eax
call fcn.00439ac0
add esp, 0x24
mov esi, eax
mov eax, edi
jmp 0x43c8f6
mov ebp, edx
cmp edx, 4
jae 0x43c970
jmp 0x43c9c2