Function at 0x552255
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 0x552324
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 0x5522d3
call sub.KERNEL32.DLL_GetLastError
test eax, eax
je 0x5522d3
or eax, 0xffffffff
jmp 0x5525a6
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 0x5522ff
or eax, 0xffffffff
jmp 0x5525a6
mov edx, dword [ebp + 8]
mov cl, byte [edx + 0x120]
test cl, cl
je 0x55231d
push dword [ebp - 4]
push dword [ebp + 0xc]
push dword [ebp + 8]
call fcn.00554390
add esp, 0xc
xor eax, eax
jmp 0x5525a6
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 0x552364
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 0x55237e
push dword [ebp + 0x10]
push dword [ebp + 8]
call fcn.0055218a
add esp, 8
test eax, eax
jne 0x55237e
or eax, 0xffffffff
jmp 0x5525a6
mov edx, dword [ebp + 8]
mov ecx, dword [edx + 0x10c]
cmp ecx, 0xffffffff
jne 0x55239e
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 0x552441
call sub.KERNEL32.DLL_GetLastError
test eax, eax
je 0x552441
or eax, 0xffffffff
jmp 0x5525a6
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 0x55255d
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 0x5524b8
or eax, 0xffffffff
jmp 0x5525a6
mov edx, dword [ebp - 0x2c]
test edx, edx
jbe 0x552586
push dword [ebp + 8]
call fcn.00552217
pop ecx
test eax, eax
jne 0x5524d8
or eax, 0xffffffff
jmp 0x5525a6
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 0x55252e
call sub.KERNEL32.DLL_GetLastError
test eax, eax
je 0x55252e
or eax, 0xffffffff
jmp 0x5525a6
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 0x552586
or eax, 0xffffffff
jmp 0x5525a6
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 0x552586
or eax, 0xffffffff
jmp 0x5525a6
mov edx, dword [ebp + 8]
mov cl, byte [edx + 0x120]
test cl, cl
je 0x5525a4
push dword [ebp - 4]
push dword [ebp + 0xc]
push dword [ebp + 8]
call fcn.00554390
add esp, 0xc
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret