Function at 0x425630
Capabilities:
Read file on windows

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x4ac091
mov eax, dword fs:[0]
push eax
sub esp, 0x7a4
mov eax, dword [0x4c75d0]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov eax, dword [ebp + 0x10]
mov esi, dword [ebp + 8]
mov edi, dword [ebp + 0xc]
mov dword [ebp - 0x790], eax
xor eax, eax
mov ebx, ecx
mov dword [ebp - 0x7a8], esi
mov dword [ebp - 0x7a0], edi
mov dword [ebp - 0x794], eax
mov dword [ebp - 0x79c], eax
cmp esi, eax
je 0x425990
cmp byte [esi], al
je 0x425990
cmp edi, eax
je 0x425990
call fcn.004234c0
mov ecx, dword [ebp - 0x790]
push 0x4b3240
push esi
push ebx
mov dword [ebx + 0x40c], edi
mov dword [ebx + 0x418], ecx
call dword [sym.imp.MSVCR100.dll_fopen_s]
add esp, 0xc
cmp dword [ebx], 0xffffffff
je 0x425990
lea eax, [ebp - 0x74]
mov esi, str.Basic
mov ecx, eax
mov edx, 0x64
sub esi, ecx
lea ecx, [edx + 0x7fffff9a]
test ecx, ecx
je 0x4256fb
mov cl, byte [esi + eax]
test cl, cl
je 0x4256fb
mov byte [eax], cl
inc eax
dec edx
jne 0x4256e2
jmp 0x4256ff
test edx, edx
jne 0x425700
dec eax
mov byte [eax], 0
lea eax, [ebp - 0x74]
lea edx, [eax + 1]
lea esp, [esp]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x425710
sub eax, edx
push eax
lea edx, [ebp - 0x74]
push edx
push 0
mov ecx, edi
call fcn.00410420
lea eax, [ebp - 0x74]
mov edx, 0x4b324c
mov ecx, eax
mov esi, 0x64
sub edx, ecx
jmp 0x425740
lea ecx, [esi + 0x7fffff9a]
test ecx, ecx
je 0x425759
mov cl, byte [edx + eax]
test cl, cl
je 0x425759
mov byte [eax], cl
inc eax
dec esi
jne 0x425740
jmp 0x42575d
test esi, esi
jne 0x42575e
dec eax
mov byte [eax], 0
lea eax, [ebp - 0x74]
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x425767
sub eax, edx
push eax
lea edx, [ebp - 0x74]
push edx
push 1
mov ecx, edi
call fcn.00410420
lea eax, [ebp - 0x74]
mov edx, str.Expert
mov ecx, eax
mov esi, 0x64
sub edx, ecx
nop
lea ecx, [esi + 0x7fffff9a]
test ecx, ecx
je 0x4257a9
mov cl, byte [edx + eax]
test cl, cl
je 0x4257a9
mov byte [eax], cl
inc eax
dec esi
jne 0x425790
jmp 0x4257ad
test esi, esi
jne 0x4257ae
dec eax
mov byte [eax], 0
lea eax, [ebp - 0x74]
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x4257b7
sub eax, edx
push eax
lea edx, [ebp - 0x74]
push edx
push 2
mov ecx, edi
call fcn.00410420
lea eax, [ebp - 0x74]
mov edx, str.Genius
mov ecx, eax
mov esi, 0x64
sub edx, ecx
nop
lea ecx, [esi + 0x7fffff9a]
test ecx, ecx
je 0x4257f9
mov cl, byte [edx + eax]
test cl, cl
je 0x4257f9
mov byte [eax], cl
inc eax
dec esi
jne 0x4257e0
jmp 0x4257fd
test esi, esi
jne 0x4257fe
dec eax
mov byte [eax], 0
lea eax, [ebp - 0x74]
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x425807
sub eax, edx
push eax
lea edx, [ebp - 0x74]
push edx
push 3
mov ecx, edi
call fcn.00410420
mov eax, dword [ebx]
push eax
push 4
lea ecx, [ebp - 0x7a4]
push 1
push ecx
mov dword [ebp - 0x798], 0x6d783f3c
call dword [sym.imp.MSVCR100.dll_fread]
mov edx, dword [ebp - 0x7a4]
add esp, 0x10
cmp edx, dword [ebp - 0x798]
jne 0x4258a3
mov eax, dword [ebx]
push eax
call dword [sym.imp.MSVCR100.dll_fclose]
add esp, 4
lea ecx, [ebp - 0x78c]
call fcn.00425370
mov ecx, dword [ebp - 0x790]
mov edx, dword [ebp - 0x7a8]
push ecx
push edi
push edx
lea ecx, [ebp - 0x78c]
mov dword [ebp - 4], 0
call fcn.004235a0
test eax, eax
jne 0x425893
mov dword [ebp - 0x794], 0x80004005
lea ecx, [ebp - 0x78c]
call fcn.00425070
jmp 0x42599a
mov ecx, dword [ebx]
xor eax, eax
mov dword [ebp - 0x7b0], eax
mov dword [ebp - 0x7ac], eax
lea eax, [ebp - 0x7b0]
push eax
push ecx
call dword [sym.imp.MSVCR100.dll_fsetpos]
mov edi, dword [sym.imp.MSVCR100.dll_fgets]
add esp, 8
lea esi, [ebx + 4]
lea ecx, [ecx]
inc dword [ebp - 0x79c]
push esi
mov ecx, ebx
call fcn.004237b0
cmp dword [ebp - 0x790], 0
je 0x425925
mov ecx, dword [ebp - 0x79c]
mov eax, 0x51eb851f
mul ecx
shr edx, 4
imul edx, edx, 0x32
mov eax, ecx
sub eax, edx
jne 0x425925
push ecx
push str.Processed__i_lines
lea ecx, [ebp - 0x74]
push 0x64
push ecx
call fcn.004010b0
mov eax, dword [ebp - 0x790]
add esp, 0x10
lea edx, [ebp - 0x74]
push edx
push eax
call dword [sym.imp.USER32.dll_SetWindowTextA]
mov ecx, dword [ebx]
push ecx
push 0x400
push esi
call edi
add esp, 0xc
test eax, eax
jne 0x4258d0
mov esi, dword [ebp - 0x790]
test esi, esi
je 0x42595f
push str.Resolving_Links
lea edx, [ebp - 0x74]
push 0x64
push edx
call fcn.004010b0
add esp, 0xc
lea eax, [ebp - 0x74]
push eax
push esi
call dword [sym.imp.USER32.dll_SetWindowTextA]
mov ecx, ebx
call fcn.00423030
cmp dword [ebx + 0x414], 0xffff
mov ecx, dword [ebp - 0x7a0]
jae 0x425984
push 0x10000
call fcn.00412010
jmp 0x42599a
push 0x40000
call fcn.00412010
jmp 0x42599a
mov dword [ebp - 0x794], 0x80004005
mov eax, dword [ebp - 0x790]
test eax, eax
je 0x4259b0
push 0x4b3239
push eax
call dword [sym.imp.USER32.dll_SetWindowTextA]
mov eax, dword [ebx]
test eax, eax
je 0x4259c0
push eax
call dword [sym.imp.MSVCR100.dll_fclose]
add esp, 4
mov eax, dword [ebp - 0x794]
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.0042dbe7
mov esp, ebp
pop ebp
ret 0xc