Function at 0x556b30
Capabilities:
Get thread local storage value
Set thread local storage value

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x88
mov rax, qword [rsp + 0xf0]
movsxd r13, ecx
movsxd r14, edx
mov qword [rsp + 0x50], rax
mov r12, r8
lea rax, [r13*4]
mov rbp, r13
mov rbx, r14
mov rdi, r9
mov qword [rsp + 0x48], rax
lea r15, [r14*4]
cmp r13d, 1
jle 0x557247
mov rsi, qword [rsp + 0x48]
mov rcx, r9
mov edx, 0xffffffff
mov r8, rsi
call sub.msvcrt.dll_memset
mov rcx, qword [rsp + 0x50]
mov r8, r15
mov edx, 0xffffffff
call sub.msvcrt.dll_memset
mov rcx, rsi
call fcn.004996e0
mov qword [rsp + 0x28], r14
mov r10, rsi
lea rsi, [r12 + rsi]
mov r13, rax
lea eax, [rbp - 1]
mov qword [rsp + 0x30], r15
mov r15, qword [rsp + 0x50]
mov dword [rsp + 0x5c], eax
movsxd r9, eax
nop dword [rax + rax]
mov r8d, dword [r12 + r9*4]
mov r14d, r9d
mov rax, r15
xor r11d, r11d
cmp ebx, 1
jle 0x556c1e
lea rdx, [rsi + r9*4]
xor r11d, r11d
mov eax, 1
nop word cs:[rax + rax]
mov ecx, dword [rdx]
cmp ecx, r8d
jge 0x556c0d
mov r8d, ecx
mov r11d, eax
add eax, 1
add rdx, r10
cmp ebx, eax
jne 0x556c00
movsxd rax, r11d
lea rax, [r15 + rax*4]
mov dword [r13 + r9*4], r8d
mov edx, dword [rax]
cmp edx, 0xffffffff
je 0x556e2b
test edx, edx
js 0x556c3b
mov ecx, 0xfffffffe
sub ecx, edx
mov dword [rax], ecx
mov dword [rdi + r9*4], 0xffffffff
sub r9, 1
test r9d, r9d
jns 0x556bd8
mov r14, qword [rsp + 0x28]
mov r15, qword [rsp + 0x30]
mov rax, r14
shr rax, 0x3e
jne 0x55728e
mov rcx, r15
call fcn.004996e0
mov qword [rsp + 0x78], rax
test ebx, ebx
jle 0x556ecc
xor eax, eax
lea r11d, [rbp - 2]
mov dword [rsp + 0x30], ebx
lea esi, [rbx - 1]
mov qword [rsp + 0x38], rdi
mov rbx, qword [rsp + 0x50]
xor r9d, r9d
xor r10d, r10d
lea r14, [r13 + 4]
add r11, 2
mov r15d, 0xfffffffe
mov edi, eax
jmp 0x556cc5
jge 0x556e37
mov eax, r15d
sub eax, ecx
mov dword [rbx + r9*4], eax
lea rax, [r9 + 1]
add r10d, ebp
cmp rsi, r9
je 0x556ce9
mov r9, rax
movsxd rcx, dword [rbx + r9*4]
cmp ecx, 0xffffffff
jne 0x556ca7
mov rcx, qword [rsp + 0x78]
movsxd rax, edi
add r10d, ebp
add edi, 1
mov dword [rcx + rax*4], r9d
lea rax, [r9 + 1]
cmp rsi, r9
jne 0x556cc2
mov ebx, dword [rsp + 0x30]
mov edx, 0
mov esi, edi
mov dword [rsp + 0x28], edi
mov dword [rsp + 0x58], 0
mov rdi, qword [rsp + 0x38]
mov eax, ebx
sub eax, ebp
cmp ebp, ebx
cmovge eax, edx
lea edx, [rbp - 2]
lea r15, [rdx + 2]
cmp esi, eax
je 0x556ecc
mov dword [rsp + 0x30], ebp
mov qword [rsp + 0x38], r12
mov r12, qword [rsp + 0x78]
mov eax, dword [rsp + 0x28]
test eax, eax
jle 0x556e8e
mov dword [rsp + 0x44], 0
xor esi, esi
nop dword [rax]
movsxd rax, esi
mov rcx, qword [rsp + 0x38]
lea r14d, [rsi + 1]
xor r10d, r10d
lea rbp, [r12 + rax*4]
mov eax, dword [rsp + 0x30]
mov r11d, 0xffffffff
mov ebx, dword [rbp]
imul eax, ebx
cdqe
lea r9, [rcx + rax*4]
mov eax, 1
mov ecx, 0x7fffffff
mov r8d, dword [r9]
sub r8d, dword [r13]
jmp 0x556d9d
mov r11d, r10d
mov ecx, r8d
mov r10d, eax
mov r8d, edx
add rax, 1
cmp r15, rax
je 0x556dbd
mov edx, dword [r9 + rax*4]
sub edx, dword [r13 + rax*4]
cmp edx, ecx
jge 0x556d94
cmp edx, r8d
jle 0x556d88
mov r11d, eax
add rax, 1
mov ecx, edx
cmp r15, rax
jne 0x556d9d
movsxd rax, r10d
shl rax, 2
lea rdx, [rdi + rax]
mov r9d, dword [rdx]
cmp r11d, 0xffffffff
je 0x556ef1
cmp r8d, ecx
jge 0x556f19
sub ecx, r8d
sub dword [r13 + rax], ecx
test r9d, r9d
js 0x556f11
mov dword [rbp], r9d
mov rcx, qword [rsp + 0x50]
movsxd rax, ebx
mov dword [rcx + rax*4], r10d
mov dword [rdx], ebx
cmp esi, dword [rsp + 0x28]
jl 0x556d48
cmp dword [rsp + 0x58], 1
je 0x556f40
mov eax, dword [rsp + 0x44]
mov dword [rsp + 0x58], 1
mov dword [rsp + 0x28], eax
jmp 0x556d2b
mov dword [rax], r14d
mov dword [rdi + r9*4], r11d
jmp 0x556c43
xor eax, eax
test ecx, ecx
sete al
add eax, r10d
test ecx, ecx
cdqe
mov r8d, dword [r12 + rax*4]
mov rax, r13
cmove rax, r14
sub r8d, dword [rax]
mov eax, 1
nop dword [rax + rax]
cmp ecx, eax
je 0x556e7b
lea edx, [r10 + rax]
movsxd rdx, edx
mov edx, dword [r12 + rdx*4]
sub edx, dword [r13 + rax*4]
cmp r8d, edx
cmovg r8d, edx
add rax, 1
cmp r11, rax
jne 0x556e60
sub dword [r13 + rcx*4], r8d
jmp 0x556cb6
mov rdi, qword [rsp + 0x48]
mov rcx, rdi
call fcn.004996e0
mov rcx, rdi
mov r14, rax
call fcn.004996e0
mov rcx, rdi
mov r15, rax
call fcn.004996e0
mov r10, rax
mov rcx, r10
call fcn.004c9260
mov rcx, r15
call fcn.004c9260
mov rcx, r14
call fcn.004c9260
mov rcx, r13
call fcn.004c9260
mov rcx, qword [rsp + 0x78]
add rsp, 0x88
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
jmp fcn.004c9260
mov eax, r9d
test r9d, r9d
js 0x556f11
movsxd rcx, dword [rsp + 0x44]
mov esi, r14d
mov dword [r12 + rcx*4], eax
lea eax, [rcx + 1]
mov dword [rsp + 0x44], eax
jmp 0x556df3
mov esi, r14d
jmp 0x556df3
mov esi, r14d
test r9d, r9d
js 0x556df3
movsxd rax, r11d
mov r10d, r11d
lea rdx, [rdi + rax*4]
mov eax, dword [rdx]
test eax, eax
jns 0x556ef9
jmp 0x556df3
mov rsi, qword [rsp + 0x48]
mov ebp, dword [rsp + 0x30]
mov r12, qword [rsp + 0x38]
mov rcx, rsi
call fcn.004996e0
mov rcx, rsi
mov r14, rax
call fcn.004996e0
mov rcx, rsi
mov r15, rax
call fcn.004996e0
mov r10, rax
mov eax, dword [rsp + 0x44]
test eax, eax
je 0x556eb4
mov rsi, qword [rsp + 0x78]
sub eax, 1
lea rax, [rsi + rax*4 + 4]
mov qword [rsp + 0x48], rsi
mov qword [rsp + 0x68], rax
mov eax, dword [rsp + 0x5c]
mov qword [rsp + 0x60], rax
lea rax, [r10 + 4]
mov qword [rsp + 0x70], rax
mov rax, r12
mov r12d, ebp
mov rbp, rax
nop dword [rax]
mov rax, qword [rsp + 0x48]
mov r9, qword [rsp + 0x60]
mov r8d, dword [rax]
mov eax, r8d
mov dword [rsp + 0x5c], r8d
imul eax, r12d
cdqe
lea rcx, [rbp + rax*4]
xor eax, eax
nop word [rax + rax]
mov edx, dword [rcx + rax*4]
sub edx, dword [r13 + rax*4]
mov dword [r14 + rax*4], edx
mov rdx, rax
mov dword [r15 + rax*4], r8d
mov dword [r10 + rax*4], eax
add rax, 1
cmp r9, rdx
jne 0x556fd8
mov qword [rsp + 0x28], r15
mov edx, dword [r10]
mov r9d, 0xffffffff
mov dword [rsp + 0x44], 0
mov qword [rsp + 0x30], rdi
movsxd rbx, dword [rsp + 0x44]
movsxd rcx, edx
mov esi, dword [r14 + rcx*4]
lea r8d, [rbx + 1]
lea rax, [r10 + rbx*4]
cmp r12d, r8d
jle 0x55723f
movsxd rdx, r8d
mov edi, r8d
jmp 0x557061
movsxd rcx, edi
add edi, 1
lea r11, [r10 + rcx*4]
mov ecx, esi
mov esi, dword [r11]
mov dword [r10 + rdx*4], esi
mov esi, ecx
mov dword [r11], r9d
add rdx, 1
cmp r12d, edx
jle 0x557080
movsxd rcx, dword [r10 + rdx*4]
mov r9, rcx
mov ecx, dword [r14 + rcx*4]
cmp ecx, esi
jg 0x557058
jge 0x557040
mov edi, r8d
mov r11, rax
jmp 0x55704c
mov edx, dword [rax]
mov ecx, dword [rsp + 0x44]
cmp ecx, edi
jge 0x557150
not ecx
add ecx, edi
add rbx, rcx
movsxd rcx, edx
lea r11, [r10 + rbx*4]
mov rbx, qword [rsp + 0x30]
jmp 0x5570b9
cmp r11, rax
je 0x557150
movsxd rcx, dword [rax + 4]
add rax, 4
cmp dword [rbx + rcx*4], 0xffffffff
jne 0x5570a8
mov r15, qword [rsp + 0x28]
mov rdi, rbx
mov ebx, dword [rsp + 0x44]
test ebx, ebx
jle 0x5570f7
lea edx, [rbx - 1]
mov rbx, qword [rsp + 0x70]
mov rax, r10
lea r8, [rbx + rdx*4]
nop
movsxd rdx, dword [rax]
add rax, 4
mov ecx, dword [r14 + rdx*4]
sub ecx, esi
add dword [r13 + rdx*4], ecx
cmp r8, rax
jne 0x5570e0
mov r8d, dword [rsp + 0x5c]
mov r11, qword [rsp + 0x50]
nop dword [rax]
test r9d, r9d
js 0x557276
movsxd rdx, r9d
mov ecx, r9d
mov eax, dword [r15 + rdx*4]
mov dword [rdi + rdx*4], eax
movsxd rdx, eax
lea rdx, [r11 + rdx*4]
mov r9d, dword [rdx]
mov dword [rdx], ecx
cmp r8d, eax
jne 0x557108
add qword [rsp + 0x48], 4
mov rax, qword [rsp + 0x48]
mov qword [rsp + 0x50], r11
cmp qword [rsp + 0x68], rax
jne 0x556fb0
jmp 0x556eb4
movsxd rax, r8d
mov qword [rsp + 0x38], rax
nop dword [rax + rax]
mov eax, dword [rsp + 0x38]
mov rbx, qword [rsp + 0x30]
mov dword [rsp + 0x58], eax
movsxd rax, edx
mov r15d, dword [rbx + rax*4]
mov ebx, r12d
imul ebx, r15d
add edx, ebx
movsxd rdx, edx
mov r11d, dword [rbp + rdx*4]
sub r11d, dword [r13 + rax*4]
sub r11d, esi
cmp edi, r12d
jge 0x557208
movsxd rdx, edi
jmp 0x5571a9
add rdx, 1
cmp r12d, edx
jle 0x557208
movsxd rcx, dword [r10 + rdx*4]
lea eax, [rbx + rcx]
lea r8, [r14 + rcx*4]
mov r9, rcx
cdqe
mov eax, dword [rbp + rax*4]
sub eax, dword [r13 + rcx*4]
sub eax, r11d
cmp dword [r8], eax
jle 0x5571a0
mov dword [r8], eax
mov r8, qword [rsp + 0x28]
mov dword [r8 + rcx*4], r15d
cmp eax, esi
jne 0x5571a0
mov rax, qword [rsp + 0x30]
cmp dword [rax + rcx*4], 0xffffffff
je 0x557230
movsxd rax, edi
add edi, 1
lea rax, [r10 + rax*4]
mov ecx, dword [rax]
mov dword [r10 + rdx*4], ecx
add rdx, 1
mov dword [rax], r9d
cmp r12d, edx
jg 0x5571a9
nop dword [rax]
add qword [rsp + 0x38], 1
mov rax, qword [rsp + 0x38]
mov edx, dword [r10 + rax*4 - 4]
sub eax, 1
cmp edi, eax
jne 0x557160
mov eax, dword [rsp + 0x58]
mov dword [rsp + 0x44], eax
jmp 0x557013
mov r15, qword [rsp + 0x28]
mov rdi, qword [rsp + 0x30]
jmp 0x5570c7
mov edi, r8d
jmp 0x557082
xor edx, edx
mov rcx, r9
mov r8, rax
call sub.msvcrt.dll_memset
mov rcx, qword [rsp + 0x50]
mov r8, r15
xor edx, edx
add rsp, 0x88
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
jmp sub.msvcrt.dll_memset
lea r8, str.negative_j:__d
mov edx, 0xc3
lea rcx, str.linear_assignment.c
call fcn.00494ad0
mov r8, r14
mov edx, 4
lea rcx, [0x005a7a90]
call fcn.00494770
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov rax, rdx
ret