// File: /workspace/github_c_makefile_star2_O0/qq-smart[P]qq_sh_server/app/qq_wifi_device.c
// Function: qq_wifi_device_status_package_process
static void
qq_wifi_device_status_package_process(qq_connection_t *c, cJSON *root)
{
    qq_wifi_device_t  *wd;
    qq_int_t           i, app_type;
    u_char            *p;

    qq_log_debug("qq_wifi_device_status_package_process(%s)", root);

    wd = c->data;
    if (wd->first_status == 0) {
        wd->first_status = 1;

        if (wd->buf_size < (wd->buf_ndata * 2)) {
            qq_wifi_device_close(c, QQ_WIFI_DEVICE_INSUFFICIENT_MEMORY);
            return;
        }

        wd->status = wd->buf;
        wd->status_size = wd->buf_ndata;
        wd->buf = wd->status + wd->status_size;
        wd->buf_size = wd->buf_ndata;

        for (i = 0;i < QQ_WIFI_DEVICE_MAX_APP_NUMBER;i++) {
            if (i == wd->napp) {
                break;
            }

            if (wd->app[i].app != NULL) {
                app_type = wd->app[i].app_type & ~QQ_MAIN_APP_FLAGS;

                if (app_type == QQ_APP_TYPE_ANDROID) {
                    qq_android_app_and_device_associate(wd->app[i].app, wd);
                }
                else if (app_type == QQ_APP_TYPE_IOS) {
                    qq_ios_app_and_device_associate(wd->app[i].app, wd);
                }
            }
        }
    }
    else {
        p = wd->status;
        wd->status = wd->buf;
        wd->buf = p;
    }

    for (i = 0;i < QQ_WIFI_DEVICE_MAX_APP_NUMBER;i++) {
        if (i == wd->napp) {
            break;
        }

        if (wd->app[i].app != NULL) {
            c->send(wd->app[i].app, wd->status, wd->status_size);
        }
    }

    qq_event_add_timer(c->read, QQ_WIFI_DEVICE_PING_TIMEOUT);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x10(%rbp), %rsi
leaq 0x241e(%rip), %rdi      # 0x10469
movb $0x0, %al
callq 0x9e70
movq -0x8(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rax
movb 0x118(%rax), %al
shrb %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x0, %eax
jne 0xe1ca
movq -0x18(%rbp), %rax
movb 0x118(%rax), %cl
andb $-0x3, %cl
orb $0x2, %cl
movb %cl, 0x118(%rax)
movq -0x18(%rbp), %rax
movq 0x10(%rax), %rax
movq -0x18(%rbp), %rcx
movq 0x18(%rcx), %rcx
shlq %rcx
cmpq %rcx, %rax
jae 0xe0b8
movq -0x8(%rbp), %rdi
movl $0x8, %esi
callq 0xe290
jmp 0xe27f
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rcx
movq -0x18(%rbp), %rax
movq %rcx, 0x20(%rax)
movq -0x18(%rbp), %rax
movq 0x18(%rax), %rcx
movq -0x18(%rbp), %rax
movq %rcx, 0x28(%rax)
movq -0x18(%rbp), %rax
movq 0x20(%rax), %rcx
movq -0x18(%rbp), %rax
addq 0x28(%rax), %rcx
movq -0x18(%rbp), %rax
movq %rcx, 0x8(%rax)
movq -0x18(%rbp), %rax
movq 0x18(%rax), %rcx
movq -0x18(%rbp), %rax
movq %rcx, 0x10(%rax)
movq $0x0, -0x20(%rbp)
cmpq $0xa, -0x20(%rbp)
jge 0xe1c8
movq -0x20(%rbp), %rax
movq -0x18(%rbp), %rcx
cmpq 0x110(%rcx), %rax
jne 0xe129
jmp 0xe1c8
movq -0x18(%rbp), %rax
addq $0x70, %rax
movq -0x20(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
cmpq $0x0, (%rax)
je 0xe1b5
movq -0x18(%rbp), %rax
addq $0x70, %rax
movq -0x20(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movl 0x8(%rax), %eax
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
movl %eax, %eax
movq %rax, -0x28(%rbp)
cmpq $0x1, -0x28(%rbp)
jne 0xe18b
movq -0x18(%rbp), %rax
addq $0x70, %rax
movq -0x20(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq (%rax), %rdi
movq -0x18(%rbp), %rsi
callq 0x2640
jmp 0xe1b3
cmpq $0x2, -0x28(%rbp)
jne 0xe1b1
movq -0x18(%rbp), %rax
addq $0x70, %rax
movq -0x20(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq (%rax), %rdi
movq -0x18(%rbp), %rsi
callq 0x4c90
jmp 0xe1b3
jmp 0xe1b5
jmp 0xe1b7
movq -0x20(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x20(%rbp)
jmp 0xe108
jmp 0xe1f2
movq -0x18(%rbp), %rax
movq 0x20(%rax), %rax
movq %rax, -0x30(%rbp)
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rcx
movq -0x18(%rbp), %rax
movq %rcx, 0x20(%rax)
movq -0x30(%rbp), %rcx
movq -0x18(%rbp), %rax
movq %rcx, 0x8(%rax)
movq $0x0, -0x20(%rbp)
cmpq $0xa, -0x20(%rbp)
jge 0xe26d
movq -0x20(%rbp), %rax
movq -0x18(%rbp), %rcx
cmpq 0x110(%rcx), %rax
jne 0xe214
jmp 0xe26d
movq -0x18(%rbp), %rax
addq $0x70, %rax
movq -0x20(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
cmpq $0x0, (%rax)
je 0xe25d
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rax
movq -0x18(%rbp), %rcx
addq $0x70, %rcx
movq -0x20(%rbp), %rdx
shlq $0x4, %rdx
addq %rdx, %rcx
movq (%rcx), %rdi
movq -0x18(%rbp), %rcx
movq 0x20(%rcx), %rsi
movq -0x18(%rbp), %rcx
movq 0x28(%rcx), %rdx
callq *%rax
jmp 0xe25f
movq -0x20(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x20(%rbp)
jmp 0xe1fa
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rdi
movl $0xea60, %esi           # imm = 0xEA60
callq 0xdd30
addq $0x30, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)