Function at 0x551e39
Capabilities:
Read file on windows

Disassembly:
push ebp
mov ebp, esp
add esp, 0xffffffd4
push ebx
mov eax, dword [ebp + 0x10]
shl eax, 5
mov edx, dword [ebp + 8]
mov ecx, dword [edx + 0x1e8]
mov eax, dword [ecx + eax + 0x10]
mov dword [ebp - 4], eax
mov edx, dword [ebp + 8]
mov ecx, dword [edx + 0x466fc]
test ecx, ecx
jne 0x551f08
mov eax, dword [ebp + 0x10]
shl eax, 5
mov edx, dword [ebp + 8]
mov ecx, dword [edx + 0x1e8]
mov edx, dword [ecx + eax + 8]
mov dword [ebp - 0xc], edx
mov edx, dword [ecx + eax + 0xc]
mov dword [ebp - 8], edx
push 0
lea eax, [ebp - 8]
push eax
push dword [ebp - 0xc]
mov ecx, dword [ebp + 8]
push dword [ecx + 0x108]
call sub.KERNEL32.DLL_SetFilePointer
mov dword [ebp - 0x10], eax
mov eax, dword [ebp - 0x10]
cmp eax, 0xffffffff
jne 0x551eb7
call sub.KERNEL32.DLL_GetLastError
test eax, eax
je 0x551eb7
or eax, 0xffffffff
jmp 0x55218a
push 0
lea edx, [ebp - 0x18]
push edx
push dword [ebp - 4]
push dword [ebp + 0xc]
mov ecx, dword [ebp + 8]
push dword [ecx + 0x108]
call sub.KERNEL32.DLL_ReadFile
mov eax, dword [ebp - 0x18]
mov edx, dword [ebp - 4]
cmp eax, edx
je 0x551ee3
or eax, 0xffffffff
jmp 0x55218a
mov edx, dword [ebp + 8]
mov cl, byte [edx + 0x120]
test cl, cl
je 0x551f01
push dword [ebp - 4]
push dword [ebp + 0xc]
push dword [ebp + 8]
call fcn.00553f74
add esp, 0xc
xor eax, eax
jmp 0x55218a
mov edx, dword [ebp + 8]
mov ecx, dword [edx + 0x466f8]
shl ecx, 2
lea ecx, [ecx + ecx*8]
mov eax, dword [ebp + 8]
mov edx, dword [eax + ecx*8 + 0x2fc]
mov ecx, dword [ebp + 0x10]
cmp edx, ecx
jg 0x551f48
mov eax, dword [ebp + 8]
mov edx, dword [eax + 0x466f8]
shl edx, 2
lea edx, [edx + edx*8]
mov ecx, dword [ebp + 8]
mov eax, dword [ecx + edx*8 + 0x300]
mov edx, dword [ebp + 0x10]
cmp eax, edx
jge 0x551f62
push dword [ebp + 0x10]
push dword [ebp + 8]
call fcn.00551d6e
add esp, 8
test eax, eax
jne 0x551f62
or eax, 0xffffffff
jmp 0x55218a
mov edx, dword [ebp + 8]
mov ecx, dword [edx + 0x10c]
cmp ecx, 0xffffffff
jne 0x551f82
mov eax, dword [ebp + 8]
mov edx, dword [eax + 0x108]
mov ecx, dword [ebp + 8]
mov dword [ecx + 0x10c], edx
mov eax, dword [ebp + 0x10]
shl eax, 5
mov edx, dword [ebp + 8]
mov ecx, dword [edx + 0x1e8]
mov edx, dword [ecx + eax + 0xc]
mov eax, dword [ecx + eax + 8]
mov ecx, dword [ebp + 8]
mov ecx, dword [ecx + 0x466f8]
shl ecx, 2
lea ecx, [ecx + ecx*8]
mov ebx, dword [ebp + 8]
mov ecx, dword [ebx + ecx*8 + 0x2fc]
shl ecx, 5
mov ebx, dword [ebp + 8]
mov ebx, dword [ebx + 0x1e8]
sub eax, dword [ebx + ecx + 8]
sbb edx, dword [ebx + ecx + 0xc]
mov dword [ebp - 0x24], eax
mov dword [ebp - 0x20], edx
mov eax, dword [ebp + 8]
mov edx, dword [eax + 0x466f8]
shl edx, 2
lea edx, [edx + edx*8]
mov ecx, dword [ebp + 8]
mov eax, dword [ecx + edx*8 + 0x308]
cdq
add eax, dword [ebp - 0x24]
adc edx, dword [ebp - 0x20]
mov dword [ebp - 0xc], eax
mov dword [ebp - 8], edx
push 0
lea ecx, [ebp - 8]
push ecx
push dword [ebp - 0xc]
mov eax, dword [ebp + 8]
push dword [eax + 0x10c]
call sub.KERNEL32.DLL_SetFilePointer
mov dword [ebp - 0x10], eax
mov edx, dword [ebp - 0x10]
cmp edx, 0xffffffff
jne 0x552025
call sub.KERNEL32.DLL_GetLastError
test eax, eax
je 0x552025
or eax, 0xffffffff
jmp 0x55218a
mov edx, dword [ebp + 8]
mov ecx, dword [edx + 0x466f8]
shl ecx, 2
lea ecx, [ecx + ecx*8]
mov eax, dword [ebp + 8]
mov edx, dword [eax + ecx*8 + 0x300]
mov ecx, dword [ebp + 0x10]
cmp edx, ecx
jne 0x552141
mov eax, dword [ebp + 8]
mov edx, dword [eax + 0x466f8]
shl edx, 2
lea edx, [edx + edx*8]
mov ecx, dword [ebp + 8]
mov eax, dword [ecx + edx*8 + 0x30c]
mov dword [ebp - 0x2c], eax
mov edx, dword [ebp - 4]
mov ecx, dword [ebp - 0x2c]
sub edx, ecx
mov dword [ebp - 0x28], edx
push 0
lea eax, [ebp - 0x18]
push eax
push dword [ebp - 0x28]
push dword [ebp + 0xc]
mov edx, dword [ebp + 8]
push dword [edx + 0x10c]
call sub.KERNEL32.DLL_ReadFile
mov ecx, dword [ebp - 0x18]
mov eax, dword [ebp - 0x28]
cmp ecx, eax
je 0x55209c
or eax, 0xffffffff
jmp 0x55218a
mov edx, dword [ebp - 0x2c]
test edx, edx
jbe 0x55216a
push dword [ebp + 8]
call fcn.00551dfb
pop ecx
test eax, eax
jne 0x5520bc
or eax, 0xffffffff
jmp 0x55218a
mov edx, dword [ebp + 8]
mov ecx, dword [edx + 0x466f8]
shl ecx, 2
lea ecx, [ecx + ecx*8]
mov eax, dword [ebp + 8]
mov eax, dword [eax + ecx*8 + 0x308]
mov edx, dword [ebp - 0x2c]
sub eax, edx
xor edx, edx
mov dword [ebp - 0xc], eax
mov dword [ebp - 8], edx
push 0
lea ecx, [ebp - 8]
push ecx
push dword [ebp - 0xc]
mov eax, dword [ebp + 8]
push dword [eax + 0x10c]
call sub.KERNEL32.DLL_SetFilePointer
mov dword [ebp - 0x10], eax
mov edx, dword [ebp - 0x10]
cmp edx, 0xffffffff
jne 0x552112
call sub.KERNEL32.DLL_GetLastError
test eax, eax
je 0x552112
or eax, 0xffffffff
jmp 0x55218a
push 0
lea edx, [ebp - 0x18]
push edx
push dword [ebp - 0x2c]
mov ecx, dword [ebp + 0xc]
mov eax, dword [ebp - 0x28]
add ecx, eax
push ecx
mov edx, dword [ebp + 8]
push dword [edx + 0x10c]
call sub.KERNEL32.DLL_ReadFile
mov ecx, dword [ebp - 0x18]
mov eax, dword [ebp - 0x2c]
cmp ecx, eax
je 0x55216a
or eax, 0xffffffff
jmp 0x55218a
push 0
lea edx, [ebp - 0x18]
push edx
push dword [ebp - 4]
push dword [ebp + 0xc]
mov ecx, dword [ebp + 8]
push dword [ecx + 0x10c]
call sub.KERNEL32.DLL_ReadFile
mov eax, dword [ebp - 0x18]
mov edx, dword [ebp - 4]
cmp eax, edx
je 0x55216a
or eax, 0xffffffff
jmp 0x55218a
mov edx, dword [ebp + 8]
mov cl, byte [edx + 0x120]
test cl, cl
je 0x552188
push dword [ebp - 4]
push dword [ebp + 0xc]
push dword [ebp + 8]
call fcn.00553f74
add esp, 0xc
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret