Function at 0x4043f0
Capabilities:
Resolve function by parsing pe exports

Disassembly:
push edi
mov edx, 0x20
lea edi, [esp + 8]
and esp, 0xfffffff0
push dword [edi - 4]
push ebp
mov ebp, esp
push edi
mov edi, eax
push esi
push ebx
sub esp, 0x5c
mov eax, dword [eax + 0x34]
mov word [ebp - 0x2e], dx
cmp eax, 0x504030
je 0x404780
ja 0x404470
mov edx, eax
and edx, 0xfffffffb
cmp edx, 0x504028
je 0x404498
test eax, eax
jne 0x404477
mov esi, dword [edi + 0x1c]
test esi, esi
je 0x40445b
mov ebx, dword [edi + 0x24]
test ebx, ebx
jne 0x40445b
mov dword [esp], 0
xor ecx, ecx
mov edx, 0x103
mov eax, edi
mov dword [esp + 4], 1
call sym._read_complete
lea esp, [ebp - 0xc]
xor eax, eax
pop ebx
pop esi
pop edi
pop ebp
lea esp, [edi - 8]
pop edi
ret
cmp eax, 0x504060
je 0x404498
mov dword [esp + 8], 0x4fe
mov dword [esp + 4], str..._programs_conhost_conhost.c
mov dword [esp], str._console__read_ioctl
call dword [sym.imp.ucrtbase.dll__assert]
lea esi, [esi]
mov eax, dword [edi + 0x44]
mov edx, dword [edi + 0x3c]
mov dword [edi + 0x6c], 0
xor esi, esi
mov dword [ebp - 0x44], 0
add eax, 1
mov dword [edi + 0x68], eax
mov eax, dword [edi + 0x1c]
mov ebx, eax
test eax, eax
jne 0x404504
jmp 0x4046dc
and eax, 0xa0
cmp eax, 0xa0
sete al
movzx eax, al
xor eax, dword [edi + 0x60]
mov dword [edi + 0x64], eax
test cx, cx
jne 0x404632
mov edx, dword [edi + 0x3c]
cmp edx, 0x103
je 0x4046a5
mov ebx, dword [edi + 0x1c]
add esi, 1
cmp ebx, esi
jbe 0x4046d8
mov ecx, dword [edi + 0x18]
lea eax, [esi + esi*4]
lea eax, [ecx + eax*4]
cmp edx, 0x103
jne 0x404cb0
mov ecx, dword [eax]
mov dword [ebp - 0x2c], ecx
mov ecx, dword [eax + 4]
cmp word [ebp - 0x2c], 1
mov dword [ebp - 0x28], ecx
mov ecx, dword [eax + 8]
mov dword [ebp - 0x24], ecx
mov ecx, dword [eax + 0xc]
mov dword [ebp - 0x20], ecx
mov eax, dword [eax + 0x10]
mov dword [ebp - 0x1c], eax
jne 0x4044f9
mov ecx, dword [ebp - 0x28]
test ecx, ecx
je 0x4044f9
movzx ecx, word [ebp - 0x1e]
test byte [0x413058], 8
jne 0x4047a8
mov eax, dword [edi + 4]
mov dword [ebp - 0x34], eax
test al, 2
je 0x4044c8
mov eax, dword [edi + 0x7c]
mov ebx, dword [ebp - 0x1c]
test eax, eax
je 0x404598
lea edx, [ecx - 1]
cmp dx, 0x1e
ja 0x404598
bt eax, ecx
movzx edx, cx
jb 0x404dc7
cmp cx, 0xa
jne 0x404598
mov edx, dword [edi + 0x3c]
mov ebx, dword [edi + 0x1c]
jmp 0x4044f9
mov eax, dword [edi + 0xa0]
mov edx, 0x414a60
mov dword [ebp - 0x38], esi
mov dword [ebp - 0x3c], edi
test eax, eax
mov eax, 0x414960
cmove edx, eax
and ebx, 0xfffffe1f
mov eax, 0x414c00
mov dword [ebp - 0x40], ebx
movzx ebx, word [ebp - 0x22]
mov edi, dword [ebp - 0x40]
lea esi, [esi]
nop
cmp dword [edx], edi
jne 0x404600
cmp dword [edx + 4], 0
mov esi, dword [eax + 4]
jne 0x404648
test esi, esi
jne 0x4045f2
jmp 0x404600
mov esi, dword [eax + 0xc]
add eax, 8
test esi, esi
je 0x404600
cmp word [eax], bx
jne 0x4045e8
mov eax, dword [eax + 4]
test eax, eax
jne 0x404666
nop
mov eax, dword [edx + 0x14]
add edx, 0xc
test eax, eax
jne 0x4045d0
mov eax, dword [ebp - 0x34]
mov edi, dword [ebp - 0x3c]
mov esi, dword [ebp - 0x38]
and eax, 0xa0
cmp eax, 0xa0
sete al
movzx eax, al
xor eax, dword [edi + 0x60]
mov dword [edi + 0x64], eax
test cx, cx
je 0x404588
mov ecx, 1
lea edx, [ebp - 0x1e]
mov eax, edi
call sym._edit_line_insert.part.0
jmp 0x40468c
test esi, esi
jne 0x40465a
jmp 0x404600
mov esi, dword [eax + 0xc]
add eax, 8
test esi, esi
je 0x404600
cmp cx, word [eax]
jne 0x404650
mov eax, dword [eax + 4]
test eax, eax
je 0x404600
mov edx, dword [ebp - 0x34]
mov edi, dword [ebp - 0x3c]
mov esi, dword [ebp - 0x38]
and edx, 0xa0
cmp edx, 0xa0
sete dl
movzx edx, dl
xor edx, dword [edi + 0x60]
mov dword [edi + 0x64], edx
mov dword [esp], edi
call eax
mov edx, dword [edi + 0x3c]
test byte [edi + 4], 2
jne 0x4044f6
cmp edx, 0x103
jne 0x4044f6
cmp dword [edi + 0x34], 0x50402c
mov ecx, dword [edi + 0x44]
je 0x404f03
mov eax, dword [edi + 0x38]
shr eax, 1
cmp eax, ecx
ja 0x4044f6
mov dword [edi + 0x3c], 0
mov ebx, dword [edi + 0x1c]
xor edx, edx
jmp 0x4044f9
mov eax, ebx
sub eax, esi
mov dword [edi + 0x1c], eax
mov eax, dword [edi + 4]
mov ecx, eax
and ecx, 4
cmp edx, 0x103
je 0x404c80
test ecx, ecx
jne 0x4048fe
test edx, edx
je 0x4047f0
mov esi, dword [edi + 0x40]
mov ecx, dword [edi + 0x44]
mov ebx, dword [sym.imp.ucrtbase.dll_free]
mov eax, dword [edi + 0x48]
mov edx, dword [edi + 0x3c]
mov dword [edi + 0x28], esi
mov dword [edi + 0x2c], ecx
mov dword [edi + 0x30], eax
test edx, edx
je 0x404c68
mov eax, dword [edi + 0x1c]
mov dword [esp], 0
xor ecx, ecx
mov dword [esp + 4], eax
mov eax, edi
call sym._read_complete
mov eax, dword [edi + 0x50]
mov dword [esp], eax
call ebx
mov eax, dword [edi + 0x5c]
mov dword [esp], eax
call ebx
mov dword [edi + 0x3c], 0
lea ecx, [edi + 0x3c]
add edi, 0x40
mov dword [edi + 0x3c], 0
and edi, 0xfffffffc
xor eax, eax
sub ecx, edi
add ecx, 0x44
shr ecx, 2
rep stosd dword es:[edi], eax
lea esp, [ebp - 0xc]
xor eax, eax
pop ebx
pop esi
pop edi
pop ebp
lea esp, [edi - 8]
pop edi
ret
mov eax, dword [edi + 0x1c]
test eax, eax
je 0x40445b
mov edx, dword [edi + 0x38]
mov eax, edi
call sym._read_console_input
lea esp, [ebp - 0xc]
xor eax, eax
pop ebx
pop esi
pop edi
pop ebp
lea esp, [edi - 8]
pop edi
ret
mov dword [esp + 0x1c], eax
movzx eax, word [ebp - 0x20]
mov dword [esp + 0x18], ecx
mov dword [esp + 0x14], eax
movzx eax, word [ebp - 0x22]
mov dword [esp + 0xc], str.key_code_02x_scan_02x_char_02x_state_08lx_n
mov dword [esp + 0x10], eax
mov dword [esp + 8], str.process_console_input
mov dword [esp + 4], 0x413058
mov dword [esp], 3
call sym._wine_dbg_log.constprop.0
movzx ecx, word [ebp - 0x1e]
jmp 0x404555
mov eax, dword [edi + 4]
test al, 2
je 0x404703
cmp word [ebp - 0x2e], 0x1f
jbe 0x404e44
mov esi, dword [edi + 0x44]
mov edx, dword [edi + 0x40]
mov ebx, dword [sym.imp.ucrtbase.dll_free]
test esi, esi
jne 0x404ffb
lea eax, [esi + 2]
cmp eax, dword [edi + 0x48]
jb 0x40484b
add esi, 0x22
mov dword [esp], edx
and esi, 0xffffffe0
lea eax, [esi + esi]
mov dword [esp + 4], eax
call dword [sym.imp.ucrtbase.dll_realloc]
mov edx, eax
test eax, eax
je 0x405224
mov dword [edi + 0x40], eax
mov dword [edi + 0x48], esi
mov esi, dword [edi + 0x44]
lea eax, [esi + 1]
mov dword [edi + 0x44], eax
mov eax, 0xd
mov word [edx + esi*2], ax
mov eax, dword [edi + 0x44]
xor esi, esi
mov edx, dword [edi + 0x40]
lea ecx, [eax + 1]
mov dword [edi + 0x44], ecx
mov ecx, 0xa
mov word [edx + eax*2], cx
mov edx, dword [edi + 0x44]
mov eax, dword [edi + 0x40]
mov word [eax + edx*2], si
mov ecx, dword [edi + 0x44]
mov esi, dword [edi + 0x40]
test byte [0x413058], 8
je 0x40470f
test esi, esi
je 0x4051ec
mov eax, esi
shr eax, 0x10
je 0x405155
mov dword [esp + 4], ecx
mov dword [ebp - 0x34], ecx
mov dword [esp], esi
call dword [sym.imp.kernel32.dll_IsBadStringPtrW]
mov edx, eax
sub esp, 8
mov eax, 0x414068
test edx, edx
jne 0x4048cb
mov ecx, dword [ebp - 0x34]
mov eax, esi
mov edx, ecx
call sym._wine_dbgstr_wn.part.0
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], str.return__s_n
mov dword [esp + 8], str.process_console_input
mov dword [esp + 4], 0x413058
mov dword [esp], 3
call sym._wine_dbg_log.constprop.0
mov esi, dword [edi + 0x40]
mov ecx, dword [edi + 0x44]
jmp 0x40470f
test edx, edx
jne 0x404910
cmp word [ebp - 0x2e], 0x20
mov dword [ebp - 0x40], 1
je 0x404917
mov dword [ebp - 0x40], 0
mov esi, dword [edi + 8]
mov eax, dword [esi + 0x10]
mov edx, dword [esi + 0x10]
mov dword [ebp - 0x34], eax
mov eax, dword [esi + 0xc]
mov dword [ebp - 0x28], edx
mov edx, dword [edi + 0x6c]
mov dword [ebp - 0x2c], eax
mov eax, dword [edi + 0x68]
mov dword [ebp - 0x24], 0
mov dword [ebp - 0x20], 0
cmp edx, eax
jb 0x404afe
test byte [0x413058], 8
jne 0x404f65
mov ebx, dword [esi]
mov eax, dword [ebx + 0x10cc]
test eax, eax
jne 0x404e1a
mov ecx, dword [edi + 0x40]
mov ebx, dword [edi + 0x68]
mov dword [ebp - 0x34], ecx
test ebx, ebx
je 0x4050f3
lea eax, [ebx - 1]
cmp eax, 6
jbe 0x405146
mov edx, ebx
pxor xmm4, xmm4
pxor xmm5, xmm5
mov eax, ecx
movdqu xmm3, xmmword [0x414c50]
shr edx, 3
movdqu xmm2, xmmword [0x414c60]
movdqu xmm1, xmmword [0x414c70]
shl edx, 4
add edx, ecx
nop
movdqu xmm0, xmmword [eax]
movdqu xmm6, xmm2
add eax, 0x10
psubusw xmm0, xmm3
pcmpeqw xmm0, xmm5
pand xmm6, xmm0
pandn xmm0, xmm1
por xmm0, xmm6
movdqu xmm6, xmm0
punpckhwd xmm0, xmm5
punpcklwd xmm6, xmm5
paddd xmm0, xmm6
paddd xmm4, xmm0
cmp eax, edx
jne 0x4049b0
movdqu xmm0, xmm4
mov eax, ebx
psrldq xmm0, 8
and eax, 0xfffffff8
paddd xmm4, xmm0
movdqu xmm0, xmm4
psrldq xmm0, 4
paddd xmm4, xmm0
movd ecx, xmm4
test bl, 7
je 0x404a2f
mov dword [ebp - 0x38], esi
mov esi, dword [ebp - 0x34]
lea esi, [esi]
cmp word [esi + eax*2], 0x20
sbb edx, edx
add eax, 1
not edx
lea ecx, [ecx + edx + 2]
cmp ebx, eax
ja 0x404a18
mov esi, dword [ebp - 0x38]
mov dword [ebp - 0x38], ecx
mov eax, dword [edi + 0x74]
mov ebx, dword [esi + 0xc]
xor edx, edx
add eax, ecx
div ebx
mov dword [esi + 0x1c], edx
mov eax, dword [edi + 0x74]
xor edx, edx
add eax, ecx
div ebx
add eax, dword [edi + 0x78]
mov dword [esi + 0x20], eax
mov ebx, dword [edi + 0x68]
mov edx, ebx
cmp ebx, dword [edi + 0x6c]
ja 0x4051f6
lea ecx, [edi + 0x78]
mov dword [ebp - 0x34], ecx
mov ecx, eax
jmp 0x404aaa
mov edx, 0x5e
mov eax, esi
call sym._write_char
mov edx, dword [edi + 0x40]
mov eax, dword [ebp - 0x34]
lea ecx, [ebp - 0x2c]
movzx edx, word [edx + ebx*2]
mov dword [esp], eax
mov eax, esi
add edx, 0x40
movzx edx, dx
call sym._write_char
add dword [ebp - 0x38], 2
add ebx, 1
mov edx, ebx
cmp dword [edi + 0x6c], ebx
jb 0x404ae4
mov ecx, dword [esi + 0x20]
mov edx, ebx
cmp dword [esi + 0x10], ecx
ja 0x404ab8
mov eax, dword [edi + 0x78]
test eax, eax
je 0x404ae4
cmp dword [edi + 0x44], ebx
jbe 0x404ea4
mov edx, dword [edi + 0x40]
mov eax, dword [ebp - 0x34]
lea ecx, [ebp - 0x2c]
movzx edx, word [edx + ebx*2]
mov dword [esp], eax
cmp dx, 0x1f
jbe 0x404a70
mov eax, esi
call sym._write_char
add dword [ebp - 0x38], 1
jmp 0x404a9d
mov ecx, dword [ebp - 0x38]
mov eax, dword [edi + 0x44]
mov ebx, dword [edi + 0x70]
mov dword [edi + 0x70], ecx
cmp edx, eax
jae 0x404ead
mov eax, dword [esi + 0x10]
mov dword [ebp - 0x34], eax
mov ecx, dword [edi + 0x40]
mov eax, dword [ebp - 0x40]
mov dword [ebp - 0x38], ecx
test eax, eax
je 0x404cd6
mov ebx, dword [edi + 0x44]
test ebx, ebx
je 0x405101
lea eax, [ebx - 1]
cmp eax, 6
jbe 0x405137
mov edx, ebx
pxor xmm4, xmm4
pxor xmm5, xmm5
mov eax, ecx
movdqu xmm3, xmmword [0x414c50]
shr edx, 3
movdqu xmm2, xmmword [0x414c60]
movdqu xmm1, xmmword [0x414c70]
shl edx, 4
add edx, ecx
lea esi, [esi]
movdqu xmm0, xmmword [eax]
movdqu xmm6, xmm2
add eax, 0x10
psubusw xmm0, xmm3
pcmpeqw xmm0, xmm5
pand xmm6, xmm0
pandn xmm0, xmm1
por xmm0, xmm6
movdqu xmm6, xmm0
punpckhwd xmm0, xmm5
punpcklwd xmm6, xmm5
paddd xmm0, xmm6
paddd xmm4, xmm0
cmp edx, eax
jne 0x404b58
movdqu xmm0, xmm4
mov edx, ebx
psrldq xmm0, 8
and edx, 0xfffffff8
paddd xmm4, xmm0
movdqu xmm0, xmm4
psrldq xmm0, 4
paddd xmm4, xmm0
movd eax, xmm4
test bl, 7
je 0x404bd7
mov dword [ebp - 0x3c], esi
mov esi, dword [ebp - 0x38]
lea esi, [esi]
cmp word [esi + edx*2], 0x20
sbb ecx, ecx
add edx, 1
not ecx
lea eax, [eax + ecx + 2]
cmp edx, ebx
jb 0x404bc0
mov esi, dword [ebp - 0x3c]
mov dword [esi + 0x1c], 0
xor edx, edx
add eax, dword [edi + 0x74]
div dword [esi + 0xc]
mov edx, dword [edi + 0x78]
lea eax, [eax + edx + 1]
mov dword [esi + 0x20], eax
cmp eax, dword [ebp - 0x34]
jae 0x404f56
mov eax, dword [ebp - 0x2c]
mov edx, dword [edi + 0xc]
cmp eax, dword [ebp - 0x24]
jg 0x404c28
mov ecx, dword [ebp - 0x28]
cmp ecx, dword [ebp - 0x20]
jg 0x404c28
test edx, edx
jne 0x404fed
lea edx, [ebp - 0x2c]
mov eax, esi
call sym._update_output
mov eax, esi
call sym._scroll_to_cursor
mov edx, dword [edi + 0xc]
mov eax, dword [esi]
test edx, edx
jne 0x404de9
call sym._tty_sync
mov dword [esp + 4], 1
mov eax, dword [esi]
mov dword [esp], eax
call sym._update_window_config
mov edx, dword [edi + 0x3c]
cmp edx, 0x103
je 0x40445b
test edx, edx
jne 0x404703
jmp 0x4047f0
mov edx, dword [edi + 0x38]
mov eax, edi
call sym._read_from_buffer
jmp 0x40473d
test al, 2
jne 0x404ca0
mov edx, dword [edi + 0x44]
test edx, edx
je 0x404ca0
mov dword [edi + 0x3c], 0
test ecx, ecx
jne 0x404902
jmp 0x4047f3
test ecx, ecx
jne 0x404910
jmp 0x40445b
sub ebx, esi
mov dword [esp + 4], eax
lea edx, [ebx + ebx*4]
mov dword [esp], ecx
shl edx, 2
mov dword [esp + 8], edx
call dword [sym.imp.ucrtbase.dll_memmove]
mov eax, dword [edi + 0x1c]
mov edx, dword [edi + 0x3c]
sub eax, esi
jmp 0x4046dc
mov ebx, dword [edi + 0x4c]
test ebx, ebx
je 0x4050ec
lea eax, [ebx - 1]
cmp eax, 6
jbe 0x405128
mov edx, ebx
mov ecx, dword [ebp - 0x38]
pxor xmm4, xmm4
pxor xmm5, xmm5
movdqu xmm3, xmmword [0x414c50]
shr edx, 3
movdqu xmm2, xmmword [0x414c60]
movdqu xmm1, xmmword [0x414c70]
shl edx, 4
mov eax, ecx
add edx, ecx
lea esi, [esi]
movdqu xmm0, xmmword [eax]
movdqu xmm6, xmm2
add eax, 0x10
psubusw xmm0, xmm3
pcmpeqw xmm0, xmm5
pand xmm6, xmm0
pandn xmm0, xmm1
por xmm0, xmm6
movdqu xmm6, xmm0
punpckhwd xmm0, xmm5
punpcklwd xmm6, xmm5
paddd xmm0, xmm6
paddd xmm4, xmm0
cmp edx, eax
jne 0x404d20
movdqu xmm0, xmm4
mov eax, ebx
psrldq xmm0, 8
and eax, 0xfffffff8
paddd xmm4, xmm0
movdqu xmm0, xmm4
psrldq xmm0, 4
paddd xmm4, xmm0
movd ecx, xmm4
test bl, 7
je 0x404d9f
mov dword [ebp - 0x3c], esi
mov esi, dword [ebp - 0x38]
lea esi, [esi]
cmp word [esi + eax*2], 0x20
sbb edx, edx
add eax, 1
not edx
lea ecx, [edx + ecx + 2]
cmp eax, ebx
jb 0x404d88
mov esi, dword [ebp - 0x3c]
mov eax, dword [edi + 0x74]
mov ebx, dword [esi + 0xc]
xor edx, edx
add eax, ecx
div ebx
add eax, dword [edi + 0x78]
mov dword [esi + 0x20], eax
cmp eax, dword [ebp - 0x34]
jae 0x404dfb
mov eax, dword [edi + 0x74]
xor edx, edx
add eax, ecx
div ebx
mov dword [esi + 0x1c], edx
jmp 0x404bf9
mov word [ebp - 0x2e], cx
mov dword [edi + 0x3c], 0
test byte [0x413058], 8
jne 0x404e67
mov dword [ebp - 0x44], ebx
xor edx, edx
jmp 0x4044f6
mov ecx, dword [esi + 0x20]
mov edx, dword [esi + 0x1c]
call sym._set_tty_cursor_relative
mov eax, dword [esi]
jmp 0x404c32
lea eax, [ebx - 1]
movd xmm0, eax
mov eax, dword [ebp - 0x34]
sub eax, 1
movd xmm7, eax
punpckldq xmm0, xmm7
movq qword [esi + 0x1c], xmm0
jmp 0x404bf9
mov eax, dword [ebx + 0xb8]
test eax, eax
je 0x404e35
mov ecx, 6
mov edx, str.e__25l
mov eax, ebx
call sym._tty_write.part.0
mov dword [ebx + 0x10cc], 0
jmp 0x404965
mov eax, edi
mov ecx, 1
lea edx, [ebp - 0x2e]
call sym._edit_line_insert.part.0
mov eax, dword [ebp - 0x44]
mov ebx, dword [sym.imp.ucrtbase.dll_free]
mov dword [edi + 0x80], eax
jmp 0x40487b
add edx, 0x40
mov dword [esp + 0x14], eax
mov dword [esp + 0x10], edx
mov dword [esp + 0xc], str.Found_ctrl_char_in_mask:__lc__x_n
mov dword [esp + 8], str.process_console_input
mov dword [esp + 4], 0x413058
mov dword [esp], 3
call sym._wine_dbg_log.constprop.0
mov dword [ebp - 0x44], ebx
mov edx, dword [edi + 0x3c]
mov ebx, dword [edi + 0x1c]
jmp 0x4044f9
mov eax, dword [ebp - 0x38]
mov ebx, dword [edi + 0x70]
mov dword [edi + 0x70], eax
mov eax, dword [esi + 0x10]
mov dword [ebp - 0x34], eax
lea eax, [edi + 0x78]
mov dword [ebp - 0x3c], eax
cmp ebx, dword [ebp - 0x38]
jle 0x404afe
mov dword [ebp - 0x48], edi
mov edx, dword [ebp - 0x34]
mov edi, dword [ebp - 0x38]
jmp 0x404ef3
mov eax, dword [ebp - 0x3c]
lea ecx, [ebp - 0x2c]
mov edx, 0x20
add edi, 1
mov dword [esp], eax
mov eax, esi
call sym._write_char
cmp ebx, edi
je 0x404fe5
mov edx, dword [esi + 0x10]
cmp dword [esi + 0x20], edx
jb 0x404ed0
mov dword [ebp - 0x34], edx
mov edi, dword [ebp - 0x48]
jmp 0x404afe
mov dword [esp + 0x1c], 0
mov dword [esp + 0x18], 0
mov dword [esp + 0x14], 0
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], ecx
mov eax, dword [edi + 0x40]
mov dword [esp + 4], 0
mov dword [esp + 8], eax
mov eax, dword [edi + 0xa4]
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_WideCharToMultiByte]
sub esp, 0x20
cmp eax, dword [edi + 0x38]
jae 0x4046c2
jmp 0x404588
lea edx, [ebp - 0x2c]
mov eax, esi
call sym._new_line
jmp 0x404bf9
mov ecx, dword [edi + 0x40]
lea ebx, [ecx + eax*2]
test ebx, ebx
je 0x4051d2
mov ecx, ebx
shr ecx, 0x10
je 0x405108
add edx, 1
mov dword [esp], ebx
sub edx, eax
mov dword [esp + 4], edx
mov dword [ebp - 0x34], edx
call dword [sym.imp.kernel32.dll_IsBadStringPtrW]
mov edx, dword [ebp - 0x34]
sub esp, 8
test eax, eax
jne 0x4051dc
mov eax, ebx
call sym._wine_dbgstr_wn.part.0
mov edx, dword [edi + 0x6c]
mov ecx, eax
mov eax, dword [edi + 0x68]
mov dword [esp + 0x18], ecx
mov dword [esp + 0x14], edx
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], str.update__d__d__s_n
mov dword [esp + 8], str.update_read_output
mov dword [esp + 4], 0x413058
mov dword [esp], 3
call sym._wine_dbg_log.constprop.0
jmp 0x404955
mov edi, dword [ebp - 0x48]
jmp 0x404af8
mov edx, eax
mov eax, dword [esi]
call sym._set_tty_cursor_relative
jmp 0x404c14
mov eax, dword [edi + 0x94]
mov dword [ebp - 0x44], eax
test eax, eax
je 0x40481a
mov eax, dword [edi + 0x9c]
lea ecx, [esi + esi]
mov dword [ebp - 0x38], ecx
test eax, eax
je 0x405044
mov eax, dword [edi + 0x98]
mov dword [ebp - 0x3c], eax
mov ecx, eax
test eax, eax
je 0x40516d
mov eax, dword [edi + 0x90]
mov eax, dword [eax + ecx*4 - 4]
lea ecx, [esi + esi]
cmp ecx, dword [eax]
je 0x4051fe
lea eax, [esi + esi]
mov dword [ebp - 0x3c], edx
add eax, 4
mov dword [esp], eax
call dword [sym.imp.ucrtbase.dll_malloc]
mov edx, dword [ebp - 0x3c]
test eax, eax
mov dword [ebp - 0x40], eax
mov dword [ebp - 0x34], eax
je 0x4051c7
mov esi, dword [ebp - 0x38]
mov eax, dword [ebp - 0x40]
mov dword [eax], esi
add eax, 4
mov dword [esp + 8], esi
mov dword [esp + 4], edx
mov dword [esp], eax
call sym._memcpy
mov esi, dword [edi + 0x98]
mov eax, dword [edi + 0x90]
mov dword [ebp - 0x3c], esi
cmp dword [ebp - 0x44], esi
ja 0x4051af
mov eax, dword [eax]
mov ebx, dword [sym.imp.ucrtbase.dll_free]
mov dword [esp], eax
call ebx
mov ecx, dword [edi + 0x94]
mov eax, dword [edi + 0x90]
lea ecx, [ecx*4 - 4]
mov dword [esp], eax
mov dword [esp + 8], ecx
lea ecx, [eax + 4]
mov dword [esp + 4], ecx
call dword [sym.imp.ucrtbase.dll_memmove]
mov esi, dword [ebp - 0x40]
mov ecx, dword [edi + 0x94]
mov eax, dword [edi + 0x90]
mov dword [eax + ecx*4 - 4], esi
mov esi, dword [edi + 0x44]
mov edx, dword [edi + 0x40]
jmp 0x40481a
xor ecx, ecx
jmp 0x404d9f
mov dword [ebp - 0x38], 0
xor ecx, ecx
jmp 0x404a32
xor eax, eax
jmp 0x404bd7
movzx ebx, bx
mov dword [esp], 0x414072
mov dword [esp + 4], ebx
call sym._wine_dbg_sprintf
mov edx, dword [edi + 0x6c]
mov ecx, eax
mov eax, dword [edi + 0x68]
jmp 0x404fb0
mov dword [ebp - 0x3c], esi
xor ecx, ecx
mov esi, dword [ebp - 0x38]
xor eax, eax
jmp 0x404d88
mov dword [ebp - 0x3c], esi
xor eax, eax
mov esi, dword [ebp - 0x38]
xor edx, edx
jmp 0x404bc0
mov dword [ebp - 0x38], esi
xor ecx, ecx
mov esi, dword [ebp - 0x34]
xor eax, eax
jmp 0x404a18
movzx esi, si
mov dword [esp], 0x414072
mov dword [esp + 4], esi
call sym._wine_dbg_sprintf
jmp 0x4048cb
lea eax, [esi + esi]
mov dword [ebp - 0x40], edx
add eax, 4
mov dword [esp], eax
call dword [sym.imp.ucrtbase.dll_malloc]
mov edx, dword [ebp - 0x40]
test eax, eax
mov dword [ebp - 0x34], eax
je 0x40481a
mov eax, dword [ebp - 0x34]
mov esi, dword [ebp - 0x38]
add eax, 4
mov dword [eax - 4], esi
mov dword [esp + 8], esi
mov dword [esp + 4], edx
mov dword [esp], eax
call sym._memcpy
mov eax, dword [edi + 0x90]
mov esi, dword [ebp - 0x3c]
mov ebx, dword [ebp - 0x34]
lea edx, [esi + 1]
mov dword [edi + 0x98], edx
mov dword [eax + esi*4], ebx
mov esi, dword [edi + 0x44]
mov edx, dword [edi + 0x40]
mov ebx, dword [sym.imp.ucrtbase.dll_free]
jmp 0x40481a
mov ecx, str._null_
jmp 0x404fb0
mov edx, dword [edi + 0x6c]
mov eax, dword [edi + 0x68]
mov ecx, 0x414068
jmp 0x404fb0
mov eax, str._null_
jmp 0x4048cb
mov eax, dword [edi + 0x44]
jmp 0x404aea
add eax, 4
mov dword [esp + 4], edx
mov dword [esp + 8], ecx
mov dword [esp], eax
mov dword [ebp - 0x34], edx
call sym._memcmp
mov edx, dword [ebp - 0x34]
test eax, eax
jne 0x405044
jmp 0x40481a
mov dword [edi + 0x3c], 0xc0000017
jmp 0x40487b