Function at 0x591f15
Capabilities:
Read file on windows

Disassembly:
sub esp, 0xc
push ebx
mov ebx, dword [esp + 0x14]
push ebp
push edi
push 2
xor ebp, ebp
mov edi, ecx
push ebp
push ebx
call fcn.005950e0
add esp, 0xc
test eax, eax
je 0x591f3d
mov eax, 0x80004005
jmp 0x5921d9
push esi
push ebx
call fcn.00594fe5
mov esi, eax
pop ecx
test esi, esi
jle 0x592025
lea eax, [esi + 2]
push eax
call fcn.00592c19
mov ecx, dword [edi + 0x1c]
push ecx
mov dword [edi + 0x1c], eax
call fcn.00593aa9
pop ecx
pop ecx
cmp dword [edi + 0x1c], ebp
je 0x5921b4
push ebp
push ebp
push ebx
call fcn.005950e0
add esp, 0xc
test eax, eax
jne 0x591f91
push ebx
push esi
push 1
push dword [edi + 0x1c]
call fcn.00594ba9
add esp, 0x10
cmp eax, esi
je 0x591f9b
mov eax, 0x80470003
jmp 0x5921d8
mov eax, dword [edi + 0x1c]
xor ebx, ebx
mov byte [eax + esi + 1], bl
mov eax, dword [edi + 0x1c]
mov byte [esi + eax], bl
mov ecx, dword [edi + 0x1c]
mov dword [esp + 0x18], ecx
cmp esi, 3
jl 0x591fce
cmp byte [ecx], 0xef
jne 0x591fce
cmp byte [ecx + 1], 0xbb
jne 0x591fce
cmp byte [ecx + 2], 0xbf
jne 0x591fce
lea eax, [ecx + 3]
mov dword [esp + 0x18], eax
cmp esi, 2
jl 0x59204a
cmp byte [ecx], 0xff
jne 0x59204a
cmp byte [ecx + 1], 0xfe
jne 0x59204a
push ebx
push ebx
push ebx
push ebx
push 0xffffffffffffffff
lea ebp, [ecx + 2]
push ebp
push ebx
push 0xfde9
call dword [0x42a020]
mov ebx, eax
test ebx, ebx
je 0x592025
push ebx
call fcn.00592c19
pop ecx
push 0
push 0
push ebx
mov esi, eax
xor ebx, ebx
push esi
push 0xffffffffffffffff
push ebp
push ebx
push 0xfde9
call dword [0x42a020]
test eax, eax
jne 0x59202f
push esi
call fcn.00593aa9
pop ecx
mov eax, 0x80004005
jmp 0x5921d8
mov eax, dword [edi + 0x1c]
push eax
mov dword [edi + 0x1c], esi
call fcn.00593aa9
mov eax, dword [edi + 0x1c]
push ebx
mov dword [esp + 0x20], eax
call fcn.00593aa9
pop ecx
pop ecx
mov esi, ebx
jmp 0x5920b7
mov cl, byte [eax]
cmp cl, 0x23
je 0x5921c2
cmp cl, 0x3b
je 0x5921c2
mov edx, eax
mov ecx, 0x4312e8
call fcn.00592b51
mov ebx, eax
mov dword [esp + 0x10], ebx
mov al, byte [ebx]
test al, al
je 0x5921c2
cmp al, 0x5b
jne 0x5920c0
inc ebx
lea edx, [esp + 0x10]
mov esi, ebx
mov dword [esp + 0x10], ebx
mov ecx, 0x4312e0
mov dword [esp + 0x20], esi
call fcn.00592b79
test eax, eax
je 0x5920b5
lea edx, [esp + 0x10]
mov ecx, 0x4312e8
call fcn.00592b79
test eax, eax
je 0x5921c2
xor esi, esi
mov dword [esp + 0x20], esi
jmp 0x5921c2
test esi, esi
je 0x5921c2
lea edx, [esp + 0x10]
mov ecx, 0x430bac
call fcn.00592b79
test eax, eax
je 0x5921c2
mov ebp, dword [esp + 0x10]
test ebp, ebp
je 0x5921c2
lea eax, [esp + 0x14]
mov ecx, edi
push eax
push esi
call fcn.005922b9
test al, al
jne 0x592144
push 0xc
call fcn.005945cd
mov esi, eax
pop ecx
test esi, esi
je 0x592115
mov dword [esi], ebx
xor ebx, ebx
mov dword [esi + 4], ebp
mov dword [esi + 8], ebx
jmp 0x592119
xor ebx, ebx
mov esi, ebx
mov dword [esp + 0x14], esi
test esi, esi
je 0x5921b4
push ecx
push dword [esp + 0x24]
mov ecx, edi
call fcn.00592878
test eax, eax
je 0x5921e2
push esi
lea ecx, [eax + 8]
call fcn.0059227e
jmp 0x5921be
mov esi, dword [esp + 0x14]
jmp 0x592184
mov ecx, dword [esi]
mov eax, ebx
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x59216e
test dl, dl
je 0x59216a
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x59216e
add eax, 2
add ecx, 2
test dl, dl
jne 0x59214e
xor eax, eax
jmp 0x592173
sbb eax, eax
or eax, 1
test eax, eax
je 0x5921bb
mov eax, dword [esi + 8]
test eax, eax
je 0x59218a
mov esi, eax
mov dword [esp + 0x14], esi
test esi, esi
jne 0x59214a
jmp 0x5921be
push 0xc
call fcn.005945cd
pop ecx
test eax, eax
je 0x5921a2
mov dword [eax], ebx
xor ebx, ebx
mov dword [eax + 4], ebp
mov dword [eax + 8], ebx
jmp 0x5921a6
xor ebx, ebx
mov eax, ebx
push eax
lea ecx, [esi + 8]
call fcn.0059227e
cmp dword [esi + 8], ebx
jne 0x5921be
mov eax, 0x8007000e
jmp 0x5921d8
mov dword [esi + 4], ebp
mov esi, dword [esp + 0x20]
lea edx, [esp + 0x18]
mov ecx, 0x4312e4
call fcn.00592b79
test eax, eax
jne 0x59204e
pop esi
pop edi
pop ebp
pop ebx
add esp, 0xc
ret 4
call 0x591e7f
int3