Function at 0x414380
Capabilities:
Encode data using xor

Disassembly:
push ecx
mov ecx, dword [esp + 0x18]
mov eax, dword [esp + 8]
mov edx, dword [esp + 0xc]
push ebx
push ebp
push esi
mov ebx, ecx
lea ebp, [ecx + 0x1f1]
mov esi, eax
lea ecx, [eax + 0x2a8]
xor esi, 0x3894
mov dword [esp + 0x14], ecx
add edx, 0xfffffa0e
mov dword [esp + 0x24], esi
xor ebx, 0xa56
mov dword [esp + 0x18], edx
push edi
mov edi, dword [esp + 0x2c]
mov dword [esp + 0x10], ebx
cmp esi, dword [esp + 0x20]
je 0x41452b
mov ecx, dword [0x65c49c]
mov eax, 0xfffffec5
sub eax, dword [ecx + 0x80]
add dword [ecx + 0x24], eax
mov eax, 0x118896
sub eax, dword [edi + 0x54]
add dword [edi + 0x24], eax
mov eax, dword [edi + 0xf8]
cmp eax, dword [0x65c588]
jbe 0x41440a
mov eax, dword [0x65c49c]
mov dword [eax + 0x64], 0x5eb650
xor esi, esi
mov eax, dword [0x65c514]
imul eax, dword [0x65c540]
mov dword [0x65c540], eax
mov eax, dword [edi + 0x64]
mov ebx, dword [esi + eax]
add esi, 4
mov eax, dword [0x65c49c]
imul ebx, dword [0x65c4c4]
mov ecx, dword [eax + 0x18]
mov eax, dword [0x65c4d0]
add eax, 0xfeb9e499
mov edx, ebx
add eax, ecx
shr edx, 0x10
add dword [edi + 0x50], eax
mov eax, dword [0x65c49c]
mov ecx, dword [eax + 0x34]
mov eax, dword [edi + 0x78]
mov byte [ecx + eax], dl
mov edx, ebx
mov eax, dword [0x65c49c]
shr edx, 8
inc dword [eax + 0x34]
mov eax, dword [0x65c49c]
mov ecx, dword [eax + 0x78]
mov eax, dword [edi + 0x34]
mov byte [ecx + eax], dl
inc dword [edi + 0x34]
mov eax, dword [edi + 0x118]
mov ecx, dword [0x65c4d4]
xor eax, 1
imul eax, dword [0x65c580]
mov dword [0x65c580], eax
mov eax, dword [0x65c518]
mov byte [ecx + eax], bl
inc dword [0x65c4d4]
mov eax, dword [0x65c49c]
mov ecx, dword [0x65c534]
sub ecx, dword [eax + 0x80]
sub ecx, 0x4db45
imul ecx, dword [edi + 0xd8]
mov dword [edi + 0xd8], ecx
mov eax, dword [0x65c4a8]
sub eax, dword [edi + 0x108]
mov ecx, dword [0x65c49c]
add eax, 0x1d469d
xor dword [ecx + 0x118], eax
mov eax, dword [0x65c49c]
mov ecx, dword [edi + 0xf8]
sub ecx, dword [eax + 0xc0]
sub ecx, 0x15b649
add dword [edi + 0x18], ecx
cmp esi, 0x6eae0
jl 0x41440c
mov eax, dword [0x65c49c]
mov ecx, dword [edi]
mov ebx, dword [esp + 0x10]
sub ecx, 0x33456b83
mov esi, dword [esp + 0x28]
mov edx, dword [esp + 0x1c]
mov dword [eax + 0x24], ecx
mov ecx, dword [esp + 0x18]
mov dword [edi + 0x64], 0x415120
mov eax, esi
xor eax, 0x3894
cmp ebx, eax
jg 0x4146ea
lea eax, [ecx - 0x11b]
cmp ebx, eax
jge 0x41464d
xor esi, esi
mov eax, dword [0x65c504]
mov ecx, dword [edi + 0x34]
mov ebx, dword [esi + eax]
add esi, 4
imul ebx, dword [0x65c4c4]
mov eax, dword [0x65c518]
mov edx, ebx
shr edx, 8
mov byte [eax + ecx], dl
inc dword [edi + 0x34]
mov ecx, dword [0x65c4d4]
mov eax, dword [0x65c518]
mov byte [ecx + eax], bl
inc dword [0x65c4d4]
mov eax, dword [0x65c49c]
mov eax, dword [eax + 0xa0]
xor eax, dword [edi + 0x94]
xor eax, 0x1e6bfd
mov dword [edi + 0x94], eax
mov eax, dword [0x65c49c]
mov eax, dword [eax + 0x114]
add eax, dword [edi + 0x50]
xor eax, 0x1885af
add dword [0x65c560], eax
mov eax, dword [edi + 0x40]
sub eax, dword [edi + 0x18]
sub eax, 0x19ace0
add dword [edi + 0x50], eax
mov edx, dword [0x65c49c]
mov eax, dword [0x65c574]
add eax, 0xffe77a51
add eax, dword [edx + 0x50]
xor dword [0x65c4f8], eax
mov eax, dword [edi]
sub eax, 0x12384f
imul eax, dword [edx + 0x54]
mov dword [edx + 0x54], eax
mov ecx, dword [0x65c49c]
mov eax, dword [ecx + 0x40]
add eax, dword [edi + 0xe0]
xor eax, 0x10f4ad
imul eax, dword [0x65c4f8]
mov dword [0x65c4f8], eax
mov eax, dword [ecx + 0x54]
sub eax, 0x11a0bc
xor dword [ecx + 0x80], eax
cmp esi, 0x57f48
jl 0x41454a
mov eax, dword [0x65c49c]
mov ecx, dword [edi + 0xc0]
sub ecx, dword [eax + 0x30]
xor ecx, 0xfeb7f2d3
mov dword [edi + 0x24], ecx
xor dword [0x65c4c4], 0xdb4dad2c
jmp 0x4147bc
mov eax, dword [edi + 0x10c]
mov dword [esp + 0x28], eax
mov eax, dword [edi + 0xf0]
add eax, dword [edi + 0x110]
xor eax, ecx
cmp dword [esp + 0x28], eax
jb 0x4147bc
mov eax, esi
sub eax, ebp
xor eax, 0x3aeb
or ebp, edx
mov dword [esp + 0x20], eax
mov ecx, dword [0x65c49c]
mov edx, dword [edi + 8]
push eax
imul edx, edx
mov eax, dword [ecx + 0x9c]
or eax, ebx
or eax, dword [esp + 0x20]
push eax
mov eax, dword [edi + 0xe8]
imul edx, dword [esp + 0x24]
or eax, esi
sub eax, 0x331d
push eax
mov eax, dword [ecx + 0xd4]
push ebp
xor eax, ebx
xor eax, dword [edi + 0x80]
push edx
push eax
call dword [sym.imp.KERNEL32.dll_CreateFileMappingA]
mov eax, dword [edi + 0xf0]
add eax, dword [edi + 0x110]
mov ecx, dword [esp + 0x28]
xor eax, dword [esp + 0x18]
add ecx, 4
cmp ecx, eax
mov dword [esp + 0x28], ecx
mov eax, dword [esp + 0x20]
jae 0x41467e
jmp 0x4147bc
mov eax, dword [0x65c49c]
mov eax, dword [eax + 0x18]
or eax, edx
push eax
call dword [sym.imp.KERNEL32.dll_InitializeCriticalSection]
mov eax, dword [0x65c49c]
mov ecx, dword [edi + 8]
sub ecx, dword [0x65c5ac]
add ecx, dword [0x65c59c]
mov esi, dword [eax + 0x2c]
mov edx, dword [eax + 0xac]
xor esi, ebp
or edx, dword [esp + 0x1c]
mov eax, ebp
push edi
or eax, 0x3894
add edx, ebp
push eax
mov eax, dword [esp + 0x20]
push ecx
xor eax, ebp
push edx
or eax, ebx
push eax
push esi
call fcn.004148e5
mov edx, dword [0x65c49c]
add esp, 0x18
mov dword [esp + 0x1c], eax
mov ecx, dword [edx + 0x108]
or ecx, dword [edi + 0xe8]
and ecx, ebp
push ecx
mov ecx, dword [edx + 0xd4]
add ecx, 0xffffc8bb
add ecx, ebx
push ecx
call dword [sym.imp.KERNEL32.dll_WaitNamedPipeA]
mov eax, dword [0x65c49c]
mov eax, dword [eax + 0x80]
imul eax, dword [edi + 0xd0]
add eax, 0x3a21
push eax
imul eax, dword [0x65c4c8], 0x3881
push eax
mov eax, dword [0x65c4f4]
imul eax, ebp
push eax
mov eax, dword [esp + 0x34]
sub eax, dword [0x65c4e8]
push ebx
push eax
call dword [sym.imp.KERNEL32.dll_MapViewOfFile]
mov eax, dword [0x65c5b0]
sub eax, ebp
and eax, 0x3b3c
push eax
call dword [sym.imp.KERNEL32.dll_UnmapViewOfFile]
mov eax, dword [esp + 0x1c]
pop edi
pop esi
pop ebp
add eax, 0xfffffc45
pop ebx
pop ecx
ret