Function at 0x43c340
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 + 0x10], 0xbcbdbebf
mov dword [esp + 0x14], 0
mov dword [esp + 0x17], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 0xa
ja 0x43c3cb
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov edx, dword [esp]
mov eax, dword [esp]
movzx edi, byte [esp + eax + 0x10]
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 + 0xc], eax
mov eax, dword [esp + 0xc]
add al, 0x58
mov ecx, dword [esp]
mov byte [esp + ecx + 0x10], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 0xb
jb 0x43c380
mov edi, dword [esp + 0x10]
mov eax, dword [0x44b1ac]
test eax, eax
je 0x43c419
xor ecx, ecx
mov edx, dword [0x44b1b0]
cmp dword [edx + ecx*8], 0xc58dd7f7
je 0x43c3f0
inc ecx
cmp eax, ecx
jne 0x43c3e0
jmp 0x43c419
mov eax, dword [edx + ecx*8 + 4]
cmp eax, edi
je 0x43c419
lea ecx, [esp + 8]
push ecx
push 0
push 0
push 2
push dword [ebp + 8]
push 5
push dword [0x44b1b4]
push eax
call fcn.00438da0
add esp, 0x20
mov edi, eax
cmp edi, 0xc0000023
jne 0x43c650
push dword [esp + 8]
call fcn.00436f20
add esp, 4
mov dword [esp + 4], eax
mov eax, dword [esp + 8]
mov dword [esp + 0x10], 0xbcbdbebf
mov dword [esp + 0x14], 0
mov dword [esp + 0x17], 0
mov dword [esp], 0
mov ecx, dword [esp]
cmp ecx, 0xa
ja 0x43c4ac
mov esi, dword [esp]
mov ecx, dword [esp]
movzx ebx, byte [esp + ecx + 0x10]
lea ecx, [esi - 0x4ee8d9e8]
mov edx, ecx
and edx, ebx
mov edi, ecx
xor edi, ebx
add esi, 0x18
and esi, ebx
or ecx, ebx
xor ecx, edi
mov ebx, ecx
and ebx, esi
xor ecx, esi
sub edx, ebx
sub edi, ecx
lea ecx, [edi + edx*2]
mov dword [esp + 0xc], ecx
mov ecx, dword [esp + 0xc]
add cl, 0x58
mov edx, dword [esp]
mov byte [esp + edx + 0x10], cl
inc dword [esp]
mov ecx, dword [esp]
cmp ecx, 0xb
jb 0x43c460
mov edi, dword [esp + 0x10]
mov ecx, dword [0x44b1ac]
test ecx, ecx
je 0x43c4e0
xor edx, edx
mov esi, dword [0x44b1b0]
mov ebx, dword [esp + 4]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp dword [esi + edx*8], 0xc58dd7f7
je 0x43c4e6
inc edx
cmp ecx, edx
jne 0x43c4d0
jmp 0x43c50d
mov ebx, dword [esp + 4]
jmp 0x43c50d
mov ecx, dword [esi + edx*8 + 4]
cmp ecx, edi
je 0x43c50d
lea edx, [esp + 8]
push edx
push eax
push ebx
push 2
push dword [ebp + 8]
push 5
push dword [0x44b1b4]
push ecx
call fcn.00438da0
add esp, 0x20
mov edi, eax
test edi, edi
js 0x43c647
mov esi, dword [ebp + 0x14]
mov ecx, dword [ebp + 0x10]
test ecx, ecx
je 0x43c5fc
mov edx, dword [ebp + 0xc]
test edx, edx
je 0x43c5f5
mov eax, dword [ebx + 0x10]
shr eax, 1
mov esi, dword [ecx]
cmp esi, eax
jb 0x43c53b
mov esi, eax
test esi, esi
mov dword [esp + 0x28], edi
je 0x43c5e9
mov edi, esi
mov esi, ebx
add esi, 0x2c
mov eax, edi
and eax, 3
mov dword [esp + 0x24], edi
je 0x43c578
nop
nop
nop
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 0x43c560
cmp dword [esp + 0x24], 4
mov ebx, dword [esp + 4]
mov ecx, dword [ebp + 0x10]
jb 0x43c5e9
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 0x43c590
mov ebx, dword [esp + 4]
mov ecx, dword [ebp + 0x10]
mov word [edx], 0
mov edi, dword [esp + 0x28]
mov esi, dword [ebp + 0x14]
mov eax, dword [ebx + 0x10]
shr eax, 1
mov dword [ecx], eax
mov ecx, dword [ebp + 0x18]
test esi, esi
je 0x43c608
mov eax, dword [ebx + 0x14]
mov dword [esi], eax
mov eax, dword [ebp + 0x1c]
test ecx, ecx
je 0x43c616
mov edx, dword [ebx + 0x18]
shr edx, 1
mov dword [ecx], edx
mov ecx, dword [ebp + 0x20]
test eax, eax
je 0x43c624
mov edx, dword [ebx + 0x1c]
shr edx, 1
mov dword [eax], edx
mov eax, dword [ebp + 0x24]
test ecx, ecx
je 0x43c630
mov edx, dword [ebx + 0x20]
mov dword [ecx], edx
mov ecx, dword [ebp + 0x28]
test eax, eax
je 0x43c63e
mov edx, dword [ebx + 0x24]
shr edx, 1
mov dword [eax], edx
test ecx, ecx
je 0x43c647
mov eax, dword [ebx + 0x28]
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