Function at 0x180030570
Capabilities:
Parse credit card information

Disassembly:
push rbp
push rbx
push rsi
push rdi
push r12
push r13
push r14
push r15
lea rbp, [rsp - 0xc8]
sub rsp, 0x1c8
mov qword [rbp - 0x68], 0xfffffffffffffffe
mov rax, qword [0x1800ac6c0]
xor rax, rsp
mov qword [rbp + 0xb8], rax
mov r12, r9
mov qword [rsp + 0x50], r9
mov rsi, r8
mov qword [rbp - 0x78], r8
mov r15, rdx
mov qword [rsp + 0x60], rcx
mov r14, qword [rbp + 0x130]
mov qword [rsp + 0x78], r14
mov rcx, qword [rbp + 0x138]
mov qword [rbp - 0x80], rcx
mov rax, qword [rbp + 0x140]
mov qword [rbp - 0x70], rax
xor edx, edx
mov dword [rsp + 0x30], edx
mov dword [rsp + 0x44], edx
mov qword [rsp + 0x38], rdx
mov r13d, edx
mov edi, edx
mov dword [rsp + 0x28], edx
mov qword [rsp + 0x70], rdx
mov qword [rsp + 0x68], rdx
mov qword [rbp - 0x20], 0xf
mov qword [rbp - 0x28], rdx
mov byte [rbp - 0x38], dl
mov qword [rbp + 0x58], 0xf
mov qword [rbp + 0x50], rdx
mov byte [rbp + 0x40], dl
mov dword [rsp + 0x40], edx
mov dword [rcx], edx
mov rcx, qword [r14 + 8]
mov r8, qword [r14]
cmp r8, rcx
je 0x18003064b
mov rdx, rcx
call fcn.18003a590
mov rbx, rax
mov rdx, qword [r14 + 8]
mov rcx, rax
call fcn.18003a840
mov qword [r14 + 8], rbx
mov rcx, r12
call fcn.18000c3e0
xor r10d, r10d
mov qword [rsi + 0x10], r10
cmp qword [rsi + 0x18], 0x10
jb 0x180030666
mov rax, qword [rsi]
jmp 0x180030669
mov rax, rsi
mov byte [rax], r10b
mov r12, r10
mov qword [rsp + 0x58], r10
xor r8b, r8b
mov byte [rsp + 0x2c], r8b
mov qword [rbp - 0x48], 0xf
mov qword [rbp - 0x50], r10
mov byte [rbp - 0x60], r8b
mov qword [rbp + 8], 0xf
mov qword [rbp], r10
mov byte [rbp - 0x10], r8b
mov rdx, qword [r15 + 0x10]
mov qword [rsp + 0x48], rdx
mov r14, r10
mov r9d, 1
test rdx, rdx
je 0x18003190d
nop word [rax + rax]
mov rcx, qword [r15 + 0x18]
cmp rcx, 0x10
jb 0x1800306cf
mov rax, qword [r15]
jmp 0x1800306d2
mov rax, r15
movzx ebx, byte [rax + r14]
test bl, bl
je 0x18003183e
test edi, edi
jne 0x1800308a3
mov rdi, qword [r15 + 0x10]
cmp r14, rdi
jae 0x180031905
sub rdi, r14
cmp rdi, 2
jb 0x180031905
dec rdi
cmp rcx, 0x10
jb 0x18003070f
mov rax, qword [r15]
jmp 0x180030712
mov rax, r15
lea rbx, [rax + r14]
mov r8, rdi
mov edx, 0x3c
mov rcx, rbx
call fcn.180065b20
test rax, rax
je 0x180031905
movzx ecx, word [rax]
cmp cx, word [0x18008c1d8]
je 0x180030749
sub rbx, rax
lea rdi, [rdi + rbx - 1]
lea rbx, [rax + 1]
jmp 0x180030716
cmp qword [r15 + 0x18], 0x10
jb 0x180030755
mov rcx, qword [r15]
jmp 0x180030758
mov rcx, r15
sub rax, rcx
cmp rax, 0xffffffffffffffff
je 0x180031905
lea r14, [rax + 2]
mov rax, qword [rsp + 0x48]
sub rax, r14
cmp rax, 3
jbe 0x18003087d
mov r9d, 3
mov r8, r14
lea rdx, [rbp + 0x18]
mov rcx, r15
call fcn.1800027e0
mov rbx, rax
lea rax, [rbp - 0x10]
cmp rax, rbx
je 0x1800307fe
cmp qword [rbp + 8], 0x10
jb 0x1800307ac
mov rcx, qword [rbp - 0x10]
call fcn.180064a00
mov qword [rbp + 8], 0xf
xor edi, edi
mov qword [rbp], rdi
mov byte [rbp - 0x10], dil
cmp qword [rbx + 0x18], 0x10
jae 0x1800307da
mov r8, qword [rbx + 0x10]
inc r8
mov rdx, rbx
lea rcx, [rbp - 0x10]
call fcn.180064dc0
jmp 0x1800307e4
mov rax, qword [rbx]
mov qword [rbp - 0x10], rax
mov qword [rbx], rdi
mov rax, qword [rbx + 0x10]
mov qword [rbp], rax
mov rax, qword [rbx + 0x18]
mov qword [rbp + 8], rax
mov qword [rbx + 0x10], rdi
mov qword [rbx + 0x18], rdi
jmp 0x180030800
xor edi, edi
cmp qword [rbp + 0x30], 0x10
jb 0x180030810
mov rcx, qword [rbp + 0x18]
call fcn.180064a00
lea rax, [rbp + 0x18]
mov qword [rsp + 0x58], rax
mov qword [rbp + 0x30], 0xf
mov qword [rbp + 0x28], rdi
mov byte [rbp + 0x18], 0
mov r8d, 3
lea rdx, [0x18008d7a4]
lea rcx, [rbp + 0x18]
call fcn.180002a30
nop
mov qword [rbp + 0x80], 0xf
mov qword [rbp + 0x78], rdi
mov byte [rbp + 0x68], 0
or r9, 0xffffffffffffffff
xor r8d, r8d
lea rdx, [rbp - 0x10]
lea rcx, [rbp + 0x68]
call fcn.180002920
nop
lea rdx, [rbp + 0x18]
lea rcx, [rbp + 0x68]
call fcn.180015850
test eax, eax
jne 0x18003087d
add r14, 3
mov esi, 1
mov edi, esi
mov dword [rsp + 0x28], esi
xor r10d, r10d
mov qword [rsp + 0x38], r10
mov r13d, r10d
mov r12d, r10d
mov qword [rsp + 0x58], r10
dec r14
jmp 0x180031822
cmp edi, 1
jne 0x180031414
mov rax, qword [rsp + 0x60]
cmp qword [rax + 8], 0x400
jle 0x1800309a6
cmp r12d, 6
jge 0x1800309a6
movzx ecx, bl
call fcn.180039ce0
test eax, eax
jne 0x18003099e
test r12, r12
cmove r12, r9
mov r8, qword [rbp - 0x50]
cmp r8, r12
jbe 0x180030990
sub r8, r12
mov r9, r8
xor r8d, r8d
lea rdx, [rbp + 0x18]
lea rcx, [rbp - 0x60]
call fcn.1800027e0
mov rdi, rax
lea rax, [rbp - 0x60]
cmp rax, rdi
je 0x180030975
cmp qword [rbp - 0x48], 0x10
jb 0x18003091f
mov rcx, qword [rbp - 0x60]
call fcn.180064a00
mov qword [rbp - 0x48], 0xf
xor r10d, r10d
mov qword [rbp - 0x50], r10
mov byte [rbp - 0x60], r10b
cmp qword [rdi + 0x18], 0x10
jae 0x180030951
mov r8, qword [rdi + 0x10]
inc r8
mov rdx, rdi
lea rcx, [rbp - 0x60]
call fcn.180064dc0
xor r10d, r10d
jmp 0x18003095b
mov rax, qword [rdi]
mov qword [rbp - 0x60], rax
mov qword [rdi], r10
mov rax, qword [rdi + 0x10]
mov qword [rbp - 0x50], rax
mov rax, qword [rdi + 0x18]
mov qword [rbp - 0x48], rax
mov qword [rdi + 0x10], r10
mov qword [rdi + 0x18], r10
jmp 0x180030978
xor r10d, r10d
cmp qword [rbp + 0x30], 0x10
jb 0x18003098b
mov rcx, qword [rbp + 0x18]
call fcn.180064a00
xor r10d, r10d
mov rdx, qword [rsp + 0x48]
mov edi, r10d
mov dword [rsp + 0x28], r10d
movzx r8d, byte [rsp + 0x2c]
inc r12
mov qword [rsp + 0x58], r12
cmp bl, 0x5e
jne 0x180030a1b
mov rax, rdx
sub rax, r14
cmp rax, 1
jbe 0x180030caf
cmp r14, 1
jbe 0x180030caf
mov r9, qword [r15 + 0x18]
cmp r9, 0x10
jb 0x1800309d4
mov rax, qword [r15]
jmp 0x1800309d7
mov rax, r15
movzx ecx, byte [rax + r14 - 1]
call fcn.1800159b0
test eax, eax
je 0x180030caf
cmp r9, 0x10
jb 0x1800309f5
mov rax, qword [r15]
jmp 0x1800309f8
mov rax, r15
movzx ecx, byte [rax + r14 + 1]
call fcn.1800159b0
mov rsi, qword [rsp + 0x38]
test eax, eax
je 0x180030cb4
mov rax, qword [rbp - 0x80]
inc dword [rax]
jmp 0x180030cb4
cmp bl, 0xa
je 0x18003182c
cmp bl, 0xd
je 0x18003182c
cmp bl, 0x40
je 0x18003182c
cmp bl, 0x22
jne 0x180030a4d
mov dword [rsp + 0x28], 4
mov qword [rsp + 0x70], r14
jmp 0x180030caf
cmp bl, 0x27
jne 0x180030a64
mov dword [rsp + 0x28], 5
mov qword [rsp + 0x68], r14
jmp 0x180030caf
cmp bl, 0x2f
jne 0x180030acf
mov rax, rdx
sub rax, r14
cmp rax, 1
jbe 0x180030caf
mov rcx, qword [r15 + 0x18]
cmp rcx, 0x10
jb 0x180030a88
mov rax, qword [r15]
jmp 0x180030a8b
mov rax, r15
cmp byte [rax + r14 + 1], 0x2a
jne 0x180030aa4
mov edi, 2
mov dword [rsp + 0x28], edi
inc r14
jmp 0x18003182c
cmp rcx, 0x10
jb 0x180030aaf
mov rax, qword [r15]
jmp 0x180030ab2
mov rax, r15
cmp byte [rax + r14 + 1], 0x2f
jne 0x180030caf
mov edi, 3
mov dword [rsp + 0x28], edi
inc r14
jmp 0x18003182c
cmp bl, 0x23
jne 0x180030ae5
mov edi, 3
mov dword [rsp + 0x28], edi
inc r14
jmp 0x18003182c
cmp bl, 0x5c
jne 0x180030c39
or rax, 0xffffffffffffffff
mov r8, qword [rbp - 0x50]
sub rax, r8
cmp rax, 1
jbe 0x180031876
lea rbx, [r8 + 1]
cmp rbx, 0xfffffffffffffffe
ja 0x180031869
cmp qword [rbp - 0x48], rbx
jae 0x180030b28
mov rdx, rbx
lea rcx, [rbp - 0x60]
call fcn.180002cd0
xor r10d, r10d
jmp 0x180030b41
test rbx, rbx
jne 0x180030b44
mov qword [rbp - 0x50], r10
lea rax, [rbp - 0x60]
cmp qword [rbp - 0x48], 0x10
cmovae rax, qword [rbp - 0x60]
mov byte [rax], bl
test rbx, rbx
setne al
test al, al
je 0x180030b77
lea rcx, [rbp - 0x60]
cmp qword [rbp - 0x48], 0x10
cmovae rcx, qword [rbp - 0x60]
mov rax, qword [rbp - 0x50]
mov byte [rax + rcx], 0x5c
mov qword [rbp - 0x50], rbx
lea rax, [rbp - 0x60]
cmp qword [rbp - 0x48], 0x10
cmovae rax, qword [rbp - 0x60]
mov byte [rbx + rax], 0
inc r14
mov rcx, qword [r15 + 0x18]
cmp rcx, 0x10
jb 0x180030b89
mov rax, qword [r15]
jmp 0x180030b8c
mov rax, r15
cmp byte [rax + r14], 0
je 0x18003182c
cmp rcx, 0x10
jb 0x180030ba2
mov rax, qword [r15]
jmp 0x180030ba5
mov rax, r15
movzx edi, byte [rax + r14]
or rax, 0xffffffffffffffff
mov r8, qword [rbp - 0x50]
sub rax, r8
cmp rax, 1
jbe 0x18003185c
lea rbx, [r8 + 1]
cmp rbx, 0xfffffffffffffffe
ja 0x18003184f
cmp qword [rbp - 0x48], rbx
jae 0x180030be1
mov rdx, rbx
lea rcx, [rbp - 0x60]
call fcn.180002cd0
jmp 0x180030bfa
test rbx, rbx
jne 0x180030bfd
mov qword [rbp - 0x50], r10
lea rax, [rbp - 0x60]
cmp qword [rbp - 0x48], 0x10
cmovae rax, qword [rbp - 0x60]
mov byte [rax], bl
test rbx, rbx
setne al
test al, al
je 0x180031828
lea rcx, [rbp - 0x60]
cmp qword [rbp - 0x48], 0x10
cmovae rcx, qword [rbp - 0x60]
mov rax, qword [rbp - 0x50]
mov byte [rax + rcx], dil
mov qword [rbp - 0x50], rbx
lea rax, [rbp - 0x60]
cmp qword [rbp - 0x48], 0x10
cmovae rax, qword [rbp - 0x60]
mov byte [rbx + rax], 0
jmp 0x180031828
cmp bl, 0x3f
jne 0x180030c71
mov rax, rdx
sub rax, r14
cmp rax, 1
jbe 0x180030caf
cmp qword [r15 + 0x18], 0x10
jb 0x180030c56
mov rax, qword [r15]
jmp 0x180030c59
mov rax, r15
cmp byte [rax + r14 + 1], 0x3e
jne 0x180030caf
mov edi, r10d
mov dword [rsp + 0x28], r10d
inc r14
jmp 0x18003182c
cmp bl, 0x7b
jne 0x180030c88
mov rsi, qword [rsp + 0x38]
inc rsi
mov qword [rsp + 0x38], rsi
inc r13
jmp 0x180030cb4
cmp bl, 0x7d
jne 0x180030c9c
mov rsi, qword [rsp + 0x38]
dec rsi
mov qword [rsp + 0x38], rsi
jmp 0x180030cb4
cmp bl, 0x20
je 0x180030ca6
cmp bl, 9
jne 0x180030caf
cmp bl, r8b
je 0x18003182c
mov rsi, qword [rsp + 0x38]
mov byte [rsp + 0x2c], bl
or rax, 0xffffffffffffffff
mov r8, qword [rbp - 0x50]
sub rax, r8
cmp rax, 1
jbe 0x1800318aa
lea rdi, [r8 + 1]
cmp rdi, 0xfffffffffffffffe
ja 0x18003189d
cmp qword [rbp - 0x48], rdi
jae 0x180030cf2
mov rdx, rdi
lea rcx, [rbp - 0x60]
call fcn.180002cd0
xor r10d, r10d
jmp 0x180030d0c
test rdi, rdi
jne 0x180030d0f
mov qword [rbp - 0x50], r10
lea rax, [rbp - 0x60]
cmp qword [rbp - 0x48], 0x10
cmovae rax, qword [rbp - 0x60]
mov byte [rax], dil
test rdi, rdi
setne al
test al, al
je 0x180030d41
lea rcx, [rbp - 0x60]
cmp qword [rbp - 0x48], 0x10
cmovae rcx, qword [rbp - 0x60]
mov rax, qword [rbp - 0x50]
mov byte [rcx + rax], bl
mov qword [rbp - 0x50], rdi
lea rax, [rbp - 0x60]
cmp qword [rbp - 0x48], 0x10
cmovae rax, qword [rbp - 0x60]
mov byte [rdi + rax], 0
cmp bl, 0x7d
jne 0x180031173
test esi, esi
jne 0x180030e4a
test r13d, r13d
je 0x180030e4a
mov qword [rbp + 0x30], 0xf
mov qword [rbp + 0x28], r10
mov byte [rbp + 0x18], sil
lea r8d, [rsi + 8]
lea rdx, [0x18008c6d8]
lea rcx, [rbp + 0x18]
call fcn.180002a30
nop
mov edi, dword [rsp + 0x30]
or edi, 1
mov dword [rsp + 0x30], edi
mov dword [rsp + 0x44], edi
lea rdx, [rbp + 0x18]
lea rcx, [rbp - 0x60]
call fcn.180015750
cmp rax, 0xffffffffffffffff
jne 0x180030e46
mov qword [rbp + 0x80], 0xf
mov qword [rbp + 0x78], 0
mov byte [rbp + 0x68], sil
lea r8d, [rsi + 2]
lea rdx, [0x18008c47c]
lea rcx, [rbp + 0x68]
call fcn.180002a30
nop
or edi, 2
mov dword [rsp + 0x30], edi
mov dword [rsp + 0x44], edi
lea rdx, [rbp + 0x68]
lea rcx, [rbp - 0x60]
call fcn.180015750
cmp rax, 0xffffffffffffffff
jne 0x180030e46
mov qword [rbp + 0xa8], 0xf
mov qword [rbp + 0xa0], 0
mov byte [rbp + 0x90], sil
lea r8d, [rsi + 4]
lea rdx, str.else
lea rcx, [rbp + 0x90]
call fcn.180002a30
nop
or edi, 4
mov dword [rsp + 0x30], edi
mov dword [rsp + 0x44], edi
lea rdx, [rbp + 0x90]
lea rcx, [rbp - 0x60]
call fcn.180015750
cmp rax, 0xffffffffffffffff
je 0x180030e4e
mov bl, 1
jmp 0x180030e50
mov edi, dword [rsp + 0x30]
xor bl, bl
test dil, 4
je 0x180030e91
and edi, 0xfffffffb
mov dword [rsp + 0x30], edi
cmp qword [rbp + 0xa8], 0x10
jb 0x180030e73
mov rcx, qword [rbp + 0x90]
call fcn.180064a00
mov qword [rbp + 0xa8], 0xf
xor r10d, r10d
mov qword [rbp + 0xa0], r10
mov byte [rbp + 0x90], r10b
jmp 0x180030e94
xor r10d, r10d
test dil, 2
je 0x180030eca
and edi, 0xfffffffd
mov dword [rsp + 0x30], edi
cmp qword [rbp + 0x80], 0x10
jb 0x180030eb7
mov rcx, qword [rbp + 0x68]
call fcn.180064a00
xor r10d, r10d
mov qword [rbp + 0x80], 0xf
mov qword [rbp + 0x78], r10
mov byte [rbp + 0x68], 0
test dil, 1
je 0x180030ee7
and edi, 0xfffffffe
mov dword [rsp + 0x30], edi
cmp qword [rbp + 0x30], 0x10
jb 0x180030ee7
mov rcx, qword [rbp + 0x18]
call fcn.180064a00
test bl, bl
je 0x18003181e
lea rcx, [rbp - 0x60]
call fcn.180039750
mov rsi, qword [rbp - 0x60]
mov r12, qword [rbp - 0x48]
test eax, eax
je 0x18003114f
lea rcx, [rbp - 0x60]
cmp r12, 0x10
cmovae rcx, rsi
mov r13d, 1
mov r8d, r13d
mov rdi, qword [rbp - 0x50]
cmp rdi, r13
cmovb r8, rdi
lea rdx, [0x18008c4cc]
call fcn.180073ff0
movsxd rcx, eax
test eax, eax
jne 0x180030f4f
cmp rdi, r13
jae 0x180030f45
or ecx, 0xffffffff
jmp 0x180030f4f
xor eax, eax
cmp rdi, r13
setne al
mov ecx, eax
test ecx, ecx
sete al
test al, al
sete al
test al, al
je 0x18003114f
mov byte [rsp + 0x20], 0x20
test rdi, rdi
je 0x180030ff5
cmp rdi, 0xffffffffffffffff
jbe 0x180030f7b
or rdi, 0xffffffffffffffff
jmp 0x180030f7e
dec rdi
lea rbx, [rbp - 0x60]
cmp r12, 0x10
cmovae rbx, rsi
add rbx, rdi
movsx edx, byte [rbx]
mov r8, r13
lea rcx, [rsp + 0x20]
call fcn.180065b20
test rax, rax
je 0x180030fd8
lea rcx, [rbp - 0x60]
call fcn.180002910
cmp rbx, rax
je 0x180030fca
dec rbx
movsx edx, byte [rbx]
mov r8, r13
lea rcx, [rsp + 0x20]
call fcn.180065b20
test rax, rax
jne 0x180030fa2
jmp 0x180030fd8
mov r12, qword [rbp - 0x48]
mov rdi, qword [rbp - 0x50]
mov rsi, qword [rbp - 0x60]
jmp 0x180030ff5
lea rax, [rbp - 0x60]
mov rsi, qword [rbp - 0x60]
mov r12, qword [rbp - 0x48]
cmp r12, 0x10
cmovae rax, rsi
sub rbx, rax
mov rdi, qword [rbp - 0x50]
jmp 0x180030ff9
or rbx, 0xffffffffffffffff
or r13, 0xffffffffffffffff
inc rbx
cmp rdi, rbx
jb 0x180031883
mov r8, rdi
sub r8, rbx
cmp r8, r13
jae 0x18003101c
mov r13, r8
test r8, r8
je 0x18003106d
lea rcx, [rbp - 0x60]
cmp r12, 0x10
cmovae rcx, rsi
lea rax, [rbp - 0x60]
cmovae rax, rsi
sub r8, r13
lea rdx, [rbx + rcx]
add rdx, r13
lea rcx, [rbx + rax]
call fcn.180064dc0
mov r11, qword [rbp - 0x50]
sub r11, r13
mov qword [rbp - 0x50], r11
lea rax, [rbp - 0x60]
cmp qword [rbp - 0x48], 0x10
cmovae rax, qword [rbp - 0x60]
mov byte [r11 + rax], 0
mov r12, qword [rbp - 0x48]
mov rdi, qword [rbp - 0x50]
mov rsi, qword [rbp - 0x60]
mov byte [rsp + 0x20], 0x20
test rdi, rdi
je 0x1800310e8
lea rax, [rbp - 0x60]
cmp r12, 0x10
cmovae rax, rsi
lea r13, [rdi + rax]
lea rbx, [rbp - 0x60]
cmovae rbx, rsi
cmp rbx, r13
jae 0x1800310e8
mov esi, 1
nop dword [rax]
movsx edx, byte [rbx]
mov r8, rsi
lea rcx, [rsp + 0x20]
call fcn.180065b20
test rax, rax
je 0x1800310cb
inc rbx
cmp rbx, r13
jb 0x1800310a0
mov r12, qword [rbp - 0x48]
mov rdi, qword [rbp - 0x50]
mov rsi, qword [rbp - 0x60]
jmp 0x1800310e8
lea rax, [rbp - 0x60]
mov rsi, qword [rbp - 0x60]
mov r12, qword [rbp - 0x48]
cmp r12, 0x10
cmovae rax, rsi
sub rbx, rax
mov rdi, qword [rbp - 0x50]
jmp 0x1800310ec
or rbx, 0xffffffffffffffff
cmp rdi, rbx
cmovb rbx, rdi
test rbx, rbx
je 0x180031139
lea rax, [rbp - 0x60]
cmp r12, 0x10
cmovae rax, rsi
lea rcx, [rbp - 0x60]
cmovae rcx, rsi
sub rdi, rbx
lea rdx, [rbx + rax]
mov r8, rdi
call fcn.180064dc0
mov r11, qword [rbp - 0x50]
sub r11, rbx
mov qword [rbp - 0x50], r11
lea rax, [rbp - 0x60]
cmp qword [rbp - 0x48], 0x10
cmovae rax, qword [rbp - 0x60]
mov byte [r11 + rax], 0
lea rdx, [rbp - 0x60]
mov rcx, qword [rsp + 0x50]
call fcn.18000c2f0
mov r12, qword [rbp - 0x48]
mov rsi, qword [rbp - 0x60]
mov qword [rbp - 0x50], 0
lea rax, [rbp - 0x60]
cmp r12, 0x10
cmovae rax, rsi
mov byte [rax], 0
xor r13d, r13d
mov r12, qword [rsp + 0x58]
jmp 0x18003181e
cmp bl, 0x3b
jne 0x18003181e
test esi, esi
jne 0x180031409
lea rcx, [rbp - 0x60]
call fcn.180039750
mov rsi, qword [rbp - 0x60]
mov r12, qword [rbp - 0x48]
test eax, eax
je 0x1800313ee
lea rcx, [rbp - 0x60]
cmp r12, 0x10
cmovae rcx, rsi
mov r13d, 1
mov r8d, r13d
mov rdi, qword [rbp - 0x50]
cmp rdi, r13
cmovb r8, rdi
lea rdx, [0x18008c4cc]
call fcn.180073ff0
movsxd rcx, eax
test eax, eax
jne 0x1800311e4
cmp rdi, r13
jae 0x1800311da
or ecx, 0xffffffff
jmp 0x1800311e4
xor eax, eax
cmp rdi, r13
setne al
mov ecx, eax
test ecx, ecx
sete al
test al, al
sete al
test al, al
je 0x1800313ee
mov byte [rsp + 0x20], 0x20
test rdi, rdi
je 0x18003128a
cmp rdi, 0xffffffffffffffff
jbe 0x180031210
or rdi, 0xffffffffffffffff
jmp 0x180031213
dec rdi
lea rbx, [rbp - 0x60]
cmp r12, 0x10
cmovae rbx, rsi
add rbx, rdi
movsx edx, byte [rbx]
mov r8, r13
lea rcx, [rsp + 0x20]
call fcn.180065b20
test rax, rax
je 0x18003126d
lea rcx, [rbp - 0x60]
call fcn.180002910
cmp rbx, rax
je 0x18003125f
dec rbx
movsx edx, byte [rbx]
mov r8, r13
lea rcx, [rsp + 0x20]
call fcn.180065b20
test rax, rax
jne 0x180031237
jmp 0x18003126d
mov r12, qword [rbp - 0x48]
mov rdi, qword [rbp - 0x50]
mov rsi, qword [rbp - 0x60]
jmp 0x18003128a
lea rax, [rbp - 0x60]
mov rsi, qword [rbp - 0x60]
mov r12, qword [rbp - 0x48]
cmp r12, 0x10
cmovae rax, rsi
sub rbx, rax
mov rdi, qword [rbp - 0x50]
jmp 0x18003128e
or rbx, 0xffffffffffffffff
or r13, 0xffffffffffffffff
inc rbx
cmp rdi, rbx
jb 0x180031890
mov r8, rdi
sub r8, rbx
cmp r8, r13
jae 0x1800312b1
mov r13, r8
test r8, r8
je 0x180031302
lea rcx, [rbp - 0x60]
cmp r12, 0x10
cmovae rcx, rsi
lea rax, [rbp - 0x60]
cmovae rax, rsi
sub r8, r13
lea rdx, [rbx + rcx]
add rdx, r13
lea rcx, [rbx + rax]
call fcn.180064dc0
mov r11, qword [rbp - 0x50]
sub r11, r13
mov qword [rbp - 0x50], r11
lea rax, [rbp - 0x60]
cmp qword [rbp - 0x48], 0x10
cmovae rax, qword [rbp - 0x60]
mov byte [r11 + rax], 0
mov r12, qword [rbp - 0x48]
mov rdi, qword [rbp - 0x50]
mov rsi, qword [rbp - 0x60]
mov byte [rsp + 0x20], 0x20
test rdi, rdi
je 0x180031388
lea r13, [rbp - 0x60]
cmp r12, 0x10
cmovae r13, rsi
add r13, rdi
lea rbx, [rbp - 0x60]
cmp r12, 0x10
cmovae rbx, rsi
cmp rbx, r13
jae 0x180031388
mov esi, 1
nop word [rax + rax]
movsx edx, byte [rbx]
mov r8, rsi
lea rcx, [rsp + 0x20]
call fcn.180065b20
test rax, rax
je 0x18003136b
inc rbx
cmp rbx, r13
jb 0x180031340
mov r12, qword [rbp - 0x48]
mov rdi, qword [rbp - 0x50]
mov rsi, qword [rbp - 0x60]
jmp 0x180031388
lea rax, [rbp - 0x60]
mov rsi, qword [rbp - 0x60]
mov r12, qword [rbp - 0x48]
cmp r12, 0x10
cmovae rax, rsi
sub rbx, rax
mov rdi, qword [rbp - 0x50]
jmp 0x18003138c
or rbx, 0xffffffffffffffff
cmp rdi, rbx
cmovb rbx, rdi
test rbx, rbx
je 0x1800313d8
lea rdx, [rbp - 0x60]
cmp r12, 0x10
cmovae rdx, rsi
lea rcx, [rbp - 0x60]
cmovae rcx, rsi
sub rdi, rbx
add rdx, rbx
mov r8, rdi
call fcn.180064dc0
mov r11, qword [rbp - 0x50]
sub r11, rbx
mov qword [rbp - 0x50], r11
lea rax, [rbp - 0x60]
cmp qword [rbp - 0x48], 0x10
cmovae rax, qword [rbp - 0x60]
mov byte [rax + r11], 0
lea rdx, [rbp - 0x60]
mov rcx, qword [rsp + 0x50]
call fcn.18000c2f0
mov r12, qword [rbp - 0x48]
mov rsi, qword [rbp - 0x60]
xor r13d, r13d
mov qword [rbp - 0x50], r13
lea rax, [rbp - 0x60]
cmp r12, 0x10
cmovae rax, rsi
mov byte [rax], r13b
mov r12, qword [rsp + 0x58]
mov rax, qword [rbp - 0x70]
inc dword [rax]
jmp 0x18003181e
cmp edi, 2
jne 0x1800314e2
cmp bl, 0x2a
jne 0x18003144f
mov eax, edx
sub eax, r14d
cmp eax, 1
jle 0x18003144f
cmp rcx, 0x10
jb 0x180031437
mov rax, qword [r15]
jmp 0x18003143a
mov rax, r15
cmp byte [rax + r14 + 1], 0x2f
jne 0x18003144f
inc r14
mov dword [rsp + 0x28], r9d
mov dword [rsp + 0x40], r10d
mov r8, qword [rsi + 0x10]
or rax, 0xffffffffffffffff
sub rax, r8
cmp rax, 1
jbe 0x1800318c4
lea rdi, [r8 + 1]
cmp rdi, 0xfffffffffffffffe
ja 0x1800318b7
mov rax, qword [rsi + 0x18]
cmp rax, rdi
jae 0x180031488
mov rdx, rdi
mov rcx, rsi
call fcn.180002cd0
jmp 0x1800314a2
test rdi, rdi
jne 0x1800314a5
mov qword [rsi + 0x10], r10
cmp rax, 0x10
jb 0x18003149c
mov rax, qword [rsi]
jmp 0x18003149f
mov rax, rsi
mov byte [rax], 0
test rdi, rdi
setne al
test al, al
je 0x18003181e
mov rcx, qword [rsi + 0x10]
cmp qword [rsi + 0x18], 0x10
jb 0x1800314c0
mov rax, qword [rsi]
jmp 0x1800314c3
mov rax, rsi
mov byte [rcx + rax], bl
mov qword [rsi + 0x10], rdi
cmp qword [rsi + 0x18], 0x10
jb 0x1800314d6
mov rax, qword [rsi]
jmp 0x1800314d9
mov rax, rsi
mov byte [rdi + rax], 0
jmp 0x18003181e
cmp edi, 3
jne 0x1800315aa
cmp bl, 0x3f
jne 0x18003151f
mov eax, edx
sub eax, r14d
cmp eax, 1
jle 0x18003152e
cmp rcx, 0x10
jb 0x180031505
mov rax, qword [r15]
jmp 0x180031508
mov rax, r15
cmp byte [rax + r14 + 1], 0x3e
jne 0x18003152e
inc r14
mov dword [rsp + 0x28], r10d
mov dword [rsp + 0x40], r9d
jmp 0x18003152e
cmp bl, 0xa
jne 0x18003152e
mov dword [rsp + 0x28], r9d
mov dword [rsp + 0x40], r10d
mov r8, qword [rsi + 0x10]
or rax, 0xffffffffffffffff
sub rax, r8
cmp rax, 1
jbe 0x1800318de
lea rdi, [r8 + 1]
cmp rdi, 0xfffffffffffffffe
ja 0x1800318d1
mov rax, qword [rsi + 0x18]
cmp rax, rdi
jae 0x180031567
mov rdx, rdi
mov rcx, rsi
call fcn.180002cd0
jmp 0x180031581
test rdi, rdi
jne 0x180031584
mov qword [rsi + 0x10], r10
cmp rax, 0x10
jb 0x18003157b
mov rax, qword [rsi]
jmp 0x18003157e
mov rax, rsi
mov byte [rax], 0
test rdi, rdi
setne al
test al, al
je 0x18003181e
mov rcx, qword [rsi + 0x10]
cmp qword [rsi + 0x18], 0x10
jb 0x18003159f
mov rax, qword [rsi]
jmp 0x1800315a2
mov rax, rsi
mov byte [rax + rcx], bl
jmp 0x1800314c6
cmp edi, 4
jne 0x18003172e
cmp bl, 0xa
je 0x18003182c
cmp bl, 0x5c
jne 0x1800316a7
or rax, 0xffffffffffffffff
mov r8, qword [rbp - 0x28]
sub rax, r8
cmp rax, 1
jbe 0x1800318f8
lea rbx, [r8 + 1]
cmp rbx, 0xfffffffffffffffe
ja 0x1800318eb
cmp qword [rbp - 0x20], rbx
jae 0x180031605
mov rdx, rbx
lea rcx, [rbp - 0x38]
call fcn.180002cd0
mov rdx, qword [rsp + 0x48]
lea r9d, [rdi - 3]
jmp 0x18003161e
test rbx, rbx
jne 0x180031621
mov qword [rbp - 0x28], r10
lea rax, [rbp - 0x38]
cmp qword [rbp - 0x20], 0x10
cmovae rax, qword [rbp - 0x38]
mov byte [rax], bl
test rbx, rbx
setne al
test al, al
je 0x180031654
lea rcx, [rbp - 0x38]
cmp qword [rbp - 0x20], 0x10
cmovae rcx, qword [rbp - 0x38]
mov rax, qword [rbp - 0x28]
mov byte [rcx + rax], 0x5c
mov qword [rbp - 0x28], rbx
lea rax, [rbp - 0x38]
cmp qword [rbp - 0x20], 0x10
cmovae rax, qword [rbp - 0x38]
mov byte [rax + rbx], 0
mov eax, edx
sub eax, r14d
cmp eax, 1
jle 0x180031822
mov rcx, qword [r15 + 0x18]
cmp rcx, 0x10
jb 0x180031671
mov rax, qword [r15]
jmp 0x180031674
mov rax, r15
cmp byte [rax + r14 + 1], 0
je 0x180031822
inc r14
cmp rcx, 0x10
jb 0x18003168e
mov rax, qword [r15]
jmp 0x180031691
mov rax, r15
movzx r8d, byte [rax + r14]
mov rdx, r9
lea rcx, [rbp - 0x38]
call fcn.18000acd0
jmp 0x180031822
mov rdx, r9
lea rcx, [rbp - 0x38]
cmp bl, 0x22
jne 0x180031720
movzx r8d, bl
call fcn.18000acd0
mov rcx, qword [rsp + 0x70]
test ecx, ecx
je 0x1800316f5
mov eax, r14d
sub eax, ecx
test eax, eax
jle 0x1800316f5
mov r8, qword [rsp + 0x78]
lea rdx, [rbp - 0x38]
mov rcx, qword [rsp + 0x60]
call fcn.180035160
or r9, 0xffffffffffffffff
xor r8d, r8d
lea rdx, [rbp - 0x38]
lea rcx, [rbp - 0x60]
call fcn.18000c770
xor r8d, r8d
lea rdx, [0x18008bc7d]
lea rcx, [rbp - 0x38]
call fcn.180002a30
mov esi, 1
mov edi, esi
mov dword [rsp + 0x28], esi
mov dword [rsp + 0x40], 0
jmp 0x180031822
movzx r8d, bl
call fcn.18000acd0
jmp 0x180031822
cmp edi, 5
jne 0x180031822
cmp bl, 0xa
je 0x18003182c
mov rdx, r9
lea rcx, [rbp + 0x40]
cmp bl, 0x5c
jne 0x1800317ab
movzx r8d, bl
call fcn.18000acd0
mov r11d, dword [rsp + 0x48]
sub r11d, r14d
cmp r11d, 1
jle 0x180031822
mov rcx, qword [r15 + 0x18]
cmp rcx, 0x10
jb 0x180031776
mov rax, qword [r15]
jmp 0x180031779
mov rax, r15
cmp byte [rax + r14 + 1], 0
je 0x180031822
inc r14
cmp rcx, 0x10
jb 0x180031793
mov rax, qword [r15]
jmp 0x180031796
mov rax, r15
movzx r8d, byte [rax + r14]
mov edx, 1
lea rcx, [rbp + 0x40]
call fcn.18000acd0
jmp 0x180031822
cmp bl, 0x27
jne 0x180031720
movzx r8d, bl
call fcn.18000acd0
mov rcx, qword [rsp + 0x68]
test ecx, ecx
je 0x1800317f6
mov eax, r14d
sub eax, ecx
test eax, eax
jle 0x1800317f6
mov r8, qword [rsp + 0x78]
lea rdx, [rbp + 0x40]
mov rcx, qword [rsp + 0x60]
call fcn.180035160
or r9, 0xffffffffffffffff
xor r8d, r8d
lea rdx, [rbp + 0x40]
lea rcx, [rbp - 0x60]
call fcn.18000c770
xor r8d, r8d
lea rdx, [0x18008bc7d]
lea rcx, [rbp + 0x40]
call fcn.180002a30
mov esi, 1
mov edi, esi
mov dword [rsp + 0x28], esi
mov dword [rsp + 0x40], 0
jmp 0x180031822
mov edi, dword [rsp + 0x28]
mov rsi, qword [rbp - 0x78]
jmp 0x18003182c
mov edi, dword [rsp + 0x28]
mov rdx, qword [rsp + 0x48]
movzx r8d, byte [rsp + 0x2c]
xor r10d, r10d
lea r9d, [r10 + 1]
inc r14
cmp r14, rdx
jae 0x180031905
jmp 0x1800306c0
lea rcx, str.string_too_long
call fcn.180063cb8
int3
lea rcx, str.string_too_long
call fcn.180063cb8
int3
lea rcx, str.string_too_long
call fcn.180063cb8
int3
lea rcx, str.string_too_long
call fcn.180063cb8
int3
lea rcx, str.invalid_string_position
call fcn.180063d14
int3
lea rcx, str.invalid_string_position
call fcn.180063d14
int3
lea rcx, str.string_too_long
call fcn.180063cb8
int3
lea rcx, str.string_too_long
call fcn.180063cb8
int3
lea rcx, str.string_too_long
call fcn.180063cb8
int3
lea rcx, str.string_too_long
call fcn.180063cb8
int3
lea rcx, str.string_too_long
call fcn.180063cb8
int3
lea rcx, str.string_too_long
call fcn.180063cb8
int3
lea rcx, str.string_too_long
call fcn.180063cb8
int3
lea rcx, str.string_too_long
call fcn.180063cb8
int3
mov eax, dword [rsp + 0x40]
test eax, eax
jne 0x18003192f
mov r9d, 2
xor r8d, r8d
lea rdx, [0x18008c1d8]
mov rcx, r15
call fcn.18000ae20
cmp rax, 0xffffffffffffffff
je 0x180031a1d
mov r13d, 1
mov r9d, r13d
xor r8d, r8d
lea rdx, [0x18008c4cc]
lea rcx, [rbp - 0x60]
call fcn.18000ae20
cmp rax, 0xffffffffffffffff
je 0x180031a23
mov byte [rsp + 0x20], 0x20
lea rdx, [rsp + 0x20]
lea rcx, [rbp - 0x60]
call fcn.18000cc30
or r8, 0xffffffffffffffff
lea rdx, [rax + 1]
lea rcx, [rbp - 0x60]
call fcn.180002b60
mov byte [rsp + 0x20], 0x20
mov r8, qword [rbp - 0x50]
test r8, r8
je 0x1800319e2
lea rdi, [rbp - 0x60]
mov rdx, qword [rbp - 0x60]
mov rax, qword [rbp - 0x48]
cmp rax, 0x10
cmovae rdi, rdx
add rdi, r8
lea rbx, [rbp - 0x60]
cmp rax, 0x10
cmovae rbx, rdx
cmp rbx, rdi
jae 0x1800319e2
nop
movsx edx, byte [rbx]
mov r8, r13
lea rcx, [rsp + 0x20]
call fcn.180065b20
test rax, rax
je 0x1800319cf
inc rbx
cmp rbx, rdi
jb 0x1800319b0
jmp 0x1800319e2
lea rax, [rbp - 0x60]
cmp qword [rbp - 0x48], 0x10
cmovae rax, qword [rbp - 0x60]
sub rbx, rax
jmp 0x1800319e6
or rbx, 0xffffffffffffffff
mov r8, rbx
xor edx, edx
lea rcx, [rbp - 0x60]
call fcn.180002b60
lea rdx, [rbp - 0x60]
mov rsi, qword [rsp + 0x50]
mov rcx, rsi
call fcn.18000c2f0
xor ebx, ebx
mov qword [rbp - 0x50], rbx
lea rax, [rbp - 0x60]
cmp qword [rbp - 0x48], 0x10
cmovae rax, qword [rbp - 0x60]
mov byte [rax], bl
jmp 0x180031a2a
mov r13d, 1
xor ebx, ebx
mov rsi, qword [rsp + 0x50]
mov qword [r15 + 0x10], rbx
cmp qword [r15 + 0x18], 0x10
jb 0x180031a3a
mov rax, qword [r15]
jmp 0x180031a3d
mov rax, r15
mov byte [rax], 0
mov rdi, rbx
mov r8, qword [rsi]
mov rcx, qword [rsi + 8]
sub rcx, r8
movabs r12, 0x6666666666666667
mov rax, r12
imul rcx
sar rdx, 4
mov rax, rdx
shr rax, 0x3f
add rdx, rax
je 0x180031aaf
nop dword [rax]
lea rdx, [rbx + r8]
or r9, 0xffffffffffffffff
xor r8d, r8d
mov rcx, r15
call fcn.18000c770
inc rdi
add rbx, 0x28
mov r8, qword [rsi]
mov rcx, qword [rsi + 8]
sub rcx, r8
mov rax, r12
imul rcx
sar rdx, 4
mov rax, rdx
shr rax, 0x3f
add rdx, rax
cmp rdi, rdx
jb 0x180031a70
xor ebx, ebx
cmp qword [rbp + 8], 0x10
jb 0x180031abf
mov rcx, qword [rbp - 0x10]
call fcn.180064a00
mov qword [rbp + 8], 0xf
mov qword [rbp], rbx
mov byte [rbp - 0x10], 0
cmp qword [rbp - 0x48], 0x10
jb 0x180031adf
mov rcx, qword [rbp - 0x60]
call fcn.180064a00
mov qword [rbp - 0x48], 0xf
mov qword [rbp - 0x50], rbx
mov byte [rbp - 0x60], 0
cmp qword [rbp + 0x58], 0x10
jb 0x180031aff
mov rcx, qword [rbp + 0x40]
call fcn.180064a00
mov qword [rbp + 0x58], 0xf
mov qword [rbp + 0x50], rbx
mov byte [rbp + 0x40], 0
cmp qword [rbp - 0x20], 0x10
jb 0x180031b1f
mov rcx, qword [rbp - 0x38]
call fcn.180064a00
mov eax, r13d
mov rcx, qword [rbp + 0xb8]
xor rcx, rsp
call fcn.1800649e0
add rsp, 0x1c8
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbx
pop rbp
ret