Function at 0x413eca
Capabilities:
Write file on windows

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
push ebx
sub esp, 0x3c
mov ecx, dword [0x415ca0]
test ecx, ecx
jne case.0x413da0.12
mov edx, dword [0x415cb0]
mov dword [0x415ca0], 1
test edx, edx
jne 0x413c15
mov dword [0x415cb0], 1
mov eax, dword [0x415cb4]
test eax, eax
je 0x414048
mov eax, dword [0x415cd4]
test eax, eax
je 0x414031
mov eax, dword [0x415c88]
test eax, eax
je 0x413db9
mov edx, dword [0x415c90]
lea edx, [eax + edx*4]
mov eax, dword [edx]
test eax, eax
je 0x413db9
mov esi, dword [eax + 8]
mov ecx, dword [eax + 0x10]
mov dword [0x415cd8], esi
mov eax, dword [edx]
mov dword [0x415cac], ecx
mov eax, dword [eax]
mov dword [0x415c94], esi
mov dword [0x415cb4], eax
movzx eax, byte [esi]
mov byte [0x415c9c], al
jmp 0x413ca1
mov edx, dword [0x415ab0]
mov eax, dword [edx + 4]
lea ecx, [eax + 1]
mov dword [edx + 4], ecx
mov edx, dword [0x415cd8]
movzx edx, byte [edx]
mov byte [eax], dl
movzx eax, byte [0x415c9c]
mov esi, dword [0x415c94]
mov byte [esi], al
mov ebx, dword [0x415cb0]
mov dword [ebp - 0x24], esi
mov ecx, dword [0x415ca4]
mov edi, dword [0x415ca8]
mov dword [ebp - 0x28], ecx
mov dword [ebp - 0x20], ecx
mov dword [ebp - 0x2c], edi
mov dword [ebp - 0x1c], edi
xor edi, edi
lea esi, [esi]
lea esi, [esi]
cmp word [ebx + ebx + 0x418f60], 0
mov ecx, dword [ebp - 0x1c]
cmovne ecx, ebx
mov dword [ebp - 0x1c], ecx
mov ecx, dword [ebp - 0x20]
cmovne ecx, esi
mov dword [ebp - 0x20], ecx
mov ecx, 1
cmovne edi, ecx
movzx ecx, byte [eax + 0x419100]
movsx eax, word [ebx + ebx + 0x418fa0]
add eax, ecx
movsx edx, word [eax + eax + 0x419000]
cmp ebx, edx
je 0x413d3b
movsx ebx, word [ebx + ebx + 0x4190a0]
mov edx, ebx
cmp bx, 0x1b
jle 0x413d27
movzx ecx, byte [ecx + 0x419200]
movsx eax, word [ebx + ebx + 0x418fa0]
add eax, ecx
cmp dx, word [eax + eax + 0x419000]
jne 0x413d10
movsx ebx, word [eax + eax + 0x419220]
inc esi
cmp ebx, 0x1b
je 0x413d50
movzx eax, byte [esi]
jmp 0x413cd0
mov eax, edi
test al, al
je 0x413da7
mov esi, dword [ebp - 0x20]
mov eax, dword [ebp - 0x1c]
mov dword [0x415ca4], esi
mov dword [0x415ca8], eax
mov edi, dword [ebp - 0x24]
mov edx, esi
movsx eax, word [eax + eax + 0x418f60]
mov dword [ebp - 0x1c], esi
mov dword [0x415c94], esi
sub edx, edi
mov dword [0x415cd8], edi
mov dword [0x415cb8], edx
movzx edx, byte [esi]
mov byte [esi], 0
mov byte [0x415c9c], dl
cmp eax, 0x11
ja case.default.0x413da0
jmp dword [eax*4 + 0x418054]
mov esi, dword [ebp - 0x28]
mov eax, dword [ebp - 0x2c]
jmp 0x413d67
xor eax, eax
add esp, 0x3c
pop ebx
pop esi
pop edi
pop ebp
ret
call sym._yyensure_buffer_stack
mov edx, dword [0x415c90]
mov eax, dword [0x415c88]
mov dword [esp + 4], 0x4000
lea ebx, [eax + edx*4]
mov eax, dword [0x415cb4]
mov dword [esp], eax
call sym._yy_create_buffer
mov edx, dword [0x415c90]
mov dword [ebx], eax
mov eax, dword [0x415c88]
lea edx, [eax + edx*4]
mov eax, dword [edx]
jmp 0x413c4f
mov ebx, dword [0x415ab0]
mov eax, dword [ebx + 0x88]
test eax, eax
jne 0x41405f
cmp dword [ebx + 0x10c], 0x1f
ja 0x414243
mov eax, dword [ebx]
mov dword [esp], eax
call dword [sym.imp.ucrtbase.dll_strlen]
mov esi, dword [ebx + 0x10c]
inc eax
mov dword [esp], eax
call dword [sym.imp.ucrtbase.dll_malloc]
mov dword [0x415cb0], 3
mov dword [ebx + esi*4 + 0x8c], eax
inc esi
mov dword [ebx + 4], eax
mov dword [ebx + 0x10c], esi
mov dword [0x415ccc], eax
mov eax, dword [0x415cd8]
mov ecx, dword [ebx + 0x88]
movsx eax, byte [eax]
lea edx, [ecx + 1]
mov dword [ebx + 0x88], edx
mov dword [ebx + ecx*4 + 8], eax
cmp edx, 0x1f
jbe case.0x413da0.12
mov dword [esp + 8], 0x55
mov dword [esp + 4], str.._programs_winhlp32_macro.lex.l
mov dword [esp], str.lex_data__quote_stk_idx___ARRAY_SIZE_lex_data__quote_stack_
call dword [sym.imp.ucrtbase.dll__assert]
jmp case.0x413da0.12
mov edx, dword [0x415ab0]
mov eax, dword [edx + 4]
lea ecx, [eax + 1]
mov dword [edx + 4], ecx
mov edx, dword [0x415cd8]
movzx edx, byte [edx + 1]
mov byte [eax], dl
jmp case.0x413da0.12
mov eax, dword [0x415cd8]
movsx eax, byte [eax]
add esp, 0x3c
pop ebx
pop esi
pop edi
pop ebp
ret
mov eax, dword [0x415cd4]
mov dword [esp + 8], 1
mov dword [esp + 0xc], eax
mov eax, dword [0x415cb8]
mov dword [esp + 4], eax
mov eax, dword [0x415cd8]
mov dword [esp], eax
call dword [sym.imp.ucrtbase.dll_fwrite]
jmp case.0x413da0.12
mov esi, dword [ebp - 0x1c]
movzx eax, byte [0x415c9c]
mov byte [esi], al
mov esi, dword [0x415ca4]
mov eax, dword [0x415ca8]
jmp 0x413d67
mov dword [esp + 8], 0xa
mov eax, dword [0x415cd8]
mov dword [esp + 4], 0
mov dword [esp], eax
call dword [sym.imp.ucrtbase.dll_strtol]
mov dword [0x415cc8], eax
add esp, 0x3c
mov eax, 3
pop ebx
pop esi
pop edi
pop ebp
ret
mov dword [esp + 8], 0x10
jmp 0x413f1b
mov eax, dword [0x415cd8]
mov dword [esp + 4], 0x415cc0
mov dword [esp], eax
call sym._MACRO_Lookup
add esp, 0x3c
pop ebx
pop esi
pop edi
pop ebp
ret
mov edi, dword [ebp - 0x1c]
mov ebx, dword [0x415cac]
mov eax, edi
sub eax, dword [0x415cd8]
dec eax
mov dword [ebp - 0x2c], eax
movzx eax, byte [0x415c9c]
mov byte [edi], al
mov eax, dword [0x415c90]
mov edi, dword [0x415c88]
mov dword [ebp - 0x34], eax
lea esi, [edi + eax*4]
mov dword [ebp - 0x30], edi
mov edi, dword [esi]
mov eax, dword [edi + 0x2c]
test eax, eax
jne 0x413fc0
mov eax, dword [0x415cb4]
mov ebx, dword [edi + 0x10]
mov dword [edi], eax
mov eax, dword [esi]
mov dword [0x415cac], ebx
mov dword [eax + 0x2c], 1
mov edi, dword [esi]
mov eax, dword [0x415c94]
mov edx, dword [edi + 4]
mov ecx, dword [0x415cd8]
mov dword [ebp - 0x28], eax
lea eax, [edx + ebx]
cmp dword [ebp - 0x28], eax
jbe 0x4142ff
lea ebx, [edx + ebx + 1]
cmp dword [ebp - 0x28], ebx
ja 0x4143c2
mov ebx, dword [ebp - 0x28]
mov eax, dword [edi + 0x28]
sub ebx, ecx
mov dword [ebp - 0x20], ebx
test eax, eax
jne 0x4140b3
cmp ebx, 1
je 0x4141fa
mov eax, dword [ebp - 0x30]
mov edi, dword [ebp - 0x34]
mov edx, dword [eax + edi*4]
mov eax, dword [0x415cac]
add eax, dword [edx + 4]
mov dword [0x415c94], eax
mov esi, eax
call sym._yy_get_previous_state
mov edi, dword [0x415cd8]
mov dword [ebp - 0x24], edi
jmp 0x413d67
mov dword [esp], 1
call dword [sym.imp.ucrtbase.dll___acrt_iob_func]
mov dword [0x415cd4], eax
jmp 0x413c2f
mov dword [esp], 0
call dword [sym.imp.ucrtbase.dll___acrt_iob_func]
mov dword [0x415cb4], eax
jmp 0x413c22
mov edx, dword [0x415cd8]
movzx ecx, byte [edx]
cmp cl, 0x22
je 0x414096
cmp cl, 0x60
je 0x4140a0
lea ecx, [eax - 1]
mov dword [ebx + 0x88], ecx
test ecx, ecx
je 0x414398
mov eax, dword [ebx + 4]
lea ecx, [eax + 1]
mov dword [ebx + 4], ecx
movzx edx, byte [edx]
mov byte [eax], dl
jmp case.0x413da0.12
cmp dword [ebx + eax*4 + 4], 0x22
lea ecx, [eax - 1]
je 0x414075
mov eax, dword [ebx + 4]
lea ecx, [eax + 1]
mov dword [ebx + 4], ecx
movzx edx, byte [edx]
mov byte [eax], dl
jmp 0x413e54
mov eax, dword [ebp - 0x20]
lea ebx, [eax - 1]
mov dword [ebp - 0x30], ebx
test ebx, ebx
jle 0x4140d6
mov edi, dword [ebp - 0x28]
add ebx, edx
movzx eax, byte [ecx]
inc edx
inc ecx
mov byte [edx - 1], al
cmp edx, ebx
jne 0x4140c5
mov dword [ebp - 0x28], edi
mov edi, dword [esi]
cmp dword [edi + 0x2c], 2
je 0x4142a9
mov edx, dword [edi + 0xc]
sub edx, dword [ebp - 0x20]
mov ebx, dword [ebp - 0x28]
test edx, edx
jle 0x414135
jmp 0x414158
mov ecx, dword [edi + 0xc]
lea eax, [ecx + ecx]
test eax, eax
jg 0x414107
test ecx, ecx
lea eax, [ecx + 7]
cmovns eax, ecx
sar eax, 3
add eax, ecx
mov dword [edi + 0xc], eax
add eax, 2
mov dword [esp + 4], eax
mov dword [esp], edx
call dword [sym.imp.ucrtbase.dll_realloc]
mov dword [edi + 4], eax
test eax, eax
je 0x414148
mov edi, dword [esi]
add ebx, eax
mov dword [0x415c94], ebx
mov eax, dword [edi + 0xc]
sub eax, dword [ebp - 0x20]
test eax, eax
jg 0x414158
mov edx, dword [edi + 4]
mov eax, dword [edi + 0x14]
sub ebx, edx
test eax, eax
jne 0x4140f0
mov dword [edi + 4], 0
mov eax, str.fatal_error___scanner_input_buffer_overflow
call sym._yy_fatal_error
lea esi, [esi]
mov edx, dword [0x415ab0]
xor ecx, ecx
mov eax, dword [edx]
cmp byte [eax], 0
setne cl
mov dword [0x415cac], ecx
je 0x414219
lea ecx, [eax + 1]
mov edi, dword [ebp - 0x20]
mov dword [edx], ecx
movzx edx, byte [eax]
mov eax, dword [esi]
mov eax, dword [eax + 4]
mov byte [eax + edi - 1], dl
mov eax, dword [esi]
xor edi, edi
mov dword [eax + 0x10], 1
mov eax, 1
mov ebx, dword [ebp - 0x30]
mov edx, dword [esi]
add ebx, eax
cmp ebx, dword [edx + 0xc]
jg 0x41426b
mov eax, dword [edx + 4]
mov dword [0x415cac], ebx
mov byte [eax + ebx], 0
mov eax, dword [esi]
mov eax, dword [eax + 4]
mov byte [eax + ebx + 1], 0
mov eax, dword [esi]
mov ecx, dword [eax + 4]
mov dword [0x415cd8], ecx
cmp edi, 1
je 0x4141fa
cmp edi, 2
je 0x4142bf
mov esi, dword [ebp - 0x2c]
add esi, ecx
mov dword [0x415c94], esi
call sym._yy_get_previous_state
mov ebx, eax
mov eax, dword [0x415cd8]
mov dword [ebp - 0x24], eax
movzx eax, byte [esi]
jmp 0x413cac
mov eax, dword [0x415cb0]
mov dword [0x415c94], ecx
lea edx, [eax - 1]
mov eax, edx
shr eax, 0x1f
add eax, edx
sar eax, 1
add eax, 0x10
jmp 0x413d97
mov dword [edi + 0x10], 0
mov ecx, dword [ebp - 0x30]
test ecx, ecx
je 0x4142d4
mov eax, dword [esi]
mov edi, 2
mov dword [eax + 0x2c], 2
mov eax, dword [0x415cac]
jmp 0x414198
mov dword [esp + 8], 0x4d
mov dword [esp + 4], str.._programs_winhlp32_macro.lex.l
mov dword [esp], str.lex_data__cache_used___ARRAY_SIZE_lex_data__cache_string_
call dword [sym.imp.ucrtbase.dll__assert]
mov ebx, dword [0x415ab0]
jmp 0x413e19
sar eax, 1
mov dword [ebp - 0x20], edx
lea ecx, [eax + ebx]
mov dword [esp + 4], ecx
mov eax, dword [edx + 4]
mov dword [ebp - 0x28], ecx
mov dword [esp], eax
call dword [sym.imp.ucrtbase.dll_realloc]
mov edx, dword [ebp - 0x20]
mov ecx, dword [ebp - 0x28]
mov dword [edx + 4], eax
mov eax, dword [esi]
mov edx, dword [eax + 4]
test edx, edx
je 0x4143cc
sub ecx, 2
mov dword [eax + 0xc], ecx
mov edx, dword [esi]
jmp 0x4141a8
mov dword [0x415cac], 0
mov dword [edi + 0x10], 0
jmp 0x414220
mov eax, dword [0x415c88]
mov dword [ebp - 0x30], eax
mov eax, dword [0x415c90]
mov dword [ebp - 0x34], eax
jmp 0x414006
mov eax, dword [0x415cb4]
mov dword [esp], eax
call sym._yyrestart
mov edi, dword [0x415c90]
mov esi, dword [0x415c88]
mov eax, dword [0x415cac]
lea esi, [esi + edi*4]
mov edi, 1
jmp 0x414198
mov edi, dword [ebp - 0x2c]
add edi, ecx
mov dword [0x415c94], edi
call sym._yy_get_previous_state
cmp word [eax + eax + 0x418f60], 0
mov edx, eax
jne 0x4143e0
mov esi, dword [0x415ca4]
mov eax, dword [0x415ca8]
movsx ebx, word [edx + edx + 0x418fa0]
lea ecx, [ebx + 1]
movsx ebx, word [ebx + ebx + 0x419002]
cmp ebx, edx
je 0x414361
movsx edx, word [edx + edx + 0x4190a0]
movsx ebx, word [edx + edx + 0x418fa0]
lea ecx, [ebx + 1]
movsx ebx, word [ebx + ebx + 0x419002]
cmp edx, ebx
jne 0x414342
movsx ebx, word [ecx + ecx + 0x419220]
mov ecx, dword [0x415cd8]
mov dword [ebp - 0x24], ecx
cmp ebx, 0x1b
je 0x413d67
test ebx, ebx
je 0x413d67
mov esi, edi
inc esi
mov dword [0x415c94], esi
jmp 0x4141f2
mov dword [0x415cb0], 1
mov eax, dword [ebx + 4]
lea edx, [eax + 1]
mov dword [ebx + 4], edx
mov byte [eax], 0
mov eax, 4
jmp 0x413db1
mov eax, str.fatal_flex_scanner_internal_error__no_action_found
call sym._yy_fatal_error
mov eax, str.fatal_flex_scanner_internal_error__end_of_buffer_missed
call sym._yy_fatal_error
mov eax, str.out_of_dynamic_memory_in_yy_get_next_buffer__
call sym._yy_fatal_error
lea esi, [esi]
lea esi, [esi]
mov dword [0x415ca8], eax
mov esi, edi
mov dword [0x415ca4], edi
jmp 0x41432b