Function at 0x401e80
Capabilities:
Resolve function by parsing pe exports
Write file on windows

Disassembly:
push ebp
push edi
push esi
push ebx
sub esp, 0x26c
mov dword [esp + 0xcc], eax
mov dword [esp], eax
call sub.msvcrt.dll_strlen
mov esi, eax
mov eax, dword [0x408030]
test eax, eax
je 0x401ead
cmp byte [eax], 0
jne 0x401fcb
lea eax, [esi + 1]
mov dword [esp], eax
call fcn.00404fa0
mov byte [eax], 0
mov edi, eax
mov eax, 0x2f
mov dword [esp + 4], eax
mov eax, dword [esp + 0xcc]
mov dword [esp], eax
call sub.msvcrt.dll_strrchr
test eax, eax
mov edx, dword [esp + 0xcc]
je 0x401ee3
lea edx, [eax + 1]
mov dword [esp + 4], edx
mov dword [esp], edi
call sub.msvcrt.dll_strcat
mov dword [esp], edi
mov eax, 0x2e
mov dword [esp + 4], eax
call sub.msvcrt.dll_strrchr
test eax, eax
je 0x401f07
mov byte [eax], 0
mov dword [esp], edi
xor ebp, ebp
call sub.msvcrt.dll_strlen
lea ebx, [eax + 6]
mov esi, eax
mov dword [esp], ebx
call fcn.00404fa0
mov dword [0x408150], eax
mov dword [esp + 4], edi
mov dword [esp], eax
call sub.msvcrt.dll_strcpy
mov eax, dword [0x408150]
mov dword [esi + eax], 0x6e63672e
mov word [esi + eax + 4], 0x6f
mov dword [esp], ebx
call fcn.00404fa0
mov dword [0x408170], eax
mov dword [esp + 4], edi
mov dword [esp], eax
call sub.msvcrt.dll_strcpy
mov eax, dword [0x408170]
mov edx, 1
mov dword [esi + eax], 0x6463672e
mov word [esi + eax + 4], 0x61
xor eax, eax
mov dword [esp + 0xc0], eax
xor eax, eax
mov dword [esp + 0xbc], eax
mov eax, dword [0x408150]
mov dword [esp + 0xb8], ebp
call fcn.004012f0
test eax, eax
jne 0x402041
mov eax, dword [0x408150]
mov edi, str._s:cannot_open_graph_file_n
mov dword [esp + 8], eax
mov dword [esp + 4], edi
mov eax, dword [sym.imp.msvcrt.dll__iob]
add eax, 0x40
mov dword [esp], eax
call fcn.00401700
add esp, 0x26c
pop ebx
pop esi
pop edi
pop ebp
ret
mov dword [esp], eax
xor ebx, ebx
call sub.msvcrt.dll_strlen
lea esi, [eax + esi + 2]
mov dword [esp], esi
call fcn.00404fa0
mov byte [eax], 0
mov edi, eax
lea eax, [esp + 0x230]
mov dword [esp + 4], eax
mov eax, dword [0x408030]
mov dword [esp], eax
call sub.msvcrt.dll__stat
test eax, eax
je 0x402283
mov dword [esp], edi
mov eax, dword [0x408030]
mov dword [esp + 4], eax
call sub.msvcrt.dll_strcat
test ebx, ebx
je 0x401eef
mov dword [esp], edi
call sub.msvcrt.dll_strlen
cmp byte [eax + edi - 1], 0x2f
je 0x402034
mov word [eax + edi], 0x2f
test ebx, ebx
je 0x401eef
jmp 0x401ebd
lea eax, [esp + 0x200]
mov dword [esp + 4], eax
mov eax, dword [0x4080b0]
mov eax, dword [eax + 0x10]
mov dword [esp], eax
call sub.msvcrt.dll__fstat
xor edx, edx
test eax, eax
jne 0x402069
mov edx, dword [esp + 0x21c]
mov dword [0x408140], edx
call fcn.00401590
mov edx, 0x67636e6f
call fcn.00401420
test eax, eax
jne 0x4020b4
mov eax, dword [0x408150]
mov esi, str._s:not_a_gcov_graph_file_n
mov dword [esp + 8], eax
mov dword [esp + 4], esi
mov eax, dword [sym.imp.msvcrt.dll__iob]
add eax, 0x40
mov dword [esp], eax
call fcn.00401700
call fcn.004013d0
add esp, 0x26c
pop ebx
pop esi
pop edi
pop ebp
ret
call fcn.00401590
cmp eax, 0x3330346d
mov edx, eax
je 0x40214b
mov byte [esp + 0xdf], dl
shr eax, 0x18
mov bl, 0x33
mov byte [esp + 0xdc], al
mov eax, edx
shr eax, 0x10
mov byte [esp + 0xdd], al
mov eax, edx
shr eax, 8
mov byte [esp + 0xde], al
mov al, 0x6d
mov cl, 0x30
mov byte [esp + 0xdb], al
lea eax, [esp + 0xd8]
mov dl, 0x34
mov dword [esp + 0x10], eax
lea eax, [esp + 0xdc]
mov dword [esp + 0xc], eax
mov eax, dword [0x408150]
mov byte [esp + 0xd8], bl
mov byte [esp + 0xd9], cl
mov dword [esp + 8], eax
mov eax, str._s:version___.4s__prefer___.4s_n
mov dword [esp + 4], eax
mov eax, dword [sym.imp.msvcrt.dll__iob]
mov byte [esp + 0xda], dl
add eax, 0x40
mov dword [esp], eax
call fcn.00401700
call fcn.00401590
mov dword [0x408160], eax
jmp 0x4021be
mov ecx, dword [esp + 0xbc]
mov ebp, dword [ecx + 0xc]
test ebp, ebp
je 0x4022a5
mov eax, dword [ecx]
mov dword [esp + 0xc], eax
mov eax, dword [0x408150]
mov dword [esp + 8], eax
mov eax, str._s:already_seen_blocks_for___s_n
mov dword [esp + 4], eax
mov eax, dword [sym.imp.msvcrt.dll__iob]
add eax, 0x40
mov dword [esp], eax
call fcn.00401700
mov eax, dword [esp + 0xb0]
mov edx, dword [esp + 0xb4]
call fcn.00401690
mov eax, dword [0x4080b0]
test eax, eax
je 0x40264a
mov eax, dword [0x4080c4]
test eax, eax
jne 0x40264a
call fcn.00401590
test eax, eax
mov ebx, eax
je 0x40264a
call fcn.00401590
mov dword [esp + 0xb4], eax
mov edx, dword [0x4080b8]
mov ecx, dword [0x4080b4]
add edx, ecx
cmp ebx, 0x1000000
mov dword [esp + 0xb0], edx
je 0x402320
xor edx, edx
cmp dword [esp + 0xbc], 0
setne dl
cmp ebx, 0x1410000
sete al
test eax, edx
jne 0x402157
cmp ebx, 0x1430000
sete al
test eax, edx
jne 0x4023ea
cmp ebx, 0x1450000
sete al
test eax, edx
jne 0x402573
mov edi, dword [esp + 0xc0]
test edi, edi
je 0x402191
mov ecx, dword [esp + 0xc0]
lea eax, [ebx - 1]
mov esi, dword [esp + 0xc0]
xor eax, ebx
dec ecx
xor ecx, esi
mov edx, ecx
shr edx, 8
cmp edx, eax
je 0x402726
xor eax, eax
mov dword [esp + 0xbc], eax
xor eax, eax
mov dword [esp + 0xc0], eax
jmp 0x402191
movzx eax, word [esp + 0x236]
and eax, 0xf000
cmp eax, 0x4000
jne 0x402006
mov ebx, 1
jmp 0x402006
mov ebx, dword [esp + 0xbc]
mov eax, 0x30
mov esi, dword [esp + 0xb4]
mov dword [ebx + 0x10], esi
xor esi, esi
mov dword [esp + 4], eax
mov eax, dword [ebx + 0x10]
mov dword [esp], eax
call fcn.00404fd0
mov edi, dword [esp + 0xbc]
mov ebx, eax
mov dword [edi + 0xc], eax
xor edi, edi
cmp ebp, dword [esp + 0xb4]
jne 0x4022f2
jmp 0x402191
mov ebp, dword [esp + 0xbc]
mov ebx, dword [ebp + 0xc]
call fcn.00401590
movzx edx, word [esi + ebx + 0x20]
and eax, 0x1fff
inc edi
and edx, 0xffffe000
or edx, eax
mov word [esi + ebx + 0x20], dx
add esi, 0x30
cmp edi, dword [esp + 0xb4]
jne 0x4022e8
jmp 0x402191
call fcn.00401590
mov esi, eax
call fcn.00401590
mov edi, eax
call fcn.00401670
mov dword [esp], eax
call fcn.00404ef0
mov ebx, eax
call fcn.00401670
call fcn.00401890
mov dword [esp + 0xac], eax
call fcn.00401590
mov dword [esp], 1
mov ebp, eax
mov eax, 0x30
mov dword [esp + 4], eax
call fcn.00404fd0
mov dword [eax], ebx
mov ebx, dword [esp + 0xac]
mov dword [eax + 4], esi
mov dword [esp + 0xbc], eax
mov esi, dword [esp + 0xbc]
mov dword [eax + 8], edi
mov dword [eax + 0x20], ebp
mov dword [eax + 0x24], ebx
mov eax, dword [0x4080e0]
cmp dword [ebx + 0xc], ebp
mov dword [esi + 0x2c], eax
mov eax, 0x1000000
mov dword [0x4080e0], esi
mov dword [esp + 0xc0], eax
ja 0x4023b2
lea eax, [ebp + 1]
mov dword [ebx + 0xc], eax
mov edi, dword [esp + 0xac]
xor edx, edx
mov eax, dword [edi + 0x30]
test eax, eax
je 0x4023d0
cmp dword [eax + 0x20], ebp
jbe 0x4023d0
mov edx, eax
mov eax, dword [eax + 0x28]
test eax, eax
jne 0x4023c2
mov ebp, dword [esp + 0xbc]
test edx, edx
mov dword [ebp + 0x28], eax
je 0x40273e
mov dword [edx + 0x28], ebp
jmp 0x402191
call fcn.00401590
mov dword [esp + 0xa8], eax
mov eax, dword [esp + 0xb4]
mov edx, dword [esp + 0xbc]
mov ecx, dword [esp + 0xa8]
dec eax
shr eax, 1
cmp dword [edx + 0x10], ecx
mov dword [esp + 0xa4], eax
jbe 0x402653
mov eax, dword [edx + 0xc]
lea edx, [ecx + ecx*2]
shl edx, 4
mov edi, dword [edx + eax]
test edi, edi
jne 0x402653
dec dword [esp + 0xa4]
cmp dword [esp + 0xa4], 0xffffffff
je 0x402191
mov ebp, edx
jmp 0x40247c
or byte [ebp + edx + 0x22], 1
movzx eax, byte [esi + 0x18]
or al, 0x10
mov byte [esi + 0x18], al
test al, 2
jne 0x402467
mov esi, dword [esp + 0xbc]
inc dword [esi + 0x1c]
dec dword [esp + 0xa4]
cmp dword [esp + 0xa4], 0xffffffff
je 0x402191
call fcn.00401590
mov edi, eax
call fcn.00401590
mov esi, dword [esp + 0xbc]
mov ebx, eax
cmp dword [esi + 0x10], edi
jbe 0x402653
mov dword [esp], 1
mov esi, 0x28
lea edi, [edi + edi*2]
mov dword [esp + 4], esi
call fcn.00404fd0
mov edx, dword [esp + 0xbc]
mov esi, eax
shl edi, 4
mov dword [esi + 8], 0
mov cl, bl
shr ebx, 1
mov dword [esi + 0xc], 0
mov eax, dword [edx + 0xc]
add cl, cl
and cl, 2
add eax, edi
mov dword [esi + 4], eax
mov eax, dword [edx + 0xc]
mov dl, bl
shl dl, 2
add eax, ebp
and dl, 4
mov dword [esi], eax
movzx eax, byte [esi + 0x18]
shr ebx, 1
and al, 0xf8
or al, cl
or al, dl
mov dl, bl
shl dl, 3
and al, 0xf7
and dl, 8
or al, dl
mov byte [esi + 0x18], al
mov ecx, dword [esp + 0xbc]
mov edx, dword [ecx + 0xc]
add dword [ebp + edx + 8], 1
mov eax, dword [ebp + edx]
adc dword [ebp + edx + 0xc], 0
add dword [edi + edx + 0x10], 1
mov dword [esi + 0x20], eax
mov eax, dword [edi + edx + 4]
adc dword [edi + edx + 0x14], 0
mov dword [ebp + edx], esi
mov dword [esi + 0x24], eax
mov dword [edi + edx + 4], esi
movzx eax, byte [esi + 0x18]
test al, 4
je 0x402459
mov ecx, dword [esp + 0xa8]
test ecx, ecx
jne 0x40244b
or al, 0x20
mov byte [esi + 0x18], al
mov ebx, dword [esp + 0xbc]
mov eax, dword [ebx + 0xc]
or byte [edi + eax + 0x22], 4
movzx eax, byte [esi + 0x18]
jmp 0x402459
call fcn.00401590
mov edi, eax
mov eax, 4
mov dword [esp + 4], eax
mov eax, dword [esp + 0xb4]
dec eax
mov dword [esp], eax
call fcn.00404fd0
mov ebp, dword [esp + 0xbc]
mov esi, eax
cmp dword [ebp + 0x10], edi
jbe 0x402653
mov edx, dword [ebp + 0xc]
lea eax, [edi + edi*2]
shl eax, 4
mov ebp, dword [eax + edx + 0x24]
test ebp, ebp
jne 0x402653
xor ebx, ebx
call fcn.00401590
test eax, eax
mov edx, eax
je 0x402604
test ebx, ebx
jne 0x4025e3
mov dword [esi], 0
mov ecx, dword [esp + 0xb8]
mov ebx, 2
mov eax, dword [ecx + 4]
mov dword [esi + 4], eax
mov dword [esi + ebx*4], edx
mov ebp, dword [esp + 0xb8]
inc ebx
cmp dword [ebp + 0xc], edx
ja 0x4025bc
lea eax, [edx + 1]
mov dword [ebp + 0xc], eax
call fcn.00401590
test eax, eax
mov edx, eax
jne 0x4025c7
call fcn.00401670
test eax, eax
je 0x40262a
call fcn.00401890
mov dword [esi + ebx*4], 0
inc ebx
mov dword [esp + 0xb8], eax
mov eax, dword [eax + 4]
mov dword [esi + ebx*4], eax
inc ebx
jmp 0x4025bc
mov ecx, dword [esp + 0xbc]
lea edx, [edi + edi*2]
shl edx, 4
mov eax, dword [ecx + 0xc]
mov dword [edx + eax + 0x24], esi
mov eax, dword [ecx + 0xc]
mov dword [edx + eax + 0x28], ebx
jmp 0x402191
mov eax, dword [0x4080c0]
test eax, eax
je 0x40266a
mov eax, dword [0x408150]
mov dword [esp + 8], eax
mov eax, str._s:corrupted_n
mov dword [esp + 4], eax
jmp 0x402094
call fcn.004013d0
mov edx, dword [0x4080f0]
xor ecx, ecx
jmp 0x402683
mov eax, dword [edx + 0x34]
mov dword [edx + 0x34], ecx
mov ecx, edx
mov edx, eax
test edx, edx
jne 0x402679
mov dword [0x4080f0], ecx
mov ebp, dword [0x4080e0]
xor eax, eax
test ebp, ebp
je 0x402706
mov edi, dword [ebp + 0x10]
mov ebx, dword [ebp + 0x2c]
mov dword [ebp + 0x2c], eax
dec edi
cmp edi, 0xffffffff
mov dword [esp + 0xa0], ebx
je 0x4026fb
mov esi, dword [ebp + 0xc]
lea ebx, [edi + edi*2]
shl ebx, 4
nop
lea esi, [esi]
mov eax, dword [ebx + esi]
xor ecx, ecx
jmp 0x4026d1
mov edx, dword [eax + 0x20]
mov dword [eax + 0x20], ecx
mov ecx, eax
mov eax, edx
test eax, eax
jne 0x4026c7
mov dword [ebx + esi], ecx
mov eax, dword [ebx + esi + 4]
xor ecx, ecx
jmp 0x4026ea
mov edx, dword [eax + 0x24]
mov dword [eax + 0x24], ecx
mov ecx, eax
mov eax, edx
test eax, eax
jne 0x4026e0
mov dword [ebx + esi + 4], ecx
dec edi
sub ebx, 0x30
cmp edi, 0xffffffff
jne 0x4026c0
mov eax, ebp
mov ebp, dword [esp + 0xa0]
jmp 0x402695
mov dword [0x4080e0], eax
test eax, eax
jne 0x402754
mov eax, dword [0x408150]
mov ebp, str._s:no_functions_found_n
mov dword [esp + 4], ebp
mov dword [esp + 8], eax
jmp 0x401fb0
mov edx, dword [esp + 0xc0]
not ecx
xor ebx, edx
test ecx, ebx
je 0x402191
jmp 0x40226c
mov edx, dword [esp + 0xbc]
mov eax, dword [esp + 0xac]
mov dword [eax + 0x30], edx
jmp 0x402191
mov eax, dword [0x408170]
mov edx, 1
xor edi, edi
xor esi, esi
call fcn.004012f0
test eax, eax
jne 0x40277e
mov eax, dword [0x408170]
mov edi, str._s:cannot_open_data_file_n
mov dword [esp + 8], eax
jmp 0x401fac
call fcn.00401590
mov edx, 0x67636461
call fcn.00401420
test eax, eax
jne 0x4027a4
mov eax, dword [0x408170]
mov esi, str._s:not_a_gcov_data_file_n
mov dword [esp + 8], eax
jmp 0x402090
call fcn.00401590
cmp eax, 0x3330346d
mov edx, eax
je 0x40283b
mov byte [esp + 0xd7], dl
shr eax, 0x18
mov bl, 0x33
mov byte [esp + 0xd4], al
mov eax, edx
shr eax, 0x10
mov byte [esp + 0xd5], al
mov eax, edx
shr eax, 8
mov byte [esp + 0xd6], al
mov al, 0x6d
mov cl, 0x30
mov byte [esp + 0xd3], al
lea eax, [esp + 0xd0]
mov dl, 0x34
mov dword [esp + 0x10], eax
lea eax, [esp + 0xd4]
mov dword [esp + 0xc], eax
mov eax, dword [0x408170]
mov byte [esp + 0xd0], bl
mov byte [esp + 0xd1], cl
mov dword [esp + 8], eax
mov eax, str._s:version___.4s__prefer_version___.4s_n
mov dword [esp + 4], eax
mov eax, dword [sym.imp.msvcrt.dll__iob]
mov byte [esp + 0xd2], dl
add eax, 0x40
mov dword [esp], eax
call fcn.00401700
call fcn.00401590
cmp eax, dword [0x408160]
jne 0x40295e
call fcn.00401590
test eax, eax
mov ebx, eax
je 0x402928
call fcn.00401590
mov ebp, eax
mov esi, dword [0x4080b8]
mov eax, dword [0x4080b4]
add esi, eax
cmp ebx, 0xa1000000
mov dword [esp + 0x9c], esi
je 0x4029aa
cmp ebx, 0xa3000000
je 0x402956
cmp ebx, 0x1000000
je 0x402975
cmp ebx, 0x1a10000
sete al
xor edx, edx
test edi, edi
setne dl
test eax, edx
je 0x4028fc
mov edx, dword [edi + 0x1c]
lea eax, [edx + edx]
cmp eax, ebp
jne 0x402a13
mov ebx, dword [edi + 0x18]
test ebx, ebx
jne 0x4028df
mov eax, 8
mov dword [esp + 4], eax
mov eax, dword [edi + 0x1c]
mov dword [esp], eax
call fcn.00404fd0
mov dword [edi + 0x18], eax
mov edx, dword [edi + 0x1c]
mov ebx, eax
xor esi, esi
test edx, edx
jne 0x4028ea
jmp 0x4028fc
mov ebx, dword [edi + 0x18]
call fcn.004015d0
add dword [ebx + esi*8], eax
adc dword [ebx + esi*8 + 4], edx
inc esi
cmp dword [edi + 0x1c], esi
jne 0x4028e7
mov eax, dword [esp + 0x9c]
mov edx, ebp
call fcn.00401690
mov ebp, dword [0x4080b0]
mov eax, 1
test ebp, ebp
je 0x40291e
mov eax, dword [0x4080c4]
test eax, eax
mov esi, eax
je 0x40284c
mov edi, dword [0x4080c0]
test edi, edi
je 0x402a45
mov eax, dword [0x408170]
test esi, esi
mov dword [esp + 8], eax
mov eax, str._s:overflowed_n
js 0x402661
mov eax, str._s:corrupted_n
jmp 0x402661
inc dword [0x408130]
jmp 0x4028fc
mov eax, dword [0x408170]
mov dword [esp + 8], eax
mov eax, str._s:stamp_mismatch_with_graph_file_n
mov dword [esp + 4], eax
jmp 0x402094
call fcn.00401590
xor edx, edx
test edi, edi
mov ecx, dword [0x4080e0]
je 0x402989
mov edx, dword [edi + 0x2c]
mov edi, edx
jmp 0x402998
cmp dword [edi + 4], eax
je 0x4029fd
mov edi, dword [edi + 0x2c]
test edi, edi
jne 0x402990
test ecx, ecx
mov edi, ecx
je 0x403ed0
xor ecx, ecx
jmp 0x402990
call fcn.00401590
mov dword [0x408100], eax
call fcn.00401590
mov dword [0x408108], eax
call fcn.00401590
mov dword [0x40810c], eax
call fcn.004015d0
mov dword [0x408110], eax
mov dword [0x408114], edx
call fcn.004015d0
mov dword [0x408118], eax
mov dword [0x40811c], edx
call fcn.004015d0
mov dword [0x408120], eax
mov dword [0x408124], edx
jmp 0x4028fc
test edi, edi
je 0x4028fc
call fcn.00401590
cmp eax, dword [edi + 8]
je 0x4028fc
mov eax, dword [edi]
mov dword [esp + 0xc], eax
mov eax, dword [0x408170]
mov dword [esp + 8], eax
mov eax, str._s:profile_mismatch_for___s_n
mov dword [esp + 4], eax
mov eax, dword [sym.imp.msvcrt.dll__iob]
add eax, 0x40
mov dword [esp], eax
call fcn.00401700
call fcn.004013d0
jmp 0x4020a9
call fcn.004013d0
mov edx, dword [0x4080e0]
test edx, edx
mov dword [esp + 0xc4], edx
je 0x403054
xor ebx, ebx
mov ecx, dword [esp + 0xc4]
mov dword [esp + 0x90], ebx
mov ebx, dword [esp + 0xc4]
mov ecx, dword [ecx + 0x18]
mov ebx, dword [ebx + 0x10]
mov dword [esp + 0x94], ecx
xor ecx, ecx
cmp ebx, 1
mov dword [esp + 0x8c], ecx
mov dword [esp + 0x3c], ebx
jbe 0x403016
mov ebp, dword [esp + 0xc4]
mov ecx, dword [ebp + 0xc]
mov edx, dword [ecx + 0x14]
mov eax, dword [ecx + 0x10]
mov ebx, edx
or ebx, eax
jne 0x402fde
mov dword [ecx + 0x10], 0xffffffff
mov dword [ecx + 0x14], 0
mov edi, dword [esp + 0x3c]
lea eax, [edi + edi*2]
shl eax, 4
lea ebx, [eax + ecx - 0x30]
mov edx, dword [ebx + 0xc]
mov eax, dword [ebx + 8]
mov ebp, edx
or ebp, eax
jne 0x402f92
mov dword [ebx + 8], 0xffffffff
mov dword [ebx + 0xc], 0
xor eax, eax
mov esi, ecx
mov dword [esp + 0x98], eax
mov eax, dword [esp + 0x3c]
test eax, eax
je 0x402e77
mov ecx, dword [esi]
xor eax, eax
xor ebx, ebx
mov dword [esp + 0x2c], eax
xor edi, edi
test ecx, ecx
jne 0x402b7d
jmp 0x402ba2
mov ebp, dword [esp + 0x94]
test ebp, ebp
je 0x402b48
mov ebp, dword [esp + 0x94]
mov eax, dword [ebp]
mov edx, dword [ebp + 4]
add ebp, 8
mov dword [esp + 0x94], ebp
mov dword [ecx + 8], eax
mov dword [ecx + 0xc], edx
or byte [ecx + 0x18], 1
mov eax, dword [ecx + 4]
add dword [esi + 8], 0xffffffff
adc dword [esi + 0xc], 0xffffffff
add dword [eax + 0x10], 0xffffffff
adc dword [eax + 0x14], 0xffffffff
test ebx, ebx
je 0x402b70
cmp eax, ebx
jae 0x402b70
mov ebx, 1
mov dword [esp + 0x2c], ebx
mov ecx, dword [ecx + 0x20]
mov ebx, eax
test ecx, ecx
je 0x402ecc
movzx eax, byte [ecx + 0x18]
mov dl, al
shr dl, 2
and edx, 1
cmp edx, 1
adc edi, 0
test al, 2
je 0x402b20
mov eax, dword [ecx + 4]
jmp 0x402b5f
test ebp, ebp
jne 0x402edd
mov dword [esi], edi
or byte [esi + 0x21], 0x80
mov edx, dword [esp + 0xc4]
mov eax, dword [esp + 0x8c]
inc dword [esp + 0x98]
mov edx, dword [edx + 0x10]
mov dword [esi + 0x2c], eax
mov ecx, dword [esp + 0x98]
mov dword [esp + 0x8c], esi
add esi, 0x30
cmp edx, ecx
mov dword [esp + 0x3c], edx
jne 0x402b04
mov eax, dword [esp + 0x8c]
test eax, eax
je 0x402e77
mov esi, dword [esp + 0x8c]
test esi, esi
je 0x402cd3
mov edi, dword [esp + 0x8c]
xor ecx, ecx
xor ebx, ebx
mov edx, dword [esi + 0xc]
mov edi, dword [edi + 0x2c]
mov dword [esp + 0x8c], edi
mov edi, edx
movzx eax, byte [esi + 0x21]
and al, 0x7f
mov byte [esp + 0x8b], al
mov eax, dword [esi + 8]
or edi, eax
jne 0x402db3
mov eax, dword [esi]
test eax, eax
je 0x402c4c
movzx edx, byte [esp + 0x8b]
mov byte [esi + 0x21], dl
add ecx, dword [eax + 8]
adc ebx, dword [eax + 0xc]
mov eax, dword [eax + 0x20]
test eax, eax
jne 0x402c3f
or byte [esp + 0x8b], 0x60
mov dword [esi + 0x1c], ebx
mov dword [esi + 0x18], ecx
mov ecx, dword [esp + 0x90]
movzx ebx, byte [esp + 0x8b]
mov dword [esi + 0x2c], ecx
mov byte [esi + 0x21], bl
mov dword [esp + 0x90], esi
jmp 0x402bed
or byte [ebx + 0x18], 1
mov edi, dword [ebx]
mov dword [ebx + 8], edx
mov dword [ebx + 0xc], ecx
mov edx, dword [edi + 8]
mov ecx, dword [edi + 0xc]
add dword [esi + 0x10], 0xffffffff
adc dword [esi + 0x14], 0xffffffff
add edx, 0xffffffff
adc ecx, 0xffffffff
movzx ebx, byte [edi + 0x21]
mov dword [edi + 8], edx
mov dword [edi + 0xc], ecx
test bl, 0x20
je 0x402dcf
mov eax, edx
xor eax, 1
or eax, ecx
jne 0x402cd3
test bl, 0x40
jne 0x402cd3
mov edx, dword [esp + 0x90]
or bl, 0x40
mov byte [edi + 0x21], bl
mov dword [esp + 0x90], edi
mov dword [edi + 0x2c], edx
mov esi, dword [esp + 0x90]
test esi, esi
je 0x402e55
mov edx, dword [esp + 0x90]
mov eax, dword [esi + 8]
mov edx, dword [edx + 0x2c]
xor eax, 1
mov dword [esp + 0x90], edx
and byte [esi + 0x21], 0xbf
or eax, dword [esi + 0xc]
jne 0x402d7e
mov eax, dword [esi]
xor ebx, ebx
mov edx, dword [esi + 0x18]
mov ecx, dword [esi + 0x1c]
test eax, eax
je 0x402d25
sub edx, dword [eax + 8]
sbb ecx, dword [eax + 0xc]
test byte [eax + 0x18], 1
jne 0x402d1e
mov ebx, eax
mov eax, dword [eax + 0x20]
test eax, eax
jne 0x402d10
or byte [ebx + 0x18], 1
mov edi, dword [ebx + 4]
mov dword [ebx + 8], edx
mov dword [ebx + 0xc], ecx
mov edx, dword [edi + 0x10]
mov ecx, dword [edi + 0x14]
add dword [esi + 8], 0xffffffff
adc dword [esi + 0xc], 0xffffffff
add edx, 0xffffffff
adc ecx, 0xffffffff
movzx ebx, byte [edi + 0x21]
mov dword [edi + 0x10], edx
mov dword [edi + 0x14], ecx
test bl, 0x20
je 0x402dfe
mov eax, edx
xor eax, 1
or eax, ecx
jne 0x402d7e
test bl, 0x40
jne 0x402d7e
mov ecx, dword [esp + 0x90]
or bl, 0x40
mov byte [edi + 0x21], bl
mov dword [esp + 0x90], edi
mov dword [edi + 0x2c], ecx
mov eax, dword [esi + 0x10]
xor eax, 1
or eax, dword [esi + 0x14]
jne 0x402cd3
mov edx, dword [esi + 0x18]
xor ebx, ebx
mov ecx, dword [esi + 0x1c]
mov eax, dword [esi + 4]
test eax, eax
je 0x402c7b
sub edx, dword [eax + 8]
sbb ecx, dword [eax + 0xc]
test byte [eax + 0x18], 1
jne 0x402dae
mov ebx, eax
mov eax, dword [eax + 0x24]
jmp 0x402d98
mov edx, dword [esi + 0x14]
mov eax, dword [esi + 0x10]
mov edi, edx
or edi, eax
je 0x402e2d
movzx eax, byte [esp + 0x8b]
mov byte [esi + 0x21], al
jmp 0x402bed
mov esi, ecx
or esi, edx
jne 0x402cd3
test bl, 0x80
jne 0x402cd3
mov ebp, dword [esp + 0x8c]
or bl, 0x80
mov byte [edi + 0x21], bl
mov dword [esp + 0x8c], edi
mov dword [edi + 0x2c], ebp
jmp 0x402cd3
mov ebp, ecx
or ebp, edx
jne 0x402d7e
test bl, 0x80
jne 0x402d7e
mov eax, dword [esp + 0x8c]
or bl, 0x80
mov byte [edi + 0x21], bl
mov dword [esp + 0x8c], edi
mov dword [edi + 0x2c], eax
jmp 0x402d7e
mov eax, dword [esi + 4]
test eax, eax
je 0x402c4c
movzx edx, byte [esp + 0x8b]
mov byte [esi + 0x21], dl
add ecx, dword [eax + 8]
adc ebx, dword [eax + 0xc]
mov eax, dword [eax + 0x24]
test eax, eax
jne 0x402e43
jmp 0x402c4c
mov eax, dword [esp + 0x8c]
or eax, dword [esp + 0x90]
jne 0x402bed
mov edx, dword [esp + 0xc4]
mov edx, dword [edx + 0x10]
mov dword [esp + 0x3c], edx
xor eax, eax
cmp dword [esp + 0x3c], 0
mov dword [esp + 0x98], eax
jbe 0x402eb4
mov ecx, dword [esp + 0xc4]
mov eax, dword [ecx + 0xc]
add eax, 0x21
test byte [eax], 0x20
je 0x402f5e
inc dword [esp + 0x98]
add eax, 0x30
mov ebx, dword [esp + 0x98]
cmp dword [esp + 0x3c], ebx
ja 0x402e94
mov esi, dword [esp + 0xc4]
mov esi, dword [esi + 0x2c]
test esi, esi
mov dword [esp + 0xc4], esi
jmp 0x402a59
dec edi
je 0x402f24
mov eax, dword [esp + 0x2c]
test eax, eax
je 0x402ba2
mov edi, dword [esi]
mov edx, dword [edi + 0x20]
xor ebp, ebp
xor ebx, ebx
mov ecx, edi
test edx, edx
jne 0x402f12
jmp 0x402ba0
test ebx, ebx
mov ebp, 1
je 0x402f20
mov dword [ebx + 0x20], edx
mov eax, dword [edx + 0x20]
mov ebx, edx
mov dword [ecx + 0x20], eax
mov dword [edx + 0x20], ecx
mov edx, dword [ecx + 0x20]
test edx, edx
je 0x402b98
mov eax, dword [edx + 4]
cmp dword [ecx + 4], eax
ja 0x402ef0
mov ebx, ecx
mov ecx, edx
jmp 0x402f07
mov edi, edx
jmp 0x402efc
mov ecx, dword [esi]
test ecx, ecx
je 0x402ecf
movzx eax, byte [ecx + 0x18]
test al, 4
jne 0x402f49
or al, 0x40
mov byte [ecx + 0x18], al
test byte [esi + 0x22], 1
je 0x402f49
test al, 8
je 0x402f49
mov eax, dword [ecx + 4]
cmp dword [eax + 4], ecx
je 0x402f4e
mov ecx, dword [ecx + 0x20]
jmp 0x402f26
mov edx, dword [ecx + 0x24]
test edx, edx
jne 0x402f49
or byte [eax + 0x22], 2
mov ecx, dword [ecx + 0x20]
jmp 0x402f26
mov esi, dword [esp + 0xc4]
mov eax, dword [esi]
mov dword [esp + 0xc], eax
mov eax, dword [0x408150]
mov dword [esp + 8], eax
mov eax, str._s:graph_is_unsolvable_for___s_n
mov dword [esp + 4], eax
mov eax, dword [sym.imp.msvcrt.dll__iob]
add eax, 0x40
mov dword [esp], eax
call fcn.00401700
jmp 0x402eb4
mov edx, dword [esp + 0xc4]
mov eax, dword [edx]
mov dword [esp + 0xc], eax
mov eax, dword [0x408150]
mov dword [esp + 8], eax
mov eax, str._s:__s_has_arcs_from_exit_block_n
mov dword [esp + 4], eax
mov eax, dword [sym.imp.msvcrt.dll__iob]
add eax, 0x40
mov dword [esp], eax
call fcn.00401700
mov ecx, dword [esp + 0xc4]
mov ebx, dword [esp + 0xc4]
mov ecx, dword [ecx + 0x10]
mov dword [esp + 0x3c], ecx
mov ecx, dword [ebx + 0xc]
jmp 0x402aed
mov eax, dword [ebp]
mov dword [esp + 0xc], eax
mov eax, dword [0x408150]
mov dword [esp + 8], eax
mov eax, str._s:__s_has_arcs_to_entry_block_n
mov dword [esp + 4], eax
mov eax, dword [sym.imp.msvcrt.dll__iob]
add eax, 0x40
mov dword [esp], eax
call fcn.00401700
mov esi, dword [ebp + 0x10]
mov ecx, dword [ebp + 0xc]
mov dword [esp + 0x3c], esi
jmp 0x402ac1
mov esi, dword [esp + 0xc4]
mov edx, str._s:__s_lacks_entry_and_or_exit_blocks_n
mov eax, dword [esi]
mov dword [esp + 4], edx
mov dword [esp + 0xc], eax
mov eax, dword [0x408150]
mov dword [esp + 8], eax
mov eax, dword [sym.imp.msvcrt.dll__iob]
add eax, 0x40
mov dword [esp], eax
call fcn.00401700
mov edi, dword [esi + 0x10]
mov ecx, dword [esi + 0xc]
mov dword [esp + 0x3c], edi
jmp 0x402aed
mov edi, dword [0x4080f0]
test edi, edi
mov dword [esp + 0xc8], edi
je 0x403091
mov ebp, dword [esp + 0xc8]
mov eax, 0x10
mov dword [esp + 4], eax
mov eax, dword [ebp + 0xc]
mov dword [esp], eax
call fcn.00404fd0
mov dword [ebp + 8], eax
mov eax, dword [ebp + 0x34]
test eax, eax
mov dword [esp + 0xc8], eax
jmp 0x403063
mov edx, dword [0x4080e0]
test edx, edx
mov dword [esp + 0xc4], edx
je 0x4033bd
cld
xor eax, eax
mov ecx, 8
lea edi, [esp + 0x1e0]
lea ebx, [esp + 0x1e0]
rep stosd dword es:[edi], eax
mov dword [esp + 0x84], ebx
mov ecx, dword [esp + 0xc4]
mov eax, dword [ecx]
mov dword [esp + 0x1fc], eax
mov eax, dword [0x408050]
test eax, eax
jne 0x4030e7
xor ebp, ebp
mov dword [esp + 0x84], ebp
xor esi, esi
xor edi, edi
mov dword [esp + 0x80], esi
mov esi, dword [esp + 0xc4]
mov dword [esp + 0x7c], edi
mov esi, dword [esi + 0x10]
test esi, esi
mov dword [esp + 0x3c], esi
je 0x403340
mov eax, dword [esp + 0xc4]
mov ebp, dword [esp + 0x80]
mov ecx, dword [esp + 0x80]
mov ebx, dword [eax + 0xc]
lea edi, [ebp + ebp*2]
shl edi, 4
add edi, ebx
xor ebp, ebp
mov eax, dword [edi + 0x1c]
or eax, dword [edi + 0x18]
setne dl
xor eax, eax
cmp dword [esp + 0x80], 0
setne al
inc ecx
mov dword [esp + 0x38], ecx
test edx, eax
je 0x403160
mov esi, dword [esp + 0x3c]
cmp ecx, esi
je 0x403160
mov eax, dword [esp + 0xc4]
inc dword [eax + 0x14]
xor ecx, ecx
mov dword [esp + 0x78], ecx
mov edx, dword [edi + 0x28]
mov eax, dword [edi + 0x24]
test edx, edx
mov esi, eax
je 0x4031a8
mov eax, dword [esi]
test eax, eax
jne 0x403260
mov ebp, dword [0x4080f0]
add esi, 4
mov eax, dword [esi]
cmp dword [ebp + 4], eax
je 0x403194
mov ebp, dword [ebp + 0x34]
cmp dword [ebp + 4], eax
jne 0x40318c
inc dword [esp + 0x78]
inc dword [esp + 0x78]
add esi, 4
cmp edx, dword [esp + 0x78]
jne 0x403172
mov eax, dword [edi + 0x24]
mov dword [esp], eax
call sub.msvcrt.dll_free
mov dword [edi + 0x24], 0
mov dword [edi + 0x28], 0xffffffff
mov esi, dword [esp + 0x80]
test esi, esi
je 0x4032cd
mov ecx, dword [esp + 0xc4]
mov ecx, dword [ecx + 0x10]
cmp dword [esp + 0x38], ecx
mov dword [esp + 0x3c], ecx
je 0x403212
mov ebx, dword [0x408080]
test ebx, ebx
je 0x4032e0
mov edx, dword [esp + 0x7c]
test edx, edx
je 0x403374
mov eax, dword [edx + 8]
mov dword [edi + 0x2c], eax
mov dword [edx + 8], edi
mov esi, dword [esp + 0xc4]
mov esi, dword [esi + 0x10]
mov dword [esp + 0x3c], esi
mov edx, dword [esp + 0x38]
cmp dword [esp + 0x3c], edx
mov dword [esp + 0x80], edx
jne 0x40310c
mov eax, dword [esp + 0x7c]
test eax, eax
je 0x403340
mov edi, dword [0x408050]
test edi, edi
jne 0x40338e
mov ebx, dword [esp + 0xc4]
mov ebx, dword [ebx + 0x2c]
test ebx, ebx
mov dword [esp + 0xc4], ebx
jmp 0x4030a0
mov edx, dword [ebp + 8]
shl eax, 4
add eax, edx
mov dword [esp + 0x7c], eax
mov edx, dword [esp + 0x84]
test edx, edx
je 0x4032c2
test byte [eax + 0xc], 1
jne 0x403286
mov ecx, dword [esp + 0x84]
inc dword [ecx]
mov eax, dword [esp + 0x7c]
mov ebx, dword [eax + 4]
mov ecx, dword [eax]
mov edx, ebx
or edx, ecx
jne 0x4032a7
mov eax, dword [edi + 0x1c]
or eax, dword [edi + 0x18]
je 0x4032a7
mov edx, dword [esp + 0x84]
inc dword [edx + 4]
mov edx, dword [esp + 0x7c]
or byte [edx + 0xc], 1
add ecx, dword [edi + 0x18]
adc ebx, dword [edi + 0x1c]
mov dword [edx], ecx
mov dword [edx + 4], ebx
mov edx, dword [edi + 0x28]
jmp 0x403198
mov eax, dword [esp + 0x7c]
mov ecx, dword [eax]
mov ebx, dword [eax + 4]
jmp 0x4032a7
mov eax, dword [esp + 0xc4]
mov eax, dword [eax + 0x10]
mov dword [esp + 0x3c], eax
jmp 0x403212
mov eax, dword [0x408070]
test eax, eax
je 0x403212
mov ebx, dword [edi]
test ebx, ebx
jne 0x4032ff
jmp 0x403212
mov ebx, dword [ebx + 0x20]
test ebx, ebx
je 0x40332d
mov edi, dword [esp + 0x7c]
mov eax, dword [edi + 8]
mov dword [ebx + 0x1c], eax
mov dword [edi + 8], ebx
mov eax, dword [esp + 0x84]
test eax, eax
je 0x4032f8
test byte [ebx + 0x18], 0x40
jne 0x4032f8
mov eax, dword [esp + 0x84]
mov edx, ebx
call fcn.00401910
jmp 0x4032f8
mov ebp, dword [esp + 0xc4]
mov ebp, dword [ebp + 0x10]
mov dword [esp + 0x3c], ebp
jmp 0x403212
mov ecx, dword [esp + 0xc4]
mov ebp, str._s:no_lines_for___s_n
mov eax, dword [ecx]
mov dword [esp + 4], ebp
mov dword [esp + 0xc], eax
mov eax, dword [0x408150]
mov dword [esp + 8], eax
mov eax, dword [sym.imp.msvcrt.dll__iob]
add eax, 0x40
mov dword [esp], eax
call fcn.00401700
jmp 0x403233
mov ebx, dword [esp + 0xc4]
mov eax, dword [ebx + 0x24]
mov edx, dword [ebx + 0x20]
mov ecx, dword [eax + 8]
shl edx, 4
add edx, ecx
jmp 0x4031fb
lea eax, [esp + 0x1e0]
mov edx, str.Function
mov esi, 0x407927
call fcn.00401af0
mov dword [esp + 4], esi
mov eax, dword [sym.imp.msvcrt.dll__iob]
add eax, 0x20
mov dword [esp], eax
call fcn.00401700
jmp 0x403241
mov esi, dword [0x4080f0]
test esi, esi
mov dword [esp + 0xc8], esi
je 0x401fc0
mov edi, dword [esp + 0xc8]
xor ecx, ecx
mov edx, dword [edi + 0x30]
jmp 0x4033ea
mov eax, dword [edx + 0x28]
mov dword [edx + 0x28], ecx
mov ecx, edx
mov edx, eax
test edx, edx
jne 0x4033e0
mov ebp, dword [esp + 0xc8]
mov edx, dword [ebp + 0xc]
mov dword [ebp + 0x30], ecx
mov eax, dword [ebp + 8]
lea ecx, [ebp + 0x10]
mov dword [esp + 0x34], ecx
dec edx
cmp edx, 0xffffffff
mov dword [esp + 0x74], eax
mov dword [esp + 0x70], edx
je 0x403662
mov ebx, dword [0x408080]
test ebx, ebx
jne 0x40347e
mov edi, dword [esp + 0x74]
xor eax, eax
mov esi, dword [edi + 8]
jmp 0x403441
mov ebx, dword [esi + 0x1c]
mov dword [esi + 0x1c], eax
mov eax, dword [esp + 0x34]
mov edx, esi
call fcn.00401910
mov eax, esi
mov esi, ebx
test esi, esi
jne 0x40342c
mov ebp, dword [esp + 0x74]
mov dword [ebp + 8], eax
mov ebx, dword [esp + 0x74]
test byte [ebx + 0xc], 1
je 0x40346e
mov edx, dword [ebx + 4]
mov esi, dword [esp + 0xc8]
mov eax, dword [ebx]
mov ebp, edx
inc dword [esi + 0x10]
or ebp, eax
je 0x40346e
inc dword [esi + 0x14]
dec dword [esp + 0x70]
add dword [esp + 0x74], 0x10
cmp dword [esp + 0x70], 0xffffffff
jmp 0x403411
mov edx, dword [esp + 0x74]
mov eax, dword [edx + 8]
test eax, eax
je 0x40344c
mov dword [esp + 0x6c], eax
xor edx, edx
xor ecx, ecx
mov dword [esp + 0x64], edx
xor edx, edx
mov dword [esp + 0x60], ecx
mov ecx, dword [esp + 0x6c]
mov ebx, dword [esp + 0x70]
mov eax, dword [ecx + 0x2c]
mov dword [ecx + 0x28], ebx
mov dword [ecx + 0x2c], edx
test eax, eax
mov edx, ecx
mov dword [esp + 0x6c], eax
jne 0x40349b
mov esi, dword [esp + 0x74]
test ecx, ecx
mov dword [esi + 8], ecx
mov dword [esp + 0x6c], ecx
je 0x40364c
mov edi, dword [esp + 0x6c]
mov ebx, dword [edi + 4]
test ebx, ebx
je 0x403502
mov eax, dword [ebx]
mov ebp, dword [esp + 0x70]
cmp dword [eax + 0x28], ebp
je 0x4034ed
mov eax, dword [ebx + 8]
mov edx, dword [ebx + 0xc]
add dword [esp + 0x60], eax
adc dword [esp + 0x64], edx
mov ebp, dword [0x408070]
test ebp, ebp
jne 0x403579
mov ebx, dword [ebx + 0x24]
test ebx, ebx
jne 0x4034d4
mov edx, dword [esp + 0x6c]
mov ebx, dword [edx]
jmp 0x403519
mov eax, dword [ebx + 8]
mov edx, dword [ebx + 0xc]
mov dword [ebx + 0x10], eax
mov dword [ebx + 0x14], edx
mov ebx, dword [ebx + 0x20]
test ebx, ebx
jne 0x40350a
mov ecx, dword [esp + 0x6c]
mov ecx, dword [ecx + 0x2c]
test ecx, ecx
mov dword [esp + 0x6c], ecx
jne 0x4034c9
mov ebx, dword [esp + 0x74]
mov ebx, dword [ebx + 8]
test ebx, ebx
mov dword [esp + 0x6c], ebx
je 0x40364c
mov ebp, dword [esp + 0x6c]
mov edx, dword [ebp]
test edx, edx
je 0x403560
lea esi, [esi]
test byte [edx + 0x18], 0x80
mov eax, dword [edx + 4]
je 0x403590
mov edx, dword [edx + 0x20]
test edx, edx
jne 0x403550
mov edx, dword [ebp + 0x24]
test edx, edx
je 0x403633
mov dword [ebp + 0x24], 0
mov ebp, dword [edx]
mov edx, dword [edx + 0x20]
jmp 0x40355c
mov eax, dword [esp + 0x34]
mov edx, ebx
call fcn.00401910
mov ebx, dword [ebx + 0x24]
jmp 0x4034fe
mov esi, dword [esp + 0x70]
cmp dword [eax + 0x28], esi
jne 0x403559
mov edi, dword [eax + 0x24]
test edi, edi
jne 0x403559
cmp eax, dword [esp + 0x6c]
je 0x4035ad
mov dword [eax + 0x24], edx
mov ebp, eax
jmp 0x403543
mov dword [esp + 0x5c], edx
mov esi, dword [edx + 0x10]
mov eax, dword [ebp + 0x24]
mov edi, dword [edx + 0x14]
test eax, eax
je 0x4035e1
nop
mov ebx, dword [eax + 0x14]
mov ecx, dword [eax + 0x10]
cmp ebx, edi
jg 0x4035d8
jl 0x4035d0
cmp ecx, esi
jae 0x4035d8
mov dword [esp + 0x5c], eax
mov esi, ecx
mov edi, ebx
mov eax, dword [eax]
mov eax, dword [eax + 0x24]
test eax, eax
jne 0x4035c0
add dword [esp + 0x60], esi
mov eax, dword [esp + 0x5c]
adc dword [esp + 0x64], edi
or byte [eax + 0x18], 0x80
sub dword [edx + 0x10], esi
sbb dword [edx + 0x14], edi
mov eax, dword [ebp + 0x24]
jmp 0x40360b
sub dword [eax + 0x10], esi
sbb dword [eax + 0x14], edi
mov eax, dword [eax]
mov eax, dword [eax + 0x24]
test eax, eax
jne 0x403600
mov ecx, dword [esp + 0x5c]
cmp dword [ecx], ebp
jmp 0x403629
mov edx, dword [ebp + 0x24]
mov dword [ebp + 0x24], 0
mov ebx, dword [esp + 0x5c]
mov ebp, dword [edx]
cmp dword [ebx], ebp
jne 0x403617
mov edx, dword [edx + 0x20]
jmp 0x40355c
mov esi, dword [esp + 0x6c]
mov edi, dword [esi + 0x2c]
mov dword [esi + 0x28], 0xffffffff
test edi, edi
mov dword [esp + 0x6c], edi
jmp 0x403539
mov ecx, dword [esp + 0x74]
mov eax, dword [esp + 0x60]
mov edx, dword [esp + 0x64]
mov dword [ecx], eax
mov dword [ecx + 4], edx
jmp 0x40344c
mov eax, dword [esp + 0x34]
mov edx, str.File
call fcn.00401af0
mov esi, dword [section..data]
test esi, esi
jne 0x4036ab
mov eax, dword [sym.imp.msvcrt.dll__iob]
mov ebx, 0x407927
mov dword [esp + 4], ebx
add eax, 0x20
mov dword [esp], eax
call fcn.00401700
mov ebx, dword [esp + 0xc8]
mov ebx, dword [ebx + 0x34]
test ebx, ebx
mov dword [esp + 0xc8], ebx
jmp 0x4033cc
mov eax, dword [esp + 0xc8]
mov esi, dword [eax]
mov dword [esp], esi
call sub.msvcrt.dll_strlen
mov edx, dword [esp + 0xcc]
mov ebx, eax
mov dword [esp], edx
call sub.msvcrt.dll_strlen
lea eax, [ebx + eax + 0xa]
mov dword [esp], eax
call fcn.00404fa0
mov dword [esp + 0x58], eax
mov byte [eax], 0
mov ebx, dword [0x408040]
test ebx, ebx
je 0x403757
mov dword [esp], esi
mov ecx, dword [esp + 0xcc]
mov dword [esp + 4], ecx
call sub.msvcrt.dll_strcmp
test eax, eax
je 0x403757
mov ecx, dword [0x408020]
test ecx, ecx
jne 0x403efb
mov ebx, dword [esp + 0xcc]
mov edx, 0x2f
mov dword [esp + 4], edx
mov dword [esp], ebx
call sub.msvcrt.dll_strrchr
mov edx, eax
test edx, edx
lea eax, [eax + 1]
je 0x403efb
mov dword [esp + 4], eax
mov edi, dword [esp + 0x58]
mov dword [esp], edi
call sub.msvcrt.dll_strcat
mov dword [esp], edi
call sub.msvcrt.dll_strlen
mov word [eax + edi], 0x2323
mov byte [eax + edi + 2], 0
mov eax, dword [0x408020]
test eax, eax
jne 0x403e40
mov dword [esp], esi
mov eax, 0x2f
mov dword [esp + 4], eax
call sub.msvcrt.dll_strrchr
mov edx, eax
test edx, edx
lea eax, [eax + 1]
je 0x403e40
mov dword [esp + 4], eax
mov ebp, dword [esp + 0x58]
mov dword [esp], ebp
call sub.msvcrt.dll_strcat
mov eax, dword [0x408020]
mov edx, ebp
test eax, eax
jne 0x4039fa
mov eax, dword [esp + 0x58]
mov dword [esp], eax
call sub.msvcrt.dll_strlen
mov edx, dword [esp + 0x58]
mov dword [eax + edx], 0x6f63672e
mov word [eax + edx + 4], 0x76
mov eax, 0x40792e
mov dword [esp + 4], eax
mov dword [esp], edx
call sub.msvcrt.dll_fopen
mov dword [esp + 0x54], eax
test eax, eax
je 0x403e9d
mov ecx, dword [esp + 0x58]
xor ebp, ebp
mov edi, 0x40768f
mov ebx, dword [esp + 0xc8]
mov dword [esp + 0xc], ecx
mov eax, dword [ebx]
mov dword [esp + 8], eax
mov eax, str._s:creating___s_n
mov dword [esp + 4], eax
mov eax, dword [sym.imp.msvcrt.dll__iob]
add eax, 0x20
mov dword [esp], eax
call fcn.00401700
mov esi, dword [ebx + 0x30]
mov ecx, str._9s:_5d:Source:_s_n
mov eax, dword [ebx]
mov dword [esp + 0xc], ebp
mov ebp, dword [esp + 0x54]
mov dword [esp + 0x44], esi
mov esi, 0x407955
mov dword [esp + 4], ecx
mov dword [esp + 8], esi
mov esi, 0x407955
mov dword [esp + 0x10], eax
mov dword [esp], ebp
call sub.msvcrt.dll_fprintf
mov dword [esp], ebp
mov eax, dword [0x408150]
xor edx, edx
mov dword [esp + 0xc], edx
mov dword [esp + 0x10], eax
mov eax, 0x407955
mov dword [esp + 8], eax
mov eax, str._9s:_5d:Graph:_s_n
mov dword [esp + 4], eax
call sub.msvcrt.dll_fprintf
mov dword [esp], ebp
mov eax, dword [0x408170]
mov dword [esp + 0x10], eax
xor eax, eax
mov dword [esp + 0xc], eax
mov eax, 0x407955
mov dword [esp + 8], eax
mov eax, str._9s:_5d:Data:_s_n
mov dword [esp + 4], eax
call sub.msvcrt.dll_fprintf
mov dword [esp + 8], esi
mov eax, dword [0x40810c]
mov ecx, str._9s:_5d:Runs:_u_n
mov dword [esp + 4], ecx
mov dword [esp], ebp
mov dword [esp + 0x10], eax
xor eax, eax
mov dword [esp + 0xc], eax
call sub.msvcrt.dll_fprintf
mov dword [esp], ebp
mov eax, dword [0x408130]
xor edx, edx
mov dword [esp + 0xc], edx
mov dword [esp + 0x10], eax
mov eax, 0x407955
mov dword [esp + 8], eax
mov eax, str._9s:_5d:Programs:_u_n
mov dword [esp + 4], eax
call sub.msvcrt.dll_fprintf
mov eax, 0x4079a0
mov dword [esp + 4], eax
mov eax, dword [ebx]
mov dword [esp], eax
call sub.msvcrt.dll_fopen
mov dword [esp + 0x50], eax
test eax, eax
je 0x403e77
mov edx, dword [esp + 0x50]
lea eax, [esp + 0xe0]
mov dword [esp + 4], eax
mov eax, dword [edx + 0x10]
mov dword [esp], eax
call sub.msvcrt.dll__fstat
test eax, eax
jne 0x403982
mov eax, dword [0x408140]
cmp dword [esp + 0xfc], eax
jle 0x403982
mov eax, dword [0x408150]
mov ebp, 0x407955
mov esi, str._9s:_5d:Source_is_newer_than_graph_n
mov ecx, dword [esp + 0xc8]
mov dword [esp + 0xc], eax
mov eax, dword [ecx]
mov dword [esp + 8], eax
mov eax, str._s:source_file_is_newer_than_graph_file___s_n
mov dword [esp + 4], eax
mov eax, dword [sym.imp.msvcrt.dll__iob]
add eax, 0x40
mov dword [esp], eax
call fcn.00401700
mov dword [esp + 8], ebp
mov ebx, dword [esp + 0x54]
xor eax, eax
mov dword [esp + 0xc], eax
mov dword [esp + 4], esi
mov dword [esp], ebx
call sub.msvcrt.dll_fprintf
mov esi, dword [esp + 0xc8]
mov ebx, 1
mov dword [esp + 0x4c], ebx
mov ebp, dword [esi + 8]
add ebp, 0x10
cmp dword [esi + 0xc], 1
mov dword [esp + 0x48], ebp
jbe 0x403d3f
mov ecx, dword [esp + 0x44]
test ecx, ecx
je 0x403b44
mov eax, dword [esp + 0x44]
mov edx, dword [esp + 0x4c]
cmp dword [eax + 0x20], edx
jne 0x403b44
mov ecx, dword [esp + 0x44]
mov eax, dword [ecx + 0x10]
mov edx, dword [ecx + 0xc]
lea eax, [eax + eax*2]
shl eax, 4
add eax, edx
sub eax, 0x30
mov ecx, dword [eax + 4]
mov ebx, dword [eax + 0x18]
mov esi, dword [eax + 0x1c]
test ecx, ecx
je 0x403a50
test byte [ecx + 0x18], 4
je 0x4039f1
sub ebx, dword [ecx + 8]
sbb esi, dword [ecx + 0xc]
mov ecx, dword [ecx + 0x24]
jmp 0x4039e1
mov byte [edx], 0x23
inc edx
mov dword [esp], edx
mov eax, 0x2f
mov ebx, edx
mov dword [esp + 4], eax
call sub.msvcrt.dll_strchr
test eax, eax
mov edx, eax
je 0x4037a1
lea ecx, [ebx + 1]
cmp ecx, edx
je 0x403e27
lea eax, [ebx + 2]
cmp eax, edx
jne 0x4039f6
cmp byte [ebx], 0x2e
jne 0x4039f6
cmp byte [ebx + 1], 0x2e
jne 0x4039f6
mov byte [ebx + 1], 0x5e
mov esi, 1
mov edx, ebx
movzx eax, byte [esi + ebx]
test al, al
mov byte [ebx], al
mov ebx, ecx
je 0x4039fa
lea ecx, [ebx + 1]
jmp 0x403a3f
mov ebp, dword [esp + 0x44]
mov eax, dword [ebp]
mov dword [esp + 8], eax
mov eax, str.function__s
mov dword [esp + 4], eax
mov eax, dword [esp + 0x54]
mov dword [esp], eax
call sub.msvcrt.dll_fprintf
mov eax, dword [ebp + 0xc]
mov ecx, 0xffffffff
mov edx, dword [eax + 0x1c]
mov eax, dword [eax + 0x18]
mov dword [esp + 8], ecx
xor ecx, ecx
mov dword [esp + 4], ecx
mov dword [esp], 0
call fcn.00401990
mov dword [esp + 8], eax
mov edx, dword [esp + 0x54]
mov eax, str._called__s
mov dword [esp + 4], eax
mov dword [esp], edx
call sub.msvcrt.dll_fprintf
xor eax, eax
mov dword [esp + 8], eax
mov eax, dword [ebp + 0xc]
mov edx, dword [eax + 0x1c]
mov eax, dword [eax + 0x18]
mov dword [esp + 4], edx
mov edx, esi
mov esi, str._returned__s
mov dword [esp], eax
mov eax, ebx
xor ebx, ebx
call fcn.00401990
mov dword [esp + 8], eax
mov ecx, dword [esp + 0x54]
mov dword [esp + 4], esi
mov dword [esp], ecx
call sub.msvcrt.dll_fprintf
mov eax, dword [ebp + 0x14]
mov dword [esp + 8], ebx
mov ecx, dword [ebp + 0x10]
xor edx, edx
sub ecx, 2
mov dword [esp], ecx
xor ecx, ecx
mov dword [esp + 4], ecx
call fcn.00401990
mov dword [esp + 8], eax
mov ebx, dword [esp + 0x54]
mov edx, str._blocks_executed__s
mov dword [esp + 4], edx
mov dword [esp], ebx
call sub.msvcrt.dll_fprintf
mov dword [esp + 4], ebx
mov dword [esp], 0xa
call sub.msvcrt.dll_fputc
mov esi, dword [ebp + 0x28]
test esi, esi
mov dword [esp + 0x44], esi
je 0x403b44
mov ebp, dword [esp + 0x4c]
cmp dword [esi + 0x20], ebp
jmp 0x4039bd
mov eax, dword [esp + 0x48]
mov ecx, 0x407955
test byte [eax + 0xc], 1
je 0x403b8b
mov ecx, eax
mov edx, dword [ecx + 4]
mov ecx, str.
mov eax, dword [eax]
mov ebx, edx
or ebx, eax
je 0x403b8b
mov dword [esp], 0
mov esi, dword [esp + 0x48]
mov eax, 0xffffffff
mov dword [esp + 8], eax
xor eax, eax
mov dword [esp + 4], eax
mov eax, dword [esi]
mov edx, dword [esi + 4]
call fcn.00401990
mov ecx, eax
mov dword [esp + 8], ecx
mov eax, str._9s:_5u:
mov ebp, dword [esp + 0x4c]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x54]
mov dword [esp + 0xc], ebp
mov dword [esp], eax
call sub.msvcrt.dll_fprintf
test edi, edi
je 0x403cf2
mov edx, dword [esp + 0x50]
mov eax, 0xc8
lea ecx, [esp + 0x110]
mov dword [esp + 4], eax
mov dword [esp], ecx
mov dword [esp + 8], edx
call sub.msvcrt.dll_fgets
test eax, eax
mov edi, eax
je 0x403cf2
mov dword [esp], eax
mov ebx, dword [esp + 0x54]
mov dword [esp + 4], ebx
call sub.msvcrt.dll_fputs
cmp byte [edi], 0
je 0x403bb4
mov dword [esp], edi
call sub.msvcrt.dll_strlen
cmp byte [eax + edi - 1], 0xa
jne 0x403bb4
mov ebp, dword [0x408080]
test ebp, ebp
je 0x403cab
mov eax, dword [esp + 0x48]
xor esi, esi
xor ebp, ebp
mov dword [esp + 0x40], esi
mov esi, dword [eax + 8]
test esi, esi
je 0x403cd6
test byte [esi + 0x22], 2
jne 0x403c7f
mov edx, dword [esp + 0x48]
mov ecx, 0x407955
test byte [edx + 0xc], 1
je 0x403c51
mov edx, dword [esi + 0x1c]
mov ecx, str._____
mov eax, dword [esi + 0x18]
mov ebx, edx
or ebx, eax
jne 0x403d1d
mov dword [esp + 8], ecx
mov eax, dword [esp + 0x40]
mov edx, dword [esp + 0x4c]
mov ecx, dword [esp + 0x54]
mov dword [esp + 0x10], eax
inc eax
mov dword [esp + 0xc], edx
mov edx, str._9s:_5u_block__2d_n
mov dword [esp + 0x40], eax
mov dword [esp + 4], edx
mov dword [esp], ecx
call sub.msvcrt.dll_fprintf
mov eax, dword [0x408070]
test eax, eax
je 0x403ca3
mov ebx, dword [esi]
jmp 0x403c9f
mov dword [esp], ebx
mov eax, dword [esp + 0x54]
mov edx, ebp
call fcn.00401cc0
mov ebx, dword [ebx + 0x20]
add ebp, eax
test ebx, ebx
jne 0x403c8c
mov esi, dword [esi + 0x2c]
jmp 0x403c1f
mov eax, dword [0x408070]
test eax, eax
je 0x403cd6
mov ebp, dword [esp + 0x48]
xor esi, esi
mov ebx, dword [ebp + 8]
jmp 0x403cd2
mov dword [esp], ebx
mov eax, dword [esp + 0x54]
mov edx, esi
call fcn.00401cc0
mov ebx, dword [ebx + 0x1c]
add esi, eax
test ebx, ebx
jne 0x403cbf
inc dword [esp + 0x4c]
mov eax, dword [esp + 0xc8]
add dword [esp + 0x48], 0x10
mov edx, dword [esp + 0x4c]
cmp dword [eax + 0xc], edx
jmp 0x4039a0
mov dword [esp], str._EOF__n
mov esi, dword [esp + 0x54]
mov eax, 8
mov dword [esp + 8], eax
mov eax, 1
mov dword [esp + 0xc], esi
mov dword [esp + 4], eax
call sub.msvcrt.dll_fwrite
jmp 0x403c02
mov dword [esp], 0
xor ecx, ecx
mov ebx, 0xffffffff
mov dword [esp + 4], ecx
mov dword [esp + 8], ebx
call fcn.00401990
mov ecx, eax
jmp 0x403c51
test edi, edi
lea ebx, [esp + 0x110]
je 0x403dec
mov dword [esp], ebx
mov eax, dword [esp + 0x50]
mov dword [esp + 8], eax
mov eax, 0xc8
mov dword [esp + 4], eax
call sub.msvcrt.dll_fgets
test eax, eax
mov edi, eax
je 0x403dec
mov dword [esp + 0x10], edi
mov ecx, dword [esp + 0x4c]
mov eax, 0x407955
mov dword [esp + 8], eax
mov esi, dword [esp + 0x54]
mov eax, str._9s:_5u:_s
mov dword [esp + 0xc], ecx
mov dword [esp + 4], eax
mov dword [esp], esi
call sub.msvcrt.dll_fprintf
jmp 0x403db0
mov dword [esp], eax
mov ebp, dword [esp + 0x54]
mov dword [esp + 4], ebp
call sub.msvcrt.dll_fputs
cmp byte [edi], 0
je 0x403dc4
mov dword [esp], edi
call sub.msvcrt.dll_strlen
cmp byte [eax + edi - 1], 0xa
je 0x403de3
mov dword [esp], ebx
mov edi, dword [esp + 0x50]
mov eax, 0xc8
mov dword [esp + 4], eax
mov dword [esp + 8], edi
call sub.msvcrt.dll_fgets
test eax, eax
mov edi, eax
jne 0x403da0
inc dword [esp + 0x4c]
jmp 0x403d4e
mov ebp, dword [esp + 0x50]
test ebp, ebp
je 0x403e00
mov edx, dword [esp + 0x50]
mov dword [esp], edx
call sub.msvcrt.dll_fclose
mov ecx, dword [esp + 0x54]
test byte [ecx + 0xc], 0x20
jne 0x403e47
mov edi, dword [esp + 0x54]
mov dword [esp], edi
call sub.msvcrt.dll_fclose
mov ecx, dword [esp + 0x58]
mov dword [esp], ecx
call sub.msvcrt.dll_free
jmp 0x40367a
cmp byte [ebx], 0x2e
mov esi, 2
jne 0x403a22
jmp 0x403a3d
mov eax, esi
jmp 0x403782
mov ebx, dword [esp + 0x58]
mov edi, str._s:error_writing_output_file___s_n
mov esi, dword [esp + 0xc8]
mov dword [esp + 0xc], ebx
mov eax, dword [esi]
mov dword [esp + 4], edi
mov dword [esp + 8], eax
mov eax, dword [sym.imp.msvcrt.dll__iob]
add eax, 0x40
mov dword [esp], eax
call fcn.00401700
jmp 0x403e0a
mov eax, dword [ebx]
xor edi, edi
mov dword [esp + 8], eax
mov eax, str._s:cannot_open_source_file_n
mov dword [esp + 4], eax
mov eax, dword [sym.imp.msvcrt.dll__iob]
add eax, 0x40
mov dword [esp], eax
call fcn.00401700
jmp 0x403982
mov ebp, dword [esp + 0x58]
mov esi, str._s:could_not_open_output_file___s_n
mov edx, dword [esp + 0xc8]
mov dword [esp + 0xc], ebp
mov eax, dword [edx]
mov dword [esp + 4], esi
mov dword [esp + 8], eax
mov eax, dword [sym.imp.msvcrt.dll__iob]
add eax, 0x40
mov dword [esp], eax
call fcn.00401700
jmp 0x403e16
mov dword [esp + 0xc], eax
mov eax, dword [0x408170]
mov dword [esp + 8], eax
mov eax, str._s:unknown_function___u_n
mov dword [esp + 4], eax
mov eax, dword [sym.imp.msvcrt.dll__iob]
add eax, 0x40
mov dword [esp], eax
call fcn.00401700
jmp 0x4028fc
mov eax, dword [esp + 0xcc]
jmp 0x403734