// File: therealgymmy[P]HelicopterGame/src/helicopter.cpp
// Function: Helicopter::draw(XInfo*)
void Helicopter::draw (XInfo *xinfo) {
    if (blink_ > 0) {
        --blink_;
        if (!(blink_ & 0x8)) {
            return;
        }
    }
    end_.draw<attr::BLACK>(xinfo,
                           x_ / Draw::ScaleX,
                           (y_ + (HeliHead::h() - HeliEnd::h()) / 2) / Draw::ScaleY);

    mid_.draw<attr::WHITE>(xinfo,
                           (x_ + HeliEnd::w()) / Draw::ScaleX,
                           (y_ + (HeliHead::h() - HeliMid::h()) / 2) / Draw::ScaleY);

    head_.draw<attr::WHITE>(xinfo,
                            (x_ + HeliEnd::w() + HeliMid::w()) / Draw::ScaleX,
                            y_ / Draw::ScaleY);

    top_.draw<attr::WHITE>(xinfo,
                           (x_ + HeliEnd::w() + HeliMid::w() - (HeliTop::w() - HeliHead::w()) / 2) / Draw::ScaleX,
                           (y_ - HeliTop::h()) / Draw::ScaleY);

    headin_.draw<attr::GREEN>(xinfo,
                              (x_ + HeliEnd::w() + HeliMid::w() + (HeliHead::w() - HeliHeadIn::w()) / 2) / Draw::ScaleX,
                              (y_ + (HeliHead::h() - HeliHeadIn::h()) / 2) / Draw::ScaleY);

    endin_.draw<attr::RED>(xinfo,
                           (x_ + (HeliEnd::w() - HeliEndIn::w()) / 2) / Draw::ScaleX,
                           (y_ + (HeliHead::h() - HeliEndIn::h()) / 2) / Draw::ScaleY);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xf0, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x18(%rbp)
cmpl $0x0, 0x24(%rax)
jle 0x8310
movq -0x18(%rbp), %rax
movl 0x24(%rax), %ecx
addl $-0x1, %ecx
movl %ecx, 0x24(%rax)
movl 0x24(%rax), %eax
andl $0x8, %eax
cmpl $0x0, %eax
jne 0x830e
jmp 0x8718
jmp 0x8310
movq -0x18(%rbp), %rax
movq %rax, %rcx
addq $0x1e, %rcx
movq %rcx, -0xf0(%rbp)
movq -0x10(%rbp), %rcx
movq %rcx, -0xe8(%rbp)
cvtsi2sdl 0x14(%rax), %xmm0
leaq 0xaf3f(%rip), %rcx      # 0x13278
divsd (%rcx), %xmm0
cvttsd2si %xmm0, %ecx
movl %ecx, -0xdc(%rbp)
movl 0x18(%rax), %eax
movl %eax, -0xd8(%rbp)
callq 0x89b0
movl %eax, -0xe0(%rbp)
callq 0x8a00
movq -0xf0(%rbp), %rdi
movq -0xe8(%rbp), %rsi
movl %eax, %ecx
movl -0xe0(%rbp), %eax
subl %ecx, %eax
movl $0x2, %ecx
cltd
idivl %ecx
movl -0xdc(%rbp), %edx
movl %eax, %ecx
movl -0xd8(%rbp), %eax
addl %ecx, %eax
cvtsi2sd %eax, %xmm0
leaq 0xaee5(%rip), %rax      # 0x13280
divsd (%rax), %xmm0
cvttsd2si %xmm0, %ecx
callq 0x89c0
movq -0x18(%rbp), %rax
movq %rax, %rcx
addq $0x1d, %rcx
movq %rcx, -0xd0(%rbp)
movq -0x10(%rbp), %rcx
movq %rcx, -0xc8(%rbp)
movl 0x14(%rax), %eax
movl %eax, -0xd4(%rbp)
callq 0x89a0
movl -0xd4(%rbp), %ecx
movl %eax, %edx
movq -0x18(%rbp), %rax
addl %edx, %ecx
cvtsi2sd %ecx, %xmm0
leaq 0xae8c(%rip), %rcx      # 0x13278
divsd (%rcx), %xmm0
cvttsd2si %xmm0, %ecx
movl %ecx, -0xb8(%rbp)
movl 0x18(%rax), %eax
movl %eax, -0xb4(%rbp)
callq 0x89b0
movl %eax, -0xbc(%rbp)
callq 0x8a50
movq -0xd0(%rbp), %rdi
movq -0xc8(%rbp), %rsi
movl %eax, %ecx
movl -0xbc(%rbp), %eax
subl %ecx, %eax
movl $0x2, %ecx
cltd
idivl %ecx
movl -0xb8(%rbp), %edx
movl %eax, %ecx
movl -0xb4(%rbp), %eax
addl %ecx, %eax
cvtsi2sd %eax, %xmm0
leaq 0xae32(%rip), %rax      # 0x13280
divsd (%rax), %xmm0
cvttsd2si %xmm0, %ecx
callq 0x8a10
movq -0x18(%rbp), %rax
movq %rax, %rcx
addq $0x1c, %rcx
movq %rcx, -0xa8(%rbp)
movq -0x10(%rbp), %rcx
movq %rcx, -0xa0(%rbp)
movl 0x14(%rax), %eax
movl %eax, -0xb0(%rbp)
callq 0x89a0
movl %eax, %ecx
movl -0xb0(%rbp), %eax
addl %ecx, %eax
movl %eax, -0xac(%rbp)
callq 0x8990
movl -0xac(%rbp), %ecx
movq -0xa8(%rbp), %rdi
movq -0xa0(%rbp), %rsi
movl %eax, %edx
movq -0x18(%rbp), %rax
addl %edx, %ecx
cvtsi2sd %ecx, %xmm0
leaq 0xadb6(%rip), %rcx      # 0x13278
divsd (%rcx), %xmm0
cvttsd2si %xmm0, %edx
cvtsi2sdl 0x18(%rax), %xmm0
leaq 0xadaa(%rip), %rax      # 0x13280
divsd (%rax), %xmm0
cvttsd2si %xmm0, %ecx
callq 0x8a60
movq -0x18(%rbp), %rax
movq %rax, %rcx
addq $0x1f, %rcx
movq %rcx, -0x88(%rbp)
movq -0x10(%rbp), %rcx
movq %rcx, -0x80(%rbp)
movl 0x14(%rax), %eax
movl %eax, -0x98(%rbp)
callq 0x89a0
movl %eax, %ecx
movl -0x98(%rbp), %eax
addl %ecx, %eax
movl %eax, -0x94(%rbp)
callq 0x8990
movl %eax, %ecx
movl -0x94(%rbp), %eax
addl %ecx, %eax
movl %eax, -0x90(%rbp)
callq 0x8ae0
movl %eax, -0x8c(%rbp)
callq 0x8980
movl -0x90(%rbp), %ecx
movl %eax, %edx
movl -0x8c(%rbp), %eax
subl %edx, %eax
movl $0x2, %esi
cltd
idivl %esi
movl %eax, %edx
movq -0x18(%rbp), %rax
subl %edx, %ecx
cvtsi2sd %ecx, %xmm0
leaq 0xad0d(%rip), %rcx      # 0x13278
divsd (%rcx), %xmm0
cvttsd2si %xmm0, %ecx
movl %ecx, -0x78(%rbp)
movl 0x18(%rax), %eax
movl %eax, -0x74(%rbp)
callq 0x8af0
movq -0x88(%rbp), %rdi
movq -0x80(%rbp), %rsi
movl -0x78(%rbp), %edx
movl %eax, %ecx
movl -0x74(%rbp), %eax
subl %ecx, %eax
cvtsi2sd %eax, %xmm0
leaq 0xacdf(%rip), %rax      # 0x13280
divsd (%rax), %xmm0
cvttsd2si %xmm0, %ecx
callq 0x8aa0
movq -0x18(%rbp), %rax
movq %rax, %rcx
addq $0x20, %rcx
movq %rcx, -0x60(%rbp)
movq -0x10(%rbp), %rcx
movq %rcx, -0x58(%rbp)
movl 0x14(%rax), %eax
movl %eax, -0x70(%rbp)
callq 0x89a0
movl %eax, %ecx
movl -0x70(%rbp), %eax
addl %ecx, %eax
movl %eax, -0x6c(%rbp)
callq 0x8990
movl %eax, %ecx
movl -0x6c(%rbp), %eax
addl %ecx, %eax
movl %eax, -0x68(%rbp)
callq 0x8980
movl %eax, -0x64(%rbp)
callq 0x8b40
movl -0x68(%rbp), %ecx
movl %eax, %edx
movl -0x64(%rbp), %eax
subl %edx, %eax
movl $0x2, %esi
cltd
idivl %esi
movl %eax, %edx
movq -0x18(%rbp), %rax
addl %edx, %ecx
cvtsi2sd %ecx, %xmm0
leaq 0xac5d(%rip), %rcx      # 0x13278
divsd (%rcx), %xmm0
cvttsd2si %xmm0, %ecx
movl %ecx, -0x48(%rbp)
movl 0x18(%rax), %eax
movl %eax, -0x44(%rbp)
callq 0x89b0
movl %eax, -0x4c(%rbp)
callq 0x8b50
movq -0x60(%rbp), %rdi
movq -0x58(%rbp), %rsi
movl %eax, %ecx
movl -0x4c(%rbp), %eax
subl %ecx, %eax
movl $0x2, %ecx
cltd
idivl %ecx
movl -0x48(%rbp), %edx
movl %eax, %ecx
movl -0x44(%rbp), %eax
addl %ecx, %eax
cvtsi2sd %eax, %xmm0
leaq 0xac1b(%rip), %rax      # 0x13280
divsd (%rax), %xmm0
cvttsd2si %xmm0, %ecx
callq 0x8b00
movq -0x18(%rbp), %rax
movq %rax, %rcx
addq $0x21, %rcx
movq %rcx, -0x38(%rbp)
movq -0x10(%rbp), %rcx
movq %rcx, -0x30(%rbp)
movl 0x14(%rax), %eax
movl %eax, -0x40(%rbp)
callq 0x89a0
movl %eax, -0x3c(%rbp)
callq 0x8ba0
movl -0x40(%rbp), %ecx
movl %eax, %edx
movl -0x3c(%rbp), %eax
subl %edx, %eax
movl $0x2, %esi
cltd
idivl %esi
movl %eax, %edx
movq -0x18(%rbp), %rax
addl %edx, %ecx
cvtsi2sd %ecx, %xmm0
leaq 0xabb7(%rip), %rcx      # 0x13278
divsd (%rcx), %xmm0
cvttsd2si %xmm0, %ecx
movl %ecx, -0x20(%rbp)
movl 0x18(%rax), %eax
movl %eax, -0x1c(%rbp)
callq 0x89b0
movl %eax, -0x24(%rbp)
callq 0x8bb0
movq -0x38(%rbp), %rdi
movq -0x30(%rbp), %rsi
movl %eax, %ecx
movl -0x24(%rbp), %eax
subl %ecx, %eax
movl $0x2, %ecx
cltd
idivl %ecx
movl -0x20(%rbp), %edx
movl %eax, %ecx
movl -0x1c(%rbp), %eax
addl %ecx, %eax
cvtsi2sd %eax, %xmm0
leaq 0xab75(%rip), %rax      # 0x13280
divsd (%rax), %xmm0
cvttsd2si %xmm0, %ecx
callq 0x8b60
addq $0xf0, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)