// File: /workspace/github_c_makefile_star2_O1/meaning-matters[P]Except/Test.c
// Function: TestThrow
static void TestThrow(void)
{
    printf("\nTHROW TESTS -------------------------------------------\n\n");

    /* see if exception is lost outside */
    printf("-->%2d: Lost Exception?\n", testNum++);
    throw (Exception, NULL);
    printf("\n");

    /* see if throw works and if correct catch clause is selected */
    try
    {
        printf("-->%2d: Caught Exception?\n", testNum++);
        throw (Exception, NULL);
    }
    catch (RuntimeException, e);
    catch (Exception, e)
    {
        printf("%s\n", e->getMessage());
    }
    finally;
    printf("\n");

    /* see if throw works properly from within catch clause */
    try
    {
        throw (Exception, NULL);
    }

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
leaq 0x5e63(%rip), %rdi      # 0xa905
callq 0x1070
movl 0x87b3(%rip), %esi      # 0xd260
movl %esi, %eax
incl %eax
movl %eax, 0x87a9(%rip)      # 0xd260
leaq 0x5a18(%rip), %rdi      # 0xa4d6
xorl %ebx, %ebx
movl %ebx, %eax
movb %bl, 0x7(%rsp)
callq 0x1080
leaq 0x879e(%rip), %r13      # 0xd270
movq (%r13), %rdi
leaq 0x8603(%rip), %rsi      # 0xd0e0
leaq 0x59b4(%rip), %r15      # 0xa498
movl %ebx, %edx
movq %r15, %rcx
movl $0x2b, %r8d
callq 0x16b1
movl $0xa, %edi
callq 0x1050
movq (%r13), %rdi
movl $0x2f, %edx
movq %r15, %rsi
callq 0x151a
leaq 0x8806(%rip), %r12      # 0xd31c
leaq 0x8623(%rip), %rbp      # 0xd140
movl $0x1, %ebx
movq (%r13), %rdi
callq 0x12d2
movq %rax, %r14
movq %rax, %rdi
movq %r12, %rsi
movq %r15, %rdx
movl $0x2f, %ecx
callq 0x1b4a
testl %eax, %eax
je 0x4b64
movq (%r14), %rdi
cmpl $0x0, 0x1b4(%rdi)
je 0x4b64
addq $0x8, %rdi
movl %ebx, %esi
callq 0x1130
testl %eax, %eax
je 0x4c25
movq %r14, %rdi
movq %r12, %rsi
movq %rbp, %rdx
movq %r15, %rcx
movl $0x34, %r8d
callq 0x1bde
testl %eax, %eax
je 0x4bb7
movq (%r14), %rax
cmpl $0x0, 0x1b4(%rax)
je 0x4bb7
movq %r14, %rdi
movq %rbp, %rsi
callq 0x18a9
testl %eax, %eax
je 0x4bb7
movq 0x8(%r14), %rdi
movl %ebx, %esi
callq 0x1f2b
movq (%r14), %rax
movl $0x2, 0x1b8(%rax)
jmp 0x4c6e
movq %r14, %rdi
movq %r12, %rsi
leaq 0x851c(%rip), %rdx      # 0xd0e0
movq %r15, %rcx
movl $0x35, %r8d
callq 0x1bde
testl %eax, %eax
je 0x4c6e
movq (%r14), %rax
cmpl $0x0, 0x1b4(%rax)
je 0x4c6e
movq %r14, %rdi
leaq 0x84ec(%rip), %rsi      # 0xd0e0
callq 0x18a9
testl %eax, %eax
je 0x4c6e
movq 0x8(%r14), %rdi
movl %ebx, %esi
callq 0x1f2b
movq (%r14), %rcx
movl $0x2, 0x1b8(%rcx)
callq *0x1e0(%rax)
movq %rax, %rdi
callq 0x1070
jmp 0x4c6e
movq (%r14), %rax
movl $0x1, 0x1b8(%rax)
movl 0x8628(%rip), %esi      # 0xd260
movl %esi, %eax
incl %eax
movl %eax, 0x861e(%rip)      # 0xd260
leaq 0x58a6(%rip), %rdi      # 0xa4ef
movb 0x7(%rsp), %al
callq 0x1080
xorl %eax, %eax
movl %eax, %edx
movq %r14, %rdi
leaq 0x8480(%rip), %rsi      # 0xd0e0
movq %r15, %rcx
movl $0x32, %r8d
callq 0x16b1
cmpl $0x0, 0x86a7(%rip)      # 0xd31c
je 0x4b22
movq (%r14), %rdi
cmpl $0x0, 0x1b4(%rdi)
jne 0x4cab
addq $0xd0, %rdi
movl %ebx, %esi
callq 0x1130
testl %eax, %eax
jne 0x4cab
movq (%r14), %rax
movl $0x1, 0x1b4(%rax)
jmp 0x4b22
movq (%r13), %rdi
callq 0x12d2
movq (%rax), %rax
movl $0x3, 0x1b8(%rax)
movq (%r13), %rdi
callq 0x12d2
movq (%rax), %rax
cmpl $0x0, 0x1b4(%rax)
jg 0x4ce3
movq (%r13), %rdi
callq 0x18f4
testl %eax, %eax
je 0x4d05
movq (%r13), %rdi
callq 0x12d2
movq (%rax), %rax
movl 0x1b4(%rax), %ecx
movl %ecx, %edx
decl %edx
movl %edx, 0x1b4(%rax)
testl %ecx, %ecx
jg 0x4ce3
jmp 0x4cc1
movl $0xa, %edi
callq 0x1050
movq (%r13), %rdi
leaq 0x577e(%rip), %rbx      # 0xa498
movl $0x3d, %edx
movq %rbx, %rsi
callq 0x151a
leaq 0x85f2(%rip), %r14      # 0xd320
leaq 0x83ab(%rip), %r15      # 0xd0e0
movl $0x1, %r12d
movq (%r13), %rdi
callq 0x12d2
movq %rax, %rbp
movq %rax, %rdi
movq %r14, %rsi
movq %rbx, %rdx
movl $0x3d, %ecx
callq 0x1b4a
testl %eax, %eax
je 0x4d7f
movq (%rbp), %rdi
cmpl $0x0, 0x1b4(%rdi)
je 0x4d7f
addq $0x8, %rdi
movl %r12d, %esi
callq 0x1130
testl %eax, %eax
je 0x4e7c
movq %rbp, %rdi
movq %r14, %rsi
movq %r15, %rdx
movq %rbx, %rcx
movl $0x41, %r8d
callq 0x1bde
testl %eax, %eax
je 0x4e13
movq (%rbp), %rax
cmpl $0x0, 0x1b4(%rax)
je 0x4e13
movq %rbp, %rdi
movq %r15, %rsi
callq 0x18a9
testl %eax, %eax
je 0x4e13
movq 0x8(%rbp), %rdi
movl %r12d, %esi
callq 0x1f2b
movq (%rbp), %rax
movl $0x2, 0x1b8(%rax)
movl 0x848a(%rip), %esi      # 0xd260
movl %esi, %eax
incl %eax
movl %eax, 0x8480(%rip)      # 0xd260
xorl %r12d, %r12d
movl %r12d, %eax
leaq 0x571d(%rip), %rdi      # 0xa50a
callq 0x1080
movl %r12d, %edx
movl $0x1, %r12d
movq %rbp, %rdi
leaq 0x841b(%rip), %rsi      # 0xd220
movq %rbx, %rcx
movl $0x44, %r8d
jmp 0x4e9d
movq %rbp, %rdi
movq %r14, %rsi
leaq 0x8400(%rip), %rdx      # 0xd220
movq %rbx, %rcx
movl $0x46, %r8d
callq 0x1bde
testl %eax, %eax
je 0x4ea2
movq (%rbp), %rax
cmpl $0x0, 0x1b4(%rax)
je 0x4ea2
movq %rbp, %rdi
leaq 0x83d7(%rip), %rsi      # 0xd220
callq 0x18a9
testl %eax, %eax
je 0x4ea2
movq 0x8(%rbp), %rdi
movl %r12d, %esi
callq 0x1f2b
movq (%rbp), %rcx
movl $0x2, 0x1b8(%rcx)
callq *0x1e0(%rax)
movq %rax, %rdi
callq 0x1070
jmp 0x4ea2
movq (%rbp), %rax
movl $0x1, 0x1b8(%rax)
xorl %eax, %eax
movl %eax, %edx
movq %rbp, %rdi
movq %r15, %rsi
movq %rbx, %rcx
movl $0x3f, %r8d
callq 0x16b1
cmpl $0x0, 0x8477(%rip)      # 0xd320
je 0x4d3b
movq (%rbp), %rdi
cmpl $0x0, 0x1b4(%rdi)
jne 0x4ee2
addq $0xd0, %rdi
movl %r12d, %esi
callq 0x1130
testl %eax, %eax
jne 0x4ee2
movq (%rbp), %rax
movl $0x1, 0x1b4(%rax)
jmp 0x4d3b
movq (%r13), %rdi
callq 0x12d2
movq (%rax), %rax
movl $0x3, 0x1b8(%rax)
movq (%r13), %rdi
callq 0x12d2
movq (%rax), %rax
cmpl $0x0, 0x1b4(%rax)
jg 0x4f1a
movq (%r13), %rdi
callq 0x18f4
testl %eax, %eax
je 0x4f3c
movq (%r13), %rdi
callq 0x12d2
movq (%rax), %rax
movl 0x1b4(%rax), %ecx
movl %ecx, %edx
decl %edx
movl %edx, 0x1b4(%rax)
testl %ecx, %ecx
jg 0x4f1a
jmp 0x4ef8
movl $0xa, %edi
callq 0x1050
movq (%r13), %rdi
leaq 0x5547(%rip), %rbx      # 0xa498
movl $0x4e, %edx
movq %rbx, %rsi
callq 0x151a
leaq 0x83bf(%rip), %r14      # 0xd324
leaq 0x82d4(%rip), %r15      # 0xd240
movl $0x1, %ebp
movq (%r13), %rdi
callq 0x12d2
movq %rax, %r12
movq %rax, %rdi
movq %r14, %rsi
movq %rbx, %rdx
movl $0x4e, %ecx
callq 0x1b4a
testl %eax, %eax
je 0x4fb0
movq (%r12), %rdi
cmpl $0x0, 0x1b4(%rdi)
je 0x4fb0
addq $0x8, %rdi
movl %ebp, %esi
callq 0x1130
testl %eax, %eax
je 0x5007
movq %r12, %rdi
movq %r14, %rsi
movq %r15, %rdx
movq %rbx, %rcx
movl $0x53, %r8d
callq 0x1bde
testl %eax, %eax
je 0x5054
movq (%r12), %rax
cmpl $0x0, 0x1b4(%rax)
je 0x5054
movq %r12, %rdi
movq %r15, %rsi
callq 0x18a9
testl %eax, %eax
je 0x5054
movq 0x8(%r12), %rdi
movl %ebp, %esi
callq 0x1f2b
movq (%r12), %rax
movl $0x2, 0x1b8(%rax)
jmp 0x5054
movq (%r12), %rax
movl $0x1, 0x1b8(%rax)
movl 0x8245(%rip), %esi      # 0xd260
movl %esi, %eax
incl %eax
movl %eax, 0x823b(%rip)      # 0xd260
xorl %ebp, %ebp
movl %ebp, %eax
leaq 0x54da(%rip), %rdi      # 0xa50a
callq 0x1080
movl %ebp, %edx
movl $0x1, %ebp
movq %r12, %rdi
leaq 0x81da(%rip), %rsi      # 0xd220
movq %rbx, %rcx
movl $0x51, %r8d
callq 0x16b1
cmpl $0x0, 0x82c9(%rip)      # 0xd324
je 0x4f71
movq (%r12), %rdi
cmpl $0x0, 0x1b4(%rdi)
jne 0x5093
addq $0xd0, %rdi
movl %ebp, %esi
callq 0x1130
testl %eax, %eax
jne 0x5093
movq (%r12), %rax
movl $0x1, 0x1b4(%rax)
jmp 0x4f71
movq (%r13), %rdi
callq 0x12d2
movq (%rax), %rax
movl $0x3, 0x1b8(%rax)
movq (%r13), %rdi
callq 0x12d2
movq (%rax), %rax
cmpl $0x0, 0x1b4(%rax)
jg 0x50cb
movq (%r13), %rdi
callq 0x18f4
testl %eax, %eax
je 0x50ed
movq (%r13), %rdi
callq 0x12d2
movq (%rax), %rax
movl 0x1b4(%rax), %ecx
movl %ecx, %edx
decl %edx
movl %edx, 0x1b4(%rax)
testl %ecx, %ecx
jg 0x50cb
jmp 0x50a9
movl $0xa, %edi
callq 0x1050
movq (%r13), %rdi
leaq 0x5396(%rip), %rbx      # 0xa498
movl $0x58, %edx
movq %rbx, %rsi
callq 0x151a
leaq 0x8212(%rip), %r14      # 0xd328
leaq 0x8103(%rip), %r15      # 0xd220
movl $0x1, %ebp
movq (%r13), %rdi
callq 0x12d2
movq %rax, %r12
movq %rax, %rdi
movq %r14, %rsi
movq %rbx, %rdx
movl $0x58, %ecx
callq 0x1b4a
testl %eax, %eax
je 0x5161
movq (%r12), %rdi
cmpl $0x0, 0x1b4(%rdi)
je 0x5161
addq $0x8, %rdi
movl %ebp, %esi
callq 0x1130
testl %eax, %eax
je 0x51ca
movq %r12, %rdi
movq %r14, %rsi
movq %r15, %rdx
movq %rbx, %rcx
movl $0x5d, %r8d
callq 0x1bde
testl %eax, %eax
je 0x5217
movq (%r12), %rax
cmpl $0x0, 0x1b4(%rax)
je 0x5217
movq %r12, %rdi
movq %r15, %rsi
callq 0x18a9
testl %eax, %eax
je 0x5217
movq 0x8(%r12), %rdi
movl %ebp, %esi
callq 0x1f2b
movq (%r12), %rcx
movl $0x2, 0x1b8(%rcx)
callq *0x1e0(%rax)
movq %rax, %rdi
callq 0x1070
jmp 0x5217
movq (%r12), %rax
movl $0x1, 0x1b8(%rax)
movl 0x8082(%rip), %esi      # 0xd260
movl %esi, %eax
incl %eax
movl %eax, 0x8078(%rip)      # 0xd260
xorl %ebp, %ebp
movl %ebp, %eax
leaq 0x5336(%rip), %rdi      # 0xa529
callq 0x1080
movl %ebp, %edx
movl $0x1, %ebp
movq %r12, %rdi
leaq 0x8037(%rip), %rsi      # 0xd240
movq %rbx, %rcx
movl $0x5b, %r8d
callq 0x16b1
cmpl $0x0, 0x810a(%rip)      # 0xd328
je 0x5122
movq (%r12), %rdi
cmpl $0x0, 0x1b4(%rdi)
jne 0x5256
addq $0xd0, %rdi
movl %ebp, %esi
callq 0x1130
testl %eax, %eax
jne 0x5256
movq (%r12), %rax
movl $0x1, 0x1b4(%rax)
jmp 0x5122
movq (%r13), %rdi
callq 0x12d2
movq (%rax), %rax
movl $0x3, 0x1b8(%rax)
movq (%r13), %rdi
callq 0x12d2
movq (%rax), %rax
cmpl $0x0, 0x1b4(%rax)
jg 0x528e
movq (%r13), %rdi
callq 0x18f4
testl %eax, %eax
je 0x52b0
movq (%r13), %rdi
callq 0x12d2
movq (%rax), %rax
movl 0x1b4(%rax), %ecx
movl %ecx, %edx
decl %edx
movl %edx, 0x1b4(%rax)
testl %ecx, %ecx
jg 0x528e
jmp 0x526c
movl $0xa, %edi
callq 0x1050
movq (%r13), %rdi
leaq 0x51d3(%rip), %rbx      # 0xa498
movl $0x64, %ebp
movq %rbx, %rsi
movl %ebp, %edx
callq 0x151a
leaq 0x8051(%rip), %r14      # 0xd32c
movl $0x1, %r15d
movq (%r13), %rdi
callq 0x12d2
movq %rax, %r12
movq %rax, %rdi
movq %r14, %rsi
movq %rbx, %rdx
movl %ebp, %ecx
callq 0x1b4a
testl %eax, %eax
je 0x532c
movq (%r12), %rdi
cmpl $0x0, 0x1b4(%rdi)
je 0x532c
addq $0x8, %rdi
movl %r15d, %esi
callq 0x1130
testl %eax, %eax
jne 0x532c
movq (%r12), %rax
movl $0x1, 0x1b8(%rax)
cmpl $0x0, 0x7ff9(%rip)      # 0xd32c
je 0x52e1
movq (%r12), %rdi
cmpl $0x0, 0x1b4(%rdi)
jne 0x5368
addq $0xd0, %rdi
movl %r15d, %esi
callq 0x1130
testl %eax, %eax
jne 0x5368
movq (%r12), %rax
movl $0x1, 0x1b4(%rax)
jmp 0x52e1
movq (%r13), %rdi
callq 0x12d2
movq (%rax), %rax
movl $0x3, 0x1b8(%rax)
leaq 0x5151(%rip), %rbx      # 0xa4d6
xorl %r12d, %r12d
leaq 0x7d51(%rip), %r14      # 0xd0e0
leaq 0x5102(%rip), %r15      # 0xa498
movl $0x68, %ebp
movq (%r13), %rdi
callq 0x12d2
movq (%rax), %rax
cmpl $0x0, 0x1b4(%rax)
jg 0x53ef
movq (%r13), %rdi
callq 0x18f4
testl %eax, %eax
jne 0x53ef
jmp 0x5411
movl 0x7e9b(%rip), %esi      # 0xd260
movl %esi, %eax
incl %eax
movl %eax, 0x7e91(%rip)      # 0xd260
movl %r12d, %eax
movq %rbx, %rdi
callq 0x1080
movq (%r13), %rdi
movl %r12d, %edx
movq %r14, %rsi
movq %r15, %rcx
movl %ebp, %r8d
callq 0x16b1
movq (%r13), %rdi
callq 0x12d2
movq (%rax), %rax
movl 0x1b4(%rax), %ecx
movl %ecx, %edx
decl %edx
movl %edx, 0x1b4(%rax)
testl %ecx, %ecx
jg 0x53bf
jmp 0x539b
movl $0xa, %edi
callq 0x1050
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq