joyce8/EMBER2024-capa huggingface dataset:
Function at 0x40d050
Capabilities:
Get mac address on windows

Disassembly:
push 0xffffffffffffffff
push 0x46dde8
mov eax, dword fs:[0]
push eax
sub esp, 0x40
mov eax, dword [0x48b998]
xor eax, esp
mov dword [esp + 0x3c], eax
push ebx
push ebp
push esi
push edi
mov eax, dword [0x48b998]
xor eax, esp
push eax
lea eax, [esp + 0x54]
mov dword fs:[0], eax
mov ebp, dword [esp + 0x64]
xor ebx, ebx
mov esi, 0xf
mov dword [esp + 0x14], ebx
mov dword [esp + 0x34], esi
mov dword [esp + 0x30], ebx
mov byte [esp + 0x20], bl
push 0x288
mov dword [esp + 0x60], ebx
call fcn.0044f3bc
mov edi, eax
add esp, 4
cmp edi, ebx
jne 0x40d0df
push ebx
mov dword [ebp + 0x18], esi
mov dword [ebp + 0x14], ebx
push 0x478b4a
mov ecx, ebp
mov byte [ebp + 4], bl
call fcn.004036c0
cmp dword [esp + 0x34], 0x10
jb 0x40d224
mov eax, dword [esp + 0x20]
push eax
jmp 0x40d21c
lea ecx, [esp + 0x18]
push ecx
push edi
mov dword [esp + 0x20], 0x288
call sub.IPHLPAPI.DLL_GetAdaptersInfo
cmp eax, 0x6f
jne 0x40d11e
push edi
call fcn.0044cf4b
mov edx, dword [esp + 0x1c]
push edx
call fcn.0044f3bc
mov edi, eax
add esp, 8
cmp edi, ebx
jne 0x40d11e
push 0x478b4a
mov ecx, ebp
call fcn.00402720
jmp 0x40d0ca
lea ecx, [esp + 0x18]
push ecx
push edi
call sub.IPHLPAPI.DLL_GetAdaptersInfo
test eax, eax
je 0x40d154
push edi
call fcn.0044cf4b
add esp, 4
push 0xffffffffffffffff
push ebx
lea edx, [esp + 0x24]
mov dword [ebp + 0x18], esi
mov dword [ebp + 0x14], ebx
push edx
mov ecx, ebp
mov byte [ebp + 4], 0
call fcn.004035e0
jmp 0x40d0ca
mov dword [esp + 0x14], 0xffffffff
mov esi, edi
test edi, edi
je 0x40d1a8
lea ecx, [esi + 8]
call fcn.0040cf30
test al, al
je 0x40d199
mov eax, dword [esi + 0x19c]
cmp eax, dword [esp + 0x14]
jae 0x40d199
mov ebx, dword [esi + 0x190]
push ebx
lea ecx, [esi + 0x194]
push ecx
lea edx, [esp + 0x40]
push edx
mov dword [esp + 0x20], eax
call fcn.0044d4a0
add esp, 0xc
mov esi, dword [esi]
test esi, esi
jne 0x40d162
push edi
call fcn.0044cf4b
add esp, 4
xor esi, esi
test ebx, ebx
jbe 0x40d1ee
mov edi, edi
movzx eax, byte [esp + esi + 0x38]
push eax
push str._02x
lea ecx, [esp + 0x48]
push 0x10
push ecx
call fcn.0044d461
lea eax, [esp + 0x50]
add esp, 0x10
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x40d1d1
sub eax, edx
push eax
lea edx, [esp + 0x44]
push edx
lea ecx, [esp + 0x24]
call fcn.004056d0
inc esi
cmp esi, ebx
jb 0x40d1b0
push 0xffffffffffffffff
push 0
lea eax, [esp + 0x24]
mov dword [ebp + 0x18], 0xf
mov dword [ebp + 0x14], 0
push eax
mov ecx, ebp
mov byte [ebp + 4], 0
call fcn.004035e0
cmp dword [esp + 0x34], 0x10
jb 0x40d224
mov ecx, dword [esp + 0x20]
push ecx
call fcn.0042bced
add esp, 4
mov eax, ebp
mov ecx, dword [esp + 0x54]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
mov ecx, dword [esp + 0x3c]
xor ecx, esp
call fcn.0044b1f7
add esp, 0x4c
ret
Function at 0x40d350
Capabilities:
Access peb ldr_data
Get ntdll base address

Disassembly:
push 0xffffffffffffffff
push 0x46d717
mov eax, dword fs:[0]
push eax
push ebx
push esi
push edi
mov eax, dword [0x48b998]
xor eax, esp
push eax
lea eax, [esp + 0x10]
mov dword fs:[0], eax
mov esi, dword [esp + 0x20]
mov dword [esi], vtable.W3Client.0
xor ebx, ebx
mov edi, 0xf
mov dword [esi + 0x28], edi
mov dword [esi + 0x24], ebx
mov byte [esi + 0x14], bl
mov dword [esp + 0x18], ebx
mov dword [esi + 0x44], edi
mov dword [esi + 0x40], ebx
mov byte [esi + 0x30], bl
mov dword [esi + 0x60], edi
mov dword [esi + 0x5c], ebx
mov byte [esi + 0x4c], bl
mov dword [esi + 0x7c], edi
mov dword [esi + 0x78], ebx
mov byte [esi + 0x68], bl
mov dword [esi + 0x98], edi
mov dword [esi + 0x94], ebx
mov byte [esi + 0x84], bl
lea eax, [esi + 0xa4]
push eax
mov byte [esp + 0x1c], 4
call fcn.0040db30
lea ecx, [esi + 0xc0]
push ecx
mov byte [esp + 0x1c], 5
call fcn.0040db30
mov dword [esi + 0xf8], edi
mov dword [esi + 0xf4], ebx
mov byte [esi + 0xe4], bl
mov dword [esi + 4], ebx
mov dword [esi + 8], ebx
mov dword [esi + 0xc], ebx
mov byte [esi + 0xdc], 1
mov byte [esi + 0xfc], bl
mov eax, esi
mov ecx, dword [esp + 0x10]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
add esp, 0xc
ret 4
Function at 0x40f7c0
Capabilities:
Timestomp file

Disassembly:
sub esp, 0x2c
push esi
push edi
push 0
push 0
push 3
push 0
push 0
push 0xc0000000
push eax
mov esi, ecx
call dword [sym.imp.KERNEL32.dll_CreateFileW]
lea ecx, [esp + 0x20]
push ecx
mov edi, eax
lea edx, [esp + 0x1c]
push edx
lea eax, [esp + 0x30]
push eax
push edi
call dword [sym.imp.KERNEL32.dll_GetFileTime]
lea ecx, [esp + 0x10]
push ecx
push esi
shr esi, 0x10
push esi
call dword [sym.imp.KERNEL32.dll_DosDateTimeToFileTime]
lea edx, [esp + 8]
push edx
lea eax, [esp + 0x14]
push eax
call dword [sym.imp.KERNEL32.dll_LocalFileTimeToFileTime]
lea ecx, [esp + 8]
push ecx
lea edx, [esp + 0x1c]
push edx
mov eax, ecx
push eax
push edi
call dword [sym.imp.KERNEL32.dll_SetFileTime]
push edi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
pop edi
pop esi
add esp, 0x2c
ret
Function at 0x40f870
Capabilities:
Check if file exists
Get file attributes

Disassembly:
push 0xffffffffffffffff
push 0x46e82e
mov eax, dword fs:[0]
push eax
sub esp, 0x28
push ebx
push ebp
push esi
push edi
mov eax, dword [0x48b998]
xor eax, esp
push eax
lea eax, [esp + 0x3c]
mov dword fs:[0], eax
mov edi, dword [esp + 0x4c]
lea ebp, [edi + 8]
mov dword [edi], vtable.Log.0
mov eax, 7
xor ebx, ebx
xor ecx, ecx
mov dword [ebp + 0x18], eax
mov dword [ebp + 0x14], ebx
mov word [ebp + 4], cx
mov dword [esp + 0x44], ebx
xor edx, edx
mov dword [edi + 0x3c], eax
mov dword [edi + 0x38], ebx
mov word [edi + 0x28], dx
mov byte [esp + 0x44], 1
mov dword [edi + 4], ebx
mov dword [edi + 0x44], ebx
mov byte [edi + 0x48], 1
cmp dword [0x490ef0], ebx
jne 0x40f8fb
push 1
call fcn.0042bcbe
add esp, 4
cmp eax, ebx
je 0x40f8f5
mov byte [eax], bl
mov dword [0x490ef0], eax
jmp 0x40f8fb
mov dword [0x490ef0], ebx
mov al, byte [0x490ef4]
push ebx
push ebx
push ebx
mov byte [esp + 0x27], al
call dword [sym.imp.KERNEL32.dll_CreateMutexW]
mov dword [edi + 0x4c], eax
cmp eax, ebx
je 0x40fa1c
cmp byte [esp + 0x1b], bl
je 0x40fa1c
cmp dword [0x490ef0], ebx
jne 0x40f947
push 1
call fcn.0042bcbe
add esp, 4
cmp eax, ebx
je 0x40f941
mov byte [eax], bl
mov dword [0x490ef0], eax
jmp 0x40f947
mov dword [0x490ef0], ebx
lea esi, [esp + 0x20]
call fcn.0040f840
push 0xffffffffffffffff
push ebx
push eax
mov ecx, ebp
mov byte [esp + 0x50], 2
call fcn.004039d0
mov esi, 8
mov byte [esp + 0x44], 1
cmp dword [esp + 0x38], esi
jb 0x40f97d
mov ecx, dword [esp + 0x24]
push ecx
call fcn.0042bced
add esp, 4
sub esp, 0x1c
mov ecx, esp
mov dword [esp + 0x38], esp
push 0xffffffffffffffff
push ebx
xor edx, edx
mov dword [ecx + 0x18], 7
mov dword [ecx + 0x14], ebx
push ebp
mov word [ecx + 4], dx
call fcn.004039d0
lea eax, [esp + 0x3c]
push eax
call fcn.00408470
add esp, 0x20
cmp dword [eax + 0x18], esi
jb 0x40f9b6
mov eax, dword [eax + 4]
jmp 0x40f9b9
add eax, 4
push eax
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
je 0x40f9ce
mov byte [esp + 0x1b], 1
test al, 0x10
jne 0x40f9d2
mov byte [esp + 0x1b], bl
cmp dword [esp + 0x38], esi
jb 0x40f9e5
mov ecx, dword [esp + 0x24]
push ecx
call fcn.0042bced
add esp, 4
cmp byte [esp + 0x1b], bl
jne 0x40fa15
sub esp, 0x1c
mov ecx, esp
mov dword [esp + 0x38], esp
push 0xffffffffffffffff
push ebx
xor edx, edx
mov dword [ecx + 0x18], 7
mov dword [ecx + 0x14], ebx
push ebp
mov word [ecx + 4], dx
call fcn.004039d0
call fcn.00408c80
add esp, 0x1c
mov ecx, edi
call fcn.0040fad0
mov eax, edi
mov ecx, dword [esp + 0x3c]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x34
ret 4
Function at 0x40fed0
Capabilities:
Get number of processors
Resolve function by parsing pe exports

Disassembly:
push 0xffffffffffffffff
push 0x46e43e
mov eax, dword fs:[0]
push eax
sub esp, 0xb8
mov eax, dword [0x48b998]
xor eax, esp
mov dword [esp + 0xb4], eax
push ebx
push ebp
push esi
mov eax, dword [0x48b998]
xor eax, esp
push eax
lea eax, [esp + 0xc8]
mov dword fs:[0], eax
lea eax, [esp + 0x7c]
push eax
call fcn.0044b461
add esp, 4
lea ecx, [esp + 0x18]
push ecx
call dword [sym.imp.KERNEL32.dll_GetLocalTime]
movzx edx, word [esp + 0x26]
movzx eax, word [esp + 0x24]
movzx ecx, word [esp + 0x22]
push edx
movzx edx, word [esp + 0x24]
push eax
movzx eax, word [esp + 0x26]
push ecx
movzx ecx, word [esp + 0x26]
push edx
push eax
movzx eax, word [esp + 0x2c]
push ecx
cdq
mov ecx, 0x64
idiv ecx
push edx
push str.__02d__02d__02d__02d__02d__02d_
lea edx, [esp + 0xa4]
push 0x20
push edx
call fcn.00452678
push str.CUL_
lea eax, [edi + 8]
push eax
lea ecx, [esp + 0x90]
push ecx
call fcn.0040b830
lea edx, [esp + 0xb8]
push edx
push eax
lea eax, [esp + 0x80]
xor ebx, ebx
push eax
mov dword [esp + 0x110], ebx
call fcn.0040b830
add esp, 0x40
push str..log
push eax
lea ecx, [esp + 0x30]
push ecx
mov byte [esp + 0xdc], 1
call fcn.0040b830
add esp, 0xc
push 0xffffffffffffffff
push ebx
lea esi, [edi + 0x24]
push eax
mov ecx, esi
mov byte [esp + 0xdc], 2
call fcn.004039d0
mov ebp, 8
cmp dword [esp + 0x40], ebp
jb 0x40ffe9
mov edx, dword [esp + 0x2c]
push edx
call fcn.0042bced
add esp, 4
xor ecx, ecx
mov eax, 7
mov dword [esp + 0x40], eax
mov dword [esp + 0x3c], ebx
mov word [esp + 0x2c], cx
cmp dword [esp + 0x5c], ebp
jb 0x410015
mov edx, dword [esp + 0x48]
push edx
call fcn.0042bced
add esp, 4
mov eax, 7
xor ecx, ecx
mov dword [esp + 0xd0], 0xffffffff
mov dword [esp + 0x5c], eax
mov dword [esp + 0x58], ebx
mov word [esp + 0x48], cx
cmp dword [esp + 0x78], ebp
jb 0x410047
mov edx, dword [esp + 0x64]
push edx
call fcn.0042bced
add esp, 4
mov eax, 7
sub esp, 0x1c
xor ecx, ecx
mov dword [esp + 0x30], esp
mov word [esp + 0x80], cx
mov ecx, esp
sub esp, 0x1c
mov dword [esp + 0x4c], esp
mov dword [esp + 0x4c], ecx
mov ecx, esp
push 0xffffffffffffffff
push ebx
xor edx, edx
mov dword [ecx + 0x18], eax
mov dword [ecx + 0x14], ebx
push esi
mov dword [esp + 0xbc], eax
mov dword [esp + 0xb8], ebx
mov word [ecx + 4], dx
call fcn.004039d0
mov eax, dword [esp + 0x4c]
push eax
call fcn.00408470
add esp, 0x20
call fcn.00408c80
add esp, 0x1c
cmp dword [esi + 0x18], ebp
jb 0x4100a9
mov esi, dword [esi + 4]
jmp 0x4100ac
add esi, 4
push 0x20
push str.a__ccsUTF_8
push esi
call fcn.004519a1
add esp, 0xc
mov dword [edi + 0x44], eax
mov ecx, dword [esp + 0xc8]
mov dword fs:[0], ecx
pop ecx
pop esi
pop ebp
pop ebx
mov ecx, dword [esp + 0xb4]
xor ecx, esp
call fcn.0044b1f7
add esp, 0xc4
ret
Function at 0x410200
Capabilities:
Get file size

Disassembly:
push ebp
mov ebp, esp
push ecx
mov eax, dword [0x48b998]
xor eax, ebp
mov dword [ebp - 4], eax
cmp byte [ecx + 0x38], 0
push esi
push edi
je 0x41029e
cmp dword [ecx + 0x34], 0x10
jb 0x410225
mov edi, dword [ecx + 0x20]
jmp 0x410228
lea edi, [ecx + 0x20]
test edi, edi
je 0x41023e
push edi
call dword [sym.imp.KERNEL32.dll_lstrlenA]
mov esi, eax
inc esi
cmp esi, 0x3fffffff
jle 0x410242
xor eax, eax
jmp 0x410256
lea eax, [esi + esi]
call fcn.00453210
mov eax, esp
push 3
push esi
push edi
push eax
call fcn.00410160
push 0
push 0x80
push 3
push 0
push 1
push SysReAllocStringLen
push eax
call dword [sym.imp.KERNEL32.dll_CreateFileW]
mov edi, eax
push 0
push edi
call dword [sym.imp.KERNEL32.dll_GetFileSize]
mov esi, eax
push edi
add esi, 0x1800
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov eax, esi
lea esp, [ebp - 0xc]
pop edi
pop esi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0044b1f7
mov esp, ebp
pop ebp
ret
mov eax, str.__MULTI_PARTS_FORM_DATA_BOUNDARY
lea esi, [eax + 1]
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x4102a6
mov edx, dword [ecx + 0x30]
sub eax, esi
add edx, dword [ecx + 0x14]
lea eax, [edx + eax + 0x31]
lea esp, [ebp - 0xc]
pop edi
pop esi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0044b1f7
mov esp, ebp
pop ebp
ret
Function at 0x4102d0
Capabilities:
Get file size
Read file on windows

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x10
mov eax, dword [0x48b998]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push esi
mov esi, ecx
cmp byte [esi + 0x38], 0
push edi
mov edi, 0x10
je 0x410425
cmp dword [esi + 0x34], edi
jb 0x4102fe
mov ecx, dword [esi + 0x20]
jmp 0x410301
lea ecx, [esi + 0x20]
cmp dword [esi + 0x18], edi
jb 0x41030b
mov eax, dword [esi + 4]
jmp 0x41030e
lea eax, [esi + 4]
push ecx
push eax
mov eax, dword [ebp + 8]
push str.__MULTI_PARTS_FORM_DATA_BOUNDARY
push str.___s_r_nContent_Disposition:_form_data__name__s___filename__s__r_n_r_n
push edx
push eax
call fcn.0044d461
mov eax, str.__MULTI_PARTS_FORM_DATA_BOUNDARY
add esp, 0x18
lea edx, [eax + 1]
nop
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x410330
mov ecx, dword [esi + 0x30]
add ecx, dword [esi + 0x14]
sub eax, edx
lea ebx, [ecx + eax + 0x3c]
mov dword [ebp - 0x10], ebx
cmp dword [esi + 0x34], edi
jb 0x410350
mov esi, dword [esi + 0x20]
jmp 0x410353
add esi, 0x20
test esi, esi
jne 0x41035b
xor eax, eax
jmp 0x410385
push esi
call dword [sym.imp.KERNEL32.dll_lstrlenA]
mov edi, eax
inc edi
cmp edi, 0x3fffffff
jle 0x410371
xor eax, eax
jmp 0x410385
lea eax, [edi + edi]
call fcn.00453210
mov eax, esp
push 3
push edi
push esi
push eax
call fcn.00410160
push 0
push 0x80
push 3
push 0
push 1
push SysReAllocStringLen
push eax
call dword [sym.imp.KERNEL32.dll_CreateFileW]
mov edi, eax
test edi, edi
je 0x410475
cmp edi, 0xffffffff
je 0x410475
push 0
push edi
call dword [sym.imp.KERNEL32.dll_GetFileSize]
mov edx, dword [ebp + 8]
xor esi, esi
push esi
mov dword [ebp - 0xc], eax
lea eax, [ebp - 8]
push eax
push 0x400
add ebx, edx
push ebx
push edi
mov dword [ebp - 8], esi
call dword [sym.imp.KERNEL32.dll_ReadFile]
test eax, eax
je 0x410408
lea ecx, [ecx]
mov eax, dword [ebp - 8]
test eax, eax
jbe 0x410408
cmp esi, dword [ebp - 0xc]
ja 0x410408
push 0
lea ecx, [ebp - 8]
push ecx
add esi, eax
push 0x400
lea edx, [esi + ebx]
push edx
push edi
call dword [sym.imp.KERNEL32.dll_ReadFile]
test eax, eax
jne 0x4103e0
mov eax, dword [ebp - 0x10]
mov edx, dword [ebp + 8]
add esi, eax
mov ecx, 0xa0d
push edi
mov word [esi + edx], cx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
lea eax, [esi + 2]
jmp 0x410477
cmp dword [esi + 0x34], edi
jb 0x41042f
mov ecx, dword [esi + 0x20]
jmp 0x410432
lea ecx, [esi + 0x20]
cmp dword [esi + 0x18], edi
jb 0x41043c
mov eax, dword [esi + 4]
jmp 0x41043f
lea eax, [esi + 4]
push ecx
push eax
mov eax, dword [ebp + 8]
push str.__MULTI_PARTS_FORM_DATA_BOUNDARY
push str.___s_r_nContent_Disposition:_form_data__name__s__r_n_r_n_s_r_n
push edx
push eax
call fcn.0044d461
mov eax, str.__MULTI_PARTS_FORM_DATA_BOUNDARY
add esp, 0x18
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x410460
mov ecx, dword [esi + 0x30]
sub eax, edx
add ecx, dword [esi + 0x14]
lea eax, [ecx + eax + 0x31]
jmp 0x410477
mov eax, ebx
lea esp, [ebp - 0x1c]
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0044b1f7
mov esp, ebp
pop ebp
ret 4
Function at 0x413ab0
Capabilities:
Read data from internet
Receive data

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x46e3b0
mov eax, dword fs:[0]
push eax
sub esp, 0x14
push ebx
push esi
push edi
mov eax, dword [0x48b998]
xor eax, ebp
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov dword [ebp - 0x10], esp
mov eax, dword [ebp + 8]
xor esi, esi
mov dword [ebp - 4], esi
mov eax, dword [eax + 0xc]
mov dword [ebp - 0x14], esi
cmp eax, esi
jne 0x413b02
push 0x486048
lea ecx, [ebp - 0x18]
push ecx
mov dword [ebp - 0x18], str.connection_failed...
call fcn.0044aada
mov ecx, dword [ebp + 0xc]
lea edx, [ebp - 0x14]
push edx
push 0x400
push ecx
push eax
call dword [sym.imp.WININET.dll_InternetReadFile]
test eax, eax
jne 0x413b85
push 0x486048
lea edx, [ebp - 0x1c]
push edx
mov dword [ebp - 0x14], esi
mov dword [ebp - 0x1c], str.response_failed...
call fcn.0044aada
mov esi, dword [ebp + 8]
mov eax, dword [esi + 0xc]
push eax
call dword [sym.imp.WININET.dll_InternetCloseHandle]
mov eax, 0x10
mov dword [esi + 0xc], 0
cmp dword [esi + 0x7c], eax
jb 0x413b55
mov edx, dword [esi + 0x68]
jmp 0x413b58
lea edx, [esi + 0x68]
cmp dword [esi + 0x28], eax
jb 0x413b62
mov ecx, dword [esi + 0x14]
jmp 0x413b65
lea ecx, [esi + 0x14]
mov eax, dword [ebp - 0x20]
push eax
mov eax, dword [esi + 0xa0]
push eax
mov eax, dword [esi + 0x9c]
push eax
call fcn.00410710
add esp, 0xc
mov eax, 0x413b85
ret
mov eax, dword [ebp - 0x14]
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8

Function at 0x4162e0
Capabilities:
Hash data with crc32

Disassembly:
test ecx, ecx
jne 0x4162e7
xor eax, eax
ret
mov eax, dword [esp + 4]
jmp fcn.004162f0
Function at 0x41af60
Capabilities:
Extract resource via kernel32 functions

Disassembly:
push ebx
mov ebx, dword [esp + 8]
push edi
mov edi, dword [esp + 0x10]
push edi
push ebx
call dword [sym.imp.KERNEL32.dll_LoadResource]
test eax, eax
jne 0x41af79
pop edi
pop ebx
ret
push esi
push eax
call dword [sym.imp.KERNEL32.dll_LockResource]
mov esi, eax
test esi, esi
je 0x41afb4
push edi
push ebx
call dword [sym.imp.KERNEL32.dll_SizeofResource]
mov ecx, dword [esp + 0x18]
add eax, esi
and ecx, 0xf
jbe 0x41afb0
lea ebx, [ebx]
cmp esi, eax
jae 0x41afb4
sub ecx, 1
movzx edx, word [esi]
lea esi, [esi + edx*2 + 2]
jne 0x41afa0
cmp esi, eax
jb 0x41afba
pop esi
pop edi
xor eax, eax
pop ebx
ret
movzx eax, word [esi]
neg eax
sbb eax, eax
and eax, esi
pop esi
pop edi
pop ebx
ret

Function at 0x41b550
Capabilities:
Extract resource via kernel32 functions

Disassembly:
push 0xffffffffffffffff
push 0x46a568
mov eax, dword fs:[0]
push eax
push ebx
push esi
push edi
mov eax, dword [0x48b998]
xor eax, esp
push eax
lea eax, [esp + 0x10]
mov dword fs:[0], eax
mov eax, dword [esp + 0x3c]
mov esi, eax
shr esi, 4
and eax, 0xf
inc esi
cmp dword [esp + 0x38], 0x10
mov ebx, eax
mov eax, dword [esp + 0x24]
mov dword [esp + 0x18], 0
jae 0x41b599
lea eax, [esp + 0x24]
push 3
push 0
push eax
call dword [sym.imp.KERNEL32.dll_LoadLibraryExA]
mov edi, eax
push 0x800
movzx eax, si
push eax
push 6
push edi
call dword [sym.imp.KERNEL32.dll_FindResourceExA]
test eax, eax
je 0x41b5eb
push eax
push edi
call dword [sym.imp.KERNEL32.dll_LoadResource]
test eax, eax
je 0x41b5eb
mov esi, eax
xor ecx, ecx
lea esp, [esp]
movzx eax, word [esi]
add esi, 2
test ax, ax
je 0x41b5e5
movzx edi, ax
cmp ecx, ebx
je 0x41b616
lea esi, [esi + edi*2]
inc ecx
cmp ecx, 0x10
jl 0x41b5d0
cmp dword [esp + 0x38], 0x10
jb 0x41b5ff
mov edx, dword [esp + 0x24]
push edx
call fcn.0042bced
add esp, 4
xor eax, eax
mov ecx, dword [esp + 0x10]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
add esp, 0xc
ret 0x20
xor ecx, ecx
lea eax, [edi + 1]
mov edx, 2
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.0042bcf8
push edi
mov ebx, eax
push esi
push ebx
call fcn.0044b206
xor eax, eax
add esp, 0x10
mov word [ebx + edi*2], ax
cmp dword [esp + 0x38], 0x10
jb 0x41b656
mov ecx, dword [esp + 0x24]
push ecx
call fcn.0042bced
add esp, 4
mov eax, ebx
mov ecx, dword [esp + 0x10]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
add esp, 0xc
ret 0x20
Function at 0x41e120
Capabilities:
Get common file path

Disassembly:
push 0xffffffffffffffff
push 0x46aa27
mov eax, dword fs:[0]
push eax
sub esp, 0xf0
mov eax, dword [0x48b998]
xor eax, esp
mov dword [esp + 0xec], eax
push ebx
push esi
mov eax, dword [0x48b998]
xor eax, esp
push eax
lea eax, [esp + 0xfc]
mov dword fs:[0], eax
xor ebx, ebx
push ebx
push 0x14
lea eax, [esp + 0x38]
push eax
push ebx
call dword [sym.imp.SHELL32.dll_SHGetSpecialFolderPathA]
test eax, eax
je 0x41e344
mov esi, 0xf
lea eax, [esp + 0x30]
mov dword [esp + 0x2c], esi
mov dword [esp + 0x28], ebx
mov byte [esp + 0x18], bl
lea edx, [eax + 1]
lea ebx, [ebx]
mov cl, byte [eax]
inc eax
cmp cl, bl
jne 0x41e190
sub eax, edx
push eax
lea ecx, [esp + 0x34]
push ecx
lea ecx, [esp + 0x1c]
call fcn.004036c0
sub esp, 0x1c
mov ecx, esp
mov dword [esp + 0x2c], esp
push 8
mov dword [ecx + 0x18], esi
mov dword [ecx + 0x14], ebx
push str.MSYH.TTF
mov dword [esp + 0x128], ebx
mov byte [ecx + 4], bl
call fcn.004036c0
sub esp, 0x1c
mov ecx, esp
mov dword [esp + 0x44], esp
push 0xffffffffffffffff
push ebx
lea edx, [esp + 0x54]
mov dword [ecx + 0x18], esi
mov dword [ecx + 0x14], ebx
push edx
mov byte [esp + 0x148], 1
mov byte [ecx + 4], bl
call fcn.004035e0
mov byte [esp + 0x13c], bl
call fcn.0041daa0
add esp, 0x38
cmp al, bl
jne 0x41e303
sub esp, 0x1c
mov ecx, esp
mov dword [esp + 0x28], esp
push 8
mov dword [ecx + 0x18], esi
mov dword [ecx + 0x14], ebx
push str.MSYH.TTC
mov byte [ecx + 4], bl
call fcn.004036c0
sub esp, 0x1c
mov ecx, esp
mov dword [esp + 0x48], esp
push 0xffffffffffffffff
push ebx
lea eax, [esp + 0x54]
mov dword [ecx + 0x18], esi
mov dword [ecx + 0x14], ebx
push eax
mov byte [esp + 0x148], 2
mov byte [ecx + 4], bl
call fcn.004035e0
mov byte [esp + 0x13c], bl
call fcn.0041daa0
add esp, 0x38
cmp al, bl
jne 0x41e303
sub esp, 0x1c
mov ecx, esp
mov dword [esp + 0x28], esp
push str.simsun.ttc
call fcn.00402720
sub esp, 0x1c
mov ecx, esp
mov dword [esp + 0x48], esp
push 0xffffffffffffffff
push ebx
lea edx, [esp + 0x54]
mov dword [ecx + 0x18], esi
mov dword [ecx + 0x14], ebx
push edx
mov byte [esp + 0x148], 3
mov byte [ecx + 4], bl
call fcn.004035e0
mov byte [esp + 0x13c], bl
call fcn.0041daa0
add esp, 0x38
cmp al, bl
jne 0x41e2fc
sub esp, 0x1c
mov ecx, esp
mov dword [esp + 0x28], esp
push str.simsun.ttf
call fcn.00402720
sub esp, 0x1c
lea eax, [esp + 0x4c]
mov ecx, esp
mov dword [esp + 0x48], esp
push eax
mov byte [esp + 0x140], 4
call fcn.00402760
mov byte [esp + 0x13c], bl
call fcn.0041daa0
add esp, 0x38
cmp al, bl
jne 0x41e2fc
mov esi, 3
jmp 0x41e308
mov esi, 2
jmp 0x41e308
mov esi, 1
cmp dword [esp + 0x2c], 0x10
jb 0x41e31c
mov ecx, dword [esp + 0x18]
push ecx
call fcn.0042bced
add esp, 4
mov eax, esi
mov ecx, dword [esp + 0xfc]
mov dword fs:[0], ecx
pop ecx
pop esi
pop ebx
mov ecx, dword [esp + 0xec]
xor ecx, esp
call fcn.0044b1f7
add esp, 0xfc
ret
mov eax, 1
jmp 0x41e31e
Function at 0x420ef7
Capabilities:
Create thread

Disassembly:
mov eax, dword [esp + 4]
sub esp, 0x10
push esi
mov esi, ecx
cmp eax, 0x53c
jne 0x420f1f
push 5
call fcn.004305be
mov eax, dword [esi + 0x20]
push 1
push 0
push eax
call dword [sym.imp.USER32.dll_InvalidateRect]
xor eax, eax
pop esi
add esp, 0x10
ret 8
cmp eax, 0x53d
jne 0x420f3b
mov ecx, dword [esp + 0x1c]
push ecx
mov ecx, esi
call fcn.0041f930
xor eax, eax
pop esi
add esp, 0x10
ret 8
cmp eax, 0x53f
jne 0x4210e8
mov eax, dword [esp + 0x1c]
cmp eax, 2
jne 0x420fa5
push 1
lea ecx, [esi + 0x524]
call fcn.00430600
push 0
push 0x85
mov ecx, esi
call fcn.00430406
mov ecx, eax
call fcn.004305be
push 0
push 0x3eb
mov ecx, esi
call fcn.00430406
mov ecx, eax
call fcn.004305be
push 0
push 0x44c
mov ecx, esi
call fcn.00430406
mov ecx, eax
call fcn.004305be
push 0x471444
jmp 0x421094
cmp eax, 3
jne 0x420ff1
push 0
push 0x85
call fcn.00430406
mov ecx, eax
call fcn.004305be
push 0
push 0x3eb
mov ecx, esi
call fcn.00430406
mov ecx, eax
call fcn.004305be
push 0
push 0x44c
mov ecx, esi
call fcn.00430406
mov ecx, eax
call fcn.004305be
push 0x471434
jmp 0x421094
cmp eax, 4
jne 0x42107b
push 0
push 0
push esi
push 0x420700
push 0
push 0
mov byte [esi + 0x308], 1
call dword [sym.imp.KERNEL32.dll_CreateThread]
push 0
lea ecx, [esi + 0x524]
call fcn.00430600
push 0
push 0x85
mov ecx, esi
call fcn.00430406
mov ecx, eax
call fcn.004305be
push 0x471420
push 0x3ec
mov ecx, esi
call fcn.00430406
mov ecx, eax
call fcn.0043051c
push 5
push 0x3eb
mov ecx, esi
call fcn.00430406
mov ecx, eax
call fcn.004305be
push 5
push 0x44c
mov ecx, esi
call fcn.00430406
mov ecx, eax
call fcn.004305be
jmp 0x4210a7
push 1
lea ecx, [esi + 0x524]
call fcn.00430600
mov ecx, esi
call fcn.0041f4a0
push 0x471404
push 0x3ec
mov ecx, esi
call fcn.00430406
mov ecx, eax
call fcn.0043051c
push 0x3ec
mov ecx, esi
call fcn.00430406
mov eax, dword [eax + 0x20]
lea edx, [esp + 4]
push edx
push eax
call dword [sym.imp.USER32.dll_GetWindowRect]
lea ecx, [esp + 4]
push ecx
mov ecx, esi
call fcn.0042fcc8
mov eax, dword [esi + 0x20]
push 1
lea edx, [esp + 8]
push edx
push eax
call dword [sym.imp.USER32.dll_InvalidateRect]
xor eax, eax
pop esi
add esp, 0x10
ret 8
cmp eax, 0x53e
jne 0x421104
push 0x64
mov byte [esi + 0x308], 0
call fcn.0041fd80
mov ecx, esi
call fcn.00420050
xor eax, eax
pop esi
add esp, 0x10
ret 8