joyce8/EMBER2024-capa huggingface dataset:
Function at 0x54b248
Capabilities:
Clear file content
Encode data using xor
Write file on windows

Disassembly:
push 0xffffffffffffffff
push 0x647a54
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 8
push esi
mov esi, ecx
mov dword [esp + 4], esi
lea ecx, [esi + 0x11bc]
mov dword [esp + 0x14], 1
call fcn.0055cbf0
lea ecx, [esi + 0x1064]
mov byte [esp + 0x14], 0
call fcn.0055c5a0
add esi, 0x28
mov dword [esp + 4], esi
mov eax, dword [esi]
mov dword [esp + 0x14], 2
cmp eax, 0xffffffff
je 0x54b3bf
push ebp
push edi
lea edi, [esi + 0x101c]
push edi
call dword [sym.imp.kernel32.dll_GetLocalTime]
mov eax, dword [esi + 0x1034]
test eax, eax
je 0x54b2b4
mov ecx, dword [esi + 0x1038]
cmp ecx, eax
mov eax, 0x685574
ja 0x54b2b9
mov eax, 0x93e160
push eax
xor eax, eax
mov ax, word [esi + 0x102a]
xor ecx, ecx
mov cx, word [esi + 0x1028]
push eax
xor edx, edx
xor eax, eax
mov dx, word [esi + 0x1026]
mov ax, word [esi + 0x1024]
push ecx
push edx
xor ecx, ecx
push eax
mov cx, word [esi + 0x1022]
xor edx, edx
mov dx, word [esi + 0x101e]
xor eax, eax
mov ax, word [edi]
push ecx
push edx
push eax
push 0x68551c
lea ebp, [esi + 0x1c]
call fcn.0055db40
add esp, 4
push eax
push ebp
call fcn.0061660d
mov edi, ebp
or ecx, 0xffffffff
xor eax, eax
add esp, 0x28
repne scasb al, byte es:[edi]
mov eax, dword [esi + 0x1030]
not ecx
dec ecx
test eax, eax
je 0x54b357
test ecx, ecx
jle 0x54b387
mov edi, 0xffffffe4
mov eax, ebp
sub edi, esi
mov edx, dword [esi + 0x1030]
add edx, 2
mov dword [esi + 0x1030], edx
add dl, 0x43
xor byte [eax], dl
inc eax
lea edx, [edi + eax]
cmp edx, ecx
jl 0x54b339
jmp 0x54b387
test ecx, ecx
jle 0x54b387
mov edi, 0xffffffe4
push ebx
mov eax, ebp
sub edi, esi
mov edx, dword [esi + 0x102c]
lea edx, [edx + edx*2 + 1]
mov dword [esi + 0x102c], edx
mov bl, byte [eax]
add dl, 0x65
xor bl, dl
mov byte [eax], bl
inc eax
lea edx, [eax + edi]
cmp edx, ecx
jl 0x54b365
pop ebx
cmp dword [esi + 0x1034], 0x3e7
je 0x54b3a5
lea eax, [esp + 0x10]
push 0
push eax
push ecx
mov ecx, dword [esi]
push ebp
push ecx
call dword [sym.imp.kernel32.dll_WriteFile]
mov edx, dword [esi]
push edx
call dword [sym.imp.kernel32.dll_SetEndOfFile]
mov eax, dword [esi]
push eax
call dword [sym.imp.kernel32.dll_CloseHandle]
pop edi
mov dword [esi], 0xffffffff
pop ebp
add esi, 4
push esi
call dword [sym.imp.kernel32.dll_DeleteCriticalSection]
mov ecx, dword [esp + 0xc]
pop esi
mov dword fs:[0], ecx
add esp, 0x14
ret
Function at 0x54ce40
Capabilities:
Check for software breakpoints
Encode data using xor
Write file on windows

Disassembly:
mov eax, 0x1008
call fcn.00616c80
push ebx
push esi
mov esi, dword [esp + 0x1014]
cmp dword [esi], 0xffffffff
je 0x54cfc5
mov eax, dword [esi + 0x1034]
test eax, eax
je 0x54ce87
mov ecx, dword [esp + 0x1018]
cmp byte [ecx], 0x21
je 0x54ce87
mov ecx, dword [esi + 0x1038]
cmp ecx, eax
ja 0x54cfc5
inc ecx
mov dword [esi + 0x1038], ecx
lea ebx, [esi + 4]
push ebx
mov dword [esp + 0xc], ebx
call dword [sym.imp.kernel32.dll_EnterCriticalSection]
mov eax, dword [esp + 0x1018]
lea edx, [esp + 0x101c]
push edx
lea ecx, [esp + 0x14]
push eax
push ecx
call fcn.0061814d
add esp, 0xc
lea edx, [esi + 0x101c]
push edx
call dword [sym.imp.kernel32.dll_GetLocalTime]
mov eax, fcn.0061660d
cmp byte [eax], 0xcc
je 0x54cfbe
mov ecx, dword [sym.imp.kernel32.dll_WriteFile]
cmp byte [ecx], 0xcc
je 0x54cfbe
xor eax, eax
push ebp
mov ax, word [esi + 0x102a]
lea edx, [esp + 0x14]
push edi
push edx
xor ecx, ecx
push eax
mov cx, word [esi + 0x1028]
xor edx, edx
mov dx, word [esi + 0x1026]
xor eax, eax
mov ax, word [esi + 0x1024]
push ecx
push edx
push eax
push 0x685c54
lea ebp, [esi + 0x1c]
call fcn.0055db40
add esp, 4
push eax
push ebp
call fcn.0061660d
mov edi, ebp
or ecx, 0xffffffff
xor eax, eax
add esp, 0x1c
repne scasb al, byte es:[edi]
mov eax, dword [esi + 0x1030]
not ecx
dec ecx
test eax, eax
je 0x54cf6e
test ecx, ecx
jle 0x54cf98
mov edi, 0xffffffe4
mov eax, ebp
sub edi, esi
mov edx, 2
mov ebx, dword [esi + 0x1030]
add ebx, edx
mov dword [esi + 0x1030], ebx
add bl, 0x43
xor byte [eax], bl
inc eax
lea ebx, [edi + eax]
cmp ebx, ecx
jl 0x54cf4d
mov ebx, dword [esp + 0x10]
jmp 0x54cf98
test ecx, ecx
jle 0x54cf98
mov edi, 0xffffffe4
mov eax, ebp
sub edi, esi
mov edx, dword [esi + 0x102c]
lea edx, [edx + edx*2 + 1]
mov dword [esi + 0x102c], edx
add dl, 0x65
xor byte [eax], dl
inc eax
lea edx, [eax + edi]
cmp edx, ecx
jl 0x54cf7b
lea eax, [esp + 0x14]
push 0
push eax
push ecx
mov ecx, dword [esi]
push ebp
push ecx
call dword [sym.imp.kernel32.dll_WriteFile]
push ebx
call dword [sym.imp.kernel32.dll_LeaveCriticalSection]
pop edi
pop ebp
pop esi
mov al, 1
pop ebx
add esp, 0x1008
ret
push ebx
call dword [sym.imp.kernel32.dll_LeaveCriticalSection]
pop esi
xor al, al
pop ebx
add esp, 0x1008
ret
Function at 0x54d7c0
Capabilities:
Terminate thread

Disassembly:
push esi
mov esi, ecx
mov al, byte [esi + 0x1c]
test al, al
jne 0x54d7ce
mov al, 1
pop esi
ret
push edi
push 0x685fac
lea edi, [esi + 0x28]
call fcn.0055dbb0
add esp, 4
push eax
push edi
call fcn.0054ce40
mov ecx, dword [esi + 0x1204]
lea eax, [esi + 0x1230]
push eax
push ecx
call dword [esi + 0x1288]
mov eax, dword [esi + 0x14]
add esp, 0x10
test eax, eax
mov byte [esi + 0x1c], 0
je 0x54d80f
push eax
call dword [sym.imp.kernel32.dll_SetEvent]
mov edx, dword [esi + 0x122c]
push 0x7d0
push edx
call dword [sym.imp.kernel32.dll_WaitForSingleObject]
cmp eax, 0x102
jne 0x54d84e
push 0x685f94
call fcn.0055dbb0
add esp, 4
push eax
push edi
call fcn.0054ce40
mov eax, dword [esi + 0x122c]
add esp, 8
push 0
push eax
call dword [sym.imp.kernel32.dll_TerminateThread]
mov ecx, dword [esi + 0x122c]
push ecx
call dword [sym.imp.kernel32.dll_CloseHandle]
mov eax, dword [esi + 0x1228]
test eax, eax
je 0x54d86c
push eax
call dword [sym.imp.kernel32.dll_FreeLibrary]
push 0x685f80
mov dword [esi + 0x1284], 0
mov dword [esi + 0x1288], 0
call fcn.0055dbb0
add esp, 4
push eax
push edi
call fcn.0054ce40
add esp, 8
mov al, 1
pop edi
pop esi
ret

Function at 0x54d990
Capabilities:
Check mutex on windows

Disassembly:
sub esp, 0x20
push ebx
push ebp
mov ebp, ecx
push esi
push edi
lea ecx, [esp + 0x1c]
lea eax, [esp + 0x1c]
push 1
push ecx
mov dword [esp + 0x18], 0xc
mov dword [esp + 0x1c], eax
mov dword [esp + 0x20], 0
xor edi, edi
call dword [sym.imp.advapi32.dll_InitializeSecurityDescriptor]
test eax, eax
je 0x54d9db
push edi
push edi
lea edx, [esp + 0x24]
push 1
push edx
call dword [sym.imp.advapi32.dll_SetSecurityDescriptorDacl]
test eax, eax
je 0x54d9db
lea edi, [esp + 0x10]
push 0x686004
call fcn.0055dbb0
mov ebx, dword [sym.imp.kernel32.dll_CreateMutexA]
add esp, 4
push eax
push 0
push edi
call ebx
mov esi, eax
test esi, esi
jne 0x54da43
push 0x685ff8
call fcn.0055dbb0
add esp, 4
push eax
push esi
push edi
call ebx
mov esi, eax
test esi, esi
jne 0x54da43
mov esi, dword [sym.imp.kernel32.dll_GetLastError]
call esi
call esi
push eax
push 0x685fd4
call fcn.0055dbb0
add esp, 4
add ebp, 0x28
push eax
push ebp
call fcn.0054ce40
add esp, 0xc
xor eax, eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x20
ret 4
call dword [sym.imp.kernel32.dll_GetLastError]
cmp eax, 0xb7
jne 0x54da63
push esi
call dword [sym.imp.kernel32.dll_CloseHandle]
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x20
ret 4
mov eax, dword [esp + 0x34]
push eax
push esi
call dword [sym.imp.kernel32.dll_WaitForSingleObject]
cmp eax, 0x102
jne 0x54da89
push esi
call dword [sym.imp.kernel32.dll_CloseHandle]
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x20
ret 4
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 0x20
ret 4
Function at 0x54daa0
Capabilities:
Check mutex on windows

Disassembly:
sub esp, 0x20
push ebx
push ebp
mov ebp, ecx
push esi
push edi
lea ecx, [esp + 0x1c]
lea eax, [esp + 0x1c]
push 1
push ecx
mov dword [esp + 0x18], 0xc
mov dword [esp + 0x1c], eax
mov dword [esp + 0x20], 0
xor edi, edi
call dword [sym.imp.advapi32.dll_InitializeSecurityDescriptor]
test eax, eax
je 0x54daeb
push edi
push edi
lea edx, [esp + 0x24]
push 1
push edx
call dword [sym.imp.advapi32.dll_SetSecurityDescriptorDacl]
test eax, eax
je 0x54daeb
lea edi, [esp + 0x10]
push 0x685d90
call fcn.0055dbb0
mov ebx, dword [sym.imp.kernel32.dll_CreateMutexA]
add esp, 4
push eax
push 0
push edi
call ebx
mov esi, eax
test esi, esi
jne 0x54db53
push 0x685d84
call fcn.0055dbb0
add esp, 4
push eax
push esi
push edi
call ebx
mov esi, eax
test esi, esi
jne 0x54db53
mov esi, dword [sym.imp.kernel32.dll_GetLastError]
call esi
call esi
push eax
push 0x686034
call fcn.0055dbb0
add esp, 4
add ebp, 0x28
push eax
push ebp
call fcn.0054ce40
add esp, 0xc
xor eax, eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x20
ret 4
call dword [sym.imp.kernel32.dll_GetLastError]
cmp eax, 0xb7
jne 0x54dba0
mov eax, dword [esp + 0x34]
push eax
push esi
call dword [sym.imp.kernel32.dll_WaitForSingleObject]
cmp eax, 0x102
jne 0x54dba0
push 0x686018
call fcn.0055dbb0
add esp, 4
add ebp, 0x28
push eax
push ebp
call fcn.0054ce40
add esp, 8
push esi
call dword [sym.imp.kernel32.dll_CloseHandle]
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x20
ret 4
push esi
call dword [sym.imp.kernel32.dll_ReleaseMutex]
push esi
call dword [sym.imp.kernel32.dll_CloseHandle]
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 0x20
ret 4
Function at 0x54ee50
Capabilities:
Query or enumerate registry value

Disassembly:
push 0xffffffffffffffff
push 0x647a8b
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x418
push ebx
push edi
lea ecx, [esp + 0x1c]
mov dword [esp + 0x18], 4
mov dword [esp + 0xc], 0
mov dword [esp + 8], 1
call fcn.0055dfd0
mov ebx, dword [esp + 0x430]
lea eax, [esp + 8]
push eax
push ebx
lea ecx, [esp + 0x24]
mov dword [esp + 0x430], 0
call fcn.0055e0b0
test al, al
jne 0x54eef2
mov edi, dword [sym.imp.kernel32.dll_GetLastError]
call edi
mov eax, dword [0x93e128]
test eax, eax
je 0x54eef2
push esi
mov esi, dword [esp + 0x420]
call edi
push eax
push esi
push ebx
push 0x686724
call fcn.0055dbb0
mov ecx, dword [0x93e128]
add esp, 4
add ecx, 0x28
push eax
push ecx
call fcn.0054ce40
add esp, 0x14
pop esi
lea edx, [esp + 0x14]
lea eax, [esp + 0x10]
push edx
push eax
push 0
push 0xf003f
push 0
push 0
push 0
push 0x6866f0
call fcn.0055dbb0
add esp, 4
push eax
push 0x80000001
call dword [sym.imp.advapi32.dll_RegCreateKeyExA]
pop edi
pop ebx
test eax, eax
jne 0x54ef99
cmp dword [esp + 0xc], 2
jne 0x54ef59
mov eax, dword [esp + 0x42c]
lea ecx, [esp + 0x10]
lea edx, [esp + 4]
push ecx
push edx
push 0
push 0
push eax
call fcn.0055dbb0
mov ecx, dword [esp + 0x1c]
add esp, 4
push eax
push ecx
call dword [sym.imp.advapi32.dll_RegQueryValueExA]
mov edx, dword [esp + 8]
push edx
call dword [sym.imp.advapi32.dll_RegCloseKey]
mov eax, dword [esp]
mov ecx, dword [esp + 4]
cmp eax, ecx
je 0x54efc8
mov edx, dword [0x93e128]
test edx, edx
je 0x54efff
push ecx
push eax
push 0x6866d8
call fcn.0055dbb0
add esp, 4
push eax
mov eax, dword [0x93e128]
add eax, 0x28
push eax
jmp 0x54eff7
mov ecx, dword [0x93e128]
test ecx, ecx
je 0x54efc4
push eax
push 0x6866c0
call fcn.0055dbb0
mov ecx, dword [0x93e128]
add esp, 4
add ecx, 0x28
push eax
push ecx
call fcn.0054ce40
add esp, 0xc
mov eax, dword [esp]
mov ecx, dword [esp + 0x430]
cmp eax, ecx
je 0x54f02a
mov edx, dword [0x93e128]
test edx, edx
je 0x54efff
push ecx
push eax
push 0x6866a8
call fcn.0055dbb0
mov edx, dword [0x93e128]
add esp, 4
add edx, 0x28
push eax
push edx
call fcn.0054ce40
add esp, 0x10
lea ecx, [esp + 0x14]
mov dword [esp + 0x420], 0xffffffff
call fcn.0055e010
xor al, al
mov ecx, dword [esp + 0x418]
mov dword fs:[0], ecx
add esp, 0x424
ret
lea ecx, [esp + 0x14]
mov dword [esp + 0x420], 0xffffffff
call fcn.0055e010
mov ecx, dword [esp + 0x418]
mov al, 1
mov dword fs:[0], ecx
add esp, 0x424
ret
Function at 0x550010
Capabilities:
Delete registry value
Query or enumerate registry value

Disassembly:
sub esp, 0x43c
push ebp
mov ebp, dword [sym.imp.kernel32.dll_GetModuleFileNameA]
push esi
push edi
lea eax, [esp + 0x13c]
xor esi, esi
push 0x104
push eax
push esi
mov byte [esp + 0x1b], 0
call ebp
push 0x686a14
call fcn.0055dbb0
add esp, 4
push eax
call dword [sym.imp.kernel32.dll_GetModuleHandleA]
mov edi, eax
test edi, edi
je 0x550077
push 0x6869fc
call fcn.0055dbb0
add esp, 4
push eax
push edi
call dword [sym.imp.kernel32.dll_GetProcAddress]
mov esi, eax
test esi, esi
jne 0x550077
pop edi
pop esi
xor al, al
pop ebp
add esp, 0x43c
ret
lea ecx, [esp + 0x13c]
push 0x104
push ecx
push 0
call ebp
lea edx, [esp + 0x240]
push 0x104
lea eax, [esp + 0x140]
push edx
push eax
call esi
lea ecx, [esp + 0x240]
push 0x5c
push ecx
call fcn.00616d50
add esp, 8
test eax, eax
je 0x5500b8
mov byte [eax], 0
lea edx, [esp + 0x10]
push edx
push 3
push 0
push 0x6869b4
call fcn.0055dbb0
add esp, 4
push eax
push 0x80000001
call dword [sym.imp.advapi32.dll_RegOpenKeyExA]
test eax, eax
jne 0x55021d
push ebx
mov edx, dword [esp + 0x14]
push eax
push eax
mov ebx, dword [sym.imp.advapi32.dll_RegEnumValueA]
push eax
push eax
lea eax, [esp + 0x28]
lea ecx, [esp + 0x4c]
push eax
push ecx
push 0
push edx
mov dword [esp + 0x38], 0x104
mov ebp, 1
call ebx
cmp eax, 0x103
je 0x550211
test eax, eax
jne 0x5501e1
lea edi, [esp + 0x3c]
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
lea edx, [esp + 0x348]
mov eax, ecx
mov esi, edi
mov edi, edx
push 0x5c
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea ecx, [esp + 0x34c]
push ecx
call fcn.00616d50
add esp, 8
test eax, eax
je 0x55015f
mov byte [eax], 0
lea edx, [esp + 0x244]
lea eax, [esp + 0x348]
push edx
push eax
call fcn.0061a2c3
add esp, 8
test eax, eax
jne 0x5501e1
lea ecx, [esp + 0x18]
lea edx, [esp + 0x1c]
push ecx
mov ecx, dword [esp + 0x18]
push edx
push eax
push eax
lea eax, [esp + 0x4c]
push eax
push ecx
call dword [sym.imp.advapi32.dll_RegQueryValueExA]
test eax, eax
jne 0x5501e1
mov eax, dword [0x93e128]
test eax, eax
je 0x5501c8
lea edx, [esp + 0x1c]
push edx
push 0x68699c
call fcn.0055dbb0
add esp, 4
push eax
mov eax, dword [0x93e128]
add eax, 0x28
push eax
call fcn.0054ce40
add esp, 0xc
mov edx, dword [esp + 0x14]
lea ecx, [esp + 0x3c]
push ecx
push edx
call dword [sym.imp.advapi32.dll_RegDeleteValueA]
test eax, eax
jne 0x5501e1
mov byte [esp + 0x13], 1
push 0
push 0
push 0
lea ecx, [esp + 0x24]
push 0
lea edx, [esp + 0x4c]
mov eax, ebp
push ecx
push edx
push eax
mov eax, dword [esp + 0x30]
mov dword [esp + 0x34], 0x104
push eax
inc ebp
call ebx
cmp eax, 0x103
jne 0x550118
mov ecx, dword [esp + 0x14]
push ecx
call dword [sym.imp.advapi32.dll_RegCloseKey]
pop ebx
mov al, byte [esp + 0xf]
pop edi
pop esi
pop ebp
add esp, 0x43c
ret
Function at 0x550230
Capabilities:
Set registry value

Disassembly:
push ecx
lea eax, [esp]
push ebx
push eax
push 0xf003f
push 0
push 0x686a40
xor bl, bl
call fcn.0055dbb0
add esp, 4
push eax
push 0x80000002
call dword [sym.imp.advapi32.dll_RegOpenKeyExA]
test eax, eax
jne 0x550291
lea ecx, [esp + 0xc]
push 4
push ecx
push 4
push eax
push 0x686a28
call fcn.0055dbb0
mov edx, dword [esp + 0x18]
add esp, 4
push eax
push edx
call dword [sym.imp.advapi32.dll_RegSetValueExA]
test eax, eax
jne 0x550286
mov bl, 1
mov eax, dword [esp + 4]
push eax
call dword [sym.imp.advapi32.dll_RegCloseKey]
mov al, bl
pop ebx
pop ecx
ret

Function at 0x553f30
Capabilities:
Initialize winsock library

Disassembly:
push 0xffffffffffffffff
push 0x647ca7
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x19c
mov eax, dword [0x68e698]
push esi
push edi
mov edi, ecx
mov dword [esp + 0x1a0], eax
mov dword [esp + 0xc], edi
call fcn.005b6100
lea esi, [edi + 0xc]
mov ecx, esi
mov dword [esp + 0x1ac], 0
call fcn.00553c70
mov dword [esi + 4], eax
mov dword [esi + 8], 0
lea eax, [esp + 0x10]
push eax
push 0x202
mov byte [esp + 0x1b4], 1
mov dword [edi + 0x18], 0
call dword [sym.imp.ws2_32.dll_WSAStartup]
mov esi, 0x64
push 0x2c
call fcn.00614bf2
add esp, 4
mov dword [esp + 8], eax
test eax, eax
mov byte [esp + 0x1ac], 2
je 0x553fcf
push 0x4000
mov ecx, eax
call fcn.00558d00
jmp 0x553fd1
xor eax, eax
test eax, eax
mov byte [esp + 0x1ac], 1
je 0x553fee
mov ecx, dword [eax + 4]
test ecx, ecx
je 0x553fee
push 0
push eax
mov ecx, edi
call fcn.00558d40
dec esi
jne 0x553fa7
mov ecx, dword [esp + 0x1a4]
mov eax, edi
pop edi
mov dword fs:[0], ecx
mov ecx, dword [esp + 0x19c]
pop esi
call fcn.006162c0
add esp, 0x1a8
ret
Function at 0x554120
Capabilities:
Encode data using xor
Hash data with crc32
Read file on windows

Disassembly:
push ebp
mov eax, 0x1014
lea ebp, [esp - 0xf94]
call fcn.00616c80
mov eax, dword [0x68e698]
mov ecx, dword [ebp + 0xf9c]
push ebx
push esi
push edi
push 0
push 0x8000027
push 3
push 0
push 1
mov dword [ebp + 0xf90], eax
mov eax, dword [ebp + 0xfa0]
push 0x80000000
push ecx
mov dword [ebp - 0x7c], 0
mov dword [eax], 0xffffffff
call dword [sym.imp.kernel32.dll_CreateFileA]
mov esi, eax
cmp esi, 0xffffffff
mov dword [ebp - 0x78], esi
jne 0x55418a
call dword [sym.imp.kernel32.dll_GetLastError]
mov dword [ebp - 0x7c], eax
jmp 0x554210
push 0
lea edx, [ebp - 0x74]
push edx
push 0x1000
lea eax, [ebp - 0x70]
push eax
push esi
mov dword [ebp - 0x80], 0x686af0
call dword [sym.imp.kernel32.dll_ReadFile]
test eax, eax
je 0x55420c
jmp 0x5541b0
mov eax, dword [ebp - 0x74]
test eax, eax
je 0x55420c
push esi
push edi
mov eax, dword [ebp + 0xfa0]
mov ecx, dword [eax]
mov edi, dword [ebp - 0x80]
lea esi, [ebp - 0x70]
mov ebx, dword [ebp - 0x74]
lea edx, [esi + ebx]
xor eax, eax
mov bl, byte [esi]
mov al, cl
inc esi
xor al, bl
shr ecx, 8
mov ebx, dword [edi + eax*4]
xor ecx, ebx
cmp edx, esi
jne 0x5541cd
pop edi
pop esi
mov eax, dword [ebp + 0xfa0]
mov dword [eax], ecx
mov eax, dword [ebp - 0x78]
push 0
lea ecx, [ebp - 0x74]
push ecx
push 0x1000
lea edx, [ebp - 0x70]
push edx
push eax
call dword [sym.imp.kernel32.dll_ReadFile]
test eax, eax
mov esi, dword [ebp - 0x78]
jne 0x5541b0
test esi, esi
je 0x554217
push esi
call dword [sym.imp.kernel32.dll_CloseHandle]
mov eax, dword [ebp + 0xfa0]
mov ecx, dword [eax]
not ecx
mov dword [eax], ecx
mov ecx, dword [ebp + 0xf90]
mov eax, dword [ebp - 0x7c]
call fcn.006162c0
pop edi
pop esi
pop ebx
add ebp, 0xf94
mov esp, ebp
pop ebp
ret

Function at 0x554240
Capabilities:
Encode data using xor
Hash data with crc32

Disassembly:
mov ecx, dword [esp + 0xc]
push esi
mov esi, dword [esp + 0xc]
test esi, esi
mov dword [ecx], 0xffffffff
jbe 0x554283
mov edx, dword [esp + 8]
push ebx
push edi
lea esp, [esp]
mov eax, dword [ecx]
movzx ebx, byte [edx]
mov edi, eax
and edi, 0xff
xor edi, ebx
mov ebx, dword [edi*4 + 0x686af0]
shr eax, 8
xor eax, ebx
inc edx
dec esi
mov dword [ecx], eax
jne 0x554260
pop edi
pop ebx
mov eax, dword [ecx]
not eax
mov dword [ecx], eax
xor eax, eax
pop esi
ret

Function at 0x5589a0
Capabilities:
Encode data using xor

Disassembly:
mov eax, dword [esp + 8]
push esi
xor esi, esi
test eax, eax
jle 0x558a08
movzx eax, word [esp + 0x10]
movzx ecx, byte [esp + 0x14]
push ebx
lea eax, [eax + eax*4]
shl eax, 1
add ecx, eax
push ebp
push edi
lea edi, [ecx + ecx*4]
movzx ecx, byte [esp + 0x24]
add ecx, eax
lea ebp, [ecx + ecx*4]
mov ecx, dword [esp + 0x14]
shl edi, 3
shl ebp, 3
xor edx, edx
mov eax, esi
mov ebx, 0x28
div ebx
mov bl, byte [ecx]
mov al, byte [edx + edi + 0x6616d0]
xor bl, al
mov byte [ecx], bl
mov dl, byte [edx + ebp + 0x6616d0]
mov al, bl
xor dl, al
mov eax, dword [esp + 0x18]
mov byte [ecx], dl
inc ecx
inc esi
cmp esi, eax
jl 0x5589d6
pop edi
pop ebp
pop ebx
pop esi
ret 0x14
Function at 0x558bb0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, dword [esp + 0xc]
push esi
xor esi, esi
test ebp, ebp
jle 0x558c0b
movzx eax, word [esp + 0x14]
movzx ecx, byte [esp + 0x18]
lea eax, [eax + eax*4]
push ebx
lea eax, [ecx + eax*2]
mov ecx, dword [esp + 0x10]
push edi
lea edi, [eax + eax*4]
shl edi, 3
jmp 0x558be0
xor edx, edx
mov eax, esi
mov ebx, 0x28
div ebx
mov al, byte [ecx]
mov dl, byte [edx + edi + 0x6616d0]
xor dl, al
mov al, dl
sar al, 7
and al, 1
shl dl, 1
or al, dl
mov byte [ecx], al
inc ecx
inc esi
cmp esi, ebp
jl 0x558be0
pop edi
pop ebx
pop esi
pop ebp
ret 0x10

Function at 0x558c10
Capabilities:
Encode data using xor

Disassembly:
mov eax, dword [esp + 8]
push edi
xor edi, edi
test eax, eax
jle 0x558c6b
movzx eax, word [esp + 0x10]
movzx ecx, byte [esp + 0x14]
push ebx
lea eax, [eax + eax*4]
lea eax, [ecx + eax*2]
push ebp
lea ebx, [eax + eax*4]
push esi
mov esi, dword [esp + 0x14]
shl ebx, 3
mov al, byte [esi]
mov cl, al
sar cl, 1
shl al, 7
and cl, 0x7f
or cl, al
xor edx, edx
mov eax, edi
mov ebp, 0x28
div ebp
mov eax, dword [esp + 0x18]
mov byte [esi], cl
mov dl, byte [edx + ebx + 0x6616d0]
xor dl, cl
mov byte [esi], dl
inc esi
inc edi
cmp edi, eax
jl 0x558c38
pop esi
pop ebp
pop ebx
pop edi
ret 0x10

Function at 0x559f60
Capabilities:
Encrypt data using rc4 prga

Disassembly:
sub esp, 8
mov eax, dword [esp + 0x14]
push eax
call fcn.00559ef0
add esp, 4
test ax, ax
mov dword [esp + 4], eax
jle 0x55a03b
mov al, byte [esp + 0x18]
push ebx
xor ecx, ecx
xor bl, bl
test al, al
jbe 0x55a03a
push ebp
mov ebp, dword [esp + 0x14]
push edi
mov edi, dword [esp + 0x1c]
push esi
lea esp, [esp]
movzx ax, byte [esp + 0x2c]
cmp cx, ax
jae 0x55a037
movzx edx, bl
movzx eax, byte [edx + ebp]
dec eax
cdq
mov esi, 5
idiv esi
test bl, bl
lea esi, [eax + 1]
movsx eax, dx
movsx edx, word [esp + 0x14]
lea eax, [edx + eax*4]
jne 0x559fdb
mov dx, word [eax*2 + 0x688696]
jmp 0x559fe3
mov dx, word [eax*2 + 0x6886be]
mov word [esp + 0x10], dx
mov eax, dword [esp + 0x10]
and eax, 0xffffffc0
imul eax, esi
xor edx, edx
mov dl, byte [esp + 0x10]
and edx, 0x3f
xor eax, edx
movzx edx, cx
mov word [esp + 0x10], ax
mov word [edi + edx*2], ax
mov al, byte [esp + 0x10]
and al, 0x3f
inc ecx
cmp al, 4
jne 0x55a029
mov edx, dword [esp + 0x10]
and edx, 0xffc3
movzx eax, cx
or edx, 3
mov word [edi + eax*2], dx
inc ecx
mov al, byte [esp + 0x28]
inc bl
cmp bl, al
jb 0x559fa0
pop esi
pop edi
pop ebp
pop ebx
add esp, 8
ret