Function at 0x43c660
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x30
mov dword [esp + 0x18], 0xbcbdbebf
mov dword [esp + 0x1c], 0
mov dword [esp + 0x1f], 0
mov dword [esp + 4], 0
mov eax, dword [esp + 4]
cmp eax, 0xa
ja 0x43c6f0
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov edx, dword [esp + 4]
mov eax, dword [esp + 4]
movzx edi, byte [esp + eax + 0x18]
lea eax, [edx - 0x4ee8d9e8]
mov ecx, eax
and ecx, edi
mov esi, eax
xor esi, edi
add edx, 0x18
and edx, edi
or eax, edi
xor eax, esi
mov edi, eax
and edi, edx
xor eax, edx
sub ecx, edi
sub esi, eax
lea eax, [esi + ecx*2]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x14]
add al, 0x58
mov ecx, dword [esp + 4]
mov byte [esp + ecx + 0x18], al
inc dword [esp + 4]
mov eax, dword [esp + 4]
cmp eax, 0xb
jb 0x43c6a0
mov edi, dword [esp + 0x18]
mov eax, dword [0x44b1ac]
test eax, eax
je 0x43c74c
xor ecx, ecx
mov edx, dword [0x44b1b0]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp dword [edx + ecx*8], 0x2286b4e
je 0x43c720
inc ecx
cmp eax, ecx
jne 0x43c710
jmp 0x43c74c
mov eax, dword [edx + ecx*8 + 4]
cmp eax, edi
je 0x43c74c
lea ecx, [esp + 0x10]
push ecx
push 0
push 0
push 1
push dword [ebp + 0xc]
push dword [ebp + 8]
push 6
push dword [0x44b1b4]
push eax
call fcn.00438da0
add esp, 0x24
mov edi, eax
cmp edi, 0xc0000023
jne 0x43c9c6
push dword [esp + 0x10]
call fcn.00436f20
add esp, 4
mov dword [esp + 8], eax
mov eax, dword [esp + 0x10]
mov dword [esp + 0x18], 0xbcbdbebf
mov dword [esp + 0x1c], 0
mov dword [esp + 0x1f], 0
mov dword [esp + 4], 0
mov ecx, dword [esp + 4]
cmp ecx, 0xa
ja 0x43c7f1
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov esi, dword [esp + 4]
mov ecx, dword [esp + 4]
movzx edi, byte [esp + ecx + 0x18]
lea ecx, [esi - 0x4ee8d9e8]
mov edx, ecx
and edx, edi
mov ebx, ecx
xor ebx, edi
add esi, 0x18
and esi, edi
or ecx, edi
xor ecx, ebx
mov edi, ecx
and edi, esi
xor ecx, esi
sub edx, edi
sub ebx, ecx
lea ecx, [ebx + edx*2]
mov dword [esp + 0x14], ecx
mov ecx, dword [esp + 0x14]
add cl, 0x58
mov edx, dword [esp + 4]
mov byte [esp + edx + 0x18], cl
inc dword [esp + 4]
mov ecx, dword [esp + 4]
cmp ecx, 0xb
jb 0x43c7a0
mov edi, dword [esp + 0x18]
mov ecx, dword [0x44b1ac]
test ecx, ecx
je 0x43c820
xor edx, edx
mov esi, dword [0x44b1b0]
mov ebx, dword [esp + 8]
nop
nop
nop
nop
nop
cmp dword [esi + edx*8], 0x2286b4e
je 0x43c826
inc edx
cmp ecx, edx
jne 0x43c810
jmp 0x43c850
mov ebx, dword [esp + 8]
jmp 0x43c850
mov ecx, dword [esi + edx*8 + 4]
cmp ecx, edi
je 0x43c850
lea edx, [esp + 0x10]
push edx
push eax
push ebx
push 1
push dword [ebp + 0xc]
push dword [ebp + 8]
push 6
push dword [0x44b1b4]
push ecx
call fcn.00438da0
add esp, 0x24
mov edi, eax
test edi, edi
js 0x43c9bd
mov ecx, dword [ebp + 0x18]
mov esi, dword [ebp + 0x14]
test esi, esi
je 0x43c93c
mov edx, dword [ebp + 0x10]
test edx, edx
je 0x43c935
mov eax, dword [ebx + 0x10]
shr eax, 1
mov esi, dword [esi]
cmp esi, eax
jb 0x43c87e
mov esi, eax
test esi, esi
mov dword [esp + 0xc], edi
je 0x43c929
mov edi, esi
mov esi, ebx
add esi, 0x14
mov eax, edi
and eax, 3
mov dword [esp + 0x28], edi
je 0x43c8b8
nop
nop
nop
nop
dec edi
movzx ecx, word [esi]
xor ebx, ebx
test cx, cx
setne bl
lea esi, [esi + ebx*2]
mov word [edx], cx
add edx, 2
dec eax
jne 0x43c8a0
cmp dword [esp + 0x28], 4
mov ebx, dword [esp + 8]
mov ecx, dword [ebp + 0x18]
jb 0x43c929
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx eax, word [esi]
xor ecx, ecx
test ax, ax
setne cl
mov word [edx], ax
lea eax, [esi + ecx*2]
movzx ecx, word [esi + ecx*2]
xor ebx, ebx
test cx, cx
setne bl
mov word [edx + 2], cx
lea ecx, [eax + ebx*2]
movzx eax, word [eax + ebx*2]
xor ebx, ebx
test ax, ax
setne bl
mov word [edx + 4], ax
lea eax, [ecx + ebx*2]
movzx ecx, word [ecx + ebx*2]
xor ebx, ebx
test cx, cx
setne bl
lea esi, [eax + ebx*2]
mov word [edx + 6], cx
add edx, 8
add edi, 0xfffffffc
jne 0x43c8d0
mov ebx, dword [esp + 8]
mov ecx, dword [ebp + 0x18]
mov word [edx], 0
mov edi, dword [esp + 0xc]
mov esi, dword [ebp + 0x14]
mov eax, dword [ebx + 0x10]
shr eax, 1
mov dword [esi], eax
test ecx, ecx
je 0x43c945
mov eax, dword [ebx + 4]
mov dword [ecx], eax
cmp dword [ebp + 0x20], 0
je 0x43c9bd
cmp dword [ebp + 0x1c], 0
je 0x43c9b5
mov dword [esp + 0xc], edi
mov eax, dword [ebp + 0x20]
mov eax, dword [eax]
mov ecx, dword [ebx + 0xc]
cmp eax, ecx
jb 0x43c963
mov eax, ecx
mov edx, dword [ebx + 8]
add edx, ebx
mov ecx, eax
shr ecx, 2
mov esi, eax
and esi, 0xfffffffc
add esi, edx
mov ebx, dword [ebp + 0x1c]
mov edi, ebx
xchg esi, edx
rep movsd dword es:[edi], dword [esi]
xchg esi, edx
mov ecx, eax
xor ecx, 3
mov edx, eax
or edx, 0xfffffffc
and edx, ecx
add edx, ebx
mov ecx, eax
shr ecx, 1
and ecx, 1
mov ebx, esi
mov edi, edx
xchg esi, ebx
rep movsw word es:[edi], word [esi]
xchg esi, ebx
mov ebx, dword [esp + 8]
test al, 1
mov edi, dword [esp + 0xc]
je 0x43c9b5
and eax, 2
movzx ecx, byte [esi + eax]
mov byte [edx + eax], cl
mov eax, dword [ebx + 0xc]
mov ecx, dword [ebp + 0x20]
mov dword [ecx], eax
push ebx
call fcn.00436ff0
add esp, 4
mov eax, edi
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret