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

Disassembly:
mov rax, rsp
push rbp
push rbx
push rsi
push rdi
push r12
push r13
push r14
push r15
lea rbp, [rax - 0x158]
sub rsp, 0x218
movaps xmmword [rax - 0x58], xmm6
movaps xmmword [rax - 0x68], xmm7
movaps xmmword [rax - 0x78], xmm8
movaps xmmword [rax - 0x88], xmm9
mov rax, qword [0x140424b58]
xor rax, rsp
mov qword [rbp + 0xc0], rax
mov r12, r8
mov rsi, rdx
mov r15, rcx
mov r14d, 0xf
mov qword [rbp - 0x10], r14
mov edi, 2
mov qword [rbp - 0x18], rdi
movzx eax, word [0x1403546f0]
mov word [rbp - 0x28], ax
mov byte [rbp - 0x26], 0
mov rax, qword [r9]
lea r8, [rbp - 0x28]
cmp qword [rdx + 0x18], 0x10
jb 0x14003be9f
mov rdx, qword [rdx]
mov rcx, r9
call qword [rax + 0x18]
mov rbx, rax
mov qword [rbp - 0x30], rax
mov rdx, qword [rbp - 0x10]
cmp rdx, 0x10
jb 0x14003beea
inc rdx
mov rcx, qword [rbp - 0x28]
mov rax, rcx
cmp rdx, 0x1000
jb 0x14003bee5
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
jbe 0x14003bee5
call qword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__invalid_parameter_noinfo_noreturn]
int3
call fcn.1401a68e0
xor r13d, r13d
mov qword [rbp - 0x18], r13
mov qword [rbp - 0x10], r14
mov byte [rbp - 0x28], r13b
test rbx, rbx
je 0x14003d312
xorps xmm0, xmm0
movdqu xmmword [rbp - 0x48], xmm0
mov qword [rbp - 0x38], r13
lea r8d, [r13 + 1]
lea rdx, [rbp - 0x48]
mov rcx, rbx
call fcn.14007b8b0
mov rcx, qword [rbp - 0x48]
mov qword [r15 + 0x30], rcx
mov dword [r15 + 0x3c], r13d
mov qword [r15 + 0x4c], r13
mov dword [r15 + 0x54], r13d
mov dword [r15 + 0x48], r13d
lea r8d, [r13 + 4]
lea rdx, str.AC3D
call qword [sym.imp.api_ms_win_crt_string_l1_1_0.dll_strncmp]
test eax, eax
jne 0x14003d35d
mov rax, qword [r15 + 0x30]
movsx edx, byte [rax + 4]
mov ecx, 0xffffffff
lea eax, [rdx - 0x30]
cmp al, 9
ja 0x14003bf68
lea ecx, [rdx - 0x30]
jmp 0x14003bf7e
lea eax, [rdx - 0x61]
cmp al, 5
ja 0x14003bf74
lea ecx, [rdx - 0x57]
jmp 0x14003bf7e
lea eax, [rdx - 0x41]
cmp al, 5
ja 0x14003bf7e
lea ecx, [rdx - 0x37]
mov r9d, ecx
test ecx, ecx
jns 0x14003bf8f
mov byte [rsp + 0x30], 0x2d
neg r9d
jmp 0x14003bf94
mov edi, 1
lea r10, [rsp + 0x30]
lea rax, [rsp + 0x31]
test ecx, ecx
cmovs r10, rax
mov r8d, 0x3b9aca00
xor r11b, r11b
nop dword [rax]
mov eax, r9d
cdq
idiv r8d
test r11b, r11b
jne 0x14003bfc6
test eax, eax
jne 0x14003bfc6
cmp r8d, 1
jne 0x14003bfe1
mov r11b, 1
lea ecx, [rax + 0x30]
mov byte [r10], cl
inc r10
inc edi
imul eax, r8d
sub r9d, eax
cmp r8d, 1
je 0x14003bffe
mov eax, 0x66666667
imul r8d
mov r8d, edx
sar r8d, 2
mov eax, r8d
shr eax, 0x1f
add r8d, eax
cmp edi, 3
jb 0x14003bfb0
mov byte [r10], 0
call fcn.1400f2ee0
mov r14, rax
mov qword [rbp + 8], r13
mov edi, 0xf
mov qword [rbp + 0x10], rdi
mov byte [rbp - 8], 0
lea ecx, [rdi + 0x11]
call fcn.14032af80
mov rdx, rax
mov qword [rbp + 8], 0x1a
mov qword [rbp + 0x10], 0x1f
movups xmm0, xmmword [str.AC3D_file_format_version:]
movups xmmword [rax], xmm0
movsd xmm1, qword [0x140355328]
movsd qword [rax + 0x10], xmm1
movzx ecx, word [0x140355330]
mov word [rax + 0x18], cx
mov byte [rax + 0x1a], 0
mov qword [rbp - 8], rax
lea rax, [rsp + 0x30]
mov rsi, 0xffffffffffffffff
nop dword [rax]
inc rsi
cmp byte [rax + rsi], 0
jne 0x14003c070
mov rcx, qword [rbp + 8]
mov r8, qword [rbp + 0x10]
mov rax, r8
sub rax, rcx
cmp rsi, rax
ja 0x14003c0c2
lea rax, [rcx + rsi]
mov qword [rbp + 8], rax
lea rdi, [rbp - 8]
cmp r8, 0x10
cmovae rdi, rdx
add rdi, rcx
mov r8, rsi
lea rdx, [rsp + 0x30]
mov rcx, rdi
call sub.VCRUNTIME140.dll_memcpy
mov byte [rsi + rdi], 0
lea rax, [rbp - 8]
mov edi, 0xf
jmp 0x14003c0db
mov qword [rsp + 0x20], rsi
lea r9, [rsp + 0x30]
xor r8d, r8d
mov rdx, rsi
lea rcx, [rbp - 8]
call fcn.140021e20
mov qword [rbp - 0x18], r13
mov qword [rbp - 0x10], r13
movups xmm0, xmmword [rax]
movups xmmword [rbp - 0x28], xmm0
movups xmm1, xmmword [rax + 0x10]
movups xmmword [rbp - 0x18], xmm1
mov qword [rax + 0x10], r13
mov qword [rax + 0x18], rdi
mov byte [rax], 0
lea rdx, [rbp - 0x28]
cmp qword [rbp - 0x10], 0x10
cmovae rdx, qword [rbp - 0x28]
mov rcx, r14
call fcn.1400f2ef0
nop
mov rdx, qword [rbp - 0x10]
cmp rdx, 0x10
jb 0x14003c152
inc rdx
mov rcx, qword [rbp - 0x28]
mov rax, rcx
cmp rdx, 0x1000
jb 0x14003c14d
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
jbe 0x14003c14d
call qword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__invalid_parameter_noinfo_noreturn]
int3
call fcn.1401a68e0
xor r14d, r14d
mov qword [rbp - 0x18], r14
mov qword [rbp - 0x10], rdi
mov byte [rbp - 0x28], r14b
mov rdx, qword [rbp + 0x10]
cmp rdx, 0x10
jb 0x14003c19f
inc rdx
mov rcx, qword [rbp - 8]
mov rax, rcx
cmp rdx, 0x1000
jb 0x14003c19a
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
jbe 0x14003c19a
call qword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__invalid_parameter_noinfo_noreturn]
int3
call fcn.1401a68e0
xorps xmm0, xmm0
movdqu xmmword [rsp + 0x40], xmm0
mov qword [rsp + 0x50], r14
mov edx, 5
lea rcx, [rsp + 0x40]
call fcn.14003ee90
xorps xmm0, xmm0
movdqu xmmword [rsp + 0x58], xmm0
mov qword [rsp + 0x68], r14
mov edx, 5
lea rcx, [rsp + 0x58]
call fcn.14003ef20
xorps xmm0, xmm0
movdqu xmmword [rsp + 0x70], xmm0
mov qword [rbp - 0x80], r14
lea rax, [rsp + 0x70]
mov qword [r15 + 0x40], rax
mov esi, 0x3401
movss xmm7, dword [0x140354230]
xorps xmm8, xmm8
movss xmm9, dword [0x140355594]
jmp 0x14003c225
call fcn.1400f2ee0
lea rdx, str.AC3D:_Unexpected_EOF_EOL
mov rcx, rax
call fcn.1400f2ec0
nop
mov edi, 0xf
movabs r13, 0x100002601
mov rax, qword [r15 + 0x30]
movzx ecx, byte [rax]
cmp cl, 0xd
je 0x14003c257
nop dword [rax + rax]
cmp cl, 0xa
je 0x14003c257
test cl, cl
je 0x14003c257
inc rax
movzx ecx, byte [rax]
cmp cl, 0xd
jne 0x14003c240
inc rax
movzx ecx, byte [rax]
cmp cl, 0xd
je 0x14003c264
cmp cl, 0xa
jne 0x14003c269
inc rax
jmp 0x14003c257
mov qword [r15 + 0x30], rax
mov rdx, rax
movzx eax, byte [rdx]
cmp al, 0x20
je 0x14003c27b
cmp al, 9
jne 0x14003c280
inc rdx
jmp 0x14003c270
mov qword [r15 + 0x30], rdx
movsx eax, byte [rdx]
cmp al, 0xd
ja 0x14003c294
bt esi, eax
jb 0x14003cc7e
mov r8d, 8
lea rcx, str.MATERIAL
call qword [sym.imp.api_ms_win_crt_string_l1_1_0.dll_strncmp]
test eax, eax
jne 0x14003c2df
mov r8, qword [r15 + 0x30]
lea rdx, [r8 + 8]
movsx rcx, byte [rdx]
cmp cl, 0x20
ja 0x14003c2ce
bt r13, rcx
jae 0x14003c2ce
test cl, cl
jne 0x14003c2d3
mov qword [r15 + 0x30], rdx
mov al, 1
jmp 0x14003c2e1
cmp cl, 0xc
jne 0x14003c2df
lea rdx, [r8 + 9]
mov qword [r15 + 0x30], rdx
mov al, 1
jmp 0x14003c2e1
xor al, al
test al, al
je 0x14003c974
movaps xmm0, xmmword [0x1403555b0]
movaps xmmword [rbp + 0x20], xmm0
xorps xmm1, xmm1
movaps xmmword [rbp + 0x30], xmm1
movaps xmm0, xmmword [0x1403555c0]
movaps xmmword [rbp + 0x40], xmm0
mov qword [rbp + 0x50], 0
mov qword [rbp + 0x68], r14
mov qword [rbp + 0x70], rdi
mov byte [rbp + 0x58], 0
mov rdx, qword [rsp + 0x48]
cmp rdx, qword [rsp + 0x50]
je 0x14003c388
mov dword [rdx], 0x3f19999a
mov dword [rdx + 4], 0x3f19999a
mov qword [rdx + 8], 0x3f19999a
mov qword [rdx + 0x10], 0
mov qword [rdx + 0x18], 0
mov dword [rdx + 0x20], r14d
mov dword [rdx + 0x24], 0x3f800000
mov dword [rdx + 0x28], 0x3f800000
mov qword [rdx + 0x2c], 0x3f800000
mov dword [rdx + 0x34], r14d
movups xmm0, xmmword [rbp + 0x58]
movups xmmword [rdx + 0x38], xmm0
movups xmm1, xmmword [rbp + 0x68]
movups xmmword [rdx + 0x48], xmm1
mov rdx, rdi
mov byte [rbp + 0x58], 0
add qword [rsp + 0x48], 0x58
jmp 0x14003c39a
lea r8, [rbp + 0x20]
lea rcx, [rsp + 0x40]
call fcn.140039370
mov rdx, qword [rbp + 0x70]
cmp rdx, 0x10
jb 0x14003c3d1
inc rdx
mov rcx, qword [rbp + 0x58]
mov rax, rcx
cmp rdx, 0x1000
jb 0x14003c3cc
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x14003d2bb
call fcn.1401a68e0
mov r13, qword [rsp + 0x48]
mov rcx, qword [r15 + 0x30]
nop word [rax + rax]
movzx eax, byte [rcx]
cmp al, 0x20
je 0x14003c3eb
cmp al, 9
jne 0x14003c3f0
inc rcx
jmp 0x14003c3e0
mov qword [r15 + 0x30], rcx
movsx eax, byte [rcx]
cmp al, 0xd
ja 0x14003c419
bt esi, eax
jae 0x14003c419
call fcn.1400f2ee0
lea rdx, str.AC3D:_Unexpected_EOF_EOL
mov rcx, rax
call fcn.1400f2ec0
jmp 0x14003c225
cmp byte [rcx], 0x22
jne 0x14003c530
inc rcx
mov rdi, rcx
mov qword [r15 + 0x30], rcx
movzx eax, byte [rcx]
cmp al, 0x22
je 0x14003c472
cmp al, 0xd
ja 0x14003c43f
movsx eax, al
bt esi, eax
jb 0x14003c444
inc rcx
jmp 0x14003c428
call fcn.1400f2ee0
lea rdx, str.AC3D:_Unexpected_EOF_EOL_in_string
mov rcx, rax
call fcn.1400f2ec0
lea rcx, [r13 - 0x20]
mov r8d, 5
lea rdx, str.ERROR
call fcn.140028740
mov rcx, qword [r15 + 0x30]
movzx edx, byte [rcx]
mov eax, ecx
cmp dl, 0xd
je 0x14003c48a
cmp dl, 0xa
je 0x14003c48a
test dl, dl
je 0x14003c48a
cmp dl, 0xc
jne 0x14003c496
mov ecx, eax
cmp r14b, 1
jne 0x14003c220
mov qword [rbp - 0x18], r14
mov qword [rbp - 0x10], 0xf
mov byte [rbp - 0x28], 0
sub ecx, edi
mov r8d, ecx
mov rdx, rdi
lea rcx, [rbp - 0x28]
call fcn.140028740
lea rcx, [r13 - 0x20]
lea rdx, [rbp - 0x28]
call fcn.140023640
mov rdx, qword [rbp - 0x10]
cmp rdx, 0x10
jb 0x14003c4ff
inc rdx
mov rcx, qword [rbp - 0x28]
mov rax, rcx
cmp rdx, 0x1000
jb 0x14003c4fa
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x14003d2bb
call fcn.1401a68e0
inc qword [r15 + 0x30]
mov rcx, qword [r15 + 0x30]
movzx eax, byte [rcx]
cmp al, 0x20
je 0x14003c512
cmp al, 9
jne 0x14003c517
inc rcx
jmp 0x14003c507
mov qword [r15 + 0x30], rcx
movsx eax, byte [rcx]
cmp al, 0xd
ja 0x14003c52b
bt esi, eax
jb 0x14003c20b
mov edi, 0xf
movzx eax, byte [rcx]
cmp al, 0x20
je 0x14003c53b
cmp al, 9
jne 0x14003c540
inc rcx
jmp 0x14003c530
mov qword [r15 + 0x30], rcx
movsx eax, byte [rcx]
cmp al, 0xd
ja 0x14003c554
bt esi, eax
jb 0x14003c400
mov r8d, 3
lea rdx, [0x140355344]
call qword [sym.imp.api_ms_win_crt_string_l1_1_0.dll_strncmp]
test eax, eax
jne 0x14003cc65
mov rcx, qword [r15 + 0x30]
movzx eax, byte [rcx + 3]
cmp al, 0x20
je 0x14003c583
cmp al, 9
jne 0x14003cc65
lea rax, [rcx + 4]
mov qword [r15 + 0x30], rax
mov edi, r14d
nop
mov rcx, qword [r15 + 0x30]
movzx eax, byte [rcx]
cmp al, 0x20
je 0x14003c59f
cmp al, 9
jne 0x14003c5a4
inc rcx
jmp 0x14003c594
mov qword [r15 + 0x30], rcx
movsx eax, byte [rcx]
cmp al, 0xd
ja 0x14003c5ca
bt esi, eax
jae 0x14003c5ca
call fcn.1400f2ee0
lea rdx, str.AC3D:_Unexpected_EOF_EOL
mov rcx, rax
call fcn.1400f2ec0
jmp 0x14003c5e0
mov eax, edi
lea rdx, [r13 - 0x58]
lea rdx, [rdx + rax*4]
mov r8b, 1
call fcn.140039ad0
mov qword [r15 + 0x30], rax
inc edi
cmp edi, 3
jb 0x14003c590
mov rcx, qword [r15 + 0x30]
nop dword [rax + rax]
movzx eax, byte [rcx]
cmp al, 0x20
je 0x14003c5fb
cmp al, 9
jne 0x14003c600
inc rcx
jmp 0x14003c5f0
mov qword [r15 + 0x30], rcx
movsx eax, byte [rcx]
cmp al, 0xd
ja 0x14003c614
bt esi, eax
jb 0x14003c20b
mov r8d, 3
lea rdx, [0x140355374]
call qword [sym.imp.api_ms_win_crt_string_l1_1_0.dll_strncmp]
test eax, eax
jne 0x14003cc54
mov rcx, qword [r15 + 0x30]
movzx eax, byte [rcx + 3]
cmp al, 0x20
je 0x14003c643
cmp al, 9
jne 0x14003cc54
lea rax, [rcx + 4]
mov qword [r15 + 0x30], rax
mov edi, r14d
nop
mov rcx, qword [r15 + 0x30]
movzx eax, byte [rcx]
cmp al, 0x20
je 0x14003c65f
cmp al, 9
jne 0x14003c664
inc rcx
jmp 0x14003c654
mov qword [r15 + 0x30], rcx
movsx eax, byte [rcx]
cmp al, 0xd
ja 0x14003c68a
bt esi, eax
jae 0x14003c68a
call fcn.1400f2ee0
lea rdx, str.AC3D:_Unexpected_EOF_EOL
mov rcx, rax
call fcn.1400f2ec0
jmp 0x14003c6a0
mov eax, edi
lea rdx, [r13 - 0x4c]
lea rdx, [rdx + rax*4]
mov r8b, 1
call fcn.140039ad0
mov qword [r15 + 0x30], rax
inc edi
cmp edi, 3
jb 0x14003c650
mov rcx, qword [r15 + 0x30]
nop dword [rax + rax]
movzx eax, byte [rcx]
cmp al, 0x20
je 0x14003c6bb
cmp al, 9
jne 0x14003c6c0
inc rcx
jmp 0x14003c6b0
mov qword [r15 + 0x30], rcx
movsx eax, byte [rcx]
cmp al, 0xd
ja 0x14003c6d4
bt esi, eax
jb 0x14003c20b
mov r8d, 4
lea rdx, str.emis
call qword [sym.imp.api_ms_win_crt_string_l1_1_0.dll_strncmp]
test eax, eax
jne 0x14003cc43
mov rcx, qword [r15 + 0x30]
movzx eax, byte [rcx + 4]
cmp al, 0x20
je 0x14003c703
cmp al, 9
jne 0x14003cc43
lea rax, [rcx + 5]
mov qword [r15 + 0x30], rax
mov edi, r14d
nop
mov rcx, qword [r15 + 0x30]
movzx eax, byte [rcx]
cmp al, 0x20
je 0x14003c71f
cmp al, 9
jne 0x14003c724
inc rcx
jmp 0x14003c714
mov qword [r15 + 0x30], rcx
movsx eax, byte [rcx]
cmp al, 0xd
ja 0x14003c74a
bt esi, eax
jae 0x14003c74a
call fcn.1400f2ee0
lea rdx, str.AC3D:_Unexpected_EOF_EOL
mov rcx, rax
call fcn.1400f2ec0
jmp 0x14003c760
mov eax, edi
lea rdx, [r13 - 0x40]
lea rdx, [rdx + rax*4]
mov r8b, 1
call fcn.140039ad0
mov qword [r15 + 0x30], rax
inc edi
cmp edi, 3
jb 0x14003c710
mov rcx, qword [r15 + 0x30]
nop dword [rax + rax]
movzx eax, byte [rcx]
cmp al, 0x20
je 0x14003c77b
cmp al, 9
jne 0x14003c780
inc rcx
jmp 0x14003c770
mov qword [r15 + 0x30], rcx
movsx eax, byte [rcx]
cmp al, 0xd
ja 0x14003c794
bt esi, eax
jb 0x14003c20b
mov r8d, 4
lea rdx, str.spec
call qword [sym.imp.api_ms_win_crt_string_l1_1_0.dll_strncmp]
test eax, eax
jne 0x14003cc32
mov rcx, qword [r15 + 0x30]
movzx eax, byte [rcx + 4]
cmp al, 0x20
je 0x14003c7c3
cmp al, 9
jne 0x14003cc32
lea rax, [rcx + 5]
mov qword [r15 + 0x30], rax
mov edi, r14d
nop
mov rcx, qword [r15 + 0x30]
movzx eax, byte [rcx]
cmp al, 0x20
je 0x14003c7df
cmp al, 9
jne 0x14003c7e4
inc rcx
jmp 0x14003c7d4
mov qword [r15 + 0x30], rcx
movsx eax, byte [rcx]
cmp al, 0xd
ja 0x14003c80a
bt esi, eax
jae 0x14003c80a
call fcn.1400f2ee0
lea rdx, str.AC3D:_Unexpected_EOF_EOL
mov rcx, rax
call fcn.1400f2ec0
jmp 0x14003c820
mov eax, edi
lea rdx, [r13 - 0x34]
lea rdx, [rdx + rax*4]
mov r8b, 1
call fcn.140039ad0
mov qword [r15 + 0x30], rax
inc edi
cmp edi, 3
jb 0x14003c7d0
mov rcx, qword [r15 + 0x30]
nop dword [rax + rax]
movzx eax, byte [rcx]
cmp al, 0x20
je 0x14003c83b
cmp al, 9
jne 0x14003c840
inc rcx
jmp 0x14003c830
mov qword [r15 + 0x30], rcx
movsx eax, byte [rcx]
cmp al, 0xd
ja 0x14003c854
bt esi, eax
jb 0x14003c20b
mov r8d, 3
lea rdx, [0x140355414]
call qword [sym.imp.api_ms_win_crt_string_l1_1_0.dll_strncmp]
test eax, eax
jne 0x14003cc21
mov rcx, qword [r15 + 0x30]
movzx eax, byte [rcx + 3]
cmp al, 0x20
je 0x14003c883
cmp al, 9
jne 0x14003cc21
add rcx, 4
mov qword [r15 + 0x30], rcx
nop dword [rax + rax]
movzx eax, byte [rcx]
cmp al, 0x20
je 0x14003c89b
cmp al, 9
jne 0x14003c8a0
inc rcx
jmp 0x14003c890
mov qword [r15 + 0x30], rcx
movsx eax, byte [rcx]
cmp al, 0xd
ja 0x14003c8c6
bt esi, eax
jae 0x14003c8c6
call fcn.1400f2ee0
lea rdx, str.AC3D:_Unexpected_EOF_EOL
mov rcx, rax
call fcn.1400f2ec0
jmp 0x14003c8d6
lea rdx, [r13 - 0x28]
mov r8b, 1
call fcn.140039ad0
mov qword [r15 + 0x30], rax
mov rcx, qword [r15 + 0x30]
nop word [rax + rax]
movzx eax, byte [rcx]
cmp al, 0x20
je 0x14003c8eb
cmp al, 9
jne 0x14003c8f0
inc rcx
jmp 0x14003c8e0
mov qword [r15 + 0x30], rcx
movsx eax, byte [rcx]
cmp al, 0xd
ja 0x14003c904
bt esi, eax
jb 0x14003c20b
mov r8d, 5
lea rdx, str.trans
call qword [sym.imp.api_ms_win_crt_string_l1_1_0.dll_strncmp]
test eax, eax
jne 0x14003cc10
mov rcx, qword [r15 + 0x30]
movzx eax, byte [rcx + 5]
cmp al, 0x20
je 0x14003c933
cmp al, 9
jne 0x14003cc10
lea rax, [rcx + 6]
mov qword [r15 + 0x30], rax
mov rdi, rax
nop
movzx eax, byte [rdi]
cmp al, 0x20
je 0x14003c94b
cmp al, 9
jne 0x14003c950
inc rdi
jmp 0x14003c940
mov qword [r15 + 0x30], rdi
movsx eax, byte [rdi]
cmp al, 0xd
ja 0x14003c986
bt esi, eax
jae 0x14003c986
call fcn.1400f2ee0
lea rdx, str.AC3D:_Unexpected_EOF_EOL
mov rcx, rax
call fcn.1400f2ec0
lea rdx, [rsp + 0x58]
mov rcx, r15
call fcn.14003d3d0
jmp 0x14003c220
mov qword [rsp + 0x38], rdi
movaps xmm6, xmm8
movzx r14d, byte [rdi]
cmp r14b, 0x2d
je 0x14003c9a2
mov rsi, rdi
cmp r14b, 0x2b
jne 0x14003c9ae
lea rsi, [rdi + 1]
mov rdi, rsi
mov qword [rsp + 0x38], rsi
movzx eax, byte [rdi]
sub al, 0x4e
test al, 0xdf
jne 0x14003c9fb
mov r8d, 3
lea rdx, [0x140355514]
mov rcx, rdi
call qword [sym.imp.api_ms_win_crt_string_l1_1_0.dll__strnicmp]
test eax, eax
jne 0x14003c9fb
mov dword [r13 - 0x24], 0x7fc00000
lea rdi, [rsi + 3]
mov qword [r15 + 0x30], rdi
mov esi, 0x3401
xor r14d, r14d
lea rdx, [rsp + 0x58]
mov rcx, r15
call fcn.14003d3d0
jmp 0x14003c220
movzx eax, byte [rdi]
sub al, 0x49
test al, 0xdf
jne 0x14003ca91
mov r8d, 3
lea rdx, [0x140355518]
mov rcx, rdi
call qword [sym.imp.api_ms_win_crt_string_l1_1_0.dll__strnicmp]
test eax, eax
jne 0x14003ca91
mov dword [r13 - 0x24], 0x7f800000
cmp r14b, 0x2d
jne 0x14003ca38
mov dword [r13 - 0x24], 0xff800000
add rsi, 3
movzx eax, byte [rsi]
cmp al, 0x49
je 0x14003ca4e
mov rdi, rsi
cmp al, 0x69
jne 0x14003cbf2
mov rdi, rsi
mov r8d, 5
lea rdx, str.inity
mov rcx, rsi
call qword [sym.imp.api_ms_win_crt_string_l1_1_0.dll__strnicmp]
test eax, eax
jne 0x14003cbf2
lea rdi, [rsi + 5]
mov qword [r15 + 0x30], rdi
mov esi, 0x3401
xor r14d, r14d
lea rdx, [rsp + 0x58]
mov rcx, r15
call fcn.14003d3d0
jmp 0x14003c220
movzx ecx, byte [rdi]
lea eax, [rcx - 0x30]
cmp al, 9
jbe 0x14003cabc
lea eax, [rcx - 0x2c]
test al, 0xfd
jne 0x14003d2f1
movzx eax, byte [rdi + 1]
sub al, 0x30
cmp al, 9
ja 0x14003d2f1
sub cl, 0x2c
test cl, 0xfd
je 0x14003caf5
xor r8d, r8d
lea rdx, [rsp + 0x38]
mov rcx, rdi
call fcn.14003f610
mov rcx, rax
xorps xmm6, xmm6
test rax, rax
js 0x14003cade
cvtsi2ss xmm6, rax
jmp 0x14003caf0
shr rax, 1
and ecx, 1
or rax, rcx
cvtsi2ss xmm6, rax
addss xmm6, xmm6
mov rdi, qword [rsp + 0x38]
movzx edx, byte [rdi]
lea eax, [rdx - 0x2c]
test al, 0xfd
jne 0x14003cb73
lea rcx, [rdi + 1]
movzx eax, byte [rcx]
sub al, 0x30
cmp al, 9
ja 0x14003cb6b
mov qword [rsp + 0x38], rcx
mov dword [rsp + 0x30], 0xf
lea r8, [rsp + 0x30]
lea rdx, [rsp + 0x38]
call fcn.14003f610
mov rcx, rax
xorps xmm0, xmm0
test rax, rax
js 0x14003cb3a
cvtsi2sd xmm0, rax
jmp 0x14003cb4c
shr rax, 1
and ecx, 1
or rax, rcx
cvtsi2sd xmm0, rax
addsd xmm0, xmm0
mov eax, dword [rsp + 0x30]
lea rcx, [0x140354c10]
mulsd xmm0, qword [rcx + rax*8]
cvtpd2ps xmm0, xmm0
addss xmm6, xmm0
mov rdi, qword [rsp + 0x38]
jmp 0x14003cb73
cmp dl, 0x2e
jne 0x14003cb73
inc rdi
movzx eax, byte [rdi]
sub al, 0x45
test al, 0xdf
jne 0x14003cbe3
lea rcx, [rdi + 1]
mov qword [rsp + 0x38], rcx
movzx edi, byte [rcx]
lea eax, [rdi - 0x2b]
test al, 0xfd
jne 0x14003cb97
inc rcx
mov qword [rsp + 0x38], rcx
xor r8d, r8d
lea rdx, [rsp + 0x38]
call fcn.14003f610
mov rcx, rax
xorps xmm1, xmm1
test rax, rax
js 0x14003cbb6
cvtsi2ss xmm1, rax
jmp 0x14003cbc8
shr rax, 1
and ecx, 1
or rax, rcx
cvtsi2ss xmm1, rax
addss xmm1, xmm1
cmp dil, 0x2d
jne 0x14003cbd1
xorps xmm1, xmm7
movaps xmm0, xmm9
call sub.api_ms_win_crt_math_l1_1_0.dll_powf
mulss xmm6, xmm0
mov rdi, qword [rsp + 0x38]
cmp r14b, 0x2d
jne 0x14003cbec
xorps xmm6, xmm7
movss dword [r13 - 0x24], xmm6
mov qword [r15 + 0x30], rdi
mov esi, 0x3401
xor r14d, r14d
lea rdx, [rsp + 0x58]
mov rcx, r15
call fcn.14003d3d0
jmp 0x14003c220
call fcn.1400f2ee0
lea rdx, str.AC3D:_Unexpexted_token._trans_was_expected.
jmp 0x14003c217
call fcn.1400f2ee0
lea rdx, str.AC3D:_Unexpexted_token._shi_was_expected.
jmp 0x14003c217
call fcn.1400f2ee0
lea rdx, str.AC3D:_Unexpexted_token._spec_was_expected.
jmp 0x14003c217
call fcn.1400f2ee0
lea rdx, str.AC3D:_Unexpexted_token._emis_was_expected.
jmp 0x14003c217
call fcn.1400f2ee0
lea rdx, str.AC3D:_Unexpexted_token._amb_was_expected.
jmp 0x14003c217
call fcn.1400f2ee0
lea rdx, str.AC3D:_Unexpexted_token._rgb_was_expected.
mov rcx, rax
call fcn.1400f2ec0
jmp 0x14003c225
mov rax, qword [rsp + 0x60]
cmp qword [rsp + 0x58], rax
je 0x14003d2c2
mov ecx, dword [r15 + 0x3c]
test ecx, ecx
je 0x14003d2c2
mov rax, qword [rsp + 0x48]
cmp qword [rsp + 0x40], rax
jne 0x14003cd7e
call fcn.1400f2ee0
lea rdx, str.AC3D:_No_material_has_been_found
mov rcx, rax
call fcn.1400f2f30
movaps xmm0, xmmword [0x1403555b0]
movaps xmmword [rbp + 0x20], xmm0
xorps xmm1, xmm1
movaps xmmword [rbp + 0x30], xmm1
movaps xmm0, xmmword [0x1403555c0]
movaps xmmword [rbp + 0x40], xmm0
mov qword [rbp + 0x50], 0
mov qword [rbp + 0x68], r14
mov qword [rbp + 0x70], rdi
mov byte [rbp + 0x58], 0
mov rdx, qword [rsp + 0x48]
cmp rdx, qword [rsp + 0x50]
je 0x14003cd62
mov dword [rdx], 0x3f19999a
mov dword [rdx + 4], 0x3f19999a
mov qword [rdx + 8], 0x3f19999a
mov qword [rdx + 0x10], 0
mov qword [rdx + 0x18], 0
mov dword [rdx + 0x20], r14d
mov dword [rdx + 0x24], 0x3f800000
mov dword [rdx + 0x28], 0x3f800000
mov qword [rdx + 0x2c], 0x3f800000
mov dword [rdx + 0x34], r14d
movups xmm0, xmmword [rbp + 0x58]
movups xmmword [rdx + 0x38], xmm0
movups xmm1, xmmword [rbp + 0x68]
movups xmmword [rdx + 0x48], xmm1
mov qword [rbp + 0x68], r14
mov qword [rbp + 0x70], rdi
mov byte [rbp + 0x58], 0
add qword [rsp + 0x48], 0x58
jmp 0x14003cd71
lea r8, [rbp + 0x20]
lea rcx, [rsp + 0x40]
call fcn.140039370
nop
lea rcx, [rbp + 0x20]
call fcn.14003a580
mov ecx, dword [r15 + 0x3c]
mov edx, ecx
shr edx, 2
inc edx
add edx, ecx
mov dword [r15 + 0x3c], edx
xorps xmm0, xmm0
movdqu xmmword [rbp - 0x78], xmm0
mov qword [rbp - 0x68], r14
mov eax, edx
je 0x14003cdbd
movabs rcx, 0x1fffffffffffffff
cmp rax, rcx
ja 0x14003d38c
mov edx, eax
lea rcx, [rbp - 0x78]
call fcn.140028450
mov edx, dword [r15 + 0x3c]
xorps xmm0, xmm0
movdqu xmmword [rbp - 0x60], xmm0
mov qword [rbp - 0x50], r14
mov r8d, edx
mov rcx, qword [rsp + 0x50]
sub rcx, qword [rsp + 0x40]
movabs r13, 0x2e8ba2e8ba2e8ba3
mov rax, r13
imul rcx
sar rdx, 4
mov rax, rdx
shr rax, 0x3f
add rdx, rax
cmp r8, rdx
jbe 0x14003ce06
mov edx, r8d
lea rcx, [rsp + 0x40]
call fcn.14003ee90
mov rcx, qword [rsp + 0x60]
mov rdi, qword [rsp + 0x58]
sub rcx, rdi
movabs r14, 0x4924924924924925
mov rax, r14
imul rcx
sar rdx, 6
mov rax, rdx
shr rax, 0x3f
add rdx, rax
cmp rdx, 1
je 0x14003ce51
mov ecx, 0xe0
call fcn.14032af80
mov qword [rsp + 0x38], rax
mov rcx, rax
call fcn.14003a130
mov rdi, rax
mov qword [rsp + 0x28], 0
lea rax, [rsp + 0x40]
mov qword [rsp + 0x20], rax
lea r9, [rbp - 0x60]
lea r8, [rbp - 0x78]
mov rdx, rdi
mov rcx, r15
call fcn.14003aba0
mov qword [r12 + 8], rax
mov rcx, qword [rsp + 0x60]
sub rcx, qword [rsp + 0x58]
mov rax, r14
imul rcx
sar rdx, 6
mov rax, rdx
shr rax, 0x3f
add rdx, rax
cmp rdx, 1
je 0x14003ceba
test rdi, rdi
je 0x14003ceba
mov rcx, rdi
call fcn.14003a5f0
mov edx, 0xe0
mov rcx, rdi
call fcn.1401a68e0
mov rcx, qword [r12 + 8]
add rcx, 8
mov r8d, 4
lea rdx, str.Node
call qword [sym.imp.api_ms_win_crt_string_l1_1_0.dll_strncmp]
test eax, eax
jne 0x14003cf0c
mov rcx, qword [r12 + 8]
mov qword [rcx], 0xb
movsd xmm0, qword [str._AC3DWorld_]
movsd qword [rcx + 8], xmm0
movzx eax, word [0x1403554e0]
mov word [rcx + 0x10], ax
movzx eax, byte [0x1403554e2]
mov byte [rcx + 0x12], al
mov byte [rcx + 0x13], 0
mov rcx, qword [rbp - 0x78]
mov rax, qword [rbp - 0x70]
cmp rcx, rax
je 0x14003d392
sub rax, rcx
sar rax, 3
mov ecx, eax
mov dword [r12 + 0x10], ecx
mov eax, 8
mul rcx
mov rdi, 0xffffffffffffffff
cmovo rax, rdi
mov rcx, rax
call fcn.1401a68d0
mov qword [r12 + 0x18], rax
mov r8d, dword [r12 + 0x10]
shl r8, 3
mov rdx, qword [rbp - 0x78]
mov rcx, rax
call sub.VCRUNTIME140.dll_memcpy
mov rcx, qword [rbp - 0x58]
sub rcx, qword [rbp - 0x60]
sar rcx, 3
mov ecx, ecx
mov dword [r12 + 0x20], ecx
mov eax, 8
mul rcx
cmovo rax, rdi
mov rcx, rax
call fcn.1401a68d0
mov qword [r12 + 0x28], rax
mov r8d, dword [r12 + 0x20]
shl r8, 3
mov rdx, qword [rbp - 0x60]
mov rcx, rax
call sub.VCRUNTIME140.dll_memcpy
mov rdx, qword [rsp + 0x78]
mov rcx, qword [rsp + 0x70]
sub rdx, rcx
sar rdx, 3
mov dword [r12 + 0x50], edx
test rdx, rdx
je 0x14003cffb
mov eax, 8
mul rdx
cmovo rax, rdi
mov rcx, rax
call fcn.1401a68d0
mov qword [r12 + 0x58], rax
mov r8, qword [rsp + 0x78]
mov rdx, qword [rsp + 0x70]
sub r8, rdx
sar r8, 3
lea r8, [r8*8]
mov rcx, rax
call sub.VCRUNTIME140.dll_memcpy
mov rcx, qword [rsp + 0x70]
mov r8, qword [rbp - 0x60]
test r8, r8
je 0x14003d05d
mov rax, qword [rbp - 0x50]
sub rax, r8
sar rax, 3
lea rdx, [rax*8]
mov rax, r8
cmp rdx, 0x1000
jb 0x14003d03f
add rdx, 0x27
mov r8, qword [r8 - 8]
sub rax, r8
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
jbe 0x14003d03f
call qword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__invalid_parameter_noinfo_noreturn]
int3
mov rcx, r8
call fcn.1401a68e0
xorps xmm0, xmm0
movdqu xmmword [rbp - 0x60], xmm0
xor r15d, r15d
mov qword [rbp - 0x50], r15
mov rcx, qword [rsp + 0x70]
jmp 0x14003d060
xor r15d, r15d
mov r8, qword [rbp - 0x78]
test r8, r8
je 0x14003d0ba
mov rax, qword [rbp - 0x68]
sub rax, r8
sar rax, 3
lea rdx, [rax*8]
mov rax, r8
cmp rdx, 0x1000
jb 0x14003d0a1
add rdx, 0x27
mov r8, qword [r8 - 8]
sub rax, r8
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x14003d2bb
mov rcx, r8
call fcn.1401a68e0
xorps xmm0, xmm0
movdqu xmmword [rbp - 0x78], xmm0
mov qword [rbp - 0x68], r15
mov rcx, qword [rsp + 0x70]
test rcx, rcx
je 0x14003d10c
mov rax, qword [rbp - 0x80]
sub rax, rcx
sar rax, 3
lea rdx, [rax*8]
mov rax, rcx
cmp rdx, 0x1000
jb 0x14003d0fa
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
jbe 0x14003d0fa
call qword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__invalid_parameter_noinfo_noreturn]
int3
call fcn.1401a68e0
xorps xmm0, xmm0
movdqu xmmword [rsp + 0x70], xmm0
mov qword [rbp - 0x80], r15
mov rdi, qword [rsp + 0x58]
test rdi, rdi
je 0x14003d19e
mov rsi, qword [rsp + 0x60]
cmp rdi, rsi
je 0x14003d13d
mov rcx, rdi
call fcn.14003a5f0
add rdi, 0xe0
cmp rdi, rsi
jne 0x14003d124
mov rdi, qword [rsp + 0x58]
mov rcx, qword [rsp + 0x68]
sub rcx, rdi
mov rax, r14
imul rcx
sar rdx, 6
mov rax, rdx
shr rax, 0x3f
add rdx, rax
imul rdx, rdx, 0xe0
mov rax, rdi
cmp rdx, 0x1000
jb 0x14003d188
add rdx, 0x27
mov rdi, qword [rdi - 8]
sub rax, rdi
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
jbe 0x14003d188
call qword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__invalid_parameter_noinfo_noreturn]
int3
mov rcx, rdi
call fcn.1401a68e0
xorps xmm0, xmm0
movdqu xmmword [rsp + 0x58], xmm0
mov qword [rsp + 0x68], r15
mov rdi, qword [rsp + 0x40]
test rdi, rdi
je 0x14003d22a
mov rsi, qword [rsp + 0x48]
cmp rdi, rsi
je 0x14003d1cc
mov rcx, rdi
call fcn.14003a580
add rdi, 0x58
cmp rdi, rsi
jne 0x14003d1b6
mov rdi, qword [rsp + 0x40]
mov rcx, qword [rsp + 0x50]
sub rcx, rdi
mov rax, r13
imul rcx
sar rdx, 4
mov rax, rdx
shr rax, 0x3f
add rdx, rax
imul rdx, rdx, 0x58
mov rax, rdi
cmp rdx, 0x1000
jb 0x14003d214
add rdx, 0x27
mov rdi, qword [rdi - 8]
sub rax, rdi
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
jbe 0x14003d214
call qword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__invalid_parameter_noinfo_noreturn]
int3
mov rcx, rdi
call fcn.1401a68e0
xorps xmm0, xmm0
movdqu xmmword [rsp + 0x40], xmm0
mov qword [rsp + 0x50], r15
mov rcx, qword [rbp - 0x48]
test rcx, rcx
je 0x14003d273
mov rdx, qword [rbp - 0x38]
sub rdx, rcx
mov rax, rcx
cmp rdx, 0x1000
jb 0x14003d262
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
jbe 0x14003d262
call qword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__invalid_parameter_noinfo_noreturn]
int3
call fcn.1401a68e0
xorps xmm0, xmm0
movdqu xmmword [rbp - 0x48], xmm0
mov qword [rbp - 0x38], r15
mov rax, qword [rbx]
mov edx, 1
mov rcx, rbx
call qword [rax]
mov rcx, qword [rbp + 0xc0]
xor rcx, rsp
call fcn.14032b620
lea r11, [rsp + 0x218]
movaps xmm6, xmmword [r11 - 0x18]
movaps xmm7, xmmword [r11 - 0x28]
movaps xmm8, xmmword [r11 - 0x38]
movaps xmm9, xmmword [r11 - 0x48]
mov rsp, r11
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbx
pop rbp
ret
call qword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__invalid_parameter_noinfo_noreturn]
nop
lea rdx, str.AC3D:_No_meshes_have_been_loaded
lea rcx, [rbp - 0x28]
call fcn.1400223b0
nop
lea rdx, [rbp - 0x28]
lea rcx, [rbp - 8]
call fcn.140022450
lea rdx, [0x1404167f0]
lea rcx, [rbp - 8]
call sub.VCRUNTIME140.dll__CxxThrowException
nop
lea rdx, str.Cannot_parse_string_as_real_number:_does_not_start_with_digit_or_decimal_point_followed_by_digit.
lea rcx, [rbp - 8]
call fcn.14003a350
lea rdx, [0x140416858]
lea rcx, [rbp - 8]
call sub.VCRUNTIME140.dll__CxxThrowException
nop
mov r8, rsi
lea rdx, str.Failed_to_open_AC3D_file
lea rcx, [rbp + 0x80]
call fcn.140028c30
nop
lea r8, [0x1403552bc]
mov rdx, rax
lea rcx, [rbp + 0xa0]
call fcn.140028aa0
nop
mov rdx, rax
lea rcx, [rbp - 8]
call fcn.140022450
lea rdx, [0x1404167f0]
lea rcx, [rbp - 8]
call sub.VCRUNTIME140.dll__CxxThrowException
nop
lea rdx, str.AC3D:_No_valid_AC3D_file__magic_sequence_not_found
lea rcx, [rbp - 0x28]
call fcn.1400223b0
nop
lea rdx, [rbp - 0x28]
lea rcx, [rbp - 8]
call fcn.140022450
lea rdx, [0x1404167f0]
lea rcx, [rbp - 8]
call sub.VCRUNTIME140.dll__CxxThrowException
nop
call fcn.1400072d0
nop
lea rdx, str.An_unknown_error_occurred_during_converting
lea rcx, [rbp - 0x28]
call fcn.1400223b0
nop
lea rdx, [rbp - 0x28]
lea rcx, [rbp - 8]
call fcn.140022450
lea rdx, [0x1404167f0]
lea rcx, [rbp - 8]
call sub.VCRUNTIME140.dll__CxxThrowException
int3