Function at 0x6d6020
Capabilities:
Read file on windows

Disassembly:
push ebp
push edi
push esi
push ebx
sub esp, 0x4c
mov eax, dword [esp + 0x60]
mov dword [esp + 0x3c], 0
mov ebx, dword [eax]
mov eax, dword [ebx + 4]
lea esi, [ebx + 0x120]
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x60]
cmp dword [eax + 4], 0xe
je 0x6d6068
mov dword [esp + 8], 0x3bc
mov dword [esp + 4], str.src_win_pipe.c
mov dword [esp], str.req__type__UV_READ
call dbg._assert
cmp dword [ebx + 8], 7
je 0x6d608a
mov dword [esp + 8], 0x3bd
mov dword [esp + 4], str.src_win_pipe.c
mov dword [esp], str.handle__type__UV_NAMED_PIPE
call dbg._assert
mov eax, dword [ebx + 0x2c]
test eax, 0x4000000
jne 0x6d6233
test ah, 1
je 0x6d6220
lea edi, [esp + 0x38]
jmp 0x6d6107
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0x3e3
jne 0x6d6160
mov ecx, dword [ebx + 0x2c]
test ecx, 0x4000000
je 0x6d62e0
and ch, 1
je 0x6d6220
mov dword [ebx + 0x138], 0
mov dword [esp], esi
call sym._uv_mutex_lock
mov eax, dword [esp + 0x3c]
mov dword [ebx + 0x138], eax
mov dword [esp], esi
call sym._uv_mutex_unlock
test byte [ebx + 0x2d], 1
je 0x6d6220
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], edi
mov dword [esp + 8], 0
mov dword [esp + 4], 0x9479cc
mov eax, dword [ebx + 0x94]
mov dword [esp], eax
call dword [sym.imp.KERNEL32.dll_ReadFile]
sub esp, 0x14
test eax, eax
mov ebp, eax
je 0x6d60b0
mov eax, dword [esp + 0x3c]
test eax, eax
je 0x6d61de
mov edx, dword [ebx + 0x138]
cmp edx, eax
je 0x6d62b1
mov edx, 0x3e3
jmp 0x6d6178
mov edx, eax
mov eax, dword [esp + 0x3c]
test eax, eax
je 0x6d61ca
mov edi, dword [ebx + 0x138]
cmp eax, edi
je 0x6d62fc
mov dword [esp + 8], 0x3e6
mov dword [esp + 4], str.src_win_pipe.c
mov dword [esp], str.hThread__handle__pipe.conn.readfile_thread
mov dword [esp + 0x2c], edx
call dbg._assert
mov dword [ebx + 0x138], 0
mov dword [esp], esi
call sym._uv_mutex_lock
mov eax, dword [esp + 0x3c]
mov dword [esp], eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
sub esp, 4
mov dword [esp], esi
call sym._uv_mutex_unlock
test ebp, ebp
mov edx, dword [esp + 0x2c]
jne 0x6d61de
test edx, edx
jle 0x6d61d7
movzx edx, dx
or edx, 0x80070000
mov eax, dword [esp + 0x60]
mov dword [eax + 0x20], edx
mov eax, dword [esp + 0x60]
mov dword [esp + 8], 0
mov dword [esp + 4], 0
add eax, 0x20
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0x28]
mov eax, dword [eax + 0x1c]
mov dword [esp], eax
call dword [sym.imp.KERNEL32.dll_PostQueuedCompletionStatus]
sub esp, 0x10
test eax, eax
je 0x6d6333
add esp, 0x4c
xor eax, eax
pop ebx
pop esi
pop edi
pop ebp
ret 4
mov eax, dword [esp + 0x3c]
mov ebp, 1
test eax, eax
jne 0x6d614b
jmp 0x6d61de
mov dword [esp], esi
call sym._uv_mutex_lock
mov edi, dword [sym.imp.KERNEL32.dll_GetCurrentProcess]
call edi
mov dword [esp + 0x2c], eax
call dword [sym.imp.KERNEL32.dll_GetCurrentThread]
mov ebp, eax
call edi
mov edx, dword [esp + 0x2c]
lea ecx, [esp + 0x3c]
mov dword [esp + 0x18], 2
mov dword [esp + 0x14], 0
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], ecx
mov dword [esp + 4], ebp
mov dword [esp + 8], edx
mov dword [esp], eax
call dword [sym.imp.KERNEL32.dll_DuplicateHandle]
sub esp, 0x1c
test eax, eax
jne 0x6d62a5
mov dword [esp + 0x3c], 0
mov dword [esp], esi
call sym._uv_mutex_unlock
mov eax, dword [ebx + 0x2c]
jmp 0x6d6098
mov eax, dword [esp + 0x3c]
mov dword [ebx + 0x138], eax
jmp 0x6d6295
mov dword [ebx + 0x138], 0
mov dword [esp], esi
call sym._uv_mutex_lock
mov eax, dword [esp + 0x3c]
mov dword [esp], eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
sub esp, 4
mov dword [esp], esi
call sym._uv_mutex_unlock
jmp 0x6d61de
mov edx, eax
mov eax, dword [esp + 0x3c]
test eax, eax
je 0x6d61ce
mov edi, dword [ebx + 0x138]
cmp eax, edi
jne 0x6d6178
mov dword [ebx + 0x138], 0
mov dword [esp], esi
mov dword [esp + 0x2c], edx
call sym._uv_mutex_lock
mov eax, dword [esp + 0x3c]
mov dword [esp], eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
sub esp, 4
mov dword [esp], esi
call sym._uv_mutex_unlock
mov edx, dword [esp + 0x2c]
jmp 0x6d61ca
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov dword [esp + 4], 0x869ecd
mov dword [esp], eax
call dbg.uv_fatal_error
lea esi, [esi]