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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xc
push ebx
push esi
mov esi, ecx
mov dword [ebp - 8], esi
push edi
test esi, esi
jne 0x47756d
call fcn.00476ab0
mov edi, dword [0x56161c]
push edi
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov esi, eax
test esi, esi
jne 0x477551
push 0xc08
call fcn.004bb5d5
add esp, 4
mov esi, eax
push 0xc08
push 0
push esi
call fcn.004c13c0
add esp, 0xc
push esi
push edi
call dword [sym.imp.KERNEL32.dll_TlsSetValue]
push str.mm_open
mov dword [esi], 0x2000000
call fcn.004768f0
add esp, 4
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
sub esp, 8
mov dl, 1
xor edi, edi
xor ebx, ebx
call fcn.0047d060
add esp, 8
test eax, eax
je 0x47758b
mov ebx, 0x529b80
mov edi, eax
jmp 0x477590
call fcn.00476ab0
sub esp, 8
mov ecx, esi
call fcn.0047b6d0
add esp, 8
test eax, eax
je 0x4775aa
mov ebx, 0x529b84
mov edi, eax
jmp 0x4775af
call fcn.00476ab0
sub esp, 8
mov ecx, esi
call fcn.0047f250
mov esi, eax
add esp, 8
mov dword [ebp - 4], esi
test esi, esi
je 0x4776d9
test ebx, ebx
je 0x4776d0
mov edx, 0x529b80
mov ecx, ebx
mov al, byte [ecx]
cmp al, byte [edx]
jne 0x4775f8
test al, al
je 0x4775f4
mov al, byte [ecx + 1]
cmp al, byte [edx + 1]
jne 0x4775f8
add ecx, 2
add edx, 2
test al, al
jne 0x4775d8
xor eax, eax
jmp 0x4775fd
sbb eax, eax
or eax, 1
test eax, eax
jne 0x477672
cmp dword [esi + 0xc], eax
je 0x477637
mov eax, dword [esi + 0x28]
push esi
call eax
add esp, 4
cmp dword [0x561618], 0
je 0x4776de
push str.mm_open:_Ignoring_secondary_GPT_Partition_n
call fcn.004bdd06
add eax, 0x40
push eax
call fcn.00479b20
add esp, 8
jmp 0x4776de
test eax, eax
jne 0x477672
mov esi, dword [edi + 0x20]
test esi, esi
je 0x47766f
mov eax, dword [esi + 0x20]
test eax, eax
je 0x477668
push 0xa
push str.GPT_Safety
push eax
call fcn.004bce70
add esp, 0xc
test eax, eax
jne 0x477668
cmp dword [esi + 0x14], eax
ja 0x477668
cmp dword [esi + 0x10], 0x3f
jbe 0x4776ae
mov esi, dword [esi + 8]
test esi, esi
jne 0x477642
mov esi, dword [ebp - 4]
mov eax, dword [edi + 0x28]
push edi
call eax
mov eax, dword [esi + 0x28]
add esp, 4
push esi
call eax
add esp, 4
call fcn.00476ab0
mov ecx, 0x4000000
call fcn.00476850
push 0
push 0
push ebx
push str.GPT_or__s_at__llu
call fcn.004768f0
add esp, 0x10
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
cmp dword [0x561618], 0
je 0x4776cd
push str.mm_open:_Ignoring_DOS_Safety_GPT_Partition_n
call fcn.004bdd06
add eax, 0x40
push eax
call fcn.00479b20
add esp, 8
mov esi, dword [ebp - 4]
mov ebx, 0x529c00
mov edi, esi
jmp 0x4776de
call fcn.00476ab0
mov ecx, dword [ebp - 8]
sub esp, 8
call fcn.0047dcf0
mov esi, eax
add esp, 8
test esi, esi
je 0x47773b
test ebx, ebx
jne 0x4776ff
mov ebx, 0x529c04
mov edi, esi
jmp 0x477740
mov eax, dword [edi + 0x28]
push edi
call eax
mov eax, dword [esi + 0x28]
add esp, 4
push esi
call eax
add esp, 4
call fcn.00476ab0
mov ecx, 0x4000000
call fcn.00476850
push 0
push 0
push ebx
push str.Sun_or__s_at__llu
call fcn.004768f0
add esp, 0x10
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
call fcn.00476ab0
mov ecx, dword [ebp - 8]
sub esp, 8
call fcn.0047f960
mov esi, eax
add esp, 8
test esi, esi
je 0x477798
test ebx, ebx
jne 0x47775c
mov edi, esi
jmp 0x47779d
mov eax, dword [edi + 0x28]
push edi
call eax
mov eax, dword [esi + 0x28]
add esp, 4
push esi
call eax
add esp, 4
call fcn.00476ab0
mov ecx, 0x4000000
call fcn.00476850
push 0
push 0
push ebx
push str.Mac_or__s_at__llu
call fcn.004768f0
add esp, 0x10
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
call fcn.00476ab0
test edi, edi
jne 0x4777b9
call fcn.00476ab0
mov ecx, 0x4000000
call fcn.00476850
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov eax, edi
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret