// File: /workspace/github_c_makefile_star2_O0/Carton32[P]quectel-CM/QmiWwanCM.c
// Function: QmiWwanGetClientID
static UCHAR QmiWwanGetClientID(UCHAR QMIType) {
    PQCQMIMSG pResponse;

    QmiThreadSendQMI(ComposeQCTLMsg(QMICTL_GET_CLIENT_ID_REQ, CtlGetClientIdReq, &QMIType), &pResponse);

    if (pResponse) {
        USHORT QMUXResult = cpu_to_le16(pResponse->CTLMsg.QMICTLMsgHdrRsp.QMUXResult);       // QMI_RESULT_SUCCESS
        USHORT QMUXError = cpu_to_le16(pResponse->CTLMsg.QMICTLMsgHdrRsp.QMUXError);        // QMI_ERR_INVALID_ARG
        //UCHAR QMIType = pResponse->CTLMsg.GetClientIdRsp.QMIType;
        UCHAR ClientId = pResponse->CTLMsg.GetClientIdRsp.ClientId;

        if (!QMUXResult && !QMUXError && (QMIType == pResponse->CTLMsg.GetClientIdRsp.QMIType)) {
            switch (QMIType) {
                case QMUX_TYPE_WDS: dbg_time("Get clientWDS = %d", ClientId); break;
                case QMUX_TYPE_DMS: dbg_time("Get clientDMS = %d", ClientId); break;
                case QMUX_TYPE_NAS: dbg_time("Get clientNAS = %d", ClientId); break;
                case QMUX_TYPE_QOS: dbg_time("Get clientQOS = %d", ClientId); break;
                case QMUX_TYPE_WMS: dbg_time("Get clientWMS = %d", ClientId); break;
                case QMUX_TYPE_PDS: dbg_time("Get clientPDS = %d", ClientId); break;
                case QMUX_TYPE_UIM: dbg_time("Get clientUIM = %d", ClientId); break;
                case QMUX_TYPE_WDS_ADMIN: dbg_time("Get clientWDA = %d", ClientId);
                break;
                default: break;
            }
            return ClientId;
        }
    }
    return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xa0, %rsp
movb %dil, %al
movb %al, -0x2(%rbp)
movl $0x22, %edi
leaq 0x903(%rip), %rsi       # 0x6ff0
leaq -0x2(%rbp), %rdx
callq 0x6c70
movq %rax, %rdi
leaq -0x10(%rbp), %rsi
movl $0x7530, %edx           # imm = 0x7530
leaq 0x24b69(%rip), %rcx     # 0x2b272
callq 0xc670
cmpq $0x0, -0x10(%rbp)
je 0x6b26
movq -0x10(%rbp), %rax
movzwl 0xf(%rax), %edi
callq 0x13ff0
movw %ax, -0x12(%rbp)
movq -0x10(%rbp), %rax
movzwl 0x11(%rax), %edi
callq 0x13ff0
movw %ax, -0x14(%rbp)
movq -0x10(%rbp), %rax
movb 0x17(%rax), %al
movb %al, -0x15(%rbp)
cmpw $0x0, -0x12(%rbp)
jne 0x6b24
cmpw $0x0, -0x14(%rbp)
jne 0x6b24
movzbl -0x2(%rbp), %eax
movq -0x10(%rbp), %rcx
movzbl 0x16(%rcx), %ecx
cmpl %ecx, %eax
jne 0x6b24
movzbl -0x2(%rbp), %eax
decl %eax
movl %eax, %ecx
movq %rcx, -0x20(%rbp)
subl $0x19, %eax
ja 0x6b1a
movq -0x20(%rbp), %rax
leaq 0x24875(%rip), %rcx     # 0x2b004
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
jmp 0x679a
movq 0x3083f(%rip), %rax     # 0x36fe0
movq (%rax), %rax
movq %rax, -0x28(%rbp)
callq 0x13930
movq -0x28(%rbp), %rdi
movq %rax, %rdx
movzbl -0x15(%rbp), %ecx
leaq 0x24ac6(%rip), %rsi     # 0x2b285
movb $0x0, %al
callq 0x52c0
leaq 0x3169b(%rip), %rax     # 0x37e68
cmpq $0x0, (%rax)
je 0x67ff
leaq 0x3168e(%rip), %rax     # 0x37e68
movq (%rax), %rax
movq %rax, -0x30(%rbp)
callq 0x13930
movq -0x30(%rbp), %rdi
movq %rax, %rdx
movzbl -0x15(%rbp), %ecx
leaq 0x24a8d(%rip), %rsi     # 0x2b285
movb $0x0, %al
callq 0x52c0
jmp 0x6801
jmp 0x6b1c
jmp 0x6808
movq 0x307d1(%rip), %rax     # 0x36fe0
movq (%rax), %rax
movq %rax, -0x38(%rbp)
callq 0x13930
movq -0x38(%rbp), %rdi
movq %rax, %rdx
movzbl -0x15(%rbp), %ecx
leaq 0x24a71(%rip), %rsi     # 0x2b29e
movb $0x0, %al
callq 0x52c0
leaq 0x3162d(%rip), %rax     # 0x37e68
cmpq $0x0, (%rax)
je 0x686d
leaq 0x31620(%rip), %rax     # 0x37e68
movq (%rax), %rax
movq %rax, -0x40(%rbp)
callq 0x13930
movq -0x40(%rbp), %rdi
movq %rax, %rdx
movzbl -0x15(%rbp), %ecx
leaq 0x24a38(%rip), %rsi     # 0x2b29e
movb $0x0, %al
callq 0x52c0
jmp 0x686f
jmp 0x6b1c
jmp 0x6876
movq 0x30763(%rip), %rax     # 0x36fe0
movq (%rax), %rax
movq %rax, -0x48(%rbp)
callq 0x13930
movq -0x48(%rbp), %rdi
movq %rax, %rdx
movzbl -0x15(%rbp), %ecx
leaq 0x24a1c(%rip), %rsi     # 0x2b2b7
movb $0x0, %al
callq 0x52c0
leaq 0x315bf(%rip), %rax     # 0x37e68
cmpq $0x0, (%rax)
je 0x68db
leaq 0x315b2(%rip), %rax     # 0x37e68
movq (%rax), %rax
movq %rax, -0x50(%rbp)
callq 0x13930
movq -0x50(%rbp), %rdi
movq %rax, %rdx
movzbl -0x15(%rbp), %ecx
leaq 0x249e3(%rip), %rsi     # 0x2b2b7
movb $0x0, %al
callq 0x52c0
jmp 0x68dd
jmp 0x6b1c
jmp 0x68e4
movq 0x306f5(%rip), %rax     # 0x36fe0
movq (%rax), %rax
movq %rax, -0x58(%rbp)
callq 0x13930
movq -0x58(%rbp), %rdi
movq %rax, %rdx
movzbl -0x15(%rbp), %ecx
leaq 0x249c7(%rip), %rsi     # 0x2b2d0
movb $0x0, %al
callq 0x52c0
leaq 0x31551(%rip), %rax     # 0x37e68
cmpq $0x0, (%rax)
je 0x6949
leaq 0x31544(%rip), %rax     # 0x37e68
movq (%rax), %rax
movq %rax, -0x60(%rbp)
callq 0x13930
movq -0x60(%rbp), %rdi
movq %rax, %rdx
movzbl -0x15(%rbp), %ecx
leaq 0x2498e(%rip), %rsi     # 0x2b2d0
movb $0x0, %al
callq 0x52c0
jmp 0x694b
jmp 0x6b1c
jmp 0x6952
movq 0x30687(%rip), %rax     # 0x36fe0
movq (%rax), %rax
movq %rax, -0x68(%rbp)
callq 0x13930
movq -0x68(%rbp), %rdi
movq %rax, %rdx
movzbl -0x15(%rbp), %ecx
leaq 0x24972(%rip), %rsi     # 0x2b2e9
movb $0x0, %al
callq 0x52c0
leaq 0x314e3(%rip), %rax     # 0x37e68
cmpq $0x0, (%rax)
je 0x69b7
leaq 0x314d6(%rip), %rax     # 0x37e68
movq (%rax), %rax
movq %rax, -0x70(%rbp)
callq 0x13930
movq -0x70(%rbp), %rdi
movq %rax, %rdx
movzbl -0x15(%rbp), %ecx
leaq 0x24939(%rip), %rsi     # 0x2b2e9
movb $0x0, %al
callq 0x52c0
jmp 0x69b9
jmp 0x6b1c
jmp 0x69c0
movq 0x30619(%rip), %rax     # 0x36fe0
movq (%rax), %rax
movq %rax, -0x78(%rbp)
callq 0x13930
movq -0x78(%rbp), %rdi
movq %rax, %rdx
movzbl -0x15(%rbp), %ecx
leaq 0x2491d(%rip), %rsi     # 0x2b302
movb $0x0, %al
callq 0x52c0
leaq 0x31475(%rip), %rax     # 0x37e68
cmpq $0x0, (%rax)
je 0x6a25
leaq 0x31468(%rip), %rax     # 0x37e68
movq (%rax), %rax
movq %rax, -0x80(%rbp)
callq 0x13930
movq -0x80(%rbp), %rdi
movq %rax, %rdx
movzbl -0x15(%rbp), %ecx
leaq 0x248e4(%rip), %rsi     # 0x2b302
movb $0x0, %al
callq 0x52c0
jmp 0x6a27
jmp 0x6b1c
jmp 0x6a2e
movq 0x305ab(%rip), %rax     # 0x36fe0
movq (%rax), %rax
movq %rax, -0x88(%rbp)
callq 0x13930
movq -0x88(%rbp), %rdi
movq %rax, %rdx
movzbl -0x15(%rbp), %ecx
leaq 0x248c2(%rip), %rsi     # 0x2b31b
movb $0x0, %al
callq 0x52c0
leaq 0x31401(%rip), %rax     # 0x37e68
cmpq $0x0, (%rax)
je 0x6a9f
leaq 0x313f4(%rip), %rax     # 0x37e68
movq (%rax), %rax
movq %rax, -0x90(%rbp)
callq 0x13930
movq -0x90(%rbp), %rdi
movq %rax, %rdx
movzbl -0x15(%rbp), %ecx
leaq 0x24883(%rip), %rsi     # 0x2b31b
movb $0x0, %al
callq 0x52c0
jmp 0x6aa1
jmp 0x6b1c
jmp 0x6aa5
movq 0x30534(%rip), %rax     # 0x36fe0
movq (%rax), %rax
movq %rax, -0x98(%rbp)
callq 0x13930
movq -0x98(%rbp), %rdi
movq %rax, %rdx
movzbl -0x15(%rbp), %ecx
leaq 0x24864(%rip), %rsi     # 0x2b334
movb $0x0, %al
callq 0x52c0
leaq 0x3138a(%rip), %rax     # 0x37e68
cmpq $0x0, (%rax)
je 0x6b16
leaq 0x3137d(%rip), %rax     # 0x37e68
movq (%rax), %rax
movq %rax, -0xa0(%rbp)
callq 0x13930
movq -0xa0(%rbp), %rdi
movq %rax, %rdx
movzbl -0x15(%rbp), %ecx
leaq 0x24825(%rip), %rsi     # 0x2b334
movb $0x0, %al
callq 0x52c0
jmp 0x6b18
jmp 0x6b1c
jmp 0x6b1c
movb -0x15(%rbp), %al
movb %al, -0x1(%rbp)
jmp 0x6b2a
jmp 0x6b26
movb $0x0, -0x1(%rbp)
movb -0x1(%rbp), %al
addq $0xa0, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)