// File: SneachChea[P]Wolf-Monte-Carlo-Cpp/main.cpp
// Function: main
int main(int argc, const char * argv[]) {
    const parameters params = get_params();
    model mod(params.L, params.Ntrials);
    std::random_device rd;
    std::mt19937 gen(rd());
    std::uniform_int_distribution<> dis(0, mod.get_N()-1);
    std::uniform_real_distribution<> dis_real(0, 1);

    d_vector magnetization(mod.get_Ntrials());
    d_vector tNum = linspace(params.Tmin, params.Tmax, params.nT, true);
    d_vector meanMag(tNum.size());
    i_vector pocket, cluster;
    i_vector S(mod.get_N());
    double beta;
    double p;
    int k, s;
    std::ofstream txt;
    txt.open("magnetization_L"+std::to_string(mod.get_L())+"_Ntrials"+std::to_string(mod.get_Ntrials())+".dat");

    for(size_t i = 0; i<tNum.size();i++)
    {
        std::cout<<"Temperature ="<<tNum[i]<<std::endl;
        beta = 1./tNum[i];
        p = 1.- std::exp(-2*beta);
        initLattice(S);
        for(size_t j = 0; j<mod.get_Ntrials();j++)
        {
            k = dis(gen);
            pocket.push_back(k);
            cluster.push_back(k);
            while(pocket.size()!=0)
            {
                s = randomChoice(pocket);
                for(int k =0; k<4;k++)
                {
                    if(S[mod.get_nbr(s, k)]==S[s])
                    {
                        if(!isInVector(cluster,mod.get_nbr(s, k)))
                        {
                            if(dis_real(gen)<p)
                            {
                                pocket.push_back(mod.get_nbr(s, k));
                                cluster.push_back(mod.get_nbr(s, k));
                            }
                        }
                    }
                }
                pocket.erase(std::remove(pocket.begin(), pocket.end(), s), pocket.end());
            }
            for(size_t l=0; l<cluster.size();l++)
            {
                S[cluster[l]] = -S[cluster[l]];
            }
            cluster.resize(0);
            magnetization[j] = std::abs(std::accumulate(S.begin(), S.end(), 0.0));
        } 
        meanMag[i] = std::accumulate(magnetization.begin(), magnetization.end(), 0)/(1.*mod.get_Ntrials()*mod.get_N());
    }
     // */
    for(size_t i =0; i<tNum.size();i++)
    {
        txt<<tNum[i]<<"\t"<<meanMag[i]<<std::endl;
    }
    txt.close();
    std::cout<<"Done !"<<std::endl;

    return 0;
}

// Assembly:
subq $0x2d68, %rsp           # imm = 0x2D68
movl $0x0, 0x2d64(%rsp)
movl %edi, 0x2d60(%rsp)
movq %rsi, 0x2d58(%rsp)
leaq 0x2d38(%rsp), %rdi
callq 0xbdd0
movl 0x2d38(%rsp), %esi
movl 0x2d3c(%rsp), %edx
leaq 0x2cc8(%rsp), %rdi
callq 0x34f0
leaq 0x1940(%rsp), %rdi
callq 0x35d0
jmp 0x2618
leaq 0x1940(%rsp), %rdi
callq 0x3670
movl %eax, 0x154(%rsp)
jmp 0x262e
movl 0x154(%rsp), %eax
movl %eax, %eax
movl %eax, %esi
leaq 0x5a8(%rsp), %rdi
callq 0x3680
jmp 0x2648
leaq 0x2cc8(%rsp), %rdi
callq 0x36b0
movl %eax, 0x150(%rsp)
jmp 0x265e
movl 0x150(%rsp), %edx
decl %edx
leaq 0x5a0(%rsp), %rdi
xorl %esi, %esi
callq 0x36c0
jmp 0x2678
leaq 0x590(%rsp), %rdi
vpxor %xmm0, %xmm0, %xmm0
vmovsd 0xa97c(%rip), %xmm1     # 0xd008
callq 0x36f0
jmp 0x2693
leaq 0x2cc8(%rsp), %rdi
callq 0x3720
movl %eax, 0x14c(%rsp)
jmp 0x26a9
movl 0x14c(%rsp), %eax
cltq
movq %rax, 0x138(%rsp)
leaq 0x577(%rsp), %rdi
movq %rdi, 0x140(%rsp)
callq 0x3730
movq 0x138(%rsp), %rsi
movq 0x140(%rsp), %rdx
leaq 0x578(%rsp), %rdi
callq 0x3740
jmp 0x26ee
leaq 0x577(%rsp), %rdi
callq 0x37c0
vmovsd 0x2d48(%rsp), %xmm0
vmovsd 0x2d50(%rsp), %xmm1
movl 0x2d40(%rsp), %esi
leaq 0x558(%rsp), %rdi
movl $0x1, %edx
callq 0xb160
jmp 0x2728
leaq 0x558(%rsp), %rdi
callq 0x37d0
movq %rax, 0x128(%rsp)
leaq 0x53f(%rsp), %rdi
movq %rdi, 0x130(%rsp)
callq 0x3730
movq 0x128(%rsp), %rsi
movq 0x130(%rsp), %rdx
leaq 0x540(%rsp), %rdi
callq 0x3740
jmp 0x2771
leaq 0x53f(%rsp), %rdi
callq 0x37c0
leaq 0x520(%rsp), %rdi
callq 0x37f0
leaq 0x508(%rsp), %rdi
callq 0x37f0
leaq 0x2cc8(%rsp), %rdi
callq 0x36b0
movl %eax, 0x124(%rsp)
jmp 0x27ae
movl 0x124(%rsp), %eax
cltq
movq %rax, 0x110(%rsp)
leaq 0x4ef(%rsp), %rdi
movq %rdi, 0x118(%rsp)
callq 0x3800
movq 0x110(%rsp), %rsi
movq 0x118(%rsp), %rdx
leaq 0x4f0(%rsp), %rdi
callq 0x3810
jmp 0x27f3
leaq 0x4ef(%rsp), %rdi
callq 0x3890
leaq 0x2d0(%rsp), %rdi
callq 0x2340
jmp 0x280f
leaq 0x2cc8(%rsp), %rdi
callq 0x3b70
movl %eax, 0x10c(%rsp)
jmp 0x2825
movl 0x10c(%rsp), %esi
leaq 0x230(%rsp), %rdi
callq 0x3a30
jmp 0x283b
leaq 0xa80e(%rip), %rsi      # 0xd050
leaq 0x250(%rsp), %rdi
leaq 0x230(%rsp), %rdx
callq 0x39e0
jmp 0x2859
leaq 0xa800(%rip), %rdx      # 0xd060
leaq 0x270(%rsp), %rdi
leaq 0x250(%rsp), %rsi
callq 0x38a0
jmp 0x2877
leaq 0x2cc8(%rsp), %rdi
callq 0x3720
movl %eax, 0x108(%rsp)
jmp 0x288d
movl 0x108(%rsp), %esi
leaq 0x210(%rsp), %rdi
callq 0x3a30
jmp 0x28a3
leaq 0x290(%rsp), %rdi
leaq 0x270(%rsp), %rsi
leaq 0x210(%rsp), %rdx
callq 0x38f0
jmp 0x28c2
leaq 0xa969(%rip), %rdx      # 0xd232
leaq 0x2b0(%rsp), %rdi
leaq 0x290(%rsp), %rsi
callq 0x38a0
jmp 0x28e0
leaq 0x2d0(%rsp), %rdi
leaq 0x2b0(%rsp), %rsi
movl $0x10, %edx
callq 0x20d0
jmp 0x28fc
leaq 0x2b0(%rsp), %rdi
callq 0x2120
leaq 0x290(%rsp), %rdi
callq 0x2120
leaq 0x210(%rsp), %rdi
callq 0x2120
leaq 0x270(%rsp), %rdi
callq 0x2120
leaq 0x250(%rsp), %rdi
callq 0x2120
leaq 0x230(%rsp), %rdi
callq 0x2120
movq $0x0, 0x208(%rsp)
movq 0x208(%rsp), %rax
movq %rax, 0x100(%rsp)
leaq 0x558(%rsp), %rdi
callq 0x37d0
movq %rax, %rcx
movq 0x100(%rsp), %rax
cmpq %rcx, %rax
jae 0x32c2
movq 0x10642(%rip), %rdi     # 0x12fd0
leaq 0xa6d4(%rip), %rsi      # 0xd069
callq 0x21e0
movq %rax, 0xf8(%rsp)
jmp 0x29a4
movq 0x208(%rsp), %rsi
leaq 0x558(%rsp), %rdi
callq 0x3b80
movq 0xf8(%rsp), %rdi
vmovsd (%rax), %xmm0
callq 0x2380
movq %rax, 0xf0(%rsp)
jmp 0x29d4
movq 0xf0(%rsp), %rdi
movq 0x105d5(%rip), %rsi     # 0x12fb8
callq 0x2210
jmp 0x29ea
movq 0x208(%rsp), %rsi
leaq 0x558(%rsp), %rdi
callq 0x3b80
vmovsd (%rax), %xmm1
vmovsd 0xa5fd(%rip), %xmm0     # 0xd008
vmovsd %xmm0, 0xe8(%rsp)
vdivsd %xmm1, %xmm0, %xmm0
vmovsd %xmm0, 0x4e0(%rsp)
vmovsd 0x4e0(%rsp), %xmm0
vmovsd 0xa5de(%rip), %xmm1     # 0xd010
vmulsd %xmm1, %xmm0, %xmm0
callq 0x2370
vmovaps %xmm0, %xmm1
vmovsd 0xe8(%rsp), %xmm0
vsubsd %xmm1, %xmm0, %xmm0
vmovsd %xmm0, 0x4d8(%rsp)
leaq 0x4f0(%rsp), %rdi
callq 0xb330
jmp 0x2a64
movq $0x0, 0x200(%rsp)
movq 0x200(%rsp), %rax
movq %rax, 0xd8(%rsp)
leaq 0x2cc8(%rsp), %rdi
callq 0x3720
movl %eax, 0xe4(%rsp)
jmp 0x2a96
movq 0xd8(%rsp), %rax
movl 0xe4(%rsp), %ecx
movslq %ecx, %rcx
cmpq %rcx, %rax
jae 0x31dd
leaq 0x5a0(%rsp), %rdi
leaq 0x5a8(%rsp), %rsi
callq 0x3ba0
movl %eax, 0xd4(%rsp)
jmp 0x2acf
movl 0xd4(%rsp), %eax
movl %eax, 0x4d4(%rsp)
leaq 0x520(%rsp), %rdi
leaq 0x4d4(%rsp), %rsi
callq 0x3bd0
jmp 0x2af4
leaq 0x508(%rsp), %rdi
leaq 0x4d4(%rsp), %rsi
callq 0x3bd0
jmp 0x2b0b
jmp 0x2b0d
leaq 0x520(%rsp), %rdi
callq 0x3c40
cmpq $0x0, %rax
je 0x307f
leaq 0x1e8(%rsp), %rdi
leaq 0x520(%rsp), %rsi
callq 0x3d60
jmp 0x2b3b
leaq 0x1e8(%rsp), %rdi
callq 0x3c60
movl %eax, 0xd0(%rsp)
jmp 0x2b51
movl 0xd0(%rsp), %eax
movl %eax, 0x4d0(%rsp)
leaq 0x1e8(%rsp), %rdi
callq 0x3e60
movl $0x0, 0x1e4(%rsp)
cmpl $0x4, 0x1e4(%rsp)
jge 0x2f93
movl 0x4d0(%rsp), %esi
movl 0x1e4(%rsp), %edx
leaq 0x2cc8(%rsp), %rdi
callq 0x9360
movl %eax, 0xcc(%rsp)
jmp 0x2ba9
movl 0xcc(%rsp), %eax
movslq %eax, %rsi
leaq 0x4f0(%rsp), %rdi
callq 0x3ec0
movl (%rax), %eax
movl %eax, 0xc8(%rsp)
movslq 0x4d0(%rsp), %rsi
leaq 0x4f0(%rsp), %rdi
callq 0x3ec0
movq %rax, %rcx
movl 0xc8(%rsp), %eax
cmpl (%rcx), %eax
jne 0x2f7b
leaq 0x1c8(%rsp), %rdi
leaq 0x508(%rsp), %rsi
callq 0x3d60
jmp 0x2c07
movl 0x4d0(%rsp), %esi
movl 0x1e4(%rsp), %edx
leaq 0x2cc8(%rsp), %rdi
callq 0x9360
movl %eax, 0xc4(%rsp)
jmp 0x2c2b
movl 0xc4(%rsp), %esi
leaq 0x1c8(%rsp), %rdi
callq 0x3ee0
movb %al, 0xc3(%rsp)
jmp 0x2c48
movb 0xc3(%rsp), %al
xorb $-0x1, %al
movb %al, 0xc2(%rsp)
leaq 0x1c8(%rsp), %rdi
callq 0x3e60
movb 0xc2(%rsp), %al
testb $0x1, %al
jne 0x2c75
jmp 0x2f79
leaq 0x590(%rsp), %rdi
leaq 0x5a8(%rsp), %rsi
callq 0x3f60
vmovsd %xmm0, 0xb8(%rsp)
jmp 0x2c95
vmovsd 0xb8(%rsp), %xmm1
vmovsd 0x4d8(%rsp), %xmm0
vucomisd %xmm1, %xmm0
jbe 0x2f77
movl 0x4d0(%rsp), %esi
movl 0x1e4(%rsp), %edx
leaq 0x2cc8(%rsp), %rdi
callq 0x9360
movl %eax, 0xb4(%rsp)
jmp 0x2cd5
movl 0xb4(%rsp), %eax
movl %eax, 0x1c4(%rsp)
leaq 0x520(%rsp), %rdi
leaq 0x1c4(%rsp), %rsi
callq 0x3f90
jmp 0x2cfa
movl 0x4d0(%rsp), %esi
movl 0x1e4(%rsp), %edx
leaq 0x2cc8(%rsp), %rdi
callq 0x9360
movl %eax, 0xb0(%rsp)
jmp 0x2d1e
movl 0xb0(%rsp), %eax
movl %eax, 0x1c0(%rsp)
leaq 0x508(%rsp), %rdi
leaq 0x1c0(%rsp), %rsi
callq 0x3f90
jmp 0x2d43
jmp 0x2f77
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1938(%rsp)
movl %eax, 0x1934(%rsp)
jmp 0x34c9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1938(%rsp)
movl %eax, 0x1934(%rsp)
jmp 0x34bc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1938(%rsp)
movl %eax, 0x1934(%rsp)
leaq 0x577(%rsp), %rdi
callq 0x37c0
jmp 0x34bc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1938(%rsp)
movl %eax, 0x1934(%rsp)
jmp 0x34af
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1938(%rsp)
movl %eax, 0x1934(%rsp)
leaq 0x53f(%rsp), %rdi
callq 0x37c0
jmp 0x34a2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1938(%rsp)
movl %eax, 0x1934(%rsp)
jmp 0x347b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1938(%rsp)
movl %eax, 0x1934(%rsp)
leaq 0x4ef(%rsp), %rdi
callq 0x3890
jmp 0x347b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1938(%rsp)
movl %eax, 0x1934(%rsp)
jmp 0x346e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1938(%rsp)
movl %eax, 0x1934(%rsp)
jmp 0x3461
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1938(%rsp)
movl %eax, 0x1934(%rsp)
jmp 0x2f19
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1938(%rsp)
movl %eax, 0x1934(%rsp)
jmp 0x2f0c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1938(%rsp)
movl %eax, 0x1934(%rsp)
jmp 0x2eff
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1938(%rsp)
movl %eax, 0x1934(%rsp)
jmp 0x2ef2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1938(%rsp)
movl %eax, 0x1934(%rsp)
jmp 0x2ee5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1938(%rsp)
movl %eax, 0x1934(%rsp)
leaq 0x2b0(%rsp), %rdi
callq 0x2120
leaq 0x290(%rsp), %rdi
callq 0x2120
leaq 0x210(%rsp), %rdi
callq 0x2120
leaq 0x270(%rsp), %rdi
callq 0x2120
leaq 0x250(%rsp), %rdi
callq 0x2120
leaq 0x230(%rsp), %rdi
callq 0x2120
jmp 0x3461
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1938(%rsp)
movl %eax, 0x1934(%rsp)
leaq 0x1e8(%rsp), %rdi
callq 0x3e60
jmp 0x3461
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1938(%rsp)
movl %eax, 0x1934(%rsp)
leaq 0x1c8(%rsp), %rdi
callq 0x3e60
jmp 0x3461
jmp 0x2f79
jmp 0x2f7b
jmp 0x2f7d
movl 0x1e4(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x1e4(%rsp)
jmp 0x2b77
leaq 0x520(%rsp), %rdi
movq %rdi, 0xa0(%rsp)
callq 0x40c0
movq 0xa0(%rsp), %rdi
movq %rax, 0x1a8(%rsp)
callq 0x40f0
movq %rax, 0x1a0(%rsp)
movq 0x1a8(%rsp), %rdi
movq 0x1a0(%rsp), %rsi
leaq 0x4d0(%rsp), %rdx
callq 0x4060
movq %rax, 0xa8(%rsp)
jmp 0x2fec
movq 0xa8(%rsp), %rax
movq %rax, 0x1b0(%rsp)
leaq 0x1b8(%rsp), %rdi
leaq 0x1b0(%rsp), %rsi
callq 0x4120
leaq 0x520(%rsp), %rdi
movq %rdi, 0x90(%rsp)
callq 0x40f0
movq %rax, 0x190(%rsp)
leaq 0x198(%rsp), %rdi
leaq 0x190(%rsp), %rsi
callq 0x4120
movq 0x90(%rsp), %rdi
movq 0x1b8(%rsp), %rsi
movq 0x198(%rsp), %rdx
callq 0x3fc0
movq %rax, 0x98(%rsp)
jmp 0x306a
movq 0x98(%rsp), %rax
movq %rax, 0x188(%rsp)
jmp 0x2b0d
movq $0x0, 0x180(%rsp)
movq 0x180(%rsp), %rax
movq %rax, 0x88(%rsp)
leaq 0x508(%rsp), %rdi
callq 0x3c40
movq %rax, %rcx
movq 0x88(%rsp), %rax
cmpq %rcx, %rax
jae 0x3132
movq 0x180(%rsp), %rsi
leaq 0x508(%rsp), %rdi
callq 0x3ec0
movslq (%rax), %rsi
leaq 0x4f0(%rsp), %rdi
callq 0x3ec0
movq %rax, %rcx
xorl %eax, %eax
subl (%rcx), %eax
movl %eax, 0x84(%rsp)
movq 0x180(%rsp), %rsi
leaq 0x508(%rsp), %rdi
callq 0x3ec0
movslq (%rax), %rsi
leaq 0x4f0(%rsp), %rdi
callq 0x3ec0
movl 0x84(%rsp), %ecx
movl %ecx, (%rax)
movq 0x180(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x180(%rsp)
jmp 0x308b
xorl %eax, %eax
movl %eax, %esi
leaq 0x508(%rsp), %rdi
callq 0x4160
jmp 0x3145
leaq 0x4f0(%rsp), %rdi
movq %rdi, 0x70(%rsp)
callq 0x40c0
movq 0x70(%rsp), %rdi
movq %rax, 0x178(%rsp)
callq 0x40f0
movq %rax, 0x170(%rsp)
movq 0x178(%rsp), %rdi
movq 0x170(%rsp), %rsi
vpxor %xmm0, %xmm0, %xmm0
callq 0x4220
vmovsd %xmm0, 0x78(%rsp)
jmp 0x3192
vmovsd 0x78(%rsp), %xmm0
callq 0x4200
vmovsd %xmm0, 0x68(%rsp)
jmp 0x31a5
movq 0x200(%rsp), %rsi
leaq 0x578(%rsp), %rdi
callq 0x3b80
vmovsd 0x68(%rsp), %xmm0
vmovsd %xmm0, (%rax)
movq 0x200(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x200(%rsp)
jmp 0x2a70
leaq 0x578(%rsp), %rdi
movq %rdi, 0x58(%rsp)
callq 0x4300
movq 0x58(%rsp), %rdi
movq %rax, 0x168(%rsp)
callq 0x4330
movq %rax, 0x160(%rsp)
movq 0x168(%rsp), %rdi
movq 0x160(%rsp), %rsi
xorl %edx, %edx
callq 0x4290
movl %eax, 0x64(%rsp)
jmp 0x3226
movl 0x64(%rsp), %eax
vcvtsi2sd %eax, %xmm0, %xmm0
vmovsd %xmm0, 0x48(%rsp)
leaq 0x2cc8(%rsp), %rdi
callq 0x3720
movl %eax, 0x54(%rsp)
jmp 0x3247
movl 0x54(%rsp), %eax
vcvtsi2sd %eax, %xmm0, %xmm0
vmovsd %xmm0, 0x38(%rsp)
leaq 0x2cc8(%rsp), %rdi
callq 0x36b0
movl %eax, 0x44(%rsp)
jmp 0x3268
vmovsd 0x48(%rsp), %xmm0
vmovsd 0x38(%rsp), %xmm1
movl 0x44(%rsp), %eax
vcvtsi2sd %eax, %xmm2, %xmm2
vmulsd %xmm2, %xmm1, %xmm1
vdivsd %xmm1, %xmm0, %xmm0
vmovsd %xmm0, 0x30(%rsp)
movq 0x208(%rsp), %rsi
leaq 0x540(%rsp), %rdi
callq 0x3b80
vmovsd 0x30(%rsp), %xmm0
vmovsd %xmm0, (%rax)
movq 0x208(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x208(%rsp)
jmp 0x2956
movq $0x0, 0x158(%rsp)
movq 0x158(%rsp), %rax
movq %rax, 0x28(%rsp)
leaq 0x558(%rsp), %rdi
callq 0x37d0
movq %rax, %rcx
movq 0x28(%rsp), %rax
cmpq %rcx, %rax
jae 0x3396
movq 0x158(%rsp), %rsi
leaq 0x558(%rsp), %rdi
callq 0x3b80
vmovsd (%rax), %xmm0
leaq 0x2d0(%rsp), %rdi
callq 0x2380
movq %rax, 0x20(%rsp)
jmp 0x3326
movq 0x20(%rsp), %rdi
leaq 0x9d45(%rip), %rsi      # 0xd077
callq 0x21e0
movq %rax, 0x18(%rsp)
jmp 0x333e
movq 0x158(%rsp), %rsi
leaq 0x540(%rsp), %rdi
callq 0x3b80
movq 0x18(%rsp), %rdi
vmovsd (%rax), %xmm0
callq 0x2380
movq %rax, 0x10(%rsp)
jmp 0x3368
movq 0x10(%rsp), %rdi
movq 0xfc44(%rip), %rsi      # 0x12fb8
callq 0x2210
jmp 0x337b
jmp 0x337d
movq 0x158(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x158(%rsp)
jmp 0x32ce
leaq 0x2d0(%rsp), %rdi
callq 0x22a0
jmp 0x33a5
movq 0xfc24(%rip), %rdi      # 0x12fd0
leaq 0x9cc6(%rip), %rsi      # 0xd079
callq 0x21e0
movq %rax, 0x8(%rsp)
jmp 0x33bf
movq 0x8(%rsp), %rdi
movq 0xfbed(%rip), %rsi      # 0x12fb8
callq 0x2210
jmp 0x33d2
movl $0x0, 0x2d64(%rsp)
leaq 0x2d0(%rsp), %rdi
callq 0x22d0
leaq 0x4f0(%rsp), %rdi
callq 0x3e60
leaq 0x508(%rsp), %rdi
callq 0x3e60
leaq 0x520(%rsp), %rdi
callq 0x3e60
leaq 0x540(%rsp), %rdi
callq 0x4360
leaq 0x558(%rsp), %rdi
callq 0x4360
leaq 0x578(%rsp), %rdi
callq 0x4360
leaq 0x1940(%rsp), %rdi
callq 0x43c0
leaq 0x2cc8(%rsp), %rdi
callq 0x43e0
movl 0x2d64(%rsp), %eax
addq $0x2d68, %rsp           # imm = 0x2D68
retq
leaq 0x2d0(%rsp), %rdi
callq 0x22d0
leaq 0x4f0(%rsp), %rdi
callq 0x3e60
leaq 0x508(%rsp), %rdi
callq 0x3e60
leaq 0x520(%rsp), %rdi
callq 0x3e60
leaq 0x540(%rsp), %rdi
callq 0x4360
leaq 0x558(%rsp), %rdi
callq 0x4360
leaq 0x578(%rsp), %rdi
callq 0x4360
leaq 0x1940(%rsp), %rdi
callq 0x43c0
leaq 0x2cc8(%rsp), %rdi
callq 0x43e0
movq 0x1938(%rsp), %rdi
callq 0x2350
nopw %cs:(%rax,%rax)
nopl (%rax)