Function at 0x403f50
Capabilities:
Read file on windows

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
push ebx
sub esp, 0x2c
mov eax, dword [0x4f7140]
test eax, eax
jne case.0x4040a0.36
mov eax, dword [0x4f7150]
mov dword [0x4f7140], 1
test eax, eax
jne 0x403f7f
mov dword [0x4f7150], 1
mov eax, dword [0x4f70f0]
test eax, eax
je 0x4040e0
mov eax, dword [0x4f70f4]
test eax, eax
je 0x4040bc
mov edx, dword [0x4f7100]
test edx, edx
je 0x4040f9
mov eax, dword [0x4f7110]
mov eax, dword [edx + eax*4]
test eax, eax
je 0x4040f9
call fcn.004037b0
mov edi, dword [0x4f7130]
mov al, byte [0x4f7160]
mov byte [edi], al
mov dword [ebp - 0x30], edi
mov ecx, dword [0x4f7150]
mov dx, word [ecx + ecx + 0x4c6e00]
and eax, 0xff
cmp word [ecx + ecx + 0x4c6a20], 0
mov eax, dword [eax*4 + 0x4c6620]
je 0x403ffd
mov dword [0x4f7190], ecx
mov dword [0x4f71a0], edi
mov esi, eax
jmp 0x404021
movsx ecx, word [ecx + ecx + 0x4c6ba0]
cmp ecx, 0xb0
jle 0x404019
movzx esi, byte [ebx*4 + 0x4c6d20]
mov dx, word [ecx + ecx + 0x4c6e00]
mov ebx, esi
and ebx, 0xff
movsx eax, dx
lea edx, [ebx + eax]
movsx eax, word [edx + edx + 0x4c6f80]
cmp eax, ecx
jne 0x404001
movsx ecx, word [edx + edx + 0x4c7180]
inc edi
mov dx, word [ecx + ecx + 0x4c6e00]
cmp dx, 0xc2
je 0x404057
mov al, byte [edi]
jmp 0x403fda
mov dx, word [ecx + ecx + 0x4c6a20]
test dx, dx
je 0x4040a7
movsx edx, dx
mov eax, dword [ebp - 0x30]
mov ecx, dword [ebp - 0x30]
mov dword [0x4fc6d8], eax
mov eax, edi
sub eax, ecx
mov dword [0x4fc6c8], eax
mov al, byte [edi]
mov byte [0x4f7160], al
mov byte [edi], 0
mov dword [0x4f7130], edi
cmp edx, 0x2a
jbe switch.0x004040a0
mov eax, str.fatal_flex_scanner_internal_error__no_action_found
call fcn.00403ac0
jmp case.0x4040a0.36
jmp dword [edx*4 + 0x4c6560]
mov eax, dword [0x4f7190]
mov edi, dword [0x4f71a0]
movsx edx, word [eax + eax + 0x4c6a20]
jmp 0x404067
mov eax, dword [sym.imp.msvcrt.dll__iob]
mov edx, dword [0x4f7100]
add eax, 0x20
test edx, edx
mov dword [0x4f70f4], eax
jne 0x403fa7
jmp 0x4040f9
mov eax, dword [sym.imp.msvcrt.dll__iob]
mov dword [0x4f70f0], eax
mov eax, dword [0x4f70f4]
test eax, eax
jne 0x403f99
jmp 0x4040bc
call fcn.00403af0
mov ebx, dword [0x4f7110]
mov eax, dword [0x4f7100]
mov esi, dword [0x4f70f0]
push edi
push edi
lea ebx, [eax + ebx*4]
push 0x4000
push esi
call fcn.00403e70
add esp, 0x10
mov dword [ebx], eax
jmp 0x403fb7
mov eax, 0x105
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret
mov eax, 0x113
jmp 0x40412e
mov eax, 0x10e
jmp 0x40412e
mov eax, 0x10a
jmp 0x40412e
mov eax, 0x10b
jmp 0x40412e
mov eax, 0x10c
jmp 0x40412e
mov eax, 0x10d
jmp 0x40412e
mov eax, 0x111
jmp 0x40412e
mov eax, 0x103
jmp 0x40412e
mov eax, 0x112
jmp 0x40412e
mov eax, 0x106
jmp 0x40412e
mov eax, 0x10f
jmp 0x40412e
mov eax, 0x107
jmp 0x40412e
mov eax, 0x108
jmp 0x40412e
mov eax, 0x109
jmp 0x40412e
mov edx, dword [0x4fc6d8]
mov eax, edi
sub eax, edx
dec eax
mov dword [ebp - 0x2c], eax
mov al, byte [0x4f7160]
mov byte [edi], al
mov eax, dword [0x4f7110]
mov ecx, dword [0x4f7100]
mov edx, dword [ecx + eax*4]
mov eax, dword [edx + 0x2c]
test eax, eax
jne 0x4041d8
mov eax, dword [edx + 0x10]
mov dword [0x4f7170], eax
mov eax, dword [0x4f70f0]
mov dword [edx], eax
mov dword [edx + 0x2c], 1
mov edx, dword [edx + 4]
mov ecx, dword [0x4f7170]
mov dword [ebp - 0x1c], edx
mov edx, dword [0x4f7130]
mov eax, dword [ebp - 0x1c]
add eax, ecx
cmp eax, edx
jae 0x40474e
mov ebx, dword [ebp - 0x1c]
mov esi, dword [0x4fc6d8]
inc ebx
mov dword [ebp - 0x38], esi
mov dword [ebp - 0x34], ebx
lea eax, [ecx + ebx]
cmp edx, eax
ja 0x4045a2
mov ebx, dword [0x4f7110]
mov eax, dword [0x4f7100]
lea ecx, [ebx*4]
add ecx, eax
mov dword [ebp - 0x14], ecx
mov ecx, dword [ecx]
mov eax, dword [ecx + 0x28]
test eax, eax
jne 0x40432c
mov eax, dword [ebp - 0x38]
sub edx, eax
dec edx
jne 0x4046be
mov dword [0x4f7180], 0
call fcn.004038e0
test eax, eax
je 0x404737
mov edx, dword [0x4fc6d8]
mov dword [0x4f7130], edx
mov edx, dword [0x4f7150]
dec edx
mov eax, edx
shr eax, 0x1f
add eax, edx
sar eax, 1
lea edx, [eax + 0x2a]
jmp 0x40408b
mov edi, dword [0x4fc6e8]
mov eax, 0x102
inc edi
mov dword [0x4fc6e8], edi
jmp 0x40412e
mov eax, 0x29
jmp 0x40412e
mov eax, 0x28
jmp 0x40412e
mov eax, dword [0x4fc6e8]
inc eax
mov dword [0x4fc6e8], eax
jmp case.0x4040a0.36
xor eax, eax
jmp 0x40412e
sub esp, 0xc
mov eax, dword [0x4fc6d8]
push eax
call fcn.004a8350
add esp, 0x10
mov dword [0x4fc6b8], eax
mov eax, 0x104
jmp 0x40412e
mov eax, 0x2c
jmp 0x40412e
mov esi, dword [0x4f70f4]
mov ebx, dword [0x4fc6c8]
mov ecx, dword [0x4fc6d8]
push esi
push 1
push ebx
push ecx
call fcn.004bc560
add esp, 0x10
jmp case.0x4040a0.36
mov al, byte [0x4f7160]
mov byte [edi], al
mov eax, dword [0x4f7190]
mov edi, dword [0x4f71a0]
mov dx, word [eax + eax + 0x4c6a20]
jmp 0x40405f
mov ebx, edx
mov eax, dword [ebp - 0x38]
sub ebx, eax
lea edx, [ebx - 1]
mov dword [ebp - 0x20], edx
mov edx, 1
mov eax, dword [ebp - 0x20]
test eax, eax
jg 0x40434e
jmp 0x404366
mov ecx, dword [ebp - 0x34]
inc ecx
mov dword [ebp - 0x34], ecx
mov ecx, dword [ebp - 0x1c]
mov al, byte [esi]
inc edx
inc esi
mov byte [ecx], al
cmp edx, ebx
mov eax, dword [ebp - 0x34]
mov dword [ebp - 0x1c], eax
jne 0x404347
mov edx, dword [ebp - 0x14]
mov ecx, dword [edx]
cmp dword [ecx + 0x2c], 2
je 0x4046a2
mov ebx, dword [ebp - 0x20]
mov eax, ebx
mov dword [ebp - 0x10], ebx
xor eax, 0xffffffff
add eax, dword [ecx + 0xc]
jne 0x404419
mov ecx, dword [0x4f7100]
mov ebx, dword [0x4f7110]
jmp 0x4043eb
mov edx, dword [ebx + 0xc]
mov eax, edx
add eax, eax
jne 0x404414
mov eax, edx
shr eax, 3
add eax, edx
mov dword [ebx + 0xc], eax
push eax
push eax
mov eax, dword [ebx + 0xc]
add eax, 2
push eax
mov eax, dword [ebx + 4]
push eax
call fcn.00403a80
add esp, 0x10
mov dword [ebx + 4], eax
test eax, eax
je 0x404408
mov eax, dword [ebp - 0x18]
mov ecx, dword [0x4f7100]
sub esi, eax
mov eax, dword [ebx + 4]
mov ebx, dword [0x4f7110]
add esi, eax
mov eax, dword [ebp - 0x20]
mov dword [0x4f7130], esi
mov edx, dword [ecx + ebx*4]
xor eax, 0xffffffff
add eax, dword [edx + 0xc]
jne 0x404425
mov ebx, dword [ecx + ebx*4]
mov esi, dword [0x4f7130]
mov eax, dword [ebx + 4]
mov dword [ebp - 0x18], eax
mov eax, dword [ebx + 0x14]
test eax, eax
jne 0x404392
mov dword [ebx + 4], 0
mov eax, str.fatal_error___scanner_input_buffer_overflow
call fcn.00403ac0
jmp 0x4043c1
mov dword [ebx + 0xc], eax
jmp 0x4043a5
mov ecx, dword [0x4f7100]
mov ebx, dword [0x4f7110]
mov esi, eax
cmp eax, 0x2000
jbe 0x404433
mov esi, 0x2000
mov eax, dword [ecx + ebx*4]
xor ebx, ebx
mov eax, dword [eax + 0x18]
test eax, eax
jne 0x404474
jmp 0x4045ea
mov eax, dword [edx]
xor ecx, ecx
mov cl, byte [eax]
inc eax
mov dword [edx], eax
cmp ecx, 0xa
je 0x404682
mov edx, dword [0x4f7110]
mov eax, dword [0x4f7100]
mov eax, dword [eax + edx*4]
mov edx, dword [eax + 4]
mov eax, dword [ebp - 0x20]
add eax, ebx
inc ebx
cmp ebx, esi
mov byte [eax + edx], cl
je 0x4044ad
mov edx, dword [0x4f70f0]
mov eax, dword [edx + 4]
dec eax
mov dword [edx + 4], eax
test eax, eax
jns 0x404444
sub esp, 0xc
push edx
call sub.msvcrt.dll__filbuf
add esp, 0x10
mov ecx, eax
cmp eax, 0xffffffff
jne 0x40444d
mov eax, dword [0x4f70f0]
test byte [eax + 0xc], 0x20
je 0x4044ad
mov eax, str.input_in_flex_scanner_failed
call fcn.00403ac0
mov dword [0x4f7170], ebx
mov edx, dword [0x4f7110]
mov ecx, dword [0x4f7100]
mov eax, dword [0x4f7170]
mov dword [ebp - 0x24], 0
mov edx, dword [ecx + edx*4]
test eax, eax
mov dword [edx + 0x10], eax
jne 0x404502
mov esi, dword [ebp - 0x20]
test esi, esi
je 0x4045bf
mov eax, dword [0x4f7110]
mov ecx, dword [0x4f7100]
mov edx, dword [ebp - 0x20]
mov dword [ebp - 0x24], 2
mov eax, dword [ecx + eax*4]
mov dword [ebp - 0x10], edx
mov dword [eax + 0x2c], 2
mov ebx, dword [0x4f7110]
mov eax, dword [0x4f7170]
mov edx, dword [ebp - 0x10]
mov esi, dword [ecx + ebx*4]
add edx, eax
cmp edx, dword [esi + 0xc]
ja 0x4046f2
mov eax, dword [0x4f7170]
mov ecx, dword [ebp - 0x10]
add ecx, eax
lea edx, [ebx*4]
mov eax, dword [0x4f7100]
mov dword [0x4f7170], ecx
add edx, eax
mov eax, dword [edx]
mov eax, dword [eax + 4]
mov byte [eax + ecx], 0
mov eax, dword [edx]
mov eax, dword [eax + 4]
mov byte [ecx + eax + 1], 0
mov eax, dword [edx]
cmp dword [ebp - 0x24], 1
mov eax, dword [eax + 4]
mov dword [0x4fc6d8], eax
je 0x404242
cmp dword [ebp - 0x24], 2
je 0x4046b8
mov edi, dword [ebp - 0x24]
test edi, edi
jne case.0x4040a0.36
mov edi, dword [ebp - 0x2c]
add edi, eax
mov dword [0x4f7130], edi
call fcn.004036e0
mov ebx, dword [0x4fc6d8]
mov ecx, eax
mov dword [ebp - 0x30], ebx
mov dx, word [eax + eax + 0x4c6e00]
mov al, byte [edi]
jmp 0x403fda
mov eax, str.fatal_flex_scanner_internal_error__end_of_buffer_missed
call fcn.00403ac0
mov eax, dword [0x4fc6d8]
mov edx, dword [0x4f7130]
mov dword [ebp - 0x38], eax
jmp 0x404212
sub esp, 0xc
mov ebx, dword [0x4f70f0]
push ebx
call fcn.00403ee0
add esp, 0x10
mov ecx, dword [0x4f7100]
mov dword [ebp - 0x24], 1
mov dword [ebp - 0x10], 0
jmp 0x404502
call sub.msvcrt.dll__errno
mov dword [eax], 0
jmp 0x404631
mov eax, dword [0x4f70f0]
test byte [eax + 0xc], 0x20
je 0x404807
call sub.msvcrt.dll__errno
cmp dword [eax], 4
jne 0x4047f8
call sub.msvcrt.dll__errno
sub esp, 0xc
mov ebx, dword [0x4f70f0]
mov dword [eax], 0
push ebx
call sub.msvcrt.dll_clearerr
add esp, 0x10
mov edx, dword [0x4f7110]
mov ecx, dword [0x4f70f0]
mov eax, dword [0x4f7100]
push ecx
push esi
push 1
mov eax, dword [eax + edx*4]
mov edx, dword [ebp - 0x20]
mov eax, dword [eax + 4]
add eax, edx
push eax
call sub.msvcrt.dll_fread
add esp, 0x10
mov edx, eax
mov dword [0x4f7170], eax
test eax, eax
je 0x4045f7
mov eax, dword [0x4f7110]
mov ecx, dword [0x4f7100]
mov dword [ebp - 0x24], 0
mov eax, dword [ecx + eax*4]
mov dword [eax + 0x10], edx
jmp 0x404502
mov edx, dword [0x4f7110]
mov eax, dword [0x4f7100]
mov eax, dword [eax + edx*4]
mov edx, dword [eax + 4]
mov eax, dword [ebp - 0x20]
add eax, ebx
inc ebx
mov byte [eax + edx], 0xa
jmp 0x4044ad
mov dword [0x4f7170], 0
mov dword [ecx + 0x10], 0
jmp 0x4044d5
mov ebx, dword [0x4f7110]
mov eax, dword [0x4f7100]
mov edi, dword [0x4f7170]
mov eax, dword [eax + ebx*4]
mov ebx, dword [eax + 4]
add edi, ebx
mov dword [0x4f7130], edi
call fcn.004036e0
mov edx, dword [0x4fc6d8]
mov dword [ebp - 0x30], edx
mov dx, word [eax + eax + 0x4c6a20]
jmp 0x40405f
shr eax, 1
push ecx
push ecx
lea eax, [edx + eax]
push eax
mov eax, dword [esi + 4]
push eax
call fcn.00403a80
mov ebx, dword [0x4f7110]
mov dword [esi + 4], eax
mov eax, dword [0x4f7100]
add esp, 0x10
mov eax, dword [eax + ebx*4]
mov eax, dword [eax + 4]
test eax, eax
jne 0x40451e
mov eax, str.out_of_dynamic_memory_in_yy_get_next_buffer__
call fcn.00403ac0
mov ebx, dword [0x4f7110]
jmp 0x40451e
sub esp, 0xc
mov esi, dword [0x4f70f0]
push esi
call fcn.00403ee0
add esp, 0x10
jmp case.0x4040a0.36
mov edi, dword [ebp - 0x2c]
mov eax, dword [0x4fc6d8]
add edi, eax
mov dword [0x4f7130], edi
call fcn.004036e0
mov ecx, eax
mov dx, word [eax + eax + 0x4c6a20]
test dx, dx
je 0x40477d
mov dword [0x4f7190], eax
mov dword [0x4f71a0], edi
mov byte [ebp - 0x25], 1
jmp 0x40479d
movsx ecx, word [ecx + ecx + 0x4c6ba0]
cmp ecx, 0xb0
jle 0x40479d
mov bl, byte [esi*4 + 0x4c6d20]
mov byte [ebp - 0x25], bl
movsx eax, word [ecx + ecx + 0x4c6e00]
mov bl, byte [ebp - 0x25]
and ebx, 0xff
mov esi, ebx
lea ebx, [eax + ebx]
movsx eax, word [ebx + ebx + 0x4c6f80]
cmp eax, ecx
jne 0x404783
mov ax, word [ebx + ebx + 0x4c7180]
cmp ax, 0xb0
je 0x404822
test ax, ax
mov ecx, dword [0x4fc6d8]
mov dword [ebp - 0x30], ecx
je 0x40405f
cwde
inc edi
mov ecx, eax
mov dword [0x4f7130], edi
mov dx, word [eax + eax + 0x4c6e00]
mov al, byte [edi]
jmp 0x403fda
mov eax, str.input_in_flex_scanner_failed
call fcn.00403ac0
jmp 0x4044b3
mov edx, dword [0x4f7110]
mov eax, dword [0x4f7100]
mov edx, dword [eax + edx*4]
mov eax, dword [0x4f7170]
mov dword [edx + 0x10], eax
jmp 0x4044d5
mov ecx, dword [0x4fc6d8]
mov dword [ebp - 0x30], ecx
jmp 0x40405f