Function at 0x446170
Capabilities:
Read file on windows

Disassembly:
sub esp, 0x41c
xor eax, eax
push ebp
mov dword [esp + 0xc], eax
push esi
mov dword [esp + 0x14], eax
mov esi, ecx
mov dword [esp + 0x18], eax
lea edx, [esp + 0x10]
mov ecx, dword [esi + 0x1e0]
mov dword [esp + 0x1c], eax
mov dword [esp + 0x20], eax
push edi
lea eax, [esp + 0x10]
mov dword [esp + 0x24], ecx
push edx
mov edx, dword [esi + 0x1bc]
push eax
lea ecx, [esp + 0x30]
push 0x400
xor ebp, ebp
push ecx
push edx
mov dword [esp + 0x24], ebp
call dword [sym.imp.KERNEL32.dll_ReadFile]
test eax, eax
jne 0x44625d
mov edi, dword [sym.imp.KERNEL32.dll_GetLastError]
call edi
cmp eax, 0x3e5
jne 0x44635b
mov eax, dword [esp + 0x434]
test eax, eax
jne 0x4461ed
mov eax, 0x14d
push eax
mov eax, dword [esp + 0x28]
push eax
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
test eax, eax
jne 0x446293
lea ecx, [esp + 0x10]
push eax
mov eax, dword [esi + 0x1bc]
lea edx, [esp + 0x18]
push ecx
push edx
push eax
call dword [sym.imp.KERNEL32.dll_GetOverlappedResult]
test eax, eax
je 0x44627d
mov ecx, dword [esp + 0x430]
mov eax, dword [ecx + 0xd4]
test eax, eax
je 0x44625b
mov al, byte [esp + 0x2a]
test al, al
je 0x44625b
xor edx, edx
cmp byte [ecx + 0xd9], al
sete dl
mov eax, edx
test eax, eax
jne 0x44625b
mov ebp, 0x498
pop edi
mov ax, bp
pop esi
pop ebp
add esp, 0x41c
ret 0xc
xor ebp, ebp
mov eax, dword [esp + 0x10]
test eax, eax
jne 0x4463ac
mov ebp, 0x444
pop edi
mov ax, bp
pop esi
pop ebp
add esp, 0x41c
ret 0xc
call edi
mov ebp, 0x43c
pop edi
mov ax, bp
pop esi
pop ebp
add esp, 0x41c
ret 0xc
cmp eax, 0x102
jne 0x446323
mov eax, dword [esi + 0x1bc]
push eax
call fcn.004443f0
add esp, 4
test eax, eax
je 0x4462eb
mov esi, dword [esi + 0x1b8]
lea ecx, [esp + 0xc]
mov edi, dword [sym.imp.KERNEL32.dll_DeviceIoControl]
push 0
push ecx
push 0
push 0
push 0
push 0
push 0x220008
push esi
mov ebp, 0x444
call edi
test eax, eax
jne 0x4463f4
push eax
lea edx, [esp + 0x10]
jmp 0x44638c
mov esi, dword [esi + 0x1b8]
lea eax, [esp + 0xc]
mov edi, dword [sym.imp.KERNEL32.dll_DeviceIoControl]
push 0
push eax
push 0
push 0
push 0
push 0
push 0x220008
push esi
mov ebp, 0x43c
call edi
test eax, eax
jne 0x4463f4
lea ecx, [esp + 0xc]
push eax
push ecx
jmp 0x44638d
mov esi, dword [esi + 0x1b8]
lea edx, [esp + 0xc]
mov edi, dword [sym.imp.KERNEL32.dll_DeviceIoControl]
push 0
push edx
push 0
push 0
push 0
push 0
push 0x220008
push esi
mov ebp, 0x43c
call edi
test eax, eax
jne 0x4463f4
push eax
lea eax, [esp + 0x10]
push eax
jmp 0x44638d
mov esi, dword [esi + 0x1b8]
lea ecx, [esp + 0xc]
mov edi, dword [sym.imp.KERNEL32.dll_DeviceIoControl]
push 0
push ecx
push 0
push 0
push 0
push 0
push 0x220008
push esi
mov ebp, 0x43c
call edi
test eax, eax
jne 0x4463f4
push eax
lea edx, [esp + 0x10]
push edx
push 0
push 0
push 0
push 0
push 0x220004
push esi
call edi
pop edi
mov ax, bp
pop esi
pop ebp
add esp, 0x41c
ret 0xc
mov esi, dword [esp + 0x42c]
movsx edi, word [esp + 0x28]
mov eax, dword [esi + 4]
test eax, eax
je 0x4463cf
push eax
call sub.MSVCRT.dll_void___cdecl_operator_delete_void__
add esp, 4
mov dword [esi + 4], 0
push edi
call sub.MSVCRT.dll_void____cdecl_operator_new_unsigned_int_
mov dword [esi + 8], edi
mov ecx, edi
mov dword [esi + 4], eax
mov edi, eax
mov eax, ecx
lea esi, [esp + 0x30]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
add esp, 4
and ecx, 3
rep movsb byte es:[edi], byte [esi]
pop edi
mov ax, bp
pop esi
pop ebp
add esp, 0x41c
ret 0xc