Function at 0x4ab6d8
Capabilities:
Set current directory

Disassembly:
push rdi
push r12
push r13
push r14
push r15
mov eax, 0x11b0
call fcn.006e5e00
sub rsp, rax
mov qword [rsp + 0x160], 0xfffffffffffffffe
mov qword [rsp + 0x11e0], rbx
mov qword [rsp + 0x11e8], rsi
mov r15d, edx
xor ebx, ebx
mov dword [rsp + 0x11f0], ebx
mov r8d, 0x104
lea rdx, [rsp + 0x3f0]
xor ecx, ecx
call qword [sym.imp.KERNEL32.dll_GetModuleFileNameW]
lea edx, [rbx + 0x5c]
lea rcx, [rsp + 0x3f0]
call fcn.006a86d4
cmp rax, rbx
je 0x4ab745
mov word [rax], bx
lea rcx, [rsp + 0x3f0]
call qword [sym.imp.KERNEL32.dll_SetCurrentDirectoryW]
mov edi, ebx
lea rcx, str.comctl32.dll
call qword [sym.imp.KERNEL32.dll_LoadLibraryW]
mov rsi, rax
cmp rax, rbx
je 0x4ab7c8
lea rdx, str.DllGetVersion
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov r12, rax
cmp rax, rbx
je 0x4ab7b7
mov r13d, reloc.WS2_32.dll_sendto
mov r8, r13
xor edx, edx
lea rcx, [rsp + 0x70]
call fcn.006aba40
mov dword [rsp + 0x70], r13d
lea rcx, [rsp + 0x70]
call r12
cmp eax, ebx
jl 0x4ab7b7
movzx edi, word [rsp + 0x74]
shl edi, 0x10
movzx eax, word [rsp + 0x78]
or edi, eax
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_FreeLibrary]
cmp edi, 0x50050
jae 0x4ab7e1
xor r9d, r9d
lea r8, str.User_Interface_Warning
lea rdx, str.Your_version_of_windows_common_controls_is_too_old_for_greylink_to_run_correctly__and_you_will_most_probably_experience_problems_with_the_user_interface._You_should_download_version_5.80_or_higher_from_the_DC_homepage_or_from_Microsoft_directly.
xor ecx, ecx
call qword [sym.imp.USER32.dll_MessageBoxW]
lea rax, [0x0079a510]
mov qword [rsp + 0xb0], rax
mov qword [rsp + 0xb8], rbx
mov dword [rsp + 0xc0], ebx
mov dword [rsp + 0xc4], ebx
mov qword [rsp + 0xc8], rbx
mov dword [rsp + 0xd0], ebx
mov dword [rsp + 0xd4], ebx
mov rsi, qword [0x00862cb0]
lea rcx, [rsi + 0x18]
call qword [sym.imp.KERNEL32.dll_EnterCriticalSection]
call qword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
mov r12d, eax
mov rdi, qword [0x00867308]
mov ecx, dword [rdi + 0x10]
mov r13d, 1
add ecx, r13d
movsxd rdx, ecx
lea r8d, [r13 + 3]
mov rcx, qword [rdi]
call fcn.006a5398
cmp rax, rbx
je 0x4ab8ae
mov qword [rdi], rax
mov eax, dword [rdi + 0x10]
add eax, r13d
movsxd rdx, eax
lea r8d, [r13 + 7]
mov rcx, qword [rdi + 8]
call fcn.006a5398
cmp rax, rbx
je 0x4ab8ae
mov qword [rdi + 8], rax
movsxd rdx, dword [rdi + 0x10]
mov rax, qword [rdi]
lea rcx, [rax + rdx*4]
cmp rcx, rbx
je 0x4ab892
mov dword [rcx], r12d
mov rax, qword [rdi + 8]
lea rcx, [rax + rdx*8]
cmp rcx, rbx
je 0x4ab8aa
lea rax, [rsp + 0xb0]
mov qword [rcx], rax
add dword [rdi + 0x10], r13d
lea rcx, [rsi + 0x18]
call qword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov qword [rsp + 0xa0], rbx
mov qword [rsp + 0x11f8], rbx
mov dword [rsp + 0x28], 0xa040
mov dword [rsp + 0x20], ebx
xor r9d, r9d
xor r8d, r8d
mov edx, 0xf0
mov rcx, qword [0x00861bd8]
call qword [sym.imp.USER32.dll_LoadImageW]
mov qword [0x00862e08], rax
lea r8, [rsp + 0x140]
mov edi, 0x20
mov edx, edi
mov rcx, rax
call qword [sym.imp.GDI32.dll_GetObjectW]
mov r11d, dword [rsp + 0x144]
mov dword [0x00862e00], r11d
mov eax, dword [rsp + 0x148]
mov dword [0x00862e04], eax
xor ecx, ecx
call qword [sym.imp.USER32.dll_GetDC]
mov r14, rax
mov dword [rsp + 0x60], ebx
mov dword [rsp + 0x64], ebx
mov dword [rsp + 0x68], ebx
mov dword [rsp + 0x6c], ebx
lea edx, [rdi - 0x16]
mov rcx, rax
call qword [sym.imp.GDI32.dll_GetDeviceCaps]
mov r11d, eax
mov dword [rsp + 0x6c], eax
mov eax, dword [0x00862e04]
cdq
sub eax, edx
sar eax, 1
mov ecx, eax
mov eax, r11d
cdq
sub eax, edx
sar eax, 1
sub eax, ecx
mov dword [rsp + 0x64], eax
lea edx, [rdi - 0x18]
mov rcx, r14
call qword [sym.imp.GDI32.dll_GetDeviceCaps]
mov r11d, eax
mov dword [rsp + 0x68], eax
mov ecx, dword [0x00862e00]
mov eax, ecx
cdq
sub eax, edx
sar eax, 1
mov r8d, eax
mov eax, r11d
cdq
sub eax, edx
sar eax, 1
sub eax, r8d
mov dword [rsp + 0x60], eax
cmp word [rsp + 0x152], di
jne 0x4abab9
xor r9d, r9d
lea r8d, [rdi - 8]
mov edx, dword [0x00862e04]
call fcn.00568bb4
mov r12, rax
mov rcx, r14
call qword [sym.imp.GDI32.dll_CreateCompatibleDC]
mov rsi, rax
mov rdx, r12
mov rcx, rax
call qword [sym.imp.GDI32.dll_SelectObject]
mov dword [rsp + 0x40], 0xcc0020
mov ecx, dword [rsp + 0x64]
mov dword [rsp + 0x38], ecx
mov ecx, dword [rsp + 0x60]
mov dword [rsp + 0x30], ecx
mov qword [rsp + 0x28], r14
mov ecx, dword [0x00862e04]
mov dword [rsp + 0x20], ecx
mov r9d, dword [0x00862e00]
xor r8d, r8d
xor edx, edx
mov rcx, rsi
call qword [sym.imp.GDI32.dll_BitBlt]
mov rcx, rsi
call qword [sym.imp.GDI32.dll_CreateCompatibleDC]
mov rdi, rax
mov rdx, qword [0x00862e08]
mov rcx, rax
call qword [sym.imp.GDI32.dll_SelectObject]
mov byte [rsp + 0x11f0], bl
mov byte [rsp + 0x11f1], bl
mov byte [rsp + 0x11f2], 0xff
mov byte [rsp + 0x11f3], r13b
mov ecx, dword [rsp + 0x11f0]
mov dword [rsp + 0x50], ecx
mov ecx, dword [0x00862e04]
mov dword [rsp + 0x48], ecx
mov r9d, dword [0x00862e00]
mov dword [rsp + 0x40], r9d
mov dword [rsp + 0x38], ebx
mov dword [rsp + 0x30], ebx
mov qword [rsp + 0x28], rdi
mov dword [rsp + 0x20], ecx
xor r8d, r8d
xor edx, edx
mov rcx, rsi
call qword [sym.imp.MSIMG32.dll_AlphaBlend]
mov rcx, rdi
call qword [sym.imp.GDI32.dll_DeleteDC]
mov rcx, rsi
call qword [sym.imp.GDI32.dll_DeleteDC]
mov rcx, qword [0x00862e08]
mov qword [0x00862e08], r12
call qword [sym.imp.GDI32.dll_DeleteObject]
mov rdx, r14
xor ecx, ecx
call qword [sym.imp.USER32.dll_ReleaseDC]
mov qword [rsp + 0x40], rbx
mov qword [rsp + 0x38], rbx
mov dword [rsp + 0x30], 0x20000
mov dword [rsp + 0x28], 0x86000801
lea r8, str.greylink_5.98
mov qword [rsp + 0x20], r8
lea r9, [rsp + 0x60]
xor r8d, r8d
lea rdx, str.EDIT
lea rcx, [rsp + 0xa0]
call fcn.00407d50
call qword [sym.imp.USER32.dll_GetDesktopWindow]
mov r8, rax
mov qword [rsp + 0x40], rbx
mov qword [rsp + 0x38], rbx
mov dword [rsp + 0x30], ebx
mov dword [rsp + 0x28], 0x9000008a
mov qword [rsp + 0x20], rbx
lea r9, [0x0085ebf8]
lea rdx, [0x0079a3c8]
lea rcx, [rsp + 0x11f8]
call fcn.00407d50
mov ecx, reloc.WS2_32.dll_recvfrom
call qword [sym.imp.GDI32.dll_GetStockObject]
mov r9, r13
mov r8, rax
mov edx, gethostbyname
mov rdi, qword [rsp + 0x11f8]
mov rcx, rdi
call qword [sym.imp.USER32.dll_SendMessageW]
mov rcx, rdi
call qword [sym.imp.USER32.dll_GetDC]
mov edx, dword [0x00862e00]
mov ecx, dword [rsp + 0x60]
add edx, ecx
mov dword [rsp + 0x68], edx
mov edx, dword [rsp + 0x64]
mov ecx, dword [0x00862e04]
add edx, ecx
mov dword [rsp + 0x6c], edx
mov rdx, rax
mov rcx, rdi
call qword [sym.imp.USER32.dll_ReleaseDC]
mov rcx, rdi
call qword [sym.imp.USER32.dll_HideCaret]
mov r11d, dword [rsp + 0x6c]
mov r9d, dword [rsp + 0x64]
sub r11d, r9d
mov eax, dword [rsp + 0x68]
mov r8d, dword [rsp + 0x60]
sub eax, r8d
mov dword [rsp + 0x30], 0x40
mov dword [rsp + 0x28], r11d
mov dword [rsp + 0x20], eax
xor edx, edx
mov rcx, rdi
call qword [sym.imp.USER32.dll_SetWindowPos]
lea r8, [0x004ab35c]
mov edx, 0xfffffffc
mov rcx, rdi
call qword [sym.imp.USER32.dll_SetWindowLongPtrW]
lea r8, [0x0079a3ec]
lea rdx, str.5.98__x64_
lea rcx, [0x0085e1e0]
call fcn.00406b9c
mov rcx, rdi
call qword [sym.imp.USER32.dll_SetFocus]
mov r9d, 0x105
xor r8d, r8d
xor edx, edx
mov rcx, rdi
call qword [sym.imp.USER32.dll_RedrawWindow]
mov qword [0x008668d0], rdi
call fcn.00580bd0
mov rcx, qword [0x008bb580]
cmp rcx, rbx
je 0x4abc4b
mov rax, qword [rcx]
mov edx, r13d
call qword [rax]
mov ecx, 0x28
call fcn.006a494c
mov rsi, rax
mov qword [rsp + 0x11f0], rax
cmp rax, rbx
je 0x4abc9c
lea rdx, [rax + 8]
lea rax, [0x0079ca48]
mov qword [rsi], rax
lea rax, [0x0079ca50]
mov qword [rdx], rax
mov qword [rsi + 0x10], rbx
mov qword [rsi + 0x18], rbx
mov qword [rsi + 0x20], rbx
mov rcx, qword [0x00862cb8]
add rcx, 8
call fcn.004063e8
nop
jmp 0x4abc9f
mov rsi, rbx
mov qword [0x008bb580], rsi
mov rcx, qword [0x008bb578]
cmp rcx, rbx
je 0x4abcba
mov rax, qword [rcx]
mov edx, r13d
call qword [rax]
mov ecx, 0x68
call fcn.006a494c
mov rsi, rax
mov qword [rsp + 0x11f0], rax
cmp rax, rbx
je 0x4abd3d
lea rdx, [rax + 8]
lea rax, [0x0079a578]
mov qword [rsi], rax
lea rax, [0x0079a580]
mov qword [rdx], rax
lea rax, [rsi + 0x10]
xor ecx, ecx
mov qword [rsp + 0x70], rcx
mov qword [rsp + 0x78], rcx
movdqu xmm0, xmmword [rsp + 0x70]
movdqu xmmword [rax], xmm0
mov qword [rax], rax
mov qword [rax + 8], rax
mov byte [rsi + 0x20], 0x5a
mov byte [rsi + 0x21], 0xc8
mov word [rsi + 0x22], bx
lea rax, [rsi + 0x30]
mov qword [rax + 0x20], rax
mov qword [rax + 0x28], rax
mov rax, qword [rax + 0x20]
mov byte [rax], bl
mov dword [rsi + 0x64], ebx
mov rcx, qword [0x00862d30]
call fcn.004063e8
nop
jmp 0x4abd40
mov rsi, rbx
mov qword [0x008bb578], rsi
mov ecx, gethostname
call fcn.006a494c
mov r14, rax
mov qword [rsp + 0x11f8], rax
cmp rax, rbx
je 0x4abdb3
mov qword [rax + 8], rbx
mov qword [rax + 0x10], rbx
mov qword [rax + 0x18], rbx
mov qword [rax + 0x20], rbx
mov qword [rax + 0x28], rbx
mov dword [rax + 0x30], 0x3f800000
xor ecx, ecx
call fcn.006a3f70
lea rsi, [r13 + rax]
mov rdx, rsi
lea rcx, [r14 + 0x10]
call fcn.00403fe0
mov qword [rsp + 0x11f0], rbx
lea r8, [rsp + 0x11f0]
mov rdx, rsi
lea rcx, [r14 + 0x10]
call fcn.00403d94
nop
jmp 0x4abdb6
mov r14, rbx
mov qword [0x00865390], r14
mov rcx, qword [0x00862d28]
cmp rcx, rbx
je 0x4abdd1
mov rax, qword [rcx]
mov edx, r13d
call qword [rax]
mov ecx, 0x130
call fcn.006a494c
mov qword [rsp + 0x11f0], rax
cmp rax, rbx
je 0x4abdf2
mov rcx, rax
call fcn.004acec4
jmp 0x4abdf5
mov rax, rbx
mov qword [0x00862d28], rax
lea rcx, [fcn.004ab69c]
call fcn.005815c8
lea rcx, [0x0087d730]
call fcn.004ab69c
mov rcx, qword [0x00862d28]
call fcn.0044a4ec
lea rcx, [0x0085e850]
call fcn.004ab69c
mov rcx, qword [0x00862d38]
cmp rcx, rbx
je 0x4abe40
mov rax, qword [rcx]
mov edx, r13d
call qword [rax]
mov ecx, 0x58
call fcn.006a494c
mov rsi, rax
mov qword [rsp + 0x11f0], rax
cmp rax, rbx
je 0x4abe99
lea rax, [0x0079a570]
mov qword [rsi], rax
lea rcx, [rsi + 8]
mov qword [rcx], rbx
mov qword [rcx + 8], rbx
mov qword [rcx + 0x10], rbx
mov qword [rcx + 0x18], rbx
mov qword [rcx + 0x20], rbx
mov qword [rcx + 0x28], rbx
mov qword [rcx + 0x30], rbx
mov qword [rcx + 0x38], rbx
mov qword [rcx + 0x40], rbx
mov qword [rcx + 0x48], rbx
xor edx, edx
call fcn.004ad1d8
nop
jmp 0x4abe9c
mov rsi, rbx
mov qword [0x00862d38], rsi
mov rcx, qword [0x00862d68]
cmp rcx, rbx
je 0x4abeb7
mov rax, qword [rcx]
mov edx, r13d
call qword [rax]
mov ecx, 0x160
call fcn.006a494c
mov qword [rsp + 0x11f0], rax
cmp rax, rbx
je 0x4abed8
mov rcx, rax
call fcn.00546d58
jmp 0x4abedb
mov rax, rbx
mov qword [0x00862d68], rax
mov rcx, qword [0x00862cd8]
cmp rcx, rbx
je 0x4abef6
mov rax, qword [rcx]
mov edx, r13d
call qword [rax]
mov ecx, 0x90
call fcn.006a494c
mov qword [rsp + 0x11f0], rax
cmp rax, rbx
je 0x4abf17
mov rcx, rax
call fcn.004107f8
jmp 0x4abf1a
mov rax, rbx
mov qword [0x00862cd8], rax
mov rcx, qword [0x00862d20]
cmp rcx, rbx
je 0x4abf35
mov rax, qword [rcx]
mov edx, r13d
call qword [rax]
mov ecx, 0xa8
call fcn.006a494c
mov qword [rsp + 0x11f0], rax
cmp rax, rbx
je 0x4abf56
mov rcx, rax
call fcn.00524520
jmp 0x4abf59
mov rax, rbx
mov qword [0x00862d20], rax
mov rcx, rdi
call qword [sym.imp.USER32.dll_DestroyWindow]
mov rcx, qword [rsp + 0xa0]
call qword [sym.imp.USER32.dll_DestroyWindow]
mov rcx, qword [0x00862e08]
call qword [sym.imp.GDI32.dll_DeleteObject]
lea r8, str.WriteProbe.xml
lea rdx, [0x0085e958]
lea rcx, [rsp + 0x110]
call fcn.00402658
nop
mov r9d, 6
mov r8d, 0x40000000
lea rdx, [rsp + 0x110]
lea rcx, [rsp + 0x70]
call fcn.005944d4
lea rax, [0x007955b8]
mov qword [rsp + 0x70], rax
lea rax, [0x007955c8]
mov qword [rsp + 0x78], rax
lea rcx, [rsp + 0x70]
call fcn.0059492c
nop
lea rcx, [rsp + 0x110]
call fcn.00594f58
cmp byte [0x008669f1], bl
jne 0x4ac01b
call fcn.005692b8
cmp al, bl
je 0x4ac01b
mov r9d, gethostbyname
mov r8, qword [0x0086d738]
mov rdx, qword [0x0087d1d8]
xor ecx, ecx
call qword [sym.imp.USER32.dll_MessageBoxW]
mov rax, qword [0x00862c90]
cmp byte [rax + 8], bl
je 0x4ac030
mov ecx, r13d
call qword [sym.imp.USER32.dll_SetProcessDefaultLayout]
lea rcx, [rsp + 0x600]
call fcn.004b662c
nop
lea rdx, [0x0085ebf8]
lea rcx, [rsp + 0x60]
call qword [sym.imp.USER32.dll_CopyRect]
mov rdi, qword [0x00862cb8]
cmp byte [rdi + 0x2f2c], bl
jne 0x4ac07a
mov rcx, qword [rdi + 0xb8]
cmp rcx, rbx
je 0x4ac07a
mov edx, 0xac
call fcn.004083bc
mov r11, rax
jmp 0x4ac081
lea r11, [rdi + 0x2100]
mov rax, qword [r11 + 0x28]
cmp rax, qword [r11 + 0x20]
je 0x4ac10f
cmp byte [rdi + 0x2f2c], bl
jne 0x4ac0af
mov rcx, qword [rdi + 0xb8]
cmp rcx, rbx
je 0x4ac0af
mov edx, 0xac
call fcn.004083bc
jmp 0x4ac0b6
lea rax, [rdi + 0x2100]
mov rdx, rax
lea rcx, [rsp + 0x70]
call fcn.0055a644
movdqu xmm0, xmmword [rax]
movdqu xmmword [rsp + 0x60], xmm0
cmp dword [rsp + 0x60], ebx
jl 0x4ac0fd
mov rcx, qword [rsp + 0x60]
shr rcx, 0x20
cmp ecx, ebx
jl 0x4ac0fd
mov eax, dword [rsp + 0x68]
sub eax, dword [rsp + 0x60]
cmp eax, 0xa
jl 0x4ac0fd
mov rax, qword [rsp + 0x68]
shr rax, 0x20
sub eax, ecx
cmp eax, 0xa
jge 0x4ac10f
lea rdx, [0x0085ebf8]
lea rcx, [rsp + 0x60]
call qword [sym.imp.USER32.dll_CopyRect]
mov rax, qword [0x00862c90]
mov cl, byte [rax + 8]
neg cl
sbb esi, esi
and esi, 0x2000
mov word [rsp + 0x1f0], bx
mov edi, 0x100
mov r9d, edi
lea r8, [rsp + 0x1f0]
mov edx, dword [0x0085fed8]
mov rcx, qword [0x00861be0]
call qword [sym.imp.USER32.dll_LoadStringW]
movzx edx, word [0x0085fed8]
mov rcx, qword [0x00861be0]
call qword [sym.imp.USER32.dll_LoadMenuW]
mov r12, rax
mov eax, 0x40100
or esi, eax
mov qword [rsp + 0x618], r12
lea rdx, [rsp + 0x650]
lea rcx, [0x0085fe40]
call fcn.004447a8
movzx r14d, ax
cmp esi, ebx
mov eax, 0x40100
cmove esi, eax
cmp r14w, bx
je 0x4ac64e
lea rax, [rsp + 0x600]
mov qword [rsp + 0x620], rax
call qword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
mov dword [rsp + 0x628], eax
lea rcx, [0x00861b88]
call qword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov r11, qword [0x00861bb0]
mov qword [rsp + 0x630], r11
lea rax, [rsp + 0x620]
mov qword [0x00861bb0], rax
lea rcx, [0x00861b88]
call qword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov r11d, dword [rsp + 0x6c]
mov r10d, dword [rsp + 0x64]
sub r11d, r10d
mov r8d, dword [rsp + 0x68]
mov r9d, dword [rsp + 0x60]
sub r8d, r9d
movzx edx, r14w
mov qword [rsp + 0x58], rbx
mov rax, qword [0x00861bd8]
mov qword [rsp + 0x50], rax
mov qword [rsp + 0x48], r12
mov qword [rsp + 0x40], rbx
mov dword [rsp + 0x38], r11d
mov dword [rsp + 0x30], r8d
mov dword [rsp + 0x28], r10d
mov dword [rsp + 0x20], r9d
mov r9d, 0x6cf0000
lea r8, [rsp + 0x1f0]
mov ecx, esi
call qword [sym.imp.USER32.dll_CreateWindowExW]
cmp rax, rbx
je 0x4ac64e
movzx edx, word [0x0085fed8]
mov rcx, qword [0x00861be0]
call qword [sym.imp.USER32.dll_LoadAcceleratorsW]
mov qword [rsp + 0x670], rax
mov qword [rsp + 0x11f8], rbx
lea r8, [rsp + 0x11f0]
lea rdx, str.startup.lua
lea rcx, [rsp + 0x70]
call fcn.004021a8
nop
lea r8, [rsp + 0x11f8]
lea rdx, [rsp + 0x70]
mov rcx, qword [0x008bb560]
call fcn.00611654
nop
lea rax, [rsp + 0x70]
mov rcx, qword [rsp + 0x98]
cmp rcx, rax
je 0x4ac2ea
cmp rcx, rbx
je 0x4ac2ea
mov rdx, qword [rsp + 0x70]
sub rdx, rcx
cmp rdx, rdi
jbe 0x4ac2e4
call fcn.006a4944
jmp 0x4ac2ea
call fcn.006a3610
nop
mov rsi, qword [0x00862cb8]
cmp byte [rsi + 0x313b], bl
jne 0x4ac311
mov rcx, qword [rsi + 0xb8]
cmp rcx, rbx
je 0x4ac311
mov edx, 0x2bb
call fcn.0041024c
jmp 0x4ac317
mov al, byte [rsi + 0x2d5c]
cmp al, bl
je 0x4ac330
mov edx, 2
mov rcx, qword [rsp + 0x608]
call qword [sym.imp.USER32.dll_ShowWindow]
jmp 0x4ac376
cmp r15d, 0xa
je 0x4ac33b
cmp r15d, r13d
jne 0x4ac365
cmp byte [rsi + 0x2f7a], bl
jne 0x4ac35e
mov rcx, qword [rsi + 0xb8]
cmp rcx, rbx
je 0x4ac35e
mov edx, 0xfa
call fcn.0040a51c
mov r15d, eax
jmp 0x4ac365
mov r15d, dword [rsi + 0x280c]
mov edx, r15d
mov rcx, qword [rsp + 0x608]
call qword [sym.imp.USER32.dll_ShowWindow]
mov esi, r13d
mov r12d, ebx
cmp esi, ebx
je 0x4ac3c1
mov dword [rsp + 0x20], ebx
xor r9d, r9d
xor r8d, r8d
xor edx, edx
lea rcx, [rsp + 0xd8]
call qword [sym.imp.USER32.dll_PeekMessageW]
cmp eax, ebx
jne 0x4ac3c1
mov edx, r12d
lea rcx, [rsp + 0xb0]
mov rax, qword [rsp + 0xb0]
call qword [rax + reloc.WS2_32.dll_htonl]
add r12d, r13d
cmp eax, ebx
jne 0x4ac3bd
mov esi, ebx
cmp esi, ebx
jne 0x4ac380
xor r9d, r9d
xor r8d, r8d
xor edx, edx
lea rcx, [rsp + 0xd8]
call qword [sym.imp.USER32.dll_GetMessageW]
cmp eax, 0xffffffff
je 0x4ac37c
cmp eax, ebx
je 0x4ac454
lea rdx, [rsp + 0xd8]
lea rcx, [rsp + 0xb0]
mov rax, qword [rsp + 0xb0]
call qword [rax]
cmp eax, ebx
jne 0x4ac41a
lea rcx, [rsp + 0xd8]
call qword [sym.imp.USER32.dll_TranslateMessage]
lea rcx, [rsp + 0xd8]
call qword [sym.imp.USER32.dll_DispatchMessageW]
mov eax, dword [rsp + 0xe0]
sub eax, 0xf
je 0x4ac37c
sub eax, 0x91
je 0x4ac37c
sub eax, 0x78
je 0x4ac37c
cmp eax, 0xe8
je 0x4ac37c
mov esi, r13d
mov r12d, ebx
jmp 0x4ac37c
lea rcx, [rsp + 0x600]
call fcn.004b6c70
xor ecx, ecx
call fcn.00581be4
mov rcx, qword [0x00862d20]
cmp rcx, rbx
je 0x4ac47c
mov rax, qword [rcx]
mov edx, r13d
call qword [rax]
mov qword [0x00862d20], rbx
mov rcx, qword [0x00862cd8]
cmp rcx, rbx
je 0x4ac497
mov rax, qword [rcx]
mov edx, r13d
call qword [rax]
mov qword [0x00862cd8], rbx
mov rcx, qword [0x00862d68]
cmp rcx, rbx
je 0x4ac4b2
mov rax, qword [rcx]
mov edx, r13d
call qword [rax]
mov qword [0x00862d68], rbx
mov rcx, qword [0x00862d28]
cmp rcx, rbx
je 0x4ac4cd
mov rax, qword [rcx]
mov edx, r13d
call qword [rax]
mov qword [0x00862d28], rbx
mov rsi, qword [0x00865390]
cmp rsi, rbx
je 0x4ac4f0
mov rcx, rsi
call fcn.004ea940
mov rcx, rsi
call fcn.006a4944
mov rcx, qword [0x008bb578]
cmp rcx, rbx
je 0x4ac504
mov rax, qword [rcx]
mov edx, r13d
call qword [rax]
mov qword [0x008bb578], rbx
mov rcx, qword [0x008bb580]
cmp rcx, rbx
je 0x4ac51f
mov rax, qword [rcx]
mov edx, r13d
call qword [rax]
mov qword [0x008bb580], rbx
mov rcx, qword [0x00862d38]
cmp rcx, rbx
je 0x4ac53a
mov rax, qword [rcx]
mov edx, r13d
call qword [rax]
mov qword [0x00862d38], rbx
call fcn.005821fc
mov rsi, qword [0x00862cb0]
add rsi, 0x18
mov qword [rsp + 0x70], rsi
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov byte [rsp + 0x78], r13b
call qword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
mov r9, qword [0x00867308]
mov r8d, ebx
cmp dword [r9 + 0x10], ebx
jle 0x4ac58e
movsxd rdx, r8d
mov rcx, qword [r9]
cmp dword [rcx + rdx*4], eax
je 0x4ac592
add r8d, r13d
cmp r8d, dword [r9 + 0x10]
jl 0x4ac57a
or r8d, 0xffffffff
cmp r8d, 0xffffffff
je 0x4ac5a3
mov edx, r8d
mov rcx, r9
call fcn.004ad3e0
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
nop
lea rax, [rsp + 0x110]
mov rcx, qword [rsp + 0x138]
cmp rcx, rax
je 0x4ac5e4
cmp rcx, rbx
je 0x4ac5e4
mov rdx, qword [rsp + 0x110]
sub rdx, rcx
cmp rdx, rdi
jbe 0x4ac5de
call fcn.006a4944
jmp 0x4ac5e4
call fcn.006a3610
nop
lea rdi, [rsp + 0xc8]
cmp qword [rsp + 0xc8], rbx
je 0x4ac614
mov eax, ebx
cmp dword [rsp + 0xd0], ebx
jle 0x4ac609
add eax, r13d
cmp eax, dword [rdi + 8]
jl 0x4ac601
mov rcx, qword [rdi]
call fcn.006a5528
mov qword [rdi], rbx
mov dword [rdi + 8], ebx
mov dword [rdi + 0xc], ebx
lea rdi, [rsp + 0xb8]
cmp qword [rsp + 0xb8], rbx
je 0x4ac647
mov eax, ebx
cmp dword [rsp + 0xc0], ebx
jle 0x4ac63f
add eax, r13d
cmp eax, dword [rdi + 8]
jl 0x4ac637
mov rcx, qword [rdi]
call fcn.006a5528
mov eax, ebx
jmp 0x4ac6f8
lea rcx, [rsp + 0x600]
call fcn.004b6c70
nop
lea rax, [rsp + 0x110]
mov rcx, qword [rsp + 0x138]
cmp rcx, rax
je 0x4ac693
cmp rcx, rbx
je 0x4ac693
mov rdx, qword [rsp + 0x110]
sub rdx, rcx
cmp rdx, rdi
jbe 0x4ac68d
call fcn.006a4944
jmp 0x4ac693
call fcn.006a3610
nop
lea rdi, [rsp + 0xc8]
cmp qword [rsp + 0xc8], rbx
je 0x4ac6c3
mov eax, ebx
cmp dword [rsp + 0xd0], ebx
jle 0x4ac6b8
add eax, r13d
cmp eax, dword [rdi + 8]
jl 0x4ac6b0
mov rcx, qword [rdi]
call fcn.006a5528
mov qword [rdi], rbx
mov dword [rdi + 8], ebx
mov dword [rdi + 0xc], ebx
lea rdi, [rsp + 0xb8]
cmp qword [rsp + 0xb8], rbx
je 0x4ac6f6
mov eax, ebx
cmp dword [rsp + 0xc0], ebx
jle 0x4ac6ee
add eax, r13d
cmp eax, dword [rdi + 8]
jl 0x4ac6e6
mov rcx, qword [rdi]
call fcn.006a5528
mov eax, ebx
lea r11, [rsp + 0x11b0]
mov rbx, qword [r11 + 0x30]
mov rsi, qword [r11 + 0x38]
mov rsp, r11
pop r15
pop r14
pop r13
pop r12
pop rdi
ret