Function at 0x555380
Capabilities:
Read file on windows

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x5b69fd
mov eax, dword fs:[0]
push eax
sub esp, 0x28
push ebx
push esi
push edi
mov eax, dword [0x5fa040]
xor eax, ebp
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov dword [ebp - 0x14], ecx
mov eax, dword [ecx + 0x10]
xor edi, edi
mov edx, dword [ecx + 4]
mov ebx, dword [ecx]
mov dword [ebp - 0x18], edx
mov dword [ebp - 0x28], eax
mov dword [ecx + 0x10], 0
test eax, eax
je 0x555439
mov eax, ebx
or eax, edx
je 0x55567a
mov esi, 0x100000
test edx, edx
ja 0x5553e1
jb 0x5553df
cmp ebx, esi
jae 0x5553e1
mov esi, ebx
mov edx, dword [ecx + 8]
mov ecx, dword [ebp + 8]
push esi
mov edx, dword [edx + edi*4]
call fcn.00558f70
add esp, 4
test eax, eax
jne 0x55567f
mov edx, dword [ebp - 0x18]
sub ebx, esi
mov ecx, dword [ebp - 0x14]
sbb edx, eax
mov dword [ebp - 0x18], edx
lea esi, [ecx + 0x14]
test edi, edi
jne 0x555413
cmp byte [esi], al
jne 0x555431
mov eax, dword [ecx + 8]
push dword [eax + edi*4]
call fcn.0058e23f
mov ecx, dword [ebp - 0x14]
add esp, 4
mov edx, dword [ebp - 0x18]
mov eax, dword [ecx + 8]
mov dword [eax + edi*4], 0
inc edi
cmp edi, dword [ebp - 0x28]
jb 0x5553c6
jmp 0x55543c
lea esi, [ecx + 0x14]
mov al, byte [esi]
mov byte [ebp - 0xd], al
mov eax, ebx
or eax, edx
jne 0x555466
cmp byte [ebp - 0xd], al
mov ecx, 0x80004005
cmovne eax, ecx
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
cmp byte [ebp - 0xd], 0
je 0x55567a
mov eax, dword [ecx + 0x2c]
cmp eax, 0xffffffff
je 0x55548d
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
test eax, eax
je 0x5554a7
mov ecx, dword [ebp - 0x14]
mov dword [ecx + 0x2c], 0xffffffff
push 0
call fcn.00554fc0
mov edi, eax
mov dword [ebp - 0x20], edi
test edi, edi
jne 0x5554d7
mov esi, 0x8007000e
jmp 0x55562f
call dword [sym.imp.KERNEL32.dll_GetLastError]
test eax, eax
je 0x55567a
jle 0x55567f
movzx eax, ax
or eax, 0x80070000
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
mov dword [ebp - 0x34], 0xffffffff
mov byte [ebp - 0x30], 0
mov eax, dword [ebp - 0x14]
lea ecx, [ebp - 0x34]
push 0x80
push 3
push 1
push SysReAllocString
mov dword [ebp - 4], 0
push dword [eax + 0x20]
call fcn.00470a70
mov ecx, dword [ebp - 0x34]
test al, al
je 0x5555fb
cmp byte [ebp - 0x30], 0
je 0x555536
push 0
lea eax, [ebp - 0x2c]
mov dword [ebp - 0x2c], 0xffffffff
push eax
push 0
push ecx
mov dword [ebp - 0x28], 0xffffffff
call dword [sym.imp.KERNEL32.dll_SetFileTime]
mov ecx, dword [ebp - 0x34]
mov dword [ebp - 0x24], 0xffffffff
nop dword [eax]
xor eax, eax
mov esi, 0x100000
mov dword [ebp - 0x1c], eax
nop word [eax + eax]
cmp esi, 0x400000
mov dword [ebp - 0x28], 0
mov edx, 0x400000
mov eax, esi
push 0
cmova eax, edx
lea edx, [ebp - 0x28]
push edx
push eax
push edi
push ecx
call dword [sym.imp.KERNEL32.dll_ReadFile]
mov edx, dword [ebp - 0x1c]
mov ecx, dword [ebp - 0x28]
add edx, ecx
mov dword [ebp - 0x1c], edx
test eax, eax
je 0x5555fb
test ecx, ecx
je 0x555592
add edi, ecx
sub esi, ecx
mov ecx, dword [ebp - 0x34]
jne 0x555550
test edx, edx
je 0x5555e6
xor eax, eax
mov edi, edx
cmp eax, dword [ebp - 0x18]
jb 0x5555a7
ja 0x5555a5
cmp edx, ebx
jbe 0x5555a7
mov edi, ebx
mov edx, dword [ebp - 0x20]
mov ecx, dword [ebp + 8]
push edi
call fcn.00558f70
mov esi, eax
add esp, 4
test esi, esi
jne 0x555619
mov edx, dword [ebp - 0x20]
mov ecx, dword [ebp - 0x24]
push edi
call fcn.0044a290
mov ecx, dword [ebp - 0x34]
sub ebx, edi
mov dword [ebp - 0x24], eax
sbb dword [ebp - 0x18], esi
cmp edi, dword [ebp - 0x1c]
mov edi, dword [ebp - 0x20]
je 0x555540
mov esi, 0x80004005
jmp 0x555619
mov eax, dword [ebp - 0x14]
xor edx, edx
mov ecx, dword [ebp - 0x24]
mov esi, 0x80004005
cmp dword [eax + 0x18], ecx
cmove esi, edx
jmp 0x555619
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov esi, eax
test esi, esi
jne 0x55560e
mov esi, 0x80004005
jmp 0x555619
jle 0x555619
movzx esi, si
or esi, 0x80070000
mov dword [ebp - 4], 0xffffffff
mov eax, dword [ebp - 0x34]
cmp eax, 0xffffffff
je 0x55562f
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov edi, dword [ebp - 0x14]
cmp byte [edi + 0x1c], 0
je 0x555645
mov ecx, dword [edi + 0x20]
call fcn.0046f570
xor al, 1
mov byte [edi + 0x1c], al
test esi, esi
je 0x55565f
mov eax, esi
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
or ebx, dword [ebp - 0x18]
jne 0x55567a
xor eax, eax
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
mov eax, 0x80004005
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4