// File: /workspace/github_cpp_makefile_star2_O1/pstuifzand[P]magento-tools/src/magento-config.cpp
// Function: root_start_element_handler(void*, char const*, char const**)
void root_start_element_handler(void* udata, const XML_Char* name, const XML_Char** atts) {
    user_data* data = (user_data*)udata;
    switch (data->state) {
        case State::ROOT:
            if (strcmp(name, "config") == 0) data->state = State::IN_CONFIG;
            break;
        case State::IN_CONFIG:
            if (strcmp(name, "sections") == 0) data->state = State::IN_SECTIONS;
            break;
        case State::IN_SECTIONS:
            data->state = State::IN_SECTION;
            data->section = name;
            break;
        case State::IN_SECTION:
            if (strcmp(name, "groups") == 0) data->state = State::IN_GROUPS;
            break;
        case State::IN_GROUPS:
            data->group = name;
            data->state = State::IN_GROUP;
            break;
        case State::IN_GROUP:
            if (strcmp(name, "fields") == 0) data->state = State::IN_FIELDS;
            break;
        case State::IN_FIELDS:
            data->field = name;
            data->state = State::IN_FIELD;
            std::stringstream ss;
            ss << data->section << "/" << data->group << "/" << data->field;
            data->names.push_back(ss.str());
            break;
    }
}

// Assembly:
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x1a8, %rsp            # imm = 0x1A8
movl (%rdi), %eax
decl %eax
cmpl $0x6, %eax
ja 0x2642
movq %rsi, %r14
movq %rdi, %rbx
leaq 0x1ba0(%rip), %rcx      # 0x4004
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
leaq 0x1c1a(%rip), %rsi      # 0x408e
movq %r14, %rdi
callq 0x2210
testl %eax, %eax
jne 0x2642
movl $0x2, (%rbx)
jmp 0x2642
leaq 0x30(%rbx), %r15
movq 0x38(%rbx), %r12
movq %r14, %rdi
callq 0x20b0
movq %r15, %rdi
xorl %esi, %esi
movq %r12, %rdx
movq %r14, %rcx
movq %rax, %r8
callq 0x2230
movl $0x6, (%rbx)
jmp 0x2642
movl $0x4, (%rbx)
movq 0x18(%rbx), %r15
addq $0x10, %rbx
movq %r14, %rdi
callq 0x20b0
movq %rbx, %rdi
xorl %esi, %esi
movq %r15, %rdx
movq %r14, %rcx
movq %rax, %r8
addq $0x1a8, %rsp            # imm = 0x1A8
popq %rbx
popq %r12
popq %r14
popq %r15
jmp 0x2230
leaq 0x1ba3(%rip), %rsi      # 0x409e
movq %r14, %rdi
callq 0x2210
testl %eax, %eax
jne 0x2642
movl $0x5, (%rbx)
jmp 0x2642
leaq 0x1b78(%rip), %rsi      # 0x4095
movq %r14, %rdi
callq 0x2210
testl %eax, %eax
jne 0x2642
movl $0x3, (%rbx)
jmp 0x2642
leaq 0x1b66(%rip), %rsi      # 0x40a5
movq %r14, %rdi
callq 0x2210
testl %eax, %eax
jne 0x2642
movl $0x7, (%rbx)
jmp 0x2642
leaq 0x50(%rbx), %r15
movq 0x58(%rbx), %r12
movq %r14, %rdi
callq 0x20b0
movq %r15, %rdi
xorl %esi, %esi
movq %r12, %rdx
movq %r14, %rcx
movq %rax, %r8
callq 0x2230
movl $0x8, (%rbx)
leaq 0x20(%rsp), %rdi
callq 0x20e0
leaq 0x30(%rsp), %rdi
movq 0x10(%rbx), %rsi
movq 0x18(%rbx), %rdx
callq 0x21b0
movq %rax, %r14
leaq 0x1b03(%rip), %rsi      # 0x40ac
movl $0x1, %edx
movq %rax, %rdi
callq 0x21b0
movq 0x30(%rbx), %rsi
movq 0x38(%rbx), %rdx
movq %r14, %rdi
callq 0x21b0
movq %rax, %r14
leaq 0x1adc(%rip), %rsi      # 0x40ac
movl $0x1, %edx
movq %rax, %rdi
callq 0x21b0
movq 0x50(%rbx), %rsi
movq 0x58(%rbx), %rdx
movq %r14, %rdi
callq 0x21b0
leaq 0x38(%rsp), %rsi
movq %rsp, %rdi
callq 0x2240
addq $0x70, %rbx
movq %rsp, %rsi
movq %rbx, %rdi
callq 0x2f90
leaq 0x10(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x2624
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x2190
movq 0x3985(%rip), %rsi      # 0x5fb0
leaq 0x20(%rsp), %rdi
callq 0x2110
leaq 0xa0(%rsp), %rdi
callq 0x2080
addq $0x1a8, %rsp            # imm = 0x1A8
popq %rbx
popq %r12
popq %r14
popq %r15
retq
movq %rax, %rbx
leaq 0x10(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x2676
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x2190
jmp 0x2676
jmp 0x2673
movq %rax, %rbx
movq 0x3933(%rip), %rsi      # 0x5fb0
leaq 0x20(%rsp), %rdi
callq 0x2110
leaq 0xa0(%rsp), %rdi
callq 0x2080
movq %rbx, %rdi
callq 0x2280