Function at 0x45cab0
Capabilities:
Contain obfuscated stackstrings

Disassembly:
push ebp
push edi
mov edi, edx
push esi
mov esi, ecx
push ebx
mov ebx, eax
sub esp, 0x21c
mov ecx, dword [eax + 0x9c]
mov ebp, dword [ecx + 0x5c]
test ebp, ebp
jne 0x45cc70
mov dword [ecx + 0x1a0], sym._next_char_utf8
mov dword [ecx + 0x1a4], sym._push_char4
movzx eax, byte [ebx + 0xc8]
test al, 2
jne 0x45cc9c
mov edx, dword [ebx + 0xd4]
test edx, edx
jg 0x45cb50
test al, 0x40
jne 0x45cc4a
test al, al
js 0x45cda0
mov eax, ebx
call sym._eat_spaces
cmp byte [ebx + 0xc8], 0
js 0x45cda0
mov dword [ebx + 0xe0], 0
mov dword [ebx + 0xd4], 1
cmp edi, 7
ja case.0x45cb3f.0
jmp dword [edi*4 + 0x46e5f8]
mov eax, dword [ebx + 0xe0]
test eax, eax
je case.0x45d0b5.0
cmp edi, eax
jne 0x45d110
cmp edi, 6
je case.0x45cf40.6
mov eax, dword [ebx + 0xd8]
cmp edi, 4
je 0x45d1a0
cmp dword [esp + 0x230], eax
je 0x45d0b0
mov dword [esp], edi
mov esi, dword [ebx + 0xa0]
call sym.__gfortrani_type_name
mov edx, dword [ebx + 0xd8]
mov dword [esp + 0x18], esi
mov esi, dword [esp + 0x230]
mov dword [esp + 0x10], eax
mov dword [esp + 0x14], esi
lea esi, [esp + 0x110]
mov dword [esp + 0xc], edx
mov dword [esp + 8], str.Read_kind__d__s_where_kind__d_is_required_for_item__d
mov dword [esp + 4], 0x64
mov dword [esp], esi
call sym.___mingw_snprintf
mov eax, dword [ebx + 0xec]
and byte [ebx + 0xc9], 0xef
mov dword [ebx + 0xf8], 0
test eax, eax
je 0x45cc02
mov dword [esp], eax
call sym._free
mov dword [ebx + 0xec], 0
mov dword [esp + 8], esi
xor edi, edi
mov dword [esp], ebx
mov dword [esp + 4], 0x1392
call sym.__gfortran_generate_error
add esp, 0x21c
mov eax, edi
pop ebx
pop esi
pop edi
pop ebp
ret
mov edx, dword [ebx + 0xd4]
test edx, edx
jg case.0x45cf40.1
sub edx, 1
mov dword [ebx + 0xd4], edx
test edx, edx
jle 0x45cfa7
mov ecx, dword [ebx + 0x9c]
mov edi, dword [ebx]
and edi, 3
mov dword [esp + 4], 2
mov dword [esp], ecx
call sym.__gfortrani_fbuf_flush_list
add esp, 0x21c
mov eax, edi
pop ebx
pop esi
pop edi
pop ebp
ret
test byte [eax + 0xc9], 0x20
je 0x45ccf0
movzx eax, byte [ebx + 0xc8]
mov dword [ecx + 0x1a0], sym._next_char_internal
mov dword [ecx + 0x1a4], sym._push_char_default
test al, 2
je 0x45caf4
mov dword [ebx + 0xd4], 1
and eax, 0x3d
mov byte [ebx + 0xc8], al
mov eax, ebx
call sym._eat_spaces
mov ebp, eax
cmp eax, 0xffffffff
je 0x45cd60
lea eax, [eax - 0x2c]
cmp eax, 0xf
ja 0x45cd10
mov edx, 0x8009
bt edx, eax
jae 0x45cb36
mov dword [ebx + 0xd4], 0
mov eax, ebx
call sym._eat_separator
jmp 0x45cc44
mov dword [ecx + 0x1a0], sym._next_char_default
mov dword [ecx + 0x1a4], sym._push_char_default
jmp 0x45cae5
lea eax, [ebp - 9]
cmp eax, 0x17
ja 0x45d160
mov edx, 0x800013
bt edx, eax
jae 0x45cb36
mov dword [ebx + 0xd4], 0
mov eax, ebx
call sym._eat_separator
cmp ebp, 0xa
je 0x45cd49
cmp ebp, 0xd
jne 0x45cc44
or byte [ebx + 0xc8], 0x80
mov eax, ebx
call sym._finish_separator
cmp eax, 0xffffffff
jne 0x45cb36
mov eax, dword [ebx + 0xec]
and byte [ebx + 0xc9], 0xef
mov dword [ebx + 0xf8], 0
test eax, eax
je 0x45cd8d
mov dword [esp], eax
call sym._free
mov dword [ebx + 0xec], 0
mov dword [esp], ebx
call sym.__gfortrani_hit_eof
jmp 0x45cc44
mov eax, ebx
call sym._finish_separator
jmp 0x45cb22
mov eax, dword [esp + 0x234]
mov ecx, dword [esp + 0x230]
mov edx, esi
mov dword [esp], eax
mov eax, ebx
call sym._read_complex
mov edx, dword [ebx + 0xd4]
test edx, edx
jle 0x45cf10
mov edx, dword [esp + 0x234]
lea eax, [ebx + 0xfc]
mov dword [esp + 4], esi
mov dword [esp], eax
mov dword [esp + 8], edx
call sym._memcpy
jmp 0x45cf10
mov ecx, dword [esp + 0x230]
mov edx, esi
mov eax, ebx
call sym._read_real
mov ecx, dword [ebx + 0xd4]
test ecx, ecx
jle 0x45cf10
jmp 0x45cdd8
mov edx, dword [ebx + 0x9c]
lea edi, [esp + 0x114]
mov ecx, 0x3f
mov eax, dword [edx]
mov dword [esp + 0x37], 0x5453494c
mov dword [esp + 0x3b], 0x45524944
mov dword [esp + 0x2c], eax
xor eax, eax
rep stosd dword es:[edi], eax
mov eax, dword [ebx]
mov dword [esp + 0x3f], 0x44455443
lea edi, [esp + 0x30]
mov byte [esp + 0x43], 0
mov dword [esp + 0x110], 0
mov dword [esp + 0x44], 0
mov dword [esp + 0x60], 1
mov dword [esp + 0x64], 0
mov dword [esp + 0x5c], 0
mov dword [esp + 0x30], 0
test al, 0x20
je 0x45ce99
mov edi, dword [ebx + 0x18]
test al, 0x40
jne 0x45d0f0
mov ecx, 0x100
lea eax, [esp + 0x110]
add dword [edx + 0x1b8], 1
mov dword [esp + 0x14], eax
lea eax, [esp + 0x44]
mov dword [esp + 0xc], eax
lea eax, [esp + 0x37]
mov dword [esp + 8], eax
lea eax, [esp + 0x2c]
mov dword [esp + 4], eax
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x18], 0xc
mov dword [esp + 0x10], edi
mov dword [esp], esi
call dword [ebx + 0x128]
mov eax, dword [edi]
mov dword [ebx + 0xcc], eax
mov eax, dword [ebx + 0x9c]
sub dword [eax + 0x1b8], 1
jmp 0x45cf10
mov eax, ebx
call sym._read_character.isra.4
mov esi, esi
lea edi, [edi]
mov eax, dword [ebx + 0xe0]
cmp eax, 6
je 0x45cf2c
test eax, eax
je 0x45cf2c
mov edx, dword [esp + 0x234]
mov dword [ebx + 0xd8], edx
mov edi, dword [ebx]
and edi, 3
jne 0x45d0a0
cmp eax, 6
ja case.0x45cb3f.0
jmp dword [eax*4 + 0x46e618]
mov edx, dword [esp + 0x230]
mov eax, ebx
call sym._read_logical
jmp 0x45cf10
mov edx, dword [esp + 0x230]
mov eax, ebx
call sym._read_integer
jmp 0x45cf10
mov dword [esp + 8], edi
mov dword [esp + 4], edx
mov dword [esp], esi
call sym._memcpy
cmp dword [esp + 0x234], edi
ja 0x45d1e7
lea esi, [esi]
mov edx, dword [ebx + 0xd4]
sub edx, 1
mov dword [ebx + 0xd4], edx
test edx, edx
jg 0x45cc44
mov eax, dword [ebx + 0xe4]
test eax, eax
je 0x45cc44
mov dword [esp], eax
call sym._free
mov edi, dword [ebx]
mov ecx, dword [ebx + 0x9c]
mov dword [ebx + 0xe4], 0
mov dword [ebx + 0xdc], 0
and edi, 3
jmp 0x45cc4f
mov edx, dword [esp + 0x234]
lea eax, [ebx + 0xfc]
mov dword [esp], esi
mov dword [esp + 4], eax
mov dword [esp + 8], edx
call sym._memcpy
mov edx, dword [ebx + 0xd4]
jmp case.0x45d0b5.0
mov edx, dword [ebx + 0xe4]
test edx, edx
je 0x45d1e0
mov eax, dword [esp + 0x234]
cmp dword [ebx + 0xdc], eax
mov edi, eax
mov eax, dword [ebx + 0x9c]
cmovbe edi, dword [ebx + 0xdc]
mov eax, dword [eax + 0x5c]
test eax, eax
jne 0x45d0c0
test edi, edi
je 0x45d05d
xor eax, eax
mov esi, esi
lea edi, [edi]
mov ecx, dword [edx + eax*4]
mov dword [esi + eax*4], ecx
add eax, 1
cmp edi, eax
jne 0x45d050
cmp edi, dword [esp + 0x234]
jae case.0x45cf40.0
cmp dword [esp + 0x230], 1
je 0x45d1e7
nop
lea esi, [esi]
mov dword [esi + edi*4], 0x20
add edi, 1
cmp dword [esp + 0x234], edi
ja 0x45d080
jmp case.0x45cf40.0
mov ecx, dword [ebx + 0x9c]
jmp 0x45cc4f
cmp edi, 6
ja case.0x45cb3f.0
jmp dword [edi*4 + 0x46e634]
cmp dword [esp + 0x230], 1
je 0x45cf70
xor eax, eax
test edi, edi
je 0x45d0e1
mov ecx, dword [edx + eax*4]
mov dword [esi + eax*4], ecx
add eax, 1
cmp edi, eax
jne 0x45d0d4
cmp edi, dword [esp + 0x234]
jb 0x45d080
jmp case.0x45cf40.0
mov eax, dword [ebx + 0x14]
mov ecx, dword [ebx + 0x10]
jmp 0x45cead
mov dword [esp + 4], str.Bad_type_for_list_read
mov dword [esp], ebx
call sym.__gfortrani_internal_error
nop
lea esi, [esi]
mov dword [esp], edi
mov ebp, dword [ebx + 0xa0]
call sym.__gfortrani_type_name
mov esi, eax
mov eax, dword [ebx + 0xe0]
mov dword [esp], eax
call sym.__gfortrani_type_name
mov dword [esp + 0x10], esi
lea esi, [esp + 0x110]
mov dword [esp + 0x14], ebp
mov dword [esp + 0xc], eax
mov dword [esp + 8], str.Read_type__s_where__s_was_expected_for_item__d
mov dword [esp + 4], 0x64
mov dword [esp], esi
call sym.___mingw_snprintf
jmp 0x45cbd5
test byte [ebx + 0xc9], 2
je 0x45cb36
cmp ebp, 0x21
jne 0x45cb36
mov dword [ebx + 0xd4], 0
mov eax, ebx
call sym._eat_separator
mov edi, dword [ebx]
mov ecx, dword [ebx + 0x9c]
and edi, 3
jmp 0x45cc4f
mov edx, dword [esp + 0x230]
add edx, edx
cmp edx, eax
je case.0x45cf40.1
mov dword [esp], 4
mov esi, dword [ebx + 0xa0]
call sym.__gfortrani_type_name
mov ecx, dword [ebx + 0xd8]
mov edx, ecx
shr edx, 0x1f
add edx, ecx
sar edx, 1
jmp 0x45cb9f
xor edi, edi
jmp 0x45d05d
mov eax, dword [esp + 0x234]
add esi, edi
mov dword [esp + 4], 0x20
mov dword [esp], esi
sub eax, edi
mov dword [esp + 8], eax
call sym._memset
mov edx, dword [ebx + 0xd4]
jmp case.0x45d0b5.0