joyce8/EMBER2024-capa huggingface dataset:
Function at 0x10020ef0
Capabilities:
Query environment variable

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
mov esi, eax
push ebx
mov ebx, edx
sub esp, 0x214
mov eax, dword [0x100350e0]
test eax, eax
je 0x10020fa8
mov dword [esp], ebx
call eax
mov dword [ebx + 8], eax
sub esp, 4
test eax, eax
jns 0x10020f30
mov eax, dword [ebx]
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret
lea edi, [ebp - 0x214]
mov dword [esp + 8], 0x104
mov dword [esp + 4], edi
mov dword [esp], esi
call dword [sym.imp.kernel32.dll_GetModuleFileNameW]
mov eax, dword [ebx]
sub esp, 0xc
mov edx, dword [eax]
mov dword [esp + 8], edi
mov dword [esp + 4], str.MODULE
mov dword [esp], eax
call dword [edx + 0xc]
sub esp, 0xc
mov dword [esp + 8], 0x104
mov dword [esp + 4], edi
mov dword [esp], str.SystemRoot
call dword [sym.imp.kernel32.dll_GetEnvironmentVariableW]
mov eax, dword [ebx]
sub esp, 0xc
mov edx, dword [eax]
mov dword [esp + 8], edi
mov dword [esp + 4], str.SystemRoot
mov dword [esp], eax
call dword [edx + 0xc]
sub esp, 0xc
jmp 0x10020f1c
mov dword [esp], str.atl100.dll
call dword [sym.imp.kernel32.dll_LoadLibraryW]
sub esp, 4
test eax, eax
je 0x10020fdd
mov dword [esp + 4], str.AtlCreateRegistrar
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_GetProcAddress]
mov dword [0x100350e0], eax
sub esp, 8
test eax, eax
jne 0x10020f0d
mov dword [ebx + 8], 0x80004002
xor eax, eax
jmp 0x10020f1e
Function at 0x10020ff0
Capabilities:
Access peb ldr_data
Extract resource via kernel32 functions
Get process heap flags

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
push ebx
sub esp, 0x28
mov eax, dword [ebp + 0xc]
mov edi, dword [ebp + 8]
mov esi, dword [ebp + 0x14]
mov dword [esp + 8], eax
mov eax, dword [ebp + 0x10]
mov dword [esp], edi
mov dword [esp + 4], eax
call dword [sym.imp.kernel32.dll_FindResourceW]
sub esp, 0xc
mov dword [esp + 4], eax
mov dword [ebp - 0x10], eax
mov dword [esp], edi
call dword [sym.imp.kernel32.dll_LoadResource]
mov edx, dword [ebp - 0x10]
sub esp, 8
mov ebx, eax
mov dword [esp + 4], edx
mov dword [esp], edi
call dword [sym.imp.kernel32.dll_SizeofResource]
mov dword [ebp - 0x10], eax
sub esp, 8
test ebx, ebx
je 0x10021171
mov eax, dword [esi]
test eax, eax
je 0x10021160
mov edx, dword [sym.imp.kernel32.dll_MultiByteToWideChar]
mov dword [esp + 0x14], 0
mov dword [esp + 0x10], 0
mov eax, dword [ebp - 0x10]
mov dword [esp + 8], ebx
mov dword [esp + 0xc], eax
mov dword [esp + 4], 0
mov dword [esp], 0xfde9
mov dword [ebp - 0x1c], edx
call edx
lea ecx, [eax + 1]
sub esp, 0x18
lea eax, [ecx + ecx]
mov dword [ebp - 0x18], ecx
mov ecx, eax
mov dword [ebp - 0x14], eax
mov dword [esp + 8], ecx
mov dword [esp + 4], 0
mov eax, dword fs:[0x18]
mov eax, dword [eax + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_HeapAlloc]
mov ecx, dword [ebp - 0x18]
mov edx, dword [ebp - 0x1c]
sub esp, 0xc
test eax, eax
mov edi, eax
je 0x10021175
mov dword [esp + 0x14], ecx
mov dword [esp + 0x10], eax
mov eax, dword [ebp - 0x10]
mov dword [esp + 8], ebx
mov dword [esp + 0xc], eax
mov dword [esp + 4], 0
mov dword [esp], 0xfde9
call edx
mov eax, dword [ebp - 0x14]
mov ecx, dword [esi + 4]
xor edx, edx
sub esp, 0x18
mov word [edi + eax - 2], dx
mov eax, dword [esi]
test ecx, ecx
mov edx, dword [eax]
mov dword [esp + 4], edi
mov dword [esp], eax
jne 0x10021158
call dword [edx + 0x28]
sub esp, 8
mov dword [esi + 8], eax
mov dword [esp + 8], edi
mov dword [esp + 4], 0
mov eax, dword fs:[0x18]
mov eax, dword [eax + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_HeapFree]
mov eax, dword [esi + 8]
sub esp, 0xc
not eax
shr eax, 0x1f
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret 0x10
call dword [edx + 0x24]
sub esp, 8
jmp 0x10021119
mov edx, esi
mov eax, edi
call sym._create_registrar
test eax, eax
jne 0x10021056
xor eax, eax
jmp 0x10021148
mov dword [esi + 8], 0x8007000e
xor eax, eax
jmp 0x10021148
Function at 0x401410
Capabilities:
Write file on windows

Disassembly:
push ebp
xor eax, eax
mov ebp, esp
mov ecx, 0xfe
push edi
push ebx
lea edi, [ebp - 0x400]
sub esp, 0x460
rep stosd dword es:[edi], eax
mov eax, dword [ebp + 8]
lea ebx, [ebp - 0x408]
mov dword [ebp - 0x43c], str.Memory_allocation_failed
mov dword [ebp - 0x438], str._MOV_command_requires_left_and_top_arguments
mov dword [ebp - 0x434], str._SIZ_command_requires_width_and_height_agrguments
mov dword [ebp - 0x430], str._REN_command_requires_a_new_caption_to_be_specified
mov dword [ebp - 0x42c], str.Unrecognized_argument_s_._Use_CMDOW____for_help
mov dword [ebp - 0x428], str.Incompatible_argument_s_._Use_CMDOW____for_help
mov dword [ebp - 0x424], str.Incorrect_argument_s_._Use_CMDOW____for_help
mov dword [ebp - 0x420], str.A_window_must_be_specified_by_its_caption_or_handle
mov dword [ebp - 0x41c], str.The_specified_window_was_not_found
mov dword [ebp - 0x418], str.Unable_to_retrieve_image_names
mov dword [ebp - 0x414], str.Too_many_tasks_have_been_specified
mov dword [ebp - 0x410], str.Unable_to_execute_open_specified_file
mov dword [ebp - 0x40c], str.Only_the____and__RUN_commands_are_supported_on_W95_98_ME_platforms
mov eax, dword [ebp + eax*4 - 0x43c]
mov dword [esp], ebx
mov dword [ebp - 0x408], 0x6f727245
mov dword [ebp - 0x404], 0x203a72
mov dword [esp + 4], eax
call sub.KERNEL32.dll_lstrcatA
sub esp, 8
mov dword [esp + 4], 0x418273
mov dword [esp], ebx
call sub.KERNEL32.dll_lstrcatA
sub esp, 8
mov dword [esp], ebx
call sub.KERNEL32.dll_lstrlenA
sub esp, 4
mov edi, eax
mov dword [esp], 0xfffffff4
call sub.KERNEL32.dll_GetStdHandle
lea edx, [ebp - 0x440]
sub esp, 4
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], edx
mov dword [esp + 8], edi
mov dword [esp + 4], ebx
mov dword [esp], eax
call sub.KERNEL32.dll_WriteFile
sub esp, 0x14
mov dword [esp], 1
call sub.KERNEL32.dll_ExitProcess

Function at 0x401670
Capabilities:
Accept command line arguments

Disassembly:
push ebp
mov ebp, esp
push esi
push ebx
sub esp, 0x10
mov esi, dword [ebp + 8]
call sub.KERNEL32.dll_GetCommandLineA
mov dword [esp + 4], esi
mov dword [esp], eax
call sub.msvcrt.dll_strstr
test eax, eax
mov ebx, eax
je 0x4016aa
mov dword [esp], esi
call sub.KERNEL32.dll_lstrlenA
add ebx, eax
sub esp, 4
movzx eax, byte [ebx]
cmp al, 0x22
je 0x4016c3
test al, al
jne 0x4016b3
lea esp, [ebp - 8]
mov eax, ebx
pop ebx
pop esi
pop ebp
ret
cmp al, 9
je 0x4016bb
cmp al, 0x20
jne 0x4016aa
add ebx, 1
movzx eax, byte [ebx]
jmp 0x4016a6
movzx eax, byte [ebx + 1]
add ebx, 1
jmp 0x4016a6
Function at 0x4040c0
Capabilities:
Create process on windows
Write and execute a file
Write file on windows

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x28
mov eax, dword [ebp + 0xc]
mov edx, dword [eax + 0x100]
mov dword [esp + 0x10], 0
mov dword [esp + 0x14], edx
mov edx, dword [eax + 0xfc]
mov dword [esp + 0xc], edx
mov eax, dword [eax + 0xf8]
mov dword [esp + 4], 0
mov dword [esp], 0
mov dword [esp + 8], eax
call sub.SHELL32.DLL_ShellExecuteA
sub esp, 0x18
cmp eax, 0x20
jle 0x404110
leave
ret
mov dword [ebp + 8], 0xb
leave
jmp fcn.00401410

Function at 0x40e3f0
Capabilities:
Write file on windows

Disassembly:
push ebx
sub esp, 0x28
mov ebx, dword [sym.imp.msvcrt.dll__iob]
lea eax, [esp + 0x34]
mov dword [esp + 8], 0x17
mov dword [esp + 4], 1
add ebx, 0x40
mov dword [esp + 0xc], ebx
mov dword [esp], str.Mingw_runtime_failure:_n
mov dword [esp + 0x1c], eax
call sub.msvcrt.dll_fwrite
mov eax, dword [esp + 0x1c]
mov dword [esp], ebx
mov dword [esp + 8], eax
mov eax, dword [esp + 0x30]
mov dword [esp + 4], eax
call sub.msvcrt.dll_vfprintf
call sub.msvcrt.dll_abort
lea esi, [esi]
lea edi, [edi]

Function at 0x40e450
Capabilities:
Allocate or change rwx memory

Disassembly:
sub esp, 0x5c
mov dword [esp + 0x4c], ebx
mov ebx, eax
lea eax, [esp + 0x24]
mov dword [esp + 8], 0x1c
mov dword [esp + 4], eax
mov dword [esp], ebx
mov dword [esp + 0x50], esi
mov esi, edx
mov dword [esp + 0x54], edi
mov edi, ecx
mov dword [esp + 0x58], ebp
call sub.KERNEL32.dll_VirtualQuery
sub esp, 0xc
test eax, eax
je 0x40e546
mov eax, dword [esp + 0x38]
cmp eax, 4
jne 0x40e4c0
mov dword [esp + 8], edi
mov dword [esp + 4], esi
mov dword [esp], ebx
call sub.msvcrt.dll_memcpy
mov ebx, dword [esp + 0x4c]
mov esi, dword [esp + 0x50]
mov edi, dword [esp + 0x54]
mov ebp, dword [esp + 0x58]
add esp, 0x5c
ret
cmp eax, 0x40
je 0x40e495
mov eax, dword [esp + 0x30]
lea ebp, [esp + 0x20]
mov dword [esp + 0xc], ebp
mov dword [esp + 8], 0x40
mov dword [esp + 4], eax
mov eax, dword [esp + 0x24]
mov dword [esp], eax
call sub.KERNEL32.dll_VirtualProtect
sub esp, 0x10
mov eax, dword [esp + 0x38]
mov dword [esp + 8], edi
mov dword [esp + 4], esi
mov dword [esp], ebx
cmp eax, 0x40
setne byte [esp + 0x1e]
cmp eax, 4
setne byte [esp + 0x1f]
call sub.msvcrt.dll_memcpy
cmp byte [esp + 0x1f], 0
je 0x40e4a5
cmp byte [esp + 0x1e], 0
je 0x40e4a5
mov eax, dword [esp + 0x20]
mov dword [esp + 0xc], ebp
mov dword [esp + 8], eax
mov eax, dword [esp + 0x30]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x24]
mov dword [esp], eax
call sub.KERNEL32.dll_VirtualProtect
sub esp, 0x10
jmp 0x40e4a5
mov dword [esp + 8], ebx
mov dword [esp + 4], 0x1c
mov dword [esp], str.__VirtualQuery_failed_for__d_bytes_at_address__p
call fcn.0040e3f0
nop
Function at 0x40e7e0
Capabilities:
Get thread local storage value

Disassembly:
push esi
push ebx
sub esp, 0x14
mov dword [esp], 0x423c14
call sub.KERNEL32.dll_EnterCriticalSection
mov ebx, dword [0x423c2c]
sub esp, 4
test ebx, ebx
je 0x40e82b
nop
mov eax, dword [ebx]
mov dword [esp], eax
call sub.KERNEL32.dll_TlsGetValue
sub esp, 4
mov esi, eax
call sub.KERNEL32.dll_GetLastError
test eax, eax
jne 0x40e824
test esi, esi
je 0x40e824
mov eax, dword [ebx + 4]
mov dword [esp], esi
call eax
mov ebx, dword [ebx + 8]
test ebx, ebx
jne 0x40e800
mov dword [esp], 0x423c14
call sub.KERNEL32.dll_LeaveCriticalSection
sub esp, 4
add esp, 0x14
pop ebx
pop esi
ret
Function at 0x40fb00
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 sub.msvcrt.dll_strlen
mov esi, eax
lea eax, [eax + 0x41]
and eax, 0xfffffff0
call fcn.0040fcc0
mov edx, 0x326d
sub esp, eax
lea eax, [esp + 0x1b]
mov dword [esp + 8], esi
lea edi, [esp + 0xc]
mov dword [esp + 4], ebx
mov dword [esp], eax
mov word [esp + 0x18], dx
mov dword [esp + 0xc], 0x2d636367
mov dword [esp + 0x10], 0x656d6873
mov dword [esp + 0x14], 0x64742d6d
mov byte [esp + 0x1a], 0x2d
call sub.msvcrt.dll_memcpy
lea eax, [esi + 0x10]
mov dword [ebp - 0x1c], eax
add eax, edi
mov dword [eax], 0x61616161
mov dword [eax + 4], 0x61616161
mov dword [eax + 8], 0x61616161
mov dword [eax + 0xc], 0x61616161
mov dword [eax + 0x10], 0x61616161
mov dword [eax + 0x14], 0x61616161
mov dword [eax + 0x18], 0x61616161
mov dword [eax + 0x1c], 0x61616161
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 sub.KERNEL32.dll_CreateMutexA
mov byte [edi + esi + 0xf], 0x2d
sub esp, 0xc
mov dword [esp + 4], 0xffffffff
mov dword [esp], eax
mov dword [ebp - 0x20], eax
call sub.KERNEL32.dll_WaitForSingleObject
sub esp, 8
test eax, eax
je 0x40fbe6
int3
mov dword [esp], edi
call sub.KERNEL32.dll_FindAtomA
sub esp, 4
test ax, ax
jne 0x40fc80
mov eax, dword [ebp + 0xc]
mov dword [esp], eax
call sub.msvcrt.dll_malloc
mov ebx, eax
mov eax, dword [ebp - 0x1c]
lea edx, [edi + eax]
mov eax, 0x20
bt ebx, eax
jae 0x40fc1a
mov byte [edx], 0x41
add edx, 1
sub eax, 1
jne 0x40fc12
mov dword [esp], edi
call sub.KERNEL32.dll_AddAtomA
sub esp, 4
test ax, ax
je 0x40fc76
lea ecx, [esi + 0x31]
mov esi, dword [ebp - 0x1c]
movzx eax, ax
mov edx, edi
mov dword [esp], esi
call fcn.0040fa90
cmp eax, ebx
mov esi, eax
je 0x40fc97
mov dword [esp], ebx
call sub.msvcrt.dll_free
mov edi, dword [ebp - 0x20]
mov dword [esp], edi
call sub.KERNEL32.dll_ReleaseMutex
sub esp, 4
mov dword [esp], edi
call sub.KERNEL32.dll_CloseHandle
mov eax, esi
sub esp, 4
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret
int3
lea ecx, [esi + 0x31]
mov esi, dword [ebp - 0x1c]
movzx eax, ax
mov edx, edi
mov dword [esp], esi
call fcn.0040fa90
mov esi, eax
jmp 0x40fc53
mov eax, dword [ebp + 0xc]
mov dword [esp + 4], 0
mov dword [esp], ebx
mov dword [esp + 8], eax
call sub.msvcrt.dll_memset
mov eax, dword [ebp + 0x10]
test eax, eax
je 0x40fc53
mov dword [esp], ebx
call dword [ebp + 0x10]
jmp 0x40fc53

Function at 0x410a68
Capabilities:
Allocate thread local storage

Disassembly:
push ebx
sub esp, 8
mov ebx, dword [0x423c88]
test ebx, ebx
je 0x410a90
call sub.KERNEL32.dll_TlsAlloc
mov dword [ebx], eax
mov eax, dword [0x423c88]
test eax, eax
je 0x410aa0
cmp dword [eax], 0xffffffff
je 0x410aac
add esp, 8
pop ebx
ret
call fcn.00410a44
mov ebx, eax
mov dword [0x423c88], eax
jmp 0x410a76
call fcn.00410a44
mov dword [0x423c88], eax
jmp 0x410a86
call sub.msvcrt.dll_abort
lea esi, [esi]
Function at 0x41197c
Capabilities:
Get thread local storage value
Set thread local storage value

Disassembly:
push ebp
push edi
push esi
push ebx
sub esp, 0x3c
lea ebx, [esp + 0x20]
mov esi, 0x417014
mov ecx, 4
mov edi, ebx
rep movsd dword es:[edi], dword [esi]
mov eax, dword [0x423c8c]
test eax, eax
je 0x411ad4
cmp dword [eax], 1
je 0x4119ac
call fcn.0041190c
mov eax, dword [0x423c88]
test eax, eax
je 0x411ae4
mov eax, dword [eax]
mov dword [esp], eax
call sub.KERNEL32.dll_TlsGetValue
push esi
mov esi, eax
test eax, eax
je 0x4119d4
mov eax, esi
add esp, 0x3c
pop ebx
pop esi
pop edi
pop ebp
ret
call fcn.00411484
mov ebp, eax
mov ecx, dword [entry3]
test ecx, ecx
je 0x4119ca
test eax, eax
je 0x4119ca
mov dword [eax + 0x24], 1
call sub.KERNEL32.dll_GetCurrentThreadId
mov dword [ebp + 0x44], eax
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp + 4], 1
mov dword [esp], 0
call sub.KERNEL32.dll_CreateEventA
sub esp, 0x10
mov dword [ebp + 0x18], eax
mov dword [ebp + 0x1c], 0xffffffff
lea edi, [ebp + 0x34]
mov ecx, 4
mov esi, ebx
rep movsd dword es:[edi], dword [esi]
mov dword [ebp + 0x6c], 0
mov dword [ebp + 0x14], 0
call sub.KERNEL32.dll_GetCurrentProcess
mov esi, eax
call sub.KERNEL32.dll_GetCurrentThread
mov ebx, eax
call sub.KERNEL32.dll_GetCurrentProcess
mov dword [esp + 0x18], 2
mov dword [esp + 0x14], 0
mov dword [esp + 0x10], 0
lea edx, [ebp + 0x14]
mov dword [esp + 0xc], edx
mov dword [esp + 8], esi
mov dword [esp + 4], ebx
mov dword [esp], eax
call sub.KERNEL32.dll_DuplicateHandle
sub esp, 0x1c
test eax, eax
je 0x411aff
mov eax, dword [ebp + 0x14]
mov dword [esp], eax
call sub.KERNEL32.dll_GetThreadPriority
push edx
mov dword [ebp + 0x74], eax
mov dword [ebp + 0x70], 0
mov al, byte [ebp + 0x20]
and eax, 0xffffffcf
or eax, 0x10
mov byte [ebp + 0x20], al
mov eax, dword [0x423c88]
test eax, eax
je 0x411af3
mov dword [esp + 4], ebp
mov eax, dword [eax]
mov dword [esp], eax
call sub.KERNEL32.dll_TlsSetValue
sub esp, 8
test eax, eax
je 0x411aff
mov esi, ebp
jmp 0x4119ca
call fcn.00410a20
mov dword [0x423c8c], eax
jmp 0x4119a2
call fcn.00410a44
mov dword [0x423c88], eax
jmp 0x4119b9
call fcn.00410a44
mov dword [0x423c88], eax
jmp 0x411ab7
call sub.msvcrt.dll_abort
xor eax, eax
ret
Function at 0x4124ac
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 [esp + 0x44]
lea ebx, [esp + 0x10]
mov esi, 0x417014
mov ecx, 4
mov edi, ebx
rep movsd dword es:[edi], dword [esi]
test eax, eax
je 0x4124d2
cmp eax, 3
je 0x4124e4
mov eax, 1
add esp, 0x2c
pop ebx
pop esi
pop edi
pop ebp
ret 0xc
mov eax, dword [0x423c88]
test eax, eax
je 0x412650
cmp dword [eax], 0xffffffff
je 0x4124d2
mov eax, dword [0x423c88]
test eax, eax
je 0x412670
mov eax, dword [eax]
mov dword [esp], eax
call sub.KERNEL32.dll_TlsGetValue
push edx
mov ebp, eax
test eax, eax
je 0x4124d2
test byte [eax + 0x20], 0x30
jne 0x412608
mov eax, dword [eax + 0x70]
test eax, eax
mov eax, dword [ebp + 0x18]
jne 0x4125cc
test eax, eax
je 0x412539
mov dword [esp], eax
call sub.KERNEL32.dll_CloseHandle
push edi
mov dword [ebp + 0x18], 0
mov dword [ebp + 0x70], 1
mov eax, dword [ebp + 0xbc]
mov dword [esp], eax
call fcn.00412338
test byte [ebp + 0x24], 4
je 0x4125e0
mov dword [ebp], 0xdeadbeef
mov eax, dword [ebp + 0x14]
test eax, eax
je 0x412576
mov dword [esp], eax
call sub.KERNEL32.dll_CloseHandle
push esi
mov dword [ebp + 0x14], 0
lea eax, [ebp + 0x1c]
mov dword [esp], eax
call fcn.004107f4
lea edi, [ebp + 0x34]
mov ecx, 4
mov esi, ebx
rep movsd dword es:[edi], dword [esi]
mov eax, ebp
call fcn.00410d48
mov eax, dword [0x423c88]
test eax, eax
je 0x412660
mov dword [esp + 4], 0
mov eax, dword [eax]
mov dword [esp], eax
call sub.KERNEL32.dll_TlsSetValue
sub esp, 8
mov eax, 1
add esp, 0x2c
pop ebx
pop esi
pop edi
pop ebp
ret 0xc
test eax, eax
je 0x4125d9
mov dword [esp], eax
call sub.KERNEL32.dll_CloseHandle
push ecx
mov dword [ebp + 0x18], 0
lea eax, [ebp + 0x1c]
mov dword [esp], eax
call fcn.004107f4
lea edi, [ebp + 0x34]
mov ecx, 4
mov esi, ebx
rep movsd dword es:[edi], dword [esi]
mov eax, 1
add esp, 0x2c
pop ebx
pop esi
pop edi
pop ebp
ret 0xc
mov eax, dword [eax + 0xbc]
mov dword [esp], eax
call fcn.00412338
mov eax, dword [ebp + 0x14]
test eax, eax
je 0x41257d
mov dword [esp], eax
call sub.KERNEL32.dll_CloseHandle
push eax
mov eax, dword [ebp + 0x18]
test eax, eax
je 0x41263a
mov dword [esp], eax
call sub.KERNEL32.dll_CloseHandle
push eax
mov dword [ebp + 0x18], 0
mov dword [ebp + 0x14], 0
jmp 0x41257d
call fcn.00410a44
mov dword [0x423c88], eax
jmp 0x4124f1
call fcn.00410a44
mov dword [0x423c88], eax
jmp 0x4125a8
call fcn.00410a44
mov dword [0x423c88], eax
jmp 0x412503
Function at 0x412a68
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 fcn.0041197c
mov ebx, eax
mov dword [eax + 4], esi
mov eax, dword [eax + 0xbc]
mov dword [esp], eax
call fcn.00412338
test byte [ebx + 0x20], 0x30
je 0x412b80
mov eax, dword [0x423c88]
test eax, eax
je 0x412b64
mov eax, dword [eax]
mov dword [esp], eax
call sub.KERNEL32.dll_TlsGetValue
push edx
mov ebx, eax
test eax, eax
je 0x412ae3
mov eax, dword [eax + 0x14]
test eax, eax
je 0x412b40
mov esi, dword [ebx + 4]
mov dword [ebx + 0x70], 1
mov eax, dword [ebx + 0x18]
test eax, eax
je 0x412ad6
mov dword [esp], eax
call sub.KERNEL32.dll_CloseHandle
push eax
mov dword [ebx + 0x18], 0
test byte [ebx + 0x24], 4
jne 0x412af4
mov dword [esp + 0x20], esi
add esp, 0x14
pop ebx
pop esi
jmp sub.msvcrt.dll__endthreadex
mov dword [ebx], 0xdeadbeef
mov eax, dword [ebx + 0x14]
mov dword [esp], eax
call sub.KERNEL32.dll_CloseHandle
push eax
mov dword [ebx + 0x14], 0
mov eax, ebx
call fcn.00410d48
mov eax, dword [0x423c88]
test eax, eax
je 0x412b74
mov dword [esp + 4], 0
mov eax, dword [eax]
mov dword [esp], eax
call sub.KERNEL32.dll_TlsSetValue
sub esp, 8
mov dword [esp + 0x20], esi
add esp, 0x14
pop ebx
pop esi
jmp sub.msvcrt.dll__endthreadex
mov dword [ebx], 0xdeadbeef
mov eax, dword [ebx + 0x18]
test eax, eax
je 0x412b56
mov dword [esp], eax
call sub.KERNEL32.dll_CloseHandle
push eax
mov dword [ebx + 0x18], 0
mov esi, dword [ebx + 4]
jmp 0x412b0d
call fcn.00410a44
mov dword [0x423c88], eax
jmp 0x412aa0
call fcn.00410a44
mov dword [0x423c88], eax
jmp 0x412b1d
mov dword [esp + 4], 1
add ebx, 0x78
mov dword [esp], ebx
call sub.msvcrt.dll_longjmp
nop
Function at 0x414b9c
Capabilities:
Check mutex on windows

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
push ebx
sub esp, 0x2c
xor eax, eax
mov ecx, 0xffffffff
mov edi, dword [ebp + 8]
repne scasb al, byte es:[edi]
mov edx, ecx
not edx
lea eax, [edx - 1]
mov dword [ebp - 0x20], eax
lea eax, [edx + 0xe]
mov dword [ebp - 0x24], eax
lea eax, [edx + 0x3f]
and eax, 0xfffffff0
call fcn.0040fcc0
sub esp, eax
lea ebx, [esp + 0xc]
mov esi, str.gcc_shmem_tdm2
mov ecx, 0xe
mov edi, ebx
rep movsb byte es:[edi], byte [esi]
mov byte [esp + 0x1a], 0x2d
lea eax, [esp + 0x1b]
mov edi, eax
mov esi, dword [ebp + 8]
mov ecx, dword [ebp - 0x20]
rep movsb byte es:[edi], byte [esi]
lea esi, [ebx + edx + 0xf]
mov cl, 0x20
mov al, 0x61
mov edi, esi
rep stosb byte es:[edi], al
lea edi, [edx + 0x2f]
mov byte [esp + edi + 0xc], 0
mov edx, dword [ebp - 0x24]
mov byte [esp + edx + 0xc], 0
mov dword [esp + 8], ebx
mov dword [esp + 4], 0
mov dword [esp], 0
call sub.KERNEL32.dll_CreateMutexA
sub esp, 0xc
mov dword [ebp - 0x1c], eax
mov edx, dword [ebp - 0x24]
mov byte [ebx + edx], 0x2d
mov dword [esp + 4], 0xffffffff
mov dword [esp], eax
call sub.KERNEL32.dll_WaitForSingleObject
sub esp, 8
test eax, eax
je 0x414c4c
int3
mov dword [esp], ebx
call sub.KERNEL32.dll_FindAtomA
push ecx
test ax, ax
jne 0x414ce4
mov eax, dword [ebp + 0xc]
mov dword [esp], eax
call sub.msvcrt.dll_malloc
mov esi, eax
mov edx, dword [ebp - 0x20]
add edx, 0x10
mov dword [ebp - 0x20], edx
mov eax, edx
add eax, ebx
mov ecx, 0x20
lea esi, [esi]
mov edx, esi
shr edx, cl
and edx, 1
je 0x414c8c
mov byte [eax], 0x41
inc eax
dec ecx
jne 0x414c80
mov dword [esp], ebx
call sub.KERNEL32.dll_AddAtomA
push edx
test ax, ax
je 0x414ce0
movzx eax, ax
mov edx, dword [ebp - 0x20]
mov dword [esp], edx
mov ecx, edi
mov edx, ebx
call fcn.00414b28
mov ebx, eax
cmp eax, esi
je 0x414cfd
mov dword [esp], esi
call sub.msvcrt.dll_free
mov eax, dword [ebp - 0x1c]
mov dword [esp], eax
call sub.KERNEL32.dll_ReleaseMutex
push eax
mov eax, dword [ebp - 0x1c]
mov dword [esp], eax
call sub.KERNEL32.dll_CloseHandle
push edx
mov eax, ebx
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret
int3
movzx eax, ax
mov edx, dword [ebp - 0x20]
add edx, 0x10
mov dword [esp], edx
mov ecx, edi
mov edx, ebx
call fcn.00414b28
mov ebx, eax
jmp 0x414cbe
xor eax, eax
mov edi, esi
mov ecx, dword [ebp + 0xc]
rep stosb byte es:[edi], al
mov ecx, dword [ebp + 0x10]
test ecx, ecx
je 0x414cbe
mov dword [esp], esi
mov eax, dword [ebp + 0x10]
call eax
jmp 0x414cbe