// File: 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
movq %rsp, %rbp
subq $0x1f0, %rsp            # imm = 0x1F0
movl %edi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movl $0xffffffff, -0x14(%rbp) # imm = 0xFFFFFFFF
movq $-0x1, -0x20(%rbp)
movl $0xffffffff, -0x24(%rbp) # imm = 0xFFFFFFFF
movl $0xffffffff, -0x28(%rbp) # imm = 0xFFFFFFFF
movq $-0x1, -0x30(%rbp)
movq $-0x1, -0x38(%rbp)
leaq -0x50(%rbp), %rdi
xorl %esi, %esi
movl $0x10, %edx
callq 0x3210
movl $0x0, -0x54(%rbp)
movl $0x1, -0x58(%rbp)
movl -0x58(%rbp), %eax
cmpl -0x8(%rbp), %eax
jge 0x3df3
movq -0x10(%rbp), %rax
movslq -0x58(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0x60(%rbp)
cmpq $0x0, -0x60(%rbp)
je 0x38af
movq -0x60(%rbp), %rdi
callq 0x3180
cmpq $0x0, %rax
ja 0x38ce
leaq 0x397b2(%rip), %rdi     # 0x3d068
movb $0x0, %al
callq 0x3050
callq 0x42a0
movl $0x1, -0x4(%rbp)
jmp 0x427c
movq -0x60(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x2d, %eax
je 0x391a
cmpl $0x2, -0x54(%rbp)
jl 0x38ff
leaq 0x39793(%rip), %rdi     # 0x3d07a
movb $0x0, %al
callq 0x3050
callq 0x42a0
movl $0x1, -0x4(%rbp)
jmp 0x427c
movq -0x60(%rbp), %rcx
movslq -0x54(%rbp), %rax
movq %rcx, -0x50(%rbp,%rax,8)
movl -0x54(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x54(%rbp)
jmp 0x3de5
cmpq $0x0, -0x60(%rbp)
je 0x392d
movq -0x60(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x2d, %eax
je 0x394c
leaq 0x39734(%rip), %rdi     # 0x3d068
movb $0x0, %al
callq 0x3050
callq 0x42a0
movl $0x1, -0x4(%rbp)
jmp 0x427c
movq -0x60(%rbp), %rax
movsbl 0x1(%rax), %eax
addl $-0x61, %eax
movl %eax, %ecx
movq %rcx, -0x1a8(%rbp)
subl $0x15, %eax
ja 0x3dc4
movq -0x1a8(%rbp), %rax
leaq 0x3968d(%rip), %rcx     # 0x3d004
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
cmpl $-0x1, -0x28(%rbp)
jne 0x3993
movq -0x60(%rbp), %rax
movsbl 0x2(%rax), %eax
cmpl $0x0, %eax
je 0x39b2
leaq 0x396f6(%rip), %rdi     # 0x3d090
movb $0x0, %al
callq 0x3050
callq 0x42a0
movl $0x1, -0x4(%rbp)
jmp 0x427c
movl $0x1, -0x28(%rbp)
jmp 0x3de3
movq -0x60(%rbp), %rax
movsbl 0x2(%rax), %eax
cmpl $0x0, %eax
je 0x39ea
leaq 0x396d1(%rip), %rdi     # 0x3d0a3
movb $0x0, %al
callq 0x3050
callq 0x42a0
movl $0x1, -0x4(%rbp)
jmp 0x427c
leaq 0x56977(%rip), %rax     # 0x5a368
movb $0x0, (%rax)
jmp 0x3de3
movq -0x60(%rbp), %rax
movsbl 0x2(%rax), %eax
cmpl $0x63, %eax
jne 0x3a77
movq -0x60(%rbp), %rax
movsbl 0x3(%rax), %eax
cmpl $0x65, %eax
jne 0x3a77
movq -0x60(%rbp), %rax
movsbl 0x4(%rax), %eax
cmpl $0x2d, %eax
jne 0x3a77
movq -0x60(%rbp), %rax
movsbl 0x5(%rax), %eax
cmpl $0x30, %eax
je 0x3a3a
movq -0x60(%rbp), %rax
movsbl 0x5(%rax), %eax
cmpl $0x31, %eax
jne 0x3a77
cmpl $-0x1, -0x14(%rbp)
je 0x3a5f
leaq 0x3966f(%rip), %rdi     # 0x3d0b6
movb $0x0, %al
callq 0x3050
callq 0x42a0
movl $0x1, -0x4(%rbp)
jmp 0x427c
movq -0x60(%rbp), %rax
movsbl 0x5(%rax), %eax
cmpl $0x31, %eax
sete %al
andb $0x1, %al
movzbl %al, %eax
movl %eax, -0x14(%rbp)
jmp 0x3a96
leaq 0x3964f(%rip), %rdi     # 0x3d0cd
movb $0x0, %al
callq 0x3050
callq 0x42a0
movl $0x1, -0x4(%rbp)
jmp 0x427c
jmp 0x3de3
movq -0x60(%rbp), %rax
movsbl 0x2(%rax), %eax
cmpl $0x6c, %eax
jne 0x3b6a
movq -0x60(%rbp), %rax
movsbl 0x3(%rax), %eax
cmpl $0x2d, %eax
jne 0x3b6a
cmpq $-0x1, -0x30(%rbp)
je 0x3ae3
leaq 0x39618(%rip), %rdi     # 0x3d0e3
movb $0x0, %al
callq 0x3050
callq 0x42a0
movl $0x1, -0x4(%rbp)
jmp 0x427c
movq -0x60(%rbp), %rax
addq $0x4, %rax
movq %rax, -0x68(%rbp)
movq -0x68(%rbp), %rax
movq %rax, -0x1b0(%rbp)
movq -0x68(%rbp), %rdi
callq 0x3180
movq -0x1b0(%rbp), %rdi
movq %rax, %rsi
leaq -0x30(%rbp), %rdx
callq 0x42c0
cmpl $0x0, %eax
jne 0x3b3a
leaq 0x395c1(%rip), %rdi     # 0x3d0e3
movb $0x0, %al
callq 0x3050
callq 0x42a0
movl $0x1, -0x4(%rbp)
jmp 0x427c
xorl %eax, %eax
cmpq -0x30(%rbp), %rax
ja 0x3b49
cmpq $0x9, -0x30(%rbp)
jbe 0x3b68
leaq 0x39593(%rip), %rdi     # 0x3d0e3
movb $0x0, %al
callq 0x3050
callq 0x42a0
movl $0x1, -0x4(%rbp)
jmp 0x427c
jmp 0x3b89
leaq 0x39588(%rip), %rdi     # 0x3d0f9
movb $0x0, %al
callq 0x3050
callq 0x42a0
movl $0x1, -0x4(%rbp)
jmp 0x427c
jmp 0x3de3
movq -0x60(%rbp), %rax
movsbl 0x2(%rax), %eax
cmpl $0x70, %eax
jne 0x3ccc
movq -0x60(%rbp), %rax
movsbl 0x3(%rax), %eax
cmpl $0x2d, %eax
jne 0x3ccc
cmpq $-0x1, -0x20(%rbp)
je 0x3bd6
leaq 0x39550(%rip), %rdi     # 0x3d10e
movb $0x0, %al
callq 0x3050
callq 0x42a0
movl $0x1, -0x4(%rbp)
jmp 0x427c
movq -0x60(%rbp), %rax
addq $0x4, %rax
movq %rax, -0x70(%rbp)
movq -0x70(%rbp), %rax
movsbl (%rax), %ecx
movb $0x1, %al
cmpl $0x63, %ecx
movb %al, -0x1b1(%rbp)
je 0x3c09
movq -0x70(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x43, %eax
sete %al
movb %al, -0x1b1(%rbp)
movb -0x1b1(%rbp), %al
andb $0x1, %al
movzbl %al, %eax
movl %eax, -0x24(%rbp)
cmpl $0x0, -0x24(%rbp)
je 0x3c29
movq -0x70(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x70(%rbp)
movq -0x70(%rbp), %rax
movq %rax, -0x1c0(%rbp)
movq -0x70(%rbp), %rdi
callq 0x3180
movq -0x1c0(%rbp), %rdi
movq %rax, %rsi
leaq -0x20(%rbp), %rdx
callq 0x42c0
cmpl $0x0, %eax
jne 0x3c74
leaq 0x394b2(%rip), %rdi     # 0x3d10e
movb $0x0, %al
callq 0x3050
callq 0x42a0
movl $0x1, -0x4(%rbp)
jmp 0x427c
cmpq $0x1, -0x20(%rbp)
jne 0x3c83
movq $0x1000, -0x20(%rbp)    # imm = 0x1000
cmpq $0x0, -0x20(%rbp)
je 0x3cc7
cmpq $0x4000, -0x20(%rbp)    # imm = 0x4000
je 0x3cc7
cmpq $0x1000, -0x20(%rbp)    # imm = 0x1000
je 0x3cc7
cmpq $0x10000, -0x20(%rbp)   # imm = 0x10000
je 0x3cc7
leaq 0x3945f(%rip), %rdi     # 0x3d10e
movb $0x0, %al
callq 0x3050
callq 0x42a0
movl $0x1, -0x4(%rbp)
jmp 0x427c
jmp 0x3dc2
movq -0x60(%rbp), %rax
movsbl 0x2(%rax), %eax
cmpl $0x73, %eax
jne 0x3da1
movq -0x60(%rbp), %rax
movsbl 0x3(%rax), %eax
cmpl $0x2d, %eax
jne 0x3da1
cmpq $-0x1, -0x38(%rbp)
je 0x3d14
leaq 0x39428(%rip), %rdi     # 0x3d124
movb $0x0, %al
callq 0x3050
callq 0x42a0
movl $0x1, -0x4(%rbp)
jmp 0x427c
movq -0x60(%rbp), %rax
addq $0x4, %rax
movq %rax, -0x78(%rbp)
movq -0x78(%rbp), %rax
movq %rax, -0x1c8(%rbp)
movq -0x78(%rbp), %rdi
callq 0x3180
movq -0x1c8(%rbp), %rdi
movq %rax, %rsi
leaq -0x38(%rbp), %rdx
callq 0x42c0
cmpl $0x0, %eax
jne 0x3d6b
leaq 0x393d1(%rip), %rdi     # 0x3d124
movb $0x0, %al
callq 0x3050
callq 0x42a0
movl $0x1, -0x4(%rbp)
jmp 0x427c
movl $0x1, %eax
cmpq -0x38(%rbp), %rax
ja 0x3d80
cmpq $0x10000, -0x38(%rbp)   # imm = 0x10000
jbe 0x3d9f
leaq 0x3939d(%rip), %rdi     # 0x3d124
movb $0x0, %al
callq 0x3050
callq 0x42a0
movl $0x1, -0x4(%rbp)
jmp 0x427c
jmp 0x3dc0
leaq 0x39392(%rip), %rdi     # 0x3d13a
movb $0x0, %al
callq 0x3050
callq 0x42a0
movl $0x1, -0x4(%rbp)
jmp 0x427c
jmp 0x3dc2
jmp 0x3de3
leaq 0x39383(%rip), %rdi     # 0x3d14e
movb $0x0, %al
callq 0x3050
callq 0x42a0
movl $0x1, -0x4(%rbp)
jmp 0x427c
jmp 0x3de5
movl -0x58(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x58(%rbp)
jmp 0x387d
cmpl $-0x1, -0x14(%rbp)
jne 0x3e00
movl $0x1, -0x14(%rbp)
cmpq $-0x1, -0x20(%rbp)
jne 0x3e0f
movq $0x1000, -0x20(%rbp)    # imm = 0x1000
cmpq $0x1000, -0x20(%rbp)    # imm = 0x1000
jne 0x3e20
movl $0x1, -0x24(%rbp)
cmpq $-0x1, -0x30(%rbp)
jne 0x3e2f
movq $0x6, -0x30(%rbp)
cmpq $-0x1, -0x38(%rbp)
jne 0x3e3e
movq $0x8, -0x38(%rbp)
cmpl $-0x1, -0x28(%rbp)
jne 0x3e4b
movl $0x0, -0x28(%rbp)
cmpl $0x0, -0x28(%rbp)
je 0x3e73
leaq 0x39309(%rip), %rdi     # 0x3d161
movb $0x0, %al
callq 0x3050
cmpl $0x0, -0x54(%rbp)
jne 0x3e71
movl $0x0, -0x4(%rbp)
jmp 0x427c
jmp 0x3e73
cmpq $0x6, -0x30(%rbp)
jbe 0x3e88
leaq 0x39305(%rip), %rdi     # 0x3d186
movb $0x0, %al
callq 0x3050
cmpl $0x2, -0x54(%rbp)
je 0x3ead
leaq 0x391e5(%rip), %rdi     # 0x3d07a
movb $0x0, %al
callq 0x3050
callq 0x42a0
movl $0x1, -0x4(%rbp)
jmp 0x427c
movq -0x50(%rbp), %rax
movq %rax, -0x80(%rbp)
movq -0x48(%rbp), %rax
movq %rax, -0x88(%rbp)
leaq -0xe9(%rbp), %rdi
movq %rdi, -0x1d0(%rbp)
callq 0x35f0
movq -0x1d0(%rbp), %rdx
leaq 0x39318(%rip), %rsi     # 0x3d1f9
leaq -0xe8(%rbp), %rdi
callq 0x4630
jmp 0x3eef
movq -0x80(%rbp), %rdx
leaq -0xc8(%rbp), %rdi
leaq -0xe8(%rbp), %rsi
callq 0x45e0
jmp 0x3f08
leaq 0x392f1(%rip), %rdx     # 0x3d200
leaq -0xa8(%rbp), %rdi
leaq -0xc8(%rbp), %rsi
callq 0x45e0
jmp 0x3f24
leaq -0xa8(%rbp), %rdi
callq 0x3150
movq %rax, %rdi
callq 0x26e90
jmp 0x3f3a
leaq -0xa8(%rbp), %rdi
callq 0x3260
leaq -0xc8(%rbp), %rdi
callq 0x3260
leaq -0xe8(%rbp), %rdi
callq 0x3260
leaq -0xe9(%rbp), %rdi
callq 0x33d0
leaq -0x161(%rbp), %rdi
movq %rdi, -0x1d8(%rbp)
callq 0x35f0
movq -0x1d8(%rbp), %rdx
leaq 0x39278(%rip), %rsi     # 0x3d203
leaq -0x160(%rbp), %rdi
callq 0x4630
jmp 0x3f99
movq -0x88(%rbp), %rdx
leaq -0x140(%rbp), %rdi
leaq -0x160(%rbp), %rsi
callq 0x45e0
jmp 0x3fb5
leaq 0x39244(%rip), %rdx     # 0x3d200
leaq -0x120(%rbp), %rdi
leaq -0x140(%rbp), %rsi
callq 0x45e0
jmp 0x3fd1
leaq -0x120(%rbp), %rdi
callq 0x3150
movq %rax, %rdi
callq 0x26e90
jmp 0x3fe7
leaq -0x120(%rbp), %rdi
callq 0x3260
leaq -0x140(%rbp), %rdi
callq 0x3260
leaq -0x160(%rbp), %rdi
callq 0x3260
leaq -0x161(%rbp), %rdi
callq 0x33d0
callq 0x43f0
movsd %xmm0, -0x170(%rbp)
movl $0x0, -0x174(%rbp)
movq -0x80(%rbp), %rdi
movq -0x88(%rbp), %rsi
movq -0x38(%rbp), %rax
movl %eax, %edx
movq -0x30(%rbp), %rax
movl %eax, %ecx
cmpl $0x0, -0x14(%rbp)
setne %al
movq -0x20(%rbp), %r9
cmpl $0x0, -0x24(%rbp)
setne %r10b
movq %rsp, %r8
leaq -0x174(%rbp), %r11
movq %r11, 0x8(%r8)
movzbl %r10b, %r10d
andl $0x1, %r10d
movl %r10d, (%r8)
movzbl %al, %r8d
andl $0x1, %r8d
callq 0x4980
testb $0x1, %al
jne 0x41a6
leaq 0x3917d(%rip), %rdi     # 0x3d20a
movb $0x0, %al
callq 0x3050
movl $0x2, -0x4(%rbp)
jmp 0x427c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x4112
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x4106
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x40fa
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0xa8(%rbp), %rdi
callq 0x3260
leaq -0xc8(%rbp), %rdi
callq 0x3260
leaq -0xe8(%rbp), %rdi
callq 0x3260
leaq -0xe9(%rbp), %rdi
callq 0x33d0
jmp 0x4288
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x4195
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x4189
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x417d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0x120(%rbp), %rdi
callq 0x3260
leaq -0x140(%rbp), %rdi
callq 0x3260
leaq -0x160(%rbp), %rdi
callq 0x3260
leaq -0x161(%rbp), %rdi
callq 0x33d0
jmp 0x4288
leaq 0x39078(%rip), %rdi     # 0x3d225
movb $0x0, %al
callq 0x3050
movq -0x88(%rbp), %rdi
leaq -0x198(%rbp), %rsi
callq 0xca60
testb $0x1, %al
jne 0x41e5
leaq 0x3906a(%rip), %rdi     # 0x3d23c
movb $0x0, %al
callq 0x3050
movl $0x3, -0x4(%rbp)
jmp 0x427c
movl -0x194(%rbp), %esi
movq -0x180(%rbp), %rdx
movq -0x188(%rbp), %rcx
leaq 0x39064(%rip), %rdi     # 0x3d264
movb $0x0, %al
callq 0x3050
movq -0x80(%rbp), %rdi
movq -0x88(%rbp), %rsi
movl -0x174(%rbp), %edx
xorl %eax, %eax
movl %eax, %ecx
callq 0xc6c0
testb $0x1, %al
jne 0x423c
leaq 0x3907e(%rip), %rdi     # 0x3d2aa
movb $0x0, %al
callq 0x3050
movl $0x4, -0x4(%rbp)
jmp 0x427c
leaq 0x39090(%rip), %rdi     # 0x3d2d3
movb $0x0, %al
callq 0x3050
callq 0x43f0
movsd %xmm0, -0x1a0(%rbp)
movsd -0x1a0(%rbp), %xmm0
subsd -0x170(%rbp), %xmm0
leaq 0x39087(%rip), %rdi     # 0x3d2f5
movb $0x1, %al
callq 0x3050
movl $0x0, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x1f0, %rsp            # imm = 0x1F0
popq %rbp
retq
movq -0xf8(%rbp), %rdi
callq 0x35e0
nopw %cs:(%rax,%rax)