Function at 0x412090
Capabilities:
Write file on windows

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
push ebx
sub esp, 0x2c
mov edx, dword [0x41b17c]
test edx, edx
je 0x4121e2
mov ebx, dword [0x41b180]
movzx esi, byte [0x41b188]
mov ecx, dword [0x41b178]
movzx edx, word [ecx + ecx + 0x419260]
movzx eax, word [ecx + ecx + 0x419100]
mov edi, edx
mov edx, eax
mov eax, esi
mov byte [ebx], al
mov esi, edi
mov dword [ebp - 0x1c], ebx
xor edi, edi
mov word [ebp - 0x18], dx
lea esi, [esi]
test si, si
mov esi, dword [ebp - 0x10]
mov edx, 1
cmovne edi, edx
movzx eax, byte [ebx]
cmovne esi, ecx
mov dword [ebp - 0x10], esi
mov esi, dword [ebp - 0x14]
cmovne esi, ebx
mov dword [ebp - 0x14], esi
movzx esi, byte [eax + 0x419160]
movsx eax, word [ebp - 0x18]
add eax, esi
movsx edx, word [eax + eax + 0x418f60]
cmp edx, ecx
je 0x41214b
lea esi, [esi]
movsx ecx, word [ecx + ecx + 0x4190a0]
cmp cx, 0x1b
mov edx, ecx
jle 0x412137
movzx esi, byte [esi + 0x419144]
movsx eax, word [ecx + ecx + 0x419100]
add eax, esi
cmp dx, word [eax + eax + 0x418f60]
jne 0x412120
movsx ecx, word [eax + eax + 0x419000]
add ebx, 1
cmp ecx, 0x1b
je 0x412178
movzx eax, word [ecx + ecx + 0x419100]
movzx esi, word [ecx + ecx + 0x419260]
mov word [ebp - 0x18], ax
jmp 0x4120e0
mov eax, edi
test al, al
je 0x4121cf
mov eax, dword [ebp - 0x10]
mov esi, dword [ebp - 0x14]
mov ebx, dword [ebp - 0x1c]
mov dword [0x41b174], eax
mov dword [0x41b170], esi
mov eax, dword [ebp - 0x10]
mov edx, esi
mov dword [0x41b154], ebx
sub edx, ebx
mov dword [0x41b180], esi
mov dword [0x41b164], edx
movzx edx, byte [esi]
mov byte [esi], 0
movsx eax, word [eax + eax + 0x419260]
mov byte [0x41b188], dl
cmp eax, 0x11
ja case.default.0x4121c8
jmp dword [eax*4 + 0x418cb0]
mov eax, dword [0x41b174]
mov esi, dword [0x41b170]
mov ebx, dword [ebp - 0x1c]
mov dword [ebp - 0x10], eax
jmp 0x412192
mov eax, dword [0x41b178]
mov dword [0x41b17c], 1
test eax, eax
jne 0x4121ff
mov dword [0x41b178], 1
mov eax, dword [0x41b160]
test eax, eax
je 0x412562
mov eax, dword [0x41b15c]
test eax, eax
je 0x412579
mov eax, dword [0x41b18c]
test eax, eax
je 0x41225e
mov edx, dword [0x41b194]
lea edx, [eax + edx*4]
mov eax, dword [edx]
test eax, eax
je 0x41225e
mov ebx, dword [eax + 8]
mov ecx, dword [eax + 0x10]
mov dword [0x41b154], ebx
mov eax, dword [edx]
mov dword [0x41b184], ecx
mov eax, dword [eax]
mov dword [0x41b160], eax
movzx esi, byte [ebx]
jmp 0x4120b4
xor eax, eax
add esp, 0x2c
pop ebx
pop esi
pop edi
pop ebp
ret
call fcn.00411c20
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.00411f80
mov edx, dword [0x41b194]
mov dword [ebx], eax
mov eax, dword [0x41b18c]
lea edx, [eax + edx*4]
mov eax, dword [edx]
jmp 0x412231
mov ebx, dword [0x41b16c]
mov dword [ebp - 0x14], esi
mov eax, dword [ebx + 0x88]
test eax, eax
jne 0x412658
mov esi, dword [ebx + 0x10c]
cmp esi, 0x1f
ja 0x412968
mov eax, dword [ebx]
xor edi, edi
mov dword [esp], eax
call dword [sym.imp.ucrtbase.dll_strlen]
add eax, 1
mov dword [esp], eax
call dword [sym.imp.ucrtbase.dll_malloc]
mov edx, 0xd
mov ecx, 3
mov dword [0x41b178], 3
mov dword [ebx + esi*4 + 0x8c], eax
add esi, 1
mov dword [ebx + 4], eax
mov dword [0x41b14c], eax
mov eax, dword [0x41b154]
mov dword [ebx + 0x10c], esi
movsx eax, byte [eax]
mov dword [ebx + 0x88], 1
mov dword [ebx + 8], eax
mov ebx, dword [0x41b180]
movzx eax, byte [0x41b188]
jmp 0x4120d0
mov edx, dword [0x41b16c]
mov dword [ebp - 0x14], 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 ecx, dword [0x41b178]
movzx edi, word [ecx + ecx + 0x419260]
movzx edx, word [ecx + ecx + 0x419100]
jmp 0x41231a
mov edx, dword [0x41b16c]
mov dword [ebp - 0x14], 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
mov ecx, dword [0x41b178]
movzx edi, word [ecx + ecx + 0x419260]
movzx edx, word [ecx + ecx + 0x419100]
jmp 0x41231a
mov ecx, dword [0x41b178]
mov dword [ebp - 0x14], esi
movzx eax, byte [0x41b188]
mov ebx, dword [0x41b180]
movzx edi, word [ecx + ecx + 0x419260]
movzx edx, word [ecx + ecx + 0x419100]
jmp 0x4120d0
mov eax, dword [0x41b154]
movsx eax, byte [eax]
add esp, 0x2c
pop ebx
pop esi
pop edi
pop ebp
ret
mov eax, dword [0x41b15c]
mov dword [ebp - 0x14], 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]
mov ecx, dword [0x41b178]
movzx edi, word [ecx + ecx + 0x419260]
movzx edx, word [ecx + ecx + 0x419100]
jmp 0x41231a
mov eax, esi
sub eax, dword [0x41b154]
mov edx, dword [0x41b194]
sub eax, 1
mov dword [ebp - 0x24], eax
movzx eax, byte [0x41b188]
mov byte [esi], al
mov eax, dword [0x41b18c]
lea eax, [eax + edx*4]
mov edx, dword [0x41b184]
mov edi, dword [eax]
mov dword [ebp - 0x14], eax
mov eax, dword [edi + 0x2c]
test eax, eax
jne 0x41246d
mov eax, dword [0x41b160]
mov edx, dword [edi + 0x10]
mov dword [edi], eax
mov edi, dword [ebp - 0x14]
mov dword [0x41b184], edx
mov eax, dword [edi]
mov dword [eax + 0x2c], 1
mov edi, dword [edi]
mov eax, dword [edi + 4]
lea ecx, [eax + edx]
mov dword [ebp - 0x20], eax
mov eax, dword [0x41b154]
mov dword [ebp - 0x18], ecx
mov ecx, dword [0x41b180]
mov dword [ebp - 0x1c], eax
cmp dword [ebp - 0x18], ecx
jae 0x4128e2
mov eax, dword [ebp - 0x20]
lea edx, [eax + edx + 1]
cmp edx, ecx
jb 0x412995
mov eax, dword [ebp - 0x1c]
mov edx, ecx
sub edx, eax
mov eax, dword [edi + 0x28]
mov dword [ebp - 0x28], edx
test eax, eax
jne 0x412590
cmp edx, 1
je 0x4127b0
mov esi, dword [ebp - 0x18]
mov dword [0x41b180], esi
call fcn.00411830
mov ebx, dword [0x41b154]
mov dword [ebp - 0x10], eax
jmp 0x412192
movzx eax, byte [0x41b188]
mov byte [esi], al
mov eax, dword [0x41b174]
mov esi, dword [0x41b170]
mov dword [ebp - 0x10], eax
jmp 0x412192
mov eax, dword [0x41b154]
mov dword [esp + 8], 0xa
mov dword [esp + 4], 0
mov dword [esp], eax
call dword [sym.imp.ucrtbase.dll_strtol]
mov dword [0x41b148], eax
add esp, 0x2c
mov eax, 3
pop ebx
pop esi
pop edi
pop ebp
ret
mov eax, dword [0x41b154]
mov dword [esp + 8], 0x10
mov dword [esp + 4], 0
mov dword [esp], eax
call dword [sym.imp.ucrtbase.dll_strtol]
jmp 0x412513
mov eax, dword [0x41b154]
mov dword [esp + 4], 0x41b140
mov dword [esp], eax
call fcn.0040d0c0
add esp, 0x2c
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 0x41220c
mov dword [esp], 1
call dword [sym.imp.ucrtbase.dll___acrt_iob_func]
mov dword [0x41b15c], eax
jmp 0x412219
mov eax, dword [ebp - 0x28]
lea edx, [eax - 1]
test edx, edx
mov eax, edx
mov dword [ebp - 0x18], edx
jle 0x412889
mov edi, eax
mov eax, dword [ebp - 0x20]
mov edx, dword [ebp - 0x1c]
mov dword [ebp - 0x1c], ecx
add edi, eax
movzx ecx, byte [edx]
add eax, 1
add edx, 1
mov byte [eax - 1], cl
cmp eax, edi
jne 0x4125b0
mov eax, dword [ebp - 0x14]
mov ecx, dword [ebp - 0x1c]
mov edi, dword [eax]
cmp dword [edi + 0x2c], 2
je 0x41280f
mov eax, dword [edi + 0xc]
mov edx, dword [ebp - 0x18]
sub eax, edx
cmp eax, 1
jne 0x4126e7
mov dword [ebp - 0x20], esi
mov esi, dword [ebp - 0x14]
mov dword [ebp - 0x1c], ebx
jmp 0x412632
mov edx, dword [edi + 0xc]
mov ecx, 2
test edx, edx
je 0x4125ff
add edx, edx
lea ecx, [edx + 2]
mov dword [edi + 0xc], edx
mov dword [esp + 4], ecx
mov dword [esp], eax
call dword [sym.imp.ucrtbase.dll_realloc]
mov dword [edi + 4], eax
test eax, eax
je 0x412647
mov edi, dword [esi]
lea ecx, [eax + ebx]
mov ebx, dword [ebp - 0x18]
mov dword [0x41b180], ecx
mov eax, dword [edi + 0xc]
sub eax, ebx
cmp eax, 1
jne 0x4126e1
mov ebx, ecx
mov eax, dword [edi + 4]
mov ecx, dword [edi + 0x14]
sub ebx, eax
test ecx, ecx
jne 0x4125ee
mov dword [edi + 4], 0
mov eax, str.fatal_error___scanner_input_buffer_overflow
call fcn.00411be0
lea esi, [esi]
mov edx, dword [0x41b154]
movzx ecx, byte [edx]
cmp cl, 0x22
je 0x41268a
cmp cl, 0x60
je 0x412694
lea ecx, [eax - 1]
mov dword [ebx + 0x88], ecx
test ecx, ecx
je 0x4128c2
mov eax, dword [ebx + 4]
lea ecx, [eax + 1]
mov dword [ebx + 4], ecx
jmp 0x412344
cmp dword [ebx + eax*4 + 4], 0x22
lea ecx, [eax - 1]
je 0x41266e
mov ecx, dword [ebx + 4]
lea eax, [ecx + 1]
mov dword [ebx + 4], eax
movzx eax, byte [edx]
mov byte [ecx], al
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
ja 0x41299f
mov ecx, dword [0x41b178]
movzx edi, word [ecx + ecx + 0x419260]
movzx edx, word [ecx + ecx + 0x419100]
jmp 0x41231a
mov ebx, dword [ebp - 0x1c]
mov esi, dword [ebp - 0x20]
mov edx, dword [0x41b16c]
xor ecx, ecx
mov eax, dword [edx]
cmp byte [eax], 0
setne cl
mov dword [0x41b184], ecx
je 0x4127d1
mov edi, dword [ebp - 0x14]
lea ecx, [eax + 1]
mov dword [ebp - 0x20], 0
mov dword [edx], ecx
movzx edx, byte [eax]
mov ecx, dword [ebp - 0x28]
mov eax, dword [edi]
mov eax, dword [eax + 4]
mov byte [eax + ecx - 1], dl
mov eax, dword [edi]
mov dword [eax + 0x10], 1
mov eax, 1
mov ecx, dword [ebp - 0x14]
mov edi, dword [ebp - 0x18]
mov edx, dword [ecx]
add edi, eax
mov ecx, dword [edx + 4]
cmp dword [edx + 0xc], edi
jb 0x41283d
mov eax, dword [edx + 4]
mov dword [0x41b184], edi
mov ecx, dword [ebp - 0x14]
mov edx, dword [ebp - 0x20]
mov byte [eax + edi], 0
mov eax, dword [ecx]
mov eax, dword [eax + 4]
mov byte [eax + edi + 1], 0
mov eax, dword [ecx]
mov ecx, dword [eax + 4]
mov dword [ebp - 0x1c], ecx
mov dword [0x41b154], ecx
cmp edx, 1
je 0x4127b0
cmp edx, 2
je 0x412879
mov ebx, dword [ebp - 0x24]
mov dword [ebp - 0x14], esi
add ebx, ecx
mov dword [0x41b180], ebx
call fcn.00411830
mov ecx, eax
mov eax, dword [0x41b154]
mov dword [ebp - 0x1c], eax
movzx esi, word [ecx + ecx + 0x419260]
movzx edx, word [ecx + ecx + 0x419100]
jmp 0x4120d7
mov eax, dword [ebp - 0x1c]
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 0x4121bf
mov dword [edi + 0x10], 0
mov edx, dword [ebp - 0x18]
test edx, edx
jne 0x412820
mov eax, dword [0x41b160]
mov dword [esp], eax
call fcn.00411fe0
mov ecx, dword [0x41b194]
mov dword [ebp - 0x20], 1
mov edx, dword [0x41b18c]
mov eax, dword [0x41b184]
lea edi, [edx + ecx*4]
mov dword [ebp - 0x14], edi
jmp 0x41272f
mov dword [0x41b184], 0
mov dword [edi + 0x10], 0
mov eax, dword [ebp - 0x14]
mov dword [ebp - 0x20], 2
mov eax, dword [eax]
mov dword [eax + 0x2c], 2
mov eax, dword [0x41b184]
jmp 0x41272f
shr eax, 1
mov dword [ebp - 0x1c], edx
add eax, edi
mov dword [esp], ecx
mov dword [ebp - 0x18], eax
mov dword [esp + 4], eax
call dword [sym.imp.ucrtbase.dll_realloc]
mov edx, dword [ebp - 0x1c]
mov dword [edx + 4], eax
mov eax, dword [ebp - 0x14]
mov edx, dword [eax]
mov eax, dword [edx + 4]
test eax, eax
je 0x4128a9
mov eax, dword [ebp - 0x18]
sub eax, 2
mov dword [edx + 0xc], eax
mov eax, dword [ebp - 0x14]
mov edx, dword [eax]
jmp 0x412745
mov eax, dword [ebp - 0x14]
mov eax, dword [eax]
add edi, dword [eax + 4]
mov dword [ebp - 0x18], edi
jmp 0x4124bd
cmp dword [edi + 0x2c], 2
jne 0x4125d2
mov dword [0x41b184], 0
mov dword [edi + 0x10], 0
jmp 0x4127d8
mov eax, str.out_of_dynamic_memory_in_yy_get_next_buffer__
call fcn.00411be0
lea esi, [esi]
nop
mov eax, str.fatal_flex_scanner_internal_error__no_action_found
call fcn.00411be0
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 0x412256
mov edi, dword [ebp - 0x24]
add edi, eax
mov dword [0x41b180], edi
call fcn.00411830
cmp word [eax + eax + 0x419260], 0
je 0x412908
mov dword [0x41b174], eax
mov dword [0x41b170], edi
movsx ecx, word [eax + eax + 0x419100]
lea edx, [ecx + 1]
movsx ecx, word [ecx + ecx + 0x418f62]
cmp ecx, eax
je 0x41293e
movsx eax, word [eax + eax + 0x4190a0]
movsx ecx, word [eax + eax + 0x419100]
lea edx, [ecx + 1]
movsx ecx, word [ecx + ecx + 0x418f62]
cmp eax, ecx
jne 0x41291f
movsx ecx, word [edx + edx + 0x419000]
mov ebx, dword [0x41b154]
cmp ecx, 0x1b
je 0x412955
test ecx, ecx
jne 0x412985
mov eax, dword [0x41b174]
mov esi, dword [0x41b170]
mov dword [ebp - 0x10], eax
jmp 0x412192
mov dword [esp + 8], 0x4d
mov dword [esp + 4], str._Users_gcenx_Documents_GitHub_old_codeweavers_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 dword [ebp - 0x1c], ebx
mov ebx, edi
mov dword [ebp - 0x14], esi
add ebx, 1
jmp 0x41279b
mov eax, str.fatal_flex_scanner_internal_error__end_of_buffer_missed
call fcn.00411be0
mov dword [esp + 8], 0x55
mov dword [esp + 4], str._Users_gcenx_Documents_GitHub_old_codeweavers_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]
lea esi, [esi]