Function at 0x438f70
Capabilities:
Read file on windows

Disassembly:
mov eax, dword [esp + 8]
push esi
mov esi, dword [esp + 8]
test esi, esi
push edi
mov edi, eax
je 0x4391ac
cmp byte [esi + 0x5c], 0x72
jne 0x4391ac
mov ecx, dword [esi + 0x38]
or edx, 0xffffffff
cmp ecx, 0xfffffffd
je 0x4391a7
cmp ecx, edx
je 0x4391a7
cmp ecx, 1
jne 0x438faf
pop edi
xor eax, eax
pop esi
ret
push ebx
push ebp
mov ebp, dword [esp + 0x1c]
test ebp, ebp
mov ebx, eax
mov dword [esi + 0xc], eax
mov dword [esi + 0x10], ebp
je 0x438fef
cmp dword [esi + 0x6c], edx
je 0x438fef
mov cl, byte [esi + 0x6c]
mov byte [eax], cl
add dword [esi + 0x10], edx
lea ebx, [eax + 1]
mov eax, 1
add dword [esi + 0xc], eax
add dword [esi + 0x68], eax
cmp dword [esi + 0x70], 0
mov dword [esi + 0x6c], edx
mov edi, ebx
je 0x438fef
pop ebp
pop ebx
pop edi
mov dword [esi + 0x38], eax
pop esi
ret
cmp dword [esi + 0x10], 0
je 0x43916c
lea esp, [esp]
cmp dword [esi + 0x58], 0
jne 0x439103
cmp dword [esi + 4], 0
jne 0x43905f
cmp dword [esi + 0x3c], 0
jne 0x43905f
call fcn.00447593
mov dword [eax], 0
mov edx, dword [esi + 0x40]
mov eax, dword [esi + 0x44]
push edx
push 0x4000
push 1
push eax
call fcn.004489a3
add esp, 0x10
test eax, eax
mov dword [esi + 4], eax
jne 0x43905a
mov ecx, dword [esi + 0x40]
push ecx
mov dword [esi + 0x3c], 1
call fcn.004486d8
add esp, 4
test eax, eax
jne 0x439165
mov edx, dword [esi + 0x44]
mov dword [esi], edx
mov eax, dword [esi + 4]
mov ecx, dword [esi + 0x10]
add dword [esi + 0x64], eax
add dword [esi + 0x68], ecx
push 0
push esi
call fcn.0043ac70
mov edx, dword [esi + 4]
mov ecx, dword [esi + 0x10]
sub dword [esi + 0x64], edx
sub dword [esi + 0x68], ecx
add esp, 8
cmp eax, 1
mov dword [esi + 0x38], eax
jne 0x4390de
mov edx, dword [esi + 0xc]
mov eax, dword [esi + 0x4c]
sub edx, edi
push edx
push edi
push eax
call fcn.0043c550
mov edi, dword [esi + 0xc]
mov dword [esi + 0x4c], eax
add esp, 0xc
mov eax, esi
call fcn.00438c30
cmp eax, dword [esi + 0x4c]
jne 0x4390fa
mov eax, esi
call fcn.00438c30
mov eax, esi
call fcn.00438930
cmp dword [esi + 0x38], 0
jne 0x43916c
push esi
call fcn.0043aa30
push 0
push 0
push 0
call fcn.0043c550
add esp, 0x10
mov dword [esi + 0x4c], eax
cmp dword [esi + 0x38], 0
jne 0x43916c
cmp dword [esi + 0x3c], 0
jne 0x43916c
cmp dword [esi + 0x10], 0
jne 0x439000
jmp 0x43916c
mov dword [esi + 0x38], 0xfffffffd
jmp 0x43916c
mov edi, dword [esi + 4]
mov eax, dword [esi + 0x10]
cmp edi, eax
jbe 0x43910f
mov edi, eax
test edi, edi
jbe 0x439130
mov ecx, dword [esi]
mov edx, dword [esi + 0xc]
push edi
push ecx
push edx
call fcn.004490e0
add dword [esi], edi
sub dword [esi + 0x10], edi
add ebx, edi
add esp, 0xc
sub dword [esi + 4], edi
mov dword [esi + 0xc], ebx
mov eax, dword [esi + 0x10]
test eax, eax
jbe 0x43914a
mov ecx, dword [esi + 0x40]
push ecx
push eax
push 1
push ebx
call fcn.004489a3
add esp, 0x10
sub dword [esi + 0x10], eax
sub ebp, dword [esi + 0x10]
add dword [esi + 0x64], ebp
add dword [esi + 0x68], ebp
test ebp, ebp
jne 0x43915e
mov dword [esi + 0x3c], 1
mov eax, ebp
pop ebp
pop ebx
pop edi
pop esi
ret
mov dword [esi + 0x38], 0xffffffff
mov edx, dword [esi + 0xc]
mov eax, dword [esi + 0x4c]
sub edx, edi
push edx
push edi
push eax
call fcn.0043c550
mov ecx, dword [esi + 0x10]
add esp, 0xc
cmp ebp, ecx
mov dword [esi + 0x4c], eax
jne 0x43919e
mov esi, dword [esi + 0x38]
cmp esi, 0xfffffffd
je 0x439196
cmp esi, 0xffffffff
jne 0x43919e
pop ebp
pop ebx
pop edi
or eax, 0xffffffff
pop esi
ret
mov eax, ebp
pop ebp
pop ebx
pop edi
sub eax, ecx
pop esi
ret
pop edi
mov eax, edx
pop esi
ret
pop edi
mov eax, 0xfffffffe
pop esi
ret