Function at 0x1401c0700
Capabilities:
Validate payment card number using luhn algorithm

Disassembly:
mov qword [rsp + 0x18], rbx
mov qword [rsp + 0x20], rbp
push rdi
sub rsp, 0x40
mov rdi, rcx
mov rbp, r8
mov rcx, qword [rdx]
mov rbx, rdx
movsx eax, byte [rcx]
add eax, 0xffffffde
cmp eax, 0x59
ja case.0x1401c0746.35
lea rdx, [0x140000000]
cdqe
movzx eax, byte [rdx + rax + 0x1c0b40]
mov r9d, dword [rdx + rax*4 + 0x1c0b24]
add r9, rdx
jmp r9
lea rax, [rcx + 1]
mov qword [rbx], rax
cmp byte [rax], 0x75
jne 0x1401c07aa
inc rax
mov qword [rbx], rax
cmp byte [rax], 0x6c
jne 0x1401c07aa
inc rax
mov qword [rbx], rax
cmp byte [rax], 0x6c
jne 0x1401c07aa
inc rax
mov qword [rbx], rax
mov rax, qword [r8 + 0x40]
sub rax, qword [r8 + 0x38]
cmp rax, 0x10
jge 0x1401c0788
lea rcx, [r8 + 0x20]
call fcn.1401c0660
mov rcx, qword [rbp + 0x38]
xorps xmm0, xmm0
lea rax, [rcx + 0x10]
mov qword [rbp + 0x38], rax
movups xmmword [rcx], xmm0
mov rbx, qword [rsp + 0x60]
mov rbp, qword [rsp + 0x68]
add rsp, 0x40
pop rdi
ret
sub rax, qword [rbx + 8]
mov dword [rdi + 0x30], 3
mov qword [rdi + 0x38], rax
mov rbx, qword [rsp + 0x60]
mov rbp, qword [rsp + 0x68]
add rsp, 0x40
pop rdi
ret
lea rax, [rcx + 1]
mov qword [rbx], rax
cmp byte [rax], 0x72
jne 0x1401c07aa
inc rax
mov qword [rbx], rax
cmp byte [rax], 0x75
jne 0x1401c07aa
inc rax
mov qword [rbx], rax
cmp byte [rax], 0x65
jne 0x1401c07aa
inc rax
mov dl, 1
mov rcx, rbp
mov qword [rbx], rax
call fcn.1401c1a90
test al, al
jne 0x1401c0aa0
mov rax, qword [rbx]
sub rax, qword [rbx + 8]
mov dword [rdi + 0x30], reloc.WS2_32.dll_recv
mov qword [rdi + 0x38], rax
mov rbx, qword [rsp + 0x60]
mov rbp, qword [rsp + 0x68]
add rsp, 0x40
pop rdi
ret
lea rax, [rcx + 1]
mov qword [rbx], rax
cmp byte [rax], 0x61
jne 0x1401c07aa
inc rax
mov qword [rbx], rax
cmp byte [rax], 0x6c
jne 0x1401c07aa
inc rax
mov qword [rbx], rax
cmp byte [rax], 0x73
jne 0x1401c07aa
inc rax
mov qword [rbx], rax
cmp byte [rax], 0x65
jne 0x1401c07aa
inc rax
xor edx, edx
jmp 0x1401c07f0
xor r9d, r9d
mov rdx, rbx
mov rcx, rdi
mov rbx, qword [rsp + 0x60]
mov rbp, qword [rsp + 0x68]
add rsp, 0x40
pop rdi
jmp 0x1401c0ba0
lea rax, [rcx + 1]
mov qword [rsp + 0x50], rsi
mov qword [rbx], rax
mov rax, qword [r8 + 0x40]
sub rax, qword [r8 + 0x38]
mov qword [rsp + 0x58], r14
cmp rax, 0x10
jge 0x1401c08ae
lea rcx, [r8 + 0x20]
call fcn.1401c0660
mov rcx, qword [rbp + 0x38]
xorps xmm0, xmm0
mov edx, 3
movabs r14, 0x100002600
lea rax, [rcx + 0x10]
mov qword [rbp + 0x38], rax
movups xmmword [rcx], xmm0
mov word [rcx + 0xe], dx
movups xmm0, xmmword [rbx]
movups xmmword [rsp + 0x20], xmm0
mov rcx, qword [rsp + 0x20]
movsx rax, byte [rcx]
cmp al, 0x20
ja 0x1401c08f3
bt r14, rax
jae 0x1401c08f3
inc rcx
jmp 0x1401c08e0
mov qword [rsp + 0x20], rcx
movups xmm0, xmmword [rsp + 0x20]
movups xmmword [rbx], xmm0
cmp dword [rdi + 0x30], 0
jne 0x1401c0a96
mov rax, qword [rbx]
cmp byte [rax], 0x7d
jne 0x1401c093d
inc rax
movabs rcx, 0xffff000000000000
mov qword [rbx], rax
mov rax, qword [rbp + 0x38]
mov qword [rbp + 0x38], rax
mov word [rax - 2], dx
and qword [rax - 8], rcx
xor esi, esi
mov qword [rax - 0x10], rsi
jmp 0x1401c0a96
xor esi, esi
nop
mov rax, qword [rbx]
cmp byte [rax], 0x22
jne 0x1401c0ae1
mov r9b, 1
mov r8, rbp
mov rdx, rbx
mov rcx, rdi
call 0x1401c0ba0
cmp dword [rdi + 0x30], 0
jne 0x1401c0a96
movups xmm0, xmmword [rbx]
movups xmmword [rsp + 0x20], xmm0
mov rcx, qword [rsp + 0x20]
movsx rax, byte [rcx]
cmp al, 0x20
ja 0x1401c0987
bt r14, rax
jae 0x1401c0987
inc rcx
jmp 0x1401c0974
mov qword [rsp + 0x20], rcx
movups xmm0, xmmword [rsp + 0x20]
movups xmmword [rbx], xmm0
cmp dword [rdi + 0x30], 0
jne 0x1401c0a96
mov rax, qword [rbx]
cmp byte [rax], 0x3a
jne 0x1401c0ad4
inc rax
mov qword [rbx], rax
movups xmm0, xmmword [rbx]
movups xmmword [rsp + 0x20], xmm0
mov rcx, qword [rsp + 0x20]
nop dword [rax]
movsx rax, byte [rcx]
cmp al, 0x20
ja 0x1401c09d3
bt r14, rax
jae 0x1401c09d3
inc rcx
jmp 0x1401c09c0
mov qword [rsp + 0x20], rcx
movups xmm0, xmmword [rsp + 0x20]
movups xmmword [rbx], xmm0
cmp dword [rdi + 0x30], 0
jne 0x1401c0a96
mov r8, rbp
mov rdx, rbx
mov rcx, rdi
call fcn.1401c0700
cmp dword [rdi + 0x30], 0
jne 0x1401c0a96
movups xmm0, xmmword [rbx]
movups xmmword [rsp + 0x20], xmm0
mov rcx, qword [rsp + 0x20]
nop
movsx rax, byte [rcx]
cmp al, 0x20
ja 0x1401c0a23
bt r14, rax
jae 0x1401c0a23
inc rcx
jmp 0x1401c0a10
mov qword [rsp + 0x20], rcx
movups xmm0, xmmword [rsp + 0x20]
movups xmmword [rbx], xmm0
cmp dword [rdi + 0x30], 0
jne 0x1401c0a96
mov rax, qword [rbx]
inc esi
movzx ecx, byte [rax]
cmp cl, 0x2c
jne 0x1401c0a82
inc rax
mov qword [rbx], rax
movups xmm0, xmmword [rbx]
movups xmmword [rsp + 0x20], xmm0
mov rcx, qword [rsp + 0x20]
movsx rax, byte [rcx]
cmp al, 0x20
ja 0x1401c0a69
bt r14, rax
jae 0x1401c0a69
inc rcx
jmp 0x1401c0a56
mov qword [rsp + 0x20], rcx
movups xmm0, xmmword [rsp + 0x20]
movups xmmword [rbx], xmm0
cmp dword [rdi + 0x30], 0
je 0x1401c0940
jmp 0x1401c0a96
cmp cl, 0x7d
je 0x1401c0ab0
sub rax, qword [rbx + 8]
mov dword [rdi + 0x30], 6
mov qword [rdi + 0x38], rax
mov rsi, qword [rsp + 0x50]
mov r14, qword [rsp + 0x58]
mov rbx, qword [rsp + 0x60]
mov rbp, qword [rsp + 0x68]
add rsp, 0x40
pop rdi
ret
inc rax
mov edx, esi
mov rcx, rbp
mov qword [rbx], rax
call fcn.1401c1910
test al, al
jne 0x1401c0a96
mov rax, qword [rbx]
sub rax, qword [rbx + 8]
mov dword [rdi + 0x30], reloc.WS2_32.dll_recv
jmp 0x1401c0a92
sub rax, qword [rbx + 8]
mov dword [rdi + 0x30], 5
jmp 0x1401c0a92
sub rax, qword [rbx + 8]
mov dword [rdi + 0x30], 4
jmp 0x1401c0a92
mov rdx, rbx
mov rcx, rdi
mov rbx, qword [rsp + 0x60]
mov rbp, qword [rsp + 0x68]
add rsp, 0x40
pop rdi
jmp 0x1401c0ea0
mov rdx, rbx
mov rcx, rdi
mov rbx, qword [rsp + 0x60]
mov rbp, qword [rsp + 0x68]
add rsp, 0x40
pop rdi
jmp 0x1401c1080
mov qword [rsp + 8], rbx
mov qword [rsp + 0x10], rsi
mov qword [rsp + 0x18], rdi
mov byte [rsp + 0x20], r9b
push rbp
push r12
push r13
push r14
push r15
mov rbp, rsp
sub rsp, 0x50
movups xmm0, xmmword [rdx]
mov qword [rbp - 0x10], rdx
mov r12, r8
mov r13, rcx
mov qword [rbp - 0x30], rcx
movq rbx, xmm0
lea rdx, [0x140493e20]
inc rbx
mov r14, rcx
movups xmmword [rbp - 0x20], xmm0
mov qword [rbp - 0x20], rbx
xor r15d, r15d
mov dword [rbp - 0x28], r15d
nop word [rax + rax]
movzx esi, byte [rbx]
cmp sil, 0x5c
jne 0x1401c0d6e
movzx ecx, byte [rbx + 1]
mov rsi, rbx
sub rsi, qword [rbp - 0x18]
inc rbx
mov qword [rbp - 0x20], rbx
movzx edi, byte [rcx + rdx]
test dil, dil
je 0x1401c0c65
mov rax, qword [r14 + 0x20]
inc rbx
sub rax, qword [r14 + 0x18]
mov qword [rbp - 0x20], rbx
cmp rax, 1
jge 0x1401c0c51
mov edx, 1
mov rcx, r14
call fcn.1401c0440
lea rdx, [0x140493e20]
mov rcx, qword [r14 + 0x18]
inc r15d
lea rax, [rcx + 1]
mov qword [r14 + 0x18], rax
mov byte [rcx], dil
jmp 0x1401c0bf2
lea rdi, [r13 + 0x30]
cmp cl, 0x75
jne 0x1401c0dca
lea rax, [rbx + 1]
mov r8, rsi
lea rdx, [rbp - 0x20]
mov qword [rbp - 0x20], rax
mov rcx, r13
call fcn.1401c1ae0
cmp dword [rdi], 0
mov rbx, qword [rbp - 0x20]
jne 0x1401c0e6d
lea r9d, [rax - 0xd800]
cmp r9d, 0x7ff
ja 0x1401c0d4f
cmp eax, 0xdbff
ja 0x1401c0dbe
cmp byte [rbx], 0x5c
jne 0x1401c0dbe
inc rbx
mov qword [rbp - 0x20], rbx
cmp byte [rbx], 0x75
jne 0x1401c0dbe
inc rbx
xor eax, eax
mov qword [rbp - 0x20], rbx
xor r8d, r8d
nop word [rax + rax]
movsx edx, byte [rbx]
shl eax, 4
add eax, edx
lea ecx, [rdx - 0x30]
cmp cl, 9
ja 0x1401c0cf5
add eax, 0xffffffd0
jmp 0x1401c0d0d
lea ecx, [rdx - 0x41]
cmp cl, 5
ja 0x1401c0d02
add eax, 0xffffffc9
jmp 0x1401c0d0d
sub dl, 0x61
cmp dl, 5
ja 0x1401c0d1f
add eax, 0xffffffa9
inc rbx
inc r8d
mov qword [rbp - 0x20], rbx
cmp r8d, 4
jl 0x1401c0ce0
jmp 0x1401c0d2b
mov dword [rdi], 8
xor eax, eax
mov qword [rdi + 8], rsi
cmp dword [rdi], 0
jne 0x1401c0e6d
lea ecx, [rax - 0xdc00]
cmp ecx, 0x3ff
ja 0x1401c0dbe
mov eax, r9d
shl eax, 0xa
or eax, ecx
add eax, 0x10000
mov edx, eax
lea rcx, [rbp - 0x30]
call fcn.1401c1b50
mov r15d, dword [rbp - 0x28]
lea rdx, [0x140493e20]
mov r14, qword [rbp - 0x30]
jmp 0x1401c0c00
cmp sil, 0x22
je 0x1401c0dfa
cmp sil, 0x20
jb 0x1401c0dd6
mov rax, qword [r14 + 0x20]
inc rbx
sub rax, qword [r14 + 0x18]
mov qword [rbp - 0x20], rbx
cmp rax, 1
jge 0x1401c0da7
mov edx, 1
mov rcx, r14
call fcn.1401c0440
lea rdx, [0x140493e20]
mov rcx, qword [r14 + 0x18]
inc r15d
lea rax, [rcx + 1]
mov qword [r14 + 0x18], rax
mov byte [rcx], sil
jmp 0x1401c0bf2
mov dword [rdi], 9
mov qword [rdi + 8], rsi
jmp 0x1401c0e32
mov dword [rdi], 0xa
mov qword [rdi + 8], rsi
jmp 0x1401c0e32
mov rax, rbx
lea rdi, [r13 + 0x30]
sub rax, qword [rbp - 0x18]
mov qword [rdi + 8], rax
test sil, sil
jne 0x1401c0df2
mov dword [rdi], reloc.WS2_32.dll_inet_addr
jmp 0x1401c0e32
mov dword [rdi], reloc.WS2_32.dll_inet_ntoa
jmp 0x1401c0e32
mov rax, qword [r14 + 0x20]
inc rbx
sub rax, qword [r14 + 0x18]
mov qword [rbp - 0x20], rbx
cmp rax, 1
jge 0x1401c0e1c
mov edx, 1
mov rcx, r14
call fcn.1401c0440
mov rcx, qword [r14 + 0x18]
lea rdi, [r13 + 0x30]
inc r15d
lea rax, [rcx + 1]
mov qword [r14 + 0x18], rax
mov byte [rcx], 0
cmp dword [rdi], 0
jne 0x1401c0e6d
mov eax, r15d
lea r8d, [r15 - 1]
sub qword [r14 + 0x18], rax
mov rcx, r12
cmp byte [rbp + 0x48], 0
mov rdx, qword [r14 + 0x18]
je 0x1401c0e56
call fcn.1401c19a0
jmp 0x1401c0e5b
call fcn.1401c19a0
test al, al
jne 0x1401c0e6d
sub rbx, qword [rbp - 0x18]
mov qword [rdi + 8], rbx
mov dword [rdi], reloc.WS2_32.dll_recv
mov rax, qword [rbp - 0x10]
lea r11, [rsp + 0x50]
movups xmm0, xmmword [rbp - 0x20]
mov rbx, qword [r11 + 0x30]
mov rsi, qword [r11 + 0x38]
mov rdi, qword [r11 + 0x40]
movups xmmword [rax], xmm0
mov rsp, r11
pop r15
pop r14
pop r13
pop r12
pop rbp
ret
mov qword [rsp + 8], rbx
mov qword [rsp + 0x10], rbp
mov qword [rsp + 0x18], rsi
mov qword [rsp + 0x20], rdi
push r14
sub rsp, 0x40
inc qword [rdx]
mov rbp, r8
mov rax, qword [r8 + 0x40]
mov rbx, rdx
sub rax, qword [r8 + 0x38]
mov rdi, rcx
cmp rax, 0x10
jge 0x1401c0edd
lea rcx, [r8 + 0x20]
call fcn.1401c0660
mov rcx, qword [rbp + 0x38]
xorps xmm0, xmm0
mov edx, 4
movabs r14, 0x100002600
lea rax, [rcx + 0x10]
mov qword [rbp + 0x38], rax
movups xmmword [rcx], xmm0
mov word [rcx + 0xe], dx
movups xmm0, xmmword [rbx]
movups xmmword [rsp + 0x20], xmm0
mov rcx, qword [rsp + 0x20]
nop
movsx rax, byte [rcx]
cmp al, 0x20
ja 0x1401c0f23
bt r14, rax
jae 0x1401c0f23
inc rcx
jmp 0x1401c0f10
mov qword [rsp + 0x20], rcx
movups xmm0, xmmword [rsp + 0x20]
movups xmmword [rbx], xmm0
cmp dword [rdi + 0x30], 0
jne 0x1401c1060
mov rax, qword [rbx]
cmp byte [rax], 0x5d
jne 0x1401c0f6d
inc rax
movabs rcx, 0xffff000000000000
mov qword [rbx], rax
mov rax, qword [rbp + 0x38]
mov qword [rbp + 0x38], rax
mov word [rax - 2], dx
and qword [rax - 8], rcx
xor esi, esi
mov qword [rax - 0x10], rsi
jmp 0x1401c1060
mov r8, rbp
mov rdx, rbx
mov rcx, rdi
xor esi, esi
call fcn.1401c0700
cmp dword [rdi + 0x30], esi
jne 0x1401c1060
nop word [rax + rax]
movups xmm0, xmmword [rbx]
inc esi
movups xmmword [rsp + 0x20], xmm0
mov rcx, qword [rsp + 0x20]
nop
movsx rax, byte [rcx]
cmp al, 0x20
ja 0x1401c0fb3
bt r14, rax
jae 0x1401c0fb3
inc rcx
jmp 0x1401c0fa0
mov qword [rsp + 0x20], rcx
movups xmm0, xmmword [rsp + 0x20]
movups xmmword [rbx], xmm0
cmp dword [rdi + 0x30], 0
jne 0x1401c1060
mov rax, qword [rbx]
movzx ecx, byte [rax]
cmp cl, 0x2c
jne 0x1401c1028
inc rax
mov qword [rbx], rax
movups xmm0, xmmword [rbx]
movups xmmword [rsp + 0x20], xmm0
mov rdx, qword [rsp + 0x20]
movsx rax, byte [rdx]
cmp al, 0x20
ja 0x1401c0ffb
bt r14, rax
jae 0x1401c0ffb
inc rdx
jmp 0x1401c0fe8
mov qword [rsp + 0x20], rdx
movups xmm0, xmmword [rsp + 0x20]
movups xmmword [rbx], xmm0
cmp dword [rdi + 0x30], 0
jne 0x1401c1060
mov r8, rbp
mov rdx, rbx
mov rcx, rdi
call fcn.1401c0700
cmp dword [rdi + 0x30], 0
je 0x1401c0f90
jmp 0x1401c1060
cmp cl, 0x5d
jne 0x1401c1051
inc rax
mov edx, esi
mov rcx, rbp
mov qword [rbx], rax
call fcn.1401c1880
test al, al
jne 0x1401c1060
mov rax, qword [rbx]
sub rax, qword [rbx + 8]
mov dword [rdi + 0x30], reloc.WS2_32.dll_recv
jmp 0x1401c105c
sub rax, qword [rbx + 8]
mov dword [rdi + 0x30], 7
mov qword [rdi + 0x38], rax
mov rbx, qword [rsp + 0x50]
mov rbp, qword [rsp + 0x58]
mov rsi, qword [rsp + 0x60]
mov rdi, qword [rsp + 0x68]
add rsp, 0x40
pop r14
ret
mov qword [rsp + 0x18], r8
mov qword [rsp + 0x10], rdx
mov qword [rsp + 8], rcx
push rbp
push rbx
push rsi
push rdi
push r13
push r14
mov rbp, rsp
sub rsp, 0x68
movups xmm0, xmmword [rdx]
mov rbx, rcx
xorps xmm2, xmm2
xorps xmm1, xmm1
movq r9, xmm0
movups xmmword [rbp - 0x30], xmm0
mov rax, r9
psrldq xmm0, 8
movq rdx, xmm0
sub rax, rdx
mov qword [rbp - 0x40], rdx
cmp byte [r9], 0x2d
mov qword [rbp - 0x38], rax
jne 0x1401c10dd
inc r9
mov r8b, 1
mov qword [rbp - 0x30], r9
jmp 0x1401c10e0
xor r8b, r8b
movsx ecx, byte [r9]
xor r13d, r13d
movsd xmm3, qword [0x1404952e8]
xor r14b, r14b
mov qword [rsp + 0x60], r12
mov edi, r13d
mov byte [rbp + 0x50], r8b
mov esi, r13d
mov qword [rsp + 0x58], r15
cmp cl, 0x30
jne 0x1401c111d
inc r9
mov r12d, r13d
mov qword [rbp - 0x30], r9
xor r15b, r15b
jmp 0x1401c12d9
lea eax, [rcx - 0x31]
cmp al, 8
ja 0x1401c1839
lea rdx, [r9 + 1]
lea eax, [rcx - 0x30]
movzx ecx, byte [rdx]
test r8b, r8b
je 0x1401c1183
cmp cl, 0x30
jl 0x1401c11d3
mov r8, rdx
mov r9, rdx
cmp cl, 0x39
ja 0x1401c11ce
cmp eax, 0xccccccc
jb 0x1401c1160
jne 0x1401c11c9
mov r8, r9
cmp cl, 0x38
ja 0x1401c11c9
lea ecx, [rax + rax*4]
inc esi
movsx eax, byte [r8]
lea rdx, [r8 + 1]
mov r8, rdx
mov r9, rdx
lea eax, [rax + rcx*2]
movzx ecx, byte [rdx]
add eax, 0xffffffd0
cmp cl, 0x30
jge 0x1401c1146
jmp 0x1401c11ce
cmp cl, 0x30
jl 0x1401c11d3
mov r8, rdx
mov r9, rdx
nop
cmp cl, 0x39
ja 0x1401c11ce
cmp eax, 0x19999999
jb 0x1401c11a6
jne 0x1401c11c9
mov r8, r9
cmp cl, 0x35
ja 0x1401c11c9
lea ecx, [rax + rax*4]
inc esi
movsx eax, byte [r8]
lea rdx, [r8 + 1]
mov r8, rdx
mov r9, rdx
lea eax, [rax + rcx*2]
movzx ecx, byte [rdx]
add eax, 0xffffffd0
cmp cl, 0x30
jge 0x1401c1190
jmp 0x1401c11ce
mov r14b, 1
mov edi, eax
movzx r8d, byte [rbp + 0x50]
xor r15b, r15b
mov qword [rbp - 0x30], rdx
movzx r10d, r14b
mov r9, rdx
mov r12d, eax
test r14b, r14b
je 0x1401c12d1
mov qword [rbp - 0x30], rdx
test r8b, r8b
je 0x1401c125f
movzx ecx, byte [rdx]
cmp cl, 0x30
jl 0x1401c12d1
mov r8, rdx
mov qword [rbp - 0x30], rdx
movabs r10, 0xccccccccccccccc
xor r15b, r15b
cmp cl, 0x39
ja 0x1401c12d1
cmp rdi, r10
jb 0x1401c122e
jne 0x1401c1257
mov rdx, r8
cmp cl, 0x38
ja 0x1401c1257
movsx ecx, byte [rdx]
lea r9, [rdx + 1]
sub ecx, 0x30
mov qword [rbp - 0x30], r9
lea rax, [rdi + rdi*4]
inc esi
mov rdx, r9
mov r8, r9
lea rdi, [rcx + rax*2]
movzx ecx, byte [r9]
cmp cl, 0x30
jge 0x1401c1213
jmp 0x1401c12d1
mov rcx, rdi
jmp 0x1401c137b
movzx r8d, byte [rdx]
cmp r8b, 0x30
jl 0x1401c12d1
mov byte [rbp - 0x48], r10b
mov r14, rdx
movabs r10, 0x1999999999999999
mov qword [rbp - 0x30], rdx
nop
xor r15b, r15b
mov rcx, rdi
cmp r8b, 0x39
ja 0x1401c12cc
cmp rdi, r10
jb 0x1401c12a4
jne 0x1401c1376
mov rdx, r14
cmp r8b, 0x35
ja 0x1401c1376
movsx ecx, byte [rdx]
lea r9, [rdx + 1]
movzx r8d, byte [r9]
lea rax, [rdi + rdi*4]
sub ecx, 0x30
mov qword [rbp - 0x30], r9
inc esi
mov rdx, r9
mov r14, r9
lea rdi, [rcx + rax*2]
cmp r8b, 0x30
jge 0x1401c1280
movzx r14d, byte [rbp - 0x48]
mov rdx, qword [rbp - 0x40]
mov rbx, qword [rbp + 0x38]
cmp byte [r9], 0x2e
mov r11d, r13d
mov r10d, r12d
jne 0x1401c148b
movzx ecx, byte [r9 + 1]
inc r9
mov qword [rbp - 0x30], r9
lea eax, [rcx - 0x30]
cmp al, 9
ja 0x1401c147e
mov rdx, r9
mov r12d, r10d
test r15b, r15b
jne 0x1401c1405
test r14b, r14b
jne 0x1401c1317
mov edi, r10d
mov rax, r9
mov rcx, r9
movabs r8, 0x1fffffffffffff
cmp byte [r9], 0x39
jg 0x1401c1364
mov rdx, rcx
cmp rdi, r8
ja 0x1401c1364
movsx ecx, byte [rax]
lea r9, [rax + 1]
sub ecx, 0x30
mov qword [rbp - 0x30], r9
lea rax, [rdi + rdi*4]
dec r11d
mov rdx, r9
lea rdi, [rcx + rax*2]
test rdi, rdi
je 0x1401c1358
inc esi
cmp byte [r9], 0x30
mov rax, r9
mov rcx, rdx
jge 0x1401c1327
xorps xmm1, xmm1
test rdi, rdi
js 0x1401c13e7
cvtsi2sd xmm1, rdi
jmp 0x1401c13ff
movzx r14d, byte [rbp - 0x48]
mov r15b, 1
xorps xmm1, xmm1
test rcx, rcx
js 0x1401c138d
cvtsi2sd xmm1, rcx
jmp 0x1401c13a2
mov rax, rcx
and ecx, 1
shr rax, 1
or rax, rcx
cvtsi2sd xmm1, rax
addsd xmm1, xmm1
movzx eax, byte [r9]
cmp al, 0x30
jl 0x1401c12d1
mov rcx, r9
cmp al, 0x39
ja 0x1401c12d1
movsx eax, byte [rcx]
lea r9, [rcx + 1]
sub eax, 0x30
mulsd xmm1, xmm3
mov qword [rbp - 0x30], r9
mov rcx, r9
movd xmm0, eax
movzx eax, byte [r9]
cvtdq2pd xmm0, xmm0
addsd xmm1, xmm0
cmp al, 0x30
jge 0x1401c13b1
jmp 0x1401c12d1
mov rax, rdi
mov rcx, rdi
shr rcx, 1
and eax, 1
or rcx, rax
cvtsi2sd xmm1, rcx
addsd xmm1, xmm1
movzx ecx, byte [rdx]
mov r15b, 1
cmp cl, 0x30
jl 0x1401c148e
movzx r10d, byte [r9]
mov rcx, rdx
mov r8, rdx
cmp r10b, 0x39
jg 0x1401c148e
cmp esi, 0x11
jge 0x1401c1454
lea rax, [rcx + 1]
mulsd xmm1, xmm3
mov qword [rbp - 0x30], rax
dec r11d
movsx eax, byte [rcx]
sub eax, 0x30
movd xmm0, eax
cvtdq2pd xmm0, xmm0
addsd xmm0, xmm1
comisd xmm0, xmm2
movaps xmm1, xmm0
jbe 0x1401c144f
inc esi
mov r8, rcx
jmp 0x1401c145f
lea rax, [r8 + 1]
mov rcx, r8
mov qword [rbp - 0x30], rax
movzx r10d, byte [r8 + 1]
lea rax, [r8 + 1]
mov qword [rbp - 0x30], rax
lea rdx, [rcx + 1]
mov rcx, rdx
mov r8, rdx
cmp r10b, 0x30
jge 0x1401c1418
jmp 0x1401c148e
sub r9, rdx
mov edx, ntohs
jmp 0x1401c1841
mov rdx, r9
cmp byte [rdx], 0x65
je 0x1401c149c
cmp byte [rdx], 0x45
jne 0x1401c159d
inc rdx
mov qword [rbp - 0x30], rdx
test r15b, r15b
jne 0x1401c14da
mov rcx, rdi
test r14b, r14b
jne 0x1401c14b3
mov ecx, r12d
xorps xmm1, xmm1
test rcx, rcx
js 0x1401c14c2
cvtsi2sd xmm1, rcx
jmp 0x1401c14d7
mov rax, rcx
and ecx, 1
shr rax, 1
or rax, rcx
cvtsi2sd xmm1, rax
addsd xmm1, xmm1
mov r15b, 1
movzx ecx, byte [rdx]
xor r10b, r10b
cmp cl, 0x2b
je 0x1401c14ed
cmp cl, 0x2d
jne 0x1401c14f8
mov r10b, 1
movzx ecx, byte [rdx + 1]
inc rdx
mov qword [rbp - 0x30], rdx
lea eax, [rcx - 0x30]
cmp al, 9
ja 0x1401c164e
movzx r9d, byte [rdx + 1]
lea r8, [rdx + 1]
movsx r13d, cl
sub r13d, 0x30
mov qword [rbp - 0x30], r8
test r10b, r10b
je 0x1401c1609
lea ecx, [r11 + 0x7ffffff7]
mov eax, 0x66666667
imul ecx
mov r10d, edx
sar r10d, 2
mov eax, r10d
shr eax, 0x1f
add r10d, eax
cmp r9b, 0x30
jl 0x1401c159a
cmp r9b, 0x39
ja 0x1401c159a
movsx eax, byte [r8]
lea r13d, [r13 + r13*4]
lea rdx, [r8 + 1]
lea r13d, [r13 - 0x18]
mov qword [rbp - 0x30], rdx
mov r8, rdx
lea r13d, [rax + r13*2]
cmp r13d, r10d
jle 0x1401c1590
movzx eax, byte [rdx]
cmp al, 0x30
jl 0x1401c1590
mov rcx, rdx
cmp al, 0x39
ja 0x1401c158c
movzx eax, byte [rcx + 1]
lea r8, [rcx + 1]
mov rdx, r8
mov rcx, r8
cmp al, 0x30
jge 0x1401c1576
mov qword [rbp - 0x30], rdx
movzx r9d, byte [rdx]
cmp r9b, 0x30
jge 0x1401c1545
neg r13d
test r15b, r15b
je 0x1401c16be
lea ecx, [r11 + r13]
cmp ecx, 0xfffffecc
jge 0x1401c1662
divsd xmm1, qword [0x140495300]
lea eax, [rcx + 0x134]
cmp eax, 0xfffffecc
jl 0x1401c15e7
movsxd rax, ecx
lea rax, [rax*8 + 0x9a0]
lea rcx, [0x1404945c0]
movaps xmm2, xmm1
sub rcx, rax
divsd xmm2, qword [rcx]
comisd xmm2, xmmword [0x140495308]
jbe 0x1401c1689
mov rax, qword [rbp - 0x38]
mov dword [rbx + 0x30], ntohs
mov qword [rbx + 0x38], rax
jmp 0x1401c1855
mov edx, 0x134
sub edx, r11d
cmp r9b, 0x30
jl 0x1401c159d
cmp r9b, 0x39
ja 0x1401c159d
movsx eax, byte [r8]
lea r13d, [r13 + r13*4]
lea r13d, [r13 - 0x18]
lea r9, [r8 + 1]
mov qword [rbp - 0x30], r9
lea r13d, [rax + r13*2]
cmp r13d, edx
jg 0x1401c15f5
cmp byte [r9], 0x30
mov r8, r9
jl 0x1401c159d
movzx r9d, byte [r9]
jmp 0x1401c1617
sub rdx, qword [rbp - 0x40]
mov qword [rbx + 0x38], rdx
mov dword [rbx + 0x30], reloc.WS2_32.dll_ntohs
jmp 0x1401c1855
movsxd rax, ecx
lea rax, [rax*8]
test ecx, ecx
js 0x1401c15d6
lea rcx, [0x1404945c0]
movaps xmm2, xmm1
mulsd xmm2, qword [rax + rcx]
jmp 0x1401c15e7
cmp byte [rbp + 0x50], 0
je 0x1401c1696
xorps xmm2, xmmword [0x140495630]
mov rcx, qword [rbp + 0x48]
movaps xmm1, xmm2
call fcn.1401c1a30
test al, al
jne 0x1401c1855
mov rax, qword [rbp - 0x38]
mov qword [rbx + 0x38], rax
mov dword [rbx + 0x30], reloc.WS2_32.dll_recv
jmp 0x1401c1855
mov rbx, qword [rbp + 0x48]
add rbx, 0x20
mov rax, qword [rbx + 0x20]
sub rax, qword [rbx + 0x18]
test r14b, r14b
je 0x1401c17b0
cmp byte [rbp + 0x50], 0
je 0x1401c1745
neg rdi
cmp rax, 0x10
jge 0x1401c16ee
mov rcx, rbx
call fcn.1401c0660
mov rcx, qword [rbx + 0x18]
xorps xmm0, xmm0
lea rax, [rcx + 0x10]
mov qword [rbx + 0x18], rax
movups xmmword [rcx], xmm0
mov qword [rcx], rdi
mov word [rcx + 0xe], __WSAFDIsSet
test rdi, rdi
js 0x1401c172d
movabs rdx, 0xffffffff00000000
mov eax, 0x196
mov word [rcx + 0xe], ax
test rdx, rdi
jne 0x1401c1796
mov eax, 0x1d6
jmp 0x1401c1792
cmp rdi, 0xffffffff80000000
jl 0x1401c1855
mov word [rcx + 0xe], 0xb6
jmp 0x1401c1855
cmp rax, 0x10
jge 0x1401c1753
mov rcx, rbx
call fcn.1401c0660
mov rcx, qword [rbx + 0x18]
xorps xmm0, xmm0
lea rax, [rcx + 0x10]
mov qword [rbx + 0x18], rax
mov eax, 0x116
movups xmmword [rcx], xmm0
mov word [rcx + 0xe], ax
mov qword [rcx], rdi
test rdi, rdi
js 0x1401c177f
mov eax, 0x196
mov word [rcx + 0xe], ax
movabs rdx, 0xffffffff00000000
test rdx, rdi
jne 0x1401c1796
or ax, 0x40
mov word [rcx + 0xe], ax
test rdi, 0xffffffff80000000
jne 0x1401c1855
or ax, 0x20
mov word [rcx + 0xe], ax
jmp 0x1401c1855
cmp byte [rbp + 0x50], 0
je 0x1401c17f6
neg r12d
cmp rax, 0x10
jge 0x1401c17c7
mov rcx, rbx
call fcn.1401c0660
mov rcx, qword [rbx + 0x18]
xorps xmm0, xmm0
test r12d, r12d
mov edx, 0x1f6
lea rax, [rcx + 0x10]
mov qword [rbx + 0x18], rax
movsxd rax, r12d
movups xmmword [rcx], xmm0
mov qword [rcx], rax
mov eax, 0xb6
cmovns ax, dx
mov word [rcx + 0xe], ax
jmp 0x1401c1855
cmp rax, 0x10
jge 0x1401c1804
mov rcx, rbx
call fcn.1401c0660
mov rcx, qword [rbx + 0x18]
xorps xmm0, xmm0
lea rax, [rcx + 0x10]
mov qword [rbx + 0x18], rax
mov eax, r12d
shr r12d, 0x1a
not r12w
movups xmmword [rcx], xmm0
mov qword [rcx], rax
and r12w, 0x20
mov eax, 0x1d6
or r12w, ax
mov word [rcx + 0xe], r12w
jmp 0x1401c1855
sub r9, rdx
mov edx, 3
mov ecx, gethostbyaddr
mov eax, reloc.WS2_32.dll_getservbyport
mov r8, rbx
mov dword [rcx + rbx], edx
mov qword [rbx + rax], r9
mov rax, qword [rbp + 0x40]
movups xmm0, xmmword [rbp - 0x30]
mov r15, qword [rsp + 0x58]
mov r12, qword [rsp + 0x60]
movups xmmword [rax], xmm0
add rsp, 0x68
pop r14
pop r13
pop rdi
pop rsi
pop rbx
pop rbp
ret