// File: /workspace/github_cpp_makefile_star2_O2/ctSkennerton[P]fxtract/util/./railgun7w.c
// Function: Railgun7w
char *
Railgun7w(char *pbTarget, int cbTarget, char *pbPattern, int cbPattern)
{
    return (char*)(
           cbPattern > cbTarget ? NULL
         : cbPattern < 3        ? NULL  //XXX dummy something up, even just "do cp = strchr(cp, pat[1]); while (cp && cp[-1] != pat[0]);"
         : cbPattern == 3       ? check3(  (byte*)pbTarget, (byte*)pbPattern, (uint)cbTarget)
         : cbTarget < 961       ? check4(  (byte*)pbTarget, (byte*)pbPattern, (uint)cbTarget, (uint)cbPattern)
         : cbPattern <= 22      ? bloom2(  (byte*)pbTarget, (byte*)pbPattern, (uint)cbTarget, (uint)cbPattern)
         : cbPattern <= 712     ? bloom4(  (byte*)pbTarget, (byte*)pbPattern, (uint)cbTarget, (uint)cbPattern)
                                : bloom12( (byte*)pbTarget, (byte*)pbPattern, (uint)cbTarget, (uint)cbPattern)
        );
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x10028, %rsp          # imm = 0x10028
movl %ecx, %r15d
movq %rdx, %r14
movl %esi, %edx
subl %ecx, %edx
setl %al
cmpl $0x3, %ecx
setl %cl
orb %al, %cl
je 0x3f5e
xorl %r12d, %r12d
jmp 0x40bd
movq %rdi, %rbx
cmpl $0x3, %r15d
jne 0x3fca
movl %esi, %eax
addq %rbx, %rax
addq $-0x3, %rax
movzbl (%r14), %ecx
movl %ecx, %esi
shll $0x8, %esi
movzbl 0x2(%r14), %edx
orl %esi, %edx
xorl %r12d, %r12d
movzbl (%rbx), %edi
shll $0x8, %edi
movzbl 0x2(%rbx), %esi
orl %esi, %edi
cmpl %edi, %edx
jne 0x3fa2
movb 0x1(%rbx), %dil
cmpb %dil, 0x1(%r14)
jne 0x3fa6
jmp 0x40ba
movb 0x1(%rbx), %dil
xorl %r8d, %r8d
cmpb %cl, %sil
setne %r8b
incq %r8
cmpb %cl, %dil
cmoveq %r12, %r8
addq %r8, %rbx
incq %rbx
cmpq %rax, %rbx
jbe 0x3f83
jmp 0x40bd
cmpl $0x3c0, %esi            # imm = 0x3C0
jg 0x4078
movl %esi, %eax
addq %rbx, %rax
movl (%r14), %ecx
movzbl %cl, %edx
imull $0x1010101, %edx, %esi  # imm = 0x1010101
movl %r15d, %edx
addq %rdx, %rbx
negq %rdx
decl %r15d
movq %r15, %rdi
negq %rdi
pushq $0x1
popq %r8
xorl %r12d, %r12d
movl (%rbx,%rdx), %ebp
cmpl %ebp, %ecx
jne 0x4045
leaq (%rbx,%rdi), %r13
xorl %ebp, %ebp
movl %r8d, %r11d
cmpq %rbp, %r15
je 0x40b7
leal 0x1(%rbp), %r10d
movb (%r14,%r10), %r10b
cmpb (%r13,%rbp), %r10b
jne 0x406b
cmpl %ebp, %r11d
sete %r9b
cmpb %cl, %r10b
setne %r10b
andb %r9b, %r10b
movzbl %r10b, %r9d
addl %r9d, %r11d
incq %rbp
jmp 0x4010
xorl %esi, %ebp
movl %r8d, %r11d
testw $0xff00, %bp            # imm = 0xFF00
je 0x406b
pushq $0x2
popq %r11
testl $0xff0000, %ebp         # imm = 0xFF0000
je 0x406b
cmpl $0x1000000, %ebp        # imm = 0x1000000
pushq $0x4
popq %r11
sbbl $0x0, %r11d
movl %r11d, %r9d
addq %r9, %rbx
cmpq %rax, %rbx
jbe 0x4000
jmp 0x40bd
cmpl $0x16, %r15d
movl %edx, (%rsp)
ja 0x40d2
movl (%r14), %eax
movl %eax, 0x4(%rsp)
leaq 0x20(%rsp), %rdi
xorl %r12d, %r12d
movl $0x10000, %edx          # imm = 0x10000
xorl %esi, %esi
callq 0x3100
movl (%rsp), %edx
leal -0x1(%r15), %ebp
cmpq %r12, %rbp
je 0x4120
movzwl (%r14,%r12), %eax
movb $0x1, 0x20(%rsp,%rax)
incq %r12
jmp 0x40a3
addq %rdx, %rbx
movq %rbx, %r12
movq %r12, %rax
addq $0x10028, %rsp          # imm = 0x10028
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movl (%r14), %eax
movl %eax, 0x4(%rsp)
leaq 0x20(%rsp), %rdi
xorl %r12d, %r12d
cmpl $0x2c8, %r15d           # imm = 0x2C8
ja 0x41a9
movl $0x10000, %edx          # imm = 0x10000
xorl %esi, %esi
callq 0x3100
leal -0x3(%r15), %r13d
movl (%rsp), %edx
cmpq %r12, %r13
je 0x421c
movl (%r14,%r12), %eax
movzwl %ax, %ecx
shrl $0x10, %eax
xorl %eax, %ecx
movb $0x1, 0x20(%rsp,%rcx)
incq %r12
jmp 0x4101
leal -0x3(%r15), %esi
pushq $0x1
popq %rdi
xorl %r13d, %r13d
movl %esi, 0x8(%rsp)
cmpl %edx, %r13d
ja 0x3f56
leal (%r15,%r13), %eax
addl $-0x2, %eax
movzwl (%rbx,%rax), %eax
cmpb $0x0, 0x20(%rsp,%rax)
movl %ebp, %ecx
je 0x41a4
leal (%r15,%r13), %eax
leal -0x4(%rax), %ecx
movzwl (%rbx,%rcx), %ecx
movzbl 0x20(%rsp,%rcx), %ecx
addl $-0x3, %eax
movzwl (%rbx,%rax), %eax
movzbl 0x20(%rsp,%rax), %eax
addl %ecx, %eax
movl %esi, %ecx
cmpl $0x2, %eax
jb 0x41a4
movl %r13d, %r12d
movl %edi, %ecx
movl 0x4(%rsp), %eax
cmpl %eax, (%rbx,%r12)
jne 0x41a4
addq %rbx, %r12
movq %r12, %rdi
movq %r14, %rsi
movl %r15d, %edx
callq 0x4388
pushq $0x1
popq %rdi
movl 0x8(%rsp), %esi
movl (%rsp), %edx
movl %edi, %ecx
testl %eax, %eax
je 0x40bd
addl %ecx, %r13d
jmp 0x412e
movl $0x2000, %edx           # imm = 0x2000
xorl %esi, %esi
callq 0x3100
movq %r14, %rdi
callq 0x43ab
movl %eax, %edx
leal -0xb(%r15), %r8d
pushq $0x1
popq %r9
movl $0x7f807f, %esi         # imm = 0x7F807F
cmpq %r12, %r8
je 0x42a6
movl %edx, %eax
shrl $0x10, %eax
movzwl %dx, %edi
xorl %eax, %edi
movl %edi, %ecx
andb $0x7, %cl
movl %r9d, %eax
shll %cl, %eax
shrl $0x3, %edi
orb %al, 0x20(%rsp,%rdi)
movzbl (%r14,%r12), %eax
movzbl 0xc(%r14,%r12), %ecx
imull $0xfffafdf0, %eax, %eax # imm = 0xFFFAFDF0
addl %edx, %eax
addl $0x7f807f00, %eax       # imm = 0x7F807F00
xorl %edx, %edx
divl %esi
shll $0x8, %edx
orl %edx, %ecx
movl %ecx, %eax
xorl %edx, %edx
divl %esi
incq %r12
jmp 0x41cc
movl %r15d, %esi
leal -0x7(%r15), %edi
pushq $0x1
popq %r8
xorl %ebp, %ebp
movq %rsi, 0x8(%rsp)
movl %edi, 0x10(%rsp)
cmpl %edx, %ebp
ja 0x3f56
movl -0x4(%rbx,%rsi), %eax
movzwl %ax, %ecx
shrl $0x10, %eax
xorl %eax, %ecx
cmpb $0x0, 0x20(%rsp,%rcx)
movl %r13d, %ecx
je 0x42a2
movl %ebp, %r12d
addq %rbx, %r12
movl -0x8(%rsi,%r12), %eax
movzwl %ax, %ecx
shrl $0x10, %eax
xorl %eax, %ecx
cmpb $0x0, 0x20(%rsp,%rcx)
movl %edi, %ecx
je 0x42a2
movl %r8d, %ecx
movl 0x4(%rsp), %eax
cmpl %eax, (%r12)
jne 0x42a2
movq %r12, %rdi
movq %r14, %rsi
movl %r15d, %edx
callq 0x4388
pushq $0x1
popq %r8
movl 0x10(%rsp), %edi
movq 0x8(%rsp), %rsi
movl (%rsp), %edx
movl %r8d, %ecx
testl %eax, %eax
je 0x40bd
addl %ecx, %ebp
jmp 0x4232
movq %r8, 0x10(%rsp)
movl %r15d, %r12d
leaq (%rbx,%r12), %rdi
addq $-0xc, %rdi
callq 0x43ab
movl %eax, %r13d
leaq (%rbx,%r12), %rax
addq $-0xb, %rax
movq %rax, 0x18(%rsp)
leal (%r15,%r15), %eax
movq %rax, 0x8(%rsp)
xorl %ebp, %ebp
movl (%rsp), %esi
cmpl %esi, %ebp
ja 0x3f56
movl %r13d, %eax
shrl $0x10, %eax
movzwl %r13w, %ecx
xorl %eax, %ecx
movl %ecx, %eax
shrl $0x3, %eax
movzbl 0x20(%rsp,%rax), %eax
andl $0x7, %ecx
btl %ecx, %eax
movl %ebp, %r12d
jae 0x4367
movl 0x4(%rsp), %eax
cmpl %eax, (%rbx,%r12)
jne 0x4328
addq %rbx, %r12
movq %r12, %rdi
movq %r14, %rsi
movl %r15d, %edx
callq 0x4388
movl (%rsp), %esi
testl %eax, %eax
je 0x40bd
movq 0x8(%rsp), %rcx
leal (%rcx,%rbp), %eax
addl %ebp, %ecx
addl $-0xc, %ecx
movzbl (%rbx,%rcx), %edx
movzbl (%rbx,%rax), %ecx
imull $0xfffafdf0, %edx, %eax # imm = 0xFFFAFDF0
addl %r13d, %eax
addl $0x7f807f00, %eax       # imm = 0x7F807F00
xorl %edx, %edx
movl $0x7f807f, %edi         # imm = 0x7F807F
divl %edi
shll $0x8, %edx
orl %edx, %ecx
movl %ecx, %eax
xorl %edx, %edx
divl %edi
pushq $0x1
popq %rax
movl %edx, %r13d
jmp 0x437f
addq 0x18(%rsp), %r12
movq %r12, %rdi
callq 0x43ab
movl (%rsp), %esi
movl %eax, %r13d
movq 0x10(%rsp), %rax
addl %ebp, %eax
movl %eax, %ebp
jmp 0x42d9