joyce8/EMBER2024-capa huggingface dataset:
Function at 0x4069d6
Capabilities:
Read file on windows

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x58
mov dword [esp], 0x40ccf0
call fcn.00404852
test eax, eax
je 0x406ab6
mov dword [ebp - 0x30], 0
mov dword [ebp - 0x34], 0
mov dword [esp + 4], 0x40a0ce
mov dword [esp], 0x40ccf0
call sub.msvcrt.dll_fopen
mov dword [ebp - 0x2c], eax
cmp dword [ebp - 0x2c], 0
je 0x406ab6
mov edx, dword [ebp - 0x34]
lea eax, [ebp - 0x34]
inc dword [eax]
cmp edx, 7
jg 0x406aab
mov eax, dword [ebp - 0x2c]
mov dword [esp + 0xc], eax
mov dword [esp + 8], 0x20
mov dword [esp + 4], 1
lea eax, [ebp - 0x28]
mov dword [esp], eax
call sub.msvcrt.dll_fread
mov dword [ebp - 0x30], eax
cmp dword [ebp - 0x30], 0
jle 0x406a9a
lea eax, [ebp - 0x28]
mov dword [esp], eax
call sub.ntdll.dll_atol
mov dword [ebp - 0x38], eax
mov dword [esp], 0
call sub.msvcrt.dll_time
mov edx, eax
mov eax, dword [ebp - 0x38]
mov dword [esp + 4], eax
mov dword [esp], edx
call sub.msvcrt.dll_difftime
fld qword [0x40b1b8]
fucompp
fnstsw ax
sahf
ja 0x406a91
jmp 0x406a1f
mov dword [ebp - 0x3c], 1
jmp 0x406abd
mov dword [esp], 0x4d
call sub.msvcrt.dll__sleep
jmp 0x406a1f
mov eax, dword [ebp - 0x2c]
mov dword [esp], eax
call sub.msvcrt.dll_fclose
mov dword [ebp - 0x3c], 0
mov eax, dword [ebp - 0x3c]
leave
ret

Function at 0x406ac2
Capabilities:
Write file on windows

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x58
mov dword [esp + 4], 0x40a388
mov dword [esp], 0x40ccf0
call sub.msvcrt.dll_fopen
mov dword [ebp - 0xc], eax
cmp dword [ebp - 0xc], 0
jne 0x406aee
mov dword [ebp - 0x3c], 0
jmp 0x406b4e
mov dword [esp], 0
call sub.msvcrt.dll_time
mov dword [esp + 8], eax
mov dword [esp + 4], 0x40a163
lea eax, [ebp - 0x38]
mov dword [esp], eax
call sub.ntdll.dll_sprintf
lea eax, [ebp - 0x38]
mov dword [esp], eax
call sub.ntdll.dll_strlen
mov edx, eax
mov eax, dword [ebp - 0xc]
mov dword [esp + 0xc], eax
mov dword [esp + 8], edx
mov dword [esp + 4], 1
lea eax, [ebp - 0x38]
mov dword [esp], eax
call sub.msvcrt.dll_fwrite
mov eax, dword [ebp - 0xc]
mov dword [esp], eax
call sub.msvcrt.dll_fclose
mov dword [ebp - 0x3c], 1
mov eax, dword [ebp - 0x3c]
leave
ret
Function at 0x407020
Capabilities:
Check if file exists
Get file attributes

Disassembly:
push esi
push ebx
sub esp, 0x124
mov ebx, dword [esp + 0x130]
call sub.msvcrt.dll__errno
mov dword [eax], 0
test ebx, ebx
je 0x407227
cmp byte [ebx], 0
je 0x4071f3
mov dword [esp], ebx
call sub.KERNEL32.dll_GetFileAttributesA
sub esp, 4
cmp eax, 0xffffffff
je 0x407218
test al, 0x10
je 0x4071f3
mov dword [esp + 4], ebx
mov eax, 0x104
lea esi, [esp + 0x10]
mov dword [esp + 8], eax
mov dword [esp], esi
call sub.msvcrt.dll__fullpath
mov ecx, esi
lea esi, [esi]
lea edi, [edi]
mov ebx, dword [ecx]
add ecx, 4
lea edx, [ebx - 0x1010101]
not ebx
and edx, ebx
mov eax, edx
and eax, 0x80808080
je 0x407090
and edx, 0x8080
jne 0x4070b6
shr eax, 0x10
add ecx, 2
add al, al
sbb ecx, 3
sub ecx, esi
lea edx, [ecx + 0x233]
mov dword [esp], edx
call sub.msvcrt.dll_malloc
test eax, eax
mov ebx, eax
je 0x407209
mov dword [esp + 4], esi
lea esi, [eax + 0x22c]
mov dword [esp], esi
call sub.ntdll.dll_strcpy
cmp byte [ebx + 0x22c], 0
je 0x407190
mov ecx, esi
lea esi, [esi]
lea edi, [edi]
mov eax, dword [ecx]
add ecx, 4
lea edx, [eax - 0x1010101]
not eax
and edx, eax
mov eax, edx
and eax, 0x80808080
je 0x407100
and edx, 0x8080
jne 0x407126
shr eax, 0x10
add ecx, 2
add al, al
sbb ecx, 3
sub ecx, esi
cmp byte [ebx + ecx + 0x22b], 0x2f
je 0x407190
mov ecx, esi
lea esi, [esi]
mov eax, dword [ecx]
add ecx, 4
lea edx, [eax - 0x1010101]
not eax
and edx, eax
mov eax, edx
and eax, 0x80808080
je 0x407140
and edx, 0x8080
jne 0x407166
shr eax, 0x10
add ecx, 2
add al, al
sbb ecx, 3
sub ecx, esi
cmp byte [ebx + ecx + 0x22b], 0x5c
je 0x407190
mov dword [esp], esi
call sub.ntdll.dll_strlen
mov word [eax + esi], 0x5c
lea esi, [esi]
lea edi, [edi]
mov dword [esp], esi
call sub.ntdll.dll_strlen
mov word [eax + esi], 0x2a
mov eax, 0xffffffff
xor edx, edx
mov dword [ebx + 0x224], eax
xor ecx, ecx
xor esi, esi
mov dword [ebx + 0x228], edx
xor eax, eax
mov edx, 0x104
mov dword [ebx + 0x118], ecx
xor ecx, ecx
mov word [ebx + 0x11c], si
lea esi, [ebx + 0x120]
mov word [ebx + 0x11e], ax
mov dword [esp], esi
mov dword [esp + 8], edx
mov dword [esp + 4], ecx
call sub.ntdll.dll_memset
add esp, 0x124
mov eax, ebx
pop ebx
pop esi
ret
call sub.msvcrt.dll__errno
mov dword [eax], 0x14
xor eax, eax
add esp, 0x124
pop ebx
pop esi
ret
call sub.msvcrt.dll__errno
mov dword [eax], 0xc
xor eax, eax
jmp 0x407200
call sub.msvcrt.dll__errno
mov dword [eax], 2
xor eax, eax
jmp 0x407200
call sub.msvcrt.dll__errno
mov dword [eax], 0xe
xor eax, eax
jmp 0x407200
Function at 0x41de30
Capabilities:
Print debug messages

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x422bf6
mov eax, dword fs:[0]
push eax
sub esp, 0x234
mov eax, dword [0x42e07c]
xor eax, ebp
mov dword [ebp - 0x14], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov dword [ebp - 0x10], esp
mov esi, ecx
mov dword [ebp - 0x220], esi
xor eax, eax
mov dword [esi + 0x10], 0
mov dword [esi + 0x14], 7
mov dword [ebp - 0x21c], esi
mov word [esi], ax
mov dword [ebp - 4], eax
lea eax, [ebp - 0x218]
push str.FN_CSharedMemoryChannel_CTor
push eax
call fcn.00401880
mov edi, dword [sym.imp.KERNEL32.dll_OutputDebugStringA]
lea eax, [ebp - 0x218]
add esp, 8
push eax
call edi
push 0x423484
call edi
push str..pipe_
mov ecx, esi
call fcn.00401810
lea ecx, [ebp - 0x23c]
mov byte [ebp - 4], 1
call fcn.00402bd0
mov byte [ebp - 4], 2
mov ecx, eax
cmp dword [eax + 0x14], 8
jb 0x41ded8
mov ecx, dword [eax]
push dword [eax + 0x10]
push ecx
mov ecx, esi
call fcn.00402f20
mov edx, dword [ebp - 0x228]
cmp edx, 8
jb 0x41df25
mov ecx, dword [ebp - 0x23c]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x41df1b
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
jbe 0x41df1b
call dword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__invalid_parameter_noinfo_noreturn]
push edx
push ecx
call fcn.0041ed03
add esp, 8
cmp dword [esi + 0x14], 8
mov eax, esi
jb 0x41df2f
mov eax, dword [esi]
push 0
push 0x80
push 3
push 0
push 0
push 0xc0000000
push eax
call dword [sym.imp.KERNEL32.dll_CreateFileW]
mov dword [esi + 0x18], eax
cmp eax, 0xffffffff
je 0x41df76
push str.FN_CSharedMemoryChannel_created_successfully
lea eax, [ebp - 0x218]
push eax
call fcn.00401880
add esp, 8
lea eax, [ebp - 0x218]
push eax
call edi
push 0x423484
call edi
jmp 0x41dfc9
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 2
jne 0x41df88
push str.FN_CSharedMemoryChannel_ERROR_FILE_NOT_FOUND
jmp 0x41df55
cmp eax, 0xe7
jne 0x41dfc9
push str.FN_CSharedMemoryChannel_ERROR_PIPE_BUSY
jmp 0x41df55
mov eax, esi
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x14]
xor ecx, ebp
call fcn.0041ecc2
mov esp, ebp
pop ebp
ret
Function at 0x41e810
Capabilities:
Print debug messages

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x422dab
mov eax, dword fs:[0]
push eax
mov eax, 0x123c
call fcn.0041fd70
mov eax, dword [0x42e07c]
xor eax, ebp
mov dword [ebp - 0x10], eax
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov edi, ecx
lea eax, [ebp - 0x210]
push str.FN_CSharedMemoryChannel_GetMessage
push eax
call fcn.00401880
add esp, 8
lea eax, [ebp - 0x210]
push eax
call dword [sym.imp.KERNEL32.dll_OutputDebugStringA]
push 0x423484
call dword [sym.imp.KERNEL32.dll_OutputDebugStringA]
mov ecx, edi
call fcn.0041e4b0
cmp eax, 0xfffe00ff
jne 0x41e8cc
mov ecx, edi
call fcn.0041e4b0
mov ecx, edi
call fcn.0041e4b0
mov ecx, edi
call fcn.0041e4b0
mov ecx, edi
call fcn.0041e4b0
lea edx, [eax - 1]
cmp edx, 0xffe
ja 0x41e8b2
push eax
lea eax, [ebp - 0x1210]
mov ecx, edi
push eax
call fcn.0041e540
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.0041ecc2
mov esp, ebp
pop ebp
ret
push str.Invalid_Message_Header
lea ecx, [ebp - 0x1228]
call fcn.00402d30
lea eax, [ebp - 0x1228]
mov dword [ebp - 4], 0
push eax
lea ecx, [ebp - 0x1244]
call fcn.00401b80
push 0x42b38c
lea eax, [ebp - 0x1244]
push eax
call sub.VCRUNTIME140.dll__CxxThrowException
int3

Function at 0x41f37b
Capabilities:
Terminate process

Disassembly:
push 0x14
push 0x42b2e0
call fcn.0041fa90
push 1
call fcn.0041f03d
pop ecx
test al, al
je 0x41f4d7
xor bl, bl
mov byte [ebp - 0x19], bl
and dword [ebp - 4], 0
call fcn.0041f00b
mov byte [ebp - 0x24], al
mov eax, dword [0x43222c]
xor ecx, ecx
inc ecx
cmp eax, ecx
je 0x41f4d7
test eax, eax
jne 0x41f405
mov dword [0x43222c], ecx
push 0x423340
push 0x42332c
call sub.api_ms_win_crt_runtime_l1_1_0.dll__initterm_e
pop ecx
pop ecx
test eax, eax
je 0x41f3e8
mov dword [ebp - 4], 0xfffffffe
mov eax, 0xff
jmp 0x41f4d1
push 0x423328
push 0x423314
call sub.api_ms_win_crt_runtime_l1_1_0.dll__initterm
pop ecx
pop ecx
mov dword [0x43222c], 2
jmp 0x41f40a
mov bl, cl
mov byte [ebp - 0x19], bl
push dword [ebp - 0x24]
call fcn.0041f1aa
pop ecx
call fcn.0041fc0d
mov esi, eax
xor edi, edi
cmp dword [esi], edi
je 0x41f43b
push esi
call fcn.0041f120
pop ecx
test al, al
je 0x41f43b
push edi
push 2
push edi
mov esi, dword [esi]
mov ecx, esi
call dword [0x423310]
call esi
call fcn.0041fc13
mov esi, eax
cmp dword [esi], edi
je 0x41f459
push esi
call fcn.0041f120
pop ecx
test al, al
je 0x41f459
push dword [esi]
call sub.api_ms_win_crt_runtime_l1_1_0.dll__register_thread_local_exe_atexit_callback
pop ecx
call fcn.0041f819
movzx eax, ax
push eax
call sub.api_ms_win_crt_runtime_l1_1_0.dll__get_wide_winmain_command_line
push eax
push edi
push 0x400000
call main
mov esi, eax
call fcn.0041f84f
test al, al
je 0x41f4de
test bl, bl
jne 0x41f487
call sub.api_ms_win_crt_runtime_l1_1_0.dll__cexit
push edi
push 1
call fcn.0041f1c7
pop ecx
pop ecx
mov dword [ebp - 4], 0xfffffffe
mov eax, esi
jmp 0x41f4d1
call fcn.0041fad6
ret
push 7
call fcn.0041f6fd
push esi
call sub.api_ms_win_crt_runtime_l1_1_0.dll_exit
push dword [ebp - 0x20]
call sub.api_ms_win_crt_runtime_l1_1_0.dll__exit
int3
call fcn.005a3000
jmp 0x41f37b
Function at 0x408769
Capabilities:
Write file on windows

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x1a4
mov edx, dword [ebp + 8]
xor ecx, ecx
mov eax, 0x40c190
cmp edx, dword [eax]
je 0x40878b
add eax, 8
inc ecx
cmp eax, 0x40c220
jl 0x40877c
push esi
mov esi, ecx
shl esi, 3
cmp edx, dword [esi + 0x40c190]
jne 0x4088b9
mov eax, dword [0x40cbb0]
cmp eax, 1
je 0x408893
test eax, eax
jne 0x4087bc
cmp dword [0x40c0e4], 1
je 0x408893
cmp edx, 0xfc
je 0x4088b9
lea eax, [ebp - 0x1a4]
push 0x104
push eax
push 0
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
test eax, eax
jne 0x4087f3
lea eax, [ebp - 0x1a4]
push str._program_name_unknown_
push eax
call fcn.00409670
pop ecx
pop ecx
lea eax, [ebp - 0x1a4]
push edi
push eax
lea edi, [ebp - 0x1a4]
call fcn.00409490
inc eax
pop ecx
cmp eax, 0x3c
jbe 0x408836
lea eax, [ebp - 0x1a4]
push eax
call fcn.00409490
mov edi, eax
lea eax, [ebp - 0x1a4]
sub eax, 0x3b
push 3
add edi, eax
push 0x40b45c
push edi
call fcn.00409f00
add esp, 0x10
lea eax, [ebp - 0xa0]
push str.Runtime_Error__n_nProgram:
push eax
call fcn.00409670
lea eax, [ebp - 0xa0]
push edi
push eax
call fcn.00409680
lea eax, [ebp - 0xa0]
push 0x40b43c
push eax
call fcn.00409680
push dword [esi + 0x40c194]
lea eax, [ebp - 0xa0]
push eax
call fcn.00409680
push 0x12010
lea eax, [ebp - 0xa0]
push str.Microsoft_Visual_C_Runtime_Library
push eax
call fcn.00409e75
add esp, 0x2c
pop edi
jmp 0x4088b9
lea eax, [ebp + 8]
lea esi, [esi + 0x40c194]
push 0
push eax
push dword [esi]
call fcn.00409490
pop ecx
push eax
push dword [esi]
push 0xfffffffffffffff4
call dword [sym.imp.KERNEL32.dll_GetStdHandle]
push eax
call dword [sym.imp.KERNEL32.dll_WriteFile]
pop esi
leave
ret

Function at 0x5191bb
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffffff0
mov eax, 0x401000
call 0x5191bb
lcall 0x5de5, 0x8b10c483
jmp loc.00ace428
Function at 0x41bd00
Capabilities:
Encode data using xor
Hash data with crc32

Disassembly:
xor edx, edx
mov eax, edx
and eax, 1
dec eax
not eax
and eax, 0xedb88320
mov ecx, edx
shr ecx, 1
xor eax, ecx
mov ecx, eax
and ecx, 1
dec ecx
not ecx
and ecx, 0xedb88320
shr eax, 1
xor ecx, eax
mov eax, ecx
and eax, 1
dec eax
shr ecx, 1
not eax
and eax, 0xedb88320
xor eax, ecx
mov ecx, eax
and ecx, 1
dec ecx
not ecx
and ecx, 0xedb88320
shr eax, 1
xor ecx, eax
mov eax, ecx
and eax, 1
dec eax
shr ecx, 1
not eax
and eax, 0xedb88320
xor eax, ecx
mov ecx, eax
and ecx, 1
dec ecx
not ecx
and ecx, 0xedb88320
shr eax, 1
xor ecx, eax
mov eax, ecx
and eax, 1
dec eax
shr ecx, 1
not eax
and eax, 0xedb88320
xor eax, ecx
mov ecx, eax
and ecx, 1
dec ecx
not ecx
and ecx, 0xedb88320
shr eax, 1
xor ecx, eax
mov dword [edx*4 + 0x424c80], ecx
inc edx
cmp edx, 0x100
jb 0x41bd02
cmp edx, 0x800
jae 0x41bdd9
lea esp, [esp]
mov eax, dword [edx*4 + 0x424880]
mov ecx, eax
and ecx, 0xff
shr eax, 8
xor eax, dword [ecx*4 + 0x424c80]
inc edx
mov dword [edx*4 + 0x424c7c], eax
cmp edx, 0x800
jb 0x41bdb0
mov eax, 0x41c5e0
mov dword [0x424c7c], eax
mov dword [0x426c80], eax
mov dword [0x424c78], 0x41c500
call fcn.0041c010
test eax, eax
jne 0x41be05
mov dword [0x426c80], 0x41c500
ret

Function at 0x42e003
Capabilities:
Encode data using xor
Packed with generic packer

Disassembly:
pushal
nop
nop
nop
mov eax, section..text
nop
nop
nop
push 4
nop
pop edi
nop
nop
nop
nop
nop
nop
nop
cmp eax, 0
nop
je 0x42e072
nop
nop
nop
nop
nop
mov ebx, 0x407ef8
nop
mov ecx, ebx
nop
nop
nop
sub ecx, eax
nop
nop
nop
nop
nop
xor edx, edx
nop
nop
nop
push eax
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, ecx
nop
div edi
nop
nop
nop
nop
nop
nop
xchg ecx, eax
nop
nop
nop
nop
pop eax
nop
nop
nop
nop
nop
mov esi, 0x4646468f
nop
nop
xor dword [eax], esi
nop
nop
add eax, edi
nop
nop
nop
nop
nop
nop
loop 0x42e060
nop
nop
nop
mov eax, section..data
nop
nop
cmp eax, 0
nop
je 0x42e0d2
nop
nop
nop
nop
mov ebx, 0x42cd70
nop
nop
mov ecx, ebx
nop
nop
nop
sub ecx, eax
nop
nop
nop
nop
nop
nop
xor edx, edx
nop
nop
push eax
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, ecx
nop
nop
div edi
nop
nop
nop
nop
nop
nop
nop
nop
xchg ecx, eax
nop
nop
nop
pop eax
nop
nop
mov esi, 0x38715063
nop
xor dword [eax], esi
nop
nop
nop
nop
nop
add eax, edi
nop
nop
nop
nop
nop
nop
nop
loop 0x42e0c0
nop
popal
nop
nop
nop
nop
jmp 0x401219

Function at 0x430005
Capabilities:
Authenticate hmac
Encode data using xor
Packed with generic packer

Disassembly:
pushal
call 0x43000c
nop
nop
nop
nop
nop
pop eax
nop
add eax, 0x403daa
sub eax, 0x403d50
nop
nop
nop
nop
mov ebx, dword [eax]
nop
mov ecx, dword [eax + 4]
nop
nop
nop
mov edx, dword [eax + 8]
nop
nop
nop
nop
nop
nop
xor dword [ebx], edx
nop
nop
nop
add ebx, 4
nop
cmp ebx, ecx
nop
nop
nop
nop
jl 0x430030
nop
nop
nop
nop
add eax, 0xc
nop
nop
nop
cmp dword [eax], 0
nop
nop
nop
jne 0x43001e
nop
nop
nop
nop
nop
nop
nop
nop
popal
nop
jmp fcn.00401219
Function at 0x433006
Capabilities:
Encode data using xor

Disassembly:
mov eax, section..text
nop
nop
nop
nop
push 4
nop
nop
nop
nop
nop
nop
pop edi
nop
nop
nop
cmp eax, 0
nop
nop
nop
nop
je 0x433072
mov ebx, 0x40de38
nop
nop
nop
nop
nop
mov ecx, ebx
nop
nop
nop
sub ecx, eax
nop
nop
xor edx, edx
nop
nop
nop
push eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, ecx
nop
nop
div edi
nop
nop
nop
nop
xchg ecx, eax
nop
nop
nop
nop
nop
nop
pop eax
nop
nop
nop
mov esi, 0x62fe5bbe
nop
nop
nop
xor dword [eax], esi
nop
nop
add eax, edi
nop
nop
nop
loop 0x433060
nop
nop
nop
nop
nop
mov eax, section..data
nop
cmp eax, 0
nop
nop
nop
nop
je 0x4330d2
nop
nop
mov ebx, 0x4304d8
nop
nop
nop
mov ecx, ebx
nop
nop
nop
nop
nop
nop
sub ecx, eax
nop
nop
nop
xor edx, edx
nop
nop
nop
nop
nop
push eax
nop
nop
nop
mov eax, ecx
nop
nop
div edi
nop
nop
nop
nop
nop
xchg ecx, eax
nop
nop
nop
nop
nop
nop
nop
nop
pop eax
nop
mov esi, 0x69c40a87
nop
nop
nop
nop
nop
xor dword [eax], esi
nop
nop
nop
nop
add eax, edi
nop
nop
nop
loop 0x4330c0
nop
popal
nop
nop
nop
nop
nop
jmp 0x431219
Function at 0x10020010
Capabilities:
Extract resource via kernel32 functions
Print debug messages

Disassembly:
mov eax, dword [esp + 8]
mov ecx, dword [esp + 0xc]
push ebx
push ebp
mov ebp, eax
push esi
mov esi, dword [esp + 0x10]
and ebp, 0xf
shr eax, 4
inc eax
push edi
and eax, 0xffff
push ecx
push eax
push 6
push esi
call dword [sym.imp.KERNEL32.dll_FindResourceExA]
test eax, eax
je 0x10020069
push eax
push esi
call dword [sym.imp.KERNEL32.dll_LoadResource]
mov esi, eax
test esi, esi
je 0x10020069
xor edi, edi
xor ebx, ebx
mov bx, word [esi]
add esi, 2
push esi
call dword [sym.imp.KERNEL32.dll_OutputDebugStringW]
cmp ebp, edi
je 0x10020070
inc edi
lea esi, [esi + ebx*2]
cmp edi, 0x10
jl 0x1002004d
xor eax, eax
pop edi
pop esi
pop ebp
pop ebx
ret
mov ecx, dword [esp + 0x24]
mov ebp, dword [esp + 0x20]
mov edx, ecx
xor eax, eax
mov edi, ebp
push 0
shr ecx, 2
rep stosd dword es:[edi], eax
mov ecx, edx
push 0
and ecx, 3
rep stosb byte es:[edi], al
mov eax, edx
dec eax
push eax
push ebp
push ebx
push esi
push 0
push 0
call dword [sym.imp.KERNEL32.dll_WideCharToMultiByte]
test eax, eax
jne 0x1002006b
mov edi, ebp
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
pop edi
dec ecx
pop esi
pop ebp
mov eax, ecx
pop ebx
ret

Function at 0x10025b40
Capabilities:
Extract resource via kernel32 functions

Disassembly:
mov eax, dword [esp + 8]
mov ecx, dword [esp + 0xc]
push esi
push edi
mov esi, dword [esp + 0xc]
mov edi, eax
shr eax, 4
and edi, 0xf
inc eax
and eax, 0xffff
push ecx
push eax
push 6
push esi
call dword [sym.imp.KERNEL32.dll_FindResourceExA]
test eax, eax
je 0x10025b90
push eax
push esi
call dword [sym.imp.KERNEL32.dll_LoadResource]
mov esi, eax
test esi, esi
je 0x10025b90
xor ecx, ecx
xor eax, eax
mov ax, word [esi]
add esi, 2
cmp edi, ecx
je 0x10025b95
inc ecx
lea esi, [esi + eax*2]
cmp ecx, 0x10
jl 0x10025b7b
pop edi
xor eax, eax
pop esi
ret
mov edx, dword [esp + 0x1c]
lea ecx, [edx - 1]
cmp eax, ecx
jle 0x10025ba2
mov eax, ecx
lea edx, [eax + eax]
push ebx
mov ebx, dword [esp + 0x1c]
mov ecx, edx
push ebp
mov ebp, ecx
mov edi, ebx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, ebp
pop ebp
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov word [edx + ebx], 0
pop ebx
pop edi
pop esi
ret

Function at 0x10030780
Capabilities:
Create thread
Resume thread

Disassembly:
push esi
mov esi, ecx
mov eax, dword [esi + 8]
test eax, eax
jne 0x100307d0
lea eax, [esi + 4]
push eax
push 4
push esi
push 0x100309a0
push 0
push 0
call fcn.10009e05
add esp, 0x18
mov dword [esi + 8], eax
test eax, eax
je 0x100307d0
mov ecx, dword [esi + 0x1c]
mov dword [esi + 0xc], 1
test ecx, ecx
je 0x100307bf
push ecx
push eax
call dword [sym.imp.KERNEL32.dll_SetThreadPriority]
mov ecx, dword [esi + 8]
push ecx
call dword [sym.imp.KERNEL32.dll_ResumeThread]
mov eax, 1
pop esi
ret
xor eax, eax
pop esi
ret
Function at 0x10030820
Capabilities:
Terminate thread

Disassembly:
sub esp, 8
push esi
mov esi, ecx
mov eax, dword [esi + 8]
test eax, eax
jne 0x10030834
xor eax, eax
pop esi
add esp, 8
ret
mov eax, dword [esi + 0x10]
push eax
call dword [sym.imp.KERNEL32.dll_SetEvent]
mov ecx, dword [esi + 0x14]
mov eax, dword [esi + 0x18]
mov edx, dword [esi + 8]
mov dword [esp + 4], ecx
push eax
lea ecx, [esp + 8]
push 0
push ecx
push 2
mov dword [esp + 0x18], edx
call dword [sym.imp.KERNEL32.dll_WaitForMultipleObjects]
mov edx, dword [esi + 8]
push 0x3e8
push edx
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
cmp eax, 0x102
jne 0x10030881
mov eax, dword [esi + 8]
push 0
push eax
call dword [sym.imp.KERNEL32.dll_TerminateThread]
mov ecx, dword [esi + 0x10]
push edi
mov edi, dword [sym.imp.KERNEL32.dll_ResetEvent]
push ecx
call edi
mov edx, dword [esi + 0x14]
push edx
call edi
mov dword [esi + 0xc], 0
pop edi
mov eax, 1
pop esi
add esp, 8
ret

Function at 0x10030d40
Capabilities:
Query or enumerate registry value

Disassembly:
sub esp, 8
mov eax, dword [ecx + 4]
push ebx
push ebp
push esi
push edi
mov edi, dword [ecx]
mov ecx, dword [esp + 0x1c]
mov dword [esp + 0x10], 0
test ecx, ecx
je 0x10030d81
lea edx, [esp + 0x1c]
or eax, 0x20019
push edx
push eax
push 0
push ecx
push edi
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
mov esi, eax
mov eax, dword [esp + 0x1c]
neg esi
sbb esi, esi
not esi
and esi, eax
jmp 0x10030d83
mov esi, edi
test esi, esi
je 0x10030de8
mov ebx, dword [esp + 0x20]
mov ebp, dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
lea eax, [esp + 0x14]
lea ecx, [esp + 0x20]
push eax
push 0
push ecx
push 0
push ebx
push esi
call ebp
test eax, eax
jne 0x10030ddd
cmp dword [esp + 0x20], 4
jne 0x10030ddd
lea edx, [esp + 0x14]
lea eax, [esp + 0x10]
push edx
push eax
push 0
push 0
push ebx
push esi
call ebp
test eax, eax
jne 0x10030ddd
cmp esi, edi
je 0x10030dcf
push esi
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov eax, dword [esp + 0x10]
pop edi
pop esi
pop ebp
pop ebx
add esp, 8
ret 0xc
cmp esi, edi
je 0x10030de8
push esi
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov eax, dword [esp + 0x24]
pop edi
pop esi
pop ebp
pop ebx
add esp, 8
ret 0xc

Function at 0x10031070
Capabilities:
Query or enumerate registry value

Disassembly:
push ecx
push ebx
push ebp
push esi
mov esi, dword [ecx]
test esi, esi
push edi
je 0x100310e4
mov ebx, dword [esp + 0x18]
mov ebp, dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
lea eax, [esp + 0x18]
lea ecx, [esp + 0x10]
push eax
push 0
push ecx
push 0
push ebx
push esi
call ebp
test eax, eax
jne 0x100310e4
cmp dword [esp + 0x10], 3
jne 0x100310e4
mov edx, dword [esp + 0x18]
push edx
call fcn.10073bfa
mov edi, eax
add esp, 4
test edi, edi
je 0x100310e4
lea eax, [esp + 0x18]
push eax
push edi
push 0
push 0
push ebx
push esi
call ebp
test eax, eax
jne 0x100310db
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x18]
mov eax, edi
pop edi
pop esi
pop ebp
mov dword [ecx], edx
pop ebx
pop ecx
ret 8
push edi
call fcn.10073c23
add esp, 4
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
pop ecx
ret 8
Function at 0x100310f0
Capabilities:
Query or enumerate registry value

Disassembly:
push 0xffffffffffffffff
push 0x1008489f
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x10
mov eax, dword [0x100956f0]
push ebx
push ebp
push esi
push edi
mov dword [esp + 0x1c], 0
mov dword [esp + 0x10], eax
mov eax, dword [ecx + 4]
mov edi, dword [ecx]
mov ecx, dword [esp + 0x34]
mov dword [esp + 0x28], 1
test ecx, ecx
mov dword [esp + 0x14], edi
je 0x1003115b
lea edx, [esp + 0x18]
or eax, 0x20019
push edx
push eax
push 0
push ecx
push edi
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
mov esi, eax
mov eax, dword [esp + 0x18]
neg esi
sbb esi, esi
not esi
and esi, eax
jmp 0x1003115d
mov esi, edi
test esi, esi
je 0x10031227
mov ebx, dword [esp + 0x38]
lea eax, [esp + 0x34]
push eax
lea ecx, [esp + 0x3c]
push 0
push ecx
push 0
push ebx
push esi
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
test eax, eax
jne 0x1003121c
mov eax, dword [esp + 0x38]
cmp eax, 1
je 0x1003119f
cmp eax, 2
je 0x1003119f
cmp eax, 6
je 0x1003119f
cmp eax, 7
jne 0x1003121c
mov edx, dword [esp + 0x34]
add edx, 2
push edx
call fcn.10073bfa
mov ebp, eax
mov eax, dword [esp + 0x38]
mov edi, ebp
add esp, 4
lea ecx, [eax + 2]
xor eax, eax
mov edx, ecx
shr ecx, 2
rep stosd dword es:[edi], eax
mov ecx, edx
and ecx, 3
rep stosb byte es:[edi], al
lea eax, [esp + 0x34]
push eax
push ebp
push 0
push 0
push ebx
push esi
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
test eax, eax
push ebp
jne 0x10031202
lea ecx, [esp + 0x14]
call fcn.10074048
cmp esi, dword [esp + 0x14]
je 0x100311f7
push esi
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
push ebp
call fcn.10073c23
add esp, 4
jmp 0x10031239
call fcn.10073c23
add esp, 4
lea ecx, [esp + 0x10]
push 0x1009c018
call fcn.10074048
mov edi, dword [esp + 0x14]
cmp esi, edi
je 0x10031227
push esi
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov eax, dword [esp + 0x3c]
test eax, eax
je 0x10031239
push eax
lea ecx, [esp + 0x14]
call fcn.10074048
mov esi, dword [esp + 0x30]
lea ecx, [esp + 0x10]
push ecx
mov ecx, esi
call fcn.10073c34
mov dword [esp + 0x1c], 1
lea ecx, [esp + 0x10]
mov byte [esp + 0x28], 0
call fcn.10073ebf
mov ecx, dword [esp + 0x20]
mov eax, esi
pop edi
pop esi
pop ebp
pop ebx
mov dword fs:[0], ecx
add esp, 0x1c
ret 0x10