joyce8/EMBER2024-capa huggingface dataset:
Function at 0x40767f
Capabilities:
Check if file exists
Get file system object information

Disassembly:
push 0x2f4
mov eax, 0x420b83
call fcn.0041f61b
mov ebx, ecx
push 0x3f2
push dword [ebx + 4]
call dword [sym.imp.USER32.dll_GetDlgItem]
test eax, eax
mov dword [ebp - 0x2d0], eax
je 0x4078b4
push 0x406a4a
push 0xfffffffffffffffc
push eax
call dword [sym.imp.USER32.dll_SetWindowLongW]
push 1
push 1
push 0x21
push 0x20
push 0x20
mov dword [0x432fd0], eax
call dword [sym.imp.COMCTL32.dll_ImageList_Create]
mov edi, dword [sym.imp.SHELL32.dll_SHGetFileInfoW]
push 0x110
push 0x2b4
mov dword [ebx + 0x24], eax
lea eax, [ebp - 0x2cc]
push eax
push 0x80
push str.file.txt
call edi
push dword [ebp - 0x2cc]
mov esi, dword [sym.imp.COMCTL32.dll_ImageList_ReplaceIcon]
push 0xffffffffffffffff
push dword [ebx + 0x24]
call esi
push 0x110
push 0x2b4
lea eax, [ebp - 0x2cc]
push eax
push 0x80
push str.file.dmp
call edi
push dword [ebp - 0x2cc]
push 0xffffffffffffffff
push dword [ebx + 0x24]
call esi
push 0x110
push 0x2b4
lea eax, [ebp - 0x2cc]
push eax
push 0x80
push str.file.tlg
call edi
push dword [ebp - 0x2cc]
push 0xffffffffffffffff
push dword [ebx + 0x24]
call esi
mov esi, dword [sym.imp.USER32.dll_SendMessageW]
push 7
pop ecx
xor eax, eax
lea edi, [ebp - 0x2fc]
rep stosd dword es:[edi], eax
lea eax, [ebp - 0x300]
push eax
push 0
push 0x1061
push dword [ebp - 0x2d0]
mov dword [ebp - 0x300], 4
mov dword [ebp - 0x2f4], str.name
call esi
push dword [ebx + 0x24]
push 0
push 0x1003
push dword [ebp - 0x2d0]
call esi
xor edi, edi
inc edi
lea eax, [ebp - 0x2dc]
push edi
push eax
call fcn.004010c5
mov ebx, eax
call fcn.00403afc
and dword [ebp - 4], 0
push 0
push dword [ebp - 0x2d0]
mov ecx, eax
call fcn.004089c8
or dword [ebp - 4], 0xffffffff
mov eax, dword [ebp - 0x2dc]
add eax, 0xfffffff0
call fcn.004016af
lea eax, [ebp - 0x2d8]
push 2
push eax
call fcn.004010c5
mov ebx, eax
call fcn.00403afc
mov dword [ebp - 4], edi
push dword [ebp - 0x2d8]
mov esi, dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
call esi
test eax, eax
je 0x407824
push 0
push dword [ebp - 0x2d0]
lea ecx, [ebp - 0x2d8]
call fcn.004089c8
lea eax, [ebp - 0x2d4]
push 0x60
push eax
call fcn.004010c5
call fcn.00403ad7
mov byte [ebp - 4], 2
push dword [ebp - 0x2d4]
call esi
test eax, eax
je 0x407859
push edi
push dword [ebp - 0x2d0]
lea ecx, [ebp - 0x2d4]
call fcn.004089c8
cmp dword [0x433018], 0
je 0x407898
lea eax, [ebp - 0x2e0]
push 0x167
push eax
call fcn.004010c5
call fcn.00403ad7
push edi
push dword [ebp - 0x2d0]
mov ecx, eax
mov byte [ebp - 4], 3
call fcn.004089c8
mov eax, dword [ebp - 0x2e0]
add eax, 0xfffffff0
call fcn.004016af
mov eax, dword [ebp - 0x2d4]
add eax, 0xfffffff0
call fcn.004016af
mov eax, dword [ebp - 0x2d8]
add eax, 0xfffffff0
call fcn.004016af
call fcn.0041f69e
ret
Function at 0x4090bf
Capabilities:
Create process on windows

Disassembly:
push 0x64
mov eax, 0x420e3a
call fcn.0041f5b2
call fcn.004010c5
mov ebx, eax
call fcn.004041d9
test eax, eax
je 0x409204
push 0x40
xor esi, esi
lea eax, [ebp - 0x6c]
push esi
push eax
mov dword [ebp - 0x70], 0x44
call sub.MSVCR80.dll_memset
mov dword [ebp - 0x28], esi
xor eax, eax
lea edi, [ebp - 0x24]
stosd dword es:[edi], eax
stosd dword es:[edi], eax
xor ebx, ebx
inc ebx
add esp, 0xc
lea ecx, [ebp - 0x18]
stosd dword es:[edi], eax
mov dword [ebp - 0x44], ebx
mov word [ebp - 0x40], bx
call fcn.00412430
lea ecx, [ebp - 0x14]
push 0x427934
push ecx
mov ecx, eax
mov dword [ebp - 4], esi
call fcn.00404a08
lea ecx, [ebp - 0x10]
push str.___manual_0
push ecx
mov ecx, eax
mov byte [ebp - 4], bl
call fcn.004049ac
add esp, 0x10
mov eax, dword [ebp - 0x14]
add eax, 0xfffffff0
call fcn.004016af
mov byte [ebp - 4], 4
mov eax, dword [ebp - 0x18]
add eax, 0xfffffff0
call fcn.004016af
mov eax, dword [ebp - 0x10]
cmp dword [eax - 4], ebx
jle 0x40916e
push dword [eax - 0xc]
lea eax, [ebp - 0x10]
push eax
call fcn.004015c7
mov eax, dword [ebp - 0x10]
lea ecx, [ebp - 0x28]
push ecx
lea ecx, [ebp - 0x70]
push ecx
push esi
push esi
push esi
push esi
push esi
push esi
push eax
push esi
call dword [sym.imp.KERNEL32.dll_CreateProcessW]
cmp dword [ebp - 0x10], esi
mov edi, eax
jne 0x40918f
xor eax, eax
jmp 0x409199
push dword [ebp - 0x10]
call dword [sym.imp.MSVCR80.dll_wcslen]
pop ecx
lea edx, [ebp - 0x10]
call fcn.004014c7
cmp edi, esi
je 0x4091e0
push 0xffffffffffffffff
push dword [ebp - 0x28]
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
push dword [ebp - 0x28]
mov esi, dword [sym.imp.KERNEL32.dll_CloseHandle]
call esi
push dword [ebp - 0x24]
call esi
push 0x427938
push 0x42655c
call fcn.0041524e
mov eax, dword [ebp - 0x10]
pop ecx
pop ecx
add eax, 0xfffffff0
call fcn.004016af
mov eax, ebx
jmp 0x409206
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.UpdateCrashApp:_launch_txupd_failed__lu
push 0x42655c
call fcn.0041524e
mov eax, dword [ebp - 0x10]
add esp, 0xc
add eax, 0xfffffff0
call fcn.004016af
xor eax, eax
call fcn.0041f68a
ret
Function at 0x40b431
Capabilities:
Create thread
Resume thread

Disassembly:
push ebp
mov ebp, esp
or dword [esi + 0x40], 0xffffffff
mov dword [esi + 0x20], eax
mov eax, dword [ebp + 0xc]
mov dword [esi + 0x34], eax
mov eax, dword [ebp + 0x10]
push ebx
mov dword [esi + 0x38], eax
mov eax, dword [ebp + 8]
xor ebx, ebx
cmp byte [esi + 0x2c], bl
mov dword [esi + 0x3c], eax
jne 0x40b468
push str.GIF_not_initialized
push 0x4264ac
call fcn.0041524e
pop ecx
pop ecx
jmp 0x40b4b0
cmp dword [esi + 0x24], 1
jbe 0x40b4b0
cmp dword [esi + 0x14], ebx
jne 0x40b4b0
lea eax, [ebp + 8]
push eax
push 4
push esi
push 0x40b6b8
push ebx
push ebx
mov dword [ebp + 8], ebx
call dword [sym.imp.MSVCR80.dll__beginthreadex]
add esp, 0x18
cmp eax, ebx
mov dword [esi + 0x14], eax
jne 0x40b4a9
push str.Couldnt_start_a_GIF_animation_thread_n
push 0x4264ac
call fcn.0041524e
pop ecx
pop ecx
mov al, 1
jmp 0x40b4b2
push eax
call dword [sym.imp.KERNEL32.dll_ResumeThread]
xor al, al
pop ebx
pop ebp
ret 0xc
Function at 0x40b83a
Capabilities:
Get file version info

Disassembly:
push 0x238
mov eax, 0x420d77
call fcn.0041f61b
mov eax, dword [ebp + 0xc]
xor esi, esi
cmp eax, esi
mov dword [ebp - 0x244], eax
jne 0x40b85f
xor eax, eax
jmp 0x40ba4d
push dword [ebp + 8]
push esi
push 0x1f0fff
call dword [sym.imp.KERNEL32.dll_OpenProcess]
mov edi, eax
cmp edi, esi
je 0x40b858
push 0x208
lea eax, [ebp - 0x21e]
push esi
push eax
mov word [ebp - 0x220], si
call sub.MSVCR80.dll_memset
add esp, 0xc
push 0x104
lea eax, [ebp - 0x220]
push eax
push esi
push edi
call sub.PSAPI.DLL_GetModuleFileNameExW
test eax, eax
push edi
jne 0x40b8b0
call dword [sym.imp.KERNEL32.dll_CloseHandle]
jmp 0x40b858
call dword [sym.imp.KERNEL32.dll_CloseHandle]
lea eax, [ebp - 0x23c]
push eax
lea eax, [ebp - 0x220]
push eax
mov dword [ebp - 0x23c], esi
call sub.VERSION.dll_GetFileVersionInfoSizeW
mov edi, eax
cmp edi, esi
je 0x40b858
push edi
call fcn.0041ebe4
pop ecx
push eax
push edi
push dword [ebp - 0x23c]
mov dword [ebp - 0x228], eax
lea eax, [ebp - 0x220]
push eax
call sub.VERSION.dll_GetFileVersionInfoW
test eax, eax
je 0x40b858
lea eax, [ebp - 0x22c]
push eax
lea eax, [ebp - 0x230]
push eax
push str.VarFileInfoTranslation
push dword [ebp - 0x228]
mov dword [ebp - 0x230], esi
mov dword [ebp - 0x22c], esi
call sub.VERSION.dll_VerQueryValueW
xor edi, edi
test dword [ebp - 0x22c], 0xfffffffc
mov dword [ebp - 0x234], esi
jbe 0x40ba3b
mov eax, dword [0x432bb0]
mov ecx, 0x432bb0
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x238], eax
mov dword [ebp - 4], esi
mov eax, dword [ebp - 0x230]
lea eax, [eax + edi*4]
movzx ecx, word [eax + 2]
movzx eax, word [eax]
push ecx
push eax
lea eax, [ebp - 0x238]
push str.StringFileInfo_04x_04xCompanyName
push eax
call fcn.00405c2c
mov ebx, dword [ebp - 0x238]
add esp, 0x10
lea eax, [ebp - 0x240]
push eax
lea eax, [ebp - 0x224]
push eax
push ebx
push dword [ebp - 0x228]
mov dword [ebp - 0x224], esi
mov dword [ebp - 0x240], esi
call sub.VERSION.dll_VerQueryValueW
test eax, eax
jne 0x40b9d1
lea eax, [ebp - 0x240]
push eax
lea eax, [ebp - 0x224]
push eax
push str.StringFileInfo040904e4CompanyName
push dword [ebp - 0x228]
call sub.VERSION.dll_VerQueryValueW
test eax, eax
je 0x40b9f1
cmp dword [ebp - 0x224], esi
je 0x40b9f1
push dword [ebp - 0x244]
push dword [ebp - 0x224]
call dword [sym.imp.MSVCR80.dll_wcsstr]
test eax, eax
pop ecx
pop ecx
jne 0x40ba11
or dword [ebp - 4], 0xffffffff
lea eax, [ebx - 0x10]
call fcn.004016af
mov eax, dword [ebp - 0x22c]
inc edi
shr eax, 2
cmp edi, eax
jb 0x40b940
jmp 0x40ba3b
push dword [ebp - 0x224]
push str.company_name__s
push 0x426498
call fcn.0041524e
add esp, 0xc
lea eax, [ebx - 0x10]
mov dword [ebp - 0x234], 1
call fcn.004016af
push dword [ebp - 0x228]
call sub.MSVCR80.dll_void___cdecl_operator_delete___void__
mov eax, dword [ebp - 0x234]
pop ecx
call fcn.0041f69e
ret
Function at 0x4118e0
Capabilities:
Get number of processors

Disassembly:
mov word [esp + ebp*8 + 0x53], fs
mov ch, 9
pop eax
bound esp, qword [eax]
add dword [edx + ecx*8 + 0xfae5dd7], ebx
enter 0x862, 0xfffffffffffffff0
inc edx
jge 0x4118f9
cmp dword [esi + 0x63082e13], esp
test al, 0xc
jl 0x41196f
or esi, esp
and byte [esi], ch
js 0x41196c
fcomp dword [eax]
mov word [ecx + esi*4], es
scasd eax, dword es:[edi]
scasd eax, dword es:[edi]
xor al, 0x2e
mov al, 0x64
lock add ecx, dword [edi + eax*8 + 0x3a7b4491]
and byte cs:[ebp - 0x70], ah
add byte [ebp + edx*2 + 0x3e38755d], cl
test al, 0x65
dec eax
setl byte [ebx + 0x42aaa14d]
call 0x2b01219d
jl 0x411951
push es
xchg ebx, eax
dec ebx
inc eax
mov al, 0xa
pushfd
add ebp, ebx
cmp eax, 0x57
mov eax, 0x94380866
jge 0x41195e
pop ebp
pop eax
enter 0x2066, 0xa
and byte [edx], cl
insd dword es:[edi], dx
pop ss
jb 0x411955
pushal
fcomp dword cs:[eax]
fcomp dword [eax]
add byte [ecx + 0x6ac8a58c], bl
call 0x791921d3
jl 0x41197a
js 0x4119ea
or ebp, dword [ebx - 0x17]
outsd dx, dword [esi]
imul ebp, ecx, 0x6f
jo 0x4119dc
push 0x6b489813
sbb byte [0x67e82e7a], ch
or al, ch
sbb eax, 0x7abcb800
xchg edi, eax
sar dword gs:[edx + 0x2e], 1
pop eax
push 0xadac0318
mov al, 0x11
sub eax, 0x2e7ce58c
enter 0x380c, 0x58
lea edx, [ecx + 0x7f403ecb]
test al, 0x68
add byte [ecx], cl
jl 0x411a21
das
jecxz 0x411958
sbb ch, dl
mov word [edx - 0xb5e316], ds
sbb byte cs:[ebx + 0x10], ch
imul edx, dword [eax], 2
mov word [edi + 0x8d88126], ss
xchg edi, eax
sbb eax, 0x6b582f08
invalid
push 0x8811667c
xor ch, byte [edi]
add byte [esi + 0x18], ch
push es
invalid

Function at 0x411f02
Capabilities:
Encode data using xor

Disassembly:
sar dword [esi + edi*4 - 0xc], 0xef
dec ebp
xor al, 0xd0
xchg edx, eax
push 0xab149c13
add eax, 0x783453c8
xchg ebx, eax
or byte [eax + 0x3b], al
mov eax, dword [edi - 0x33]
push edi
xor al, 0
xchg esp, eax
or byte [eax + 0x2b], ch
mov word [ebp + 0x58979a76], ds
xor al, 0x48
xchg esp, eax
add byte [edx], dl
mov word [ebp + 0x5e7dcd39], cs
xor al, 0x90
xchg esp, eax
test al, 3
invalid
xor al, 0x10
xchg edi, eax
rol byte [edx], 1
jge 0x411f81
cmp al, 0x1b
cmc
push 0x34
push eax
sbb byte [eax], al
jge 0x411f56
les esp, [ecx - 0x62]
jp 0x411f4c
nop
sbb byte [eax], al
pushfd
shld ebx, eax, 0x5b
xor dword [eax + edx*8], 0xfcd80897
jl 0x411eae
xchg edi, eax
mov esi, dword [eax]
xchg edi, eax
lock add byte [ebp + esi*4 - 0x6dbff418], cl
xor al, 0x68
cwde
pop eax
or byte [eax + esi*2 - 0x6a50e92c], bl
xor al, 0xf8
cwde
or al, dl
invalid
enter 0x349b, 0x38
wait
xor al, 0x38
cdq
inc eax
push cs
mov edx, ds
dec esp
or bh, al
lahf
xor al, 0x78
cdq
pushal
add byte [esp + ebx - 0x5b0de53f], bl
xor al, 0
lcall 0xba1c, 0x7c98d008
mov al, al
xor al, 0x88
lcall 0xf966, 0x8a8d02a0
jl 0x411f4b
invalid
xor al, 0xf8
lcall 0x353, 0xa37c26d0
salc
add edx, esi
xor al, 8
wait
sub byte [esi], cl
mov edx, gs
pushfd
mov esi, 0x4034d6cc
Function at 0x41968d
Capabilities:
Encode data using xor
Encrypt data using rc4 prga

Disassembly:
push ebp
mov ebp, esp
push ecx
push ecx
test edx, edx
push edi
mov edi, dword [ebp + 8]
jle 0x4196f7
sub ecx, edi
push ebx
mov dword [ebp - 8], ecx
mov dword [ebp - 4], edx
push esi
inc byte [eax + 0x100]
movzx ecx, byte [eax + 0x100]
lea esi, [ecx + eax]
mov cl, byte [esi]
add byte [eax + 0x101], cl
movzx ecx, byte [eax + 0x101]
mov dl, byte [esi]
add ecx, eax
mov bl, byte [ecx]
mov byte [esi], bl
mov byte [ecx], dl
movzx ecx, byte [eax + 0x101]
movzx edx, byte [eax + 0x100]
mov cl, byte [ecx + eax]
add cl, byte [edx + eax]
mov edx, dword [ebp - 8]
movzx ecx, cl
mov cl, byte [ecx + eax]
xor cl, byte [edx + edi]
mov byte [edi], cl
inc edi
dec dword [ebp - 4]
jne 0x4196a4
pop esi
pop ebx
pop edi
leave
ret
Function at 0x41ea65
Capabilities:
Check os version

Disassembly:
push ebp
lea ebp, [esp - 0x78]
sub esp, 0x98
mov eax, dword [0x432024]
xor eax, ebp
mov dword [ebp + 0x74], eax
push esi
mov esi, ecx
call fcn.0041e9a4
mov eax, 0x400000
push 0x94
mov dword [esi + 8], eax
mov dword [esi + 4], eax
lea eax, [ebp - 0x20]
push 0
push eax
mov dword [esi], 0x3c
mov byte [esi + 0xc], 0
call sub.MSVCR80.dll_memset
add esp, 0xc
lea eax, [ebp - 0x20]
push eax
mov dword [ebp - 0x20], 0x94
call dword [sym.imp.KERNEL32.dll_GetVersionExA]
cmp dword [ebp - 0x10], 2
jne 0x41eab4
cmp dword [ebp - 0x1c], 5
jb 0x41eacc
jmp 0x41eac8
cmp dword [ebp - 0x10], 1
jne 0x41eacc
cmp dword [ebp - 0x1c], 4
ja 0x41eac8
jne 0x41eacc
cmp dword [ebp - 0x18], 0
jbe 0x41eacc
mov byte [esi + 0xc], 1
lea ecx, [esi + 0x18]
mov dword [esi + 0x10], 0x800
mov dword [esi + 0x14], 0x422798
call fcn.0041e87e
test eax, eax
jge 0x41eaed
mov byte [0x4330a8], 1
mov ecx, dword [ebp + 0x74]
mov eax, esi
xor ecx, ebp
pop esi
call fcn.0041ebf6
add ebp, 0x78
leave
ret

Function at 0x41ebf6
Capabilities:
Terminate process

Disassembly:
cmp ecx, dword [0x432024]
jne 0x41ec00
repz ret
jmp fcn.0041f190

Function at 0x43f15a
Capabilities:
Parse pe header

Disassembly:
mov eax, dword [pe_dos_header]
mov eax, dword ds:[eax + 0x34]
mov ebp, dword ds:[eax + 0xb8]
jmp 0x43f168
push eax
push ecx
push esi
push ebp
mov eax, dword fs:[0x30]
test eax, eax
js 0x43f14a
mov eax, dword ds:[eax + 0xc]
mov esi, dword ds:[eax + 0x1c]
lodsd eax, dword [esi]
mov ebp, dword ds:[eax + 8]
mov dword [ebx + 0x60], ebp
mov eax, ebp
cmp word [eax], 0x5a4d
jne 0x43f145
add eax, 0x3c
mov ecx, dword [eax]
add ecx, dword [ebx + 0x60]
cmp word [ecx], 0x4550
jne 0x43f145
add ecx, 0x78
mov esi, dword [ecx]
add esi, dword [ebx + 0x60]
add esi, 0x18
lodsd eax, dword [esi]
mov dword [ebx + 0x64], eax
lodsd eax, dword [esi]
add eax, dword [ebx + 0x60]
mov dword [ebx + 0x68], eax
lodsd eax, dword [esi]
add eax, dword [ebx + 0x60]
mov dword [ebx + 0x6c], eax
lodsd eax, dword [esi]
add eax, dword [ebx + 0x60]
mov dword [ebx + 0x70], eax
pop ebp
pop esi
pop ecx
pop eax
ret
Function at 0x404460
Capabilities:
Write file on windows

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x1c
push ebx
mov ebx, ecx
push esi
push edi
cmp dword [ebx + 0x38], 0
je 0x40448c
push dword [ebp + 0x10]
push dword [ebp + 0xc]
push dword [ebp + 8]
call dword [sym.imp.MSVCP140.dll_protected_virtual:_long_long___int64____thiscall_std::basic_streambuf_char__struct_std::char_traits_char__::xsputn_char_const___long_long___int64__]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0xc
mov eax, dword [ebx + 0x20]
mov esi, dword [ebp + 0xc]
mov edi, dword [ebp + 0x10]
mov dword [esp + 0x20], esi
mov ecx, dword [eax]
lea eax, [ebx + 0x30]
mov dword [esp + 0x24], edi
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x18], eax
test ecx, ecx
je 0x4044b4
mov eax, dword [eax]
mov ecx, dword [eax]
jmp 0x4044ba
xor ecx, ecx
mov dword [esp + 0x18], eax
mov eax, ecx
cdq
mov dword [esp + 0x10], eax
mov ecx, edx
mov dword [esp + 0x14], ecx
test edi, edi
jl 0x404522
jg 0x4044d1
test esi, esi
je 0x404522
test ecx, ecx
jl 0x40451d
jg 0x4044db
test eax, eax
je 0x40451d
cmp edi, ecx
jg 0x4044ef
jl 0x4044e5
cmp esi, eax
jae 0x4044ef
mov eax, esi
mov dword [esp + 0x10], esi
mov dword [esp + 0x14], edi
push eax
push dword [ebp + 8]
push dword [esp + 0x24]
call sub.VCRUNTIME140.dll_memcpy
mov eax, dword [esp + 0x24]
add esp, 0xc
mov edx, dword [esp + 0x10]
mov ecx, dword [ebp + 8]
add ecx, edx
sub esi, edx
mov eax, dword [eax]
sbb edi, dword [esp + 0x14]
sub dword [eax], edx
mov eax, dword [ebx + 0x20]
add dword [eax], edx
jmp 0x404525
mov ecx, dword [ebp + 8]
jmp 0x40452f
mov ecx, dword [ebp + 8]
test edi, edi
jl 0x404549
jg 0x40452f
test esi, esi
je 0x404549
mov eax, dword [ebx + 0x4c]
test eax, eax
je 0x404549
push eax
push esi
push 1
push ecx
call dword [sym.imp.api_ms_win_crt_stdio_l1_1_0.dll_fwrite]
add esp, 0x10
sub esi, eax
sbb edi, 0
mov eax, dword [esp + 0x20]
mov edx, dword [esp + 0x24]
sub eax, esi
sbb edx, edi
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0xc
Function at 0x404560
Capabilities:
Read file on windows

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xc
mov eax, dword [ebp + 0x10]
push ebx
mov ebx, ecx
mov ecx, dword [ebp + 0xc]
push esi
mov esi, dword [ebp + 8]
mov dword [ebp - 4], esi
test eax, eax
jg 0x40458c
jl 0x404580
test ecx, ecx
jne 0x40458c
pop esi
xor eax, eax
xor edx, edx
pop ebx
mov esp, ebp
pop ebp
ret 0xc
cmp dword [ebx + 0x38], 0
je 0x4045a5
push eax
push ecx
push esi
mov ecx, ebx
call dword [sym.imp.MSVCP140.dll_protected_virtual:_long_long___int64____thiscall_std::basic_streambuf_char__struct_std::char_traits_char__::xsgetn_char___long_long___int64__]
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0xc
mov eax, dword [ebx + 0x1c]
push edi
mov edi, ecx
mov eax, dword [eax]
mov dword [ebp - 8], eax
test eax, eax
je 0x4045f3
mov eax, dword [ebx + 0x2c]
lea edx, [ebx + 0x2c]
mov dword [ebp - 0xc], edx
mov eax, dword [eax]
test eax, eax
je 0x4045f9
mov edi, dword [ebp - 4]
cmp eax, ecx
mov esi, ecx
cmovb esi, eax
push esi
push dword [ebp - 8]
push edi
call sub.VCRUNTIME140.dll_memcpy
mov eax, dword [ebx + 0x2c]
add edi, esi
mov dword [ebp - 4], edi
add esp, 0xc
mov edi, dword [ebp + 0xc]
sub edi, esi
sub dword [eax], esi
mov eax, dword [ebx + 0x1c]
add dword [eax], esi
mov esi, dword [ebp - 4]
jmp 0x4045f9
lea eax, [ebx + 0x2c]
mov dword [ebp - 0xc], eax
cmp dword [ebx + 0x4c], 0
je 0x404666
mov ecx, dword [ebx + 0xc]
lea eax, [ebx + 0x3c]
cmp dword [ecx], eax
jne 0x404622
mov eax, dword [ebx + 0xc]
mov edx, dword [ebx + 0x54]
mov ecx, dword [ebx + 0x50]
sub edx, ecx
mov dword [eax], ecx
mov eax, dword [ebx + 0x1c]
mov dword [eax], ecx
mov eax, dword [ebp - 0xc]
mov eax, dword [eax]
mov dword [eax], edx
mov eax, dword [sym.imp.api_ms_win_crt_stdio_l1_1_0.dll_fread]
cmp edi, 0xfff
jbe 0x404654
nop
push dword [ebx + 0x4c]
push 0xfff
push 1
push esi
call eax
add esp, 0x10
add esi, eax
sub edi, eax
cmp eax, 0xfff
jne 0x404666
cmp edi, eax
mov eax, dword [sym.imp.api_ms_win_crt_stdio_l1_1_0.dll_fread]
ja 0x404630
test edi, edi
je 0x404666
push dword [ebx + 0x4c]
push edi
push 1
push esi
call eax
add esp, 0x10
sub edi, eax
mov eax, dword [ebp + 0xc]
mov edx, dword [ebp + 0x10]
sub eax, edi
pop edi
pop esi
sbb edx, 0
pop ebx
mov esp, ebp
pop ebp
ret 0xc
Function at 0x4049f0
Capabilities:
Write file on windows

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x30
mov eax, dword [section..data]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
mov ebx, dword [ebp + 8]
push esi
mov esi, ecx
cmp ebx, 0xffffffff
jne 0x404a20
pop esi
xor eax, eax
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.004074f8
mov esp, ebp
pop ebp
ret 4
mov eax, dword [esi + 0x20]
push edi
mov ecx, dword [eax]
test ecx, ecx
je 0x404a5c
mov edx, dword [esi + 0x30]
mov edi, dword [edx]
lea eax, [edi + ecx]
cmp ecx, eax
jae 0x404a5c
lea ecx, [edi - 1]
mov eax, ebx
mov dword [edx], ecx
mov edx, dword [esi + 0x20]
pop edi
mov esi, dword [edx]
lea ecx, [esi + 1]
mov dword [edx], ecx
mov byte [esi], bl
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.004074f8
mov esp, ebp
pop ebp
ret 4
cmp dword [esi + 0x4c], 0
je 0x404b33
mov edi, dword [esi + 0xc]
lea eax, [esi + 0x3c]
cmp dword [edi], eax
jne 0x404a84
mov edx, dword [esi + 0x54]
mov ecx, dword [esi + 0x50]
sub edx, ecx
mov dword [edi], ecx
mov eax, dword [esi + 0x1c]
mov dword [eax], ecx
mov eax, dword [esi + 0x2c]
mov dword [eax], edx
mov ecx, dword [esi + 0x38]
test ecx, ecx
jne 0x404a90
movsx eax, bl
jmp 0x404ac8
lea eax, [ebp - 0x2c]
mov byte [ebp - 0x25], bl
push eax
lea eax, [ebp - 4]
push eax
lea eax, [ebp - 0x24]
push eax
lea eax, [ebp - 0x30]
push eax
lea eax, [ebp - 0x24]
push eax
lea eax, [ebp - 0x25]
push eax
lea eax, [esi + 0x40]
push eax
call dword [sym.imp.MSVCP140.dll_public:_int___thiscall_std::codecvt_char__char__struct__Mbstatet_::out_struct__Mbstatet___char_const___char_const___char_const____char___char___char___const]
sub eax, 0
je 0x404af2
sub eax, 1
je 0x404af2
sub eax, 2
jne 0x404b33
movsx eax, byte [ebp - 0x25]
push dword [esi + 0x4c]
push eax
call dword [sym.imp.api_ms_win_crt_stdio_l1_1_0.dll_fputc]
add esp, 8
or ecx, 0xffffffff
cmp eax, ecx
cmove ebx, ecx
pop edi
pop esi
mov eax, ebx
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.004074f8
mov esp, ebp
pop ebp
ret 4
mov edi, dword [ebp - 0x2c]
lea eax, [ebp - 0x24]
sub edi, eax
je 0x404b10
push dword [esi + 0x4c]
push edi
push 1
push eax
call dword [sym.imp.api_ms_win_crt_stdio_l1_1_0.dll_fwrite]
add esp, 0x10
cmp edi, eax
jne 0x404b33
lea ecx, [ebp - 0x25]
mov byte [esi + 0x3d], 1
or eax, 0xffffffff
cmp dword [ebp - 0x30], ecx
pop edi
pop esi
cmovne eax, ebx
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.004074f8
mov esp, ebp
pop ebp
ret 4
mov ecx, dword [ebp - 4]
or eax, 0xffffffff
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.004074f8
mov esp, ebp
pop ebp
ret 4
Function at 0x405120
Capabilities:
Write file on windows

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x28
mov eax, dword [section..data]
xor eax, ebp
mov dword [ebp - 4], eax
push esi
mov esi, ecx
cmp dword [esi + 0x38], 0
je 0x4051dc
cmp byte [esi + 0x3d], 0
je 0x4051dc
mov eax, dword [esi]
push edi
push 0xffffffffffffffff
call dword [eax + 0xc]
cmp eax, 0xffffffff
je 0x4051ca
mov ecx, dword [esi + 0x38]
lea eax, [ebp - 0x28]
push eax
lea eax, [ebp - 4]
push eax
lea eax, [ebp - 0x24]
push eax
lea eax, [esi + 0x40]
push eax
call dword [sym.imp.MSVCP140.dll_public:_int___thiscall_std::codecvt_char__char__struct__Mbstatet_::unshift_struct__Mbstatet___char___char___char___const]
sub eax, 0
je 0x405191
sub eax, 1
je 0x405195
sub eax, 2
jne 0x4051ca
mov byte [esi + 0x3d], al
mov al, 1
pop edi
pop esi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.004074f8
mov esp, ebp
pop ebp
ret
mov byte [esi + 0x3d], 0
mov edi, dword [ebp - 0x28]
lea eax, [ebp - 0x24]
sub edi, eax
je 0x4051b3
push dword [esi + 0x4c]
push edi
push 1
push eax
call dword [sym.imp.api_ms_win_crt_stdio_l1_1_0.dll_fwrite]
add esp, 0x10
cmp edi, eax
jne 0x4051ca
cmp byte [esi + 0x3d], 0
pop edi
sete al
pop esi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.004074f8
mov esp, ebp
pop ebp
ret
pop edi
xor al, al
pop esi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.004074f8
mov esp, ebp
pop ebp
ret
mov ecx, dword [ebp - 4]
mov al, 1
xor ecx, ebp
pop esi
call fcn.004074f8
mov esp, ebp
pop ebp
ret

Function at 0x407346
Capabilities:
Get geographical location

Disassembly:
push ebp
mov ebp, esp
push ecx
push 2
lea eax, [ebp - 4]
push eax
push 0x20000001
push str._x_sys_default_locale
call dword [sym.imp.KERNEL32.dll_GetLocaleInfoEx]
xor ecx, ecx
test eax, eax
jne 0x40736d
mov eax, ecx
mov dword [ebp - 4], eax
jmp 0x407370
mov eax, dword [ebp - 4]
push esi
mov esi, dword [ebp + 0xc]
push ecx
push ecx
push esi
push eax
push dword [ebp + 8]
push ecx
push 0x1300
call dword [sym.imp.KERNEL32.dll_FormatMessageA]
push eax
push dword [esi]
call fcn.00407322
pop esi
leave
ret 8

Function at 0x4080c6
Capabilities:
Parse pe header

Disassembly:
push 0
call dword [sym.imp.KERNEL32.dll_GetModuleHandleW]
test eax, eax
je 0x408105
mov ecx, 0x5a4d
cmp word [eax], cx
jne 0x408105
mov ecx, dword [eax + 0x3c]
add ecx, eax
cmp dword [ecx], 0x4550
jne 0x408105
mov eax, 0x10b
cmp word [ecx + 0x18], ax
jne 0x408105
cmp dword [ecx + 0x74], 0xe
jbe 0x408105
cmp dword [ecx + 0xe8], 0
setne al
ret
xor al, al
ret