Function at 0x438f20
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x20
cmp dword [ecx + 8], 0
je 0x438fc7
mov eax, dword [ecx]
test eax, eax
je 0x438fc7
mov dword [esp + 0xc], eax
mov dword [esp + 4], 0x6c6d6e6f
mov byte [esp + 8], 0
xor edi, edi
mov esi, 0xc1c6de16
nop
nop
nop
nop
nop
nop
nop
nop
movzx ebx, byte [esp + edi + 4]
mov eax, edi
or eax, ebx
or eax, 0x3e3921e8
lea edx, [esi + 1]
or edx, ebx
mov ebx, esi
sub ebx, edx
add edx, edi
add edx, 0x3e3921e9
xor edx, eax
and ebx, eax
add ebx, ebx
sub ebx, edx
add bl, 0x78
mov byte [esp + edi + 4], bl
inc edi
dec esi
cmp edi, 5
jne 0x438f60
mov eax, dword [esp + 4]
mov ebx, dword [0x44ce80]
test ebx, ebx
je 0x439094
xor edi, edi
mov esi, dword [0x44ce84]
nop
cmp dword [esi + edi*8], 0x2dedf0b8
je 0x439070
inc edi
cmp ebx, edi
jne 0x438fb0
jmp 0x439094
mov dword [esp + 4], 0xd7161920
mov dword [esp + 8], 0
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + eax + 4]
mov edx, eax
xor edx, 0x188a5af9
mov esi, eax
or esi, 6
and esi, edx
mov edx, esi
and edx, 5
mov edi, eax
and edi, 2
or esi, 2
imul esi, edi
xor edi, 2
imul edi, edx
mov edx, eax
xor edx, 0xe775a506
add edx, esi
add edx, edi
mov esi, ecx
not esi
or esi, edx
add esi, ecx
inc esi
mov ebx, esi
and ebx, 0xfd
mov edi, esi
or edi, 0xfd
inc edi
imul edi, ebx
mov ebx, esi
and ebx, 2
or esi, 2
imul esi, ebx
sub edi, esi
add edx, ecx
add edx, edi
add dl, 0xe2
mov byte [esp + eax + 4], dl
lea ecx, [eax + eax]
and ecx, 2
mov edx, ecx
and edx, eax
or ecx, eax
xor ecx, 1
add ecx, edx
mov eax, ecx
cmp ecx, 8
jb 0x438fe0
mov eax, dword [esp + 4]
jmp 0x439185
mov esi, dword [esi + edi*8 + 4]
cmp esi, eax
je 0x439094
push dword [ebp + 8]
push dword [esp + 0x10]
push 8
push esi
push dword [0x44ce88]
mov esi, ecx
call fcn.0043c030
mov ecx, esi
add esp, 0x14
mov edi, dword [ebp + 0xc]
cmp edi, 1
mov esi, dword [ebp + 0x10]
mov edx, esi
sbb edx, 0
jl 0x439178
cmp eax, 0xc000010a
jne 0x439178
mov edx, 0xffffd8f0
mov eax, edi
mul edx
sub edx, edi
imul esi, esi, 0xffffd8f0
add esi, edx
mov dword [esp + 0x10], eax
mov dword [esp + 0x14], esi
mov eax, dword [ecx]
mov dword [esp + 0xc], eax
mov dword [esp + 4], 0x6c6d6e6f
mov byte [esp + 8], 0
xor eax, eax
mov esi, 0xc1c6de16
nop
nop
nop
nop
nop
nop
nop
nop
movzx ebx, byte [esp + eax + 4]
mov edi, eax
or edi, ebx
or edi, 0x3e3921e8
lea edx, [esi + 1]
or edx, ebx
mov ebx, esi
sub ebx, edx
add edx, eax
add edx, 0x3e3921e9
xor edx, edi
and ebx, edi
add ebx, ebx
sub ebx, edx
add bl, 0x78
mov byte [esp + eax + 4], bl
inc eax
dec esi
cmp eax, 5
jne 0x4390f0
mov eax, dword [esp + 4]
mov esi, dword [0x44ce80]
test esi, esi
je 0x439178
xor edi, edi
mov ebx, dword [0x44ce84]
nop
nop
nop
nop
cmp dword [ebx + edi*8], 0x4e66b5a3
je 0x439150
inc edi
cmp esi, edi
jne 0x439140
jmp 0x439178
mov esi, dword [ebx + edi*8 + 4]
cmp esi, eax
je 0x439178
lea eax, [esp + 0x10]
push eax
push 0
push dword [esp + 0x14]
push 0xc
push esi
push dword [0x44ce88]
mov esi, ecx
call fcn.0043c030
mov ecx, esi
add esp, 0x18
test eax, eax
js 0x439185
mov esi, eax
call fcn.00438e60
mov eax, esi
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret 0xc