Function at 0x43e3b0
Capabilities:
Manipulate console buffer
Write file on windows

Disassembly:
push ebp
mov edx, str.abcdefg
mov ebp, esp
push edi
push esi
push ebx
xor ebx, ebx
sub esp, 0x4c
mov dword [ebp - 0x30], eax
call fcn.00427f10
jmp 0x43e493
call fcn.0057d110
mov dword [eax], 0x58f03f
mov dword [eax + 4], 0x11c
movsx eax, byte [ebx + str.abcdefg]
movsx ecx, byte [ebp - 0x2a]
mov dword [esp], edi
xor edi, edi
mov dword [esp + 0x14], eax
mov dword [esp + 0x10], eax
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x18], ecx
mov dword [esp + 0xc], 0
mov dword [esp + 8], ebx
mov dword [esp + 4], str.At___d__d_:_expecting_char__c__02x_got__c__02x_n
call fcn.00427ef0
lea eax, [ebp - 0x24]
mov dword [esp + 0xc], esi
mov dword [esp + 0x10], eax
lea eax, [ebp - 0x28]
mov dword [esp + 8], 1
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x30]
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_ReadConsoleOutputAttribute]
sub esp, 0x14
cmp eax, 1
je 0x43e4f0
call fcn.0057d110
mov dword [eax], 0x58f03f
mov dword [eax + 4], 0x11c
movzx eax, word [ebp - 0x28]
mov dword [esp + 8], ebx
add ebx, 1
mov dword [esp + 0x14], eax
mov dword [esp + 0x10], 0x12
mov dword [esp + 0xc], 0
mov dword [esp + 4], str.At___d__d_:_expecting_attr__04x_got__04x_n
mov dword [esp], edi
call fcn.00427ef0
cmp ebx, 7
je 0x43e510
lea eax, [ebp - 0x24]
movzx esi, bx
mov dword [esp + 8], 1
xor edi, edi
mov dword [esp + 0x10], eax
lea eax, [ebp - 0x2a]
mov dword [esp + 0xc], esi
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x30]
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_ReadConsoleOutputCharacterA]
sub esp, 0x14
cmp eax, 1
jne 0x43e3d0
cmp dword [ebp - 0x24], 1
jne 0x43e3d0
movzx eax, byte [ebx + str.abcdefg]
cmp byte [ebp - 0x2a], al
sete al
movzx eax, al
mov edi, eax
jmp 0x43e3d0
cmp dword [ebp - 0x24], 1
jne 0x43e44d
xor eax, eax
cmp word [ebp - 0x28], 0x12
sete al
mov edi, eax
jmp 0x43e44d
lea eax, [ebp - 0x24]
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x30]
mov dword [esp], eax
mov eax, dword [sym.imp.kernel32.dll_GetConsoleScreenBufferInfo]
mov dword [ebp - 0x38], eax
call eax
sub esp, 8
mov ebx, eax
test eax, eax
je 0x43e53d
xor ebx, ebx
cmp word [ebp - 0x20], 7
je 0x43ea70
call fcn.0057d110
mov si, 7
mov dword [eax], 0x58f03f
mov dword [eax + 4], 0x11f
movsx eax, word [ebp - 0x1e]
mov dword [esp + 0x14], eax
movsx eax, word [ebp - 0x20]
mov dword [esp], ebx
xor ebx, ebx
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], 0
mov dword [esp + 8], 7
mov dword [esp + 4], str.Expected_cursor_at___d__d___got___d__d__n
call fcn.00427ef0
lea eax, [ebp - 0x24]
mov dword [esp + 0xc], esi
mov dword [esp + 0x10], eax
lea eax, [ebp - 0x2a]
mov dword [esp + 8], 1
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x30]
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_ReadConsoleOutputCharacterA]
sub esp, 0x14
cmp eax, 1
je 0x43ea00
mov eax, 0x120
call fcn.00427180
movsx eax, byte [ebp - 0x2a]
mov dword [esp], ebx
xor ebx, ebx
mov dword [esp + 0x14], 0x20
mov dword [esp + 0x1c], eax
mov dword [esp + 0x18], eax
mov dword [esp + 0x10], 0x20
mov dword [esp + 0xc], 0
mov dword [esp + 8], 7
mov dword [esp + 4], str.At___d__d_:_expecting_char__c__02x_got__c__02x_n
call fcn.00427ef0
lea eax, [ebp - 0x24]
mov dword [esp + 0xc], esi
mov dword [esp + 0x10], eax
lea eax, [ebp - 0x28]
mov dword [esp + 8], 1
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x30]
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_ReadConsoleOutputAttribute]
sub esp, 0x14
cmp eax, 1
je 0x43e9e0
call fcn.0057d110
mov dword [eax], 0x58f03f
mov dword [eax + 4], 0x120
movzx eax, word [ebp - 0x28]
mov dword [esp], ebx
mov dword [esp + 0x14], eax
mov dword [esp + 0x10], 7
mov dword [esp + 0xc], 0
mov dword [esp + 8], 7
mov dword [esp + 4], str.At___d__d_:_expecting_attr__04x_got__04x_n
call fcn.00427ef0
lea eax, [ebp - 0x28]
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], eax
mov dword [esp + 8], 7
mov dword [esp + 4], str.abcdefg
mov eax, dword [ebp - 0x30]
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_WriteFile]
sub esp, 0x14
mov ebx, eax
mov eax, 0x123
call fcn.00427180
mov eax, dword fs:[0x18]
mov eax, dword [eax + 0x34]
mov dword [esp], ebx
mov dword [esp + 4], str.WriteFile_failed:__lu_n
mov dword [esp + 8], eax
call fcn.00427ef0
call fcn.0057d110
mov dword [eax], 0x58f03f
mov dword [eax + 4], 0x124
mov eax, dword [ebp - 0x28]
mov dword [esp + 4], str.unexpected_len___lu_n
cmp eax, 7
mov dword [esp + 8], eax
sete al
xor ebx, ebx
movzx eax, al
mov dword [esp], eax
call fcn.00427ef0
jmp 0x43e7d2
call fcn.0057d110
mov dword [eax + 4], 0x128
mov dword [eax], 0x58f03f
mov eax, dword [ebp - 0x34]
movsx ecx, byte [ebp - 0x2b]
movsx eax, byte [eax + str.abcdefg]
mov dword [esp], edi
xor edi, edi
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x14], eax
mov dword [esp + 0x10], eax
mov dword [esp + 0x18], ecx
mov dword [esp + 0xc], 0
mov dword [esp + 8], ebx
mov dword [esp + 4], str.At___d__d_:_expecting_char__c__02x_got__c__02x_n
call fcn.00427ef0
lea eax, [ebp - 0x24]
mov dword [esp + 0xc], esi
mov dword [esp + 0x10], eax
lea eax, [ebp - 0x2a]
mov dword [esp + 8], 1
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x30]
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_ReadConsoleOutputAttribute]
sub esp, 0x14
cmp eax, 1
je 0x43e858
call fcn.0057d110
mov dword [eax], 0x58f03f
mov dword [eax + 4], 0x128
movzx eax, word [ebp - 0x2a]
mov dword [esp + 8], ebx
add ebx, 1
mov dword [esp + 0x14], eax
mov dword [esp + 0x10], 0x12
mov dword [esp + 0xc], 0
mov dword [esp + 4], str.At___d__d_:_expecting_attr__04x_got__04x_n
mov dword [esp], edi
call fcn.00427ef0
cmp ebx, 0xe
je 0x43e878
lea eax, [ebp - 0x24]
movzx esi, bx
mov dword [esp + 8], 1
mov edi, ebx
mov dword [esp + 0x10], eax
lea eax, [ebp - 0x2b]
mov dword [esp + 0xc], esi
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x30]
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_ReadConsoleOutputCharacterA]
mov ecx, eax
mov eax, 0x92492493
sub esp, 0x14
imul ebx
mov eax, ebx
sar eax, 0x1f
add edx, ebx
sar edx, 2
sub edx, eax
lea eax, [edx*8]
sub eax, edx
sub edi, eax
mov dword [ebp - 0x34], edi
xor edi, edi
cmp ecx, 1
jne 0x43e708
cmp dword [ebp - 0x24], 1
jne 0x43e708
mov ecx, dword [ebp - 0x34]
movzx eax, byte [ebp - 0x2b]
cmp byte [ecx + str.abcdefg], al
sete al
movzx eax, al
mov edi, eax
jmp 0x43e708
cmp dword [ebp - 0x24], 1
jne 0x43e788
xor eax, eax
cmp word [ebp - 0x2a], 0x12
sete al
mov edi, eax
jmp 0x43e788
lea eax, [ebp - 0x24]
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x30]
mov dword [esp], eax
mov eax, dword [ebp - 0x38]
call eax
sub esp, 8
mov ebx, eax
test eax, eax
je 0x43e8a0
xor ebx, ebx
cmp word [ebp - 0x20], 0xe
je 0x43ea60
call fcn.0057d110
mov si, 0xe
mov dword [eax], 0x58f03f
mov dword [eax + 4], 0x12b
movsx eax, word [ebp - 0x1e]
mov dword [esp + 0x14], eax
movsx eax, word [ebp - 0x20]
mov dword [esp], ebx
xor ebx, ebx
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0xe
mov dword [esp + 4], str.Expected_cursor_at___d__d___got___d__d__n
call fcn.00427ef0
lea eax, [ebp - 0x24]
mov dword [esp + 0xc], esi
mov dword [esp + 0x10], eax
lea eax, [ebp - 0x2b]
mov dword [esp + 8], 1
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x30]
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_ReadConsoleOutputCharacterA]
sub esp, 0x14
cmp eax, 1
je 0x43ea40
mov eax, 0x12c
call fcn.00427180
movsx eax, byte [ebp - 0x2b]
mov dword [esp], ebx
xor ebx, ebx
mov dword [esp + 0x14], 0x20
mov dword [esp + 0x1c], eax
mov dword [esp + 0x18], eax
mov dword [esp + 0x10], 0x20
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0xe
mov dword [esp + 4], str.At___d__d_:_expecting_char__c__02x_got__c__02x_n
call fcn.00427ef0
lea eax, [ebp - 0x24]
mov dword [esp + 0xc], esi
mov dword [esp + 0x10], eax
lea eax, [ebp - 0x2a]
mov dword [esp + 8], 1
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x30]
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_ReadConsoleOutputAttribute]
sub esp, 0x14
cmp eax, 1
je 0x43ea20
call fcn.0057d110
mov dword [eax], 0x58f03f
mov dword [eax + 4], 0x12c
movzx eax, word [ebp - 0x2a]
mov dword [esp], ebx
mov dword [esp + 0x14], eax
mov dword [esp + 0x10], 7
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0xe
mov dword [esp + 4], str.At___d__d_:_expecting_attr__04x_got__04x_n
call fcn.00427ef0
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret
cmp dword [ebp - 0x24], 1
jne 0x43e631
xor ebx, ebx
cmp word [ebp - 0x28], 7
sete bl
jmp 0x43e631
cmp dword [ebp - 0x24], 1
jne 0x43e5b7
xor ebx, ebx
cmp byte [ebp - 0x2a], 0x20
sete bl
jmp 0x43e5b7
cmp dword [ebp - 0x24], 1
jne 0x43e994
xor ebx, ebx
cmp word [ebp - 0x2a], 7
sete bl
jmp 0x43e994
cmp dword [ebp - 0x24], 1
jne 0x43e91a
xor ebx, ebx
cmp byte [ebp - 0x2b], 0x20
sete bl
jmp 0x43e91a
xor ebx, ebx
cmp word [ebp - 0x1e], 0
sete bl
jmp 0x43e8a0
xor ebx, ebx
cmp word [ebp - 0x1e], 0
sete bl
jmp 0x43e53d