Function at 0x4ae2a0
Capabilities:
Manipulate console buffer

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
mov eax, 0x407c
call fcn.004c4780
mov eax, dword [0x53c074]
xor eax, esp
mov dword [esp + 0x4078], eax
push ebx
push esi
mov esi, ecx
mov dword [esp + 0x40], edx
mov ecx, dword [ebp + 0xc]
push edi
xor edi, edi
mov dword [esp + 0x1c], esi
mov al, byte [esi + 0x98]
mov byte [esp + 0x2a], al
mov eax, dword [esi + 0x94]
mov dword [esp + 0x2c], eax
mov al, byte [esi + 0x99]
mov byte [esp + 0x2b], al
mov al, byte [esi + 0x9a]
push 0xffffffffffffffff
mov byte [esp + 0x17], al
lea eax, [esp + 0x84]
mov dword [ecx], edi
push dword [0x545b4c]
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x28], edi
mov dword [esp + 0x20], eax
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
test eax, eax
jne 0x4af6a1
xor ecx, ecx
mov dword [esp + 0x40], ecx
nop dword [eax]
cmp dword [0x53d648], 0
mov edx, dword [esp + 0x44]
mov eax, dword [edx + ecx*8]
mov edx, dword [edx + ecx*8 + 4]
mov dword [esp + 0x38], eax
mov dword [esp + 0x3c], edx
jne 0x4ae46b
test eax, eax
je 0x4ae46b
mov esi, dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
push 0
push 0
push eax
push edx
push 0
push 0xfde9
call esi
mov edi, eax
test edi, edi
je 0x4af5fc
lea ebx, [edi*2 + 2]
mov eax, 0x2000
cmp eax, ebx
mov dword [esp + 0x24], ebx
sbb eax, eax
neg eax
mov dword [esp + 0x20], eax
cmp ebx, 0x2000
jbe 0x4ae3a9
push ebx
call dword [0x53d638]
add esp, 4
mov dword [esp + 0x18], eax
jmp 0x4ae3ad
mov eax, dword [esp + 0x18]
push edi
push eax
push dword [esp + 0x40]
push dword [esp + 0x48]
push 0
push 0xfde9
call esi
test eax, eax
je 0x4af5d9
mov eax, dword [esp + 0x14]
xor ebx, ebx
mov ecx, 0x2000
mov esi, edi
sub esi, ebx
cmp esi, 0x2000
cmova esi, ecx
cmp dword [eax], 0
jne 0x4ae422
push 0
lea eax, [esp + 0x50]
push eax
mov eax, dword [esp + 0x20]
push esi
lea eax, [eax + ebx*2]
push eax
mov eax, dword [esp + 0x2c]
push dword [eax + 0x90]
call dword [sym.imp.KERNEL32.dll_WriteConsoleW]
test eax, eax
jne 0x4ae419
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov ecx, dword [esp + 0x14]
mov dword [ecx], eax
mov eax, ecx
jmp 0x4ae41d
mov eax, dword [esp + 0x14]
mov ecx, 0x2000
add ebx, esi
cmp ebx, edi
jb 0x4ae3d3
cmp dword [esp + 0x24], 0x2000
jbe 0x4ae460
call fcn.004ceb5c
push dword [esp + 0x18]
mov esi, dword [eax]
call dword [0x53d644]
add esp, 4
call fcn.004ceb5c
lea ebx, [esp + 0x80]
mov dword [esp + 0x20], 0
mov dword [esp + 0x18], ebx
mov dword [eax], esi
mov esi, dword [esp + 0x1c]
xor edi, edi
jmp 0x4ae7d3
xor ecx, ecx
mov dword [esp + 0x24], ecx
test eax, eax
je 0x4ae7d3
nop dword [eax]
mov bl, byte [esp + 0x2a]
mov dl, byte [ecx + edx]
mov al, dl
test bl, bl
jne 0x4ae4cf
not al
movzx eax, al
bsr ebx, eax
je 0x4ae504
cmp ebx, 7
jne 0x4ae4a1
movzx edx, dl
jmp 0x4ae509
cmp ebx, 5
ja 0x4ae504
mov ecx, 8
mov eax, 0xff
sub ecx, ebx
sar eax, cl
mov ecx, dword [esp + 0x24]
mov dword [esp + 0x2c], eax
movzx eax, dl
mov edx, dword [esp + 0x2c]
and edx, eax
mov al, 6
sub al, bl
mov byte [esp + 0x2a], al
jmp 0x4ae4ec
and al, 0xc0
cmp al, 0x80
jne 0x4ae4fa
movzx eax, dl
dec bl
mov edx, dword [esp + 0x2c]
and eax, 0x3f
shl edx, 6
or edx, eax
mov byte [esp + 0x2a], bl
mov al, bl
mov dword [esp + 0x2c], edx
test al, al
jne 0x4ae7be
jmp 0x4ae50d
dec ecx
mov byte [esp + 0x2a], 0
mov dword [esp + 0x24], ecx
mov edx, 0xfffd
mov dword [esp + 0x2c], edx
mov cl, byte [esp + 0x13]
test cl, cl
jne 0x4ae541
cmp edx, 0x1b
je 0x4ae537
cmp edx, 0x9b
jne 0x4ae905
mov byte [esp + 0x13], 4
mov byte [esi + 0x9b], 0
jmp case.0x4ae55d.27
mov byte [esp + 0x13], 2
jmp case.0x4ae55d.27
cmp cl, 2
jne 0x4aeb9f
lea eax, [edx - 0x1b]
cmp eax, 0x48
ja case.0x4ae55d.28
movzx eax, byte [eax + 0x4af6c4]
jmp dword [eax*4 + 0x4af6a8]
mov byte [esp + 0x13], 8
jmp case.0x4ae55d.27
mov eax, dword [esp + 0x14]
xor ebx, ebx
mov ecx, 0x2000
nop dword [eax]
mov esi, edi
sub esi, ebx
cmp esi, 0x2000
cmova esi, ecx
cmp dword [eax], 0
jne 0x4ae5cf
push 0
lea eax, [esp + 0x54]
push eax
mov eax, dword [esp + 0x20]
push esi
lea eax, [eax + ebx*2]
push eax
mov eax, dword [esp + 0x2c]
push dword [eax + 0x90]
call dword [sym.imp.KERNEL32.dll_WriteConsoleW]
test eax, eax
jne 0x4ae5c6
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov ecx, dword [esp + 0x14]
mov dword [ecx], eax
mov eax, ecx
jmp 0x4ae5ca
mov eax, dword [esp + 0x14]
mov ecx, 0x2000
add ebx, esi
cmp ebx, edi
jb 0x4ae580
cmp dword [esp + 0x20], 0
je 0x4ae60a
call fcn.004ceb5c
push dword [esp + 0x18]
mov esi, dword [eax]
call dword [0x53d644]
add esp, 4
call fcn.004ceb5c
mov dword [esp + 0x20], 0
mov dword [eax], esi
lea eax, [esp + 0x80]
mov dword [esp + 0x18], eax
mov esi, dword [esp + 0x14]
xor eax, eax
xor edi, edi
mov dword [esp + 0x30], eax
mov ax, word [0x53d658]
movzx ebx, ax
cmp dword [esi], edi
jne 0x4ae6e9
movzx eax, ax
push eax
mov eax, dword [esp + 0x20]
push dword [eax + 0x90]
call dword [sym.imp.KERNEL32.dll_SetConsoleTextAttribute]
test eax, eax
jne 0x4ae650
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov dword [esi], eax
mov esi, dword [esp + 0x1c]
jmp case.0x4aecdb.73
mov eax, dword [esp + 0x1c]
mov esi, dword [esp + 0x30]
push esi
push dword [eax + 0x90]
call dword [sym.imp.KERNEL32.dll_SetConsoleCursorPosition]
test eax, eax
je 0x4ae6dd
nop dword [eax]
lea eax, [esp + 0x68]
push eax
mov eax, dword [esp + 0x20]
push dword [eax + 0x90]
call dword [sym.imp.KERNEL32.dll_GetConsoleScreenBufferInfo]
test eax, eax
je 0x4ae6dd
movsx eax, word [esp + 0x68]
movsx ecx, word [esp + 0x6a]
imul ecx, eax
lea eax, [esp + 0x34]
push eax
mov eax, dword [esp + 0x20]
push esi
push ecx
push 0x20
push dword [eax + 0x90]
call dword [sym.imp.KERNEL32.dll_FillConsoleOutputCharacterW]
test eax, eax
je 0x4ae6d2
lea eax, [esp + 0x34]
push eax
mov eax, dword [esp + 0x20]
push esi
push dword [esp + 0x3c]
push ebx
push dword [eax + 0x90]
call dword [sym.imp.KERNEL32.dll_FillConsoleOutputAttribute]
test eax, eax
jne 0x4ae6f2
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0x57
je 0x4ae670
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov ecx, dword [esp + 0x14]
mov dword [ecx], eax
mov esi, dword [esp + 0x1c]
jmp case.0x4aecdb.73
lea ecx, [esp + 0x68]
mov dword [0x53d64c], edi
call fcn.004ad8f0
mov esi, dword [esp + 0x1c]
jmp case.0x4aecdb.73
mov eax, dword [esp + 0x14]
xor ebx, ebx
mov ecx, 0x2000
mov esi, edi
sub esi, ebx
cmp esi, 0x2000
cmova esi, ecx
cmp dword [eax], 0
jne 0x4ae764
push 0
lea eax, [esp + 0x58]
push eax
mov eax, dword [esp + 0x20]
push esi
lea eax, [eax + ebx*2]
push eax
mov eax, dword [esp + 0x2c]
push dword [eax + 0x90]
call dword [sym.imp.KERNEL32.dll_WriteConsoleW]
test eax, eax
jne 0x4ae75b
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov ecx, dword [esp + 0x14]
mov dword [ecx], eax
mov eax, ecx
jmp 0x4ae75f
mov eax, dword [esp + 0x14]
mov ecx, 0x2000
add ebx, esi
cmp ebx, edi
jb 0x4ae715
cmp dword [esp + 0x20], 0
je 0x4ae79f
call fcn.004ceb5c
push dword [esp + 0x18]
mov esi, dword [eax]
call dword [0x53d644]
add esp, 4
call fcn.004ceb5c
mov dword [esp + 0x20], 0
mov dword [eax], esi
lea eax, [esp + 0x80]
mov dword [esp + 0x18], eax
push dword [esp + 0x14]
mov esi, dword [esp + 0x20]
mov dl, 1
mov ecx, esi
xor edi, edi
call fcn.004ae0c0
add esp, 4
mov byte [esp + 0x13], 0
mov ecx, dword [esp + 0x24]
mov eax, dword [esp + 0x38]
inc ecx
mov edx, dword [esp + 0x3c]
mov dword [esp + 0x24], ecx
cmp ecx, eax
jb 0x4ae480
mov ecx, dword [esp + 0x40]
inc ecx
mov dword [esp + 0x40], ecx
cmp ecx, 1
jb 0x4ae330
mov ecx, dword [esp + 0x14]
xor ebx, ebx
mov eax, 0x2000
mov esi, edi
sub esi, ebx
cmp esi, 0x2000
cmova esi, eax
cmp dword [ecx], 0
jne 0x4af616
push 0
lea eax, [esp + 0x4c]
push eax
mov eax, dword [esp + 0x20]
push esi
lea eax, [eax + ebx*2]
push eax
mov eax, dword [esp + 0x2c]
push dword [eax + 0x90]
call dword [sym.imp.KERNEL32.dll_WriteConsoleW]
test eax, eax
jne 0x4af60d
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov ecx, dword [esp + 0x14]
mov dword [ecx], eax
jmp 0x4af611
mov eax, dword [esp + 0x14]
xor ebx, ebx
mov ecx, 0x2000
nop word [eax + eax]
mov esi, edi
sub esi, ebx
cmp esi, 0x2000
cmova esi, ecx
cmp dword [eax], 0
jne 0x4ae89f
push 0
lea eax, [esp + 0x5c]
push eax
mov eax, dword [esp + 0x20]
push esi
lea eax, [eax + ebx*2]
push eax
mov eax, dword [esp + 0x2c]
push dword [eax + 0x90]
call dword [sym.imp.KERNEL32.dll_WriteConsoleW]
test eax, eax
jne 0x4ae896
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov ecx, dword [esp + 0x14]
mov dword [ecx], eax
mov eax, ecx
jmp 0x4ae89a
mov eax, dword [esp + 0x14]
mov ecx, 0x2000
add ebx, esi
cmp ebx, edi
jb 0x4ae850
cmp dword [esp + 0x20], 0
je 0x4ae8da
call fcn.004ceb5c
push dword [esp + 0x18]
mov esi, dword [eax]
call dword [0x53d644]
add esp, 4
call fcn.004ceb5c
mov dword [esp + 0x20], 0
mov dword [eax], esi
lea eax, [esp + 0x80]
mov dword [esp + 0x18], eax
push dword [esp + 0x14]
mov esi, dword [esp + 0x20]
mov dl, 1
mov ecx, esi
xor edi, edi
call fcn.004ae180
jmp 0x4ae7b2
cmp edx, 0x40
jb 0x4ae900
cmp edx, 0x5f
jbe case.0x4aecdb.73
mov byte [esp + 0x13], 0
cmp edx, 0xffff
jbe 0x4ae917
mov dword [esp + 0x2c], 0xfffd
jmp 0x4ae935
cmp edx, 0xa
je 0x4aea71
cmp edx, 0xd
je 0x4ae9f7
cmp edx, 0xffff
ja case.0x4ae55d.27
mov ecx, 0x2000
mov eax, ecx
sub eax, edi
cmp eax, 1
jae 0x4ae9e0
mov eax, dword [esp + 0x14]
xor ebx, ebx
nop dword [eax]
mov esi, edi
sub esi, ebx
cmp esi, 0x2000
cmova esi, ecx
cmp dword [eax], 0
jne 0x4ae99f
push 0
lea eax, [esp + 0x60]
push eax
mov eax, dword [esp + 0x20]
push esi
lea eax, [eax + ebx*2]
push eax
mov eax, dword [esp + 0x2c]
push dword [eax + 0x90]
call dword [sym.imp.KERNEL32.dll_WriteConsoleW]
test eax, eax
jne 0x4ae996
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov ecx, dword [esp + 0x14]
mov dword [ecx], eax
mov eax, ecx
jmp 0x4ae99a
mov eax, dword [esp + 0x14]
mov ecx, 0x2000
add ebx, esi
cmp ebx, edi
jb 0x4ae950
cmp dword [esp + 0x20], 0
je 0x4ae9da
call fcn.004ceb5c
push dword [esp + 0x18]
mov esi, dword [eax]
call dword [0x53d644]
add esp, 4
call fcn.004ceb5c
mov dword [esp + 0x20], 0
mov dword [eax], esi
lea eax, [esp + 0x80]
mov dword [esp + 0x18], eax
mov esi, dword [esp + 0x1c]
xor edi, edi
mov ebx, dword [esp + 0x2c]
mov word [esp + edi*2 + 0x80], bx
inc edi
mov byte [esp + 0x2b], 0
jmp case.0x4ae55d.27
cmp byte [esp + 0x2b], 0xa
je 0x4aeb96
mov ecx, 0x2000
mov eax, ecx
sub eax, edi
cmp eax, 1
jae 0x4aeb8d
mov eax, dword [esp + 0x14]
xor ebx, ebx
nop word [eax + eax]
mov esi, edi
sub esi, ebx
cmp esi, 0x2000
cmova esi, ecx
cmp dword [eax], 0
jne 0x4aeb44
push 0
lea eax, [esp + 0x68]
push eax
mov eax, dword [esp + 0x20]
push esi
lea eax, [eax + ebx*2]
push eax
mov eax, dword [esp + 0x2c]
push dword [eax + 0x90]
call dword [sym.imp.KERNEL32.dll_WriteConsoleW]
test eax, eax
jne 0x4aeb3b
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov ecx, dword [esp + 0x14]
mov dword [ecx], eax
mov eax, ecx
jmp 0x4aeb3f
cmp byte [esp + 0x2b], 0xd
je 0x4aea02
mov ecx, 0x2000
mov eax, ecx
sub eax, edi
cmp eax, 2
jae 0x4aeb24
mov eax, dword [esp + 0x14]
xor ebx, ebx
mov esi, edi
sub esi, ebx
cmp esi, 0x2000
cmova esi, ecx
cmp dword [eax], 0
jne 0x4aeadf
push 0
lea eax, [esp + 0x64]
push eax
mov eax, dword [esp + 0x20]
push esi
lea eax, [eax + ebx*2]
push eax
mov eax, dword [esp + 0x2c]
push dword [eax + 0x90]
call dword [sym.imp.KERNEL32.dll_WriteConsoleW]
test eax, eax
jne 0x4aead6
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov ecx, dword [esp + 0x14]
mov dword [ecx], eax
mov eax, ecx
jmp 0x4aeada
mov eax, dword [esp + 0x14]
mov ecx, 0x2000
add ebx, esi
cmp ebx, edi
jb 0x4aea90
cmp dword [esp + 0x20], 0
je 0x4aeb1a
call fcn.004ceb5c
push dword [esp + 0x18]
mov esi, dword [eax]
call dword [0x53d644]
add esp, 4
call fcn.004ceb5c
mov dword [esp + 0x20], 0
mov dword [eax], esi
lea eax, [esp + 0x80]
mov dword [esp + 0x18], eax
mov esi, dword [esp + 0x1c]
xor edi, edi
mov edx, dword [esp + 0x2c]
mov dword [esp + edi*2 + 0x80], 0xa000d
add edi, 2
mov byte [esp + 0x2b], dl
jmp case.0x4ae55d.27
mov eax, dword [esp + 0x14]
mov ecx, 0x2000
add ebx, esi
cmp ebx, edi
jb 0x4aea20
cmp dword [esp + 0x20], 0
je 0x4aeb83
call fcn.004ceb5c
push dword [esp + 0x18]
mov esi, dword [eax]
call dword [0x53d644]
add esp, 4
call fcn.004ceb5c
mov dword [esp + 0x20], 0
mov dword [eax], esi
lea eax, [esp + 0x80]
mov dword [esp + 0x18], eax
mov esi, dword [esp + 0x1c]
xor edi, edi
mov edx, dword [esp + 0x2c]
mov word [esp + edi*2 + 0x80], dx
inc edi
mov byte [esp + 0x2b], dl
jmp case.0x4ae55d.27
test cl, 4
je 0x4af54d
test cl, 0x10
jne 0x4af52d
cmp edx, 0x30
jb 0x4aec32
cmp edx, 0x39
ja 0x4aec32
mov al, byte [esi + 0x9b]
test cl, 0x20
jne 0x4aebf8
cmp al, 4
jb 0x4aebd6
or cl, 0x10
mov byte [esp + 0x13], cl
jmp case.0x4ae55d.27
or cl, 0x20
inc al
mov byte [esi + 0x9b], al
movzx eax, al
mov byte [esp + 0x13], cl
lea ecx, [edx - 0x30]
mov word [esi + eax*2 + 0x9a], cx
jmp case.0x4ae55d.27
movzx eax, al
lea edx, [esi + eax*2]
movzx eax, word [edx + 0x9a]
lea eax, [eax + eax*4]
add eax, eax
cmp eax, 0xffff
jbe 0x4aec1d
or cl, 0x10
mov byte [esp + 0x13], cl
jmp case.0x4ae55d.27
mov ebx, dword [esp + 0x2c]
add eax, 0xffffffd0
add eax, ebx
mov word [edx + 0x9a], ax
jmp case.0x4ae55d.27
cmp edx, 0x3b
jne 0x4aec78
test cl, 0x20
je 0x4aec48
and cl, 0xdf
mov byte [esp + 0x13], cl
jmp case.0x4ae55d.27
mov al, byte [esi + 0x9b]
cmp al, 4
jb 0x4aec5e
or cl, 0x10
mov byte [esp + 0x13], cl
jmp case.0x4ae55d.27
inc al
xor ecx, ecx
mov byte [esi + 0x9b], al
movzx eax, al
mov word [esi + eax*2 + 0x9a], cx
jmp case.0x4ae55d.27
cmp edx, 0x3f
jne 0x4aec9f
test cl, 0x20
jne 0x4aebca
cmp byte [esi + 0x9b], 0
je case.0x4ae55d.27
or cl, 0x10
mov byte [esp + 0x13], cl
jmp case.0x4ae55d.27
cmp edx, 0x40
jb 0x4aebca
cmp edx, 0x7e
ja 0x4aebca
mov dl, byte [esi + 0x9b]
mov ebx, dword [esp + 0x2c]
test dl, dl
jne 0x4aecc8
cmp ebx, 0x5b
je 0x4aebca
lea eax, [ebx - 0x41]
cmp eax, 0x34
ja case.0x4aecdb.73
movzx eax, byte [eax + 0x4af750]
jmp dword [eax*4 + 0x4af710]
xor ebx, ebx
push dword [esp + 0x14]
mov ecx, dword [esp + 0x20]
mov esi, edi
sub esi, ebx
mov eax, 0x2000
cmp esi, 0x2000
cmova esi, eax
mov eax, dword [esp + 0x1c]
push esi
lea edx, [eax + ebx*2]
call fcn.004ada20
add ebx, esi
add esp, 8
cmp ebx, edi
jb 0x4aece4
cmp dword [esp + 0x20], 0
je 0x4aed2f
mov ecx, dword [esp + 0x18]
call fcn.004aa760
lea eax, [esp + 0x80]
mov dword [esp + 0x18], eax
mov esi, dword [esp + 0x1c]
xor edi, edi
mov dword [esp + 0x20], 0
cmp byte [esi + 0x9b], 0
je 0x4aed4f
movzx eax, word [esi + 0x9c]
jmp 0x4aed54
mov eax, 1
mov ecx, dword [esp + 0x14]
neg eax
push ecx
push 1
push eax
push 1
xor edx, edx
mov ecx, esi
call fcn.004ada60
add esp, 0x10
jmp case.0x4aecdb.73
xor ebx, ebx
push dword [esp + 0x14]
mov ecx, dword [esp + 0x20]
mov esi, edi
sub esi, ebx
mov eax, 0x2000
cmp esi, 0x2000
cmova esi, eax
mov eax, dword [esp + 0x1c]
push esi
lea edx, [eax + ebx*2]
call fcn.004ada20
add ebx, esi
add esp, 8
cmp ebx, edi
jb 0x4aed73
cmp dword [esp + 0x20], 0
je 0x4aedbe
mov ecx, dword [esp + 0x18]
call fcn.004aa760
lea eax, [esp + 0x80]
mov dword [esp + 0x18], eax
mov esi, dword [esp + 0x1c]
xor edi, edi
mov dword [esp + 0x20], 0
cmp byte [esi + 0x9b], 0
je 0x4aedde
movzx eax, word [esi + 0x9c]
jmp 0x4aede3
mov eax, 1
mov ecx, dword [esp + 0x14]
xor edx, edx
push ecx
push 1
push eax
push 1
mov ecx, esi
call fcn.004ada60
add esp, 0x10
jmp case.0x4aecdb.73
xor ebx, ebx
push dword [esp + 0x14]
mov ecx, dword [esp + 0x20]
mov esi, edi
sub esi, ebx
mov eax, 0x2000
cmp esi, 0x2000
cmova esi, eax
mov eax, dword [esp + 0x1c]
push esi
lea edx, [eax + ebx*2]
call fcn.004ada20
add ebx, esi
add esp, 8
cmp ebx, edi
jb 0x4aee00
cmp dword [esp + 0x20], 0
je 0x4aee4b
mov ecx, dword [esp + 0x18]
call fcn.004aa760
lea eax, [esp + 0x80]
mov dword [esp + 0x18], eax
mov esi, dword [esp + 0x1c]
xor edi, edi
mov dword [esp + 0x20], 0
cmp byte [esi + 0x9b], 0
je 0x4aee6b
movzx edx, word [esi + 0x9c]
jmp 0x4aee70
mov edx, 1
push dword [esp + 0x14]
mov ecx, esi
push 1
push 0
push 1
call fcn.004ada60
add esp, 0x10
jmp case.0x4aecdb.73
xor ebx, ebx
nop dword [eax + eax]
push dword [esp + 0x14]
mov ecx, dword [esp + 0x20]
mov esi, edi
sub esi, ebx
mov eax, 0x2000
cmp esi, 0x2000
cmova esi, eax
mov eax, dword [esp + 0x1c]
push esi
lea edx, [eax + ebx*2]
call fcn.004ada20
add ebx, esi
add esp, 8
cmp ebx, edi
jb 0x4aee90
cmp dword [esp + 0x20], 0
je 0x4aeedb
mov ecx, dword [esp + 0x18]
call fcn.004aa760
lea eax, [esp + 0x80]
mov dword [esp + 0x18], eax
mov esi, dword [esp + 0x1c]
xor edi, edi
mov dword [esp + 0x20], 0
cmp byte [esi + 0x9b], 0
je 0x4aeefb
movzx edx, word [esi + 0x9c]
jmp 0x4aef00
mov edx, 1
push dword [esp + 0x14]
neg edx
mov ecx, esi
push 1
push 0
push 1
call fcn.004ada60
add esp, 0x10
jmp case.0x4aecdb.73
xor ebx, ebx
nop dword [eax]
push dword [esp + 0x14]
mov ecx, dword [esp + 0x20]
mov esi, edi
sub esi, ebx
mov eax, 0x2000
cmp esi, 0x2000
cmova esi, eax
mov eax, dword [esp + 0x1c]
push esi
lea edx, [eax + ebx*2]
call fcn.004ada20
add ebx, esi
add esp, 8
cmp ebx, edi
jb 0x4aef20
cmp dword [esp + 0x20], 0
je 0x4aef6b
mov ecx, dword [esp + 0x18]
call fcn.004aa760
lea eax, [esp + 0x80]
mov dword [esp + 0x18], eax
mov esi, dword [esp + 0x1c]
xor edi, edi
mov dword [esp + 0x20], 0
cmp byte [esi + 0x9b], 0
je 0x4aef8b
movzx eax, word [esi + 0x9c]
jmp 0x4aef90
mov eax, 1
mov ecx, dword [esp + 0x14]
xor edx, edx
push ecx
push 1
push eax
push 0
mov ecx, esi
call fcn.004ada60
add esp, 0x10
jmp case.0x4aecdb.73
xor ebx, ebx
nop dword [eax]
push dword [esp + 0x14]
mov ecx, dword [esp + 0x20]
mov esi, edi
sub esi, ebx
mov eax, 0x2000
cmp esi, 0x2000
cmova esi, eax
mov eax, dword [esp + 0x1c]
push esi
lea edx, [eax + ebx*2]
call fcn.004ada20
add ebx, esi
add esp, 8
cmp ebx, edi
jb 0x4aefb0
cmp dword [esp + 0x20], 0
je 0x4aeffb
mov ecx, dword [esp + 0x18]
call fcn.004aa760
lea eax, [esp + 0x80]
mov dword [esp + 0x18], eax
mov esi, dword [esp + 0x1c]
xor edi, edi
mov dword [esp + 0x20], 0
cmp byte [esi + 0x9b], 0
je 0x4af01b
movzx eax, word [esi + 0x9c]
jmp 0x4af020
mov eax, 1
mov ecx, dword [esp + 0x14]
neg eax
push ecx
push 1
push eax
push 0
xor edx, edx
mov ecx, esi
call fcn.004ada60
add esp, 0x10
jmp case.0x4aecdb.73
xor ebx, ebx
nop
push dword [esp + 0x14]
mov ecx, dword [esp + 0x20]
mov esi, edi
sub esi, ebx
mov eax, 0x2000
cmp esi, 0x2000
cmova esi, eax
mov eax, dword [esp + 0x1c]
push esi
lea edx, [eax + ebx*2]
call fcn.004ada20
add ebx, esi
add esp, 8
cmp ebx, edi
jb 0x4af040
cmp dword [esp + 0x20], 0
je 0x4af08b
mov ecx, dword [esp + 0x18]
call fcn.004aa760
lea eax, [esp + 0x80]
mov dword [esp + 0x18], eax
mov esi, dword [esp + 0x1c]
xor edi, edi
mov dword [esp + 0x20], 0
cmp byte [esi + 0x9b], 1
jb 0x4af0b3
movzx eax, word [esi + 0x9c]
test ax, ax
je 0x4af0b3
lea edx, [eax - 1]
jmp 0x4af0b5
xor edx, edx
push dword [esp + 0x14]
mov ecx, esi
push 1
push 0
push 0
call fcn.004ada60
add esp, 0x10
jmp case.0x4aecdb.73
mov eax, dword [esp + 0x14]
xor ebx, ebx
mov ecx, 0x2000
nop dword [eax]
mov esi, edi
sub esi, ebx
cmp esi, 0x2000
cmova esi, ecx
cmp dword [eax], 0
jne 0x4af12f
push 0
lea eax, [esp + 0x4c]
push eax
mov eax, dword [esp + 0x20]
push esi
lea eax, [eax + ebx*2]
push eax
mov eax, dword [esp + 0x2c]
push dword [eax + 0x90]
call dword [sym.imp.KERNEL32.dll_WriteConsoleW]
test eax, eax
jne 0x4af126
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov ecx, dword [esp + 0x14]
mov dword [ecx], eax
mov eax, ecx
jmp 0x4af12a
mov eax, dword [esp + 0x14]
mov ecx, 0x2000
add ebx, esi
cmp ebx, edi
jb 0x4af0e0
cmp dword [esp + 0x20], 0
je 0x4af150
mov ecx, dword [esp + 0x18]
call fcn.004aa760
lea eax, [esp + 0x80]
mov dword [esp + 0x18], eax
mov esi, dword [esp + 0x1c]
xor edi, edi
mov dword [esp + 0x20], 0
mov dl, byte [esi + 0x9b]
cmp dl, 1
jb 0x4af17a
movzx eax, word [esi + 0x9c]
test ax, ax
je 0x4af17a
lea ecx, [eax - 1]
jmp 0x4af17c
xor ecx, ecx
cmp dl, 2
jb 0x4af192
movzx eax, word [esi + 0x9e]
test ax, ax
je 0x4af192
lea edx, [eax - 1]
jmp 0x4af194
xor edx, edx
push dword [esp + 0x14]
push 0
push ecx
push 0
mov ecx, esi
call fcn.004ada60
add esp, 0x10
jmp case.0x4aecdb.73
xor ebx, ebx
nop
push dword [esp + 0x14]
mov ecx, dword [esp + 0x20]
mov esi, edi
sub esi, ebx
mov eax, 0x2000
cmp esi, 0x2000
cmova esi, eax
mov eax, dword [esp + 0x1c]
push esi
lea edx, [eax + ebx*2]
call fcn.004ada20
add ebx, esi
add esp, 8
cmp ebx, edi
jb 0x4af1b0
cmp dword [esp + 0x20], 0
je 0x4af1fb
mov ecx, dword [esp + 0x18]
call fcn.004aa760
lea eax, [esp + 0x80]
mov dword [esp + 0x18], eax
mov esi, dword [esp + 0x1c]
xor edi, edi
mov dword [esp + 0x20], 0
cmp byte [esi + 0x9b], 0
je 0x4af237
movzx edx, word [esi + 0x9c]
cmp edx, 2
ja case.0x4aecdb.73
push dword [esp + 0x14]
mov ecx, esi
push 1
call fcn.004adbd0
add esp, 8
jmp case.0x4aecdb.73
push dword [esp + 0x14]
xor edx, edx
mov ecx, esi
push 1
call fcn.004adbd0
add esp, 8
jmp case.0x4aecdb.73
xor ebx, ebx
push dword [esp + 0x14]
mov ecx, dword [esp + 0x20]
mov esi, edi
sub esi, ebx
mov eax, 0x2000
cmp esi, 0x2000
cmova esi, eax
mov eax, dword [esp + 0x1c]
push esi
lea edx, [eax + ebx*2]
call fcn.004ada20
add ebx, esi
add esp, 8
cmp ebx, edi
jb 0x4af250
cmp dword [esp + 0x20], 0
je 0x4af29b
mov ecx, dword [esp + 0x18]
call fcn.004aa760
lea eax, [esp + 0x80]
mov dword [esp + 0x18], eax
mov esi, dword [esp + 0x1c]
xor edi, edi
mov dword [esp + 0x20], 0
cmp byte [esi + 0x9b], 0
je 0x4af2d6
movzx edx, word [esi + 0x9c]
cmp edx, 2
ja case.0x4aecdb.73
push dword [esp + 0x14]
mov ecx, esi
push edi
call fcn.004adbd0
add esp, 8
jmp case.0x4aecdb.73
push dword [esp + 0x14]
xor edx, edx
mov ecx, esi
push edx
call fcn.004adbd0
add esp, 8
jmp case.0x4aecdb.73
xor ebx, ebx
nop
push dword [esp + 0x14]
mov ecx, dword [esp + 0x20]
mov esi, edi
sub esi, ebx
mov eax, 0x2000
cmp esi, 0x2000
cmova esi, eax
mov eax, dword [esp + 0x1c]
push esi
lea edx, [eax + ebx*2]
call fcn.004ada20
add ebx, esi
add esp, 8
cmp ebx, edi
jb 0x4af2f0
cmp dword [esp + 0x20], 0
je 0x4af33b
mov ecx, dword [esp + 0x18]
call fcn.004aa760
lea eax, [esp + 0x80]
mov dword [esp + 0x18], eax
mov esi, dword [esp + 0x1c]
xor edi, edi
mov edx, dword [esp + 0x14]
mov ecx, esi
call fcn.004add50
mov dword [esp + 0x20], edi
jmp case.0x4aecdb.73
xor ebx, ebx
nop word [eax + eax]
push dword [esp + 0x14]
mov ecx, dword [esp + 0x20]
mov esi, edi
sub esi, ebx
mov eax, 0x2000
cmp esi, 0x2000
cmova esi, eax
mov eax, dword [esp + 0x1c]
push esi
lea edx, [eax + ebx*2]
call fcn.004ada20
add ebx, esi
add esp, 8
cmp ebx, edi
jb 0x4af360
cmp dword [esp + 0x20], 0
je 0x4af3ab
mov ecx, dword [esp + 0x18]
call fcn.004aa760
lea eax, [esp + 0x80]
mov dword [esp + 0x18], eax
push dword [esp + 0x14]
mov esi, dword [esp + 0x20]
xor dl, dl
mov ecx, esi
xor edi, edi
call fcn.004ae0c0
add esp, 4
mov dword [esp + 0x20], edi
jmp case.0x4aecdb.73
xor ebx, ebx
nop dword [eax]
push dword [esp + 0x14]
mov ecx, dword [esp + 0x20]
mov esi, edi
sub esi, ebx
mov eax, 0x2000
cmp esi, 0x2000
cmova esi, eax
mov eax, dword [esp + 0x1c]
push esi
lea edx, [eax + ebx*2]
call fcn.004ada20
add ebx, esi
add esp, 8
cmp ebx, edi
jb 0x4af3d0
cmp dword [esp + 0x20], 0
je 0x4af41b
mov ecx, dword [esp + 0x18]
call fcn.004aa760
lea eax, [esp + 0x80]
mov dword [esp + 0x18], eax
push dword [esp + 0x14]
mov esi, dword [esp + 0x20]
xor dl, dl
mov ecx, esi
xor edi, edi
call fcn.004ae180
add esp, 4
mov dword [esp + 0x20], edi
jmp case.0x4aecdb.73
cmp dl, 1
jne case.0x4aecdb.73
cmp word [esi + 0x9c], 0x19
jne case.0x4aecdb.73
xor ebx, ebx
push dword [esp + 0x14]
mov ecx, dword [esp + 0x20]
mov esi, edi
sub esi, ebx
mov eax, 0x2000
cmp esi, 0x2000
cmova esi, eax
mov eax, dword [esp + 0x1c]
push esi
lea edx, [eax + ebx*2]
call fcn.004ada20
add ebx, esi
add esp, 8
cmp ebx, edi
jb 0x4af453
cmp dword [esp + 0x20], 0
je 0x4af49e
mov ecx, dword [esp + 0x18]
call fcn.004aa760
lea eax, [esp + 0x80]
mov dword [esp + 0x18], eax
xor edx, edx
jmp 0x4af510
cmp dl, 1
jne case.0x4aecdb.73
cmp word [esi + 0x9c], 0x19
jne case.0x4aecdb.73
xor ebx, ebx
nop dword [eax + eax]
push dword [esp + 0x14]
mov ecx, dword [esp + 0x20]
mov esi, edi
sub esi, ebx
mov eax, 0x2000
cmp esi, 0x2000
cmova esi, eax
mov eax, dword [esp + 0x1c]
push esi
lea edx, [eax + ebx*2]
call fcn.004ada20
add ebx, esi
add esp, 8
cmp ebx, edi
jb 0x4af4c0
cmp dword [esp + 0x20], 0
je 0x4af50b
mov ecx, dword [esp + 0x18]
call fcn.004aa760
lea eax, [esp + 0x80]
mov dword [esp + 0x18], eax
mov edx, 1
mov esi, dword [esp + 0x1c]
xor edi, edi
push dword [esp + 0x14]
mov ecx, esi
call fcn.004ae240
add esp, 4
mov dword [esp + 0x20], edi
jmp case.0x4aecdb.73
cmp edx, 0x40
jb case.0x4ae55d.27
mov ecx, dword [esp + 0x24]
cmp edx, 0x7e
ja 0x4ae7be
mov byte [esp + 0x13], 0
jmp 0x4ae7be
test cl, 8
je 0x4af6a1
test cl, 0x40
je 0x4af591
test cl, cl
js 0x4af585
cmp edx, 0x22
jne 0x4af570
and cl, 0xbf
mov byte [esp + 0x13], cl
jmp case.0x4ae55d.27
cmp edx, 0x5c
jne case.0x4ae55d.27
or cl, 0x80
mov byte [esp + 0x13], cl
jmp case.0x4ae55d.27
and cl, 0x7f
mov byte [esp + 0x13], cl
jmp case.0x4ae55d.27
cmp edx, 7
je case.0x4aecdb.73
cmp edx, 0x5c
jne 0x4af5b4
test cl, 2
jne case.0x4aecdb.73
and cl, 0xfd
mov byte [esp + 0x13], cl
jmp case.0x4ae55d.27
cmp edx, 0x1b
jne 0x4af5c5
or cl, 2
mov byte [esp + 0x13], cl
jmp case.0x4ae55d.27
cmp edx, 0x22
jne 0x4af5a8
and cl, 0x3d
or cl, 0x40
mov byte [esp + 0x13], cl
jmp case.0x4ae55d.27
cmp ebx, 0x2000
jbe 0x4af5fc
call fcn.004ceb5c
push dword [esp + 0x18]
mov esi, dword [eax]
call dword [0x53d644]
add esp, 4
call fcn.004ceb5c
mov dword [eax], esi
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov ecx, dword [esp + 0x14]
mov dword [ecx], eax
jmp 0x4ae7e9
mov ecx, dword [esp + 0x14]
mov eax, 0x2000
add ebx, esi
cmp ebx, edi
jb 0x4ae7f0
cmp dword [esp + 0x20], 0
je 0x4af642
call fcn.004ceb5c
push dword [esp + 0x18]
mov esi, dword [eax]
call dword [0x53d644]
add esp, 4
call fcn.004ceb5c
mov dword [eax], esi
mov ecx, dword [esp + 0x1c]
mov al, byte [esp + 0x2a]
push 0
push 1
mov byte [ecx + 0x98], al
mov eax, dword [esp + 0x34]
mov dword [ecx + 0x94], eax
mov al, byte [esp + 0x33]
mov byte [ecx + 0x99], al
mov al, byte [esp + 0x1b]
mov byte [ecx + 0x9a], al
push dword [0x545b4c]
call dword [sym.imp.KERNEL32.dll_ReleaseSemaphore]
test eax, eax
je 0x4af6a1
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x4084]
pop edi
pop esi
mov eax, dword [eax]
neg eax
pop ebx
sbb eax, eax
xor ecx, esp
call fcn.004c3717
mov esp, ebp
pop ebp
ret
call fcn.004cebb9
nop
mov edx, 0xa004ae7
out 74, eax
add byte [edi], bh
call 0xe5aef700
dec edx
add byte [esi], ah
in eax, 0x4a
add byte [esi - 0x1b], ch
dec edx
add dl, dh
call 0x64af710
push es
push es
push es
push es
push es
push es
push es
push es
push es
push es
push es
push es
push es
push es
push es
push es
push es
push es
push es
push es
push es
push es
push es
push es
push es
push es
add dword [edx], eax
push es
push es
push es
push es
push es
push es
push es
push es
push es
push es
push es
push es
push es
push es
push es
push es
push es
push es
push es
push es
push es
push es
push es
add eax, dword [esi]
push es
push es
push es
push es
push es
push es
push es
push es
push es
add al, 6
add eax, dword [ebx]
add eax, dword [esi]
push es
push es
add eax, -503308529
in al, dx
dec edx
add byte [ecx - 0x13], dh
dec edx
add dh, bh
in eax, dx
dec edx
add byte [ecx + 0x1b004aee], cl
out dx, eax
dec edx
add byte [ebx + 0x3d004aef], ch
invalid