// File: kazel1990[P]Inception-v4/generator.cpp
// Function: reductionA(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>)
std::string reductionA(std::string prv)
{
    std::string header = "reduction_a_";
    std::string cur1, cur2, cur3, prv3;

    cur1 = header + "pool";
    pool(cur1, prv, cur1, "MAX", 3, 2);

    cur2 = header + "conv2_1_3x3";
    convolution(cur2, prv, cur2, 384, 0, 3, 2);
    norm(cur2);

    cur3 = header + "conv3_1_1x1";
    convolution(cur3, prv, cur3, 192, 0, 1, 1);
    norm(cur3);
    
    prv3 = cur3;
    cur3 = header + "conv3_2_3x3";
    convolution(cur3, prv3, cur3, 224, 1, 3, 1);
    norm(cur3);

    prv3 = cur3;
    cur3 = header + "conv3_3_3x3";
    convolution(cur3, prv3, cur3, 256, 0, 3, 2);
    norm(cur3);

    std::string cur = header + "concat";
    concat(cur, {cur1, cur2, cur3}, cur);
    return cur;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x5a0, %rsp            # imm = 0x5A0
movq %rsi, -0x4f0(%rbp)
movq %rdi, -0x4e8(%rbp)
movq %rdi, %rax
movq %rax, -0x4e0(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
leaq -0x31(%rbp), %rdi
movq %rdi, -0x4d8(%rbp)
callq 0x2230
movq -0x4d8(%rbp), %rdx
leaq 0x77ea(%rip), %rsi      # 0xd4c3
leaq -0x30(%rbp), %rdi
callq 0xb7e0
jmp 0x5ce4
leaq -0x31(%rbp), %rdi
callq 0x2180
leaq -0x68(%rbp), %rdi
callq 0x21e0
leaq -0x88(%rbp), %rdi
callq 0x21e0
leaq -0xa8(%rbp), %rdi
callq 0x21e0
leaq -0xc8(%rbp), %rdi
callq 0x21e0
leaq 0x7616(%rip), %rdx      # 0xd337
leaq -0xe8(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0xb950
jmp 0x5d33
leaq -0x68(%rbp), %rdi
movq %rdi, -0x4f8(%rbp)
leaq -0xe8(%rbp), %rsi
movq %rsi, -0x500(%rbp)
callq 0x21b0
movq -0x500(%rbp), %rdi
callq 0x20e0
movq -0x4f8(%rbp), %rsi
leaq -0x108(%rbp), %rdi
callq 0x20b0
jmp 0x5d72
movq -0x4f0(%rbp), %rsi
leaq -0x128(%rbp), %rdi
callq 0x20b0
jmp 0x5d87
leaq -0x148(%rbp), %rdi
leaq -0x68(%rbp), %rsi
callq 0x20b0
jmp 0x5d99
leaq -0x169(%rbp), %rdi
movq %rdi, -0x508(%rbp)
callq 0x2230
movq -0x508(%rbp), %rdx
leaq 0x7582(%rip), %rsi      # 0xd33c
leaq -0x168(%rbp), %rdi
callq 0xb7e0
jmp 0x5dc8
movq %rsp, %rax
movl $0x0, (%rax)
leaq -0x108(%rbp), %rdi
leaq -0x128(%rbp), %rsi
leaq -0x148(%rbp), %rdx
leaq -0x168(%rbp), %rcx
movl $0x3, %r8d
movl $0x2, %r9d
callq 0x2ca0
jmp 0x5e00
leaq -0x168(%rbp), %rdi
callq 0x20e0
leaq -0x169(%rbp), %rdi
callq 0x2180
leaq -0x148(%rbp), %rdi
callq 0x20e0
leaq -0x128(%rbp), %rdi
callq 0x20e0
leaq -0x108(%rbp), %rdi
callq 0x20e0
leaq 0x768d(%rip), %rdx      # 0xd4d0
leaq -0x190(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0xb950
jmp 0x5e55
leaq -0x88(%rbp), %rdi
movq %rdi, -0x510(%rbp)
leaq -0x190(%rbp), %rsi
movq %rsi, -0x518(%rbp)
callq 0x21b0
movq -0x518(%rbp), %rdi
callq 0x20e0
movq -0x510(%rbp), %rsi
leaq -0x1b0(%rbp), %rdi
callq 0x20b0
jmp 0x5e97
movq -0x4f0(%rbp), %rsi
leaq -0x1d0(%rbp), %rdi
callq 0x20b0
jmp 0x5eac
leaq -0x1f0(%rbp), %rdi
leaq -0x88(%rbp), %rsi
callq 0x20b0
jmp 0x5ec1
movq %rsp, %rax
movl $0x2, (%rax)
leaq -0x1b0(%rbp), %rdi
leaq -0x1d0(%rbp), %rsi
leaq -0x1f0(%rbp), %rdx
movl $0x180, %ecx            # imm = 0x180
xorl %r8d, %r8d
movl $0x3, %r9d
callq 0x28b0
jmp 0x5ef4
leaq -0x1f0(%rbp), %rdi
callq 0x20e0
leaq -0x1d0(%rbp), %rdi
callq 0x20e0
leaq -0x1b0(%rbp), %rdi
callq 0x20e0
leaq -0x210(%rbp), %rdi
leaq -0x88(%rbp), %rsi
callq 0x20b0
jmp 0x5f2d
leaq -0x210(%rbp), %rdi
callq 0x2f70
jmp 0x5f3b
leaq -0x210(%rbp), %rdi
callq 0x20e0
leaq 0x7535(%rip), %rdx      # 0xd483
leaq -0x230(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0xb950
jmp 0x5f60
leaq -0xa8(%rbp), %rdi
movq %rdi, -0x520(%rbp)
leaq -0x230(%rbp), %rsi
movq %rsi, -0x528(%rbp)
callq 0x21b0
movq -0x528(%rbp), %rdi
callq 0x20e0
movq -0x520(%rbp), %rsi
leaq -0x250(%rbp), %rdi
callq 0x20b0
jmp 0x5fa2
movq -0x4f0(%rbp), %rsi
leaq -0x270(%rbp), %rdi
callq 0x20b0
jmp 0x5fb7
leaq -0x290(%rbp), %rdi
leaq -0xa8(%rbp), %rsi
callq 0x20b0
jmp 0x5fcc
movq %rsp, %rax
movl $0x1, (%rax)
leaq -0x250(%rbp), %rdi
leaq -0x270(%rbp), %rsi
leaq -0x290(%rbp), %rdx
movl $0xc0, %ecx
xorl %r8d, %r8d
movl $0x1, %r9d
callq 0x28b0
jmp 0x5fff
leaq -0x290(%rbp), %rdi
callq 0x20e0
leaq -0x270(%rbp), %rdi
callq 0x20e0
leaq -0x250(%rbp), %rdi
callq 0x20e0
leaq -0x2b0(%rbp), %rdi
leaq -0xa8(%rbp), %rsi
callq 0x20b0
jmp 0x6038
leaq -0x2b0(%rbp), %rdi
callq 0x2f70
jmp 0x6046
leaq -0x2b0(%rbp), %rdi
callq 0x20e0
leaq -0xc8(%rbp), %rdi
leaq -0xa8(%rbp), %rsi
callq 0x2030
jmp 0x6067
leaq 0x7422(%rip), %rdx      # 0xd490
leaq -0x2d0(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0xb950
jmp 0x6080
leaq -0xa8(%rbp), %rdi
movq %rdi, -0x530(%rbp)
leaq -0x2d0(%rbp), %rsi
movq %rsi, -0x538(%rbp)
callq 0x21b0
movq -0x538(%rbp), %rdi
callq 0x20e0
movq -0x530(%rbp), %rsi
leaq -0x2f0(%rbp), %rdi
callq 0x20b0
jmp 0x60c2
leaq -0x310(%rbp), %rdi
leaq -0xc8(%rbp), %rsi
callq 0x20b0
jmp 0x60d7
leaq -0x330(%rbp), %rdi
leaq -0xa8(%rbp), %rsi
callq 0x20b0
jmp 0x60ec
movq %rsp, %rax
movl $0x1, (%rax)
leaq -0x2f0(%rbp), %rdi
leaq -0x310(%rbp), %rsi
leaq -0x330(%rbp), %rdx
movl $0xe0, %ecx
movl $0x1, %r8d
movl $0x3, %r9d
callq 0x28b0
jmp 0x6122
leaq -0x330(%rbp), %rdi
callq 0x20e0
leaq -0x310(%rbp), %rdi
callq 0x20e0
leaq -0x2f0(%rbp), %rdi
callq 0x20e0
leaq -0x350(%rbp), %rdi
leaq -0xa8(%rbp), %rsi
callq 0x20b0
jmp 0x615b
leaq -0x350(%rbp), %rdi
callq 0x2f70
jmp 0x6169
leaq -0x350(%rbp), %rdi
callq 0x20e0
leaq -0xc8(%rbp), %rdi
leaq -0xa8(%rbp), %rsi
callq 0x2030
jmp 0x618a
leaq 0x734b(%rip), %rdx      # 0xd4dc
leaq -0x370(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0xb950
jmp 0x61a3
leaq -0xa8(%rbp), %rdi
movq %rdi, -0x540(%rbp)
leaq -0x370(%rbp), %rsi
movq %rsi, -0x548(%rbp)
callq 0x21b0
movq -0x548(%rbp), %rdi
callq 0x20e0
movq -0x540(%rbp), %rsi
leaq -0x390(%rbp), %rdi
callq 0x20b0
jmp 0x61e5
leaq -0x3b0(%rbp), %rdi
leaq -0xc8(%rbp), %rsi
callq 0x20b0
jmp 0x61fa
leaq -0x3d0(%rbp), %rdi
leaq -0xa8(%rbp), %rsi
callq 0x20b0
jmp 0x620f
movq %rsp, %rax
movl $0x2, (%rax)
leaq -0x390(%rbp), %rdi
leaq -0x3b0(%rbp), %rsi
leaq -0x3d0(%rbp), %rdx
movl $0x100, %ecx            # imm = 0x100
xorl %r8d, %r8d
movl $0x3, %r9d
callq 0x28b0
jmp 0x6242
leaq -0x3d0(%rbp), %rdi
callq 0x20e0
leaq -0x3b0(%rbp), %rdi
callq 0x20e0
leaq -0x390(%rbp), %rdi
callq 0x20e0
leaq -0x3f0(%rbp), %rdi
leaq -0xa8(%rbp), %rsi
callq 0x20b0
jmp 0x627b
leaq -0x3f0(%rbp), %rdi
callq 0x2f70
jmp 0x6289
leaq -0x3f0(%rbp), %rdi
callq 0x20e0
movq -0x4e8(%rbp), %rdi
movb $0x0, -0x3f1(%rbp)
leaq 0x70bf(%rip), %rdx      # 0xd369
leaq -0x30(%rbp), %rsi
callq 0xb950
jmp 0x62b5
movq -0x4e8(%rbp), %rsi
leaq -0x418(%rbp), %rdi
callq 0x20b0
jmp 0x62ca
leaq -0x4a0(%rbp), %rdi
movq %rdi, -0x4a8(%rbp)
leaq -0x68(%rbp), %rsi
callq 0x20b0
jmp 0x62e3
leaq -0x480(%rbp), %rdi
movq %rdi, -0x4a8(%rbp)
leaq -0x88(%rbp), %rsi
callq 0x20b0
jmp 0x62ff
leaq -0x460(%rbp), %rdi
movq %rdi, -0x4a8(%rbp)
leaq -0xa8(%rbp), %rsi
callq 0x20b0
jmp 0x631b
leaq -0x4a0(%rbp), %rax
movq %rax, -0x440(%rbp)
movq $0x3, -0x438(%rbp)
leaq -0x4a9(%rbp), %rdi
movq %rdi, -0x550(%rbp)
callq 0xb890
movq -0x550(%rbp), %rcx
movq -0x440(%rbp), %rsi
movq -0x438(%rbp), %rdx
leaq -0x430(%rbp), %rdi
callq 0xb8b0
jmp 0x636a
movq -0x4e8(%rbp), %rsi
leaq -0x4d0(%rbp), %rdi
callq 0x20b0
jmp 0x637f
leaq -0x418(%rbp), %rdi
leaq -0x430(%rbp), %rsi
leaq -0x4d0(%rbp), %rdx
callq 0x2e80
jmp 0x639b
leaq -0x4d0(%rbp), %rdi
callq 0x20e0
leaq -0x430(%rbp), %rdi
callq 0xb780
leaq -0x4a9(%rbp), %rdi
callq 0xb930
leaq -0x4a0(%rbp), %rax
movq %rax, -0x560(%rbp)
addq $0x60, %rax
movq %rax, -0x558(%rbp)
movq -0x558(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x568(%rbp)
callq 0x20e0
movq -0x560(%rbp), %rcx
movq -0x568(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x558(%rbp)
jne 0x63d8
leaq -0x418(%rbp), %rdi
callq 0x20e0
movb $0x1, -0x3f1(%rbp)
testb $0x1, -0x3f1(%rbp)
jne 0x67a7
jmp 0x679b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x31(%rbp), %rdi
callq 0x2180
jmp 0x682f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x67f9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x64bf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x64b3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x649b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x168(%rbp), %rdi
callq 0x20e0
leaq -0x169(%rbp), %rdi
callq 0x2180
leaq -0x148(%rbp), %rdi
callq 0x20e0
leaq -0x128(%rbp), %rdi
callq 0x20e0
leaq -0x108(%rbp), %rdi
callq 0x20e0
jmp 0x67f9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x6510
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x6504
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x1f0(%rbp), %rdi
callq 0x20e0
leaq -0x1d0(%rbp), %rdi
callq 0x20e0
leaq -0x1b0(%rbp), %rdi
callq 0x20e0
jmp 0x67f9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x210(%rbp), %rdi
callq 0x20e0
jmp 0x67f9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x657e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x6572
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x290(%rbp), %rdi
callq 0x20e0
leaq -0x270(%rbp), %rdi
callq 0x20e0
leaq -0x250(%rbp), %rdi
callq 0x20e0
jmp 0x67f9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x2b0(%rbp), %rdi
callq 0x20e0
jmp 0x67f9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x65ec
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x65e0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x330(%rbp), %rdi
callq 0x20e0
leaq -0x310(%rbp), %rdi
callq 0x20e0
leaq -0x2f0(%rbp), %rdi
callq 0x20e0
jmp 0x67f9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x350(%rbp), %rdi
callq 0x20e0
jmp 0x67f9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x665a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x664e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x3d0(%rbp), %rdi
callq 0x20e0
leaq -0x3b0(%rbp), %rdi
callq 0x20e0
leaq -0x390(%rbp), %rdi
callq 0x20e0
jmp 0x67f9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x3f0(%rbp), %rdi
callq 0x20e0
jmp 0x67f9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x67ed
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
movq -0x4a8(%rbp), %rax
leaq -0x4a0(%rbp), %rcx
cmpq %rax, %rcx
movq %rax, -0x570(%rbp)
je 0x66f0
movq -0x570(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x578(%rbp)
callq 0x20e0
movq -0x578(%rbp), %rax
leaq -0x4a0(%rbp), %rcx
cmpq %rcx, %rax
movq %rax, -0x570(%rbp)
jne 0x66bf
jmp 0x678d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x6735
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x6729
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x4d0(%rbp), %rdi
callq 0x20e0
leaq -0x430(%rbp), %rdi
callq 0xb780
leaq -0x4a9(%rbp), %rdi
callq 0xb930
leaq -0x4a0(%rbp), %rax
movq %rax, -0x588(%rbp)
addq $0x60, %rax
movq %rax, -0x580(%rbp)
movq -0x580(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x590(%rbp)
callq 0x20e0
movq -0x588(%rbp), %rcx
movq -0x590(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x580(%rbp)
jne 0x675a
jmp 0x678d
leaq -0x418(%rbp), %rdi
callq 0x20e0
jmp 0x67ed
movq -0x4e8(%rbp), %rdi
callq 0x20e0
leaq -0xc8(%rbp), %rdi
callq 0x20e0
leaq -0xa8(%rbp), %rdi
callq 0x20e0
leaq -0x88(%rbp), %rdi
callq 0x20e0
leaq -0x68(%rbp), %rdi
callq 0x20e0
leaq -0x30(%rbp), %rdi
callq 0x20e0
movq -0x4e0(%rbp), %rax
addq $0x5a0, %rsp            # imm = 0x5A0
popq %rbp
retq
movq -0x4e8(%rbp), %rdi
callq 0x20e0
leaq -0xc8(%rbp), %rdi
callq 0x20e0
leaq -0xa8(%rbp), %rdi
callq 0x20e0
leaq -0x88(%rbp), %rdi
callq 0x20e0
leaq -0x68(%rbp), %rdi
callq 0x20e0
leaq -0x30(%rbp), %rdi
callq 0x20e0
movq -0x40(%rbp), %rdi
callq 0x2220
nopl (%rax,%rax)