// File: attractivechaos[P]udb2/stb/./stb.h
// Function: stb_readdir_rec
static char **stb_readdir_rec(char **sofar, char *dir, char *filespec)
{
   char **files;
   char ** dirs;
   char **p;

   if (stb_arr_len(sofar) >= stb__rec_max) return sofar;

   files = stb_readdir_files_mask(dir, filespec);
   stb_arr_for(p, files) {
      stb_arr_push(sofar, strdup(*p));
      if (stb_arr_len(sofar) >= stb__rec_max) break;
   }
   stb_readdir_free(files);
   if (stb_arr_len(sofar) >= stb__rec_max) return sofar;

   dirs = stb_readdir_subdirs(dir);
   stb_arr_for(p, dirs)
      sofar = stb_readdir_rec(sofar, *p, filespec);
   stb_readdir_free(dirs);
   return sofar;
}

// Assembly:
subq $0xa8, %rsp
movq %rdi, 0x98(%rsp)
movq %rsi, 0x90(%rsp)
movq %rdx, 0x88(%rsp)
cmpq $0x0, 0x98(%rsp)
je 0xfb4b
movq 0x98(%rsp), %rax
movl -0x10(%rax), %eax
movl %eax, 0x6c(%rsp)
jmp 0xfb53
xorl %eax, %eax
movl %eax, 0x6c(%rsp)
jmp 0xfb53
movl 0x6c(%rsp), %eax
cmpl 0x16813(%rip), %eax     # 0x26370
jl 0xfb74
movq 0x98(%rsp), %rax
movq %rax, 0xa0(%rsp)
jmp 0xfe32
movq 0x90(%rsp), %rdi
movq 0x88(%rsp), %rsi
callq 0xfa80
movq %rax, 0x80(%rsp)
movq 0x80(%rsp), %rax
movq %rax, 0x70(%rsp)
movq 0x70(%rsp), %rax
movq %rax, 0x58(%rsp)
movq 0x80(%rsp), %rax
movq %rax, 0x60(%rsp)
cmpq $0x0, 0x80(%rsp)
je 0xfbd1
movq 0x80(%rsp), %rax
movl -0x10(%rax), %eax
movl %eax, 0x54(%rsp)
jmp 0xfbd9
xorl %eax, %eax
movl %eax, 0x54(%rsp)
jmp 0xfbd9
movq 0x58(%rsp), %rax
movq 0x60(%rsp), %rcx
movl 0x54(%rsp), %edx
movslq %edx, %rdx
shlq $0x3, %rdx
addq %rdx, %rcx
cmpq %rcx, %rax
jae 0xfd23
movq 0x70(%rsp), %rax
movq (%rax), %rdi
callq 0x2390
movq %rax, 0x48(%rsp)
cmpq $0x0, 0x98(%rsp)
je 0xfc28
movq 0x98(%rsp), %rax
movl -0x10(%rax), %eax
movl %eax, 0x44(%rsp)
jmp 0xfc30
xorl %eax, %eax
movl %eax, 0x44(%rsp)
jmp 0xfc30
movl 0x44(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x40(%rsp)
cmpq $0x0, 0x98(%rsp)
je 0xfc57
movq 0x98(%rsp), %rax
movl -0xc(%rax), %eax
movl %eax, 0x3c(%rsp)
jmp 0xfc5f
xorl %eax, %eax
movl %eax, 0x3c(%rsp)
jmp 0xfc5f
movl 0x40(%rsp), %eax
movl 0x3c(%rsp), %ecx
cmpl %ecx, %eax
jle 0xfc84
leaq 0x98(%rsp), %rdi
movl $0x8, %esi
movl $0x1, %edx
callq 0x8030
jmp 0xfc95
movq 0x98(%rsp), %rax
movl -0x10(%rax), %ecx
addl $0x1, %ecx
movl %ecx, -0x10(%rax)
movq 0x98(%rsp), %rax
movq %rax, 0x30(%rsp)
cmpq $0x0, 0x98(%rsp)
je 0xfcbe
movq 0x98(%rsp), %rax
movl -0x10(%rax), %eax
movl %eax, 0x2c(%rsp)
jmp 0xfcc6
xorl %eax, %eax
movl %eax, 0x2c(%rsp)
jmp 0xfcc6
movq 0x30(%rsp), %rax
movq 0x48(%rsp), %rdx
movl 0x2c(%rsp), %ecx
movslq %ecx, %rcx
movq %rdx, -0x8(%rax,%rcx,8)
cmpq $0x0, 0x98(%rsp)
je 0xfcf8
movq 0x98(%rsp), %rax
movl -0x10(%rax), %eax
movl %eax, 0x28(%rsp)
jmp 0xfd00
xorl %eax, %eax
movl %eax, 0x28(%rsp)
jmp 0xfd00
movl 0x28(%rsp), %eax
cmpl 0x16666(%rip), %eax     # 0x26370
jl 0xfd0e
jmp 0xfd23
jmp 0xfd10
movq 0x70(%rsp), %rax
addq $0x8, %rax
movq %rax, 0x70(%rsp)
jmp 0xfb9e
movq 0x80(%rsp), %rdi
callq 0xf5c0
cmpq $0x0, 0x98(%rsp)
je 0xfd4c
movq 0x98(%rsp), %rax
movl -0x10(%rax), %eax
movl %eax, 0x24(%rsp)
jmp 0xfd54
xorl %eax, %eax
movl %eax, 0x24(%rsp)
jmp 0xfd54
movl 0x24(%rsp), %eax
cmpl 0x16612(%rip), %eax     # 0x26370
jl 0xfd75
movq 0x98(%rsp), %rax
movq %rax, 0xa0(%rsp)
jmp 0xfe32
movq 0x90(%rsp), %rdi
callq 0xfa60
movq %rax, 0x78(%rsp)
movq 0x78(%rsp), %rax
movq %rax, 0x70(%rsp)
movq 0x70(%rsp), %rax
movq %rax, 0x10(%rsp)
movq 0x78(%rsp), %rax
movq %rax, 0x18(%rsp)
cmpq $0x0, 0x78(%rsp)
je 0xfdbb
movq 0x78(%rsp), %rax
movl -0x10(%rax), %eax
movl %eax, 0xc(%rsp)
jmp 0xfdc3
xorl %eax, %eax
movl %eax, 0xc(%rsp)
jmp 0xfdc3
movq 0x10(%rsp), %rax
movq 0x18(%rsp), %rcx
movl 0xc(%rsp), %edx
movslq %edx, %rdx
shlq $0x3, %rdx
addq %rdx, %rcx
cmpq %rcx, %rax
jae 0xfe18
movq 0x98(%rsp), %rdi
movq 0x70(%rsp), %rax
movq (%rax), %rsi
movq 0x88(%rsp), %rdx
callq 0xfb10
movq %rax, 0x98(%rsp)
movq 0x70(%rsp), %rax
addq $0x8, %rax
movq %rax, 0x70(%rsp)
jmp 0xfd91
movq 0x78(%rsp), %rdi
callq 0xf5c0
movq 0x98(%rsp), %rax
movq %rax, 0xa0(%rsp)
movq 0xa0(%rsp), %rax
addq $0xa8, %rsp
retq
nopw %cs:(%rax,%rax)