joyce8/EMBER2024-capa huggingface dataset:
Function at 0x2e3c3c900
Capabilities:
Get thread local storage value
Set thread local storage value

Disassembly:
push r13
push r12
sub rsp, 0x28
mov r13, rcx
mov r12, rdx
test rcx, rcx
je 0x2e3c3ca98
test r12, r12
je 0x2e3c3cac0
mov r8d, dword [r12 + 0x18]
test r8d, r8d
je 0x2e3c3c9d0
cmp qword [r12], 0
je 0x2e3c3c9f5
cmp qword [r12 + 8], 0
je 0x2e3c3ca20
cmp qword [r12 + 0x10], 0
je 0x2e3c3ca50
mov eax, dword [r12 + 0x18]
test eax, eax
je 0x2e3c3ca77
mov ecx, dword [0x2e3f340c0]
test ecx, ecx
je 0x2e3c3cae0
mov edx, dword [r13 + 0xd8]
test edx, edx
jne 0x2e3c3c993
lea rdx, [r13 + 0xc0]
mov rcx, r13
call fcn.2e3c3c740
test eax, eax
je 0x2e3c3caf8
mov eax, dword [r12 + 0x18]
cmp eax, 0x100
je 0x2e3c3c9b8
lea rdx, str.Win32:_Gamma_ramp_size_must_be_256
mov ecx, 0x10008
add rsp, 0x28
pop r12
pop r13
jmp fcn.2e3c320f0
mov rdx, r12
mov rcx, r13
add rsp, 0x28
pop r12
pop r13
jmp fcn.2e3c43810
mov r8d, 0x207
lea rdx, [0x2e3e6ec90]
lea rcx, str.ramp__size___0
call qword [sym.imp.msvcrt.dll__wassert]
cmp qword [r12], 0
jne 0x2e3c3c939
mov r8d, 0x208
lea rdx, [0x2e3e6ec90]
lea rcx, str.ramp__red___NULL
call qword [sym.imp.msvcrt.dll__wassert]
cmp qword [r12 + 8], 0
jne 0x2e3c3c945
nop dword [rax + rax]
mov r8d, 0x209
lea rdx, [0x2e3e6ec90]
lea rcx, str.ramp__green___NULL
call qword [sym.imp.msvcrt.dll__wassert]
cmp qword [r12 + 0x10], 0
jne 0x2e3c3c951
nop word cs:[rax + rax]
mov r8d, 0x20a
lea rdx, [0x2e3e6ec90]
lea rcx, str.ramp__blue___NULL
call qword [sym.imp.msvcrt.dll__wassert]
mov eax, dword [r12 + 0x18]
test eax, eax
jne 0x2e3c3c95e
xor r8d, r8d
lea rdx, str.Invalid_gamma_ramp_size__i
mov ecx, 0x10004
add rsp, 0x28
pop r12
pop r13
jmp fcn.2e3c320f0
mov r8d, 0x205
lea rdx, [0x2e3e6ec90]
lea rcx, [0x2e3e6edd0]
call qword [sym.imp.msvcrt.dll__wassert]
test r12, r12
jne 0x2e3c3c920
nop dword [rax + rax]
mov r8d, 0x206
lea rdx, [0x2e3e6ec90]
lea rcx, str.ramp___NULL
call qword [sym.imp.msvcrt.dll__wassert]
jmp 0x2e3c3c920
xor edx, edx
mov ecx, 0x10001
add rsp, 0x28
pop r12
pop r13
jmp fcn.2e3c320f0
add rsp, 0x28
pop r12
pop r13
ret
Function at 0x2e3c3d660
Capabilities:
Get thread local storage value
Set thread local storage value

Disassembly:
push r12
push rsi
push rbx
sub rsp, 0x40
mov r12, rcx
mov ebx, edx
mov esi, r8d
test rcx, rcx
je 0x2e3c3d7b0
mov eax, dword [0x2e3f340c0]
test eax, eax
je 0x2e3c3d6c0
xor edx, edx
test esi, esi
setne dl
cmp ebx, 0x20006
je 0x2e3c3d6b0
lea eax, [rbx - 0x20003]
cmp eax, 0xa
ja case.0x2e3c3d6ab.131076
lea rcx, [0x2e3e6fef8]
movsxd rax, dword [rcx + rax*4]
add rax, rcx
jmp rax
mov dword [r12 + 0x10], edx
add rsp, 0x40
pop rbx
pop rsi
pop r12
ret
xor edx, edx
mov ecx, 0x10001
add rsp, 0x40
pop rbx
pop rsi
pop r12
jmp fcn.2e3c320f0
mov r8d, ebx
lea rdx, str.Invalid_window_attribute_0x_08X
mov ecx, 0x10003
add rsp, 0x40
pop rbx
pop rsi
pop r12
jmp fcn.2e3c320f0
mov rcx, r12
mov dword [r12 + 0x1c], edx
add rsp, 0x40
pop rbx
pop rsi
pop r12
jmp fcn.2e3c42de0
mov dword [r12 + 0x18], edx
jmp 0x2e3c3d6b5
cmp qword [r12 + 0x50], 0
mov dword [r12 + 0x14], edx
jne 0x2e3c3d6b5
cmp esi, 1
mov rdx, 0xfffffffffffffffe
mov dword [rsp + 0x30], 0x13
mov rcx, qword [r12 + 0x358]
sbb rdx, 0xffffffffffffffff
xor r9d, r9d
xor r8d, r8d
mov dword [rsp + 0x28], 0
mov dword [rsp + 0x20], 0
call qword [sym.imp.USER32.dll_SetWindowPos]
jmp 0x2e3c3d6b5
cmp qword [r12 + 0x50], 0
mov dword [r12 + 0xc], edx
jne 0x2e3c3d6b5
mov rcx, r12
add rsp, 0x40
pop rbx
pop rsi
pop r12
jmp fcn.2e3c3d4c0
cmp qword [r12 + 0x50], 0
mov dword [r12 + 8], edx
jne 0x2e3c3d6b5
jmp 0x2e3c3d781
mov r8d, 0x36f
lea rdx, [0x2e3e6f618]
lea rcx, [0x2e3e6e546]
call qword [sym.imp.msvcrt.dll__wassert]
jmp 0x2e3c3d679

Function at 0x2e3c3d7d0
Capabilities:
Log keystrokes via polling

Disassembly:
push r12
push rsi
push rbx
sub rsp, 0x20
mov rbx, qword [sym.imp.USER32.dll_GetKeyState]
mov ecx, 0x10
call rbx
mov ecx, 0x11
movsx esi, ax
call rbx
shr esi, 0x1f
mov ecx, 0x12
mov r12d, esi
or r12d, 2
test ax, ax
cmovns r12d, esi
call rbx
mov ecx, 0x5b
mov r8d, eax
mov eax, r12d
or eax, 4
test r8w, r8w
cmovs r12d, eax
call rbx
mov ecx, 0x5c
mov esi, eax
call rbx
mov ecx, 0x14
mov r8d, eax
mov eax, r12d
or eax, 8
or si, r8w
cmovs r12d, eax
call rbx
mov ecx, 0x90
mov r8d, eax
mov eax, r12d
or eax, 0x10
and r8d, 1
cmovne r12d, eax
call rbx
mov r8d, eax
mov eax, r12d
or eax, 0x20
and r8d, 1
cmovne r12d, eax
mov eax, r12d
add rsp, 0x20
pop rbx
pop rsi
pop r12
ret
Function at 0x2e3c40160
Capabilities:
Get thread local storage value
Set thread local storage value

Disassembly:
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x30
movaps xmmword [rsp + 0x20], xmm6
mov ebx, dword [rsp + 0x90]
mov esi, dword [rsp + 0x98]
mov ebp, dword [rsp + 0xa0]
movd xmm6, ebx
movd xmm0, esi
punpckldq xmm6, xmm0
mov r12, rcx
mov r14, rdx
mov r13d, r8d
mov edi, r9d
test rcx, rcx
je 0x2e3c402e0
test ebx, ebx
js 0x2e3c40290
test esi, esi
js 0x2e3c40220
mov eax, dword [0x2e3f340c0]
test eax, eax
je 0x2e3c40270
test ebx, ebx
jle 0x2e3c40244
test esi, esi
je 0x2e3c40244
cmp ebp, 0xffffffff
jl 0x2e3c402b0
movq qword [r12 + 0x34], xmm6
mov r9d, edi
mov r8d, r13d
mov rdx, r14
movaps xmm6, xmmword [rsp + 0x20]
mov rcx, r12
mov dword [r12 + 0x48], ebp
mov dword [rsp + 0xa0], ebp
mov dword [rsp + 0x98], esi
mov dword [rsp + 0x90], ebx
add rsp, 0x30
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
jmp fcn.2e3c44660
lea rdx, [0x2e3e6f618]
mov r8d, 0x3a7
lea rcx, [0x2e3e6fc6a]
call qword [sym.imp.msvcrt.dll__wassert]
mov edx, dword [0x2e3f340c0]
test edx, edx
je 0x2e3c40270
movaps xmm6, xmmword [rsp + 0x20]
mov r9d, esi
mov r8d, ebx
mov ecx, 0x10004
lea rdx, str.Invalid_window_size__ix_i
add rsp, 0x30
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
jmp fcn.2e3c320f0
movaps xmm6, xmmword [rsp + 0x20]
xor edx, edx
mov ecx, 0x10001
add rsp, 0x30
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
jmp fcn.2e3c320f0
mov r8d, 0x3a6
lea rdx, [0x2e3e6f618]
lea rcx, [0x2e3e6fc54]
call qword [sym.imp.msvcrt.dll__wassert]
jmp 0x2e3c401b1
movaps xmm6, xmmword [rsp + 0x20]
mov r8d, ebp
mov ecx, 0x10004
lea rdx, str.Invalid_refresh_rate__i
add rsp, 0x30
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
jmp fcn.2e3c320f0
mov r8d, 0x3a5
lea rdx, [0x2e3e6f618]
lea rcx, [0x2e3e6e546]
call qword [sym.imp.msvcrt.dll__wassert]
jmp 0x2e3c401a9
Function at 0x2e3c40470
Capabilities:
Get thread local storage value
Set thread local storage value

Disassembly:
push r12
push rdi
sub rsp, 0x28
mov r12, rcx
mov ecx, dword [0x2e3f340c0]
test ecx, ecx
je 0x2e3c40560
test r12, r12
je 0x2e3c40550
lea rdi, [r12 + 0x2d8]
mov eax, r12d
mov qword [r12 + 0x2d0], 0
mov qword [r12 + 0x350], 0
and rdi, 0xfffffffffffffff8
sub eax, edi
lea ecx, [rax + 0x358]
xor eax, eax
shr ecx, 3
rep stosq qword [rdi], rax
cmp dword [0x2e3f356ec], 1
jne 0x2e3c40530
mov ecx, dword [0x2e3f356f0]
mov rdi, qword [sym.imp.KERNEL32.dll_TlsGetValue]
call rdi
cmp r12, rax
je 0x2e3c40578
mov rcx, r12
call fcn.2e3c42210
mov rax, qword [0x2e3f344c0]
lea rdx, [0x2e3f344c0]
cmp r12, rax
je 0x2e3c40513
nop dword [rax]
mov rdx, rax
mov rax, qword [rax]
cmp rax, r12
jne 0x2e3c40508
mov rax, qword [r12]
mov rcx, r12
mov qword [rdx], rax
add rsp, 0x28
pop rdi
pop r12
jmp sub.msvcrt.dll_free
mov r8d, 0x40
lea rdx, [0x2e3e6e068]
lea rcx, [0x2e3e6e190]
call qword [sym.imp.msvcrt.dll__wassert]
jmp 0x2e3c404d1
add rsp, 0x28
pop rdi
pop r12
ret
xor edx, edx
mov ecx, 0x10001
add rsp, 0x28
pop rdi
pop r12
jmp fcn.2e3c320f0
cmp dword [0x2e3f356ec], 1
jne 0x2e3c405a9
mov ecx, dword [0x2e3f356f0]
call rdi
mov edx, dword [0x2e3f340c0]
test edx, edx
je 0x2e3c405c5
test rax, rax
je 0x2e3c404e9
xor ecx, ecx
call qword [rax + 0x250]
jmp 0x2e3c404e9
mov r8d, 0x40
lea rdx, [0x2e3e6e068]
lea rcx, [0x2e3e6e190]
call qword [sym.imp.msvcrt.dll__wassert]
jmp 0x2e3c40581
xor edx, edx
mov ecx, 0x10001
call fcn.2e3c320f0
jmp 0x2e3c404e9
Function at 0x2e3c40870
Capabilities:
Allocate thread local storage
Set thread local storage value

Disassembly:
push r12
push rsi
push rbx
sub rsp, 0x30
mov r12d, dword [0x2e3f340c0]
lea rbx, [0x2e3f340c0]
test r12d, r12d
je 0x2e3c408a0
mov r12d, 1
mov eax, r12d
add rsp, 0x30
pop rbx
pop rsi
pop r12
ret
xor edx, edx
mov r8d, 0x2738
mov rcx, rbx
call sub.msvcrt.dll_memset
movdqa xmm0, xmmword [0x2e3e68e90]
mov eax, dword [0x2e3e68ea0]
movups xmmword [0x2e3f340c8], xmm0
mov dword [0x2e3f340d8], eax
call fcn.2e3c3e430
test eax, eax
je 0x2e3c409eb
mov r9d, dword [0x2e3f356f8]
test r9d, r9d
jne 0x2e3c40a00
lea rcx, [0x2e3f35700]
call qword [sym.imp.KERNEL32.dll_InitializeCriticalSection]
mov r8d, dword [0x2e3f356e4]
mov dword [0x2e3f356f8], 1
test r8d, r8d
jne 0x2e3c40a20
mov rsi, qword [sym.imp.KERNEL32.dll_TlsAlloc]
call rsi
mov dword [0x2e3f356e8], eax
cmp eax, 0xffffffff
je 0x2e3c40a60
mov dword [0x2e3f356e4], 1
mov ecx, dword [0x2e3f356ec]
test ecx, ecx
jne 0x2e3c40a98
call rsi
mov dword [0x2e3f356f0], eax
cmp eax, 0xffffffff
je 0x2e3c40a60
cmp dword [0x2e3f356e4], 1
mov dword [0x2e3f356ec], 1
jne 0x2e3c40a40
lea rdx, [0x2e3f36800]
mov ecx, dword [0x2e3f356e8]
call qword [sym.imp.KERNEL32.dll_TlsSetValue]
mov edx, dword [0x2e3f35730]
mov dword [0x2e3f340c0], 1
test edx, edx
jne 0x2e3c40a80
call qword [0x2e3f36568]
mov eax, eax
mov qword [0x2e3f35728], rax
call fcn.2e3c36200
mov rcx, qword [str.03000000fa2d00000100000000000000_3DRUDDER_leftx:a0_lefty:a1_rightx:a5_righty:a2_platform:Windows_]
test rcx, rcx
je 0x2e3c4088b
lea rsi, str.03000000d0160000600a000000000000_4Play_a:b1_b:b3_back:b4_dpdown:b11_dpleft:b12_dpright:b13_dpup:b10_leftshoulder:b6_leftstick:b14_lefttrigger:b8_leftx:a0_lefty:a1_rightshoulder:b7_rightstick:b15_righttrigger:b9_rightx:a3_righty:a4_start:b5_x:b0_y:b2_platform:Windows_
jmp 0x2e3c409d9
call fcn.2e3c463e0
test eax, eax
je 0x2e3c409eb
mov rcx, qword [rsi]
add rsi, 8
test rcx, rcx
je 0x2e3c4088b
mov eax, dword [rbx]
test eax, eax
jne 0x2e3c409c0
xor edx, edx
mov ecx, 0x10001
call fcn.2e3c320f0
call fcn.2e3c405e0
mov eax, r12d
add rsp, 0x30
pop rbx
pop rsi
pop r12
ret
mov r8d, 0x4c
lea rdx, [0x2e3e6e068]
lea rcx, str.mutex__win32.allocated__GLFW_FALSE
call qword [sym.imp.msvcrt.dll__wassert]
jmp 0x2e3c408e8
mov r8d, 0x29
lea rdx, [0x2e3e6e068]
lea rcx, str.tls__win32.allocated__GLFW_FALSE
call qword [sym.imp.msvcrt.dll__wassert]
jmp 0x2e3c4090f
mov r8d, 0x46
lea rdx, [0x2e3e6e068]
lea rcx, [0x2e3e6e190]
call qword [sym.imp.msvcrt.dll__wassert]
jmp 0x2e3c40967
lea rdx, str.Win32:_Failed_to_allocate_TLS_index
mov ecx, 0x10008
call fcn.2e3c376b0
jmp 0x2e3c409eb
lea rcx, [rsp + 0x28]
call qword [sym.imp.KERNEL32.dll_QueryPerformanceCounter]
mov rax, qword [rsp + 0x28]
jmp 0x2e3c4099a
mov r8d, 0x29
lea rdx, [0x2e3e6e068]
lea rcx, str.tls__win32.allocated__GLFW_FALSE
call qword [sym.imp.msvcrt.dll__wassert]
jmp 0x2e3c4093f
Function at 0x2e3c43000
Capabilities:
Log keystrokes via polling

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x88
mov r12, qword [0x2e3f0b050]
mov rdi, qword [sym.imp.USER32.dll_PeekMessageW]
mov r13, qword [sym.imp.USER32.dll_TranslateMessage]
mov rbp, qword [sym.imp.USER32.dll_DispatchMessageW]
lea rsi, [rsp + 0x50]
nop dword [rax]
xor r9d, r9d
xor r8d, r8d
xor edx, edx
mov dword [rsp + 0x20], 1
mov rcx, rsi
call rdi
test eax, eax
je 0x2e3c430b0
cmp dword [rsp + 0x58], 0x12
je 0x2e3c43068
mov rcx, rsi
call r13
mov rcx, rsi
call rbp
jmp 0x2e3c43038
mov rbx, qword [r12 + 0x400]
test rbx, rbx
je 0x2e3c43038
nop dword [rax]
mov rax, qword [rbx + 0x2e0]
mov dword [rbx + 0x20], 1
test rax, rax
je 0x2e3c430a0
mov rcx, rbx
call rax
mov rbx, qword [rbx]
test rbx, rbx
jne 0x2e3c43078
jmp 0x2e3c43038
mov rbx, qword [rbx]
test rbx, rbx
jne 0x2e3c43078
jmp 0x2e3c43038
call qword [sym.imp.USER32.dll_GetActiveWindow]
mov rcx, rax
test rax, rax
je 0x2e3c4312a
lea rdx, str.GLFW
call qword [sym.imp.USER32.dll_GetPropW]
mov rdi, rax
test rax, rax
je 0x2e3c4312a
movdqa xmm0, xmmword [0x2e3ed3880]
mov r14, qword [sym.imp.USER32.dll_GetKeyState]
lea rbx, [rsp + 0x30]
movaps xmmword [rsp + 0x30], xmm0
movdqa xmm0, xmmword [0x2e3ed3890]
movaps xmmword [rsp + 0x40], xmm0
movsxd rbp, dword [rbx + 4]
mov ecx, dword [rbx]
movzx r15d, word [r12 + rbp*2 + 0x1ae8]
mov r13, rbp
call r14
test ax, ax
js 0x2e3c43121
cmp byte [rdi + rbp + 0x90], 1
je 0x2e3c431d0
add rbx, 8
cmp rsi, rbx
jne 0x2e3c430f9
mov rbx, qword [r12 + 0x2488]
test rbx, rbx
je 0x2e3c431b3
lea r12, [rsp + 0x30]
mov rcx, qword [rbx + 0x358]
mov rdx, r12
call qword [sym.imp.USER32.dll_GetClientRect]
mov edx, dword [rsp + 0x38]
mov ecx, dword [rsp + 0x3c]
mov eax, edx
shr eax, 0x1f
add eax, edx
mov edx, ecx
shr edx, 0x1f
sar eax, 1
add edx, ecx
sar edx, 1
cmp dword [rbx + 0x394], eax
jne 0x2e3c43176
cmp dword [rbx + 0x398], edx
je 0x2e3c431b3
movd xmm1, edx
movd xmm0, eax
punpckldq xmm0, xmm1
movq qword [rsp + 0x30], xmm0
mov rcx, qword [rbx + 0x358]
mov dword [rbx + 0x398], edx
mov rdx, r12
mov dword [rbx + 0x394], eax
call qword [sym.imp.USER32.dll_ClientToScreen]
mov edx, dword [rsp + 0x34]
mov ecx, dword [rsp + 0x30]
call qword [sym.imp.USER32.dll_SetCursorPos]
nop
add rsp, 0x88
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
call fcn.2e3c3d7d0
cmp ebp, 0x15c
ja 0x2e3c43200
cmp byte [rdi + rbp + 0x90], 0
je 0x2e3c43121
mov ecx, dword [rdi + 0x78]
test ecx, ecx
je 0x2e3c43238
mov byte [rdi + rbp + 0x90], 3
nop word [rax + rax]
mov edx, dword [rdi + 0x80]
test edx, edx
je 0x2e3c43233
mov r10, qword [rdi + 0x338]
test r10, r10
je 0x2e3c43121
mov dword [rsp + 0x20], eax
xor r9d, r9d
movsx r8d, r15w
mov edx, r13d
mov rcx, rdi
call r10
jmp 0x2e3c43121
and eax, 0xffffffcf
jmp 0x2e3c4320a
mov byte [rdi + rbp + 0x90], 0
jmp 0x2e3c43200
Function at 0x2e3c43370
Capabilities:
Check for unmoving mouse cursor
Register raw input devices

Disassembly:
push r13
push r12
push rbx
sub rsp, 0x40
mov r12, rcx
cmp edx, 0x34003
je 0x2e3c43460
mov rax, qword [0x2e3f0b050]
cmp qword [rax + 0x2488], rcx
je 0x2e3c43448
lea rcx, [rsp + 0x28]
call qword [sym.imp.USER32.dll_GetCursorPos]
test eax, eax
jne 0x2e3c433b8
add rsp, 0x40
pop rbx
pop r12
pop r13
ret
mov rcx, qword [rsp + 0x28]
call qword [sym.imp.USER32.dll_WindowFromPoint]
cmp rax, qword [r12 + 0x358]
jne 0x2e3c433ab
lea r13, [rsp + 0x30]
mov rcx, rax
mov rdx, r13
call qword [sym.imp.USER32.dll_GetClientRect]
mov rcx, qword [r12 + 0x358]
mov rbx, qword [sym.imp.USER32.dll_ClientToScreen]
mov rdx, r13
call rbx
mov rcx, qword [r12 + 0x358]
lea rdx, [rsp + 0x38]
call rbx
mov rdx, qword [rsp + 0x28]
mov rcx, r13
call qword [sym.imp.USER32.dll_PtInRect]
test eax, eax
je 0x2e3c433ab
xor ecx, ecx
mov rax, qword [r12 + 0x58]
cmp dword [r12 + 0x84], 0x34001
jne 0x2e3c43431
test rax, rax
je 0x2e3c43490
mov rcx, qword [rax + 8]
add rsp, 0x40
pop rbx
pop r12
pop r13
jmp qword [sym.imp.USER32.dll_SetCursor]
add rsp, 0x40
pop rbx
pop r12
pop r13
jmp fcn.2e3c3d3c0
mov rbx, qword [rcx + 0x358]
call qword [sym.imp.USER32.dll_GetActiveWindow]
cmp rbx, rax
jne 0x2e3c433ab
mov rcx, r12
add rsp, 0x40
pop rbx
pop r12
pop r13
jmp fcn.2e3c3d220
xor ecx, ecx
mov edx, 0x7f00
call qword [sym.imp.USER32.dll_LoadCursorW]
mov rcx, rax
jmp 0x2e3c43431
Function at 0x2e3c45ce0
Capabilities:
Link many functions at runtime

Disassembly:
push r12
push rdi
push rsi
push rbx
sub rsp, 0x48
mov rbx, qword [0x2e3f0b050]
lea rax, str.OSMesa.dll
cmp qword [rbx + 0x26f8], 0
mov qword [rsp + 0x28], rax
mov qword [rsp + 0x30], 0
je 0x2e3c45d28
mov r12d, 1
mov eax, r12d
add rsp, 0x48
pop rbx
pop rsi
pop rdi
pop r12
ret
mov rdi, qword [sym.imp.KERNEL32.dll_LoadLibraryA]
lea rsi, [rsp + 0x20]
lea rcx, str.libOSMesa.dll
jmp 0x2e3c45d51
mov rcx, qword [rsi + 8]
add rsi, 8
test rcx, rcx
je 0x2e3c45e88
call rdi
mov qword [rbx + 0x26f8], rax
test rax, rax
je 0x2e3c45d40
mov rsi, qword [sym.imp.KERNEL32.dll_GetProcAddress]
lea rdx, str.OSMesaCreateContextExt
mov rcx, rax
call rsi
mov rcx, qword [rbx + 0x26f8]
lea rdx, str.OSMesaCreateContextAttribs
mov qword [rbx + 0x2700], rax
call rsi
mov rcx, qword [rbx + 0x26f8]
lea rdx, str.OSMesaDestroyContext
mov qword [rbx + 0x2708], rax
call rsi
mov rcx, qword [rbx + 0x26f8]
lea rdx, str.OSMesaMakeCurrent
mov qword [rbx + 0x2710], rax
call rsi
mov rcx, qword [rbx + 0x26f8]
lea rdx, str.OSMesaGetColorBuffer
mov qword [rbx + 0x2718], rax
call rsi
mov rcx, qword [rbx + 0x26f8]
lea rdx, str.OSMesaGetDepthBuffer
mov qword [rbx + 0x2720], rax
call rsi
mov rcx, qword [rbx + 0x26f8]
lea rdx, str.OSMesaGetProcAddress
mov qword [rbx + 0x2728], rax
call rsi
cmp qword [rbx + 0x2700], 0
mov qword [rbx + 0x2730], rax
je 0x2e3c45e40
cmp qword [rbx + 0x2710], 0
je 0x2e3c45e40
cmp qword [rbx + 0x2718], 0
je 0x2e3c45e40
cmp qword [rbx + 0x2720], 0
je 0x2e3c45e40
cmp qword [rbx + 0x2728], 0
je 0x2e3c45e40
test rax, rax
jne 0x2e3c45d0f
nop
mov ecx, 0x10008
lea rdx, str.OSMesa:_Failed_to_load_required_entry_points
xor r12d, r12d
call fcn.2e3c320f0
mov rcx, qword [rbx + 0x26f8]
test rcx, rcx
je 0x2e3c45d15
call qword [sym.imp.KERNEL32.dll_FreeLibrary]
mov eax, r12d
mov qword [rbx + 0x26f8], 0
add rsp, 0x48
pop rbx
pop rsi
pop rdi
pop r12
ret
lea rdx, str.OSMesa:_Library_not_found
mov ecx, 0x10006
xor r12d, r12d
call fcn.2e3c320f0
jmp 0x2e3c45d15
Function at 0x2e3c4f220
Capabilities:
Read file on windows

Disassembly:
sub rsp, 0x28
mov r9, rcx
movsxd r8, r8d
mov rcx, rdx
mov edx, 1
call sub.msvcrt.dll_fread
add rsp, 0x28
ret
Function at 0x2e3c89b20
Capabilities:
Write file on windows

Disassembly:
push r14
push r13
push r12
push rbx
sub rsp, 0x28
mov r12, rcx
mov r13, rdx
mov ebx, r8d
test rcx, rcx
je 0x2e3c89be0
mov rax, qword [0x2e3f38d10]
test rax, rax
je 0x2e3c89b60
add rsp, 0x28
pop rbx
pop r12
pop r13
pop r14
jmp rax
lea rdx, [0x2e3ed8770]
call sub.msvcrt.dll_fopen
mov r14, rax
test rax, rax
je 0x2e3c89bc0
mov r8d, ebx
mov r9, rax
mov edx, 1
mov rcx, r13
call sub.msvcrt.dll_fwrite
mov r8, r12
test eax, eax
je 0x2e3c89c00
cmp ebx, eax
je 0x2e3c89c18
lea rdx, str.FILEIO:___s__File_partially_written
mov ecx, 4
call fcn.2e3e428c0
mov rcx, r14
call sub.msvcrt.dll_fclose
test eax, eax
sete al
add rsp, 0x28
pop rbx
pop r12
pop r13
pop r14
ret
mov r8, r12
lea rdx, [0x2e3ed87f0]
mov ecx, 4
call fcn.2e3e428c0
xor eax, eax
jmp 0x2e3c89bb4
lea rdx, [0x2e3ed8748]
mov ecx, 4
call fcn.2e3e428c0
xor eax, eax
add rsp, 0x28
pop rbx
pop r12
pop r13
pop r14
ret
lea rdx, str.FILEIO:___s__Failed_to_write_file
mov ecx, 4
call fcn.2e3e428c0
jmp 0x2e3c89ba7
lea rdx, str.FILEIO:___s__File_saved_successfully
mov ecx, 3
call fcn.2e3e42a40
jmp 0x2e3c89ba7

Function at 0x2e3c89d30
Capabilities:
Read file on windows

Disassembly:
push r13
push r12
push rdi
push rsi
push rbx
sub rsp, 0x20
lea rdx, [0x2e3ed8896]
mov rbx, rcx
call sub.msvcrt.dll_fopen
mov r12, rax
test rax, rax
je 0x2e3c89df8
xor edx, edx
mov r8d, 2
mov rcx, rax
call sub.msvcrt.dll_fseek
mov rcx, r12
call sub.msvcrt.dll_ftell
xor r8d, r8d
xor edx, edx
mov rcx, r12
mov esi, eax
call sub.msvcrt.dll_fseek
test esi, esi
jne 0x2e3c89db0
mov r8, rbx
lea rdx, str.FILEIO:___s__Failed_to_read_text_file
mov ecx, 4
xor r13d, r13d
call fcn.2e3e428c0
mov rcx, r12
call sub.msvcrt.dll_fclose
mov rax, r13
add rsp, 0x20
pop rbx
pop rsi
pop rdi
pop r12
pop r13
ret
lea ecx, [rsi + 1]
call sub.msvcrt.dll_malloc
mov r9, r12
mov r8d, esi
mov edx, 1
mov rcx, rax
mov r13, rax
call sub.msvcrt.dll_fread
mov rdi, rax
cmp esi, eax
ja 0x2e3c89e20
mov edi, edi
mov r8, rbx
mov ecx, 3
mov byte [r13 + rdi], 0
lea rdx, str.FILEIO:___s__Text_file_loaded_successfully
call fcn.2e3e42a40
jmp 0x2e3c89d98
mov r8, rbx
lea rdx, str.FILEIO:___s__Failed_to_open_text_file
mov ecx, 4
xor r13d, r13d
call fcn.2e3e428c0
mov rax, r13
add rsp, 0x20
pop rbx
pop rsi
pop rdi
pop r12
pop r13
ret
mov rcx, r13
lea edx, [rax + 1]
call sub.msvcrt.dll_realloc
mov r13, rax
jmp 0x2e3c89dd5
Function at 0x2e3cbe730
Capabilities:
Create thread

Disassembly:
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x58
movaps xmmword [rsp + 0x40], xmm6
lea rax, [0x2e3cb9850]
movq xmm6, rax
mov rbx, qword [rsp + 0xb8]
mov esi, edx
lea rdx, [0x2e3cb9860]
mov rdi, rcx
mov r13, r8
movq xmm0, rdx
mov rbp, r9
punpcklqdq xmm6, xmm0
test rbx, rbx
je 0x2e3cbe8a0
mov rax, qword [rbx + 8]
test rax, rax
je 0x2e3cbe890
mov rdx, qword [rbx]
mov ecx, 0x30
call rax
mov r12, rax
test rax, rax
je 0x2e3cbe890
mov qword [rax], rbp
mov rax, qword [rsp + 0xb0]
mov qword [r12 + 8], rax
cmp qword [rbx], 0
je 0x2e3cbe850
cmp qword [rbx + 0x18], 0
je 0x2e3cbe7dd
cmp qword [rbx + 8], 0
je 0x2e3cbe878
movdqu xmm1, xmmword [rbx]
movups xmmword [r12 + 0x10], xmm1
movdqu xmm2, xmmword [rbx + 0x10]
movups xmmword [r12 + 0x20], xmm2
xor ecx, ecx
mov dword [rsp + 0x20], 0
mov r9, r12
mov rdx, r13
mov qword [rsp + 0x28], 0
lea r8, [0x2e3cb9820]
call qword [sym.imp.KERNEL32.dll_CreateThread]
mov qword [rdi], rax
mov rcx, rax
test rax, rax
je 0x2e3cbe8e8
add esi, 5
xor edx, edx
cmp esi, 6
jbe 0x2e3cbe840
call qword [sym.imp.KERNEL32.dll_SetThreadPriority]
xor eax, eax
movaps xmm6, xmmword [rsp + 0x40]
add rsp, 0x58
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
ret
lea rax, [0x2e3edda40]
mov edx, dword [rax + rsi*4]
jmp 0x2e3cbe81c
cmp qword [rbx + 0x18], 0
jne 0x2e3cbe7bd
cmp qword [rbx + 8], 0
jne 0x2e3cbe7dd
cmp qword [rbx + 0x10], 0
jne 0x2e3cbe7dd
jmp 0x2e3cbe8c2
cmp qword [rbx + 0x10], 0
jne 0x2e3cbe7c8
jmp 0x2e3cbe7dd
mov eax, 0xfffffffc
jmp 0x2e3cbe824
mov ecx, 0x30
call sub.msvcrt.dll_malloc
mov r12, rax
test rax, rax
je 0x2e3cbe890
mov qword [rax], rbp
mov rax, qword [rsp + 0xb0]
mov qword [r12 + 8], rax
lea rax, [0x2e3cb9810]
movups xmmword [r12 + 0x18], xmm6
mov qword [r12 + 0x10], 0
mov qword [r12 + 0x28], rax
jmp 0x2e3cbe7dd
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov ecx, eax
call fcn.2e3cbd8d0
test eax, eax
je 0x2e3cbe824
test rbx, rbx
je 0x2e3cbe928
mov r8, qword [rbx + 0x18]
test r8, r8
je 0x2e3cbe824
mov dword [rsp + 0x3c], eax
mov rdx, qword [rbx]
mov rcx, r12
call r8
mov eax, dword [rsp + 0x3c]
jmp 0x2e3cbe824
mov rcx, r12
mov dword [rsp + 0x3c], eax
call sub.msvcrt.dll_free
mov eax, dword [rsp + 0x3c]
jmp 0x2e3cbe824