Function at 0x431b20
Capabilities:
Read file on windows

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x4411ca
mov eax, dword fs:[0]
push eax
sub esp, 0x48
push ebx
push esi
push edi
mov eax, dword [0x4620f4]
xor eax, ebp
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov ebx, dword [ebp + 0x10]
mov dword [ebp - 0x10], 0
mov edi, dword [ebp + 0x14]
mov ecx, dword [edi + 4]
test ecx, ecx
je 0x431b79
mov eax, dword [ecx]
mov eax, dword [eax + 8]
call eax
test al, al
je 0x431b6b
xor al, al
jmp 0x431b7b
mov ecx, dword [edi + 4]
push dword [edi + 0xc]
push dword [edi + 8]
mov eax, dword [ecx]
call dword [eax + 4]
mov al, 1
test al, al
je 0x431ef4
mov eax, dword [ebx + 8]
lea ecx, [ebx + 8]
push 0x1000
lea edx, [ebp - 0x1c]
push edx
call dword [eax]
mov esi, dword [eax]
mov dword [eax], 0
mov dword [ebp - 0x24], esi
mov ecx, dword [ebp - 0x1c]
mov dword [ebp - 4], 1
test ecx, ecx
je 0x431bb3
mov eax, dword [ecx]
push 1
call dword [eax]
mov ecx, dword [esi + 8]
lea edx, [ebp + 0x14]
push 0
mov dword [ebp + 0x14], ecx
mov eax, dword [esi + 0xc]
add eax, dword [esi + 4]
push edx
push ecx
push eax
mov eax, dword [ebp + 0xc]
push dword [eax + 0x10]
call dword [sym.imp.KERNEL32.dll_ReadFile]
test eax, eax
je 0x431e40
mov eax, dword [ebp + 0x14]
test eax, eax
je 0x431d44
mov dword [esi + 8], eax
xor eax, eax
mov ebx, dword [ebp + 0x14]
push eax
push 2
push eax
push ebx
mov dword [ebp - 0x20], eax
call fcn.00437000
mov ecx, dword [edi + 4]
mov dword [ebp - 0x14], eax
mov dword [ebp - 0x18], edx
test ecx, ecx
je 0x431c31
mov eax, dword [ecx]
mov eax, dword [eax + 8]
call eax
test al, al
je 0x431c17
xor cl, cl
jmp 0x431c33
mov eax, dword [ebp - 0x14]
add dword [edi + 8], eax
mov ecx, dword [edi + 4]
mov eax, dword [ebp - 0x18]
adc dword [edi + 0xc], eax
push dword [edi + 0xc]
mov eax, dword [ecx]
push dword [edi + 8]
call dword [eax + 4]
mov cl, 1
sub ebx, dword [ebp - 0x14]
mov eax, dword [ebp - 0x20]
sbb eax, dword [ebp - 0x18]
add dword [edi + 8], ebx
adc dword [edi + 0xc], eax
test cl, cl
je 0x431ce4
mov ebx, dword [ebp + 0x10]
push ecx
mov eax, esp
mov dword [ebp - 0x24], 0
mov ecx, ebx
mov dword [eax], esi
mov eax, dword [ebx]
call dword [eax + 8]
mov ecx, ebx
call fcn.004031a0
test al, al
jne 0x431c73
mov byte [ebp - 4], al
jmp 0x431b55
lea eax, [ebp - 0x20]
mov ecx, ebx
push eax
call fcn.00403710
mov esi, dword [ebp + 8]
mov ecx, edi
push 1
push eax
mov eax, dword [ebp - 0x28]
sub esp, 0x18
mov edx, esp
mov byte [ebp - 4], 3
push esi
mov dword [edx], 0xd18ae1c5
mov dword [edx + 4], 0xa8a1022b
mov dword [edx + 8], 0x453080
mov dword [edx + 0xc], 0x45300c
mov dword [edx + 0x10], 0x243
mov dword [edx + 0x14], eax
call fcn.0042f510
lea ecx, [ebp - 0x20]
mov dword [ebp - 0x10], 1
mov byte [ebp - 4], 1
call fcn.00402f20
mov eax, esi
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
push str.Canceled.
call fcn.004029e0
add esp, 4
push eax
mov eax, dword [ebp - 0x28]
push 0x4000f
sub esp, 0x18
mov ecx, esp
mov dword [ecx], 0xd18ae1c1
mov dword [ecx + 4], 0xa8a1022b
mov dword [ecx + 8], 0x453030
mov dword [ecx + 0xc], 0x452fe8
mov dword [ecx + 0x10], 0x23f
mov dword [ecx + 0x14], eax
mov ecx, dword [ebp + 8]
call fcn.00412b70
mov edx, dword [esi]
mov ecx, esi
push 1
mov dword [ebp - 0x10], 1
mov byte [ebp - 4], 0
call dword [edx]
jmp 0x431f3c
mov eax, dword [esi]
mov ecx, esi
push 1
mov byte [ebp - 4], 0
call dword [eax]
mov ecx, dword [edi + 4]
mov esi, 1
test ecx, ecx
je 0x431d79
mov eax, dword [ecx]
mov eax, dword [eax + 8]
call eax
test al, al
jne 0x431dee
mov ecx, dword [edi + 4]
push dword [edi + 0xc]
push dword [edi + 8]
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, dword [0x465148]
mov dword [ebp - 0x18], eax
test eax, eax
je 0x431d8b
mov ecx, esi
lock xadd dword [eax], ecx
lea eax, [ebp - 0x18]
mov dword [ebp - 4], 4
mov ebx, 2
mov edi, dword [ebp + 8]
mov eax, dword [eax]
mov dword [edi], eax
test eax, eax
je 0x431daa
lock xadd dword [eax], esi
inc esi
or ebx, 1
test bl, 4
je 0x431dc0
and ebx, 0xfffffffb
lea ecx, [ebp - 0x24]
mov dword [ebp - 0x10], ebx
call fcn.00402f20
mov dword [ebp - 4], 0
test bl, 2
je 0x431dda
and ebx, 0xfffffffd
lea ecx, [ebp - 0x18]
mov dword [ebp - 0x10], ebx
call fcn.00402f20
mov eax, edi
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
push str.Canceled.
call fcn.004029e0
add esp, 4
push eax
mov eax, dword [ebp - 0x28]
push 0x4000f
sub esp, 0x18
mov ecx, esp
mov dword [ecx], 0xd18ae1c7
mov dword [ecx + 4], 0xa8a1022b
mov dword [ecx + 8], 0x453100
mov dword [ecx + 0xc], str._anonymous_namespace::SaveFileTo
mov dword [ecx + 0x10], 0x245
mov dword [ecx + 0x14], eax
lea ecx, [ebp - 0x24]
call fcn.00412b70
mov ebx, 4
jmp 0x431d9a
mov eax, dword [ebp - 0x28]
push 0
push 0
push 0x452e98
sub esp, 0x18
mov ecx, esp
mov dword [ecx], 0xd18ae1b8
mov dword [ecx + 4], 0xa8a1022b
mov dword [ecx + 8], 0x452ec8
mov dword [ecx + 0xc], 0x452ea4
mov dword [ecx + 0x10], 0x236
mov dword [ecx + 0x14], eax
lea eax, [ebp - 0x20]
push eax
call fcn.00416a40
add esp, 0x28
mov ebx, dword [ebp + 8]
push 1
push eax
mov eax, dword [ebp - 0x40]
sub esp, 0x18
mov ecx, esp
mov byte [ebp - 4], 2
push ebx
mov dword [ecx], 0xd18ae1b8
mov dword [ecx + 4], 0xa8a1022b
mov dword [ecx + 8], 0x452f48
mov dword [ecx + 0xc], 0x452f18
mov dword [ecx + 0x10], 0x236
mov dword [ecx + 0x14], eax
mov ecx, edi
call fcn.0042f510
lea ecx, [ebp - 0x20]
mov dword [ebp - 0x10], 1
mov byte [ebp - 4], 1
call fcn.00402f20
mov edx, dword [esi]
mov ecx, esi
push 1
mov byte [ebp - 4], 0
call dword [edx]
mov eax, ebx
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
push str.Canceled.
call fcn.004029e0
add esp, 4
push eax
mov eax, dword [ebp - 0x40]
push 0x4000f
sub esp, 0x18
mov ecx, esp
mov dword [ecx], 0xd18ae1b3
mov dword [ecx + 4], 0xa8a1022b
mov dword [ecx + 8], 0x452e48
mov dword [ecx + 0xc], 0x452dd4
mov dword [ecx + 0x10], 0x231
mov dword [ecx + 0x14], eax
mov ecx, dword [ebp + 8]
call fcn.00412b70
mov eax, dword [ebp + 8]
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret