Function at 0x411109
Capabilities:
Read file on windows

Disassembly:
jmp 0x414397
push 0x90
mov eax, 0x41914d
call fcn.004114f6
mov eax, dword [ebp + 0x24]
mov ecx, 0x4210ea
mov esi, dword [ebp + 8]
mov dword [ebp - 0x68], eax
mov eax, dword [ebp + 0x28]
mov dword [ebp - 0x94], eax
mov eax, dword [ebp + 0x2c]
mov dword [ebp - 0x5c], eax
mov eax, dword [ebp + 0x30]
mov dword [ebp - 0x90], eax
call fcn.004115a5
push str..kmc_suf
lea eax, [ebp - 0x48]
push esi
push eax
call fcn.00411104
add esp, 0xc
xor ebx, ebx
lea ecx, [ebp - 0x48]
push 0x41bf10
mov dword [ebp - 4], ebx
call fcn.004114ec
push eax
call dword [sym.imp.ucrtbased.dll_fopen]
mov esi, eax
mov dword [ebp - 0x6c], esi
pop ecx
pop ecx
test esi, esi
jne 0x414438
push 0x41bd6c
lea eax, [ebp - 0x48]
push eax
push str.Error:_cannot_open_file
push dword [sym.imp.MSVCP140D.dll_class_std::basic_ostream_char__struct_std::char_traits_char___std::cerr]
call fcn.004112f8
pop ecx
pop ecx
push eax
call fcn.0041146f
pop ecx
pop ecx
push eax
call fcn.004112f8
pop ecx
pop ecx
inc ebx
jmp 0x414797
mov edi, dword [sym.imp.ucrtbased.dll__fseeki64]
push ebx
push ebx
push ebx
push esi
call edi
add esp, 0x10
lea ecx, [ebp - 0x2c]
push 0x58
push 4
call fcn.00411320
push esi
push 4
push 1
lea ecx, [ebp - 0x2c]
mov byte [ebp - 4], 1
call fcn.00411280
push eax
call dword [sym.imp.ucrtbased.dll_fread]
lea eax, [ebp - 0x2c]
push str.KMCS
push eax
call fcn.004115eb
add esp, 0x18
test al, al
je 0x41448a
push str.Error:_wrong_start_marker_n
jmp 0x41477f
push 2
push 0xffffffffffffffff
push 0xfffffffffffffffc
push esi
call edi
add esp, 0x10
lea ecx, [ebp - 0x2c]
push esi
push 4
push 1
call fcn.00411280
push eax
call dword [sym.imp.ucrtbased.dll_fread]
lea eax, [ebp - 0x2c]
push str.KMCS
push eax
call fcn.004115eb
add esp, 0x18
test al, al
je 0x4144c9
push str.Error:_wrong_end_marker_n
jmp 0x41477f
push ebx
push ebx
push 4
push esi
call edi
mov ecx, dword [ebp + 0x14]
xorps xmm0, xmm0
mov eax, dword [ebp + 0x18]
add esp, 0x10
shrd ecx, eax, 2
movlpd qword [ebp - 0x78], xmm0
shr eax, 2
mov dword [ebp - 0x98], ecx
mov dword [ebp - 0x8c], eax
movlpd qword [ebp - 0x88], xmm0
movlpd qword [ebp - 0x80], xmm0
cmp dword [ebp + 0x10], ebx
jb 0x414713
ja 0x414515
cmp dword [ebp + 0xc], ebx
jbe 0x414713
mov ecx, dword [ebp + 0x1c]
mov edx, dword [ebp - 0x78]
neg ecx
mov dword [ebp - 0x70], ecx
mov ecx, dword [ebp + 0x20]
adc ecx, ebx
mov dword [ebp - 0x54], edx
neg ecx
mov dword [ebp - 0x9c], ecx
mov ecx, dword [ebp - 0x74]
mov dword [ebp - 0x58], ecx
mov ecx, dword [ebp - 0x84]
mov dword [ebp - 0x64], ecx
mov ecx, dword [ebp - 0x88]
mov dword [ebp - 0x60], ecx
mov ecx, dword [ebp - 0x7c]
mov dword [ebp - 0x84], ecx
mov ecx, dword [ebp - 0x80]
mov dword [ebp - 0x7c], ecx
push 1
push eax
push dword [ebp - 0x98]
push esi
call edi
push dword [ebp + 0x20]
push dword [ebp + 0x1c]
push esi
call fcn.004115e6
add esp, 0x1c
mov ecx, eax
call fcn.004111f4
movaps xmm1, xmm0
xorps xmm0, xmm0
mulsd xmm1, qword [ebp + 0x34]
movlpd qword [ebp - 0x78], xmm0
movsd xmm0, qword [0x41c108]
comisd xmm1, xmm0
jb 0x4145b6
subsd xmm1, xmm0
comisd xmm0, xmm1
jbe 0x4145b6
mov eax, dword [ebp - 0x78]
add eax, ebx
mov dword [ebp - 0x50], eax
mov eax, dword [ebp - 0x74]
adc eax, 0x80000000
mov dword [ebp - 0x4c], eax
jmp 0x4145c2
mov eax, dword [ebp - 0x74]
mov dword [ebp - 0x4c], eax
mov eax, dword [ebp - 0x78]
mov dword [ebp - 0x50], eax
movaps xmm0, xmm1
call fcn.004112cb
add eax, dword [ebp - 0x50]
mov ecx, edx
mov edx, dword [ebp - 0x94]
adc ecx, dword [ebp - 0x4c]
mov dword [ebp - 0x50], eax
mov dword [ebp - 0x4c], ecx
cmp ecx, edx
ja 0x4145fb
jb 0x4145e9
cmp eax, dword [ebp - 0x68]
jae 0x4145fb
add dword [ebp - 0x60], 1
mov ecx, edx
mov eax, dword [ebp - 0x68]
adc dword [ebp - 0x64], ebx
mov dword [ebp - 0x50], eax
mov dword [ebp - 0x4c], ecx
mov edx, dword [ebp - 0x90]
cmp ecx, edx
jb 0x41461c
ja 0x41460c
cmp eax, dword [ebp - 0x5c]
jbe 0x41461c
add dword [ebp - 0x54], 1
mov eax, dword [ebp - 0x5c]
adc dword [ebp - 0x58], ebx
mov dword [ebp - 0x50], eax
mov dword [ebp - 0x4c], edx
push 1
push dword [ebp - 0x9c]
push dword [ebp - 0x70]
push esi
call edi
push dword [ebp + 0x20]
push dword [ebp + 0x1c]
push dword [ebp - 0x4c]
push dword [ebp - 0x50]
push esi
call fcn.00411046
mov ecx, dword [ebp - 0x7c]
add esp, 0x24
mov eax, dword [ebp - 0x84]
add ecx, 1
mov dword [ebp - 0x7c], ecx
adc eax, ebx
cmp eax, dword [ebp + 0x10]
mov dword [ebp - 0x84], eax
mov eax, dword [ebp - 0x8c]
jb 0x414557
ja 0x414670
cmp ecx, dword [ebp + 0xc]
jb 0x414557
mov edx, dword [ebp - 0x54]
mov edi, str._counters_was_set_to
mov ecx, dword [ebp - 0x58]
mov eax, edx
or eax, ecx
je 0x4146c4
push str._because_of_overflow_n
push dword [ebp - 0x90]
push dword [ebp - 0x5c]
push edi
push ecx
push edx
push str.Warning:
push dword [sym.imp.MSVCP140D.dll_class_std::basic_ostream_char__struct_std::char_traits_char___std::cerr]
call fcn.004112f8
pop ecx
pop ecx
mov ecx, eax
call dword [sym.imp.MSVCP140D.dll_public:_class_std::basic_ostream_char__struct_std::char_traits_char______thiscall_std::basic_ostream_char__struct_std::char_traits_char__::operator___unsigned_long_long_unsigned___int64__]
push eax
call fcn.004112f8
pop ecx
pop ecx
mov ecx, eax
call dword [sym.imp.MSVCP140D.dll_public:_class_std::basic_ostream_char__struct_std::char_traits_char______thiscall_std::basic_ostream_char__struct_std::char_traits_char__::operator___unsigned_long_long_unsigned___int64__]
push eax
call fcn.004112f8
pop ecx
pop ecx
mov edx, dword [ebp - 0x60]
mov eax, edx
mov ecx, dword [ebp - 0x64]
or eax, ecx
je 0x414713
push str._because_of_underflow_n
push dword [ebp - 0x94]
push dword [ebp - 0x68]
push edi
push ecx
push edx
push str.Warning:
push dword [sym.imp.MSVCP140D.dll_class_std::basic_ostream_char__struct_std::char_traits_char___std::cerr]
call fcn.004112f8
pop ecx
pop ecx
mov ecx, eax
call dword [sym.imp.MSVCP140D.dll_public:_class_std::basic_ostream_char__struct_std::char_traits_char______thiscall_std::basic_ostream_char__struct_std::char_traits_char__::operator___unsigned_long_long_unsigned___int64__]
push eax
call fcn.004112f8
pop ecx
pop ecx
mov ecx, eax
call dword [sym.imp.MSVCP140D.dll_public:_class_std::basic_ostream_char__struct_std::char_traits_char______thiscall_std::basic_ostream_char__struct_std::char_traits_char__::operator___unsigned_long_long_unsigned___int64__]
push eax
call fcn.004112f8
pop ecx
pop ecx
push esi
push 4
push 1
lea ecx, [ebp - 0x2c]
call fcn.00411280
push eax
call dword [sym.imp.ucrtbased.dll_fread]
lea eax, [ebp - 0x2c]
push str.KMCS
push eax
call fcn.004115eb
add esp, 0x18
test al, al
je 0x414743
push str.Error:_something_went_wrong_n
jmp 0x41477f
push esi
mov esi, dword [sym.imp.ucrtbased.dll__ftelli64]
call esi
push 2
push ebx
push ebx
push dword [ebp - 0x6c]
mov edi, eax
mov dword [ebp - 0x70], edx
call dword [sym.imp.ucrtbased.dll__fseeki64]
push dword [ebp - 0x6c]
call esi
add esp, 0x18
cmp edi, eax
jne 0x41477a
cmp dword [ebp - 0x70], edx
jne 0x41477a
push dword [ebp - 0x6c]
call dword [sym.imp.ucrtbased.dll_fclose]
jmp 0x41478e
push str.Error:_something_went_wrong__EOF_not_reached__n
push dword [sym.imp.MSVCP140D.dll_class_std::basic_ostream_char__struct_std::char_traits_char___std::cerr]
call fcn.004112f8
xor ebx, ebx
pop ecx
inc ebx
pop ecx
lea ecx, [ebp - 0x2c]
call fcn.00411366
lea ecx, [ebp - 0x48]
call fcn.00411366
mov eax, ebx
call fcn.004116a9
ret