joyce8/EMBER2024-capa huggingface dataset:
Function at 0x46b7b0
Capabilities:
Receive data
Receive data on socket

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x38
mov rbp, rcx
mov byte [rcx + 0x174], 0
mov rcx, qword [rcx + 0x160]
mov r12, rdx
mov qword [rsp + 0x90], r8
mov r14, r9
cmp rcx, 0xffffffffffffffff
je 0x46b7f2
call sub.WS2_32.dll___WSAFDIsSet
test eax, eax
jne 0x46b980
mov rcx, qword [rbp + 0x150]
cmp rcx, 0xffffffffffffffff
je 0x46b80e
movzx eax, byte [rbp + 0x171]
test al, al
je 0x46b9d0
test byte [rbp + 0x18c], 4
jne 0x46b8cc
mov rbx, qword [rbp + 0x18]
test rbx, rbx
je 0x46b8cc
nop dword [rax + rax]
mov rsi, qword [rbx + 0x110]
mov rdi, qword [rbx + 8]
cmp rsi, 0xffffffffffffffff
je 0x46b8c0
mov rdx, r14
mov rcx, rsi
call sub.WS2_32.dll___WSAFDIsSet
mov rdx, qword [rsp + 0x90]
mov rcx, rsi
mov r13d, eax
call sub.WS2_32.dll___WSAFDIsSet
mov rdx, r12
mov rcx, rsi
mov r15d, eax
call sub.WS2_32.dll___WSAFDIsSet
test r13d, r13d
jne 0x46b951
mov edx, dword [rbx + 0x124]
mov esi, dword [rbx + 0x120]
test edx, edx
je 0x46b8f0
cmp edx, 1
je 0x46b9b0
mov rcx, rbx
call qword [rbx + 0x150]
mov rax, qword [rbx + 0x20]
cmp byte [rax + 0x174], 0
jne 0x46b8c0
test byte [rax + 0x18c], 4
jne 0x46b8c0
cmp dword [rbx + 0x124], 2
jne 0x46b8c0
mov byte [rax + 0x174], 1
nop
test rdi, rdi
mov rbx, rdi
jne 0x46b830
mov rcx, rbp
call fcn.0046a5d0
mov eax, 1
add rsp, 0x38
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
test eax, eax
je 0x46b88f
mov rcx, rbx
call qword [rbx + 0x140]
mov rcx, rbx
call qword [rbx + 0x150]
cmp dword [rbx + 0x124], 1
je 0x46b9f0
test esi, esi
jne 0x46b898
cmp byte [rbx + 0x118], 0
je 0x46b898
mov eax, dword [rbx + 0x120]
cmp eax, 0xa
je 0x46ba00
and eax, 0xfffffffd
cmp eax, 0xc
jne 0x46b898
mov rcx, rbx
call qword [rbx + 0x148]
jmp 0x46b88f
mov rcx, rbx
mov edx, 1
call fcn.00466220
mov rcx, rbx
call qword [rbx + 0x150]
test rdi, rdi
mov rbx, rdi
jne 0x46b830
jmp 0x46b8cc
mov rbx, qword [sym.imp.WS2_32.dll_recv]
lea rsi, [rsp + 0x2c]
nop dword [rax]
xor r9d, r9d
mov rcx, qword [rbp + 0x160]
mov r8d, 4
mov rdx, rsi
call rbx
test eax, eax
jg 0x46b990
jmp 0x46b7f2
test r15d, r15d
je 0x46b88f
mov rcx, rbx
call qword [rbx + 0x148]
mov rcx, rbx
call qword [rbx + 0x150]
jmp 0x46b913
mov rdx, r12
call sub.WS2_32.dll___WSAFDIsSet
test eax, eax
je 0x46b80e
mov rcx, rbp
call fcn.0046b5b0
jmp 0x46b80e
test r15d, r15d
jne 0x46b9b9
jmp 0x46b913
mov rcx, rbx
call qword [rbx + 0x148]
mov rcx, rbx
call qword [rbx + 0x150]
mov eax, dword [rbx + 0x120]
jmp 0x46b937
Function at 0x46c540
Capabilities:
Send data
Send data on socket
Send http request

Disassembly:
push rdi
push rsi
push rbx
sub rsp, 0x20
mov rsi, qword [rcx + 0x20]
mov rbx, rcx
test byte [rsi + 0x18d], 0x20
je 0x46c6eb
cmp qword [rcx + 0x168], 0
je 0x46c580
lea rdx, str.Error:_connection_scheduled_for__upgrade__cannot_be_suspended
mov rcx, rsi
add rsp, 0x20
pop rbx
pop rsi
pop rdi
jmp fcn.0046f900
lea rdi, [rsi + 0x128]
mov rcx, rdi
call qword [sym.imp.KERNEL32.dll_EnterCriticalSection]
cmp byte [rbx + 0x178], 0
jne 0x46c660
test byte [rsi + 0x18c], 4
jne 0x46c5f4
mov rax, qword [rsi + 0x180]
cmp qword [rbx + 0x100], rax
mov rax, qword [rbx + 0x18]
je 0x46c6a0
test rax, rax
je 0x46c6d4
mov rdx, qword [rbx + 0x10]
mov qword [rax + 0x10], rdx
mov rax, qword [rbx + 0x10]
test rax, rax
je 0x46c6c7
mov rdx, qword [rbx + 0x18]
mov qword [rax + 0x18], rdx
mov qword [rbx + 0x10], 0
mov qword [rbx + 0x18], 0
mov rax, qword [rbx + 8]
test rax, rax
je 0x46c690
mov rdx, qword [rbx]
mov qword [rax], rdx
mov rax, qword [rbx]
test rax, rax
je 0x46c680
mov rdx, qword [rbx + 8]
mov qword [rax + 8], rdx
mov qword [rbx], 0
mov qword [rbx + 8], 0
mov rax, qword [rsi + 0x20]
mov qword [rbx], rax
cmp qword [rsi + 0x28], 0
je 0x46c670
mov rax, qword [rsi + 0x20]
mov qword [rax + 8], rbx
mov qword [rsi + 0x20], rbx
mov byte [rbx + 0x170], 1
mov rcx, rdi
add rsp, 0x20
pop rbx
pop rsi
pop rdi
jmp qword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov byte [rbx + 0x178], 0
jmp 0x46c647
mov qword [rsi + 0x28], rbx
jmp 0x46c63c
mov rax, qword [rbx + 8]
mov qword [rsi + 0x18], rax
jmp 0x46c617
mov rax, qword [rbx]
mov qword [rsi + 0x10], rax
jmp 0x46c607
test rax, rax
je 0x46c6e1
mov rdx, qword [rbx + 0x10]
mov qword [rax + 0x10], rdx
mov rax, qword [rbx + 0x10]
test rax, rax
jne 0x46c5dc
mov rax, qword [rbx + 0x18]
mov qword [rsi + 0x48], rax
jmp 0x46c5e4
mov rax, qword [rbx + 0x18]
mov qword [rsi + 0x58], rax
jmp 0x46c5e4
mov rax, qword [rbx + 0x10]
mov qword [rsi + 0x50], rax
jmp 0x46c5cf
mov rax, qword [rbx + 0x10]
mov qword [rsi + 0x40], rax
jmp 0x46c6ad
lea r9, str.Cannot_suspend_connections_without_enabling_MHD_ALLOW_SUSPEND_RESUME__n
mov r8d, 0xaf5
lea rdx, str.T:_Bin_prep_mhd_src_libmicrohttpd_0.9.55_src_microhttpd_daemon.c
mov rcx, qword [0x004cd150]
call qword [0x004cd158]
nop
nop dword [rax]
Function at 0x46c710
Capabilities:
Send data
Send data on socket
Send http request

Disassembly:
push rdi
push rsi
push rbx
sub rsp, 0x20
mov rbx, qword [rcx + 0x20]
mov rsi, rcx
test byte [rbx + 0x18d], 0x20
je 0x46c7a4
lea rdi, [rbx + 0x128]
mov rcx, rdi
call qword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov byte [rsi + 0x178], 1
mov rcx, rdi
mov byte [rbx + 0x173], 1
call qword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
cmp qword [rbx + 0x160], 0xffffffffffffffff
je 0x46c779
xor r9d, r9d
mov rcx, qword [rbx + 0x168]
mov r8d, 1
lea rdx, [0x004b5756]
call qword [sym.imp.WS2_32.dll_send]
test eax, eax
jle 0x46c781
add rsp, 0x20
pop rbx
pop rsi
pop rdi
ret
call qword [sym.imp.WS2_32.dll_WSAGetLastError]
cmp eax, 0x2733
je 0x46c779
lea rdx, str.Failed_to_signal_resume_via_inter_thread_communication_channel.
mov rcx, rbx
add rsp, 0x20
pop rbx
pop rsi
pop rdi
jmp fcn.0046f900
lea r9, str.Cannot_resume_connections_without_enabling_MHD_ALLOW_SUSPEND_RESUME__n
mov r8d, 0xb13
lea rdx, str.T:_Bin_prep_mhd_src_libmicrohttpd_0.9.55_src_microhttpd_daemon.c
mov rcx, qword [0x004cd150]
call qword [0x004cd158]
nop
nop word cs:[rax + rax]
Function at 0x46d690
Capabilities:
Receive data
Receive data on socket

Disassembly:
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x58
movzx edx, byte [rcx + 0x170]
xor eax, eax
mov rbx, rcx
test dl, dl
jne 0x46d6d9
mov ecx, dword [rcx + 0x18c]
mov r9d, ecx
and r9d, 8
jne 0x46d6d9
test cl, 0x40
je 0x46d800
movzx esi, byte [rbx + 0x170]
test sil, sil
je 0x46d6e2
mov rcx, rbx
call fcn.0046a5d0
mov eax, 1
add rsp, 0x58
pop rbx
pop rsi
pop rdi
pop rbp
ret
test cl, 4
je 0x46d830
mov rax, qword [rbx + 0x150]
mov qword [rsp + 0x30], 0
mov qword [rsp + 0x38], 0
mov qword [rsp + 0x40], 0
mov qword [rsp + 0x48], 0
cmp rax, 0xffffffffffffffff
je 0x46d820
movzx edx, byte [rbx + 0x171]
test dl, dl
jne 0x46d820
mov edx, 0x300
mov qword [rsp + 0x30], rax
mov esi, 1
mov word [rsp + 0x38], dx
mov ebp, 2
mov edi, 1
mov r9d, 1
mov rax, qword [rbx + 0x160]
cmp rax, 0xffffffffffffffff
je 0x46d880
mov r9d, r9d
shl r9, 4
and ch, 0x20
mov qword [rsp + r9 + 0x30], rax
mov eax, 0x300
mov word [rsp + r9 + 0x38], ax
jne 0x46d845
lea rcx, [rsp + 0x30]
xor r8d, r8d
mov edx, ebp
call sub.WS2_32.dll_WSAPoll
test eax, eax
js 0x46d88a
shl rdi, 4
test word [rsp + rdi + 0x3a], 0x300
je 0x46d7cd
mov rdi, qword [sym.imp.WS2_32.dll_recv]
lea rbp, [rsp + 0x2c]
xor r9d, r9d
mov rcx, qword [rbx + 0x160]
mov r8d, 4
mov rdx, rbp
call rdi
test eax, eax
jg 0x46d7b4
movzx eax, byte [rbx + 0x170]
cmp al, 1
je 0x46d6cc
test sil, sil
je 0x46d6cc
test word [rsp + 0x3a], 0x300
je 0x46d6cc
mov rcx, rbx
call fcn.0046b5b0
jmp 0x46d6cc
xor edx, edx
mov rcx, rbx
call fcn.0046ce00
mov eax, 1
add rsp, 0x58
pop rbx
pop rsi
pop rdi
pop rbp
ret
mov ebp, 1
xor edi, edi
jmp 0x46d753
xor edx, edx
mov rcx, rbx
call fcn.0046ca10
jmp 0x46d6cc
mov ebp, r9d
movsxd rdi, eax
mov rcx, rbx
call fcn.00469980
mov r9d, ebp
test r9d, r9d
je 0x46d6cc
lea rcx, [rsp + 0x30]
xor r8d, r8d
mov edx, r9d
call sub.WS2_32.dll_WSAPoll
test eax, eax
js 0x46d88a
cmp edi, 0xffffffff
je 0x46d7cd
jmp 0x46d79b
and ch, 0x20
jne 0x46d83f
movsxd rdi, eax
jmp 0x46d850
call qword [sym.imp.WS2_32.dll_WSAGetLastError]
cmp eax, 0x2714
je 0x46d6cc
mov ecx, eax
call fcn.00470690
lea rdx, str.poll_failed:__s_n
mov r8, rax
mov rcx, rbx
call fcn.0046f900
jmp 0x46d6cc
Function at 0x46d8c0
Capabilities:
Send data
Send data on socket
Send http request
Set socket configuration

Disassembly:
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x28
mov rdi, qword [rcx + 0x150]
mov r13, rcx
cmp rdi, 0xffffffffffffffff
je 0x46d9d3
mov eax, dword [rcx + 0x18c]
and eax, 0x408
cmp eax, 8
je 0x46d9c0
mov rdx, qword [rcx + 0xc8]
test rdx, rdx
je 0x46d9e3
mov eax, dword [rcx + 0xf0]
test eax, eax
je 0x46d9e3
xor r12d, r12d
lea rsi, [0x004b5a14]
mov rbx, qword [sym.imp.WS2_32.dll_send]
mov rbp, qword [sym.imp.WS2_32.dll_WSAGetLastError]
jmp 0x46d948
add r12d, 1
cmp dword [r13 + 0xf0], r12d
jbe 0x46d9e3
mov rdx, qword [r13 + 0xc8]
mov ecx, r12d
mov rax, rcx
shl rax, 4
sub rax, rcx
shl rax, 5
add rdx, rax
mov byte [rdx + 0x171], 1
add rax, qword [r13 + 0xc8]
cmp qword [rax + 0x160], 0xffffffffffffffff
je 0x46d930
xor r9d, r9d
mov rcx, qword [rax + 0x168]
mov r8d, 1
mov rdx, rsi
call rbx
test eax, eax
jg 0x46d930
call rbp
cmp eax, 0x2733
je 0x46d930
lea r9, str.Failed_to_signal_quiesce_via_inter_thread_communication_channel
mov r8d, 0x1262
lea rdx, str.T:_Bin_prep_mhd_src_libmicrohttpd_0.9.55_src_microhttpd_daemon.c
mov rcx, qword [0x004cd150]
call qword [0x004cd158]
nop word [rax + rax]
lea rdx, str.Using_MHD_quiesce_daemon_in_this_mode_requires_MHD_USE_ITC_n
mov rdi, 0xffffffffffffffff
call fcn.0046f900
mov rax, rdi
add rsp, 0x28
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
ret
cmp qword [r13 + 0x160], 0xffffffffffffffff
mov byte [r13 + 0x171], 1
je 0x46d9d3
xor r9d, r9d
mov rcx, qword [r13 + 0x168]
mov r8d, 1
lea rdx, [0x004b5a14]
call qword [sym.imp.WS2_32.dll_send]
test eax, eax
jg 0x46d9d3
call qword [sym.imp.WS2_32.dll_WSAGetLastError]
cmp eax, 0x2733
je 0x46d9d3
lea r9, str.failed_to_signal_quiesce_via_inter_thread_communication_channel
mov r8d, 0x1275
lea rdx, str.T:_Bin_prep_mhd_src_libmicrohttpd_0.9.55_src_microhttpd_daemon.c
mov rcx, qword [0x004cd150]
call qword [0x004cd158]
nop
nop
nop word cs:[rax + rax]
Function at 0x470630
Capabilities:
Create thread

Disassembly:
push rbx
sub rsp, 0x30
mov eax, 0xffffffff
cmp rdx, rax
mov rbx, rcx
ja 0x470670
xor ecx, ecx
mov qword [rsp + 0x28], 0
mov dword [rsp + 0x20], 0
call qword [sym.imp.msvcrt.dll__beginthreadex]
cmp rax, 0xffffffffffffffff
mov qword [rbx], rax
setne al
movzx eax, al
add rsp, 0x30
pop rbx
ret
call qword [sym.imp.msvcrt.dll__errno]
mov dword [rax], 0x16
xor eax, eax
add rsp, 0x30
pop rbx
ret
Function at 0x471390
Capabilities:
Set socket configuration

Disassembly:
sub rsp, 0x38
mov edx, 0x8004667e
mov dword [rsp + 0x2c], 1
lea r8, [rsp + 0x2c]
call qword [sym.imp.WS2_32.dll_ioctlsocket]
test eax, eax
sete al
movzx eax, al
add rsp, 0x38
ret
Function at 0x47e260
Capabilities:
Allocate or change rwx memory

Disassembly:
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x50
movsxd rsi, dword [0x004cc264]
mov rbx, rcx
mov rbp, rdx
mov rdi, r8
test esi, esi
jle 0x47e414
mov rax, qword [0x004cc268]
xor ecx, ecx
add rax, 0x18
nop
mov rdx, qword [rax]
cmp rbx, rdx
jb 0x47e2ac
mov r8, qword [rax + 8]
mov r8d, dword [r8 + 8]
add rdx, r8
cmp rbx, rdx
jb 0x47e339
add ecx, 1
add rax, 0x28
cmp ecx, esi
jne 0x47e290
mov rcx, rbx
call fcn.0047ef30
test rax, rax
mov r12, rax
je 0x47e449
mov rax, qword [0x004cc268]
lea rsi, [rsi + rsi*4]
shl rsi, 3
add rax, rsi
mov qword [rax + 0x20], r12
mov dword [rax], 0
call fcn.0047f060
mov ecx, dword [r12 + 0xc]
lea rdx, [rsp + 0x20]
mov r8d, 0x30
add rcx, rax
mov rax, qword [0x004cc268]
mov qword [rax + rsi + 0x18], rcx
call qword [sym.imp.KERNEL32.dll_VirtualQuery]
test rax, rax
je 0x47e42c
mov eax, dword [rsp + 0x44]
lea edx, [rax - 4]
and edx, 0xfffffffb
je 0x47e332
sub eax, 0x40
and eax, 0xffffffbf
jne 0x47e3b4
add dword [0x004cc264], 1
cmp edi, 8
jae 0x47e370
test dil, 4
jne 0x47e400
test edi, edi
je 0x47e35c
movzx eax, byte [rbp]
test dil, 2
mov byte [rbx], al
jne 0x47e41b
add rsp, 0x50
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
ret
mov rax, qword [rbp]
mov qword [rbx], rax
mov eax, edi
mov rdx, qword [rbp + rax - 8]
mov qword [rbx + rax - 8], rdx
lea rax, [rbx + 8]
and rax, 0xfffffffffffffff8
sub rbx, rax
sub rbp, rbx
add ebx, edi
and ebx, 0xfffffff8
cmp ebx, 8
jb 0x47e35c
and ebx, 0xfffffff8
xor edx, edx
mov ecx, edx
add edx, 8
mov r8, qword [rbp + rcx]
cmp edx, ebx
mov qword [rax + rcx], r8
jb 0x47e3a0
jmp 0x47e35c
add rsi, qword [0x004cc268]
mov rcx, qword [rsp + 0x20]
mov r8d, 0x40
mov rdx, qword [rsp + 0x38]
mov r9, rsi
mov qword [rsi + 8], rcx
mov qword [rsi + 0x10], rdx
call qword [sym.imp.KERNEL32.dll_VirtualProtect]
test eax, eax
jne 0x47e332
call qword [sym.imp.KERNEL32.dll_GetLastError]
lea rcx, str.__VirtualProtect_failed_with_code_0x_x
mov edx, eax
call fcn.004a9c40
nop dword [rax + rax]
mov eax, dword [rbp]
mov edi, edi
mov dword [rbx], eax
mov eax, dword [rbp + rdi - 4]
mov dword [rbx + rdi - 4], eax
jmp 0x47e35c
xor esi, esi
jmp 0x47e2b7
mov edi, edi
movzx eax, word [rbp + rdi - 2]
mov word [rbx + rdi - 2], ax
jmp 0x47e35c
mov rax, qword [0x004cc268]
mov edx, dword [r12 + 8]
lea rcx, str.__VirtualQuery_failed_for__d_bytes_at_address__p
mov r8, qword [rax + rsi + 0x18]
call fcn.004a9c40
lea rcx, str.Address__p_has_no_image_section
mov rdx, rbx
call fcn.004a9c40
nop
nop dword [rax]
Function at 0x47eba0
Capabilities:
Get thread local storage value

Disassembly:
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x28
lea rcx, [0x004cc540]
call qword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov rbx, qword [0x004cc520]
test rbx, rbx
je 0x47ebf4
mov rbp, qword [sym.imp.KERNEL32.dll_TlsGetValue]
mov rdi, qword [sym.imp.KERNEL32.dll_GetLastError]
nop
mov ecx, dword [rbx]
call rbp
mov rsi, rax
call rdi
test eax, eax
jne 0x47ebeb
test rsi, rsi
je 0x47ebeb
mov rax, qword [rbx + 8]
mov rcx, rsi
call rax
mov rbx, qword [rbx + 0x10]
test rbx, rbx
jne 0x47ebd0
lea rcx, [0x004cc540]
add rsp, 0x28
pop rbx
pop rsi
pop rdi
pop rbp
jmp qword [sym.imp.KERNEL32.dll_LeaveCriticalSection]

Function at 0x47ef30
Capabilities:
Enumerate pe sections

Disassembly:
sub rsp, 0x28
mov r8, qword [0x004ba5d0]
mov rdx, rcx
cmp word [r8], 0x5a4d
jne 0x47ef9d
mov rcx, r8
call fcn.0047ee10
test eax, eax
je 0x47ef9d
movsxd rax, dword [r8 + 0x3c]
mov rcx, rdx
sub rcx, r8
add r8, rax
movzx edx, word [r8 + 6]
movzx eax, word [r8 + 0x14]
test edx, edx
lea rax, [r8 + rax + 0x18]
je 0x47ef9d
sub edx, 1
lea rdx, [rdx + rdx*4]
lea r9, [rax + rdx*8 + 0x28]
nop
mov r8d, dword [rax + 0xc]
cmp rcx, r8
mov rdx, r8
jb 0x47ef94
add edx, dword [rax + 8]
cmp rcx, rdx
jb 0x47ef9f
add rax, 0x28
cmp rax, r9
jne 0x47ef80
xor eax, eax
add rsp, 0x28
ret
Function at 0x481ac0
Capabilities:
Query environment variable

Disassembly:
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x20
mov r12d, 1
sub r8d, 1
mov edi, ecx
mov ecx, 0x66666667
mov eax, r8d
mov rbp, rdx
movsxd rsi, r8d
imul ecx
sar r8d, 0x1f
mov rbx, r9
mov ecx, edx
sar ecx, 2
sub ecx, r8d
je 0x481b15
mov r8d, 0x66666667
nop dword [rax]
mov eax, ecx
sar ecx, 0x1f
add r12d, 1
imul r8d
sar edx, 2
sub edx, ecx
mov ecx, edx
jne 0x481b00
mov edx, dword [rbx + 0x2c]
cmp edx, 0xffffffff
je 0x481b90
mov ecx, dword [rbx + 0xc]
cmp r12d, edx
mov r9, rbx
cmovl r12d, edx
mov r8d, 1
lea edx, [r12 + 2]
mov eax, ecx
sub eax, edx
cmp ecx, edx
mov edx, 0xffffffff
cmovle eax, edx
mov ecx, edi
mov rdx, rbp
mov dword [rbx + 0xc], eax
add r12d, 1
call fcn.00481360
mov ecx, dword [rbx + 8]
mov eax, dword [rbx + 0x2c]
mov rdx, rbx
mov dword [rbx + 0x10], eax
mov eax, ecx
and ecx, 0x20
or eax, 0x1c0
or ecx, 0x45
mov dword [rbx + 8], eax
call fcn.00480f30
add dword [rbx + 0xc], r12d
mov rdx, rbx
mov rcx, rsi
add rsp, 0x20
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
jmp fcn.004817e0
mov eax, dword [0x004aa180]
cmp eax, 0xffffffff
je 0x481bc6
test eax, eax
je 0x481bb6
mov edx, 2
mov dword [rbx + 0x2c], edx
jmp 0x481b1d
mov dword [0x004aa180], 0
call fcn.00485d90
test al, 1
mov edx, 3
jne 0x481b9f
jmp 0x481ba4
lea rcx, str.PRINTF_EXPONENT_DIGITS
call sub.msvcrt.dll_getenv
test rax, rax
je 0x481bac
movsx eax, byte [rax]
sub eax, 0x30
cmp eax, 2
ja 0x481bac
mov dword [0x004aa180], 1
jmp 0x481b9f

Function at 0x4867a0
Capabilities:
Allocate thread local storage

Disassembly:
sub rsp, 0x28
call qword [sym.imp.KERNEL32.dll_TlsAlloc]
cmp eax, 0xffffffff
mov dword [0x004aa228], eax
je 0x4867ba
add rsp, 0x28
ret
call sub.msvcrt.dll_abort
nop

Function at 0x486ce0
Capabilities:
Print debug messages

Disassembly:
push rdi
push rsi
push rbx
sub rsp, 0x90
test rcx, rcx
mov rbx, rcx
je 0x486d03
call fcn.0048a250
cmp eax, 1
je 0x486d0e
mov qword [rbx], 0xffffffffffffffff
add rsp, 0x90
pop rbx
pop rsi
pop rdi
ret
lea rdi, [rsp + 0x20]
lea rsi, str.Error_cleaning_up_spin_keys_for_thread
mov ecx, 0xa
lea rbx, [rsp + 0x20]
xor eax, eax
rep movsd dword [rdi], dword [rsi]
lea rdi, [rsp + 0x48]
mov ecx, 0x43
rep stosb byte [rdi], al
call qword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
lea rdx, [rbx + 0x27]
mov r8d, 0xa
mov ecx, eax
call qword [sym.imp.msvcrt.dll__ultoa]
cmp byte [rsp + 0x47], 0
je 0x486d85
mov eax, 0x28
jmp 0x486d6a
add rax, 1
cmp rax, 0x6b
je 0x486d77
cmp byte [rbx + rax], 0
mov edx, eax
jne 0x486d60
cmp eax, 0x6a
jne 0x486d8a
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_OutputDebugStringA]
call sub.msvcrt.dll_abort
mov edx, 0x27
movsxd rax, edx
mov byte [rsp + rax + 0x20], 0xa
lea eax, [rdx + 1]
cdqe
mov byte [rsp + rax + 0x20], 0
jmp 0x486d77
Function at 0x486e30
Capabilities:
Get thread local storage value
Set thread local storage value

Disassembly:
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x48
cmp dword [0x004cd030], 1
je 0x486e46
call fcn.00486da0
mov ecx, dword [0x004aa228]
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
test rax, rax
mov rbx, rax
je 0x486e70
mov rax, rbx
add rsp, 0x48
pop rbx
pop rsi
pop rdi
pop rbp
ret
call fcn.00486c20
cmp qword [0x004d2050], 0
mov rsi, rax
je 0x486e5a
test rax, rax
je 0x486e5a
mov dword [rax + 0x44], 1
call qword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
xor r9d, r9d
xor r8d, r8d
mov edx, 1
xor ecx, ecx
mov dword [rsi + 0x70], eax
call qword [sym.imp.KERNEL32.dll_CreateEventA]
lea rcx, [rsi + 0x68]
mov qword [rsi + 0x30], rax
mov qword [rsi + 0x38], 0xffffffffffffffff
call fcn.00486ce0
mov rbx, qword [sym.imp.KERNEL32.dll_GetCurrentProcess]
mov dword [rsi + 0xb8], 0
mov qword [rsi + 0x28], 0
call rbx
mov rbp, rax
call qword [sym.imp.KERNEL32.dll_GetCurrentThread]
mov rdi, rax
call rbx
mov dword [rsp + 0x30], 2
mov dword [rsp + 0x28], 0
lea r9, [rsi + 0x28]
mov dword [rsp + 0x20], 0
mov r8, rbp
mov rdx, rdi
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_DuplicateHandle]
test eax, eax
je 0x486f60
mov rcx, qword [rsi + 0x28]
call qword [sym.imp.KERNEL32.dll_GetThreadPriority]
mov dword [rsi + 0xc0], eax
movzx eax, byte [rsi + 0x40]
mov rdx, rsi
mov dword [rsi + 0xbc], 0
mov ecx, dword [0x004aa228]
and eax, 0xffffffcf
or eax, 0x10
mov byte [rsi + 0x40], al
call qword [sym.imp.KERNEL32.dll_TlsSetValue]
test eax, eax
je 0x486f60
mov rbx, rsi
mov rax, rbx
add rsp, 0x48
pop rbx
pop rsi
pop rdi
pop rbp
ret
call sub.msvcrt.dll_abort
nop
nop word cs:[rax + rax]
Function at 0x496c90
Capabilities:
Read file on windows

Disassembly:
push rsi
push rbx
sub rsp, 0x28
mov rax, qword [rcx + 0x20]
cmp rax, qword [rcx + 0x18]
mov rbx, rcx
movzx esi, byte [rax]
jb 0x496cb5
cmp byte [rcx + 0x38], 0
je 0x496cd0
mov eax, esi
add rsp, 0x28
pop rbx
pop rsi
ret
add rax, 1
mov qword [rcx + 0x20], rax
mov eax, esi
add rsp, 0x28
pop rbx
pop rsi
ret
mov rdx, qword [rcx + 0x28]
add qword [rcx + 0x30], rdx
mov edx, 1
mov rcx, qword [rcx + 8]
mov r8, qword [rbx + 0x10]
mov r9, qword [rbx]
call sub.msvcrt.dll_fread
mov r8, qword [rbx + 8]
cmp rax, qword [rbx + 0x10]
mov qword [rbx + 0x28], rax
lea rcx, [r8 + rax - 1]
mov qword [rbx + 0x20], r8
mov qword [rbx + 0x18], rcx
jae 0x496cac
mov byte [r8 + rax], 0
add qword [rbx + 0x18], 1
mov eax, esi
mov byte [rbx + 0x38], 1
add rsp, 0x28
pop rbx
pop rsi
ret
Function at 0x1400111ef
Capabilities:
Terminate process

Disassembly:
jmp 0x140012d70
mov qword [rsp + 8], rcx
sub rsp, 0x28
xor ecx, ecx
call qword [sym.imp.KERNEL32.dll_SetUnhandledExceptionFilter]
mov rcx, qword [rsp + 0x30]
call qword [sym.imp.KERNEL32.dll_UnhandledExceptionFilter]
call qword [sym.imp.KERNEL32.dll_GetCurrentProcess]
mov edx, 0xc0000409
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_TerminateProcess]
nop
add rsp, 0x28
ret

Function at 0x140011267
Capabilities:
Create process on windows

Disassembly:
jmp 0x1400117c0
push rbp
push rdi
sub rsp, 0x1d8
lea rbp, [rsp + 0x50]
lea rdi, [rsp + 0x50]
mov ecx, 0x32
mov eax, 0xcccccccc
rep stosd dword [rdi], eax
mov rax, qword [section..data]
xor rax, rbp
mov qword [rbp + 0x178], rax
lea rcx, [0x14002209f]
call fcn.140011370
nop
mov r8d, 0x68
xor edx, edx
lea rcx, [rbp + 0x10]
call fcn.1400112bc
nop
mov dword [rbp + 0x10], 0x68
mov r8d, 0x18
xor edx, edx
lea rcx, [rbp + 0x98]
call fcn.1400112bc
nop
lea rax, [rbp + 0x98]
mov qword [rsp + 0x48], rax
lea rax, [rbp + 0x10]
mov qword [rsp + 0x40], rax
mov qword [rsp + 0x38], 0
mov qword [rsp + 0x30], 0
mov dword [rsp + 0x28], 0
mov dword [rsp + 0x20], 0
xor r9d, r9d
xor r8d, r8d
xor edx, edx
lea rcx, str.cmd.exe
call qword [sym.imp.KERNEL32.dll_CreateProcessW]
nop
mov edx, 0xffffffff
mov rcx, qword [rbp + 0x98]
call qword [sym.imp.KERNEL32.dll_WaitForSingleObject]
nop
mov rcx, qword [rbp + 0xa0]
call qword [sym.imp.KERNEL32.dll_CloseHandle]
nop
mov rcx, qword [rbp + 0x98]
call qword [sym.imp.KERNEL32.dll_CloseHandle]
nop
xor eax, eax
mov edi, eax
lea rcx, [rbp - 0x50]
lea rdx, [0x14001ac40]
call fcn.14001130c
mov eax, edi
mov rcx, qword [rbp + 0x178]
xor rcx, rbp
call fcn.1400111a9
lea rsp, [rbp + 0x188]
pop rdi
pop rbp
ret

Function at 0x140011271
Capabilities:
Parse pe header

Disassembly:
jmp 0x1400140c0
sub rsp, 0x38
xor ecx, ecx
call qword [sym.imp.KERNEL32.dll_GetModuleHandleW]
mov qword [rsp + 0x20], rax
cmp qword [rsp + 0x20], 0
jne 0x1400140e0
xor al, al
jmp 0x140014161
mov rax, qword [rsp + 0x20]
movzx eax, word [rax]
cmp eax, 0x5a4d
je 0x1400140f3
xor al, al
jmp 0x140014161
mov rax, qword [rsp + 0x20]
movsxd rax, dword [rax + 0x3c]
mov rcx, qword [rsp + 0x20]
add rcx, rax
mov rax, rcx
mov qword [rsp + 0x28], rax
mov rax, qword [rsp + 0x28]
cmp dword [rax], 0x4550
je 0x14001411d
xor al, al
jmp 0x140014161
mov rax, qword [rsp + 0x28]
movzx eax, word [rax + 0x18]
cmp eax, 0x20b
je 0x140014131
xor al, al
jmp 0x140014161
mov rax, qword [rsp + 0x28]
cmp dword [rax + 0x84], 0xe
ja 0x140014143
xor al, al
jmp 0x140014161
mov eax, 8
imul rax, rax, 0xe
mov rcx, qword [rsp + 0x28]
cmp dword [rcx + rax + 0x88], 0
jne 0x14001415f
xor al, al
jmp 0x140014161
mov al, 1
add rsp, 0x38
ret