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

Disassembly:
mov qword [rsp + 0x20], r9
mov dword [rsp + 0x18], r8d
mov qword [rsp + 0x10], rdx
mov qword [rsp + 8], rcx
push rbx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x138
mov qword [rsp + 0x120], 0xfffffffffffffffe
mov rbx, r9
mov rbp, rcx
cmp qword [rcx], 0
jne 0x14007c456
xor eax, eax
jmp 0x14007db61
xor r12d, r12d
mov qword [rsp + 0x30], r12
mov edi, r12d
mov dword [rsp + 0x38], r12d
lea rdx, [0x1400f03d0]
mov qword [rsp + 0x28], rdx
mov esi, r12d
mov dword [rsp + 0x48], r12d
mov qword [rsp + 0x40], r12
mov eax, dword [0x1401294a0]
lea r14, [0x1400f04c0]
test al, 1
jne 0x14007c59d
or eax, 1
mov dword [0x1401294a0], eax
lea rcx, [0x1401292a0]
call fcn.140032570
nop
mov qword [rsp + 0x78], r14
lea r13, str.___:____d_.__
mov qword [rsp + 0x80], r13
mov ebx, r12d
add ebx, 1
movsxd rax, ebx
cmp byte [rax + r13], 0
jne 0x14007c4c1
mov dword [rsp + 0x88], ebx
mov edx, dword [0x1401292c8]
test edx, edx
jle 0x14007c526
xor eax, eax
mov rbp, rax
nop
nop
nop
mov rax, qword [0x1401292d0]
mov rcx, qword [rax + rbp]
test rcx, rcx
je 0x14007c511
mov rax, qword [rcx]
mov edx, 1
call qword [rax + reloc.WS2_32.dll_recv]
mov edx, dword [0x1401292c8]
add r12d, 1
add rbp, 8
cmp r12d, edx
jl 0x14007c4f0
mov rbp, qword [rsp + 0x180]
xor r12d, r12d
mov dword [0x1401292c8], r12d
mov qword [0x1401292a0], r12
mov dword [0x1401292ac], r12d
xor edx, edx
mov r8d, 0x88
lea rcx, [0x140129418]
call fcn.1400cb010
mov qword [rsp + 0xc8], r14
mov qword [rsp + 0xd0], r13
mov dword [rsp + 0xd8], ebx
xor r8d, r8d
lea rdx, [rsp + 0xc8]
lea rcx, [0x1401292a0]
call fcn.140039140
nop
lea rcx, [0x1400eec00]
call fcn.1400cbb50
nop
mov rbx, qword [rsp + 0x198]
lea rdx, [0x1400f03d0]
mov qword [rsp + 0x100], r12
mov dword [rsp + 0x108], r12d
mov qword [rsp + 0xf8], rdx
mov dword [rsp + 0x118], r12d
mov qword [rsp + 0x110], r12
lea r13, [rsp + 0xf8]
mov rax, qword [rsp + 0x1c0]
test rax, rax
cmovne r13, rax
mov qword [rsp + 0xb8], r13
mov rcx, qword [rsp + 0x1c8]
mov rax, rcx
mov qword [rsp + 0x60], rcx
mov r15d, dword [rsp + 0x1a0]
cmp qword [rbp], 0
jne 0x14007c610
mov rax, r12
mov qword [rsp + 0x60], rax
jmp 0x14007c6ac
test rcx, rcx
jne 0x14007c675
mov ecx, 0x98
call fcn.1400ca4e0
mov qword [rsp + 0x60], rax
test rax, rax
je 0x14007c66d
mov qword [rax + 8], r12
mov dword [rax + 0x10], r12d
lea rdx, [0x1400f03d0]
mov qword [rax], rdx
mov dword [rax + 0x20], r12d
mov qword [rax + 0x18], r12
mov qword [rax + 0x30], r12
mov dword [rax + 0x38], r12d
mov qword [rax + 0x28], rdx
mov dword [rax + 0x48], r12d
mov qword [rax + 0x40], r12
mov qword [rax + 0x58], r12
mov dword [rax + 0x60], r12d
mov qword [rax + 0x50], rdx
mov dword [rax + 0x70], r12d
mov qword [rax + 0x68], r12
jmp 0x14007c675
mov rax, r12
mov qword [rsp + 0x60], rax
mov dword [rax + 0x84], r12d
mov dword [rax + 0x80], 0xffffffff
mov qword [rax + 0x88], rbx
mov dword [rax + 0x90], r15d
test byte [rbp + 8], 0x10
je 0x14007c6a4
mov dword [rax + 0x7c], r15d
mov dword [rax + 0x78], r15d
jmp 0x14007c6ac
mov dword [rax + 0x7c], r12d
mov dword [rax + 0x78], r12d
mov r14d, r12d
mov r15d, 2
lea r12d, [r15 - 4]
nop
nop
mov r8, rax
lea rdx, [rsp + 0x78]
lea rcx, [0x1401292a0]
call fcn.14000d7a0
xor ecx, ecx
mov dword [r13 + 0x10], ecx
movsxd rbp, dword [rax + 0x10]
test ebp, ebp
jle 0x14007c76a
mov rax, qword [rax + 0x18]
lea r12, [0x1400f6020]
test rax, rax
cmovne r12, rax
mov ecx, dword [r13 + 0x20]
mov ebx, ecx
cmp ecx, 8
mov eax, 8
cmovl ebx, eax
cmp ebp, ebx
jle 0x14007c725
add ebx, ebx
cmp ebp, ebx
jle 0x14007c725
lea ebx, [rbp + 0xb]
mov eax, ebx
cdq
and edx, 7
add eax, edx
and eax, 7
sub eax, edx
sub ebx, eax
cmp ebx, ecx
jle 0x14007c745
movsxd rdx, ebx
shl rdx, 2
mov rcx, qword [r13 + 0x18]
call fcn.1400cbbc0
mov qword [r13 + 0x18], rax
mov qword [r13 + 8], rax
mov dword [r13 + 0x20], ebx
mov r8, rbp
shl r8, 2
movsxd rcx, dword [r13 + 0x10]
mov rax, qword [r13 + 0x18]
lea rcx, [rax + rcx*4]
mov rdx, r12
call fcn.1400cb410
add dword [r13 + 0x10], ebp
mov r12d, 0xfffffffe
mov rcx, r13
call fcn.140009ff0
mov ebx, eax
lea rax, [0x1400f03d0]
mov qword [rsp + 0x78], rax
mov rcx, qword [rsp + 0x90]
test rcx, rcx
je 0x14007c792
call fcn.1400cbb70
test ebx, ebx
je 0x14007cce8
mov rcx, r13
call fcn.14007aaa0
mov ebx, eax
sub ebx, r14d
test ebx, ebx
jle 0x14007c830
cmp edi, esi
jl 0x14007c7e7
lea eax, [rsi + rsi]
mov esi, eax
cmp eax, 8
mov ebp, 8
cmovl esi, ebp
movsxd rdx, esi
shl rdx, 2
mov rcx, qword [rsp + 0x40]
call fcn.1400cbbc0
mov rcx, rax
mov qword [rsp + 0x40], rax
mov qword [rsp + 0x30], rax
mov dword [rsp + 0x48], esi
jmp 0x14007c7f1
mov rcx, qword [rsp + 0x40]
mov ebp, 8
movsxd rax, edi
mov dword [rcx + rax*4], r14d
add edi, 1
cmp edi, esi
jl 0x14007c827
lea eax, [rsi + rsi]
mov esi, eax
cmp eax, 8
cmovl esi, ebp
movsxd rdx, esi
shl rdx, 2
call fcn.1400cbbc0
mov rcx, rax
mov qword [rsp + 0x40], rax
mov qword [rsp + 0x30], rax
mov dword [rsp + 0x48], esi
movsxd rax, edi
mov dword [rcx + rax*4], ebx
add edi, 1
mov rcx, r13
call fcn.14007aaa0
movsxd r14, eax
mov ebp, r15d
mov rax, qword [rsp + 0x198]
movsx ecx, byte [r14 + rax + 1]
add ecx, 0xffffffdc
cmp ecx, 0x57
ja case.0x14007c874.37
movsxd rcx, ecx
lea rbx, [0x140000000]
movzx ecx, byte [rbx + rcx + 0x7db88]
mov edx, dword [rbx + rcx*4 + 0x7db78]
add rdx, rbx
jmp rdx
cmp edi, esi
jl 0x14007c8ae
lea eax, [rsi + rsi]
mov esi, eax
cmp eax, 8
mov ebx, 8
cmovl esi, ebx
movsxd rdx, esi
shl rdx, 2
mov rcx, qword [rsp + 0x40]
call fcn.1400cbbc0
mov rcx, rax
mov qword [rsp + 0x40], rax
mov qword [rsp + 0x30], rax
mov dword [rsp + 0x48], esi
jmp 0x14007c8b8
mov rcx, qword [rsp + 0x40]
mov ebx, 8
movsxd rax, edi
mov dword [rcx + rax*4], r14d
add edi, 1
cmp edi, esi
jl 0x14007c8ee
lea eax, [rsi + rsi]
mov esi, eax
cmp eax, 8
cmovl esi, ebx
movsxd rdx, esi
shl rdx, 2
call fcn.1400cbbc0
mov rcx, rax
mov qword [rsp + 0x40], rax
mov qword [rsp + 0x30], rax
mov dword [rsp + 0x48], esi
movsxd rax, edi
mov dword [rcx + rax*4], 1
add edi, 1
mov dword [rsp + 0x38], edi
mov r12d, 0xfffffffe
jmp 0x14007ccdb
cmp edi, esi
jl 0x14007c942
lea eax, [rsi + rsi]
mov esi, eax
cmp eax, 8
mov eax, 8
cmovl esi, eax
movsxd rdx, esi
shl rdx, 2
mov rcx, qword [rsp + 0x40]
call fcn.1400cbbc0
mov rcx, rax
mov qword [rsp + 0x40], rax
mov qword [rsp + 0x30], rax
mov dword [rsp + 0x48], esi
jmp 0x14007c947
mov rcx, qword [rsp + 0x40]
movsxd rax, edi
mov dword [rcx + rax*4], 0xffffffff
add edi, 1
mov rax, qword [rsp + 0x198]
movsx ebx, byte [r14 + rax + 1]
cmp edi, esi
jl 0x14007c993
lea eax, [rsi + rsi]
mov esi, eax
cmp eax, 8
mov eax, 8
cmovl esi, eax
movsxd rdx, esi
shl rdx, 2
call fcn.1400cbbc0
mov rcx, rax
mov qword [rsp + 0x40], rax
mov qword [rsp + 0x30], rax
mov dword [rsp + 0x48], esi
movsxd rax, edi
mov dword [rcx + rax*4], ebx
add edi, 1
mov dword [rsp + 0x38], edi
mov r12d, 0xfffffffe
jmp 0x14007ccdb
mov rcx, r13
call fcn.14000a000
mov ebp, eax
sub ebp, r14d
lea rax, [0x1400f04c0]
mov qword [rsp + 0xc8], rax
lea ecx, [r14 + 2]
movsxd rdx, ecx
add rdx, qword [rsp + 0x198]
mov qword [rsp + 0xd0], rdx
lea ecx, [rbp - 3]
mov dword [rsp + 0xd8], ecx
lea rdx, [rsp + 0xc8]
mov r12, qword [rsp + 0x180]
mov rcx, r12
call fcn.140032820
mov ebx, eax
test eax, eax
jle 0x14007caa5
cmp eax, dword [r12 + 0xc]
jg 0x14007caa5
cmp edi, esi
jl 0x14007ca4d
lea ecx, [rsi + rsi]
mov esi, ecx
cmp ecx, 8
mov eax, 8
cmovl esi, eax
movsxd rdx, esi
shl rdx, 2
mov rcx, qword [rsp + 0x40]
call fcn.1400cbbc0
mov rcx, rax
mov qword [rsp + 0x40], rax
mov qword [rsp + 0x30], rax
mov dword [rsp + 0x48], esi
jmp 0x14007ca52
mov rcx, qword [rsp + 0x40]
movsxd rax, edi
mov r12d, 0xfffffffe
mov dword [rcx + rax*4], r12d
add edi, 1
cmp edi, esi
jl 0x14007ca93
lea eax, [rsi + rsi]
mov esi, eax
cmp eax, 8
mov eax, 8
cmovl esi, eax
movsxd rdx, esi
shl rdx, 2
call fcn.1400cbbc0
mov rcx, rax
mov qword [rsp + 0x40], rax
mov qword [rsp + 0x30], rax
mov dword [rsp + 0x48], esi
movsxd rax, edi
mov dword [rcx + rax*4], ebx
add edi, 1
mov dword [rsp + 0x38], edi
jmp 0x14007ccdb
cmp edi, esi
jl 0x14007cadd
lea eax, [rsi + rsi]
mov esi, eax
cmp eax, 8
mov ebx, 8
cmovl esi, ebx
movsxd rdx, esi
shl rdx, 2
mov rcx, qword [rsp + 0x40]
call fcn.1400cbbc0
mov rcx, rax
mov qword [rsp + 0x40], rax
mov qword [rsp + 0x30], rax
mov dword [rsp + 0x48], esi
jmp 0x14007cae7
mov rcx, qword [rsp + 0x40]
mov ebx, 8
movsxd rax, edi
mov dword [rcx + rax*4], r14d
add edi, 1
cmp edi, esi
jl 0x14007cb1d
lea eax, [rsi + rsi]
mov esi, eax
cmp eax, 8
cmovl esi, ebx
movsxd rdx, esi
shl rdx, 2
call fcn.1400cbbc0
mov rcx, rax
mov qword [rsp + 0x40], rax
mov qword [rsp + 0x30], rax
mov dword [rsp + 0x48], esi
movsxd rax, edi
mov dword [rcx + rax*4], ebp
add edi, 1
mov dword [rsp + 0x38], edi
mov r12d, 0xfffffffe
jmp 0x14007ccdb
xor ecx, ecx
mov ebx, ecx
mov ebp, 1
mov rdx, rbp
lea r9, [r14 + rax]
nop
nop
nop
movzx r8d, byte [r9 + rdx]
lea eax, [r8 - 0x30]
cmp al, 9
ja 0x14007cb75
lea ecx, [rbx + rbx*4]
movsx eax, r8b
lea ebx, [rax + rcx*2 - 0x30]
add ebp, 1
add rdx, 1
cmp rdx, 3
jle 0x14007cb50
mov r12, qword [rsp + 0x180]
mov ecx, dword [r12 + 0xc]
cmp ebx, ecx
jle 0x14007cbb3
nop
nop
nop
mov eax, 0x66666667
imul ebx
mov ebx, edx
sar ebx, 2
mov eax, ebx
shr eax, 0x1f
add ebx, eax
sub ebp, 1
cmp ebx, ecx
jg 0x14007cb90
test ebx, ebx
jne 0x14007cbb3
lea ebp, [rbx + 1]
jmp 0x14007cbbc
cmp ebp, 1
jne 0x14007cc50
cmp edi, esi
jl 0x14007cbf4
lea eax, [rsi + rsi]
mov esi, eax
cmp eax, 8
mov ebx, 8
cmovl esi, ebx
movsxd rdx, esi
shl rdx, 2
mov rcx, qword [rsp + 0x40]
call fcn.1400cbbc0
mov rcx, rax
mov qword [rsp + 0x40], rax
mov qword [rsp + 0x30], rax
mov dword [rsp + 0x48], esi
jmp 0x14007cbfe
mov rcx, qword [rsp + 0x40]
mov ebx, 8
movsxd rax, edi
mov dword [rcx + rax*4], r14d
add edi, 1
cmp edi, esi
jl 0x14007cc34
lea eax, [rsi + rsi]
mov esi, eax
cmp eax, 8
cmovl esi, ebx
movsxd rdx, esi
shl rdx, 2
call fcn.1400cbbc0
mov rcx, rax
mov qword [rsp + 0x40], rax
mov qword [rsp + 0x30], rax
mov dword [rsp + 0x48], esi
movsxd rax, edi
mov dword [rcx + rax*4], 1
add edi, 1
mov dword [rsp + 0x38], edi
mov r12d, 0xfffffffe
jmp 0x14007ccdb
cmp edi, esi
jl 0x14007cc88
lea eax, [rsi + rsi]
mov esi, eax
cmp eax, 8
mov eax, 8
cmovl esi, eax
movsxd rdx, esi
shl rdx, 2
mov rcx, qword [rsp + 0x40]
call fcn.1400cbbc0
mov rcx, rax
mov qword [rsp + 0x40], rax
mov qword [rsp + 0x30], rax
mov dword [rsp + 0x48], esi
jmp 0x14007cc8d
mov rcx, qword [rsp + 0x40]
movsxd rax, edi
mov r12d, 0xfffffffe
mov dword [rcx + rax*4], r12d
add edi, 1
cmp edi, esi
jl 0x14007ccce
lea eax, [rsi + rsi]
mov esi, eax
cmp eax, 8
mov eax, 8
cmovl esi, eax
movsxd rdx, esi
shl rdx, 2
call fcn.1400cbbc0
mov rcx, rax
mov qword [rsp + 0x40], rax
mov qword [rsp + 0x30], rax
mov dword [rsp + 0x48], esi
movsxd rax, edi
mov dword [rcx + rax*4], ebx
add edi, 1
mov dword [rsp + 0x38], edi
add r14d, ebp
mov rax, qword [rsp + 0x60]
jmp 0x14007c6c0
mov r15d, dword [rsp + 0x1a0]
cmp r14d, r15d
jge 0x14007cd80
cmp edi, esi
jl 0x14007cd31
lea eax, [rsi + rsi]
mov esi, eax
cmp eax, 8
mov ebp, 8
cmovl esi, ebp
movsxd rdx, esi
shl rdx, 2
mov rcx, qword [rsp + 0x40]
call fcn.1400cbbc0
mov rcx, rax
mov qword [rsp + 0x40], rax
mov qword [rsp + 0x30], rax
mov dword [rsp + 0x48], esi
jmp 0x14007cd3b
mov rcx, qword [rsp + 0x40]
mov ebp, 8
movsxd rax, edi
mov dword [rcx + rax*4], r14d
add edi, 1
cmp edi, esi
jl 0x14007cd6f
lea ebx, [rsi + rsi]
cmp ebx, 8
cmovl ebx, ebp
movsxd rdx, ebx
shl rdx, 2
call fcn.1400cbbc0
mov rcx, rax
mov qword [rsp + 0x40], rax
mov qword [rsp + 0x30], rax
mov dword [rsp + 0x48], ebx
sub r15d, r14d
movsxd rax, edi
mov dword [rcx + rax*4], r15d
add edi, 1
mov dword [rsp + 0x38], edi
mov r11, qword [rsp + 0x180]
mov r9d, dword [r11 + 8]
and r9d, 0x10
mov dword [rsp + 0x68], r9d
je 0x14007cda1
lea esi, [rdi - 2]
mov edi, r12d
xor ecx, ecx
jmp 0x14007cda5
xor ecx, ecx
mov esi, ecx
test r9d, r9d
mov ebp, 2
cmovne ebp, r12d
mov ebx, ecx
test r9d, r9d
mov r10d, dword [rsp + 0x190]
cmovne ebx, r10d
mov dword [rsp + 0x58], ebx
mov eax, r10d
test r9d, r9d
cmovne eax, ecx
mov dword [rsp + 0xa0], eax
mov dword [rsp + 0x6c], ecx
mov dword [rsp + 0x20], ecx
mov qword [rsp + 0x80], rcx
mov r15d, ecx
mov dword [rsp + 0x88], ecx
lea rax, [0x1400f6018]
mov qword [rsp + 0x78], rax
mov r12d, ecx
mov dword [rsp + 0x98], ecx
mov r14, rcx
mov qword [rsp + 0x90], rcx
mov ebx, dword [rsp + 0x1b0]
cmp qword [r11], 0
jne 0x14007ce2b
mov rax, rcx
mov qword [rsp + 0x60], rcx
jmp 0x14007cf0b
mov rax, qword [rsp + 0x60]
test rax, rax
jne 0x14007cea8
mov ecx, 0x98
call fcn.1400ca4e0
mov qword [rsp + 0x60], rax
test rax, rax
je 0x14007ce89
xor ecx, ecx
mov qword [rax + 8], rcx
mov dword [rax + 0x10], ecx
lea rdx, [0x1400f03d0]
mov qword [rax], rdx
mov dword [rax + 0x20], ecx
mov qword [rax + 0x18], rcx
mov qword [rax + 0x30], rcx
mov dword [rax + 0x38], ecx
mov qword [rax + 0x28], rdx
mov dword [rax + 0x48], ecx
mov qword [rax + 0x40], rcx
mov qword [rax + 0x58], rcx
mov dword [rax + 0x60], ecx
mov qword [rax + 0x50], rdx
mov dword [rax + 0x70], ecx
mov qword [rax + 0x68], rcx
jmp 0x14007ce93
xor ecx, ecx
mov rax, rcx
mov qword [rsp + 0x60], rcx
mov r9d, dword [rsp + 0x68]
mov r10d, dword [rsp + 0x190]
mov r11, qword [rsp + 0x180]
mov dword [rax + 0x84], ecx
mov dword [rax + 0x80], 0xffffffff
mov rcx, qword [rsp + 0x188]
mov qword [rax + 0x88], rcx
mov dword [rax + 0x90], r10d
test ebx, ebx
jns 0x14007ceef
test byte [r11 + 8], 0x10
je 0x14007cee5
mov dword [rax + 0x7c], r10d
mov dword [rax + 0x78], r10d
xor ecx, ecx
jmp 0x14007cf0b
xor ecx, ecx
mov dword [rax + 0x7c], ecx
mov dword [rax + 0x78], ecx
jmp 0x14007cf0b
cmp ebx, r10d
jle 0x14007cf03
mov ebx, dword [r11 + 8]
shr ebx, 4
not ebx
and ebx, 1
add ebx, r10d
mov dword [rax + 0x7c], ebx
mov dword [rax + 0x78], ebx
xor ecx, ecx
mov edx, ecx
mov dword [rsp + 0x70], ecx
movsxd rcx, esi
mov qword [rsp + 0xf0], rcx
movsxd rcx, ebp
mov qword [rsp + 0xb0], rcx
movsxd rbx, r9d
mov qword [rsp + 0xa8], rbx
movsxd rsi, edi
mov qword [rsp + 0xc0], rsi
mov ecx, dword [rsp + 0x1b8]
test ecx, ecx
js 0x14007cf50
cmp edx, ecx
jge 0x14007d4ae
mov r8, rax
lea rdx, [rsp + 0xc8]
mov rcx, r11
call fcn.14000d7a0
xor ecx, ecx
mov dword [r13 + 0x10], ecx
movsxd rdi, dword [rax + 0x10]
test edi, edi
jle 0x14007d005
mov rax, qword [rax + 0x18]
lea rsi, [0x1400f6020]
test rax, rax
cmovne rsi, rax
mov ecx, dword [r13 + 0x20]
mov ebx, ecx
cmp ecx, 8
mov ebp, 8
cmovl ebx, ebp
cmp edi, ebx
jle 0x14007cfb4
add ebx, ebx
cmp edi, ebx
jle 0x14007cfb4
lea ebx, [rdi + 0xb]
mov eax, ebx
cdq
and edx, 7
add eax, edx
and eax, 7
sub eax, edx
sub ebx, eax
cmp ebx, ecx
jle 0x14007cfd4
movsxd rdx, ebx
shl rdx, 2
mov rcx, qword [r13 + 0x18]
call fcn.1400cbbc0
mov qword [r13 + 0x18], rax
mov qword [r13 + 8], rax
mov dword [r13 + 0x20], ebx
mov r8, rdi
shl r8, 2
movsxd rcx, dword [r13 + 0x10]
mov rax, qword [r13 + 0x18]
lea rcx, [rax + rcx*4]
mov rdx, rsi
call fcn.1400cb410
add dword [r13 + 0x10], edi
mov rsi, qword [rsp + 0xc0]
mov rbx, qword [rsp + 0xa8]
jmp 0x14007d00a
mov ebp, 8
lea rax, [0x1400f03d0]
mov qword [rsp + 0xc8], rax
mov rcx, qword [rsp + 0xe0]
test rcx, rcx
je 0x14007d02b
call fcn.1400cbb70
mov rcx, r13
call fcn.140009ff0
test eax, eax
je 0x14007d4ae
test rbx, rbx
je 0x14007d113
mov rcx, r13
call fcn.14000a000
mov edi, dword [rsp + 0x58]
sub edi, eax
je 0x14007d102
movsxd rbx, eax
add rbx, qword [rsp + 0x188]
cmp r15d, r12d
jl 0x14007d0a0
lea eax, [r12 + r12]
mov r12d, eax
cmp eax, 8
cmovl r12d, ebp
movsxd rdx, r12d
shl rdx, 3
mov rcx, r14
call fcn.1400cbbc0
mov r14, rax
mov qword [rsp + 0x90], rax
mov qword [rsp + 0x80], rax
mov dword [rsp + 0x98], r12d
movsxd rax, r15d
mov qword [r14 + rax*8], rbx
add r15d, 1
cmp r15d, r12d
jl 0x14007d0e8
lea eax, [r12 + r12]
mov r12d, eax
cmp eax, 8
cmovl r12d, ebp
movsxd rdx, r12d
shl rdx, 3
mov rcx, r14
call fcn.1400cbbc0
mov r14, rax
mov qword [rsp + 0x90], rax
mov qword [rsp + 0x80], rax
mov dword [rsp + 0x98], r12d
movsxd rcx, edi
movsxd rax, r15d
mov qword [r14 + rax*8], rcx
add r15d, 1
mov dword [rsp + 0x88], r15d
sub dword [rsp + 0x20], edi
mov rcx, r13
call fcn.14007aaa0
mov dword [rsp + 0x58], eax
jmp 0x14007d1e0
mov rcx, r13
call fcn.14007aaa0
mov ebx, eax
movsxd rdi, dword [rsp + 0x58]
sub ebx, edi
je 0x14007d1d4
cmp r15d, r12d
jl 0x14007d167
lea ecx, [r12 + r12]
mov r12d, ecx
cmp ecx, 8
cmovl r12d, ebp
movsxd rdx, r12d
shl rdx, 3
mov rcx, r14
call fcn.1400cbbc0
mov r14, rax
mov qword [rsp + 0x90], rax
mov qword [rsp + 0x80], rax
mov dword [rsp + 0x98], r12d
mov rcx, rdi
add rcx, qword [rsp + 0x188]
movsxd rax, r15d
mov qword [r14 + rax*8], rcx
add r15d, 1
cmp r15d, r12d
jl 0x14007d1ba
lea eax, [r12 + r12]
mov r12d, eax
cmp eax, 8
cmovl r12d, ebp
movsxd rdx, r12d
shl rdx, 3
mov rcx, r14
call fcn.1400cbbc0
mov r14, rax
mov qword [rsp + 0x90], rax
mov qword [rsp + 0x80], rax
mov dword [rsp + 0x98], r12d
movsxd rcx, ebx
movsxd rax, r15d
mov qword [r14 + rax*8], rcx
add r15d, 1
mov dword [rsp + 0x88], r15d
add dword [rsp + 0x20], ebx
mov rcx, r13
call fcn.14000a000
mov dword [rsp + 0x58], eax
mov ebx, dword [rsp + 0x20]
mov dword [rsp + 0x6c], ebx
mov rdx, qword [rsp + 0xf0]
mov rbp, rdx
cmp rdx, rsi
je 0x14007d482
nop
mov rcx, qword [rsp + 0x40]
movsxd rax, dword [rcx + rbp*4]
mov edi, dword [rcx + rbp*4 + 4]
mov rsi, rax
add rsi, qword [rsp + 0x198]
cmp eax, 0xffffffff
jne 0x14007d357
movsx ecx, dil
sub ecx, 0x26
je 0x14007d32f
sub ecx, 1
je 0x14007d30e
sub ecx, 4
je 0x14007d275
sub ecx, 0x34
je 0x14007d261
cmp ecx, 1
jne 0x14007d3b1
mov rsi, qword [rsp + 0x188]
mov rcx, r13
call fcn.14007aaa0
mov edi, eax
jmp 0x14007d3b1
mov rsi, qword [rsp + 0x188]
mov edi, dword [rsp + 0x190]
jmp 0x14007d3b1
mov rcx, r13
call fcn.140040660
movsxd r8, eax
test eax, eax
js 0x14007d2b0
mov r9d, dword [r13 + 0x10]
lea edx, [rax + rax + 2]
lea r8, [r8*8 + 8]
cmp edx, r9d
jge 0x14007d2a4
mov rcx, qword [r13 + 8]
cmp dword [r8 + rcx], 0
jge 0x14007d2b0
sub edx, 2
sub r8, 8
sub eax, 1
jns 0x14007d294
lea r8d, [rax + rax]
lea edx, [r8 + 2]
mov r9d, dword [r13 + 0x10]
cmp edx, r9d
jl 0x14007d2c6
or eax, 0xffffffff
jmp 0x14007d2d0
movsxd rcx, edx
mov rax, qword [r13 + 8]
mov eax, dword [rax + rcx*4]
movsxd rsi, eax
add rsi, qword [rsp + 0x188]
lea eax, [r8 + 3]
cmp eax, r9d
jl 0x14007d2e9
or edi, 0xffffffff
jmp 0x14007d2f3
movsxd rcx, eax
mov rax, qword [r13 + 8]
mov edi, dword [rax + rcx*4]
cmp edx, r9d
jl 0x14007d2fd
or eax, 0xffffffff
jmp 0x14007d307
movsxd rcx, edx
mov rax, qword [r13 + 8]
mov eax, dword [rax + rcx*4]
sub edi, eax
jmp 0x14007d3b1
mov rcx, r13
call fcn.14000a000
movsxd rsi, eax
add rsi, qword [rsp + 0x188]
mov edi, dword [rsp + 0x190]
sub edi, eax
jmp 0x14007d3b1
mov rcx, r13
call fcn.14007aaa0
movsxd rbx, eax
mov rsi, rbx
add rsi, qword [rsp + 0x188]
mov rcx, r13
call fcn.14000a000
mov edi, eax
sub edi, ebx
mov ebx, dword [rsp + 0x20]
jmp 0x14007d3b1
cmp eax, 0xfffffffe
jne 0x14007d3b1
add edi, edi
lea edx, [rdi + 2]
mov r8d, dword [r13 + 0x10]
cmp edx, r8d
jl 0x14007d36f
or eax, 0xffffffff
jmp 0x14007d379
movsxd rcx, edx
mov rax, qword [r13 + 8]
mov eax, dword [rax + rcx*4]
movsxd rsi, eax
add rsi, qword [rsp + 0x188]
lea eax, [rdi + 3]
cmp eax, r8d
jl 0x14007d391
or edi, 0xffffffff
jmp 0x14007d39b
movsxd rcx, eax
mov rax, qword [r13 + 8]
mov edi, dword [rax + rcx*4]
cmp edx, r8d
jl 0x14007d3a5
or eax, 0xffffffff
jmp 0x14007d3af
movsxd rcx, edx
mov rax, qword [r13 + 8]
mov eax, dword [rax + rcx*4]
sub edi, eax
cmp r15d, r12d
jl 0x14007d3f3
lea eax, [r12 + r12]
mov r12d, eax
cmp eax, 8
mov eax, 8
cmovl r12d, eax
movsxd rdx, r12d
shl rdx, 3
mov rcx, r14
call fcn.1400cbbc0
mov r14, rax
mov qword [rsp + 0x90], rax
mov qword [rsp + 0x80], rax
mov dword [rsp + 0x98], r12d
movsxd rax, r15d
mov qword [r14 + rax*8], rsi
add r15d, 1
cmp r15d, r12d
jl 0x14007d440
lea eax, [r12 + r12]
mov r12d, eax
cmp eax, 8
mov eax, 8
cmovl r12d, eax
movsxd rdx, r12d
shl rdx, 3
mov rcx, r14
call fcn.1400cbbc0
mov r14, rax
mov qword [rsp + 0x90], rax
mov qword [rsp + 0x80], rax
mov dword [rsp + 0x98], r12d
movsxd rcx, edi
movsxd rax, r15d
mov qword [r14 + rax*8], rcx
add r15d, 1
cmp qword [rsp + 0xa8], 0
je 0x14007d45b
neg edi
add ebx, edi
mov dword [rsp + 0x20], ebx
add rbp, qword [rsp + 0xb0]
mov rsi, qword [rsp + 0xc0]
cmp rbp, rsi
jne 0x14007d200
mov dword [rsp + 0x88], r15d
mov edx, dword [rsp + 0x70]
add edx, 1
mov dword [rsp + 0x70], edx
mov rbx, qword [rsp + 0xa8]
mov rax, qword [rsp + 0x60]
mov ecx, dword [rsp + 0x1b8]
mov r11, qword [rsp + 0x180]
jmp 0x14007cf44
mov qword [rsp + 0x50], r14
cmp dword [rsp + 0x68], 0
je 0x14007d559
mov ebx, dword [rsp + 0x58]
movsxd rdi, dword [rsp + 0xa0]
cmp edi, ebx
jge 0x14007d5ef
cmp r15d, r12d
jl 0x14007d503
lea eax, [r12 + r12]
mov r12d, eax
cmp eax, 8
mov esi, 8
cmovl r12d, esi
movsxd rdx, r12d
shl rdx, 3
mov rcx, r14
call fcn.1400cbbc0
mov r14, rax
mov qword [rsp + 0x50], rax
jmp 0x14007d508
mov esi, 8
mov rcx, rdi
add rcx, qword [rsp + 0x188]
movsxd rax, r15d
mov qword [r14 + rax*8], rcx
add r15d, 1
cmp r15d, r12d
jl 0x14007d544
lea eax, [r12 + r12]
cmp eax, 8
cmovl eax, esi
movsxd rdx, eax
shl rdx, 3
mov rcx, r14
call fcn.1400cbbc0
mov r14, rax
mov qword [rsp + 0x50], rax
sub ebx, edi
movsxd rcx, ebx
movsxd rax, r15d
mov qword [r14 + rax*8], rcx
add r15d, 1
jmp 0x14007d5ef
movsxd rbx, dword [rsp + 0x58]
mov edi, dword [rsp + 0xa0]
cmp ebx, edi
jge 0x14007d5ef
cmp r15d, r12d
jl 0x14007d59e
lea eax, [r12 + r12]
mov r12d, eax
cmp eax, 8
mov esi, 8
cmovl r12d, esi
movsxd rdx, r12d
shl rdx, 3
mov rcx, r14
call fcn.1400cbbc0
mov r14, rax
mov qword [rsp + 0x50], rax
jmp 0x14007d5a3
mov esi, 8
mov rcx, rbx
add rcx, qword [rsp + 0x188]
movsxd rax, r15d
mov qword [r14 + rax*8], rcx
add r15d, 1
cmp r15d, r12d
jl 0x14007d5df
lea eax, [r12 + r12]
cmp eax, 8
cmovl eax, esi
movsxd rdx, eax
shl rdx, 3
mov rcx, r14
call fcn.1400cbbc0
mov r14, rax
mov qword [rsp + 0x50], rax
sub edi, ebx
movsxd rcx, edi
movsxd rax, r15d
mov qword [r14 + rax*8], rcx
add r15d, 1
cmp qword [rsp + 0x1c8], 0
jne 0x14007d65a
mov rbx, qword [rsp + 0x60]
test rbx, rbx
je 0x14007d65a
lea rsi, [0x1400f03d0]
mov qword [rbx + 0x50], rsi
mov rcx, qword [rbx + 0x68]
test rcx, rcx
je 0x14007d61d
call fcn.1400cbb70
lea rdi, [0x1400f03c0]
mov qword [rbx + 0x50], rdi
mov qword [rbx + 0x28], rsi
mov rcx, qword [rbx + 0x40]
test rcx, rcx
je 0x14007d63a
call fcn.1400cbb70
mov qword [rbx + 0x28], rdi
mov qword [rbx], rsi
mov rcx, qword [rbx + 0x18]
test rcx, rcx
je 0x14007d64f
call fcn.1400cbb70
mov qword [rbx], rdi
mov rcx, rbx
call fcn.1400c9d50
mov r12, qword [rsp + 0x1a8]
xor esi, esi
mov dword [r12], esi
test r15d, r15d
jle 0x14007d690
lea rcx, [r14 + 8]
lea edx, [r15 - 1]
shr edx, 1
add edx, 1
nop
nop
mov eax, dword [rcx]
add dword [r12], eax
add rcx, 0x10
sub rdx, 1
jne 0x14007d680
mov edi, esi
mov rbp, rsi
mov ebx, dword [r12]
add ebx, 1
test ebx, ebx
jle 0x14007d6e2
mov edi, 8
cmp ebx, edi
jle 0x14007d6c4
mov edi, reloc.WS2_32.dll_recv
cmp ebx, edi
jle 0x14007d6c4
lea edi, [rbx + 0xb]
mov eax, edi
cdq
and edx, 7
add eax, edx
and eax, 7
sub eax, edx
sub edi, eax
movsxd rdx, edi
xor ecx, ecx
call fcn.1400cbbc0
mov rbp, rax
test ebx, ebx
jle 0x14007d6e2
movsxd r8, ebx
xor edx, edx
mov rcx, rax
call fcn.1400cb010
cmp dword [rsp + 0x68], esi
je 0x14007d790
lea eax, [r15 - 2]
movsxd r14, eax
test eax, eax
js 0x14007d83f
mov r13, qword [rsp + 0x50]
movsxd r15, dword [r13 + r14*8 + 8]
mov rax, qword [r13 + r14*8]
mov qword [rsp + 0x180], rax
mov ebx, edi
cmp edi, 8
mov eax, 8
cmovl ebx, eax
lea r12d, [r15 + rsi]
cmp r12d, ebx
jle 0x14007d72a
add ebx, ebx
cmp r12d, ebx
jle 0x14007d743
lea ebx, [r12 + 0xb]
mov eax, ebx
cdq
and edx, 7
add eax, edx
and eax, 7
sub eax, edx
sub ebx, eax
cmp ebx, edi
jle 0x14007d757
movsxd rdx, ebx
mov rcx, rbp
call fcn.1400cbbc0
mov rbp, rax
mov edi, ebx
mov r8, r15
movsxd rcx, esi
add rcx, rbp
mov rdx, qword [rsp + 0x180]
call fcn.1400cb410
mov esi, r12d
sub r14, 2
jns 0x14007d700
mov r13, qword [rsp + 0xb8]
mov r12, qword [rsp + 0x1a8]
mov r14, qword [rsp + 0x50]
jmp 0x14007d844
test r15d, r15d
jle 0x14007d844
lea ecx, [r15 - 1]
shr ecx, 1
add ecx, 1
mov qword [rsp + 0x180], rcx
mov r13d, 8
movsxd r15, dword [r14 + 8]
mov rax, qword [r14]
mov qword [rsp + 0xb0], rax
mov ebx, edi
cmp edi, r13d
cmovl ebx, r13d
lea r12d, [r15 + rsi]
cmp r12d, ebx
jle 0x14007d7d3
add ebx, ebx
cmp r12d, ebx
jle 0x14007d7ec
lea ebx, [r12 + 0xb]
mov eax, ebx
cdq
and edx, 7
add eax, edx
and eax, 7
sub eax, edx
sub ebx, eax
cmp ebx, edi
jle 0x14007d800
movsxd rdx, ebx
mov rcx, rbp
call fcn.1400cbbc0
mov rbp, rax
mov edi, ebx
mov r8, r15
movsxd rcx, esi
add rcx, rbp
mov rdx, qword [rsp + 0xb0]
call fcn.1400cb410
mov esi, r12d
add r14, 0x10
sub qword [rsp + 0x180], 1
jne 0x14007d7b0
mov r13, qword [rsp + 0xb8]
mov r12, qword [rsp + 0x1a8]
mov r14, qword [rsp + 0x50]
jmp 0x14007d844
mov r14, qword [rsp + 0x50]
mov ecx, edi
cmp edi, 8
mov r15d, 8
cmovl ecx, r15d
lea eax, [rsi + 1]
cmp eax, ecx
jle 0x14007d85c
add ecx, ecx
cmp eax, ecx
jle 0x14007d872
lea ecx, [rsi + 0xc]
mov eax, ecx
cdq
and edx, 7
add eax, edx
and eax, 7
sub eax, edx
sub ecx, eax
cmp ecx, edi
jle 0x14007d884
movsxd rdx, ecx
mov rcx, rbp
call fcn.1400cbbc0
mov rbp, rax
movsxd rax, esi
mov byte [rax + rbp], 0
mov edi, dword [r12]
mov ecx, dword [r13 + 0x20]
mov ebx, ecx
cmp ecx, r15d
cmovl ebx, r15d
mov edx, dword [r13 + 0x10]
lea eax, [rdx + 4]
cmp eax, ebx
jle 0x14007d8a9
add ebx, ebx
cmp eax, ebx
jle 0x14007d8bf
lea ebx, [rdx + 0xf]
mov eax, ebx
cdq
and edx, 7
add eax, edx
and eax, 7
sub eax, edx
sub ebx, eax
cmp ebx, ecx
jle 0x14007d8df
movsxd rdx, ebx
shl rdx, 2
mov rcx, qword [r13 + 0x18]
call fcn.1400cbbc0
mov qword [r13 + 0x18], rax
mov qword [r13 + 8], rax
mov dword [r13 + 0x20], ebx
movsxd rcx, dword [r13 + 0x10]
mov rax, qword [r13 + 0x18]
mov dword [rax + rcx*4], edi
add dword [r13 + 0x10], 1
movsxd rcx, dword [r13 + 0x10]
mov rax, qword [r13 + 0x18]
mov dword [rax + rcx*4], 0
mov ecx, dword [r13 + 0x20]
mov ebx, ecx
cmp ecx, r15d
cmovl ebx, r15d
mov edx, dword [r13 + 0x10]
lea eax, [rdx + 1]
cmp eax, ebx
jle 0x14007d918
add ebx, ebx
cmp eax, ebx
jle 0x14007d92e
lea ebx, [rdx + 0xc]
mov eax, ebx
cdq
and edx, 7
add eax, edx
and eax, 7
sub eax, edx
sub ebx, eax
cmp ebx, ecx
jle 0x14007d94e
movsxd rdx, ebx
shl rdx, 2
mov rcx, qword [r13 + 0x18]
call fcn.1400cbbc0
mov qword [r13 + 0x18], rax
mov qword [r13 + 8], rax
mov dword [r13 + 0x20], ebx
movsxd rcx, dword [r13 + 0x10]
mov rax, qword [r13 + 0x18]
mov edx, dword [rsp + 0x70]
mov dword [rax + rcx*4], edx
add dword [r13 + 0x10], 1
mov ecx, dword [r13 + 0x10]
cmp dword [rsp + 0x68], 0
je 0x14007da58
mov edi, dword [r12]
mov edx, dword [rsp + 0x20]
sub edi, edx
mov r8d, dword [r13 + 0x20]
mov ebx, r8d
cmp r8d, r15d
cmovl ebx, r15d
lea eax, [rcx + 1]
cmp eax, ebx
jle 0x14007d992
add ebx, ebx
lea eax, [rcx + 1]
cmp eax, ebx
jle 0x14007d9af
mov ebx, dword [r13 + 0x10]
add ebx, 0xc
mov eax, ebx
cdq
and edx, 7
add eax, edx
and eax, 7
sub eax, edx
sub ebx, eax
cmp ebx, r8d
jle 0x14007d9d0
movsxd rdx, ebx
shl rdx, 2
mov rcx, qword [r13 + 0x18]
call fcn.1400cbbc0
mov qword [r13 + 0x18], rax
mov qword [r13 + 8], rax
mov dword [r13 + 0x20], ebx
movsxd rcx, dword [r13 + 0x10]
mov rax, qword [r13 + 0x18]
mov dword [rax + rcx*4], edi
add dword [r13 + 0x10], 1
mov edx, dword [r13 + 0x10]
mov edi, dword [r12]
mov r8d, dword [rsp + 0x6c]
sub edi, r8d
mov ecx, dword [r13 + 0x20]
mov ebx, ecx
cmp ecx, r15d
cmovl ebx, r15d
lea eax, [rdx + 1]
cmp eax, ebx
jle 0x14007da06
add ebx, ebx
lea eax, [rdx + 1]
cmp eax, ebx
jle 0x14007da23
mov ebx, dword [r13 + 0x10]
add ebx, 0xc
mov eax, ebx
cdq
and edx, 7
add eax, edx
and eax, 7
sub eax, edx
sub ebx, eax
cmp ebx, ecx
jle 0x14007da43
movsxd rdx, ebx
shl rdx, 2
mov rcx, qword [r13 + 0x18]
call fcn.1400cbbc0
mov qword [r13 + 0x18], rax
mov qword [r13 + 8], rax
mov dword [r13 + 0x20], ebx
movsxd rcx, dword [r13 + 0x10]
mov rax, qword [r13 + 0x18]
mov dword [rax + rcx*4], edi
add dword [r13 + 0x10], 1
jmp 0x14007db2e
mov r8d, dword [r13 + 0x20]
mov ebx, r8d
cmp r8d, r15d
cmovl ebx, r15d
lea eax, [rcx + 1]
cmp eax, ebx
jle 0x14007da6f
add ebx, ebx
lea eax, [rcx + 1]
cmp eax, ebx
jle 0x14007da8c
mov ebx, dword [r13 + 0x10]
add ebx, 0xc
mov eax, ebx
cdq
and edx, 7
add eax, edx
and eax, 7
sub eax, edx
sub ebx, eax
cmp ebx, r8d
jle 0x14007daad
movsxd rdx, ebx
shl rdx, 2
mov rcx, qword [r13 + 0x18]
call fcn.1400cbbc0
mov qword [r13 + 0x18], rax
mov qword [r13 + 8], rax
mov dword [r13 + 0x20], ebx
movsxd rcx, dword [r13 + 0x10]
mov rax, qword [r13 + 0x18]
mov r8d, dword [rsp + 0x6c]
mov dword [rax + rcx*4], r8d
add dword [r13 + 0x10], 1
mov edx, dword [r13 + 0x10]
mov ecx, dword [r13 + 0x20]
mov ebx, ecx
cmp ecx, r15d
cmovl ebx, r15d
lea eax, [rdx + 1]
cmp eax, ebx
jle 0x14007dadd
add ebx, ebx
lea eax, [rdx + 1]
cmp eax, ebx
jle 0x14007dafa
mov ebx, dword [r13 + 0x10]
add ebx, 0xc
mov eax, ebx
cdq
and edx, 7
add eax, edx
and eax, 7
sub eax, edx
sub ebx, eax
cmp ebx, ecx
jle 0x14007db1a
movsxd rdx, ebx
shl rdx, 2
mov rcx, qword [r13 + 0x18]
call fcn.1400cbbc0
mov qword [r13 + 0x18], rax
mov qword [r13 + 8], rax
mov dword [r13 + 0x20], ebx
movsxd rcx, dword [r13 + 0x10]
mov rax, qword [r13 + 0x18]
mov edx, dword [rsp + 0x20]
mov dword [rax + rcx*4], edx
add dword [r13 + 0x10], 1
test r14, r14
je 0x14007db3c
mov rcx, r14
call fcn.1400cbb70
nop
mov rcx, qword [rsp + 0x110]
test rcx, rcx
je 0x14007db4f
call fcn.1400cbb70
nop
mov rcx, qword [rsp + 0x40]
test rcx, rcx
je 0x14007db5e
call fcn.1400cbb70
mov rax, rbp
add rsp, 0x138
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
pop rbx
ret