Function at 0x100f6d2d
Capabilities:
Connect pipe
Create pipe
Create thread

Disassembly:
push 0xc0
mov eax, 0x10139dcf
call fcn.101108dc
mov edi, ecx
mov esi, dword [ebp + 0xc]
lea eax, [edi + 0x20]
push eax
mov dword [ebp - 0x24], eax
call dword [sym.imp.kernel32.dll_EnterCriticalSection]
mov eax, dword [ebp + 0x18]
test eax, eax
je 0x100f6d64
mov dword [edi + 0x94], eax
mov eax, dword [ebp + 0x1c]
mov dword [edi + 0x98], eax
cmp byte [edi + 0x91], 0
je 0x100f6d74
push 5
jmp 0x100f72eb
lea ecx, [edi + 0x9c]
call fcn.100f7735
push 0x1014ad1c
mov ecx, esi
call fcn.1003a3c0
test eax, eax
je 0x100f72e9
push esi
lea eax, [ebp - 0x3c]
push str..pipe_
push eax
call fcn.1003a3c0
add esp, 0xc
mov ecx, edi
push eax
call fcn.1003a3c0
lea ecx, [ebp - 0x3c]
call fcn.10015273
mov eax, dword [ebp + 8]
push 0
pop esi
sub eax, 1
je 0x100f70d9
sub eax, 1
je 0x100f6fdf
sub eax, 1
je 0x100f6e96
sub eax, 1
jne 0x100f72e9
xor ebx, ebx
mov dword [edi + 0x18], 3
push 0xa
inc ebx
pop ecx
cmp byte [ebp + 0x10], al
je 0x100f6e05
mov eax, dword [ebp + 0x14]
xor edx, edx
div ecx
mov dword [ebp - 0x18], eax
cmp eax, ebx
jl 0x100f7283
jmp 0x100f6e08
mov dword [ebp - 0x18], ebx
mov dword [ebp - 0x1c], ebx
or esi, 0xffffffff
push str._OUT
lea eax, [ebp - 0x54]
push edi
push eax
call fcn.1003a3c0
add esp, 0xc
cmp dword [eax + 0x14], 8
mov dword [ebp - 4], 5
jb 0x100f6e2f
mov eax, dword [eax]
xor ecx, ecx
push ecx
push 0x80
push 3
push ecx
push ecx
push SysReAllocString
push eax
call dword [sym.imp.kernel32.dll_CreateFileW]
lea ecx, [ebp - 0x54]
mov dword [ebp - 0x20], eax
mov dword [ebp - 4], esi
call fcn.10015273
call dword [sym.imp.kernel32.dll_GetLastError]
mov eax, dword [ebp - 0x20]
cmp eax, esi
je 0x100f6e66
test eax, eax
jne 0x100f6e8b
mov eax, dword [ebp - 0x1c]
cmp eax, dword [ebp - 0x18]
je 0x100f72da
push 0xa
call dword [sym.imp.kernel32.dll_Sleep]
mov eax, dword [ebp - 0x1c]
inc eax
mov dword [ebp - 0x1c], eax
cmp eax, dword [ebp - 0x18]
jle 0x100f6e0e
jmp 0x100f7283
mov dword [edi + 0xc8], eax
jmp 0x100f7283
xor ebx, ebx
mov dword [edi + 0x18], 3
push 0xa
inc ebx
cmp byte [ebp + 0x10], 0
pop ecx
je 0x100f6ebd
mov eax, dword [ebp + 0x14]
xor edx, edx
div ecx
mov dword [ebp - 0x1c], eax
cmp eax, ebx
jl 0x100f7283
jmp 0x100f6ec0
mov dword [ebp - 0x1c], ebx
mov dword [ebp - 0x18], ebx
or esi, 0xffffffff
mov eax, dword [edi + 0xc8]
cmp eax, esi
je 0x100f6ed4
test eax, eax
jne 0x100f6f2b
and dword [edi + 0xc8], 0
lea eax, [ebp - 0x6c]
push str._OUT
push edi
push eax
call fcn.1003a3c0
add esp, 0xc
mov ecx, eax
cmp dword [ecx + 0x14], 8
push 3
pop eax
mov dword [ebp - 4], eax
jb 0x100f6efd
mov ecx, dword [ecx]
xor edx, edx
push edx
push 0x80
push eax
push edx
push edx
push SysReAllocString
push ecx
call dword [sym.imp.kernel32.dll_CreateFileW]
lea ecx, [ebp - 0x6c]
mov dword [edi + 0xc8], eax
mov dword [ebp - 4], esi
call fcn.10015273
call dword [sym.imp.kernel32.dll_GetLastError]
mov eax, dword [edi + 0xcc]
cmp eax, esi
je 0x100f6f39
test eax, eax
jne 0x100f6f96
and dword [edi + 0xcc], 0
lea eax, [ebp - 0x84]
push 0x101a1f74
push edi
push eax
call fcn.1003a3c0
add esp, 0xc
cmp dword [eax + 0x14], 8
mov dword [ebp - 4], 4
jb 0x100f6f64
mov eax, dword [eax]
xor ecx, ecx
push ecx
push 0x80
push 3
push ecx
push ecx
push 0x40000000
push eax
call dword [sym.imp.kernel32.dll_CreateFileW]
lea ecx, [ebp - 0x84]
mov dword [edi + 0xcc], eax
mov dword [ebp - 4], esi
call fcn.10015273
call dword [sym.imp.kernel32.dll_GetLastError]
mov eax, dword [edi + 0xc8]
cmp eax, esi
je 0x100f6fb6
test eax, eax
je 0x100f6fb6
mov eax, dword [edi + 0xcc]
cmp eax, esi
je 0x100f6fb6
test eax, eax
jne 0x100f7283
mov eax, dword [ebp - 0x18]
cmp eax, dword [ebp - 0x1c]
je 0x100f72c1
push 0xa
call dword [sym.imp.kernel32.dll_Sleep]
mov ecx, dword [ebp - 0x18]
inc ecx
mov dword [ebp - 0x18], ecx
cmp ecx, dword [ebp - 0x1c]
jle 0x100f6ec6
jmp 0x100f7283
push str._OUT
xor ebx, ebx
lea eax, [ebp - 0x9c]
push edi
inc ebx
push eax
mov dword [edi + 0x18], ebx
call fcn.1003a3c0
add esp, 0xc
mov ecx, eax
cmp dword [ecx + 0x14], 8
push 2
pop edx
mov dword [ebp - 4], edx
jb 0x100f700a
mov ecx, dword [ecx]
push esi
push esi
mov eax, 0x3e8000
push eax
push eax
push ebx
push ebx
push edx
push ecx
call dword [sym.imp.kernel32.dll_CreateNamedPipeW]
or esi, 0xffffffff
mov dword [ebp - 0x20], eax
lea ecx, [ebp - 0x9c]
mov dword [ebp - 4], esi
call fcn.10015273
call dword [sym.imp.kernel32.dll_GetLastError]
mov eax, dword [ebp - 0x20]
cmp eax, esi
je 0x100f72da
test eax, eax
je 0x100f72da
cmp byte [ebp + 0x10], 0
mov ecx, 0x1f4
mov dword [edi + 0xcc], eax
je 0x100f706d
mov eax, dword [ebp + 0x14]
xor edx, edx
div ecx
xor esi, esi
mov dword [ebp - 0x18], eax
test eax, eax
jle 0x100f70ba
jmp 0x100f7074
mov dword [ebp - 0x18], 0x14
xor esi, esi
push 0
push dword [edi + 0xcc]
inc esi
mov dword [ebp - 0x1c], esi
call dword [sym.imp.kernel32.dll_ConnectNamedPipe]
test eax, eax
jne 0x100f70bd
call dword [sym.imp.kernel32.dll_GetLastError]
lea esi, [eax - 0x217]
neg esi
sbb esi, esi
call dword [sym.imp.kernel32.dll_GetLastError]
add esi, 1
jne 0x100f70c5
push 0x1f4
call dword [sym.imp.kernel32.dll_Sleep]
mov esi, dword [ebp - 0x1c]
cmp esi, dword [ebp - 0x18]
jl 0x100f7076
inc esi
jmp 0x100f70c8
call dword [sym.imp.kernel32.dll_GetLastError]
jmp 0x100f70c8
mov esi, dword [ebp - 0x1c]
mov eax, dword [ebp - 0x18]
inc eax
cmp eax, esi
jne 0x100f7283
jmp 0x100f7240
push str._OUT
xor ebx, ebx
lea eax, [ebp - 0xb4]
push edi
inc ebx
push eax
mov dword [edi + 0x18], ebx
call fcn.1003a3c0
add esp, 0xc
mov ecx, eax
cmp dword [ecx + 0x14], 8
mov dword [ebp - 4], esi
jb 0x100f7101
mov ecx, dword [ecx]
push esi
push esi
mov eax, 0x3e8000
push eax
push eax
push ebx
push ebx
push 2
push ecx
call dword [sym.imp.kernel32.dll_CreateNamedPipeW]
or esi, 0xffffffff
mov dword [ebp - 0x20], eax
lea ecx, [ebp - 0xb4]
mov dword [ebp - 4], esi
call fcn.10015273
call dword [sym.imp.kernel32.dll_GetLastError]
mov eax, dword [ebp - 0x20]
cmp eax, esi
je 0x100f72da
test eax, eax
je 0x100f72da
push 0x101a1f74
mov dword [edi + 0xcc], eax
lea eax, [ebp - 0xcc]
push edi
push eax
call fcn.1003a3c0
add esp, 0xc
mov ecx, eax
cmp dword [ecx + 0x14], 8
mov dword [ebp - 4], ebx
jb 0x100f716a
mov ecx, dword [ecx]
push 0
push 0
mov eax, 0x3e8000
push eax
push eax
push ebx
push ebx
push ebx
push ecx
call dword [sym.imp.kernel32.dll_CreateNamedPipeW]
lea ecx, [ebp - 0xcc]
mov dword [ebp - 0x20], eax
mov dword [ebp - 4], esi
call fcn.10015273
call dword [sym.imp.kernel32.dll_GetLastError]
mov eax, dword [ebp - 0x20]
cmp eax, esi
je 0x100f72c1
test eax, eax
je 0x100f72c1
cmp byte [ebp + 0x10], 0
mov ecx, 0x1f4
mov dword [edi + 0xc8], eax
je 0x100f71cc
mov eax, dword [ebp + 0x14]
xor edx, edx
div ecx
xor esi, esi
mov dword [ebp - 0x18], eax
test eax, eax
jle 0x100f7219
jmp 0x100f71d3
mov dword [ebp - 0x18], 0x14
xor esi, esi
push 0
push dword [edi + 0xc8]
inc esi
mov dword [ebp - 0x1c], esi
call dword [sym.imp.kernel32.dll_ConnectNamedPipe]
test eax, eax
jne 0x100f721c
call dword [sym.imp.kernel32.dll_GetLastError]
lea esi, [eax - 0x217]
neg esi
sbb esi, esi
call dword [sym.imp.kernel32.dll_GetLastError]
add esi, 1
jne 0x100f7224
push 0x1f4
call dword [sym.imp.kernel32.dll_Sleep]
mov esi, dword [ebp - 0x1c]
cmp esi, dword [ebp - 0x18]
jl 0x100f71d5
inc esi
jmp 0x100f7227
call dword [sym.imp.kernel32.dll_GetLastError]
jmp 0x100f7227
mov esi, dword [ebp - 0x1c]
xor eax, eax
push eax
push eax
push eax
push dword [edi + 0xc8]
call dword [sym.imp.kernel32.dll_SetNamedPipeHandleState]
mov eax, dword [ebp - 0x18]
inc eax
cmp eax, esi
jne 0x100f724e
mov ecx, edi
call fcn.100f6cb0
push 4
jmp 0x100f72eb
push 0
push dword [edi + 0xcc]
call dword [sym.imp.kernel32.dll_ConnectNamedPipe]
test eax, eax
je 0x100f7268
call dword [sym.imp.kernel32.dll_GetLastError]
jmp 0x100f7283
call dword [sym.imp.kernel32.dll_GetLastError]
lea esi, [eax - 0x217]
neg esi
sbb esi, esi
call dword [sym.imp.kernel32.dll_GetLastError]
add esi, 1
je 0x100f72c1
cmp dword [ebp + 8], 2
mov byte [edi + 0x91], bl
je 0x100f72cc
lea eax, [ebp - 0x14]
mov byte [edi + 0x90], bl
push eax
xor ebx, ebx
push ebx
push edi
push 0x100f7300
push ebx
push ebx
mov dword [ebp - 0x14], ebx
call dword [sym.imp.kernel32.dll_CreateThread]
mov dword [edi + 0x1c], eax
call dword [sym.imp.kernel32.dll_GetLastError]
cmp dword [edi + 0x1c], ebx
jne 0x100f72cc
mov byte [edi + 0x90], bl
mov ecx, edi
call fcn.100f6cb0
push 0xfffffffffffffffa
jmp 0x100f72eb
lea eax, [edi + 0x20]
push eax
call dword [sym.imp.kernel32.dll_LeaveCriticalSection]
xor eax, eax
jmp 0x100f72f8
lea eax, [edi + 0x20]
push eax
call dword [sym.imp.kernel32.dll_LeaveCriticalSection]
push 0xfffffffffffffffa
pop eax
jmp 0x100f72f8
push 0xfffffffffffffff9
mov eax, dword [ebp - 0x24]
pop esi
push eax
call dword [sym.imp.kernel32.dll_LeaveCriticalSection]
mov eax, esi
call fcn.10110886
ret 0x18