// File: /workspace/github_cpp_makefile_star2_O3/FFY00[P]uicc/src/program_uicc.c
// Function: authenticate(char*, uicc_vals&)
void authenticate(char *port, struct uicc_vals &values) {
    string key;
    Assert(makeBin(values.key, key) == 16, "can't read a correct key: 16 hexa figures\n");
    string opc;
    Assert(makeBin(values.opc, opc) == 16, "can't read a correct opc: 16 hexa figures\n");
    USIM USIMcard;
    string ATR;
    Assert((ATR=USIMcard.open(port))!="", "Failed to open %s", port);
    //dump_hex("ATR", ATR);
    USIMcard.openUSIM();
    USIMcard.debug=false;
    // We don't make proper values for rand, sqn,
    // we perform first authentication only to get the AUTS from the USIM
    u8 amf[2]= {0};
    u8 sqn[6]= {0};
    u8 rand[16]= {0};
    u8 autn[16]= {0};
    u8 ik[16]= {0};
    u8 ck[16]= {0};
    u8 res[8]= {0};
    Assert(milenage_generate((const uint8_t *)opc.c_str(), amf,
                             (const uint8_t *)key.c_str(), sqn,
                             rand,
                             autn, ik, ck, res),
           "Milenage internal failure\n");
    string srand((char *)rand,sizeof(rand));
    string sautn((char *)autn,sizeof(autn));
    vector<string> returned=USIMcard.authenticate(srand, sautn);

    // We should have one LV value returned, the AUTS
    if (returned.size()!=1) {
        printf("The card didn't accept our challenge: OPc or Ki is wrong\n");
        return;
    }

    u8 SIMsqn[8]= {0};

    if ( ! milenage_auts((const uint8_t *)opc.c_str(),
                         (const uint8_t *)key.c_str(),
                         rand,
                         (const uint8_t *)returned[0].c_str(),
                         SIMsqn+2) ) {
        printf("Can't decode the AUTS returned by the card (wrong Ki or OPc)\n");
        return;
    }

    uint64_t intSqn=be64toh(*(uint64_t *)SIMsqn);
    intSqn+=32; // according to 3GPP TS 33.102 version 11, annex C. 3.2
    uint64_t newSqn=htobe64(intSqn);
    // To make better validation, let's generate a random value in milenage "rand"
    FILE *h=fopen("/dev/random","r");
    fread(rand,sizeof(rand),1,h);
    fclose(h);
    Assert( milenage_generate((const uint8_t *)opc.c_str(), amf,
                              (const uint8_t *)key.c_str(),
                              ((u8 *)&newSqn)+2,
                              rand,
                              autn, ik, ck, res),
            "Milenage internal failure\n");
    // Now, we can test a authentication that should be sucessful
    string new_autn((char *)autn,16);
    string new_rand((char *)rand,16);
    vector<string>  returned_newSQN=USIMcard.authenticate(new_rand, new_autn);

    if ( USIMcard.debug )
        for (size_t i=0; i< returned_newSQN.size(); i++)
            dump_hex("auth answer",returned_newSQN[i]);

    if (returned_newSQN.size() != 4)
        printf("We tried SQN %" PRId64 ", but the card refused!\n",intSqn);
    else {
        string s_ik((char *)ik,sizeof(ik));
        string s_ck((char *)ck,sizeof(ck));
        string s_res((char *)res,sizeof(res));

        if ( s_res != returned_newSQN[0] ||
                s_ck  != returned_newSQN[1] ||
                s_ik  != returned_newSQN[2] )
            printf("The card sent back vectors, but they are not our milenage computation\n");
        else {
            printf("Succeeded to authentify with SQN: %" PRId64 "\n", intSqn);
            printf("set HSS SQN value as: %" PRId64 "\n", intSqn+32 );
        }
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x338, %rsp            # imm = 0x338
movq %rsi, %r14
movq %rdi, %rbx
leaq -0xe0(%rbp), %rax
movq %rax, -0x10(%rax)
movq $0x0, -0x8(%rax)
movb $0x0, (%rax)
leaq -0x200(%rbp), %r12
movq %r12, -0x10(%r12)
movq 0xe8(%rsi), %rsi
movq 0xf0(%r14), %rdx
addq %rsi, %rdx
leaq -0x210(%rbp), %rdi
callq 0x1394e
leaq -0xf0(%rbp), %rdi
movq 0x8(%rdi), %rdx
leaq 0xeec9(%rip), %rcx      # 0x183b2
xorl %esi, %esi
xorl %r8d, %r8d
callq 0x23d0
movq -0x208(%rbp), %rax
testq %rax, %rax
sete %cl
orb %al, %cl
testb $0x1, %cl
je 0x9cea
xorl %r15d, %r15d
movq -0x210(%rbp), %rdi
cmpq %r12, %rdi
je 0x951f
callq 0x2220
testb %r15b, %r15b
je 0x9fde
leaq -0xc0(%rbp), %rax
movq %rax, -0x10(%rax)
movq $0x0, -0x8(%rax)
movb $0x0, (%rax)
leaq -0x1e0(%rbp), %r15
movq %r15, -0x10(%r15)
movq 0x68(%r14), %rsi
movq 0x70(%r14), %rdx
addq %rsi, %rdx
leaq -0x1f0(%rbp), %rdi
callq 0x1394e
leaq -0xd0(%rbp), %rdi
movq 0x8(%rdi), %rdx
leaq 0xee40(%rip), %rcx      # 0x183b2
xorl %esi, %esi
xorl %r8d, %r8d
callq 0x23d0
movq -0x1e8(%rbp), %rax
testq %rax, %rax
sete %cl
orb %al, %cl
testb $0x1, %cl
je 0x9da7
xorl %r14d, %r14d
movq -0x1f0(%rbp), %rdi
cmpq %r15, %rdi
je 0x95a8
callq 0x2220
testb %r14b, %r14b
je 0x9fe3
movb $0x0, -0x260(%rbp)
movl $0xffffffff, -0x25c(%rbp) # imm = 0xFFFFFFFF
leaq 0xee37(%rip), %rdi      # 0x18400
callq 0x2310
testq %rax, %rax
je 0x95e5
movzbl (%rax), %eax
orl $0x20, %eax
cmpl $0x79, %eax
jne 0x95e5
movb $0x1, -0x260(%rbp)
leaq -0x248(%rbp), %rcx
movq %rcx, -0x10(%rcx)
xorl %eax, %eax
movq %rax, -0x8(%rcx)
movb %al, (%rcx)
leaq -0x228(%rbp), %rcx
movq %rcx, -0x10(%rcx)
movq %rax, -0x8(%rcx)
movb %al, (%rcx)
leaq -0x160(%rbp), %rcx
movq %rcx, -0x10(%rcx)
movq %rax, -0x8(%rcx)
movb %al, (%rcx)
leaq -0x70(%rbp), %rdi
leaq -0x260(%rbp), %rsi
movq %rbx, %rdx
callq 0xaaf4
leaq -0x170(%rbp), %rdi
leaq -0x70(%rbp), %r15
movq %r15, %rsi
callq 0x2320
leaq 0xed6b(%rip), %rsi      # 0x183b2
movq %rax, %rdi
callq 0x20b0
movl %eax, %r14d
movq (%r15), %rdi
leaq -0x60(%rbp), %r15
cmpq %r15, %rdi
je 0x9663
callq 0x2220
testl %r14d, %r14d
je 0x9fe8
leaq -0x260(%rbp), %rdi
callq 0xbb04
movb $0x0, -0x260(%rbp)
xorl %eax, %eax
leaq -0x2a(%rbp), %rsi
movw %ax, (%rsi)
leaq -0x2a0(%rbp), %rcx
movw %ax, 0x4(%rcx)
movl $0x0, (%rcx)
xorps %xmm0, %xmm0
leaq -0x190(%rbp), %r8
movaps %xmm0, (%r8)
leaq -0x180(%rbp), %r9
movaps %xmm0, (%r9)
leaq -0x340(%rbp), %r12
movaps %xmm0, (%r12)
leaq -0x330(%rbp), %r13
movaps %xmm0, (%r13)
leaq -0x1b0(%rbp), %rbx
movq $0x0, (%rbx)
movq -0xd0(%rbp), %rdi
movq -0xf0(%rbp), %rdx
subq $0x8, %rsp
pushq %rbx
pushq %r13
pushq %r12
callq 0x454d
addq $0x20, %rsp
leaq -0x70(%rbp), %rdi
movq %r15, (%rdi)
leaq -0xb0(%rbp), %rsi
movq $0x10, (%rsi)
xorl %edx, %edx
callq 0x2420
movq %rax, -0x70(%rbp)
leaq -0xa0(%rbp), %rdx
movq -0x10(%rdx), %rcx
movq %rcx, -0x60(%rbp)
xorps %xmm0, %xmm0
movups %xmm0, (%rax)
movq %rcx, -0x68(%rbp)
movq -0x70(%rbp), %rax
movb $0x0, (%rax,%rcx)
movq %rdx, -0x10(%rdx)
leaq -0x50(%rbp), %rsi
movq $0x10, (%rsi)
leaq -0xb0(%rbp), %rdi
xorl %edx, %edx
callq 0x2420
movq %rax, -0xb0(%rbp)
movq -0x50(%rbp), %rcx
movq %rcx, -0xa0(%rbp)
movaps -0x180(%rbp), %xmm0
movups %xmm0, (%rax)
movq %rcx, -0xa8(%rbp)
movq -0xb0(%rbp), %rax
movb $0x0, (%rax,%rcx)
leaq -0x310(%rbp), %r14
movq %r14, -0x10(%r14)
movq -0x70(%rbp), %rsi
movq -0x68(%rbp), %rdx
addq %rsi, %rdx
leaq -0x320(%rbp), %rdi
callq 0x1394e
leaq -0x2f0(%rbp), %r15
movq %r15, -0x10(%r15)
movq -0xb0(%rbp), %rsi
movq -0xa8(%rbp), %rdx
addq %rsi, %rdx
leaq -0x300(%rbp), %rdi
callq 0x1394e
leaq -0x278(%rbp), %rdi
leaq -0x260(%rbp), %rsi
leaq -0x320(%rbp), %rdx
leaq -0x300(%rbp), %rcx
callq 0xd1a6
movq -0x300(%rbp), %rdi
cmpq %r15, %rdi
je 0x9800
callq 0x2220
movq -0x320(%rbp), %rdi
cmpq %r14, %rdi
je 0x9811
callq 0x2220
movq -0x278(%rbp), %rax
movq -0x270(%rbp), %rcx
subq %rax, %rcx
cmpq $0x20, %rcx
jne 0x9e64
leaq -0x1a6(%rbp), %r8
movq $0x0, -0x2(%r8)
movq -0xd0(%rbp), %rdi
movq -0xf0(%rbp), %rsi
movq (%rax), %rcx
leaq -0x190(%rbp), %rdx
callq 0x45f4
testb %al, %al
je 0x9e6d
movq -0x1a8(%rbp), %rax
bswapq %rax
movq %rax, -0x198(%rbp)
addq $0x20, %rax
movq %rax, -0xf8(%rbp)
bswapq %rax
leaq -0x19e(%rbp), %rcx
movq %rax, -0x2(%rcx)
leaq 0xe7a0(%rip), %rdi      # 0x18031
leaq 0xeaff(%rip), %rsi      # 0x18397
callq 0x22f0
movq %rax, %r14
leaq -0x190(%rbp), %r15
movl $0x10, %esi
movl $0x1, %edx
movq %r15, %rdi
movq %rax, %rcx
callq 0x23a0
movq %r14, %rdi
callq 0x2240
movq -0xd0(%rbp), %rdi
movq -0xf0(%rbp), %rdx
subq $0x8, %rsp
leaq -0x2a(%rbp), %rsi
leaq -0x180(%rbp), %r9
leaq -0x19e(%rbp), %rcx
movq %r15, %r8
pushq %rbx
pushq %r13
pushq %r12
callq 0x454d
addq $0x20, %rsp
leaq -0x40(%rbp), %rax
movq %rax, -0x10(%rax)
leaq -0x90(%rbp), %rsi
movq $0x10, (%rsi)
leaq -0x50(%rbp), %rdi
xorl %edx, %edx
callq 0x2420
movq %rax, -0x50(%rbp)
leaq -0x80(%rbp), %rdx
movq -0x10(%rdx), %rcx
movq %rcx, -0x40(%rbp)
movaps -0x180(%rbp), %xmm0
movups %xmm0, (%rax)
movq %rcx, -0x48(%rbp)
movq -0x50(%rbp), %rax
movb $0x0, (%rax,%rcx)
movq %rdx, -0x10(%rdx)
leaq -0x118(%rbp), %rsi
movq $0x10, (%rsi)
leaq -0x90(%rbp), %rdi
xorl %edx, %edx
callq 0x2420
movq %rax, -0x90(%rbp)
movq -0x118(%rbp), %rcx
movq %rcx, -0x80(%rbp)
movaps -0x190(%rbp), %xmm0
movups %xmm0, (%rax)
movq %rcx, -0x88(%rbp)
movq -0x90(%rbp), %rax
movb $0x0, (%rax,%rcx)
leaq -0x2d0(%rbp), %r14
movq %r14, -0x10(%r14)
movq -0x90(%rbp), %rsi
movq -0x88(%rbp), %rdx
addq %rsi, %rdx
leaq -0x2e0(%rbp), %rdi
callq 0x1394e
leaq -0x2b0(%rbp), %r15
movq %r15, -0x10(%r15)
movq -0x50(%rbp), %rsi
movq -0x48(%rbp), %rdx
addq %rsi, %rdx
leaq -0x2c0(%rbp), %rdi
callq 0x1394e
leaq -0x130(%rbp), %rdi
leaq -0x260(%rbp), %rsi
leaq -0x2e0(%rbp), %rdx
leaq -0x2c0(%rbp), %rcx
callq 0xd1a6
movq -0x2c0(%rbp), %rdi
cmpq %r15, %rdi
je 0x9a0a
callq 0x2220
movq -0x2e0(%rbp), %rdi
cmpq %r14, %rdi
je 0x9a1b
callq 0x2220
movq -0x130(%rbp), %rax
movq -0x128(%rbp), %rcx
cmpb $0x1, -0x260(%rbp)
jne 0x9b3a
cmpq %rax, %rcx
movq %rcx, %rax
je 0x9b3a
leaq -0x288(%rbp), %r12
leaq -0x1c0(%rbp), %r13
leaq 0xe523(%rip), %r15      # 0x17f7a
xorl %r14d, %r14d
movq %r12, -0x298(%rbp)
leaq -0x298(%rbp), %rdi
leaq 0xe5ce(%rip), %rsi      # 0x1803d
leaq 0xe5d2(%rip), %rdx      # 0x18048
callq 0x139ec
movq -0x130(%rbp), %rax
movq %r14, %rcx
shlq $0x5, %rcx
movq %r13, -0x1d0(%rbp)
movq (%rax,%rcx), %rsi
movq 0x8(%rax,%rcx), %rdx
addq %rsi, %rdx
leaq -0x1d0(%rbp), %rdi
callq 0x1394e
movq -0x298(%rbp), %rsi
leaq 0xf322(%rip), %rdi      # 0x18dd8
xorl %eax, %eax
callq 0x2060
cmpq $0x0, -0x1c8(%rbp)
je 0x9aea
xorl %ebx, %ebx
movq -0x1d0(%rbp), %rax
movsbl (%rax,%rbx), %esi
movq %r15, %rdi
xorl %eax, %eax
callq 0x2060
incq %rbx
cmpq -0x1c8(%rbp), %rbx
jb 0x9ac9
movl $0xa, %edi
callq 0x2340
movq -0x1d0(%rbp), %rdi
cmpq %r13, %rdi
je 0x9b05
callq 0x2220
movq -0x298(%rbp), %rdi
cmpq %r12, %rdi
je 0x9b16
callq 0x2220
incq %r14
movq -0x130(%rbp), %rax
movq -0x128(%rbp), %rcx
movq %rcx, %rdx
subq %rax, %rdx
sarq $0x5, %rdx
cmpq %rdx, %r14
jb 0x9a5a
subq %rax, %rcx
cmpq $0x80, %rcx
jne 0x9f45
leaq -0x108(%rbp), %r14
movq %r14, -0x10(%r14)
leaq -0x150(%rbp), %rsi
movq $0x10, (%rsi)
leaq -0x118(%rbp), %rdi
xorl %edx, %edx
leaq -0xc0(%rbp), %r13
callq 0x2420
movq %rax, -0x118(%rbp)
leaq -0x140(%rbp), %rbx
movq -0x10(%rbx), %rcx
movq %rcx, -0x108(%rbp)
movaps -0x340(%rbp), %xmm0
movups %xmm0, (%rax)
movq %rcx, -0x110(%rbp)
movq -0x118(%rbp), %rax
movb $0x0, (%rax,%rcx)
movq %rbx, -0x10(%rbx)
leaq -0x360(%rbp), %rsi
movq $0x10, (%rsi)
leaq -0x150(%rbp), %rdi
xorl %edx, %edx
callq 0x2420
movq %rax, -0x150(%rbp)
leaq -0x350(%rbp), %r15
movq -0x10(%r15), %rcx
movq %rcx, -0x140(%rbp)
movaps -0x330(%rbp), %xmm0
movups %xmm0, (%rax)
movq %rcx, -0x148(%rbp)
movq -0x150(%rbp), %rax
xorl %edx, %edx
movb %dl, (%rax,%rcx)
movq %r15, -0x10(%r15)
movq -0x1b0(%rbp), %rax
movq %rax, (%r15)
movq $0x8, -0x8(%r15)
movb %dl, 0x8(%r15)
movq -0x130(%rbp), %r12
cmpq $0x8, 0x8(%r12)
jne 0x9c94
movq (%r12), %rax
movq -0x350(%rbp), %rcx
cmpq (%rax), %rcx
jne 0x9c94
movq -0x148(%rbp), %rdx
cmpq 0x28(%r12), %rdx
jne 0x9c94
testq %rdx, %rdx
je 0x9c64
movq 0x20(%r12), %rsi
movq -0x150(%rbp), %rdi
callq 0x2260
testl %eax, %eax
jne 0x9c94
movq -0x110(%rbp), %rdx
cmpq 0x48(%r12), %rdx
jne 0x9c94
testq %rdx, %rdx
je 0x9fab
movq 0x40(%r12), %rsi
movq -0x118(%rbp), %rdi
callq 0x2260
testl %eax, %eax
je 0x9fab
leaq 0xf210(%rip), %rdi      # 0x18eab
callq 0x23c0
movq -0x360(%rbp), %rdi
cmpq %r15, %rdi
leaq -0xe0(%rbp), %r15
leaq -0x160(%rbp), %r12
je 0x9cbf
callq 0x2220
movq -0x150(%rbp), %rdi
cmpq %rbx, %rdi
je 0x9cd0
callq 0x2220
movq -0x118(%rbp), %rdi
cmpq %r14, %rdi
je 0x9f6f
callq 0x2220
jmp 0x9f6f
xorl %r13d, %r13d
leaq -0xf0(%rbp), %r15
movq -0x210(%rbp), %rdx
movb (%rdx,%r13), %al
cmpb $0x30, %al
jl 0x950b
movb $-0x30, %cl
cmpb $0x3a, %al
jb 0x9d2b
cmpb $0x61, %al
jb 0x9d1c
movb $-0x57, %cl
cmpb $0x67, %al
jb 0x9d2b
jmp 0x950b
leal -0x41(%rax), %esi
movb $-0x37, %cl
cmpb $0x5, %sil
ja 0x950b
movb 0x1(%rdx,%r13), %dl
cmpb $0x30, %dl
jl 0x950b
movb $-0x30, %sil
cmpb $0x3a, %dl
jb 0x9d63
cmpb $0x61, %dl
jb 0x9d53
movb $-0x57, %sil
cmpb $0x67, %dl
jb 0x9d63
jmp 0x950b
leal -0x41(%rdx), %edi
movb $-0x37, %sil
cmpb $0x5, %dil
ja 0x950b
addb %al, %cl
addb %dl, %sil
shlb $0x4, %cl
orb %sil, %cl
movsbl %cl, %esi
movq %r15, %rdi
callq 0x2200
addq $0x2, %r13
movq -0x208(%rbp), %rax
cmpq %rax, %r13
jb 0x9cf4
movabsq $0x1fffffffe, %rcx      # imm = 0x1FFFFFFFE
andq %rcx, %rax
cmpq $0x20, %rax
sete %r15b
jmp 0x950e
xorl %r12d, %r12d
leaq -0xd0(%rbp), %r14
movq -0x1f0(%rbp), %rdx
movb (%rdx,%r12), %al
cmpb $0x30, %al
jl 0x9594
movb $-0x30, %cl
cmpb $0x3a, %al
jb 0x9de8
cmpb $0x61, %al
jb 0x9dd9
movb $-0x57, %cl
cmpb $0x67, %al
jb 0x9de8
jmp 0x9594
leal -0x41(%rax), %esi
movb $-0x37, %cl
cmpb $0x5, %sil
ja 0x9594
movb 0x1(%rdx,%r12), %dl
cmpb $0x30, %dl
jl 0x9594
movb $-0x30, %sil
cmpb $0x3a, %dl
jb 0x9e20
cmpb $0x61, %dl
jb 0x9e10
movb $-0x57, %sil
cmpb $0x67, %dl
jb 0x9e20
jmp 0x9594
leal -0x41(%rdx), %edi
movb $-0x37, %sil
cmpb $0x5, %dil
ja 0x9594
addb %al, %cl
addb %dl, %sil
shlb $0x4, %cl
orb %sil, %cl
movsbl %cl, %esi
movq %r14, %rdi
callq 0x2200
addq $0x2, %r12
movq -0x1e8(%rbp), %rax
cmpq %rax, %r12
jb 0x9db1
movabsq $0x1fffffffe, %rcx      # imm = 0x1FFFFFFFE
andq %rcx, %rax
cmpq $0x20, %rax
sete %r14b
jmp 0x9597
leaq 0xf086(%rip), %rdi      # 0x18ef1
jmp 0x9e74
leaq 0xeffa(%rip), %rdi      # 0x18e6e
callq 0x23c0
leaq -0xe0(%rbp), %r15
leaq -0xc0(%rbp), %r13
leaq -0x160(%rbp), %r12
leaq -0x278(%rbp), %rdi
callq 0xb2cc
movq -0xb0(%rbp), %rdi
leaq -0xa0(%rbp), %rax
cmpq %rax, %rdi
je 0x9eb2
callq 0x2220
movq -0x70(%rbp), %rdi
leaq -0x60(%rbp), %rax
cmpq %rax, %rdi
je 0x9ec4
callq 0x2220
movq -0x170(%rbp), %rdi
cmpq %r12, %rdi
je 0x9ed5
callq 0x2220
movq -0x238(%rbp), %rdi
leaq -0x228(%rbp), %rax
cmpq %rax, %rdi
leaq -0x248(%rbp), %rbx
je 0x9ef4
callq 0x2220
movq -0x258(%rbp), %rdi
cmpq %rbx, %rdi
je 0x9f05
callq 0x2220
leaq -0x260(%rbp), %rdi
callq 0xb442
movq -0xd0(%rbp), %rdi
cmpq %r13, %rdi
je 0x9f22
callq 0x2220
movq -0xf0(%rbp), %rdi
cmpq %r15, %rdi
je 0x9f33
callq 0x2220
addq $0x338, %rsp            # imm = 0x338
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0xe0fd(%rip), %rdi      # 0x18049
movq -0xf8(%rbp), %rsi
xorl %eax, %eax
callq 0x2060
leaq -0xe0(%rbp), %r15
leaq -0xc0(%rbp), %r13
leaq -0x160(%rbp), %r12
leaq -0x130(%rbp), %rdi
callq 0xb2cc
movq -0x90(%rbp), %rdi
leaq -0x80(%rbp), %rax
cmpq %rax, %rdi
je 0x9f90
callq 0x2220
movq -0x50(%rbp), %rdi
leaq -0x40(%rbp), %rax
cmpq %rax, %rdi
je 0x9e8e
callq 0x2220
jmp 0x9e8e
leaq 0xe0c0(%rip), %rdi      # 0x18072
movq -0xf8(%rbp), %rsi
xorl %eax, %eax
callq 0x2060
movq -0x198(%rbp), %rsi
addq $0x40, %rsi
leaq 0xe0c7(%rip), %rdi      # 0x18099
xorl %eax, %eax
callq 0x2060
jmp 0x9ca0
callq 0x3916
callq 0x397a
movq %rbx, %rdi
callq 0x39de
movq %rax, %rbx
movq -0x118(%rbp), %rdi
cmpq %r14, %rdi
je 0xa0da
jmp 0xa0d5
jmp 0xa0c1
movq %rax, %rbx
movq -0x2c0(%rbp), %rdi
cmpq %r15, %rdi
je 0xa026
callq 0x2220
jmp 0xa026
movq %rax, %rbx
movq -0x2e0(%rbp), %rdi
cmpq %r14, %rdi
je 0xa0e6
callq 0x2220
jmp 0xa0e6
movq %rax, %rbx
jmp 0xa0e6
movq %rax, %rbx
jmp 0xa0fb
movq %rax, %rbx
jmp 0xa10d
movq %rax, %rbx
movq -0x300(%rbp), %rdi
cmpq %r15, %rdi
je 0xa071
callq 0x2220
jmp 0xa071
movq %rax, %rbx
movq -0x320(%rbp), %rdi
cmpq %r14, %rdi
je 0xa119
callq 0x2220
jmp 0xa119
movq %rax, %rbx
jmp 0xa119
movq %rax, %rbx
jmp 0xa131
jmp 0xa09f
jmp 0xa09f
movq %rax, %rbx
jmp 0xa143
jmp 0xa19f
movq %rax, %rbx
jmp 0xa167
jmp 0xa1b5
movq %rax, %rbx
jmp 0xa17f
movq %rax, %rbx
jmp 0xa0da
movq %rax, %rbx
movq -0x298(%rbp), %rdi
cmpq %r12, %rdi
je 0xa0da
callq 0x2220
leaq -0x130(%rbp), %rdi
callq 0xb2cc
movq -0x90(%rbp), %rdi
leaq -0x80(%rbp), %rax
cmpq %rax, %rdi
je 0xa0fb
callq 0x2220
movq -0x50(%rbp), %rdi
leaq -0x40(%rbp), %rax
cmpq %rax, %rdi
je 0xa10d
callq 0x2220
leaq -0x278(%rbp), %rdi
callq 0xb2cc
movq -0xb0(%rbp), %rdi
leaq -0xa0(%rbp), %rax
cmpq %rax, %rdi
je 0xa131
callq 0x2220
movq -0x70(%rbp), %rdi
leaq -0x60(%rbp), %rax
cmpq %rax, %rdi
je 0xa143
callq 0x2220
movq -0x170(%rbp), %rdi
leaq -0x160(%rbp), %rax
cmpq %rax, %rdi
je 0xa15b
callq 0x2220
leaq -0x260(%rbp), %rdi
callq 0xbefc
movq -0xd0(%rbp), %rdi
leaq -0xc0(%rbp), %rax
cmpq %rax, %rdi
je 0xa17f
callq 0x2220
movq -0xf0(%rbp), %rdi
leaq -0xe0(%rbp), %rax
cmpq %rax, %rdi
je 0xa197
callq 0x2220
movq %rbx, %rdi
callq 0x2400
movq %rax, %rbx
movq -0x1f0(%rbp), %rdi
cmpq %r15, %rdi
je 0xa167
callq 0x2220
jmp 0xa167
movq %rax, %rbx
movq -0x210(%rbp), %rdi
cmpq %r12, %rdi
je 0xa17f
jmp 0xa17a