Function at 0x45bfa0
Capabilities:
Read file on windows

Disassembly:
sub esp, 0x3c
push ebx
push ebp
push esi
mov esi, dword [esp + 0x4c]
push edi
xor edi, edi
lea eax, [esi + 0xd4]
mov dword [esp + 0x30], edi
mov dword [esi + 0x8d4], eax
mov dword [esi + 0x7c], 1
mov dword [esi + 0xc9a8], edi
mov eax, dword [esi + 0x64]
cmp eax, edi
mov dword [esp + 0x38], edi
mov dword [esp + 0x10], edi
mov dword [esp + 0x14], edi
mov dword [esp + 0x1c], edi
mov dword [esp + 0x20], edi
mov dword [esp + 0x34], edi
mov dword [esp + 0x24], edi
jbe 0x45c019
shl eax, 2
push eax
call fcn.00461d1b
mov ecx, eax
add esp, 4
cmp ecx, edi
mov dword [esp + 0x14], ecx
je 0x45c019
mov edx, dword [esi + 0x64]
xor eax, eax
cmp edx, edi
jbe 0x45c019
mov dword [ecx], edi
mov edx, dword [esi + 0x64]
inc eax
add ecx, 4
cmp eax, edx
jb 0x45c00c
mov eax, dword [esi + 0x68]
cmp eax, edi
jbe 0x45c050
lea ecx, [eax*4]
push ecx
call fcn.00461d1b
mov ecx, eax
add esp, 4
cmp ecx, edi
mov dword [esp + 0x1c], ecx
je 0x45c050
mov edx, dword [esi + 0x68]
xor eax, eax
cmp edx, edi
jbe 0x45c050
mov dword [ecx], edi
mov edx, dword [esi + 0x68]
inc eax
add ecx, 4
cmp eax, edx
jb 0x45c043
mov dword [esp + 0x28], edi
mov dword [esp + 0x3c], edi
mov dword [esp + 0x18], edi
mov dword [esp + 0x50], edi
lea ebx, [esi + 0xd4]
lea edi, [esi + 0xc4]
push 4
push edi
push esi
mov dword [esi + 0x8d4], ebx
call fcn.00457a70
add esp, 0xc
test eax, eax
je 0x45c225
push 4
push 0x493d8c
push edi
call fcn.00462150
add esp, 0xc
test eax, eax
jne 0x45c22f
push esi
call fcn.00457170
add esp, 4
test eax, eax
jne 0x45c263
xor edx, edx
push 2
mov dx, word [esi + 0xc950]
push edx
push esi
call fcn.00458240
mov edi, dword [esp + 0x1c]
add esp, 0xc
test eax, eax
je 0x45c0df
cmp eax, edi
jle 0x45c0d6
mov edi, eax
mov dword [esp + 0x10], edi
cmp eax, 1
jg 0x45c267
xor eax, eax
push 3
mov ax, word [esi + 0xc952]
push eax
push esi
call fcn.00458240
add esp, 0xc
test eax, eax
je 0x45c10b
cmp eax, edi
jle 0x45c102
mov edi, eax
mov dword [esp + 0x10], edi
cmp eax, 1
jg 0x45c267
xor ecx, ecx
push 0
mov cx, word [esi + 0xc954]
push ecx
push esi
call fcn.00458240
add esp, 0xc
test eax, eax
je 0x45c135
cmp eax, edi
jle 0x45c12c
mov dword [esp + 0x10], eax
cmp eax, 1
jg 0x45c267
mov eax, dword [esi + 0x6c]
test eax, eax
je 0x45c15e
push esi
call fcn.0045ca40
add esp, 4
test eax, eax
je 0x45c209
mov ecx, dword [esp + 0x50]
inc ecx
add ebx, 0x20
mov dword [esp + 0x50], ecx
jmp 0x45c20d
mov eax, dword [esi + 0x64]
test eax, eax
je 0x45c1a9
xor edi, edi
test eax, eax
jbe 0x45c20d
lea ebp, [esi + 0xc9dc]
mov eax, dword [esi + 0xbc]
mov edx, dword [esi + 0x18]
push edx
mov ecx, dword [eax + edi*4]
push ecx
push ebp
call fcn.004587e0
add esp, 0xc
test eax, eax
jne 0x45c19a
mov eax, dword [esi + 0x64]
inc edi
cmp edi, eax
jb 0x45c175
jmp 0x45c20d
mov eax, dword [esp + 0x14]
test eax, eax
je 0x45c1a9
mov dword [eax + edi*4], 1
mov eax, dword [esi + 0x68]
xor edi, edi
test eax, eax
jbe 0x45c1db
lea ebp, [esi + 0xc9dc]
mov eax, dword [esi + 0xc0]
mov edx, dword [esi + 0x18]
push edx
mov ecx, dword [eax + edi*4]
push ecx
push ebp
call fcn.004587e0
add esp, 0xc
test eax, eax
jne 0x45c1f6
mov eax, dword [esi + 0x68]
inc edi
cmp edi, eax
jb 0x45c1b8
push esi
call fcn.0045ca40
add esp, 4
test eax, eax
je 0x45c209
mov ecx, dword [esp + 0x50]
inc ecx
add ebx, 0x20
mov dword [esp + 0x50], ecx
jmp 0x45c20d
mov eax, dword [esp + 0x1c]
test eax, eax
je 0x45c20d
mov edx, eax
mov dword [edx + edi*4], 1
jmp 0x45c20d
inc dword [esp + 0x20]
mov ecx, dword [esp + 0x28]
mov eax, dword [esp + 0x50]
inc ecx
cmp eax, 0x40
mov dword [esp + 0x28], ecx
jb 0x45c066
jmp 0x45c26f
mov dword [esp + 0x10], 0x33
jmp 0x45c267
mov ax, word [esp + 0x28]
cmp ax, word [esi + 0xc96a]
jne 0x45c259
push 4
push 0x493d94
push edi
call fcn.00462150
add esp, 0xc
neg eax
sbb eax, eax
neg eax
mov dword [esp + 0x3c], eax
jmp 0x45c267
mov dword [esp + 0x10], 3
jmp 0x45c267
mov dword [esp + 0x10], eax
mov dword [esp + 0x18], 1
mov eax, dword [esi + 0xc8e8]
mov ecx, dword [esi + 0xc90c]
mov edx, dword [esi + 0xc8e4]
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0x50]
mov dword [esp + 0x40], ecx
test eax, eax
mov dword [esp + 0x44], edx
mov dword [esp + 0x2c], 0
jbe 0x45c81d
mov ecx, dword [esp + 0x2c]
mov ebp, dword [esi + 0xc910]
shl ecx, 5
mov ebx, dword [esp + 0x30]
lea edx, [ecx + esi + 0xd4]
mov ecx, ebp
mov dword [esi + 0x8d4], edx
inc ebx
mov eax, dword [edx]
mov dword [esp + 0x30], ebx
add ecx, eax
mov edi, ecx
and edi, 0x80001fff
jns 0x45c2dc
dec edi
or edi, 0xffffe000
inc edi
mov eax, ecx
sub eax, edi
test ecx, ecx
jge 0x45c334
cmp ebx, 1
mov dword [esp + 0x10], 2
jne 0x45c532
test ebp, ebp
je 0x45c532
mov dword [esi + 0xc910], 0
mov edx, dword [edx]
mov edi, edx
mov dword [esp + 0x24], ebp
and edi, 0x80001fff
jns 0x45c31f
dec edi
or edi, 0xffffe000
inc edi
mov eax, edx
sub eax, edi
test edx, edx
jge 0x45c334
mov dword [esp + 0x10], 3
jmp case.0x45c71f.100
cmp eax, dword [esi + 0xc90c]
je 0x45c39d
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 0x45c383
mov dword [esp + 0x10], 3
jmp case.0x45c71f.100
mov ebp, dword [esi + 0xc8e0]
mov edx, edi
add edx, ebp
sub eax, edi
mov dword [esi + 0xc8e4], edx
mov dword [esi + 0xc8e8], eax
jmp 0x45c3c3
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 ebp, [esi + 0xc4]
push 4
push ebp
push esi
call fcn.00457a70
add esp, 0xc
test eax, eax
jne 0x45c3e6
mov dword [esp + 0x10], 3
jmp case.0x45c71f.100
push 4
push 0x493d90
push ebp
call fcn.00462150
add esp, 0xc
test eax, eax
je 0x45c53f
cmp ebx, 1
mov dword [esp + 0x10], 2
jne 0x45c415
mov eax, dword [esi + 0xc910]
test eax, eax
jne 0x45c433
mov eax, dword [esi + 0xc910]
test eax, eax
jne case.0x45c71f.100
mov ecx, dword [esp + 0x24]
test ecx, ecx
je case.0x45c71f.100
test eax, eax
je 0x45c443
mov dword [esp + 0x24], eax
mov dword [esi + 0xc910], 0
jmp 0x45c44d
mov edx, dword [esp + 0x24]
mov dword [esi + 0xc910], edx
mov eax, dword [esi + 0x8d4]
mov ecx, dword [esi + 0xc910]
mov eax, dword [eax]
add eax, ecx
mov edi, eax
and edi, 0x80001fff
jns 0x45c46f
dec edi
or edi, 0xffffe000
inc edi
mov ecx, eax
sub ecx, edi
test eax, eax
jl 0x45c88c
cmp ecx, dword [esi + 0xc90c]
je 0x45c4db
push 0
push ecx
mov ecx, dword [esi + 0xc904]
push ecx
call fcn.0046d36a
mov edx, dword [esi + 0xc8e0]
mov dword [esi + 0xc90c], eax
mov eax, dword [esi + 0xc904]
push 0x2000
push edx
push eax
call fcn.0046d7e4
add esp, 0x18
mov dword [esi + 0xc8e8], eax
test eax, eax
jle 0x45c899
mov edx, dword [esi + 0xc8e0]
mov ecx, edi
add ecx, edx
sub eax, edi
mov dword [esi + 0xc8e4], ecx
mov dword [esi + 0xc8e8], eax
jmp 0x45c501
mov eax, dword [esi + 0xc8e0]
mov edx, dword [esi + 0xc8e4]
mov ecx, dword [esi + 0xc8e8]
sub edx, eax
sub edx, edi
add ecx, edx
add eax, edi
mov dword [esi + 0xc8e8], ecx
mov dword [esi + 0xc8e4], eax
push 4
push ebp
push esi
call fcn.00457a70
add esp, 0xc
test eax, eax
jne 0x45c51e
mov dword [esp + 0x10], 3
jmp case.0x45c71f.100
push 4
push 0x493d90
push ebp
call fcn.00462150
add esp, 0xc
test eax, eax
je 0x45c53f
mov dword [esp + 0x10], 3
jmp case.0x45c71f.100
push esi
call fcn.004573b0
add esp, 4
test eax, eax
je 0x45c555
mov dword [esp + 0x10], eax
jmp case.0x45c71f.100
xor eax, eax
push 6
mov ax, word [esi + 0xc934]
push eax
push esi
call fcn.00458240
add esp, 0xc
test eax, eax
je 0x45c581
cmp eax, dword [esp + 0x10]
jle 0x45c578
mov dword [esp + 0x10], eax
cmp eax, 1
jg case.0x45c71f.100
mov eax, dword [esi + 0xc914]
test eax, eax
je 0x45c59e
push eax
call fcn.00461c32
add esp, 4
mov dword [esi + 0xc914], 0
xor ecx, ecx
push 3
mov cx, word [esi + 0xc936]
push ecx
push esi
call fcn.00458240
add esp, 0xc
test eax, eax
je 0x45c5ca
cmp eax, dword [esp + 0x10]
jle 0x45c5c1
mov dword [esp + 0x10], eax
cmp eax, 1
jg case.0x45c71f.100
mov edx, dword [esi + 0x8d4]
test byte [edx + 0x1c], 1
je 0x45c608
mov eax, dword [esi + 8]
push eax
push esi
call fcn.0045dd20
add esp, 8
test eax, eax
je 0x45c608
cmp eax, 1
jne 0x45c5f5
inc dword [esp + 0x34]
jmp case.0x45c71f.100
cmp eax, dword [esp + 0x10]
jle case.0x45c71f.100
mov dword [esp + 0x10], eax
jmp case.0x45c71f.100
mov eax, dword [esi + 0x44]
test eax, eax
jne case.0x45c71f.101
mov eax, dword [esi + 0x14]
test eax, eax
jne case.0x45c71f.101
mov eax, dword [esi + 0x9c]
test eax, eax
jne case.0x45c71f.101
xor ebx, ebx
mov ecx, dword [esi + 0x8d4]
mov eax, dword [ecx + 0x14]
test eax, eax
jne 0x45c694
lea edi, [esi + 0xc9dc]
push 0x2f
push edi
call fcn.004642a0
add esp, 8
test eax, eax
jne 0x45c694
mov eax, edi
mov cl, byte [eax]
test cl, cl
je 0x45c694
mov edi, dword [esp + 0x10]
cmp cl, 0x5c
jne 0x45c681
mov ecx, dword [esi + 0xc9a8]
test ecx, ecx
jne 0x45c67e
test edi, edi
mov dword [esi + 0xc9a8], 1
jne 0x45c67e
mov edi, 1
mov byte [eax], 0x2f
push eax
call fcn.0046408f
mov cl, byte [eax]
add esp, 4
test cl, cl
jne 0x45c65c
mov dword [esp + 0x10], edi
push ebx
push esi
call fcn.00459800
add esp, 8
cmp eax, 1
jg 0x45c740
lea edi, [esi + 0xc9dc]
push edi
push esi
call fcn.00458190
add esp, 8
cmp eax, 0xffffffff
je 0x45c730
test eax, eax
je 0x45c6ef
cmp eax, 1
jne case.0x45c71f.101
mov eax, dword [esi + 0x70]
cmp eax, 2
je case.0x45c71f.100
mov ecx, dword [esi + 0x4c]
test ecx, ecx
je 0x45c6e4
test ebx, ebx
je case.0x45c71f.100
cmp eax, 1
je case.0x45c71f.101
jmp 0x45c700
mov eax, dword [esi + 0x70]
cmp eax, 2
je case.0x45c71f.100
cmp eax, 1
je case.0x45c71f.101
mov edx, dword [esi + 0xcb28]
mov eax, dword [edx + 0xc]
test eax, eax
je 0x45c712
push edi
call eax
jmp 0x45c717
mov eax, 0x68
add eax, 0xffffff9c
cmp eax, 5
ja case.0x45c71f.101
jmp dword [eax*4 + 0x45ca20]
mov ebx, 1
jmp 0x45c62e
mov eax, dword [esi + 0x1c]
test eax, eax
je case.0x45c71f.101
test ebx, ebx
jne case.0x45c71f.101
jmp case.0x45c71f.100
cmp eax, 0x4d
je case.0x45c71f.100
cmp eax, 0x4e
je case.0x45c71f.100
cmp eax, 2
jle case.0x45c71f.100
cmp dword [esp + 0x10], 2
jge case.0x45c71f.100
mov dword [esp + 0x10], 2
jmp case.0x45c71f.100
mov dword [esi + 0x70], 1
mov eax, dword [esi + 0xcb24]
test eax, eax
je 0x45c7a1
mov edx, dword [esi + 0xc900]
lea ecx, [esi + 0xc9dc]
push 0
push ecx
push edx
push 1
push esi
call eax
test eax, eax
jne 0x45c8a6
push esi
mov dword [esi + 0xc9ac], 0
call fcn.0045cba0
add esp, 4
test eax, eax
je 0x45c7dc
mov edi, dword [esp + 0x10]
cmp eax, edi
jle 0x45c7c6
mov edi, eax
mov dword [esp + 0x10], edi
cmp dword [esi + 0xc9ac], 1
jg 0x45c8d5
cmp edi, 0x50
je 0x45c8d5
mov eax, dword [esi + 0xcb24]
test eax, eax
je case.0x45c71f.100
lea ecx, [esi + 0xc930]
lea edx, [esi + 0xc9dc]
push ecx
mov ecx, dword [esi + 0xc900]
push edx
push ecx
push 3
push esi
call eax
test eax, eax
jne 0x45c901
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0x50]
inc eax
cmp eax, ecx
mov dword [esp + 0x2c], eax
jb 0x45c2a1
mov edx, dword [esp + 0x40]
mov eax, dword [esi + 0xc904]
xor edi, edi
push edi
push edx
push eax
call fcn.0046d36a
mov ecx, dword [esi + 0xc8e0]
mov edx, dword [esi + 0xc904]
push 0x2000
push ecx
push edx
mov dword [esi + 0xc90c], eax
call fcn.0046d7e4
mov ecx, dword [esp + 0x60]
mov eax, dword [esp + 0x5c]
mov dword [esi + 0xc8e8], ecx
mov ecx, dword [esp + 0x50]
mov dword [esi + 0xc8e4], eax
mov eax, dword [esp + 0x30]
add esp, 0x18
inc ecx
cmp eax, edi
mov dword [esp + 0x38], ecx
je 0x45c05c
jmp 0x45c930
mov dword [esi + 0x70], 2
jmp case.0x45c71f.100
pop edi
pop esi
pop ebp
mov eax, 3
pop ebx
add esp, 0x3c
ret
pop edi
pop esi
pop ebp
mov eax, 0x33
pop ebx
add esp, 0x3c
ret
mov eax, dword [esp + 0x14]
test eax, eax
je 0x45c8b7
push eax
call fcn.00461c32
add esp, 4
mov eax, dword [esp + 0x1c]
test eax, eax
je 0x45c923
push eax
call fcn.00461c32
add esp, 4
mov eax, 0x50
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x3c
ret
mov eax, dword [esp + 0x14]
test eax, eax
je 0x45c8e6
push eax
call fcn.00461c32
add esp, 4
mov eax, dword [esp + 0x1c]
test eax, eax
je 0x45c8f7
push eax
call fcn.00461c32
add esp, 4
mov eax, edi
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x3c
ret
mov eax, dword [esp + 0x14]
test eax, eax
je 0x45c912
push eax
call fcn.00461c32
add esp, 4
mov eax, dword [esp + 0x1c]
test eax, eax
je 0x45c923
push eax
call fcn.00461c32
add esp, 4
pop edi
pop esi
pop ebp
mov eax, 0x50
pop ebx
add esp, 0x3c
ret
mov eax, dword [esp + 0x14]
mov ebx, 0xb
cmp eax, edi
je 0x45c98e
cmp dword [esi + 0x64], edi
jbe 0x45c97f
mov ebp, dword [esp + 0x14]
cmp dword [ebp], 0
jne 0x45c974
mov eax, dword [esi + 0x9c]
test eax, eax
jne 0x45c960
mov eax, dword [esi + 0xa0]
test eax, eax
je 0x45c969
push esi
call fcn.00457790
add esp, 4
cmp dword [esp + 0x10], 1
jg 0x45c974
mov dword [esp + 0x10], ebx
mov eax, dword [esi + 0x64]
inc edi
add ebp, 4
cmp edi, eax
jb 0x45c946
mov edx, dword [esp + 0x14]
push edx
call fcn.00461c32
add esp, 4
xor edi, edi
mov eax, dword [esp + 0x1c]
cmp eax, edi
je 0x45c99f
push eax
call fcn.00461c32
add esp, 4
mov eax, dword [esp + 0x3c]
cmp eax, edi
mov eax, dword [esp + 0x10]
je 0x45c9b4
cmp eax, edi
jne 0x45c9b4
mov eax, 1
mov ecx, dword [esp + 0x30]
cmp ecx, edi
jne 0x45c9d8
cmp eax, 1
jg 0x45c9d8
mov esi, dword [esp + 0x20]
xor eax, eax
cmp eax, esi
pop edi
sbb eax, eax
pop esi
and eax, 0x46
pop ebp
add eax, ebx
pop ebx
add esp, 0x3c
ret
mov edx, dword [esp + 0x34]
cmp ecx, edx
jne 0x45c9f2
cmp eax, 1
jg 0x45c9f2
pop edi
pop esi
pop ebp
mov eax, 0x52
pop ebx
add esp, 0x3c
ret
cmp dword [esp + 0x20], edi
jbe 0x45ca0a
cmp eax, 1
jg 0x45ca0a
pop edi
pop esi
pop ebp
mov eax, 0x51
pop ebx
add esp, 0x3c
ret
cmp edx, edi
jbe 0x45ca17
cmp eax, edi
jne 0x45ca17
mov eax, 1
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x3c
ret