Function at 0x100012a0
Capabilities:
Check for time delay via queryperformancecounter
Create thread
Execute anti-debugging instructions
Initialize winsock library
Query environment variable
Resolve dns
Set socket configuration

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffff000
mov eax, 0x2ff4
call fcn.10005420
mov eax, dword [0x10017004]
xor eax, esp
mov dword [esp + 0x2ff0], eax
cmp dword [0x109ba670], 0
push ebx
push esi
push edi
je 0x100012e7
mov eax, str.already_initialized
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x2ff0]
xor ecx, esp
call fcn.10005356
mov esp, ebp
pop ebp
ret
push 0x2000
push 0
push 0x10018000
call fcn.10006600
push 0x800660
push 0
push 0x1001a000
call fcn.10006600
rdtsc
mov dword [0x1001a000], eax
add esp, 0x18
mov dword [0x1001a004], edx
mov eax, 0x1001a208
mov dword [0x1021a650], 0
mov dword [0x1021a654], 0
mov dword [0x1081a658], 1
mov dword [0x1081a65c], 0
test al, 3
je 0x10001364
mov eax, str.LZ4_initStream_failed
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x2ff0]
xor ecx, esp
call fcn.10005356
mov esp, ebp
pop ebp
ret
push 0x100014
push 0
push 0x1001a208
call fcn.10006600
add esp, 0xc
push str.byondcore.dll
call dword [sym.imp.KERNEL32.dll_GetModuleHandleA]
mov esi, eax
test esi, esi
jne 0x100013a3
mov eax, str.unable_to_find_base_address_of_byondcore.dll
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x2ff0]
xor ecx, esp
call fcn.10005356
mov esp, ebp
pop ebp
ret
push str._GetByondBuild_ByondLib__QAEJXZ
push esi
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
test eax, eax
jne 0x100013cd
mov eax, str.unable_to_find_GetByondBuild
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x2ff0]
xor ecx, esp
call fcn.10005356
mov esp, ebp
pop ebp
ret
call eax
add eax, 0xfffff9f9
cmp eax, 0x5d
ja 0x10001d2e
lea eax, [eax + eax*8]
lea edx, [eax*4 + 0x100101d0]
xor eax, eax
nop dword [eax]
cmp dword [edx + eax*4], 0
je 0x10001d2e
inc eax
cmp eax, 9
jl 0x100013f0
mov eax, dword [edx]
add eax, esi
mov ecx, dword [edx + 0x10]
mov dword [0x10018000], eax
mov eax, dword [edx + 4]
add eax, esi
mov bl, byte [edx + 0x22]
mov dword [0x10018004], eax
mov eax, dword [edx + 8]
add eax, esi
mov dword [0x10018008], eax
add eax, 4
mov dword [0x1001800c], eax
mov eax, dword [edx + 0xc]
add eax, esi
mov dword [0x10018010], eax
add eax, 4
mov dword [0x10018014], eax
movzx eax, cl
mov dword [0x10018018], eax
mov eax, ecx
shr eax, 8
movzx eax, al
mov dword [0x1001801c], eax
shr ecx, 0x10
movzx eax, cl
mov ecx, dword [edx + 0x14]
mov dword [0x10018020], eax
add ecx, esi
mov eax, dword [edx + 0x18]
add eax, esi
mov dword [0x10018024], ecx
mov dword [0x1001802c], eax
mov eax, dword [edx + 0x1c]
add eax, esi
mov dword [0x10018034], eax
mov al, byte [edx + 0x21]
mov dword [esp + 0xff0], eax
movzx eax, byte [edx + 0x20]
push 0x10019000
push eax
push ecx
push 0x10001010
call fcn.100011c0
add esp, 0x10
mov dword [0x10018028], eax
test eax, eax
jne 0x100014c1
mov eax, str.failed_to_hook_exec_proc
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x2ff0]
xor ecx, esp
call fcn.10005356
mov esp, ebp
pop ebp
ret
push 0x10019020
push dword [esp + 0xff4]
push dword [0x1001802c]
push 0x10001e50
call fcn.100011c0
add esp, 0x10
mov dword [0x10018030], eax
test eax, eax
jne 0x10001503
mov eax, str.failed_to_hook_server_tick
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x2ff0]
xor ecx, esp
call fcn.10005356
mov esp, ebp
pop ebp
ret
push 0x10019040
push ebx
push dword [0x10018034]
push 0x10001d50
call fcn.100011c0
add esp, 0x10
mov dword [0x10018038], eax
test eax, eax
jne 0x1000153f
mov eax, str.failed_to_hook_send_maps
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x2ff0]
xor ecx, esp
call fcn.10005356
mov esp, ebp
pop ebp
ret
lea eax, [esp + 0x2f8c]
push eax
push 0x20
push 0x1000
push 0x10019000
call dword [sym.imp.KERNEL32.dll_VirtualProtect]
test eax, eax
jne 0x10001577
mov eax, str.failed_to_set_trampoline_access_protection
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x2ff0]
xor ecx, esp
call fcn.10005356
mov esp, ebp
pop ebp
ret
mov ecx, dword [0x10018020]
xor eax, eax
mov esi, dword [0x10018014]
mov edx, 0x1081a668
mov dword [esp + 0x2f40], ecx
mov ecx, dword [0x1001801c]
mov dword [esp + 0x2f3c], ecx
mov ecx, dword [0x10018018]
mov dword [esp + 0x2f18], ecx
mov ecx, dword [0x10018010]
mov dword [esp + 0x2f20], ecx
mov ecx, dword [0x1001800c]
mov dword [esp + 0x2f64], ecx
mov ecx, dword [0x10018008]
mov dword [esp + 0x2f68], ecx
mov ecx, dword [0x10018004]
mov dword [esp + 0xffc], ecx
mov ecx, dword [0x10018000]
mov dword [esp + 0xfe8], eax
mov dword [esp + 0xff0], 0x14000
mov dword [esp + 0xfe4], esi
mov dword [esp + 0x1000], ecx
mov edi, 0x10010f6c
mov ebx, str.__.dm_
mov dword [esp + 0x2eec], 0xffffffff
cmp eax, dword [esi]
jae 0x10001720
mov ecx, dword [esp + 0x2f18]
imul ecx, eax
mov eax, dword [esp + 0x2f20]
add ecx, dword [eax]
mov eax, dword [esp + 0xfe8]
je 0x10001720
mov esi, dword [esp + 0x2f3c]
mov eax, dword [esp + 0xffc]
mov esi, dword [esi + ecx]
cmp esi, dword [eax]
mov eax, dword [esp + 0xfe8]
jae 0x1000167c
mov eax, dword [esp + 0x1000]
mov eax, dword [eax]
mov eax, dword [eax + esi*4]
test eax, eax
je 0x10001675
mov eax, dword [eax]
test eax, eax
cmovne edi, eax
mov eax, dword [esp + 0xfe8]
mov esi, dword [esp + 0x2f40]
mov ecx, dword [esi + ecx]
mov esi, dword [esp + 0x2f64]
cmp ecx, dword [esi]
jae 0x10001719
mov eax, dword [esp + 0x2f68]
mov eax, dword [eax]
mov ecx, dword [eax + ecx*4]
test ecx, ecx
je 0x10001712
movzx esi, word [ecx]
mov ecx, dword [ecx + 8]
mov dword [esp + 0xff8], esi
cmp esi, 2
jb 0x10001712
cmp dword [ecx], 0x84
jne 0x10001712
mov eax, dword [esp + 0xffc]
mov esi, dword [ecx + 4]
cmp esi, dword [eax]
jae 0x100016e4
mov eax, dword [esp + 0x1000]
mov eax, dword [eax]
mov eax, dword [eax + esi*4]
test eax, eax
je 0x100016e4
mov eax, dword [eax]
test eax, eax
cmovne ebx, eax
cmp word [esp + 0xff8], 4
jb 0x10001712
cmp dword [ecx + 8], 0x85
mov esi, dword [esp + 0xfe4]
jne 0x10001709
mov eax, dword [ecx + 0xc]
mov dword [esp + 0x2eec], eax
mov eax, dword [esp + 0xfe8]
jmp 0x10001720
mov eax, dword [esp + 0xfe8]
mov esi, dword [esp + 0xfe4]
mov dword [edx - 8], 0
inc eax
mov dword [edx - 4], edi
mov dword [edx], ebx
mov ebx, dword [esp + 0x2eec]
mov dword [edx + 4], ebx
mov dword [edx + 8], 0x4444af
add edx, 0x14
sub dword [esp + 0xff0], 1
mov dword [esp + 0xfe8], eax
jne 0x10001605
push 0x1001a054
push 0x202
call dword [sym.imp.WS2_32.dll_WSAStartup]
test eax, eax
jne 0x10001903
push eax
push 1
push 2
call dword [sym.imp.WS2_32.dll_socket]
mov dword [0x1001a1e4], eax
test eax, eax
je 0x10001903
push 1
lea ecx, [esp + 0xff3]
mov byte [esp + 0xff3], 1
push ecx
push 4
push 0xffff
push eax
call dword [sym.imp.WS2_32.dll_setsockopt]
test eax, eax
jne 0x10001903
mov ax, word [0x10010f38]
movq xmm0, qword [str.127.0.0.1]
mov word [esp + 0x2fc0], ax
mov al, byte [0x10010f3a]
push 0x35
mov byte [esp + 0x2fc6], al
lea eax, [esp + 0x2fc7]
push 0
push eax
movq qword [esp + 0x2fc4], xmm0
call fcn.10006600
mov esi, dword [sym.imp.KERNEL32.dll_GetEnvironmentVariableA]
lea eax, [esp + 0x2fc4]
add esp, 0xc
push 0x40
push eax
push str.UTRACY_BIND_ADDRESS
call esi
cmp eax, 0x40
ja 0x10001903
mov eax, dword [str.8086]
mov dword [esp + 0x2fb0], eax
mov ax, word [0x10010f54]
mov word [esp + 0x2fb4], ax
lea eax, [esp + 0x2fb0]
push 6
push eax
push str.UTRACY_BIND_PORT
call esi
cmp eax, 6
ja 0x10001903
movaps xmm0, xmmword [0x10011120]
lea eax, [esp + 0xff4]
mov esi, dword [sym.imp.WS2_32.dll_getaddrinfo]
push eax
lea eax, [esp + 0x2f94]
mov dword [esp + 0x2fa4], 0
push eax
lea eax, [esp + 0x2fb8]
mov dword [esp + 0x2fac], 0
push eax
lea eax, [esp + 0x2fc4]
mov dword [esp + 0x2fb4], 0
push eax
movups xmmword [esp + 0x2fa0], xmm0
mov dword [esp + 0x2fbc], 0
call esi
test eax, eax
je 0x100018d5
cmp eax, 0x2afa
jne 0x10001903
lea eax, [esp + 0xff4]
push eax
lea eax, [esp + 0x2f94]
push eax
lea eax, [esp + 0x2fb8]
push eax
lea eax, [esp + 0x2fc4]
push eax
call esi
test eax, eax
jne 0x100018a8
mov eax, dword [esp + 0xff4]
test eax, eax
je 0x10001903
push dword [eax + 0x10]
push dword [eax + 0x18]
push dword [0x1001a1e4]
call dword [sym.imp.WS2_32.dll_bind]
test eax, eax
jns 0x1000191d
push dword [esp + 0xff4]
call dword [sym.imp.WS2_32.dll_freeaddrinfo]
mov eax, str.failed_to_init_server
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x2ff0]
xor ecx, esp
call fcn.10005356
mov esp, ebp
pop ebp
ret
push 2
push dword [0x1001a1e4]
call dword [sym.imp.WS2_32.dll_listen]
push dword [esp + 0xff4]
test eax, eax
js 0x100018fd
call dword [sym.imp.WS2_32.dll_freeaddrinfo]
or ebx, 0xffffffff
mov dword [esp + 0xfe4], 0x7fffffff
mov edi, 0xf4240
nop
rdtsc
mov ecx, eax
mov esi, edx
rdtsc
sub eax, ecx
sbb edx, esi
cmp edx, dword [esp + 0xfe4]
jg 0x10001978
jl 0x1000196b
cmp eax, ebx
jae 0x10001978
mov ebx, eax
mov eax, edx
mov dword [esp + 0xfe4], eax
jmp 0x1000197f
mov eax, dword [esp + 0xfe4]
sub edi, 1
jne 0x10001950
push 0x600000
push edi
push 0x1021a658
mov dword [0x1001a018], ebx
mov dword [0x1001a01c], eax
call fcn.10006600
rdtsc
add esp, 0xc
mov dword [esp + 0x2f78], edi
mov dword [esp + 0x2f7c], 0x10010f20
mov ebx, eax
mov dword [esp + 0x2f80], 0x100101a0
mov esi, 0x1ffff
mov dword [esp + 0x2f84], edi
mov dword [esp + 0x2f88], edi
mov dword [esp + 0xff8], edx
nop dword [eax]
mov byte [esp + 0x2f00], 0xf
mov eax, dword fs:[0x24]
mov dword [esp + 0x2f08], eax
lea eax, [esp + 0x2f78]
mov dword [esp + 0x2f0c], eax
rdtsc
mov dword [esp + 0x2f14], edx
mov edx, dword [0x1081a658]
mov dword [esp + 0x2f10], eax
xor eax, eax
cmp edx, 0x3ffff
lea ecx, [edx + 1]
cmove ecx, eax
cmp ecx, dword [0x1021a650]
jne 0x10001a3e
nop
mov eax, dword [0x1081a65c]
mov dword [0x1021a650], eax
cmp ecx, eax
je 0x10001a30
movups xmm0, xmmword [esp + 0x2f00]
lea eax, [edx + edx*2]
mov byte [esp + 0x2f00], 0x11
movups xmmword [eax*8 + 0x1021a658], xmm0
movq xmm0, qword [esp + 0x2f10]
movq qword [eax*8 + 0x1021a668], xmm0
mov dword [0x1081a658], ecx
mov eax, dword fs:[0x24]
mov dword [esp + 0x2f08], eax
rdtsc
mov dword [esp + 0x2f14], edx
mov edx, dword [0x1081a658]
mov dword [esp + 0x2f10], eax
xor eax, eax
cmp edx, 0x3ffff
lea ecx, [edx + 1]
cmove ecx, eax
cmp ecx, dword [0x1021a650]
jne 0x10001abe
nop word [eax + eax]
mov eax, dword [0x1081a65c]
mov dword [0x1021a650], eax
cmp ecx, eax
je 0x10001ab0
lea eax, [edx + edx*2]
movups xmm0, xmmword [esp + 0x2f00]
movups xmmword [eax*8 + 0x1021a658], xmm0
movq xmm0, qword [esp + 0x2f10]
movq qword [eax*8 + 0x1021a668], xmm0
mov dword [0x1081a658], ecx
sub esi, 1
jne 0x100019e0
rdtsc
mov esi, eax
mov edi, edx
sub esi, ebx
sbb edi, dword [esp + 0xff8]
mov ecx, dword [0x1081a65c]
lea edx, [ecx + 1]
cmp ecx, dword [0x1021a654]
jne 0x10001b20
mov eax, dword [0x1081a658]
mov dword [0x1021a654], eax
cmp ecx, eax
je 0x10001b33
xor eax, eax
cmp ecx, 0x3ffff
cmove edx, eax
mov dword [0x1081a65c], edx
jmp 0x10001b01
push 0
push 0x3fffe
push edi
push esi
call fcn.10005370
mov dword [0x1001a020], eax
lea eax, [esp + 0x2f70]
push eax
mov dword [0x1001a024], edx
call dword [sym.imp.KERNEL32.dll_QueryPerformanceFrequency]
test eax, eax
jne 0x10001b6b
movsd xmm1, qword [0x100110f0]
jmp 0x10001ca2
mov esi, dword [sym.imp.KERNEL32.dll_QueryPerformanceCounter]
lea eax, [esp + 0x2ef0]
push eax
call esi
test eax, eax
jne 0x10001b8c
movsd xmm1, qword [0x100110f0]
jmp 0x10001ca2
rdtsc
push 0x64
mov edi, eax
mov dword [esp + 0xff4], edx
call dword [sym.imp.KERNEL32.dll_Sleep]
lea eax, [esp + 0x2ef8]
push eax
call esi
test eax, eax
jne 0x10001bba
movsd xmm1, qword [0x100110f0]
jmp 0x10001ca2
mov ecx, dword [esp + 0x2ef0]
rdtsc
mov esi, edx
mov ebx, eax
mov edx, dword [esp + 0x2ef4]
call fcn.10005450
mov edx, dword [esp + 0x2efc]
mov ecx, dword [esp + 0x2ef8]
movsd qword [esp + 0x2ef0], xmm0
call fcn.10005450
mov ecx, ebx
movsd qword [esp + 0x2fb0], xmm0
sub ecx, edi
mov edx, esi
sbb edx, dword [esp + 0xff0]
call fcn.10005450
movaps xmm3, xmm0
movsd qword [esp + 0x2ef8], xmm3
cmp dword [esp + 0xff0], esi
jl 0x10001c2f
jg 0x10001c25
cmp edi, ebx
jb 0x10001c2f
movsd xmm1, qword [0x100110f0]
jmp 0x10001ca2
movsd xmm1, qword [esp + 0x2fb0]
movsd xmm2, qword [esp + 0x2ef0]
comisd xmm2, xmm1
jb 0x10001c51
movsd xmm1, qword [0x100110f0]
jmp 0x10001ca2
xorps xmm0, xmm0
comisd xmm0, xmm3
jb 0x10001c64
movsd xmm1, qword [0x100110f0]
jmp 0x10001ca2
mov edx, dword [esp + 0x2f74]
subsd xmm1, xmm2
mov ecx, dword [esp + 0x2f70]
mulsd xmm1, qword [0x100110f8]
movsd qword [esp + 0x2fb0], xmm1
call fcn.10005450
movsd xmm1, qword [esp + 0x2fb0]
divsd xmm1, xmm0
divsd xmm1, qword [esp + 0x2ef8]
movsd qword [0x1001a010], xmm1
call fcn.10001fb0
mov dword [0x1001a028], eax
mov dword [0x1001a02c], edx
call fcn.10001fb0
push 0
push 0
push 0
push 0x100052a0
mov dword [0x1001a030], eax
mov dword [0x1001a034], edx
rdtsc
push 0
push 0
mov dword [0x1001a008], eax
mov dword [0x1001a00c], edx
call dword [sym.imp.KERNEL32.dll_CreateThread]
test eax, eax
jne 0x10001d0a
mov eax, str.CreateThread_failed
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x2ff0]
xor ecx, esp
call fcn.10005356
mov esp, ebp
pop ebp
ret
mov dword [0x109ba670], 1
mov eax, 0x100110ec
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x2ff0]
xor ecx, esp
call fcn.10005356
mov esp, ebp
pop ebp
ret
mov ecx, dword [esp + 0x2ffc]
mov eax, str.byond_version_unsupported
pop edi
pop esi
pop ebx
xor ecx, esp
call fcn.10005356
mov esp, ebp
pop ebp
ret