// File: /workspace/github_c_makefile_star2_O0/sgsfak[P]c-ocgeo/src/ocgeo.c
// Function: parse_response_json
static int
parse_response_json(cJSON* json, ocgeo_response_t* response)
{
    cJSON* obj = NULL;

    memset(response, 0, sizeof(ocgeo_response_t));
    response->results = NULL;
    response->internal = json;

    obj = cJSON_GetObjectItemCaseSensitive(json, "status");
    assert(obj);
    response->status.code = JSON_OBJ_GET_INT(obj,"code");
    response->status.message = JSON_OBJ_GET_STR(obj,"message");

    /* Rate information, may not returned (e.g. for paying customers): */
    obj = cJSON_GetObjectItem(json, "rate");
    if (obj) {
        response->rateInfo.limit = JSON_OBJ_GET_INT(obj,"limit");
        response->rateInfo.remaining = JSON_OBJ_GET_INT(obj,"remaining");
        response->rateInfo.reset = JSON_OBJ_GET_INT(obj,"reset");
    }

    obj = cJSON_GetObjectItem(json, "total_results");
    assert(obj);
    response->total_results = JSON_INT_VALUE(obj);
    if (response->total_results <= 0) {
        return 0;
    }

    response->results = malloc(response->total_results * sizeof(ocgeo_result_t));
    obj = cJSON_GetObjectItemCaseSensitive(json, "results");
    assert(obj);

    cJSON* result_js;
    int k = 0;
    ocgeo_result_t proto = {0};
    for (result_js = obj->child; result_js!= NULL; result_js = result_js->next, k++) {
        ocgeo_result_t* result = response->results + k;
        *result = proto; /* initialize with 0/NULL values */
        result->internal = result_js;

        result->confidence = JSON_OBJ_GET_INT(result_js,"confidence");
        result->formatted = JSON_OBJ_GET_STR(result_js,"formatted");

        cJSON* bounds_js = cJSON_GetObjectItemCaseSensitive(result_js, "bounds");
        // assert(bounds_js);
        if (bounds_js) {
            result->bounds = calloc(1, sizeof(ocgeo_latlng_bounds_t));
            parse_latlng(cJSON_GetObjectItem(bounds_js, "northeast"), &result->bounds->northeast);
            parse_latlng(cJSON_GetObjectItem(bounds_js, "southwest"), &result->bounds->southwest);
        }

        cJSON* geom_js = cJSON_GetObjectItemCaseSensitive(result_js, "geometry");
        // assert(geom_js);
        if (geom_js)
            parse_latlng(geom_js, &result->geometry);
        else
            result->geometry = ocgeo_invalid_point;
        

        cJSON* comp_js = cJSON_GetObjectItemCaseSensitive(result_js, "components");
        assert(comp_js);
        result->ISO_alpha2 = JSON_OBJ_GET_STR(comp_js, "ISO_3166-1_alpha-2");
        result->ISO_alpha3 = JSON_OBJ_GET_STR(comp_js, "ISO_3166-1_alpha-3");
        result->type = JSON_OBJ_GET_STR(comp_js, "_type");
        result->category = JSON_OBJ_GET_STR(comp_js, "_category");
        result->city = JSON_OBJ_GET_STR(comp_js, "city");
        result->city_district = JSON_OBJ_GET_STR(comp_js, "city_district");
        result->continent = JSON_OBJ_GET_STR(comp_js, "continent");
        result->country = JSON_OBJ_GET_STR(comp_js, "country");
        result->country_code = JSON_OBJ_GET_STR(comp_js, "country_code");
        result->county = JSON_OBJ_GET_STR(comp_js, "county");
        result->house_number = JSON_OBJ_GET_STR(comp_js, "house_number");
        result->neighbourhood = JSON_OBJ_GET_STR(comp_js, "neighbourhood");
        result->political_union = JSON_OBJ_GET_STR(comp_js, "political_union");
        result->postcode = JSON_OBJ_GET_STR(comp_js, "postcode");
        result->road = JSON_OBJ_GET_STR(comp_js, "road");
        result->state = JSON_OBJ_GET_STR(comp_js, "state");
        result->state_district = JSON_OBJ_GET_STR(comp_js, "state_district");
        result->suburb = JSON_OBJ_GET_STR(comp_js, "suburb");

        /* Parse annotations, if exist */
        cJSON* ann_js = cJSON_GetObjectItemCaseSensitive(result_js, "annotations");
        if (ann_js) {
            result->callingcode = JSON_OBJ_GET_INT(ann_js,"callingcode");
            
            cJSON* tm_ann = cJSON_GetObjectItemCaseSensitive(ann_js, "timezone");
            if (tm_ann) {
                ocgeo_ann_timezone_t* timezone = calloc(1, sizeof(ocgeo_ann_timezone_t));
                timezone->name = JSON_OBJ_GET_STR(tm_ann, "name");
                timezone->short_name = JSON_OBJ_GET_STR(tm_ann, "short_name");
                timezone->offset_string = JSON_OBJ_GET_STR(tm_ann, "offset_string");
                timezone->offset_sec = JSON_OBJ_GET_INT(tm_ann,"offset_sec");
                timezone->now_in_dst = JSON_OBJ_GET_INT(tm_ann,"now_in_dst") == 1;
                result->timezone = timezone;
            }
            cJSON* ri_ann = cJSON_GetObjectItemCaseSensitive(ann_js, "roadinfo");
            if (ri_ann) {
                ocgeo_ann_roadinfo_t* roadinfo = calloc(1, sizeof(ocgeo_ann_roadinfo_t));
                roadinfo->drive_on = JSON_OBJ_GET_STR(ri_ann, "drive_on");
                roadinfo->speed_in = JSON_OBJ_GET_STR(ri_ann, "speed_in");
                roadinfo->road = JSON_OBJ_GET_STR(ri_ann, "road");
                roadinfo->road_type = JSON_OBJ_GET_STR(ri_ann, "road_type");
                roadinfo->surface = JSON_OBJ_GET_STR(ri_ann, "surface");
                result->roadinfo = roadinfo;
            }
            cJSON* cur_ann = cJSON_GetObjectItemCaseSensitive(ann_js, "currency");
            if (cur_ann) {
                ocgeo_ann_currency_t* currency = calloc(1, sizeof(ocgeo_ann_currency_t));
                currency->name = JSON_OBJ_GET_STR(cur_ann, "name");
                currency->iso_code = JSON_OBJ_GET_STR(cur_ann, "iso_code");
                currency->symbol = JSON_OBJ_GET_STR(cur_ann, "symbol");
                currency->decimal_mark = JSON_OBJ_GET_STR(cur_ann, "decimal_mark");
                currency->thousands_separator = JSON_OBJ_GET_STR(cur_ann, "thousands_separator");
                result->currency = currency;
            }
            result->geohash = JSON_OBJ_GET_STR(ann_js, "geohash");
            cJSON* w3w_ann = cJSON_GetObjectItemCaseSensitive(ann_js, "what3words");
            if (w3w_ann) {
                result->what3words = JSON_OBJ_GET_STR(w3w_ann, "words");
            }
        }
    }
    return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x180, %rsp            # imm = 0x180
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq $0x0, -0x20(%rbp)
movq -0x18(%rbp), %rdi
xorl %esi, %esi
movl $0x38, %edx
callq 0x10a0
movq -0x18(%rbp), %rax
movq $0x0, 0x28(%rax)
movq -0x10(%rbp), %rcx
movq -0x18(%rbp), %rax
movq %rcx, 0x30(%rax)
movq -0x10(%rbp), %rdi
leaq 0x89d1(%rip), %rsi      # 0xb5ef
callq 0x63f0
movq %rax, -0x20(%rbp)
cmpq $0x0, -0x20(%rbp)
je 0x2c30
jmp 0x2c4f
leaq 0x89bf(%rip), %rdi      # 0xb5f6
leaq 0x89bc(%rip), %rsi      # 0xb5fa
movl $0x56, %edx
leaq 0x89bc(%rip), %rcx      # 0xb606
callq 0x10c0
movq -0x20(%rbp), %rdi
leaq 0x864a(%rip), %rsi      # 0xb2a4
callq 0x63f0
movl 0x28(%rax), %ecx
movq -0x18(%rbp), %rax
movl %ecx, (%rax)
movq -0x20(%rbp), %rdi
leaq 0x89c8(%rip), %rsi      # 0xb63b
callq 0x63f0
movq %rax, %rdi
callq 0x52a0
movq %rax, %rcx
movq -0x18(%rbp), %rax
movq %rcx, 0x8(%rax)
movq -0x10(%rbp), %rdi
leaq 0x89ad(%rip), %rsi      # 0xb643
callq 0x62b0
movq %rax, -0x20(%rbp)
cmpq $0x0, -0x20(%rbp)
je 0x2cf4
movq -0x20(%rbp), %rdi
leaq 0x8997(%rip), %rsi      # 0xb648
callq 0x63f0
movl 0x28(%rax), %ecx
movq -0x18(%rbp), %rax
movl %ecx, 0x18(%rax)
movq -0x20(%rbp), %rdi
leaq 0x8983(%rip), %rsi      # 0xb64e
callq 0x63f0
movl 0x28(%rax), %ecx
movq -0x18(%rbp), %rax
movl %ecx, 0x1c(%rax)
movq -0x20(%rbp), %rdi
leaq 0x8973(%rip), %rsi      # 0xb658
callq 0x63f0
movl 0x28(%rax), %ecx
movq -0x18(%rbp), %rax
movl %ecx, 0x20(%rax)
movq -0x10(%rbp), %rdi
leaq 0x895f(%rip), %rsi      # 0xb65e
callq 0x62b0
movq %rax, -0x20(%rbp)
cmpq $0x0, -0x20(%rbp)
je 0x2d11
jmp 0x2d30
leaq 0x88de(%rip), %rdi      # 0xb5f6
leaq 0x88db(%rip), %rsi      # 0xb5fa
movl $0x63, %edx
leaq 0x88db(%rip), %rcx      # 0xb606
callq 0x10c0
cmpq $0x0, -0x20(%rbp)
je 0x2d45
movq -0x20(%rbp), %rdi
callq 0x7f80
cmpl $0x0, %eax
je 0x2d4f
xorl %eax, %eax
movl %eax, -0x17c(%rbp)
jmp 0x2d5c
movq -0x20(%rbp), %rax
movl 0x28(%rax), %eax
movl %eax, -0x17c(%rbp)
movl -0x17c(%rbp), %ecx
movq -0x18(%rbp), %rax
movl %ecx, 0x24(%rax)
movq -0x18(%rbp), %rax
cmpl $0x0, 0x24(%rax)
jg 0x2d7f
movl $0x0, -0x4(%rbp)
jmp 0x36ec
movq -0x18(%rbp), %rax
movslq 0x24(%rax), %rax
imulq $0xe8, %rax, %rdi
callq 0x1200
movq %rax, %rcx
movq -0x18(%rbp), %rax
movq %rcx, 0x28(%rax)
movq -0x10(%rbp), %rdi
leaq 0x83f7(%rip), %rsi      # 0xb1a0
callq 0x63f0
movq %rax, -0x20(%rbp)
cmpq $0x0, -0x20(%rbp)
je 0x2dbb
jmp 0x2dda
leaq 0x8834(%rip), %rdi      # 0xb5f6
leaq 0x8831(%rip), %rsi      # 0xb5fa
movl $0x6b, %edx
leaq 0x8831(%rip), %rcx      # 0xb606
callq 0x10c0
movl $0x0, -0x2c(%rbp)
leaq -0x118(%rbp), %rdi
xorl %esi, %esi
movl $0xe8, %edx
callq 0x10a0
movq -0x20(%rbp), %rax
movq 0x10(%rax), %rax
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
je 0x36e5
movq -0x18(%rbp), %rax
movq 0x28(%rax), %rax
movslq -0x2c(%rbp), %rcx
imulq $0xe8, %rcx, %rcx
addq %rcx, %rax
movq %rax, -0x120(%rbp)
movq -0x120(%rbp), %rdi
leaq -0x118(%rbp), %rsi
movl $0xe8, %edx
callq 0x10f0
movq -0x28(%rbp), %rcx
movq -0x120(%rbp), %rax
movq %rcx, 0xe0(%rax)
movq -0x28(%rbp), %rdi
leaq 0x880f(%rip), %rsi      # 0xb66c
callq 0x63f0
movl 0x28(%rax), %ecx
movq -0x120(%rbp), %rax
movl %ecx, 0xb0(%rax)
movq -0x28(%rbp), %rdi
leaq 0x87fa(%rip), %rsi      # 0xb677
callq 0x63f0
movq %rax, %rdi
callq 0x52a0
movq %rax, %rcx
movq -0x120(%rbp), %rax
movq %rcx, (%rax)
movq -0x28(%rbp), %rdi
leaq 0x8458(%rip), %rsi      # 0xb2fa
callq 0x63f0
movq %rax, -0x128(%rbp)
cmpq $0x0, -0x128(%rbp)
je 0x2f25
movl $0x1, %edi
movl $0x20, %esi
callq 0x10d0
movq %rax, %rcx
movq -0x120(%rbp), %rax
movq %rcx, 0x8(%rax)
movq -0x128(%rbp), %rdi
leaq 0x879e(%rip), %rsi      # 0xb681
callq 0x62b0
movq %rax, %rdi
movq -0x120(%rbp), %rax
movq 0x8(%rax), %rsi
callq 0x3700
movq -0x128(%rbp), %rdi
leaq 0x8782(%rip), %rsi      # 0xb68b
callq 0x62b0
movq %rax, %rdi
movq -0x120(%rbp), %rax
movq 0x8(%rax), %rsi
addq $0x10, %rsi
callq 0x3700
movq -0x28(%rbp), %rdi
leaq 0x8765(%rip), %rsi      # 0xb695
callq 0x63f0
movq %rax, -0x130(%rbp)
cmpq $0x0, -0x130(%rbp)
je 0x2f5f
movq -0x130(%rbp), %rdi
movq -0x120(%rbp), %rsi
addq $0x10, %rsi
callq 0x3700
jmp 0x2f7c
movq -0x120(%rbp), %rax
movq 0xc1a3(%rip), %rcx      # 0xf110
movq %rcx, 0x10(%rax)
movq 0xc1a0(%rip), %rcx      # 0xf118
movq %rcx, 0x18(%rax)
movq -0x28(%rbp), %rdi
leaq 0x8717(%rip), %rsi      # 0xb69e
callq 0x63f0
movq %rax, -0x138(%rbp)
cmpq $0x0, -0x138(%rbp)
je 0x2f9f
jmp 0x2fbe
leaq 0x8703(%rip), %rdi      # 0xb6a9
leaq 0x864d(%rip), %rsi      # 0xb5fa
movl $0x89, %edx
leaq 0x864d(%rip), %rcx      # 0xb606
callq 0x10c0
movq -0x138(%rbp), %rdi
leaq 0x86e5(%rip), %rsi      # 0xb6b1
callq 0x63f0
movq %rax, %rdi
callq 0x52a0
movq %rax, %rcx
movq -0x120(%rbp), %rax
movq %rcx, 0x20(%rax)
movq -0x138(%rbp), %rdi
leaq 0x86cf(%rip), %rsi      # 0xb6c4
callq 0x63f0
movq %rax, %rdi
callq 0x52a0
movq %rax, %rcx
movq -0x120(%rbp), %rax
movq %rcx, 0x28(%rax)
movq -0x138(%rbp), %rdi
leaq 0x87b4(%rip), %rsi      # 0xb7d2
callq 0x63f0
movq %rax, %rdi
callq 0x52a0
movq %rax, %rcx
movq -0x120(%rbp), %rax
movq %rcx, 0x30(%rax)
movq -0x138(%rbp), %rdi
leaq 0x8690(%rip), %rsi      # 0xb6d7
callq 0x63f0
movq %rax, %rdi
callq 0x52a0
movq %rax, %rcx
movq -0x120(%rbp), %rax
movq %rcx, 0x38(%rax)
movq -0x138(%rbp), %rdi
leaq 0x8671(%rip), %rsi      # 0xb6e1
callq 0x63f0
movq %rax, %rdi
callq 0x52a0
movq %rax, %rcx
movq -0x120(%rbp), %rax
movq %rcx, 0x40(%rax)
movq -0x138(%rbp), %rdi
leaq 0x864d(%rip), %rsi      # 0xb6e6
callq 0x63f0
movq %rax, %rdi
callq 0x52a0
movq %rax, %rcx
movq -0x120(%rbp), %rax
movq %rcx, 0x48(%rax)
movq -0x138(%rbp), %rdi
leaq 0x8632(%rip), %rsi      # 0xb6f4
callq 0x63f0
movq %rax, %rdi
callq 0x52a0
movq %rax, %rcx
movq -0x120(%rbp), %rax
movq %rcx, 0x50(%rax)
movq -0x138(%rbp), %rdi
leaq 0x8613(%rip), %rsi      # 0xb6fe
callq 0x63f0
movq %rax, %rdi
callq 0x52a0
movq %rax, %rcx
movq -0x120(%rbp), %rax
movq %rcx, 0x58(%rax)
movq -0x138(%rbp), %rdi
leaq 0x85f2(%rip), %rsi      # 0xb706
callq 0x63f0
movq %rax, %rdi
callq 0x52a0
movq %rax, %rcx
movq -0x120(%rbp), %rax
movq %rcx, 0x60(%rax)
movq -0x138(%rbp), %rdi
leaq 0x85d6(%rip), %rsi      # 0xb713
callq 0x63f0
movq %rax, %rdi
callq 0x52a0
movq %rax, %rcx
movq -0x120(%rbp), %rax
movq %rcx, 0x68(%rax)
movq -0x138(%rbp), %rdi
leaq 0x85b4(%rip), %rsi      # 0xb71a
callq 0x63f0
movq %rax, %rdi
callq 0x52a0
movq %rax, %rcx
movq -0x120(%rbp), %rax
movq %rcx, 0x70(%rax)
movq -0x138(%rbp), %rdi
leaq 0x8598(%rip), %rsi      # 0xb727
callq 0x63f0
movq %rax, %rdi
callq 0x52a0
movq %rax, %rcx
movq -0x120(%rbp), %rax
movq %rcx, 0x78(%rax)
movq -0x138(%rbp), %rdi
leaq 0x857d(%rip), %rsi      # 0xb735
callq 0x63f0
movq %rax, %rdi
callq 0x52a0
movq %rax, %rcx
movq -0x120(%rbp), %rax
movq %rcx, 0x80(%rax)
movq -0x138(%rbp), %rdi
leaq 0x8561(%rip), %rsi      # 0xb745
callq 0x63f0
movq %rax, %rdi
callq 0x52a0
movq %rax, %rcx
movq -0x120(%rbp), %rax
movq %rcx, 0x88(%rax)
movq -0x138(%rbp), %rdi
leaq 0x853e(%rip), %rsi      # 0xb74e
callq 0x63f0
movq %rax, %rdi
callq 0x52a0
movq %rax, %rcx
movq -0x120(%rbp), %rax
movq %rcx, 0x90(%rax)
movq -0x138(%rbp), %rdi
leaq 0x8517(%rip), %rsi      # 0xb753
callq 0x63f0
movq %rax, %rdi
callq 0x52a0
movq %rax, %rcx
movq -0x120(%rbp), %rax
movq %rcx, 0x98(%rax)
movq -0x138(%rbp), %rdi
leaq 0x84f1(%rip), %rsi      # 0xb759
callq 0x63f0
movq %rax, %rdi
callq 0x52a0
movq %rax, %rcx
movq -0x120(%rbp), %rax
movq %rcx, 0xa0(%rax)
movq -0x138(%rbp), %rdi
leaq 0x84d4(%rip), %rsi      # 0xb768
callq 0x63f0
movq %rax, %rdi
callq 0x52a0
movq %rax, %rcx
movq -0x120(%rbp), %rax
movq %rcx, 0xa8(%rax)
movq -0x28(%rbp), %rdi
leaq 0x84b2(%rip), %rsi      # 0xb76f
callq 0x63f0
movq %rax, -0x140(%rbp)
cmpq $0x0, -0x140(%rbp)
je 0x36ca
movq -0x140(%rbp), %rdi
leaq 0x7f92(%rip), %rsi      # 0xb277
callq 0x63f0
movl 0x28(%rax), %ecx
movq -0x120(%rbp), %rax
movl %ecx, 0xb4(%rax)
movq -0x140(%rbp), %rdi
leaq 0x8473(%rip), %rsi      # 0xb77b
callq 0x63f0
movq %rax, -0x148(%rbp)
cmpq $0x0, -0x148(%rbp)
je 0x340e
movl $0x1, %edi
movl $0x20, %esi
callq 0x10d0
movq %rax, -0x150(%rbp)
movq -0x148(%rbp), %rdi
leaq 0x8444(%rip), %rsi      # 0xb78a
callq 0x63f0
movq %rax, %rdi
callq 0x52a0
movq %rax, %rcx
movq -0x150(%rbp), %rax
movq %rcx, (%rax)
movq -0x148(%rbp), %rdi
leaq 0x8416(%rip), %rsi      # 0xb784
callq 0x63f0
movq %rax, %rdi
callq 0x52a0
movq %rax, %rcx
movq -0x150(%rbp), %rax
movq %rcx, 0x8(%rax)
movq -0x148(%rbp), %rdi
leaq 0x83f8(%rip), %rsi      # 0xb78f
callq 0x63f0
movq %rax, %rdi
callq 0x52a0
movq %rax, %rcx
movq -0x150(%rbp), %rax
movq %rcx, 0x10(%rax)
movq -0x148(%rbp), %rdi
leaq 0x83dd(%rip), %rsi      # 0xb79d
callq 0x63f0
movl 0x28(%rax), %ecx
movq -0x150(%rbp), %rax
movl %ecx, 0x18(%rax)
movq -0x148(%rbp), %rdi
leaq 0x83c8(%rip), %rsi      # 0xb7a8
callq 0x63f0
cmpl $0x1, 0x28(%rax)
sete %cl
movq -0x150(%rbp), %rax
andb $0x1, %cl
movb %cl, 0x1c(%rax)
movq -0x150(%rbp), %rcx
movq -0x120(%rbp), %rax
movq %rcx, 0xb8(%rax)
movq -0x140(%rbp), %rdi
leaq 0x8397(%rip), %rsi      # 0xb7b3
callq 0x63f0
movq %rax, -0x158(%rbp)
cmpq $0x0, -0x158(%rbp)
je 0x352d
movl $0x1, %edi
movl $0x28, %esi
callq 0x10d0
movq %rax, -0x160(%rbp)
movq -0x158(%rbp), %rdi
leaq 0x8362(%rip), %rsi      # 0xb7bc
callq 0x63f0
movq %rax, %rdi
callq 0x52a0
movq %rax, %rcx
movq -0x160(%rbp), %rax
movq %rcx, (%rax)
movq -0x158(%rbp), %rdi
leaq 0x8343(%rip), %rsi      # 0xb7c5
callq 0x63f0
movq %rax, %rdi
callq 0x52a0
movq %rax, %rcx
movq -0x160(%rbp), %rax
movq %rcx, 0x8(%rax)
movq -0x158(%rbp), %rdi
leaq 0x82a3(%rip), %rsi      # 0xb74e
callq 0x63f0
movq %rax, %rdi
callq 0x52a0
movq %rax, %rcx
movq -0x160(%rbp), %rax
movq %rcx, 0x10(%rax)
movq -0x158(%rbp), %rdi
leaq 0x82fa(%rip), %rsi      # 0xb7ce
callq 0x63f0
movq %rax, %rdi
callq 0x52a0
movq %rax, %rcx
movq -0x160(%rbp), %rax
movq %rcx, 0x18(%rax)
movq -0x158(%rbp), %rdi
leaq 0x82db(%rip), %rsi      # 0xb7d8
callq 0x63f0
movq %rax, %rdi
callq 0x52a0
movq %rax, %rcx
movq -0x160(%rbp), %rax
movq %rcx, 0x20(%rax)
movq -0x160(%rbp), %rcx
movq -0x120(%rbp), %rax
movq %rcx, 0xc0(%rax)
movq -0x140(%rbp), %rdi
leaq 0x82a5(%rip), %rsi      # 0xb7e0
callq 0x63f0
movq %rax, -0x168(%rbp)
cmpq $0x0, -0x168(%rbp)
je 0x364c
movl $0x1, %edi
movl $0x28, %esi
callq 0x10d0
movq %rax, -0x170(%rbp)
movq -0x168(%rbp), %rdi
leaq 0x8211(%rip), %rsi      # 0xb78a
callq 0x63f0
movq %rax, %rdi
callq 0x52a0
movq %rax, %rcx
movq -0x170(%rbp), %rax
movq %rcx, (%rax)
movq -0x168(%rbp), %rdi
leaq 0x8248(%rip), %rsi      # 0xb7e9
callq 0x63f0
movq %rax, %rdi
callq 0x52a0
movq %rax, %rcx
movq -0x170(%rbp), %rax
movq %rcx, 0x8(%rax)
movq -0x168(%rbp), %rdi
leaq 0x8228(%rip), %rsi      # 0xb7f2
callq 0x63f0
movq %rax, %rdi
callq 0x52a0
movq %rax, %rcx
movq -0x170(%rbp), %rax
movq %rcx, 0x10(%rax)
movq -0x168(%rbp), %rdi
leaq 0x8206(%rip), %rsi      # 0xb7f9
callq 0x63f0
movq %rax, %rdi
callq 0x52a0
movq %rax, %rcx
movq -0x170(%rbp), %rax
movq %rcx, 0x18(%rax)
movq -0x168(%rbp), %rdi
leaq 0x81ea(%rip), %rsi      # 0xb806
callq 0x63f0
movq %rax, %rdi
callq 0x52a0
movq %rax, %rcx
movq -0x170(%rbp), %rax
movq %rcx, 0x20(%rax)
movq -0x170(%rbp), %rcx
movq -0x120(%rbp), %rax
movq %rcx, 0xc8(%rax)
movq -0x140(%rbp), %rdi
leaq 0x81c0(%rip), %rsi      # 0xb81a
callq 0x63f0
movq %rax, %rdi
callq 0x52a0
movq %rax, %rcx
movq -0x120(%rbp), %rax
movq %rcx, 0xd0(%rax)
movq -0x140(%rbp), %rdi
leaq 0x819c(%rip), %rsi      # 0xb822
callq 0x63f0
movq %rax, -0x178(%rbp)
cmpq $0x0, -0x178(%rbp)
je 0x36c8
movq -0x178(%rbp), %rdi
leaq 0x817d(%rip), %rsi      # 0xb827
callq 0x63f0
movq %rax, %rdi
callq 0x52a0
movq %rax, %rcx
movq -0x120(%rbp), %rax
movq %rcx, 0xd8(%rax)
jmp 0x36ca
jmp 0x36cc
movq -0x28(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x28(%rbp)
movl -0x2c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x2c(%rbp)
jmp 0x2e00
movl $0x0, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x180, %rsp            # imm = 0x180
popq %rbp
retq
nopl (%rax,%rax)