Function at 0x404550
Capabilities:
Create pipe
Get disk information
Read .ini file

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x14c
push ebx
push esi
push edi
mov eax, dword [0x55c92c]
mov dword [ebp - 0x10c], eax
mov dword [ebp - 0xbc], 0x5f233
mov ecx, 0xb52d
mov word [ebp - 0xac], cx
mov edx, 0x8ec2
mov word [ebp - 0x80], dx
movzx eax, word [0x55c970]
mov dword [ebp - 0x144], eax
movzx ecx, word [0x55c970]
mov dword [ebp - 0x88], ecx
movzx edx, word [0x55c970]
mov dword [ebp - 0x14], edx
mov eax, dword [ebp - 0x10c]
mov dword [ebp - 0x14c], eax
mov ecx, dword [ebp - 0x14c]
sub ecx, 0x26
mov dword [ebp - 0x14c], ecx
cmp dword [ebp - 0x14c], 0x86
ja case.0x4045e2.1
mov edx, dword [ebp - 0x14c]
movzx eax, byte [edx + 0x404924]
jmp dword [eax*4 + 0x404908]
mov esi, dword [ebp - 0x10c]
xor ecx, ecx
add esi, dword [ebp - 0x70]
mov edi, dword [ebp - 0x6c]
adc edi, ecx
mov edx, dword [ebp - 0x10c]
xor eax, eax
or esi, edx
or edi, eax
push 0
push 0
push 0
call dword [sym.imp.KERNEL32.dll_ReleaseSemaphore]
movzx ecx, byte [ebp - 0x81]
lea edx, [eax + ecx + 0x11bf6]
xor eax, eax
or esi, edx
or edi, eax
mov word [ebp - 0xac], si
jmp 0x4046df
mov dword [ebp - 0xbc], 0x3e28d
jmp 0x4046df
movzx ecx, word [ebp - 0xac]
sub ecx, 0x64953
or ecx, 0xdfb2
mov dword [ebp - 0xbc], ecx
jmp 0x4046df
movzx edx, byte [ebp - 0x81]
and edx, 0x2cc3b
and edx, 0xc8ab9
or edx, dword [ebp - 0x10c]
xor eax, eax
mov ecx, 0x43fc6
sub ecx, dword [ebp - 0x70]
mov esi, 0
sbb esi, dword [ebp - 0x6c]
add ecx, 0x1b23
adc esi, 0
mov edi, dword [ebp - 0x10c]
xor ebx, ebx
add ecx, edi
adc esi, ebx
or edx, ecx
or eax, esi
mov dword [ebp - 0x70], edx
mov dword [ebp - 0x6c], eax
jmp 0x4046df
mov edx, dword [ebp - 0x10c]
add edx, 0x7bc43
mov dword [ebp - 0xbc], edx
jmp 0x4046df
push 0
push 0
call dword [sym.imp.KERNEL32.dll_FindFirstVolumeW]
add eax, 0x33752
mov dword [ebp - 0xbc], eax
jmp 0x4046df
mov dword [ebp - 0x10c], 0x19a97
push 0
push 0
push 0
call dword [sym.imp.KERNEL32.dll_CreateHardLinkA]
mov ecx, dword [ebp - 0x10c]
lea esi, [eax + ecx + 0x5ea79]
push 0
push 0
push 0
call dword [sym.imp.KERNEL32.dll_OpenThread]
add esi, eax
mov dword [ebp - 0x10c], esi
movzx edx, byte [ebp - 0x81]
movzx eax, word [ebp - 0xac]
lea esi, [edx + eax + 0x7f858]
push 0
push 0
push 0
call dword [sym.imp.KERNEL32.dll_OpenJobObjectA]
add eax, 0x7872b
and esi, eax
or esi, dword [ebp - 0x10c]
or esi, 0x44082
mov dword [ebp - 0x10c], esi
mov ecx, dword [ebp - 0x10c]
mov dword [ebp - 0x10c], ecx
push 0
push 0
push 0
push 0
push 0
push 0
push 0
call dword [sym.imp.KERNEL32.dll_DuplicateHandle]
add eax, 0xf3ae
sub eax, dword [ebp - 0x10c]
xor edx, edx
add eax, dword [ebp - 0x70]
adc edx, dword [ebp - 0x6c]
add eax, 0x2f956
adc edx, 0
sub eax, 0x61f4a
sbb edx, 0
mov ecx, dword [ebp - 0x10c]
xor esi, esi
add eax, ecx
adc edx, esi
sub eax, 0x27f5d
sbb edx, 0
mov ecx, dword [ebp - 0x10c]
xor esi, esi
add eax, ecx
adc edx, esi
mov dword [ebp - 0x10c], eax
movzx esi, byte [ebp - 0x81]
call dword [sym.imp.KERNEL32.dll_CreateTimerQueue]
sub esi, eax
and esi, dword [ebp - 0x10c]
or esi, dword [ebp - 0x10c]
mov edx, dword [ebp - 0x10c]
and edx, 0x3d092
or esi, edx
mov eax, dword [ebp - 0x10c]
add eax, dword [ebp - 0x10c]
or esi, eax
push 0
push 0
push 0
push 0
push 0
push 0
push 0
call dword [sym.imp.KERNEL32.dll_GetNamedPipeHandleStateW]
mov edi, eax
push 0
push 0
push 0
push 0
push 0
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStructW]
lea ecx, [edi + eax + 0x417d9]
or esi, ecx
mov dword [ebp - 0x10c], esi
push 0
push 0
push 0
push 0
push 0
push 0
push 0
push 0
call dword [sym.imp.KERNEL32.dll_CreateNamedPipeW]
mov esi, eax
add esi, 0x1671b
and esi, 0
push 0
push 0
call dword [sym.imp.KERNEL32.dll_FindFirstVolumeW]
mov edi, 0x710c4
sub edi, eax
push 0
push 0
push 0
call dword [sym.imp.KERNEL32.dll_GetProcessWorkingSetSize]
sub edi, eax
or esi, edi
mov dword [ebp - 0x10c], esi
mov edx, dword [ebp - 0x10c]
add edx, 0x31455
mov dword [ebp - 0x10c], edx
movzx esi, byte [ebp - 0x81]
add esi, dword [ebp - 0x10c]
push 0
push 0
push 0
call dword [sym.imp.KERNEL32.dll_MapUserPhysicalPagesScatter]
add esi, eax
push 0
call dword [sym.imp.KERNEL32.dll_FindAtomA]
movzx eax, ax
mov ecx, dword [ebp - 0x10c]
sub ecx, eax
or esi, ecx
xor edx, edx
mov eax, 0x55137
sub eax, dword [ebp - 0x70]
mov ecx, 0
sbb ecx, dword [ebp - 0x6c]
or esi, eax
or edx, ecx
mov word [ebp - 0xac], si
push 0
call dword [sym.imp.KERNEL32.dll_GetDriveTypeW]
mov esi, eax
add esi, dword [ebp - 0x10c]
or esi, dword [ebp - 0x10c]
push 0
push 0
call dword [sym.imp.KERNEL32.dll_CreateJobObjectW]
mov edx, dword [ebp - 0x10c]
sub edx, eax
sub edx, 0x7d161
or esi, edx
mov word [ebp - 0xac], si
mov al, byte [ebp - 0x81]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0xc