Function at 0x412495
Capabilities:
Write file on windows

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
push ebx
sub esp, 0x3c
mov edx, dword [0x41b17c]
test edx, edx
jne 0x4122c8
mov eax, dword [0x41b178]
mov dword [0x41b17c], 1
test eax, eax
jne 0x412194
mov dword [0x41b178], 1
mov eax, dword [0x41b160]
test eax, eax
je 0x412605
mov eax, dword [0x41b15c]
test eax, eax
je 0x41261c
mov eax, dword [0x41b18c]
test eax, eax
je 0x412362
mov edx, dword [0x41b194]
lea edx, [eax + edx*4]
mov eax, dword [edx]
test eax, eax
je 0x412362
mov esi, dword [eax + 8]
mov ecx, dword [eax + 0x10]
mov edi, dword [0x41b178]
mov dword [0x41b154], esi
mov eax, dword [edx]
mov dword [ebp - 0x1c], esi
mov dword [0x41b180], esi
mov dword [0x41b184], ecx
mov eax, dword [eax]
mov dword [0x41b160], eax
movzx eax, byte [esi]
mov esi, dword [ebp - 0x1c]
mov byte [0x41b188], al
mov byte [esi], al
mov dword [ebp - 0x28], esi
xor esi, esi
lea esi, [esi]
cmp word [edi + edi + 0x419500], 0
mov ebx, dword [ebp - 0x20]
mov eax, dword [eax*4 + 0x419100]
movsx edx, word [edi + edi + 0x419060]
cmovne ebx, edi
movzx ecx, al
movzx eax, al
mov dword [ebp - 0x20], ebx
mov ebx, dword [ebp - 0x24]
cmovne ebx, dword [ebp - 0x1c]
mov dword [ebp - 0x24], ebx
mov ebx, 1
cmovne esi, ebx
add eax, edx
movsx eax, word [eax + eax + 0x418ec0]
cmp edi, eax
je 0x41228d
lea esi, [esi]
nop
movsx edi, word [edi + edi + 0x419000]
cmp di, 0x1b
mov eax, edi
jle 0x412278
movzx ecx, byte [ecx*4 + 0x4190c0]
movsx edx, word [edi + edi + 0x419060]
lea ebx, [edx + ecx]
cmp ax, word [ebx + ebx + 0x418ec0]
jne 0x412260
add dword [ebp - 0x1c], 1
add edx, ecx
movsx edi, word [edx + edx + 0x418f60]
mov eax, dword [ebp - 0x1c]
cmp edi, 0x1b
je 0x4122f0
movzx eax, byte [eax]
jmp 0x412210
mov edx, dword [0x41b16c]
mov dword [ebp - 0x24], esi
mov eax, dword [edx + 4]
lea ecx, [eax + 1]
mov dword [edx + 4], ecx
mov edx, dword [0x41b154]
movzx edx, byte [edx]
mov byte [eax], dl
mov eax, dword [0x41b180]
mov dword [ebp - 0x1c], eax
movzx eax, byte [0x41b188]
mov esi, dword [ebp - 0x1c]
mov edi, dword [0x41b178]
mov byte [esi], al
mov dword [ebp - 0x28], esi
jmp 0x412208
mov eax, esi
test al, al
je 0x412348
mov eax, dword [ebp - 0x20]
mov dword [0x41b174], eax
mov eax, dword [ebp - 0x24]
mov dword [0x41b170], eax
mov esi, eax
mov ecx, dword [ebp - 0x28]
mov edx, esi
mov dword [0x41b180], esi
mov eax, dword [ebp - 0x20]
sub edx, ecx
mov dword [0x41b154], ecx
mov dword [0x41b164], edx
movzx edx, byte [esi]
movsx eax, word [eax + eax + 0x419500]
mov byte [esi], 0
mov byte [0x41b188], dl
cmp eax, 0x11
ja case.default.0x412341
jmp dword [eax*4 + 0x418c28]
mov eax, dword [0x41b174]
mov esi, dword [0x41b170]
mov dword [ebp - 0x20], eax
jmp 0x412308
xor eax, eax
add esp, 0x3c
pop ebx
pop esi
pop edi
pop ebp
ret
call fcn.00411ce0
mov edx, dword [0x41b194]
mov dword [esp + 4], 0x4000
mov eax, dword [0x41b18c]
lea ebx, [eax + edx*4]
mov eax, dword [0x41b160]
mov dword [esp], eax
call fcn.00412050
mov edx, dword [0x41b194]
mov dword [ebx], eax
mov eax, dword [0x41b18c]
lea edx, [eax + edx*4]
mov eax, dword [edx]
jmp 0x4121ce
mov ebx, dword [0x41b16c]
mov dword [ebp - 0x24], esi
mov eax, dword [ebx + 0x88]
test eax, eax
jne 0x412633
cmp dword [ebx + 0x10c], 0x1f
ja 0x412846
mov eax, dword [ebx]
mov dword [esp], eax
call dword [sym.imp.ucrtbase.dll_strlen]
mov esi, dword [ebx + 0x10c]
add eax, 1
mov dword [esp], eax
call dword [sym.imp.ucrtbase.dll_malloc]
mov dword [0x41b178], 3
mov dword [ebx + esi*4 + 0x8c], eax
add esi, 1
mov dword [ebx + 4], eax
mov dword [ebx + 0x10c], esi
mov dword [0x41b14c], eax
mov eax, dword [0x41b154]
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 0x4122c8
mov dword [esp + 8], 0x55
mov dword [esp + 4], str..._.._wine_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 0x4122c8
mov edx, dword [0x41b16c]
mov dword [ebp - 0x24], esi
mov eax, dword [edx + 4]
lea ecx, [eax + 1]
mov dword [edx + 4], ecx
mov edx, dword [0x41b154]
movzx edx, byte [edx + 1]
mov byte [eax], dl
jmp 0x4122c8
mov dword [ebp - 0x24], esi
mov esi, dword [0x41b180]
movzx eax, byte [0x41b188]
mov dword [ebp - 0x1c], esi
jmp 0x4122d7
mov eax, dword [0x41b154]
movsx eax, byte [eax]
add esp, 0x3c
pop ebx
pop esi
pop edi
pop ebp
ret
mov eax, dword [0x41b15c]
mov dword [ebp - 0x24], esi
mov dword [esp + 8], 1
mov dword [esp + 0xc], eax
mov eax, dword [0x41b164]
mov dword [esp + 4], eax
mov eax, dword [0x41b154]
mov dword [esp], eax
call dword [sym.imp.ucrtbase.dll_fwrite]
jmp 0x4122c8
mov eax, esi
sub eax, dword [0x41b154]
mov ecx, dword [0x41b194]
mov edx, dword [0x41b184]
sub eax, 1
mov dword [ebp - 0x34], eax
movzx eax, byte [0x41b188]
mov byte [esi], al
mov eax, dword [0x41b18c]
lea ebx, [eax + ecx*4]
mov dword [ebp - 0x24], eax
mov edi, dword [ebx]
mov eax, dword [edi + 0x2c]
test eax, eax
jne 0x412517
mov eax, dword [0x41b160]
mov edx, dword [edi + 0x10]
mov dword [edi], eax
mov eax, dword [ebx]
mov dword [0x41b184], edx
mov dword [eax + 0x2c], 1
mov edi, dword [ebx]
mov eax, dword [edi + 4]
mov dword [ebp - 0x30], eax
mov eax, dword [0x41b180]
mov dword [ebp - 0x1c], eax
mov eax, dword [0x41b154]
mov dword [ebp - 0x2c], eax
mov eax, dword [ebp - 0x30]
add eax, edx
cmp dword [ebp - 0x1c], eax
jbe 0x4128f8
mov eax, dword [ebp - 0x30]
lea edx, [eax + edx + 1]
cmp dword [ebp - 0x1c], edx
ja 0x412990
mov edx, dword [ebp - 0x1c]
mov eax, dword [edi + 0x28]
sub edx, dword [ebp - 0x2c]
mov dword [ebp - 0x38], edx
test eax, eax
jne 0x412687
cmp edx, 1
je 0x4127f9
mov eax, dword [ebp - 0x24]
mov edx, dword [eax + ecx*4]
mov eax, dword [0x41b184]
add eax, dword [edx + 4]
mov esi, eax
mov dword [0x41b180], eax
call fcn.00411910
mov dword [ebp - 0x20], eax
mov eax, dword [0x41b154]
mov dword [ebp - 0x28], eax
jmp 0x412308
movzx eax, byte [0x41b188]
mov byte [esi], al
mov eax, dword [0x41b174]
mov esi, dword [0x41b170]
mov dword [ebp - 0x20], eax
jmp 0x412308
mov dword [esp + 8], 0xa
mov eax, dword [0x41b154]
mov dword [esp + 4], 0
mov dword [esp], eax
call dword [sym.imp.ucrtbase.dll_strtol]
mov dword [0x41b148], eax
add esp, 0x3c
mov eax, 3
pop ebx
pop esi
pop edi
pop ebp
ret
mov dword [esp + 8], 0x10
jmp 0x4125b6
mov eax, dword [0x41b154]
mov dword [esp + 4], 0x41b140
mov dword [esp], eax
call fcn.0040d070
add esp, 0x3c
pop ebx
pop esi
pop edi
pop ebp
ret
mov dword [esp], 0
call dword [sym.imp.ucrtbase.dll___acrt_iob_func]
mov dword [0x41b160], eax
jmp 0x4121a1
mov dword [esp], 1
call dword [sym.imp.ucrtbase.dll___acrt_iob_func]
mov dword [0x41b15c], eax
jmp 0x4121ae
mov edx, dword [0x41b154]
movzx ecx, byte [edx]
cmp cl, 0x22
je 0x41266a
cmp cl, 0x60
je 0x412674
lea ecx, [eax - 1]
mov dword [ebx + 0x88], ecx
test ecx, ecx
je 0x412970
mov eax, dword [ebx + 4]
lea ecx, [eax + 1]
mov dword [ebx + 4], ecx
movzx edx, byte [edx]
mov byte [eax], dl
jmp 0x4122c8
cmp dword [ebx + eax*4 + 4], 0x22
lea ecx, [eax - 1]
je 0x412649
mov ecx, dword [ebx + 4]
lea eax, [ecx + 1]
mov dword [ebx + 4], eax
movzx eax, byte [edx]
mov byte [ecx], al
jmp 0x412404
mov eax, dword [ebp - 0x38]
lea ecx, [eax - 1]
test ecx, ecx
mov dword [ebp - 0x1c], ecx
jle 0x4126b2
mov eax, dword [ebp - 0x30]
mov edi, ebx
mov edx, dword [ebp - 0x2c]
add ecx, eax
movzx ebx, byte [edx]
add eax, 1
add edx, 1
mov byte [eax - 1], bl
cmp eax, ecx
jne 0x41269e
mov ebx, edi
mov edi, dword [edi]
cmp dword [edi + 0x2c], 2
je 0x41286e
mov eax, dword [edi + 0xc]
sub eax, dword [ebp - 0x1c]
cmp eax, 1
jne 0x412743
mov dword [ebp - 0x2c], esi
jmp 0x412709
mov eax, dword [edi + 0xc]
mov edx, eax
shr edx, 3
add edx, eax
add eax, eax
cmove eax, edx
mov dword [edi + 0xc], eax
add eax, 2
mov dword [esp + 4], eax
mov dword [esp], ecx
call dword [sym.imp.ucrtbase.dll_realloc]
mov dword [edi + 4], eax
test eax, eax
je 0x41272d
mov edi, dword [ebx]
add eax, esi
mov dword [0x41b180], eax
mov eax, dword [edi + 0xc]
sub eax, dword [ebp - 0x1c]
cmp eax, 1
jne 0x412740
mov ecx, dword [ebp - 0x24]
test ecx, ecx
je 0x4141c4
mov ecx, dword [edi + 4]
mov esi, dword [0x41b180]
mov edx, dword [edi + 0x14]
sub esi, ecx
test edx, edx
jne 0x4126cc
mov dword [edi + 4], 0
mov dword [esp], str.fatal_error___scanner_input_buffer_overflow
call fcn.00411ca0
lea esi, [esi]
mov esi, dword [ebp - 0x2c]
mov edx, dword [0x41b16c]
xor ecx, ecx
mov eax, dword [edx]
cmp byte [eax], 0
setne cl
mov dword [0x41b184], ecx
je 0x41281a
lea ecx, [eax + 1]
mov dword [ebp - 0x24], 0
mov dword [edx], ecx
movzx edx, byte [eax]
mov eax, dword [ebx]
mov ecx, dword [ebp - 0x38]
mov eax, dword [eax + 4]
mov byte [eax + ecx - 1], dl
mov eax, dword [ebx]
mov dword [eax + 0x10], 1
mov eax, 1
mov edi, dword [ebp - 0x1c]
mov ecx, dword [ebx]
add edi, eax
mov edx, dword [ecx + 4]
cmp edi, dword [ecx + 0xc]
ja 0x412881
mov byte [edx + edi], 0
mov eax, dword [ebx]
mov dword [0x41b184], edi
mov eax, dword [eax + 4]
mov byte [eax + edi + 1], 0
mov eax, dword [ebx]
mov eax, dword [eax + 4]
mov dword [ebp - 0x2c], eax
mov dword [0x41b154], eax
mov eax, dword [ebp - 0x24]
cmp eax, 1
je 0x4127f9
cmp eax, 2
je 0x4128b8
mov edx, dword [ebp - 0x2c]
mov dword [ebp - 0x24], esi
add edx, dword [ebp - 0x34]
mov dword [ebp - 0x1c], edx
mov dword [0x41b180], edx
call fcn.00411910
mov edi, eax
mov eax, dword [0x41b154]
mov dword [ebp - 0x28], eax
mov eax, dword [ebp - 0x1c]
movzx eax, byte [eax]
jmp 0x412208
mov eax, dword [ebp - 0x2c]
mov dword [0x41b180], eax
mov eax, dword [0x41b178]
lea edx, [eax - 1]
mov eax, edx
shr eax, 0x1f
add eax, edx
sar eax, 1
add eax, 0x10
jmp 0x412338
mov dword [edi + 0x10], 0
mov eax, dword [ebp - 0x1c]
test eax, eax
je 0x4128cb
mov eax, dword [ebx]
mov dword [ebp - 0x24], 2
mov dword [eax + 0x2c], 2
mov eax, dword [0x41b184]
jmp 0x412788
mov dword [esp + 8], 0x4d
mov dword [esp + 4], str..._.._wine_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 [0x41b16c]
jmp 0x4123c5
mov dword [0x41b184], 0
mov dword [edi + 0x10], 0
jmp 0x412821
shr eax, 1
mov dword [ebp - 0x1c], ecx
add eax, edi
mov dword [esp], edx
mov dword [esp + 4], eax
call dword [sym.imp.ucrtbase.dll_realloc]
mov ecx, dword [ebp - 0x1c]
mov dword [ecx + 4], eax
mov eax, dword [ebx]
mov edx, dword [eax + 4]
test edx, edx
jne 0x41279b
mov dword [esp], str.out_of_dynamic_memory_in_yy_get_next_buffer__
call fcn.00411ca0
lea esi, [esi]
mov eax, dword [0x41b18c]
mov ecx, dword [0x41b194]
mov dword [ebp - 0x24], eax
jmp 0x412568
mov eax, dword [0x41b160]
mov dword [esp], eax
call fcn.004120b0
mov ecx, dword [0x41b194]
mov dword [ebp - 0x24], 1
mov ebx, dword [0x41b18c]
mov eax, dword [0x41b184]
lea ebx, [ebx + ecx*4]
jmp 0x412788
mov ebx, dword [ebp - 0x2c]
add ebx, dword [ebp - 0x34]
mov dword [0x41b180], ebx
call fcn.00411910
cmp word [eax + eax + 0x419500], 0
je 0x412930
mov dword [0x41b174], eax
mov dword [0x41b170], ebx
jmp 0x412930
movsx eax, word [eax + eax + 0x419000]
movsx edx, word [eax + eax + 0x419060]
movsx ecx, word [edx + edx + 0x418ec2]
cmp eax, ecx
jne 0x412928
mov eax, dword [0x41b154]
movsx edi, word [edx + edx + 0x418f62]
mov dword [ebp - 0x28], eax
cmp edi, 0x1b
je 0x41295d
test edi, edi
jne 0x4129ac
mov eax, dword [0x41b174]
mov esi, dword [0x41b170]
mov dword [ebp - 0x20], eax
jmp 0x412308
mov dword [0x41b178], 1
mov eax, dword [ebx + 4]
lea edx, [eax + 1]
mov dword [ebx + 4], edx
mov byte [eax], 0
mov eax, 4
jmp 0x41235a
mov dword [esp], str.fatal_flex_scanner_internal_error__end_of_buffer_missed
call fcn.00411ca0
lea esi, [esi]
mov dword [esp], str.fatal_flex_scanner_internal_error__no_action_found
call fcn.00411ca0
lea eax, [ebx + 1]
mov dword [ebp - 0x24], esi
mov dword [ebp - 0x1c], eax
mov dword [0x41b180], eax
jmp 0x4127ee
mov eax, dword [4]
ud2