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

Disassembly:
push 0xffffffffffffffff
push 0x4dc1d7
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x14
mov eax, dword [0x5b3cec]
push esi
push edi
mov esi, ecx
mov dword [esp + 0x18], 0
mov dword [esp + 0xc], eax
mov ecx, dword [esi + 0xac]
lea edx, [esp + 0xc]
push ecx
push 0x5b1b0c
push edx
mov dword [esp + 0x30], 1
call fcn.004c70f0
mov eax, dword [0x5b3cec]
add esp, 0xc
mov dword [esp + 8], eax
lea ecx, [esp + 0xc]
lea edx, [esp + 0x14]
push ecx
push 0x5b1b08
push edx
mov byte [esp + 0x30], 2
call fcn.004ca62b
push 0x5b1b04
push eax
lea eax, [esp + 0x18]
mov byte [esp + 0x2c], 3
push eax
call fcn.004ca5b7
mov ecx, dword [esp + 0x34]
mov edx, dword [esp + 0x30]
mov edi, dword [eax]
push ecx
push edx
mov ecx, esi
mov byte [esp + 0x2c], 4
call fcn.0049c5b0
sub esp, 8
lea eax, [esp + 0x10]
fstp qword [esp]
push edi
push eax
call fcn.004c70f0
add esp, 0x10
lea ecx, [esp + 0x10]
mov byte [esp + 0x24], 3
call fcn.004ca36e
lea ecx, [esp + 0x14]
mov byte [esp + 0x24], 2
call fcn.004ca36e
mov esi, dword [esp + 0x2c]
lea ecx, [esp + 8]
push ecx
mov ecx, esi
call fcn.004ca0e3
mov dword [esp + 0x18], 1
lea ecx, [esp + 8]
mov byte [esp + 0x24], 1
call fcn.004ca36e
lea ecx, [esp + 0xc]
mov byte [esp + 0x24], 0
call fcn.004ca36e
mov ecx, dword [esp + 0x1c]
mov eax, esi
pop edi
pop esi
mov dword fs:[0], ecx
add esp, 0x20
ret 0xc
Function at 0x49c730
Capabilities:
Access peb ldr_data

Disassembly:
push 0xffffffffffffffff
push 0x4dc200
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x58
push ebx
push ebp
push esi
xor esi, esi
mov ebx, ecx
mov dword [esp + 0x1c], esi
mov dword [esp + 0x18], 0x58bd0c
mov ebp, dword [esp + 0x74]
mov dword [esp + 0x6c], esi
mov eax, dword [ebp + 8]
push eax
call dword [sym.imp.GDI32.dll_GetTextColor]
mov edx, dword [ebp]
mov dword [esp + 0xc], eax
mov eax, dword [ebx + 0x70]
mov ecx, ebp
push eax
call dword [edx + 0x30]
cmp dword [ebx + 0x68], esi
je 0x49c8af
mov ecx, dword [ebp + 8]
push edi
push 6
push ecx
call dword [sym.imp.GDI32.dll_GetCurrentObject]
push eax
call fcn.004d10a2
mov dword [esp + 0x78], eax
mov eax, dword [ebx + 0x6c]
mov ecx, dword [eax + 0x10]
cmp ecx, 0x3c
jne 0x49c7f0
mov dword [esp + 0x14], esi
mov ecx, dword [eax + 0x10]
cmp ecx, esi
jne 0x49c7b7
xor eax, eax
jmp 0x49c7ba
mov eax, dword [eax + 8]
mov edx, dword [eax]
mov ecx, dword [esp + 0x7c]
lea eax, [esp + 0x14]
mov dword [esp + 0x18], edx
push eax
call fcn.004d0da6
mov eax, dword [ebx + 0x6c]
cmp dword [eax + 0x10], esi
je 0x49c7d9
mov esi, dword [eax + 8]
mov ecx, 0xf
lea edi, [esp + 0x2c]
rep movsd dword es:[edi], dword [esi]
mov ecx, dword [esp + 0x18]
xor esi, esi
mov dword [esp + 0x2c], ecx
jmp 0x49c82b
lea edx, [esp + 0x2c]
push edx
push 0x3c
push 0x11
call dword [sym.imp.GDI32.dll_GetStockObject]
push eax
call dword [sym.imp.GDI32.dll_GetObjectA]
mov eax, dword [esp + 0x2c]
lea ecx, [esp + 0x14]
push ecx
mov ecx, dword [esp + 0x80]
mov dword [esp + 0x18], esi
mov dword [esp + 0x1c], eax
call fcn.004d0da6
mov edx, dword [esp + 0x18]
mov dword [esp + 0x2c], edx
lea eax, [esp + 0x2c]
lea ecx, [esp + 0x1c]
push eax
push ecx
call fcn.0041fc80
mov edx, dword [ebp]
add esp, 8
lea eax, [esp + 0x1c]
mov ecx, ebp
push eax
call dword [edx + 0x28]
mov eax, dword [ebx + 0x74]
lea edx, [esp + 0x24]
push edx
mov ecx, dword [eax - 8]
push ecx
push eax
mov eax, dword [ebp + 8]
push eax
call dword [sym.imp.GDI32.dll_GetTextExtentPoint32A]
mov eax, dword [ebx + 0x44]
mov edx, dword [esp + 0x24]
mov ecx, dword [ebx + 0x74]
sub eax, edx
cdq
mov edi, dword [ebp]
sub eax, edx
mov edx, dword [ecx - 8]
push edx
push ecx
sar eax, 1
push 0x14
push eax
mov ecx, ebp
call dword [edi + 0x5c]
mov ecx, dword [ebx + 0x44]
mov edx, dword [esp + 0x28]
mov dword [ebx + 0x24], ecx
mov ecx, dword [esp + 0x78]
add edx, 0x14
mov dword [ebx + 0x20], esi
mov dword [ebx + 0x1c], esi
mov dword [ebx + 0x28], edx
mov eax, dword [ebp]
push ecx
mov ecx, ebp
call dword [eax + 0x28]
lea ecx, [esp + 0x1c]
call fcn.004d110e
pop edi
mov eax, dword [esp + 0xc]
mov edx, dword [ebp]
push eax
mov ecx, ebp
call dword [edx + 0x30]
mov dword [esp + 0x18], 0x58bd00
lea ecx, [esp + 0x18]
mov dword [esp + 0x6c], 1
call fcn.004d110e
mov ecx, dword [esp + 0x64]
pop esi
pop ebp
mov eax, 1
pop ebx
mov dword fs:[0], ecx
add esp, 0x64
ret 8
Function at 0x49ecb0
Capabilities:
Access peb ldr_data

Disassembly:
push 0xffffffffffffffff
push 0x4dc490
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x58
push ebx
push ebp
push esi
xor esi, esi
mov ebx, ecx
mov dword [esp + 0x1c], esi
mov dword [esp + 0x18], 0x58bd5c
mov ebp, dword [esp + 0x74]
mov dword [esp + 0x6c], esi
mov eax, dword [ebp + 8]
push eax
call dword [sym.imp.GDI32.dll_GetTextColor]
mov edx, dword [ebp]
mov dword [esp + 0xc], eax
mov eax, dword [ebx + 0x54]
mov ecx, ebp
push eax
call dword [edx + 0x30]
cmp dword [ebx + 0x48], esi
je 0x49ee2f
mov ecx, dword [ebp + 8]
push edi
push 6
push ecx
call dword [sym.imp.GDI32.dll_GetCurrentObject]
push eax
call fcn.004d10a2
mov dword [esp + 0x78], eax
mov eax, dword [ebx + 0x4c]
mov ecx, dword [eax + 0x10]
cmp ecx, 0x3c
jne 0x49ed70
mov dword [esp + 0x14], esi
mov ecx, dword [eax + 0x10]
cmp ecx, esi
jne 0x49ed37
xor eax, eax
jmp 0x49ed3a
mov eax, dword [eax + 8]
mov edx, dword [eax]
mov ecx, dword [esp + 0x7c]
lea eax, [esp + 0x14]
mov dword [esp + 0x18], edx
push eax
call fcn.004d0da6
mov eax, dword [ebx + 0x4c]
cmp dword [eax + 0x10], esi
je 0x49ed59
mov esi, dword [eax + 8]
mov ecx, 0xf
lea edi, [esp + 0x2c]
rep movsd dword es:[edi], dword [esi]
mov ecx, dword [esp + 0x18]
xor esi, esi
mov dword [esp + 0x2c], ecx
jmp 0x49edab
lea edx, [esp + 0x2c]
push edx
push 0x3c
push 0x11
call dword [sym.imp.GDI32.dll_GetStockObject]
push eax
call dword [sym.imp.GDI32.dll_GetObjectA]
mov eax, dword [esp + 0x2c]
lea ecx, [esp + 0x14]
push ecx
mov ecx, dword [esp + 0x80]
mov dword [esp + 0x18], esi
mov dword [esp + 0x1c], eax
call fcn.004d0da6
mov edx, dword [esp + 0x18]
mov dword [esp + 0x2c], edx
lea eax, [esp + 0x2c]
lea ecx, [esp + 0x1c]
push eax
push ecx
call fcn.0041fc80
mov edx, dword [ebp]
add esp, 8
lea eax, [esp + 0x1c]
mov ecx, ebp
push eax
call dword [edx + 0x28]
mov eax, dword [ebx + 0x50]
lea edx, [esp + 0x24]
push edx
mov ecx, dword [eax - 8]
push ecx
push eax
mov eax, dword [ebp + 8]
push eax
call dword [sym.imp.GDI32.dll_GetTextExtentPoint32A]
mov eax, dword [ebx + 0x30]
mov edx, dword [esp + 0x24]
mov ecx, dword [ebx + 0x50]
sub eax, edx
cdq
mov edi, dword [ebp]
sub eax, edx
mov edx, dword [ecx - 8]
push edx
push ecx
sar eax, 1
push 0x14
push eax
mov ecx, ebp
call dword [edi + 0x5c]
mov ecx, dword [ebx + 0x30]
mov edx, dword [esp + 0x28]
mov dword [ebx + 0xc], ecx
mov ecx, dword [esp + 0x78]
add edx, 0x14
mov dword [ebx + 8], esi
mov dword [ebx + 4], esi
mov dword [ebx + 0x10], edx
mov eax, dword [ebp]
push ecx
mov ecx, ebp
call dword [eax + 0x28]
lea ecx, [esp + 0x1c]
call fcn.004d110e
pop edi
mov eax, dword [esp + 0xc]
mov edx, dword [ebp]
push eax
mov ecx, ebp
call dword [edx + 0x30]
mov dword [esp + 0x18], 0x58bd50
lea ecx, [esp + 0x18]
mov dword [esp + 0x6c], 1
call fcn.004d110e
mov ecx, dword [esp + 0x64]
pop esi
pop ebp
mov eax, 1
pop ebx
mov dword fs:[0], ecx
add esp, 0x64
ret 8
Function at 0x4a09b0
Capabilities:
Access peb ldr_data
Get kernel32 base address

Disassembly:
push 0xffffffffffffffff
push 0x4dc807
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x14
mov eax, dword [0x5b3cec]
push esi
push edi
mov esi, ecx
mov dword [esp + 0x18], 0
mov dword [esp + 0xc], eax
mov dword [esp + 0x24], 1
mov dword [esp + 8], eax
mov eax, dword [esi + 0xb4]
lea ecx, [esp + 0xc]
push eax
push 0x5b1b48
push ecx
mov byte [esp + 0x30], 2
call fcn.004c70f0
add esp, 0xc
lea edx, [esp + 0xc]
lea eax, [esp + 0x14]
push edx
push 0x5b1b44
push eax
call fcn.004ca62b
push 0x5b1b40
lea ecx, [esp + 0x14]
push eax
push ecx
mov byte [esp + 0x30], 3
call fcn.004ca5b7
mov edi, dword [eax]
mov edx, dword [esp + 0x34]
mov eax, dword [esp + 0x30]
push edx
push eax
mov ecx, esi
mov byte [esp + 0x2c], 4
call fcn.004a0950
sub esp, 8
lea ecx, [esp + 0x10]
fstp qword [esp]
push edi
push ecx
call fcn.004c70f0
add esp, 0x10
lea ecx, [esp + 0x10]
mov byte [esp + 0x24], 3
call fcn.004ca36e
lea ecx, [esp + 0x14]
mov byte [esp + 0x24], 2
call fcn.004ca36e
mov esi, dword [esp + 0x2c]
lea edx, [esp + 8]
push edx
mov ecx, esi
call fcn.004ca0e3
mov dword [esp + 0x18], 1
lea ecx, [esp + 8]
mov byte [esp + 0x24], 1
call fcn.004ca36e
lea ecx, [esp + 0xc]
mov byte [esp + 0x24], 0
call fcn.004ca36e
mov ecx, dword [esp + 0x1c]
mov eax, esi
pop edi
pop esi
mov dword fs:[0], ecx
add esp, 0x20
ret 0xc
Function at 0x4a0ad0
Capabilities:
Access peb ldr_data

Disassembly:
push 0xffffffffffffffff
push 0x4dc830
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x58
push ebx
push ebp
push esi
xor esi, esi
mov ebx, ecx
mov dword [esp + 0x1c], esi
mov dword [esp + 0x18], 0x58bde4
mov ebp, dword [esp + 0x74]
mov dword [esp + 0x6c], esi
mov eax, dword [ebp + 8]
push eax
call dword [sym.imp.GDI32.dll_GetTextColor]
mov edx, dword [ebp]
mov dword [esp + 0xc], eax
mov eax, dword [ebx + 0x74]
mov ecx, ebp
push eax
call dword [edx + 0x30]
cmp dword [ebx + 0x68], esi
je 0x4a0c4f
mov ecx, dword [ebp + 8]
push edi
push 6
push ecx
call dword [sym.imp.GDI32.dll_GetCurrentObject]
push eax
call fcn.004d10a2
mov dword [esp + 0x78], eax
mov eax, dword [ebx + 0x6c]
mov ecx, dword [eax + 0x10]
cmp ecx, 0x3c
jne 0x4a0b90
mov dword [esp + 0x14], esi
mov ecx, dword [eax + 0x10]
cmp ecx, esi
jne 0x4a0b57
xor eax, eax
jmp 0x4a0b5a
mov eax, dword [eax + 8]
mov edx, dword [eax]
mov ecx, dword [esp + 0x7c]
lea eax, [esp + 0x14]
mov dword [esp + 0x18], edx
push eax
call fcn.004d0da6
mov eax, dword [ebx + 0x6c]
cmp dword [eax + 0x10], esi
je 0x4a0b79
mov esi, dword [eax + 8]
mov ecx, 0xf
lea edi, [esp + 0x2c]
rep movsd dword es:[edi], dword [esi]
mov ecx, dword [esp + 0x18]
xor esi, esi
mov dword [esp + 0x2c], ecx
jmp 0x4a0bcb
lea edx, [esp + 0x2c]
push edx
push 0x3c
push 0x11
call dword [sym.imp.GDI32.dll_GetStockObject]
push eax
call dword [sym.imp.GDI32.dll_GetObjectA]
mov eax, dword [esp + 0x2c]
lea ecx, [esp + 0x14]
push ecx
mov ecx, dword [esp + 0x80]
mov dword [esp + 0x18], esi
mov dword [esp + 0x1c], eax
call fcn.004d0da6
mov edx, dword [esp + 0x18]
mov dword [esp + 0x2c], edx
lea eax, [esp + 0x2c]
lea ecx, [esp + 0x1c]
push eax
push ecx
call fcn.0041fc80
mov edx, dword [ebp]
add esp, 8
lea eax, [esp + 0x1c]
mov ecx, ebp
push eax
call dword [edx + 0x28]
mov eax, dword [ebx + 0x70]
lea edx, [esp + 0x24]
push edx
mov ecx, dword [eax - 8]
push ecx
push eax
mov eax, dword [ebp + 8]
push eax
call dword [sym.imp.GDI32.dll_GetTextExtentPoint32A]
mov eax, dword [ebx + 0x4c]
mov edx, dword [esp + 0x24]
mov ecx, dword [ebx + 0x70]
sub eax, edx
cdq
mov edi, dword [ebp]
sub eax, edx
mov edx, dword [ecx - 8]
push edx
push ecx
sar eax, 1
push 0x14
push eax
mov ecx, ebp
call dword [edi + 0x5c]
mov ecx, dword [ebx + 0x4c]
mov edx, dword [esp + 0x28]
mov dword [ebx + 0x24], ecx
mov ecx, dword [esp + 0x78]
add edx, 0x14
mov dword [ebx + 0x20], esi
mov dword [ebx + 0x1c], esi
mov dword [ebx + 0x28], edx
mov eax, dword [ebp]
push ecx
mov ecx, ebp
call dword [eax + 0x28]
lea ecx, [esp + 0x1c]
call fcn.004d110e
pop edi
mov eax, dword [esp + 0xc]
mov edx, dword [ebp]
push eax
mov ecx, ebp
call dword [edx + 0x30]
mov dword [esp + 0x18], 0x58bdd8
lea ecx, [esp + 0x18]
mov dword [esp + 0x6c], 1
call fcn.004d110e
mov ecx, dword [esp + 0x64]
pop esi
pop ebp
mov eax, 1
pop ebx
mov dword fs:[0], ecx
add esp, 0x64
ret 8
Function at 0x4a2820
Capabilities:
Access peb ldr_data

Disassembly:
push 0xffffffffffffffff
push 0x4dca93
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 8
push esi
mov esi, ecx
mov dword [esp + 4], esi
mov eax, dword [0x5b3cec]
mov dword [esp + 0x14], 0
mov dword [esi + 0x14], eax
push ecx
lea edx, [esp + 0x30]
mov ecx, esp
mov dword [esp + 0xc], esp
push edx
mov byte [esp + 0x1c], 1
mov dword [esi], 0x58be14
call fcn.004ca0e3
mov ecx, dword [esp + 0x20]
mov edx, dword [esp + 0x24]
sub esp, 0x10
mov eax, esp
mov dword [eax], ecx
mov ecx, dword [esp + 0x38]
mov dword [eax + 4], edx
mov edx, dword [esp + 0x3c]
mov dword [eax + 8], ecx
mov ecx, esi
mov dword [eax + 0xc], edx
call fcn.004a28d0
lea ecx, [esp + 0x2c]
mov dword [esp + 0x14], 0xffffffff
call fcn.004ca36e
mov ecx, dword [esp + 0xc]
mov eax, esi
mov dword fs:[0], ecx
pop esi
add esp, 0x14
ret 0x14
Function at 0x4aa480
Capabilities:
Access peb ldr_data
Get kernel32 base address

Disassembly:
push 0xffffffffffffffff
push 0x4dd3a3
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
push ecx
push esi
mov esi, ecx
mov dword [esp + 4], esi
call fcn.004d04c0
xor eax, eax
mov dword [esi + 0x10], 0x58c28c
mov dword [esp + 0x10], eax
mov dword [esi + 0x14], eax
mov ecx, 1
mov dword [esi], method.CDC.virtual_0
mov byte [esp + 0x10], cl
mov dword [esi + 0x30], ecx
lea ecx, [esi + 0x20]
mov dword [esi + 0x1c], eax
mov dword [esi + 0x18], eax
mov dword [esi + 0x34], eax
mov dword [esi + 0x38], eax
mov dword [ecx], eax
mov edx, dword [esp + 0x24]
mov dword [ecx + 4], eax
push edx
mov edx, dword [esp + 0x1c]
mov dword [ecx + 8], eax
mov dword [ecx + 0xc], eax
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x20]
push eax
push ecx
push edx
mov ecx, esi
call fcn.004aa580
mov ecx, dword [esp + 8]
mov eax, esi
pop esi
mov dword fs:[0], ecx
add esp, 0x10
ret 0x10

Function at 0x4aa510
Capabilities:
Access peb ldr_data

Disassembly:
push 0xffffffffffffffff
push 0x4dd3cb
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 8
push esi
mov esi, ecx
mov dword [esp + 4], esi
mov dword [esi], method.CDC.virtual_0
mov eax, dword [esi + 0x30]
mov dword [esp + 0x14], 1
push eax
call fcn.004ab1c0
lea ecx, [esi + 0x10]
mov dword [esp + 8], ecx
mov dword [ecx], method.CGdiObject.virtual_0
mov byte [esp + 0x14], 2
call fcn.004d110e
mov ecx, esi
mov dword [esp + 0x14], 0xffffffff
call fcn.004d05f5
mov ecx, dword [esp + 0xc]
pop esi
mov dword fs:[0], ecx
add esp, 0x14
ret

Function at 0x4ba3ac
Capabilities:
Check if file exists
Get file attributes

Disassembly:
push dword [esp + 4]
call dword [sym.imp.KERNEL32.dll_GetFileAttributesA]
cmp eax, 0xffffffff
jne 0x4ba3cc
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
call fcn.004bbf71
pop ecx
or eax, 0xffffffff
ret
test al, 1
je 0x4ba3ef
test byte [esp + 8], 2
je 0x4ba3ef
call fcn.004bbfe4
mov dword [eax], 0xd
call fcn.004bbfed
mov dword [eax], 5
jmp 0x4ba3c8
xor eax, eax
ret

Function at 0x4cb19d
Capabilities:
Extract resource via kernel32 functions

Disassembly:
push ebx
mov ebx, dword [esp + 8]
push esi
mov eax, ebx
push edi
mov edi, ecx
shr eax, 0x10
test ax, ax
mov dword [edi + 0x40], ebx
jne 0x4cb1bf
cmp dword [edi + 0x3c], 0
jne 0x4cb1bf
movzx eax, bx
mov dword [edi + 0x3c], eax
call fcn.004d42e7
mov esi, dword [eax + 0xc]
push 5
push ebx
push esi
call dword [sym.imp.KERNEL32.dll_FindResourceA]
push eax
push esi
call dword [sym.imp.KERNEL32.dll_LoadResource]
push esi
mov ecx, edi
push dword [esp + 0x18]
push eax
call fcn.004cb1ec
pop edi
pop esi
pop ebx
ret 8
Function at 0x4cc80e
Capabilities:
Get graphical window text

Disassembly:
push esi
mov esi, ecx
mov ecx, dword [esi + 0x38]
test ecx, ecx
jne 0x4cc846
push dword [esi + 0x1c]
call dword [sym.imp.USER32.dll_GetWindowTextLengthA]
lea ecx, [eax + 1]
push ecx
mov ecx, dword [esp + 0xc]
push eax
call fcn.004ca7c9
push eax
push dword [esi + 0x1c]
call dword [sym.imp.USER32.dll_GetWindowTextA]
mov ecx, dword [esp + 8]
push 0xffffffffffffffff
call fcn.004ca7a1
jmp 0x4cc852
mov eax, dword [ecx]
push dword [esp + 8]
call dword [eax + 0x88]
pop esi
ret 4

Function at 0x4cdefc
Capabilities:
Extract resource via kernel32 functions

Disassembly:
push ebx
push esi
push edi
xor edi, edi
cmp dword [esp + 0x10], edi
mov ebx, ecx
je 0x4cdf3e
call fcn.004d42e7
mov esi, dword [eax + 0xc]
push 0xf0
push dword [esp + 0x14]
push esi
call dword [sym.imp.KERNEL32.dll_FindResourceA]
cmp eax, edi
je 0x4cdf3e
push eax
push esi
call dword [sym.imp.KERNEL32.dll_LoadResource]
cmp eax, edi
jne 0x4cdf35
xor eax, eax
jmp 0x4cdf46
push eax
call dword [sym.imp.KERNEL32.dll_LockResource]
mov edi, eax
push edi
mov ecx, ebx
call fcn.004cdf4c
pop edi
pop esi
pop ebx
ret 4

Function at 0x4d4817
Capabilities:
Get thread local storage value

Disassembly:
push ebx
push esi
mov esi, ecx
lea ebx, [esi + 0x1c]
push ebx
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
cmp dword [esp + 0x10], 0
jne 0x4d4845
push dword [esi]
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
test eax, eax
je 0x4d4863
push dword [esp + 0xc]
mov ecx, esi
push eax
call fcn.004d477d
jmp 0x4d4863
mov eax, dword [esi + 0x14]
test eax, eax
je 0x4d4863
push edi
push dword [esp + 0x10]
mov edi, dword [eax + 4]
mov ecx, esi
push eax
call fcn.004d477d
test edi, edi
mov eax, edi
jne 0x4d484d
pop edi
push ebx
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
pop esi
pop ebx
ret 8

Function at 0x1145d9f0
Capabilities:
Encode data using xor

Disassembly:
jmp 0x1145d9fa
pushal
call 0x1145da00
pop ebp
sub ebp, 0x10
sub ebp, 0x145d9f0
mov al, byte [esp + 0x28]
cmp al, 1
je 0x1145da24
popal
xor eax, eax
inc eax
ret 0xc
jmp 0x1145da2d
mov eax, 0x145d9f0
add eax, ebp
add eax, 0x63
mov ecx, 0x5c5
mov edx, 0xb1b36d66
xor byte [eax], dl
inc eax
dec ecx
jne 0x1145da44
jmp 0x1145da57
in eax, dx
stosd dword es:[edi], eax
in eax, dx
out dx, eax
pop edx
out 0xa7, ax
sahf
stosw word es:[edi], ax
fisub word [eax + 0x66]
fmul qword [esi + 0x66]
xchg cx, ax
test byte [ebp - 0x52], ah
in eax, dx
out 0x6a, eax
mov word gs:[0x9a4202eb], ax
out dx, eax
bound eax, qword [edx - 0x15]
add al, byte [edx - 0x66]
out dx, eax
bound eax, qword [edx + 0xe]
loop 0x1145da72
inc edx
push cs
rdtsc
inc edi
dec edx
inc edx
push cs
mov al, 0x28
cmp ah, byte [ebp - 0x72]
arpl word [esi + 0x66], sp
invalid
Function at 0x401630
Capabilities:
Get common file path

Disassembly:
sub esp, 0x800
push ebx
push esi
push edi
mov ebx, ecx
call fcn.00401060
mov esi, eax
mov ecx, esi
call fcn.004028e0
push 1
mov ecx, esi
mov edi, eax
call fcn.004028b0
mov ecx, edi
call fcn.004031f0
test ax, ax
jne 0x4016a1
push 2
mov ecx, esi
call fcn.004028b0
mov ecx, esi
call fcn.004028a0
push eax
mov ecx, esi
call fcn.00402810
mov ecx, ebx
call fcn.00401850
test eax, eax
jne 0x401758
push eax
push 0x481
call fcn.00403870
add esp, 8
xor eax, eax
pop edi
pop esi
pop ebx
add esp, 0x800
ret
mov ecx, edi
call fcn.00403230
push eax
mov ecx, esi
call fcn.00402850
lea eax, [esp + 0x40c]
push 0x400
push eax
mov ecx, ebx
call fcn.00401770
test eax, eax
jne 0x4016ec
mov ecx, esi
call fcn.00402860
shr eax, 0xa
push eax
push 0x47f
call fcn.00403870
add esp, 8
xor eax, eax
pop edi
pop esi
pop ebx
add esp, 0x800
ret
lea ecx, [esp + 0xc]
lea edx, [esp + 0x40c]
push ecx
push 0x400
push 0x40c0bc
push edx
call dword [sym.imp.KERNEL32.dll_GetTempFileNameA]
lea eax, [esp + 0xc]
push 0x2e
push eax
call fcn.00404490
add esp, 8
lea ecx, [esp + 0xc]
mov byte [eax], 0
push ecx
call fcn.00403e70
test eax, eax
jne 0x401733
lea edx, [esp + 0xc]
push edx
call fcn.00403da0
lea eax, [esp + 0xc]
mov ecx, esi
push eax
call fcn.00402810
mov ecx, esi
call fcn.00402d30
test eax, eax
jne 0x401678
pop edi
pop esi
pop ebx
add esp, 0x800
ret
pop edi
pop esi
mov eax, 1
pop ebx
add esp, 0x800
ret

Function at 0x401770
Capabilities:
Get common file path

Disassembly:
push ebx
push ebp
push esi
push edi
mov ebx, ecx
call fcn.00401060
mov ecx, eax
call fcn.00402860
mov edi, dword [esp + 0x14]
mov ebp, dword [esp + 0x18]
mov esi, eax
push edi
push ebp
shr esi, 0xa
call dword [sym.imp.KERNEL32.dll_GetTempPathA]
test eax, eax
je 0x4017b3
push 0x8003
call dword [sym.imp.KERNEL32.dll_SetErrorMode]
push esi
push edi
mov ecx, ebx
call fcn.00401810
test eax, eax
jne 0x401801
push ebp
push edi
call dword [sym.imp.KERNEL32.dll_GetWindowsDirectoryA]
test eax, eax
jle 0x4017cc
push esi
push edi
mov ecx, ebx
call fcn.00401810
test eax, eax
jne 0x401801
push 0x40caa8
push edi
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
push edi
push esi
push 3
call fcn.00403b80
add esp, 0xc
test eax, eax
jge 0x401801
push edi
push esi
push 4
call fcn.00403b80
add esp, 0xc
test eax, eax
jge 0x401801
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
ret 8
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
ret 8
Function at 0x401850
Capabilities:
Read .ini file

Disassembly:
sub esp, 0x400
push ebx
push ebp
push esi
push edi
call fcn.00401060
mov esi, eax
mov eax, dword [str.Setup.INI]
push eax
mov ecx, esi
call fcn.00402840
lea ecx, [esp + 0x14]
push eax
push ecx
call fcn.00403cc0
lea ebx, [esi + 0x408]
mov ebp, dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
lea edx, [esp + 0x10]
mov ecx, 0x100
xor eax, eax
mov edi, ebx
push edx
push 0x400
rep stosd dword es:[edi], eax
mov eax, dword [str.Product]
mov ecx, dword [str.Startup]
push ebx
push 0x40caa8
push eax
push ecx
call ebp
push ebx
call dword [sym.imp.KERNEL32.dll_lstrlenA]
test eax, eax
jne 0x4018c5
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x400
ret
lea ebx, [esi + 0x808]
lea edx, [esp + 0x10]
mov ecx, 0x100
xor eax, eax
mov edi, ebx
push edx
rep stosd dword es:[edi], eax
mov eax, dword [str.PackageName]
mov ecx, dword [str.Startup]
push 0x400
push ebx
push 0x40caa8
push eax
push ecx
call ebp
push ebx
mov ebx, dword [sym.imp.KERNEL32.dll_lstrlenA]
call ebx
test eax, eax
jne 0x40190d
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x400
ret
add esi, 8
lea edx, [esp + 0x10]
mov ecx, 0x100
xor eax, eax
mov edi, esi
push edx
rep stosd dword es:[edi], eax
mov eax, dword [str.MsiVersion]
mov ecx, dword [str.Startup]
push 0x400
push esi
push 0x40caa8
push eax
push ecx
call ebp
push esi
call ebx
neg eax
pop edi
pop esi
sbb eax, eax
pop ebp
neg eax
pop ebx
add esp, 0x400
ret

Function at 0x401e00
Capabilities:
Hide graphical window

Disassembly:
mov eax, dword [0x40cab8]
push eax
call dword [sym.imp.USER32.dll_IsWindow]
test eax, eax
je 0x401e1f
mov ecx, dword [0x40cab8]
push 0
push ecx
call dword [sym.imp.USER32.dll_ShowWindow]
ret
Function at 0x4021d0
Capabilities:
Persist via run registry key

Disassembly:
mov eax, dword fs:[0]
push 0xffffffffffffffff
push 0x4093fb
push eax
mov dword fs:[0], esp
sub esp, 0xd08
push ebp
push esi
call fcn.00401060
mov esi, eax
mov ecx, esi
call fcn.00402d20
test eax, eax
je 0x40236e
lea ebp, [esi + 0x808]
mov ecx, esi
push ebp
call fcn.00402840
push eax
lea eax, [esp + 0x118]
push eax
call fcn.00403cc0
lea ecx, [esp + 0x110]
push ecx
call fcn.00403e40
test eax, eax
jne 0x40224c
lea edx, [esp + 0x110]
push edx
push 0x483
call fcn.00403880
add esp, 8
xor eax, eax
jmp 0x40236e
mov ecx, dword [str.MSIEXEC.EXE]
lea eax, [esp + 0x110]
push ebx
mov ebx, dword [sym.imp.USER32.dll_wsprintfA]
push eax
push ecx
lea edx, [esp + 0x91c]
push str._s__i__s_
push edx
call ebx
mov ecx, dword [esp + 0xd34]
xor eax, eax
add esp, 0x10
cmp ecx, eax
je 0x402354
mov dword [esp + 0xc], eax
push 0xf003f
push str.SoftwareMicrosoftWindowsCurrentVersionRunOnce
push 0x80000002
lea ecx, [esp + 0x18]
mov dword [esp + 0xd28], eax
call fcn.004025e0
test eax, eax
jne 0x402331
push edi
mov ecx, 0x41
lea edi, [esp + 0x14]
rep stosd dword es:[edi], eax
mov ecx, esi
call fcn.00402d00
test eax, eax
pop edi
je 0x4022d8
lea eax, [esp + 0x10]
push 0x40c0ec
push eax
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
mov edx, dword [0x40cac4]
lea ecx, [esp + 0x114]
push 0x400
push ecx
push edx
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
lea eax, [esp + 0x10]
mov ecx, esi
push eax
push ebp
call fcn.00402840
lea ecx, [esp + 0x11c]
push eax
push ecx
lea edx, [esp + 0x524]
push str.__s___t__s___m__s___s
push edx
call ebx
mov eax, dword [str.Setup]
add esp, 0x18
lea ecx, [esp + 0x514]
push eax
push ecx
lea ecx, [esp + 0x14]
call fcn.00402620
push 0x453
call fcn.004038d0
add esp, 4
lea ecx, [esp + 0xc]
mov dword [esp + 0xd1c], 0xffffffff
call fcn.004025c0
jmp 0x402368
call fcn.00401e00
lea edx, [esp + 0x914]
push 1
push edx
call fcn.00404050
mov eax, 1
pop ebx
mov ecx, dword [esp + 0xd10]
pop esi
pop ebp
mov dword fs:[0], ecx
add esp, 0xd14
ret 4