Function at 0x407370
Capabilities:
Read file on windows

Disassembly:
push ebx
push ebp
push edi
xor edi, edi
or ebp, 0xffffffff
lea ebx, [edi + 1]
jmp 0x407380
cmp dword [esi + 0x3c], 0
je 0x40738a
mov eax, ebp
jmp 0x4073e6
cmp dword [esi + 4], 0
jne 0x4073d7
call fcn.0041a556
mov dword [eax], 0
mov eax, dword [esi + 0x40]
mov ecx, dword [esi + 0x44]
push eax
push 0x4000
push ebx
push ecx
call fcn.0041a90d
add esp, 0x10
test eax, eax
mov dword [esi + 4], eax
jne 0x4073d2
mov edx, dword [esi + 0x40]
push edx
mov dword [esi + 0x3c], ebx
call fcn.0041aa77
add esp, 4
test eax, eax
je 0x4073ce
mov dword [esi + 0x38], ebp
mov eax, ebp
jmp 0x4073e6
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 + 0x43e290]
jne 0x407403
add edi, ebx
cmp edi, 2
jb 0x407380
cmp dword [esi + 0x3c], 0
je 0x407427
mov edi, ebp
jmp 0x407483
test edi, edi
je 0x40740c
add dword [esi + 4], ebx
add dword [esi], ebp
cmp eax, ebp
je 0x407418
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
pop ebp
pop ebx
mov dword [esi + 0x38], ecx
ret
cmp dword [esi + 4], 0
jne 0x407474
call fcn.0041a556
mov dword [eax], 0
mov edx, dword [esi + 0x40]
mov eax, dword [esi + 0x44]
push edx
push 0x4000
push ebx
push eax
call fcn.0041a90d
add esp, 0x10
test eax, eax
mov dword [esi + 4], eax
jne 0x40746f
mov ecx, dword [esi + 0x40]
push ecx
mov dword [esi + 0x3c], ebx
call fcn.0041aa77
add esp, 4
test eax, eax
je 0x40746b
mov dword [esi + 0x38], ebp
mov edi, ebp
jmp 0x407483
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 0x40748d
mov ebx, ebp
jmp 0x4074e9
cmp dword [esi + 4], 0
jne 0x4074da
call fcn.0041a556
mov dword [eax], 0
mov eax, dword [esi + 0x40]
mov ecx, dword [esi + 0x44]
push eax
push 0x4000
push ebx
push ecx
call fcn.0041a90d
add esp, 0x10
test eax, eax
mov dword [esi + 4], eax
jne 0x4074d5
mov edx, dword [esi + 0x40]
push edx
mov dword [esi + 0x3c], ebx
call fcn.0041aa77
add esp, 4
test eax, eax
je 0x4074d1
mov dword [esi + 0x38], ebp
mov ebx, ebp
jmp 0x4074e9
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 0x40781b
test bl, 0xe0
jne 0x40781b
mov edi, 6
cmp dword [esi + 0x3c], 0
jne 0x40755c
cmp dword [esi + 4], 0
jne 0x407556
call fcn.0041a556
mov dword [eax], 0
mov ecx, dword [esi + 0x40]
mov edx, dword [esi + 0x44]
push ecx
push 0x4000
push 1
push edx
call fcn.0041a90d
add esp, 0x10
test eax, eax
mov dword [esi + 4], eax
jne 0x407551
mov eax, dword [esi + 0x40]
push eax
mov dword [esi + 0x3c], 1
call fcn.0041aa77
add esp, 4
test eax, eax
je 0x40755c
mov dword [esi + 0x38], ebp
jmp 0x40755c
mov ecx, dword [esi + 0x44]
mov dword [esi], ecx
add dword [esi + 4], ebp
add dword [esi], 1
sub edi, 1
jne 0x407500
test bl, 4
je 0x4076b8
cmp dword [esi + 0x3c], edi
je 0x407573
mov edi, ebp
jmp 0x4075d4
cmp dword [esi + 4], 0
jne 0x4075c5
call fcn.0041a556
mov dword [eax], 0
mov edx, dword [esi + 0x40]
mov eax, dword [esi + 0x44]
push edx
push 0x4000
push 1
push eax
call fcn.0041a90d
add esp, 0x10
test eax, eax
mov dword [esi + 4], eax
jne 0x4075c0
mov ecx, dword [esi + 0x40]
push ecx
mov dword [esi + 0x3c], 1
call fcn.0041aa77
add esp, 4
test eax, eax
je 0x4075bc
mov dword [esi + 0x38], ebp
mov edi, ebp
jmp 0x4075d4
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 0x4075de
mov eax, ebp
jmp 0x40763f
cmp dword [esi + 4], 0
jne 0x407630
call fcn.0041a556
mov dword [eax], 0
mov eax, dword [esi + 0x40]
mov ecx, dword [esi + 0x44]
push eax
push 0x4000
push 1
push ecx
call fcn.0041a90d
add esp, 0x10
test eax, eax
mov dword [esi + 4], eax
jne 0x40762b
mov edx, dword [esi + 0x40]
push edx
mov dword [esi + 0x3c], 1
call fcn.0041aa77
add esp, 4
test eax, eax
je 0x407627
mov dword [esi + 0x38], ebp
mov eax, ebp
jmp 0x40763f
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
shl eax, 8
add eax, edi
mov edi, eax
mov ecx, edi
sub edi, 1
test ecx, ecx
je 0x4076b8
cmp dword [esi + 0x3c], 0
jne 0x4076b8
cmp dword [esi + 4], 0
jne 0x407689
call fcn.0041a556
mov dword [eax], 0
mov edx, dword [esi + 0x40]
mov eax, dword [esi + 0x44]
push edx
push 0x4000
push 1
push eax
call fcn.0041a90d
add esp, 0x10
test eax, eax
mov dword [esi + 4], eax
je 0x40769e
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
cmp eax, ebp
jne 0x407646
jmp 0x4076b8
mov edx, dword [esi + 0x40]
push edx
mov dword [esi + 0x3c], 1
call fcn.0041aa77
add esp, 4
test eax, eax
je 0x4076b8
mov dword [esi + 0x38], ebp
test bl, 8
je 0x40772d
lea ecx, [ecx]
cmp dword [esi + 0x3c], 0
jne 0x40772d
cmp dword [esi + 4], 0
jne 0x4076fa
call fcn.0041a556
mov dword [eax], 0
mov eax, dword [esi + 0x40]
mov ecx, dword [esi + 0x44]
push eax
push 0x4000
push 1
push ecx
call fcn.0041a90d
add esp, 0x10
test eax, eax
mov dword [esi + 4], eax
je 0x407713
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
test eax, eax
je 0x40772d
cmp eax, ebp
jne 0x4076c0
jmp 0x40772d
mov eax, dword [esi + 0x40]
push eax
mov dword [esi + 0x3c], 1
call fcn.0041aa77
add esp, 4
test eax, eax
je 0x40772d
mov dword [esi + 0x38], ebp
test bl, 0x10
je 0x40779f
cmp dword [esi + 0x3c], 0
jne 0x40779f
cmp dword [esi + 4], 0
jne 0x40776c
call fcn.0041a556
mov dword [eax], 0
mov ecx, dword [esi + 0x40]
mov edx, dword [esi + 0x44]
push ecx
push 0x4000
push 1
push edx
call fcn.0041a90d
add esp, 0x10
test eax, eax
mov dword [esi + 4], eax
je 0x407785
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 0x40779f
cmp eax, ebp
jne 0x407732
jmp 0x40779f
mov ecx, dword [esi + 0x40]
push ecx
mov dword [esi + 0x3c], 1
call fcn.0041aa77
add esp, 4
test eax, eax
je 0x40779f
mov dword [esi + 0x38], ebp
test bl, 2
je 0x40780a
mov edi, 2
lea ebx, [edi - 1]
lea esp, [esp]
cmp dword [esi + 0x3c], 0
jne 0x407806
cmp dword [esi + 4], 0
jne 0x407801
call fcn.0041a556
mov dword [eax], 0
mov edx, dword [esi + 0x40]
mov eax, dword [esi + 0x44]
push edx
push 0x4000
push ebx
push eax
call fcn.0041a90d
add esp, 0x10
test eax, eax
mov dword [esi + 4], eax
jne 0x4077fc
mov ecx, dword [esi + 0x40]
push ecx
mov dword [esi + 0x3c], ebx
call fcn.0041aa77
add esp, 4
test eax, eax
je 0x407806
mov dword [esi + 0x38], ebp
jmp 0x407806
mov edx, dword [esi + 0x44]
mov dword [esi], edx
add dword [esi + 4], ebp
add dword [esi], ebx
sub edi, ebx
jne 0x4077b0
mov eax, dword [esi + 0x3c]
neg eax
pop edi
sbb eax, eax
and eax, 0xfffffffd
pop ebp
mov dword [esi + 0x38], eax
pop ebx
ret
pop edi
pop ebp
mov dword [esi + 0x38], 0xfffffffd
pop ebx
ret