joyce8/EMBER2024-capa huggingface dataset:
Function at 0x401c6b
Capabilities:
Accept command line arguments
Terminate process

Disassembly:
push ebp
mov eax, dword [ecx]
add edi, edi
push 0x4050c0
push 0x403630
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x58
push ebx
push esi
push edi
mov dword [ebp - 0x18], esp
call dword [sym.imp.KERNEL32.dll_GetVersion]
xor edx, edx
mov dl, ah
mov dword [0x4065c4], edx
mov ecx, eax
and ecx, 0xff
mov dword [0x4065c0], ecx
shl ecx, 8
add ecx, edx
mov dword [0x4065bc], ecx
shr eax, 0x10
mov dword [0x4065b8], eax
xor esi, esi
push esi
call fcn.00401daa
pop ecx
test eax, eax
jne 0x401cd7
push 0x1c
call fcn.00401d86
pop ecx
mov dword [ebp - 4], esi
call fcn.0040338b
call dword [sym.imp.KERNEL32.dll_GetCommandLineA]
mov dword [0x406ab4], eax
call fcn.00403259
mov dword [0x406598], eax
call fcn.0040300c
call fcn.00402f53
call fcn.00402c75
mov dword [ebp - 0x30], esi
lea eax, [ebp - 0x5c]
push eax
call dword [sym.imp.KERNEL32.dll_GetStartupInfoA]
call fcn.00402efb
mov dword [ebp - 0x64], eax
test byte [ebp - 0x30], 1
je 0x401d24
movzx eax, word [ebp - 0x2c]
jmp 0x401d27
push 0xa
pop eax
push eax
push dword [ebp - 0x64]
push esi
push esi
call dword [sym.imp.KERNEL32.dll_GetModuleHandleA]
push eax
call main
mov dword [ebp - 0x60], eax
push eax
call fcn.00402ca2
mov eax, dword [ebp - 0x14]
mov ecx, dword [eax]
mov ecx, dword [ecx]
mov dword [ebp - 0x68], ecx
push eax
push ecx
call fcn.00402d77
pop ecx
pop ecx
ret

Function at 0x403741
Capabilities:
Write file on windows

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x1a4
mov edx, dword [ebp + 8]
xor ecx, ecx
mov eax, 0x4061d0
cmp edx, dword [eax]
je 0x403763
add eax, 8
inc ecx
cmp eax, 0x406260
jl 0x403754
push esi
mov esi, ecx
shl esi, 3
cmp edx, dword [esi + 0x4061d0]
jne 0x403891
mov eax, dword [0x4065a0]
cmp eax, 1
je 0x40386b
test eax, eax
jne 0x403794
cmp dword [0x406124], 1
je 0x40386b
cmp edx, 0xfc
je 0x403891
lea eax, [ebp - 0x1a4]
push 0x104
push eax
push 0
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
test eax, eax
jne 0x4037cb
lea eax, [ebp - 0x1a4]
push str._program_name_unknown_
push eax
call fcn.00404000
pop ecx
pop ecx
lea eax, [ebp - 0x1a4]
push edi
push eax
lea edi, [ebp - 0x1a4]
call fcn.004040f0
inc eax
pop ecx
cmp eax, 0x3c
jbe 0x40380e
lea eax, [ebp - 0x1a4]
push eax
call fcn.004040f0
mov edi, eax
lea eax, [ebp - 0x1a4]
sub eax, 0x3b
push 3
add edi, eax
push 0x4053a0
push edi
call fcn.00404200
add esp, 0x10
lea eax, [ebp - 0xa0]
push str.Runtime_Error__n_nProgram:
push eax
call fcn.00404000
lea eax, [ebp - 0xa0]
push edi
push eax
call fcn.00404010
lea eax, [ebp - 0xa0]
push 0x405380
push eax
call fcn.00404010
push dword [esi + 0x4061d4]
lea eax, [ebp - 0xa0]
push eax
call fcn.00404010
push 0x12010
lea eax, [ebp - 0xa0]
push str.Microsoft_Visual_C_Runtime_Library
push eax
call fcn.0040416b
add esp, 0x2c
pop edi
jmp 0x403891
lea eax, [ebp + 8]
lea esi, [esi + 0x4061d4]
push 0
push eax
push dword [esi]
call fcn.004040f0
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 0x6da52a51
Capabilities:
Identify system language via api

Disassembly:
push esi
push edi
xor edi, edi
cmp dword [esp + 0x14], edi
je 0x6da52a63
call dword [sym.imp.kernel32.dll_GetUserDefaultLCID]
jmp 0x6da52a69
call dword [sym.imp.kernel32.dll_GetUserDefaultUILanguage]
movzx eax, ax
push eax
call fcn.6da5e020
mov esi, eax
pop ecx
cmp esi, edi
je 0x6da52a93
mov eax, dword [esp + 0xc]
mov ecx, dword [eax]
push esi
push eax
call dword [ecx + 0x29c]
push esi
mov edi, eax
call dword [sym.imp.msvcr100.dll_free]
pop ecx
jmp 0x6da52aa1
push str.memory_allocation_error
push dword [esp + 0x10]
call sym.java.dll__JNU_ThrowOutOfMemoryError_8
mov eax, edi
pop edi
pop esi
ret 0xc
Function at 0x6da56d93
Capabilities:
Query or enumerate registry value

Disassembly:
push ebp
lea ebp, [esp - 0x90]
sub esp, 0x110
mov eax, dword [0x6da6df10]
xor eax, ebp
mov dword [ebp + 0x8c], eax
mov eax, dword [ebp + 0x98]
push ebx
push esi
mov dword [ebp - 0x78], eax
mov eax, dword [ebp + 0x9c]
mov ebx, dword [eax]
and dword [edi], 0
push eax
push dword [ebp - 0x78]
mov esi, ecx
push edi
push 0
push dword [esi*4 + 0x6da6d618]
mov dword [ebp - 0x80], edx
push edx
call dword [sym.imp.advapi32.dll_RegQueryValueExW]
test eax, eax
jne 0x6da56de7
cmp dword [edi], 1
je 0x6da56e33
lea eax, [ebp - 0x7c]
push eax
lea eax, [ebp - 0x74]
push eax
push edi
push 0
push dword [esi*4 + 0x6da6d61c]
mov dword [ebp - 0x7c], 0x100
push dword [ebp - 0x80]
call dword [sym.imp.advapi32.dll_RegQueryValueExA]
test eax, eax
jne 0x6da56e35
cmp dword [edi], 1
je 0x6da56e19
mov eax, 0x3f2
jmp 0x6da56e35
shr ebx, 1
push ebx
push dword [ebp - 0x78]
lea eax, [ebp - 0x74]
push 0xffffffffffffffff
push eax
push 8
push 0
call dword [sym.imp.kernel32.dll_MultiByteToWideChar]
test eax, eax
jle 0x6da56e12
xor eax, eax
mov ecx, dword [ebp + 0x8c]
pop esi
xor ecx, ebp
pop ebx
call fcn.6da62890
add ebp, 0x90
leave
ret
Function at 0x6da5752d
Capabilities:
Query or enumerate registry value

Disassembly:
push ebp
lea ebp, [esp - 0x78]
sub esp, 0xe0
mov eax, dword [0x6da6df10]
xor eax, ebp
mov dword [ebp + 0x74], eax
push edi
lea eax, [ebp - 0x5c]
push eax
push 0x20019
xor edi, edi
and dword [ebp - 0x5c], edi
push edi
push str.SystemCurrentControlSetControlTimeZoneInformation
push 0x80000002
call dword [sym.imp.advapi32.dll_RegOpenKeyExA]
test eax, eax
jne 0x6da575a3
and dword [ebp - 0x60], edi
push ebx
lea eax, [ebp - 0x64]
push eax
lea eax, [ebp - 0x68]
push eax
lea eax, [ebp - 0x60]
push eax
push edi
push str.ActiveTimeBias
push dword [ebp - 0x5c]
mov dword [ebp - 0x64], 4
call dword [sym.imp.advapi32.dll_RegQueryValueExA]
mov ebx, eax
test ebx, ebx
jne 0x6da57595
mov edi, dword [ebp - 0x68]
push dword [ebp - 0x5c]
call dword [sym.imp.advapi32.dll_RegCloseKey]
test ebx, ebx
pop ebx
je 0x6da575b5
lea eax, [ebp - 0x58]
push eax
call dword [sym.imp.kernel32.dll_GetTimeZoneInformation]
cmp eax, 0xffffffff
je 0x6da575b5
mov edi, dword [ebp - 0x58]
lea eax, [ebp + 0x54]
push eax
mov eax, edi
call fcn.6da56e4c
lea eax, [ebp + 0x54]
push eax
call dword [sym.imp.msvcr100.dll__strdup]
pop ecx
pop ecx
mov ecx, dword [ebp + 0x74]
xor ecx, ebp
pop edi
call fcn.6da62890
add ebp, 0x78
leave
ret

Function at 0x6da57c98
Capabilities:
Create new key via cryptacquirecontext
Generate random numbers via winapi

Disassembly:
push ebp
mov ebp, esp
push ecx
push ecx
push ebx
push esi
mov esi, dword [sym.imp.advapi32.dll_CryptAcquireContextA]
push edi
xor ebx, ebx
push ebx
push 1
push ebx
mov edi, str.J2SE
push edi
lea eax, [ebp - 8]
push eax
mov byte [ebp - 1], bl
call esi
test eax, eax
jne 0x6da57cd3
push 8
push 1
push ebx
push edi
lea eax, [ebp - 8]
push eax
call esi
test eax, eax
jne 0x6da57cd3
xor al, al
jmp 0x6da57d28
push dword [ebp + 0x10]
mov esi, dword [ebp + 8]
mov eax, dword [esi]
push esi
call dword [eax + 0x2ac]
push ebx
push dword [ebp + 0x10]
mov dword [ebp + 8], eax
mov eax, dword [esi]
push esi
call dword [eax + 0x2e0]
mov edi, eax
cmp edi, ebx
je 0x6da57d1b
push edi
push dword [ebp + 8]
push dword [ebp - 8]
call dword [sym.imp.advapi32.dll_CryptGenRandom]
test eax, eax
je 0x6da57d0d
mov byte [ebp - 1], 1
mov eax, dword [esi]
push ebx
push edi
push dword [ebp + 0x10]
push esi
call dword [eax + 0x300]
push ebx
push dword [ebp - 8]
call dword [sym.imp.advapi32.dll_CryptReleaseContext]
mov al, byte [ebp - 1]
pop edi
pop esi
pop ebx
leave
ret 0xc

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

Disassembly:
push esi
push dword [0x6da6df68]
push dword [esp + 0x14]
push dword [esp + 0x10]
call fcn.6da5a856
mov esi, eax
add esp, 0xc
test esi, esi
jne 0x6da58497
xor al, al
jmp 0x6da584c8
push ebx
push esi
call dword [sym.imp.kernel32.dll_GetFileAttributesW]
push eax
push esi
call fcn.6da5e020
push esi
mov ebx, eax
call dword [sym.imp.msvcr100.dll_free]
add esp, 0xc
cmp ebx, 0xffffffff
je 0x6da584d7
mov eax, dword [esp + 0x18]
dec eax
je 0x6da584c5
dec eax
je 0x6da584cc
dec eax
dec eax
jne 0x6da584d7
mov al, 1
pop ebx
pop esi
ret 0x10
mov al, 1
test bl, 0x10
jne 0x6da584c7
test al, bl
je 0x6da584c7
xor al, al
jmp 0x6da584c7
Function at 0x6da584db
Capabilities:
Check if file exists
Get file attributes
Set file attributes

Disassembly:
push ebp
mov ebp, esp
push ecx
cmp dword [ebp + 0x14], 4
push edi
mov byte [ebp - 1], 0
je 0x6da58581
cmp dword [ebp + 0x14], 1
je 0x6da58581
push dword [0x6da6df68]
push dword [ebp + 0x10]
push dword [ebp + 8]
call fcn.6da5a856
mov edi, eax
add esp, 0xc
test edi, edi
jne 0x6da58516
xor al, al
jmp 0x6da58584
push esi
mov esi, dword [sym.imp.kernel32.dll_GetFileAttributesW]
push edi
call esi
cmp eax, 0xffffffff
je 0x6da58573
push ebx
test eax, 0x400
je 0x6da5854b
push edi
push dword [ebp + 8]
call fcn.6da57d90
mov ebx, eax
pop ecx
pop ecx
test ebx, ebx
je 0x6da58572
push edi
call dword [sym.imp.msvcr100.dll_free]
pop ecx
push ebx
mov edi, ebx
call esi
cmp eax, 0xffffffff
je 0x6da58572
test al, 0x10
jne 0x6da58572
cmp byte [ebp + 0x18], 0
je 0x6da5855f
and eax, 0xfffffffe
jmp 0x6da58562
or eax, 1
push eax
push edi
call dword [sym.imp.kernel32.dll_SetFileAttributesW]
test eax, eax
je 0x6da58572
mov byte [ebp - 1], 1
pop ebx
push edi
call dword [sym.imp.msvcr100.dll_free]
mov al, byte [ebp - 1]
pop ecx
pop esi
jmp 0x6da58584
mov al, byte [ebp + 0x18]
pop edi
leave
ret 0x18

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

Disassembly:
push esi
push edi
xor edi, edi
push edi
push dword [esp + 0x18]
push dword [esp + 0x14]
call fcn.6da5e020
mov esi, eax
add esp, 0xc
cmp esi, edi
jne 0x6da586fb
xor al, al
jmp 0x6da58777
push esi
call fcn.6da5e020
pop ecx
test eax, eax
je 0x6da58710
push esi
call dword [sym.imp.msvcr100.dll_free]
pop ecx
jmp 0x6da586f7
push edi
push 0x200080
push 1
push edi
push 3
push 0xc0000000
push esi
call dword [sym.imp.kernel32.dll_CreateFileW]
mov edi, eax
cmp edi, 0xffffffff
jne 0x6da58766
call dword [sym.imp.kernel32.dll_GetLastError]
mov edi, eax
cmp edi, 0x50
je 0x6da58706
cmp edi, 0xb7
je 0x6da58706
push esi
call dword [sym.imp.kernel32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
jne 0x6da58706
push edi
call dword [sym.imp.kernel32.dll_SetLastError]
push str.Could_not_open_file
push dword [esp + 0x10]
call sym.java.dll__JNU_ThrowIOExceptionWithLastError_8
jmp 0x6da58706
push esi
call dword [sym.imp.msvcr100.dll_free]
pop ecx
push edi
call dword [sym.imp.kernel32.dll_CloseHandle]
mov al, 1
pop edi
pop esi
ret 0xc

Function at 0x6da5877c
Capabilities:
Check if file exists
Delete directory
Delete file
Get file attributes
Set file attributes

Disassembly:
push ebx
push esi
push dword [0x6da6df68]
xor bl, bl
push dword [esp + 0x18]
push dword [esp + 0x14]
call fcn.6da5a856
mov esi, eax
add esp, 0xc
test esi, esi
jne 0x6da587a0
xor al, al
jmp 0x6da587e0
push 0x80
push esi
call dword [sym.imp.kernel32.dll_SetFileAttributesW]
push esi
call dword [sym.imp.kernel32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
je 0x6da587d6
push esi
test al, 0x10
je 0x6da587c5
call dword [sym.imp.kernel32.dll_RemoveDirectoryW]
jmp 0x6da587cb
call dword [sym.imp.kernel32.dll_DeleteFileW]
neg eax
sbb eax, eax
inc eax
test eax, eax
jne 0x6da587d6
mov bl, 1
push esi
call dword [sym.imp.msvcr100.dll_free]
pop ecx
mov al, bl
pop esi
pop ebx
ret 0xc
Function at 0x6da58a7c
Capabilities:
Create directory

Disassembly:
push esi
push dword [0x6da6df68]
push dword [esp + 0x14]
push dword [esp + 0x10]
call fcn.6da5a856
mov esi, eax
add esp, 0xc
test esi, esi
jne 0x6da58a9d
xor al, al
jmp 0x6da58ab7
push edi
push 0
push esi
call dword [sym.imp.kernel32.dll_CreateDirectoryW]
push esi
mov edi, eax
call dword [sym.imp.msvcr100.dll_free]
test edi, edi
pop ecx
setne al
pop edi
pop esi
ret 0xc

Function at 0x6da58abb
Capabilities:
Move file

Disassembly:
push ebx
push esi
push edi
push dword [0x6da6df68]
xor bl, bl
push dword [esp + 0x1c]
push dword [esp + 0x18]
call fcn.6da5a856
push dword [0x6da6df68]
mov esi, eax
push dword [esp + 0x2c]
push dword [esp + 0x24]
call fcn.6da5a856
add esp, 0x18
mov edi, eax
test esi, esi
je 0x6da58b17
test edi, edi
je 0x6da58b17
push edi
push esi
call dword [sym.imp.msvcr100.dll__wrename]
pop ecx
pop ecx
test eax, eax
jne 0x6da58b05
inc bl
push esi
mov esi, dword [sym.imp.msvcr100.dll_free]
call esi
push edi
call esi
pop ecx
pop ecx
mov al, bl
jmp 0x6da58b19
xor al, al
pop edi
pop esi
pop ebx
ret 0x10

Function at 0x6da58bb9
Capabilities:
Check if file exists
Get file attributes
Set file attributes

Disassembly:
push ecx
push esi
push dword [0x6da6df68]
mov byte [esp + 0xb], 0
push dword [esp + 0x18]
push dword [esp + 0x14]
call fcn.6da5a856
mov esi, eax
add esp, 0xc
test esi, esi
jne 0x6da58be0
xor al, al
jmp 0x6da58c41
push ebx
push ebp
mov ebp, dword [sym.imp.kernel32.dll_GetFileAttributesW]
push esi
call ebp
mov ebx, dword [sym.imp.msvcr100.dll_free]
cmp eax, 0xffffffff
je 0x6da58c37
push edi
test eax, 0x400
je 0x6da58c19
push esi
push dword [esp + 0x1c]
call fcn.6da57d90
mov edi, eax
pop ecx
pop ecx
test edi, edi
je 0x6da58c36
push esi
call ebx
pop ecx
push edi
mov esi, edi
call ebp
cmp eax, 0xffffffff
je 0x6da58c36
test al, 0x10
jne 0x6da58c36
or eax, 1
push eax
push esi
call dword [sym.imp.kernel32.dll_SetFileAttributesW]
test eax, eax
je 0x6da58c36
mov byte [esp + 0x13], 1
pop edi
push esi
call ebx
mov al, byte [esp + 0x13]
pop ecx
pop ebp
pop ebx
pop esi
pop ecx
ret 0xc
Function at 0x6da58cb1
Capabilities:
Get disk size

Disassembly:
push ebp
lea ebp, [esp - 0x7a0]
sub esp, 0x820
mov eax, dword [0x6da6df10]
xor eax, ebp
mov dword [ebp + 0x79c], eax
mov ecx, dword [ebp + 0x7b0]
mov eax, dword [ebp + 0x7a8]
push ebx
push esi
push edi
push dword [0x6da6df68]
xor esi, esi
push ecx
push eax
xor edi, edi
call fcn.6da5a856
add esp, 0xc
mov ebx, eax
push 0x400
lea eax, [ebp - 0x68]
push eax
push ebx
call dword [sym.imp.kernel32.dll_GetVolumePathNameW]
test eax, eax
je 0x6da58d45
lea eax, [ebp - 0x70]
push eax
lea eax, [ebp - 0x78]
push eax
lea eax, [ebp - 0x80]
push eax
lea eax, [ebp - 0x68]
push eax
call dword [sym.imp.kernel32.dll_GetDiskFreeSpaceExW]
test eax, eax
je 0x6da58d45
mov eax, dword [ebp + 0x7b4]
sub eax, edi
je 0x6da58d3f
dec eax
je 0x6da58d37
dec eax
jne 0x6da58d45
mov esi, dword [ebp - 0x80]
mov edi, dword [ebp - 0x7c]
jmp 0x6da58d45
mov esi, dword [ebp - 0x70]
mov edi, dword [ebp - 0x6c]
jmp 0x6da58d45
mov esi, dword [ebp - 0x78]
mov edi, dword [ebp - 0x74]
push ebx
call dword [sym.imp.msvcr100.dll_free]
pop ecx
mov ecx, dword [ebp + 0x79c]
mov edx, edi
pop edi
mov eax, esi
pop esi
xor ecx, ebp
pop ebx
call fcn.6da62890
add ebp, 0x7a0
leave
ret 0x10

Function at 0x6da58ee9
Capabilities:
Query or enumerate registry value

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xc
push esi
mov esi, dword [ebp + 8]
mov eax, dword [esi]
push edi
xor edi, edi
push edi
push dword [ebp + 0x14]
push esi
call dword [eax + 0x2e0]
mov dword [ebp + 8], eax
cmp eax, edi
jne 0x6da58f11
xor eax, eax
jmp 0x6da58fcc
push ebx
mov ebx, dword [sym.imp.advapi32.dll_RegQueryValueExA]
lea ecx, [ebp - 4]
push ecx
push edi
lea ecx, [ebp - 0xc]
push ecx
push edi
push eax
push dword [ebp + 0x10]
call ebx
test eax, eax
jne 0x6da58fb9
push dword [ebp - 4]
call dword [sym.imp.msvcr100.dll_malloc]
pop ecx
mov dword [ebp - 8], eax
cmp eax, edi
je 0x6da58fae
lea ecx, [ebp - 4]
push ecx
push eax
lea eax, [ebp - 0xc]
push eax
push edi
push dword [ebp + 8]
push dword [ebp + 0x10]
call ebx
test eax, eax
je 0x6da58f63
push dword [ebp - 8]
call dword [sym.imp.msvcr100.dll_free]
pop ecx
jmp 0x6da58fb9
cmp dword [ebp - 0xc], 1
jne 0x6da58f8e
push dword [ebp - 4]
mov eax, dword [esi]
push esi
call dword [eax + 0x2c0]
mov ebx, eax
cmp ebx, edi
je 0x6da58f90
push dword [ebp - 8]
mov eax, dword [esi]
push dword [ebp - 4]
push edi
push ebx
push esi
call dword [eax + 0x340]
jmp 0x6da58f90
xor ebx, ebx
push dword [ebp - 8]
call dword [sym.imp.msvcr100.dll_free]
mov eax, dword [esi]
pop ecx
push edi
push dword [ebp + 8]
push dword [ebp + 0x14]
push esi
call dword [eax + 0x300]
mov eax, ebx
jmp 0x6da58fcb
push str.native_memory_allocation_failed
push esi
call sym.java.dll__JNU_ThrowOutOfMemoryError_8
mov eax, dword [esi]
push edi
push dword [ebp + 8]
push dword [ebp + 0x14]
push esi
call dword [eax + 0x300]
xor eax, eax
pop ebx
pop edi
pop esi
leave
ret 0x10
Function at 0x6da590b2
Capabilities:
Query or enumerate registry key

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x28
mov eax, dword [0x6da6df10]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push esi
push edi
mov eax, dword [ebp + 0x10]
xor edi, edi
push edi
push edi
mov esi, dword [ebp + 8]
or ecx, 0xffffffff
push edi
mov dword [ebp - 0x28], ecx
mov dword [ebp - 0x20], ecx
mov dword [ebp - 0x1c], ecx
mov dword [ebp - 0x24], ecx
lea ecx, [ebp - 0x20]
push ecx
lea ecx, [ebp - 0x28]
push ecx
push edi
lea ecx, [ebp - 0x1c]
push ecx
lea ecx, [ebp - 0x24]
push ecx
push edi
push edi
push edi
push eax
call dword [sym.imp.advapi32.dll_RegQueryInfoKeyA]
mov ecx, dword [ebp - 0x24]
mov dword [ebp - 0x14], eax
mov eax, dword [ebp - 0x28]
mov dword [ebp - 0x10], eax
mov eax, dword [ebp - 0x1c]
mov dword [ebp - 0xc], eax
mov eax, dword [ebp - 0x20]
push 5
mov dword [ebp - 8], eax
mov eax, dword [esi]
push esi
mov dword [ebp - 0x18], ecx
call dword [eax + 0x2cc]
mov ebx, eax
cmp ebx, edi
je 0x6da59137
mov eax, dword [esi]
lea ecx, [ebp - 0x18]
push ecx
push 5
push edi
push ebx
push esi
call dword [eax + 0x34c]
mov ecx, dword [ebp - 4]
pop edi
pop esi
mov eax, ebx
xor ecx, ebp
pop ebx
call fcn.6da62890
leave
ret 0xc

Function at 0x6da59379
Capabilities:
Check if file exists

Disassembly:
call dword [sym.imp.kernel32.dll_GetLastError]
cmp eax, 2
je 0x6da593af
cmp eax, 0x10b
je 0x6da593af
cmp eax, 3
je 0x6da593af
cmp eax, 0x35
je 0x6da593af
cmp eax, 0x43
je 0x6da593af
cmp eax, 5
je 0x6da593af
cmp eax, 0x4cf
je 0x6da593af
cmp eax, 0x41
je 0x6da593af
xor eax, eax
inc eax
ret
xor eax, eax
ret
Function at 0x6da5a92c
Capabilities:
Get common file path
Get geographical location

Disassembly:
push ebp
lea ebp, [esp - 0x94]
sub esp, 0x114
mov eax, dword [0x6da6df10]
xor eax, ebp
mov dword [ebp + 0x90], eax
push edi
push 0x10
call dword [sym.imp.msvcr100.dll_malloc]
mov edi, eax
pop ecx
test edi, edi
je 0x6da5aabe
push ebx
push esi
push 0xe
lea esi, [edi + 2]
push esi
push 0x1004
push dword [ebp + 0x9c]
call dword [sym.imp.kernel32.dll_GetLocaleInfoA]
mov ebx, 0x6da65b00
test eax, eax
je 0x6da5a9a9
push esi
call dword [sym.imp.msvcr100.dll_atoi]
pop ecx
mov ecx, 0x3a8
cmp eax, ecx
jg 0x6da5aa06
je 0x6da5aa03
sub eax, 0
je 0x6da5a9f4
sub eax, 0x36a
je 0x6da5aa29
sub eax, 0x3a
je 0x6da5aa29
mov word [edi], 0x7043
push str.MS950
push edi
call sub.msvcr100.dll_strcmp
pop ecx
pop ecx
test eax, eax
jne 0x6da5aa33
push 1
lea eax, [ebp - 0x80]
push eax
push 2
lea eax, [ebp - 0x7c]
push eax
push 0
push 0
mov word [ebp - 0x7c], 0x41fa
call dword [sym.imp.kernel32.dll_MultiByteToWideChar]
mov eax, 0x92db
cmp word [ebp - 0x80], ax
jne 0x6da5aaba
push str.MS950_HKSCS_XP
jmp 0x6da5aab2
push str.UTF_8
push edi
call sub.msvcr100.dll_strcpy
pop ecx
pop ecx
jmp 0x6da5a9ae
push ebx
jmp 0x6da5a9f9
cmp eax, 0x3b5
jl 0x6da5a9a9
cmp eax, 0x3b6
jle 0x6da5aa29
cmp eax, 0x551
je 0x6da5aa29
cmp eax, 0xd698
jne 0x6da5a9a9
push str.GB18030
jmp 0x6da5a9f9
mov word [edi], 0x534d
jmp 0x6da5a9ae
push ebx
push edi
call sub.msvcr100.dll_strcmp
pop ecx
pop ecx
test eax, eax
jne 0x6da5aaba
push 0xd698
call dword [sym.imp.kernel32.dll_IsValidCodePage]
test eax, eax
je 0x6da5aaba
push 0x105
lea eax, [ebp - 0x78]
push eax
call dword [sym.imp.kernel32.dll_GetWindowsDirectoryA]
test eax, eax
je 0x6da5aaba
mov esi, str.FONTSSimSun18030.ttc
push esi
call sub.msvcr100.dll_strlen
mov ebx, eax
lea eax, [ebp - 0x78]
push eax
call sub.msvcr100.dll_strlen
add ebx, eax
pop ecx
pop ecx
cmp ebx, 0x105
jae 0x6da5aaba
lea eax, [ebp - 0x78]
push esi
push eax
call sub.msvcr100.dll_strcat
lea eax, [ebp - 0x78]
push 0x6da655e4
push eax
call dword [sym.imp.msvcr100.dll_fopen]
add esp, 0x10
test eax, eax
je 0x6da5aaba
push eax
call dword [sym.imp.msvcr100.dll_fclose]
mov dword [esp], str.GB18030
push edi
call sub.msvcr100.dll_strcpy
pop ecx
pop ecx
pop esi
mov eax, edi
pop ebx
mov ecx, dword [ebp + 0x90]
xor ecx, ebp
pop edi
call fcn.6da62890
add ebp, 0x94
leave
ret
Function at 0x6da5b5b1
Capabilities:
Get common file path

Disassembly:
push ebp
lea ebp, [esp - 0x8c]
sub esp, 0x10c
mov eax, dword [0x6da6df10]
xor eax, ebp
mov dword [ebp + 0x88], eax
and dword [ebp - 0x80], 0
push ebx
mov ebx, dword [ebp + 0x94]
push esi
push edi
push 0x104
lea eax, [ebp - 0x7c]
push eax
call dword [sym.imp.kernel32.dll_GetSystemDirectoryA]
mov esi, dword [sym.imp.kernel32.dll_LoadLibraryA]
mov edi, 0x6da65c0c
test eax, eax
je 0x6da5b61b
lea eax, [ebp - 0x7c]
push edi
push eax
call sub.msvcr100.dll_strcat
lea eax, [ebp - 0x7c]
push ebx
push eax
call sub.msvcr100.dll_strcat
add esp, 0x10
lea eax, [ebp - 0x7c]
push eax
call esi
mov dword [ebp - 0x80], eax
test eax, eax
jne 0x6da5b64e
push 0x104
lea eax, [ebp - 0x7c]
push eax
call dword [sym.imp.kernel32.dll_GetWindowsDirectoryA]
test eax, eax
je 0x6da5b64e
lea eax, [ebp - 0x7c]
push edi
push eax
call sub.msvcr100.dll_strcat
lea eax, [ebp - 0x7c]
push ebx
push eax
call sub.msvcr100.dll_strcat
add esp, 0x10
lea eax, [ebp - 0x7c]
push eax
call esi
mov dword [ebp - 0x80], eax
mov ecx, dword [ebp + 0x88]
mov eax, dword [ebp - 0x80]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.6da62890
add ebp, 0x8c
leave
ret

Function at 0x6da62890
Capabilities:
Terminate process

Disassembly:
cmp ecx, dword [0x6da6df10]
jne 0x6da6289a
repz ret
jmp fcn.6da62eab
Function at 0x402d28
Capabilities:
Generate random numbers using the delphi lcg

Disassembly:
push ebx
xor ebx, ebx
imul edx, dword [ebx + 0x483008], 0x8088405
inc edx
mov dword [ebx + 0x483008], edx
mul edx
mov eax, edx
pop ebx
ret

Function at 0x42ec60
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
push ebp
mov edi, ecx
mov ecx, dword [ebp + 8]
mov esi, ecx
shr esi, 2
je 0x42ec8d
lea edi, [edi + esi*4]
lea edx, [edx + esi*4]
lea eax, [eax + esi*4]
neg esi
mov ebx, dword [eax + esi*4]
mov ebp, dword [edx + esi*4]
mov dword [edi + esi*4], ebx
xor dword [eax + esi*4], ebp
inc esi
jne 0x42ec7e
and ecx, 3
je 0x42eca5
mov bl, byte [ecx + eax - 1]
mov bh, byte [ecx + edx - 1]
mov byte [ecx + edi - 1], bl
xor byte [ecx + eax - 1], bh
dec ecx
jne 0x42ec92
pop ebp
pop esi
pop edi
pop ebx
pop ebp
ret 4

Function at 0x42ecb0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
push ebp
mov edi, dword [ebp + 0xc]
mov esi, dword [ebp + 8]
push esi
shr esi, 2
je 0x42ece9
lea ecx, [ecx + esi*4]
lea edi, [edi + esi*4]
lea edx, [edx + esi*4]
lea eax, [eax + esi*4]
neg esi
mov ebp, dword [eax + esi*4]
mov ebx, dword [edi + esi*4]
xor ebx, dword [edx + esi*4]
mov dword [edx + esi*4], ebx
xor ebx, dword [ecx + esi*4]
mov dword [edi + esi*4], ebp
mov dword [eax + esi*4], ebx
inc esi
jne 0x42ecd1
pop esi
and esi, 3
je 0x42ed0e
mov bl, byte [esi + eax - 1]
mov bh, byte [esi + edx - 1]
xor bh, byte [esi + edi - 1]
mov byte [esi + edx - 1], bh
xor bh, byte [esi + ecx - 1]
mov byte [esi + edi - 1], bl
mov byte [esi + eax - 1], bh
dec esi
jne 0x42ecef
pop ebp
pop esi
pop edi
pop ebx
pop ebp
ret 8

Function at 0x42ed18
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
mov edi, ecx
mov ecx, dword [ebp + 8]
mov esi, ecx
shr esi, 2
je 0x42ed44
lea edi, [edi + esi*4]
lea edx, [edx + esi*4]
lea eax, [eax + esi*4]
neg esi
mov ebx, dword [edx + esi*4]
xor ebx, dword [eax + esi*4]
mov dword [edi + esi*4], ebx
mov dword [eax + esi*4], ebx
inc esi
jne 0x42ed35
and ecx, 3
je 0x42ed5c
mov bl, byte [ecx + edx - 1]
xor bl, byte [ecx + eax - 1]
mov byte [ecx + edi - 1], bl
mov byte [ecx + eax - 1], bl
dec ecx
jne 0x42ed49
pop esi
pop edi
pop ebx
pop ebp
ret 4

Function at 0x42ed64
Capabilities:
Encode data using xor

Disassembly:
push ebx
push edi
shr ecx, 1
lea edi, [eax + ecx*8]
lea edx, [edx + ecx*8]
neg ecx
mov ebx, dword [edx + ecx*8]
mov eax, dword [edx + ecx*8 + 4]
xor dword [edi + ecx*8], ebx
xor dword [edi + ecx*8 + 4], eax
inc ecx
jne 0x42ed70
pop edi
pop ebx
ret