// File: occivink[P]pyct/pyct.cpp
// Function: from_base_64(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>)
vector<u8> from_base_64(string b64)
{
    static const array<u8, 256> table = {
        64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,
        64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,
        64,64,64,64,64,64,64,64,64,64,64,62,64,63,64,64,
        52,53,54,55,56,57,58,59,60,61,64,64,64,64,64,64,
        64, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12,13,14,
        15,16,17,18,19,20,21,22,23,24,25,64,64,64,64,64,
        64,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,
        41,42,43,44,45,46,47,48,49,50,51,64,64,64,64,64,
        64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,
        64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,
        64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,
        64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,
        64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,
        64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,
        64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,
        64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,
    };
    b64.erase(remove_if(b64.begin(), b64.end(), [](char c) { return c == '\n' or c == ' '; }), b64.end());
    if (b64.size() % 4 != 0)
        throw invalid_argument("Invalid base64 input length");
    for (size_t i = 0; i < b64.size(); ++i) {
        if (table[b64[i]] < 64)
            continue;
        if ((i + 2) == b64.size() and b64[i] == '=' and b64[i+1] == '=')
            break;
        if ((i + 1) == b64.size() and b64[i] == '=')
            break;
        throw invalid_argument{"Invalid base64 character"};
    }

    vector<u8> ret;
    ret.reserve(b64.size() / 4 * 3);
    size_t i = 0;
    if (b64.size() >= 4) {
        for (; i < b64.size() - 4; i += 4) {
            ret.push_back(((table[b64[i]]   & 0b00111111) << 2) |
                          ((table[b64[i+1]] & 0b00110000) >> 4));
            ret.push_back(((table[b64[i+1]] & 0b00001111) << 4) |
                          ((table[b64[i+2]] & 0b00111100) >> 2));
            ret.push_back(((table[b64[i+2]] & 0b00000011) << 6) |
                          ((table[b64[i+3]] & 0b00111111)));
        }
    }
    if (b64[i+2] == '=') {
        ret.push_back(((table[b64[i]]   & 0b00111111) << 2) |
                      ((table[b64[i+1]] & 0b00110000) >> 4));
    } else if (b64[i+3] == '=') {
        ret.push_back(((table[b64[i]]   & 0b00111111) << 2) |
                      ((table[b64[i+1]] & 0b00110000) >> 4));
        ret.push_back(((table[b64[i+1]] & 0b00001111) << 4) |
                      ((table[b64[i+2]] & 0b00111100) >> 2));
    } else {
        ret.push_back(((table[b64[i]]   & 0b00111111) << 2) |
                      ((table[b64[i+1]] & 0b00110000) >> 4));
        ret.push_back(((table[b64[i+1]] & 0b00001111) << 4) |
                      ((table[b64[i+2]] & 0b00111100) >> 2));
        ret.push_back(((table[b64[i+2]] & 0b00000011) << 6) |
                      ((table[b64[i+3]] & 0b00111111)));
    }
    return ret;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x1c0, %rsp            # imm = 0x1C0
movq %rsi, -0x90(%rbp)
movq %rdi, %rax
movq -0x90(%rbp), %rdi
movq %rax, -0xa0(%rbp)
movq %rax, %rcx
movq %rcx, -0x98(%rbp)
movq %rax, -0x8(%rbp)
movq %rdi, -0x10(%rbp)
callq 0x3260
movq -0x90(%rbp), %rdi
movq %rax, -0x28(%rbp)
callq 0x3180
movq %rax, -0x30(%rbp)
movq -0x28(%rbp), %rdi
movq -0x30(%rbp), %rsi
callq 0x14180
movq %rax, -0x20(%rbp)
leaq -0x18(%rbp), %rdi
leaq -0x20(%rbp), %rsi
callq 0x17070
movq -0x90(%rbp), %rdi
callq 0x3180
movq %rax, -0x48(%rbp)
leaq -0x40(%rbp), %rdi
leaq -0x48(%rbp), %rsi
callq 0x17070
movq -0x90(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x40(%rbp), %rdx
callq 0x3070
movq -0x90(%rbp), %rdi
movq %rax, -0x50(%rbp)
callq 0x31e0
andq $0x3, %rax
cmpq $0x0, %rax
je 0x13933
movl $0x10, %edi
callq 0x3140
movq %rax, %rdi
movq %rdi, %rax
movq %rax, -0xa8(%rbp)
leaq 0x9812(%rip), %rsi      # 0x1d107
callq 0x3530
jmp 0x138fc
movq -0xa8(%rbp), %rdi
movq 0x106c6(%rip), %rsi     # 0x23fd0
movq 0x106af(%rip), %rdx     # 0x23fc0
callq 0x34c0
movq -0xa8(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
callq 0x3200
jmp 0x14175
movq $0x0, -0x68(%rbp)
movq -0x90(%rbp), %rdi
movq -0x68(%rbp), %rax
movq %rax, -0xb0(%rbp)
callq 0x31e0
movq %rax, %rcx
movq -0xb0(%rbp), %rax
cmpq %rcx, %rax
jae 0x13aa6
movq -0x90(%rbp), %rdi
movq -0x68(%rbp), %rsi
callq 0x3560
movsbq (%rax), %rsi
leaq 0x9650(%rip), %rdi      # 0x1cfd0
callq 0x170b0
movzbl (%rax), %eax
cmpl $0x40, %eax
jge 0x13992
jmp 0x13a95
movq -0x90(%rbp), %rdi
movq -0x68(%rbp), %rax
addq $0x2, %rax
movq %rax, -0xb8(%rbp)
callq 0x31e0
movq %rax, %rcx
movq -0xb8(%rbp), %rax
cmpq %rcx, %rax
jne 0x139f5
movq -0x90(%rbp), %rdi
movq -0x68(%rbp), %rsi
callq 0x3560
movsbl (%rax), %eax
cmpl $0x3d, %eax
jne 0x139f5
movq -0x90(%rbp), %rdi
movq -0x68(%rbp), %rsi
addq $0x1, %rsi
callq 0x3560
movsbl (%rax), %eax
cmpl $0x3d, %eax
jne 0x139f5
jmp 0x13aa6
movq -0x90(%rbp), %rdi
movq -0x68(%rbp), %rax
addq $0x1, %rax
movq %rax, -0xc0(%rbp)
callq 0x31e0
movq %rax, %rcx
movq -0xc0(%rbp), %rax
cmpq %rcx, %rax
jne 0x13a39
movq -0x90(%rbp), %rdi
movq -0x68(%rbp), %rsi
callq 0x3560
movsbl (%rax), %eax
cmpl $0x3d, %eax
jne 0x13a39
jmp 0x13aa6
movl $0x10, %edi
callq 0x3140
movq %rax, %rdi
movq %rdi, %rax
movq %rax, -0xc8(%rbp)
leaq 0x96cc(%rip), %rsi      # 0x1d123
callq 0x3530
jmp 0x13a5e
movq -0xc8(%rbp), %rdi
movq 0x10564(%rip), %rsi     # 0x23fd0
movq 0x1054d(%rip), %rdx     # 0x23fc0
callq 0x34c0
movq -0xc8(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
callq 0x3200
jmp 0x14175
movq -0x68(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x68(%rbp)
jmp 0x1393b
movq -0xa0(%rbp), %rdi
movb $0x0, -0x69(%rbp)
callq 0x170e0
movq -0x90(%rbp), %rdi
callq 0x31e0
movq -0xa0(%rbp), %rdi
shrq $0x2, %rax
leaq (%rax,%rax,2), %rsi
callq 0x17100
jmp 0x13ad8
movq -0x90(%rbp), %rdi
movq $0x0, -0x78(%rbp)
callq 0x31e0
cmpq $0x4, %rax
jb 0x13d2f
jmp 0x13af8
movq -0x90(%rbp), %rdi
movq -0x78(%rbp), %rax
movq %rax, -0xd0(%rbp)
callq 0x31e0
movq %rax, %rcx
movq -0xd0(%rbp), %rax
subq $0x4, %rcx
cmpq %rcx, %rax
jae 0x13d2d
movq -0x90(%rbp), %rdi
movq -0x78(%rbp), %rsi
callq 0x3560
movq %rax, -0xd8(%rbp)
jmp 0x13b3f
movq -0xd8(%rbp), %rax
movsbq (%rax), %rsi
leaq 0x947f(%rip), %rdi      # 0x1cfd0
callq 0x170b0
movq -0x90(%rbp), %rdi
movzbl (%rax), %eax
andl $0x3f, %eax
shll $0x2, %eax
movl %eax, -0xe4(%rbp)
movq -0x78(%rbp), %rsi
incq %rsi
callq 0x3560
movq %rax, -0xe0(%rbp)
jmp 0x13b81
movq -0xe0(%rbp), %rax
movsbq (%rax), %rsi
leaq 0x943d(%rip), %rdi      # 0x1cfd0
callq 0x170b0
movq -0xa0(%rbp), %rdi
movq %rax, %rcx
movl -0xe4(%rbp), %eax
movzbl (%rcx), %ecx
andl $0x30, %ecx
shrl $0x4, %ecx
orl %ecx, %eax
movb %al, -0x79(%rbp)
leaq -0x79(%rbp), %rsi
callq 0x171e0
jmp 0x13bc1
movq -0x90(%rbp), %rdi
movq -0x78(%rbp), %rsi
incq %rsi
callq 0x3560
movq %rax, -0xf0(%rbp)
jmp 0x13bdd
movq -0xf0(%rbp), %rax
movsbq (%rax), %rsi
leaq 0x93e1(%rip), %rdi      # 0x1cfd0
callq 0x170b0
movq -0x90(%rbp), %rdi
movzbl (%rax), %eax
andl $0xf, %eax
shll $0x4, %eax
movl %eax, -0xfc(%rbp)
movq -0x78(%rbp), %rsi
addq $0x2, %rsi
callq 0x3560
movq %rax, -0xf8(%rbp)
jmp 0x13c20
movq -0xf8(%rbp), %rax
movsbq (%rax), %rsi
leaq 0x939e(%rip), %rdi      # 0x1cfd0
callq 0x170b0
movq -0xa0(%rbp), %rdi
movq %rax, %rcx
movl -0xfc(%rbp), %eax
movzbl (%rcx), %ecx
andl $0x3c, %ecx
shrl $0x2, %ecx
orl %ecx, %eax
movb %al, -0x7a(%rbp)
leaq -0x7a(%rbp), %rsi
callq 0x171e0
jmp 0x13c60
movq -0x90(%rbp), %rdi
movq -0x78(%rbp), %rsi
addq $0x2, %rsi
callq 0x3560
movq %rax, -0x108(%rbp)
jmp 0x13c7d
movq -0x108(%rbp), %rax
movsbq (%rax), %rsi
leaq 0x9341(%rip), %rdi      # 0x1cfd0
callq 0x170b0
movq -0x90(%rbp), %rdi
movzbl (%rax), %eax
andl $0x3, %eax
shll $0x6, %eax
movl %eax, -0x114(%rbp)
movq -0x78(%rbp), %rsi
addq $0x3, %rsi
callq 0x3560
movq %rax, -0x110(%rbp)
jmp 0x13cc0
movq -0x110(%rbp), %rax
movsbq (%rax), %rsi
leaq 0x92fe(%rip), %rdi      # 0x1cfd0
callq 0x170b0
movq -0xa0(%rbp), %rdi
movq %rax, %rcx
movl -0x114(%rbp), %eax
movzbl (%rcx), %ecx
andl $0x3f, %ecx
orl %ecx, %eax
movb %al, -0x7b(%rbp)
leaq -0x7b(%rbp), %rsi
callq 0x171e0
jmp 0x13cfd
jmp 0x13cff
movq -0x78(%rbp), %rax
addq $0x4, %rax
movq %rax, -0x78(%rbp)
jmp 0x13af8
movq -0xa0(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
callq 0x17210
jmp 0x14175
jmp 0x13d2f
movq -0x90(%rbp), %rdi
movq -0x78(%rbp), %rsi
addq $0x2, %rsi
callq 0x3560
movq %rax, -0x120(%rbp)
jmp 0x13d4c
movq -0x120(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x3d, %eax
jne 0x13dff
movq -0x90(%rbp), %rdi
movq -0x78(%rbp), %rsi
callq 0x3560
movq %rax, -0x128(%rbp)
jmp 0x13d78
movq -0x128(%rbp), %rax
movsbq (%rax), %rsi
leaq 0x9246(%rip), %rdi      # 0x1cfd0
callq 0x170b0
movq -0x90(%rbp), %rdi
movzbl (%rax), %eax
andl $0x3f, %eax
shll $0x2, %eax
movl %eax, -0x134(%rbp)
movq -0x78(%rbp), %rsi
incq %rsi
callq 0x3560
movq %rax, -0x130(%rbp)
jmp 0x13dba
movq -0x130(%rbp), %rax
movsbq (%rax), %rsi
leaq 0x9204(%rip), %rdi      # 0x1cfd0
callq 0x170b0
movq -0xa0(%rbp), %rdi
movq %rax, %rcx
movl -0x134(%rbp), %eax
movzbl (%rcx), %ecx
andl $0x30, %ecx
shrl $0x4, %ecx
orl %ecx, %eax
movb %al, -0x7c(%rbp)
leaq -0x7c(%rbp), %rsi
callq 0x171e0
jmp 0x13dfa
jmp 0x1414f
movq -0x90(%rbp), %rdi
movq -0x78(%rbp), %rsi
addq $0x3, %rsi
callq 0x3560
movq %rax, -0x140(%rbp)
jmp 0x13e1c
movq -0x140(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x3d, %eax
jne 0x13f6e
movq -0x90(%rbp), %rdi
movq -0x78(%rbp), %rsi
callq 0x3560
movq %rax, -0x148(%rbp)
jmp 0x13e48
movq -0x148(%rbp), %rax
movsbq (%rax), %rsi
leaq 0x9176(%rip), %rdi      # 0x1cfd0
callq 0x170b0
movq -0x90(%rbp), %rdi
movzbl (%rax), %eax
andl $0x3f, %eax
shll $0x2, %eax
movl %eax, -0x154(%rbp)
movq -0x78(%rbp), %rsi
incq %rsi
callq 0x3560
movq %rax, -0x150(%rbp)
jmp 0x13e8a
movq -0x150(%rbp), %rax
movsbq (%rax), %rsi
leaq 0x9134(%rip), %rdi      # 0x1cfd0
callq 0x170b0
movq -0xa0(%rbp), %rdi
movq %rax, %rcx
movl -0x154(%rbp), %eax
movzbl (%rcx), %ecx
andl $0x30, %ecx
shrl $0x4, %ecx
orl %ecx, %eax
movb %al, -0x7d(%rbp)
leaq -0x7d(%rbp), %rsi
callq 0x171e0
jmp 0x13eca
movq -0x90(%rbp), %rdi
movq -0x78(%rbp), %rsi
incq %rsi
callq 0x3560
movq %rax, -0x160(%rbp)
jmp 0x13ee6
movq -0x160(%rbp), %rax
movsbq (%rax), %rsi
leaq 0x90d8(%rip), %rdi      # 0x1cfd0
callq 0x170b0
movq -0x90(%rbp), %rdi
movzbl (%rax), %eax
andl $0xf, %eax
shll $0x4, %eax
movl %eax, -0x16c(%rbp)
movq -0x78(%rbp), %rsi
addq $0x2, %rsi
callq 0x3560
movq %rax, -0x168(%rbp)
jmp 0x13f29
movq -0x168(%rbp), %rax
movsbq (%rax), %rsi
leaq 0x9095(%rip), %rdi      # 0x1cfd0
callq 0x170b0
movq -0xa0(%rbp), %rdi
movq %rax, %rcx
movl -0x16c(%rbp), %eax
movzbl (%rcx), %ecx
andl $0x3c, %ecx
shrl $0x2, %ecx
orl %ecx, %eax
movb %al, -0x7e(%rbp)
leaq -0x7e(%rbp), %rsi
callq 0x171e0
jmp 0x13f69
jmp 0x1414d
movq -0x90(%rbp), %rdi
movq -0x78(%rbp), %rsi
callq 0x3560
movq %rax, -0x178(%rbp)
jmp 0x13f87
movq -0x178(%rbp), %rax
movsbq (%rax), %rsi
leaq 0x9037(%rip), %rdi      # 0x1cfd0
callq 0x170b0
movq -0x90(%rbp), %rdi
movzbl (%rax), %eax
andl $0x3f, %eax
shll $0x2, %eax
movl %eax, -0x184(%rbp)
movq -0x78(%rbp), %rsi
incq %rsi
callq 0x3560
movq %rax, -0x180(%rbp)
jmp 0x13fc9
movq -0x180(%rbp), %rax
movsbq (%rax), %rsi
leaq 0x8ff5(%rip), %rdi      # 0x1cfd0
callq 0x170b0
movq -0xa0(%rbp), %rdi
movq %rax, %rcx
movl -0x184(%rbp), %eax
movzbl (%rcx), %ecx
andl $0x30, %ecx
shrl $0x4, %ecx
orl %ecx, %eax
movb %al, -0x7f(%rbp)
leaq -0x7f(%rbp), %rsi
callq 0x171e0
jmp 0x14009
movq -0x90(%rbp), %rdi
movq -0x78(%rbp), %rsi
incq %rsi
callq 0x3560
movq %rax, -0x190(%rbp)
jmp 0x14025
movq -0x190(%rbp), %rax
movsbq (%rax), %rsi
leaq 0x8f99(%rip), %rdi      # 0x1cfd0
callq 0x170b0
movq -0x90(%rbp), %rdi
movzbl (%rax), %eax
andl $0xf, %eax
shll $0x4, %eax
movl %eax, -0x19c(%rbp)
movq -0x78(%rbp), %rsi
addq $0x2, %rsi
callq 0x3560
movq %rax, -0x198(%rbp)
jmp 0x14068
movq -0x198(%rbp), %rax
movsbq (%rax), %rsi
leaq 0x8f56(%rip), %rdi      # 0x1cfd0
callq 0x170b0
movq -0xa0(%rbp), %rdi
movq %rax, %rcx
movl -0x19c(%rbp), %eax
movzbl (%rcx), %ecx
andl $0x3c, %ecx
shrl $0x2, %ecx
orl %ecx, %eax
movb %al, -0x80(%rbp)
leaq -0x80(%rbp), %rsi
callq 0x171e0
jmp 0x140a8
movq -0x90(%rbp), %rdi
movq -0x78(%rbp), %rsi
addq $0x2, %rsi
callq 0x3560
movq %rax, -0x1a8(%rbp)
jmp 0x140c5
movq -0x1a8(%rbp), %rax
movsbq (%rax), %rsi
leaq 0x8ef9(%rip), %rdi      # 0x1cfd0
callq 0x170b0
movq -0x90(%rbp), %rdi
movzbl (%rax), %eax
andl $0x3, %eax
shll $0x6, %eax
movl %eax, -0x1b4(%rbp)
movq -0x78(%rbp), %rsi
addq $0x3, %rsi
callq 0x3560
movq %rax, -0x1b0(%rbp)
jmp 0x14108
movq -0x1b0(%rbp), %rax
movsbq (%rax), %rsi
leaq 0x8eb6(%rip), %rdi      # 0x1cfd0
callq 0x170b0
movq -0xa0(%rbp), %rdi
movq %rax, %rcx
movl -0x1b4(%rbp), %eax
movzbl (%rcx), %ecx
andl $0x3f, %ecx
orl %ecx, %eax
movb %al, -0x81(%rbp)
leaq -0x81(%rbp), %rsi
callq 0x171e0
jmp 0x1414b
jmp 0x1414d
jmp 0x1414f
movb $0x1, -0x69(%rbp)
testb $0x1, -0x69(%rbp)
jne 0x14165
movq -0xa0(%rbp), %rdi
callq 0x17210
movq -0x98(%rbp), %rax
addq $0x1c0, %rsp            # imm = 0x1C0
popq %rbp
retq
movq -0x58(%rbp), %rdi
callq 0x34f0
nop