joyce8/EMBER2024-capa huggingface dataset:
Function at 0x46ca40
Capabilities:
Get local ipv4 addresses
Get socket information

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
and esp, 0xfffffff0
sub esp, 0xa0
xorps xmm0, xmm0
mov esi, ecx
lea eax, [esp + 8]
mov dword [esp + 8], pe_nt_image_headers32
lea ecx, [esp + 0x20]
movaps xmmword [esp + 0x90], xmm0
movaps xmmword [esp + 0x80], xmm0
movaps xmmword [esp + 0x70], xmm0
movaps xmmword [esp + 0x60], xmm0
movaps xmmword [esp + 0x50], xmm0
movaps xmmword [esp + 0x40], xmm0
movaps xmmword [esp + 0x30], xmm0
movaps xmmword [esp + 0x20], xmm0
push eax
push ecx
push edx
call sub.ws2_32.dll_getsockname
cmp eax, 0xffffffff
je 0x46cb1b
movzx ecx, word [esp + 0x20]
mov eax, dword [esp + 8]
cmp ecx, 2
je 0x46cb33
cmp ecx, 0x17
jne 0x46cb53
cmp eax, 0x1b
jbe 0x46cb6a
movsd xmm0, qword [esp + 0x28]
movzx eax, word [esp + 0x22]
mov ecx, dword [esp + 0x24]
mov edx, dword [esp + 0x38]
mov word [esi], 1
movsd qword [esp + 0x10], xmm0
movsd xmm0, qword [esp + 0x30]
rol ax, 8
movsd qword [esp + 0x18], xmm0
movsd xmm0, qword [esp + 0xe]
movsd xmm1, qword [esp + 0x16]
movzx edi, word [esp + 0x1e]
movsd qword [esi + 2], xmm0
movsd qword [esi + 0xa], xmm1
mov word [esi + 0x12], di
mov dword [esi + 0x14], ecx
mov dword [esi + 0x18], edx
mov word [esi + 0x1c], ax
jmp 0x46cb63
call sub.ws2_32.dll_WSAGetLastError
mov byte [esi + 4], 0
mov byte [esi + 7], 0
mov word [esi + 5], 0
mov dword [esi + 8], eax
jmp 0x46cb5e
cmp eax, 0xf
jbe 0x46cb7b
movzx ecx, word [esp + 0x22]
mov eax, dword [esp + 0x24]
mov word [esi], 0
rol cx, 8
mov dword [esi + 2], eax
mov word [esi + 6], cx
jmp 0x46cb63
mov byte [esi + 4], 2
mov dword [esi + 8], 0x4c2dd0
mov word [esi], 2
lea esp, [ebp - 8]
pop esi
pop edi
pop ebp
ret
push 0x4c2db0
push 0x3a
push 0x4c2d74
call sym.core::panicking::panic::h2de0902fd6c3d9b1
push 0x4c2d64
push 0x39
push 0x4c2d08
call sym.core::panicking::panic::h2de0902fd6c3d9b1
nop dword [eax]

Function at 0x46cdd0
Capabilities:
Send data
Send data on socket

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
sub esp, 0x24
mov eax, dword [ebp + 0x14]
mov edi, dword [ebp + 0x18]
mov ecx, 0x7fffffff
cmp eax, 0x7fffffff
cmovb ecx, eax
cmp word [edi], 0
je 0x46ce0f
mov eax, dword [edi + 0x18]
movups xmm0, xmmword [edi + 4]
lea ebx, [edi + 0x14]
mov si, 0x17
mov edx, 0x1c
mov dword [ebp - 0x14], eax
mov eax, 0x1c
jmp 0x46ce29
lea eax, [edi + 2]
xorps xmm0, xmm0
mov edx, 0x10
mov si, 2
mov dword [ebp - 0x10], eax
mov eax, 6
mov ebx, dword [ebp - 0x10]
movzx eax, word [edi + eax]
mov edi, dword [ebx]
mov word [ebp - 0x30], si
rol ax, 8
mov word [ebp - 0x2e], ax
mov eax, dword [ebp - 0x14]
mov dword [ebp - 0x2c], edi
movups xmmword [ebp - 0x28], xmm0
mov dword [ebp - 0x18], eax
lea eax, [ebp - 0x30]
push edx
push eax
push 0
push ecx
push dword [ebp + 0x10]
mov eax, dword [ebp + 0xc]
push dword [eax]
call sub.ws2_32.dll_sendto
cmp eax, 0xffffffff
je 0x46ce69
mov edx, dword [ebp + 8]
mov cl, 4
jmp 0x46ce7d
call sub.ws2_32.dll_WSAGetLastError
mov edx, dword [ebp + 8]
xor ecx, ecx
mov byte [edx + 3], 0
mov word [edx + 1], 0
mov byte [edx], cl
mov dword [edx + 4], eax
mov eax, edx
add esp, 0x24
pop esi
pop edi
pop ebx
pop ebp
ret
Function at 0x46ce90
Capabilities:
Connect socket

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
sub esp, 0x24
mov eax, dword [ebp + 0x10]
mov esi, dword [ebp + 8]
movzx ecx, byte [eax]
cmp cl, 4
jne 0x46cecd
mov ecx, dword [eax + 4]
cmp word [ecx], 0
je 0x46cee6
mov eax, dword [ecx + 0x18]
movups xmm0, xmmword [ecx + 4]
lea edx, [ecx + 0x14]
mov edi, 0x1c
mov ebx, 0x1c
mov dword [ebp - 0x14], eax
mov ax, 0x17
jmp 0x46cf00
movzx edx, byte [eax + 3]
movzx edi, word [eax + 1]
mov eax, dword [eax + 4]
mov byte [esi + 3], dl
mov word [esi + 1], di
mov byte [esi], cl
mov dword [esi + 4], eax
jmp 0x46cf46
lea eax, [ecx + 2]
xorps xmm0, xmm0
mov ebx, 0x10
mov edi, 6
mov dword [ebp - 0x10], eax
mov ax, 2
mov edx, dword [ebp - 0x10]
movzx ecx, word [ecx + edi]
mov edx, dword [edx]
mov word [ebp - 0x30], ax
mov eax, dword [ebp - 0x14]
rol cx, 8
mov word [ebp - 0x2e], cx
mov dword [ebp - 0x2c], edx
movups xmmword [ebp - 0x28], xmm0
mov dword [ebp - 0x18], eax
lea eax, [ebp - 0x30]
push ebx
push eax
mov eax, dword [ebp + 0xc]
push dword [eax]
call sub.ws2_32.dll_connect
cmp eax, 0xffffffff
je 0x46cf38
mov byte [esi], 4
jmp 0x46cf46
call sub.ws2_32.dll_WSAGetLastError
mov dword [esi + 4], eax
mov dword [esi], 0
mov eax, esi
add esp, 0x24
pop esi
pop edi
pop ebx
pop ebp
ret

Function at 0x46d070
Capabilities:
Enumerate pe sections

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
mov edx, dword [ebp + 0xc]
mov eax, dword [ebp + 8]
cmp word [edx], 0
je 0x46d0b1
movsd xmm0, qword [edx + 4]
movsd xmm1, qword [edx + 0xc]
mov ecx, dword [edx + 0x14]
mov esi, dword [edx + 0x18]
movzx edx, word [edx + 0x1c]
mov di, 0x17
movsd qword [eax + 0x10], xmm1
movsd qword [eax + 8], xmm0
mov dword [eax + 0x18], esi
rol dx, 8
mov esi, 0x1c
jmp 0x46d0d3
mov ecx, dword [edx + 2]
movzx edx, word [edx + 6]
mov dword [eax + 0xc], 0
mov dword [eax + 8], 0
mov esi, 0x10
mov di, 2
rol dx, 8
mov word [eax], di
mov word [eax + 2], dx
mov dword [eax + 4], ecx
mov dword [eax + 0x1c], esi
pop esi
pop edi
pop ebp
ret
Function at 0x46d130
Capabilities:
Read file via mapping

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x78
mov eax, dword [ebp + 8]
mov edi, ecx
xorps xmm0, xmm0
mov dword [esp + 0x18], 0
mov dword [esp + 0x20], 0
mov dword [esp + 0x24], 0
mov dword [esp + 0x28], 7
movsd qword [esp + 0x32], xmm0
movsd qword [esp + 0x2c], xmm0
mov byte [esp + 0x34], 1
lea esi, [esp + 0x18]
lea ecx, [esp + 0x10]
push esi
push eax
call sym.std::sys::pal::windows::fs::File::open::h3e8e5909ba41fa7f
add esp, 8
cmp byte [esp + 0x10], 4
jne 0x46d194
mov esi, dword [esp + 0x14]
jmp 0x46d1a1
movzx eax, byte [esp + 0x10]
mov esi, dword [esp + 0x14]
cmp al, 4
jne 0x46d21b
lea ebx, [esp + 0x18]
mov edx, esi
mov ecx, ebx
call sym.std::sys::pal::windows::fs::File::file_attr::h1ba73a76d0a278d7
mov eax, dword [esp + 0x18]
xor eax, 2
or eax, dword [esp + 0x1c]
jne 0x46d209
cmp byte [esp + 0x20], 3
jne 0x46d210
mov eax, dword [esp + 0x24]
mov dword [esp + 4], edi
mov edi, dword [eax + 4]
mov ebx, dword [eax]
mov dword [esp + 0xc], eax
mov eax, dword [edi]
test eax, eax
je 0x46d1df
push ebx
call eax
add esp, 4
mov eax, dword [edi + 4]
test eax, eax
je 0x46d1f3
push dword [edi + 8]
push eax
push ebx
call sym.___rust_dealloc
add esp, 0xc
push 4
push 0xc
push dword [esp + 0x14]
call sym.___rust_dealloc
add esp, 0xc
mov edi, dword [esp + 4]
jmp 0x46d210
cmp dword [esp + 0x54], 0
je 0x46d267
mov dword [edi], 0
jmp 0x46d30e
cmp al, 3
jne 0x46d25c
mov eax, dword [esi]
mov ebx, dword [esi + 4]
mov dword [esp + 4], eax
mov eax, dword [ebx]
test eax, eax
je 0x46d237
push dword [esp + 4]
call eax
add esp, 4
mov eax, dword [ebx + 4]
mov ecx, dword [esp + 4]
test eax, eax
je 0x46d24f
push dword [ebx + 8]
push eax
push ecx
call sym.___rust_dealloc
add esp, 0xc
push 4
push 0xc
push esi
call sym.___rust_dealloc
add esp, 0xc
mov dword [edi], 0
jmp 0x46d314
mov eax, dword [esp + 0x50]
test esi, esi
mov dword [esp + 0xc], eax
je 0x46d299
mov dword [esp + 0x18], 0
call sub.kernel32.dll_GetCurrentProcess
push 2
push 0
push 0
push ebx
push eax
push esi
push eax
call sub.kernel32.dll_DuplicateHandle
test eax, eax
je 0x46d303
mov eax, dword [esp + 0x18]
jmp 0x46d29b
xor eax, eax
push 0
push 0
push 0
push 2
push 0
mov dword [esp + 0x1c], eax
push eax
call sub.kernel32.dll_CreateFileMappingA
test eax, eax
je 0x46d2f2
push dword [esp + 0xc]
push 0
push 0
push 4
push eax
mov dword [esp + 0x18], edi
mov edi, eax
call sub.kernel32.dll_MapViewOfFile
mov ebx, eax
push edi
mov edi, dword [esp + 8]
call sub.kernel32.dll_CloseHandle
test ebx, ebx
je 0x46d2f2
mov eax, dword [esp + 8]
mov ecx, dword [esp + 0xc]
mov dword [edi + 4], eax
mov dword [edi + 8], ebx
mov dword [edi + 0xc], ecx
mov dword [edi], 1
jmp 0x46d30e
mov dword [edi], 0
push dword [esp + 8]
call sub.kernel32.dll_CloseHandle
jmp 0x46d30e
call sub.kernel32.dll_GetLastError
mov dword [edi], 0
push esi
call sub.kernel32.dll_CloseHandle
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
Function at 0x472140
Capabilities:
Get thread local storage value
Set thread local storage value

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
push eax
mov esi, dword [0x4ba02c]
mov edi, ecx
test esi, esi
je 0x4721e2
dec esi
push esi
call sub.kernel32.dll_TlsGetValue
cmp eax, 1
ja 0x4721da
je 0x472182
test edi, edi
je 0x472186
mov ebx, dword [edi]
mov dword [edi], 0
mov eax, dword [edi + 8]
test ebx, ebx
cmove eax, ebx
cmovne ebx, dword [edi + 4]
mov dword [ebp - 0x10], eax
jmp 0x47218f
xor eax, eax
jmp 0x4721da
mov dword [ebp - 0x10], 0
xor ebx, ebx
mov eax, dword [0x4dacf8]
movzx eax, byte [eax]
push 4
push 0xc
call sym.___rust_alloc
add esp, 8
test eax, eax
je 0x472202
mov ecx, dword [ebp - 0x10]
mov dword [eax], ebx
mov byte [eax + 4], cl
mov dword [eax + 8], esi
push esi
mov ebx, eax
call sub.kernel32.dll_TlsGetValue
mov edi, eax
mov dword [ebp - 0x10], ebx
push ebx
push esi
call sub.kernel32.dll_TlsSetValue
test edi, edi
je 0x4721d7
push 4
push 0xc
push edi
call sym.___rust_dealloc
add esp, 0xc
mov eax, dword [ebp - 0x10]
add esp, 4
pop esi
pop edi
pop ebx
pop ebp
ret
push 0x4ba02c
call sym.std::sys::thread_local::key::windows::LazyKey::init::h8219056d8c3ded71
add esp, 4
mov esi, eax
push esi
call sub.kernel32.dll_TlsGetValue
cmp eax, 1
jbe 0x472163
jmp 0x4721da
push 0xc
push 4
call sym.alloc::alloc::handle_alloc_error::h9a0385ddba01e206
nop dword [eax + eax]

Function at 0x472210
Capabilities:
Get thread local storage value
Set thread local storage value

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
sub esp, 8
mov esi, dword [0x4ba03c]
mov edi, ecx
test esi, esi
je 0x472239
dec esi
push esi
call sub.kernel32.dll_TlsGetValue
cmp eax, 1
jbe 0x472253
add eax, 4
jmp 0x4722c3
push 0x4ba03c
call sym.std::sys::thread_local::key::windows::LazyKey::init::h8219056d8c3ded71
add esp, 4
mov esi, eax
push esi
call sub.kernel32.dll_TlsGetValue
cmp eax, 1
ja 0x472231
je 0x47226d
xor ecx, ecx
test edi, edi
je 0x472271
cmp byte [edi], 0
mov byte [edi], 0
movzx eax, byte [edi + 1]
cmove eax, ecx
mov dword [ebp - 0x14], eax
jmp 0x472278
xor eax, eax
jmp 0x4722c3
mov dword [ebp - 0x14], 0
mov eax, dword [0x4dacf8]
movzx eax, byte [eax]
push 4
push 8
call sym.___rust_alloc
add esp, 8
test eax, eax
je 0x4722cb
mov ebx, eax
mov dword [eax], esi
add eax, 4
mov dword [ebp - 0x10], eax
mov eax, dword [ebp - 0x14]
mov byte [ebx + 4], al
push esi
call sub.kernel32.dll_TlsGetValue
mov edi, eax
push ebx
push esi
call sub.kernel32.dll_TlsSetValue
test edi, edi
je 0x4722c0
push 4
push 8
push edi
call sym.___rust_dealloc
add esp, 0xc
mov eax, dword [ebp - 0x10]
add esp, 8
pop esi
pop edi
pop ebx
pop ebp
ret
push 8
push 4
call sym.alloc::alloc::handle_alloc_error::h9a0385ddba01e206
nop word cs:[eax + eax]
nop
Function at 0x4722e0
Capabilities:
Get thread local storage value
Set thread local storage value

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
sub esp, 0xc
mov esi, dword [0x4ba05c]
mov edi, ecx
test esi, esi
je 0x472387
dec esi
push esi
call sub.kernel32.dll_TlsGetValue
cmp eax, 1
ja 0x47237f
je 0x47231c
test edi, edi
je 0x472320
mov ebx, dword [edi]
mov dword [edi], 0
test ebx, ebx
je 0x472322
mov ebx, dword [edi + 4]
jmp 0x472322
xor eax, eax
jmp 0x47237f
xor ebx, ebx
mov eax, dword [0x4dacf8]
mov dword [ebp - 0x18], ebx
mov dword [ebp - 0x14], esi
movzx eax, byte [eax]
push 4
push 8
call sym.___rust_alloc
add esp, 8
test eax, eax
je 0x4723a7
mov dword [eax], ebx
mov dword [eax + 4], esi
push esi
mov ebx, eax
call sub.kernel32.dll_TlsGetValue
mov edi, eax
mov dword [ebp - 0x10], ebx
push ebx
push esi
call sub.kernel32.dll_TlsSetValue
test edi, edi
je 0x47237c
mov eax, dword [edi]
test eax, eax
je 0x47236f
lock dec dword [eax]
jne 0x47236f
mov ecx, edi
call sym.alloc::sync::Arc_LT_T_C_A_GT_::drop_slow::h39c803f4a20ab912
push 4
push 8
push edi
call sym.___rust_dealloc
add esp, 0xc
mov eax, dword [ebp - 0x10]
add esp, 0xc
pop esi
pop edi
pop ebx
pop ebp
ret
push 0x4ba05c
call sym.std::sys::thread_local::key::windows::LazyKey::init::h8219056d8c3ded71
add esp, 4
mov esi, eax
push esi
call sub.kernel32.dll_TlsGetValue
cmp eax, 1
jbe 0x472305
jmp 0x47237f
push 8
push 4
call sym.alloc::alloc::handle_alloc_error::h9a0385ddba01e206
add esp, 8
ud2

Function at 0x4723d0
Capabilities:
Get thread local storage value
Set thread local storage value

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
push eax
mov esi, dword [0x4ba07c]
mov edi, ecx
test esi, esi
je 0x472476
dec esi
push esi
call sub.kernel32.dll_TlsGetValue
cmp eax, 1
ja 0x47246e
je 0x47241e
test edi, edi
je 0x472422
mov eax, dword [edi]
xor ecx, ecx
mov ebx, 0
mov dword [edi], 0
or eax, dword [edi + 4]
mov dword [edi + 4], 0
je 0x47241a
mov ecx, dword [edi + 0xc]
mov ebx, dword [edi + 8]
mov edi, ecx
jmp 0x472426
xor eax, eax
jmp 0x47246e
xor ebx, ebx
xor edi, edi
mov eax, dword [0x4dacf8]
movzx eax, byte [eax]
push 8
push 0x10
call sym.___rust_alloc
add esp, 8
test eax, eax
je 0x472496
mov dword [eax], ebx
mov dword [eax + 4], edi
mov dword [eax + 8], esi
push esi
mov ebx, eax
call sub.kernel32.dll_TlsGetValue
mov edi, eax
mov dword [ebp - 0x10], ebx
push ebx
push esi
call sub.kernel32.dll_TlsSetValue
test edi, edi
je 0x47246b
push 8
push 0x10
push edi
call sym.___rust_dealloc
add esp, 0xc
mov eax, dword [ebp - 0x10]
add esp, 4
pop esi
pop edi
pop ebx
pop ebp
ret
push 0x4ba07c
call sym.std::sys::thread_local::key::windows::LazyKey::init::h8219056d8c3ded71
add esp, 4
mov esi, eax
push esi
call sub.kernel32.dll_TlsGetValue
cmp eax, 1
jbe 0x4723f3
jmp 0x47246e
push 0x10
push 8
call sym.alloc::alloc::handle_alloc_error::h9a0385ddba01e206
nop
Function at 0x4724a0
Capabilities:
Get thread local storage value
Set thread local storage value

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
sub esp, 0xc
mov esi, dword [0x4ba08c]
mov edi, ecx
test esi, esi
je 0x472547
dec esi
push esi
call sub.kernel32.dll_TlsGetValue
cmp eax, 1
ja 0x47253f
je 0x4724dc
test edi, edi
je 0x4724e0
mov ebx, dword [edi]
mov dword [edi], 0
test ebx, ebx
je 0x4724e2
mov ebx, dword [edi + 4]
jmp 0x4724e2
xor eax, eax
jmp 0x47253f
xor ebx, ebx
mov eax, dword [0x4dacf8]
mov dword [ebp - 0x18], ebx
mov dword [ebp - 0x14], esi
movzx eax, byte [eax]
push 4
push 8
call sym.___rust_alloc
add esp, 8
test eax, eax
je 0x472567
mov dword [eax], ebx
mov dword [eax + 4], esi
push esi
mov ebx, eax
call sub.kernel32.dll_TlsGetValue
mov edi, eax
mov dword [ebp - 0x10], ebx
push ebx
push esi
call sub.kernel32.dll_TlsSetValue
test edi, edi
je 0x47253c
mov eax, dword [edi]
test eax, eax
je 0x47252f
lock dec dword [eax]
jne 0x47252f
mov ecx, edi
call sym.alloc::sync::Arc_LT_T_C_A_GT_::drop_slow::hc39c94033ce122a6
push 4
push 8
push edi
call sym.___rust_dealloc
add esp, 0xc
mov eax, dword [ebp - 0x10]
add esp, 0xc
pop esi
pop edi
pop ebx
pop ebp
ret
push 0x4ba08c
call sym.std::sys::thread_local::key::windows::LazyKey::init::h8219056d8c3ded71
add esp, 4
mov esi, eax
push esi
call sub.kernel32.dll_TlsGetValue
cmp eax, 1
jbe 0x4724c5
jmp 0x47253f
push 8
push 4
call sym.alloc::alloc::handle_alloc_error::h9a0385ddba01e206
add esp, 8
ud2

Function at 0x475bd0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push esi
mov ecx, dword [ebp + 0xc]
test ecx, ecx
je 0x475bfe
mov edx, dword [ebp + 8]
xor eax, eax
movzx esi, byte [edx]
shl eax, 4
inc edx
add esi, eax
mov eax, esi
shr eax, 0x18
and eax, 0xfffffff0
xor eax, esi
dec ecx
jne 0x475be0
and eax, 0xfffffff
pop esi
pop ebp
ret
xor eax, eax
pop esi
pop ebp
ret

Function at 0x475c10
Capabilities:
Hash data using djb2

Disassembly:
push ebp
mov ebp, esp
push esi
mov ecx, dword [ebp + 0xc]
test ecx, ecx
je 0x475c43
mov edx, dword [ebp + 8]
mov eax, 0x1505
nop word cs:[eax + eax]
nop dword [eax]
mov esi, eax
shl esi, 5
add esi, eax
movzx eax, byte [edx]
inc edx
add eax, esi
dec ecx
jne 0x475c30
pop esi
pop ebp
ret
mov eax, 0x1505
pop esi
pop ebp
ret
Function at 0x4a27b0
Capabilities:
Encrypt data using rc4 prga

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
mov eax, dword [ebp + 8]
test eax, eax
je 0x4a2808
lea edi, [edx + eax*2]
xor ebx, ebx
movzx esi, byte [edx + 1]
cmp byte [edx], ch
lea edx, [edx + 2]
lea eax, [ebx + esi]
jne 0x4a2800
cmp eax, ebx
jb 0x4a2876
cmp eax, dword [ebp + 0x10]
ja 0x4a2882
add ebx, dword [ebp + 0xc]
nop word cs:[eax + eax]
nop
test esi, esi
je 0x4a2802
dec esi
cmp byte [ebx], cl
lea ebx, [ebx + 1]
jne 0x4a27f0
jmp 0x4a285f
ja 0x4a2808
cmp edx, edi
mov ebx, eax
jne 0x4a27c2
mov edx, dword [ebp + 0x18]
test edx, edx
je 0x4a2863
mov esi, dword [ebp + 0x14]
movzx ecx, cx
mov al, 1
add edx, esi
nop dword [eax]
movzx ebx, byte [esi]
lea edi, [esi + 1]
test bl, bl
js 0x4a2840
mov esi, edi
sub ecx, ebx
jns 0x4a2857
jmp 0x4a2865
cmp edi, edx
je 0x4a286c
movzx edi, byte [esi + 1]
and ebx, 0x7f
add esi, 2
shl ebx, 8
or ebx, edi
sub ecx, ebx
js 0x4a2865
xor al, 1
cmp esi, edx
jne 0x4a2820
jmp 0x4a2865
xor eax, eax
jmp 0x4a2865
mov al, 1
and al, 1
pop esi
pop edi
pop ebx
pop ebp
ret
push 0x4cf954
call sym.core::option::unwrap_failed::h400a3d34e496ce4a
push 0x4cf964
push eax
push ebx
call sym.core::slice::index::slice_index_order_fail::h40cd09a6386d1bdc
push 0x4cf964
push dword [ebp + 0x10]
push eax
call sym.core::slice::index::slice_end_index_len_fail::hb7bcdcb5c84f7e98
Function at 0x4a8910
Capabilities:
Encrypt data using rc4 prga

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
sub esp, 0x80
mov ecx, dword [ebp + 8]
mov edi, dword [ebp + 0xc]
movzx ecx, byte [ecx]
mov edx, dword [edi + 0x1c]
test dl, 0x10
jne 0x4a8965
test dl, 0x20
jne 0x4a899d
mov eax, ecx
mov edx, ecx
sar al, 7
xor dl, al
sub dl, al
cmp dl, 0x64
jb 0x4a89f6
add dl, dl
mov esi, 0x24
add dl, 0x38
movzx eax, dl
mov dl, 1
movzx eax, word [eax + 0x4cef92]
mov word [ebp - 0x67], ax
jmp 0x4a8a00
xor edx, edx
lea esi, [ebp - 0xc]
mov ch, cl
nop dword [eax]
mov ebx, ecx
shr ch, 4
and bl, 0xf
mov bh, bl
mov eax, ebx
add al, 0x57
or bh, 0x30
cmp bl, 0xa
movzx ebx, bh
movzx eax, al
cmovb eax, ebx
inc edx
cmp cl, 0x10
mov cl, ch
mov byte [esi - 1], al
lea esi, [esi - 1]
jae 0x4a8970
jmp 0x4a89da
xor edx, edx
lea esi, [ebp - 0xc]
mov ch, cl
nop word cs:[eax + eax]
nop
mov eax, ecx
shr ch, 4
and al, 0xf
mov ah, al
mov ebx, eax
add bl, 0x37
or ah, 0x30
cmp al, 0xa
movzx eax, ah
movzx ebx, bl
cmovb ebx, eax
inc edx
cmp cl, 0x10
mov cl, ch
mov byte [esi - 1], bl
lea esi, [esi - 1]
jae 0x4a89b0
mov ecx, pe_nt_image_headers32
sub ecx, edx
cmp ecx, 0x81
jae 0x4a8a50
push edx
push esi
push 2
push str.0x0b0o00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899assertion_failed:_curr___19
push 1
jmp 0x4a8a3c
mov esi, 0x26
cmp dl, 0xa
jae 0x4a8a0c
or dl, 0x30
mov byte [ebp + esi - 0x8c], dl
jmp 0x4a8a20
movzx eax, dl
mov esi, 0x25
movzx eax, word [eax + eax + 0x4cef92]
mov word [ebp - 0x67], ax
xor edx, edx
test cl, cl
mov ecx, 0x27
lea eax, [ebp + esi - 0x8c]
setns dl
sub ecx, esi
push ecx
push eax
push 0
push 1
push edx
push edi
call sym.core::fmt::Formatter::pad_integral::hbe631f7bb92d6830
add esp, 0x18
add esp, 0x80
pop esi
pop edi
pop ebx
pop ebp
ret
push 0x4cef7c
push pe_nt_image_headers32
push ecx
call sym.core::slice::index::slice_start_index_len_fail::h7e8587be95abf61b
Function at 0x4b6090
Capabilities:
Write file on windows

Disassembly:
push ebp
mov ebp, esp
push ebx
lea ebx, [ebp + 0xc]
sub esp, 0x14
mov dword [esp], 2
call sym.___acrt_iob_func
mov dword [esp + 8], 0x1b
mov dword [esp + 0xc], eax
mov dword [esp + 4], 1
mov dword [esp], str.Mingw_w64_runtime_failure:_n
call sym._fwrite
mov dword [esp], 2
call sym.___acrt_iob_func
mov edx, dword [ebp + 8]
mov dword [esp + 8], ebx
mov dword [esp], eax
mov dword [esp + 4], edx
call sym._vfprintf
call sym._abort
lea esi, [esi]

Function at 0x4b60f0
Capabilities:
Allocate or change rwx memory

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
push ebx
mov ebx, eax
sub esp, 0x3c
mov esi, dword [0x4f61c0]
test esi, esi
jle 0x4b6210
mov eax, dword [0x4f61c4]
xor ecx, ecx
add eax, 0xc
lea esi, cs:[esi]
mov edx, dword [eax]
cmp ebx, edx
jb 0x4b612c
mov edi, dword [eax + 4]
add edx, dword [edi + 8]
cmp ebx, edx
jb 0x4b61ad
add ecx, 1
add eax, 0x14
cmp ecx, esi
jne 0x4b6118
mov dword [esp], ebx
call sym.___mingw_GetSectionForAddress
mov edi, eax
test eax, eax
je 0x4b6237
mov eax, dword [0x4f61c4]
lea ebx, [esi + esi*4]
shl ebx, 2
add eax, ebx
mov dword [eax + 0x10], edi
mov dword [eax], 0
call sym.__GetPEImageBase
mov edx, dword [0x4f61c4]
add eax, dword [edi + 0xc]
mov dword [edx + ebx + 0xc], eax
lea edx, [ebp - 0x34]
mov dword [esp + 8], 0x1c
mov dword [esp + 4], edx
mov dword [esp], eax
call dword [sym.imp.KERNEL32.dll_VirtualQuery]
sub esp, 0xc
test eax, eax
je 0x4b6217
mov eax, dword [ebp - 0x20]
lea edx, [eax - 4]
and edx, 0xfffffffb
je 0x4b61a6
lea edx, [eax - 0x40]
and edx, 0xffffffbf
jne 0x4b61b8
add dword [0x4f61c0], 1
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret
cmp eax, 2
mov edx, 4
mov eax, 0x40
mov ecx, dword [ebp - 0x28]
cmove eax, edx
mov edx, dword [ebp - 0x34]
add ebx, dword [0x4f61c4]
mov dword [ebx + 8], ecx
mov dword [ebx + 4], edx
mov dword [esp + 0xc], ebx
mov dword [esp + 8], eax
mov dword [esp + 4], ecx
mov dword [esp], edx
call dword [sym.imp.kernel32.dll_VirtualProtect]
sub esp, 0x10
test eax, eax
jne 0x4b61a6
call dword [sym.imp.kernel32.dll_GetLastError]
mov dword [esp], str.__VirtualProtect_failed_with_code_0x_x
mov dword [esp + 4], eax
call sym.___report_error
lea esi, [esi]
xor esi, esi
jmp 0x4b6136
mov eax, dword [0x4f61c4]
mov eax, dword [eax + ebx + 0xc]
mov dword [esp + 8], eax
mov eax, dword [edi + 8]
mov dword [esp], str.__VirtualQuery_failed_for__d_bytes_at_address__p
mov dword [esp + 4], eax
call sym.___report_error
mov dword [esp + 4], ebx
mov dword [esp], str.Address__p_has_no_image_section
call sym.___report_error
lea esi, cs:[esi]
nop

Function at 0x4b69f0
Capabilities:
Enumerate pe sections

Disassembly:
push ebp
mov ebp, esp
push esi
mov edx, dword [ebp + 8]
push ebx
mov ebx, dword [ebp + 0xc]
add edx, dword [edx + 0x3c]
movzx eax, word [edx + 0x14]
movzx esi, word [edx + 6]
lea eax, [edx + eax + 0x18]
test si, si
je 0x4b6a30
xor ecx, ecx
lea esi, [esi]
mov edx, dword [eax + 0xc]
cmp ebx, edx
jb 0x4b6a26
add edx, dword [eax + 8]
cmp ebx, edx
jb 0x4b6a32
add ecx, 1
add eax, 0x28
cmp ecx, esi
jne 0x4b6a18
xor eax, eax
pop ebx
pop esi
pop ebp
ret
Function at 0x4b6a40
Capabilities:
Parse pe header

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
push ebx
xor ebx, ebx
sub esp, 0x1c
mov eax, dword [ebp + 8]
mov dword [esp], eax
call sym._strlen
cmp eax, 8
ja 0x4b6acd
cmp word [0x400000], 0x5a4d
jne 0x4b6acd
mov edx, dword [0x40003c]
cmp dword [edx + 0x400000], 0x4550
lea eax, [edx + 0x400000]
jne 0x4b6acd
cmp word [edx + 0x400018], 0x10b
jne 0x4b6acd
movzx edx, word [edx + 0x400014]
movzx edi, word [eax + 6]
lea ebx, [eax + edx + 0x18]
test di, di
je 0x4b6ae0
xor esi, esi
jmp 0x4b6ab2
add esi, 1
add ebx, 0x28
cmp esi, edi
je 0x4b6ae0
mov eax, dword [ebp + 8]
mov dword [esp + 8], 8
mov dword [esp], ebx
mov dword [esp + 4], eax
call sym._strncmp
test eax, eax
jne 0x4b6aa8
add esp, 0x1c
mov eax, ebx
pop ebx
pop esi
pop edi
pop ebp
ret
add esp, 0x1c
xor ebx, ebx
mov eax, ebx
pop ebx
pop esi
pop edi
pop ebp
ret

Function at 0x4b6af0
Capabilities:
Parse pe header

Disassembly:
xor eax, eax
cmp word [0x400000], 0x5a4d
jne 0x4b6b15
mov ecx, dword [0x40003c]
cmp dword [ecx + 0x400000], 0x4550
lea edx, [ecx + 0x400000]
je 0x4b6b20
ret
cmp word [ecx + 0x400018], 0x10b
jne 0x4b6b15
push ebp
movzx eax, word [ecx + 0x400014]
lea eax, [edx + eax + 0x18]
mov ebp, esp
push esi
movzx esi, word [ecx + 0x400006]
push ebx
mov ebx, dword [ebp + 8]
sub ebx, 0x400000
test si, si
je 0x4b6b70
xor ecx, ecx
lea esi, [esi]
mov edx, dword [eax + 0xc]
cmp ebx, edx
jb 0x4b6b66
add edx, dword [eax + 8]
cmp ebx, edx
jb 0x4b6b72
add ecx, 1
add eax, 0x28
cmp esi, ecx
jne 0x4b6b58
xor eax, eax
pop ebx
pop esi
pop ebp
ret