// File: CoinXu[P]reviser-compiler/src/compiler/typescript/typescript_struct.cpp
// Function: reviser::typescript::TypeScriptStructProperty::Generate[abi:cxx11]()
string TypeScriptStructProperty::Generate() {
    string code_decorater;
    for (Decorater* d: node->decoraters) {
      TypeScriptDecorater decorater(d, parent);
      code_decorater += decorater.Generate();
    }

    vector<string> revisers;
    vector<ReviserSyntaxDefinition> defs = TypeScriptCommon::FindReviserSyntaxDefinitionByDataType(node->declare->type);

    // 如果是数组类型数据，将translator放在TypeArray装饰器中
    if (node->declare->array_type) {
      switch (node->declare->type) {
        case TYPE_BOOL:
        case TYPE_FLOAT:
        case TYPE_DOUBLE:
        case TYPE_INT32:
        case TYPE_INT64:
        case TYPE_UINT32:
        case TYPE_UINT64:
        case TYPE_STRING: {
          vector<string> args;
          for (ReviserSyntaxDefinition d : defs) {
            args.push_back(TypeScriptCommon::DecoraterDefinition(d));
          }
          vector<DecoraterArg> v({{ ARG_ARRAY, args }});
          revisers.push_back(TypeScriptCommon::DecoraterDefinition(ReviserMethodMap[REVISER_TYPE_ARRAY], &v));
          break;
        }

        case TYPE_ENUM:
          break;

        case TYPE_STRUCT: {
          vector<DecoraterArg> v({{ ARG_STRING, vector<string>({ node->declare->type_id->text }) }});
          revisers.push_back(TypeScriptCommon::DecoraterDefinition(ReviserMethodMap[REVISER_TYPE_ARRAY_STRUCT], &v));
          break;
        }

        default:
          break;
      }
    } else {
      switch (node->declare->type) {
        case TYPE_BOOL:
        case TYPE_FLOAT:
        case TYPE_DOUBLE:
        case TYPE_INT32:
        case TYPE_INT64:
        case TYPE_UINT32:
        case TYPE_UINT64:
        case TYPE_STRING: {
          for (int i = defs.size() - 1; i >= 0; i--) {
            revisers.push_back(TypeScriptCommon::DecoraterDefinition(defs.at(i)));
          }
          break;
        }

        case TYPE_ENUM:
          break;

        case TYPE_STRUCT: {
          vector<DecoraterArg> v({{ ARG_STRING, vector<string>({ node->declare->type_id->text }) }});
          revisers.push_back(TypeScriptCommon::DecoraterDefinition(ReviserMethodMap[REVISER_TYPE_STRUCT], &v));
          break;
        }

        default:
          break;
      }
    }

    string indent = TypeScriptCommon::Indent(node->level + 1);
    return (
        revisers.size() > 0
        ? indent + ("@" + TypeScriptCommon::JoinVector(revisers, "\n" + indent + "@") + "\n")
        : ""
      )
      + code_decorater + indent + TypeScriptDeclare(node->declare).Generate() + ";";
  }

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x820, %rsp            # imm = 0x820
movq %rdi, -0x668(%rbp)
movq %rdi, %rax
movq %rax, -0x660(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x658(%rbp)
leaq -0x30(%rbp), %rdi
callq 0x99650
movq -0x658(%rbp), %rax
movq 0x20(%rax), %rax
addq $0x30, %rax
movq %rax, -0x38(%rbp)
movq -0x38(%rbp), %rdi
callq 0xab090
movq %rax, -0x40(%rbp)
movq -0x38(%rbp), %rdi
callq 0xab0c0
movq %rax, -0x48(%rbp)
leaq -0x40(%rbp), %rdi
leaq -0x48(%rbp), %rsi
callq 0xab0f0
testb $0x1, %al
jne 0xfc53b
jmp 0xfc5fd
leaq -0x40(%rbp), %rdi
callq 0xab130
movq %rax, %rcx
movq -0x658(%rbp), %rax
movq (%rcx), %rcx
movq %rcx, -0x50(%rbp)
movq -0x50(%rbp), %rsi
movq 0x18(%rax), %rdx
leaq -0x78(%rbp), %rdi
callq 0xfe230
jmp 0xfc568
leaq -0xa8(%rbp), %rdi
leaq -0x78(%rbp), %rsi
callq 0xfda30
jmp 0xfc57a
leaq -0x30(%rbp), %rdi
leaq -0xa8(%rbp), %rsi
callq 0x995d0
jmp 0xfc58c
leaq -0xa8(%rbp), %rdi
callq 0x992c0
leaq -0x78(%rbp), %rdi
callq 0xfe290
leaq -0x40(%rbp), %rdi
callq 0xab1c0
jmp 0xfc525
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
jmp 0xfd9a9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
jmp 0xfc5ef
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
leaq -0xa8(%rbp), %rdi
callq 0x992c0
leaq -0x78(%rbp), %rdi
callq 0xfe290
jmp 0xfd9a9
leaq -0xc0(%rbp), %rdi
callq 0xa0c50
movq -0x658(%rbp), %rax
movq 0x20(%rax), %rax
movq 0x48(%rax), %rax
movl (%rax), %esi
leaq -0xd8(%rbp), %rdi
callq 0xfb910
jmp 0xfc628
movq -0x658(%rbp), %rax
movq 0x20(%rax), %rax
movq 0x48(%rax), %rax
testb $0x1, 0x4(%rax)
je 0xfcec7
movq -0x658(%rbp), %rax
movq 0x20(%rax), %rax
movq 0x48(%rax), %rax
movl (%rax), %eax
movl %eax, -0x66c(%rbp)
subl $0x8, %eax
jb 0xfc698
jmp 0xfc65f
movl -0x66c(%rbp), %eax
subl $0x9, %eax
je 0xfca96
jmp 0xfc670
movl -0x66c(%rbp), %eax
subl $0xa, %eax
je 0xfca9b
jmp 0xfcec0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
jmp 0xfd99d
leaq -0xf0(%rbp), %rdi
callq 0xa0c50
leaq -0xd8(%rbp), %rax
movq %rax, -0xf8(%rbp)
movq -0xf8(%rbp), %rdi
callq 0xef060
movq %rax, -0x100(%rbp)
movq -0xf8(%rbp), %rdi
callq 0xef090
movq %rax, -0x108(%rbp)
leaq -0x100(%rbp), %rdi
leaq -0x108(%rbp), %rsi
callq 0xef0c0
testb $0x1, %al
jne 0xfc6f4
jmp 0xfc7f7
leaq -0x100(%rbp), %rdi
callq 0xef100
movq %rax, %rsi
leaq -0x148(%rbp), %rdi
callq 0xb99d0
jmp 0xfc711
leaq -0x1a8(%rbp), %rdi
leaq -0x148(%rbp), %rsi
callq 0xb99d0
jmp 0xfc726
xorl %eax, %eax
movl %eax, %edx
leaq -0x168(%rbp), %rdi
leaq -0x1a8(%rbp), %rsi
callq 0xfe2a0
jmp 0xfc73f
leaq -0xf0(%rbp), %rdi
leaq -0x168(%rbp), %rsi
callq 0xa1220
jmp 0xfc754
leaq -0x168(%rbp), %rdi
callq 0x992c0
leaq -0x1a8(%rbp), %rdi
callq 0xb97b0
leaq -0x148(%rbp), %rdi
callq 0xb97b0
leaq -0x100(%rbp), %rdi
callq 0xef290
jmp 0xfc6d8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
jmp 0xfca85
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
jmp 0xfc7e6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
jmp 0xfc7da
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
leaq -0x168(%rbp), %rdi
callq 0x992c0
leaq -0x1a8(%rbp), %rdi
callq 0xb97b0
leaq -0x148(%rbp), %rdi
callq 0xb97b0
jmp 0xfca85
leaq -0x1f0(%rbp), %rax
movq %rax, -0x1f8(%rbp)
movl $0x3, -0x1f0(%rbp)
leaq -0x1e8(%rbp), %rdi
leaq -0xf0(%rbp), %rsi
callq 0xbd9b0
jmp 0xfc824
leaq -0x1f0(%rbp), %rax
movq %rax, -0x1d0(%rbp)
movq $0x1, -0x1c8(%rbp)
leaq -0x1f9(%rbp), %rdi
movq %rdi, -0x678(%rbp)
callq 0xf6740
movq -0x678(%rbp), %rcx
movq -0x1d0(%rbp), %rsi
movq -0x1c8(%rbp), %rdx
leaq -0x1c0(%rbp), %rdi
callq 0xf6760
jmp 0xfc873
leaq -0x1f9(%rbp), %rdi
callq 0xf67e0
leaq -0x1f0(%rbp), %rax
movq %rax, -0x688(%rbp)
addq $0x20, %rax
movq %rax, -0x680(%rbp)
movq -0x680(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x690(%rbp)
callq 0xf6720
movq -0x688(%rbp), %rcx
movq -0x690(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x680(%rbp)
jne 0xfc898
movl $0x1, -0x264(%rbp)
leaq 0x34366(%rip), %rdi     # 0x130c40
leaq -0x264(%rbp), %rsi
callq 0xeed70
movq %rax, -0x698(%rbp)
jmp 0xfc8ef
movq -0x698(%rbp), %rsi
leaq -0x260(%rbp), %rdi
callq 0xb99d0
jmp 0xfc904
leaq -0x220(%rbp), %rdi
leaq -0x260(%rbp), %rsi
leaq -0x1c0(%rbp), %rdx
callq 0xfe2a0
jmp 0xfc920
leaq -0xc0(%rbp), %rdi
leaq -0x220(%rbp), %rsi
callq 0xa1220
jmp 0xfc935
leaq -0x220(%rbp), %rdi
callq 0x992c0
leaq -0x260(%rbp), %rdi
callq 0xb97b0
leaq -0x1c0(%rbp), %rdi
callq 0xf6800
leaq -0xf0(%rbp), %rdi
callq 0xa0c70
jmp 0xfcec2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
movq -0x1f8(%rbp), %rax
leaq -0x1f0(%rbp), %rcx
cmpq %rax, %rcx
movq %rax, -0x6a0(%rbp)
je 0xfc9c4
movq -0x6a0(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x6a8(%rbp)
callq 0xf6720
movq -0x6a8(%rbp), %rax
leaq -0x1f0(%rbp), %rcx
cmpq %rcx, %rax
movq %rax, -0x6a0(%rbp)
jne 0xfc993
jmp 0xfca85
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
leaq -0x1f9(%rbp), %rdi
callq 0xf67e0
leaq -0x1f0(%rbp), %rax
movq %rax, -0x6b8(%rbp)
addq $0x20, %rax
movq %rax, -0x6b0(%rbp)
movq -0x6b0(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x6c0(%rbp)
callq 0xf6720
movq -0x6b8(%rbp), %rcx
movq -0x6c0(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x6b0(%rbp)
jne 0xfc9fd
jmp 0xfca85
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
jmp 0xfca79
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
jmp 0xfca6d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
leaq -0x220(%rbp), %rdi
callq 0x992c0
leaq -0x260(%rbp), %rdi
callq 0xb97b0
leaq -0x1c0(%rbp), %rdi
callq 0xf6800
leaq -0xf0(%rbp), %rdi
callq 0xa0c70
jmp 0xfd991
jmp 0xfcec2
movq -0x658(%rbp), %rax
movb $0x1, -0x2f2(%rbp)
leaq -0x2b0(%rbp), %rcx
movq %rcx, -0x2b8(%rbp)
movl $0x1, -0x2b0(%rbp)
leaq -0x2a8(%rbp), %rcx
movq %rcx, -0x6c8(%rbp)
leaq -0x2e8(%rbp), %rdi
movq %rdi, -0x2f0(%rbp)
movq 0x20(%rax), %rax
movq 0x48(%rax), %rax
movq 0x10(%rax), %rsi
addq $0x8, %rsi
callq 0x991c0
jmp 0xfcaf4
leaq -0x2e8(%rbp), %rax
movq %rax, -0x2c8(%rbp)
movq $0x1, -0x2c0(%rbp)
leaq -0x2f1(%rbp), %rdi
movq %rdi, -0x6d0(%rbp)
callq 0xa1680
movq -0x6c8(%rbp), %rdi
movq -0x6d0(%rbp), %rcx
movq -0x2c8(%rbp), %rsi
movq -0x2c0(%rbp), %rdx
callq 0xf6860
jmp 0xfcb43
movb $0x0, -0x2f2(%rbp)
leaq -0x2b0(%rbp), %rax
movq %rax, -0x290(%rbp)
movq $0x1, -0x288(%rbp)
leaq -0x2f3(%rbp), %rdi
movq %rdi, -0x6d8(%rbp)
callq 0xf6740
movq -0x6d8(%rbp), %rcx
movq -0x290(%rbp), %rsi
movq -0x288(%rbp), %rdx
leaq -0x280(%rbp), %rdi
callq 0xf6760
jmp 0xfcb99
leaq -0x2f3(%rbp), %rdi
callq 0xf67e0
leaq -0x2b0(%rbp), %rax
movq %rax, -0x6e8(%rbp)
addq $0x20, %rax
movq %rax, -0x6e0(%rbp)
movq -0x6e0(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x6f0(%rbp)
callq 0xf6720
movq -0x6e8(%rbp), %rcx
movq -0x6f0(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x6e0(%rbp)
jne 0xfcbbe
leaq -0x2f1(%rbp), %rdi
callq 0xa1e40
leaq -0x2e8(%rbp), %rax
movq %rax, -0x700(%rbp)
addq $0x20, %rax
movq %rax, -0x6f8(%rbp)
movq -0x6f8(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x708(%rbp)
callq 0x992c0
movq -0x700(%rbp), %rcx
movq -0x708(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x6f8(%rbp)
jne 0xfcc14
movl $0x0, -0x35c(%rbp)
leaq 0x33fea(%rip), %rdi     # 0x130c40
leaq -0x35c(%rbp), %rsi
callq 0xeed70
movq %rax, -0x710(%rbp)
jmp 0xfcc6b
movq -0x710(%rbp), %rsi
leaq -0x358(%rbp), %rdi
callq 0xb99d0
jmp 0xfcc80
leaq -0x318(%rbp), %rdi
leaq -0x358(%rbp), %rsi
leaq -0x280(%rbp), %rdx
callq 0xfe2a0
jmp 0xfcc9c
leaq -0xc0(%rbp), %rdi
leaq -0x318(%rbp), %rsi
callq 0xa1220
jmp 0xfccb1
leaq -0x318(%rbp), %rdi
callq 0x992c0
leaq -0x358(%rbp), %rdi
callq 0xb97b0
leaq -0x280(%rbp), %rdi
callq 0xf6800
jmp 0xfcec2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
movq -0x2f0(%rbp), %rax
leaq -0x2e8(%rbp), %rcx
cmpq %rax, %rcx
movq %rax, -0x718(%rbp)
je 0xfcd34
movq -0x718(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x720(%rbp)
callq 0x992c0
movq -0x720(%rbp), %rax
leaq -0x2e8(%rbp), %rcx
cmpq %rcx, %rax
movq %rax, -0x718(%rbp)
jne 0xfcd03
jmp 0xfce09
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
jmp 0xfcdb1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
leaq -0x2f3(%rbp), %rdi
callq 0xf67e0
leaq -0x2b0(%rbp), %rax
movq %rax, -0x730(%rbp)
addq $0x20, %rax
movq %rax, -0x728(%rbp)
movq -0x728(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x738(%rbp)
callq 0xf6720
movq -0x730(%rbp), %rcx
movq -0x738(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x728(%rbp)
jne 0xfcd7e
jmp 0xfcdb1
leaq -0x2f1(%rbp), %rdi
callq 0xa1e40
leaq -0x2e8(%rbp), %rax
movq %rax, -0x748(%rbp)
addq $0x20, %rax
movq %rax, -0x740(%rbp)
movq -0x740(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x750(%rbp)
callq 0x992c0
movq -0x748(%rbp), %rcx
movq -0x750(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x740(%rbp)
jne 0xfcdd6
jmp 0xfce09
testb $0x1, -0x2f2(%rbp)
jne 0xfce14
jmp 0xfce61
movq -0x2b8(%rbp), %rax
leaq -0x2b0(%rbp), %rcx
cmpq %rax, %rcx
movq %rax, -0x758(%rbp)
je 0xfce5f
movq -0x758(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x760(%rbp)
callq 0xf6720
movq -0x760(%rbp), %rax
leaq -0x2b0(%rbp), %rcx
cmpq %rcx, %rax
movq %rax, -0x758(%rbp)
jne 0xfce2e
jmp 0xfce61
jmp 0xfd991
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
jmp 0xfceaf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
jmp 0xfcea3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
leaq -0x318(%rbp), %rdi
callq 0x992c0
leaq -0x358(%rbp), %rdi
callq 0xb97b0
leaq -0x280(%rbp), %rdi
callq 0xf6800
jmp 0xfd991
jmp 0xfcec2
jmp 0xfd43c
movq -0x658(%rbp), %rax
movq 0x20(%rax), %rax
movq 0x48(%rax), %rax
movl (%rax), %eax
movl %eax, -0x764(%rbp)
subl $0x8, %eax
jb 0xfcf0a
jmp 0xfcee5
movl -0x764(%rbp), %eax
subl $0x9, %eax
je 0xfd00e
jmp 0xfcef6
movl -0x764(%rbp), %eax
subl $0xa, %eax
je 0xfd013
jmp 0xfd438
leaq -0xd8(%rbp), %rdi
callq 0xf0ef0
subq $0x1, %rax
movl %eax, -0x360(%rbp)
cmpl $0x0, -0x360(%rbp)
jl 0xfd009
movslq -0x360(%rbp), %rsi
leaq -0xd8(%rbp), %rdi
callq 0xf68e0
movq %rax, -0x770(%rbp)
jmp 0xfcf49
movq -0x770(%rbp), %rsi
leaq -0x3c0(%rbp), %rdi
callq 0xb99d0
jmp 0xfcf5e
xorl %eax, %eax
movl %eax, %edx
leaq -0x380(%rbp), %rdi
leaq -0x3c0(%rbp), %rsi
callq 0xfe2a0
jmp 0xfcf77
leaq -0xc0(%rbp), %rdi
leaq -0x380(%rbp), %rsi
callq 0xa1220
jmp 0xfcf8c
leaq -0x380(%rbp), %rdi
callq 0x992c0
leaq -0x3c0(%rbp), %rdi
callq 0xb97b0
movl -0x360(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x360(%rbp)
jmp 0xfcf20
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
jmp 0xfd991
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
jmp 0xfcff8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
leaq -0x380(%rbp), %rdi
callq 0x992c0
leaq -0x3c0(%rbp), %rdi
callq 0xb97b0
jmp 0xfd991
jmp 0xfd43a
jmp 0xfd43a
movq -0x658(%rbp), %rax
movb $0x1, -0x44a(%rbp)
leaq -0x408(%rbp), %rcx
movq %rcx, -0x410(%rbp)
movl $0x1, -0x408(%rbp)
leaq -0x400(%rbp), %rcx
movq %rcx, -0x778(%rbp)
leaq -0x440(%rbp), %rdi
movq %rdi, -0x448(%rbp)
movq 0x20(%rax), %rax
movq 0x48(%rax), %rax
movq 0x10(%rax), %rsi
addq $0x8, %rsi
callq 0x991c0
jmp 0xfd06c
leaq -0x440(%rbp), %rax
movq %rax, -0x420(%rbp)
movq $0x1, -0x418(%rbp)
leaq -0x449(%rbp), %rdi
movq %rdi, -0x780(%rbp)
callq 0xa1680
movq -0x778(%rbp), %rdi
movq -0x780(%rbp), %rcx
movq -0x420(%rbp), %rsi
movq -0x418(%rbp), %rdx
callq 0xf6860
jmp 0xfd0bb
movb $0x0, -0x44a(%rbp)
leaq -0x408(%rbp), %rax
movq %rax, -0x3e8(%rbp)
movq $0x1, -0x3e0(%rbp)
leaq -0x44b(%rbp), %rdi
movq %rdi, -0x788(%rbp)
callq 0xf6740
movq -0x788(%rbp), %rcx
movq -0x3e8(%rbp), %rsi
movq -0x3e0(%rbp), %rdx
leaq -0x3d8(%rbp), %rdi
callq 0xf6760
jmp 0xfd111
leaq -0x44b(%rbp), %rdi
callq 0xf67e0
leaq -0x408(%rbp), %rax
movq %rax, -0x798(%rbp)
addq $0x20, %rax
movq %rax, -0x790(%rbp)
movq -0x790(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x7a0(%rbp)
callq 0xf6720
movq -0x798(%rbp), %rcx
movq -0x7a0(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x790(%rbp)
jne 0xfd136
leaq -0x449(%rbp), %rdi
callq 0xa1e40
leaq -0x440(%rbp), %rax
movq %rax, -0x7b0(%rbp)
addq $0x20, %rax
movq %rax, -0x7a8(%rbp)
movq -0x7a8(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x7b8(%rbp)
callq 0x992c0
movq -0x7b0(%rbp), %rcx
movq -0x7b8(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x7a8(%rbp)
jne 0xfd18c
movl $0x2, -0x4b4(%rbp)
leaq 0x33a72(%rip), %rdi     # 0x130c40
leaq -0x4b4(%rbp), %rsi
callq 0xeed70
movq %rax, -0x7c0(%rbp)
jmp 0xfd1e3
movq -0x7c0(%rbp), %rsi
leaq -0x4b0(%rbp), %rdi
callq 0xb99d0
jmp 0xfd1f8
leaq -0x470(%rbp), %rdi
leaq -0x4b0(%rbp), %rsi
leaq -0x3d8(%rbp), %rdx
callq 0xfe2a0
jmp 0xfd214
leaq -0xc0(%rbp), %rdi
leaq -0x470(%rbp), %rsi
callq 0xa1220
jmp 0xfd229
leaq -0x470(%rbp), %rdi
callq 0x992c0
leaq -0x4b0(%rbp), %rdi
callq 0xb97b0
leaq -0x3d8(%rbp), %rdi
callq 0xf6800
jmp 0xfd43a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
movq -0x448(%rbp), %rax
leaq -0x440(%rbp), %rcx
cmpq %rax, %rcx
movq %rax, -0x7c8(%rbp)
je 0xfd2ac
movq -0x7c8(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x7d0(%rbp)
callq 0x992c0
movq -0x7d0(%rbp), %rax
leaq -0x440(%rbp), %rcx
cmpq %rcx, %rax
movq %rax, -0x7c8(%rbp)
jne 0xfd27b
jmp 0xfd381
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
jmp 0xfd329
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
leaq -0x44b(%rbp), %rdi
callq 0xf67e0
leaq -0x408(%rbp), %rax
movq %rax, -0x7e0(%rbp)
addq $0x20, %rax
movq %rax, -0x7d8(%rbp)
movq -0x7d8(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x7e8(%rbp)
callq 0xf6720
movq -0x7e0(%rbp), %rcx
movq -0x7e8(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x7d8(%rbp)
jne 0xfd2f6
jmp 0xfd329
leaq -0x449(%rbp), %rdi
callq 0xa1e40
leaq -0x440(%rbp), %rax
movq %rax, -0x7f8(%rbp)
addq $0x20, %rax
movq %rax, -0x7f0(%rbp)
movq -0x7f0(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x800(%rbp)
callq 0x992c0
movq -0x7f8(%rbp), %rcx
movq -0x800(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x7f0(%rbp)
jne 0xfd34e
jmp 0xfd381
testb $0x1, -0x44a(%rbp)
jne 0xfd38c
jmp 0xfd3d9
movq -0x410(%rbp), %rax
leaq -0x408(%rbp), %rcx
cmpq %rax, %rcx
movq %rax, -0x808(%rbp)
je 0xfd3d7
movq -0x808(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x810(%rbp)
callq 0xf6720
movq -0x810(%rbp), %rax
leaq -0x408(%rbp), %rcx
cmpq %rcx, %rax
movq %rax, -0x808(%rbp)
jne 0xfd3a6
jmp 0xfd3d9
jmp 0xfd991
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
jmp 0xfd427
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
jmp 0xfd41b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
leaq -0x470(%rbp), %rdi
callq 0x992c0
leaq -0x4b0(%rbp), %rdi
callq 0xb97b0
leaq -0x3d8(%rbp), %rdi
callq 0xf6800
jmp 0xfd991
jmp 0xfd43a
jmp 0xfd43c
movq -0x658(%rbp), %rax
movq 0x20(%rax), %rax
movl 0x8(%rax), %esi
incl %esi
leaq -0x4d8(%rbp), %rdi
callq 0xf8390
jmp 0xfd45a
leaq -0xc0(%rbp), %rdi
callq 0xa0ef0
movb $0x0, -0x5d1(%rbp)
movb $0x0, -0x619(%rbp)
movb $0x0, -0x61a(%rbp)
movb $0x0, -0x61b(%rbp)
movb $0x0, -0x61c(%rbp)
movb $0x0, -0x61d(%rbp)
movb $0x0, -0x61f(%rbp)
cmpq $0x0, %rax
jbe 0xfd58a
leaq -0x5d0(%rbp), %rdi
leaq -0xc0(%rbp), %rsi
callq 0xbd9b0
jmp 0xfd4b6
movb $0x1, -0x5d1(%rbp)
leaq 0x36ea(%rip), %rsi      # 0x100bae
leaq -0x618(%rbp), %rdi
leaq -0x4d8(%rbp), %rdx
callq 0xa6e30
jmp 0xfd4d9
movb $0x1, -0x619(%rbp)
leaq 0x372d(%rip), %rdx      # 0x100c14
leaq -0x5f8(%rbp), %rdi
leaq -0x618(%rbp), %rsi
callq 0xa10c0
jmp 0xfd4fc
movb $0x1, -0x61a(%rbp)
leaq -0x5b8(%rbp), %rdi
leaq -0x5d0(%rbp), %rsi
leaq -0x5f8(%rbp), %rdx
callq 0xf95b0
jmp 0xfd51f
movb $0x1, -0x61b(%rbp)
leaq 0x36e7(%rip), %rsi      # 0x100c14
leaq -0x598(%rbp), %rdi
leaq -0x5b8(%rbp), %rdx
callq 0xa6e30
jmp 0xfd542
movb $0x1, -0x61c(%rbp)
leaq 0x365e(%rip), %rdx      # 0x100bae
leaq -0x578(%rbp), %rdi
leaq -0x598(%rbp), %rsi
callq 0xa10c0
jmp 0xfd565
movb $0x1, -0x61d(%rbp)
leaq -0x558(%rbp), %rdi
leaq -0x4d8(%rbp), %rsi
leaq -0x578(%rbp), %rdx
callq 0xeba70
jmp 0xfd588
jmp 0xfd5c2
leaq -0x61e(%rbp), %rdi
movq %rdi, -0x818(%rbp)
callq 0x99850
movq -0x818(%rbp), %rdx
movb $0x1, -0x61f(%rbp)
leaq 0x35fd(%rip), %rsi      # 0x100baf
leaq -0x558(%rbp), %rdi
callq 0x99640
jmp 0xfd5c0
jmp 0xfd5c2
leaq -0x538(%rbp), %rdi
leaq -0x558(%rbp), %rsi
leaq -0x30(%rbp), %rdx
callq 0xa1070
jmp 0xfd5db
leaq -0x518(%rbp), %rdi
leaq -0x538(%rbp), %rsi
leaq -0x4d8(%rbp), %rdx
callq 0xa1070
jmp 0xfd5f7
movq -0x658(%rbp), %rax
movq 0x20(%rax), %rax
movq 0x48(%rax), %rsi
leaq -0x650(%rbp), %rdi
callq 0xf9240
jmp 0xfd614
leaq -0x640(%rbp), %rdi
leaq -0x650(%rbp), %rsi
callq 0xf9280
jmp 0xfd629
leaq -0x4f8(%rbp), %rdi
leaq -0x518(%rbp), %rsi
leaq -0x640(%rbp), %rdx
callq 0xa6d60
jmp 0xfd645
movq -0x668(%rbp), %rdi
leaq 0x34c6(%rip), %rdx      # 0x100b19
leaq -0x4f8(%rbp), %rsi
callq 0xa10c0
jmp 0xfd661
leaq -0x4f8(%rbp), %rdi
callq 0x992c0
leaq -0x640(%rbp), %rdi
callq 0x992c0
leaq -0x650(%rbp), %rdi
callq 0xf9270
leaq -0x518(%rbp), %rdi
callq 0x992c0
leaq -0x538(%rbp), %rdi
callq 0x992c0
leaq -0x558(%rbp), %rdi
callq 0x992c0
testb $0x1, -0x61f(%rbp)
jne 0xfd6b4
jmp 0xfd6c0
leaq -0x61e(%rbp), %rdi
callq 0x994f0
testb $0x1, -0x61d(%rbp)
jne 0xfd6cb
jmp 0xfd6d7
leaq -0x578(%rbp), %rdi
callq 0x992c0
testb $0x1, -0x61c(%rbp)
jne 0xfd6e2
jmp 0xfd6ee
leaq -0x598(%rbp), %rdi
callq 0x992c0
testb $0x1, -0x61b(%rbp)
jne 0xfd6f9
jmp 0xfd705
leaq -0x5b8(%rbp), %rdi
callq 0x992c0
testb $0x1, -0x61a(%rbp)
jne 0xfd710
jmp 0xfd71c
leaq -0x5f8(%rbp), %rdi
callq 0x992c0
testb $0x1, -0x619(%rbp)
jne 0xfd727
jmp 0xfd733
leaq -0x618(%rbp), %rdi
callq 0x992c0
testb $0x1, -0x5d1(%rbp)
jne 0xfd73e
jmp 0xfd74a
leaq -0x5d0(%rbp), %rdi
callq 0xa0c70
leaq -0x4d8(%rbp), %rdi
callq 0x992c0
leaq -0xd8(%rbp), %rdi
callq 0xef2b0
leaq -0xc0(%rbp), %rdi
callq 0xa0c70
leaq -0x30(%rbp), %rdi
callq 0x992c0
movq -0x660(%rbp), %rax
addq $0x820, %rsp            # imm = 0x820
popq %rbp
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
jmp 0xfd985
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
jmp 0xfd96c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
jmp 0xfd953
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
jmp 0xfd93a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
jmp 0xfd921
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
jmp 0xfd908
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
jmp 0xfd8ef
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
jmp 0xfd8d6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
jmp 0xfd8ca
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
jmp 0xfd8be
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
jmp 0xfd8b2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
jmp 0xfd8a6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
jmp 0xfd89a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
leaq -0x4f8(%rbp), %rdi
callq 0x992c0
leaq -0x640(%rbp), %rdi
callq 0x992c0
leaq -0x650(%rbp), %rdi
callq 0xf9270
leaq -0x518(%rbp), %rdi
callq 0x992c0
leaq -0x538(%rbp), %rdi
callq 0x992c0
leaq -0x558(%rbp), %rdi
callq 0x992c0
testb $0x1, -0x61f(%rbp)
jne 0xfd8e1
jmp 0xfd8ed
leaq -0x61e(%rbp), %rdi
callq 0x994f0
jmp 0xfd8ef
testb $0x1, -0x61d(%rbp)
jne 0xfd8fa
jmp 0xfd906
leaq -0x578(%rbp), %rdi
callq 0x992c0
jmp 0xfd908
testb $0x1, -0x61c(%rbp)
jne 0xfd913
jmp 0xfd91f
leaq -0x598(%rbp), %rdi
callq 0x992c0
jmp 0xfd921
testb $0x1, -0x61b(%rbp)
jne 0xfd92c
jmp 0xfd938
leaq -0x5b8(%rbp), %rdi
callq 0x992c0
jmp 0xfd93a
testb $0x1, -0x61a(%rbp)
jne 0xfd945
jmp 0xfd951
leaq -0x5f8(%rbp), %rdi
callq 0x992c0
jmp 0xfd953
testb $0x1, -0x619(%rbp)
jne 0xfd95e
jmp 0xfd96a
leaq -0x618(%rbp), %rdi
callq 0x992c0
jmp 0xfd96c
testb $0x1, -0x5d1(%rbp)
jne 0xfd977
jmp 0xfd983
leaq -0x5d0(%rbp), %rdi
callq 0xa0c70
jmp 0xfd985
leaq -0x4d8(%rbp), %rdi
callq 0x992c0
leaq -0xd8(%rbp), %rdi
callq 0xef2b0
leaq -0xc0(%rbp), %rdi
callq 0xa0c70
leaq -0x30(%rbp), %rdi
callq 0x992c0
movq -0x80(%rbp), %rdi
callq 0x99840
nopl (%rax,%rax)