Function at 0x4155bd
Capabilities:
Create pipe

Disassembly:
push 0x2c
push 0x431800
call fcn.00415d20
xor ebx, ebx
mov dword [ebp - 0x1c], ebx
xor eax, eax
mov ecx, dword [ebp + 8]
test ecx, ecx
setne al
test eax, eax
jne 0x4155fb
call fcn.00412f64
mov dword [eax], ebx
call fcn.00412f98
mov dword [eax], 0x16
call fcn.00412069
or eax, 0xffffffff
jmp 0x415840
or dword [ecx + 4], 0xffffffff
or dword [ecx], 0xffffffff
mov edx, dword [ebp + 0x10]
mov eax, edx
and eax, 0xffff3f7f
neg eax
sbb eax, eax
inc eax
je 0x4155dc
mov eax, edx
mov esi, 0xc000
and eax, esi
xor ecx, ecx
cmp eax, esi
setne cl
test ecx, ecx
je 0x4155dc
mov dword [ebp - 0x3c], 0xc
mov dword [ebp - 0x38], ebx
test dl, 0x80
push 0
pop eax
sete al
mov dword [ebp - 0x34], eax
push dword [ebp + 0xc]
lea eax, [ebp - 0x3c]
push eax
lea eax, [ebp - 0x30]
push eax
lea eax, [ebp - 0x2c]
push eax
call dword [sym.imp.KERNEL32.dll_CreatePipe]
test eax, eax
jne 0x415665
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
call fcn.00412f77
pop ecx
jmp 0x4155f3
call fcn.0041e7f2
mov esi, eax
mov dword [ebp - 0x20], esi
cmp esi, 0xffffffff
je 0x415805
mov dword [ebp - 4], ebx
mov edx, esi
sar edx, 5
mov ecx, esi
and ecx, 0x1f
shl ecx, 6
mov eax, dword [edx*4 + 0x43c5d0]
mov byte [eax + ecx + 4], 0x89
mov eax, dword [edx*4 + 0x43c5d0]
and byte [eax + ecx + 0x24], 0x80
mov eax, dword [edx*4 + 0x43c5d0]
and byte [eax + ecx + 0x24], 0x7f
mov dword [ebp - 4], 0xfffffffe
call fcn.004157c4
call fcn.0041e7f2
mov edi, eax
mov dword [ebp - 0x28], edi
cmp edi, 0xffffffff
je 0x4157eb
mov dword [ebp - 0x24], ebx
mov dword [ebp - 4], 1
mov edx, edi
sar edx, 5
mov ecx, edi
and ecx, 0x1f
shl ecx, 6
mov eax, dword [edx*4 + 0x43c5d0]
mov byte [ecx + eax + 4], 0x89
mov eax, dword [edx*4 + 0x43c5d0]
and byte [ecx + eax + 0x24], 0x80
mov eax, dword [edx*4 + 0x43c5d0]
and byte [ecx + eax + 0x24], 0x7f
mov dword [ebp - 4], 0xfffffffe
call fcn.004157d4
lea eax, [ebp - 0x24]
push eax
call fcn.0041eb2c
pop ecx
test eax, eax
jne 0x4157e1
mov eax, 0x8000
mov edx, dword [ebp + 0x10]
test eax, edx
jne 0x41573d
test edx, 0x4000
jne 0x41576f
cmp dword [ebp - 0x24], eax
jne 0x41576f
mov eax, esi
sar eax, 5
mov ecx, esi
and ecx, 0x1f
shl ecx, 6
mov eax, dword [eax*4 + 0x43c5d0]
and byte [eax + ecx + 4], 0x7f
mov eax, edi
sar eax, 5
mov ecx, edi
and ecx, 0x1f
shl ecx, 6
mov eax, dword [eax*4 + 0x43c5d0]
and byte [eax + ecx + 4], 0x7f
test dl, dl
jns 0x4157a5
mov eax, esi
sar eax, 5
mov ecx, esi
and ecx, 0x1f
shl ecx, 6
mov eax, dword [eax*4 + 0x43c5d0]
or byte [eax + ecx + 4], 0x10
mov eax, edi
sar eax, 5
mov ecx, edi
and ecx, 0x1f
shl ecx, 6
mov eax, dword [eax*4 + 0x43c5d0]
or byte [eax + ecx + 4], 0x10
push dword [ebp - 0x2c]
push esi
call fcn.0041ea84
push dword [ebp - 0x30]
push edi
call fcn.0041ea84
add esp, 0x10
mov eax, dword [ebp - 0x1c]
jmp 0x41580b
push ebx
push ebx
push ebx
push ebx
push ebx
call fcn.00412079
mov eax, esi
sar eax, 5
mov ecx, esi
and ecx, 0x1f
shl ecx, 6
mov eax, dword [eax*4 + 0x43c5d0]
mov byte [eax + ecx + 4], bl
jmp 0x415808
mov edi, dword [ebp - 0x28]
xor eax, eax
inc eax
test eax, eax
je 0x415836
call fcn.00412f98
mov dword [eax], 0x18
push dword [ebp - 0x2c]
mov esi, dword [sym.imp.KERNEL32.dll_CloseHandle]
call esi
push dword [ebp - 0x30]
call esi
call fcn.00412f64
mov dword [eax], ebx
jmp 0x4155f3
mov eax, dword [ebp + 8]
mov dword [eax], esi
mov dword [eax + 4], edi
xor eax, eax
call fcn.00415d65
ret