Function at 0x21018b9d0
Capabilities:
Parse credit card information

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0xe8
movaps xmmword [rsp + 0xc0], xmm6
movaps xmmword [rsp + 0xd0], xmm7
mov qword [rsp + 0x130], rcx
mov rdi, r9
mov rcx, r8
mov qword [rsp + 0x138], rdx
call sym.__localeconv_l
movzx edx, byte [rdi]
mov qword [rsp + 0x58], rax
test dl, dl
je 0x21018c7bd
mov qword [rsp + 0x40], 0
lea r14, [0x2102b2e68]
mov r15, qword [rsp + 0x130]
mov byte [rsp + 0x76], 0x20
movq xmm7, qword [0x2102b2ee0]
mov dword [rsp + 0x70], 0
mov qword [rsp + 0x48], 0
cmp dl, 0x25
jne 0x21018ba65
movzx eax, byte [rdi + 1]
cmp al, 0x25
jne 0x21018bab2
add rdi, 1
mov rax, qword [rsp + 0x130]
add rax, qword [rsp + 0x138]
cmp r15, rax
jae 0x21018c260
movzx edx, byte [rdi]
lea rsi, [rdi + 1]
lea rbp, [r15 + 1]
mov qword [rsp + 0x38], rsi
mov byte [r15], dl
movzx edx, byte [rdi + 1]
test dl, dl
je 0x21018c4c0
mov rdi, qword [rsp + 0x38]
mov r15, rbp
cmp dl, 0x25
jne 0x21018ba65
movzx eax, byte [rdi + 1]
cmp al, 0x25
je 0x21018ba61
mov dword [rsp + 0x54], 0x20
mov esi, 5
lea rbx, [rdi + 1]
cmp al, 0x3d
jg 0x21018c133
cmp al, 0x20
jle case.0x21018bae0.1
sub eax, 0x21
cmp al, 0x1c
ja case.0x21018bae0.1
movzx eax, al
movsxd rax, dword [r14 + rax*4]
add rax, r14
jmp rax
call sym.msys_2.0.dll___locale_ctype_ptr
movzx edx, byte [rdi + 1]
mov r13d, 0xffffffff
mov r8, rax
mov rax, rdx
test byte [rdx + r8 + 1], 4
jne 0x21018c200
mov ebp, 0xffffffff
cmp al, 0x23
je 0x21018c508
mov edi, 0xffffffff
cmp al, 0x2e
je 0x21018c388
lea rcx, [rbx + 1]
mov qword [rsp + 0x38], rcx
cmp al, 0x69
je 0x21018c288
cmp al, 0x6e
jne 0x21018c190
mov r12d, esi
and r12d, 0x40
cmp qword [rsp + 0x40], 0
je 0x21018bb55
mov rcx, qword [rsp + 0x40]
call sym.free_1
test r12d, r12d
jne 0x21018c29d
mov rax, qword [rsp + 0x58]
mov rcx, qword [rax + 0x20]
call sym.strdup_1
mov qword [rsp + 0x40], rax
test rax, rax
je 0x21018c968
mov rax, qword [rsp + 0x150]
pxor xmm0, xmm0
add rax, 8
mov qword [rsp + 0x88], rax
mov rax, qword [rsp + 0x150]
movsd xmm6, qword [rax]
comisd xmm0, xmm6
jbe 0x21018bbac
or sil, 0x80
xorpd xmm6, xmm7
cmp ebp, 0xffffffff
je 0x21018bbdf
mov rdx, qword [rsp + 0x40]
mov ecx, esi
xor cl, 0x80
call sym.__calc_left_pad
mov rdx, qword [rsp + 0x40]
mov ecx, esi
mov r12d, eax
call sym.__calc_left_pad
sub r12d, eax
mov eax, 0
cmovns eax, r12d
mov dword [rsp + 0x70], eax
mov rax, qword [rsp + 0x48]
test rax, rax
je 0x21018bbf1
mov rcx, rax
call sym.free_1
call sym.msys_2.0.dll_localeconv
mov rcx, qword [rax + 0x38]
mov rdx, qword [rax + 0x28]
mov qword [rsp + 0x68], rcx
movzx ecx, byte [rdx]
mov byte [rsp + 0x7c], cl
test cl, cl
jne 0x21018bc18
mov rdx, qword [rax]
movzx ecx, byte [rdx]
mov byte [rsp + 0x7c], cl
mov rdx, qword [rax + 0x30]
movzx ecx, byte [rdx]
mov byte [rsp + 0x77], cl
test cl, cl
jne 0x21018bc32
mov rdx, qword [rax + 8]
movzx ecx, byte [rdx]
mov byte [rsp + 0x77], cl
xor edx, edx
cmp ebp, 0xffffffff
cmove ebp, edx
cmp edi, 0xffffffff
je 0x21018c410
test sil, 1
je 0x21018bc86
mov r9, qword [rsp + 0x68]
movzx eax, byte [r9]
lea edx, [rax - 1]
cmp dl, 0x7d
ja 0x21018bc86
mov edx, ebp
xor ecx, ecx
jmp 0x21018bc7b
movzx eax, byte [r9 + 1]
add r9, 1
add ecx, 1
sub edx, r8d
cmp al, 0x7f
je 0x21018bc84
test al, al
je 0x21018c748
movsx r8d, al
cmp edx, r8d
jg 0x21018bc60
add ebp, ecx
lea r8d, [rbp + rdi + 1]
lea rcx, [rsp + 0xb8]
movsd qword [rsp + 0x20], xmm6
mov r9d, edi
lea rdx, str._.f
call sym.asprintf_1
mov r8d, eax
test eax, eax
js 0x21018c4b0
lea eax, [rax + rax + 1]
mov ecx, 1
mov dword [rsp + 0x78], r8d
cdqe
mov rdx, rax
mov qword [rsp + 0x60], rax
call sym.calloc_1
mov r12, qword [rsp + 0xb8]
mov r8d, dword [rsp + 0x78]
test rax, rax
mov qword [rsp + 0x48], rax
je 0x21018c4a5
mov rax, qword [rsp + 0x48]
mov rcx, qword [rsp + 0x60]
cmp byte [r12], 0x20
lea r9, [rax + rcx - 1]
jne 0x21018c758
mov eax, 1
nop word [rax + rax]
mov ebp, r8d
mov edx, eax
lea r10, [r12 + rax]
mov r11, rax
sub ebp, eax
add rax, 1
cmp byte [r12 + rax - 1], 0x20
je 0x21018bd10
mov dword [rsp + 0x78], edx
cmp byte [rsp + 0x77], 0
setne al
and eax, esi
mov byte [rsp + 0x80], al
test edi, edi
jg 0x21018c430
cmp byte [rsp + 0x80], 0
jne 0x21018c588
movsxd r8, ebp
mov rdx, r10
sub r9, r8
mov rcx, r9
call sym.msys_2.0.dll_memcpy
cmp edi, 1
sbb dword [rsp + 0x78], 0
mov r9, rax
mov eax, dword [rsp + 0x78]
test eax, eax
jle 0x21018bd8e
movsxd r8, eax
mov edx, dword [rsp + 0x54]
sub r9, r8
mov rcx, r9
call sym.msys_2.0.dll_memset
mov r9, rax
mov rcx, qword [rsp + 0x48]
mov rdi, qword [rsp + 0x60]
mov rdx, r9
mov rax, rcx
sub rax, r9
lea r8, [rdi + rax + 1]
call sym.msys_2.0.dll_memmove
mov rcx, r12
call sym.free_1
lea rax, [rsp + 0xb0]
mov ecx, esi
lea rdx, [rsp + 0xad]
mov qword [rsp + 0x20], rax
lea r9, [rsp + 0xaf]
lea r8, [rsp + 0xae]
call sym.__setup_vars
mov eax, dword [rsp + 0x70]
lea edx, [rax - 1]
test eax, eax
jle 0x21018c7b5
mov rax, qword [rsp + 0x130]
add rax, qword [rsp + 0x138]
cmp r15, rax
jae 0x21018c2e0
mov rbp, r15
jmp 0x21018be19
cmp rbp, rax
je 0x21018c2e0
add rbp, 1
mov byte [rbp - 1], 0x20
sub edx, 1
jae 0x21018be10
movzx eax, byte [rsp + 0xaf]
test al, al
jne 0x21018c31c
test sil, 0x80
jne 0x21018c2f7
cmp byte [rsp + 0xad], 1
jne 0x21018bef0
test sil, 0x10
jne 0x21018bef0
mov rdi, qword [rsp + 0x40]
movzx ecx, byte [rdi]
test cl, cl
je 0x21018beab
mov rax, qword [rsp + 0x130]
add rax, qword [rsp + 0x138]
cmp rbp, rax
jae 0x21018c2e0
sub rax, rbp
lea r8, [rdi + rax]
mov rax, rdi
jmp 0x21018be99
cmp rax, r8
je 0x21018c2e0
add rax, 1
mov byte [rbp], cl
add rbp, 1
movzx ecx, byte [rax]
test cl, cl
jne 0x21018be90
cmp byte [rsp + 0xaf], 4
movzx eax, byte [rsp + 0xae]
je 0x21018c9c8
cmp al, 1
jne 0x21018bef0
mov rax, qword [rsp + 0x130]
add rax, qword [rsp + 0x138]
cmp rbp, rax
jae 0x21018c2e0
movzx eax, byte [rsp + 0x76]
add rbp, 1
mov byte [rbp - 1], al
nop word [rax + rax]
mov rcx, qword [rsp + 0x48]
movzx r8d, byte [rcx]
test r8b, r8b
je 0x21018bf3e
mov rax, qword [rsp + 0x130]
add rax, qword [rsp + 0x138]
cmp rax, rbp
jbe 0x21018c2e0
sub rax, rbp
add rax, rcx
jmp 0x21018bf29
cmp rax, rcx
je 0x21018c2e0
add rcx, 1
mov byte [rbp], r8b
add rbp, 1
movzx r8d, byte [rcx]
test r8b, r8b
jne 0x21018bf20
movzx r8d, byte [rsp + 0xaf]
cmp byte [rsp + 0xad], 0
mov eax, r8d
jne 0x21018c071
cmp r8b, 3
je 0x21018c8b9
test sil, 0x10
jne 0x21018c071
movzx eax, byte [rsp + 0xae]
cmp al, 1
jne 0x21018bfad
cmp r8b, 2
jbe 0x21018bf88
cmp r8b, 4
jne 0x21018c94c
mov rax, qword [rsp + 0x130]
add rax, qword [rsp + 0x138]
cmp rbp, rax
jae 0x21018c2e0
movzx eax, byte [rsp + 0x76]
add rbp, 1
mov byte [rbp - 1], al
mov rax, qword [rsp + 0x40]
movzx ecx, byte [rax]
test cl, cl
je 0x21018bffc
mov rax, qword [rsp + 0x130]
add rax, qword [rsp + 0x138]
cmp rbp, rax
jae 0x21018c2e0
mov r8, qword [rsp + 0x40]
jmp 0x21018bfe9
cmp rbp, rax
je 0x21018c2e0
add r8, 1
mov byte [rbp], cl
add rbp, 1
movzx ecx, byte [r8]
test cl, cl
jne 0x21018bfe0
movzx eax, byte [rsp + 0xaf]
cmp al, 4
jne 0x21018c071
cmp byte [rsp + 0xae], 2
je 0x21018caa0
mov rcx, qword [rsp + 0xb0]
mov rax, qword [rsp + 0x130]
mov rdi, qword [rsp + 0x138]
movzx r8d, byte [rcx]
add rax, rdi
test r8b, r8b
je 0x21018c0a4
cmp rbp, rax
jae 0x21018c2e0
sub rax, rbp
add rax, rcx
jmp 0x21018c054
cmp rax, rcx
je 0x21018c2e0
add rcx, 1
mov byte [rbp], r8b
add rbp, 1
movzx r8d, byte [rcx]
test r8b, r8b
jne 0x21018c04b
movzx eax, byte [rsp + 0xaf]
cmp al, 2
je 0x21018c630
test al, al
jne 0x21018c0a4
test sil, 0x80
je 0x21018c0a4
mov rax, qword [rsp + 0x130]
add rax, qword [rsp + 0x138]
cmp rbp, rax
jae 0x21018c2e0
mov byte [rbp], 0x29
add rbp, 1
mov rax, rbp
movsxd rcx, r13d
sub rax, r15
cmp rax, rcx
jge 0x21018c7ac
and esi, 0x20
jne 0x21018c76e
movsxd r8, eax
mov rsi, rcx
mov rdx, r15
mov dword [rsp + 0x70], eax
sub rsi, r8
lea rcx, [r15 + rsi]
add rbp, rsi
call sym.msys_2.0.dll_memmove
mov r8, rsi
mov edx, 0x20
mov rcx, r15
call sym.msys_2.0.dll_memset
movzx edx, byte [rbx + 1]
test dl, dl
je 0x21018c2c6
mov rax, qword [rsp + 0x88]
mov qword [rsp + 0x150], rax
jmp 0x21018ba9d
movsx ebx, byte [rdi + 2]
lea rax, [rdi + 2]
mov dword [rsp + 0x54], ebx
test ebx, ebx
je 0x21018c190
mov rdi, rax
movzx eax, byte [rdi + 1]
lea rbx, [rdi + 1]
cmp al, 0x3d
jle 0x21018bacb
cmp al, 0x5e
jne case.0x21018bae0.1
and esi, 0xfffffffe
mov rdi, rbx
jmp 0x21018c123
movzx eax, byte [rdi + 2]
or esi, 0x20
mov rdi, rbx
jmp 0x21018babf
test sil, 2
jne 0x21018c190
or esi, 6
mov rdi, rbx
jmp 0x21018c123
test sil, 2
jne 0x21018c190
or esi, 0xa
mov rdi, rbx
jmp 0x21018c123
movzx eax, byte [rdi + 2]
or esi, 0x10
mov rdi, rbx
jmp 0x21018babf
call sym.msys_2.0.dll___errno
mov dword [rax], 0x16
call sym.msys_2.0.dll___errno
cmp qword [rsp + 0x48], 0
mov ebx, dword [rax]
je 0x21018c1b4
mov rcx, qword [rsp + 0x48]
call sym.free_1
cmp qword [rsp + 0x40], 0
je 0x21018c1c6
mov rcx, qword [rsp + 0x40]
call sym.free_1
call sym.msys_2.0.dll___errno
mov dword [rax], ebx
mov rax, 0xffffffffffffffff
movaps xmm6, xmmword [rsp + 0xc0]
movaps xmm7, xmmword [rsp + 0xd0]
add rsp, 0xe8
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
xor r13d, r13d
jmp 0x21018c224
cmp r13d, 0xccccccc
jg 0x21018c260
lea edx, [r13 + r13*4]
lea r13d, [rax + rdx*2 - 0x30]
test r13d, r13d
js 0x21018c260
add rbx, 1
call sym.msys_2.0.dll___locale_ctype_ptr
mov r8, rax
movsx eax, byte [rbx]
movzx edx, al
test byte [rdx + r8 + 1], 4
jne 0x21018c208
mov rcx, qword [rsp + 0x138]
mov r8, r15
movsxd rdx, r13d
sub r8, qword [rsp + 0x130]
sub rcx, r8
cmp rdx, rcx
jb 0x21018bb09
nop dword [rax]
call sym.msys_2.0.dll___errno
mov dword [rax], 7
call sym.msys_2.0.dll___errno
cmp qword [rsp + 0x48], 0
mov ebx, dword [rax]
je 0x21018c1b4
jmp 0x21018c1aa
mov rax, qword [rsp + 0x40]
or esi, 0x40
test rax, rax
je 0x21018c29d
mov rcx, rax
call sym.free_1
mov rax, qword [rsp + 0x58]
mov rcx, qword [rax + 0x18]
call sym.strdup_1
mov qword [rsp + 0x40], rax
test rax, rax
je 0x21018c968
movzx eax, byte [rax + 3]
mov byte [rsp + 0x76], al
jmp 0x21018bb7a
mov rax, qword [rsp + 0x130]
add rax, qword [rsp + 0x138]
cmp rbp, rax
jb 0x21018c4c9
nop
call sym.msys_2.0.dll___errno
mov dword [rax], 7
call sym.msys_2.0.dll___errno
mov ebx, dword [rax]
jmp 0x21018c1aa
mov rax, qword [rsp + 0x130]
add rax, qword [rsp + 0x138]
cmp rbp, rax
jae 0x21018c2e0
mov byte [rbp], 0x28
movzx eax, byte [rsp + 0xaf]
add rbp, 1
cmp byte [rsp + 0xad], 1
je 0x21018c6ab
cmp al, 1
jne 0x21018bef0
mov r8, qword [rsp + 0xb0]
movzx ecx, byte [r8]
test cl, cl
je 0x21018bef0
mov rax, qword [rsp + 0x130]
add rax, qword [rsp + 0x138]
cmp rbp, rax
jb 0x21018c369
jmp 0x21018c2e0
cmp rbp, rax
je 0x21018c2e0
add r8, 1
mov byte [rbp], cl
add rbp, 1
movzx ecx, byte [r8]
test cl, cl
jne 0x21018c360
jmp 0x21018bef0
call sym.msys_2.0.dll___locale_ctype_ptr
movzx edx, byte [rbx + 1]
test byte [rdx + rax + 1], 4
je 0x21018c190
add rbx, 1
xor edi, edi
jmp 0x21018c3c7
cmp edi, 0xccccccc
jg 0x21018c260
lea edx, [rdi + rdi*4]
lea edi, [rax + rdx*2 - 0x30]
test edi, edi
js 0x21018c260
add rbx, 1
call sym.msys_2.0.dll___locale_ctype_ptr
mov r8, rax
movsx eax, byte [rbx]
movzx edx, al
test byte [rdx + r8 + 1], 4
jne 0x21018c3a8
mov rdx, qword [rsp + 0x138]
mov r8, r15
movsxd rcx, edi
sub r8, qword [rsp + 0x130]
sub rdx, r8
movsxd r8, ebp
sub rdx, r8
cmp rcx, rdx
jb 0x21018bb23
jmp 0x21018c260
test sil, 0x40
je 0x21018c4f8
movsx edi, byte [rax + 0x50]
cmp edi, 0x7f
mov eax, 2
cmove edi, eax
jmp 0x21018bc43
movsxd r8, edi
mov rdx, r11
movsxd rax, ebp
mov rcx, r9
sub rdx, r8
sub rcx, r8
add edi, 1
mov qword [rsp + 0x98], r10
add rdx, rax
mov qword [rsp + 0x90], r11
sub ebp, edi
add rdx, r12
call sym.msys_2.0.dll_memcpy
movzx edx, byte [rsp + 0x7c]
cmp byte [rsp + 0x80], 0
mov r11, qword [rsp + 0x90]
mov r10, qword [rsp + 0x98]
lea r9, [rax - 1]
mov byte [rax - 1], dl
jne 0x21018c730
movsxd r8, ebp
mov rdx, r10
sub r9, r8
mov rcx, r9
call sym.msys_2.0.dll_memcpy
mov r9, rax
jmp 0x21018bd71
mov rcx, r12
call sym.free_1
nop dword [rax]
call sym.msys_2.0.dll___errno
mov ebx, dword [rax]
jmp 0x21018c1bc
cmp rbp, rax
jae 0x21018c260
mov byte [rbp], 0
mov rcx, qword [rsp + 0x48]
call sym.free_1
mov rcx, qword [rsp + 0x40]
call sym.free_1
mov rax, rbp
sub rax, qword [rsp + 0x130]
jmp 0x21018c1d4
movsx edi, byte [rax + 0x51]
jmp 0x21018c41e
call sym.msys_2.0.dll___locale_ctype_ptr
movzx edx, byte [rbx + 1]
test byte [rdx + rax + 1], 4
je 0x21018c190
add rbx, 1
xor ebp, ebp
jmp 0x21018c548
cmp ebp, 0xccccccc
jg 0x21018c260
lea edx, [rbp + rbp*4]
lea ebp, [rax + rdx*2 - 0x30]
test ebp, ebp
js 0x21018c260
add rbx, 1
call sym.msys_2.0.dll___locale_ctype_ptr
mov r8, rax
movsx eax, byte [rbx]
movzx edx, al
test byte [rdx + r8 + 1], 4
jne 0x21018c528
mov rcx, qword [rsp + 0x138]
mov r8, r15
movsxd rdx, ebp
sub r8, qword [rsp + 0x130]
sub rcx, r8
cmp rdx, rcx
jb 0x21018bb16
jmp 0x21018c260
mov rax, qword [rsp + 0x68]
movsx ecx, byte [rax]
lea eax, [rcx - 1]
cmp al, 0x7d
ja 0x21018bd55
mov dword [rsp + 0x7c], esi
movzx esi, byte [rsp + 0x77]
xor edi, edi
mov qword [rsp + 0x80], rbx
mov rbx, qword [rsp + 0x68]
nop dword [rax + rax]
cmp ecx, ebp
jge 0x21018c7fa
lea r8d, [rcx - 1]
test ecx, ecx
jle 0x21018c6a3
movsxd rdx, ebp
mov dword [rsp + 0x68], ecx
mov r10, r8
xor eax, eax
add rdx, r11
not r10
add rdx, r12
nop dword [rax]
movzx ecx, byte [rdx + rax - 1]
mov byte [r9 + rax - 1], cl
sub rax, 1
cmp r10, rax
jne 0x21018c5e8
mov ecx, dword [rsp + 0x68]
not r8
add r8, r9
sub ebp, ecx
mov byte [r8 - 1], sil
movsx ecx, byte [rbx + 1]
lea r9, [r8 - 1]
add edi, 1
lea r8, [rbx + 1]
cmp cl, 0x7f
je 0x21018c7fa
test cl, cl
je 0x21018c840
mov rbx, r8
jmp 0x21018c5b8
cmp byte [rsp + 0xae], 2
je 0x21018c98a
mov rcx, qword [rsp + 0xb0]
movzx r8d, byte [rcx]
test r8b, r8b
je 0x21018c0a4
mov rax, qword [rsp + 0x130]
add rax, qword [rsp + 0x138]
cmp rbp, rax
jae 0x21018c2e0
sub rax, rbp
add rax, rcx
jmp 0x21018c681
cmp rax, rcx
je 0x21018c2e0
add rcx, 1
mov byte [rbp], r8b
add rbp, 1
movzx r8d, byte [rcx]
test r8b, r8b
jne 0x21018c678
movzx eax, byte [rsp + 0xaf]
jmp 0x21018c079
mov r8, r9
jmp 0x21018c607
and eax, 0xfffffffd
cmp al, 1
jne 0x21018be4e
mov r8, qword [rsp + 0xb0]
movzx ecx, byte [r8]
test cl, cl
je 0x21018c6fc
mov rax, qword [rsp + 0x130]
add rax, qword [rsp + 0x138]
cmp rbp, rax
jb 0x21018c6e9
jmp 0x21018c2e0
cmp rax, rbp
je 0x21018c2e0
add r8, 1
mov byte [rbp], cl
add rbp, 1
movzx ecx, byte [r8]
test cl, cl
jne 0x21018c6e0
cmp byte [rsp + 0xae], 2
jne 0x21018be4e
mov rax, qword [rsp + 0x130]
add rax, qword [rsp + 0x138]
cmp rbp, rax
jae 0x21018c2e0
mov byte [rbp], 0x20
add rbp, 1
jmp 0x21018be4e
mov rax, qword [rsp + 0x68]
movsx ecx, byte [rax]
lea eax, [rcx - 1]
cmp al, 0x7d
ja 0x21018c48c
jmp 0x21018c59b
lea eax, [rdx - 1]
cdq
idiv r8d
add eax, ecx
add ebp, eax
jmp 0x21018bc86
mov dword [rsp + 0x78], 0
mov r10, r12
mov ebp, r8d
xor r11d, r11d
jmp 0x21018bd2e
mov rax, qword [rsp + 0x130]
add rax, qword [rsp + 0x138]
cmp rbp, rax
jb 0x21018c799
jmp 0x21018c2e0
cmp rbp, rax
je 0x21018c2e0
add rbp, 1
mov byte [rbp - 1], 0x20
mov r8, rbp
sub r8, r15
cmp rcx, r8
jg 0x21018c790
mov dword [rsp + 0x70], edx
jmp 0x21018c0eb
mov rbp, r15
jmp 0x21018be26
mov rax, qword [rsp + 0x130]
add rax, qword [rsp + 0x138]
cmp qword [rsp + 0x130], rax
jae 0x21018cadb
mov qword [rsp + 0x40], 0
mov rbp, qword [rsp + 0x130]
mov qword [rsp + 0x48], 0
jmp 0x21018c4c9
mov esi, dword [rsp + 0x7c]
mov rbx, qword [rsp + 0x80]
test ebp, ebp
jle 0x21018c837
lea edx, [rbp - 1]
movsxd rbp, ebp
xor eax, eax
add rbp, r11
not rdx
lea rcx, [r12 + rbp]
nop dword [rax]
movzx r8d, byte [rcx + rax - 1]
mov byte [r9 + rax - 1], r8b
sub rax, 1
cmp rax, rdx
jne 0x21018c820
add r9, rax
sub dword [rsp + 0x78], edi
jmp 0x21018bd71
movsx ecx, byte [r8 - 1]
mov esi, dword [rsp + 0x7c]
mov rbx, qword [rsp + 0x80]
cmp ecx, ebp
jge 0x21018c806
mov dword [rsp + 0x7c], esi
movzx esi, byte [rsp + 0x77]
nop
mov rax, r9
test ecx, ecx
jle 0x21018c89c
movsxd rdx, ebp
mov dword [rsp + 0x68], ecx
lea r10d, [rcx - 1]
xor eax, eax
add rdx, r11
not r10
add rdx, r12
nop dword [rax]
movzx ecx, byte [rdx + rax - 1]
mov byte [r9 + rax - 1], cl
sub rax, 1
cmp rax, r10
jne 0x21018c880
mov ecx, dword [rsp + 0x68]
add rax, r9
sub ebp, ecx
mov byte [rax - 1], sil
movsx ecx, byte [r8 - 1]
lea r9, [rax - 1]
add edi, 1
cmp ecx, ebp
jl 0x21018c860
mov esi, dword [rsp + 0x7c]
jmp 0x21018c806
cmp byte [rsp + 0xae], 1
je 0x21018ca50
mov r8, qword [rsp + 0xb0]
movzx ecx, byte [r8]
test cl, cl
je 0x21018c914
mov rax, qword [rsp + 0x130]
add rax, qword [rsp + 0x138]
cmp rax, rbp
ja 0x21018c901
jmp 0x21018c2e0
cmp rax, rbp
je 0x21018c2e0
add r8, 1
mov byte [rbp], cl
add rbp, 1
movzx ecx, byte [r8]
test cl, cl
jne 0x21018c8f8
movzx r8d, byte [rsp + 0xaf]
mov eax, r8d
test sil, 0x10
jne 0x21018c071
movzx eax, byte [rsp + 0xae]
cmp r8b, 3
jne 0x21018bf74
cmp al, 2
je 0x21018bf88
cmp al, 1
jne 0x21018bfad
mov rax, qword [rsp + 0x40]
movzx ecx, byte [rax]
mov eax, r8d
test cl, cl
jne 0x21018bfb9
jmp 0x21018c071
call sym.msys_2.0.dll___errno
mov ebx, dword [rax]
mov rax, qword [rsp + 0x48]
test rax, rax
je 0x21018c1c6
mov rcx, rax
call sym.free_1
jmp 0x21018c1c6
mov rax, qword [rsp + 0x130]
add rax, qword [rsp + 0x138]
cmp rax, rbp
jbe 0x21018c2e0
mov byte [rbp], 0x20
mov rcx, qword [rsp + 0xb0]
add rbp, 1
movzx r8d, byte [rcx]
test r8b, r8b
jne 0x21018c663
jmp 0x21018c696
cmp al, 2
je 0x21018ca76
mov r8, qword [rsp + 0xb0]
movzx ecx, byte [r8]
test cl, cl
je 0x21018ca1c
mov rax, qword [rsp + 0x130]
add rax, qword [rsp + 0x138]
cmp rax, rbp
ja 0x21018ca09
jmp 0x21018c2e0
cmp rax, rbp
je 0x21018c2e0
add r8, 1
mov byte [rbp], cl
add rbp, 1
movzx ecx, byte [r8]
test cl, cl
jne 0x21018ca00
cmp byte [rsp + 0xae], 1
jne 0x21018bef0
mov rax, qword [rsp + 0x130]
add rax, qword [rsp + 0x138]
cmp rbp, rax
jae 0x21018c2e0
mov byte [rbp], 0x20
add rbp, 1
jmp 0x21018bef0
mov rax, qword [rsp + 0x130]
add rax, qword [rsp + 0x138]
cmp rbp, rax
jae 0x21018c2e0
mov byte [rbp], 0x20
add rbp, 1
jmp 0x21018c8c7
mov rax, qword [rsp + 0x130]
add rax, qword [rsp + 0x138]
cmp rbp, rax
jae 0x21018c2e0
movzx eax, byte [rsp + 0x76]
add rbp, 1
mov byte [rbp - 1], al
jmp 0x21018c9d0
mov rax, qword [rsp + 0x130]
add rax, qword [rsp + 0x138]
cmp rbp, rax
jae 0x21018c2e0
mov byte [rbp], 0x20
mov rcx, qword [rsp + 0xb0]
add rbp, 1
movzx r8d, byte [rcx]
test r8b, r8b
jne 0x21018c03a
jmp 0x21018c069
call sym.msys_2.0.dll___errno
mov dword [rax], 7
call sym.msys_2.0.dll___errno
mov ebx, dword [rax]
jmp 0x21018c1c6