// File: /workspace/github_cpp_makefile_star2_O1/sisong[P]ApkDiffPatch/src/apk_normalized.cpp
// Function: normalized_cmd_line(int, char const**)
int normalized_cmd_line(int argc, const char * argv[]){
    hpatch_BOOL isNotCompressEmptyFile=_kNULL_VALUE;
    size_t      pageAlignSoFile=_kNULL_SIZE;
    hpatch_BOOL pageAlignSoFileCompatible=_kNULL_VALUE;
    hpatch_BOOL isOutputVersion=_kNULL_VALUE;
    size_t      compressLevel = _kNULL_SIZE;
    size_t      alignSize     = _kNULL_SIZE;
    #define kMax_arg_values_size 2
    const char * arg_values[kMax_arg_values_size]={0};
    int          arg_values_size=0;
    int         i;
    for (i=1; i<argc; ++i) {
        const char* op=argv[i];
        _options_check((op!=0)&&(strlen(op)>0),"?");
        if (op[0]!='-'){
            _options_check(arg_values_size<kMax_arg_values_size,"count");
            arg_values[arg_values_size]=op;
            ++arg_values_size;
            continue;
        }
        _options_check((op!=0)&&(op[0]=='-'),"?");
        switch (op[1]) {
            case 'v':{
                _options_check((isOutputVersion==_kNULL_VALUE)&&(op[2]=='\0'),"-v");
                isOutputVersion=hpatch_TRUE;
            } break;
            case 'q':{
                _options_check((op[2]=='\0'),"-q");
                g_isPrintNormalizingFileName=false;
            } break;
            case 'n':{
                if ((op[2]=='c')&&(op[3]=='e')&&(op[4]=='-')&&((op[5]=='0')||(op[5]=='1'))){
                    _options_check(isNotCompressEmptyFile==_kNULL_VALUE,"-nce-?");
                    isNotCompressEmptyFile=(hpatch_BOOL)(op[5]=='1');
                }else{
                    _options_check(hpatch_FALSE,"-nce?");
                }
            } break;
            case 'c':{
                if ((op[2]=='l')&&(op[3]=='-')){
                    _options_check(compressLevel==_kNULL_SIZE,"-cl-?")
                    const char* pnum=op+4;
                    _options_check(kmg_to_size(pnum,strlen(pnum),&compressLevel),"-cl-?");
                    _options_check((0<=compressLevel)&&(compressLevel<=9),"-cl-?");
                }else{
                    _options_check(hpatch_FALSE,"-cl?");
                }
            } break;
            case 'a':{
                if ((op[2]=='p')&&(op[3]=='-')){
                    _options_check(pageAlignSoFile==_kNULL_SIZE,"-ap-?");
                    const char* pnum=op+4;
                    pageAlignSoFileCompatible=(pnum[0]=='c')||(pnum[0]=='C');
                    if (pageAlignSoFileCompatible) ++pnum;
                    _options_check(kmg_to_size(pnum,strlen(pnum),&pageAlignSoFile),"-ap-?");
                    #define _kMaxPageAlignSize      (64*1024)
                    #define _kDefaultPageAlignSize  (4*1024)
                    if (pageAlignSoFile==1) pageAlignSoFile=_kDefaultPageAlignSize;
                    _options_check((pageAlignSoFile==0)||(pageAlignSoFile==16*1024)
                                 ||(pageAlignSoFile==_kDefaultPageAlignSize)||(pageAlignSoFile==_kMaxPageAlignSize),"-ap-?");
                }else if ((op[2]=='s')&&(op[3]=='-')){
                    _options_check(alignSize==_kNULL_SIZE,"-as-?")
                    const char* pnum=op+4;
                    _options_check(kmg_to_size(pnum,strlen(pnum),&alignSize),"-as-?");
                    _options_check((1<=alignSize)&&(alignSize<=_kMaxPageAlignSize),"-as-?");
                }else{
                    _options_check(hpatch_FALSE,"-a?");
                }
            } break;
            default: {
                _options_check(hpatch_FALSE,"-?");
            } break;
        }//swich
    }
    if (isNotCompressEmptyFile==_kNULL_VALUE)
        isNotCompressEmptyFile=hpatch_TRUE;
    if (pageAlignSoFile==_kNULL_SIZE)
        pageAlignSoFile=_kDefaultPageAlignSize;
    if (pageAlignSoFile==_kDefaultPageAlignSize)
        pageAlignSoFileCompatible=hpatch_TRUE;
    if (compressLevel==_kNULL_SIZE)
        compressLevel=kDefaultZlibCompressLevel;
    if (alignSize==_kNULL_SIZE)
        alignSize=kDefaultZipAlignSize;
    if (isOutputVersion==_kNULL_VALUE)
        isOutputVersion=hpatch_FALSE;
    if (isOutputVersion){
        printf("ApkDiffPatch::ApkNormalized v" APKDIFFPATCH_VERSION_STRING "\n\n");
        if (arg_values_size==0)
            return _kResult_OK;
    }

    if (compressLevel>6)
        printf("WARNING: not recommended 7,8,9, compress ratio is slightly higher, but compress speed is very slow when patching.\n");
        
    _options_check(arg_values_size==2,"count");
    const char* srcApk=arg_values[0];
    const char* dstApk=arg_values[1];
    hpatch_printPath_utf8((std::string("src: \"")+srcApk+"\"\n").c_str());
    hpatch_printPath_utf8((std::string("out: \"")+dstApk+"\"\n").c_str());
    double time0=clock_s();
    int apkFilesRemoved=0;
    if (!ZipNormalized(srcApk,dstApk,(int)alignSize,(int)compressLevel,
                       (bool)isNotCompressEmptyFile,pageAlignSoFile,pageAlignSoFileCompatible,&apkFilesRemoved)){
        printf("\nrun ApkNormalized ERROR!\n");
        return _kResult_NORMALIZED_ERROR;
    }
    printf("run ApkNormalized ok!\n");
    
    TCompressedFilesInfos cInfos;
    if (!getCompressedFilesInfos(dstApk,&cInfos)){
        printf("\nApkNormalized result file open ERROR!\n");
        return _kResult_OPEN_NORMALIZED_ERROR;
    }
    printf("  NOTE: recompressed files count %d, data size %" PRIu64 " compress to %" PRIu64 "\n",
            cInfos.compressedCount,cInfos.sumCompressedUncompressedSize,cInfos.sumCompressedSize);
    
    //check
    if (!getZipIsSame(srcApk,dstApk,apkFilesRemoved)){
        printf("\nApkNormalized result file check ERROR!\n");
        return _kResult_CHECK_NORMALIZED_DATA_ERROR;
    }
    printf("  check ApkNormalized result ok!\n");

    double time1=clock_s();
    printf("\nApkNormalized time: %.3f s\n",(time1-time0));
    return _kResult_OK;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0xa8, %rsp
xorpd %xmm0, %xmm0
movapd %xmm0, 0x90(%rsp)
cmpl $0x2, %edi
jl 0x3f2f
movq %rsi, %rbx
movl %edi, %r12d
movq $-0x1, 0x10(%rsp)
movl $0xffffffff, 0x24(%rsp) # imm = 0xFFFFFFFF
movl $0x1, %r14d
leaq 0x1c7b8(%rip), %r15     # 0x20084
movl $0xffffffff, 0xc(%rsp)  # imm = 0xFFFFFFFF
movl $0xffffffff, 0x8(%rsp)  # imm = 0xFFFFFFFF
xorl %ebp, %ebp
movq $-0x1, 0x18(%rsp)
movq $-0x1, 0x28(%rsp)
movq (%rbx,%r14,8), %r13
testq %r13, %r13
je 0x3907
movzbl (%r13), %eax
cmpl $0x2d, %eax
je 0x3937
testl %eax, %eax
jne 0x3977
leaq 0x1d40d(%rip), %rdi     # 0x20d1b
callq 0x3410
movq %r15, %rdi
xorl %eax, %eax
callq 0x3050
movl $0x1, %eax
testb $0x3, %al
jne 0x404a
incq %r14
cmpq %r12, %r14
jne 0x38f0
jmp 0x3f51
movzbl 0x1(%r13), %eax
cmpl $0x6d, %eax
jle 0x39af
cmpl $0x6e, %eax
je 0x39e4
cmpl $0x71, %eax
je 0x3a1e
cmpl $0x76, %eax
jne 0x3a58
cmpl $-0x1, 0x8(%rsp)
jne 0x396e
cmpb $0x0, 0x2(%r13)
je 0x3ab0
leaq 0x1d45a(%rip), %rdi     # 0x20dcf
jmp 0x390e
cmpl $0x2, %ebp
jge 0x398f
movl %ebp, %eax
movq %r13, 0x90(%rsp,%rax,8)
incl %ebp
movl $0x4, %eax
jmp 0x3922
leaq 0x1d45d(%rip), %rdi     # 0x20df3
callq 0x3410
movq %r15, %rdi
xorl %eax, %eax
callq 0x3050
movl $0x2, %ebp
jmp 0x391d
cmpl $0x61, %eax
je 0x3a31
cmpl $0x63, %eax
jne 0x3a58
cmpb $0x6c, 0x2(%r13)
jne 0x3a70
cmpb $0x2d, 0x3(%r13)
jne 0x3a70
cmpq $-0x1, 0x18(%rsp)
je 0x3abf
jmp 0x3d22
cmpb $0x63, 0x2(%r13)
jne 0x3a64
cmpb $0x65, 0x3(%r13)
jne 0x3a64
cmpb $0x2d, 0x4(%r13)
jne 0x3a64
movb 0x5(%r13), %al
movl %eax, %ecx
andb $-0x2, %cl
cmpb $0x30, %cl
jne 0x3a64
cmpl $-0x1, 0x24(%rsp)
je 0x3c58
leaq 0x1d38e(%rip), %rdi     # 0x20da7
jmp 0x390e
cmpb $0x0, 0x2(%r13)
je 0x3a7c
leaq 0x1d391(%rip), %rdi     # 0x20dbd
jmp 0x390e
movzbl 0x2(%r13), %eax
cmpl $0x73, %eax
je 0x3a8c
cmpl $0x70, %eax
jne 0x3aa4
cmpb $0x2d, 0x3(%r13)
jne 0x3a88
cmpq $-0x1, 0x10(%rsp)
je 0x3ba9
jmp 0x3eb3
leaq 0x1d382(%rip), %rdi     # 0x20de1
jmp 0x390e
leaq 0x1d327(%rip), %rdi     # 0x20d92
jmp 0x390e
leaq 0x1d2f2(%rip), %rdi     # 0x20d69
jmp 0x390e
leaq 0x2d83d(%rip), %rax     # 0x312c0
movb $0x0, (%rax)
jmp 0x3ab8
cmpb $0x73, %al
jne 0x3aa4
cmpb $0x2d, 0x3(%r13)
jne 0x3aa4
cmpq $-0x1, 0x28(%rsp)
je 0x3b34
jmp 0x3df0
leaq 0x1d281(%rip), %rdi     # 0x20d2c
jmp 0x390e
movl $0x1, 0x8(%rsp)
xorl %eax, %eax
jmp 0x3922
addq $0x4, %r13
movq %r13, %rdi
callq 0x3140
testq %rax, %rax
je 0x3c3e
movzbl -0x1(%r13,%rax), %ecx
addl $-0x47, %ecx
cmpl $0x26, %ecx
ja 0x3f15
movabsq $0x100000001, %rdx      # imm = 0x100000001
btq %rcx, %rdx
jb 0x3c72
movabsq $0x1000000010, %rdx     # imm = 0x1000000010
btq %rcx, %rdx
jb 0x3c68
movabsq $0x4000000040, %rdx     # imm = 0x4000000040
btq %rcx, %rdx
movl $0x0, %ecx
jae 0x3c7a
decq %rax
movl $0x14, %ecx
jmp 0x3c7a
addq $0x4, %r13
movq %r13, %rdi
callq 0x3140
testq %rax, %rax
je 0x3c45
movzbl -0x1(%r13,%rax), %ecx
addl $-0x47, %ecx
cmpl $0x26, %ecx
ja 0x3f1c
movabsq $0x100000001, %rdx      # imm = 0x100000001
btq %rcx, %rdx
jb 0x3d38
movabsq $0x1000000010, %rdx     # imm = 0x1000000010
btq %rcx, %rdx
jb 0x3d2e
movabsq $0x4000000040, %rdx     # imm = 0x4000000040
btq %rcx, %rdx
movl $0x0, %ecx
jae 0x3d40
decq %rax
movl $0x14, %ecx
jmp 0x3d40
leaq 0x4(%r13), %rax
movb 0x4(%r13), %cl
andb $-0x21, %cl
addq $0x5, %r13
movl $0x0, 0xc(%rsp)
cmpb $0x43, %cl
sete 0x7(%rsp)
cmovneq %rax, %r13
movq %r13, %rdi
callq 0x3140
testq %rax, %rax
je 0x3c4c
movzbl -0x1(%r13,%rax), %ecx
addl $-0x47, %ecx
cmpl $0x26, %ecx
ja 0x3f23
movabsq $0x100000001, %rdx      # imm = 0x100000001
btq %rcx, %rdx
movb 0x7(%rsp), %r11b
jb 0x3e06
movabsq $0x1000000010, %rdx     # imm = 0x1000000010
btq %rcx, %rdx
jb 0x3dfc
movabsq $0x4000000040, %rdx     # imm = 0x4000000040
btq %rcx, %rdx
movl $0x0, %ecx
jae 0x3e0e
decq %rax
movl $0x14, %ecx
jmp 0x3e0e
movb $0x1, %al
jmp 0x3d10
movb $0x1, %al
jmp 0x3dd6
movb $0x1, %al
movb 0x7(%rsp), %r11b
jmp 0x3ea4
xorl %ecx, %ecx
cmpb $0x31, %al
sete %cl
movl %ecx, 0x24(%rsp)
jmp 0x3ab8
decq %rax
movl $0xa, %ecx
jmp 0x3c7a
decq %rax
movl $0x1e, %ecx
movb $0x1, %sil
testq %rax, %rax
je 0x3cea
cmpq $0x1, %rax
je 0x3c8f
cmpb $0x30, (%r13)
je 0x3cea
decq %rax
xorl %edi, %edi
xorl %edx, %edx
movzbl (%r13,%rdi), %r8d
leal -0x30(%r8), %r9d
movb $0x1, %sil
cmpb $0x9, %r9b
ja 0x3cd7
addq $-0x30, %r8
movabsq $0x1999999999999999, %r9 # imm = 0x1999999999999999
cmpq %r9, %rdx
jb 0x3ccd
setne %r9b
cmpq $0x6, %r8
setae %r10b
orb %r9b, %r10b
jne 0x3cd7
leaq (%rdx,%rdx,4), %rdx
leaq (%r8,%rdx,2), %rdx
xorl %esi, %esi
testb %sil, %sil
jne 0x3cea
leaq 0x1(%rdi), %r8
cmpq %rdi, %rax
movq %r8, %rdi
jne 0x3c96
jmp 0x3cea
movq $-0x1, %rax
shrq %cl, %rax
cmpq %rax, %rdx
seta %al
shlq %cl, %rdx
orb %sil, %al
testb %al, %al
movq 0x18(%rsp), %rcx
cmoveq %rdx, %rcx
movq %rcx, 0x18(%rsp)
testb %al, %al
je 0x3d16
jmp 0x3d22
cmpq $0xa, 0x18(%rsp)
jb 0x3ab8
leaq 0x1d054(%rip), %rdi     # 0x20d7d
jmp 0x390e
decq %rax
movl $0xa, %ecx
jmp 0x3d40
decq %rax
movl $0x1e, %ecx
movb $0x1, %sil
testq %rax, %rax
je 0x3db0
cmpq $0x1, %rax
je 0x3d55
cmpb $0x30, (%r13)
je 0x3db0
decq %rax
xorl %edi, %edi
xorl %edx, %edx
movzbl (%r13,%rdi), %r8d
leal -0x30(%r8), %r9d
movb $0x1, %sil
cmpb $0x9, %r9b
ja 0x3d9d
addq $-0x30, %r8
movabsq $0x1999999999999999, %r9 # imm = 0x1999999999999999
cmpq %r9, %rdx
jb 0x3d93
setne %r9b
cmpq $0x6, %r8
setae %r10b
orb %r9b, %r10b
jne 0x3d9d
leaq (%rdx,%rdx,4), %rdx
leaq (%r8,%rdx,2), %rdx
xorl %esi, %esi
testb %sil, %sil
jne 0x3db0
leaq 0x1(%rdi), %r8
cmpq %rdi, %rax
movq %r8, %rdi
jne 0x3d5c
jmp 0x3db0
movq $-0x1, %rax
shrq %cl, %rax
cmpq %rax, %rdx
seta %al
shlq %cl, %rdx
orb %sil, %al
testb %al, %al
movq 0x28(%rsp), %rcx
cmoveq %rdx, %rcx
movq %rcx, 0x28(%rsp)
testb %al, %al
je 0x3ddc
jmp 0x3df0
movq 0x28(%rsp), %rax
decq %rax
cmpq $0x10000, %rax          # imm = 0x10000
jb 0x3ab8
leaq 0x1cf48(%rip), %rdi     # 0x20d3f
jmp 0x390e
decq %rax
movl $0xa, %ecx
jmp 0x3e0e
decq %rax
movl $0x1e, %ecx
movb $0x1, %sil
testq %rax, %rax
je 0x3e7e
cmpq $0x1, %rax
je 0x3e23
cmpb $0x30, (%r13)
je 0x3e7e
decq %rax
xorl %edi, %edi
xorl %edx, %edx
movzbl (%r13,%rdi), %r8d
leal -0x30(%r8), %r9d
movb $0x1, %sil
cmpb $0x9, %r9b
ja 0x3e6b
addq $-0x30, %r8
movabsq $0x1999999999999999, %r9 # imm = 0x1999999999999999
cmpq %r9, %rdx
jb 0x3e61
setne %r9b
cmpq $0x6, %r8
setae %r10b
orb %r9b, %r10b
jne 0x3e6b
leaq (%rdx,%rdx,4), %rdx
leaq (%r8,%rdx,2), %rdx
xorl %esi, %esi
testb %sil, %sil
jne 0x3e7e
leaq 0x1(%rdi), %r8
cmpq %rdi, %rax
movq %r8, %rdi
jne 0x3e2a
jmp 0x3e7e
movq $-0x1, %rax
shrq %cl, %rax
cmpq %rax, %rdx
seta %al
shlq %cl, %rdx
orb %sil, %al
testb %al, %al
movq 0x10(%rsp), %rcx
cmoveq %rdx, %rcx
movq %rcx, 0x10(%rsp)
movl 0xc(%rsp), %ecx
movb %r11b, %cl
movl %ecx, 0xc(%rsp)
testb %al, %al
je 0x3ebf
leaq 0x1ce9a(%rip), %rdi     # 0x20d54
jmp 0x390e
movq 0x10(%rsp), %rcx
cmpq $0x1, %rcx
movl $0x1000, %eax           # imm = 0x1000
cmoveq %rax, %rcx
xorl %eax, %eax
cmpq $0x3fff, %rcx           # imm = 0x3FFF
movq %rcx, 0x10(%rsp)
jg 0x3ef9
testq %rcx, %rcx
je 0x3922
cmpq $0x1000, %rcx           # imm = 0x1000
je 0x3922
jmp 0x3f13
cmpq $0x4000, %rcx           # imm = 0x4000
je 0x3922
cmpq $0x10000, %rcx          # imm = 0x10000
je 0x3922
jmp 0x3eb3
xorl %ecx, %ecx
jmp 0x3c7a
xorl %ecx, %ecx
jmp 0x3d40
xorl %ecx, %ecx
movb 0x7(%rsp), %r11b
jmp 0x3e0e
movb $0x1, %al
xorl %ebp, %ebp
movq $-0x1, 0x28(%rsp)
movq $-0x1, %rdx
movq $-0x1, %rcx
movb $0x1, %r14b
movb $0x1, %bl
jmp 0x3f78
movl 0x8(%rsp), %eax
incl %eax
cmpl $0x2, %eax
setb %al
cmpl $0x0, 0x24(%rsp)
setne %bl
cmpl $0x0, 0xc(%rsp)
setne %r14b
movq 0x10(%rsp), %rcx
movq 0x18(%rsp), %rdx
cmpq $-0x1, %rcx
movl $0x1000, %r15d          # imm = 0x1000
cmovneq %rcx, %r15
cmpq $-0x1, %rdx
movl $0x6, %r12d
cmovneq %rdx, %r12
testb %al, %al
jne 0x3fac
leaq 0x1cc46(%rip), %rdi     # 0x20be5
callq 0x3410
testl %ebp, %ebp
je 0x4055
cmpq $0x7, %r12
jb 0x3fbe
leaq 0x1cc50(%rip), %rdi     # 0x20c09
callq 0x3410
cmpl $0x2, %ebp
jne 0x4030
movb %r14b, 0x8(%rsp)
movq 0x90(%rsp), %rbp
movq 0x98(%rsp), %r14
leaq 0x80(%rsp), %r13
movq %r13, -0x10(%r13)
leaq 0x1c025(%rip), %rsi     # 0x20010
leaq 0x1c024(%rip), %rdx     # 0x20016
leaq 0x70(%rsp), %rdi
callq 0x448a
leaq 0x70(%rsp), %rdi
movq %rbp, %rsi
callq 0x3520
leaq 0x40(%rsp), %rsi
movq %rsi, -0x10(%rsi)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x405d
movq %rdx, 0x30(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x40(%rsp)
jmp 0x4065
leaq 0x1cdbc(%rip), %rdi     # 0x20df3
callq 0x3410
leaq 0x1c041(%rip), %rdi     # 0x20084
xorl %eax, %eax
callq 0x3050
movl $0x1, %r15d
jmp 0x4360
xorl %r15d, %r15d
jmp 0x4360
movupd (%rcx), %xmm0
movupd %xmm0, (%rsi)
movb %bl, 0x18(%rsp)
movq 0x8(%rax), %rdx
leaq 0x30(%rsp), %rdi
movq %rdx, 0x8(%rdi)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x1bf8b(%rip), %rsi     # 0x20017
callq 0x3520
leaq 0x60(%rsp), %rbx
movq %rbx, -0x10(%rbx)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x40b8
movq %rdx, 0x50(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x60(%rsp)
jmp 0x40c0
movupd (%rcx), %xmm0
movupd %xmm0, (%rbx)
movq 0x8(%rax), %rdx
movq %rdx, 0x58(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq 0x50(%rsp), %rdi
callq 0x14bf8
movq 0x50(%rsp), %rdi
cmpq %rbx, %rdi
je 0x40f9
movq 0x60(%rsp), %rsi
incq %rsi
callq 0x32b0
movq 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rax
cmpq %rax, %rdi
je 0x4115
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x32b0
movq 0x70(%rsp), %rdi
cmpq %r13, %rdi
je 0x412f
movq 0x80(%rsp), %rsi
incq %rsi
callq 0x32b0
leaq 0x70(%rsp), %rdi
movq %r13, (%rdi)
leaq 0x1bedc(%rip), %rsi     # 0x2001a
leaq 0x1bedb(%rip), %rdx     # 0x20020
callq 0x448a
leaq 0x70(%rsp), %rdi
movq %r14, %rsi
callq 0x3520
leaq 0x40(%rsp), %rsi
movq %rsi, 0x30(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x417f
movq %rdx, 0x30(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x40(%rsp)
jmp 0x4187
movupd (%rcx), %xmm0
movupd %xmm0, (%rsi)
movq 0x8(%rax), %rdx
leaq 0x30(%rsp), %r13
movq %rdx, 0x8(%r13)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x1be6d(%rip), %rsi     # 0x20017
movq %r13, %rdi
callq 0x3520
movq %rbx, 0x50(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x41d5
movq %rdx, 0x50(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x60(%rsp)
jmp 0x41dd
movupd (%rcx), %xmm0
movupd %xmm0, (%rbx)
movq 0x8(%rax), %rdx
movq %rdx, 0x58(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq 0x50(%rsp), %rdi
callq 0x14bf8
movq 0x50(%rsp), %rdi
cmpq %rbx, %rdi
je 0x4216
movq 0x60(%rsp), %rsi
incq %rsi
callq 0x32b0
movq 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rax
cmpq %rax, %rdi
je 0x4232
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x32b0
movq 0x70(%rsp), %rdi
leaq 0x80(%rsp), %rax
cmpq %rax, %rdi
je 0x4254
movq 0x80(%rsp), %rsi
incq %rsi
callq 0x32b0
cmpq $0x1000, %r15           # imm = 0x1000
sete %bl
callq 0x4432
movsd %xmm0, 0x10(%rsp)
movq 0x28(%rsp), %rax
cmpq $-0x1, %rax
movl $0x0, 0x30(%rsp)
movl $0x8, %edx
cmovnel %eax, %edx
orb 0x8(%rsp), %bl
movzbl %bl, %eax
andl $0x1, %eax
movzbl 0x18(%rsp), %r8d
movq %rbp, %rdi
movq %r14, %rsi
movl %r12d, %ecx
movq %r15, %r9
pushq %r13
pushq %rax
callq 0x451c
addq $0x10, %rsp
testb %al, %al
je 0x4326
leaq 0x1c9e0(%rip), %rdi     # 0x20c95
callq 0x3410
leaq 0x50(%rsp), %rsi
movq %r14, %rdi
callq 0x77a7
testb %al, %al
je 0x433a
movl 0x54(%rsp), %esi
movq 0x68(%rsp), %rdx
movq 0x60(%rsp), %rcx
leaq 0x1bd41(%rip), %rdi     # 0x20021
xorl %r15d, %r15d
xorl %eax, %eax
callq 0x3050
movl 0x30(%rsp), %edx
movq %rbp, %rdi
movq %r14, %rsi
xorl %ecx, %ecx
callq 0x74d4
testb %al, %al
je 0x434e
leaq 0x1c9f4(%rip), %rdi     # 0x20cfa
callq 0x3410
callq 0x4432
subsd 0x10(%rsp), %xmm0
leaq 0x1bd4a(%rip), %rdi     # 0x20067
movb $0x1, %al
callq 0x3050
jmp 0x4360
leaq 0x1c94e(%rip), %rdi     # 0x20c7b
callq 0x3410
movl $0x2, %r15d
jmp 0x4360
leaq 0x1c96a(%rip), %rdi     # 0x20cab
callq 0x3410
movl $0x3, %r15d
jmp 0x4360
leaq 0x1c97d(%rip), %rdi     # 0x20cd2
callq 0x3410
movl $0x4, %r15d
movl %r15d, %eax
addq $0xa8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %r15
movq 0x50(%rsp), %rdi
cmpq %rbx, %rdi
je 0x4394
movq 0x60(%rsp), %rsi
incq %rsi
callq 0x32b0
jmp 0x4394
movq %rax, %r15
movq 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rax
cmpq %rax, %rdi
je 0x43b5
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x32b0
jmp 0x43b5
movq %rax, %r15
movq 0x70(%rsp), %rdi
leaq 0x80(%rsp), %rax
cmpq %rax, %rdi
jne 0x4415
jmp 0x442a
jmp 0x4427
movq %rax, %r15
movq 0x50(%rsp), %rdi
cmpq %rbx, %rdi
je 0x43ea
movq 0x60(%rsp), %rsi
incq %rsi
callq 0x32b0
jmp 0x43ea
movq %rax, %r15
movq 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rax
cmpq %rax, %rdi
je 0x440b
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x32b0
jmp 0x440b
movq %rax, %r15
movq 0x70(%rsp), %rdi
cmpq %r13, %rdi
je 0x442a
movq 0x80(%rsp), %rsi
incq %rsi
callq 0x32b0
jmp 0x442a
movq %rax, %r15
movq %r15, %rdi
callq 0x34d0