Function at 0x140181c30
Capabilities:
Resolve function by parsing pe exports

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x28
mov eax, 0xfffffffe
test rcx, rcx
je 0x140181e90
mov r14d, edx
cmp edx, 5
ja 0x140181e90
mov r15, rcx
mov rsi, qword [rcx + 0x28]
test rsi, rsi
je 0x140181e90
cmp qword [r15 + 0x10], 0
je 0x140181e81
cmp qword [r15], 0
je 0x140181e76
mov ecx, dword [rsi + 8]
cmp r14d, 4
je 0x140181c94
cmp ecx, 0x29a
je 0x140181e81
cmp dword [r15 + 0x18], 0
je 0x140182719
mov qword [rsi], r15
mov r12d, dword [rsi + 0x40]
mov dword [rsi + 0x40], r14d
cmp ecx, 0x2a
jne 0x140181f9f
cmp dword [rsi + 0x2c], 2
jne 0x140181ea1
xor ecx, ecx
xor edx, edx
xor r8d, r8d
call fcn.1401804b0
mov dword [r15 + 0x4c], eax
mov rax, qword [rsi + 0x10]
mov ecx, dword [rsi + 0x28]
lea edx, [rcx + 1]
mov dword [rsi + 0x28], edx
mov byte [rax + rcx], 0x1f
mov rax, qword [rsi + 0x10]
mov ecx, dword [rsi + 0x28]
lea edx, [rcx + 1]
mov dword [rsi + 0x28], edx
mov byte [rax + rcx], 0x8b
mov rax, qword [rsi + 0x10]
mov ecx, dword [rsi + 0x28]
lea edx, [rcx + 1]
mov dword [rsi + 0x28], edx
mov byte [rax + rcx], 8
mov rax, qword [rsi + 0x30]
test rax, rax
je 0x140182406
cmp dword [rax], 0
setne cl
cmp dword [rax + 0x3c], 0
setne dl
add dl, dl
or dl, cl
cmp qword [rax + 0x10], 0
setne cl
shl cl, 2
or cl, dl
cmp qword [rax + 0x20], 0
setne dl
shl dl, 3
or dl, cl
cmp qword [rax + 0x30], 0
setne al
shl al, 4
or al, dl
mov rcx, qword [rsi + 0x10]
mov edx, dword [rsi + 0x28]
lea ebp, [rdx + 1]
mov dword [rsi + 0x28], ebp
mov byte [rcx + rdx], al
mov rax, qword [rsi + 0x30]
mov al, byte [rax + 4]
mov rcx, qword [rsi + 0x10]
mov edx, dword [rsi + 0x28]
lea ebp, [rdx + 1]
mov dword [rsi + 0x28], ebp
mov byte [rcx + rdx], al
mov rax, qword [rsi + 0x30]
mov al, byte [rax + 5]
mov rcx, qword [rsi + 0x10]
mov edx, dword [rsi + 0x28]
lea ebp, [rdx + 1]
mov dword [rsi + 0x28], ebp
mov byte [rcx + rdx], al
mov rax, qword [rsi + 0x30]
mov al, byte [rax + 6]
mov rcx, qword [rsi + 0x10]
mov edx, dword [rsi + 0x28]
lea ebp, [rdx + 1]
mov dword [rsi + 0x28], ebp
mov byte [rcx + rdx], al
mov rax, qword [rsi + 0x30]
mov al, byte [rax + 7]
mov rcx, qword [rsi + 0x10]
mov edx, dword [rsi + 0x28]
lea ebp, [rdx + 1]
mov dword [rsi + 0x28], ebp
mov byte [rcx + rdx], al
mov ecx, dword [rsi + 0xac]
mov al, 2
cmp ecx, 9
je 0x140181dd9
cmp dword [rsi + 0xb0], 1
setg al
shl al, 2
cmp ecx, 2
movzx ecx, al
mov eax, 4
cmovge eax, ecx
mov rcx, qword [rsi + 0x10]
mov edx, dword [rsi + 0x28]
lea ebp, [rdx + 1]
mov dword [rsi + 0x28], ebp
mov byte [rcx + rdx], al
mov rax, qword [rsi + 0x30]
mov al, byte [rax + 0xc]
mov rcx, qword [rsi + 0x10]
mov edx, dword [rsi + 0x28]
lea ebp, [rdx + 1]
mov dword [rsi + 0x28], ebp
mov byte [rcx + rdx], al
mov rax, qword [rsi + 0x30]
cmp qword [rax + 0x10], 0
je 0x140181e39
mov al, byte [rax + 0x18]
mov rcx, qword [rsi + 0x10]
mov edx, dword [rsi + 0x28]
lea ebp, [rdx + 1]
mov dword [rsi + 0x28], ebp
mov byte [rcx + rdx], al
mov rax, qword [rsi + 0x30]
mov al, byte [rax + 0x19]
mov rcx, qword [rsi + 0x10]
mov edx, dword [rsi + 0x28]
lea ebp, [rdx + 1]
mov dword [rsi + 0x28], ebp
mov byte [rcx + rdx], al
mov rax, qword [rsi + 0x30]
cmp dword [rax + 0x3c], 0
je 0x140181e54
mov ecx, dword [r15 + 0x4c]
mov rdx, qword [rsi + 0x10]
mov r8d, dword [rsi + 0x28]
call fcn.1401804b0
mov dword [r15 + 0x4c], eax
mov dword [rsi + 0x38], 0
mov dword [rsi + 8], 0x45
mov rcx, qword [rsi + 0x30]
cmp qword [rcx + 0x10], 0
jne 0x140181fb7
jmp 0x1401820cf
cmp dword [r15 + 8], 0
je 0x140181c7f
mov rcx, qword [str.0_M_]
mov rcx, qword [rcx + 0x20]
mov qword [r15 + 0x20], rcx
add rsp, 0x28
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
mov eax, dword [rsi + 0x48]
shl eax, 0xc
add eax, 0xffff8800
xor edx, edx
cmp dword [rsi + 0xb0], 1
jg 0x140181ed8
mov ecx, dword [rsi + 0xac]
cmp ecx, 2
jl 0x140181ed8
mov edx, 0x40
cmp ecx, 6
jl 0x140181ed8
setne cl
movzx edx, cl
or edx, 2
shl edx, 6
or edx, eax
mov ecx, edx
or ecx, 0x20
cmp dword [rsi + 0x94], 0
cmove ecx, edx
imul rdx, rcx, 0x8421085
shr rdx, 0x20
mov eax, ecx
sub eax, edx
shr eax, 1
add eax, edx
shr eax, 4
mov edx, eax
shl edx, 5
sub eax, edx
add eax, ecx
or eax, ecx
mov dword [rsi + 8], 0x71
mov rdx, qword [rsi + 0x10]
mov edi, dword [rsi + 0x28]
lea ebp, [rdi + 1]
mov dword [rsi + 0x28], ebp
mov byte [rdx + rdi], ch
xor al, 0x1f
mov rcx, qword [rsi + 0x10]
mov edx, dword [rsi + 0x28]
lea ebp, [rdx + 1]
mov dword [rsi + 0x28], ebp
mov byte [rcx + rdx], al
cmp dword [rsi + 0x94], 0
je 0x140181f8c
mov eax, dword [r15 + 0x4c]
mov ecx, eax
shr ecx, 0x10
shr eax, 0x18
mov rdx, qword [rsi + 0x10]
mov ebp, dword [rsi + 0x28]
lea ebx, [rbp + 1]
mov dword [rsi + 0x28], ebx
mov byte [rdx + rbp], al
mov rax, qword [rsi + 0x10]
mov edx, dword [rsi + 0x28]
lea ebp, [rdx + 1]
mov dword [rsi + 0x28], ebp
mov byte [rax + rdx], cl
mov eax, dword [r15 + 0x4c]
mov rcx, qword [rsi + 0x10]
mov edx, dword [rsi + 0x28]
lea ebp, [rdx + 1]
mov dword [rsi + 0x28], ebp
mov byte [rcx + rdx], ah
mov rcx, qword [rsi + 0x10]
mov edx, dword [rsi + 0x28]
lea ebp, [rdx + 1]
mov dword [rsi + 0x28], ebp
mov byte [rcx + rdx], al
xor ecx, ecx
xor edx, edx
xor r8d, r8d
call fcn.14018a030
mov dword [r15 + 0x4c], eax
mov ecx, dword [rsi + 8]
cmp ecx, 0x45
jne 0x1401820e5
mov rcx, qword [rsi + 0x30]
cmp qword [rcx + 0x10], 0
je 0x1401820cf
mov r8d, dword [rsi + 0x28]
mov edx, dword [rsi + 0x38]
movzx eax, word [rcx + 0x18]
cmp edx, eax
jae 0x140182097
mov eax, r8d
cmp r8d, dword [rsi + 0x18]
jne 0x140182060
jmp 0x140181fe3
mov r8d, dword [rsi + 0x28]
cmp r8d, dword [rsi + 0x18]
jne 0x140182060
sub r8d, eax
jbe 0x140182001
cmp dword [rcx + 0x3c], 0
je 0x140182001
mov ecx, dword [r15 + 0x4c]
mov edx, eax
add rdx, qword [rsi + 0x10]
call fcn.1401804b0
mov dword [r15 + 0x4c], eax
mov rbx, qword [r15 + 0x28]
mov rcx, rbx
call fcn.140187f40
mov ebp, dword [rbx + 0x28]
mov eax, dword [r15 + 0x18]
cmp ebp, eax
cmova ebp, eax
test ebp, ebp
je 0x14018204c
mov rcx, qword [r15 + 0x10]
mov rdx, qword [rbx + 0x20]
mov edi, ebp
mov r8, rdi
call sub.msvcrt.dll_memcpy
add qword [r15 + 0x10], rdi
add qword [rbx + 0x20], rdi
add dword [r15 + 0x1c], ebp
sub dword [r15 + 0x18], ebp
sub dword [rbx + 0x28], ebp
jne 0x14018204c
mov rax, qword [rbx + 0x10]
mov qword [rbx + 0x20], rax
mov r8d, dword [rsi + 0x28]
mov rcx, qword [rsi + 0x30]
cmp r8d, dword [rsi + 0x18]
je 0x140182097
mov edx, dword [rsi + 0x38]
mov eax, r8d
mov rcx, qword [rcx + 0x10]
mov edx, edx
movzx ecx, byte [rcx + rdx]
mov rdx, qword [rsi + 0x10]
lea ebp, [r8 + 1]
mov dword [rsi + 0x28], ebp
mov ebp, r8d
mov byte [rdx + rbp], cl
mov edx, dword [rsi + 0x38]
add edx, 1
mov dword [rsi + 0x38], edx
mov rcx, qword [rsi + 0x30]
movzx ebp, word [rcx + 0x18]
cmp edx, ebp
jb 0x140181fd9
mov r8d, eax
cmp dword [rcx + 0x3c], 0
je 0x1401820c0
mov eax, dword [rsi + 0x28]
sub eax, r8d
jbe 0x1401820c0
mov ecx, dword [r15 + 0x4c]
mov edx, r8d
add rdx, qword [rsi + 0x10]
mov r8d, eax
call fcn.1401804b0
mov dword [r15 + 0x4c], eax
mov rcx, qword [rsi + 0x30]
mov eax, dword [rsi + 0x38]
cmp eax, dword [rcx + 0x18]
jne 0x1401820e2
mov dword [rsi + 0x38], 0
mov dword [rsi + 8], 0x49
cmp qword [rcx + 0x20], 0
jne 0x1401820fd
jmp 0x140182219
mov ecx, dword [rsi + 8]
cmp ecx, 0x49
jne 0x140182208
mov rcx, qword [rsi + 0x30]
cmp qword [rcx + 0x20], 0
je 0x140182219
mov r8d, dword [rsi + 0x28]
mov eax, r8d
cmp r8d, dword [rsi + 0x18]
jne 0x140182194
jmp 0x14018211a
mov r8d, dword [rsi + 0x28]
cmp r8d, dword [rsi + 0x18]
jne 0x140182194
sub r8d, eax
jbe 0x14018213c
mov rcx, qword [rsi + 0x30]
cmp dword [rcx + 0x3c], 0
je 0x14018213c
mov ecx, dword [r15 + 0x4c]
mov edx, eax
add rdx, qword [rsi + 0x10]
call fcn.1401804b0
mov dword [r15 + 0x4c], eax
mov rbx, qword [r15 + 0x28]
mov rcx, rbx
call fcn.140187f40
mov ebp, dword [rbx + 0x28]
mov eax, dword [r15 + 0x18]
cmp ebp, eax
cmova ebp, eax
test ebp, ebp
je 0x140182187
mov rcx, qword [r15 + 0x10]
mov rdx, qword [rbx + 0x20]
mov edi, ebp
mov r8, rdi
call sub.msvcrt.dll_memcpy
add qword [r15 + 0x10], rdi
add qword [rbx + 0x20], rdi
add dword [r15 + 0x1c], ebp
sub dword [r15 + 0x18], ebp
sub dword [rbx + 0x28], ebp
jne 0x140182187
mov rax, qword [rbx + 0x10]
mov qword [rbx + 0x20], rax
mov r8d, dword [rsi + 0x28]
cmp r8d, dword [rsi + 0x18]
je 0x1401821d3
mov eax, r8d
mov rcx, qword [rsi + 0x10]
mov rdx, qword [rsi + 0x30]
mov rdx, qword [rdx + 0x20]
mov ebp, dword [rsi + 0x38]
lea ebx, [rbp + 1]
mov dword [rsi + 0x38], ebx
movzx edx, byte [rdx + rbp]
lea ebp, [r8 + 1]
mov dword [rsi + 0x28], ebp
mov ebp, r8d
mov byte [rcx + rbp], dl
test dl, dl
jne 0x140182110
xor edi, edi
mov r8d, eax
mov rax, qword [rsi + 0x30]
cmp dword [rax + 0x3c], 0
jne 0x1401821e2
jmp 0x140182201
mov edi, 1
mov rax, qword [rsi + 0x30]
cmp dword [rax + 0x3c], 0
je 0x140182201
mov eax, dword [rsi + 0x28]
sub eax, r8d
jbe 0x140182201
mov ecx, dword [r15 + 0x4c]
mov edx, r8d
add rdx, qword [rsi + 0x10]
mov r8d, eax
call fcn.1401804b0
mov dword [r15 + 0x4c], eax
test edi, edi
je 0x140182212
mov ecx, dword [rsi + 8]
cmp ecx, 0x5b
je 0x140182220
jmp 0x140182348
mov dword [rsi + 0x38], 0
mov dword [rsi + 8], 0x5b
mov rax, qword [rsi + 0x30]
cmp qword [rax + 0x30], 0
je 0x140182352
mov r8d, dword [rsi + 0x28]
mov eax, r8d
cmp r8d, dword [rsi + 0x18]
jne 0x1401822d4
jmp 0x14018225a
mov r8d, dword [rsi + 0x28]
cmp r8d, dword [rsi + 0x18]
jne 0x1401822d4
sub r8d, eax
jbe 0x14018227c
mov rcx, qword [rsi + 0x30]
cmp dword [rcx + 0x3c], 0
je 0x14018227c
mov ecx, dword [r15 + 0x4c]
mov edx, eax
add rdx, qword [rsi + 0x10]
call fcn.1401804b0
mov dword [r15 + 0x4c], eax
mov rbx, qword [r15 + 0x28]
mov rcx, rbx
call fcn.140187f40
mov ebp, dword [rbx + 0x28]
mov eax, dword [r15 + 0x18]
cmp ebp, eax
cmova ebp, eax
test ebp, ebp
je 0x1401822c7
mov rcx, qword [r15 + 0x10]
mov rdx, qword [rbx + 0x20]
mov edi, ebp
mov r8, rdi
call sub.msvcrt.dll_memcpy
add qword [r15 + 0x10], rdi
add qword [rbx + 0x20], rdi
add dword [r15 + 0x1c], ebp
sub dword [r15 + 0x18], ebp
sub dword [rbx + 0x28], ebp
jne 0x1401822c7
mov rax, qword [rbx + 0x10]
mov qword [rbx + 0x20], rax
mov r8d, dword [rsi + 0x28]
cmp r8d, dword [rsi + 0x18]
je 0x140182313
mov eax, r8d
mov rcx, qword [rsi + 0x10]
mov rdx, qword [rsi + 0x30]
mov rdx, qword [rdx + 0x30]
mov ebp, dword [rsi + 0x38]
lea ebx, [rbp + 1]
mov dword [rsi + 0x38], ebx
movzx edx, byte [rdx + rbp]
lea ebp, [r8 + 1]
mov dword [rsi + 0x28], ebp
mov ebp, r8d
mov byte [rcx + rbp], dl
test dl, dl
jne 0x140182250
xor edi, edi
mov r8d, eax
mov rax, qword [rsi + 0x30]
cmp dword [rax + 0x3c], 0
jne 0x140182322
jmp 0x140182341
mov edi, 1
mov rax, qword [rsi + 0x30]
cmp dword [rax + 0x3c], 0
je 0x140182341
mov eax, dword [rsi + 0x28]
sub eax, r8d
jbe 0x140182341
mov ecx, dword [r15 + 0x4c]
mov edx, r8d
add rdx, qword [rsi + 0x10]
mov r8d, eax
call fcn.1401804b0
mov dword [r15 + 0x4c], eax
test edi, edi
je 0x140182352
mov ecx, dword [rsi + 8]
cmp ecx, 0x67
je 0x140182359
jmp 0x1401824ab
mov dword [rsi + 8], 0x67
mov rax, qword [rsi + 0x30]
cmp dword [rax + 0x3c], 0
je 0x1401824a4
mov eax, dword [rsi + 0x28]
add eax, 2
cmp eax, dword [rsi + 0x18]
jbe 0x1401823bd
mov rbx, qword [r15 + 0x28]
mov rcx, rbx
call fcn.140187f40
mov ebp, dword [rbx + 0x28]
mov eax, dword [r15 + 0x18]
cmp ebp, eax
cmova ebp, eax
test ebp, ebp
je 0x1401823bd
mov rcx, qword [r15 + 0x10]
mov rdx, qword [rbx + 0x20]
mov edi, ebp
mov r8, rdi
call sub.msvcrt.dll_memcpy
add qword [r15 + 0x10], rdi
add qword [rbx + 0x20], rdi
add dword [r15 + 0x1c], ebp
sub dword [r15 + 0x18], ebp
sub dword [rbx + 0x28], ebp
jne 0x1401823bd
mov rax, qword [rbx + 0x10]
mov qword [rbx + 0x20], rax
mov eax, dword [rsi + 0x28]
lea ecx, [rax + 2]
cmp ecx, dword [rsi + 0x18]
ja 0x1401824ab
mov cl, byte [r15 + 0x4c]
mov rdx, qword [rsi + 0x10]
lea ebp, [rax + 1]
mov dword [rsi + 0x28], ebp
mov byte [rdx + rax], cl
mov al, byte [r15 + 0x4d]
mov rcx, qword [rsi + 0x10]
mov edx, dword [rsi + 0x28]
lea ebp, [rdx + 1]
mov dword [rsi + 0x28], ebp
mov byte [rcx + rdx], al
xor ecx, ecx
xor edx, edx
xor r8d, r8d
call fcn.1401804b0
mov dword [r15 + 0x4c], eax
jmp 0x1401824a4
mov rax, qword [rsi + 0x10]
mov ecx, dword [rsi + 0x28]
lea edx, [rcx + 1]
mov dword [rsi + 0x28], edx
mov byte [rax + rcx], 0
mov rax, qword [rsi + 0x10]
mov ecx, dword [rsi + 0x28]
lea edx, [rcx + 1]
mov dword [rsi + 0x28], edx
mov byte [rax + rcx], 0
mov rax, qword [rsi + 0x10]
mov ecx, dword [rsi + 0x28]
lea edx, [rcx + 1]
mov dword [rsi + 0x28], edx
mov byte [rax + rcx], 0
mov rax, qword [rsi + 0x10]
mov ecx, dword [rsi + 0x28]
lea edx, [rcx + 1]
mov dword [rsi + 0x28], edx
mov byte [rax + rcx], 0
mov rax, qword [rsi + 0x10]
mov ecx, dword [rsi + 0x28]
lea edx, [rcx + 1]
mov dword [rsi + 0x28], edx
mov byte [rax + rcx], 0
mov ecx, dword [rsi + 0xac]
mov al, 2
cmp ecx, 9
je 0x140182483
cmp dword [rsi + 0xb0], 1
setg al
shl al, 2
cmp ecx, 2
movzx ecx, al
mov eax, 4
cmovge eax, ecx
mov rcx, qword [rsi + 0x10]
mov edx, dword [rsi + 0x28]
lea ebp, [rdx + 1]
mov dword [rsi + 0x28], ebp
mov byte [rcx + rdx], al
mov rax, qword [rsi + 0x10]
mov ecx, dword [rsi + 0x28]
lea edx, [rcx + 1]
mov dword [rsi + 0x28], edx
mov byte [rax + rcx], 0xb
mov dword [rsi + 8], 0x71
cmp dword [rsi + 0x28], 0
je 0x140182514
mov rbx, qword [r15 + 0x28]
mov rcx, rbx
call fcn.140187f40
mov ebp, dword [rbx + 0x28]
mov eax, dword [r15 + 0x18]
cmp ebp, eax
cmova ebp, eax
test ebp, ebp
je 0x140182502
mov rcx, qword [r15 + 0x10]
mov rdx, qword [rbx + 0x20]
mov edi, ebp
mov r8, rdi
call sub.msvcrt.dll_memcpy
add qword [r15 + 0x10], rdi
add qword [rbx + 0x20], rdi
add dword [r15 + 0x1c], ebp
mov eax, dword [r15 + 0x18]
sub eax, ebp
mov dword [r15 + 0x18], eax
sub dword [rbx + 0x28], ebp
jne 0x140182502
mov rcx, qword [rbx + 0x10]
mov qword [rbx + 0x20], rcx
test eax, eax
jne 0x14018251f
mov dword [rsi + 0x40], 0xffffffff
xor eax, eax
jmp 0x140181e90
cmp dword [r15 + 8], 0
je 0x1401826de
mov eax, dword [rsi + 8]
mov ecx, dword [r15 + 8]
cmp eax, 0x29a
jne 0x140182537
test ecx, ecx
jne 0x140182719
jmp 0x14018253b
test ecx, ecx
jne 0x14018255a
cmp eax, 0x29a
setne al
test r14d, r14d
setne cl
test cl, al
jne 0x14018255a
cmp dword [rsi + 0x9c], 0
je 0x140182ca3
mov eax, dword [rsi + 0xb0]
cmp eax, 3
je 0x140182732
cmp eax, 2
je 0x1401825c1
movsxd rbp, dword [rsi + 0xac]
shl rbp, 4
lea rax, [0x1404d11e0]
mov rcx, rsi
mov edx, r14d
call qword [rbp + rax + 8]
mov ecx, eax
or ecx, 1
cmp ecx, 3
jne 0x14018259b
mov dword [rsi + 8], 0x29a
test eax, 0xfffffffd
je 0x140182bda
cmp eax, 1
je 0x140182bc0
jmp 0x140182ca3
mov rax, qword [rsi]
cmp dword [rax + 0x18], 0
je 0x140182bda
cmp dword [rsi + 0x9c], 0
jne 0x1401825df
mov rcx, rsi
call fcn.140181250
cmp dword [rsi + 0x9c], 0
je 0x140182a2f
mov dword [rsi + 0x88], 0
mov rax, qword [rsi + 0x50]
mov ecx, dword [rsi + 0x94]
movzx eax, byte [rax + rcx]
mov rcx, qword [rsi + 0x16f8]
mov edx, dword [rsi + 0x16f4]
mov word [rcx + rdx*2], 0
mov rcx, qword [rsi + 0x16e8]
lea ebp, [rdx + 1]
mov dword [rsi + 0x16f4], ebp
mov byte [rcx + rdx], al
add word [rsi + rax*4 + 0xbc], 1
mov eax, dword [rsi + 0x16f4]
mov ecx, dword [rsi + 0x16f0]
add ecx, 0xffffffff
add dword [rsi + 0x9c], 0xffffffff
mov r8d, dword [rsi + 0x94]
add r8d, 1
mov dword [rsi + 0x94], r8d
cmp eax, ecx
jne 0x1401825c1
mov eax, dword [rsi + 0x84]
test eax, eax
js 0x140182669
mov rdx, qword [rsi + 0x50]
add rdx, rax
jmp 0x14018266b
xor edx, edx
sub r8d, eax
mov rcx, rsi
xor r9d, r9d
call fcn.140188130
mov eax, dword [rsi + 0x94]
mov dword [rsi + 0x84], eax
mov rbp, qword [rsi]
mov rbx, qword [rbp + 0x28]
mov rcx, rbx
call fcn.140187f40
mov edi, dword [rbx + 0x28]
mov eax, dword [rbp + 0x18]
cmp edi, eax
cmova edi, eax
test edi, edi
je 0x1401825b4
mov rcx, qword [rbp + 0x10]
mov rdx, qword [rbx + 0x20]
mov r12d, edi
mov r8, r12
call sub.msvcrt.dll_memcpy
add qword [rbp + 0x10], r12
add qword [rbx + 0x20], r12
add dword [rbp + 0x1c], edi
sub dword [rbp + 0x18], edi
sub dword [rbx + 0x28], edi
jne 0x1401825b4
mov rax, qword [rbx + 0x10]
mov qword [rbx + 0x20], rax
jmp 0x1401825b4
xor edx, edx
cmp r14d, 4
setg bl
xor eax, eax
cmp r12d, 4
setg cl
cmp r14d, 4
je 0x14018251f
lea ebp, [r14 + r14]
mov dl, bl
lea edx, [rdx + rdx*8]
sub ebp, edx
add r12d, r12d
mov al, cl
lea eax, [rax + rax*8]
sub r12d, eax
cmp ebp, r12d
jg 0x14018251f
mov rax, qword [str.0_M_]
mov rax, qword [rax + 0x38]
mov qword [r15 + 0x20], rax
mov eax, 0xfffffffb
jmp 0x140181e90
lea r12, [0x1404d2040]
mov eax, dword [rsi + 0x9c]
cmp eax, 0x103
jb 0x140182762
jmp 0x1401827a2
mov rax, qword [rsi]
cmp dword [rax + 0x18], 0
je 0x140182bda
mov eax, dword [rsi + 0x9c]
cmp eax, 0x103
jae 0x1401827a2
mov rcx, rsi
call fcn.140181250
mov eax, dword [rsi + 0x9c]
test r14d, r14d
jne 0x140182780
cmp eax, 0x103
jb 0x140182bda
test eax, eax
je 0x140182a5a
mov dword [rsi + 0x88], 0
cmp eax, 2
ja 0x1401827ac
mov ecx, dword [rsi + 0x94]
jmp 0x140182851
mov dword [rsi + 0x88], 0
mov ecx, dword [rsi + 0x94]
test rcx, rcx
je 0x14018284f
mov rbx, qword [rsi + 0x50]
mov dl, byte [rbx + rcx - 1]
cmp dl, byte [rbx + rcx]
jne 0x140182851
add rbx, rcx
cmp dl, byte [rbx + 1]
jne 0x140182851
cmp dl, byte [rbx + 2]
jne 0x140182851
lea r8, [rbx + 0x102]
xor ebp, ebp
cmp dl, byte [rbx + rbp + 3]
jne 0x140182942
cmp dl, byte [rbx + rbp + 4]
jne 0x14018294c
cmp dl, byte [rbx + rbp + 5]
jne 0x140182956
cmp dl, byte [rbx + rbp + 6]
jne 0x140182960
cmp dl, byte [rbx + rbp + 7]
jne 0x14018296a
cmp dl, byte [rbx + rbp + 8]
jne 0x140182974
cmp dl, byte [rbx + rbp + 9]
jne 0x14018297e
lea r9, [rbp + 0xa]
lea rdi, [rbp + 8]
cmp r9, 0x101
ja 0x140182842
cmp dl, byte [rbx + rbp + 0xa]
mov rbp, rdi
je 0x1401827e2
lea rdx, [rbx + rdi]
add rdx, 2
jmp 0x140182986
xor ecx, ecx
mov rax, qword [rsi + 0x50]
mov ecx, ecx
movzx eax, byte [rax + rcx]
mov rcx, qword [rsi + 0x16f8]
mov edx, dword [rsi + 0x16f4]
mov word [rcx + rdx*2], 0
mov rcx, qword [rsi + 0x16e8]
lea ebp, [rdx + 1]
mov dword [rsi + 0x16f4], ebp
mov byte [rcx + rdx], al
add word [rsi + rax*4 + 0xbc], 1
mov eax, dword [rsi + 0x16f4]
mov ecx, dword [rsi + 0x16f0]
add ecx, 0xffffffff
add dword [rsi + 0x9c], 0xffffffff
mov r8d, dword [rsi + 0x94]
add r8d, 1
mov dword [rsi + 0x94], r8d
cmp eax, ecx
jne 0x140182755
mov eax, dword [rsi + 0x84]
test eax, eax
js 0x1401828cd
mov rdx, qword [rsi + 0x50]
add rdx, rax
jmp 0x1401828cf
xor edx, edx
sub r8d, eax
mov rcx, rsi
xor r9d, r9d
call fcn.140188130
mov eax, dword [rsi + 0x94]
mov dword [rsi + 0x84], eax
mov rbp, qword [rsi]
mov rbx, qword [rbp + 0x28]
mov rcx, rbx
call fcn.140187f40
mov edi, dword [rbx + 0x28]
mov eax, dword [rbp + 0x18]
cmp edi, eax
cmova edi, eax
test edi, edi
je 0x140182748
mov rcx, qword [rbp + 0x10]
mov rdx, qword [rbx + 0x20]
mov r13d, edi
mov r8, r13
call sub.msvcrt.dll_memcpy
add qword [rbp + 0x10], r13
add qword [rbx + 0x20], r13
add dword [rbp + 0x1c], edi
sub dword [rbp + 0x18], edi
sub dword [rbx + 0x28], edi
jne 0x140182748
mov rax, qword [rbx + 0x10]
mov qword [rbx + 0x20], rax
jmp 0x140182748
lea rdx, [rbx + rbp]
add rdx, 3
jmp 0x140182986
lea rdx, [rbx + rbp]
add rdx, 4
jmp 0x140182986
lea rdx, [rbx + rbp]
add rdx, 5
jmp 0x140182986
lea rdx, [rbx + rbp]
add rdx, 6
jmp 0x140182986
lea rdx, [rbx + rbp]
add rdx, 7
jmp 0x140182986
lea rdx, [rbx + rbp]
add rdx, 8
jmp 0x140182986
lea rdx, [rbx + rbp]
add rdx, 9
sub edx, r8d
add edx, 0x102
cmp edx, eax
cmova edx, eax
mov dword [rsi + 0x88], edx
cmp edx, 3
jb 0x140182851
add dl, 0xfd
mov rax, qword [rsi + 0x16f8]
mov ecx, dword [rsi + 0x16f4]
mov word [rax + rcx*2], 1
mov rax, qword [rsi + 0x16e8]
lea ebp, [rcx + 1]
mov dword [rsi + 0x16f4], ebp
mov byte [rax + rcx], dl
movzx eax, dl
movzx eax, byte [rax + r12]
add word [rsi + rax*4 + 0x4c0], 1
movzx eax, byte [0x1404d1e40]
add word [rsi + rax*4 + 0x9b0], 1
mov eax, dword [rsi + 0x16f4]
mov ecx, dword [rsi + 0x16f0]
mov r8d, dword [rsi + 0x88]
sub dword [rsi + 0x9c], r8d
add r8d, dword [rsi + 0x94]
add ecx, 0xffffffff
mov dword [rsi + 0x94], r8d
mov dword [rsi + 0x88], 0
cmp eax, ecx
jne 0x140182755
jmp 0x1401828ba
test r14d, r14d
je 0x140182bda
mov dword [rsi + 0x170c], 0
cmp r14d, 4
jne 0x140182b31
mov eax, dword [rsi + 0x84]
test eax, eax
jns 0x140182a78
xor edx, edx
jmp 0x140182a7f
mov dword [rsi + 0x170c], 0
cmp r14d, 4
jne 0x140182b11
mov eax, dword [rsi + 0x84]
test eax, eax
js 0x140182a56
mov rdx, qword [rsi + 0x50]
add rdx, rax
mov r8d, dword [rsi + 0x94]
sub r8d, eax
mov rcx, rsi
mov r9d, 1
call fcn.140188130
mov eax, dword [rsi + 0x94]
mov dword [rsi + 0x84], eax
mov rbp, qword [rsi]
mov rbx, qword [rbp + 0x28]
mov rcx, rbx
call fcn.140187f40
mov edi, dword [rbx + 0x28]
mov eax, dword [rbp + 0x18]
cmp edi, eax
cmova edi, eax
test edi, edi
je 0x140182aef
mov rcx, qword [rbp + 0x10]
mov rdx, qword [rbx + 0x20]
mov r12d, edi
mov r8, r12
call sub.msvcrt.dll_memcpy
add qword [rbp + 0x10], r12
add qword [rbx + 0x20], r12
add dword [rbp + 0x1c], edi
sub dword [rbp + 0x18], edi
sub dword [rbx + 0x28], edi
jne 0x140182aef
mov rax, qword [rbx + 0x10]
mov qword [rbx + 0x20], rax
mov rax, qword [rsi]
cmp dword [rax + 0x18], 1
mov eax, 3
sbb eax, 0
mov ecx, eax
or ecx, 1
cmp ecx, 3
je 0x140182594
jmp 0x14018259b
cmp dword [rsi + 0x16f4], 0
je 0x140182bc0
mov eax, dword [rsi + 0x84]
test eax, eax
js 0x140182b48
mov rdx, qword [rsi + 0x50]
add rdx, rax
jmp 0x140182b4a
cmp dword [rsi + 0x16f4], 0
je 0x140182bc0
mov eax, dword [rsi + 0x84]
test eax, eax
jns 0x140182b28
xor edx, edx
mov r8d, dword [rsi + 0x94]
sub r8d, eax
mov rcx, rsi
xor r9d, r9d
call fcn.140188130
mov eax, dword [rsi + 0x94]
mov dword [rsi + 0x84], eax
mov rbp, qword [rsi]
mov rbx, qword [rbp + 0x28]
mov rcx, rbx
call fcn.140187f40
mov edi, dword [rbx + 0x28]
mov eax, dword [rbp + 0x18]
cmp edi, eax
cmova edi, eax
test edi, edi
je 0x140182bb7
mov rcx, qword [rbp + 0x10]
mov rdx, qword [rbx + 0x20]
mov r12d, edi
mov r8, r12
call sub.msvcrt.dll_memcpy
add qword [rbp + 0x10], r12
add qword [rbx + 0x20], r12
add dword [rbp + 0x1c], edi
sub dword [rbp + 0x18], edi
sub dword [rbx + 0x28], edi
jne 0x140182bb7
mov rax, qword [rbx + 0x10]
mov qword [rbx + 0x20], rax
mov rax, qword [rsi]
cmp dword [rax + 0x18], 0
je 0x140182bda
cmp r14d, 5
je 0x140182c4a
mov rcx, rsi
cmp r14d, 1
jne 0x140182bf3
call fcn.140187fd0
jmp 0x140182c4a
xor eax, eax
cmp dword [r15 + 0x18], 0
jne 0x140181e90
mov dword [rsi + 0x40], 0xffffffff
jmp 0x140181e90
xor edx, edx
xor r8d, r8d
xor r9d, r9d
call fcn.140187d70
cmp r14d, 3
jne 0x140182c4a
mov rcx, qword [rsi + 0x68]
mov r8d, dword [rsi + 0x74]
add r8d, 0xffffffff
mov word [rcx + r8*2], 0
add r8, r8
xor edx, edx
call sub.msvcrt.dll_memset
cmp dword [rsi + 0x9c], 0
jne 0x140182c4a
mov dword [rsi + 0x94], 0
mov dword [rsi + 0x84], 0
mov dword [rsi + 0x170c], 0
mov rbx, qword [r15 + 0x28]
mov rcx, rbx
call fcn.140187f40
mov ebp, dword [rbx + 0x28]
mov eax, dword [r15 + 0x18]
cmp ebp, eax
cmova ebp, eax
test ebp, ebp
je 0x140182c9b
mov rcx, qword [r15 + 0x10]
mov rdx, qword [rbx + 0x20]
mov edi, ebp
mov r8, rdi
call sub.msvcrt.dll_memcpy
add qword [r15 + 0x10], rdi
add qword [rbx + 0x20], rdi
add dword [r15 + 0x1c], ebp
mov eax, dword [r15 + 0x18]
sub eax, ebp
mov dword [r15 + 0x18], eax
sub dword [rbx + 0x28], ebp
jne 0x140182c9b
mov rcx, qword [rbx + 0x10]
mov qword [rbx + 0x20], rcx
test eax, eax
je 0x140182506
xor eax, eax
cmp r14d, 4
jne 0x140181e90
mov ecx, dword [rsi + 0x2c]
test ecx, ecx
jle 0x140182d56
mov eax, dword [r15 + 0x4c]
cmp ecx, 2
jne 0x140182d60
mov rcx, qword [rsi + 0x10]
mov edx, dword [rsi + 0x28]
lea ebp, [rdx + 1]
mov dword [rsi + 0x28], ebp
mov byte [rcx + rdx], al
mov al, byte [r15 + 0x4d]
mov rcx, qword [rsi + 0x10]
mov edx, dword [rsi + 0x28]
lea ebp, [rdx + 1]
mov dword [rsi + 0x28], ebp
mov byte [rcx + rdx], al
mov al, byte [r15 + 0x4e]
mov rcx, qword [rsi + 0x10]
mov edx, dword [rsi + 0x28]
lea ebp, [rdx + 1]
mov dword [rsi + 0x28], ebp
mov byte [rcx + rdx], al
mov al, byte [r15 + 0x4f]
mov rcx, qword [rsi + 0x10]
mov edx, dword [rsi + 0x28]
lea ebp, [rdx + 1]
mov dword [rsi + 0x28], ebp
mov byte [rcx + rdx], al
mov al, byte [r15 + 0xc]
mov rcx, qword [rsi + 0x10]
mov edx, dword [rsi + 0x28]
lea ebp, [rdx + 1]
mov dword [rsi + 0x28], ebp
mov byte [rcx + rdx], al
mov al, byte [r15 + 0xd]
mov rcx, qword [rsi + 0x10]
mov edx, dword [rsi + 0x28]
lea ebp, [rdx + 1]
mov dword [rsi + 0x28], ebp
mov byte [rcx + rdx], al
mov al, byte [r15 + 0xe]
mov rcx, qword [rsi + 0x10]
mov edx, dword [rsi + 0x28]
lea ebp, [rdx + 1]
mov dword [rsi + 0x28], ebp
mov byte [rcx + rdx], al
movzx eax, byte [r15 + 0xf]
jmp 0x140182d9c
mov eax, 1
jmp 0x140181e90
mov ecx, eax
shr ecx, 0x10
shr eax, 0x18
mov rdx, qword [rsi + 0x10]
mov ebp, dword [rsi + 0x28]
lea ebx, [rbp + 1]
mov dword [rsi + 0x28], ebx
mov byte [rdx + rbp], al
mov rax, qword [rsi + 0x10]
mov edx, dword [rsi + 0x28]
lea ebp, [rdx + 1]
mov dword [rsi + 0x28], ebp
mov byte [rax + rdx], cl
mov eax, dword [r15 + 0x4c]
mov rcx, qword [rsi + 0x10]
mov edx, dword [rsi + 0x28]
lea ebp, [rdx + 1]
mov dword [rsi + 0x28], ebp
mov byte [rcx + rdx], ah
mov rcx, qword [rsi + 0x10]
mov edx, dword [rsi + 0x28]
lea ebp, [rdx + 1]
mov dword [rsi + 0x28], ebp
mov byte [rcx + rdx], al
mov rbx, qword [r15 + 0x28]
mov rcx, rbx
call fcn.140187f40
mov ebp, dword [rbx + 0x28]
mov eax, dword [r15 + 0x18]
cmp ebp, eax
cmova ebp, eax
test ebp, ebp
je 0x140182df7
mov rcx, qword [r15 + 0x10]
mov rdx, qword [rbx + 0x20]
mov edi, ebp
mov r8, rdi
call sub.msvcrt.dll_memcpy
add qword [r15 + 0x10], rdi
add qword [rbx + 0x20], rdi
add dword [r15 + 0x1c], ebp
sub dword [r15 + 0x18], ebp
sub dword [rbx + 0x28], ebp
jne 0x140182df7
mov rax, qword [rbx + 0x10]
mov qword [rbx + 0x20], rax
mov eax, dword [rsi + 0x2c]
test eax, eax
jle 0x140182e03
neg eax
mov dword [rsi + 0x2c], eax
xor eax, eax
cmp dword [rsi + 0x28], 0
sete al
jmp 0x140181e90