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

Disassembly:
push ebx
pcmpeqw mm7, mm7
push ecx
pxor mm6, mm6
push esi
psllw mm7, 0xf
push edi
mov esi, dword [esp + 0x14]
mov edi, dword [esp + 0x18]
mov eax, dword [esp + 0x1c]
mov ebx, dword [esp + 0x20]
sub eax, 4
jl 0x401093
jmp 0x401040
movq mm0, qword [esi]
pxor mm0, mm7
movq mm3, mm0
movq mm1, qword [ebx + esi]
punpcklwd mm0, mm6
pxor mm1, mm7
movq mm2, qword [esi + ebx*2]
movq mm4, mm1
pxor mm2, mm7
add edi, 0x10
prefetcht0 byte [esi + ebx*2 + 0x40]
punpcklwd mm1, mm6
movq mm5, mm2
punpcklwd mm2, mm6
paddd mm0, mm1
punpckhwd mm3, mm6
paddd mm0, mm2
punpckhwd mm4, mm6
paddd mm3, mm4
punpckhwd mm5, mm6
movq qword [edi - 0x10], mm0
paddd mm3, mm5
add esi, 8
movq qword [edi - 8], mm3
sub eax, 4
jge 0x401040
add eax, 4
jle 0x4010c6
push edx
movzx ecx, word [esi]
xor ecx, 0x8000
movzx edx, word [ebx + esi]
xor edx, 0x8000
add ecx, edx
movzx edx, word [esi + ebx*2]
xor edx, 0x8000
add ecx, edx
add esi, 2
mov dword [edi], ecx
add edi, 4
dec eax
jg 0x401099
pop edx
pop edi
pop esi
pop ecx
pop ebx
ret

Function at 0x417e10
Capabilities:
Query or enumerate registry value

Disassembly:
mov al, byte [0x633042]
mov cl, byte [0x633049]
mov edx, dword [0x63303c]
xor cl, al
mov eax, dword [0x633048]
and edx, 0xc
and eax, 0xff
sub esp, 0x14
imul edx, eax
mov eax, dword [0x633038]
mov byte [0x633049], cl
mov ecx, dword [0x633034]
push ebx
mov ebx, dword [0x633030]
and ecx, 4
add ebx, ecx
xor eax, edx
push esi
mov dword [0x633030], ebx
mov dword [0x633038], eax
call dword [sym.imp.KERNEL32.dll_GetLastError]
push 0x636c6c
mov esi, eax
call fcn.00628da0
add esp, 4
test eax, eax
je 0x417e82
pop esi
xor eax, eax
pop ebx
add esp, 0x14
ret
mov ecx, dword [0x633030]
mov eax, dword [0x633034]
mov dword [esp + 0x18], 0
mov ebx, 1
lea edx, [ecx + ecx]
mov dword [esp + 8], 0
or edx, eax
lea eax, [esp + 8]
mov dword [esp + 0x14], edx
push eax
fild qword [esp + 0x18]
push ebx
push 0
push str.CLSIDa893aa73_054f_4dbc_9e53_f4ee5fe07fd3InProcServer32
push SysReAllocStringLen
fadd qword [0x633058]
fstp qword [0x633058]
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
test eax, eax
mov dword [0x63bf8c], eax
jne 0x417f4b
lea ecx, [esp + 0x10]
lea edx, [esp + 0xc]
push ecx
push 0x636c6c
push edx
push eax
mov dword [esp + 0x1c], eax
push eax
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x24], 0x208
push eax
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
test eax, eax
mov dword [0x63bf8c], eax
jne 0x417f13
cmp dword [esp + 0xc], ebx
je 0x417f15
xor bl, bl
mov ecx, dword [esp + 8]
push ecx
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
test bl, bl
je 0x417f2c
pop esi
xor eax, eax
pop ebx
add esp, 0x14
ret
mov eax, dword [0x63bf8c]
test eax, eax
jne 0x417f4b
test esi, esi
jle 0x417f45
and esi, 0xffff
or esi, 0x80070000
mov dword [0x63bf8c], esi
pop esi
mov eax, 0x80004005
pop ebx
add esp, 0x14
ret
Function at 0x62a18d
Capabilities:
Write file on windows

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x1a4
mov edx, dword [ebp + 8]
xor ecx, ecx
mov eax, 0x633418
cmp edx, dword [eax]
je 0x62a1af
add eax, 8
inc ecx
cmp eax, 0x6334a8
jl 0x62a1a0
push esi
mov esi, ecx
shl esi, 3
cmp edx, dword [esi + 0x633418]
jne 0x62a2dd
mov eax, dword [0x63bfa4]
cmp eax, 1
je 0x62a2b7
test eax, eax
jne 0x62a1e0
cmp dword [0x633344], 1
je 0x62a2b7
cmp edx, 0xfc
je 0x62a2dd
lea eax, [ebp - 0x1a4]
push 0x104
push eax
push 0
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
test eax, eax
jne 0x62a217
lea eax, [ebp - 0x1a4]
push str._program_name_unknown_
push eax
call fcn.0062ab70
pop ecx
pop ecx
lea eax, [ebp - 0x1a4]
push edi
push eax
lea edi, [ebp - 0x1a4]
call fcn.0062b000
inc eax
pop ecx
cmp eax, 0x3c
jbe 0x62a25a
lea eax, [ebp - 0x1a4]
push eax
call fcn.0062b000
mov edi, eax
lea eax, [ebp - 0x1a4]
sub eax, 0x3b
push 3
add edi, eax
push 0x62fc24
push edi
call fcn.0062ced0
add esp, 0x10
lea eax, [ebp - 0xa0]
push str.Runtime_Error__n_nProgram:
push eax
call fcn.0062ab70
lea eax, [ebp - 0xa0]
push edi
push eax
call fcn.0062ab80
lea eax, [ebp - 0xa0]
push 0x62fc04
push eax
call fcn.0062ab80
push dword [esi + 0x63341c]
lea eax, [ebp - 0xa0]
push eax
call fcn.0062ab80
push 0x12010
lea eax, [ebp - 0xa0]
push str.Microsoft_Visual_C_Runtime_Library
push eax
call fcn.0062ce44
add esp, 0x2c
pop edi
jmp 0x62a2dd
lea eax, [ebp + 8]
lea esi, [esi + 0x63341c]
push 0
push eax
push dword [esi]
call fcn.0062b000
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 0x408d40
Capabilities:
Print debug messages

Disassembly:
push 0xffffffffffffffff
push 0x44c928
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
push ecx
mov ecx, dword [0x45ebd8]
mov eax, 0x7a5789fb
imul ecx
mov ecx, dword [0x45ebcc]
sar edx, 0x16
push esi
mov esi, edx
shr esi, 0x1f
add esi, edx
mov eax, 0x7a5789fb
imul ecx
mov eax, dword [0x45ebdc]
mov ecx, dword [0x45ebd4]
imul eax, eax, 0xcdd745
sar edx, 0x16
push edi
mov edi, edx
add esi, edx
shr edi, 0x1f
add edi, esi
add edi, eax
mov eax, 0x312cd50d
imul ecx
sar edx, 0x14
mov eax, edx
shr eax, 0x1f
add eax, edx
mov edx, dword [0x45ebe0]
imul edx, edx, 0x533e66
sub edi, eax
sub edi, edx
mov eax, 0xa16eca11
imul ecx
add edx, ecx
sar edx, 0x16
mov eax, edx
add edi, edx
mov edx, dword [0x57504c]
shr eax, 0x1f
add eax, edi
mov ecx, 0x57504c
mov dword [0x45ebc4], eax
call dword [edx + 0xc]
add eax, 0x10
mov dword [esp + 8], eax
mov ecx, dword [0x45ebe8]
mov edi, dword [0x45ebc4]
mov esi, dword [0x45ebd0]
imul edi, edi, 0xff7a148d
mov eax, 0x7a5789fb
imul ecx
imul ecx, ecx, 0x450d9b
sar edx, 0x16
mov eax, edx
shr eax, 0x1f
add eax, edx
sub edi, eax
mov eax, 0xc83bcf21
imul esi
add edx, esi
mov esi, dword [0x45ebd8]
sar edx, 0x16
mov eax, edx
shr eax, 0x1f
add eax, edx
sub edi, eax
mov eax, 0x8c4682e9
imul esi
add edx, esi
sar edx, 0x16
add edi, edx
mov eax, edx
mov edx, dword [0x45ebe4]
imul edx, edx, 0x88c9aa
shr eax, 0x1f
add eax, edi
add edx, dword [0x45ebe0]
mov dword [esp + 0x14], 0
add edx, eax
lea eax, [ecx + edx - 0x74cc7d]
mov edx, dword [esp + 0x1c]
lea ecx, [esp + 0x20]
push ecx
push edx
lea ecx, [esp + 0x10]
mov dword [0x45ebd0], eax
call fcn.00408ab0
mov ecx, dword [0x45ebd0]
mov eax, 0x7a5789fb
imul ecx
mov eax, dword [0x45ebc8]
mov ecx, dword [0x45ebc4]
imul eax, eax, 0x965d2c
imul ecx, ecx, 0x74cc7d
sar edx, 0x16
mov esi, edx
shr esi, 0x1f
add esi, edx
add esi, eax
add esi, ecx
mov ecx, dword [0x45ebcc]
mov eax, 0xef8db9b
imul ecx
imul ecx, ecx, 0xa6969a
sar edx, 0x13
mov eax, edx
shr eax, 0x1f
add eax, edx
sub esi, eax
add esi, ecx
mov ecx, dword [0x45ebe4]
mov eax, 0xa16eca11
imul ecx
add edx, ecx
sar edx, 0x16
mov ecx, edx
add esi, edx
shr ecx, 0x1f
add ecx, esi
mov esi, dword [esp + 8]
push esi
mov dword [0x45ebdc], ecx
call dword [sym.imp.KERNEL32.dll_OutputDebugStringW]
lea eax, [esi - 0x10]
mov dword [esp + 0x14], 0xffffffff
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
pop edi
pop esi
jg 0x408f2a
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
call dword [edx + 4]
mov ecx, dword [esp + 4]
mov dword fs:[0], ecx
add esp, 0x10
ret
Function at 0x41cd70
Capabilities:
Delete registry key
Query or enumerate registry key

Disassembly:
sub esp, 0x11c
mov eax, dword [0x460640]
xor eax, esp
push ebp
push esi
push edi
mov edi, dword [esp + 0x12c]
mov ebp, ecx
lea ecx, [esp + 0x14]
push ecx
push 0x2001f
push 0
mov dword [esp + 0x130], eax
mov eax, dword [ebp]
push edi
push eax
mov dword [esp + 0x2c], edi
mov dword [esp + 0x20], 0
mov dword [esp + 0x28], 0
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
mov esi, eax
test esi, esi
jne 0x41ce72
lea ecx, [esp + 0xc]
call fcn.0041cc50
mov esi, eax
test esi, esi
mov eax, dword [esp + 0x14]
mov dword [esp + 0xc], eax
jne 0x41ce76
lea edx, [esp + 0x1c]
push edx
push esi
push esi
push esi
lea ecx, [esp + 0x20]
push ecx
lea edx, [esp + 0x38]
push edx
push esi
mov esi, dword [sym.imp.ADVAPI32.dll_RegEnumKeyExA]
push eax
mov dword [esp + 0x30], 0x100
call esi
test eax, eax
jne 0x41ce4e
jmp 0x41ce10
lea eax, [esp + 0x24]
push eax
lea ecx, [esp + 0x10]
call fcn.0041cd70
mov edi, eax
test edi, edi
jne 0x41ce9d
lea ecx, [esp + 0x1c]
push ecx
mov ecx, dword [esp + 0x10]
push eax
push eax
push eax
lea edx, [esp + 0x20]
push edx
lea eax, [esp + 0x38]
push eax
push edi
push ecx
mov dword [esp + 0x30], 0x100
call esi
test eax, eax
je 0x41ce10
mov edi, dword [esp + 0x18]
mov eax, dword [esp + 0xc]
test eax, eax
je 0x41ce65
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov dword [esp + 0xc], 0
mov edx, dword [ebp]
push edi
push edx
call dword [sym.imp.ADVAPI32.dll_RegDeleteKeyA]
mov esi, eax
mov eax, dword [esp + 0xc]
test eax, eax
je 0x41ce81
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov eax, esi
mov ecx, dword [esp + 0x124]
pop edi
pop esi
pop ebp
xor ecx, esp
call fcn.00431cad
add esp, 0x11c
ret 4
mov eax, dword [esp + 0xc]
test eax, eax
je 0x41ceac
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov eax, edi
jmp 0x41ce83
Function at 0x41d390
Capabilities:
Set registry value

Disassembly:
push ebx
mov ebx, dword [sym.imp.KERNEL32.dll_lstrlenA]
push ebp
push esi
mov esi, dword [esp + 0x14]
push edi
mov ebp, ecx
xor edi, edi
push esi
call ebx
inc eax
add esi, eax
add edi, eax
cmp eax, 1
jne 0x41d3a2
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x14]
mov edx, dword [ebp]
push edi
push eax
push 7
push 0
push ecx
push edx
call dword [sym.imp.ADVAPI32.dll_RegSetValueExA]
pop edi
pop esi
pop ebp
pop ebx
ret 8
Function at 0x428d9a
Capabilities:
Extract resource via kernel32 functions

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x10
push ebx
xor ebx, ebx
cmp dword [ebp + 0xc], ebx
push esi
push edi
mov esi, ecx
mov dword [ebp - 4], ebx
mov dword [ebp - 8], ebx
je 0x428ded
call fcn.00449de3
mov edi, dword [eax + 0xc]
push 0xf0
push dword [ebp + 0xc]
push edi
call dword [sym.imp.KERNEL32.dll_FindResourceA]
cmp eax, ebx
je 0x428ded
push eax
push edi
call dword [sym.imp.KERNEL32.dll_LoadResource]
cmp eax, ebx
mov dword [ebp - 8], eax
jne 0x428de3
xor eax, eax
jmp 0x428f06
push eax
call dword [sym.imp.KERNEL32.dll_LockResource]
mov dword [ebp - 4], eax
cmp dword [ebp - 4], ebx
mov ebx, dword [ebp + 8]
mov edi, dword [ebp + 0x10]
mov dword [ebp - 0xc], 1
je 0x428e1d
mov eax, dword [esi]
push edi
push dword [ebp - 4]
mov ecx, esi
push ebx
call dword [eax + 0x1c]
cmp dword [ebp - 8], 0
mov dword [ebp - 0xc], eax
je 0x428e1d
push dword [ebp - 8]
call dword [sym.imp.KERNEL32.dll_FreeResource]
mov eax, dword [ebx + 0x48]
test eax, eax
je 0x428f03
mov ecx, dword [eax + 0x40]
and dword [ebp + 0xc], 0
test ecx, ecx
mov dword [ebp + 8], ecx
mov dword [ebp - 8], ecx
je 0x428e4a
lea ecx, [eax + 0x3c]
lea eax, [ebp + 8]
push eax
call fcn.0042952d
mov eax, dword [eax]
mov dword [ebp + 0xc], eax
xor eax, eax
cmp dword [edi + 8], eax
mov dword [ebp - 4], eax
jbe 0x428f03
mov ecx, dword [ebp + 0xc]
test ecx, ecx
je 0x428e93
mov ecx, dword [ecx + 4]
mov edx, dword [edi + 0xc]
mov ecx, dword [ecx + 0x28]
cmp ecx, dword [edx + eax*8]
jne 0x428e93
mov eax, dword [ebp + 8]
test eax, eax
mov dword [ebp - 8], eax
je 0x428e8d
mov ecx, dword [ebx + 0x48]
lea eax, [ebp + 8]
add ecx, 0x3c
push eax
call fcn.0042952d
mov eax, dword [eax]
mov dword [ebp + 0xc], eax
jmp 0x428ef3
and dword [ebp + 0xc], 0
jmp 0x428ef3
mov ecx, dword [edi + 0xc]
shl eax, 3
cmp dword [eax + ecx], 0
mov dword [ebp - 0x10], eax
je 0x428ef3
push 0xc
call fcn.004439e9
mov esi, eax
test esi, esi
pop ecx
je 0x428ed5
mov eax, dword [edi + 0xc]
mov edx, dword [ebp - 0x10]
mov ecx, dword [ebx + 0x1c]
add eax, edx
push dword [eax]
mov edi, dword [eax + 4]
push ecx
call dword [sym.imp.USER32.dll_GetDlgItem]
and dword [esi + 4], 0
mov dword [esi + 8], edi
mov edi, dword [ebp + 0x10]
mov dword [esi], eax
jmp 0x428ed7
xor esi, esi
mov ecx, dword [ebx + 0x48]
add ecx, 0x3c
cmp dword [ebp - 8], 0
push esi
je 0x428eee
push dword [ebp - 8]
call fcn.0043f434
jmp 0x428ef3
call fcn.0043f40b
mov eax, dword [ebp - 4]
inc eax
cmp eax, dword [edi + 8]
mov dword [ebp - 4], eax
jb 0x428e58
mov eax, dword [ebp - 0xc]
pop edi
pop esi
pop ebx
leave
ret 0xc

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

Disassembly:
push dword [esp + 4]
call dword [sym.imp.KERNEL32.dll_GetFileAttributesA]
cmp eax, 0xffffffff
jne 0x43223d
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
call fcn.0043448c
pop ecx
or eax, 0xffffffff
ret
test al, 1
je 0x432260
test byte [esp + 8], 2
je 0x432260
call fcn.0043447a
mov dword [eax], 0xd
call fcn.00434483
mov dword [eax], 5
jmp 0x432239
xor eax, eax
ret
Function at 0x432327
Capabilities:
Terminate process

Disassembly:
push 8
push 0x452630
call fcn.004342fc
push 8
call fcn.00436516
pop ecx
xor edi, edi
mov dword [ebp - 4], edi
xor esi, esi
inc esi
cmp dword [0x574b3c], esi
jne 0x43235b
push dword [ebp + 8]
call dword [sym.imp.KERNEL32.dll_GetCurrentProcess]
push eax
call dword [sym.imp.KERNEL32.dll_TerminateProcess]
mov dword [0x574b38], esi
mov al, byte [ebp + 0x10]
mov byte [0x574b34], al
cmp dword [ebp + 0xc], edi
jne 0x4323a5
cmp dword [0x57642c], edi
je 0x432395
mov eax, dword [0x576428]
sub eax, 4
mov dword [0x576428], eax
cmp eax, dword [0x57642c]
jb 0x432395
mov eax, dword [eax]
cmp eax, edi
je 0x432376
call eax
jmp 0x432376
push 0x45b0cc
mov eax, 0x45b0c4
call fcn.004322a5
pop ecx
push 0x45b0d8
mov eax, 0x45b0d0
call fcn.004322a5
pop ecx
or dword [ebp - 4], 0xffffffff
call 0x4323d6
cmp dword [ebp + 0x10], edi
jne 0x4323e4
mov dword [0x574b3c], esi
push dword [ebp + 8]
call fcn.00432263
xor edi, edi
xor esi, esi
inc esi
cmp dword [ebp + 0x10], edi
je 0x4323e3
push 8
call fcn.00436461
pop ecx
ret
call fcn.00434337
ret

Function at 0x432657
Capabilities:
Get system information on windows

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x4c
push ebx
push esi
push edi
push 4
pop eax
call fcn.004324f0
mov esi, esp
push 0x1c
lea eax, [ebp - 0x28]
push eax
push esi
call dword [sym.imp.KERNEL32.dll_VirtualQuery]
test eax, eax
je 0x4326f2
mov ebx, dword [ebp - 0x24]
lea eax, [ebp - 0x4c]
push eax
call dword [sym.imp.KERNEL32.dll_GetSystemInfo]
mov ecx, dword [ebp - 0x48]
mov eax, dword [0x574afc]
lea edi, [ecx - 1]
not edi
and edi, esi
sub edi, ecx
mov esi, eax
dec esi
neg esi
sbb esi, esi
and esi, 0xfffffff1
add esi, 0x11
imul esi, ecx
add esi, ebx
cmp edi, esi
mov dword [ebp - 8], ecx
jb 0x4326f2
cmp eax, 1
je 0x432713
mov dword [ebp - 4], ebx
mov ebx, 0x1000
push 0x1c
lea eax, [ebp - 0x28]
push eax
push dword [ebp - 4]
call dword [sym.imp.KERNEL32.dll_VirtualQuery]
test eax, eax
je 0x4326f2
mov eax, dword [ebp - 0x1c]
add dword [ebp - 4], eax
test dword [ebp - 0x18], ebx
je 0x4326bf
test byte [ebp - 0x13], 1
mov eax, dword [ebp - 0x28]
mov dword [ebp - 4], eax
je 0x4326ee
xor eax, eax
inc eax
jmp 0x432732
cmp edi, eax
jae 0x4326f6
xor eax, eax
jmp 0x432732
cmp eax, esi
jae 0x4326fd
mov dword [ebp - 4], esi
push 4
push ebx
push dword [ebp - 8]
push dword [ebp - 4]
call dword [sym.imp.KERNEL32.dll_VirtualAlloc]
mov eax, dword [0x574afc]
jmp 0x432716
mov dword [ebp - 4], edi
dec eax
neg eax
sbb eax, eax
and eax, 0x103
lea ecx, [ebp - 0xc]
push ecx
inc eax
push eax
push dword [ebp - 8]
push dword [ebp - 4]
call dword [sym.imp.KERNEL32.dll_VirtualProtect]
lea esp, [ebp - 0x58]
pop edi
pop esi
pop ebx
leave
ret
Function at 0x4330a2
Capabilities:
Accept command line arguments
Parse pe header
Terminate process

Disassembly:
push 0x60
push 0x4526e8
call fcn.004342fc
mov edi, 0x94
mov eax, edi
call fcn.004324f0
mov dword [ebp - 0x18], esp
mov esi, esp
mov dword [esi], edi
push esi
call dword [sym.imp.KERNEL32.dll_GetVersionExA]
mov ecx, dword [esi + 0x10]
mov dword [0x574afc], ecx
mov eax, dword [esi + 4]
mov dword [0x574b08], eax
mov edx, dword [esi + 8]
mov dword [0x574b0c], edx
mov esi, dword [esi + 0xc]
and esi, 0x7fff
mov dword [0x574b00], esi
cmp ecx, 2
je 0x433102
or esi, 0x8000
mov dword [0x574b00], esi
shl eax, 8
add eax, edx
mov dword [0x574b04], eax
xor esi, esi
push esi
mov edi, dword [sym.imp.KERNEL32.dll_GetModuleHandleA]
call edi
cmp word [eax], 0x5a4d
jne 0x43313d
mov ecx, dword [eax + 0x3c]
add ecx, eax
cmp dword [ecx], 0x4550
jne 0x43313d
movzx eax, word [ecx + 0x18]
cmp eax, 0x10b
je 0x433155
cmp eax, 0x20b
je 0x433142
mov dword [ebp - 0x1c], esi
jmp 0x433169
cmp dword [ecx + 0x84], 0xe
jbe 0x43313d
xor eax, eax
cmp dword [ecx + 0xf8], esi
jmp 0x433163
cmp dword [ecx + 0x74], 0xe
jbe 0x43313d
xor eax, eax
cmp dword [ecx + 0xe8], esi
setne al
mov dword [ebp - 0x1c], eax
push 1
call fcn.00436652
pop ecx
test eax, eax
jne 0x43317d
push 0x1c
call fcn.0043307e
pop ecx
call fcn.004354c9
test eax, eax
jne 0x43318e
push 0x10
call fcn.0043307e
pop ecx
call fcn.00436547
mov dword [ebp - 4], esi
call fcn.004391f0
test eax, eax
jge 0x4331a7
push 0x1b
call fcn.00433059
pop ecx
call dword [sym.imp.KERNEL32.dll_GetCommandLineA]
mov dword [0x576420], eax
call fcn.004390ce
mov dword [0x574b48], eax
call fcn.0043902c
test eax, eax
jge 0x4331cd
push 8
call fcn.00433059
pop ecx
call fcn.00438df9
test eax, eax
jge 0x4331de
push 9
call fcn.00433059
pop ecx
push 1
call fcn.004322bd
pop ecx
mov dword [ebp - 0x28], eax
cmp eax, esi
je 0x4331f4
push eax
call fcn.00433059
pop ecx
mov dword [ebp - 0x44], esi
lea eax, [ebp - 0x70]
push eax
call dword [sym.imp.KERNEL32.dll_GetStartupInfoA]
call fcn.00438d9c
mov dword [ebp - 0x20], eax
test byte [ebp - 0x44], 1
je 0x433215
movzx eax, word [ebp - 0x40]
jmp 0x433218
push 0xa
pop eax
push eax
push dword [ebp - 0x20]
push esi
push esi
call edi
push eax
call fcn.0043ead4
mov edi, eax
mov dword [ebp - 0x2c], edi
cmp dword [ebp - 0x1c], esi
jne 0x433236
push edi
call fcn.004323ea
call fcn.0043240c
jmp 0x433268
or dword [ebp - 4], 0xffffffff
mov eax, edi
lea esp, [ebp - 0x7c]
call fcn.00434337
ret
Function at 0x4371e1
Capabilities:
Parse pe header

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x20
push ebx
push esi
mov esi, dword [ebp + 8]
mov ebx, dword [esi + 8]
test bl, 3
jne 0x43720f
mov eax, dword fs:[0x18]
mov dword [ebp + 8], eax
mov eax, dword [ebp + 8]
mov ecx, dword [eax + 8]
cmp ebx, ecx
mov dword [ebp - 4], ecx
jb 0x437216
cmp ebx, dword [eax + 4]
jae 0x437216
xor eax, eax
jmp 0x437406
push edi
mov edi, dword [esi + 0xc]
cmp edi, 0xffffffff
jne 0x437227
xor eax, eax
inc eax
jmp 0x437405
xor edx, edx
mov dword [ebp + 8], edx
mov eax, ebx
mov ecx, dword [eax]
cmp ecx, 0xffffffff
je 0x43723d
cmp ecx, edx
jae 0x437382
cmp dword [eax + 4], 0
je 0x437246
inc dword [ebp + 8]
inc edx
add eax, 0xc
cmp edx, edi
jbe 0x43722e
cmp dword [ebp + 8], 0
je 0x437268
mov eax, dword [esi - 8]
cmp eax, dword [ebp - 4]
jb 0x437382
cmp eax, esi
jae 0x437382
mov eax, dword [0x574cd8]
mov edi, ebx
and edi, 0xfffff000
xor esi, esi
test eax, eax
jle 0x43728d
cmp dword [esi*4 + 0x574ce0], edi
je 0x437386
inc esi
cmp esi, eax
jl 0x43727b
push 0x1c
lea eax, [ebp - 0x20]
push eax
push ebx
call dword [sym.imp.KERNEL32.dll_VirtualQuery]
test eax, eax
je 0x437402
cmp dword [ebp - 8], 0x1000000
jne 0x437402
test byte [ebp - 0xc], 0xcc
je 0x43730b
mov ecx, dword [ebp - 0x1c]
cmp word [ecx], 0x5a4d
jne 0x437402
mov eax, dword [ecx + 0x3c]
add eax, ecx
cmp dword [eax], 0x4550
jne 0x437402
cmp word [eax + 0x18], 0x10b
jne 0x437402
sub ebx, ecx
cmp word [eax + 6], 0
movzx ecx, word [eax + 0x14]
lea ecx, [ecx + eax + 0x18]
jbe 0x437402
mov eax, dword [ecx + 0xc]
cmp ebx, eax
jb 0x43730b
mov edx, dword [ecx + 8]
add edx, eax
cmp ebx, edx
jae 0x43730b
test byte [ecx + 0x27], 0x80
jne 0x437382
push 1
push 0x574d20
call dword [sym.imp.KERNEL32.dll_InterlockedExchange]
test eax, eax
jne 0x43721f
mov ecx, dword [0x574cd8]
test ecx, ecx
mov edx, ecx
jle 0x43733f
lea eax, [ecx*4 + 0x574cdc]
cmp dword [eax], edi
je 0x43733f
dec edx
sub eax, 4
test edx, edx
jg 0x437333
test edx, edx
jne 0x437370
push 0xf
pop ebx
cmp ecx, ebx
jg 0x43734c
mov ebx, ecx
xor edx, edx
test ebx, ebx
jl 0x437364
lea eax, [edx*4 + 0x574ce0]
mov esi, dword [eax]
inc edx
cmp edx, ebx
mov dword [eax], edi
mov edi, esi
jle 0x437352
cmp ecx, 0x10
jge 0x437370
inc ecx
mov dword [0x574cd8], ecx
push 0
push 0x574d20
call dword [sym.imp.KERNEL32.dll_InterlockedExchange]
jmp 0x43721f
xor eax, eax
jmp 0x437405
test esi, esi
jle 0x43721f
mov ebx, dword [sym.imp.KERNEL32.dll_InterlockedExchange]
push 1
push 0x574d20
call ebx
test eax, eax
jne 0x43721f
cmp dword [esi*4 + 0x574ce0], edi
je 0x4373dc
mov eax, dword [0x574cd8]
lea esi, [eax - 1]
test esi, esi
jl 0x4373ca
cmp dword [esi*4 + 0x574ce0], edi
je 0x4373c6
dec esi
jns 0x4373ba
test esi, esi
jge 0x4373da
cmp eax, 0x10
jge 0x4373d5
inc eax
mov dword [0x574cd8], eax
lea esi, [eax - 1]
jmp 0x4373dc
je 0x4373f4
xor ecx, ecx
test esi, esi
jl 0x4373f4
lea eax, [ecx*4 + 0x574ce0]
mov edx, dword [eax]
inc ecx
cmp ecx, esi
mov dword [eax], edi
mov edi, edx
jle 0x4373e2
push 0
push 0x574d20
call ebx
jmp 0x43721f
or eax, 0xffffffff
pop edi
pop esi
pop ebx
leave
ret
Function at 0x438a87
Capabilities:
Write file on windows

Disassembly:
push ebp
lea ebp, [esp - 0x90]
sub esp, 0x110
mov eax, dword [0x460640]
mov ecx, dword [ebp + 0x98]
push ebx
xor eax, ebp
push esi
mov dword [ebp + 0x8c], eax
xor edx, edx
push edi
xor eax, eax
cmp ecx, dword [eax*8 + 0x460f20]
je 0x438abe
inc eax
cmp eax, 0x13
jb 0x438aaf
mov esi, eax
shl esi, 3
cmp ecx, dword [esi + 0x460f20]
jne 0x438be1
mov eax, dword [0x574b50]
cmp eax, 1
je 0x438bbc
cmp eax, edx
jne 0x438aee
cmp dword [0x460684], 1
je 0x438bbc
cmp ecx, 0xfc
je 0x438be1
push 0x104
lea eax, [ebp - 0x7c]
push eax
push edx
mov byte [ebp + 0x88], dl
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
test eax, eax
jne 0x438b24
lea eax, [ebp - 0x7c]
push str._program_name_unknown_
push eax
call fcn.0043a230
pop ecx
pop ecx
lea edi, [ebp - 0x7c]
mov eax, edi
push eax
call fcn.00433610
inc eax
cmp eax, 0x3c
pop ecx
jbe 0x438b58
mov eax, edi
push eax
call fcn.00433610
mov edi, eax
lea eax, [ebp - 0x7c]
sub eax, 0x3b
push 3
add edi, eax
push 0x452830
push edi
call fcn.00432ef0
add esp, 0x10
push edi
call fcn.00433610
push dword [esi + 0x460f24]
mov ebx, eax
call fcn.00433610
lea eax, [ebx + eax + 0x1c]
pop ecx
add eax, 3
pop ecx
and eax, 0xfffffffc
call fcn.004324f0
mov ebx, esp
push str.Runtime_Error__n_nProgram:
push ebx
call fcn.0043a230
push edi
push ebx
call fcn.0043a240
push 0x44f280
push ebx
call fcn.0043a240
push dword [esi + 0x460f24]
push ebx
call fcn.0043a240
push 0x12010
push str.Microsoft_Visual_C_Runtime_Library
push ebx
call fcn.0043ad3a
add esp, 0x2c
jmp 0x438be1
push edx
lea eax, [ebp - 0x80]
push eax
lea esi, [esi + 0x460f24]
push dword [esi]
call fcn.00433610
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]
lea esp, [ebp - 0x8c]
pop edi
pop esi
pop ebx
mov ecx, dword [ebp + 0x8c]
xor ecx, ebp
call fcn.00431cad
add ebp, 0x90
leave
ret
Function at 0x43ad3a
Capabilities:
Link many functions at runtime

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x10
push ebx
xor ebx, ebx
cmp dword [0x574f70], ebx
push esi
push edi
jne 0x43adba
push str.user32.dll
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
mov edi, eax
cmp edi, ebx
je 0x43adf5
mov esi, dword [sym.imp.KERNEL32.dll_GetProcAddress]
push 0x45364c
push edi
call esi
test eax, eax
mov dword [0x574f70], eax
je 0x43adf5
push 0x45363c
push edi
call esi
push 0x453628
push edi
mov dword [0x574f74], eax
call esi
cmp dword [0x574afc], 2
mov dword [0x574f78], eax
jne 0x43adba
push str.GetUserObjectInformationA
push edi
call esi
test eax, eax
mov dword [0x574f80], eax
je 0x43adba
push str.GetProcessWindowStation
push edi
call esi
mov dword [0x574f7c], eax
mov eax, dword [0x574f7c]
test eax, eax
je 0x43adff
call eax
test eax, eax
je 0x43ade6
lea ecx, [ebp - 4]
push ecx
push 0xc
lea ecx, [ebp - 0x10]
push ecx
push 1
push eax
call dword [0x574f80]
test eax, eax
je 0x43ade6
test byte [ebp - 8], 1
jne 0x43adff
cmp dword [0x574b08], 4
jb 0x43adf9
or byte [ebp + 0x12], 0x20
jmp 0x43ae1e
xor eax, eax
jmp 0x43ae2e
or byte [ebp + 0x12], 4
jmp 0x43ae1e
mov eax, dword [0x574f74]
test eax, eax
je 0x43ae1e
call eax
mov ebx, eax
test ebx, ebx
je 0x43ae1e
mov eax, dword [0x574f78]
test eax, eax
je 0x43ae1e
push ebx
call eax
mov ebx, eax
push dword [ebp + 0x10]
push dword [ebp + 0xc]
push dword [ebp + 8]
push ebx
call dword [0x574f70]
pop edi
pop esi
pop ebx
leave
ret