// File: tenup-coin[P]seeder/./db.h
// Function: CAddrInfo::IsGood() const
bool IsGood() const {
    if (ip.GetPort() != GetDefaultPort()) return false;
    if (!(services & NODE_NETWORK)) return false;
    if (!ip.IsRoutable()) return false;
    if (clientVersion && clientVersion < REQUIRE_VERSION) return false;
    if (blocks && blocks < GetRequireHeight()) return false;

    if (total <= 3 && success * 2 >= total) return true;

    if (stat2H.reliability > 0.85 && stat2H.count > 2) return true;
    if (stat8H.reliability > 0.70 && stat8H.count > 4) return true;
    if (stat1D.reliability > 0.55 && stat1D.count > 8) return true;
    if (stat1W.reliability > 0.45 && stat1W.count > 16) return true;
    if (stat1M.reliability > 0.35 && stat1M.count > 32) return true;
    
    return false;
  }

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x10(%rbp)
movq -0x10(%rbp), %rdi
movq %rdi, -0x20(%rbp)
callq 0x12ad0
movzwl %ax, %eax
movl %eax, -0x14(%rbp)
leaq 0x2feba(%rip), %rax     # 0x4a5a0
movb (%rax), %al
andb $0x1, %al
movzbl %al, %edi
callq 0x19f50
movw %ax, %cx
movl -0x14(%rbp), %eax
movzwl %cx, %ecx
cmpl %ecx, %eax
je 0x1a708
movb $0x0, -0x1(%rbp)
jmp 0x1a8df
movq -0x20(%rbp), %rax
movq 0x18(%rax), %rax
andq $0x1, %rax
cmpq $0x0, %rax
jne 0x1a723
movb $0x0, -0x1(%rbp)
jmp 0x1a8df
movq -0x20(%rbp), %rdi
callq 0x13b40
testb $0x1, %al
jne 0x1a739
movb $0x0, -0x1(%rbp)
jmp 0x1a8df
movq -0x20(%rbp), %rax
cmpl $0x0, 0x7c(%rax)
je 0x1a759
movq -0x20(%rbp), %rax
cmpl $0x11500, 0x7c(%rax)    # imm = 0x11500
jge 0x1a759
movb $0x0, -0x1(%rbp)
jmp 0x1a8df
movq -0x20(%rbp), %rax
cmpl $0x0, 0x80(%rax)
je 0x1a798
movq -0x20(%rbp), %rax
movl 0x80(%rax), %eax
movl %eax, -0x24(%rbp)
leaq 0x2fe26(%rip), %rax     # 0x4a5a0
movb (%rax), %al
andb $0x1, %al
movzbl %al, %edi
callq 0x19f80
movl %eax, %ecx
movl -0x24(%rbp), %eax
cmpl %ecx, %eax
jge 0x1a798
movb $0x0, -0x1(%rbp)
jmp 0x1a8df
movq -0x20(%rbp), %rax
cmpl $0x3, 0x84(%rax)
jg 0x1a7c2
movq -0x20(%rbp), %rcx
movl 0x88(%rcx), %eax
shll %eax
cmpl 0x84(%rcx), %eax
jl 0x1a7c2
movb $0x1, -0x1(%rbp)
jmp 0x1a8df
movq -0x20(%rbp), %rax
movss 0x48(%rax), %xmm0
cvtss2sd %xmm0, %xmm0
movsd 0x19209(%rip), %xmm1    # 0x339e0
ucomisd %xmm1, %xmm0
jbe 0x1a7fc
movq -0x20(%rbp), %rax
movss 0x44(%rax), %xmm0
movss 0x19232(%rip), %xmm1    # 0x33a20
ucomiss %xmm1, %xmm0
jbe 0x1a7fc
movb $0x1, -0x1(%rbp)
jmp 0x1a8df
movq -0x20(%rbp), %rax
movss 0x54(%rax), %xmm0
cvtss2sd %xmm0, %xmm0
movsd 0x191d7(%rip), %xmm1    # 0x339e8
ucomisd %xmm1, %xmm0
jbe 0x1a836
movq -0x20(%rbp), %rax
movss 0x50(%rax), %xmm0
movss 0x191fc(%rip), %xmm1    # 0x33a24
ucomiss %xmm1, %xmm0
jbe 0x1a836
movb $0x1, -0x1(%rbp)
jmp 0x1a8df
movq -0x20(%rbp), %rax
movss 0x60(%rax), %xmm0
cvtss2sd %xmm0, %xmm0
movsd 0x191a5(%rip), %xmm1    # 0x339f0
ucomisd %xmm1, %xmm0
jbe 0x1a86d
movq -0x20(%rbp), %rax
movss 0x5c(%rax), %xmm0
movss 0x191c6(%rip), %xmm1    # 0x33a28
ucomiss %xmm1, %xmm0
jbe 0x1a86d
movb $0x1, -0x1(%rbp)
jmp 0x1a8df
movq -0x20(%rbp), %rax
movss 0x6c(%rax), %xmm0
cvtss2sd %xmm0, %xmm0
movsd 0x19176(%rip), %xmm1    # 0x339f8
ucomisd %xmm1, %xmm0
jbe 0x1a8a4
movq -0x20(%rbp), %rax
movss 0x68(%rax), %xmm0
movss 0x19193(%rip), %xmm1    # 0x33a2c
ucomiss %xmm1, %xmm0
jbe 0x1a8a4
movb $0x1, -0x1(%rbp)
jmp 0x1a8df
movq -0x20(%rbp), %rax
movss 0x78(%rax), %xmm0
cvtss2sd %xmm0, %xmm0
movsd 0x19147(%rip), %xmm1    # 0x33a00
ucomisd %xmm1, %xmm0
jbe 0x1a8db
movq -0x20(%rbp), %rax
movss 0x74(%rax), %xmm0
movss 0x19160(%rip), %xmm1    # 0x33a30
ucomiss %xmm1, %xmm0
jbe 0x1a8db
movb $0x1, -0x1(%rbp)
jmp 0x1a8df
movb $0x0, -0x1(%rbp)
movb -0x1(%rbp), %al
andb $0x1, %al
addq $0x30, %rsp
popq %rbp
retq
nopw (%rax,%rax)