// File: Tarstingo[P]rarcrack/crackrar.cpp
// Function: toWideChar(unsigned char*)
std::vector<muchar> toWideChar(muchar *pass)
{
    timespec tmptime,nowtime;
    clock_gettime(CLOCK_REALTIME,&tmptime);

    int len=strlen((char *)pass);
    std::vector<muchar> res;
    for(int i=0;i<len;i++)
    {
        res.push_back(pass[i]);
        res.push_back(0x00);
    }

    clock_gettime(CLOCK_REALTIME,&nowtime);
    printf("\033[31mtoWideChar\033[m\n");
    if(tmptime.tv_nsec>nowtime.tv_nsec)
    {
        cout<<"0s   "<<1000000000-nowtime.tv_nsec+tmptime.tv_nsec<<" ns"<<endl;
    }
    else
    {
        cout<<"0s   "<<nowtime.tv_nsec-tmptime.tv_nsec<<" ns"<<endl;
    }

    cout<<tmptime.tv_sec<<" "<<tmptime.tv_nsec<<endl;
    cout<<nowtime.tv_sec<<" "<<nowtime.tv_nsec<<endl;

    return res;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xd0, %rsp
movq %rdi, -0x58(%rbp)
movq %rdi, %rax
movq %rax, -0x60(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
xorl %edi, %edi
leaq -0x20(%rbp), %rsi
callq 0x2150
movq -0x10(%rbp), %rdi
callq 0x20c0
movq -0x58(%rbp), %rdi
movl %eax, -0x34(%rbp)
movb $0x0, -0x35(%rbp)
callq 0x3430
movl $0x0, -0x3c(%rbp)
movl -0x3c(%rbp), %eax
cmpl -0x34(%rbp), %eax
jge 0x2601
movq -0x58(%rbp), %rdi
movq -0x10(%rbp), %rsi
movslq -0x3c(%rbp), %rax
addq %rax, %rsi
callq 0x3450
jmp 0x25c7
movq -0x58(%rbp), %rdi
movb $0x0, -0x4d(%rbp)
leaq -0x4d(%rbp), %rsi
callq 0x34c0
jmp 0x25da
jmp 0x25dc
movl -0x3c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x3c(%rbp)
jmp 0x25a9
movq -0x58(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
callq 0x33d0
jmp 0x27e3
xorl %edi, %edi
movl %edi, -0x64(%rbp)
leaq -0x30(%rbp), %rsi
callq 0x2150
movl -0x64(%rbp), %eax
leaq 0x39eb(%rip), %rdi      # 0x6004
callq 0x2040
jmp 0x2620
movq -0x18(%rbp), %rax
cmpq -0x28(%rbp), %rax
jle 0x268e
movq 0x69a7(%rip), %rdi      # 0x8fd8
leaq 0x39e0(%rip), %rsi      # 0x6018
callq 0x2160
movq %rax, -0x70(%rbp)
jmp 0x2643
movq -0x70(%rbp), %rdi
movq -0x28(%rbp), %rax
movq -0x18(%rbp), %rsi
subq %rax, %rsi
addq $0x3b9aca00, %rsi       # imm = 0x3B9ACA00
callq 0x2250
movq %rax, -0x78(%rbp)
jmp 0x2664
movq -0x78(%rbp), %rdi
leaq 0x39af(%rip), %rsi      # 0x601e
callq 0x2160
movq %rax, -0x80(%rbp)
jmp 0x267a
movq -0x80(%rbp), %rdi
movq 0x6943(%rip), %rsi      # 0x8fc8
callq 0x21a0
jmp 0x268c
jmp 0x26fd
movq 0x6943(%rip), %rdi      # 0x8fd8
leaq 0x397c(%rip), %rsi      # 0x6018
callq 0x2160
movq %rax, -0x88(%rbp)
jmp 0x26aa
movq -0x88(%rbp), %rdi
movq -0x28(%rbp), %rsi
movq -0x18(%rbp), %rax
subq %rax, %rsi
callq 0x2250
movq %rax, -0x90(%rbp)
jmp 0x26ca
movq -0x90(%rbp), %rdi
leaq 0x3946(%rip), %rsi      # 0x601e
callq 0x2160
movq %rax, -0x98(%rbp)
jmp 0x26e6
movq -0x98(%rbp), %rdi
movq 0x68d4(%rip), %rsi      # 0x8fc8
callq 0x21a0
jmp 0x26fb
jmp 0x26fd
movq -0x20(%rbp), %rsi
movq 0x68d0(%rip), %rdi      # 0x8fd8
callq 0x2250
movq %rax, -0xa0(%rbp)
jmp 0x2716
movq -0xa0(%rbp), %rdi
leaq 0x38f8(%rip), %rsi      # 0x601c
callq 0x2160
movq %rax, -0xa8(%rbp)
jmp 0x2732
movq -0xa8(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x2250
movq %rax, -0xb0(%rbp)
jmp 0x274b
movq -0xb0(%rbp), %rdi
movq 0x686f(%rip), %rsi      # 0x8fc8
callq 0x21a0
jmp 0x2760
movq -0x30(%rbp), %rsi
movq 0x686d(%rip), %rdi      # 0x8fd8
callq 0x2250
movq %rax, -0xb8(%rbp)
jmp 0x2779
movq -0xb8(%rbp), %rdi
leaq 0x3895(%rip), %rsi      # 0x601c
callq 0x2160
movq %rax, -0xc0(%rbp)
jmp 0x2795
movq -0xc0(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x2250
movq %rax, -0xc8(%rbp)
jmp 0x27ae
movq -0xc8(%rbp), %rdi
movq 0x680c(%rip), %rsi      # 0x8fc8
callq 0x21a0
jmp 0x27c3
movb $0x1, -0x35(%rbp)
testb $0x1, -0x35(%rbp)
jne 0x27d6
movq -0x58(%rbp), %rdi
callq 0x33d0
movq -0x60(%rbp), %rax
addq $0xd0, %rsp
popq %rbp
retq
movq -0x48(%rbp), %rdi
callq 0x2240
nopl (%rax)