Function at 0x14005d440
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 rbp
push rbx
push rsi
push rdi
push r12
push r13
push r14
push r15
lea rbp, [rsp - 0x38]
sub rsp, 0x138
mov qword [rbp], 0xfffffffffffffffe
mov rbx, r9
mov r13, rcx
cmp qword [rcx], 0
jne 0x14005d487
xor eax, eax
jmp 0x14005e660
xor r14d, r14d
mov qword [rsp + 0x48], r14
mov edi, r14d
mov dword [rsp + 0x50], r14d
lea rsi, vtable.CBufferT_int_.0
mov qword [rsp + 0x40], rsi
mov r12d, r14d
mov dword [rsp + 0x60], r14d
mov qword [rsp + 0x58], r14
mov eax, dword [0x1400f73b0]
test al, 1
jne 0x14005d4e6
or eax, 1
mov dword [0x1400f73b0], eax
xor r8d, r8d
lea rdx, str.___:____d_.__
lea rcx, [0x1400f71b0]
call fcn.14002e430
lea rcx, [0x1400bb900]
call fcn.140096e58
nop
mov qword [rbp - 0x20], r14
mov dword [rbp - 0x18], r14d
mov qword [rbp - 0x28], rsi
mov dword [rbp - 8], r14d
mov qword [rbp - 0x10], r14
lea rsi, [rbp - 0x28]
mov rax, qword [rbp + 0xc0]
test rax, rax
cmovne rsi, rax
mov qword [rbp - 0x30], rsi
mov rax, qword [rbp + 0xc8]
mov qword [rsp + 0x20], rax
or r9d, 0xffffffff
mov r8d, dword [rbp + 0xa0]
mov rdx, rbx
mov rcx, r13
call fcn.1400286a0
mov qword [rsp + 0x78], rax
mov r15d, r14d
mov r14d, 2
mov r8, rax
lea rdx, [rbp - 0x80]
lea rcx, [0x1400f71b0]
call fcn.14000fb10
xor ecx, ecx
mov dword [rsi + 0x10], ecx
movsxd r13, dword [rax + 0x10]
test r13d, r13d
jle 0x14005d5ed
mov rax, qword [rax + 0x18]
lea r14, [0x1400bdbd8]
test rax, rax
cmovne r14, rax
mov ecx, dword [rsi + 0x20]
mov ebx, ecx
cmp ecx, 8
mov eax, 8
cmovl ebx, eax
cmp r13d, ebx
jle 0x14005d5a9
add ebx, ebx
cmp r13d, ebx
jle 0x14005d5a9
lea ebx, [r13 + 0xb]
mov eax, ebx
and eax, 0x80000007
jge 0x14005d5a7
dec eax
or eax, 0xfffffff8
inc eax
sub ebx, eax
cmp ebx, ecx
jle 0x14005d5c8
movsxd rdx, ebx
shl rdx, 2
mov rcx, qword [rsi + 0x18]
call fcn.140096e70
mov qword [rsi + 0x18], rax
mov qword [rsi + 8], rax
mov dword [rsi + 0x20], ebx
mov r8, r13
shl r8, 2
movsxd rcx, dword [rsi + 0x10]
mov rax, qword [rsi + 0x18]
lea rcx, [rax + rcx*4]
mov rdx, r14
call fcn.140095540
add dword [rsi + 0x10], r13d
mov r14d, 2
mov rcx, rsi
call fcn.14000d8c0
mov ebx, eax
lea rax, vtable.CBufferT_int_.0
mov qword [rbp - 0x80], rax
mov rcx, qword [rbp - 0x68]
test rcx, rcx
je 0x14005d610
call fcn.140096684
test ebx, ebx
je 0x14005d9ea
mov rcx, rsi
call fcn.14005c350
mov ebx, eax
sub ebx, r15d
test ebx, ebx
jle 0x14005d6a7
mov r13d, 8
mov rcx, qword [rsp + 0x58]
cmp edi, r12d
jl 0x14005d665
lea edx, [r12 + r12]
mov r12d, edx
cmp edx, r13d
cmovl r12d, r13d
movsxd rdx, r12d
shl rdx, 2
call fcn.140096e70
mov rcx, rax
mov qword [rsp + 0x58], rax
mov qword [rsp + 0x48], rax
mov dword [rsp + 0x60], r12d
movsxd rax, edi
mov dword [rcx + rax*4], r15d
inc edi
cmp edi, r12d
jl 0x14005d69f
lea eax, [r12 + r12]
mov r12d, eax
cmp eax, 8
cmovl r12d, r13d
movsxd rdx, r12d
shl rdx, 2
call fcn.140096e70
mov rcx, rax
mov qword [rsp + 0x58], rax
mov qword [rsp + 0x48], rax
mov dword [rsp + 0x60], r12d
movsxd rax, edi
mov dword [rcx + rax*4], ebx
inc edi
mov rcx, rsi
call fcn.14005c350
movsxd r15, eax
mov r13d, r14d
mov rbx, qword [rbp + 0x98]
lea r14, [rbx + r15]
movsx ecx, byte [r14 + 1]
add ecx, 0xffffffdc
cmp ecx, 0x57
ja case.0x14005d6ed.37
movsxd rcx, ecx
lea rdx, [0x140000000]
movzx ecx, byte [rdx + rcx + 0x5e684]
mov eax, dword [rdx + rcx*4 + 0x5e674]
add rax, rdx
jmp rax
cmp edi, r12d
mov rcx, qword [rsp + 0x58]
mov ebx, 8
jl 0x14005d729
lea eax, [r12 + r12]
mov r12d, eax
cmp eax, ebx
cmovl r12d, ebx
movsxd rdx, r12d
shl rdx, 2
call fcn.140096e70
mov rcx, rax
mov qword [rsp + 0x58], rax
mov qword [rsp + 0x48], rax
mov dword [rsp + 0x60], r12d
movsxd rax, edi
mov dword [rcx + rax*4], r15d
inc edi
cmp edi, r12d
jl 0x14005d763
lea eax, [r12 + r12]
mov r12d, eax
cmp eax, 8
cmovl r12d, ebx
movsxd rdx, r12d
shl rdx, 2
call fcn.140096e70
mov rcx, rax
mov qword [rsp + 0x58], rax
mov qword [rsp + 0x48], rax
mov dword [rsp + 0x60], r12d
movsxd rax, edi
mov dword [rcx + rax*4], 1
jmp 0x14005d9d7
mov rcx, qword [rsp + 0x58]
cmp edi, r12d
jl 0x14005d7ad
lea eax, [r12 + r12]
mov r12d, eax
cmp eax, 8
mov eax, 8
cmovl r12d, eax
movsxd rdx, r12d
shl rdx, 2
call fcn.140096e70
mov rcx, rax
mov qword [rsp + 0x58], rax
mov qword [rsp + 0x48], rax
mov dword [rsp + 0x60], r12d
movsxd rax, edi
mov dword [rcx + rax*4], 0xffffffff
inc edi
movsx ebx, byte [r14 + 1]
cmp edi, r12d
jl 0x14005d9d1
lea eax, [r12 + r12]
mov r12d, eax
cmp eax, 8
mov eax, 8
cmovl r12d, eax
jmp 0x14005d9b3
mov rcx, rsi
call fcn.14000d8d0
mov r13d, eax
sub r13d, r15d
lea rax, vtable.CBufferRefT_char_.0
mov qword [rbp - 0x80], rax
lea ecx, [r15 + 2]
movsxd rdx, ecx
add rdx, rbx
mov qword [rbp - 0x78], rdx
lea ecx, [r13 - 3]
mov dword [rbp - 0x70], ecx
lea rdx, [rbp - 0x80]
mov r14, qword [rbp + 0x80]
mov rcx, r14
call fcn.1400287a0
mov ebx, eax
test eax, eax
jle 0x14005d84a
cmp eax, dword [r14 + 0xc]
jg 0x14005d84a
mov r14d, 8
cmp edi, r12d
jl 0x14005d98f
lea ecx, [r12 + r12]
mov r12d, ecx
cmp ecx, r14d
jmp 0x14005d966
mov ebx, 8
mov rcx, qword [rsp + 0x58]
cmp edi, r12d
jl 0x14005d884
lea eax, [r12 + r12]
mov r12d, eax
cmp eax, ebx
cmovl r12d, ebx
movsxd rdx, r12d
shl rdx, 2
call fcn.140096e70
mov rcx, rax
mov qword [rsp + 0x58], rax
mov qword [rsp + 0x48], rax
mov dword [rsp + 0x60], r12d
movsxd rax, edi
mov dword [rcx + rax*4], r15d
inc edi
cmp edi, r12d
jl 0x14005d8be
lea eax, [r12 + r12]
mov r12d, eax
cmp eax, 8
cmovl r12d, ebx
movsxd rdx, r12d
shl rdx, 2
call fcn.140096e70
mov rcx, rax
mov qword [rsp + 0x58], rax
mov qword [rsp + 0x48], rax
mov dword [rsp + 0x60], r12d
movsxd rax, edi
mov dword [rcx + rax*4], r13d
jmp 0x14005d9d7
xor eax, eax
mov ebx, eax
mov edx, 1
mov r13d, edx
nop word [rax + rax]
movzx r8d, byte [r14 + rdx]
lea eax, [r8 - 0x30]
cmp al, 9
ja 0x14005d904
lea ecx, [rbx + rbx*4]
movsx eax, r8b
lea ebx, [rax + rcx*2 - 0x30]
inc r13d
inc rdx
cmp rdx, 3
jle 0x14005d8e0
mov r14, qword [rbp + 0x80]
mov ecx, dword [r14 + 0xc]
cmp ebx, ecx
jle 0x14005d947
nop word [rax + rax]
mov eax, 0x66666667
imul ebx
mov ebx, edx
sar ebx, 2
mov eax, ebx
shr eax, 0x1f
add ebx, eax
dec r13d
cmp ebx, ecx
jg 0x14005d920
test ebx, ebx
jne 0x14005d947
lea r13d, [rbx + 1]
jmp case.0x14005d6ed.36
cmp r13d, 1
je case.0x14005d6ed.36
mov r14d, 8
cmp edi, r12d
jl 0x14005d98f
lea eax, [r12 + r12]
mov r12d, eax
cmp eax, r14d
cmovl r12d, r14d
movsxd rdx, r12d
shl rdx, 2
mov rcx, qword [rsp + 0x58]
call fcn.140096e70
mov rcx, rax
mov qword [rsp + 0x58], rax
mov qword [rsp + 0x48], rax
mov dword [rsp + 0x60], r12d
jmp 0x14005d994
mov rcx, qword [rsp + 0x58]
movsxd rax, edi
inc edi
cmp edi, r12d
mov dword [rcx + rax*4], 0xfffffffe
jl 0x14005d9d1
lea eax, [r12 + r12]
mov r12d, eax
cmp eax, 8
cmovl r12d, r14d
movsxd rdx, r12d
shl rdx, 2
call fcn.140096e70
mov rcx, rax
mov qword [rsp + 0x58], rax
mov qword [rsp + 0x48], rax
mov dword [rsp + 0x60], r12d
movsxd rax, edi
mov dword [rcx + rax*4], ebx
inc edi
mov dword [rsp + 0x50], edi
add r15d, r13d
mov rax, qword [rsp + 0x78]
jmp 0x14005d53a
mov r13d, dword [rbp + 0xa0]
cmp r15d, r13d
jge 0x14005da7f
mov rcx, qword [rsp + 0x58]
cmp edi, r12d
jl 0x14005da35
lea eax, [r12 + r12]
mov r12d, eax
cmp eax, 8
mov eax, 8
cmovl r12d, eax
movsxd rdx, r12d
shl rdx, 2
call fcn.140096e70
mov rcx, rax
mov qword [rsp + 0x58], rax
mov qword [rsp + 0x48], rax
mov dword [rsp + 0x60], r12d
movsxd rax, edi
mov dword [rcx + rax*4], r15d
inc edi
cmp edi, r12d
jl 0x14005da6f
lea ebx, [r12 + r12]
cmp ebx, 8
mov eax, 8
cmovl ebx, eax
movsxd rdx, ebx
shl rdx, 2
call fcn.140096e70
mov rcx, rax
mov qword [rsp + 0x58], rax
mov qword [rsp + 0x48], rax
mov dword [rsp + 0x60], ebx
sub r13d, r15d
movsxd rax, edi
mov dword [rcx + rax*4], r13d
inc edi
mov dword [rsp + 0x50], edi
mov r10, qword [rbp + 0x80]
mov ecx, dword [r10 + 8]
and ecx, 0x10
mov dword [rsp + 0x6c], ecx
mov eax, 0xfffffffe
je 0x14005daa2
lea ebx, [rdi - 2]
mov edi, eax
xor r9d, r9d
jmp 0x14005daa8
xor r9d, r9d
mov ebx, r9d
test ecx, ecx
cmovne r14d, eax
mov dword [rbp - 0x40], r14d
mov eax, r9d
mov edx, dword [rbp + 0x90]
cmovne eax, edx
mov dword [rsp + 0x68], eax
mov eax, edx
cmovne eax, r9d
mov dword [rbp - 0x50], eax
mov dword [rsp + 0x74], r9d
mov dword [rsp + 0x30], r9d
mov qword [rbp - 0x78], r9
mov r14d, r9d
mov dword [rbp - 0x70], r9d
lea rax, vtable.CBufferT_char_const____ptr64_.0
mov qword [rbp - 0x80], rax
mov r13d, r9d
mov dword [rbp - 0x60], r9d
mov r15, r9
mov qword [rbp - 0x68], r9
mov rax, qword [rsp + 0x78]
mov qword [rsp + 0x20], rax
mov r9d, dword [rbp + 0xb0]
mov r8d, edx
mov r12, qword [rbp + 0x88]
mov rdx, r12
mov rcx, r10
call fcn.1400286a0
mov qword [rbp - 0x48], rax
xor ecx, ecx
mov edx, ecx
mov dword [rsp + 0x70], ecx
movsxd rcx, ebx
mov qword [rbp - 0x58], rcx
movsxd rbx, dword [rsp + 0x6c]
mov qword [rsp + 0x78], rbx
movsxd rcx, edi
mov qword [rbp - 0x38], rcx
mov ecx, dword [rbp + 0xb8]
test ecx, ecx
js 0x14005db55
cmp edx, ecx
jge 0x14005e011
mov r8, rax
lea rdx, [rbp + 8]
mov rcx, qword [rbp + 0x80]
call fcn.14000fb10
xor ecx, ecx
mov dword [rsi + 0x10], ecx
movsxd rdi, dword [rax + 0x10]
test edi, edi
jle 0x14005dc03
mov rax, qword [rax + 0x18]
lea r12, [0x1400bdbd8]
test rax, rax
cmovne r12, rax
mov ecx, dword [rsi + 0x20]
mov ebx, ecx
cmp ecx, 8
mov eax, 8
cmovl ebx, eax
cmp edi, ebx
jle 0x14005dbba
add ebx, ebx
cmp edi, ebx
jle 0x14005dbba
lea ebx, [rdi + 0xb]
mov eax, ebx
and eax, 0x80000007
jge 0x14005dbb8
dec eax
or eax, 0xfffffff8
inc eax
sub ebx, eax
cmp ebx, ecx
jle 0x14005dbd9
movsxd rdx, ebx
shl rdx, 2
mov rcx, qword [rsi + 0x18]
call fcn.140096e70
mov qword [rsi + 0x18], rax
mov qword [rsi + 8], rax
mov dword [rsi + 0x20], ebx
mov r8, rdi
shl r8, 2
movsxd rcx, dword [rsi + 0x10]
mov rax, qword [rsi + 0x18]
lea rcx, [rax + rcx*4]
mov rdx, r12
call fcn.140095540
add dword [rsi + 0x10], edi
mov r12, qword [rbp + 0x88]
mov rbx, qword [rsp + 0x78]
lea rax, vtable.CBufferT_int_.0
mov qword [rbp + 8], rax
mov rcx, qword [rbp + 0x20]
test rcx, rcx
je 0x14005dc1c
call fcn.140096684
mov rcx, rsi
call fcn.14000d8c0
test eax, eax
je 0x14005e011
mov rcx, rsi
test rbx, rbx
je 0x14005dce5
call fcn.14000d8d0
mov edi, dword [rsp + 0x68]
sub edi, eax
je 0x14005dcd8
movsxd rbx, eax
add rbx, r12
mov r12d, 8
cmp r14d, r13d
jl 0x14005dc87
lea eax, [r13 + r13]
mov r13d, eax
cmp eax, r12d
cmovl r13d, r12d
movsxd rdx, r13d
shl rdx, 3
mov rcx, r15
call fcn.140096e70
mov r15, rax
mov qword [rbp - 0x68], rax
mov qword [rbp - 0x78], rax
mov dword [rbp - 0x60], r13d
movsxd rax, r14d
mov qword [r15 + rax*8], rbx
inc r14d
cmp r14d, r13d
jl 0x14005dcc3
lea eax, [r13 + r13]
mov r13d, eax
cmp eax, 8
cmovl r13d, r12d
movsxd rdx, r13d
shl rdx, 3
mov rcx, r15
call fcn.140096e70
mov r15, rax
mov qword [rbp - 0x68], rax
mov qword [rbp - 0x78], rax
mov dword [rbp - 0x60], r13d
movsxd rcx, edi
movsxd rax, r14d
mov qword [r15 + rax*8], rcx
inc r14d
mov dword [rbp - 0x70], r14d
sub dword [rsp + 0x30], edi
mov rcx, rsi
call fcn.14005c350
jmp 0x14005dd92
call fcn.14005c350
mov ebx, eax
movsxd rdi, dword [rsp + 0x68]
sub ebx, edi
je 0x14005dd8a
cmp r14d, r13d
jl 0x14005dd30
lea ecx, [r13 + r13]
mov r13d, ecx
cmp ecx, 8
mov eax, 8
cmovl r13d, eax
movsxd rdx, r13d
shl rdx, 3
mov rcx, r15
call fcn.140096e70
mov r15, rax
mov qword [rbp - 0x68], rax
mov qword [rbp - 0x78], rax
mov dword [rbp - 0x60], r13d
lea rcx, [r12 + rdi]
movsxd rax, r14d
mov qword [r15 + rax*8], rcx
inc r14d
cmp r14d, r13d
jl 0x14005dd75
lea eax, [r13 + r13]
mov r13d, eax
cmp eax, 8
mov eax, 8
cmovl r13d, eax
movsxd rdx, r13d
shl rdx, 3
mov rcx, r15
call fcn.140096e70
mov r15, rax
mov qword [rbp - 0x68], rax
mov qword [rbp - 0x78], rax
mov dword [rbp - 0x60], r13d
movsxd rcx, ebx
movsxd rax, r14d
mov qword [r15 + rax*8], rcx
inc r14d
mov dword [rbp - 0x70], r14d
add dword [rsp + 0x30], ebx
mov rcx, rsi
call fcn.14000d8d0
mov dword [rsp + 0x68], eax
mov eax, dword [rsp + 0x30]
mov dword [rsp + 0x74], eax
mov rdx, qword [rbp - 0x58]
mov rbx, rdx
mov qword [rsp + 0x38], rdx
cmp rdx, qword [rbp - 0x38]
je 0x14005dff2
nop word [rax + rax]
mov rcx, qword [rsp + 0x58]
movsxd rax, dword [rcx + rbx*4]
mov edi, dword [rcx + rbx*4 + 4]
mov r12, rax
add r12, qword [rbp + 0x98]
cmp eax, 0xffffffff
jne 0x14005deec
movsx ecx, dil
sub ecx, 0x26
je 0x14005dec4
dec ecx
je 0x14005deaa
sub ecx, 4
je 0x14005de2f
sub ecx, 0x34
je 0x14005de1d
dec ecx
jne 0x14005df45
mov r12, qword [rbp + 0x88]
mov rcx, rsi
call fcn.14005c350
mov edi, eax
jmp 0x14005df45
mov r12, qword [rbp + 0x88]
mov edi, dword [rbp + 0x90]
jmp 0x14005df45
mov rcx, rsi
call fcn.1400334b0
movsxd r11, eax
mov rdx, r11
test eax, eax
js 0x14005de6c
mov r8d, dword [rsi + 0x10]
shl rdx, 3
lea ecx, [r11 + r11 + 2]
nop
cmp ecx, r8d
jge 0x14005de60
mov rax, qword [rsi + 8]
cmp dword [rax + rdx + 8], 0
jge 0x14005de6c
sub ecx, 2
sub rdx, 8
dec r11d
jns 0x14005de50
add r11d, r11d
lea edx, [r11 + 2]
mov r8d, dword [rsi + 0x10]
cmp edx, r8d
jl 0x14005de81
or eax, 0xffffffff
jmp 0x14005de8b
movsxd rcx, edx
mov rax, qword [rsi + 8]
mov eax, dword [rax + rcx*4]
movsxd r12, eax
add r12, qword [rbp + 0x88]
lea eax, [r11 + 3]
cmp eax, r8d
jl 0x14005df25
or edi, 0xffffffff
jmp 0x14005df2f
mov rcx, rsi
call fcn.14000d8d0
movsxd r12, eax
add r12, qword [rbp + 0x88]
mov edi, dword [rbp + 0x90]
jmp 0x14005df43
mov rcx, rsi
call fcn.14005c350
movsxd rbx, eax
mov r12, rbx
add r12, qword [rbp + 0x88]
mov rcx, rsi
call fcn.14000d8d0
mov edi, eax
sub edi, ebx
mov rbx, qword [rsp + 0x38]
jmp 0x14005df45
cmp eax, 0xfffffffe
jne 0x14005df45
add edi, edi
lea edx, [rdi + 2]
mov r8d, dword [rsi + 0x10]
cmp edx, r8d
jl 0x14005df04
or eax, 0xffffffff
jmp 0x14005df0e
movsxd rcx, edx
mov rax, qword [rsi + 8]
mov eax, dword [rax + rcx*4]
movsxd r12, eax
add r12, qword [rbp + 0x88]
lea eax, [rdi + 3]
cmp eax, r8d
jl 0x14005df25
or edi, 0xffffffff
jmp 0x14005df2f
movsxd rcx, eax
mov rax, qword [rsi + 8]
mov edi, dword [rax + rcx*4]
cmp edx, r8d
jl 0x14005df39
or eax, 0xffffffff
jmp 0x14005df43
movsxd rcx, edx
mov rax, qword [rsi + 8]
mov eax, dword [rax + rcx*4]
sub edi, eax
cmp r14d, r13d
jl 0x14005df7c
lea eax, [r13 + r13]
mov r13d, eax
cmp eax, 8
mov eax, 8
cmovl r13d, eax
movsxd rdx, r13d
shl rdx, 3
mov rcx, r15
call fcn.140096e70
mov r15, rax
mov qword [rbp - 0x68], rax
mov qword [rbp - 0x78], rax
mov dword [rbp - 0x60], r13d
movsxd rax, r14d
mov qword [r15 + rax*8], r12
inc r14d
cmp r14d, r13d
jl 0x14005dfbd
lea eax, [r13 + r13]
mov r13d, eax
cmp eax, 8
mov eax, 8
cmovl r13d, eax
movsxd rdx, r13d
shl rdx, 3
mov rcx, r15
call fcn.140096e70
mov r15, rax
mov qword [rbp - 0x68], rax
mov qword [rbp - 0x78], rax
mov dword [rbp - 0x60], r13d
movsxd rcx, edi
movsxd rax, r14d
mov qword [r15 + rax*8], rcx
inc r14d
cmp qword [rsp + 0x78], 0
je 0x14005dfd4
neg edi
add dword [rsp + 0x30], edi
movsxd rax, dword [rbp - 0x40]
add rbx, rax
mov qword [rsp + 0x38], rbx
cmp rbx, qword [rbp - 0x38]
jne 0x14005ddc0
mov dword [rbp - 0x70], r14d
mov edx, dword [rsp + 0x70]
inc edx
mov dword [rsp + 0x70], edx
mov r12, qword [rbp + 0x88]
mov rbx, qword [rsp + 0x78]
mov rax, qword [rbp - 0x48]
jmp 0x14005db43
mov qword [rsp + 0x38], r15
cmp dword [rsp + 0x6c], 0
je 0x14005e0a2
mov ebx, dword [rsp + 0x68]
movsxd rdi, dword [rbp - 0x50]
cmp edi, ebx
jge 0x14005e127
cmp r14d, r13d
jl 0x14005e061
lea eax, [r13 + r13]
mov r13d, eax
cmp eax, 8
mov eax, 8
cmovl r13d, eax
movsxd rdx, r13d
shl rdx, 3
mov rcx, r15
call fcn.140096e70
mov r15, rax
mov qword [rsp + 0x38], rax
lea rcx, [r12 + rdi]
movsxd rax, r14d
mov qword [r15 + rax*8], rcx
inc r14d
cmp r14d, r13d
jl 0x14005e09b
lea eax, [r13 + r13]
cmp eax, 8
mov ecx, 8
cmovl eax, ecx
movsxd rdx, eax
shl rdx, 3
mov rcx, r15
call fcn.140096e70
mov r15, rax
mov qword [rsp + 0x38], rax
sub ebx, edi
movsxd rcx, ebx
jmp 0x14005e11d
movsxd rbx, dword [rsp + 0x68]
mov edi, dword [rbp - 0x50]
cmp ebx, edi
jge 0x14005e127
cmp r14d, r13d
jl 0x14005e0de
lea eax, [r13 + r13]
mov r13d, eax
cmp eax, 8
mov eax, 8
cmovl r13d, eax
movsxd rdx, r13d
shl rdx, 3
mov rcx, r15
call fcn.140096e70
mov r15, rax
mov qword [rsp + 0x38], rax
lea rcx, [r12 + rbx]
movsxd rax, r14d
mov qword [r15 + rax*8], rcx
inc r14d
cmp r14d, r13d
jl 0x14005e118
lea eax, [r13 + r13]
cmp eax, 8
mov ecx, 8
cmovl eax, ecx
movsxd rdx, eax
shl rdx, 3
mov rcx, r15
call fcn.140096e70
mov r15, rax
mov qword [rsp + 0x38], rax
sub edi, ebx
movsxd rcx, edi
movsxd rax, r14d
inc r14d
mov qword [r15 + rax*8], rcx
cmp qword [rbp + 0xc8], 0
jne 0x14005e190
mov rbx, qword [rbp - 0x48]
test rbx, rbx
je 0x14005e190
lea r12, vtable.CBufferT_int_.0
mov qword [rbx + 0x50], r12
mov rcx, qword [rbx + 0x68]
test rcx, rcx
je 0x14005e153
call fcn.140096684
lea rdi, vtable.CBufferRefT_int_.0
mov qword [rbx + 0x50], rdi
mov qword [rbx + 0x28], r12
mov rcx, qword [rbx + 0x40]
test rcx, rcx
je 0x14005e170
call fcn.140096684
mov qword [rbx + 0x28], rdi
mov qword [rbx], r12
mov rcx, qword [rbx + 0x18]
test rcx, rcx
je 0x14005e185
call fcn.140096684
mov qword [rbx], rdi
mov rcx, rbx
call fcn.140095520
mov r15, qword [rbp + 0xa8]
xor r12d, r12d
mov dword [r15], r12d
test r14d, r14d
jle 0x14005e1ce
mov rcx, qword [rsp + 0x38]
add rcx, 8
lea edx, [r14 - 1]
shr edx, 1
inc edx
nop word [rax + rax]
mov eax, dword [rcx]
add dword [r15], eax
add rcx, 0x10
dec rdx
jne 0x14005e1c0
mov edi, r12d
mov r13, r12
mov ebx, dword [r15]
inc ebx
test ebx, ebx
jle 0x14005e222
mov edi, 8
cmp ebx, edi
jle 0x14005e204
mov edi, reloc.WS2_32.dll_recv
cmp ebx, edi
jle 0x14005e204
lea edi, [rbx + 0xb]
mov eax, edi
and eax, 0x80000007
jge 0x14005e202
dec eax
or eax, 0xfffffff8
inc eax
sub edi, eax
movsxd rdx, edi
xor ecx, ecx
call fcn.140096e70
mov r13, rax
test ebx, ebx
jle 0x14005e222
movsxd r8, ebx
xor edx, edx
mov rcx, rax
call fcn.140096590
cmp dword [rsp + 0x6c], r12d
je 0x14005e2bf
lea eax, [r14 - 2]
movsxd r15, eax
test eax, eax
js 0x14005e359
mov rsi, qword [rsp + 0x38]
mov eax, dword [rsi + r15*8 + 8]
mov dword [rbp + 0x80], eax
mov rcx, qword [rsi + r15*8]
mov qword [rbp - 0x58], rcx
mov ebx, edi
cmp edi, 8
mov ecx, 8
cmovl ebx, ecx
lea r14d, [rax + r12]
cmp r14d, ebx
jle 0x14005e287
add ebx, ebx
cmp r14d, ebx
jle 0x14005e287
lea ebx, [r14 + 0xb]
mov eax, ebx
and eax, 0x80000007
jge 0x14005e285
dec eax
or eax, 0xfffffff8
inc eax
sub ebx, eax
cmp ebx, edi
jle 0x14005e29b
movsxd rdx, ebx
mov rcx, r13
call fcn.140096e70
mov r13, rax
mov edi, ebx
movsxd r8, dword [rbp + 0x80]
movsxd rcx, r12d
add rcx, r13
mov rdx, qword [rbp - 0x58]
call fcn.140095540
mov r12d, r14d
sub r15, 2
jns 0x14005e241
jmp 0x14005e355
test r14d, r14d
jle 0x14005e360
mov r15, qword [rsp + 0x38]
lea ecx, [r14 - 1]
shr ecx, 1
inc ecx
mov qword [rbp - 0x48], rcx
mov esi, 8
nop
mov eax, dword [r15 + 8]
mov dword [rbp + 0x80], eax
mov rcx, qword [r15]
mov qword [rbp - 0x58], rcx
mov ebx, edi
cmp edi, esi
cmovl ebx, esi
lea r14d, [rax + r12]
cmp r14d, ebx
jle 0x14005e31e
add ebx, ebx
cmp r14d, ebx
jle 0x14005e31e
lea ebx, [r14 + 0xb]
mov eax, ebx
and eax, 0x80000007
jge 0x14005e31c
dec eax
or eax, 0xfffffff8
inc eax
sub ebx, eax
cmp ebx, edi
jle 0x14005e332
movsxd rdx, ebx
mov rcx, r13
call fcn.140096e70
mov r13, rax
mov edi, ebx
movsxd r8, dword [rbp + 0x80]
movsxd rcx, r12d
add rcx, r13
mov rdx, qword [rbp - 0x58]
call fcn.140095540
mov r12d, r14d
add r15, 0x10
dec qword [rbp - 0x48]
jne 0x14005e2e0
mov rsi, qword [rbp - 0x30]
mov r15, qword [rbp + 0xa8]
mov eax, edi
cmp edi, 8
mov r14d, 8
cmovl eax, r14d
lea ecx, [r12 + 1]
cmp ecx, eax
jle 0x14005e396
add eax, eax
cmp ecx, eax
jle 0x14005e396
lea eax, [r12 + 0xc]
mov ecx, eax
and ecx, 0x80000007
jge 0x14005e394
dec ecx
or ecx, 0xfffffff8
inc ecx
sub eax, ecx
cmp eax, edi
jle 0x14005e3a8
movsxd rdx, eax
mov rcx, r13
call fcn.140096e70
mov r13, rax
movsxd rax, r12d
mov byte [rax + r13], 0
mov edi, dword [r15]
mov ecx, dword [rsi + 0x20]
mov ebx, ecx
cmp ecx, r14d
cmovl ebx, r14d
mov edx, dword [rsi + 0x10]
lea eax, [rdx + 4]
cmp eax, ebx
jle 0x14005e3e4
add ebx, ebx
cmp eax, ebx
jle 0x14005e3e4
lea ebx, [rdx + 0xf]
mov eax, ebx
and eax, 0x80000007
jge 0x14005e3e2
dec eax
or eax, 0xfffffff8
inc eax
sub ebx, eax
cmp ebx, ecx
jle 0x14005e403
movsxd rdx, ebx
shl rdx, 2
mov rcx, qword [rsi + 0x18]
call fcn.140096e70
mov qword [rsi + 0x18], rax
mov qword [rsi + 8], rax
mov dword [rsi + 0x20], ebx
movsxd rcx, dword [rsi + 0x10]
mov rax, qword [rsi + 0x18]
mov dword [rax + rcx*4], edi
inc dword [rsi + 0x10]
movsxd rcx, dword [rsi + 0x10]
mov rax, qword [rsi + 0x18]
mov dword [rax + rcx*4], 0
mov ecx, dword [rsi + 0x20]
mov ebx, ecx
cmp ecx, r14d
cmovl ebx, r14d
mov edx, dword [rsi + 0x10]
lea eax, [rdx + 1]
cmp eax, ebx
jle 0x14005e451
add ebx, ebx
cmp eax, ebx
jle 0x14005e451
lea ebx, [rdx + 0xc]
mov eax, ebx
and eax, 0x80000007
jge 0x14005e44f
dec eax
or eax, 0xfffffff8
inc eax
sub ebx, eax
cmp ebx, ecx
jle 0x14005e470
movsxd rdx, ebx
shl rdx, 2
mov rcx, qword [rsi + 0x18]
call fcn.140096e70
mov qword [rsi + 0x18], rax
mov qword [rsi + 8], rax
mov dword [rsi + 0x20], ebx
movsxd rcx, dword [rsi + 0x10]
mov rax, qword [rsi + 0x18]
mov edx, dword [rsp + 0x70]
mov dword [rax + rcx*4], edx
inc dword [rsi + 0x10]
mov ecx, dword [rsi + 0x10]
mov edx, dword [rsi + 0x20]
lea eax, [rcx + 1]
mov ebx, edx
cmp dword [rsp + 0x6c], 0
je 0x14005e565
mov edi, dword [r15]
sub edi, dword [rsp + 0x30]
cmp edx, r14d
cmovl ebx, r14d
cmp eax, ebx
jle 0x14005e4ac
add ebx, ebx
lea eax, [rcx + 1]
cmp eax, ebx
jle 0x14005e4cb
mov ebx, dword [rsi + 0x10]
add ebx, 0xc
mov eax, ebx
and eax, 0x80000007
jge 0x14005e4c9
dec eax
or eax, 0xfffffff8
inc eax
sub ebx, eax
cmp ebx, edx
jle 0x14005e4ea
movsxd rdx, ebx
shl rdx, 2
mov rcx, qword [rsi + 0x18]
call fcn.140096e70
mov qword [rsi + 0x18], rax
mov qword [rsi + 8], rax
mov dword [rsi + 0x20], ebx
movsxd rcx, dword [rsi + 0x10]
mov rax, qword [rsi + 0x18]
mov dword [rax + rcx*4], edi
inc dword [rsi + 0x10]
mov edx, dword [rsi + 0x10]
mov edi, dword [r15]
sub edi, dword [rsp + 0x74]
mov ecx, dword [rsi + 0x20]
mov ebx, ecx
cmp ecx, r14d
cmovl ebx, r14d
lea eax, [rdx + 1]
cmp eax, ebx
jle 0x14005e517
add ebx, ebx
lea eax, [rdx + 1]
cmp eax, ebx
jle 0x14005e536
mov ebx, dword [rsi + 0x10]
add ebx, 0xc
mov eax, ebx
and eax, 0x80000007
jge 0x14005e534
dec eax
or eax, 0xfffffff8
inc eax
sub ebx, eax
cmp ebx, ecx
jle 0x14005e555
movsxd rdx, ebx
shl rdx, 2
mov rcx, qword [rsi + 0x18]
call fcn.140096e70
mov qword [rsi + 0x18], rax
mov qword [rsi + 8], rax
mov dword [rsi + 0x20], ebx
movsxd rcx, dword [rsi + 0x10]
mov rax, qword [rsi + 0x18]
mov dword [rax + rcx*4], edi
jmp 0x14005e629
cmp edx, r14d
cmovl ebx, r14d
cmp eax, ebx
jle 0x14005e572
add ebx, ebx
lea eax, [rcx + 1]
cmp eax, ebx
jle 0x14005e591
mov ebx, dword [rsi + 0x10]
add ebx, 0xc
mov eax, ebx
and eax, 0x80000007
jge 0x14005e58f
dec eax
or eax, 0xfffffff8
inc eax
sub ebx, eax
cmp ebx, edx
jle 0x14005e5b0
movsxd rdx, ebx
shl rdx, 2
mov rcx, qword [rsi + 0x18]
call fcn.140096e70
mov qword [rsi + 0x18], rax
mov qword [rsi + 8], rax
mov dword [rsi + 0x20], ebx
movsxd rcx, dword [rsi + 0x10]
mov rax, qword [rsi + 0x18]
mov r8d, dword [rsp + 0x74]
mov dword [rax + rcx*4], r8d
inc dword [rsi + 0x10]
mov edx, dword [rsi + 0x10]
mov ecx, dword [rsi + 0x20]
mov ebx, ecx
cmp ecx, r14d
cmovl ebx, r14d
lea eax, [rdx + 1]
cmp eax, ebx
jle 0x14005e5dc
add ebx, ebx
lea eax, [rdx + 1]
cmp eax, ebx
jle 0x14005e5fb
mov ebx, dword [rsi + 0x10]
add ebx, 0xc
mov eax, ebx
and eax, 0x80000007
jge 0x14005e5f9
dec eax
or eax, 0xfffffff8
inc eax
sub ebx, eax
cmp ebx, ecx
jle 0x14005e61a
movsxd rdx, ebx
shl rdx, 2
mov rcx, qword [rsi + 0x18]
call fcn.140096e70
mov qword [rsi + 0x18], rax
mov qword [rsi + 8], rax
mov dword [rsi + 0x20], ebx
movsxd rcx, dword [rsi + 0x10]
mov rax, qword [rsi + 0x18]
mov edx, dword [rsp + 0x30]
mov dword [rax + rcx*4], edx
inc dword [rsi + 0x10]
mov rax, qword [rsp + 0x38]
test rax, rax
je 0x14005e63f
mov rcx, rax
call fcn.140096684
nop
mov rcx, qword [rbp - 0x10]
test rcx, rcx
je 0x14005e64e
call fcn.140096684
nop
mov rcx, qword [rsp + 0x58]
test rcx, rcx
je 0x14005e65d
call fcn.140096684
mov rax, r13
add rsp, 0x138
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbx
pop rbp
ret