Function at 0x56ea30
Capabilities:
Read file on windows

Disassembly:
sub esp, 0x220
push ebx
push esi
push edi
mov edi, dword [esp + 0x230]
mov eax, dword [edi + 0x24]
mov esi, ecx
mov ecx, dword [edi + 0x28]
push 0x40000
push 0x42
xor ebx, ebx
mov dword [esp + 0x14], eax
mov dword [esp + 0x18], ecx
call dword [sym.imp.KERNEL32.dll_GlobalAlloc]
push eax
call dword [sym.imp.KERNEL32.dll_GlobalLock]
cmp eax, ebx
mov dword [esp + 0x14], eax
je 0x56ec88
cmp dword [esi + 0x20], ebx
je 0x56eac4
push 0x104
lea edx, [edi + 0x54]
push edx
lea eax, [esp + 0x2c]
push eax
call dword [0x5d2618]
lea ecx, [esp + 0x30]
add esp, 0xc
test ecx, ecx
mov word [esp + 0x22a], bx
je 0x56eaaa
mov edx, ecx
push edx
call dword [0x5d2620]
add esp, 4
mov ecx, dword [esi + 0x20]
lea eax, [esp + 0x24]
push eax
call fcn.00597b50
mov ecx, dword [esi + 0x20]
mov edx, dword [ecx]
push 0xaaaaaa8
call dword [edx + 0xc]
mov ecx, dword [edi + 0x38]
mov edx, dword [edi + 0x34]
xor eax, eax
shl edx, 1
push ebp
shl ecx, 1
xor ebp, ebp
add ecx, edx
mov edx, dword [esi + 0x10a4]
adc eax, ebp
add ecx, dword [esi + 0x10a0]
mov ebp, dword [edi + 0x4c]
adc eax, edx
mov edx, dword [edi + 0x50]
add ecx, ebp
adc eax, edx
add ecx, 0x40
adc eax, 0
mov edx, eax
push 0
mov dword [esp + 0x28], eax
lea eax, [esp + 0x28]
push eax
push ecx
mov ecx, dword [esi + 8]
push ecx
sar edx, 0x1f
call dword [sym.imp.KERNEL32.dll_SetFilePointer]
push 0
push 0
push 0
call fcn.0058c670
mov ebp, dword [esp + 0x14]
test ebp, ebp
mov dword [esp + 0x1c], eax
jl 0x56ec2a
mov eax, dword [esp + 0x10]
jg 0x56eb50
test eax, eax
jbe 0x56ec2a
jmp 0x56eb50
mov edi, dword [esp + 0x234]
mov eax, dword [esp + 0x10]
mov ebp, dword [esp + 0x14]
lea ebx, [ebx]
test ebx, ebx
jl 0x56ec2a
test ebp, ebp
jl 0x56eb6e
jg 0x56eb65
cmp eax, 0x40000
jb 0x56eb6e
mov edi, 0x40000
xor ebp, ebp
jmp 0x56eb70
mov edi, eax
mov eax, dword [esp + 0x18]
mov ecx, dword [esi + 8]
push 0
lea edx, [esp + 0x24]
push edx
push edi
push eax
push ecx
mov dword [esp + 0x34], 0
call dword [sym.imp.KERNEL32.dll_ReadFile]
test eax, eax
je 0x56ebf1
mov eax, dword [esp + 0x20]
xor ecx, ecx
cmp edi, eax
jne 0x56ebf1
cmp ebp, ecx
jne 0x56ebf1
mov edx, dword [esp + 0x18]
push eax
mov eax, dword [esp + 0x20]
push edx
push eax
call fcn.0058c670
mov ebp, dword [esp + 0x10]
mov edi, dword [esp + 0x14]
mov ecx, dword [esi + 0x20]
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x20]
xor edx, edx
sub ebp, eax
sbb edi, edx
test ecx, ecx
mov dword [esp + 0x10], ebp
mov dword [esp + 0x14], edi
je 0x56ec09
mov edi, dword [ecx]
push edx
push eax
call dword [edi + 0x10]
mov ecx, dword [esi + 0x20]
call fcn.005979b0
mov ebx, eax
cmp ebx, 0x8004e00c
je 0x56ec23
jmp 0x56ec09
push 0
push str.ValidateEntryData
mov ecx, esi
push 0xaaaaaaaa
call fcn.0056a380
mov ebx, 0x8004e008
mov eax, dword [esp + 0x14]
test eax, eax
jg 0x56eb3b
jl 0x56ec23
mov eax, dword [esp + 0x10]
test eax, eax
ja 0x56eb3b
mov edi, dword [esp + 0x234]
mov eax, dword [esi + 0x20]
test eax, eax
pop ebp
je 0x56ec3b
mov ecx, eax
mov edx, dword [ecx]
push 0
call dword [edx + 0xc]
mov eax, dword [esp + 0x18]
cmp eax, dword [edi + 0x1c]
je 0x56ec5c
push 0
push str.ValidateEntryData
push 0xaaaaaaaf
mov ecx, esi
call fcn.0056a380
mov ebx, 0x8004e00b
mov edi, dword [esp + 0x14]
mov esi, dword [sym.imp.KERNEL32.dll_GlobalHandle]
push edi
call esi
push eax
call dword [sym.imp.KERNEL32.dll_GlobalUnlock]
push edi
call esi
push eax
call dword [sym.imp.KERNEL32.dll_GlobalFree]
pop edi
pop esi
mov eax, ebx
pop ebx
add esp, 0x220
ret 4
push ebx
push str.ValidateEntryData
push 0xaaaaaaa3
mov ecx, esi
call fcn.0056a380
pop edi
pop esi
mov eax, 0x8007000e
pop ebx
add esp, 0x220
ret 4