Function at 0x456740
Capabilities:
Read file on windows

Disassembly:
sub esp, 8
push ebx
push ebp
push esi
mov esi, dword [esp + 0x18]
push edi
xor ebx, ebx
mov ecx, dword [esi + 0xc900]
lea eax, [esi + 0xc978]
push eax
push ecx
push esi
mov dword [esp + 0x1c], ebx
xor edi, edi
call fcn.0045a710
add esp, 0xc
test eax, eax
jne 0x456d2f
mov dx, word [esi + 0xc97e]
and edx, 0xf000
cmp edx, 0x4000
sete al
mov edi, eax
cmp edi, ebx
jne 0x456d2f
mov ecx, dword [esi + 0xc98c]
push esi
mov dword [esi + 0xc908], ecx
call fcn.004578e0
add esp, 4
test eax, eax
je 0x4567b8
pop edi
pop esi
pop ebp
mov eax, 9
pop ebx
add esp, 8
ret
cmp dword [esi + 0xc8d8], ebx
jne 0x4567dc
call fcn.0045dbe0
cmp eax, ebx
mov dword [esi + 0xc8d8], eax
jne 0x4567dc
pop edi
pop esi
pop ebp
mov eax, 4
pop ebx
add esp, 8
ret
mov eax, dword [esi + 4]
cmp eax, ebx
je 0x456809
cmp dword [esi + 0x78], ebx
je 0x456809
mov edi, dword [esi + 0x1c]
xor edx, edx
cmp edi, ebx
push ebx
sete dl
push eax
push esi
mov dword [esi + 0x74], edx
call fcn.00459c80
add esp, 0xc
cmp eax, 2
jg 0x456d3b
mov eax, dword [esi + 0xc8e0]
mov dword [esi + 0xc90c], ebx
mov dword [esi + 0xc8e4], eax
mov eax, dword [esi + 0xc]
cmp eax, ebx
je 0x45684a
mov ecx, dword [esi + 0xc908]
push ecx
push esi
call fcn.00456d50
mov ebp, eax
add esp, 8
cmp ebp, ebx
jne 0x456885
push esi
call fcn.0045dba0
mov ebp, eax
add esp, 4
cmp ebp, 1
jg 0x456885
jmp 0x45684e
mov ebp, dword [esp + 0x1c]
cmp dword [esi + 0xc], ebx
jne 0x4568bd
mov eax, dword [esi + 0xc908]
cmp eax, 0x101d0
jl 0x456865
mov eax, 0x101d0
push eax
push esi
call fcn.00456d50
mov ebp, eax
add esp, 8
cmp ebp, ebx
jne 0x456885
push esi
call fcn.00457110
mov ebp, eax
add esp, 4
cmp ebp, 1
jle 0x4568bd
mov edx, dword [esi + 0xc904]
push edx
call fcn.0046b97a
mov eax, dword [esp + 0x24]
add esp, 4
cmp eax, ebx
je 0x4568a6
pop edi
mov eax, ebp
pop esi
pop ebp
pop ebx
add esp, 8
ret
mov dword [esi + 0xc9c0], 1
pop edi
pop esi
pop ebp
mov eax, 9
pop ebx
add esp, 8
ret
cmp dword [esi + 0x5c], ebx
jle 0x4568e0
cmp dword [esi + 0xc], ebx
jne 0x4568e0
mov eax, dword [esi + 0xc904]
push eax
call fcn.0046b97a
add esp, 4
mov eax, ebp
pop edi
pop esi
pop ebp
pop ebx
add esp, 8
ret
mov eax, dword [esi + 0xc]
cmp eax, ebx
jne 0x4568f7
cmp word [esi + 0xc964], bx
je 0x4568f7
mov edx, 1
jmp 0x4568f9
xor edx, edx
cmp eax, ebx
mov dword [esp + 0x1c], edx
je 0x456972
mov ax, word [esi + 0xc964]
mov cx, word [esi + 0xc966]
cmp ax, cx
je 0x456972
jbe 0x45696d
mov ebp, 0xb
mov edx, dword [esi + 0xc904]
push edx
call fcn.0046b97a
mov eax, dword [esi + 0x48]
add esp, 4
test eax, eax
je 0x456963
mov eax, dword [esi + 0xc]
test eax, eax
jne 0x456963
mov eax, dword [esp + 0x10]
test eax, eax
jbe 0x456963
mov eax, dword [esp + 0x14]
mov ecx, dword [esi + 0xc900]
push eax
push ecx
push esi
call fcn.00458f20
add esp, 0xc
test eax, eax
je 0x456963
cmp ebp, 1
jge 0x456963
mov ebp, 1
pop edi
mov eax, ebp
pop esi
pop ebp
pop ebx
add esp, 8
ret
mov ebp, 1
cmp edx, ebx
je 0x45697b
mov ebp, 1
mov ecx, dword [esi + 0x84]
mov eax, dword [esi + 0x80]
sub eax, ecx
mov dword [esi + 0xc910], eax
jns 0x456998
mov ebp, 2
jmp 0x4569c4
cmp eax, ebx
jle 0x4569c4
cmp dword [esi + 0xc970], ebx
jne 0x4569bf
cmp dword [esi + 0xc96c], ebx
je 0x4569bf
mov dword [esi + 0xc970], eax
mov dword [esi + 0xc910], ebx
mov ebp, 2
jmp 0x4569c4
mov ebp, 1
cmp ecx, ebx
jne 0x4569f7
cmp dword [esi + 0xc96c], ebx
jne 0x4569f7
mov ecx, dword [esi + 0xc904]
push ecx
call fcn.0046b97a
add esp, 4
cmp ebp, 1
mov eax, ebp
jg 0x456d3b
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 8
ret
mov eax, dword [esi + 0xc970]
mov edi, dword [esi + 0xc910]
add eax, edi
mov edi, eax
and edi, 0x80001fff
jns 0x456a17
dec edi
or edi, 0xffffe000
inc edi
mov ecx, eax
sub ecx, edi
cmp eax, ebx
jge 0x456a2c
pop edi
pop esi
pop ebp
mov eax, 3
pop ebx
add esp, 8
ret
cmp ecx, dword [esi + 0xc90c]
je 0x456a92
mov edx, dword [esi + 0xc904]
push ebx
push ecx
push edx
call fcn.0046d36a
mov ecx, dword [esi + 0xc904]
mov dword [esi + 0xc90c], eax
mov eax, dword [esi + 0xc8e0]
push 0x2000
push eax
push ecx
call fcn.0046d7e4
add esp, 0x18
cmp eax, ebx
mov dword [esi + 0xc8e8], eax
jg 0x456a7a
pop edi
pop esi
pop ebp
mov eax, 0x33
pop ebx
add esp, 8
ret
mov edx, dword [esi + 0xc8e0]
add edx, edi
sub eax, edi
mov dword [esi + 0xc8e4], edx
mov dword [esi + 0xc8e8], eax
jmp 0x456ab8
mov eax, dword [esi + 0xc8e0]
mov ecx, dword [esi + 0xc8e4]
mov edx, dword [esi + 0xc8e8]
sub ecx, eax
sub ecx, edi
add edx, ecx
add eax, edi
mov dword [esi + 0xc8e8], edx
mov dword [esi + 0xc8e4], eax
lea ebx, [esi + 0xc4]
push 4
push ebx
push esi
call fcn.00457a70
add esp, 0xc
test eax, eax
je 0x456ae6
push 4
push 0x493d8c
push ebx
call fcn.00462150
add esp, 0xc
test eax, eax
je 0x456bdb
mov ecx, dword [esi + 0xc970]
mov dword [esi + 0xc910], 0
mov edi, ecx
and edi, 0x80001fff
jns 0x456b08
dec edi
or edi, 0xffffe000
inc edi
mov eax, ecx
sub eax, edi
test ecx, ecx
jge 0x456b1d
pop edi
pop esi
pop ebp
mov eax, 3
pop ebx
add esp, 8
ret
cmp eax, dword [esi + 0xc90c]
je 0x456b84
mov edx, dword [esi + 0xc904]
push 0
push eax
push edx
call fcn.0046d36a
mov ecx, dword [esi + 0xc904]
mov dword [esi + 0xc90c], eax
mov eax, dword [esi + 0xc8e0]
push 0x2000
push eax
push ecx
call fcn.0046d7e4
add esp, 0x18
mov dword [esi + 0xc8e8], eax
test eax, eax
jg 0x456b6c
pop edi
pop esi
pop ebp
mov eax, 0x33
pop ebx
add esp, 8
ret
mov edx, dword [esi + 0xc8e0]
add edx, edi
sub eax, edi
mov dword [esi + 0xc8e4], edx
mov dword [esi + 0xc8e8], eax
jmp 0x456baa
mov eax, dword [esi + 0xc8e0]
mov ecx, dword [esi + 0xc8e4]
mov edx, dword [esi + 0xc8e8]
sub ecx, eax
sub ecx, edi
add edx, ecx
add eax, edi
mov dword [esi + 0xc8e8], edx
mov dword [esi + 0xc8e4], eax
push 4
push ebx
push esi
call fcn.00457a70
add esp, 0xc
test eax, eax
je 0x456d13
push 4
push 0x493d8c
push ebx
call fcn.00462150
add esp, 0xc
test eax, eax
jne 0x456d13
mov ebp, 2
mov eax, dword [esi + 0xc970]
mov ecx, dword [esi + 0xc910]
add eax, ecx
mov edi, eax
and edi, 0x80001fff
jns 0x456bfb
dec edi
or edi, 0xffffe000
inc edi
mov ecx, eax
sub ecx, edi
test eax, eax
jge 0x456c10
pop edi
pop esi
pop ebp
mov eax, 3
pop ebx
add esp, 8
ret
cmp ecx, dword [esi + 0xc90c]
je 0x456c77
mov edx, dword [esi + 0xc904]
push 0
push ecx
push edx
call fcn.0046d36a
mov ecx, dword [esi + 0xc904]
mov dword [esi + 0xc90c], eax
mov eax, dword [esi + 0xc8e0]
push 0x2000
push eax
push ecx
call fcn.0046d7e4
add esp, 0x18
mov dword [esi + 0xc8e8], eax
test eax, eax
jg 0x456c5f
pop edi
pop esi
pop ebp
mov eax, 0x33
pop ebx
add esp, 8
ret
mov edx, dword [esi + 0xc8e0]
add edx, edi
sub eax, edi
mov dword [esi + 0xc8e4], edx
mov dword [esi + 0xc8e8], eax
jmp 0x456c9d
mov eax, dword [esi + 0xc8e0]
mov ecx, dword [esi + 0xc8e4]
mov edx, dword [esi + 0xc8e8]
sub ecx, eax
sub ecx, edi
add edx, ecx
add eax, edi
mov dword [esi + 0xc8e8], edx
mov dword [esi + 0xc8e4], eax
mov eax, dword [esi + 0x94]
test eax, eax
jne 0x456d00
mov eax, dword [esi + 0xc]
test eax, eax
je 0x456cb9
push esi
call fcn.0044ba00
add esp, 4
jmp 0x456d04
mov eax, dword [esi + 0x48]
test eax, eax
je 0x456cd5
lea edx, [esp + 0x10]
lea eax, [esp + 0x14]
push edx
push eax
push esi
call fcn.0045d820
add esp, 0xc
jmp 0x456d04
mov eax, dword [esi + 0x50]
test eax, eax
je 0x456cf5
mov eax, dword [esi + 0x44]
test eax, eax
jne 0x456cf5
mov eax, dword [esi + 0x14]
test eax, eax
jne 0x456cf5
push esi
call fcn.0045d2d0
add esp, 4
jmp 0x456d04
push esi
call fcn.0045bfa0
add esp, 4
jmp 0x456d04
mov eax, dword [esp + 0x1c]
cmp eax, ebp
jle 0x45691b
mov ebp, eax
jmp 0x45691b
mov ecx, dword [esi + 0xc904]
push ecx
call fcn.0046b97a
add esp, 4
mov eax, 3
pop edi
pop esi
pop ebp
pop ebx
add esp, 8
ret
mov eax, edi
neg eax
sbb eax, eax
and eax, 0x43
add eax, 9
pop edi
pop esi
pop ebp
pop ebx
add esp, 8
ret