joyce8/EMBER2024-capa huggingface dataset:
Function at 0x1400f3cd0
Capabilities:
Query or enumerate registry value

Disassembly:
mov qword [rsp + 0x18], rbx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
lea rbp, [rsp - 0x170]
sub rsp, 0x270
mov rax, qword [0x1401674b8]
xor rax, rsp
mov qword [rbp + 0x160], rax
xor ebx, ebx
mov dword [rsp + 0x40], 0x100
mov qword [rsp + 0x38], rbx
lea r9, [rsp + 0x40]
mov qword [rsp + 0x30], rbx
lea r8, [rsp + 0x60]
mov r15, rdx
mov qword [rsp + 0x28], rbx
xor edx, edx
mov qword [rsp + 0x20], rbx
mov r13, rcx
mov r12d, ebx
call qword [sym.imp.ADVAPI32.dll_RegEnumValueW]
cmp eax, 0x103
je 0x1400f3e52
test eax, eax
jne 0x1400f3e7e
mov rsi, rbx
mov qword [rsp + 0x48], rbx
mov edi, ebx
mov qword [rsp + 0x50], 0
mov r14d, ebx
cmp word [rsp + 0x60], ax
je 0x1400f3dd7
lea rax, [rsp + 0x60]
mov rbx, 0xffffffffffffffff
inc rbx
cmp word [rax + rbx*2], 0
jne 0x1400f3d75
inc ebx
test ebx, ebx
jle 0x1400f3d9f
mov edx, ebx
lea rcx, [rsp + 0x48]
call fcn.1400195a0
mov r14d, dword [rsp + 0x54]
mov edi, dword [rsp + 0x50]
mov rsi, qword [rsp + 0x48]
mov edx, edi
add edi, ebx
mov dword [rsp + 0x50], edi
cmp edi, r14d
jle 0x1400f3dc4
lea rcx, [rsp + 0x48]
call fcn.140019200
mov r14d, dword [rsp + 0x54]
mov edi, dword [rsp + 0x50]
mov rsi, qword [rsp + 0x48]
movsxd r8, ebx
lea rdx, [rsp + 0x60]
add r8, r8
mov rcx, rsi
call fcn.140032f60
movsxd rbx, dword [r15 + 8]
lea eax, [rbx + 1]
mov dword [r15 + 8], eax
cmp eax, dword [r15 + 0xc]
jle 0x1400f3df2
mov edx, ebx
mov rcx, r15
call fcn.140019100
mov rax, rbx
lea r9, [rsp + 0x40]
xor ebx, ebx
shl rax, 4
add rax, qword [r15]
lea r8, [rsp + 0x60]
mov qword [rsp + 0x38], rbx
inc r12d
mov qword [rsp + 0x30], rbx
mov edx, r12d
mov qword [rsp + 0x28], rbx
mov rcx, r13
mov qword [rax], rsi
mov dword [rax + 8], edi
mov dword [rax + 0xc], r14d
mov dword [rsp + 0x40], 0x100
mov qword [rsp + 0x48], rbx
mov qword [rsp + 0x50], rbx
mov qword [rsp + 0x20], rbx
call qword [sym.imp.ADVAPI32.dll_RegEnumValueW]
cmp eax, 0x103
jne 0x1400f3d44
mov al, 1
mov rcx, qword [rbp + 0x160]
xor rcx, rsp
call fcn.14010f980
mov rbx, qword [rsp + 0x2c0]
add rsp, 0x270
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret
xor al, al
jmp 0x1400f3e54
Function at 0x1400f8dc0
Capabilities:
Get file version info

Disassembly:
push rbp
push rsi
push rdi
sub rsp, 0x30
cmp dword [rdx + 8], 0
lea rsi, [0x14011c560]
mov rdi, rdx
je 0x1400f8ddd
mov rcx, qword [rdx]
jmp 0x1400f8de0
mov rcx, rsi
xor edx, edx
mov qword [rsp + 0x50], rbx
call sub.VERSION.dll_GetFileVersionInfoSizeW
mov ebp, eax
test eax, eax
je 0x1400f8ea0
xor ebx, ebx
mov dword [rsp + 0x28], eax
mov qword [rsp + 0x20], rbx
mov dword [rsp + 0x2c], ebx
test eax, eax
jle 0x1400f8e1a
xor edx, edx
lea rcx, [rsp + 0x20]
call fcn.14003eab0
mov rbx, qword [rsp + 0x20]
cmp dword [rdi + 8], 0
je 0x1400f8e23
mov rsi, qword [rdi]
mov r9, rbx
mov r8d, ebp
xor edx, edx
mov rcx, rsi
call sub.VERSION.dll_GetFileVersionInfoW
test eax, eax
je 0x1400f8e93
lea r9, [rsp + 0x58]
mov rcx, rbx
lea r8, [rsp + 0x60]
lea rdx, str.StringFileInfo040904b0ShellIntegrationVersion
call sub.VERSION.dll_VerQueryValueW
test eax, eax
je 0x1400f8e93
mov rcx, qword [rsp + 0x60]
lea rdx, [rsp + 0x68]
mov r8d, 0xa
call qword [sym.imp.api_ms_win_crt_convert_l1_1_0.dll_wcstoul]
mov rdx, qword [rsp + 0x68]
mov edi, eax
cmp word [rdx], 0
jne 0x1400f8e93
test rbx, rbx
je 0x1400f8e84
mov rcx, rbx
call fcn.1400443e0
mov eax, edi
mov rbx, qword [rsp + 0x50]
add rsp, 0x30
pop rdi
pop rsi
pop rbp
ret
test rbx, rbx
je 0x1400f8ea0
mov rcx, rbx
call fcn.1400443e0
mov rbx, qword [rsp + 0x50]
xor eax, eax
add rsp, 0x30
pop rdi
pop rsi
pop rbp
ret

Function at 0x1400fcef0
Capabilities:
Query or enumerate registry value

Disassembly:
push rbp
push rsi
push r12
push r14
sub rsp, 0x38
mov r14, rcx
lea rbp, [0x14011c560]
xor ecx, ecx
mov rsi, r8
mov r12, rdx
mov dword [rsp + 0x70], ecx
cmp dword [r8 + 8], ecx
je 0x1400fcf1c
mov rdx, qword [r8]
jmp 0x1400fcf1f
mov rdx, rbp
lea rax, [rsp + 0x70]
xor r8d, r8d
mov qword [rsp + 0x28], rax
lea r9, [rsp + 0x78]
mov qword [rsp + 0x20], rcx
mov rcx, r12
call qword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
test eax, eax
jne 0x1400fd006
mov eax, dword [rsp + 0x78]
mov dword [r14], eax
mov eax, dword [rsp + 0x70]
mov qword [rsp + 0x60], rbx
movsxd rbx, dword [r14 + 0x10]
mov qword [rsp + 0x68], rdi
cmp eax, ebx
jle 0x1400fcf9c
mov qword [rsp + 0x30], r15
mov r15d, eax
sub r15d, ebx
mov dword [r14 + 0x10], eax
cmp eax, dword [r14 + 0x14]
jle 0x1400fcf84
mov edx, ebx
lea rcx, [r14 + 8]
call fcn.14003eab0
mov rcx, rbx
movsxd r8, r15d
add rcx, qword [r14 + 8]
xor edx, edx
call sub.VCRUNTIME140.dll_memset
mov r15, qword [rsp + 0x30]
jmp 0x1400fcfb3
jge 0x1400fcfb3
mov ecx, ebx
sub ecx, eax
je 0x1400fcfb3
sub ebx, ecx
lea rcx, [r14 + 8]
mov dword [r14 + 0x10], ebx
call fcn.14007b2e0
cmp dword [rsi + 8], 0
mov rbx, qword [rsp + 0x60]
je 0x1400fcfc1
mov rbp, qword [rsi]
lea rax, [rsp + 0x70]
xor r9d, r9d
mov qword [rsp + 0x28], rax
xor r8d, r8d
mov rax, qword [r14 + 8]
mov rdx, rbp
mov rcx, r12
mov qword [rsp + 0x20], rax
call qword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
mov rdi, qword [rsp + 0x68]
test eax, eax
jne 0x1400fd006
mov eax, dword [r14 + 0x10]
cmp dword [rsp + 0x70], eax
jne 0x1400fd006
mov al, 1
add rsp, 0x38
pop r14
pop r12
pop rsi
pop rbp
ret
xor al, al
add rsp, 0x38
pop r14
pop r12
pop rsi
pop rbp
ret
Function at 0x140100c20
Capabilities:
Get common file path

Disassembly:
push rbp
push r15
lea rbp, [rsp - 0x178]
sub rsp, 0x278
mov rax, qword [0x1401674b8]
xor rax, rsp
mov qword [rbp + 0x160], rax
mov r15, rcx
lea rax, [rsp + 0x50]
xor ecx, ecx
mov qword [rsp + 0x20], rax
xor r9d, r9d
xor r8d, r8d
mov edx, 0x8026
call qword [sym.imp.SHELL32.dll_SHGetFolderPathW]
test eax, eax
js 0x140100dcf
mov qword [rsp + 0x2a0], rsi
xor esi, esi
mov qword [rsp + 0x2a8], rdi
mov edi, esi
mov qword [rsp + 0x270], r14
mov r14d, esi
mov qword [rsp + 0x30], rsi
mov qword [rsp + 0x38], rsi
cmp word [rsp + 0x50], si
je 0x140100d26
mov qword [rsp + 0x298], rbx
lea rax, [rsp + 0x50]
mov rbx, 0xffffffffffffffff
inc rbx
cmp word [rax + rbx*2], si
jne 0x140100cb4
inc ebx
test ebx, ebx
jle 0x140100cdd
mov edx, ebx
lea rcx, [rsp + 0x30]
call fcn.1400195a0
mov r14d, dword [rsp + 0x3c]
mov edi, dword [rsp + 0x38]
mov rsi, qword [rsp + 0x30]
mov edx, edi
add edi, ebx
mov dword [rsp + 0x38], edi
cmp edi, r14d
jle 0x140100d02
lea rcx, [rsp + 0x30]
call fcn.140019200
mov r14d, dword [rsp + 0x3c]
mov edi, dword [rsp + 0x38]
mov rsi, qword [rsp + 0x30]
movsxd r8, ebx
lea rdx, [rsp + 0x50]
add r8, r8
mov rcx, rsi
call fcn.140032f60
mov rbx, qword [rsp + 0x298]
mov eax, 0x1d
test edi, edi
jne 0x140100d2b
mov eax, 0x1e
lea edx, [rdi + rax]
mov qword [rsp + 0x40], rsi
mov rsi, qword [rsp + 0x2a0]
cmp edx, r14d
mov dword [rsp + 0x48], edi
mov rdi, qword [rsp + 0x2a8]
mov dword [rsp + 0x4c], r14d
mov r14, qword [rsp + 0x270]
jle 0x140100d63
lea rcx, [rsp + 0x40]
call fcn.1400195a0
mov r8d, 0x1c
lea rdx, str.MSBuild_14.0_bin_MSBuild.exe
lea rcx, [rsp + 0x40]
call fcn.14001e580
lea rcx, [rsp + 0x40]
call fcn.14009d3c0
test al, al
je 0x140100dc0
lea rdx, [rsp + 0x40]
mov rcx, r15
call fcn.140010b90
mov rcx, qword [rsp + 0x40]
test rcx, rcx
je 0x140100da4
call fcn.1400443e0
mov al, 1
mov rcx, qword [rbp + 0x160]
xor rcx, rsp
call fcn.14010f980
add rsp, 0x278
pop r15
pop rbp
ret
mov rcx, qword [rsp + 0x40]
test rcx, rcx
je 0x140100dcf
call fcn.1400443e0
mov r9, r15
lea r8, str.MSBuild.exe
lea rdx, str.MSBuildToolsPath
lea rcx, str.MicrosoftMSBuildToolsVersions14.0
call fcn.140100f80
test al, al
jne 0x140100da4
mov r9, r15
lea r8, str.MSBuild15.0_binMSBuild.exe
lea rdx, str.15.0
lea rcx, str.MicrosoftVisualStudioSxSVS7
call fcn.140100f80
test al, al
jne 0x140100da4
mov r9, r15
lea r8, str.MSBuild.exe
lea rdx, str.MSBuildToolsPath
lea rcx, str.MicrosoftMSBuildToolsVersions12.0
call fcn.140100f80
test al, al
jne 0x140100da4
mov r9, r15
lea r8, str.MSBuild.exe
lea rdx, str.MSBuildToolsPath
lea rcx, str.MicrosoftMSBuildToolsVersions4.0
call fcn.140100f80
test al, al
jne 0x140100da4
jmp 0x140100da6
Function at 0x140102aa0
Capabilities:
Get thread local storage value

Disassembly:
mov qword [rsp + 0x10], rbx
push rdi
sub rsp, 0x20
mov rbx, rcx
mov rdi, rcx
and rbx, 0xffffffffffffc000
cmp qword [rbx + 0x60], 0
je 0x140102c10
call qword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
cmp eax, dword [rbx + 0x68]
jne 0x140102c10
mov rax, qword [rbx + 0x60]
mov byte [rax + 0x344], 0
mov eax, 0xffff
add word [rbx + 0x74], ax
jne 0x140102bad
movzx ecx, word [rbx + 0x76]
mov r9, qword [rbx + 0x60]
call fcn.140103320
mov r8d, eax
inc r8
lea rax, [r8 + r8*2]
cmp rbx, qword [r9 + rax*8]
je 0x140102b81
mov rcx, qword [rbx + 0x48]
test rcx, rcx
je 0x140102b19
mov rax, qword [rbx + 0x40]
mov qword [rcx + 0x40], rax
mov rcx, qword [rbx + 0x40]
test rcx, rcx
je 0x140102b2a
mov rax, qword [rbx + 0x48]
mov qword [rcx + 0x48], rax
mov rcx, qword [rbx + 0x20]
lea rax, [rbx + 0x4000]
xor r8d, r8d
mov qword [rbx + 0x50], rax
mov qword [rbx + 0x40], r8
mov qword [rbx + 0x48], r8
mov qword [rbx + 0x58], r8
mov dword [rbx + 0x74], r8d
mov byte [rbx + 0x78], r8b
mov qword [rbx + 0x60], r8
mov qword [rbx + 0x10], r8
mov qword [rbx + 0x18], r8
mov ecx, dword [rcx + 0x1f2bc]
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
mov rdx, rbx
lea rcx, [rax + 0x300]
mov rbx, qword [rsp + 0x38]
add rsp, 0x20
pop rdi
jmp fcn.140103cf0
movzx eax, word [rbx + 0x76]
mov rcx, rbx
sub rcx, rax
mov edx, 0x4000
add rcx, rdx
xor r8d, r8d
mov qword [rbx + 0x50], rcx
mov qword [rbx + 0x58], r8
mov byte [rbx + 0x78], r8b
mov rbx, qword [rsp + 0x38]
add rsp, 0x20
pop rdi
ret
movzx ecx, word [rbx + 0x76]
mov eax, 0x400
cmp cx, ax
jbe 0x140102bf1
test dil, 0x7f
jne 0x140102bf1
movzx eax, bx
movzx r8d, cx
sub ax, di
mov edx, 0x4000
add ax, dx
xor edx, edx
movzx eax, ax
div r8d
test dx, dx
je 0x140102be8
movzx eax, dx
sub r8d, eax
jmp 0x140102beb
xor r8d, r8d
movsxd rax, r8d
sub rdi, rax
mov rax, qword [rbx + 0x58]
xor edx, edx
mov qword [rdi], rax
mov rcx, rbx
mov qword [rbx + 0x58], rdi
mov rbx, qword [rsp + 0x38]
add rsp, 0x20
pop rdi
jmp fcn.140101f70
movzx ecx, word [rbx + 0x76]
mov eax, 0x400
cmp cx, ax
jbe 0x140102c54
test dil, 0x7f
jne 0x140102c54
movzx eax, bx
movzx r8d, cx
sub ax, di
mov edx, 0x4000
add ax, dx
xor edx, edx
movzx eax, ax
div r8d
test dx, dx
je 0x140102c4b
movzx eax, dx
sub r8d, eax
jmp 0x140102c4e
xor r8d, r8d
movsxd rax, r8d
sub rdi, rax
mov rax, qword [rbx + 0x10]
nop dword [rax + rax]
mov qword [rdi], rax
mov rcx, rax
lock cmpxchg qword [rbx + 0x10], rdi
cmp rax, rcx
jne 0x140102c60
test rcx, rcx
jne 0x140102ca3
mov qword [rsp + 0x30], rsi
mov rsi, qword [rbx + 0x18]
cmp rsi, 1
je 0x140102c9e
lea rcx, [rsi + 0x10]
call fcn.140101f00
mov rax, qword [rsi + 8]
mov qword [rbx + 0x18], rax
mov qword [rsi + 8], rbx
mov byte [rsi + 0x10], 0
mov rsi, qword [rsp + 0x30]
mov rbx, qword [rsp + 0x38]
add rsp, 0x20
pop rdi
ret
Function at 0x1401033a0
Capabilities:
Get thread local storage value
Set thread local storage value

Disassembly:
mov qword [rsp + 0x10], rbx
push rsi
sub rsp, 0x20
mov rsi, rcx
movzx ebx, dl
mov ecx, dword [rcx + 0x1f2bc]
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
test bl, bl
je 0x1401034fa
test rax, rax
jne 0x1401034fa
mov qword [rsp + 0x30], rdi
lea rdi, [rsi + 0x1f2c0]
mov rcx, rdi
call fcn.140101f00
mov rbx, qword [rdi + 0x18]
test rbx, rbx
je 0x1401033f3
mov rax, qword [rbx]
mov qword [rdi + 0x18], rax
jmp 0x14010346e
mov rdx, qword [rdi + 8]
test rdx, rdx
jne 0x140103427
mov edx, 0x348
mov rcx, rsi
call fcn.140102e10
mov qword [rdi + 8], rax
mov rdx, rax
test rax, rax
jne 0x140103427
mov byte [rdi], al
mov rdi, qword [rsp + 0x30]
mov rbx, qword [rsp + 0x38]
add rsp, 0x20
pop rsi
ret
movzx eax, word [rdx + 0x76]
mov rbx, qword [rdx + 0x50]
mov rcx, rbx
sub rcx, rax
mov qword [rdx + 0x50], rcx
mov rcx, qword [rdi + 8]
lea rax, [rcx + 0x80]
cmp qword [rcx + 0x50], rax
jae 0x14010346e
mov qword [rcx + 0x50], 0
mov rax, qword [rdi + 0x10]
mov rcx, qword [rdi + 8]
mov qword [rcx + 0x40], rax
mov rax, qword [rdi + 8]
mov qword [rdi + 0x10], rax
mov qword [rdi + 8], 0
xor edx, edx
mov byte [rdi], 0
mov r8d, 0x348
mov rcx, rbx
call sub.VCRUNTIME140.dll_memset
test rbx, rbx
jne 0x140103498
mov rdi, qword [rsp + 0x30]
xor eax, eax
mov rbx, qword [rsp + 0x38]
add rsp, 0x20
pop rsi
ret
mov qword [rbx + 0x10], rsi
lea rax, [rsi + 0x10]
mov qword [rbx + 0x310], rax
mov rdx, rbx
mov ecx, dword [rsi + 0x1f2bc]
call qword [sym.imp.KERNEL32.dll_TlsSetValue]
lea rcx, [rsi + 0x1f090]
mov qword [rbx + 8], 0
call fcn.140101f00
mov rcx, qword [rsi + 0x1f088]
mov qword [rbx], rcx
mov rax, qword [rsi + 0x1f088]
test rax, rax
je 0x1401034e4
mov qword [rax + 8], rbx
mov qword [rsi + 0x1f088], rbx
mov rdi, qword [rsp + 0x30]
mov rax, rbx
mov byte [rsi + 0x1f090], 0
mov rbx, qword [rsp + 0x38]
add rsp, 0x20
pop rsi
ret

Function at 0x140103510
Capabilities:
Get thread local storage value

Disassembly:
mov qword [rsp + 8], rbx
push rdi
sub rsp, 0x20
mov rdi, qword [str.p.__]
mov rbx, rcx
test rdi, rdi
je 0x140103563
test rcx, rcx
je 0x140103563
call fcn.140101ea0
test al, al
je 0x14010355b
mov ecx, dword [rdi + 0x1f2bc]
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
mov r8, rbx
mov rcx, rdi
mov rdx, rax
mov rbx, qword [rsp + 0x30]
add rsp, 0x20
pop rdi
jmp fcn.140103930
mov rcx, rbx
call fcn.140102aa0
mov rbx, qword [rsp + 0x30]
add rsp, 0x20
pop rdi
ret
Function at 0x140103a50
Capabilities:
Get thread local storage value

Disassembly:
mov qword [rsp + 8], rbx
mov qword [rsp + 0x10], rbp
mov qword [rsp + 0x18], rsi
push rdi
push r14
push r15
sub rsp, 0x20
mov rsi, r9
mov rdi, r8
mov rbx, rdx
mov rbp, rcx
test dl, 0x3f
jne 0x140103b09
mov rcx, qword [rdx - 8]
lea r14, [rdx - 0x10]
mov rax, rcx
shr rax, 0x20
test al, 1
je 0x140103b09
mov rax, qword [r14]
test rax, rax
je 0x140103b09
cmp rax, r14
jae 0x140103b09
call fcn.1401063b0
cmp rax, r14
jne 0x140103b09
mov r15, qword [r14]
mov r14, qword [r15 + 0x48]
sub r14, rbx
add r14, r15
cmp rdi, r14
ja 0x140103af0
test rsi, rsi
je 0x140103ac7
lea rax, [rsi - 1]
test rbx, rax
jne 0x140103af0
lea rcx, [rbp + 0x10]
call fcn.140108180
xor ecx, ecx
mov rdx, r14
shr rdx, 1
cmp r14, rax
cmova rcx, rdx
cmp rdi, rcx
jbe 0x140103af0
mov qword [r15 + 0x40], rdi
mov rax, rbx
jmp 0x140103b95
mov r14, qword [r15 + 0x40]
mov rdx, rdi
mov rcx, rbp
test rsi, rsi
je 0x140103b36
mov r8, rsi
call fcn.1401020a0
jmp 0x140103b3b
mov rcx, rbx
mov rdx, rbx
and rcx, 0xffffffffffffc000
call fcn.140102a20
mov r14, rax
cmp rdi, rax
ja 0x140103af4
test rsi, rsi
je 0x140103b31
lea rcx, [rsi - 1]
test rbx, rcx
jne 0x140103af4
mov rax, rbx
jmp 0x140103b95
call fcn.1401035e0
mov rsi, rax
test rax, rax
je 0x140103b92
cmp r14, rdi
mov rdx, rbx
mov rcx, rax
cmovb rdi, r14
mov r8, rdi
call sub.VCRUNTIME140.dll_memcpy
test rbp, rbp
je 0x140103b92
test rbx, rbx
je 0x140103b92
mov rcx, rbx
call fcn.140101ea0
test al, al
je 0x140103b8a
mov ecx, dword [rbp + 0x1f2bc]
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
mov r8, rbx
mov rcx, rbp
mov rdx, rax
call fcn.140103930
jmp 0x140103b92
mov rcx, rbx
call fcn.140102aa0
mov rax, rsi
mov rbx, qword [rsp + 0x40]
mov rbp, qword [rsp + 0x48]
mov rsi, qword [rsp + 0x50]
add rsp, 0x20
pop r15
pop r14
pop rdi
ret
Function at 0x140103bb0
Capabilities:
Get thread local storage value

Disassembly:
push r15
sub rsp, 0x40
mov qword [rsp + 0x50], rbx
xor r15b, r15b
mov qword [rsp + 0x30], r12
mov qword [rsp + 0x28], r13
mov r13, rcx
add rcx, 0x1f080
call fcn.140101f00
mov rbx, qword [r13 + 0x1f078]
test rbx, rbx
je 0x140103c9e
mov qword [rsp + 0x58], rbp
mov qword [rsp + 0x60], rsi
mov qword [rsp + 0x38], rdi
mov qword [rsp + 0x20], r14
nop dword [rax + rax]
mov rcx, qword [rbx + 0x10]
xor edx, edx
xchg qword [rbx + 0x320], rdx
add rcx, 0x10
test rdx, rdx
je 0x140103c20
call fcn.140105240
mov r14b, 1
jmp 0x140103c23
xor r14b, r14b
xor edi, edi
xor bpl, bpl
xchg qword [rbx + 0x300], rdi
test rdi, rdi
je 0x140103c78
mov bpl, 1
nop word [rax + rax]
mov rcx, qword [rbx + 0x310]
mov rsi, qword [rdi + 0x40]
mov rax, qword [rcx]
cmp qword [rax + 0x1f290], 0
jne 0x140103c68
mov rcx, qword [rdi + 0x6c]
call fcn.140106740
mov rcx, qword [rbx + 0x310]
mov rdx, rdi
call fcn.140108380
mov rdi, rsi
test rsi, rsi
jne 0x140103c40
mov rbx, qword [rbx]
or bpl, r14b
or r15b, bpl
test rbx, rbx
jne 0x140103c00
mov r14, qword [rsp + 0x20]
mov rdi, qword [rsp + 0x38]
mov rsi, qword [rsp + 0x60]
mov rbp, qword [rsp + 0x58]
mov byte [r13 + 0x1f080], 0
mov ecx, dword [r13 + 0x1f2ac]
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
mov r13, qword [rsp + 0x28]
mov r12, qword [rsp + 0x30]
mov rbx, qword [rsp + 0x50]
test rax, rax
je 0x140103cd9
mov rcx, rax
call fcn.140102600
or al, r15b
add rsp, 0x40
pop r15
ret
movzx eax, r15b
add rsp, 0x40
pop r15
ret

Function at 0x140103e30
Capabilities:
Get thread local storage value

Disassembly:
push rbx
sub rsp, 0x20
mov rbx, rcx
test r8, r8
je 0x140103eef
lea rax, [r8 - 1]
test r8, rax
jne 0x140103eef
test rcx, rcx
jne 0x140103e62
mov rcx, qword [str.p.__]
call fcn.1401020a0
jmp 0x140103ed2
test rdx, rdx
jne 0x140103ebd
mov qword [rsp + 0x30], rdi
mov rdi, qword [str.p.__]
test rdi, rdi
je 0x140103eb0
call fcn.140101ea0
test al, al
je 0x140103ea8
mov ecx, dword [rdi + 0x1f2bc]
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
mov r8, rbx
mov rcx, rdi
mov rdx, rax
call fcn.140103930
mov rdi, qword [rsp + 0x30]
xor eax, eax
add rsp, 0x20
pop rbx
ret
mov rcx, rbx
call fcn.140102aa0
mov rdi, qword [rsp + 0x30]
xor eax, eax
add rsp, 0x20
pop rbx
ret
mov rcx, qword [str.p.__]
mov r9, r8
mov r8, rdx
mov rdx, rbx
call fcn.140103a50
mov rbx, rax
test rax, rax
jne 0x140103ee6
call qword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__errno]
mov dword [rax], 0xc
mov rax, rbx
add rsp, 0x20
pop rbx
ret
call qword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__errno]
mov dword [rax], 0x16
xor eax, eax
add rsp, 0x20
pop rbx
ret
Function at 0x140105540
Capabilities:
Query environment variable

Disassembly:
push rbx
sub rsp, 0x20
cmp qword [rcx], 0
mov rbx, rcx
mov qword [rcx + 0x18f30], rdx
jne 0x140105677
mov qword [rsp + 0x38], rsi
lea rcx, [0x140142760]
mov qword [rsp + 0x40], rdi
call qword [sym.imp.api_ms_win_crt_environment_l1_1_0.dll_getenv]
mov rdi, rax
test rax, rax
je 0x140105601
xor esi, esi
mov qword [rsp + 0x30], rsi
call qword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__errno]
lea r8d, [rsi + 0xa]
mov rcx, rdi
lea rdx, [rsp + 0x30]
mov dword [rax], esi
call qword [sym.imp.api_ms_win_crt_convert_l1_1_0.dll_strtol]
movsxd rsi, eax
call qword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__errno]
cmp dword [rax], 0x22
je 0x140105601
test esi, esi
js 0x140105601
mov rax, qword [rsp + 0x30]
cmp rax, rdi
je 0x140105601
movzx ecx, byte [rax]
test cl, cl
je 0x1401055e2
movsx ecx, cl
call qword [sym.imp.api_ms_win_crt_string_l1_1_0.dll_isspace]
test eax, eax
je 0x140105601
mov rax, qword [rsp + 0x30]
inc rax
mov qword [rsp + 0x30], rax
movzx ecx, byte [rax]
test cl, cl
jne 0x1401055c1
cmp esi, 0xffffffff
je 0x140105601
mov rdx, rsi
mov rcx, rbx
mov rsi, qword [rsp + 0x38]
mov rdi, qword [rsp + 0x40]
add rsp, 0x20
pop rbx
jmp 0x140106080
movabs rax, 0x10000000000
mov qword [rbx + 0x2ef0], 0x3ff
bsr rcx, rax
mov r9d, 1
movabs rax, 0xffffffffff
add cl, 0xfd
mov edx, r9d
shl rdx, cl
add rax, rdx
lea r8, [rdx - 1]
not r8
and r8, rax
mov qword [rbx], r8
jne 0x14010564b
lea eax, [r9 - 2]
jmp 0x14010564f
bsr rax, r8
mov rsi, qword [rsp + 0x38]
mov ecx, eax
mov rdi, qword [rsp + 0x40]
shl r9, cl
lea ecx, [rax - 3]
sub r8, r9
lea eax, [rax*8 - 0xb8]
shr r8, cl
add eax, r8d
cdqe
mov qword [rbx + 8], rax
add rsp, 0x20
pop rbx
ret
movabs rax, 0x10000000000
mov r9, rdx
mov r10, rcx
cmp rdx, rax
ja 0x1401060ff
mov r8d, 0x800000
mov r11d, 1
cmp rdx, r8
jb 0x1401060c4
bsr rcx, rdx
mov edx, r11d
lea r8, [r9 - 1]
add cl, 0xfd
shl rdx, cl
add r8, rdx
lea rax, [rdx - 1]
not rax
and r8, rax
mov qword [r10], r8
mov qword [r10 + 0x2ef0], 0x3ff
test r8, r8
jne 0x1401060dd
lea eax, [r8 - 1]
jmp 0x1401060e1
bsr rax, r8
mov ecx, eax
shl r11, cl
lea ecx, [rax - 3]
sub r8, r11
lea eax, [rax*8 - 0xb8]
shr r8, cl
add eax, r8d
cdqe
mov qword [r10 + 8], rax
ret
Function at 0x14010ad00
Capabilities:
Encode data using xor

Disassembly:
push rbx
sub rsp, 0x20
mov rbx, rcx
lea rcx, [rsp + 0x30]
call qword [sym.imp.KERNEL32.dll_QueryPerformanceCounter]
mov rax, qword [rsp + 0x30]
lea rcx, [fcn.14010ad00]
xor rax, rcx
xor rax, rbx
mov r8, rax
shr r8, 0x11
xor r8, rax
and r8d, 0xf
add r8, 1
je 0x14010ad7c
movabs r9, 0xbf58476d1ce4e5b9
movabs r10, 0x94d049bb133111eb
nop
mov rcx, rax
shr rcx, 0x1e
xor rcx, rax
imul rcx, r9
mov rdx, rcx
shr rdx, 0x1b
xor rdx, rcx
imul rdx, r10
mov rax, rdx
shr rax, 0x1f
xor rax, rdx
sub r8, 1
jne 0x14010ad50
add rsp, 0x20
pop rbx
ret

Function at 0x14010c170
Capabilities:
Get system information on windows

Disassembly:
push rbx
sub rsp, 0x50
lea rcx, [rsp + 0x20]
call qword [sym.imp.KERNEL32.dll_GetSystemInfo]
mov eax, dword [rsp + 0x24]
test eax, eax
je 0x14010c190
mov qword [0x140167340], rax
mov eax, dword [rsp + 0x48]
test eax, eax
je 0x14010c19f
mov qword [0x140167348], rax
lea rcx, str.kernelbase.dll
call qword [sym.imp.KERNEL32.dll_LoadLibraryA]
mov rbx, rax
test rax, rax
je 0x14010c1f0
lea rdx, str.VirtualAlloc2FromApp
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov qword [0x140238430], rax
test rax, rax
jne 0x14010c1e7
lea rdx, str.VirtualAlloc2
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov qword [0x140238430], rax
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_FreeLibrary]
lea rcx, str.ntdll.dll
call qword [sym.imp.KERNEL32.dll_LoadLibraryA]
mov rbx, rax
test rax, rax
je 0x14010c225
lea rdx, str.NtAllocateVirtualMemoryEx
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov rcx, rbx
mov qword [0x140238438], rax
call qword [sym.imp.KERNEL32.dll_FreeLibrary]
mov ecx, 5
call fcn.14010dc90
test al, al
jne 0x14010c241
mov ecx, 6
call fcn.14010dc90
test al, al
je 0x14010c246
call fcn.14010cb80
add rsp, 0x50
pop rbx
ret
Function at 0x14010d360
Capabilities:
Query environment variable

Disassembly:
mov qword [rsp + 0x10], rbx
mov qword [rsp + 0x18], rbp
push rsi
push rdi
push r12
push r14
push r15
sub rsp, 0xc0
xor r15d, r15d
lea rsi, [0x140167350]
mov ebp, r15d
lea r14d, [r15 + 0xe]
lea r12d, [r15 + 0x40]
nop
cmp dword [rsi + 4], r15d
jne 0x14010d4dd
mov r8, r12
mov byte [rsp + 0x20], r15b
lea rdx, str.mimalloc_
lea rcx, [rsp + 0x20]
call qword [sym.imp.api_ms_win_crt_string_l1_1_0.dll_strncpy]
mov rdx, qword [rsi + 0x10]
lea rcx, [rsp + 0x20]
mov r8, r12
mov byte [rsp + 0x60], r15b
call qword [sym.imp.api_ms_win_crt_string_l1_1_0.dll_strncat]
mov r8d, 0x41
mov byte [rsp + 0x60], r15b
lea rdx, [rsp + 0x70]
mov byte [rsp + 0x70], r15b
lea rcx, [rsp + 0x20]
call qword [sym.imp.KERNEL32.dll_GetEnvironmentVariableA]
mov eax, eax
dec rax
cmp rax, 0x3f
ja 0x14010d4d6
lea rax, [rsp + 0x70]
mov rbx, 0xffffffffffffffff
inc rbx
cmp byte [rax + rbx], r15b
jne 0x14010d406
cmp rbx, 0x41
mov rdi, r15
cmovae rbx, r12
test rbx, rbx
je 0x14010d437
nop
movsx ecx, byte [rsp + rdi + 0x70]
call qword [sym.imp.api_ms_win_crt_string_l1_1_0.dll_toupper]
mov byte [rsp + rdi + 0x20], al
inc rdi
cmp rdi, rbx
jb 0x14010d420
mov byte [rsp + rbx + 0x20], r15b
cmp byte [rsp + 0x20], r15b
je 0x14010d523
lea rdx, [rsp + 0x20]
lea rcx, str.1_TRUE_YES_ON
call sub.VCRUNTIME140.dll_strstr
test rax, rax
jne 0x14010d523
lea rdx, [rsp + 0x20]
lea rcx, str.0_FALSE_NO_OFF
call sub.VCRUNTIME140.dll_strstr
test rax, rax
je 0x14010d483
mov dword [rsi], r15d
mov dword [rsi + 4], 2
jmp 0x14010d4dd
lea rax, [rsp + 0x20]
mov r8d, 0xa
lea rdx, [rsp + 0xf0]
mov qword [rsp + 0xf0], rax
lea rcx, [rsp + 0x20]
call qword [sym.imp.api_ms_win_crt_convert_l1_1_0.dll_strtol]
mov rcx, qword [rsp + 0xf0]
cmp byte [rcx], r15b
jne 0x14010d4c1
mov dword [rsi], eax
mov dword [rsi + 4], 2
jmp 0x14010d4dd
mov rdx, qword [rsi + 0x10]
lea r8, [rsp + 0x20]
lea rcx, str.environment_option_mimalloc__s_has_an_invalid_value:__s_n
call fcn.14010d660
mov dword [rsi + 4], 1
cmp rbp, 2
je 0x14010d4f6
mov r8d, dword [rsi]
lea rcx, str.option__s:__ld_n
mov rdx, qword [rsi + 0x10]
call fcn.14010d540
inc rbp
add rsi, 0x18
sub r14, 1
jne 0x14010d390
lea r11, [rsp + 0xc0]
mov rbx, qword [r11 + 0x38]
mov rbp, qword [r11 + 0x40]
mov rsp, r11
pop r15
pop r14
pop r12
pop rdi
pop rsi
ret
mov dword [rsi], 1
mov dword [rsi + 4], 2
jmp 0x14010d4dd