This exercise explores how
Function Prologue
00007FF7C3EE8C70 | 55 | push rbp
...
00007FF7C3EE8C7C | 48:81EC B8020000 | sub rsp,2B8
Allocate 696 bytes on stack for
- Local variables (like buffer, windivert, tx, etc.)
- Rust runtime bookkeeping (Vec metadata, thread closure captures)
Zeroing / Initializing memory
00007FF7C3EE8CC1 | 0F57C0 | xorps xmm0,xmm0
00007FF7C3EE8CC4 | 0F2983 80000000 | movaps xmmword ptr ds:[rbx+80],xmm0
00007FF7C3EE8CCB | 0F2983 00010000 | movaps xmmword ptr ds:[rbx+100],xmm0
00007FF7C3EE8CD2 | 66:C783 80010000 0000 | mov word ptr ds:[rbx+180],0
00007FF7C3EE8CDB | 48:C783 88010000 00000000 | mov qword ptr ds:[rbx+188],0
Stack alignment & frame pointers
00007FF7C3EE8C83 | 48:8DAC24 80000000 | lea rbp,qword ptr ss:[rsp+80]
00007FF7C3EE8C8B | 48:83E4 80 | and rsp,FFFFFFFFFFFFFF80
00007FF7C3EE8C8F | 48:89E3 | mov rbx,rsp
Memory allocation
00007FF7C3EE8D15 | 0FB605 25D40200 | movzx eax,byte ptr ds:[<__rust_no_alloc_shim_is_unstable>]
00007FF7C3EE8D1C | B9 00020000 | mov ecx,200
00007FF7C3EE8D21 | BA 80000000 | mov edx,80
00007FF7C3EE8D26 | E8 A5260000 | call <windivert.__rustc::__rust_alloc>
00007FF7C3EE8D2B | 48:85C0 | test rax,rax
Rust runtime is calling __rust_alloc to allocate heap memory:
rcx, rdx = allocation size and alignment.
rax = pointer to allocated memory.
test rax, rax checks if allocation failed (None if null).
Copying strings / data
00007FF7C3EE8D37 | 48:8D93 80000000 | lea rdx,qword ptr ds:[rbx+80]
00007FF7C3EE8D44 | 48:89C1 | mov rcx,rax
00007FF7C3EE8D47 | E8 10BE0100 | call <windivert.memcpy>
Channel setup and threads
00007FF7C3EE8D99 | 4C:8D43 68 | lea r8,qword ptr ds:[rbx+68]
00007FF7C3EE8D9D | E8 CE130000 | call <windivert.std::thread::Builder::spawn_unchecked>
This is spawning a thread in Rust.
Arguments: stack pointers, local buffer, and channel sender (tx) are passed as thread closure environment.
Rust runtime handles closure captures in memory and passes a pointer to spawn_unchecked.
00007FF7C3EE83E0 | 55 | push rbp |
00007FF7C3EE83E1 | 41:57 | push r15 |
00007FF7C3EE83E3 | 41:56 | push r14 |
00007FF7C3EE83E5 | 41:55 | push r13 |
00007FF7C3EE83E7 | 41:54 | push r12 |
00007FF7C3EE83E9 | 56 | push rsi |
00007FF7C3EE83EA | 57 | push rdi |
00007FF7C3EE83EB | 53 | push rbx |
00007FF7C3EE83EC | 48:81EC 28010000 | sub rsp,128 |
00007FF7C3EE83F3 | 48:8DAC24 80000000 | lea rbp,qword ptr ss:[rsp+80] |
00007FF7C3EE83FB | 48:C785 A0000000 FEFFFFFF | mov qword ptr ss:[rbp+A0],FFFFFFFFFFFFFFFE |
00007FF7C3EE8406 | 48:894D 68 | mov qword ptr ss:[rbp+68],rcx |
00007FF7C3EE840A | 48:8D41 10 | lea rax,qword ptr ds:[rcx+10] | rax:&"tcp.SrcPort == "
00007FF7C3EE840E | 48:8945 40 | mov qword ptr ss:[rbp+40],rax |
00007FF7C3EE8412 | 48:8D05 77B60100 | lea rax,qword ptr ds:[<core::fmt::num::imp::_$LT$impl$u20$core..fmt..Display$u20$for$u20$i32 | rax:&"tcp.SrcPort == "
00007FF7C3EE8419 | 48:8945 48 | mov qword ptr ss:[rbp+48],rax | [rbp+48]:core::fmt::num::imp::_$LT$impl$u20$core..fmt..Display$u20$for$u20$i32$GT$::fmt::h2816672a2b9a7a5a
00007FF7C3EE841D | 48:8D05 84FD0100 | lea rax,qword ptr ds:[7FF7C3F081A8] | rax:&"tcp.SrcPort == ", 00007FF7C3F081A8:&"tcp.SrcPort == "
00007FF7C3EE8424 | 48:8945 C0 | mov qword ptr ss:[rbp-40],rax | [rbp-40]:&"tcp.SrcPort == "
00007FF7C3EE8428 | 48:C745 C8 01000000 | mov qword ptr ss:[rbp-38],1 |
00007FF7C3EE8430 | 48:C745 E0 00000000 | mov qword ptr ss:[rbp-20],0 |
00007FF7C3EE8438 | 48:8D45 40 | lea rax,qword ptr ss:[rbp+40] |
00007FF7C3EE843C | 48:8945 D0 | mov qword ptr ss:[rbp-30],rax |
00007FF7C3EE8440 | 48:C745 D8 01000000 | mov qword ptr ss:[rbp-28],1 |
00007FF7C3EE8448 | 48:8D8D 80000000 | lea rcx,qword ptr ss:[rbp+80] |
00007FF7C3EE844F | 48:8D55 C0 | lea rdx,qword ptr ss:[rbp-40] | [rbp-40]:&"tcp.SrcPort == "
00007FF7C3EE8453 | E8 886F0100 | call <windivert.alloc::fmt::format::format_inner::hfc6b6ff323357fe5> |
00007FF7C3EE8458 | 0F1085 80000000 | movups xmm0,xmmword ptr ss:[rbp+80] |
00007FF7C3EE845F | 0F2945 40 | movaps xmmword ptr ss:[rbp+40],xmm0 |
00007FF7C3EE8463 | 48:8B85 90000000 | mov rax,qword ptr ss:[rbp+90] |
00007FF7C3EE846A | 48:8945 50 | mov qword ptr ss:[rbp+50],rax |
00007FF7C3EE846E | 48:8D8D 80000000 | lea rcx,qword ptr ss:[rbp+80] |
00007FF7C3EE8475 | 48:8D55 40 | lea rdx,qword ptr ss:[rbp+40] |
00007FF7C3EE8479 | 41:B9 05000000 | mov r9d,5 |
00007FF7C3EE847F | 45:31C0 | xor r8d,r8d |
00007FF7C3EE8482 | E8 391B0000 | call <windivert.windivert::divert::WinDivert$LT$windivert..layer..NetworkLayer$GT$::network: |
00007FF7C3EE8487 | 48:B8 0700000000000080 | mov rax,8000000000000007 | rax:&"tcp.SrcPort == "
00007FF7C3EE8491 | 48:3985 80000000 | cmp qword ptr ss:[rbp+80],rax |
00007FF7C3EE8498 | 0F85 A5020000 | jne windivert.7FF7C3EE8743 |
00007FF7C3EE849E | 48:8B85 88000000 | mov rax,qword ptr ss:[rbp+88] |
00007FF7C3EE84A5 | 8B8D 90000000 | mov ecx,dword ptr ss:[rbp+90] |
00007FF7C3EE84AB | 48:8945 B0 | mov qword ptr ss:[rbp-50],rax |
00007FF7C3EE84AF | 894D B8 | mov dword ptr ss:[rbp-48],ecx |
00007FF7C3EE84B2 | 0FB605 88DC0200 | movzx eax,byte ptr ds:[<__rust_no_alloc_shim_is_unstable>] |
00007FF7C3EE84B9 | B9 FFFF0000 | mov ecx,FFFF |
00007FF7C3EE84BE | BA 01000000 | mov edx,1 |
00007FF7C3EE84C3 | E8 382F0000 | call <windivert.__rustc::__rust_alloc_zeroed> |
00007FF7C3EE84C8 | 48:8945 70 | mov qword ptr ss:[rbp+70],rax |
00007FF7C3EE84CC | 48:85C0 | test rax,rax | rax:&"tcp.SrcPort == "
00007FF7C3EE84CF | 75 1B | jne windivert.7FF7C3EE84EC |
00007FF7C3EE84D1 | 4C:8D05 08FD0100 | lea r8,qword ptr ds:[7FF7C3F081E0] | 00007FF7C3F081E0:&"src\\main.rs"
00007FF7C3EE84D8 | B9 01000000 | mov ecx,1 |
00007FF7C3EE84DD | BA FFFF0000 | mov edx,FFFF |
00007FF7C3EE84E2 | E8 6CDB0100 | call <windivert.alloc::raw_vec::handle_error::h5d55154af761dff4> |
00007FF7C3EE84E7 | E9 B1020000 | jmp windivert.7FF7C3EE879D |
00007FF7C3EE84EC | 48:8D75 C0 | lea rsi,qword ptr ss:[rbp-40] | [rbp-40]:&"tcp.SrcPort == "
00007FF7C3EE84F0 | 48:8D7D B0 | lea rdi,qword ptr ss:[rbp-50] |
00007FF7C3EE84F4 | 49:BD 0100000000000080 | mov r13,8000000000000001 |
00007FF7C3EE84FE | 48:8D9D 80000000 | lea rbx,qword ptr ss:[rbp+80] |
00007FF7C3EE8505 | 41:BC 01000000 | mov r12d,1 |
00007FF7C3EE850B | EB 14 | jmp windivert.7FF7C3EE8521 |
00007FF7C3EE850D | 0F1F00 | nop dword ptr ds:[rax],eax |
00007FF7C3EE8510 | 48:8D0455 00000000 | lea rax,qword ptr ds:[rdx*2] | rax:&"tcp.SrcPort == "
00007FF7C3EE8518 | 48:85C0 | test rax,rax | rax:&"tcp.SrcPort == "
00007FF7C3EE851B | 0F85 5F010000 | jne windivert.7FF7C3EE8680 |
00007FF7C3EE8521 | 41:B9 FFFF0000 | mov r9d,FFFF |
00007FF7C3EE8527 | 48:89F1 | mov rcx,rsi |
00007FF7C3EE852A | 48:89FA | mov rdx,rdi |
00007FF7C3EE852D | 4C:8B45 70 | mov r8,qword ptr ss:[rbp+70] |
00007FF7C3EE8531 | E8 EA2E0000 | call <windivert.windivert::divert::blocking::_$LT$impl$u20$windivert..divert..WinDivert$LT$w |
00007FF7C3EE8536 | 48:8B45 C0 | mov rax,qword ptr ss:[rbp-40] | [rbp-40]:&"tcp.SrcPort == "
00007FF7C3EE853A | 4C:39E8 | cmp rax,r13 | rax:&"tcp.SrcPort == "
00007FF7C3EE853D | 0F84 51010000 | je windivert.7FF7C3EE8694 |
00007FF7C3EE8543 | 48:8945 60 | mov qword ptr ss:[rbp+60],rax |
00007FF7C3EE8547 | 48:8B45 C8 | mov rax,qword ptr ss:[rbp-38] |
00007FF7C3EE854B | 48:8945 78 | mov qword ptr ss:[rbp+78],rax |
00007FF7C3EE854F | 4C:8B7D D0 | mov r15,qword ptr ss:[rbp-30] |
00007FF7C3EE8553 | 4D:85FF | test r15,r15 |
00007FF7C3EE8556 | 0F88 27020000 | js windivert.7FF7C3EE8783 |
00007FF7C3EE855C | 74 22 | je windivert.7FF7C3EE8580 |
00007FF7C3EE855E | 0FB605 DCDB0200 | movzx eax,byte ptr ds:[<__rust_no_alloc_shim_is_unstable>] |
00007FF7C3EE8565 | BA 01000000 | mov edx,1 |
00007FF7C3EE856A | 4C:89F9 | mov rcx,r15 |
00007FF7C3EE856D | E8 5E2E0000 | call <windivert.__rustc::__rust_alloc> |
00007FF7C3EE8572 | 48:85C0 | test rax,rax | rax:&"tcp.SrcPort == "
00007FF7C3EE8575 | 0F84 0D020000 | je windivert.7FF7C3EE8788 |
00007FF7C3EE857B | 49:89C6 | mov r14,rax | rax:&"tcp.SrcPort == "
00007FF7C3EE857E | EB 06 | jmp windivert.7FF7C3EE8586 |
00007FF7C3EE8580 | 41:BE 01000000 | mov r14d,1 |
00007FF7C3EE8586 | 4C:89F1 | mov rcx,r14 |
00007FF7C3EE8589 | 48:8B55 78 | mov rdx,qword ptr ss:[rbp+78] |
00007FF7C3EE858D | 4D:89F8 | mov r8,r15 |
00007FF7C3EE8590 | E8 C7C50100 | call <windivert.memcpy> |
00007FF7C3EE8595 | 48:8B4D 68 | mov rcx,qword ptr ss:[rbp+68] |
00007FF7C3EE8599 | 48:8B01 | mov rax,qword ptr ds:[rcx] | rax:&"tcp.SrcPort == "
00007FF7C3EE859C | 48:8B51 08 | mov rdx,qword ptr ds:[rcx+8] |
00007FF7C3EE85A0 | 48:83F8 02 | cmp rax,2 | rax:&"tcp.SrcPort == "
00007FF7C3EE85A4 | 74 3A | je windivert.7FF7C3EE85E0 |
00007FF7C3EE85A6 | 83F8 01 | cmp eax,1 |
00007FF7C3EE85A9 | 75 65 | jne windivert.7FF7C3EE8610 |
00007FF7C3EE85AB | 4C:89BD 80000000 | mov qword ptr ss:[rbp+80],r15 |
00007FF7C3EE85B2 | 4C:89B5 88000000 | mov qword ptr ss:[rbp+88],r14 |
00007FF7C3EE85B9 | 4C:89BD 90000000 | mov qword ptr ss:[rbp+90],r15 |
00007FF7C3EE85C0 | C74424 20 00CA9A3B | mov dword ptr ss:[rsp+20],3B9ACA00 |
00007FF7C3EE85C8 | 48:89F1 | mov rcx,rsi |
00007FF7C3EE85CB | 49:89D8 | mov r8,rbx |
00007FF7C3EE85CE | E8 2D9DFFFF | call <windivert.std::sync::mpmc::list::Channel$LT$T$GT$::send::hccb9013442662364> |
00007FF7C3EE85D3 | EB 63 | jmp windivert.7FF7C3EE8638 |
00007FF7C3EE85D5 | 66662E:0F1F8400 00000000 | nop word ptr ds:[rax+rax],ax |
00007FF7C3EE85E0 | 4C:89BD 80000000 | mov qword ptr ss:[rbp+80],r15 |
00007FF7C3EE85E7 | 4C:89B5 88000000 | mov qword ptr ss:[rbp+88],r14 |
00007FF7C3EE85EE | 4C:89BD 90000000 | mov qword ptr ss:[rbp+90],r15 |
00007FF7C3EE85F5 | C74424 20 00CA9A3B | mov dword ptr ss:[rsp+20],3B9ACA00 |
00007FF7C3EE85FD | 48:89F1 | mov rcx,rsi |
00007FF7C3EE8600 | 49:89D8 | mov r8,rbx |
00007FF7C3EE8603 | E8 28D3FFFF | call <windivert.std::sync::mpmc::zero::Channel$LT$T$GT$::send::h6f8bab36c27d44da> |
00007FF7C3EE8608 | EB 2E | jmp windivert.7FF7C3EE8638 |
00007FF7C3EE860A | 66:0F1F4400 00 | nop word ptr ds:[rax+rax],ax |
00007FF7C3EE8610 | 4C:89BD 80000000 | mov qword ptr ss:[rbp+80],r15 |
00007FF7C3EE8617 | 4C:89B5 88000000 | mov qword ptr ss:[rbp+88],r14 |
00007FF7C3EE861E | 4C:89BD 90000000 | mov qword ptr ss:[rbp+90],r15 |
00007FF7C3EE8625 | C74424 20 00CA9A3B | mov dword ptr ss:[rsp+20],3B9ACA00 |
00007FF7C3EE862D | 48:89F1 | mov rcx,rsi |
00007FF7C3EE8630 | 49:89D8 | mov r8,rbx |
00007FF7C3EE8633 | E8 C8ADFFFF | call <windivert.std::sync::mpmc::array::Channel$LT$T$GT$::send::h3f0d389a1efe5b98> |
00007FF7C3EE8638 | 48:8B45 C0 | mov rax,qword ptr ss:[rbp-40] | [rbp-40]:&"tcp.SrcPort == "
00007FF7C3EE863C | 48:83F8 02 | cmp rax,2 | rax:&"tcp.SrcPort == "
00007FF7C3EE8640 | 48:8B55 60 | mov rdx,qword ptr ss:[rbp+60] |
00007FF7C3EE8644 | 0F84 C6FEFFFF | je windivert.7FF7C3EE8510 |
00007FF7C3EE864A | 48:8B4D C8 | mov rcx,qword ptr ss:[rbp-38] |
00007FF7C3EE864E | A8 01 | test al,1 |
00007FF7C3EE8650 | 0F84 C3000000 | je windivert.7FF7C3EE8719 |
00007FF7C3EE8656 | 48:8D45 C8 | lea rax,qword ptr ss:[rbp-38] |
00007FF7C3EE865A | 0F1040 08 | movups xmm0,xmmword ptr ds:[rax+8] | rax+08:anon.95dd94260625f633aaffbc1dd64e9bca.29.llvm.18142701166963205077+3F8
00007FF7C3EE865E | 0F2985 80000000 | movaps xmmword ptr ss:[rbp+80],xmm0 |
00007FF7C3EE8665 | 48:89C8 | mov rax,rcx | rax:&"tcp.SrcPort == "
00007FF7C3EE8668 | 48:F7D8 | neg rax | rax:&"tcp.SrcPort == "
00007FF7C3EE866B | 0F80 9FFEFFFF | jo windivert.7FF7C3EE8510 |
00007FF7C3EE8671 | EB 6A | jmp windivert.7FF7C3EE86DD |
00007FF7C3EE8673 | 666666662E:0F1F8400 00000000 | nop word ptr ds:[rax+rax],ax |
00007FF7C3EE8680 | 41:B8 01000000 | mov r8d,1 |
00007FF7C3EE8686 | 48:8B4D 78 | mov rcx,qword ptr ss:[rbp+78] |
00007FF7C3EE868A | E8 512D0000 | call <windivert.__rustc::__rust_dealloc> |
00007FF7C3EE868F | E9 8DFEFFFF | jmp windivert.7FF7C3EE8521 |
00007FF7C3EE8694 | 48:8D45 C8 | lea rax,qword ptr ss:[rbp-38] |
00007FF7C3EE8698 | 0F1000 | movups xmm0,xmmword ptr ds:[rax] | rax:&"tcp.SrcPort == "
00007FF7C3EE869B | 0F1048 10 | movups xmm1,xmmword ptr ds:[rax+10] | rax+10:"src\\main.rs"
00007FF7C3EE869F | 0F298D 90000000 | movaps xmmword ptr ss:[rbp+90],xmm1 |
00007FF7C3EE86A6 | 0F2985 80000000 | movaps xmmword ptr ss:[rbp+80],xmm0 |
00007FF7C3EE86AD | 48:8D05 44FB0100 | lea rax,qword ptr ds:[7FF7C3F081F8] | rax:&"tcp.SrcPort == ", 00007FF7C3F081F8:&"src\\main.rs"
00007FF7C3EE86B4 | 48:894424 20 | mov qword ptr ss:[rsp+20],rax |
00007FF7C3EE86B9 | 48:8D0D 90F70100 | lea rcx,qword ptr ds:[7FF7C3F07E50] | 00007FF7C3F07E50:"called `Result::unwrap()` on an `Err` value"
00007FF7C3EE86C0 | 4C:8D0D 69F70100 | lea r9,qword ptr ds:[7FF7C3F07E30] |
00007FF7C3EE86C7 | 4C:8D85 80000000 | lea r8,qword ptr ss:[rbp+80] |
00007FF7C3EE86CE | BA 2B000000 | mov edx,2B | 2B:'+'
00007FF7C3EE86D3 | E8 28DE0100 | call <windivert.core::result::unwrap_failed::h70751bb42e9051bd> |
00007FF7C3EE86D8 | E9 C0000000 | jmp windivert.7FF7C3EE879D |
00007FF7C3EE86DD | 48:894D C0 | mov qword ptr ss:[rbp-40],rcx | [rbp-40]:&"tcp.SrcPort == "
00007FF7C3EE86E1 | 0F2885 80000000 | movaps xmm0,xmmword ptr ss:[rbp+80] |
00007FF7C3EE86E8 | 0F1145 C8 | movups xmmword ptr ss:[rbp-38],xmm0 |
00007FF7C3EE86EC | 48:8D05 1DFB0100 | lea rax,qword ptr ds:[7FF7C3F08210] | rax:&"tcp.SrcPort == ", 00007FF7C3F08210:&"src\\main.rs"
00007FF7C3EE86F3 | 48:894424 20 | mov qword ptr ss:[rsp+20],rax |
00007FF7C3EE86F8 | 48:8D0D 51F70100 | lea rcx,qword ptr ds:[7FF7C3F07E50] | 00007FF7C3F07E50:"called `Result::unwrap()` on an `Err` value"
00007FF7C3EE86FF | 4C:8D0D 7AF70100 | lea r9,qword ptr ds:[<&sub_7FF7C3EE7D30>] |
00007FF7C3EE8706 | 4C:8D45 C0 | lea r8,qword ptr ss:[rbp-40] | [rbp-40]:&"tcp.SrcPort == "
00007FF7C3EE870A | BA 2B000000 | mov edx,2B | 2B:'+'
00007FF7C3EE870F | E8 ECDD0100 | call <windivert.core::result::unwrap_failed::h70751bb42e9051bd> |
00007FF7C3EE8714 | E9 84000000 | jmp windivert.7FF7C3EE879D |
00007FF7C3EE8719 | 48:8945 30 | mov qword ptr ss:[rbp+30],rax |
00007FF7C3EE871D | 48:894D 28 | mov qword ptr ss:[rbp+28],rcx |
00007FF7C3EE8721 | 48:8B45 D0 | mov rax,qword ptr ss:[rbp-30] |
00007FF7C3EE8725 | 48:8945 38 | mov qword ptr ss:[rbp+38],rax | [rbp+38]:std::thread::spawnhook::ChildSpawnHooks::run+17C
00007FF7C3EE8729 | 48:8D0D 60FE0100 | lea rcx,qword ptr ds:[<anon.70de80080aa0578d8e2c0b1b642816f1.8.llvm.9175985875024411532>] | 00007FF7C3F08590:"internal error: entered unreachable code"
00007FF7C3EE8730 | 4C:8D05 29FF0100 | lea r8,qword ptr ds:[<anon.70de80080aa0578d8e2c0b1b642816f1.11.llvm.9175985875024411532>] | 00007FF7C3F08660:&"C:\\Users\\jozef\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib/rustlib/src/rust\\library\\std\\src\\sync\\mpmc\\mod.rs"
00007FF7C3EE8737 | BA 28000000 | mov edx,28 | 28:'('
00007FF7C3EE873C | E8 3FDB0100 | call <windivert.core::panicking::panic::h0cc6c70cb61d6977> |
00007FF7C3EE8741 | EB 5A | jmp windivert.7FF7C3EE879D |
00007FF7C3EE8743 | 0F1085 80000000 | movups xmm0,xmmword ptr ss:[rbp+80] |
00007FF7C3EE874A | 0F108D 90000000 | movups xmm1,xmmword ptr ss:[rbp+90] |
00007FF7C3EE8751 | 0F294D D0 | movaps xmmword ptr ss:[rbp-30],xmm1 |
00007FF7C3EE8755 | 0F2945 C0 | movaps xmmword ptr ss:[rbp-40],xmm0 |
00007FF7C3EE8759 | 48:8D05 68FA0100 | lea rax,qword ptr ds:[7FF7C3F081C8] | rax:&"tcp.SrcPort == ", 00007FF7C3F081C8:&"src\\main.rs"
00007FF7C3EE8760 | 48:894424 20 | mov qword ptr ss:[rsp+20],rax |
00007FF7C3EE8765 | 48:8D0D E4F60100 | lea rcx,qword ptr ds:[7FF7C3F07E50] | 00007FF7C3F07E50:"called `Result::unwrap()` on an `Err` value"
00007FF7C3EE876C | 4C:8D0D BDF60100 | lea r9,qword ptr ds:[7FF7C3F07E30] |
00007FF7C3EE8773 | 4C:8D45 C0 | lea r8,qword ptr ss:[rbp-40] | [rbp-40]:&"tcp.SrcPort == "
00007FF7C3EE8777 | BA 2B000000 | mov edx,2B | 2B:'+'
00007FF7C3EE877C | E8 7FDD0100 | call <windivert.core::result::unwrap_failed::h70751bb42e9051bd> |
00007FF7C3EE8781 | EB 1A | jmp windivert.7FF7C3EE879D |
00007FF7C3EE8783 | 45:31E4 | xor r12d,r12d |
00007FF7C3EE8786 | EB 03 | jmp windivert.7FF7C3EE878B |
00007FF7C3EE8788 | 4D:89FE | mov r14,r15 |
00007FF7C3EE878B | 4C:8D05 96F90100 | lea r8,qword ptr ds:[7FF7C3F08128] | 00007FF7C3F08128:&"C:\\Users\\jozef\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib/rustlib/src/rust\\library\\alloc\\src\\slice.rs"
00007FF7C3EE8792 | 4C:89E1 | mov rcx,r12 |
00007FF7C3EE8795 | 4C:89F2 | mov rdx,r14 |
00007FF7C3EE8798 | E8 B6D80100 | call <windivert.alloc::raw_vec::handle_error::h5d55154af761dff4> |
00007FF7C3EE879D | 0F0B | ud2 |
00007FF7C3EE879F | 90 | nop |
00007FF7C3EE87A0 | 48:895424 10 | mov qword ptr ss:[rsp+10],rdx |
00007FF7C3EE87A5 | 55 | push rbp |
00007FF7C3EE87A6 | 41:57 | push r15 |
00007FF7C3EE87A8 | 41:56 | push r14 |
00007FF7C3EE87AA | 41:55 | push r13 |
00007FF7C3EE87AC | 41:54 | push r12 |
00007FF7C3EE87AE | 56 | push rsi |
00007FF7C3EE87AF | 57 | push rdi |
00007FF7C3EE87B0 | 53 | push rbx |
00007FF7C3EE87B1 | 48:83EC 28 | sub rsp,28 |
00007FF7C3EE87B5 | 48:8DAA 80000000 | lea rbp,qword ptr ds:[rdx+80] |
00007FF7C3EE87BC | 48:8B4D 68 | mov rcx,qword ptr ss:[rbp+68] |
00007FF7C3EE87C0 | 48:8B01 | mov rax,qword ptr ds:[rcx] | rax:&"tcp.SrcPort == "
00007FF7C3EE87C3 | 48:83C1 08 | add rcx,8 |
00007FF7C3EE87C7 | 48:85C0 | test rax,rax | rax:&"tcp.SrcPort == "
00007FF7C3EE87CA | 74 0C | je windivert.7FF7C3EE87D8 |
00007FF7C3EE87CC | 83F8 01 | cmp eax,1 |
00007FF7C3EE87CF | 75 6B | jne windivert.7FF7C3EE883C |
00007FF7C3EE87D1 | E8 AAE7FFFF | call <windivert.std::sync::mpmc::counter::Sender$LT$C$GT$::release::h556aa944d0fa04c6> |
00007FF7C3EE87D6 | EB 69 | jmp windivert.7FF7C3EE8841 |
00007FF7C3EE87D8 | 48:8B31 | mov rsi,qword ptr ds:[rcx] |
00007FF7C3EE87DB | F048:FF8E 00020000 | lock dec qword ptr ds:[rsi+200] |
00007FF7C3EE87E3 | 75 5C | jne windivert.7FF7C3EE8841 |
00007FF7C3EE87E5 | 48:8B86 80000000 | mov rax,qword ptr ds:[rsi+80] | rax:&"tcp.SrcPort == "
00007FF7C3EE87EC | 48:8B8E 90010000 | mov rcx,qword ptr ds:[rsi+190] |
00007FF7C3EE87F3 | 666666662E:0F1F8400 00000000 | nop word ptr ds:[rax+rax],ax |
00007FF7C3EE8800 | 48:89C2 | mov rdx,rax | rax:&"tcp.SrcPort == "
00007FF7C3EE8803 | 48:09CA | or rdx,rcx |
00007FF7C3EE8806 | F048:0FB196 80000000 | lock cmpxchg qword ptr ds:[rsi+80],rdx |
00007FF7C3EE880F | 75 EF | jne windivert.7FF7C3EE8800 |
00007FF7C3EE8811 | 48:8586 90010000 | test qword ptr ds:[rsi+190],rax | rax:&"tcp.SrcPort == "
00007FF7C3EE8818 | 75 0C | jne windivert.7FF7C3EE8826 |
00007FF7C3EE881A | 48:8D8E 40010000 | lea rcx,qword ptr ds:[rsi+140] |
00007FF7C3EE8821 | E8 CAB2FFFF | call <windivert.std::sync::mpmc::waker::SyncWaker::disconnect::h6ad45fdb3df37a47 (.llvm.9322 |
00007FF7C3EE8826 | B0 01 | mov al,1 |
00007FF7C3EE8828 | 8686 10020000 | xchg byte ptr ds:[rsi+210],al |
00007FF7C3EE882E | 84C0 | test al,al |
00007FF7C3EE8830 | 74 0F | je windivert.7FF7C3EE8841 |
00007FF7C3EE8832 | 48:89F1 | mov rcx,rsi |
00007FF7C3EE8835 | E8 E6EDFFFF | call <windivert.core::ptr::drop_in_place$LT$alloc..boxed..Box$LT$std..sync..mpmc..counter..C |
00007FF7C3EE883A | EB 05 | jmp windivert.7FF7C3EE8841 |
00007FF7C3EE883C | E8 8FE8FFFF | call <windivert.std::sync::mpmc::counter::Sender$LT$C$GT$::release::h9ff499d21cc3324b> |
00007FF7C3EE8841 | 90 | nop |
00007FF7C3EE8842 | 48:83C4 28 | add rsp,28 |
00007FF7C3EE8846 | 5B | pop rbx |
00007FF7C3EE8847 | 5F | pop rdi |
00007FF7C3EE8848 | 5E | pop rsi |
00007FF7C3EE8849 | 41:5C | pop r12 |
00007FF7C3EE884B | 41:5D | pop r13 |
00007FF7C3EE884D | 41:5E | pop r14 |
00007FF7C3EE884F | 41:5F | pop r15 |
00007FF7C3EE8851 | 5D | pop rbp |
00007FF7C3EE8852 | C3 | ret |