// File: chhylp123[P]hifiasm/inter.cpp
// Function: get_utepdat_t_mem_tid(utepdat_t const*, long, long*, long*)
int64_t get_utepdat_t_mem_tid(const utepdat_t *b, int64_t tid, int64_t *mem, int64_t *mem_hab)
{
	km_stat_t kmst; memset(mem, 0, sizeof(*(mem))*6);
	if(b->hab) {
		mem[0] += ha_ovec_mem(b->hab[tid], mem_hab);
	}
	if(b->ll) {
		mem[1] += kv_mem(b->ll[tid].lo) + kv_mem(b->ll[tid].tk) + kv_mem(b->ll[tid].srt.a)+ kv_mem(b->ll[tid].tc);
	}
	if(b->buf) {
		km_stat(b->buf[tid]->km, &kmst);
		mem[2] += kmst.capacity;
	}
	if(b->gdp) {
		mem[3] += kv_mem(b->gdp[tid].l) + kv_mem(b->gdp[tid].swap) + kv_mem(b->gdp[tid].dst) + kv_mem(b->gdp[tid].out)
			+ kv_mem(b->gdp[tid].path) + kv_mem(b->gdp[tid].v) + kv_mem(b->gdp[tid].f) + kv_mem(b->gdp[tid].dst_done);
	}
	if(b->mzs) {
		mem[4] += kv_mem(b->mzs[tid]);
	}
	if(b->sps) {
		mem[5] += kv_mem(b->sps[tid]);
	}
	return mem[0] + mem[1] + mem[2] + mem[3] + mem[4] + mem[5];
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x50, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq %rcx, -0x20(%rbp)
movq -0x18(%rbp), %rdi
xorl %esi, %esi
movl $0x30, %edx
callq 0x2100
movq -0x8(%rbp), %rax
cmpq $0x0, 0x80(%rax)
je 0x2b089f
movq -0x8(%rbp), %rax
movq 0x80(%rax), %rax
movq -0x10(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
movq -0x20(%rbp), %rsi
callq 0x15070
movq %rax, %rcx
movq -0x18(%rbp), %rax
addq (%rax), %rcx
movq %rcx, (%rax)
movq -0x8(%rbp), %rax
cmpq $0x0, 0x88(%rax)
je 0x2b0925
movq -0x8(%rbp), %rax
movq 0x88(%rax), %rax
imulq $0x68, -0x10(%rbp), %rcx
addq %rcx, %rax
imulq $0x1c, 0x10(%rax), %rcx
movq -0x8(%rbp), %rax
movq 0x88(%rax), %rax
imulq $0x68, -0x10(%rbp), %rdx
addq %rdx, %rax
imulq $0x1c, 0x28(%rax), %rax
addq %rax, %rcx
movq -0x8(%rbp), %rax
movq 0x88(%rax), %rax
imulq $0x68, -0x10(%rbp), %rdx
addq %rdx, %rax
movq 0x50(%rax), %rax
shlq $0x3, %rax
addq %rax, %rcx
movq -0x8(%rbp), %rax
movq 0x88(%rax), %rax
imulq $0x68, -0x10(%rbp), %rdx
addq %rdx, %rax
imulq $0x34, 0x40(%rax), %rax
addq %rax, %rcx
movq -0x18(%rbp), %rax
addq 0x8(%rax), %rcx
movq %rcx, 0x8(%rax)
movq -0x8(%rbp), %rax
cmpq $0x0, 0x78(%rax)
je 0x2b095c
movq -0x8(%rbp), %rax
movq 0x78(%rax), %rax
movq -0x10(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq (%rax), %rdi
leaq -0x48(%rbp), %rsi
callq 0x30e830
movq -0x48(%rbp), %rcx
movq -0x18(%rbp), %rax
addq 0x10(%rax), %rcx
movq %rcx, 0x10(%rax)
movq -0x8(%rbp), %rax
cmpq $0x0, 0x90(%rax)
je 0x2b0a7c
movq -0x8(%rbp), %rax
movq 0x90(%rax), %rax
imulq $0xc0, -0x10(%rbp), %rcx
addq %rcx, %rax
imulq $0x28, 0x10(%rax), %rcx
movq -0x8(%rbp), %rax
movq 0x90(%rax), %rax
imulq $0xc0, -0x10(%rbp), %rdx
addq %rdx, %rax
imulq $0x28, 0x28(%rax), %rax
addq %rax, %rcx
movq -0x8(%rbp), %rax
movq 0x90(%rax), %rax
imulq $0xc0, -0x10(%rbp), %rdx
addq %rdx, %rax
imulq $0x30, 0x40(%rax), %rax
addq %rax, %rcx
movq -0x8(%rbp), %rax
movq 0x90(%rax), %rax
imulq $0xc0, -0x10(%rbp), %rdx
addq %rdx, %rax
movq 0x58(%rax), %rax
shlq $0x3, %rax
addq %rax, %rcx
movq -0x8(%rbp), %rax
movq 0x90(%rax), %rax
imulq $0xc0, -0x10(%rbp), %rdx
addq %rdx, %rax
imulq $0xc, 0x70(%rax), %rax
addq %rax, %rcx
movq -0x8(%rbp), %rax
movq 0x90(%rax), %rax
imulq $0xc0, -0x10(%rbp), %rdx
addq %rdx, %rax
movq 0x80(%rax), %rax
shlq $0x3, %rax
addq %rax, %rcx
movq -0x8(%rbp), %rax
movq 0x90(%rax), %rax
imulq $0xc0, -0x10(%rbp), %rdx
addq %rdx, %rax
movq 0x98(%rax), %rax
shlq $0x3, %rax
addq %rax, %rcx
movq -0x8(%rbp), %rax
movq 0x90(%rax), %rax
imulq $0xc0, -0x10(%rbp), %rdx
addq %rdx, %rax
movq 0xb0(%rax), %rax
shlq $0x3, %rax
addq %rax, %rcx
movq -0x18(%rbp), %rax
addq 0x18(%rax), %rcx
movq %rcx, 0x18(%rax)
movq -0x8(%rbp), %rax
cmpq $0x0, 0x60(%rax)
je 0x2b0aad
movq -0x8(%rbp), %rax
movq 0x60(%rax), %rax
movq -0x10(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movl 0x4(%rax), %eax
imulq $0x18, %rax, %rcx
movq -0x18(%rbp), %rax
addq 0x20(%rax), %rcx
movq %rcx, 0x20(%rax)
movq -0x8(%rbp), %rax
cmpq $0x0, 0x68(%rax)
je 0x2b0adc
movq -0x8(%rbp), %rax
movq 0x68(%rax), %rax
imulq $0x18, -0x10(%rbp), %rcx
addq %rcx, %rax
movq 0x8(%rax), %rcx
shlq $0x3, %rcx
movq -0x18(%rbp), %rax
addq 0x28(%rax), %rcx
movq %rcx, 0x28(%rax)
movq -0x18(%rbp), %rax
movq (%rax), %rax
movq -0x18(%rbp), %rcx
addq 0x8(%rcx), %rax
movq -0x18(%rbp), %rcx
addq 0x10(%rcx), %rax
movq -0x18(%rbp), %rcx
addq 0x18(%rcx), %rax
movq -0x18(%rbp), %rcx
addq 0x20(%rcx), %rax
movq -0x18(%rbp), %rcx
addq 0x28(%rcx), %rax
addq $0x50, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)