Function at 0x1002e7f0
Capabilities:
Read file on windows

Disassembly:
push ebx
push ebp
push esi
push edi
xor edi, edi
mov esi, eax
or ebp, 0xffffffff
mov ebx, 1
cmp dword [esi + 0x3c], 0
je 0x1002e80a
mov eax, ebp
jmp 0x1002e866
cmp dword [esi + 4], 0
jne 0x1002e857
call fcn.1003698b
mov dword [eax], 0
mov eax, dword [esi + 0x40]
mov ecx, dword [esi + 0x44]
push eax
push 0x4000
push ebx
push ecx
call fcn.10036c2c
add esp, 0x10
test eax, eax
mov dword [esi + 4], eax
jne 0x1002e852
mov edx, dword [esi + 0x40]
push edx
mov dword [esi + 0x3c], ebx
call fcn.10037e45
add esp, 4
test eax, eax
je 0x1002e84e
mov dword [esi + 0x38], ebp
mov eax, ebp
jmp 0x1002e866
mov eax, dword [esi + 0x44]
mov dword [esi], eax
mov eax, dword [esi]
add dword [esi + 4], ebp
mov cl, byte [eax]
add eax, 1
mov dword [esi], eax
movzx eax, cl
cmp eax, dword [edi*4 + 0x100684d4]
jne 0x1002e883
add edi, ebx
cmp edi, 2
jl 0x1002e800
cmp dword [esi + 0x3c], 0
je 0x1002e8a8
mov edi, ebp
jmp 0x1002e904
test edi, edi
je 0x1002e88c
add dword [esi + 4], ebx
add dword [esi], ebp
cmp eax, ebp
je 0x1002e898
add dword [esi + 4], ebx
add dword [esi], ebp
mov dword [esi + 0x58], ebx
xor ecx, ecx
cmp dword [esi + 4], ecx
pop edi
sete cl
mov dword [esi + 0x38], ecx
pop esi
pop ebp
pop ebx
ret
cmp dword [esi + 4], 0
jne 0x1002e8f5
call fcn.1003698b
mov dword [eax], 0
mov edx, dword [esi + 0x40]
mov eax, dword [esi + 0x44]
push edx
push 0x4000
push ebx
push eax
call fcn.10036c2c
add esp, 0x10
test eax, eax
mov dword [esi + 4], eax
jne 0x1002e8f0
mov ecx, dword [esi + 0x40]
push ecx
mov dword [esi + 0x3c], ebx
call fcn.10037e45
add esp, 4
test eax, eax
je 0x1002e8ec
mov dword [esi + 0x38], ebp
mov edi, ebp
jmp 0x1002e904
mov edx, dword [esi + 0x44]
mov dword [esi], edx
mov eax, dword [esi]
add dword [esi + 4], ebp
mov cl, byte [eax]
add eax, 1
mov dword [esi], eax
movzx edi, cl
cmp dword [esi + 0x3c], 0
je 0x1002e90e
mov ebx, ebp
jmp 0x1002e96a
cmp dword [esi + 4], 0
jne 0x1002e95b
call fcn.1003698b
mov dword [eax], 0
mov eax, dword [esi + 0x40]
mov ecx, dword [esi + 0x44]
push eax
push 0x4000
push ebx
push ecx
call fcn.10036c2c
add esp, 0x10
test eax, eax
mov dword [esi + 4], eax
jne 0x1002e956
mov edx, dword [esi + 0x40]
push edx
mov dword [esi + 0x3c], ebx
call fcn.10037e45
add esp, 4
test eax, eax
je 0x1002e952
mov dword [esi + 0x38], ebp
mov ebx, ebp
jmp 0x1002e96a
mov eax, dword [esi + 0x44]
mov dword [esi], eax
mov eax, dword [esi]
add dword [esi + 4], ebp
mov cl, byte [eax]
add eax, 1
mov dword [esi], eax
movzx ebx, cl
cmp edi, 8
jne 0x1002ebdc
test bl, 0xe0
jne 0x1002ebdc
mov edi, 6
cmp dword [esi + 0x3c], 0
jne 0x1002e9dd
cmp dword [esi + 4], 0
jne 0x1002e9d7
call fcn.1003698b
mov dword [eax], 0
mov ecx, dword [esi + 0x40]
mov edx, dword [esi + 0x44]
push ecx
push 0x4000
push 1
push edx
call fcn.10036c2c
add esp, 0x10
test eax, eax
mov dword [esi + 4], eax
jne 0x1002e9d2
mov eax, dword [esi + 0x40]
push eax
mov dword [esi + 0x3c], 1
call fcn.10037e45
add esp, 4
test eax, eax
je 0x1002e9dd
mov dword [esi + 0x38], ebp
jmp 0x1002e9dd
mov ecx, dword [esi + 0x44]
mov dword [esi], ecx
add dword [esi + 4], ebp
add dword [esi], 1
sub edi, 1
jne 0x1002e981
test bl, 4
je 0x1002ea72
call fcn.1002e780
mov edi, eax
call fcn.1002e780
shl eax, 8
add edi, eax
lea esp, [esp]
mov edx, edi
sub edi, 1
test edx, edx
je 0x1002ea72
cmp dword [esi + 0x3c], 0
jne 0x1002ea72
cmp dword [esi + 4], 0
jne 0x1002ea43
call fcn.1003698b
mov dword [eax], 0
mov eax, dword [esi + 0x40]
mov ecx, dword [esi + 0x44]
push eax
push 0x4000
push 1
push ecx
call fcn.10036c2c
add esp, 0x10
test eax, eax
mov dword [esi + 4], eax
je 0x1002ea58
mov edx, dword [esi + 0x44]
mov dword [esi], edx
mov eax, dword [esi]
add dword [esi + 4], ebp
mov cl, byte [eax]
add eax, 1
mov dword [esi], eax
movzx eax, cl
cmp eax, ebp
jne 0x1002ea00
jmp 0x1002ea72
mov eax, dword [esi + 0x40]
push eax
mov dword [esi + 0x3c], 1
call fcn.10037e45
add esp, 4
test eax, eax
je 0x1002ea72
mov dword [esi + 0x38], ebp
test bl, 8
je 0x1002eae4
cmp dword [esi + 0x3c], 0
jne 0x1002eae4
cmp dword [esi + 4], 0
jne 0x1002eab1
call fcn.1003698b
mov dword [eax], 0
mov ecx, dword [esi + 0x40]
mov edx, dword [esi + 0x44]
push ecx
push 0x4000
push 1
push edx
call fcn.10036c2c
add esp, 0x10
test eax, eax
mov dword [esi + 4], eax
je 0x1002eaca
mov eax, dword [esi + 0x44]
mov dword [esi], eax
mov eax, dword [esi]
add dword [esi + 4], ebp
mov cl, byte [eax]
add eax, 1
mov dword [esi], eax
movzx eax, cl
test eax, eax
je 0x1002eae4
cmp eax, ebp
jne 0x1002ea77
jmp 0x1002eae4
mov ecx, dword [esi + 0x40]
push ecx
mov dword [esi + 0x3c], 1
call fcn.10037e45
add esp, 4
test eax, eax
je 0x1002eae4
mov dword [esi + 0x38], ebp
test bl, 0x10
je 0x1002eb5d
lea esp, [esp]
cmp dword [esi + 0x3c], 0
jne 0x1002eb5d
cmp dword [esi + 4], 0
jne 0x1002eb2a
call fcn.1003698b
mov dword [eax], 0
mov edx, dword [esi + 0x40]
mov eax, dword [esi + 0x44]
push edx
push 0x4000
push 1
push eax
call fcn.10036c2c
add esp, 0x10
test eax, eax
mov dword [esi + 4], eax
je 0x1002eb43
mov ecx, dword [esi + 0x44]
mov dword [esi], ecx
mov eax, dword [esi]
add dword [esi + 4], ebp
mov cl, byte [eax]
add eax, 1
mov dword [esi], eax
movzx eax, cl
test eax, eax
je 0x1002eb5d
cmp eax, ebp
jne 0x1002eaf0
jmp 0x1002eb5d
mov edx, dword [esi + 0x40]
push edx
mov dword [esi + 0x3c], 1
call fcn.10037e45
add esp, 4
test eax, eax
je 0x1002eb5d
mov dword [esi + 0x38], ebp
test bl, 2
je 0x1002ebca
mov edi, 2
mov ebx, 1
lea esp, [esp]
cmp dword [esi + 0x3c], 0
jne 0x1002ebc6
cmp dword [esi + 4], 0
jne 0x1002ebc1
call fcn.1003698b
mov dword [eax], 0
mov eax, dword [esi + 0x40]
mov ecx, dword [esi + 0x44]
push eax
push 0x4000
push ebx
push ecx
call fcn.10036c2c
add esp, 0x10
test eax, eax
mov dword [esi + 4], eax
jne 0x1002ebbc
mov edx, dword [esi + 0x40]
push edx
mov dword [esi + 0x3c], ebx
call fcn.10037e45
add esp, 4
test eax, eax
je 0x1002ebc6
mov dword [esi + 0x38], ebp
jmp 0x1002ebc6
mov eax, dword [esi + 0x44]
mov dword [esi], eax
add dword [esi + 4], ebp
add dword [esi], ebx
sub edi, ebx
jne 0x1002eb70
mov ecx, dword [esi + 0x3c]
neg ecx
sbb ecx, ecx
pop edi
and ecx, 0xfffffffd
mov dword [esi + 0x38], ecx
pop esi
pop ebp
pop ebx
ret
pop edi
mov dword [esi + 0x38], 0xfffffffd
pop esi
pop ebp
pop ebx
ret