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

Disassembly:
mov rax, rsp
mov qword [rax + 0x18], r8
mov qword [rax + 8], rcx
push rbp
push rbx
push rsi
push rdi
push r12
push r13
push r14
push r15
lea rbp, [rax - 0x5f]
sub rsp, 0xe8
mov rsi, rcx
xor ecx, ecx
movaps xmmword [rax - 0x58], xmm7
and qword [rsp + 0x38], rcx
xor r13d, r13d
test byte [rsi + 0x1d], 2
movaps xmmword [rax - 0x68], xmm9
movaps xmmword [rax - 0x78], xmm10
mov r10, r8
mov r15, rdx
mov qword [rsp + 0x48], rcx
je 0x18005d5dd
mov rax, qword [r10]
add r10, 8
mov byte [rsp + 0x20], 1
mov qword [rsp + 0x38], rax
mov qword [rbp + 0x77], r10
jmp 0x18005d5e1
mov byte [rsp + 0x20], cl
movsx eax, byte [rdx]
test eax, eax
je 0x18005e631
movsd xmm7, qword [0x180144168]
movsd xmm10, qword [0x180144150]
xorps xmm9, xmm9
cmp eax, 0x25
je 0x18005d636
mov r13, r15
inc r15
mov al, byte [r15]
test al, al
je 0x18005d617
cmp al, 0x25
jne 0x18005d609
mov r8d, r15d
mov rdx, r13
mov rcx, rsi
sub r8d, r13d
call fcn.18005e660
cmp byte [r15], 0
je 0x18005e631
mov r10, qword [rbp + 0x77]
inc r15
mov qword [rbp + 0x6f], r15
movsx ecx, byte [r15]
test ecx, ecx
je 0x18005e61c
and dword [rsp + 0x28], 0
xor sil, sil
xor dil, dil
xor r14b, r14b
xor bl, bl
mov byte [rsp + 0x25], 0
mov byte [rsp + 0x22], sil
mov byte [rsp + 0x24], dil
mov byte [rsp + 0x21], sil
mov byte [rbp + 0x7f], sil
or r12d, 0xffffffff
cmp ecx, 0x2c
jg 0x18005d745
je 0x18005d73d
mov edx, ecx
sub edx, 0x20
je 0x18005d733
dec edx
je 0x18005d726
sub edx, 2
je 0x18005d719
sub edx, 7
je 0x18005d6b3
dec edx
jne 0x18005d889
mov byte [rsp + 0x21], reloc.ODBC32.dll_SQLGetData
jmp 0x18005d851
cmp byte [rsp + 0x20], 0
je 0x18005d6d2
mov rcx, qword [rsp + 0x38]
call fcn.18009010c
mov r10, qword [rbp + 0x77]
mov rdx, rax
mov qword [rsp + 0x28], rax
jmp 0x18005d6e2
mov edx, dword [r10]
add r10, 8
mov qword [rsp + 0x28], rdx
mov qword [rbp + 0x77], r10
test edx, edx
jns 0x18005d6fd
xor eax, eax
mov ecx, edx
mov byte [rbp + 0x7f], 1
neg ecx
cmp edx, 0x80000001
cmovge eax, ecx
mov dword [rsp + 0x28], eax
movsx eax, byte [r15 + 1]
cmp eax, 0x2e
je 0x18005d851
cmp eax, 0x6c
jne 0x18005d87e
jmp 0x18005d851
mov dil, 1
mov byte [rsp + 0x24], dil
jmp 0x18005d851
mov sil, 1
mov byte [rsp + 0x22], sil
jmp 0x18005d851
mov byte [rsp + 0x21], Ordinal_36
jmp 0x18005d851
mov r14b, 0x2c
jmp 0x18005d851
cmp ecx, 0x2d
je 0x18005d84d
cmp ecx, 0x2e
je 0x18005d7c0
cmp ecx, 0x30
je 0x18005d7b6
jle 0x18005d889
cmp ecx, 0x39
jg 0x18005d865
inc r15
lea edx, [rcx - 0x30]
movsx ecx, byte [r15]
mov qword [rbp + 0x6f], r15
cmp ecx, 0x30
jl 0x18005d798
cmp ecx, 0x39
jg 0x18005d794
lea edx, [rdx + rdx*4]
inc r15
lea edx, [rdx - 0x18]
lea edx, [rcx + rdx*2]
movsx ecx, byte [r15]
cmp ecx, 0x30
jge 0x18005d77a
mov qword [rbp + 0x6f], r15
btr edx, 0x1f
mov dword [rsp + 0x28], edx
cmp ecx, 0x2e
je 0x18005d7ae
cmp ecx, 0x6c
jne 0x18005d889
dec r15
jmp 0x18005d851
mov byte [rsp + 0x25], 1
jmp 0x18005d851
inc r15
mov qword [rbp + 0x6f], r15
movsx ecx, byte [r15]
cmp ecx, 0x2a
jne 0x18005d81c
cmp byte [rsp + 0x20], 0
je 0x18005d7ea
mov rcx, qword [rsp + 0x38]
call fcn.18009010c
mov r10, qword [rbp + 0x77]
mov r12, rax
jmp 0x18005d7f5
mov r12d, dword [r10]
add r10, 8
mov qword [rbp + 0x77], r10
test r12d, r12d
jns 0x18005d80f
mov ecx, r12d
or eax, 0xffffffff
neg ecx
cmp r12d, 0x80000001
cmovge eax, ecx
mov r12d, eax
inc r15
mov qword [rbp + 0x6f], r15
movsx ecx, byte [r15]
jmp 0x18005d7a5
xor edx, edx
cmp ecx, 0x30
jl 0x18005d841
cmp ecx, 0x39
jg 0x18005d83d
lea edx, [rdx + rdx*4]
inc r15
lea edx, [rdx - 0x18]
lea edx, [rcx + rdx*2]
movsx ecx, byte [r15]
cmp ecx, 0x30
jge 0x18005d823
mov qword [rbp + 0x6f], r15
btr edx, 0x1f
mov r12d, edx
jmp 0x18005d7a5
mov byte [rbp + 0x7f], 1
inc r15
mov qword [rbp + 0x6f], r15
movsx ecx, byte [r15]
test ecx, ecx
je 0x18005d889
jmp 0x18005d675
cmp ecx, 0x6c
jne 0x18005d889
inc r15
mov bl, 1
movsx ecx, byte [r15]
mov qword [rbp + 0x6f], r15
cmp ecx, 0x6c
jne 0x18005d889
mov bl, 2
inc r15
mov qword [rbp + 0x6f], r15
movsx ecx, byte [r15]
lea rax, [0x18013c9f0]
xor r8d, r8d
mov r9b, 0x11
mov r15, rax
mov qword [rbp - 0x71], rax
mov rdx, rax
mov byte [rsp + 0x23], r9b
lea r11d, [r8 + 6]
movsx eax, byte [rdx]
cmp ecx, eax
je 0x18005d8c4
lea rax, [0x18013ca7a]
add rdx, r11
inc r8
cmp rdx, rax
jl 0x18005d8a9
jmp 0x18005d8e0
lea rax, [r8 + r8*2]
lea rcx, [0x18013c9f0]
lea r15, [rcx + rax*2]
mov qword [rbp - 0x71], r15
mov r9b, byte [r15 + 3]
mov byte [rsp + 0x23], r9b
movzx ecx, r9b
cmp ecx, 0xa
jg 0x18005e12d
cmp ecx, 9
jge 0x18005e15f
test r9b, r9b
je 0x18005e2cd
test ecx, ecx
jle 0x18005e631
cmp ecx, 3
jle 0x18005dc52
cmp ecx, 4
je 0x18005dc22
jle 0x18005e631
cmp ecx, r11d
jle 0x18005db0d
cmp ecx, 7
je 0x18005daa7
cmp ecx, 8
jne 0x18005e631
cmp byte [rsp + 0x20], 0
je 0x18005d9a1
mov rcx, qword [rsp + 0x38]
call fcn.180090164
mov ebx, 1
mov rcx, rax
mov edx, ebx
test rax, rax
je 0x18005d998
movsx eax, byte [rax]
inc rcx
mov byte [rbp - 0x69], al
and eax, 0xc0
cmp al, 0xc0
jne 0x18005da49
mov r8b, byte [rcx]
mov al, r8b
and al, 0xc0
cmp al, 0x80
jne 0x18005da49
mov byte [rbp + rdx - 0x69], r8b
inc rdx
inc ebx
inc rcx
cmp rdx, 4
jl 0x18005d970
jmp 0x18005da49
mov byte [rbp - 0x69], 0
jmp 0x18005da49
mov ecx, dword [r10]
add r10, 8
mov qword [rbp + 0x77], r10
cmp ecx, 0x80
jae 0x18005d9c1
mov byte [rbp - 0x69], cl
mov ebx, 1
jmp 0x18005da49
mov eax, ecx
cmp ecx, 0x800
jae 0x18005d9e5
shr eax, 6
and cl, 0x3f
mov ebx, 2
and al, 0x1f
sub al, 0x40
add cl, 0x80
mov byte [rbp - 0x68], cl
mov byte [rbp - 0x69], al
jmp 0x18005da49
cmp ecx, 0x10000
jae 0x18005da13
shr eax, 0xc
mov ebx, 3
and al, 0xf
sub al, 0x20
mov byte [rbp - 0x69], al
mov eax, ecx
and cl, 0x3f
shr eax, 6
and al, 0x3f
add al, 0x80
add cl, 0x80
mov byte [rbp - 0x67], cl
mov byte [rbp - 0x68], al
jmp 0x18005da49
shr eax, 0x12
mov dl, 0x3f
mov r8b, 0x80
and al, 7
mov ebx, 4
sub al, 0x10
mov byte [rbp - 0x69], al
mov eax, ecx
shr eax, 0xc
and al, dl
add al, r8b
mov byte [rbp - 0x68], al
mov eax, ecx
and cl, dl
shr eax, 6
and al, dl
add al, r8b
add cl, r8b
mov byte [rbp - 0x66], cl
mov byte [rbp - 0x67], al
cmp r12d, 1
jle 0x18005da9e
mov rcx, qword [rsp + 0x28]
mov r13, qword [rbp + 0x67]
mov eax, 1
sub eax, r12d
add ecx, eax
mov qword [rsp + 0x28], rcx
cmp ecx, 1
jle 0x18005da85
cmp byte [rbp + 0x7f], 0
jne 0x18005da85
lea edx, [rcx - 1]
mov r8b, 0x20
mov rcx, r13
call fcn.18005e6cc
and dword [rsp + 0x28], 0
lea edi, [r12 - 1]
lea rdx, [rbp - 0x69]
mov r8d, ebx
mov rcx, r13
call fcn.18005e660
dec rdi
jne 0x18005da8a
lea r13, [rbp - 0x69]
jmp 0x18005e297
mov byte [rbp - 0x69], 0x25
mov ebx, 1
lea r13, [rbp - 0x69]
mov rdi, qword [rsp + 0x28]
mov r14b, byte [rbp + 0x7f]
mov rsi, qword [rbp + 0x67]
sub edi, ebx
mov qword [rsp + 0x28], rdi
test edi, edi
jle 0x18005e5da
test r14b, r14b
jne 0x18005dae2
mov r8b, 0x20
mov edx, edi
mov rcx, rsi
call fcn.18005e6cc
mov r8d, ebx
mov rdx, r13
mov rcx, rsi
call fcn.18005e660
test r14b, r14b
je 0x18005e5e8
mov edx, dword [rsp + 0x28]
mov r8b, 0x20
mov rcx, rsi
call fcn.18005e6cc
jmp 0x18005e5e8
cmp byte [rsp + 0x20], 0
je 0x18005db2c
mov rcx, qword [rsp + 0x38]
call fcn.180090164
mov r9b, 5
mov r11d, 6
mov r13, rax
jmp 0x18005db37
mov r13, qword [r10]
add r10, 8
mov qword [rbp + 0x77], r10
test r13, r13
jne 0x18005db45
lea r13, [0x18013e4a7]
jmp 0x18005dba8
cmp r9b, r11b
jne 0x18005dba8
mov rax, qword [rbp + 0x67]
cmp dword [rax + 0x18], 0
jne 0x18005dba0
cmp dword [rax + 0x14], 0
je 0x18005dba0
cmp dword [rsp + 0x28], 0
jne 0x18005dba0
test r12d, r12d
jns 0x18005dba0
cmp byte [rax + 0x1c], 0
jne 0x18005dba0
mov rcx, qword [rax]
mov rdx, r13
mov rsi, rax
mov qword [rax + 8], r13
call fcn.180068a98
mov dword [rsi + 0x10], eax
or rax, 0xffffffffffffffff
inc rax
cmp byte [r13 + rax], 0
jne 0x18005db85
btr eax, 0x1f
or byte [rsi + 0x1d], 4
mov dword [rsi + 0x18], eax
jmp 0x18005dc42
mov rax, r13
mov qword [rsp + 0x48], rax
test r12d, r12d
js 0x18005dc0d
test sil, sil
je 0x18005dbde
mov rbx, r13
jmp 0x18005dbd4
mov al, byte [rbx]
dec r12d
test al, al
je 0x18005dbd9
inc rbx
cmp al, 0xc0
jb 0x18005dbd4
jmp 0x18005dbcc
inc rbx
mov al, byte [rbx]
and al, 0xc0
cmp al, 0x80
je 0x18005dbc9
test r12d, r12d
jg 0x18005dbb7
sub ebx, r13d
jmp 0x18005dc03
xor ebx, ebx
xor eax, eax
movsxd rcx, r12d
test r12d, r12d
jle 0x18005dab4
cmp byte [rax + r13], 0
je 0x18005dab4
inc rax
inc ebx
cmp rax, rcx
jl 0x18005dbee
mov r15b, byte [rsp + 0x22]
jmp 0x18005e28e
or rbx, 0xffffffffffffffff
inc rbx
cmp byte [r13 + rbx], 0
jne 0x18005dc11
btr ebx, 0x1f
jmp 0x18005dc03
cmp byte [rsp + 0x20], 0
mov rsi, qword [rbp + 0x67]
jne 0x18005dc3d
mov rcx, qword [r10]
mov eax, dword [rsi + 0x18]
add r10, 8
mov dword [rcx], eax
mov qword [rbp + 0x77], r10
and dword [rsp + 0x28], 0
mov rdi, qword [rsp + 0x28]
mov r14b, byte [rbp + 0x7f]
xor ebx, ebx
jmp 0x18005dac1
cmp byte [rsp + 0x20], 0
je 0x18005dc73
mov rcx, qword [rsp + 0x38]
call fcn.180090138
mov r9b, byte [rsp + 0x23]
movsd qword [rsp + 0x30], xmm0
movaps xmm1, xmm0
jmp 0x18005dc86
movsd xmm1, qword [r10]
add r10, 8
movsd qword [rsp + 0x30], xmm1
mov qword [rbp + 0x77], r10
test r12d, r12d
mov ecx, 6
cmovs r12d, ecx
mov qword [rsp + 0x40], r12
comisd xmm9, xmm1
jbe 0x18005dcb5
xorps xmm1, xmmword [0x180120e90]
mov r10b, 0x2d
mov byte [rsp + 0x21], r10b
movsd qword [rsp + 0x30], xmm1
jmp 0x18005dcba
mov r10b, byte [rsp + 0x21]
cmp r9b, 3
jne 0x18005dccd
test r12d, r12d
jle 0x18005dccd
dec r12d
mov qword [rsp + 0x40], r12
mov eax, 0x66666667
mov r8d, r12d
and r8d, 0xfff
imul r8d
sar edx, 2
mov eax, edx
shr eax, 0x1f
add edx, eax
mov eax, r8d
lea ecx, [rdx + rdx*4]
add ecx, ecx
sub eax, ecx
movsxd rcx, eax
lea rax, [0x180000000]
movsd xmm3, qword [rax + rcx*8 + 0x13ca80]
cmp r8d, 0xa
jl 0x18005dd26
mov eax, 0xcccccccd
mul r8d
shr edx, 3
mov eax, edx
mulsd xmm3, qword [0x180144148]
dec rax
jne 0x18005dd19
cmp r9b, 1
jne 0x18005dd76
movsd qword [rsp + 0x30], xmm1
mov rcx, qword [rsp + 0x30]
mov eax, 0x55555556
shr rcx, 0x34
and ecx, 0x7ff
sub ecx, 0x3ff
imul ecx
mov eax, edx
shr eax, 0x1f
add edx, eax
add edx, r12d
cmp edx, 0xf
jge 0x18005dd6c
movaps xmm0, xmm1
mulsd xmm0, qword [0x180144140]
addsd xmm3, xmm0
addsd xmm1, xmm3
movsd qword [rsp + 0x30], xmm1
movaps xmm0, xmm1
xor esi, esi
call fcn.180068d14
test eax, eax
je 0x18005dd93
lea r13, [0x18013fcc8]
lea ebx, [rsi + 3]
jmp 0x18005dab4
comisd xmm1, xmm9
jbe 0x18005de76
comisd xmm1, xmmword [0x180144218]
movaps xmm2, xmm7
mov eax, 0x15e
jb 0x18005ddd0
cmp esi, eax
jg 0x18005ddd0
mulsd xmm2, qword [0x180144218]
add esi, 0x64
movaps xmm0, xmm2
mulsd xmm0, qword [0x180144218]
comisd xmm1, xmm0
jae 0x18005ddb0
movaps xmm0, xmm2
jmp 0x18005dddf
cmp esi, eax
jg 0x18005dded
movaps xmm2, xmm0
add esi, 0xa
mulsd xmm0, qword [0x1801441f0]
comisd xmm1, xmm0
jae 0x18005ddd5
movaps xmm0, xmm2
jmp 0x18005ddfb
cmp esi, eax
jg 0x18005de09
movaps xmm2, xmm0
inc esi
mulsd xmm0, qword [0x180144178]
comisd xmm1, xmm0
jae 0x18005ddf2
divsd xmm1, xmm2
comisd xmm10, xmm1
movsd qword [rsp + 0x30], xmm1
jbe 0x18005de32
mulsd xmm1, qword [0x1801441d8]
sub esi, 8
comisd xmm10, xmm1
ja 0x18005de1a
movsd qword [rsp + 0x30], xmm1
comisd xmm7, xmm1
jbe 0x18005de4e
mulsd xmm1, qword [0x180144178]
dec esi
comisd xmm7, xmm1
ja 0x18005de38
movsd qword [rsp + 0x30], xmm1
cmp esi, eax
jle 0x18005de76
xor eax, eax
test r10b, r10b
mov byte [rbp - 0x69], r10b
setne al
mov dword [rbp + rax - 0x69], 0x666e49
xor eax, eax
test r10b, r10b
setne al
lea ebx, [rax + 3]
jmp 0x18005dab0
lea rdi, [rbp - 0x69]
cmp r9b, 1
je 0x18005dea4
addsd xmm1, xmm3
comisd xmm1, xmmword [0x180144178]
movsd qword [rsp + 0x30], xmm1
jb 0x18005dea4
mulsd xmm1, qword [0x180144158]
inc esi
movsd qword [rsp + 0x30], xmm1
cmp r9b, 3
jne 0x18005df65
cmp byte [rsp + 0x24], 0
sete r15b
cmp esi, 0xfffffffc
jl 0x18005df5e
cmp esi, r12d
jg 0x18005df5e
sub r12d, esi
mov byte [rsp + 0x23], 1
mov qword [rsp + 0x40], r12
mov ebx, esi
xor eax, eax
test ebx, ebx
movsxd rdx, r12d
movsxd r12, dword [rsp + 0x28]
cmovg eax, ebx
add rdx, 0xf
cdqe
add rax, r12
add rdx, rax
cmp rdx, 0x46
jle 0x18005df13
mov rcx, qword [rbp + 0x67]
call fcn.180090190
mov qword [rsp + 0x48], rax
mov rdi, rax
test rax, rax
je 0x18005e631
movzx r8d, byte [rsp + 0x22]
mov rax, qword [rsp + 0x40]
mov r9b, byte [rsp + 0x21]
test eax, eax
lea edx, [r8 + r8*4]
mov r13, rdi
setg r14b
lea edx, [rdx*2 + 0x10]
or r14b, r8b
mov dword [rbp - 0x79], edx
or r14b, byte [rsp + 0x24]
mov byte [rsp + 0x24], r14b
test r9b, r9b
je 0x18005df52
mov byte [rdi], r9b
inc rdi
test ebx, ebx
jns 0x18005df7b
mov byte [rdi], 0x30
inc rdi
jmp 0x18005df97
mov byte [rsp + 0x23], 2
jmp 0x18005df74
mov r15b, byte [rsp + 0x22]
cmp r9b, 2
jne 0x18005ded6
xor ebx, ebx
jmp 0x18005ded8
lea rdx, [rbp - 0x79]
lea rcx, [rsp + 0x30]
call fcn.180090090
mov byte [rdi], al
inc rdi
dec ebx
jns 0x18005df7b
mov rax, qword [rsp + 0x40]
test r14b, r14b
je 0x18005dfa2
mov byte [rdi], 0x2e
inc rdi
inc ebx
jns 0x18005dfce
neg ebx
mov dl, 0x30
mov rcx, rdi
mov r8d, ebx
call fcn.1800cadf0
mov rax, qword [rsp + 0x40]
mov r9b, byte [rsp + 0x21]
mov r8b, byte [rsp + 0x22]
add rdi, rbx
sub eax, ebx
mov qword [rsp + 0x40], rax
test eax, eax
jle 0x18005dff7
mov r14, qword [rsp + 0x40]
lea rdx, [rbp - 0x79]
lea rcx, [rsp + 0x30]
dec r14d
call fcn.180090090
mov byte [rdi], al
inc rdi
test r14d, r14d
jg 0x18005dfd7
mov r14b, byte [rsp + 0x24]
test r15b, r15b
je 0x18005e031
test r14b, r14b
je 0x18005e031
lea rax, [rdi - 1]
jmp 0x18005e010
mov rdi, rax
mov byte [rax], 0
dec rax
cmp byte [rax], 0x30
je 0x18005e007
lea rax, [rdi - 1]
cmp byte [rax], 0x2e
jne 0x18005e031
test r8b, r8b
je 0x18005e02b
mov byte [rdi], 0x30
inc rdi
jmp 0x18005e031
mov rdi, rax
mov byte [rax], 0
cmp byte [rsp + 0x23], 2
jne 0x18005e0b5
mov rax, qword [rbp - 0x71]
lea rcx, str.0123456789ABCDEF0123456789abcdef
movzx eax, byte [rax + 4]
mov al, byte [rax + rcx]
mov byte [rdi], al
test esi, esi
jns 0x18005e05c
mov byte [rdi + 1], 0x2d
add rdi, 2
neg esi
jmp 0x18005e064
mov byte [rdi + 1], reloc.ODBC32.dll_SQLGetData
add rdi, 2
cmp esi, 0x64
jl 0x18005e087
mov eax, 0x51eb851f
imul esi
sar edx, 5
mov eax, edx
shr eax, 0x1f
add edx, eax
lea eax, [rdx + 0x30]
mov byte [rdi], al
inc rdi
imul eax, edx, 0xffffff9c
add esi, eax
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 r14b, byte [rbp + 0x7f]
mov byte [rdi], 0
sub edi, r13d
cmp byte [rsp + 0x25], 0
mov ebx, edi
mov rdi, qword [rsp + 0x28]
je 0x18005dabd
test r14b, r14b
jne 0x18005dabd
cmp ebx, edi
jge 0x18005dabd
mov edx, edi
sub edx, ebx
movsxd rax, edx
cmp r12, rax
jl 0x18005e10c
lea rcx, [r12 + r13]
mov r8, rax
sub r12, rax
neg r8
inc r12
mov al, byte [r8 + rcx]
mov byte [rcx], al
dec rcx
dec r12
jne 0x18005e0fe
test edx, edx
je 0x18005e126
xor eax, eax
test r9b, r9b
mov r8d, edx
setne al
mov dl, 0x30
lea rcx, [rax + r13]
call fcn.1800cadf0
mov ebx, edi
jmp 0x18005dabd
sub ecx, 0xb
je 0x18005e59b
dec ecx
je 0x18005e541
dec ecx
je 0x18005e2cb
dec ecx
je 0x18005e15f
dec ecx
je 0x18005e2cd
dec ecx
jne 0x18005e631
jmp 0x18005e2d0
mov eax, Ordinal_36
cmp r9b, 0xe
lea r14d, [rax + 5]
cmove r14d, eax
cmp byte [rsp + 0x20], 0
je 0x18005e18b
mov rcx, qword [rsp + 0x38]
call fcn.180090164
mov r9b, byte [rsp + 0x23]
mov rbx, rax
jmp 0x18005e196
mov rbx, qword [r10]
add r10, 8
mov qword [rbp + 0x77], r10
xor edx, edx
test rbx, rbx
sete dl
test edx, edx
je 0x18005e1b8
lea rax, str.NULL
lea rbx, str._NULL_
cmp r9b, 0xa
cmove rbx, rax
mov r15b, byte [rsp + 0x22]
xor r8d, r8d
xor esi, esi
xor ecx, ecx
test r12d, r12d
je 0x18005e1fe
mov al, byte [rcx + rbx]
test al, al
je 0x18005e1fe
cmp al, r14b
jne 0x18005e1d8
inc r8d
test r15b, r15b
je 0x18005e1f4
and al, 0xc0
cmp al, 0xc0
jne 0x18005e1f4
jmp 0x18005e1ea
inc esi
inc rcx
mov al, byte [rbx + rcx + 1]
and al, 0xc0
cmp al, 0x80
je 0x18005e1e5
inc esi
inc rcx
dec r12d
jne 0x18005e1c9
test edx, edx
jne 0x18005e20d
cmp r9b, 0xa
jne 0x18005e20d
lea edi, [rdx + 1]
jmp 0x18005e20f
xor edi, edi
lea eax, [rsi + 3]
add eax, r8d
cmp eax, 0x46
jle 0x18005e239
mov rcx, qword [rbp + 0x67]
movsxd rdx, eax
call fcn.180090190
mov qword [rsp + 0x48], rax
mov r13, rax
test rax, rax
je 0x18005e631
jmp 0x18005e23d
lea r13, [rbp - 0x69]
xor ecx, ecx
xor eax, eax
test edi, edi
je 0x18005e24e
lea ecx, [rax + 1]
mov byte [r13], r14b
mov eax, ecx
xor edx, edx
movsxd r9, esi
test esi, esi
jle 0x18005e27a
mov r8b, byte [rdx + rbx]
inc ecx
mov byte [rax + r13], r8b
inc rax
cmp r8b, r14b
jne 0x18005e272
mov byte [rax + r13], r8b
inc ecx
inc rax
inc rdx
cmp rdx, r9
jl 0x18005e257
test edi, edi
je 0x18005e287
mov byte [rax + r13], r14b
inc ecx
inc rax
mov byte [rax + r13], 0
mov ebx, ecx
test r15b, r15b
je 0x18005dab4
mov rdi, qword [rsp + 0x28]
test edi, edi
jle 0x18005dab9
lea eax, [rbx - 1]
movsxd rcx, eax
test eax, eax
js 0x18005dab9
mov al, byte [rcx + r13]
dec rcx
and al, 0xc0
cmp al, 0x80
jne 0x18005e2c1
inc edi
test rcx, rcx
jns 0x18005e2b2
jmp 0x18005dab9
mov bl, 2
xor r14b, r14b
test byte [r15 + 2], 1
je 0x18005e32e
cmp byte [rsp + 0x20], 0
je 0x18005e2ed
mov rcx, qword [rsp + 0x38]
call fcn.18009010c
mov rbx, rax
jmp 0x18005e308
add r10, 8
mov qword [rbp + 0x77], r10
test bl, bl
je 0x18005e304
cmp bl, 2
jne 0x18005e304
mov rbx, qword [r10 - 8]
jmp 0x18005e308
movsxd rbx, dword [r10 - 8]
test rbx, rbx
jns 0x18005e328
movabs rax, 0x8000000000000000
cmp rbx, rax
jne 0x18005e321
mov rbx, rax
jmp 0x18005e324
neg rbx
mov cl, 0x2d
jmp 0x18005e361
mov cl, byte [rsp + 0x21]
jmp 0x18005e365
cmp byte [rsp + 0x20], 0
je 0x18005e344
mov rcx, qword [rsp + 0x38]
call fcn.18009010c
mov rbx, rax
jmp 0x18005e35f
add r10, 8
mov qword [rbp + 0x77], r10
test bl, bl
je 0x18005e35b
cmp bl, 2
jne 0x18005e35b
mov rbx, qword [r10 - 8]
jmp 0x18005e35f
mov ebx, dword [r10 - 8]
xor cl, cl
mov byte [rsp + 0x21], cl
mov rax, rbx
neg rax
sbb sil, sil
and sil, dil
cmp byte [rsp + 0x25], 0
je 0x18005e38c
xor eax, eax
test cl, cl
mov ecx, dword [rsp + 0x28]
setne al
sub ecx, eax
cmp r12d, ecx
cmovl r12d, ecx
cmp r12d, 0x25
jge 0x18005e39d
mov edi, Ordinal_73
lea r10, [rbp - 0x69]
jmp 0x18005e3da
movsxd rdi, r12d
add rdi, 0xa
test r14b, r14b
je 0x18005e3bd
mov eax, 0x55555556
imul r12d
mov eax, edx
shr eax, 0x1f
add eax, edx
cdqe
add rdi, rax
mov rcx, qword [rbp + 0x67]
mov rdx, rdi
call fcn.180090190
mov qword [rsp + 0x48], rax
mov r10, rax
test rax, rax
je 0x18005e631
lea eax, [rdi - 1]
movsxd r13, eax
add r13, r10
cmp byte [rsp + 0x23], 0xf
jne 0x18005e453
movabs r9, 0xcccccccccccccccd
mov r8d, ebx
mov rax, r9
mul rbx
mov rcx, rdx
shr rcx, 3
lea eax, [rcx + rcx*4]
add eax, eax
sub r8d, eax
cmp r8d, 4
jge 0x18005e42c
mov rax, r9
mul rcx
shr rdx, 3
lea rax, [rdx + rdx*4]
add rax, rax
sub rcx, rax
cmp rcx, 1
jne 0x18005e42f
xor r8d, r8d
lea rdx, [0x180000000]
movsxd rcx, r8d
sub r13, 2
mov al, byte [rdx + rcx*2 + 0x13ddb9]
mov byte [r13 + 1], al
mov al, byte [rdx + rcx*2 + 0x13ddb8]
mov byte [r13], al
movzx ecx, byte [r15 + 4]
movzx r8d, byte [r15 + 1]
lea rax, str.0123456789ABCDEF0123456789abcdef
add rcx, rax
xor edx, edx
mov rax, rbx
dec r13
div r8
mov rbx, rax
mov al, byte [rdx + rcx]
mov byte [r13], al
test rbx, rbx
jne 0x18005e467
mov eax, r10d
lea ecx, [rdi - 1]
sub eax, r13d
add ecx, eax
cmp r12d, ecx
jle 0x18005e4a7
sub r12d, ecx
mov eax, r12d
add ecx, r12d
dec r13
mov byte [r13], 0x30
dec rax
jne 0x18005e49a
test r14b, r14b
je 0x18005e4f8
dec ecx
mov eax, 0x55555556
imul ecx
mov eax, edx
shr eax, 0x1f
add edx, eax
movsxd r8, edx
lea eax, [rdx + rdx*2]
sub r13, r8
sub ecx, eax
xor edx, edx
lea r9d, [rcx + 1]
jmp 0x18005e4f3
lea rax, [rdx + r8]
mov cl, byte [rax + r13]
mov byte [rdx + r13], cl
dec r9d
jne 0x18005e4f0
inc rdx
mov r9d, 3
dec r8
mov byte [rdx + r13], r14b
inc rdx
test r8, r8
jg 0x18005e4cf
mov al, byte [rsp + 0x21]
test al, al
je 0x18005e507
dec r13
mov byte [r13], al
test sil, sil
je 0x18005e533
mov al, byte [r15 + 5]
test al, al
je 0x18005e533
lea rcx, [0x18013c158]
movzx eax, al
add rax, rcx
jmp 0x18005e52d
dec r13
inc rax
mov byte [r13], cl
mov cl, byte [rax]
test cl, cl
jne 0x18005e523
lea ebx, [rdi - 1]
sub r10d, r13d
add ebx, r10d
jmp 0x18005dab4
mov rsi, qword [rbp + 0x67]
test byte [rsi + 0x1d], 1
je 0x18005e631
mov rbx, qword [r10]
movsxd rax, dword [r10 + 8]
add r10, 0x10
mov qword [rbp + 0x77], r10
imul rdi, rax, 0x70
mov rdx, qword [rdi + rbx + 0x10]
test rdx, rdx
je 0x18005e589
mov rcx, rsi
call fcn.18005e6a8
lea rdx, [0x18013fcdc]
mov r8d, 1
mov rcx, rsi
call fcn.18005e660
mov rdx, qword [rdi + rbx + 0x18]
mov rcx, rsi
call fcn.18005e6a8
jmp 0x18005dc3d
mov rsi, qword [rbp + 0x67]
test byte [rsi + 0x1d], 1
je 0x18005e631
mov rdx, qword [r10]
add r10, 8
mov qword [rbp + 0x77], r10
test rdx, rdx
je 0x18005dc3d
mov r8d, dword [rdx + 8]
test r8d, r8d
je 0x18005dc3d
mov rdx, qword [rdx]
mov rcx, rsi
call fcn.18005e660
jmp 0x18005dc3d
mov r8d, ebx
mov rdx, r13
mov rcx, rsi
call fcn.18005e660
mov rcx, qword [rsp + 0x48]
test rcx, rcx
je 0x18005e604
mov rdx, rcx
mov rcx, qword [rsi]
call fcn.180068a1c
xor eax, eax
mov qword [rsp + 0x48], rax
mov r15, qword [rbp + 0x6f]
inc r15
movsx eax, byte [r15]
test eax, eax
je 0x18005e631
mov r10, qword [rbp + 0x77]
jmp 0x18005d601
lea rdx, [0x18013fcc4]
mov r8d, 1
mov rcx, rsi
call fcn.18005e660
lea r11, [rsp + 0xe8]
movaps xmm7, xmmword [r11 - 0x18]
movaps xmm9, xmmword [r11 - 0x28]
movaps xmm10, xmmword [r11 - 0x38]
mov rsp, r11
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbx
pop rbp
ret