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

Disassembly:
mov rax, rsp
mov qword [rax + 0x20], r9
mov qword [rax + 8], rcx
push rbx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x108
movaps xmmword [rax - 0x58], xmm6
movaps xmmword [rax - 0x68], xmm7
xor r13d, r13d
mov rbx, r9
mov r12, r8
mov rsi, rcx
mov qword [rsp + 0x30], r13
mov r14, r13
movaps xmmword [rax - 0x78], xmm8
movaps xmmword [rax - 0x88], xmm9
movaps xmmword [rax - 0x98], xmm13
movaps xmmword [rax - 0xa8], xmm15
cmp edx, r13d
je 0x180006004
mov dil, dl
and dil, 2
mov byte [rsp + 0x21], dil
je 0x180005ff3
add rbx, 8
mov qword [rax + 0x20], rbx
mov rax, qword [rbx - 8]
mov qword [rsp + 0x30], rax
mov r15b, byte [rsp + 0x21]
and dl, 1
mov dword [rsp + 0x158], edx
jmp 0x180006014
mov byte [rsp + 0x158], r13b
mov r15b, r13b
mov byte [rsp + 0x21], r13b
movsx eax, byte [r8]
cmp eax, r13d
je 0x180006e8d
movsd xmm15, qword [0x18006a5b0]
xorpd xmm8, xmm8
movsd xmm9, qword [0x18006a530]
movsd xmm7, qword [0x18006a528]
movsd xmm13, qword [0x18006a610]
cmp eax, 0x25
je 0x180006085
mov r14, r12
inc r12
movsx ebx, byte [r12]
cmp ebx, 0x25
je 0x180006063
cmp ebx, r13d
jne 0x180006051
mov r8d, r12d
mov rdx, r14
mov rcx, rsi
sub r8d, r14d
call fcn.180006fd4
cmp ebx, r13d
je 0x180006e8d
mov rbx, qword [rsp + 0x168]
inc r12
mov qword [rsp + 0x160], r12
movsx ecx, byte [r12]
cmp ecx, r13d
je 0x180006e78
xor dil, dil
xor sil, sil
mov byte [rsp + 0x25], r13b
mov byte [rsp + 0x20], sil
mov bpl, r13b
mov edx, ecx
sub edx, 0x20
je 0x1800060ee
sub edx, 1
je 0x1800060e9
sub edx, 2
je 0x1800060e4
sub edx, 8
je 0x1800060df
sub edx, 2
je 0x1800060d8
cmp edx, 3
jne 0x1800060fd
mov byte [rsp + 0x25], 1
jmp 0x1800060f1
mov byte [rsp + 0x20], 1
jmp 0x1800060f1
mov sil, 1
jmp 0x1800060f1
mov r13b, 1
jmp 0x1800060f1
mov bpl, 1
jmp 0x1800060f1
mov dil, 1
inc r12
movsx ecx, byte [r12]
test ecx, ecx
jne 0x1800060b1
and dword [rsp + 0x28], 0
mov qword [rsp + 0x160], r12
mov byte [rsp + 0x26], r13b
mov byte [rsp + 0x23], bpl
cmp ecx, 0x2a
jne 0x180006157
test r15b, r15b
je 0x18000612a
mov rcx, qword [rsp + 0x30]
call fcn.180005f48
jmp 0x180006138
mov eax, dword [rbx]
add rbx, 8
mov qword [rsp + 0x168], rbx
mov qword [rsp + 0x28], rax
test eax, eax
jns 0x18000614d
neg eax
mov byte [rsp + 0x20], 1
mov qword [rsp + 0x28], rax
inc r12
movsx ecx, byte [r12]
jmp 0x180006185
cmp ecx, 0x30
jl 0x18000618d
mov rbp, qword [rsp + 0x28]
cmp ecx, 0x39
jg 0x18000617b
inc r12
lea eax, [rbp + rbp*4]
lea ebp, [rcx + rax*2 - 0x30]
movsx ecx, byte [r12]
cmp ecx, 0x30
jge 0x180006161
mov qword [rsp + 0x28], rbp
mov bpl, byte [rsp + 0x23]
mov qword [rsp + 0x160], r12
cmp ecx, 0x2e
jne 0x18000620e
inc r12
xor r15d, r15d
movsx ecx, byte [r12]
mov qword [rsp + 0x160], r12
cmp ecx, 0x2a
jne 0x180006207
cmp byte [rsp + 0x21], r15b
je 0x1800061c0
mov rcx, qword [rsp + 0x30]
call fcn.180005f48
mov r15, rax
jmp 0x1800061cf
mov r15d, dword [rbx]
add rbx, 8
mov qword [rsp + 0x168], rbx
test r15d, r15d
jns 0x1800061d7
neg r15d
inc r12
mov qword [rsp + 0x160], r12
movsx ecx, byte [r12]
jmp 0x180006212
cmp ecx, 0x39
jg 0x180006212
inc r12
lea eax, [r15 + r15*4]
lea r15d, [rcx + rax*2 - 0x30]
movsx ecx, byte [r12]
mov qword [rsp + 0x160], r12
cmp ecx, 0x30
jge 0x1800061e9
jmp 0x180006212
or r15d, 0xffffffff
cmp ecx, 0x6c
jne 0x180006249
inc r12
mov r10b, 1
movsx ecx, byte [r12]
mov qword [rsp + 0x160], r12
cmp ecx, 0x6c
jne 0x180006244
inc r12
mov r9b, r10b
movsx ecx, byte [r12]
mov qword [rsp + 0x160], r12
jmp 0x18000624f
xor r9b, r9b
jmp 0x18000624f
xor r9b, r9b
xor r10b, r10b
lea rax, [0x180064ca0]
xor r12b, r12b
xor r8d, r8d
mov r11, rax
mov qword [rsp + 0x40], rax
mov rdx, rax
mov byte [rsp + 0x24], r12b
movsx eax, byte [rdx]
cmp ecx, eax
je 0x180006288
lea rax, [0x180064d2a]
add rdx, 6
inc r8
cmp rdx, rax
jl 0x18000626c
jmp 0x1800062ba
cmp byte [rsp + 0x158], 0
lea rax, [r8 + r8*2]
lea rcx, [0x180064ca0]
lea r11, [rcx + rax*2]
mov qword [rsp + 0x40], r11
jne 0x1800062b1
test byte [r11 + 2], 2
jne 0x180006e8d
mov r12b, byte [r11 + 3]
mov byte [rsp + 0x24], r12b
xor r8d, r8d
movzx ecx, r12b
cmp ecx, 0xb
mov qword [rsp + 0x38], r8
jg 0x180006971
cmp ecx, 0xa
jge 0x18000699f
cmp ecx, 1
je 0x180006aed
jle 0x180006e8d
cmp ecx, 4
jle 0x180006505
cmp ecx, 5
je 0x1800064d8
jle 0x180006e8d
cmp ecx, 7
movsxd rbx, r15d
jle 0x18000640c
cmp ecx, 8
je 0x1800063f7
cmp ecx, 9
jne 0x180006e8d
xor r13d, r13d
cmp byte [rsp + 0x21], r13b
je 0x18000635a
mov r8, qword [rsp + 0x30]
movsxd rdx, dword [r8 + 4]
cmp dword [r8], edx
jle 0x180006355
mov rax, qword [r8 + 8]
mov rcx, qword [rax + rdx*8]
lea eax, [rdx + 1]
mov dl, 1
mov dword [r8 + 4], eax
call fcn.18001e60c
cmp rax, r13
je 0x180006355
movsx eax, byte [rax]
jmp 0x180006371
mov eax, r13d
jmp 0x180006371
mov r14, qword [rsp + 0x168]
mov eax, dword [r14]
add r14, 8
mov qword [rsp + 0x168], r14
cmp r15d, r13d
mov byte [rsp + 0x50], al
jl 0x180006392
cmp rbx, 1
jle 0x180006398
lea r8, [rbx - 1]
lea rcx, [rsp + 0x51]
mov dl, al
call fcn.180062a94
jmp 0x180006398
mov r15d, 1
lea r14, [rsp + 0x50]
mov bl, byte [rsp + 0x20]
mov rsi, qword [rsp + 0x150]
mov r10, qword [rsp + 0x28]
sub r10d, r15d
cmp r10d, r13d
mov qword [rsp + 0x28], r10
jle 0x180006de1
cmp bl, r13b
jne 0x180006de1
mov eax, dword [rsi + 0x18]
mov r8d, r10d
lea ecx, [r10 + rax]
cmp ecx, dword [rsi + 0x1c]
jl 0x180006ddc
mov edx, r10d
mov rcx, rsi
call fcn.180006ec4
cmp eax, r13d
mov r8d, eax
jle 0x180006de1
jmp 0x180006ddc
mov byte [rsp + 0x50], 0x25
lea r14, [rsp + 0x50]
mov r15d, 1
xor r13d, r13d
jmp 0x18000639d
mov dil, byte [rsp + 0x21]
xor r13d, r13d
cmp dil, r13b
je 0x180006445
mov r8, qword [rsp + 0x30]
movsxd rdx, dword [r8 + 4]
cmp dword [r8], edx
jle 0x180006462
mov rax, qword [r8 + 8]
mov rcx, qword [rax + rdx*8]
lea eax, [rdx + 1]
mov dl, 1
mov dword [r8 + 4], eax
call fcn.18001e60c
mov r8, r13
mov r14, rax
jmp 0x18000645d
mov r14, qword [rsp + 0x168]
add r14, 8
mov qword [rsp + 0x168], r14
mov r14, qword [r14 - 8]
cmp r14, r13
jne 0x18000646b
lea r14, [0x180068af4]
jmp 0x18000647d
cmp r12b, 7
jne 0x18000647d
cmp dil, r13b
cmove r8, r14
mov qword [rsp + 0x38], r8
cmp r15d, r13d
jl 0x1800064ab
cmp rbx, r13
mov r15d, r13d
mov rax, r13
jle 0x18000639d
cmp byte [rax + r14], r13b
je 0x18000639d
inc rax
inc r15d
cmp rax, rbx
jl 0x180006491
jmp 0x18000639d
mov rax, r14
cmp r14, r13
jne 0x1800064bb
mov r15d, r13d
jmp 0x18000639d
cmp byte [r14], r13b
je 0x1800064c8
inc rax
cmp byte [rax], r13b
jne 0x1800064c0
sub eax, r14d
and eax, 0x3fffffff
mov r15d, eax
jmp 0x18000639d
xor r13d, r13d
cmp byte [rsp + 0x21], r13b
jne 0x1800064fe
mov rax, qword [rsp + 0x150]
mov rcx, qword [rbx]
add rbx, 8
mov eax, dword [rax + 0x18]
mov qword [rsp + 0x168], rbx
mov dword [rcx], eax
mov dword [rsp + 0x28], r13d
jmp 0x1800064b3
cmp byte [rsp + 0x21], r8b
je 0x18000653b
mov r8, qword [rsp + 0x30]
movsxd rdx, dword [r8 + 4]
cmp dword [r8], edx
jg 0x180006521
movapd xmm6, xmm8
jmp 0x18000654b
mov rax, qword [r8 + 8]
mov rcx, qword [rax + rdx*8]
lea eax, [rdx + 1]
mov dword [r8 + 4], eax
call fcn.18001df3c
movapd xmm6, xmm0
jmp 0x18000654b
movsd xmm6, qword [rbx]
add rbx, 8
mov qword [rsp + 0x168], rbx
test r15d, r15d
mov eax, 6
cmovs r15d, eax
comisd xmm8, xmm6
jbe 0x180006567
xorpd xmm6, xmm15
mov cl, 0x2d
jmp 0x180006578
test sil, sil
je 0x180006570
mov cl, 0x2b
jmp 0x180006578
neg dil
sbb cl, cl
and cl, 0x20
mov byte [rsp + 0x22], cl
cmp r12b, 4
jne 0x18000658a
test r15d, r15d
jle 0x18000658a
dec r15d
movsd xmm3, qword [0x18006a5a8]
mov eax, r15d
test r15d, r15d
jle 0x1800065a8
mulsd xmm3, qword [0x18006a608]
dec eax
test eax, eax
jg 0x18000659a
cmp r12b, 2
jne 0x1800065b2
addsd xmm6, xmm3
movapd xmm0, xmm6
xor esi, esi
call fcn.180007a78
test eax, eax
je 0x1800065d1
lea r14, [0x180068adc]
lea r15d, [rsi + 3]
jmp 0x180006407
comisd xmm6, xmm8
jbe 0x1800066dc
comisd xmm6, xmmword [0x18006a600]
movapd xmm1, xmm9
mov edi, 0x15e
jb 0x180006611
cmp esi, edi
jg 0x180006611
mulsd xmm1, qword [0x18006a600]
add esi, 0x64
movapd xmm0, xmm1
mulsd xmm0, qword [0x18006a600]
comisd xmm6, xmm0
jae 0x1800065f0
movapd xmm0, xmm1
jmp 0x180006622
cmp esi, edi
jg 0x180006630
movapd xmm1, xmm0
add esi, 0x40
mulsd xmm0, qword [0x18006a5f8]
comisd xmm6, xmm0
jae 0x180006617
movapd xmm0, xmm1
jmp 0x180006641
cmp esi, edi
jg 0x18000664f
movapd xmm1, xmm0
add esi, 8
mulsd xmm0, qword [0x18006a5f0]
comisd xmm6, xmm0
jae 0x180006636
movapd xmm0, xmm1
jmp 0x18000665f
cmp esi, edi
jg 0x180006669
movapd xmm1, xmm0
inc esi
mulsd xmm0, xmm7
comisd xmm6, xmm0
jae 0x180006655
divsd xmm6, xmm1
jmp 0x18000667a
mulsd xmm6, qword [0x18006a5f0]
sub esi, 8
comisd xmm13, xmm6
ja 0x18000666f
jmp 0x180006689
mulsd xmm6, xmm7
dec esi
comisd xmm9, xmm6
ja 0x180006683
cmp esi, edi
jle 0x1800066dc
cmp cl, 0x2d
jne 0x1800066a2
lea r14, str._Inf
jmp 0x1800066b7
lea r14, str.Inf
lea rax, [0x180068af0]
cmp cl, 0x2b
cmovne r14, rax
xor r13d, r13d
mov rax, r14
cmp r14, r13
je 0x1800064b3
cmp byte [r14], r13b
je 0x1800064c8
inc rax
cmp byte [rax], r13b
jne 0x1800066cf
jmp 0x1800064c8
lea rdi, [rsp + 0x50]
cmp r12b, 2
je 0x1800066fb
addsd xmm6, xmm3
comisd xmm6, xmm7
jb 0x1800066fb
mulsd xmm6, qword [0x18006a608]
inc esi
cmp r12b, 4
jne 0x180006793
test r13b, r13b
sete r13b
cmp esi, 0xfffffffc
jl 0x18000678c
cmp esi, r15d
jg 0x18000678c
sub r15d, esi
mov byte [rsp + 0x24], 2
mov ebx, esi
mov rcx, qword [rsp + 0x28]
xor eax, eax
test ebx, ebx
cmovg eax, ebx
add eax, r15d
add ecx, eax
cmp ecx, 0x37
jle 0x18000674f
add ecx, 0xf
call fcn.1800056f8
mov qword [rsp + 0x38], rax
mov rdi, rax
test rax, rax
je 0x180006e66
mov r10b, byte [rsp + 0x22]
movzx ecx, bpl
test r15d, r15d
setg r12b
lea edx, [rcx + rcx*4]
mov cl, byte [rsp + 0x23]
or r12b, cl
mov r14, rdi
lea ebp, [rdx + rdx + 0x10]
or r12b, byte [rsp + 0x26]
test r10b, r10b
je 0x180006780
mov byte [rdi], r10b
inc rdi
test ebx, ebx
jns 0x1800067a0
mov byte [rdi], 0x30
inc rdi
jmp 0x1800067ca
mov byte [rsp + 0x24], 3
jmp 0x18000679c
mov r13b, bpl
cmp r12b, 3
jne 0x18000671e
xor ebx, ebx
jmp 0x180006720
test ebp, ebp
jg 0x1800067a8
mov al, 0x30
jmp 0x1800067c0
cvttsd2si eax, xmm6
dec ebp
movd xmm0, eax
add al, 0x30
cvtdq2pd xmm0, xmm0
subsd xmm6, xmm0
mulsd xmm6, xmm7
mov byte [rdi], al
inc rdi
sub ebx, 1
jns 0x1800067a0
test r12b, r12b
je 0x1800067d5
mov byte [rdi], 0x2e
inc rdi
add ebx, 1
jns 0x180006822
neg ebx
mov dl, 0x30
mov rcx, rdi
mov r8, rbx
call fcn.180062a94
mov r10b, byte [rsp + 0x22]
mov cl, byte [rsp + 0x23]
add rdi, rbx
sub r15d, ebx
jmp 0x180006822
dec r15d
test ebp, ebp
jg 0x180006805
mov al, 0x30
jmp 0x18000681d
cvttsd2si eax, xmm6
dec ebp
movd xmm0, eax
add al, 0x30
cvtdq2pd xmm0, xmm0
subsd xmm6, xmm0
mulsd xmm6, xmm7
mov byte [rdi], al
inc rdi
test r15d, r15d
jg 0x1800067fa
test r13b, r13b
je 0x180006866
xor r13d, r13d
cmp r12b, r13b
je 0x180006869
lea rax, [rdi - 1]
jmp 0x180006843
mov rdi, rax
mov byte [rax], r13b
dec rax
cmp byte [rax], 0x30
je 0x18000683a
lea rax, [rdi - 1]
cmp byte [rax], 0x2e
jne 0x180006869
cmp cl, r13b
je 0x18000685e
mov byte [rdi], 0x30
inc rdi
jmp 0x180006869
mov rdi, rax
mov byte [rax], r13b
jmp 0x180006869
xor r13d, r13d
cmp byte [rsp + 0x24], 3
jne 0x1800068f4
cmp esi, r13d
mov r11, qword [rsp + 0x40]
lea rcx, str.0123456789ABCDEF0123456789abcdef
movzx eax, byte [r11 + 4]
mov al, byte [rax + rcx]
mov byte [rdi], al
jge 0x18000689b
mov byte [rdi + 1], 0x2d
add rdi, 2
neg esi
jmp 0x1800068a3
mov byte [rdi + 1], 0x2b
add rdi, 2
cmp esi, 0x64
jl 0x1800068c6
mov eax, 0x51eb851f
imul esi
sar edx, 5
mov eax, edx
shr eax, 0x1f
add edx, eax
lea eax, [rdx + 0x30]
imul edx, edx, 0xffffff9c
mov byte [rdi], al
inc rdi
add esi, edx
mov eax, 0x66666667
imul esi
sar edx, 2
mov eax, edx
shr eax, 0x1f
add edx, eax
lea eax, [rdx + 0x30]
mov byte [rdi], al
mov al, dl
shl dl, 2
add al, dl
add al, al
sub sil, al
add sil, 0x30
add rdi, 2
mov byte [rdi - 1], sil
mov bl, byte [rsp + 0x20]
mov byte [rdi], r13b
sub edi, r14d
mov r15d, edi
cmp byte [rsp + 0x25], r13b
je 0x1800063a1
cmp bl, r13b
jne 0x1800063a1
mov rax, qword [rsp + 0x28]
cmp edi, eax
jge 0x1800063a1
mov edx, eax
mov r15, rax
sub edx, edi
movsxd rcx, r15d
movsxd r8, edx
cmp rcx, r8
jl 0x18000694a
mov r9, r14
sub r9, r8
mov al, byte [rcx + r9]
mov byte [rcx + r14], al
dec rcx
cmp rcx, r8
jge 0x18000693a
cmp r10b, r13b
mov eax, r13d
setne al
movsxd rcx, eax
cmp edx, r13d
je 0x1800063a1
mov r8d, edx
add rcx, r14
mov dl, 0x30
call fcn.180062a94
jmp 0x1800063a1
sub ecx, 0xc
je 0x180006d9d
sub ecx, 1
je 0x180006cee
sub ecx, 1
je 0x180006ae7
sub ecx, 1
je 0x18000699f
cmp ecx, 1
jne 0x180006e8d
jmp 0x180006aed
mov ebp, 0x27
cmp r12b, 0xf
lea eax, [rbp - 5]
cmove ebp, eax
xor r13d, r13d
cmp byte [rsp + 0x21], r13b
je 0x1800069e6
mov r8, qword [rsp + 0x30]
movsxd rdx, dword [r8 + 4]
cmp dword [r8], edx
jg 0x1800069cb
mov rdi, r13
jmp 0x1800069f5
mov rax, qword [r8 + 8]
mov rcx, qword [rax + rdx*8]
lea eax, [rdx + 1]
mov dl, 1
mov dword [r8 + 4], eax
call fcn.18001e60c
mov rdi, rax
jmp 0x1800069f5
mov rdi, qword [rbx]
add rbx, 8
mov qword [rsp + 0x168], rbx
cmp rdi, r13
mov ecx, r13d
sete cl
cmp ecx, r13d
je 0x180006a19
lea rax, str.NULL
lea rdi, str._NULL_
cmp r12b, 0xb
cmove rdi, rax
mov edx, r13d
mov esi, r13d
cmp r15d, r13d
je 0x180006a3e
mov rax, rdi
cmp byte [rax], r13b
je 0x180006a3e
cmp byte [rax], bpl
jne 0x180006a33
inc edx
inc esi
inc rax
sub r15d, 1
jne 0x180006a27
cmp ecx, r13d
jne 0x180006a4e
mov ebx, 1
cmp r12b, 0xb
je 0x180006a51
mov ebx, r13d
lea eax, [rsi + rbx*2]
lea ecx, [rdx + rax + 1]
cmp ecx, 0x46
jle 0x180006a84
call fcn.1800056f8
mov qword [rsp + 0x38], rax
mov r14, rax
cmp rax, r13
jne 0x180006a89
mov rax, qword [rsp + 0x150]
mov byte [rax + 0x25], 1
mov dword [rax + 0x1c], r13d
jmp 0x180006e8d
lea r14, [rsp + 0x50]
mov ecx, r13d
mov rax, r13
cmp ebx, r13d
je 0x180006a9f
mov ecx, 1
mov byte [r14], bpl
mov rax, rcx
movsxd r9, esi
mov rdx, r13
cmp r9, r13
jle 0x180006acd
mov r8b, byte [rdx + rdi]
inc ecx
mov byte [rax + r14], r8b
inc rax
cmp r8b, bpl
jne 0x180006ac5
mov byte [rax + r14], r8b
inc ecx
inc rax
inc rdx
cmp rdx, r9
jl 0x180006aaa
cmp ebx, r13d
je 0x180006adb
mov byte [rax + r14], bpl
inc ecx
inc rax
mov byte [rax + r14], r13b
mov r15d, ecx
jmp 0x18000639d
mov r9b, 1
xor r10b, r10b
test byte [r11 + 2], 1
je 0x180006b5c
cmp byte [rsp + 0x21], r8b
je 0x180006b0a
mov rcx, qword [rsp + 0x30]
call fcn.180005f48
mov rbx, rax
jmp 0x180006b25
add rbx, 8
mov qword [rsp + 0x168], rbx
test r9b, r9b
je 0x180006b21
mov rbx, qword [rbx - 8]
jmp 0x180006b25
movsxd rbx, dword [rbx - 8]
test rbx, rbx
jns 0x180006b46
movabs rax, 0x8000000000000000
cmp rbx, rax
jne 0x180006b3e
mov rbx, rax
jmp 0x180006b41
neg rbx
mov dil, 0x2d
jmp 0x180006b8f
test sil, sil
je 0x180006b50
mov dil, 0x2b
jmp 0x180006b8f
neg dil
sbb dil, dil
and dil, 0x20
jmp 0x180006b8f
cmp byte [rsp + 0x21], r8b
je 0x180006b72
mov rcx, qword [rsp + 0x30]
call fcn.180005f48
mov rbx, rax
jmp 0x180006b8c
add rbx, 8
mov qword [rsp + 0x168], rbx
test r9b, r9b
je 0x180006b89
mov rbx, qword [rbx - 8]
jmp 0x180006b8c
mov ebx, dword [rbx - 8]
xor dil, dil
mov rax, rbx
neg rax
sbb bpl, bpl
and bpl, r13b
xor r13d, r13d
cmp byte [rsp + 0x25], r13b
je 0x180006bbc
mov rcx, qword [rsp + 0x28]
cmp dil, r13b
mov eax, r13d
setne al
sub ecx, eax
cmp r15d, ecx
cmovl r15d, ecx
cmp r15d, 0x3c
jge 0x180006bce
mov esi, 0x46
lea r9, [rsp + 0x50]
jmp 0x180006bea
lea esi, [r15 + 0xa]
mov ecx, esi
call fcn.1800056f8
mov qword [rsp + 0x38], rax
mov r9, rax
cmp rax, r13
je 0x180006a6f
lea eax, [rsi - 1]
movsxd r14, eax
add r14, r9
cmp r12b, 0x10
jne 0x180006c5a
movabs r10, 0xcccccccccccccccd
mov r8d, ebx
mov rax, r10
mul rbx
mov rcx, rdx
shr rcx, 3
lea eax, [rcx + rcx*4]
add eax, eax
sub r8d, eax
cmp r8d, 4
jge 0x180006c3b
mov rax, r10
mul rcx
shr rdx, 3
lea rax, [rdx + rdx*4]
add rax, rax
sub rcx, rax
cmp rcx, 1
jne 0x180006c3e
mov r8d, r13d
lea rdx, str.thstndrd
movsxd rcx, r8d
sub r14, 2
mov al, byte [rdx + rcx*2 + 1]
mov byte [r14 + 1], al
mov al, byte [rdx + rcx*2]
mov byte [r14], al
mov r11, qword [rsp + 0x40]
lea rax, str.0123456789ABCDEF0123456789abcdef
movzx ecx, byte [r11 + 4]
movzx r8d, byte [r11 + 1]
add rcx, rax
xor edx, edx
mov rax, rbx
dec r14
div r8
mov rbx, rax
mov al, byte [rdx + rcx]
mov byte [r14], al
cmp rbx, r13
ja 0x180006c73
mov eax, r14d
sub eax, r9d
sub eax, esi
lea ecx, [rax + r15 + 1]
jmp 0x180006ca4
dec r14
dec ecx
mov byte [r14], 0x30
cmp ecx, r13d
jg 0x180006c9b
cmp dil, r13b
je 0x180006cb4
dec r14
mov byte [r14], dil
cmp bpl, r13b
je 0x180006ce1
mov al, byte [r11 + 5]
cmp al, r13b
je 0x180006ce1
lea rcx, [0x180064c48]
movzx eax, al
add rax, rcx
jmp 0x180006cda
dec r14
inc rax
mov byte [r14], cl
mov cl, byte [rax]
cmp cl, r13b
jne 0x180006cd1
sub r9d, r14d
lea r15d, [r9 + rsi - 1]
jmp 0x18000639d
mov rdi, qword [rbx]
add rbx, 0x10
xor r13d, r13d
mov qword [rsp + 0x168], rbx
movsxd rbx, dword [rbx - 8]
imul rbx, rbx, 0x78
mov rdx, qword [rbx + rdi + 0x10]
cmp rdx, r13
je 0x180006d53
mov rax, rdx
cmp byte [rdx], r13b
je 0x180006d22
inc rax
cmp byte [rax], r13b
jne 0x180006d1a
mov rsi, qword [rsp + 0x150]
sub eax, edx
and eax, 0x3fffffff
mov rcx, rsi
mov r8d, eax
call fcn.180006fd4
lea rdx, [0x180068b08]
mov r8d, 1
mov rcx, rsi
call fcn.180006fd4
jmp 0x180006d5b
mov rsi, qword [rsp + 0x150]
mov rdx, qword [rbx + rdi + 0x18]
mov rax, rdx
cmp rdx, r13
jne 0x180006d6d
mov eax, r13d
jmp 0x180006d81
cmp byte [rdx], r13b
je 0x180006d7a
inc rax
cmp byte [rax], r13b
jne 0x180006d72
sub eax, edx
and eax, 0x3fffffff
mov r8d, eax
mov rcx, rsi
call fcn.180006fd4
mov bl, byte [rsp + 0x20]
mov dword [rsp + 0x28], r13d
mov r15d, r13d
jmp 0x1800063a9
mov rdx, qword [rbx]
mov rsi, qword [rsp + 0x150]
add rbx, 8
xor r13d, r13d
mov qword [rsp + 0x168], rbx
cmp rdx, r13
je 0x180006d8c
mov r8d, dword [rdx + 8]
cmp r8d, r13d
je 0x180006d8c
mov rdx, qword [rdx]
jmp 0x180006d84
movsxd rdx, dword [rsi + 0x18]
mov rcx, qword [rsi + 0x10]
dec r8d
mov byte [rdx + rcx], 0x20
inc dword [rsi + 0x18]
cmp r8d, r13d
jg 0x180006dca
mov r8d, r15d
mov rdx, r14
mov rcx, rsi
call fcn.180006fd4
mov rdx, qword [rsp + 0x28]
cmp edx, r13d
jle 0x180006e30
cmp bl, r13b
je 0x180006e30
mov eax, dword [rsi + 0x18]
lea ecx, [rdx + rax]
cmp ecx, dword [rsi + 0x1c]
jl 0x180006e2b
mov rcx, rsi
call fcn.180006ec4
cmp eax, r13d
mov edx, eax
jle 0x180006e30
jmp 0x180006e2b
movsxd rcx, dword [rsi + 0x18]
mov rax, qword [rsi + 0x10]
dec edx
mov byte [rcx + rax], 0x20
inc dword [rsi + 0x18]
cmp edx, r13d
jg 0x180006e1a
mov rcx, qword [rsp + 0x38]
cmp rcx, r13
je 0x180006e3f
call fcn.1800059e4
mov r12, qword [rsp + 0x160]
inc r12
movsx eax, byte [r12]
cmp eax, r13d
je 0x180006e8d
mov rbx, qword [rsp + 0x168]
mov r15b, byte [rsp + 0x21]
jmp 0x180006049
mov rax, qword [rsp + 0x150]
and dword [rax + 0x1c], 0
mov byte [rax + 0x25], 1
jmp 0x180006e8d
lea rdx, [0x180068ad8]
mov r8d, 1
mov rcx, rsi
call fcn.180006fd4
lea r11, [rsp + 0x108]
movaps xmm6, xmmword [r11 - 0x18]
movaps xmm7, xmmword [r11 - 0x28]
movaps xmm8, xmmword [r11 - 0x38]
movaps xmm9, xmmword [r11 - 0x48]
movaps xmm13, xmmword [r11 - 0x58]
movaps xmm15, xmmword [r11 - 0x68]
mov rsp, r11
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
pop rbx
ret