Function at 0x140015bc0
Capabilities:
Create thread
Get system information on windows
Initialize winsock library
Write file on windows

Disassembly:
sub rsp, 0x268
lea rcx, str.MLM_is_launched._n
call fcn.140001010
lea r8, [0x141827d00]
mov edx, 0x1800000
lea rcx, str.light_obstacles.mlm
call fcn.140016920
cmp rax, 0x1800000
jne 0x1400167bf
lea r8, [0x144828d50]
mov rdx, rax
lea rcx, str.small_object_obstacles.mlm
call fcn.140016920
cmp rax, 0x1800000
jne 0x1400167bf
lea r8, [0x140027cf0]
mov rdx, rax
lea rcx, str.medium_object_obstacles.mlm
call fcn.140016920
cmp rax, 0x1800000
jne 0x1400167bf
lea r8, [0x143028d40]
mov rdx, rax
lea rcx, str.large_object_obstacles.mlm
call fcn.140016920
cmp rax, 0x1800000
jne 0x1400167bf
mov qword [rsp + 0x240], r12
mov ecx, 0x4000000
mov qword [rsp + 0x260], rbx
mov qword [rsp + 0x258], rbp
mov qword [rsp + 0x250], rsi
mov qword [rsp + 0x248], rdi
mov qword [rsp + 0x238], r14
mov qword [rsp + 0x230], r15
call fcn.1400074ec
mov ecx, 0x3800
mov qword [0x143028d30], rax
call fcn.1400074ec
mov ecx, 0x201000
mov qword [0x14a02ba88], rax
call fcn.1400074ec
mov ecx, 0x1000000
mov qword [0x140027ce0], rax
call fcn.1400074ec
mov ecx, 0x1000000
mov qword [0x146028d58], rax
call fcn.1400074ec
mov ecx, 0xc0000
mov qword [0x144828d48], rax
call fcn.1400074ec
mov ecx, 0x180000
mov qword [0x14a02ba80], rax
call fcn.1400074ec
mov ecx, 0x1000000
mov qword [0x144828d40], rax
call fcn.1400074ec
mov ecx, 0x1000000
mov qword [0x143027d00], rax
call fcn.1400074ec
mov ecx, 0x18
mov qword [0x143028d28], rax
call fcn.1400074ec
mov r12d, 1
mov qword [0x143028d38], rax
mov ecx, r12d
call fcn.1400074ec
cmp qword [0x143028d30], 0
mov qword [0x143028d20], rax
je 0x1400166be
cmp qword [0x14a02ba88], 0
je 0x1400166be
cmp qword [0x140027ce0], 0
je 0x1400166be
cmp qword [0x146028d58], 0
je 0x1400166be
cmp qword [0x144828d48], 0
je 0x1400166be
cmp qword [0x14a02ba80], 0
je 0x1400166be
cmp qword [0x144828d40], 0
je 0x1400166be
cmp qword [0x143027d00], 0
je 0x1400166be
cmp qword [0x143028d28], 0
je 0x1400166be
mov r8, qword [0x143028d38]
test r8, r8
je 0x1400166be
test rax, rax
je 0x1400166be
lea edx, [r12 + 0x17]
lea rcx, str.universe.mlm
call fcn.140016920
xor r14d, r14d
mov r15d, 0x100
test rax, rax
je 0x140015ec4
cmp rax, 0x18
jne 0x1400166ca
mov r8, qword [0x14a02ba88]
lea rcx, str.gamers.mlm
mov edx, 0x3800
call fcn.140016920
mov r8, qword [0x146028d58]
lea rcx, str.interactees.mlm
mov edx, 0x1000000
mov rbx, rax
call fcn.140016920
mov r8, qword [0x14a02ba80]
lea rcx, str.mobs.mlm
mov edx, 0xc0000
mov rdi, rax
call fcn.140016920
mov r8, qword [0x143027d00]
lea rcx, str.things.mlm
mov edx, 0x1000000
mov rsi, rax
call fcn.140016920
cmp rbx, 0x3800
jne 0x1400166ca
cmp rdi, 0x1000000
jne 0x1400166ca
cmp rsi, 0xc0000
jne 0x1400166ca
cmp rax, rdi
jne 0x1400166ca
mov rdi, qword [0x14a02ba80]
mov rbx, qword [0x143028d38]
jmp 0x140015f9e
mov rsi, qword [0x14a02ba88]
xor edx, edx
mov rcx, rsi
mov r8d, 0x3800
call fcn.140018cd0
mov rcx, qword [0x146028d58]
xor edx, edx
mov r8d, 0x1000000
call fcn.140018cd0
mov rdi, qword [0x14a02ba80]
xor edx, edx
mov rcx, rdi
mov r8d, 0xc0000
call fcn.140018cd0
mov rcx, qword [0x143027d00]
xor edx, edx
mov r8d, 0x1000000
call fcn.140018cd0
mov rbx, qword [0x143028d38]
xor eax, eax
vpxor xmm0, xmm0, xmm0
mov r10d, r14d
vmovups xmmword [rbx], xmm0
mov qword [rbx + 0x10], rax
mov dword [rbx + 8], r15d
nop word [rax + rax]
movsxd rcx, r10d
imul r9, rcx, 0x38
lea rax, [rcx + rcx*2]
lea rcx, [rdi + rax*4]
mov eax, 0x2aaaaaab
imul r10d
mov byte [r9 + rsi], r10b
mov eax, edx
mov byte [rcx + 0xa], 2
shr eax, 0x1f
add edx, eax
mov byte [rcx + 1], 0x80
movzx eax, dl
mov word [rcx + 7], 0x8080
add al, al
add dl, al
movzx eax, r10b
add dl, dl
sub al, dl
inc al
mov byte [rcx], al
lea eax, [r15 + r10]
mov word [rcx + 2], ax
mov word [rcx + 4], ax
mov word [r9 + rsi + 0x30], r10w
inc r10d
cmp r10d, dword [rbx + 8]
jl 0x140015f40
mov rcx, qword [0x143028d30]
xor edx, edx
mov r8d, 0x4000000
call fcn.140018cd0
mov rsi, qword [0x140027ce0]
xor edx, edx
mov rcx, rsi
mov r8d, 0x201000
call fcn.140018cd0
mov rcx, qword [0x144828d48]
xor edx, edx
mov r8d, 0x1000000
call fcn.140018cd0
mov rbp, qword [0x144828d40]
xor edx, edx
mov rcx, rbp
mov r8d, 0x180000
call fcn.140018cd0
mov rcx, qword [0x143028d28]
xor edx, edx
mov r8d, 0x1000000
call fcn.140018cd0
mov rax, qword [0x143028d20]
xor ecx, ecx
mov byte [rax], cl
cmp dword [rbx + 8], ecx
jle 0x14001603b
lea rax, [rsi + 0x2008]
nop
mov dword [rax - 0x2004], 0xffffffff
inc ecx
mov byte [rax], r14b
lea rax, [rax + 0x2010]
cmp ecx, dword [rbx + 8]
jl 0x140016020
mov r8d, r14d
lea rdx, [rbp + 4]
lea rcx, [rdi + 4]
cmp byte [rcx - 4], r14b
je 0x140016084
movzx eax, word [rcx - 2]
mov word [rdx - 2], ax
movzx eax, word [rcx]
mov word [rdx], ax
movzx eax, byte [rcx - 3]
mov byte [rdx - 3], al
movzx eax, byte [rcx + 3]
mov byte [rdx + 3], al
movzx eax, byte [rcx + 4]
mov byte [rdx + 4], al
movzx eax, byte [rcx + 2]
mov byte [rdx + 2], al
movzx eax, byte [rcx + 5]
mov byte [rdx + 5], al
movzx eax, byte [rcx + 6]
mov byte [rdx + 6], al
inc r8d
add rcx, 0xc
add rdx, 0x18
cmp r8d, 0x10000
jb 0x140016046
mov ecx, 0x202
lea rdx, [rsp + 0x90]
call qword [sym.imp.WS2_32.dll_WSAStartup]
test eax, eax
je 0x1400160c8
mov r8d, 0x601
lea rcx, str.Error__d_at_line__d__n
mov edx, eax
call fcn.140001010
jmp 0x1400166ca
mov ebx, 2
mov r8d, 6
mov ecx, ebx
mov edx, r12d
call qword [sym.imp.WS2_32.dll_socket]
mov qword [0x146028d60], rax
cmp rax, 0xffffffffffffffff
jne 0x140016110
call qword [sym.imp.WS2_32.dll_WSAGetLastError]
mov r8d, 0x607
lea rcx, str.Error__d_at_line__d__n
mov edx, eax
call fcn.140001010
call qword [sym.imp.WS2_32.dll_WSACleanup]
jmp 0x1400166ca
vpxor xmm0, xmm0, xmm0
vmovups xmmword [rsp + 0x48], xmm0
mov ecx, 0x4c4d
mov word [rsp + 0x48], bx
call qword [sym.imp.WS2_32.dll_htons]
mov rcx, qword [0x146028d60]
lea rdx, [rsp + 0x48]
mov r8d, setsockopt
mov word [rsp + 0x4a], ax
call qword [sym.imp.WS2_32.dll_bind]
test eax, eax
je 0x14001616a
call qword [sym.imp.WS2_32.dll_WSAGetLastError]
mov r8d, 0x611
lea rcx, str.Error__d_at_line__d__n
mov edx, eax
call fcn.140001010
jmp 0x140016657
mov rcx, qword [0x146028d60]
mov edx, 0x7fffffff
call qword [sym.imp.WS2_32.dll_listen]
test eax, eax
je 0x14001619f
call qword [sym.imp.WS2_32.dll_WSAGetLastError]
mov r8d, 0x617
lea rcx, str.Error__d_at_line__d__n
mov edx, eax
call fcn.140001010
jmp 0x140016657
lea rcx, [rsp + 0x58]
call qword [sym.imp.KERNEL32.dll_GetSystemInfo]
mov edx, dword [rsp + 0x78]
blsr eax, edx
mov dword [0x141827cf0], edx
jne 0x14001664b
cmp edx, r15d
ja 0x14001664b
xor edx, edx
mov r9d, r12d
xor r8d, r8d
lea rcx, [rdx - 1]
call qword [sym.imp.KERNEL32.dll_CreateIoCompletionPort]
mov qword [0x146028d50], rax
test rax, rax
jne 0x140016205
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov r8d, 0x626
lea rcx, str.Error__d_at_line__d__n
mov edx, eax
call fcn.140001010
jmp 0x140016657
mov r8d, dword [0x141827cf0]
lea rbp, [0x143027d20]
mov edx, r14d
test r8d, r8d
je 0x140016249
mov r9, qword [0x143028d38]
nop dword [rax]
nop word [rax + rax]
mov rcx, qword [r9]
mov eax, edx
inc edx
add rax, rax
mov qword [rbp + rax*8], rcx
mov qword [rbp + rax*8 + 8], rcx
cmp edx, r8d
jb 0x140016230
lea rax, [0x146228ee4]
mov edx, 0x20
lea rcx, [0x146028d81]
nop dword [rax]
mov byte [rcx - 1], r14b
mov byte [rcx], r14b
lea rcx, [rcx + 0x200168]
mov qword [rax - 0x20015c], 0xffffffffffffffff
mov dword [rax], 0xffffffff
lea rax, [rax + 0x200168]
sub rdx, r12
jne 0x140016260
mov dword [0x141827cf0], r12d
mov edi, r14d
nop word [rax + rax]
mov qword [rsp + 0x28], r14
lea r8, [0x140016bf0]
mov r9d, edi
xor edx, edx
xor ecx, ecx
mov dword [rsp + 0x20], r14d
call qword [sym.imp.KERNEL32.dll_CreateThread]
mov r9d, edi
lea r8, [0x1400181a0]
xor edx, edx
mov qword [rsp + 0x28], r14
xor ecx, ecx
mov dword [rsp + 0x20], r14d
call qword [sym.imp.KERNEL32.dll_CreateThread]
inc edi
cmp edi, dword [0x141827cf0]
jb 0x1400162a0
mov qword [rsp + 0x28], r14
lea r8, [0x140018820]
xor r9d, r9d
mov dword [rsp + 0x20], r14d
xor edx, edx
xor ecx, ecx
call qword [sym.imp.KERNEL32.dll_CreateThread]
mov edx, r12d
lea rcx, [0x140016a90]
call qword [sym.imp.KERNEL32.dll_SetConsoleCtrlHandler]
lea rcx, [rsp + 0x288]
call qword [sym.imp.KERNEL32.dll_QueryPerformanceFrequency]
movabs rax, 0x6666666666666667
imul qword [rsp + 0x288]
mov qword [rsp + 0x288], r14
mov rsi, rdx
sar rsi, 3
mov rax, rsi
shr rax, 0x3f
add rsi, rax
movzx eax, byte [0x140027ce9]
cmp al, bl
je 0x140016657
movabs r15, 0x6d3a06d3a06d3a07
nop word [rax + rax]
lea rcx, [rsp + 0x40]
call qword [sym.imp.KERNEL32.dll_QueryPerformanceCounter]
mov rax, qword [rsp + 0x288]
cmp qword [rsp + 0x40], rax
jl 0x1400163c0
cmp dword [0x141827cf0], r14d
mov ecx, r14d
jbe 0x1400163d9
mov eax, ecx
add rax, rax
mov rax, qword [rbp + rax*8 + 8]
mov rdx, qword [0x143028d38]
cmp rax, qword [rdx]
jne 0x1400163b8
inc ecx
cmp ecx, dword [0x141827cf0]
jb 0x140016396
jmp 0x1400163e0
cmp ecx, dword [0x141827cf0]
jae 0x1400163e0
mov ecx, r12d
call qword [sym.imp.KERNEL32.dll_Sleep]
movzx eax, byte [0x140027ce9]
cmp al, 2
jne 0x140016370
jmp 0x140016657
mov rdx, qword [0x143028d38]
mov rcx, qword [rsp + 0x40]
mov rax, r15
add rcx, rsi
mov qword [rsp + 0x288], rcx
mov rcx, qword [rdx]
mul rcx
shr rdx, 9
imul rax, rdx, 0x4b0
cmp rcx, rax
je 0x140016418
movzx eax, byte [0x140027ce9]
test al, al
je 0x140016625
mov rdi, qword [0x14a02ba88]
lea rcx, str.gamers.mlm
mov qword [rsp + 0x30], r14
xor r9d, r9d
mov dword [rsp + 0x28], 0x80000000
xor r8d, r8d
mov edx, 0x40000000
mov dword [rsp + 0x20], 5
call qword [sym.imp.KERNEL32.dll_CreateFileA]
mov rbx, rax
cmp rax, 0xffffffffffffffff
jne 0x140016471
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov r8d, 0x577
lea rcx, str.Error__d_at_line__d__n
mov edx, eax
call fcn.140001010
jmp 0x1400164b7
lea r9, [rsp + 0x270]
mov qword [rsp + 0x20], r14
mov r8d, 0x3800
mov rdx, rdi
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_WriteFile]
test eax, eax
jne 0x1400164ae
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov r8d, 0x58d
lea rcx, str.Error__d_at_line__d__n
mov edx, eax
call fcn.140001010
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_CloseHandle]
mov r8, qword [0x146028d58]
lea rcx, str.interactees.mlm
mov edx, 0x1000000
call fcn.1400167f0
mov rdi, qword [0x14a02ba80]
lea rcx, str.mobs.mlm
mov qword [rsp + 0x30], r14
xor r9d, r9d
mov dword [rsp + 0x28], 0x80000000
xor r8d, r8d
mov edx, 0x40000000
mov dword [rsp + 0x20], 5
call qword [sym.imp.KERNEL32.dll_CreateFileA]
mov rbx, rax
cmp rax, 0xffffffffffffffff
jne 0x140016528
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov r8d, 0x577
lea rcx, str.Error__d_at_line__d__n
mov edx, eax
call fcn.140001010
jmp 0x14001656e
lea r9, [rsp + 0x278]
mov qword [rsp + 0x20], r14
mov r8d, 0xc0000
mov rdx, rdi
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_WriteFile]
test eax, eax
jne 0x140016565
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov r8d, 0x58d
lea rcx, str.Error__d_at_line__d__n
mov edx, eax
call fcn.140001010
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_CloseHandle]
mov r8, qword [0x143027d00]
lea rcx, str.things.mlm
mov edx, 0x1000000
call fcn.1400167f0
mov rdi, qword [0x143028d38]
lea rcx, str.universe.mlm
mov qword [rsp + 0x30], r14
xor r9d, r9d
mov dword [rsp + 0x28], 0x80000000
xor r8d, r8d
mov edx, 0x40000000
mov dword [rsp + 0x20], 5
call qword [sym.imp.KERNEL32.dll_CreateFileA]
mov rbx, rax
cmp rax, 0xffffffffffffffff
jne 0x1400165df
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov r8d, 0x577
lea rcx, str.Error__d_at_line__d__n
mov edx, eax
call fcn.140001010
jmp 0x140016625
lea r9, [rsp + 0x280]
mov qword [rsp + 0x20], r14
mov r8d, 0x18
mov rdx, rdi
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_WriteFile]
test eax, eax
jne 0x14001661c
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov r8d, 0x58d
lea rcx, str.Error__d_at_line__d__n
mov edx, eax
call fcn.140001010
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_CloseHandle]
movzx eax, byte [0x140027ce9]
test al, al
je 0x14001663c
mov byte [0x140027ce9], 2
jmp 0x1400163c9
mov rax, qword [0x143028d38]
inc qword [rax]
jmp 0x1400163c9
lea rcx, str.2N_number_of_processors_is_expected___d___n
call fcn.140001010
xor eax, eax
lock cmpxchg byte [0x140027ce8], r12b
je 0x14001667f
nop dword [rax]
nop dword [rax + rax]
pause
xor eax, eax
lock cmpxchg byte [0x140027ce8], r12b
jne 0x140016670
mov rcx, qword [0x146028d60]
cmp rcx, 0xffffffffffffffff
je 0x14001669d
call qword [sym.imp.WS2_32.dll_closesocket]
mov qword [0x146028d60], 0xffffffffffffffff
mov rcx, qword [0x146028d50]
mov byte [0x140027ce8], r14b
test rcx, rcx
je 0x1400166b6
call qword [sym.imp.KERNEL32.dll_CloseHandle]
call qword [sym.imp.WS2_32.dll_WSACleanup]
jmp 0x1400166ca
lea rcx, str.Not_enough_memory__n
call fcn.140001010
mov rcx, qword [0x143028d30]
mov r15, qword [rsp + 0x230]
mov r14, qword [rsp + 0x238]
mov r12, qword [rsp + 0x240]
mov rdi, qword [rsp + 0x248]
mov rsi, qword [rsp + 0x250]
mov rbp, qword [rsp + 0x258]
mov rbx, qword [rsp + 0x260]
test rcx, rcx
je 0x140016713
call fcn.1400074d8
mov rcx, qword [0x14a02ba88]
test rcx, rcx
je 0x140016724
call fcn.1400074d8
mov rcx, qword [0x140027ce0]
test rcx, rcx
je 0x140016735
call fcn.1400074d8
mov rcx, qword [0x146028d58]
test rcx, rcx
je 0x140016746
call fcn.1400074d8
mov rcx, qword [0x144828d48]
test rcx, rcx
je 0x140016757
call fcn.1400074d8
mov rcx, qword [0x14a02ba80]
test rcx, rcx
je 0x140016768
call fcn.1400074d8
mov rcx, qword [0x144828d40]
test rcx, rcx
je 0x140016779
call fcn.1400074d8
mov rcx, qword [0x143027d00]
test rcx, rcx
je 0x14001678a
call fcn.1400074d8
mov rcx, qword [0x143028d28]
test rcx, rcx
je 0x14001679b
call fcn.1400074d8
mov rcx, qword [0x143028d38]
test rcx, rcx
je 0x1400167ac
call fcn.1400074d8
mov rcx, qword [0x143028d20]
test rcx, rcx
je 0x1400167cb
call fcn.1400074d8
jmp 0x1400167cb
lea rcx, str.Failure_to_load_an_obstacle_map__n
call fcn.140001010
lea rcx, str.MLM_is_shut_down._n
call fcn.140001010
xor eax, eax
add rsp, 0x268
ret