joyce8/EMBER2024-capa huggingface dataset:
Function at 0x55438c
Capabilities:
Access peb ldr_data
Get kernel32 base address

Disassembly:
push ebp
mov ebp, esp
mov ecx, 8
push 0
push 0
dec ecx
jne 0x554394
push ecx
push ebx
push esi
push edi
mov ebx, eax
xor eax, eax
push ebp
push 0x554586
push dword fs:[eax]
mov dword fs:[eax], esp
mov esi, dword [ebx + 8]
lea ecx, [ebp - 0xc]
mov edx, 0x55459c
mov eax, esi
call fcn.0055211c
mov edx, dword [ebp - 0xc]
lea eax, [ebx + 0xc]
call fcn.00404998
lea ecx, [ebp - 0x10]
mov edx, 0x5545b0
mov eax, esi
call fcn.0055211c
mov edx, dword [ebp - 0x10]
lea eax, [ebx + 0x28]
call fcn.00404998
lea ecx, [ebp - 0x14]
mov edx, 0x5545c8
mov eax, esi
call fcn.0055211c
mov edx, dword [ebp - 0x14]
lea eax, [ebx + 0x10]
call fcn.00404998
lea ecx, [ebp - 0x18]
mov edx, 0x5545e4
mov eax, esi
call fcn.0055211c
mov edx, dword [ebp - 0x18]
lea eax, [ebx + 0x14]
call fcn.00404998
lea ecx, [ebp - 0x1c]
mov edx, 0x554600
mov eax, esi
call fcn.0055211c
mov edx, dword [ebp - 0x1c]
lea eax, [ebx + 0x24]
call fcn.00404998
lea ecx, [ebp - 0x24]
mov edx, 0x554618
mov eax, esi
call fcn.0055211c
mov eax, dword [ebp - 0x24]
lea edx, [ebp - 0x20]
call fcn.0040955c
mov eax, dword [ebp - 0x20]
or edx, 0xffffffff
call fcn.004099c4
mov edi, eax
mov dword [ebx + 0x18], edi
test edi, edi
setge al
mov byte [ebx + 0x4c], al
lea ecx, [ebp - 0x28]
mov edx, 0x554630
mov eax, esi
call fcn.0055211c
mov eax, dword [ebp - 0x28]
call fcn.00489bec
fstp qword [ebx + 0x30]
wait
lea ecx, [ebp - 0x2c]
mov edx, 0x554640
mov eax, esi
call fcn.0055211c
mov eax, dword [ebp - 0x2c]
call fcn.00489bec
fstp qword [ebx + 0x40]
wait
lea ecx, [ebp - 0x30]
mov edx, 0x554658
mov eax, esi
call fcn.0055211c
mov eax, dword [ebp - 0x30]
or edx, 0xffffffff
call fcn.004099c4
inc eax
je 0x554529
lea ecx, [ebp - 0x34]
mov edx, 0x554658
mov eax, esi
call fcn.0055211c
mov eax, dword [ebp - 0x34]
call fcn.00409988
mov edi, eax
mov eax, edi
mov ecx, 0xe10
cdq
idiv ecx
mov dword [ebp - 8], eax
mov eax, edi
mov ecx, 0xe10
cdq
idiv ecx
mov ecx, edx
mov eax, ecx
push ecx
mov ecx, 0x3c
cdq
idiv ecx
pop ecx
mov dword [ebp - 4], eax
mov eax, ecx
mov ecx, 0x3c
cdq
idiv ecx
mov edi, edx
push 0
mov ecx, edi
mov dx, word [ebp - 4]
mov ax, word [ebp - 8]
call fcn.0040af8c
fstp qword [ebp - 0x3c]
wait
call fcn.0040b2f0
fadd qword [ebp - 0x3c]
fstp qword [ebx + 0x38]
wait
jmp 0x554544
lea ecx, [ebp - 0x40]
mov edx, 0x554658
mov eax, esi
call fcn.0055211c
mov eax, dword [ebp - 0x40]
call fcn.00489bec
fstp qword [ebx + 0x38]
wait
lea ecx, [ebp - 0x44]
mov edx, 0x554668
mov eax, esi
call fcn.0055211c
mov edx, dword [ebp - 0x44]
lea eax, [ebx + 0x48]
call fcn.00404998
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x55458d
lea eax, [ebp - 0x44]
mov edx, 2
call fcn.00404968
lea eax, [ebp - 0x34]
mov edx, 0xb
call fcn.00404968
ret
Function at 0x401e20
Capabilities:
Get thread local storage value

Disassembly:
push esi
push ebx
sub esp, 0x14
mov dword [esp], 0x407044
call sym._EnterCriticalSection_4
mov ebx, dword [0x40703c]
sub esp, 4
test ebx, ebx
je 0x401e6b
nop
mov eax, dword [ebx]
mov dword [esp], eax
call sym._TlsGetValue_4
sub esp, 4
mov esi, eax
call sym._GetLastError_0
test eax, eax
jne 0x401e64
test esi, esi
je 0x401e64
mov eax, dword [ebx + 4]
mov dword [esp], esi
call eax
mov ebx, dword [ebx + 8]
test ebx, ebx
jne 0x401e40
mov dword [esp], 0x407044
call sym._LeaveCriticalSection_4
sub esp, 4
add esp, 0x14
pop ebx
pop esi
ret

Function at 0x402050
Capabilities:
Write file on windows

Disassembly:
push esi
push ebx
sub esp, 0x14
mov eax, dword [sym.imp.msvcrt.dll__iob]
mov dword [esp + 8], 0x17
mov dword [esp + 4], 1
lea esi, [esp + 0x24]
mov dword [esp], str.Mingw_runtime_failure:_n
lea ebx, [eax + 0x40]
mov dword [esp + 0xc], ebx
call sym._fwrite
mov eax, dword [esp + 0x20]
mov dword [esp + 8], esi
mov dword [esp], ebx
mov dword [esp + 4], eax
call sym._vfprintf
call sym._abort
lea esi, [esi]

Function at 0x4020a0
Capabilities:
Allocate or change rwx memory

Disassembly:
push ebp
push edi
mov edi, ecx
push esi
push ebx
mov ebx, eax
mov esi, edx
sub esp, 0x4c
lea eax, [esp + 0x24]
mov dword [esp + 8], 0x1c
mov dword [esp], ebx
mov dword [esp + 4], eax
call sym._VirtualQuery_12
sub esp, 0xc
test eax, eax
je 0x402178
mov eax, dword [esp + 0x38]
cmp eax, 0x40
je 0x4020de
cmp eax, 4
jne 0x402100
mov dword [esp + 8], edi
mov dword [esp + 4], esi
mov dword [esp], ebx
call sym._memcpy
add esp, 0x4c
pop ebx
pop esi
pop edi
pop ebp
ret
mov eax, dword [esp + 0x30]
lea ebp, [esp + 0x20]
mov dword [esp + 8], 0x40
mov dword [esp + 0xc], ebp
mov dword [esp + 4], eax
mov eax, dword [esp + 0x24]
mov dword [esp], eax
call sym._VirtualProtect_16
sub esp, 0x10
mov edx, dword [esp + 0x38]
mov dword [esp + 8], edi
mov dword [esp + 4], esi
mov dword [esp], ebx
mov dword [esp + 0x1c], edx
call sym._memcpy
mov edx, dword [esp + 0x1c]
cmp edx, 0x40
je 0x4020ee
cmp edx, 4
je 0x4020ee
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 sym._VirtualProtect_16
sub esp, 0x10
add esp, 0x4c
pop ebx
pop esi
pop edi
pop ebp
ret
mov dword [esp + 8], ebx
mov dword [esp + 4], 0x1c
mov dword [esp], str.__VirtualQuery_failed_for__d_bytes_at_address__p
call fcn.00402050
Function at 0x402080
Capabilities:
Query or enumerate registry value

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x567058
mov eax, dword fs:[0]
push eax
sub esp, 0x210
mov eax, dword [0x5c4fe8]
xor eax, ebp
mov dword [ebp - 0x10], eax
push esi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov esi, ecx
mov dword [ebp - 0x218], esi
lea ecx, [ebp - 0x214]
mov dword [ebp - 4], 2
cmp dword [ebp + 0x1c], 8
lea eax, [ebp + 8]
push ecx
cmovae eax, dword [ebp + 8]
push 1
push 0
push eax
push reloc.OLEAUT32.dll_SysReAllocString
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
test eax, eax
jne 0x402268
push 0x200
push eax
lea eax, [ebp - 0x210]
push eax
call fcn.005482c0
add esp, 0xc
mov dword [ebp - 0x218], 0
cmp dword [ebp + 0x34], 8
lea ecx, [ebp - 0x21c]
lea eax, [ebp + 0x20]
mov dword [ebp - 0x21c], 0x1ff
cmovae eax, dword [ebp + 0x20]
push ecx
lea ecx, [ebp - 0x210]
push ecx
lea ecx, [ebp - 0x218]
push ecx
push 0
push eax
push dword [ebp - 0x214]
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
test eax, eax
jne 0x402268
mov eax, dword [ebp - 0x214]
test eax, eax
je 0x402160
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov dword [ebp - 0x214], 0
xor eax, eax
mov dword [esi + 0x10], 0
lea ecx, [ebp - 0x210]
mov dword [esi + 0x14], 7
mov word [esi], ax
lea edx, [ecx + 2]
nop dword [eax]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x402180
sub ecx, edx
lea eax, [ebp - 0x210]
sar ecx, 1
push ecx
push eax
mov ecx, esi
call fcn.00403110
mov edx, dword [ebp + 0x1c]
cmp edx, 8
jb 0x4021d8
mov ecx, dword [ebp + 8]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x4021ce
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4022b9
push edx
push ecx
call fcn.00545a1e
add esp, 8
mov edx, dword [ebp + 0x34]
xor eax, eax
mov dword [ebp + 0x18], 0
mov dword [ebp + 0x1c], 7
mov word [ebp + 8], ax
cmp edx, 8
jb 0x402226
mov ecx, dword [ebp + 0x20]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x40221c
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4022be
push edx
push ecx
call fcn.00545a1e
add esp, 8
mov edx, dword [ebp + 0x4c]
xor eax, eax
mov dword [ebp + 0x30], 0
mov dword [ebp + 0x34], 7
mov word [ebp + 0x20], ax
cmp edx, 8
jb 0x40229d
mov ecx, dword [ebp + 0x38]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x402293
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4022c3
jmp 0x402293
mov eax, dword [ebp - 0x214]
test eax, eax
je 0x402283
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov dword [ebp - 0x214], 0
lea eax, [ebp + 0x38]
mov ecx, esi
push eax
call fcn.00401fa0
jmp 0x40219e
push edx
push ecx
call fcn.00545a1e
add esp, 8
mov eax, esi
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop esi
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.00545a0d
mov esp, ebp
pop ebp
ret
call fcn.0054bd65
call fcn.0054bd65
call fcn.0054bd65
int3
Function at 0x4047e0
Capabilities:
Extract resource via kernel32 functions

Disassembly:
push ebp
mov ebp, esp
push ebx
mov ebx, dword [ebp + 8]
push edi
mov edi, dword [ebp + 0xc]
mov eax, edi
shr eax, 4
inc eax
push 6
movzx eax, ax
push eax
push ebx
call dword [sym.imp.KERNEL32.dll_FindResourceW]
mov dword [ebp + 0xc], eax
test eax, eax
jne 0x404809
pop edi
pop ebx
pop ebp
ret
push esi
push eax
push ebx
call dword [sym.imp.KERNEL32.dll_LoadResource]
test eax, eax
jne 0x40481f
xor esi, esi
mov eax, esi
pop esi
pop edi
pop ebx
pop ebp
ret
push eax
call dword [sym.imp.KERNEL32.dll_LockResource]
mov esi, eax
test esi, esi
je 0x404816
push dword [ebp + 0xc]
push ebx
call dword [sym.imp.KERNEL32.dll_SizeofResource]
lea ecx, [esi + eax]
and edi, 0xf
jbe 0x404852
nop
cmp esi, ecx
jae 0x404816
movzx eax, word [esi]
lea esi, [esi + eax*2]
add esi, 2
sub edi, 1
jne 0x404840
cmp esi, ecx
jae 0x404816
xor eax, eax
cmp word [esi], ax
cmove esi, eax
mov eax, esi
pop esi
pop edi
pop ebx
pop ebp
ret
Function at 0x404940
Capabilities:
Extract resource via kernel32 functions

Disassembly:
push ebp
mov ebp, esp
push ebx
push esi
mov esi, dword [ebp + 8]
mov ebx, ecx
push edi
mov edi, dword [ebp + 0xc]
mov eax, edi
shr eax, 4
inc eax
push 6
movzx eax, ax
push eax
push esi
call dword [sym.imp.KERNEL32.dll_FindResourceW]
mov dword [ebp + 0xc], eax
test eax, eax
je 0x404a2e
push eax
push esi
call dword [sym.imp.KERNEL32.dll_LoadResource]
test eax, eax
je 0x404a2e
push eax
call dword [sym.imp.KERNEL32.dll_LockResource]
mov esi, eax
test esi, esi
je 0x404a2e
push dword [ebp + 0xc]
push dword [ebp + 8]
call dword [sym.imp.KERNEL32.dll_SizeofResource]
lea ecx, [esi + eax]
and edi, 0xf
jbe 0x4049b7
cmp esi, ecx
jae 0x404a2e
movzx eax, word [esi]
lea esi, [esi + eax*2]
add esi, 2
sub edi, 1
jne 0x4049a1
cmp esi, ecx
jae 0x404a2e
movzx eax, word [esi]
test ax, ax
je 0x404a2e
mov edx, dword [ebx]
mov edi, eax
mov dword [ebp + 8], eax
mov ecx, 1
mov eax, dword [edx - 8]
sub ecx, dword [edx - 4]
sub eax, edi
or ecx, eax
jge 0x4049ea
push edi
mov ecx, ebx
call fcn.00404ff0
mov edx, dword [ebx]
movzx eax, word [esi]
jmp 0x4049ed
mov eax, dword [ebp + 8]
movzx ecx, ax
lea eax, [esi + 2]
push ecx
push eax
push edi
push edx
call fcn.0054e327
add esp, 0x10
cmp eax, 0x50
ja case.0x404a0b.1
movzx eax, byte [eax + 0x404a5c]
jmp dword [eax*4 + 0x404a4c]
mov ecx, dword [ebx]
cmp edi, dword [ecx - 8]
jg 0x404a41
mov dword [ecx - 0xc], edi
xor edx, edx
mov ecx, dword [ebx]
lea eax, [edx + 1]
mov word [ecx + edi*2], dx
pop edi
pop esi
pop ebx
pop ebp
ret 8
pop edi
pop esi
xor eax, eax
pop ebx
pop ebp
ret 8
call fcn.004071a7
call fcn.0040718d
push 0x80070057
call fcn.00405250
nop
adc cl, byte [edx + 0x40]
add byte [edi], dh
dec edx
inc eax
add byte [edx + ecx*2], bh
inc eax
add byte [edx + ecx*2], bh
inc eax
add byte [eax], al
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ecx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [edx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [edx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [eax]
int3
Function at 0x404ab0
Capabilities:
Extract resource via kernel32 functions

Disassembly:
push ebp
mov ebp, esp
push ecx
push ebx
push esi
push edi
mov edi, dword [ebp + 8]
mov ebx, ecx
push edi
call fcn.00407854
mov esi, eax
mov dword [ebp - 4], esi
test esi, esi
je 0x404bb1
mov eax, edi
shr eax, 4
inc eax
push 6
movzx eax, ax
push eax
push esi
call dword [sym.imp.KERNEL32.dll_FindResourceW]
mov dword [ebp + 8], eax
test eax, eax
je 0x404bb1
push eax
push esi
call dword [sym.imp.KERNEL32.dll_LoadResource]
test eax, eax
je 0x404bb1
push eax
call dword [sym.imp.KERNEL32.dll_LockResource]
mov esi, eax
test esi, esi
je 0x404bb1
push dword [ebp + 8]
push dword [ebp - 4]
call dword [sym.imp.KERNEL32.dll_SizeofResource]
lea ecx, [esi + eax]
and edi, 0xf
jbe 0x404b38
cmp esi, ecx
jae 0x404bb1
movzx eax, word [esi]
lea esi, [esi + eax*2]
add esi, 2
sub edi, 1
jne 0x404b22
cmp esi, ecx
jae 0x404bb1
movzx eax, word [esi]
test ax, ax
je 0x404bb1
mov edx, dword [ebx]
mov edi, eax
mov dword [ebp + 8], eax
mov ecx, 1
mov eax, dword [edx - 8]
sub ecx, dword [edx - 4]
sub eax, edi
or ecx, eax
jge 0x404b6b
push edi
mov ecx, ebx
call fcn.00404ff0
mov edx, dword [ebx]
movzx eax, word [esi]
jmp 0x404b6e
mov eax, dword [ebp + 8]
movzx ecx, ax
lea eax, [esi + 2]
push ecx
push eax
push edi
push edx
call fcn.0054e327
add esp, 0x10
cmp eax, 0x50
ja case.0x404b8c.1
movzx eax, byte [eax + 0x404be0]
jmp dword [eax*4 + 0x404bd0]
mov eax, dword [ebx]
cmp edi, dword [eax - 8]
jg 0x404bc6
mov dword [eax - 0xc], edi
xor ecx, ecx
mov eax, dword [ebx]
mov word [eax + edi*2], cx
lea eax, [ecx + 1]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
pop edi
pop esi
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret 4
call fcn.004071a7
call fcn.0040718d
push 0x80070057
call fcn.00405250
xchg ebx, eax
dec ebx
inc eax
add byte [ebx + ecx*2 + 0x4bc10040], bh
inc eax
add cl, al
dec ebx
inc eax
add byte [eax], al
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ecx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [edx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [edx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [eax]
int3
Function at 0x404c40
Capabilities:
Extract resource via kernel32 functions

Disassembly:
push ebp
mov ebp, esp
push ecx
mov eax, dword [ebp + 8]
push ebx
mov ebx, ecx
xor cl, cl
test eax, eax
je 0x404d4a
test eax, 0xffff0000
jne 0x404d4a
push esi
push edi
movzx edi, ax
push edi
call fcn.00407854
mov esi, eax
mov dword [ebp - 4], esi
test esi, esi
je 0x404d46
mov eax, edi
shr eax, 4
push 6
inc eax
push eax
push esi
call dword [sym.imp.KERNEL32.dll_FindResourceW]
mov dword [ebp + 8], eax
test eax, eax
je 0x404d46
push eax
push esi
call dword [sym.imp.KERNEL32.dll_LoadResource]
test eax, eax
je 0x404d46
push eax
call dword [sym.imp.KERNEL32.dll_LockResource]
mov esi, eax
test esi, esi
je 0x404d46
push dword [ebp + 8]
push dword [ebp - 4]
call dword [sym.imp.KERNEL32.dll_SizeofResource]
lea ecx, [esi + eax]
and edi, 0xf
jbe 0x404cd9
cmp esi, ecx
jae 0x404d46
movzx eax, word [esi]
lea esi, [esi + eax*2]
add esi, 2
sub edi, 1
jne 0x404cc7
cmp esi, ecx
jae 0x404d46
movzx eax, word [esi]
test ax, ax
je 0x404d46
mov edx, dword [ebx]
mov edi, eax
mov dword [ebp + 8], eax
mov ecx, 1
mov eax, dword [edx - 8]
sub ecx, dword [edx - 4]
sub eax, edi
or ecx, eax
jge 0x404d0c
push edi
mov ecx, ebx
call fcn.00404ff0
mov edx, dword [ebx]
movzx eax, word [esi]
jmp 0x404d0f
mov eax, dword [ebp + 8]
movzx ecx, ax
lea eax, [esi + 2]
push ecx
push eax
push edi
push edx
call fcn.0054e327
add esp, 0x10
cmp eax, 0x50
ja case.0x404d2d.1
movzx eax, byte [eax + 0x404d78]
jmp dword [eax*4 + 0x404d68]
mov eax, dword [ebx]
cmp edi, dword [eax - 8]
jg 0x404d5d
mov dword [eax - 0xc], edi
xor ecx, ecx
mov eax, dword [ebx]
mov word [eax + edi*2], cx
pop edi
mov cl, 1
pop esi
mov al, cl
pop ebx
mov esp, ebp
pop ebp
ret 4
call fcn.004071a7
call fcn.0040718d
push 0x80070057
call fcn.00405250
nop
xor al, 0x4d
inc eax
add byte [ebx + 0x4d], dl
inc eax
add byte [eax + 0x4d], bl
inc eax
add byte [eax + 0x4d], bl
inc eax
add byte [eax], al
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ecx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [edx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [edx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [eax]
int3
Function at 0x406090
Capabilities:
Create directory
Set file attributes

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x41c
mov eax, dword [0x5c4fe8]
xor eax, esp
mov dword [esp + 0x418], eax
push ebx
push esi
push edi
mov esi, ecx
call fcn.00405fc0
test eax, eax
je 0x4060d2
mov eax, 1
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x418]
xor ecx, esp
call fcn.00545a0d
mov esp, ebp
pop ebp
ret
push 0x103
push esi
lea eax, [esp + 0x220]
push 0x104
push eax
call fcn.0054e897
lea ecx, [esp + 0x228]
add esp, 0x10
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x4060f7
sub ecx, edx
mov edx, 0x2f2f
sar ecx, 1
movzx eax, word [esp + ecx*2 + 0x216]
cmp ax, dx
je 0x40611d
cmp eax, 0x2f
jne 0x40612a
mov eax, 0x2f30
mov word [esp + ecx*2 + 0x216], ax
lea ebx, [esp + 0x218]
lea ecx, [ebx + 2]
mov ax, word [ebx]
add ebx, 2
test ax, ax
jne 0x406134
push 0x100
lea eax, [esp + 0x1c]
sub ebx, ecx
push 0
push eax
sar ebx, 1
call fcn.005482c0
xor esi, esi
add esp, 0xc
mov dword [esp + 0x14], esi
test ebx, ebx
jle 0x40623f
mov edx, dword [sym.imp.KERNEL32.dll_CreateDirectoryW]
xor eax, eax
mov edi, dword [sym.imp.KERNEL32.dll_SetFileAttributesW]
mov word [esp + 0x12], ax
nop dword [eax + eax]
movzx eax, word [esp + esi*2 + 0x218]
mov ecx, 0x2f2f
cmp ax, cx
jne 0x4061b9
push 0
lea eax, [esp + 0x1c]
push eax
call edx
test eax, eax
je 0x4061ab
push 0x80
lea eax, [esp + 0x1c]
push eax
call edi
mov ax, word [esp + esi*2 + 0x218]
mov edx, dword [sym.imp.KERNEL32.dll_CreateDirectoryW]
mov word [esp + 0x10], ax
lea eax, [esp + 0x10]
mov esi, eax
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x4061c4
lea edi, [esp + 0x18]
sub eax, esi
add edi, 0xfffffffe
nop dword [eax + eax]
mov cx, word [edi + 2]
add edi, 2
test cx, cx
jne 0x4061e0
mov ecx, eax
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
lea eax, [ebx - 1]
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov esi, dword [esp + 0x14]
cmp esi, eax
jne 0x406226
push 0
lea eax, [esp + 0x1c]
push eax
call edx
mov edi, dword [sym.imp.KERNEL32.dll_SetFileAttributesW]
test eax, eax
je 0x40622c
push 0x80
lea eax, [esp + 0x1c]
push eax
call edi
jmp 0x40622c
mov edi, dword [sym.imp.KERNEL32.dll_SetFileAttributesW]
mov edx, dword [sym.imp.KERNEL32.dll_CreateDirectoryW]
inc esi
mov dword [esp + 0x14], esi
cmp esi, ebx
jl 0x406180
lea ecx, [esp + 0x18]
call fcn.00405fc0
mov ecx, dword [esp + 0x424]
neg eax
pop edi
pop esi
sbb eax, eax
pop ebx
xor ecx, esp
neg eax
call fcn.00545a0d
mov esp, ebp
pop ebp
ret
Function at 0x406360
Capabilities:
Query or enumerate registry value

Disassembly:
push ebp
mov ebp, esp
push esi
mov esi, dword [ebp + 0xc]
push edi
mov edi, dword [ebp + 0x10]
mov eax, dword [edi]
add eax, eax
mov dword [edi], 0
mov dword [ebp + 0x10], eax
lea eax, [ebp + 0x10]
push eax
push esi
lea eax, [ebp + 0xc]
push eax
push 0
push dword [ebp + 8]
push dword [ecx]
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
test eax, eax
jne 0x4063d1
mov eax, dword [ebp + 0xc]
cmp eax, 1
je 0x40639f
cmp eax, 2
jne 0x4063bb
mov ecx, dword [ebp + 0x10]
test esi, esi
je 0x4063cb
test ecx, ecx
je 0x4063c6
test cl, 1
jne 0x4063bb
mov eax, ecx
shr eax, 1
cmp word [esi + eax*2 - 2], 0
je 0x4063cb
pop edi
mov eax, 0xd
pop esi
pop ebp
ret 0xc
xor eax, eax
mov word [esi], ax
shr ecx, 1
xor eax, eax
mov dword [edi], ecx
pop edi
pop esi
pop ebp
ret 0xc
Function at 0x407578
Capabilities:
Encode data using xor
Hash data using fnv

Disassembly:
push ebp
mov ebp, esp
push ecx
push ecx
push ebx
push esi
mov esi, dword [ebp + 8]
push edi
push 0xffffffffffffffff
push esi
call fcn.0040c09f
test eax, eax
je 0x4075cf
push esi
mov ebx, 0x811c9dc5
xor edi, edi
call fcn.0054e4f7
xor edx, edx
mov dword [ebp - 4], 0xa
pop ecx
mov ecx, eax
div dword [ebp - 4]
inc eax
test ecx, ecx
je 0x4075c4
mov edx, ecx
movzx ecx, word [esi + edi*2]
add edi, eax
imul ebx, ebx, 0x1000193
xor ebx, ecx
cmp edi, edx
jb 0x4075b2
pop edi
pop esi
mov eax, ebx
pop ebx
mov esp, ebp
pop ebp
ret 4
call fcn.0040718d
int3

Function at 0x40ae41
Capabilities:
Get thread local storage value
Set thread local storage value

Disassembly:
push 0x10
mov eax, 0x5678be
call fcn.0054642a
mov esi, ecx
mov dword [ebp - 0x14], esi
lea edi, [esi + 0x1c]
push edi
mov dword [ebp - 0x18], edi
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov ebx, dword [ebp + 8]
test ebx, ebx
jle 0x40af49
cmp ebx, dword [esi + 0xc]
jge 0x40af49
push dword [esi]
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov edi, eax
test edi, edi
je 0x40ae98
cmp ebx, dword [edi + 8]
jl 0x40af32
cmp dword [ebp + 0xc], 0
je 0x40af32
xor ebx, ebx
jmp 0x40aecf
xor ebx, ebx
push 0x10
mov dword [ebp - 4], ebx
call fcn.0040aa54
mov edi, eax
test edi, edi
je 0x40aeb2
mov dword [edi], vtable.CThreadData.0
jmp 0x40aeb4
mov edi, ebx
or dword [ebp - 4], 0xffffffff
lea ecx, [esi + 0x14]
push edi
mov dword [edi + 8], ebx
mov dword [edi + 0xc], ebx
call fcn.0040ad6d
mov ecx, dword [esi + 0x14]
mov dword [eax], ecx
mov dword [esi + 0x14], edi
mov eax, dword [ebp - 0x14]
mov esi, dword [edi + 0xc]
push 4
push dword [eax + 0xc]
call fcn.00407550
pop ecx
pop ecx
test esi, esi
jne 0x40aeef
push eax
push ebx
call dword [sym.imp.KERNEL32.dll_LocalAlloc]
jmp 0x40aefb
push 2
push eax
push dword [edi + 0xc]
call dword [sym.imp.KERNEL32.dll_LocalReAlloc]
mov edx, eax
test edx, edx
je 0x40af58
mov esi, dword [ebp - 0x14]
mov ecx, dword [edi + 8]
mov dword [edi + 0xc], edx
mov eax, dword [esi + 0xc]
sub eax, ecx
shl eax, 2
push eax
lea eax, [edx + ecx*4]
push ebx
push eax
call fcn.005482c0
mov eax, dword [esi + 0xc]
add esp, 0xc
mov dword [edi + 8], eax
push edi
push dword [esi]
call dword [sym.imp.KERNEL32.dll_TlsSetValue]
mov ebx, dword [ebp + 8]
mov ecx, dword [edi + 0xc]
test ecx, ecx
je 0x40af44
cmp ebx, dword [edi + 8]
jge 0x40af44
mov eax, dword [ebp + 0xc]
mov dword [ecx + ebx*4], eax
push dword [ebp - 0x18]
jmp 0x40af4a
push edi
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
call fcn.00546388
ret 8
push dword [ebp - 0x18]
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
call fcn.004071a7
mov eax, dword [ebp - 0x14]
add eax, 0x1c
push eax
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
xor ebx, ebx
push ebx
push ebx
call fcn.0054841a
int3