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

Disassembly:
push r12
push rdi
push rsi
push rbx
sub rsp, 0x28
xor r12d, r12d
cmp qword [rcx + 8], 0xd
mov rbx, rcx
jne 0x14000ec85
call fcn.14000e95e
mov rcx, qword [0x14003bb80]
mov rdi, rax
call fcn.140023aa0
cmp byte [rax], 0
mov rsi, rax
jne 0x14000ec85
mov qword [rbx + 0x30], rdi
mov rcx, rbx
call fcn.14000e95e
cmp byte [rsi], 0
jne 0x14000ec85
mov qword [rbx + 0x38], rax
mov rcx, rbx
call fcn.14000ea15
cmp byte [rsi], 0
jne 0x14000ec85
mov qword [rbx + 0x40], rax
mov rcx, rbx
call fcn.14000eaa0
cmp byte [rsi], 0
jne 0x14000ec85
mov byte [rbx + 0x48], al
mov rcx, rbx
call fcn.14000ea15
cmp byte [rsi], 0
jne 0x14000ec85
mov qword [rbx + 0x50], rax
mov rcx, rbx
call fcn.14000ea15
cmp byte [rsi], 0
jne 0x14000ec85
mov qword [rbx + 0x58], rax
mov rcx, rbx
call fcn.14000ea15
cmp byte [rsi], 0
jne 0x14000ec85
mov byte [rbx + 0x60], al
mov r12b, 1
mov eax, r12d
add rsp, 0x28
pop rbx
pop rsi
pop rdi
pop r12
ret
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x38
mov rax, qword [rcx + 8]
mov rbx, rcx
cmp rax, 0x302
jg 0x14000ecce
mov ecx, 3
cqo
xor edi, edi
idiv rcx
lea rcx, [rbx + 0x30]
mov rdx, rax
call fcn.140005d18
mov r12, qword [rbx + 0x30]
jmp 0x14000ed81
mov edx, 8
mov ecx, 0x40
call fcn.1400052e5
lea rdx, str.PNGError
lea r9, str.nimPNG.nim
mov rcx, rax
lea rax, [0x140036ac0]
lea r8, str.parseChunk
mov qword [rcx], rax
lea rax, [0x140039700]
mov qword [rcx + 0x10], rdx
mov qword [rcx + 0x18], 0x13
mov qword [rcx + 0x20], rax
mov qword [rcx + 8], 0
mov qword [rsp + 0x20], 0x1ce
call fcn.140005828
jmp 0x14000ed86
mov rcx, rbx
mov rbp, qword [rbx + 0x38]
call fcn.14000ea15
mov rcx, qword [0x14003bb80]
mov r13, rax
call fcn.140023aa0
cmp byte [rax], 0
mov rsi, rax
jne 0x14000ed86
lea rbp, [rbp + rdi*4]
mov rcx, rbx
mov byte [rbp + 8], r13b
call fcn.14000ea15
cmp byte [rsi], 0
jne 0x14000ed86
mov byte [rbp + 9], al
mov rcx, rbx
call fcn.14000ea15
cmp byte [rsi], 0
jne 0x14000ed86
mov byte [rbp + 0xa], al
inc rdi
mov byte [rbp + 0xb], 0xff
cmp rdi, r12
jl 0x14000ed2e
mov al, 1
add rsp, 0x38
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
ret
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x30
mov r14, rdx
mov rsi, rcx
mov edx, 0x49484452
mov rcx, r14
call fcn.14000dd11
mov rcx, qword [0x14003bb80]
mov r13, rax
call fcn.140023aa0
mov r12b, byte [rax]
mov rbx, rax
test r12b, r12b
jne 0x14000f19a
test r13, r13
je 0x14000ef1f
mov al, byte [r13 + 0x48]
cmp al, 3
jne 0x14000ef23
jmp 0x14000ef30
xor ecx, ecx
jmp 0x14000ef78
test al, al
je 0x14000f081
jmp 0x14000f029
mov rcx, r14
mov edx, 0x504c5445
call fcn.14000dd11
cmp byte [rbx], 0
mov r14, rax
jne 0x14000f001
test rax, rax
je 0x14000ef62
mov rbp, qword [rsi + 8]
cmp rbp, qword [rax + 0x30]
jg 0x14000ef82
dec rbp
xor edi, edi
jmp 0x14000effa
xor ecx, ecx
call fcn.14000d8ff
mov r12b, byte [rbx]
test r12b, r12b
jne 0x14000f19d
mov rcx, r13
call fcn.14000d8ff
jmp 0x14000f1b6
mov edx, 8
mov ecx, 0x40
call fcn.1400052e5
lea rdx, str.PNGError
lea r9, str.nimPNG.nim
mov rcx, rax
lea rax, [0x140036ac0]
lea r8, str.parseChunk
mov qword [rcx], rax
lea rax, [0x1400396c0]
mov qword [rcx + 0x10], rdx
mov qword [rcx + 0x18], 0x25
mov qword [rcx + 0x20], rax
mov qword [rcx + 8], 0
mov qword [rsp + 0x20], 0x219
call fcn.140005828
jmp 0x14000f004
mov rcx, rsi
call fcn.14000ea15
cmp byte [rbx], 0
jne 0x14000f004
mov rdx, qword [r14 + 0x38]
mov byte [rdx + rdi*4 + 0xb], al
inc rdi
cmp rdi, rbp
jle 0x14000efe2
jmp 0x14000f004
xor r14d, r14d
mov sil, byte [rbx]
mov byte [rbx], 0
mov rcx, r14
call fcn.14000d8ff
cmp byte [rbx], 0
jne 0x14000f1a0
mov byte [rbx], sil
xor esi, 1
mov r12d, esi
jmp 0x14000f1a0
cmp al, 2
je 0x14000f0f3
mov edx, 8
mov ecx, 0x40
call fcn.1400052e5
lea rdx, str.PNGError
mov rcx, rax
lea rax, [0x140036ac0]
mov qword [rcx], rax
lea rax, [0x140039620]
mov qword [rcx + 0x10], rdx
mov qword [rcx + 0x18], 0x2d
mov qword [rcx + 0x20], rax
mov qword [rcx + 8], 0
mov qword [rsp + 0x20], 0x229
jmp 0x14000f157
cmp qword [rsi + 8], 2
jne 0x14000f0a6
mov rcx, rsi
call fcn.14000ee34
cmp byte [rbx], 0
jne 0x14000f1a0
mov qword [rsi + 0x30], rax
mov qword [rsi + 0x38], rax
jmp 0x14000f191
mov edx, 8
mov ecx, 0x40
call fcn.1400052e5
lea rdx, str.PNGError
mov rcx, rax
lea rax, [0x140036ac0]
mov qword [rcx], rax
lea rax, [0x1400396a0]
mov qword [rcx + 0x10], rdx
mov qword [rcx + 0x18], 0x14
mov qword [rcx + 0x20], rax
mov qword [rcx + 8], 0
mov qword [rsp + 0x20], 0x21e
jmp 0x14000f157
cmp qword [rsi + 8], 6
jne 0x14000f10c
mov rcx, rsi
call fcn.14000ee34
cmp byte [rbx], 0
je 0x14000f16c
jmp 0x14000f1a0
mov edx, 8
mov ecx, 0x40
call fcn.1400052e5
lea rdx, str.PNGError
mov rcx, rax
lea rax, [0x140036ac0]
mov qword [rcx], rax
lea rax, [0x140039660]
mov qword [rcx + 0x10], rdx
mov qword [rcx + 0x18], 0x14
mov qword [rcx + 0x20], rax
mov qword [rcx + 8], 0
mov qword [rsp + 0x20], 0x224
lea r9, str.nimPNG.nim
lea r8, str.parseChunk
call fcn.140005828
jmp 0x14000f1a0
mov qword [rsi + 0x30], rax
mov rcx, rsi
call fcn.14000ee34
mov r12b, byte [rbx]
test r12b, r12b
jne 0x14000f19d
mov qword [rsi + 0x38], rax
mov rcx, rsi
call fcn.14000ee34
cmp byte [rbx], 0
jne 0x14000f1a0
mov qword [rsi + 0x40], rax
mov r12b, 1
jmp 0x14000f1a0
xor r13d, r13d
xor r12d, r12d
mov sil, byte [rbx]
mov byte [rbx], 0
mov rcx, r13
call fcn.14000d8ff
cmp byte [rbx], 0
jne 0x14000f1b6
mov byte [rbx], sil
mov eax, r12d
add rsp, 0x30
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
ret
push r13
push r12
push rsi
push rbx
sub rsp, 0x38
mov rbx, rcx
mov rcx, rdx
mov edx, 0x49484452
call fcn.14000dd11
mov rcx, qword [0x14003bb80]
mov r13, rax
call fcn.140023aa0
mov r12b, byte [rax]
mov rsi, rax
test r12b, r12b
jne 0x14000f38e
mov al, byte [r13 + 0x48]
cmp al, 3
je 0x14000f20e
and al, 0xfb
je 0x14000f278
jmp 0x14000f26f
cmp qword [rbx + 8], 1
jne 0x14000f21f
mov rcx, rbx
call fcn.14000ea15
jmp 0x14000f287
mov edx, 8
mov ecx, 0x40
call fcn.1400052e5
lea rdx, str.PNGError
mov rcx, rax
lea rax, [0x140036ac0]
mov qword [rcx], rax
lea rax, [0x140039600]
mov qword [rcx + 0x10], rdx
mov qword [rcx + 0x18], 0x13
mov qword [rcx + 0x20], rax
mov qword [rcx + 8], 0
mov qword [rsp + 0x20], 0x231
jmp 0x14000f34e
cmp al, 2
je 0x14000f2ea
jmp 0x14000f393
cmp qword [rbx + 8], 2
jne 0x14000f29d
mov rcx, rbx
call fcn.14000ee34
cmp byte [rsi], 0
jne 0x14000f39b
mov qword [rbx + 0x30], rax
mov qword [rbx + 0x38], rax
jmp 0x14000f388
mov edx, 8
mov ecx, 0x40
call fcn.1400052e5
lea rdx, str.PNGError
mov rcx, rax
lea rax, [0x140036ac0]
mov qword [rcx], rax
lea rax, [0x1400395e0]
mov qword [rcx + 0x10], rdx
mov qword [rcx + 0x18], 0x13
mov qword [rcx + 0x20], rax
mov qword [rcx + 8], 0
mov qword [rsp + 0x20], 0x237
jmp 0x14000f34e
cmp qword [rbx + 8], 6
jne 0x14000f303
mov rcx, rbx
call fcn.14000ee34
cmp byte [rsi], 0
je 0x14000f363
jmp 0x14000f39b
mov edx, 8
mov ecx, 0x40
call fcn.1400052e5
lea rdx, str.PNGError
mov rcx, rax
lea rax, [0x140036ac0]
mov qword [rcx], rax
lea rax, [0x1400395c0]
mov qword [rcx + 0x10], rdx
mov qword [rcx + 0x18], 0x13
mov qword [rcx + 0x20], rax
mov qword [rcx + 8], 0
mov qword [rsp + 0x20], 0x23d
lea r9, str.nimPNG.nim
lea r8, str.parseChunk
call fcn.140005828
jmp 0x14000f39b
mov qword [rbx + 0x30], rax
mov rcx, rbx
call fcn.14000ee34
mov r12b, byte [rsi]
test r12b, r12b
jne 0x14000f398
mov qword [rbx + 0x38], rax
mov rcx, rbx
call fcn.14000ee34
cmp byte [rsi], 0
jne 0x14000f39b
mov qword [rbx + 0x40], rax
jmp 0x14000f393
xor r13d, r13d
jmp 0x14000f398
mov r12b, 1
jmp 0x14000f39b
xor r12d, r12d
mov bl, byte [rsi]
mov byte [rsi], 0
mov rcx, r13
call fcn.14000d8ff
cmp byte [rsi], 0
jne 0x14000f3af
mov byte [rsi], bl
mov eax, r12d
add rsp, 0x38
pop rbx
pop rsi
pop r12
pop r13
ret
push rdi
push rsi
push rbx
sub rsp, 0x30
cmp qword [rcx + 8], 7
mov rbx, rcx
jne 0x14000f459
call fcn.14000ee34
mov rcx, qword [0x14003bb80]
mov rdi, rax
call fcn.140023aa0
cmp byte [rax], 0
mov rsi, rax
jne 0x14000f4b7
mov qword [rbx + 0x30], rdi
mov rcx, rbx
call fcn.14000ea15
cmp byte [rsi], 0
jne 0x14000f4b7
mov qword [rbx + 0x38], rax
mov rcx, rbx
call fcn.14000ea15
cmp byte [rsi], 0
jne 0x14000f4b7
mov qword [rbx + 0x40], rax
mov rcx, rbx
call fcn.14000ea15
cmp byte [rsi], 0
jne 0x14000f4b7
mov qword [rbx + 0x48], rax
mov rcx, rbx
call fcn.14000ea15
cmp byte [rsi], 0
jne 0x14000f4b7
mov qword [rbx + 0x50], rax
mov rcx, rbx
call fcn.14000ea15
cmp byte [rsi], 0
jne 0x14000f4b7
mov qword [rbx + 0x58], rax
jmp 0x14000f4b7
mov edx, 8
mov ecx, 0x40
call fcn.1400052e5
lea rdx, str.PNGError
lea r9, str.nimPNG.nim
mov rcx, rax
lea rax, [0x140036ac0]
lea r8, str.parseChunk
mov qword [rcx], rax
lea rax, [0x1400395a0]
mov qword [rcx + 0x10], rdx
mov qword [rcx + 0x18], 0x14
mov qword [rcx + 0x20], rax
mov qword [rcx + 8], 0
mov qword [rsp + 0x20], 0x255
call fcn.140005828
mov al, 1
add rsp, 0x30
pop rbx
pop rsi
pop rdi
ret
push rdi
push rsi
push rbx
sub rsp, 0x30
cmp qword [rcx + 8], 9
mov rbx, rcx
jne 0x14000f51a
call fcn.14000e95e
mov rcx, qword [0x14003bb80]
mov rdi, rax
call fcn.140023aa0
cmp byte [rax], 0
mov rsi, rax
jne 0x14000f578
mov qword [rbx + 0x30], rdi
mov rcx, rbx
call fcn.14000e95e
cmp byte [rsi], 0
jne 0x14000f578
mov qword [rbx + 0x38], rax
mov rcx, rbx
call fcn.14000ea15
cmp byte [rsi], 0
jne 0x14000f578
mov qword [rbx + 0x40], rax
jmp 0x14000f578
mov edx, 8
mov ecx, 0x40
call fcn.1400052e5
lea rdx, str.PNGError
lea r9, str.nimPNG.nim
mov rcx, rax
lea rax, [0x140036ac0]
lea r8, str.parseChunk
mov qword [rcx], rax
lea rax, [0x140039580]
mov qword [rcx + 0x10], rdx
mov qword [rcx + 0x18], 0x14
mov qword [rcx + 0x20], rax
mov qword [rcx + 8], 0
mov qword [rsp + 0x20], 0x25f
call fcn.140005828
mov al, 1
add rsp, 0x30
pop rbx
pop rsi
pop rdi
ret
push r13
push r12
push rsi
push rbx
sub rsp, 0x58
xor esi, esi
mov rax, qword [rcx + 8]
mov rbx, rcx
cmp rax, rsi
jg 0x14000f5a1
test rsi, rsi
jne 0x14000f5b1
jmp 0x14000f60d
mov rdx, qword [rbx + 0x20]
cmp byte [rdx + rsi + 8], 0
je 0x14000f59a
inc rsi
jmp 0x14000f595
cmp rsi, 0x4f
jg 0x14000f60d
movups xmm0, xmmword [rbx + 0x18]
lea r12, [rsp + 0x40]
mov r9, rsi
xor r8d, r8d
lea r13, [rsp + 0x30]
mov rcx, r12
mov rdx, r13
movaps xmmword [rsp + 0x30], xmm0
call fcn.1400058bc
lea rcx, [rbx + 0x30]
mov rdx, r12
call fcn.140005360
movups xmm1, xmmword [rbx + 0x18]
mov rdx, r13
mov rcx, r12
lea r8, [rsi + 1]
movaps xmmword [rsp + 0x30], xmm1
call fcn.140005e96
lea rcx, [rbx + 0x40]
mov rdx, r12
call fcn.140005360
jmp 0x14000f66b
mov edx, 8
mov ecx, 0x40
call fcn.1400052e5
lea rdx, str.PNGError
lea r9, str.nimPNG.nim
mov rcx, rax
lea rax, [0x140036ac0]
lea r8, str.parseChunk
mov qword [rcx], rax
lea rax, [0x140039540]
mov qword [rcx + 0x10], rdx
mov qword [rcx + 0x18], 0x1d
mov qword [rcx + 0x20], rax
mov qword [rcx + 8], 0
mov qword [rsp + 0x20], 0x26d
call fcn.140005828
mov al, 1
add rsp, 0x58
pop rbx
pop rsi
pop r12
pop r13
ret
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x50
xor esi, esi
mov rax, qword [rcx + 8]
mov rbx, rcx
mov rbp, rdx
cmp rax, rsi
jle 0x14000f6a2
mov rdx, qword [rbx + 0x20]
cmp byte [rdx + rsi + 8], 0
jne 0x14000f6b8
mov rcx, qword [0x14003bb80]
call fcn.140023aa0
mov rdi, rax
test rsi, rsi
jne 0x14000f6bd
jmp 0x14000f700
inc rsi
jmp 0x14000f692
cmp rsi, 0x4f
jg 0x14000f700
movups xmm0, xmmword [rbx + 0x18]
lea r14, [rsp + 0x40]
xor r8d, r8d
mov r9, rsi
lea r12, [rsp + 0x30]
mov rcx, r14
mov rdx, r12
movaps xmmword [rsp + 0x30], xmm0
call fcn.1400058bc
lea rcx, [rbx + 0x30]
mov rdx, r14
call fcn.140005360
mov rax, qword [rbx + 0x20]
cmp byte [rax + rsi + 9], 0
je 0x14000f74d
jmp 0x14000f77d
mov edx, 8
mov ecx, 0x40
call fcn.1400052e5
lea rdx, str.PNGError
mov rcx, rax
lea rax, [0x140036ac0]
mov qword [rcx], rax
lea rax, [0x140039540]
mov qword [rcx + 0x10], rdx
mov qword [rcx + 0x18], 0x1d
mov qword [rcx + 0x20], rax
mov qword [rcx + 8], 0
mov qword [rsp + 0x20], 0x27c
jmp 0x14000f7c8
movups xmm1, xmmword [rbx + 0x18]
mov rdx, r12
lea r8, [rsi + 2]
mov rcx, r14
movaps xmmword [rsp + 0x30], xmm1
call fcn.140005e96
mov rcx, r14
call fcn.140009e23
mov r13b, byte [rdi]
mov r12, rax
test r13b, r13b
je 0x14000f7e0
jmp 0x14000f80d
mov edx, 8
mov ecx, 0x40
call fcn.1400052e5
lea rdx, str.PNGError
mov rcx, rax
lea rax, [0x140036ac0]
mov qword [rcx], rax
lea rax, [0x140039520]
mov qword [rcx + 0x10], rdx
mov qword [rcx + 0x18], 0x15
mov qword [rcx + 0x20], rax
mov qword [rcx + 8], 0
mov qword [rsp + 0x20], 0x280
lea r9, str.nimPNG.nim
lea r8, str.parseChunk
xor r12d, r12d
call fcn.140005828
jmp 0x14000f80d
mov rax, qword [rbp]
mov rdx, r12
mov rcx, r14
mov al, byte [rax + 0xc]
mov byte [r12 + 0x59], al
call fcn.14000b46b
cmp byte [rdi], 0
jne 0x14000f810
lea rcx, [rbx + 0x40]
mov rdx, r14
mov r13b, 1
call fcn.140005360
jmp 0x14000f810
xor r13d, r13d
mov bl, byte [rdi]
mov byte [rdi], 0
mov rcx, r12
call fcn.14000b6fb
cmp byte [rdi], 0
jne 0x14000f824
mov byte [rdi], bl
mov eax, r13d
add rsp, 0x50
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
ret
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x58
mov rax, qword [rcx + 8]
mov rbx, rcx
mov rdi, rdx
cmp rax, 4
jg 0x14000f89f
mov edx, 8
mov ecx, 0x40
call fcn.1400052e5
lea rdx, str.PNGError
mov rcx, rax
lea rax, [0x140036ac0]
mov qword [rcx], rax
lea rax, [0x140039500]
mov qword [rcx + 0x10], rdx
mov qword [rcx + 0x18], 0x12
mov qword [rcx + 0x20], rax
mov qword [rcx + 8], 0
mov qword [rsp + 0x20], 0x28e
jmp 0x14000f916
mov rdx, qword [rcx + 0x20]
xor esi, esi
cmp byte [rdx + rsi + 8], 0
jne 0x14000f8b7
lea rdx, [rsi + 3]
cmp rax, rdx
jg 0x14000f8c1
jmp 0x14000f8cb
inc rsi
cmp rax, rsi
je 0x14000f8ac
jmp 0x14000f8a5
test rsi, rsi
jne 0x14000f92e
jmp 0x14000f982
mov edx, 8
mov ecx, 0x40
call fcn.1400052e5
lea rdx, str.PNGError
mov rcx, rax
lea rax, [0x140036ac0]
mov qword [rcx], rax
lea rax, [0x1400394c0]
mov qword [rcx + 0x10], rdx
mov qword [rcx + 0x18], 0x22
mov qword [rcx + 0x20], rax
mov qword [rcx + 8], 0
mov qword [rsp + 0x20], 0x293
lea r9, str.nimPNG.nim
lea r8, str.parseChunk
call fcn.140005828
jmp 0x14000fb45
cmp rsi, 0x4f
jg 0x14000f982
movups xmm0, xmmword [rbx + 0x18]
lea r12, [rsp + 0x40]
xor r8d, r8d
mov r9, rsi
lea r13, [rsp + 0x30]
mov rcx, r12
mov rdx, r13
movaps xmmword [rsp + 0x30], xmm0
call fcn.1400058bc
lea rcx, [rbx + 0x30]
mov rdx, r12
call fcn.140005360
mov rax, qword [rbx + 0x20]
cmp byte [rax + rsi + 0xa], 0
mov bpl, byte [rax + rsi + 9]
jne 0x14000f9d2
mov rdx, qword [rbx + 8]
mov esi, 3
jmp 0x14000fa29
mov edx, 8
mov ecx, 0x40
call fcn.1400052e5
lea rdx, str.PNGError
mov rcx, rax
lea rax, [0x140036ac0]
mov qword [rcx], rax
lea rax, [0x140039540]
mov qword [rcx + 0x10], rdx
mov qword [rcx + 0x18], 0x1d
mov qword [rcx + 0x20], rax
mov qword [rcx + 8], 0
mov qword [rsp + 0x20], 0x294
jmp 0x14000f916
mov edx, 8
mov ecx, 0x40
call fcn.1400052e5
lea rdx, str.PNGError
mov rcx, rax
lea rax, [0x140036ac0]
mov qword [rcx], rax
lea rax, [0x140039520]
mov qword [rcx + 0x10], rdx
mov qword [rcx + 0x18], 0x15
mov qword [rcx + 0x20], rax
mov qword [rcx + 8], 0
mov qword [rsp + 0x20], 0x299
jmp 0x14000f916
cmp byte [rax + rsi + 7], 0
je 0x14000fa38
mov r8, rsi
lea r9, [rsi - 3]
inc rsi
cmp rdx, r8
jg 0x14000fa22
movups xmm1, xmmword [rbx + 0x18]
add r9, r8
mov rdx, r13
mov rcx, r12
movaps xmmword [rsp + 0x30], xmm1
call fcn.1400058bc
lea rcx, [rbx + 0x50]
mov rdx, r12
call fcn.140005360
mov rax, qword [rbx + 8]
xor r9d, r9d
lea r8, [r9 + rsi]
cmp rax, r8
jle 0x14000fa77
mov rdx, qword [rbx + 0x20]
cmp byte [rdx + r8 + 8], 0
jne 0x14000fad2
lea rsi, [r9 + r8]
movups xmm2, xmmword [rbx + 0x18]
mov rdx, r13
mov rcx, r12
mov r9, rsi
movaps xmmword [rsp + 0x30], xmm2
call fcn.1400058bc
mov rdx, r12
lea rcx, [rbx + 0x60]
call fcn.140005360
dec bpl
mov rax, qword [rbx + 0x18]
mov rdx, qword [rbx + 0x20]
lea r8, [rsi + 1]
je 0x14000fad7
mov qword [rsp + 0x38], rdx
mov rcx, r12
mov rdx, r13
mov qword [rsp + 0x30], rax
call fcn.140005e96
lea rcx, [rbx + 0x40]
mov rdx, r12
call fcn.140005360
jmp 0x14000fb45
inc r9
jmp 0x14000fa62
mov qword [rsp + 0x38], rdx
mov rcx, r12
mov rdx, r13
mov qword [rsp + 0x30], rax
call fcn.140005e96
mov rcx, r12
call fcn.140009e23
mov rcx, qword [0x14003bb80]
mov r13, rax
call fcn.140023aa0
cmp byte [rax], 0
mov rsi, rax
jne 0x14000fb31
mov rax, qword [rdi]
mov rdx, r13
mov rcx, r12
mov al, byte [rax + 0xc]
mov byte [r13 + 0x59], al
call fcn.14000b46b
cmp byte [rsi], 0
jne 0x14000fb31
lea rcx, [rbx + 0x40]
mov rdx, r12
call fcn.140005360
mov bl, byte [rsi]
mov byte [rsi], 0
mov rcx, r13
call fcn.14000b6fb
cmp byte [rsi], 0
jne 0x14000fb45
mov byte [rsi], bl
mov al, 1
add rsp, 0x58
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
ret
push rdi
push rsi
push rbx
sub rsp, 0x30
cmp qword [rcx + 8], 0x20
mov rbx, rcx
jne 0x14000fcb0
call fcn.14000e95e
mov rcx, qword [0x14003bb80]
mov rdi, rax
call fcn.140023aa0
cmp byte [rax], 0
mov rsi, rax
jne 0x14000fd0e
mov qword [rbx + 0x30], rdi
mov rcx, rbx
call fcn.14000e95e
cmp byte [rsi], 0
jne 0x14000fd0e
mov qword [rbx + 0x38], rax
mov rcx, rbx
call fcn.14000e95e
cmp byte [rsi], 0
jne 0x14000fd0e
mov qword [rbx + 0x40], rax
mov rcx, rbx
call fcn.14000e95e
cmp byte [rsi], 0
jne 0x14000fd0e
mov qword [rbx + 0x48], rax
mov rcx, rbx
call fcn.14000e95e
cmp byte [rsi], 0
jne 0x14000fd0e
mov qword [rbx + 0x50], rax
mov rcx, rbx
call fcn.14000e95e
cmp byte [rsi], 0
jne 0x14000fd0e
mov qword [rbx + 0x58], rax
mov rcx, rbx
call fcn.14000e95e
cmp byte [rsi], 0
jne 0x14000fd0e
mov qword [rbx + 0x60], rax
mov rcx, rbx
call fcn.14000e95e
cmp byte [rsi], 0
jne 0x14000fd0e
mov qword [rbx + 0x68], rax
jmp 0x14000fd0e
mov edx, 8
mov ecx, 0x40
call fcn.1400052e5
lea rdx, str.PNGError
lea r9, str.nimPNG.nim
mov rcx, rax
lea rax, [0x140036ac0]
lea r8, str.parseChunk
mov qword [rcx], rax
lea rax, [0x140039480]
mov qword [rcx + 0x10], rdx
mov qword [rcx + 0x18], 0x15
mov qword [rcx + 0x20], rax
mov qword [rcx + 8], 0
mov qword [rsp + 0x20], 0x2ba
call fcn.140005828
mov al, 1
add rsp, 0x30
pop rbx
pop rsi
pop rdi
ret
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x50
xor esi, esi
mov rax, qword [rcx + 8]
mov rbx, rcx
mov rbp, rdx
cmp rax, rsi
jle 0x14000fd42
mov rdx, qword [rbx + 0x20]
cmp byte [rdx + rsi + 8], 0
jne 0x14000fd58
mov rcx, qword [0x14003bb80]
call fcn.140023aa0
mov rdi, rax
test rsi, rsi
jne 0x14000fd5d
jmp 0x14000fda0
inc rsi
jmp 0x14000fd32
cmp rsi, 0x4f
jg 0x14000fda0
movups xmm0, xmmword [rbx + 0x18]
lea r14, [rsp + 0x40]
xor r8d, r8d
mov r9, rsi
lea r12, [rsp + 0x30]
mov rcx, r14
mov rdx, r12
movaps xmmword [rsp + 0x30], xmm0
call fcn.1400058bc
lea rcx, [rbx + 0x30]
mov rdx, r14
call fcn.140005360
mov rax, qword [rbx + 0x20]
cmp byte [rax + rsi + 9], 0
je 0x14000fded
jmp 0x14000fe1d
mov edx, 8
mov ecx, 0x40
call fcn.1400052e5
lea rdx, str.PNGError
mov rcx, rax
lea rax, [0x140036ac0]
mov qword [rcx], rax
lea rax, [0x140039540]
mov qword [rcx + 0x10], rdx
mov qword [rcx + 0x18], 0x1d
mov qword [rcx + 0x20], rax
mov qword [rcx + 8], 0
mov qword [rsp + 0x20], 0x2d2
jmp 0x14000fe68
movups xmm1, xmmword [rbx + 0x18]
mov rdx, r12
lea r8, [rsi + 2]
mov rcx, r14
movaps xmmword [rsp + 0x30], xmm1
call fcn.140005e96
mov rcx, r14
call fcn.140009e23
mov r13b, byte [rdi]
mov r12, rax
test r13b, r13b
je 0x14000fe80
jmp 0x14000fead
mov edx, 8
mov ecx, 0x40
call fcn.1400052e5
lea rdx, str.PNGError
mov rcx, rax
lea rax, [0x140036ac0]
mov qword [rcx], rax
lea rax, [0x140039520]
mov qword [rcx + 0x10], rdx
mov qword [rcx + 0x18], 0x15
mov qword [rcx + 0x20], rax
mov qword [rcx + 8], 0
mov qword [rsp + 0x20], 0x2d6
lea r9, str.nimPNG.nim
lea r8, str.parseChunk
xor r12d, r12d
call fcn.140005828
jmp 0x14000fead
mov rax, qword [rbp]
mov rdx, r12
mov rcx, r14
mov al, byte [rax + 0xc]
mov byte [r12 + 0x59], al
call fcn.14000b46b
cmp byte [rdi], 0
jne 0x14000feb0
lea rcx, [rbx + 0x40]
mov rdx, r14
mov r13b, 1
call fcn.140005360
jmp 0x14000feb0
xor r13d, r13d
mov bl, byte [rdi]
mov byte [rdi], 0
mov rcx, r12
call fcn.14000b6fb
cmp byte [rdi], 0
jne 0x14000fec4
mov byte [rdi], bl
mov eax, r13d
add rsp, 0x50
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
ret
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x50
xor edi, edi
mov rax, qword [rcx + 8]
mov rbx, rcx
cmp rax, rdi
jg 0x140010004
test rdi, rdi
jne 0x140010014
jmp 0x14001006c
mov rdx, qword [rbx + 0x20]
cmp byte [rdx + rdi + 8], 0
je 0x14000fffd
inc rdi
jmp 0x14000fff8
cmp rdi, 0x4f
jg 0x14001006c
movups xmm0, xmmword [rbx + 0x18]
lea r12, [rsp + 0x40]
xor r8d, r8d
mov r9, rdi
lea rdx, [rsp + 0x30]
mov rcx, r12
movaps xmmword [rsp + 0x30], xmm0
call fcn.1400058bc
lea rcx, [rbx + 0x30]
mov rdx, r12
call fcn.140005360
lea rdx, [rdi + 1]
mov rcx, rbx
call fcn.14000ff6c
mov rcx, qword [0x14003bb80]
call fcn.140023aa0
cmp byte [rax], 0
mov rsi, rax
je 0x1400100bc
jmp 0x14001032e
mov edx, 8
mov ecx, 0x40
call fcn.1400052e5
lea rdx, str.PNGError
mov rcx, rax
lea rax, [0x140036ac0]
mov qword [rcx], rax
lea rax, [0x140039540]
mov qword [rcx + 0x10], rdx
mov qword [rcx + 0x18], 0x1d
mov qword [rcx + 0x20], rax
mov qword [rcx + 8], 0
mov qword [rsp + 0x20], 0x2e0
jmp 0x1400102b1
mov rcx, rbx
call fcn.14000ea15
cmp byte [rsi], 0
mov rdx, rax
jne 0x14001032e
mov qword [rbx + 0x40], rax
lea rax, [rax - 8]
test rax, 0xfffffffffffffff7
jne 0x1400100f3
mov rax, qword [rbx + 8]
add rdi, 2
sub rax, rdi
cmp rdx, 8
jne 0x140010143
jmp 0x14001016e
mov edx, 8
mov ecx, 0x40
call fcn.1400052e5
lea rdx, str.PNGError
mov rcx, rax
lea rax, [0x140036ac0]
mov qword [rcx], rax
lea rax, [0x140039400]
mov qword [rcx + 0x10], rdx
mov qword [rcx + 0x18], 0x1a
mov qword [rcx + 0x20], rax
mov qword [rcx + 8], 0
mov qword [rsp + 0x20], 0x2e4
jmp 0x1400102b1
mov ecx, 0xa
cqo
idiv rcx
mov rdi, rdx
test rdx, rdx
jne 0x140010266
lea rcx, [rbx + 0x48]
mov rdx, rax
call fcn.140005f50
mov r12, qword [rbx + 0x48]
jmp 0x140010329
mov edi, 6
cqo
idiv rdi
mov rbp, rdx
test rdx, rdx
jne 0x140010195
lea rcx, [rbx + 0x48]
mov rdx, rax
call fcn.140005f50
mov r12, qword [rbx + 0x48]
jmp 0x14001025c
mov edx, 8
mov ecx, 0x40
call fcn.1400052e5
lea rdx, str.PNGError
mov rcx, rax
lea rax, [0x140036ac0]
mov qword [rcx], rax
lea rax, [0x1400393c0]
mov qword [rcx + 0x10], rdx
mov qword [rcx + 0x18], 0x21
mov qword [rcx + 0x20], rax
mov qword [rcx + 8], 0
mov qword [rsp + 0x20], 0x2e8
jmp 0x1400102b1
mov rcx, rbx
mov rdi, qword [rbx + 0x50]
call fcn.14000ea15
cmp byte [rsi], 0
jne 0x14001032e
imul rdx, rbp, 0x28
mov rcx, rbx
add rdi, rdx
mov qword [rdi + 8], rax
call fcn.14000ea15
cmp byte [rsi], 0
jne 0x14001032e
mov qword [rdi + 0x10], rax
mov rcx, rbx
call fcn.14000ea15
cmp byte [rsi], 0
jne 0x14001032e
mov qword [rdi + 0x18], rax
mov rcx, rbx
call fcn.14000ea15
cmp byte [rsi], 0
jne 0x14001032e
mov qword [rdi + 0x20], rax
mov rcx, rbx
call fcn.14000ee34
cmp byte [rsi], 0
jne 0x14001032e
mov qword [rdi + 0x28], rax
inc rbp
cmp rbp, r12
jl 0x1400101e5
jmp 0x14001032e
mov edx, 8
mov ecx, 0x40
call fcn.1400052e5
lea rdx, str.PNGError
mov rcx, rax
lea rax, [0x140036ac0]
mov qword [rcx], rax
lea rax, [0x140039380]
mov qword [rcx + 0x10], rdx
mov qword [rcx + 0x18], 0x22
mov qword [rcx + 0x20], rax
mov qword [rcx + 8], 0
mov qword [rsp + 0x20], 0x2f2
lea r9, str.nimPNG.nim
lea r8, str.parseChunk
call fcn.140005828
jmp 0x14001032e
mov rcx, rbx
mov rbp, qword [rbx + 0x50]
call fcn.14000ee34
cmp byte [rsi], 0
jne 0x14001032e
imul rdx, rdi, 0x28
mov rcx, rbx
add rbp, rdx
mov qword [rbp + 8], rax
call fcn.14000ee34
cmp byte [rsi], 0
jne 0x14001032e
mov qword [rbp + 0x10], rax
mov rcx, rbx
call fcn.14000ee34
cmp byte [rsi], 0
jne 0x14001032e
mov qword [rbp + 0x18], rax
mov rcx, rbx
call fcn.14000ee34
cmp byte [rsi], 0
jne 0x14001032e
mov qword [rbp + 0x20], rax
mov rcx, rbx
call fcn.14000ee34
cmp byte [rsi], 0
jne 0x14001032e
mov qword [rbp + 0x28], rax
inc rdi
cmp rdi, r12
jl 0x1400102c6
mov al, 1
add rsp, 0x50
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
ret
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x38
mov r13, rdx
mov rsi, rcx
mov edx, 0x504c5445
mov rcx, r13
call fcn.14000dbfc
mov rcx, qword [0x14003bb80]
mov r12d, eax
call fcn.140023aa0
cmp byte [rax], 0
mov rbx, rax
jne 0x1400104a6
test r12b, r12b
je 0x140010394
mov rcx, r13
mov edx, 0x504c5445
call fcn.14000dd11
cmp byte [rbx], 0
mov r13, rax
je 0x1400103fa
jmp 0x1400104a6
mov edx, 8
mov ecx, 0x40
xor r13d, r13d
call fcn.1400052e5
lea rdx, str.PNGError
lea r9, str.nimPNG.nim
mov rcx, rax
lea rax, [0x140036ac0]
lea r8, str.parseChunk
mov qword [rcx], rax
lea rax, [0x140039360]
mov qword [rcx + 0x10], rdx
mov qword [rcx + 0x18], 0x13
mov qword [rcx + 0x20], rax
mov qword [rcx + 8], 0
mov qword [rsp + 0x20], 0x2ff
call fcn.140005828
jmp 0x1400104ac
mov rax, qword [rsi + 8]
mov ecx, 2
cqo
idiv rcx
cmp rax, qword [r13 + 0x30]
jne 0x140010426
mov rdx, rax
lea rcx, [rsi + 0x30]
xor edi, edi
call fcn.140005de0
mov rax, qword [rsi + 0x30]
lea rbp, [rax - 1]
jmp 0x14001049f
mov edx, 8
mov ecx, 0x40
call fcn.1400052e5
lea rdx, str.PNGError
lea r9, str.nimPNG.nim
mov rcx, rax
lea rax, [0x140036ac0]
lea r8, str.parseChunk
mov qword [rcx], rax
lea rax, [0x140039320]
mov qword [rcx + 0x10], rdx
mov qword [rcx + 0x18], 0x18
mov qword [rcx + 0x20], rax
mov qword [rcx + 8], 0
mov qword [rsp + 0x20], 0x301
call fcn.140005828
jmp 0x1400104a9
mov rcx, rsi
call fcn.14000ee34
cmp byte [rbx], 0
jne 0x1400104a9
mov rdx, qword [rsi + 0x38]
mov qword [rdx + rdi*8 + 8], rax
inc rdi
cmp rdi, rbp
jle 0x140010486
jmp 0x1400104ac
xor r13d, r13d
xor r12d, r12d
mov sil, byte [rbx]
mov byte [rbx], 0
mov rcx, r13
call fcn.14000d8ff
cmp byte [rbx], 0
jne 0x1400104c2
mov byte [rbx], sil
mov eax, r12d
add rsp, 0x38
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
ret
push r13
push r12
push rsi
push rbx
sub rsp, 0x38
mov rsi, rcx
mov rcx, rdx
mov edx, 0x49484452
call fcn.14000dd11
mov rcx, qword [0x14003bb80]
mov r12, rax
call fcn.140023aa0
mov r13b, byte [rax]
mov rbx, rax
test r13b, r13b
jne 0x140010609
mov al, byte [r12 + 0x48]
xor edx, edx
cmp al, 6
ja 0x140010524
movzx edx, al
lea rcx, [0x140038add]
movsx rdx, byte [rcx + rdx]
cmp qword [rsi + 8], rdx
jne 0x14001053a
mov ecx, 8
cmp al, 3
je 0x140010587
mov rcx, qword [r12 + 0x40]
jmp 0x140010587
mov edx, 8
mov ecx, 0x40
call fcn.1400052e5
lea rdx, str.PNGError
mov rcx, rax
lea rax, [0x140036ac0]
mov qword [rcx], rax
lea rax, [0x140039300]
mov qword [rcx + 0x10], rdx
mov qword [rcx + 0x18], 0x13
mov qword [rcx + 0x20], rax
mov qword [rcx + 8], 0
mov qword [rsp + 0x20], 0x311
jmp 0x1400105f4
mov r8, qword [rsi + 0x18]
xor eax, eax
cmp rax, r8
jge 0x140010611
mov rdx, qword [rsi + 0x20]
movzx edx, byte [rdx + rax + 8]
test dl, dl
je 0x1400105a9
cmp rdx, rcx
jg 0x1400105a9
inc rax
jmp 0x14001058d
mov edx, 8
mov ecx, 0x40
call fcn.1400052e5
lea rdx, str.PNGError
mov rcx, rax
lea rax, [0x140036ac0]
mov qword [rcx], rax
lea rax, [0x1400392e0]
mov qword [rcx + 0x10], rdx
mov qword [rcx + 0x18], 0x12
mov qword [rcx + 0x20], rax
mov qword [rcx + 8], 0
mov qword [rsp + 0x20], 0x315
lea r9, str.nimPNG.nim
lea r8, str.parseChunk
call fcn.140005828
jmp 0x140010614
xor r12d, r12d
xor r13d, r13d
jmp 0x140010614
mov r13b, 1
mov sil, byte [rbx]
mov byte [rbx], 0
mov rcx, r12
call fcn.14000d8ff
cmp byte [rbx], 0
jne 0x14001062a
mov byte [rbx], sil
mov eax, r13d
add rsp, 0x38
pop rbx
pop rsi
pop r12
pop r13
ret
push rdi
push rsi
push rbx
sub rsp, 0x20
mov rbx, rcx
call fcn.14000e95e
mov rcx, qword [0x14003bb80]
mov rdi, rax
call fcn.140023aa0
cmp byte [rax], 0
mov rsi, rax
jne 0x140010673
mov qword [rbx + 0x30], rdi
mov rcx, rbx
call fcn.14000e95e
cmp byte [rsi], 0
jne 0x140010673
mov qword [rbx + 0x38], rax
mov al, 1
add rsp, 0x20
pop rbx
pop rsi
pop rdi
ret
push rdi
push rsi
push rbx
sub rsp, 0x20
mov rbx, rcx
call fcn.14000e95e
mov rcx, qword [0x14003bb80]
mov rdi, rax
call fcn.140023aa0
cmp byte [rax], 0
mov rsi, rax
jne 0x140010731
mov qword [rbx + 0x30], rdi
mov rcx, rbx
call fcn.14000e95e
cmp byte [rsi], 0
jne 0x140010731
mov qword [rbx + 0x38], rax
mov rcx, rbx
call fcn.14000e95e
cmp byte [rsi], 0
jne 0x140010731
mov qword [rbx + 0x40], rax
mov rcx, rbx
call fcn.14000e95e
cmp byte [rsi], 0
jne 0x140010731
mov qword [rbx + 0x48], rax
mov rcx, rbx
call fcn.14000e95e
cmp byte [rsi], 0
jne 0x140010731
mov qword [rbx + 0x50], rax
mov rcx, rbx
call fcn.14000ee34
cmp byte [rsi], 0
jne 0x140010731
mov qword [rbx + 0x58], rax
mov rcx, rbx
call fcn.14000ee34
cmp byte [rsi], 0
jne 0x140010731
mov qword [rbx + 0x60], rax
mov rcx, rbx
call fcn.14000ea15
cmp byte [rsi], 0
jne 0x140010731
mov byte [rbx + 0x68], al
mov rcx, rbx
call fcn.14000ea15
cmp byte [rsi], 0
jne 0x140010731
mov byte [rbx + 0x69], al
mov al, 1
add rsp, 0x20
pop rbx
pop rsi
pop rdi
ret
mov eax, dword [rcx + 0x10]
cmp eax, 0x69434350
je 0x14001088a
jg 0x14001080e
cmp eax, 0x6348524d
je 0x140010885
jg 0x1400107d6
cmp eax, 0x504c5445
je 0x140010867
jg 0x1400107bb
cmp eax, 0x49444154
je 0x14001086c
cmp eax, 0x49484452
jne 0x1400108a3
jmp 0x14000ebe4
cmp eax, 0x6163544c
je 0x140010899
cmp eax, 0x624b4744
jne 0x1400108a3
jmp 0x14000f1c8
cmp eax, 0x67414d41
je 0x140010880
jg 0x1400107fe
cmp eax, 0x6663544c
je 0x14001089e
cmp eax, 0x66644154
jne 0x1400108a3
jmp fcn.14001073b
cmp eax, 0x68495354
jne 0x1400108a3
jmp 0x14001033b
cmp eax, 0x73524742
je 0x14001088f
jg 0x14001083f
cmp eax, 0x73424954
je 0x140010894
jg 0x140010833
cmp eax, 0x69545874
je 0x14001087b
cmp eax, 0x70485973
jne 0x1400108a3
jmp 0x14000f4c1
cmp eax, 0x73504c54
jne 0x1400108a3
jmp 0x14000ffe5
cmp eax, 0x74524e53
je 0x140010871
jg 0x14001085b
cmp eax, 0x74455874
je 0x140010876
cmp eax, 0x74494d45
jne 0x1400108a3
jmp 0x14000f3bd
cmp eax, 0x7a545874
jne 0x1400108a3
jmp 0x14000f678
jmp 0x14000ec92
jmp fcn.14000ed95
jmp 0x14000eed1
jmp 0x14000f582
jmp 0x14000f836
jmp fcn.14000fb54
jmp 0x14000fbea
jmp 0x14000fd18
jmp fcn.14000fed6
jmp 0x1400104d2
jmp 0x140010638
jmp 0x14001067d
mov al, 1
ret