// File: sharmaeklavya2[P]ctmeans/src/main.cpp
// Function: get_json_dict_template[abi:cxx11](char const*, char const*)
string get_json_dict_template(const char* keys, const char* val_fmts) {
    string s = "{\n";
    /*
    int n=1;
    for(int i=0; keys[i] != '\0'; ++i) {
        if(keys[i] == ',') {n++;}
    }
    s.reserve(strlen(keys) + strlen(fmts) + 8*n + 4);
    */

    if(keys[0] == '\0' || val_fmts[0] == '\0') {
        return "{}\n";
    }

    char key[50], val_fmt[10];
    int j1beg=0, j2beg=0;
    for(int i=0; true; ++i) {
        char ch1='\0', ch2='\0';
        while(keys[j1beg] == ' ') {
            j1beg++;
        }
        while(val_fmts[j2beg] == ' ') {
            j2beg++;
        }
        for(int j1off=0; true; ++j1off) {
            ch1 = keys[j1beg + j1off];
            if(ch1 == ' ') {
                continue;
            }
            if(ch1 == ',' || ch1 == '\0') {
                key[j1off] = '\0';
                j1beg += j1off + 1;
                break;
            }
            else {
                key[j1off] = ch1;
            }
        }
        for(int j2off=0; true; ++j2off) {
            ch2 = val_fmts[j2beg + j2off];
            if(ch2 == ',' || ch2 == '\0') {
                val_fmt[j2off] = '\0';
                j2beg += j2off + 1;
                break;
            }
            else {
                val_fmt[j2off] = ch2;
            }
        }
        s.append("  \"").append(key).append("\": ").append(val_fmt).append(",\n");
        if(ch1 == '\0' || ch2 == '\0') {
            break;
        }
    }
    s.pop_back(); s.pop_back();
    s.append("\n}\n");
    return s;
}

// Assembly:
subq $0xf8, %rsp
movq %rdi, 0x30(%rsp)
movq %rdi, %rax
movq %rax, 0x38(%rsp)
movq %rdi, 0xf0(%rsp)
movq %rsi, 0xe8(%rsp)
movq %rdx, 0xe0(%rsp)
leaq 0xbf(%rsp), %rdi
movq %rdi, 0x40(%rsp)
callq 0x22b0
movq 0x40(%rsp), %rdx
leaq 0x222f(%rip), %rsi      # 0x14239
leaq 0xc0(%rsp), %rdi
callq 0x2200
jmp 0x12019
leaq 0xbf(%rsp), %rdi
callq 0x2190
movq 0xe8(%rsp), %rax
movsbl (%rax), %eax
cmpl $0x0, %eax
je 0x1204a
movq 0xe0(%rsp), %rax
movsbl (%rax), %eax
cmpl $0x0, %eax
jne 0x120dd
leaq 0xab(%rsp), %rdi
movq %rdi, 0x28(%rsp)
callq 0x22b0
movq 0x30(%rsp), %rdi
movq 0x28(%rsp), %rdx
leaq 0x21cf(%rip), %rsi      # 0x1423c
callq 0x2200
jmp 0x12074
leaq 0xab(%rsp), %rdi
callq 0x2190
movl $0x1, 0xa4(%rsp)
jmp 0x12341
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xb0(%rsp)
movl %eax, 0xac(%rsp)
leaq 0xbf(%rsp), %rdi
callq 0x2190
jmp 0x12368
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xb0(%rsp)
movl %eax, 0xac(%rsp)
leaq 0xab(%rsp), %rdi
callq 0x2190
jmp 0x1235b
movl $0x0, 0x60(%rsp)
movl $0x0, 0x5c(%rsp)
movl $0x0, 0x58(%rsp)
movb $0x1, %al
testb $0x1, %al
jne 0x12100
jmp 0x122f8
movb $0x0, 0x57(%rsp)
movb $0x0, 0x56(%rsp)
movq 0xe8(%rsp), %rax
movslq 0x60(%rsp), %rcx
movsbl (%rax,%rcx), %eax
cmpl $0x20, %eax
jne 0x1212d
movl 0x60(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x60(%rsp)
jmp 0x1210a
jmp 0x1212f
movq 0xe0(%rsp), %rax
movslq 0x5c(%rsp), %rcx
movsbl (%rax,%rcx), %eax
cmpl $0x20, %eax
jne 0x12152
movl 0x5c(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x5c(%rsp)
jmp 0x1212f
movl $0x0, 0x50(%rsp)
movb $0x1, %al
testb $0x1, %al
jne 0x12162
jmp 0x121d3
movq 0xe8(%rsp), %rax
movl 0x60(%rsp), %ecx
addl 0x50(%rsp), %ecx
movslq %ecx, %rcx
movb (%rax,%rcx), %al
movb %al, 0x57(%rsp)
movsbl 0x57(%rsp), %eax
cmpl $0x20, %eax
jne 0x12188
jmp 0x121c6
movsbl 0x57(%rsp), %eax
cmpl $0x2c, %eax
je 0x1219c
movsbl 0x57(%rsp), %eax
cmpl $0x0, %eax
jne 0x121b7
movslq 0x50(%rsp), %rax
movb $0x0, 0x70(%rsp,%rax)
movl 0x50(%rsp), %eax
addl $0x1, %eax
addl 0x60(%rsp), %eax
movl %eax, 0x60(%rsp)
jmp 0x121d3
movb 0x57(%rsp), %cl
movslq 0x50(%rsp), %rax
movb %cl, 0x70(%rsp,%rax)
jmp 0x121c6
movl 0x50(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x50(%rsp)
jmp 0x1215a
movl $0x0, 0x4c(%rsp)
movb $0x1, %al
testb $0x1, %al
jne 0x121e3
jmp 0x12248
movq 0xe0(%rsp), %rax
movl 0x5c(%rsp), %ecx
addl 0x4c(%rsp), %ecx
movslq %ecx, %rcx
movb (%rax,%rcx), %al
movb %al, 0x56(%rsp)
movsbl 0x56(%rsp), %eax
cmpl $0x2c, %eax
je 0x12211
movsbl 0x56(%rsp), %eax
cmpl $0x0, %eax
jne 0x1222c
movslq 0x4c(%rsp), %rax
movb $0x0, 0x66(%rsp,%rax)
movl 0x4c(%rsp), %eax
addl $0x1, %eax
addl 0x5c(%rsp), %eax
movl %eax, 0x5c(%rsp)
jmp 0x12248
movb 0x56(%rsp), %cl
movslq 0x4c(%rsp), %rax
movb %cl, 0x66(%rsp,%rax)
jmp 0x1223b
movl 0x4c(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x4c(%rsp)
jmp 0x121db
leaq 0x1ff1(%rip), %rsi      # 0x14240
leaq 0xc0(%rsp), %rdi
callq 0x22e0
movq %rax, 0x20(%rsp)
jmp 0x12263
movq 0x20(%rsp), %rdi
leaq 0x70(%rsp), %rsi
callq 0x22e0
movq %rax, 0x18(%rsp)
jmp 0x12279
movq 0x18(%rsp), %rdi
leaq 0x1fbf(%rip), %rsi      # 0x14244
callq 0x22e0
movq %rax, 0x10(%rsp)
jmp 0x12291
movq 0x10(%rsp), %rdi
leaq 0x66(%rsp), %rsi
callq 0x22e0
movq %rax, 0x8(%rsp)
jmp 0x122a7
movq 0x8(%rsp), %rdi
leaq 0x1f95(%rip), %rsi      # 0x14248
callq 0x22e0
jmp 0x122ba
movsbl 0x57(%rsp), %eax
cmpl $0x0, %eax
je 0x122ce
movsbl 0x56(%rsp), %eax
cmpl $0x0, %eax
jne 0x122e6
jmp 0x122f8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xb0(%rsp)
movl %eax, 0xac(%rsp)
jmp 0x1235b
jmp 0x122e8
movl 0x58(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x58(%rsp)
jmp 0x120f5
leaq 0xc0(%rsp), %rdi
movq %rdi, (%rsp)
callq 0x21d0
movq (%rsp), %rdi
callq 0x21d0
movq (%rsp), %rdi
leaq 0x1f2e(%rip), %rsi      # 0x1424b
callq 0x22e0
jmp 0x12324
movq 0x30(%rsp), %rdi
leaq 0xc0(%rsp), %rsi
callq 0x20b0
movl $0x1, 0xa4(%rsp)
leaq 0xc0(%rsp), %rdi
callq 0x20c0
movq 0x38(%rsp), %rax
addq $0xf8, %rsp
retq
leaq 0xc0(%rsp), %rdi
callq 0x20c0
movq 0xb0(%rsp), %rdi
callq 0x22a0
nopw %cs:(%rax,%rax)