joyce8/EMBER2024-capa huggingface dataset:
Function at 0x408ffe
Capabilities:
Parse pe header

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x20
push ebx
push esi
mov esi, dword [ebp + 8]
mov ebx, dword [esi + 8]
test bl, 3
jne 0x40902c
mov eax, dword fs:[0x18]
mov dword [ebp + 8], eax
mov eax, dword [ebp + 8]
mov ecx, dword [eax + 8]
cmp ebx, ecx
mov dword [ebp - 4], ecx
jb 0x409033
cmp ebx, dword [eax + 4]
jae 0x409033
xor eax, eax
jmp 0x409223
push edi
mov edi, dword [esi + 0xc]
cmp edi, 0xffffffff
jne 0x409044
xor eax, eax
inc eax
jmp 0x409222
xor edx, edx
mov dword [ebp + 8], edx
mov eax, ebx
mov ecx, dword [eax]
cmp ecx, 0xffffffff
je 0x40905a
cmp ecx, edx
jae 0x40919f
cmp dword [eax + 4], 0
je 0x409063
inc dword [ebp + 8]
inc edx
add eax, 0xc
cmp edx, edi
jbe 0x40904b
cmp dword [ebp + 8], 0
je 0x409085
mov eax, dword [esi - 8]
cmp eax, dword [ebp - 4]
jb 0x40919f
cmp eax, esi
jae 0x40919f
mov eax, dword [0x45f5d0]
mov edi, ebx
and edi, 0xfffff000
xor esi, esi
test eax, eax
jle 0x4090aa
cmp dword [esi*4 + 0x45f5d8], edi
je 0x4091a3
inc esi
cmp esi, eax
jl 0x409098
push 0x1c
lea eax, [ebp - 0x20]
push eax
push ebx
call dword [sym.imp.KERNEL32.dll_VirtualQuery]
test eax, eax
je 0x40921f
cmp dword [ebp - 8], 0x1000000
jne 0x40921f
test byte [ebp - 0xc], 0xcc
je 0x409128
mov ecx, dword [ebp - 0x1c]
cmp word [ecx], 0x5a4d
jne 0x40921f
mov eax, dword [ecx + 0x3c]
add eax, ecx
cmp dword [eax], 0x4550
jne 0x40921f
cmp word [eax + 0x18], 0x10b
jne 0x40921f
sub ebx, ecx
cmp word [eax + 6], 0
movzx ecx, word [eax + 0x14]
lea ecx, [ecx + eax + 0x18]
jbe 0x40921f
mov eax, dword [ecx + 0xc]
cmp ebx, eax
jb 0x409128
mov edx, dword [ecx + 8]
add edx, eax
cmp ebx, edx
jae 0x409128
test byte [ecx + 0x27], 0x80
jne 0x40919f
push 1
push 0x45f618
call dword [sym.imp.KERNEL32.dll_InterlockedExchange]
test eax, eax
jne 0x40903c
mov ecx, dword [0x45f5d0]
test ecx, ecx
mov edx, ecx
jle 0x40915c
lea eax, [ecx*4 + 0x45f5d4]
cmp dword [eax], edi
je 0x40915c
dec edx
sub eax, 4
test edx, edx
jg 0x409150
test edx, edx
jne 0x40918d
push 0xf
pop ebx
cmp ecx, ebx
jg 0x409169
mov ebx, ecx
xor edx, edx
test ebx, ebx
jl 0x409181
lea eax, [edx*4 + 0x45f5d8]
mov esi, dword [eax]
inc edx
cmp edx, ebx
mov dword [eax], edi
mov edi, esi
jle 0x40916f
cmp ecx, 0x10
jge 0x40918d
inc ecx
mov dword [0x45f5d0], ecx
push 0
push 0x45f618
call dword [sym.imp.KERNEL32.dll_InterlockedExchange]
jmp 0x40903c
xor eax, eax
jmp 0x409222
test esi, esi
jle 0x40903c
mov ebx, dword [sym.imp.KERNEL32.dll_InterlockedExchange]
push 1
push 0x45f618
call ebx
test eax, eax
jne 0x40903c
cmp dword [esi*4 + 0x45f5d8], edi
je 0x4091f9
mov eax, dword [0x45f5d0]
lea esi, [eax - 1]
test esi, esi
jl 0x4091e7
cmp dword [esi*4 + 0x45f5d8], edi
je 0x4091e3
dec esi
jns 0x4091d7
test esi, esi
jge 0x4091f7
cmp eax, 0x10
jge 0x4091f2
inc eax
mov dword [0x45f5d0], eax
lea esi, [eax - 1]
jmp 0x4091f9
je 0x409211
xor ecx, ecx
test esi, esi
jl 0x409211
lea eax, [ecx*4 + 0x45f5d8]
mov edx, dword [eax]
inc ecx
cmp ecx, esi
mov dword [eax], edi
mov edi, edx
jle 0x4091ff
push 0
push 0x45f618
call ebx
jmp 0x40903c
or eax, 0xffffffff
pop edi
pop esi
pop ebx
leave
ret
Function at 0x433000
Capabilities:
Encode data using xor
Packed with generic packer

Disassembly:
pushal
nop
nop
nop
nop
nop
nop
mov eax, section..text
nop
mov ebx, 0x40de38
nop
mov ecx, 0x53ef11e1
nop
nop
nop
test eax, eax
nop
nop
nop
nop
je 0x43304e
nop
nop
nop
xor dword [eax], ecx
nop
nop
nop
nop
nop
nop
nop
inc eax
inc eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
inc eax
nop
nop
nop
nop
inc eax
nop
nop
nop
nop
nop
cmp eax, ebx
nop
jne 0x433024
nop
nop
nop
nop
mov eax, section..data
nop
mov ebx, 0x4304d8
nop
mov ecx, 0xac926f3
test eax, eax
nop
nop
nop
nop
nop
nop
je 0x433084
nop
nop
nop
nop
nop
xor dword [eax], ecx
nop
nop
add eax, 4
nop
nop
nop
nop
cmp eax, ebx
nop
nop
jne 0x43306c
nop
nop
nop
nop
popal
nop
nop
nop
nop
nop
jmp 0x431219
Function at 0x403580
Capabilities:
Read .ini file

Disassembly:
mov eax, dword [0x4472bc]
mov ecx, dword [0x445e98]
shr eax, 3
sub esp, 0xc24
test eax, eax
jbe 0x403638
push ebx
mov ebx, dword [sym.imp.KERNEL32.dll_GetPrivateProfileStructW]
push ebp
mov ebp, dword [sym.imp.KERNEL32.dll_LCMapStringA]
push esi
mov esi, dword [sym.imp.KERNEL32.dll_BuildCommDCBA]
push edi
mov edi, dword [sym.imp.KERNEL32.dll_GetNumberFormatA]
mov dword [esp + 0x10], ecx
mov dword [esp + 0x14], eax
cmp dword [0x4472bc], 0x959
jne 0x40361e
lea eax, [esp + 0x18]
push eax
push 0x402b44
call esi
push 0
lea ecx, [esp + 0x438]
push ecx
push 0
push 0x402b6c
push 0
push 0
call edi
push 0x402b80
push 0
lea edx, [esp + 0x3c]
push edx
push 0x402bac
push 0x402bc4
call ebx
push 0
lea eax, [esp + 0x838]
push eax
push 0
push 0x402be8
push 0
push 0
call ebp
mov ecx, dword [esp + 0x10]
push ecx
call fcn.004033c0
add dword [esp + 0x10], 8
sub dword [esp + 0x14], 1
jne 0x4035c0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xc24
ret
Function at 0x4064ab
Capabilities:
Terminate process

Disassembly:
cmp ecx, dword [0x40f1cc]
jne 0x4064b5
repz ret
jmp fcn.004099ac

Function at 0x40bd55
Capabilities:
Link many functions at runtime

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
sub esp, 0x14
push ebx
push esi
push edi
call fcn.00406f87
and dword [ebp - 4], 0
cmp dword [0x42678c], 0
mov ebx, eax
jne 0x40be06
push 0x40215c
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
mov edi, eax
test edi, edi
je 0x40beb7
mov esi, dword [sym.imp.KERNEL32.dll_GetProcAddress]
push 0x402150
push edi
call esi
test eax, eax
je 0x40beb7
push eax
call fcn.00406f15
mov dword [esp], 0x402140
push edi
mov dword [0x42678c], eax
call esi
push eax
call fcn.00406f15
mov dword [esp], 0x40212c
push edi
mov dword [0x426790], eax
call esi
push eax
call fcn.00406f15
mov dword [esp], 0x402110
push edi
mov dword [0x426794], eax
call esi
push eax
call fcn.00406f15
pop ecx
mov dword [0x42679c], eax
test eax, eax
je 0x40be06
push 0x4020f8
push edi
call esi
push eax
call fcn.00406f15
pop ecx
mov dword [0x426798], eax
mov eax, dword [0x426798]
cmp eax, ebx
je 0x40be5e
cmp dword [0x42679c], ebx
je 0x40be5e
push eax
call fcn.00406f90
push dword [0x42679c]
mov esi, eax
call fcn.00406f90
pop ecx
pop ecx
mov edi, eax
test esi, esi
je 0x40be5e
test edi, edi
je 0x40be5e
call esi
test eax, eax
je 0x40be55
lea ecx, [ebp - 8]
push ecx
push 0xc
lea ecx, [ebp - 0x14]
push ecx
push 1
push eax
call edi
test eax, eax
je 0x40be55
test byte [ebp - 0xc], 1
jne 0x40be5e
or dword [ebp + 0x10], 0x200000
jmp 0x40be97
mov eax, dword [0x426790]
cmp eax, ebx
je 0x40be97
push eax
call fcn.00406f90
pop ecx
test eax, eax
je 0x40be97
call eax
mov dword [ebp - 4], eax
test eax, eax
je 0x40be97
mov eax, dword [0x426794]
cmp eax, ebx
je 0x40be97
push eax
call fcn.00406f90
pop ecx
test eax, eax
je 0x40be97
push dword [ebp - 4]
call eax
mov dword [ebp - 4], eax
push dword [0x42678c]
call fcn.00406f90
pop ecx
test eax, eax
je 0x40beb7
push dword [ebp + 0x10]
push dword [ebp + 0xc]
push dword [ebp + 8]
push dword [ebp - 4]
call eax
jmp 0x40beb9
xor eax, eax
pop edi
pop esi
pop ebx
leave
ret
Function at 0x40da90
Capabilities:
Write file on windows

Disassembly:
push ebx
sub esp, 0x18
mov eax, dword [sym.imp.msvcrt.dll__iob]
mov dword [esp + 8], 0x1b
mov dword [esp + 4], 1
lea ebx, [esp + 0x24]
mov dword [esp], str.Mingw_w64_runtime_failure:_n
add eax, 0x40
mov dword [esp + 0xc], eax
call sym._fwrite
mov eax, dword [esp + 0x20]
mov dword [esp + 8], ebx
mov dword [esp + 4], eax
mov eax, dword [sym.imp.msvcrt.dll__iob]
add eax, 0x40
mov dword [esp], eax
call sym._vfprintf
call sym._abort
jmp dbg.mark_section_writable

Function at 0x40daf0
Capabilities:
Allocate or change rwx memory

Disassembly:
push edi
push esi
push ebx
sub esp, 0x30
mov esi, dword [0x492054]
test esi, esi
jle 0x40dbdd
mov edi, dword [0x492058]
xor ebx, ebx
lea edx, [edi + 4]
nop
mov ecx, dword [edx]
cmp ecx, eax
ja 0x40db24
mov edi, dword [edx + 4]
add ecx, dword [edi + 8]
cmp eax, ecx
jb 0x40dbd6
add ebx, 1
add edx, 0xc
cmp ebx, esi
jne 0x40db10
mov dword [esp], eax
mov ebx, eax
call dbg.__mingw_GetSectionForAddress
test eax, eax
mov edi, eax
je 0x40dc1a
lea ebx, [esi + esi*2]
mov esi, dword [0x492058]
shl ebx, 2
add esi, ebx
mov dword [esi + 8], eax
mov dword [esi], 0
call dbg._GetPEImageBase
add eax, dword [edi + 0xc]
mov dword [esi + 4], eax
lea eax, [esp + 0x14]
mov dword [esp + 8], 0x1c
mov dword [esp + 4], eax
mov eax, dword [0x492058]
mov eax, dword [eax + ebx + 4]
mov dword [esp], eax
call dword [sym.imp.KERNEL32.dll_VirtualQuery]
sub esp, 0xc
test eax, eax
je 0x40dbfa
mov eax, dword [esp + 0x28]
lea edx, [eax - 4]
and edx, 0xfffffffb
je 0x40dbcf
sub eax, 0x40
and eax, 0xffffffbf
je 0x40dbcf
mov eax, dword [esp + 0x20]
add ebx, dword [0x492058]
mov dword [esp + 8], 0x40
mov dword [esp + 4], eax
mov eax, dword [esp + 0x14]
mov dword [esp + 0xc], ebx
mov dword [esp], eax
call dword [sym.imp.KERNEL32.dll_VirtualProtect]
sub esp, 0x10
test eax, eax
je 0x40dbe4
add dword [0x492054], 1
add esp, 0x30
pop ebx
pop esi
pop edi
ret
xor esi, esi
jmp 0x40db2e
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov dword [esp], str.__VirtualProtect_failed_with_code_0x_x
mov dword [esp + 4], eax
call dbg.__report_error
mov eax, dword [0x492058]
mov eax, dword [eax + ebx + 4]
mov dword [esp + 8], eax
mov eax, dword [edi + 8]
mov dword [esp], str.__VirtualQuery_failed_for__d_bytes_at_address__p
mov dword [esp + 4], eax
call dbg.__report_error
mov dword [esp + 4], ebx
mov dword [esp], str.Address__p_has_no_image_section
call dbg.__report_error
lea esi, [esi]
Function at 0x40e0e0
Capabilities:
Get thread local storage value

Disassembly:
push ebp
push edi
push esi
push ebx
sub esp, 0x1c
mov dword [esp], 0x492408
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov ebx, dword [0x492400]
sub esp, 4
mov ebp, dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov edi, dword [sym.imp.KERNEL32.dll_GetLastError]
test ebx, ebx
je 0x40e135
lea esi, [esi]
mov eax, dword [ebx]
mov dword [esp], eax
call ebp
sub esp, 4
mov esi, eax
call edi
test eax, eax
jne 0x40e12e
test esi, esi
je 0x40e12e
mov eax, dword [ebx + 4]
mov dword [esp], esi
call eax
mov ebx, dword [ebx + 8]
test ebx, ebx
jne 0x40e110
mov dword [esp], 0x492408
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
sub esp, 4
add esp, 0x1c
pop ebx
pop esi
pop edi
pop ebp
ret

Function at 0x40e350
Capabilities:
Enumerate pe sections

Disassembly:
push esi
push ebx
mov edx, dword [esp + 0xc]
mov ebx, dword [esp + 0x10]
add edx, dword [edx + 0x3c]
movzx esi, word [edx + 6]
movzx eax, word [edx + 0x14]
test esi, esi
lea eax, [edx + eax + 0x18]
je 0x40e388
xor ecx, ecx
nop
mov edx, dword [eax + 0xc]
cmp edx, ebx
ja 0x40e37e
add edx, dword [eax + 8]
cmp ebx, edx
jb 0x40e38a
add ecx, 1
add eax, 0x28
cmp ecx, esi
jne 0x40e370
xor eax, eax
pop ebx
pop esi
ret
Function at 0x40f7c0
Capabilities:
Check mutex on windows
Contain obfuscated stackstrings

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
push ebx
sub esp, 0x2c
mov ebx, dword [ebp + 8]
mov dword [esp], ebx
call sym._strlen
mov esi, eax
lea eax, [eax + 0x41]
and eax, 0xfffffff0
call fcn.0040e660
mov edx, 0x326d
sub esp, eax
lea eax, [esp + 0x1b]
mov dword [esp + 8], esi
mov dword [esp + 4], ebx
lea edi, [esp + 0xc]
mov word [esp + 0x18], dx
mov dword [esp + 0xc], 0x2d636367
mov dword [esp], eax
mov dword [esp + 0x10], 0x656d6873
mov dword [esp + 0x14], 0x64742d6d
mov byte [esp + 0x1a], 0x2d
call sym._memcpy
lea eax, [esi + 0x10]
lea edx, [edi + eax]
mov dword [ebp - 0x20], eax
mov dword [edx], 0x61616161
mov dword [edx + 4], 0x61616161
mov dword [edx + 8], 0x61616161
mov dword [edx + 0xc], 0x61616161
mov dword [edx + 0x10], 0x61616161
mov dword [edx + 0x14], 0x61616161
mov dword [edx + 0x18], 0x61616161
mov dword [edx + 0x1c], 0x61616161
mov dword [ebp - 0x24], edx
mov byte [esp + esi + 0x3c], 0
mov byte [esp + esi + 0x1b], 0
mov dword [esp + 8], edi
mov dword [esp + 4], 0
mov dword [esp], 0
call dword [sym.imp.KERNEL32.dll_CreateMutexA]
sub esp, 0xc
mov byte [edi + esi + 0xf], 0x2d
mov dword [ebp - 0x1c], eax
mov dword [esp + 4], 0xffffffff
mov dword [esp], eax
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
sub esp, 8
test eax, eax
mov edx, dword [ebp - 0x24]
je 0x40f8af
int3
mov dword [ebp - 0x24], edx
mov dword [esp], edi
call dword [sym.imp.KERNEL32.dll_FindAtomA]
sub esp, 4
test ax, ax
mov edx, dword [ebp - 0x24]
jne 0x40f953
mov eax, dword [ebp + 0xc]
mov dword [ebp - 0x24], edx
mov dword [esp], eax
call sym._malloc
mov edx, dword [ebp - 0x24]
mov ebx, eax
mov eax, 0x20
bt ebx, eax
jae 0x40f8ea
mov byte [edx], 0x41
add edx, 1
sub eax, 1
jne 0x40f8e2
mov dword [esp], edi
call dword [sym.imp.KERNEL32.dll_AddAtomA]
sub esp, 4
test ax, ax
je 0x40f950
lea ecx, [esi + 0x31]
mov esi, dword [ebp - 0x20]
movzx eax, ax
mov edx, edi
mov dword [esp], esi
call dbg.get_ptr_from_atom
cmp eax, ebx
mov esi, eax
je 0x40f96a
mov dword [esp], ebx
call sym._free
mov edi, dword [ebp - 0x1c]
mov dword [esp], edi
call dword [sym.imp.KERNEL32.dll_ReleaseMutex]
sub esp, 4
mov dword [esp], edi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
sub esp, 4
lea esp, [ebp - 0xc]
mov eax, esi
pop ebx
pop esi
pop edi
pop ebp
ret
int3
lea ecx, [esi + 0x31]
mov esi, dword [ebp - 0x20]
movzx eax, ax
mov edx, edi
mov dword [esp], esi
call dbg.get_ptr_from_atom
mov esi, eax
jmp 0x40f924
mov eax, dword [ebp + 0xc]
mov dword [esp + 4], 0
mov dword [esp], ebx
mov dword [esp + 8], eax
call sym._memset
mov eax, dword [ebp + 0x10]
test eax, eax
je 0x40f924
mov dword [esp], ebx
call dword [ebp + 0x10]
jmp 0x40f924
Function at 0x41b210
Capabilities:
Allocate thread local storage

Disassembly:
push ebx
sub esp, 0x18
mov ebx, dword [0x492e40]
test ebx, ebx
je 0x41b240
call dword [sym.imp.KERNEL32.dll_TlsAlloc]
mov dword [ebx], eax
mov eax, dword [0x492e40]
test eax, eax
je 0x41b265
cmp dword [eax], 0xffffffff
je 0x41b288
add esp, 0x18
pop ebx
ret
mov dword [esp + 8], sym.___shmem_winpthreads_init__pthread_tls_shmem
mov dword [esp + 4], 4
mov dword [esp], str._pthread_tls_shmem
call sym.___shmem_winpthreads_grab
mov ebx, eax
mov dword [0x492e40], eax
jmp 0x41b21e
mov dword [esp + 8], sym.___shmem_winpthreads_init__pthread_tls_shmem
mov dword [esp + 4], 4
mov dword [esp], str._pthread_tls_shmem
call sym.___shmem_winpthreads_grab
mov dword [0x492e40], eax
jmp 0x41b22f
call sym._abort
lea esi, [esi]
Function at 0x41b720
Capabilities:
Get thread local storage value
Set thread local storage value

Disassembly:
push ebp
push edi
push esi
push ebx
sub esp, 0x2c
mov eax, dword [0x492e44]
test eax, eax
je 0x41b874
call sym.__pthread_once_raw.constprop.5
mov eax, dword [0x492e40]
test eax, eax
je 0x41b8a0
mov eax, dword [eax]
mov dword [esp], eax
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
sub esp, 4
test eax, eax
je 0x41b760
add esp, 0x2c
pop ebx
pop esi
pop edi
pop ebp
ret
call sym._pop_pthread_mem
test eax, eax
mov ebx, eax
je 0x41b8ec
mov eax, dword [entry3]
test eax, eax
je 0x41b8ec
mov dword [ebx + 0x24], 1
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
mov dword [ebx + 0x38], eax
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp + 4], 1
mov dword [esp], 0
call dword [sym.imp.KERNEL32.dll_CreateEventA]
mov esi, dword [sym.imp.KERNEL32.dll_GetCurrentProcess]
sub esp, 0x10
mov dword [ebx + 0x18], eax
mov dword [ebx + 0x1c], 0xffffffff
mov dword [ebx + 0x34], 0xffffffff
mov dword [ebx + 0x60], 0
mov dword [ebx + 0x14], 0
call esi
mov ebp, eax
call dword [sym.imp.KERNEL32.dll_GetCurrentThread]
mov edi, eax
call esi
mov edx, eax
lea eax, [ebx + 0x14]
mov dword [esp + 0x18], 2
mov dword [esp + 0x14], 0
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], eax
mov dword [esp + 8], ebp
mov dword [esp + 4], edi
mov dword [esp], edx
call dword [sym.imp.KERNEL32.dll_DuplicateHandle]
sub esp, 0x1c
test eax, eax
je 0x41b8f3
mov eax, dword [ebx + 0x14]
mov dword [esp], eax
call dword [sym.imp.KERNEL32.dll_GetThreadPriority]
mov dword [ebx + 0x68], eax
movzx eax, byte [ebx + 0x20]
sub esp, 4
mov dword [ebx + 0x64], 0
and eax, 0xffffffcf
or eax, 0x10
mov byte [ebx + 0x20], al
mov eax, dword [0x492e40]
test eax, eax
je 0x41b8c6
mov dword [esp + 4], ebx
mov eax, dword [eax]
mov dword [esp], eax
call dword [sym.imp.KERNEL32.dll_TlsSetValue]
sub esp, 8
test eax, eax
je 0x41b8f3
mov eax, ebx
jmp 0x41b758
mov dword [esp + 8], 0
mov dword [esp + 4], 4
mov dword [esp], str._pthread_tls_once_shmem
call sym.___shmem_winpthreads_grab
mov dword [0x492e44], eax
jmp 0x41b734
mov dword [esp + 8], sym.___shmem_winpthreads_init__pthread_tls_shmem
mov dword [esp + 4], 4
mov dword [esp], str._pthread_tls_shmem
call sym.___shmem_winpthreads_grab
mov dword [0x492e40], eax
jmp 0x41b746
mov dword [esp + 8], sym.___shmem_winpthreads_init__pthread_tls_shmem
mov dword [esp + 4], 4
mov dword [esp], str._pthread_tls_shmem
call sym.___shmem_winpthreads_grab
mov dword [0x492e40], eax
jmp 0x41b853
xor eax, eax
jmp 0x41b758
call sym._abort
nop
lea esi, [esi]
Function at 0x41be60
Capabilities:
Get thread local storage value
Set thread local storage value

Disassembly:
push esi
push ebx
sub esp, 0x14
cmp dword [esp + 0x24], 3
je 0x41be80
add esp, 0x14
mov eax, 1
pop ebx
pop esi
ret 0xc
mov eax, dword [0x492e40]
test eax, eax
je 0x41bff0
mov eax, dword [eax]
cmp eax, 0xffffffff
je 0x41be6c
mov dword [esp], eax
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
sub esp, 4
test eax, eax
mov ebx, eax
je 0x41be6c
test byte [eax + 0x20], 0x30
je 0x41bf40
mov eax, dword [eax + 0xb0]
test eax, eax
jne 0x41bfe0
mov eax, dword [ebx + 0x14]
test eax, eax
je 0x41bef0
mov dword [esp], eax
mov esi, dword [sym.imp.KERNEL32.dll_CloseHandle]
call esi
mov eax, dword [ebx + 0x18]
sub esp, 4
test eax, eax
je 0x41bee2
mov dword [esp], eax
call esi
sub esp, 4
mov dword [ebx + 0x18], 0
mov dword [ebx + 0x14], 0
lea eax, [ebx + 0x1c]
mov dword [esp], eax
call sym._pthread_mutex_destroy
mov edx, dword [ebx + 0xac]
mov dword [ebx + 0x34], 0xffffffff
test edx, edx
je 0x41c046
mov eax, dword [0x492e40]
test eax, eax
je 0x41c020
mov dword [esp + 4], 0
mov eax, dword [eax]
mov dword [esp], eax
call dword [sym.imp.KERNEL32.dll_TlsSetValue]
sub esp, 8
mov eax, 1
add esp, 0x14
pop ebx
pop esi
ret 0xc
mov eax, dword [eax + 0x64]
test eax, eax
mov eax, dword [ebx + 0x18]
jne 0x41bfa0
test eax, eax
je 0x41bf5a
mov dword [esp], eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
sub esp, 4
mov eax, dword [ebx + 0xb0]
mov dword [ebx + 0x18], 0
mov dword [ebx + 0x64], 1
test eax, eax
jne 0x41bfd0
test byte [ebx + 0x24], 4
je 0x41bfb7
mov eax, dword [ebx + 0x14]
mov dword [ebx], 0xdeadbeef
test eax, eax
je 0x41bee9
mov dword [esp], eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
sub esp, 4
jmp 0x41bee9
test eax, eax
je 0x41bfb0
mov dword [esp], eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
sub esp, 4
mov dword [ebx + 0x18], 0
lea eax, [ebx + 0x1c]
mov dword [esp], eax
call sym._pthread_mutex_destroy
mov dword [ebx + 0x34], 0xffffffff
jmp 0x41be6c
call sym.__pthread_cleanup_dest.part.3
jmp 0x41bf72
call sym.__pthread_cleanup_dest.part.3
jmp 0x41bebe
mov dword [esp + 8], sym.___shmem_winpthreads_init__pthread_tls_shmem
mov dword [esp + 4], 4
mov dword [esp], str._pthread_tls_shmem
call sym.___shmem_winpthreads_grab
mov dword [0x492e40], eax
jmp 0x41be8d
mov dword [esp + 8], sym.___shmem_winpthreads_init__pthread_tls_shmem
mov dword [esp + 4], 4
mov dword [esp], str._pthread_tls_shmem
call sym.___shmem_winpthreads_grab
mov dword [0x492e40], eax
jmp 0x41bf1d
mov eax, ebx
call sym._push_pthread_mem.part.0
jmp 0x41bf10
Function at 0x41d1e0
Capabilities:
Get thread local storage value
Set thread local storage value

Disassembly:
push esi
push ebx
sub esp, 0x14
mov esi, dword [esp + 0x20]
call sym.___pthread_self_lite
mov ebx, eax
mov dword [eax + 4], esi
mov eax, dword [eax + 0xb0]
test eax, eax
jne 0x41d25b
test byte [ebx + 0x20], 0x30
je 0x41d262
mov eax, dword [0x492e40]
test eax, eax
je 0x41d2eb
mov eax, dword [eax]
mov dword [esp], eax
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
sub esp, 4
test eax, eax
mov ebx, eax
je 0x41d252
cmp dword [eax + 0x14], 0
je 0x41d275
mov esi, dword [eax + 4]
mov dword [eax + 0x64], 1
mov eax, dword [eax + 0x18]
test eax, eax
je 0x41d245
mov dword [esp], eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
push ecx
test byte [ebx + 0x24], 4
mov dword [ebx + 0x18], 0
jne 0x41d2bf
mov dword [esp], esi
call dword [sym.imp.msvcrt.dll__endthreadex]
call sym.__pthread_cleanup_dest.part.3
jmp 0x41d1fd
add ebx, 0x6c
mov dword [esp + 4], 1
mov dword [esp], ebx
call sym._longjmp
mov dword [eax], 0xdeadbeef
mov eax, dword [eax + 0x18]
test eax, eax
je 0x41d28c
mov dword [esp], eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
push esi
cmp dword [ebx + 0xac], 0
mov dword [ebx + 0x18], 0
mov esi, dword [ebx + 4]
je 0x41d2e2
mov eax, dword [0x492e40]
test eax, eax
je 0x41d311
mov dword [esp + 4], 0
mov eax, dword [eax]
mov dword [esp], eax
call dword [sym.imp.KERNEL32.dll_TlsSetValue]
push edx
push edx
jmp 0x41d252
mov eax, dword [ebx + 0x14]
mov dword [ebx], 0xdeadbeef
mov dword [esp], eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
push eax
cmp dword [ebx + 0xac], 0
mov dword [ebx + 0x14], 0
jne 0x41d29f
mov eax, ebx
call sym._push_pthread_mem.part.0
jmp 0x41d29f
mov dword [esp + 8], sym.___shmem_winpthreads_init__pthread_tls_shmem
mov dword [esp + 4], 4
mov dword [esp], str._pthread_tls_shmem
call sym.___shmem_winpthreads_grab
mov dword [0x492e40], eax
jmp 0x41d210
mov dword [esp + 8], sym.___shmem_winpthreads_init__pthread_tls_shmem
mov dword [esp + 4], 4
mov dword [esp], str._pthread_tls_shmem
call sym.___shmem_winpthreads_grab
mov dword [0x492e40], eax
jmp 0x41d2a8
Function at 0x4207e0
Capabilities:
Check mutex on windows
Contain obfuscated stackstrings

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
push ebx
sub esp, 0x2c
mov edi, dword [ebp + 8]
mov dword [esp], edi
call sym._strlen
mov ebx, eax
lea eax, [eax + 0x40]
and eax, 0xfffffff0
call fcn.0040e660
mov edx, 0x326d
sub esp, eax
lea eax, [esp + 0x1b]
mov dword [esp + 4], edi
mov dword [esp + 8], ebx
lea esi, [esp + 0xc]
mov word [esp + 0x18], dx
mov dword [esp + 0xc], 0x2d636367
mov dword [esp], eax
mov dword [esp + 0x10], 0x656d6873
mov dword [esp + 0x14], 0x64742d6d
mov byte [esp + 0x1a], 0x2d
call sym._memcpy
lea eax, [ebx + 0x10]
lea edi, [esi + eax]
mov dword [ebp - 0x24], eax
lea eax, [ebx + 0x30]
mov dword [edi], 0x61616161
mov dword [edi + 4], 0x61616161
mov dword [edi + 8], 0x61616161
mov dword [edi + 0xc], 0x61616161
mov dword [edi + 0x10], 0x61616161
mov dword [edi + 0x14], 0x61616161
mov dword [edi + 0x18], 0x61616161
mov dword [edi + 0x1c], 0x61616161
mov dword [ebp - 0x1c], eax
mov byte [esp + ebx + 0x3c], 0
mov byte [esp + ebx + 0x1b], 0
mov dword [esp + 8], esi
mov dword [esp + 4], 0
mov dword [esp], 0
call dword [sym.imp.KERNEL32.dll_CreateMutexA]
sub esp, 0xc
mov byte [esi + ebx + 0xf], 0x2d
mov dword [ebp - 0x20], eax
mov dword [esp + 4], 0xffffffff
mov dword [esp], eax
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
sub esp, 8
test eax, eax
je 0x4208cf
int3
mov dword [esp], esi
call dword [sym.imp.KERNEL32.dll_FindAtomA]
sub esp, 4
test ax, ax
jne 0x420973
mov eax, dword [ebp + 0xc]
mov dword [esp], eax
call sym._malloc
mov edx, edi
mov ebx, eax
mov eax, 0x20
nop
lea esi, [esi]
bt ebx, eax
jae 0x420908
mov byte [edx], 0x41
add edx, 1
sub eax, 1
jne 0x420900
mov dword [esp], esi
call dword [sym.imp.KERNEL32.dll_AddAtomA]
sub esp, 4
test ax, ax
je 0x420970
mov ecx, dword [ebp - 0x24]
mov edx, esi
movzx eax, ax
mov dword [esp], ecx
mov ecx, dword [ebp - 0x1c]
call sym._get_ptr_from_atom_1
cmp eax, ebx
mov esi, eax
je 0x42098a
mov dword [esp], ebx
call sym._free
mov edi, dword [ebp - 0x20]
mov dword [esp], edi
call dword [sym.imp.KERNEL32.dll_ReleaseMutex]
sub esp, 4
mov dword [esp], edi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
sub esp, 4
lea esp, [ebp - 0xc]
mov eax, esi
pop ebx
pop esi
pop edi
pop ebp
ret
int3
mov ecx, dword [ebp - 0x24]
mov edx, esi
movzx eax, ax
mov dword [esp], ecx
mov ecx, dword [ebp - 0x1c]
call sym._get_ptr_from_atom_1
mov esi, eax
jmp 0x420942
mov eax, dword [ebp + 0xc]
mov dword [esp + 4], 0
mov dword [esp], ebx
mov dword [esp + 8], eax
call sym._memset
mov eax, dword [ebp + 0x10]
test eax, eax
je 0x420942
mov dword [esp], ebx
call dword [ebp + 0x10]
jmp 0x420942