Function at 0x59b7a0
Capabilities:
Read file on windows

Disassembly:
sub esp, 0x8cc
mov eax, dword [0x6d7160]
xor eax, esp
mov dword [esp + 0x8c4], eax
push ebx
push ebp
mov ebx, ecx
mov eax, dword [ebx]
push esi
push edi
mov word [ebx + 4], 0x4949
or edi, 0xffffffff
cmp dword [eax + 0x14], 0
mov dword [esp + 0x20], ebx
mov dword [esp + 0x38], 0
je 0x59b7f5
cmp dword [eax + 0x18], edi
je 0x59b805
mov ecx, dword [eax + 0x1c]
cmp ecx, 0x24
mov dword [eax + 0x18], 0x24
jbe 0x59b7f0
mov ecx, 0x24
mov dword [eax + 0x18], ecx
jmp 0x59b805
mov eax, dword [eax + 4]
push 0
push 0x24
push eax
call fcn.006081d8
add esp, 0xc
mov esi, ebx
call fcn.0057e000
mov dword [ebx + 0x474], eax
mov eax, dword [ebx]
cmp dword [eax + 0x14], 0
je 0x59b833
cmp dword [eax + 0x18], edi
je 0x59b843
mov ecx, dword [eax + 0x1c]
lea edx, [ecx - 4]
cmp ecx, edx
mov dword [eax + 0x18], edx
jbe 0x59b82e
mov ecx, edx
mov dword [eax + 0x18], ecx
jmp 0x59b843
mov ecx, dword [eax + 4]
push 2
push 0xfffffffffffffffc
push ecx
call fcn.006081d8
add esp, 0xc
call fcn.0057e000
mov ecx, dword [ebx]
cmp dword [ecx + 0x14], 0
je 0x59b866
cmp dword [ecx + 0x18], edi
je 0x59b875
mov edx, dword [ecx + 0x1c]
cmp edx, eax
mov dword [ecx + 0x18], eax
ja 0x59b861
mov eax, edx
mov dword [ecx + 0x18], eax
jmp 0x59b875
mov edx, dword [ecx + 4]
push 0
push eax
push edx
call fcn.006081d8
add esp, 0xc
call fcn.0057e000
cmp eax, 0x64434553
jne 0x59c049
call fcn.0057e000
call fcn.0057e000
test eax, eax
mov dword [esp + 0x2c], eax
je 0x59c03f
sub dword [esp + 0x2c], 1
mov esi, ebx
call fcn.0057e000
mov ebp, eax
mov dword [esp + 0x1c], ebp
call fcn.0057e000
mov dword [esp + 0x28], eax
call fcn.0057e000
mov edi, eax
mov eax, dword [ebx]
cmp dword [eax + 0x14], 0
je 0x59b8ca
mov eax, dword [eax + 0x18]
jmp 0x59b8d6
mov ecx, dword [eax + 4]
push ecx
call fcn.00609413
add esp, 4
mov dword [esp + 0x34], eax
mov eax, dword [ebx]
cmp dword [eax + 0x14], 0
je 0x59b8f9
cmp dword [eax + 0x18], 0xffffffff
je 0x59b908
mov ecx, dword [eax + 0x1c]
cmp ecx, ebp
mov dword [eax + 0x18], ebp
jbe 0x59b8f4
mov ecx, ebp
mov dword [eax + 0x18], ecx
jmp 0x59b908
mov edx, dword [eax + 4]
push 0
push ebp
push edx
call fcn.006081d8
add esp, 0xc
mov esi, ebx
call fcn.0057e000
mov ecx, edi
shl ecx, 0x18
or ecx, 0x20434553
cmp eax, ecx
jne 0x59c049
cmp edi, 0x47414d49
jg 0x59bb67
je 0x59b978
cmp edi, 0x32414d49
je 0x59b978
cmp edi, 0x464d4143
jne 0x59bffe
mov eax, dword [esp + 0x28]
mov edx, dword [esp + 0x1c]
add eax, 0xffffffe4
add edx, 0x18
cmp eax, 0x20000
mov dword [ebx + 0x350], edx
mov dword [ebx + 0x35c], eax
jbe 0x59bffe
mov dword [ebx + 0x35c], 0x20000
jmp 0x59bffe
mov eax, dword [ebx]
cmp dword [eax + 0x14], 0
je 0x59b99c
mov ecx, dword [eax + 0x18]
cmp ecx, 0xffffffff
je 0x59b9ac
mov edx, dword [eax + 0x1c]
add ecx, 0xc
cmp edx, ecx
mov dword [eax + 0x18], ecx
ja 0x59b997
mov ecx, edx
mov dword [eax + 0x18], ecx
jmp 0x59b9ac
mov eax, dword [eax + 4]
push 1
push 0xc
push eax
call fcn.006081d8
add esp, 0xc
mov esi, ebx
call fcn.0057e000
mov edi, eax
mov dword [esp + 0x3c], edi
call fcn.0057e000
movzx ecx, word [ebx + 0x45e]
cmp edi, ecx
mov dword [esp + 0x30], eax
jle 0x59b9ef
movzx edx, word [ebx + 0x45c]
cmp eax, edx
jle 0x59b9ef
mov word [ebx + 0x45c], ax
lea eax, [ebp + 0x18]
mov word [ebx + 0x45e], di
mov dword [ebx + 0x348], eax
mov eax, dword [ebx]
cmp dword [eax + 0x14], 0
lea ecx, [ebp + 0x1c]
je 0x59ba11
cmp dword [eax + 0x18], 0xffffffff
je 0x59ba20
mov edx, dword [eax + 0x1c]
cmp edx, ecx
mov dword [eax + 0x18], ecx
ja 0x59ba0c
mov ecx, edx
mov dword [eax + 0x18], ecx
jmp 0x59ba20
push 0
push ecx
mov ecx, dword [eax + 4]
push ecx
call fcn.006081d8
add esp, 0xc
mov esi, dword [ebx]
mov ecx, dword [esi + 0x14]
test ecx, ecx
je 0x59ba74
mov eax, dword [esi + 0x1c]
mov ebp, 1
cmp eax, ebp
jb 0x59ba3f
mov edi, dword [esi + 0x18]
lea edx, [edi + 1]
cmp edx, eax
jbe 0x59ba4c
mov edi, dword [esi + 0x18]
sub eax, edi
mov ebp, eax
je 0x59bb1c
lea eax, [edi + ecx]
push ebp
push eax
lea ecx, [esp + 0x2e]
push ecx
call fcn.0060d1b0
add esp, 0xc
cmp ebp, 1
lea edx, [edi + ebp]
mov dword [esi + 0x18], edx
jne 0x59bb1c
movzx eax, byte [esp + 0x26]
jmp 0x59ba88
mov esi, dword [esi + 4]
test esi, esi
je 0x59ba86
push esi
call fcn.0060963d
add esp, 4
jmp 0x59ba88
xor eax, eax
cmp eax, 0xff
jne 0x59bb1c
mov esi, dword [ebx]
mov ecx, dword [esi + 0x14]
test ecx, ecx
je 0x59badf
mov eax, dword [esi + 0x1c]
mov ebp, 1
cmp eax, ebp
jb 0x59bab2
mov edi, dword [esi + 0x18]
lea edx, [edi + 1]
cmp edx, eax
jbe 0x59babb
mov edi, dword [esi + 0x18]
sub eax, edi
mov ebp, eax
je 0x59bb1c
lea eax, [edi + ecx]
push ebp
push eax
lea ecx, [esp + 0x2f]
push ecx
call fcn.0060d1b0
add esp, 0xc
cmp ebp, 1
lea edx, [edi + ebp]
mov dword [esi + 0x18], edx
jne 0x59bb1c
movzx eax, byte [esp + 0x27]
jmp 0x59baf3
mov esi, dword [esi + 4]
test esi, esi
je 0x59baf1
push esi
call fcn.0060963d
add esp, 4
jmp 0x59baf3
xor eax, eax
cmp eax, 0xd8
jne 0x59bb1c
mov eax, dword [esp + 0x28]
add eax, 0xffffffe4
cmp dword [ebx + 0x358], eax
jae 0x59bb1c
mov ecx, dword [esp + 0x1c]
add ecx, 0x1c
mov dword [ebx + 0x34c], ecx
mov dword [ebx + 0x358], eax
mov eax, dword [esp + 0x38]
add eax, 1
cmp eax, 2
mov dword [esp + 0x38], eax
jne 0x59bffe
cmp dword [ebx + 0x358], 0
jne 0x59bffe
mov eax, dword [esp + 0x1c]
mov cx, word [esp + 0x3c]
mov dx, word [esp + 0x30]
add eax, 0x18
mov dword [ebx + 0x34c], eax
mov word [ebx + 0x470], cx
mov word [ebx + 0x472], dx
jmp 0x59bffe
cmp edi, 0x504f5250
jne 0x59bffe
mov esi, ebx
call fcn.0057e000
call fcn.0057e000
mov dword [esp + 0x28], eax
mov eax, dword [ebx]
cmp dword [eax + 0x14], 0
je 0x59bba7
mov ecx, dword [eax + 0x18]
cmp ecx, 0xffffffff
je 0x59bbb7
mov edx, dword [eax + 0x1c]
add ecx, 0xc
cmp edx, ecx
mov dword [eax + 0x18], ecx
ja 0x59bba2
mov ecx, edx
mov dword [eax + 0x18], ecx
jmp 0x59bbb7
mov eax, dword [eax + 4]
push 1
push 0xc
push eax
call fcn.006081d8
add esp, 0xc
mov eax, dword [esp + 0x28]
cmp eax, 0x100
mov ecx, dword [esp + 0x1c]
lea ebx, [ecx + eax*8 + 0x18]
jbe 0x59bbd3
mov eax, 0x100
mov dword [esp + 0x28], eax
lea ebp, [eax + eax]
xor edi, edi
test ebp, ebp
jle 0x59bbf7
lea esp, [esp]
mov esi, dword [esp + 0x20]
call fcn.0057e000
lea edx, [ebx + eax*2]
mov dword [esp + edi*4 + 0x50], edx
add edi, 1
cmp edi, ebp
jl 0x59bbe0
cmp dword [esp + 0x28], 0
mov ebp, dword [esp + 0x20]
mov dword [esp + 0x1c], 0
jle 0x59bfd6
mov edi, edi
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + eax*8 + 0x50]
mov eax, dword [ebp]
cmp dword [eax + 0x14], 0
je 0x59bc38
cmp dword [eax + 0x18], 0xffffffff
je 0x59bc47
mov edx, dword [eax + 0x1c]
cmp edx, ecx
mov dword [eax + 0x18], ecx
ja 0x59bc33
mov ecx, edx
mov dword [eax + 0x18], ecx
jmp 0x59bc47
push 0
push ecx
mov ecx, dword [eax + 4]
push ecx
call fcn.006081d8
add esp, 0xc
xor ebx, ebx
lea esp, [esp]
mov esi, dword [ebp]
mov byte [esp + 0x18], 0xff
mov byte [esp + 0x19], 0xff
mov edx, dword [esi + 0x14]
test edx, edx
je 0x59bc9d
mov eax, dword [esi + 0x1c]
mov edi, 2
cmp eax, edi
jb 0x59bc7e
mov ecx, dword [esi + 0x18]
lea ebp, [ecx + 2]
cmp ebp, eax
mov ebp, dword [esp + 0x20]
jbe 0x59bc87
mov ecx, dword [esi + 0x18]
sub eax, ecx
mov edi, eax
je 0x59bcb6
add ecx, edx
push edi
push ecx
lea edx, [esp + 0x20]
push edx
call fcn.0060d1b0
add esp, 0xc
add dword [esi + 0x18], edi
jmp 0x59bcb6
mov esi, dword [esi + 4]
test esi, esi
je 0x59bcb6
push esi
push 2
lea eax, [esp + 0x20]
push 1
push eax
call fcn.0060860a
add esp, 0x10
cmp word [ebp + 4], 0x4949
jne 0x59bccd
xor ecx, ecx
mov ch, byte [esp + 0x19]
mov cl, byte [esp + 0x18]
movzx eax, cx
jmp 0x59bcdf
movzx ax, byte [esp + 0x19]
xor edx, edx
mov dh, byte [esp + 0x18]
or dx, ax
movzx eax, dx
test al, al
mov byte [esp + ebx + 0x890], al
je 0x59bcf6
add ebx, 1
cmp ebx, 0x3f
jl 0x59bc50
mov eax, dword [ebp]
cmp dword [eax + 0x14], 0
mov ecx, dword [esp + 0x1c]
mov ecx, dword [esp + ecx*8 + 0x54]
mov byte [esp + ebx + 0x890], 0
je 0x59bd26
cmp dword [eax + 0x18], 0xffffffff
je 0x59bd35
mov edx, dword [eax + 0x1c]
cmp edx, ecx
mov dword [eax + 0x18], ecx
ja 0x59bd21
mov ecx, edx
mov dword [eax + 0x18], ecx
jmp 0x59bd35
mov edx, dword [eax + 4]
push 0
push ecx
push edx
call fcn.006081d8
add esp, 0xc
xor ebx, ebx
jmp 0x59bd40
mov esi, dword [ebp]
mov byte [esp + 0x14], 0xff
mov byte [esp + 0x15], 0xff
mov edx, dword [esi + 0x14]
test edx, edx
je 0x59bd8d
mov eax, dword [esi + 0x1c]
mov edi, 2
cmp eax, edi
jb 0x59bd6e
mov ecx, dword [esi + 0x18]
lea ebp, [ecx + 2]
cmp ebp, eax
mov ebp, dword [esp + 0x20]
jbe 0x59bd77
mov ecx, dword [esi + 0x18]
sub eax, ecx
mov edi, eax
je 0x59bda6
push edi
add ecx, edx
push ecx
lea eax, [esp + 0x1c]
push eax
call fcn.0060d1b0
add esp, 0xc
add dword [esi + 0x18], edi
jmp 0x59bda6
mov esi, dword [esi + 4]
test esi, esi
je 0x59bda6
push esi
push 2
lea ecx, [esp + 0x1c]
push 1
push ecx
call fcn.0060860a
add esp, 0x10
cmp word [ebp + 4], 0x4949
jne 0x59bdbd
xor edx, edx
mov dh, byte [esp + 0x15]
mov dl, byte [esp + 0x14]
movzx eax, dx
jmp 0x59bdcf
movzx cx, byte [esp + 0x15]
xor eax, eax
mov ah, byte [esp + 0x14]
or ax, cx
movzx eax, ax
test al, al
mov byte [esp + ebx + 0x850], al
je 0x59bde6
add ebx, 1
cmp ebx, 0x3f
jl 0x59bd40
mov edi, 0x6ad534
lea esi, [esp + 0x890]
mov ecx, 4
xor edx, edx
repe cmpsb byte [esi], byte es:[edi]
mov byte [esp + ebx + 0x850], 0
jne 0x59be23
lea eax, [esp + 0x850]
push eax
call fcn.00608929
mov dword [esp + 0x34], eax
fild dword [esp + 0x34]
add esp, 4
fstp dword [ebp + 0x320]
mov edi, str.CAMMANUF
lea esi, [esp + 0x890]
mov ecx, 9
xor edx, edx
repe cmpsb byte [esi], byte es:[edi]
jne 0x59be5c
lea eax, [esp + 0x850]
mov edx, eax
mov ecx, ebp
sub ecx, edx
lea edx, [ecx + 0x215]
lea ecx, [ecx]
mov cl, byte [eax]
mov byte [edx + eax], cl
add eax, 1
test cl, cl
jne 0x59be50
mov edi, str.CAMMODEL
lea esi, [esp + 0x890]
mov ecx, 9
xor eax, eax
repe cmpsb byte [esi], byte es:[edi]
jne 0x59be92
lea eax, [esp + 0x850]
mov edx, eax
mov ecx, ebp
sub ecx, edx
lea edx, [ecx + 0x255]
mov cl, byte [eax]
mov byte [edx + eax], cl
add eax, 1
test cl, cl
jne 0x59be86
mov edi, str.WB_DESC
lea esi, [esp + 0x890]
mov ecx, 8
xor eax, eax
repe cmpsb byte [esi], byte es:[edi]
jne 0x59becc
lea eax, [esp + 0x850]
mov edx, eax
mov ecx, ebp
sub ecx, edx
lea edx, [ecx + 0x295]
lea esp, [esp]
mov cl, byte [eax]
mov byte [edx + eax], cl
add eax, 1
test cl, cl
jne 0x59bec0
mov edi, str.TIME
lea esi, [esp + 0x890]
mov ecx, 5
xor eax, eax
repe cmpsb byte [esi], byte es:[edi]
jne 0x59bf00
lea ecx, [esp + 0x850]
push ecx
call fcn.00608929
cdq
add esp, 4
mov dword [ebp + 0x328], eax
mov dword [ebp + 0x32c], edx
mov edi, str.EXPTIME
lea esi, [esp + 0x890]
mov ecx, 8
xor edx, edx
repe cmpsb byte [esi], byte es:[edi]
jne 0x59bf37
lea eax, [esp + 0x850]
push eax
call fcn.00608929
add esp, 4
mov dword [ebp + 0x20670], eax
mov dword [ebp + 0x20674], 0xf4240
mov edi, str.APERTURE
lea esi, [esp + 0x890]
mov ecx, 9
xor edx, edx
repe cmpsb byte [esi], byte es:[edi]
jne 0x59bf7c
lea eax, [esp + 0x850]
push eax
call fcn.00608d4f
push ecx
lea ecx, [esp + 0x48]
fstp qword [esp]
call fcn.004dc230
mov ecx, dword [esp + 0x40]
mov edx, dword [esp + 0x44]
mov dword [ebp + 0x20678], ecx
mov dword [ebp + 0x2067c], edx
mov edi, str.FLENGTH
lea esi, [esp + 0x890]
mov ecx, 8
xor eax, eax
repe cmpsb byte [esi], byte es:[edi]
jne 0x59bfc1
lea ecx, [esp + 0x850]
push ecx
call fcn.00608d4f
push ecx
lea ecx, [esp + 0x50]
fstp qword [esp]
call fcn.004dc230
mov edx, dword [esp + 0x48]
mov eax, dword [esp + 0x4c]
mov dword [ebp + 0x20668], edx
mov dword [ebp + 0x2066c], eax
mov eax, dword [esp + 0x1c]
add eax, 1
cmp eax, dword [esp + 0x28]
mov dword [esp + 0x1c], eax
jl 0x59bc10
lea esi, [ebp + 0x328]
push esi
call fcn.0061bfe1
add esp, 4
push eax
mov dword [eax + 0x20], 0xffffffff
call fcn.0061b471
mov ebx, dword [esp + 0x24]
add esp, 4
mov dword [esi], eax
mov dword [esi + 4], edx
mov eax, dword [ebx]
cmp dword [eax + 0x14], 0
je 0x59c021
cmp dword [eax + 0x18], 0xffffffff
je 0x59c034
mov edx, dword [esp + 0x34]
mov ecx, dword [eax + 0x1c]
cmp ecx, edx
mov dword [eax + 0x18], edx
jbe 0x59c01c
mov ecx, edx
mov dword [eax + 0x18], ecx
jmp 0x59c034
mov ecx, dword [esp + 0x34]
mov edx, dword [eax + 4]
push 0
push ecx
push edx
call fcn.006081d8
add esp, 0xc
cmp dword [esp + 0x2c], 0
jne 0x59b89b
mov dword [ebx + 0x3c8], 1
mov ecx, dword [esp + 0x8d4]
pop edi
pop esi
pop ebp
pop ebx
xor ecx, esp
call fcn.00607d6d
add esp, 0x8cc
ret