Function at 0x44670c
Capabilities:
Read file on windows

Disassembly:
push ebx
push edi
mov edx, 0xc
sub esp, 4
mov dword [esp], 0
dec edx
jne 0x446713
call fcn.0057b2e0
mov dword [section..data], 0xa00157
mov dword [section..data], 0xa00164
mov dword [esp + 0x20], 1
mov dword [section..data], 0xa00165
mov byte [esp + 0x24], 0
mov dword [section..data], 0xa00169
mov dword [section..data], 0xa0016b
mov eax, dword [esp + 0x40]
cdq
push edx
push eax
push 0
push 0x800
push dword [esp + 0xc]
push dword [esp + 0xc]
call fcn.0050d000
mov dword [esp], eax
mov dword [esp + 4], edx
pop dword [esp + 4]
pop dword [esp + 4]
mov dword [section..data], 0xa0016d
mov eax, dword [esp + 0x44]
cdq
push edx
push eax
push 0
push 0x800
push dword [esp + 0xc]
push dword [esp + 0xc]
call fcn.0050d000
mov dword [esp], eax
mov dword [esp + 4], edx
pop dword [esp + 0x1c]
pop dword [esp + 0x1c]
mov dword [section..data], 0xa0016f
push 4
push 0x3000
mov eax, dword [esp + 0x20]
push eax
push 0
call sub.KERNEL32.dll_VirtualAlloc
mov dword [esp + 0x28], eax
mov dword [section..data], 0xa00170
cmp dword [esp + 0x28], 0
je 0x446804
xor eax, eax
jmp 0x446809
mov eax, 1
and eax, eax
je 0x4468d6
mov dword [section..data], 0xa00171
push edx
call fcn.0057b460
pop edx
push eax
push 0
push edx
call fcn.0057b460
pop edx
push eax
mov edx, str.ERROR__AllocateMemory_failed__
push edx
call fcn.0057b230
push edx
call fcn.0057b460
pop edx
push eax
push edx
call fcn.0057b460
pop edx
push eax
push dword [esp + 0x30]
push dword [esp + 0x30]
call fcn.0056a320
pop eax
mov edx, 0x680488
push edx
call fcn.0057b230
call sub.KERNEL32.dll_GetLastError
mov ebx, eax
push edx
call fcn.0057b460
pop edx
push eax
push edx
call fcn.0057b460
pop edx
push eax
mov eax, ebx
cdq
push edx
push eax
call fcn.0056a320
pop eax
mov edx, 0x67df2c
push edx
call fcn.0057b230
call fcn.0057b490
mov eax, str.DRVMS_ReadLogicalBlockDrive
push eax
mov eax, str.drive_ms
push eax
call fcn.0050d222
add dword [esp + 8], edx
call fcn.004ae98d
call fcn.0050d240
mov dword [section..data], 0xa00172
mov dword [esp + 0x20], 0xfffffa21
mov dword [section..data], 0xa00173
jmp 0x446e72
mov dword [section..data], 0xa00174
mov dword [section..data], 0xa00176
push 0
lea eax, [esp + 0xc]
push eax
push dword [esp + 0xc]
push dword [esp + 0xc]
push dword [esp + 0x4c]
call sub.KERNEL32.dll_SetFilePointerEx
and eax, eax
je 0x44690d
xor eax, eax
jmp 0x446912
mov eax, 1
and eax, eax
je 0x4469b2
mov dword [section..data], 0xa00177
push edx
call fcn.0057b460
pop edx
push eax
push 0
push edx
call fcn.0057b460
pop edx
push eax
mov edx, str.ERROR__SetFilePointer_failed__ReadPos__
push edx
call fcn.0057b230
push edx
call fcn.0057b460
pop edx
push eax
push edx
call fcn.0057b460
pop edx
push eax
push dword [esp + 0x18]
push dword [esp + 0x18]
call fcn.0056a320
pop eax
mov edx, 0x67df2c
push edx
call fcn.0057b230
call fcn.0057b490
mov eax, str.DRVMS_ReadLogicalBlockDrive
push eax
mov eax, str.drive_ms
push eax
call fcn.0050d222
add dword [esp + 8], edx
call fcn.004ae98d
call fcn.0050d240
mov dword [section..data], 0xa00178
mov dword [esp + 0x20], 0xfffffa20
mov dword [section..data], 0xa00179
jmp 0x446e72
mov dword [section..data], 0xa0017a
mov dword [section..data], 0xa0017c
push dword [esp + 4]
push dword [esp + 4]
pop ebx
pop edi
cmp ebx, dword [esp + 8]
jne 0x4469e0
cmp edi, dword [esp + 0xc]
jne 0x4469e0
xor eax, eax
jmp 0x4469e5
mov eax, 1
or eax, eax
je 0x446aae
mov dword [section..data], 0xa0017d
push edx
call fcn.0057b460
pop edx
push eax
push 0
push edx
call fcn.0057b460
pop edx
push eax
mov edx, str.ERROR__SetFilePointer_failed__ReadPos__
push edx
call fcn.0057b230
push edx
call fcn.0057b460
pop edx
push eax
push edx
call fcn.0057b460
pop edx
push eax
push dword [esp + 0x18]
push dword [esp + 0x18]
call fcn.0056a320
pop eax
mov edx, str.__NewPos__
push edx
call fcn.0057b230
push edx
call fcn.0057b460
pop edx
push eax
push edx
call fcn.0057b460
pop edx
push eax
push dword [esp + 0x20]
push dword [esp + 0x20]
call fcn.0056a320
pop eax
mov edx, 0x67df2c
push edx
call fcn.0057b230
call fcn.0057b490
mov eax, str.DRVMS_ReadLogicalBlockDrive
push eax
mov eax, str.drive_ms
push eax
call fcn.0050d222
add dword [esp + 8], edx
call fcn.004ae98d
call fcn.0050d240
mov dword [section..data], 0xa0017e
mov dword [esp + 0x20], 0xfffffa20
mov dword [section..data], 0xa0017f
jmp 0x446e72
mov dword [section..data], 0xa00180
mov dword [section..data], 0xa00183
push 0
lea eax, [esp + 0x14]
push eax
mov eax, dword [esp + 0x20]
push eax
push dword [esp + 0x34]
push dword [esp + 0x4c]
call sub.KERNEL32.dll_ReadFile
mov dword [esp + 0x20], eax
mov dword [section..data], 0xa00184
call sub.KERNEL32.dll_GetLastError
mov dword [esp + 0x2c], eax
mov dword [section..data], 0xa00186
cmp dword [esp + 0x20], 0
je 0x446b0a
xor eax, eax
jmp 0x446b0f
mov eax, 1
and eax, eax
je 0x446bfe
mov dword [section..data], 0xa00187
push edx
call fcn.0057b460
pop edx
push eax
push 0
push edx
call fcn.0057b460
pop edx
push eax
mov edx, str.ERROR__Couldnt_read_data___Block__
push edx
call fcn.0057b230
push edx
call fcn.0057b460
pop edx
push eax
push edx
call fcn.0057b460
pop edx
push eax
mov eax, dword [esp + 0x54]
cdq
push edx
push eax
call fcn.0056a320
pop eax
mov edx, str.__BlockCnt__
push edx
call fcn.0057b230
push edx
call fcn.0057b460
pop edx
push eax
push edx
call fcn.0057b460
pop edx
push eax
mov eax, dword [esp + 0x58]
cdq
push edx
push eax
call fcn.0056a320
pop eax
mov edx, str.___Last_result__
push edx
call fcn.0057b230
push edx
call fcn.0057b460
pop edx
push eax
push edx
call fcn.0057b460
pop edx
push eax
mov eax, dword [esp + 0x40]
cdq
push edx
push eax
call fcn.0056a320
pop eax
mov edx, 0x67df2c
push edx
call fcn.0057b230
call fcn.0057b490
mov eax, str.DRVMS_ReadLogicalBlockDrive
push eax
mov eax, str.drive_ms
push eax
call fcn.0050d222
add dword [esp + 8], edx
call fcn.004ae98d
call fcn.0050d240
mov dword [section..data], 0xa00188
mov dword [esp + 0x20], 0xfffffa20
mov dword [section..data], 0xa00189
jmp 0x446e72
mov dword [section..data], 0xa0018a
mov dword [section..data], 0xa0018c
push dword [esp + 0x1c]
push dword [esp + 0x1c]
pop ebx
pop edi
cmp ebx, dword [esp + 0x10]
jne 0x446c2c
cmp edi, dword [esp + 0x14]
jne 0x446c2c
xor eax, eax
jmp 0x446c31
mov eax, 1
or eax, eax
je 0x446d27
mov dword [section..data], 0xa0018d
push edx
call fcn.0057b460
pop edx
push eax
push 0
push edx
call fcn.0057b460
pop edx
push eax
mov edx, str.ERROR__Couldnt_read_requested_number_of_bytes___
push edx
call fcn.0057b230
push edx
call fcn.0057b460
pop edx
push eax
push edx
call fcn.0057b460
pop edx
push eax
push dword [esp + 0x30]
push dword [esp + 0x30]
call fcn.0056a320
pop eax
mov edx, 0x67d488
push edx
call fcn.0057b230
push edx
call fcn.0057b460
pop edx
push eax
push edx
call fcn.0057b460
pop edx
push eax
push dword [esp + 0x28]
push dword [esp + 0x28]
call fcn.0056a320
pop eax
mov edx, str.__Last_result__
push edx
call fcn.0057b230
call sub.KERNEL32.dll_GetLastError
mov ebx, eax
push edx
call fcn.0057b460
pop edx
push eax
push edx
call fcn.0057b460
pop edx
push eax
mov eax, ebx
cdq
push edx
push eax
call fcn.0056a320
pop eax
mov edx, 0x67df2c
push edx
call fcn.0057b230
call fcn.0057b490
mov eax, str.DRVMS_ReadLogicalBlockDrive
push eax
mov eax, str.drive_ms
push eax
call fcn.0050d222
add dword [esp + 8], edx
call fcn.004ae98d
call fcn.0050d240
mov dword [section..data], 0xa0018e
mov dword [esp + 0x20], 0xfffffa1f
mov dword [section..data], 0xa0018f
jmp 0x446e72
mov dword [section..data], 0xa00190
mov dword [section..data], 0xa00194
mov ebx, dword [esp + 0x48]
and ebx, ebx
jne 0x446e2f
mov dword [section..data], 0xa00195
mov byte [esp + 0x24], 1
mov dword [section..data], 0xa00196
mov eax, dword [esp + 0x18]
push eax
call fcn.0057abd0
mov dword [esp + 0x48], eax
mov dword [section..data], 0xa00197
cmp dword [esp + 0x48], 0
je 0x446d83
xor eax, eax
jmp 0x446d88
mov eax, 1
and eax, eax
je 0x446e25
mov dword [section..data], 0xa00198
push edx
call fcn.0057b460
pop edx
push eax
push 0
push edx
call fcn.0057b460
pop edx
push eax
mov edx, str.ERROR__Allocating_memory_failed____
push edx
call fcn.0057b230
push edx
call fcn.0057b460
pop edx
push eax
push edx
call fcn.0057b460
pop edx
push eax
push dword [esp + 0x30]
push dword [esp + 0x30]
call fcn.0056a320
pop eax
mov edx, str.__bytes_
push edx
call fcn.0057b230
call fcn.0057b490
mov eax, str.DRVMS_ReadLogicalBlockDrive
push eax
mov eax, str.drive_ms
push eax
call fcn.0050d222
add dword [esp + 8], edx
call fcn.004ae98d
call fcn.0050d240
mov dword [section..data], 0xa00199
mov dword [esp + 0x20], 0xfffffa21
mov dword [section..data], 0xa0019a
jmp 0x446e72
mov dword [section..data], 0xa0019b
mov dword [section..data], 0xa0019c
mov dword [section..data], 0xa0019e
mov eax, dword [esp + 0x18]
push eax
push dword [esp + 0x4c]
push dword [esp + 0x30]
call fcn.0057acd0
mov dword [section..data], 0xa001a0
push dword [esp + 0x48]
pop eax
mov dword [esp + 0x20], eax
mov dword [section..data], 0xa001a2
mov dword [section..data], 0xa001a4
cmp dword [esp + 0x28], 0
je 0x446ef3
mov dword [section..data], 0xa001a5
push 0x8000
push 0
push dword [esp + 0x30]
call sub.KERNEL32.dll_VirtualFree
and eax, eax
je 0x446ea8
xor eax, eax
jmp 0x446ead
mov eax, 1
and eax, eax
je 0x446ee9
mov dword [section..data], 0xa001a6
push 0
mov eax, str.ERROR__VirtualFree_failed_
push eax
mov eax, str.DRVMS_ReadLogicalBlockDrive
push eax
mov eax, str.drive_ms
push eax
call fcn.004ae98d
mov dword [section..data], 0xa001a7
mov dword [esp + 0x20], 0xfffffa21
mov dword [section..data], 0xa001a8
mov dword [section..data], 0xa001a9
mov dword [section..data], 0xa001ab
mov ebx, dword [esp + 0x20]
cmp ebx, 1
jge 0x446f1e
cmp dword [esp + 0x48], 0
je 0x446f1e
mov eax, 1
jmp 0x446f20
xor eax, eax
and eax, eax
je 0x446f32
cmp byte [esp + 0x24], 0
je 0x446f32
mov eax, 1
jmp 0x446f34
xor eax, eax
and eax, eax
je 0x446f4b
mov dword [section..data], 0xa001ac
push dword [esp + 0x48]
call fcn.0057ad30
mov dword [section..data], 0xa001ad
mov dword [section..data], 0xa001af
mov eax, dword [esp + 0x20]
jmp 0x446f71
add esp, 0x30
pop edi
pop ebx
ret 0x10