joyce8/EMBER2024-capa huggingface dataset:
Function at 0x450910
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 0x4509eb
movzx ecx, word [esp + 0x20]
mov eax, dword [esp + 8]
cmp ecx, 2
je 0x450a03
cmp ecx, 0x17
jne 0x450a23
cmp eax, 0x1b
jbe 0x450a3a
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 0x450a33
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 0x450a2e
cmp eax, 0xf
jbe 0x450a4b
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 0x450a33
mov byte [esi + 4], 2
mov dword [esi + 8], 0x4a3630
mov word [esi], 2
lea esp, [ebp - 8]
pop esi
pop edi
pop ebp
ret
push 0x4a3610
push 0x3a
push 0x4a35d4
call sym.core::panicking::panic::h2de0902fd6c3d9b1
push 0x4a35c4
push 0x39
push 0x4a3568
call sym.core::panicking::panic::h2de0902fd6c3d9b1
nop dword [eax]

Function at 0x450ca0
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 0x450cdf
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 0x450cf9
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 0x450d39
mov edx, dword [ebp + 8]
mov cl, 4
jmp 0x450d4d
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 0x450d60
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 0x450d9d
mov ecx, dword [eax + 4]
cmp word [ecx], 0
je 0x450db6
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 0x450dd0
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 0x450e16
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 0x450e08
mov byte [esi], 4
jmp 0x450e16
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 0x450f40
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 0x450f81
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 0x450fa3
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 0x451000
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 0x451064
mov esi, dword [esp + 0x14]
jmp 0x451071
movzx eax, byte [esp + 0x10]
mov esi, dword [esp + 0x14]
cmp al, 4
jne 0x4510eb
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 0x4510d9
cmp byte [esp + 0x20], 3
jne 0x4510e0
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 0x4510af
push ebx
call eax
add esp, 4
mov eax, dword [edi + 4]
test eax, eax
je 0x4510c3
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 0x4510e0
cmp dword [esp + 0x54], 0
je 0x451137
mov dword [edi], 0
jmp 0x4511de
cmp al, 3
jne 0x45112c
mov eax, dword [esi]
mov ebx, dword [esi + 4]
mov dword [esp + 4], eax
mov eax, dword [ebx]
test eax, eax
je 0x451107
push dword [esp + 4]
call eax
add esp, 4
mov eax, dword [ebx + 4]
mov ecx, dword [esp + 4]
test eax, eax
je 0x45111f
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 0x4511e4
mov eax, dword [esp + 0x50]
test esi, esi
mov dword [esp + 0xc], eax
je 0x451169
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 0x4511d3
mov eax, dword [esp + 0x18]
jmp 0x45116b
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 0x4511c2
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 0x4511c2
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 0x4511de
mov dword [edi], 0
push dword [esp + 8]
call sub.KERNEL32.dll_CloseHandle
jmp 0x4511de
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 0x456010
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 [0x49e02c]
mov edi, ecx
test esi, esi
je 0x4560b2
dec esi
push esi
call sub.KERNEL32.dll_TlsGetValue
cmp eax, 1
ja 0x4560aa
je 0x456052
test edi, edi
je 0x456056
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 0x45605f
xor eax, eax
jmp 0x4560aa
mov dword [ebp - 0x10], 0
xor ebx, ebx
mov eax, dword [0x4bb558]
movzx eax, byte [eax]
push 4
push 0xc
call sym.___rust_alloc
add esp, 8
test eax, eax
je 0x4560d2
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 0x4560a7
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 0x49e02c
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 0x456033
jmp 0x4560aa
push 0xc
push 4
call sym.alloc::alloc::handle_alloc_error::h9a0385ddba01e206
nop dword [eax + eax]

Function at 0x4560e0
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 [0x49e03c]
mov edi, ecx
test esi, esi
je 0x456109
dec esi
push esi
call sub.KERNEL32.dll_TlsGetValue
cmp eax, 1
jbe 0x456123
add eax, 4
jmp 0x456193
push 0x49e03c
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 0x456101
je 0x45613d
xor ecx, ecx
test edi, edi
je 0x456141
cmp byte [edi], 0
mov byte [edi], 0
movzx eax, byte [edi + 1]
cmove eax, ecx
mov dword [ebp - 0x14], eax
jmp 0x456148
xor eax, eax
jmp 0x456193
mov dword [ebp - 0x14], 0
mov eax, dword [0x4bb558]
movzx eax, byte [eax]
push 4
push 8
call sym.___rust_alloc
add esp, 8
test eax, eax
je 0x45619b
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 0x456190
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 0x4561b0
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 [0x49e05c]
mov edi, ecx
test esi, esi
je 0x456257
dec esi
push esi
call sub.KERNEL32.dll_TlsGetValue
cmp eax, 1
ja 0x45624f
je 0x4561ec
test edi, edi
je 0x4561f0
mov ebx, dword [edi]
mov dword [edi], 0
test ebx, ebx
je 0x4561f2
mov ebx, dword [edi + 4]
jmp 0x4561f2
xor eax, eax
jmp 0x45624f
xor ebx, ebx
mov eax, dword [0x4bb558]
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 0x456277
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 0x45624c
mov eax, dword [edi]
test eax, eax
je 0x45623f
lock dec dword [eax]
jne 0x45623f
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 0x49e05c
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 0x4561d5
jmp 0x45624f
push 8
push 4
call sym.alloc::alloc::handle_alloc_error::h9a0385ddba01e206
add esp, 8
ud2

Function at 0x4562a0
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 [0x49e07c]
mov edi, ecx
test esi, esi
je 0x456346
dec esi
push esi
call sub.KERNEL32.dll_TlsGetValue
cmp eax, 1
ja 0x45633e
je 0x4562ee
test edi, edi
je 0x4562f2
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 0x4562ea
mov ecx, dword [edi + 0xc]
mov ebx, dword [edi + 8]
mov edi, ecx
jmp 0x4562f6
xor eax, eax
jmp 0x45633e
xor ebx, ebx
xor edi, edi
mov eax, dword [0x4bb558]
movzx eax, byte [eax]
push 8
push 0x10
call sym.___rust_alloc
add esp, 8
test eax, eax
je 0x456366
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 0x45633b
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 0x49e07c
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 0x4562c3
jmp 0x45633e
push 0x10
push 8
call sym.alloc::alloc::handle_alloc_error::h9a0385ddba01e206
nop
Function at 0x456370
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 [0x49e08c]
mov edi, ecx
test esi, esi
je 0x456417
dec esi
push esi
call sub.KERNEL32.dll_TlsGetValue
cmp eax, 1
ja 0x45640f
je 0x4563ac
test edi, edi
je 0x4563b0
mov ebx, dword [edi]
mov dword [edi], 0
test ebx, ebx
je 0x4563b2
mov ebx, dword [edi + 4]
jmp 0x4563b2
xor eax, eax
jmp 0x45640f
xor ebx, ebx
mov eax, dword [0x4bb558]
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 0x456437
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 0x45640c
mov eax, dword [edi]
test eax, eax
je 0x4563ff
lock dec dword [eax]
jne 0x4563ff
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 0x49e08c
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 0x456395
jmp 0x45640f
push 8
push 4
call sym.alloc::alloc::handle_alloc_error::h9a0385ddba01e206
add esp, 8
ud2

Function at 0x459aa0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push esi
mov ecx, dword [ebp + 0xc]
test ecx, ecx
je 0x459ace
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 0x459ab0
and eax, 0xfffffff
pop esi
pop ebp
ret
xor eax, eax
pop esi
pop ebp
ret

Function at 0x459ae0
Capabilities:
Hash data using djb2

Disassembly:
push ebp
mov ebp, esp
push esi
mov ecx, dword [ebp + 0xc]
test ecx, ecx
je 0x459b13
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 0x459b00
pop esi
pop ebp
ret
mov eax, 0x1505
pop esi
pop ebp
ret
Function at 0x486680
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 0x4866d8
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 0x4866d0
cmp eax, ebx
jb 0x486746
cmp eax, dword [ebp + 0x10]
ja 0x486752
add ebx, dword [ebp + 0xc]
nop word cs:[eax + eax]
nop
test esi, esi
je 0x4866d2
dec esi
cmp byte [ebx], cl
lea ebx, [ebx + 1]
jne 0x4866c0
jmp 0x48672f
ja 0x4866d8
cmp edx, edi
mov ebx, eax
jne 0x486692
mov edx, dword [ebp + 0x18]
test edx, edx
je 0x486733
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 0x486710
mov esi, edi
sub ecx, ebx
jns 0x486727
jmp 0x486735
cmp edi, edx
je 0x48673c
movzx edi, byte [esi + 1]
and ebx, 0x7f
add esi, 2
shl ebx, 8
or ebx, edi
sub ecx, ebx
js 0x486735
xor al, 1
cmp esi, edx
jne 0x4866f0
jmp 0x486735
xor eax, eax
jmp 0x486735
mov al, 1
and al, 1
pop esi
pop edi
pop ebx
pop ebp
ret
push 0x4b01b4
call sym.core::option::unwrap_failed::h400a3d34e496ce4a
push 0x4b01c4
push eax
push ebx
call sym.core::slice::index::slice_index_order_fail::h40cd09a6386d1bdc
push 0x4b01c4
push dword [ebp + 0x10]
push eax
call sym.core::slice::index::slice_end_index_len_fail::hb7bcdcb5c84f7e98
Function at 0x48c7e0
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 0x48c835
test dl, 0x20
jne 0x48c86d
mov eax, ecx
mov edx, ecx
sar al, 7
xor dl, al
sub dl, al
cmp dl, 0x64
jb 0x48c8c6
add dl, dl
mov esi, 0x24
add dl, 0x38
movzx eax, dl
mov dl, 1
movzx eax, word [eax + 0x4af7f2]
mov word [ebp - 0x67], ax
jmp 0x48c8d0
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 0x48c840
jmp 0x48c8aa
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 0x48c880
mov ecx, pe_nt_image_headers32
sub ecx, edx
cmp ecx, 0x81
jae 0x48c920
push edx
push esi
push 2
push str.0x0b0o00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899assertion_failed:_curr___19
push 1
jmp 0x48c90c
mov esi, 0x26
cmp dl, 0xa
jae 0x48c8dc
or dl, 0x30
mov byte [ebp + esi - 0x8c], dl
jmp 0x48c8f0
movzx eax, dl
mov esi, 0x25
movzx eax, word [eax + eax + 0x4af7f2]
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 0x4af7dc
push pe_nt_image_headers32
push ecx
call sym.core::slice::index::slice_start_index_len_fail::h7e8587be95abf61b
Function at 0x499ee0
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 0x499f40
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 [0x4d01c0]
test esi, esi
jle 0x49a060
mov eax, dword [0x4d01c4]
xor ecx, ecx
add eax, 0xc
lea esi, cs:[esi]
mov edx, dword [eax]
cmp ebx, edx
jb 0x499f7c
mov edi, dword [eax + 4]
add edx, dword [edi + 8]
cmp ebx, edx
jb 0x499ffd
add ecx, 1
add eax, 0x14
cmp ecx, esi
jne 0x499f68
mov dword [esp], ebx
call sym.___mingw_GetSectionForAddress
mov edi, eax
test eax, eax
je 0x49a087
mov eax, dword [0x4d01c4]
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 [0x4d01c4]
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 0x49a067
mov eax, dword [ebp - 0x20]
lea edx, [eax - 4]
and edx, 0xfffffffb
je 0x499ff6
lea edx, [eax - 0x40]
and edx, 0xffffffbf
jne 0x49a008
add dword [0x4d01c0], 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 [0x4d01c4]
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 0x499ff6
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 0x499f86
mov eax, dword [0x4d01c4]
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 0x49a840
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 0x49a880
xor ecx, ecx
lea esi, [esi]
mov edx, dword [eax + 0xc]
cmp ebx, edx
jb 0x49a876
add edx, dword [eax + 8]
cmp ebx, edx
jb 0x49a882
add ecx, 1
add eax, 0x28
cmp ecx, esi
jne 0x49a868
xor eax, eax
pop ebx
pop esi
pop ebp
ret