// File: /workspace/github_c_makefile_star2_O0/wjmelements[P]evm/src/dio.c
// Function: jsonScanLogTopics
static void jsonScanLogTopics(const char **iter, logChanges_t *log) {
    jsonScanChar(iter, '[');
    jsonScanWaste(iter);
    uint256_t topics[MAX_LOG_TOPICS];
    if (**iter != ']') do {
        const char *topic = jsonScanStr(iter);
        jsonSkipExpectedChar(&topic, '0');
        jsonSkipExpectedChar(&topic, 'x');
        clear256(topics+log->topicCount);
        while (*topic != '"') {
            shiftl256((topics+log->topicCount), 4, (topics+log->topicCount));
            LOWER(LOWER_P((topics+log->topicCount))) |= hexString8ToUint8(*topic);
            topic++;
        }
        log->topicCount++;
        jsonScanWaste(iter);
        if (**iter == ',') {
            jsonSkipExpectedChar(iter, ',');
            jsonScanWaste(iter);
            continue;
        } else {
            break;
        }
    } while (1);
    jsonSkipExpectedChar(iter, ']');
    log->topics = calloc(log->topicCount, sizeof(uint256_t));
    for (uint16_t i = log->topicCount; i--> 0;) {
        log->topics[log->topicCount - i - 1] = topics[i];
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xa0, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x8(%rbp), %rdi
movl $0x5b, %esi
callq 0x4070
movq -0x8(%rbp), %rdi
callq 0x5890
movq -0x8(%rbp), %rax
movq (%rax), %rax
movsbl (%rax), %eax
cmpl $0x5d, %eax
je 0x6b25
jmp 0x69ef
movq -0x8(%rbp), %rdi
callq 0x5dc0
movq %rax, -0x98(%rbp)
leaq -0x98(%rbp), %rdi
movl $0x30, %esi
callq 0x58f0
leaq -0x98(%rbp), %rdi
movl $0x78, %esi
callq 0x58f0
leaq -0x90(%rbp), %rdi
movq -0x10(%rbp), %rax
movzbl 0x8(%rax), %eax
cltq
shlq $0x5, %rax
addq %rax, %rdi
callq 0xf8d0
movq -0x98(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x22, %eax
je 0x6ad7
leaq -0x90(%rbp), %rdi
movq -0x10(%rbp), %rax
movzbl 0x8(%rax), %eax
cltq
shlq $0x5, %rax
addq %rax, %rdi
leaq -0x90(%rbp), %rdx
movq -0x10(%rbp), %rax
movzbl 0x8(%rax), %eax
cltq
shlq $0x5, %rax
addq %rax, %rdx
movl $0x4, %esi
callq 0xfa40
movq -0x98(%rbp), %rax
movzbl (%rax), %edi
callq 0x5e80
movzbl %al, %eax
movl %eax, %ecx
leaq -0x90(%rbp), %rax
movq -0x10(%rbp), %rdx
movzbl 0x8(%rdx), %edx
movslq %edx, %rdx
shlq $0x5, %rdx
addq %rdx, %rax
orq 0x18(%rax), %rcx
movq %rcx, 0x18(%rax)
movq -0x98(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x98(%rbp)
jmp 0x6a3e
movq -0x10(%rbp), %rax
movb 0x8(%rax), %cl
addb $0x1, %cl
movb %cl, 0x8(%rax)
movq -0x8(%rbp), %rdi
callq 0x5890
movq -0x8(%rbp), %rax
movq (%rax), %rax
movsbl (%rax), %eax
cmpl $0x2c, %eax
jne 0x6b15
movq -0x8(%rbp), %rdi
movl $0x2c, %esi
callq 0x58f0
movq -0x8(%rbp), %rdi
callq 0x5890
jmp 0x6b17
jmp 0x6b23
movb $0x1, %al
testb $0x1, %al
jne 0x69ef
jmp 0x6b23
jmp 0x6b25
movq -0x8(%rbp), %rdi
movl $0x5d, %esi
callq 0x58f0
movq -0x10(%rbp), %rax
movzbl 0x8(%rax), %eax
movl %eax, %edi
movl $0x20, %esi
callq 0x31c0
movq %rax, %rcx
movq -0x10(%rbp), %rax
movq %rcx, (%rax)
movq -0x10(%rbp), %rax
movzbl 0x8(%rax), %eax
movw %ax, -0x9a(%rbp)
movw -0x9a(%rbp), %ax
movw %ax, %cx
addw $-0x1, %cx
movw %cx, -0x9a(%rbp)
movzwl %ax, %eax
cmpl $0x0, %eax
jle 0x6bd9
movq -0x10(%rbp), %rax
movq (%rax), %rax
movq -0x10(%rbp), %rcx
movzbl 0x8(%rcx), %ecx
movzwl -0x9a(%rbp), %edx
subl %edx, %ecx
subl $0x1, %ecx
movslq %ecx, %rcx
shlq $0x5, %rcx
addq %rcx, %rax
movzwl -0x9a(%rbp), %ecx
movl %ecx, %edx
leaq -0x90(%rbp), %rcx
shlq $0x5, %rdx
addq %rdx, %rcx
movq (%rcx), %rdx
movq %rdx, (%rax)
movq 0x8(%rcx), %rdx
movq %rdx, 0x8(%rax)
movq 0x10(%rcx), %rdx
movq %rdx, 0x10(%rax)
movq 0x18(%rcx), %rcx
movq %rcx, 0x18(%rax)
jmp 0x6b60
addq $0xa0, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)