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

Disassembly:
push r13
push r12
push rdi
push rsi
push rbx
sub rsp, 0x30
mov r12, rcx
test rcx, rcx
je 0x22dad2e48
mov r13d, dword [0x22ddd80c0]
test r13d, r13d
je 0x22dad2d90
cmp dword [0x22ddd96ec], 1
jne 0x22dad2d70
mov ecx, dword [0x22ddd96f0]
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
mov rsi, rax
test rax, rax
je 0x22dad2e88
cmp byte [r12], 0
je 0x22dad2e20
cmp dword [rax + 0x210], 2
jle 0x22dad2db0
lea rdx, [rsp + 0x2c]
mov ecx, 0x821d
xor ebx, ebx
call qword [rax + 0x240]
mov eax, dword [rsp + 0x2c]
test eax, eax
jg 0x22dad2d35
jmp 0x22dad2e00
mov rdx, r12
call sub.msvcrt.dll_strcmp
test eax, eax
je 0x22dad2e70
add ebx, 1
cmp ebx, dword [rsp + 0x2c]
jge 0x22dad2e00
mov ecx, 0x1f03
mov edx, ebx
call qword [rsi + 0x238]
mov rcx, rax
test rax, rax
jne 0x22dad2d18
lea rdx, str.Extension_string_retrieval_is_broken
mov ecx, 0x10008
xor r13d, r13d
call fcn.22dad20f0
mov eax, r13d
add rsp, 0x30
pop rbx
pop rsi
pop rdi
pop r12
pop r13
ret
mov r8d, 0x40
lea rdx, [0x22dd11068]
lea rcx, [0x22dd11190]
call qword [sym.imp.msvcrt.dll__wassert]
jmp 0x22dad2cc4
xor edx, edx
mov ecx, 0x10001
call fcn.22dad20f0
mov eax, r13d
add rsp, 0x30
pop rbx
pop rsi
pop rdi
pop r12
pop r13
ret
mov ecx, 0x1f03
call qword [rax + 0x248]
mov rdi, rax
test rax, rax
je 0x22dad2d4a
nop dword [rax + rax]
mov rdx, r12
mov rcx, rdi
call sub.msvcrt.dll_strstr
mov rbx, rax
test rax, rax
je 0x22dad2e00
mov rcx, r12
call sub.msvcrt.dll_strlen
add rax, rbx
cmp rdi, rbx
je 0x22dad2df4
cmp byte [rbx - 1], 0x20
mov rdi, rax
jne 0x22dad2dc8
test byte [rax], 0xdf
je 0x22dad2e70
mov rdi, rax
jmp 0x22dad2dc8
mov rax, qword [rsi + 0x268]
mov rcx, r12
add rsp, 0x30
pop rbx
pop rsi
pop rdi
pop r12
pop r13
jmp rax
lea rdx, str.Extension_name_cannot_be_an_empty_string
mov ecx, 0x10004
xor r13d, r13d
call fcn.22dad20f0
mov eax, r13d
add rsp, 0x30
pop rbx
pop rsi
pop rdi
pop r12
pop r13
ret
mov r8d, 0x2a4
lea rdx, [0x22dd11428]
lea rcx, str.extension___NULL
call qword [sym.imp.msvcrt.dll__wassert]
jmp 0x22dad2ca7
mov r13d, 1
mov eax, r13d
add rsp, 0x30
pop rbx
pop rsi
pop rdi
pop r12
pop r13
ret
lea rdx, str.Cannot_query_extension_without_a_current_OpenGL_or_OpenGL_ES_context
mov ecx, 0x10002
xor r13d, r13d
call fcn.22dad20f0
jmp 0x22dad2d9c
Function at 0x22dad47f0
Capabilities:
Get thread local storage value
Set thread local storage value

Disassembly:
push r13
push r12
push rdi
push rsi
push rbx
sub rsp, 0x40
mov edx, dword [0x22ddd80c0]
mov r12, rcx
test edx, edx
je 0x22dad4958
test rcx, rcx
je 0x22dad4970
mov rbx, qword [0x22ddd84c0]
test rbx, rbx
je 0x22dad48f0
mov rsi, qword [sym.imp.USER32.dll_GetCursorPos]
jmp 0x22dad483c
mov rbx, qword [rbx]
test rbx, rbx
je 0x22dad48f0
cmp qword [rbx + 0x58], r12
jne 0x22dad4830
mov eax, dword [0x22ddd80c0]
test eax, eax
je 0x22dad4940
mov qword [rbx + 0x58], 0
lea rcx, [rsp + 0x28]
call rsi
test eax, eax
je 0x22dad4830
mov rcx, qword [rsp + 0x28]
call qword [sym.imp.USER32.dll_WindowFromPoint]
cmp rax, qword [rbx + 0x358]
jne 0x22dad4830
lea r13, [rsp + 0x30]
mov rcx, rax
mov rdx, r13
call qword [sym.imp.USER32.dll_GetClientRect]
mov rcx, qword [rbx + 0x358]
mov rdi, qword [sym.imp.USER32.dll_ClientToScreen]
mov rdx, r13
call rdi
mov rcx, qword [rbx + 0x358]
lea rdx, [rsp + 0x38]
call rdi
mov rdx, qword [rsp + 0x28]
mov rcx, r13
call qword [sym.imp.USER32.dll_PtInRect]
test eax, eax
je 0x22dad4830
cmp dword [rbx + 0x84], 0x34001
mov rax, qword [rbx + 0x58]
jne 0x22dad4980
test rax, rax
je 0x22dad498d
mov rcx, qword [rax + 8]
call qword [sym.imp.USER32.dll_SetCursor]
jmp 0x22dad4830
mov rcx, qword [r12 + 8]
test rcx, rcx
je 0x22dad4900
call qword [sym.imp.USER32.dll_DestroyIcon]
mov rax, qword [0x22ddd84b8]
lea rdx, [0x22ddd84b8]
cmp r12, rax
je 0x22dad4923
nop dword [rax + rax]
mov rdx, rax
mov rax, qword [rax]
cmp r12, rax
jne 0x22dad4918
mov rax, qword [r12]
mov rcx, r12
mov qword [rdx], rax
add rsp, 0x40
pop rbx
pop rsi
pop rdi
pop r12
pop r13
jmp sub.msvcrt.dll_free
xor edx, edx
mov ecx, 0x10001
call fcn.22dad20f0
jmp 0x22dad4830
xor edx, edx
mov ecx, 0x10001
add rsp, 0x40
pop rbx
pop rsi
pop rdi
pop r12
pop r13
jmp fcn.22dad20f0
add rsp, 0x40
pop rbx
pop rsi
pop rdi
pop r12
pop r13
ret
xor ecx, ecx
call qword [sym.imp.USER32.dll_SetCursor]
jmp 0x22dad4830
xor ecx, ecx
mov edx, 0x7f00
call qword [sym.imp.USER32.dll_LoadCursorW]
mov rcx, rax
call qword [sym.imp.USER32.dll_SetCursor]
jmp 0x22dad4830
Function at 0x22dad6200
Capabilities:
Get thread local storage value
Set thread local storage value

Disassembly:
push rdi
mov eax, dword [0x22ddd80c0]
test eax, eax
je 0x22dad6328
mov rax, qword [0x22dd74a08]
lea rdx, [0x22ddd8128]
mov ecx, 0x69
movdqa xmm0, xmmword [0x22dd74a10]
mov qword [0x22ddd8478], 0
mov rdi, rdx
mov qword [0x22ddd8470], rax
xor eax, eax
rep stosq qword [rdi], rax
mov rax, qword [0x22dd74a10]
movups xmmword [0x22ddd8138], xmm0
movdqa xmm0, xmmword [0x22dd74a20]
mov qword [0x22ddd8118], 0
mov qword [0x22ddd8154], rax
mov rax, qword [0x22dd74a30]
mov qword [0x22ddd8480], 0
mov qword [0x22ddd8488], 0
mov qword [0x22ddd8490], 0
mov qword [0x22ddd8498], 0
mov qword [0x22ddd84a0], 0
mov dword [0x22ddd8478], 1
mov dword [0x22ddd8148], 1
mov qword [0x22ddd80f8], 0
mov qword [0x22ddd8100], 0
mov qword [0x22ddd8108], 0
mov qword [0x22ddd8110], 0
mov qword [0x22ddd8120], 0
mov qword [0x22ddd80f0], rax
mov dword [0x22ddd8118], 1
mov dword [0x22ddd84a8], 0xffffffff
mov dword [0x22ddd8164], 1
movaps xmmword [0x22ddd80e0], xmm0
pop rdi
ret
xor edx, edx
mov ecx, 0x10001
pop rdi
jmp fcn.22dad20f0
Function at 0x22dad6340
Capabilities:
Get thread local storage value
Set thread local storage value

Disassembly:
mov eax, dword [0x22ddd80c0]
test eax, eax
je 0x22dad6420
cmp ecx, 0x21010
jg 0x22dad63a0
cmp ecx, 0x21000
jg 0x22dad6380
lea eax, [rcx - 0x20001]
cmp eax, 0xc
ja case.0x22dad63d1.139268
lea r8, [0x22dd12574]
movsxd rax, dword [r8 + rax*4]
add rax, r8
jmp rax
sub ecx, 0x21002
cmp ecx, 0xe
ja case.default.0x22dad639d
lea r8, [0x22dd125a8]
movsxd rax, dword [r8 + rcx*4]
add rax, r8
jmp rax
cmp ecx, 0x2200c
jg 0x22dad63d8
cmp ecx, 0x22000
jle case.0x22dad63d1.139268
lea eax, [rcx - 0x22001]
cmp eax, 0xb
ja case.0x22dad63d1.139268
lea r8, [0x22dd125e4]
movsxd rax, dword [r8 + rax*4]
add rax, r8
jmp rax
cmp ecx, 0x23003
je 0x22dad66a0
cmp ecx, 0x25001
jne 0x22dad6400
xor eax, eax
test edx, edx
setne al
mov dword [0x22ddd8468], eax
ret
cmp ecx, 0x23001
jne case.0x22dad63d1.139268
xor eax, eax
test edx, edx
setne al
mov dword [0x22ddd8164], eax
ret
xor edx, edx
mov ecx, 0x10001
jmp fcn.22dad20f0
xor eax, eax
test edx, edx
setne al
mov dword [0x22ddd8160], eax
ret
mov dword [0x22ddd8474], edx
ret
xor eax, eax
test edx, edx
setne al
mov dword [0x22ddd8488], eax
ret
mov dword [0x22ddd8494], edx
ret
mov dword [0x22ddd848c], edx
ret
xor eax, eax
test edx, edx
setne al
mov dword [0x22ddd8484], eax
ret
xor eax, eax
test edx, edx
setne al
mov dword [0x22ddd8480], eax
ret
mov dword [0x22ddd8490], edx
ret
mov dword [0x22ddd847c], edx
ret
mov dword [0x22ddd8478], edx
ret
mov dword [0x22ddd8470], edx
ret
xor eax, eax
test edx, edx
setne al
mov dword [0x22ddd815c], eax
ret
xor eax, eax
test edx, edx
setne al
mov dword [0x22ddd8158], eax
ret
xor eax, eax
test edx, edx
setne al
mov dword [0x22ddd811c], eax
ret
xor eax, eax
test edx, edx
setne al
mov dword [0x22ddd8154], eax
ret
xor eax, eax
test edx, edx
setne al
mov dword [0x22ddd8150], eax
ret
xor eax, eax
test edx, edx
setne al
mov dword [0x22ddd814c], eax
ret
xor eax, eax
test edx, edx
setne al
mov dword [0x22ddd8148], eax
ret
xor eax, eax
test edx, edx
setne al
mov dword [0x22ddd8140], eax
ret
xor eax, eax
test edx, edx
setne al
mov dword [0x22ddd813c], eax
ret
xor eax, eax
test edx, edx
setne al
mov dword [0x22ddd8138], eax
ret
xor eax, eax
test edx, edx
setne al
mov dword [0x22ddd8144], eax
ret
mov r8d, ecx
lea rdx, str.Invalid_window_hint_0x_08X
mov ecx, 0x10003
jmp fcn.22dad20f0
mov dword [0x22ddd80f0], edx
ret
mov dword [0x22ddd80ec], edx
ret
mov dword [0x22ddd80e8], edx
ret
mov dword [0x22ddd80e4], edx
ret
mov dword [0x22ddd80f4], edx
ret
xor eax, eax
test edx, edx
setne al
mov dword [0x22ddd8114], eax
ret
mov dword [0x22ddd8110], edx
ret
mov dword [0x22ddd84a8], edx
ret
xor eax, eax
test edx, edx
setne al
mov dword [0x22ddd810c], eax
ret
mov dword [0x22ddd8108], edx
ret
mov dword [0x22ddd80fc], edx
ret
mov dword [0x22ddd80f8], edx
ret
xor eax, eax
test edx, edx
setne al
mov dword [0x22ddd8118], eax
ret
mov dword [0x22ddd8104], edx
ret
mov dword [0x22ddd8100], edx
ret
mov dword [0x22ddd80e0], edx
ret
xor eax, eax
test edx, edx
setne al
mov dword [0x22ddd84a0], eax
ret
Function at 0x22dad8050
Capabilities:
Log keystrokes

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x1b8
movaps xmmword [rsp + 0x180], xmm6
movaps xmmword [rsp + 0x190], xmm7
movaps xmmword [rsp + 0x1a0], xmm8
lea rdi, [0x22ddd9e6a]
xor eax, eax
xor ebx, ebx
and rdi, 0xfffffffffffffff8
lea rcx, [0x22ddd9e62]
lea rsi, [0x22ddd9f02]
sub rcx, rdi
add ecx, 0x6d1
shr ecx, 3
mov qword [rsp + 0x80], 0
mov qword [rsp + 0x88], 0
mov qword [rsp + 0x90], 0
mov qword [rsp + 0x98], 0
mov qword [rsp + 0xa0], 0
mov qword [rsp + 0xa8], 0
mov qword [rsp + 0xb0], 0
mov qword [rsp + 0xb8], 0
mov qword [rsp + 0xc0], 0
mov qword [rsp + 0xc8], 0
mov qword [rsp + 0xd0], 0
mov qword [rsp + 0xd8], 0
mov qword [rsp + 0xe0], 0
mov qword [rsp + 0xe8], 0
mov qword [rsp + 0xf0], 0
mov qword [rsp + 0xf8], 0
mov qword [rsp + 0x100], 0
mov qword [rsp + 0x108], 0
mov qword [rsp + 0x110], 0
mov qword [rsp + 0x118], 0
mov qword [rsp + 0x120], 0
mov qword [rsp + 0x128], 0
mov qword [rsp + 0x130], 0
mov qword [rsp + 0x138], 0
mov qword [rsp + 0x140], 0
mov qword [rsp + 0x148], 0
mov qword [rsp + 0x150], 0
mov qword [rsp + 0x158], 0
mov qword [rsp + 0x160], 0
mov qword [rsp + 0x168], 0
mov qword [rsp + 0x170], 0
mov qword [rsp + 0x178], 0
mov qword [0x22ddd9e62], 0
movdqa xmm8, xmmword [str._abcdefghinojm]
movdqa xmm7, xmmword [0x22dd74a70]
movdqa xmm6, xmmword [0x22dd74a80]
mov qword [0x22ddda52b], 0
rep stosq qword [rdi], rax
lea rdi, [rsi - 0x31a]
jmp 0x22dad82ae
test eax, eax
jle 0x22dad8299
mov qword [rsp + 0x20], rsi
mov r9d, 1
mov r8, rbp
xor edx, edx
mov qword [rsp + 0x38], 0
mov ecx, 0xfde9
mov qword [rsp + 0x30], 0
mov dword [rsp + 0x28], 5
call qword [sym.imp.KERNEL32.dll_WideCharToMultiByte]
add rbx, 1
add rsi, 5
cmp rbx, 0x13d
je 0x22dad833c
movzx eax, word [rdi + rbx*2]
cmp ax, 0xffff
je 0x22dad8299
movsx r13d, ax
lea eax, [rbx - 0x120]
cmp eax, 0xe
jbe 0x22dad8369
mov edx, 1
mov ecx, r13d
lea rbp, [rsp + 0x40]
call qword [sym.imp.USER32.dll_MapVirtualKeyW]
mov r12d, eax
mov r14, qword [sym.imp.USER32.dll_ToUnicode]
mov r9, rbp
mov edx, r13d
mov ecx, r12d
lea r15, [rsp + 0x80]
mov dword [rsp + 0x28], 0
mov dword [rsp + 0x20], 0x10
mov r8, r15
call r14
cmp eax, 0xffffffff
jne 0x22dad8260
mov r9, rbp
mov r8, r15
mov edx, r13d
mov ecx, r12d
mov dword [rsp + 0x28], 0
mov dword [rsp + 0x20], 0x10
call r14
jmp 0x22dad8260
movaps xmm6, xmmword [rsp + 0x180]
movaps xmm7, xmmword [rsp + 0x190]
movaps xmm8, xmmword [rsp + 0x1a0]
add rsp, 0x1b8
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
mov rax, qword [0x22dd74a90]
movaps xmmword [rsp + 0x40], xmm8
lea rbp, [rsp + 0x40]
mov dword [rsp + 0x78], 0x6b
mov qword [rsp + 0x70], rax
movaps xmmword [rsp + 0x50], xmm7
movaps xmmword [rsp + 0x60], xmm6
mov r12d, dword [rsp + rbx*4 - 0x440]
jmp 0x22dad82e1
Function at 0x22dadc9a0
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 0x22dadcb38
test r12, r12
je 0x22dadcb60
mov r8d, dword [r12 + 0x18]
test r8d, r8d
je 0x22dadca70
cmp qword [r12], 0
je 0x22dadca95
cmp qword [r12 + 8], 0
je 0x22dadcac0
cmp qword [r12 + 0x10], 0
je 0x22dadcaf0
mov eax, dword [r12 + 0x18]
test eax, eax
je 0x22dadcb17
mov ecx, dword [0x22ddd80c0]
test ecx, ecx
je 0x22dadcb80
mov edx, dword [r13 + 0xd8]
test edx, edx
jne 0x22dadca33
lea rdx, [r13 + 0xc0]
mov rcx, r13
call fcn.22dadc7e0
test eax, eax
je 0x22dadcb98
mov eax, dword [r12 + 0x18]
cmp eax, 0x100
je 0x22dadca58
lea rdx, str.Win32:_Gamma_ramp_size_must_be_256
mov ecx, 0x10008
add rsp, 0x28
pop r12
pop r13
jmp fcn.22dad20f0
mov rdx, r12
mov rcx, r13
add rsp, 0x28
pop r12
pop r13
jmp fcn.22dae3830
mov r8d, 0x207
lea rdx, [0x22dd11c90]
lea rcx, str.ramp__size___0
call qword [sym.imp.msvcrt.dll__wassert]
cmp qword [r12], 0
jne 0x22dadc9d9
mov r8d, 0x208
lea rdx, [0x22dd11c90]
lea rcx, str.ramp__red___NULL
call qword [sym.imp.msvcrt.dll__wassert]
cmp qword [r12 + 8], 0
jne 0x22dadc9e5
nop dword [rax + rax]
mov r8d, 0x209
lea rdx, [0x22dd11c90]
lea rcx, str.ramp__green___NULL
call qword [sym.imp.msvcrt.dll__wassert]
cmp qword [r12 + 0x10], 0
jne 0x22dadc9f1
nop word cs:[rax + rax]
mov r8d, 0x20a
lea rdx, [0x22dd11c90]
lea rcx, str.ramp__blue___NULL
call qword [sym.imp.msvcrt.dll__wassert]
mov eax, dword [r12 + 0x18]
test eax, eax
jne 0x22dadc9fe
xor r8d, r8d
lea rdx, str.Invalid_gamma_ramp_size__i
mov ecx, 0x10004
add rsp, 0x28
pop r12
pop r13
jmp fcn.22dad20f0
mov r8d, 0x205
lea rdx, [0x22dd11c90]
lea rcx, [0x22dd11dd0]
call qword [sym.imp.msvcrt.dll__wassert]
test r12, r12
jne 0x22dadc9c0
nop dword [rax + rax]
mov r8d, 0x206
lea rdx, [0x22dd11c90]
lea rcx, str.ramp___NULL
call qword [sym.imp.msvcrt.dll__wassert]
jmp 0x22dadc9c0
xor edx, edx
mov ecx, 0x10001
add rsp, 0x28
pop r12
pop r13
jmp fcn.22dad20f0
add rsp, 0x28
pop r12
pop r13
ret
Function at 0x22dadd700
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 0x22dadd850
mov eax, dword [0x22ddd80c0]
test eax, eax
je 0x22dadd760
xor edx, edx
test esi, esi
setne dl
cmp ebx, 0x20006
je 0x22dadd750
lea eax, [rbx - 0x20003]
cmp eax, 0xa
ja case.0x22dadd74b.131076
lea rcx, [0x22dd12ef8]
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.22dad20f0
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.22dad20f0
mov rcx, r12
mov dword [r12 + 0x1c], edx
add rsp, 0x40
pop rbx
pop rsi
pop r12
jmp fcn.22dae2e00
mov dword [r12 + 0x18], edx
jmp 0x22dadd755
cmp qword [r12 + 0x50], 0
mov dword [r12 + 0x14], edx
jne 0x22dadd755
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 0x22dadd755
cmp qword [r12 + 0x50], 0
mov dword [r12 + 0xc], edx
jne 0x22dadd755
mov rcx, r12
add rsp, 0x40
pop rbx
pop rsi
pop r12
jmp fcn.22dadd560
cmp qword [r12 + 0x50], 0
mov dword [r12 + 8], edx
jne 0x22dadd755
jmp 0x22dadd821
mov r8d, 0x36f
lea rdx, [0x22dd12618]
lea rcx, [0x22dd11546]
call qword [sym.imp.msvcrt.dll__wassert]
jmp 0x22dadd719

Function at 0x22dadd870
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 0x22dae0180
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 0x22dae0300
test ebx, ebx
js 0x22dae02b0
test esi, esi
js 0x22dae0240
mov eax, dword [0x22ddd80c0]
test eax, eax
je 0x22dae0290
test ebx, ebx
jle 0x22dae0264
test esi, esi
je 0x22dae0264
cmp ebp, 0xffffffff
jl 0x22dae02d0
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.22dae4680
lea rdx, [0x22dd12618]
mov r8d, 0x3a7
lea rcx, [0x22dd12c6a]
call qword [sym.imp.msvcrt.dll__wassert]
mov edx, dword [0x22ddd80c0]
test edx, edx
je 0x22dae0290
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.22dad20f0
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.22dad20f0
mov r8d, 0x3a6
lea rdx, [0x22dd12618]
lea rcx, [0x22dd12c54]
call qword [sym.imp.msvcrt.dll__wassert]
jmp 0x22dae01d1
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.22dad20f0
mov r8d, 0x3a5
lea rdx, [0x22dd12618]
lea rcx, [0x22dd11546]
call qword [sym.imp.msvcrt.dll__wassert]
jmp 0x22dae01c9
Function at 0x22dae0490
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 [0x22ddd80c0]
test ecx, ecx
je 0x22dae0580
test r12, r12
je 0x22dae0570
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 [0x22ddd96ec], 1
jne 0x22dae0550
mov ecx, dword [0x22ddd96f0]
mov rdi, qword [sym.imp.KERNEL32.dll_TlsGetValue]
call rdi
cmp r12, rax
je 0x22dae0598
mov rcx, r12
call fcn.22dae2230
mov rax, qword [0x22ddd84c0]
lea rdx, [0x22ddd84c0]
cmp r12, rax
je 0x22dae0533
nop dword [rax]
mov rdx, rax
mov rax, qword [rax]
cmp rax, r12
jne 0x22dae0528
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, [0x22dd11068]
lea rcx, [0x22dd11190]
call qword [sym.imp.msvcrt.dll__wassert]
jmp 0x22dae04f1
add rsp, 0x28
pop rdi
pop r12
ret
xor edx, edx
mov ecx, 0x10001
add rsp, 0x28
pop rdi
pop r12
jmp fcn.22dad20f0
cmp dword [0x22ddd96ec], 1
jne 0x22dae05c9
mov ecx, dword [0x22ddd96f0]
call rdi
mov edx, dword [0x22ddd80c0]
test edx, edx
je 0x22dae05e5
test rax, rax
je 0x22dae0509
xor ecx, ecx
call qword [rax + 0x250]
jmp 0x22dae0509
mov r8d, 0x40
lea rdx, [0x22dd11068]
lea rcx, [0x22dd11190]
call qword [sym.imp.msvcrt.dll__wassert]
jmp 0x22dae05a1
xor edx, edx
mov ecx, 0x10001
call fcn.22dad20f0
jmp 0x22dae0509
Function at 0x22dae0890
Capabilities:
Allocate thread local storage
Set thread local storage value

Disassembly:
push r12
push rsi
push rbx
sub rsp, 0x30
mov r12d, dword [0x22ddd80c0]
lea rbx, [0x22ddd80c0]
test r12d, r12d
je 0x22dae08c0
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 [0x22dd0be90]
mov eax, dword [0x22dd0bea0]
movups xmmword [0x22ddd80c8], xmm0
mov dword [0x22ddd80d8], eax
call fcn.22dade4d0
test eax, eax
je 0x22dae0a0b
mov r9d, dword [0x22ddd96f8]
test r9d, r9d
jne 0x22dae0a20
lea rcx, [0x22ddd9700]
call qword [sym.imp.KERNEL32.dll_InitializeCriticalSection]
mov r8d, dword [0x22ddd96e4]
mov dword [0x22ddd96f8], 1
test r8d, r8d
jne 0x22dae0a40
mov rsi, qword [sym.imp.KERNEL32.dll_TlsAlloc]
call rsi
mov dword [0x22ddd96e8], eax
cmp eax, 0xffffffff
je 0x22dae0a80
mov dword [0x22ddd96e4], 1
mov ecx, dword [0x22ddd96ec]
test ecx, ecx
jne 0x22dae0ab8
call rsi
mov dword [0x22ddd96f0], eax
cmp eax, 0xffffffff
je 0x22dae0a80
cmp dword [0x22ddd96e4], 1
mov dword [0x22ddd96ec], 1
jne 0x22dae0a60
lea rdx, [0x22ddda800]
mov ecx, dword [0x22ddd96e8]
call qword [sym.imp.KERNEL32.dll_TlsSetValue]
mov edx, dword [0x22ddd9730]
mov dword [0x22ddd80c0], 1
test edx, edx
jne 0x22dae0aa0
call qword [0x22ddda568]
mov eax, eax
mov qword [0x22ddd9728], rax
call fcn.22dad6200
mov rcx, qword [str.03000000fa2d00000100000000000000_3DRUDDER_leftx:a0_lefty:a1_rightx:a5_righty:a2_platform:Windows_]
test rcx, rcx
je 0x22dae08ab
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 0x22dae09f9
call fcn.22dae63e0
test eax, eax
je 0x22dae0a0b
mov rcx, qword [rsi]
add rsi, 8
test rcx, rcx
je 0x22dae08ab
mov eax, dword [rbx]
test eax, eax
jne 0x22dae09e0
xor edx, edx
mov ecx, 0x10001
call fcn.22dad20f0
call fcn.22dae0600
mov eax, r12d
add rsp, 0x30
pop rbx
pop rsi
pop r12
ret
mov r8d, 0x4c
lea rdx, [0x22dd11068]
lea rcx, str.mutex__win32.allocated__GLFW_FALSE
call qword [sym.imp.msvcrt.dll__wassert]
jmp 0x22dae0908
mov r8d, 0x29
lea rdx, [0x22dd11068]
lea rcx, str.tls__win32.allocated__GLFW_FALSE
call qword [sym.imp.msvcrt.dll__wassert]
jmp 0x22dae092f
mov r8d, 0x46
lea rdx, [0x22dd11068]
lea rcx, [0x22dd11190]
call qword [sym.imp.msvcrt.dll__wassert]
jmp 0x22dae0987
lea rdx, str.Win32:_Failed_to_allocate_TLS_index
mov ecx, 0x10008
call fcn.22dad7750
jmp 0x22dae0a0b
lea rcx, [rsp + 0x28]
call qword [sym.imp.KERNEL32.dll_QueryPerformanceCounter]
mov rax, qword [rsp + 0x28]
jmp 0x22dae09ba
mov r8d, 0x29
lea rdx, [0x22dd11068]
lea rcx, str.tls__win32.allocated__GLFW_FALSE
call qword [sym.imp.msvcrt.dll__wassert]
jmp 0x22dae095f