Function at 0x100077c0
Capabilities:
Get thread local storage value
Resolve function by parsing pe exports
Set thread local storage value

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x9a4
cmp dword [0x10050928], 0
push ebx
push esi
push edi
je 0x100077f4
call fcn.100052f0
test al, al
je 0x100077f4
push 0xc
call dword [sym.imp.KERNEL32.dll_SetLastError]
xor ebx, ebx
mov eax, ebx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
call dword [sym.imp.KERNEL32.dll_GetLastError]
push dword [0x10056a08]
mov esi, eax
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
push esi
mov ebx, eax
call dword [sym.imp.KERNEL32.dll_SetLastError]
test ebx, ebx
jne 0x10007c16
mov ecx, 0x950
call fcn.10033a20
mov ebx, eax
test ebx, ebx
je 0x1000836e
xorps xmm0, xmm0
mov byte [ebx], 0
xor eax, eax
movlpd qword [esp + 0x70], xmm0
movlpd qword [esp + 0x78], xmm0
movlpd qword [esp + 0x80], xmm0
movlpd qword [esp + 0x88], xmm0
movlpd qword [esp + 0x90], xmm0
movlpd qword [esp + 0x98], xmm0
movlpd qword [esp + 0xa0], xmm0
movlpd qword [esp + 0xa8], xmm0
movlpd qword [esp + 0xb0], xmm0
movlpd qword [esp + 0xb8], xmm0
movlpd qword [esp + 0xc0], xmm0
movlpd qword [esp + 0xc8], xmm0
movlpd qword [esp + 0xd8], xmm0
movlpd qword [esp + 0xe0], xmm0
movlpd qword [esp + 0xe8], xmm0
movaps xmm0, xmmword [0x1004e200]
push 0x8c
push eax
mov word [esp + 0x12d], ax
mov byte [esp + 0x12f], al
mov dword [esp + 0x130], eax
mov dword [esp + 0x134], eax
mov byte [esp + 0x138], al
mov dword [esp + 0x150], eax
mov dword [esp + 0x154], eax
mov dword [esp + 0x158], eax
mov dword [esp + 0x15c], eax
lea eax, [esp + 0x160]
movups xmmword [esp + 0xf8], xmm0
mov word [esp + 0x70], 0
xorps xmm0, xmm0
mov byte [esp + 0x72], 0
push eax
mov dword [esp + 0xdc], 0
mov word [esp + 0x10c], 0xffff
movups xmmword [esp + 0x10e], xmm0
mov word [esp + 0x12e], 0
movups xmmword [esp + 0x11e], xmm0
mov byte [esp + 0x130], 0
movlpd qword [esp + 0x144], xmm0
movlpd qword [esp + 0x14c], xmm0
call fcn.10036180
add esp, 0xc
mov dword [esp + 0x1e4], 1
mov dword [esp + 0x1e8], 0
mov dword [esp + 0x1ec], 1
mov dword [esp + 0x1f0], 0
mov dword [esp + 0x1f4], 1
mov dword [esp + 0x1f8], 0
mov dword [esp + 0x1fc], 1
mov dword [esp + 0x200], 0
mov dword [esp + 0x204], 1
mov dword [esp + 0x208], 0
mov dword [esp + 0x20c], 1
mov dword [esp + 0x210], 0
mov dword [esp + 0x214], 1
mov dword [esp + 0x218], 0
mov dword [esp + 0x21c], 1
mov dword [esp + 0x220], 0
mov dword [esp + 0x224], 1
mov dword [esp + 0x228], 0
mov dword [esp + 0x22c], 1
mov dword [esp + 0x230], 0
mov dword [esp + 0x234], 1
mov dword [esp + 0x238], 0
mov dword [esp + 0x23c], 1
mov dword [esp + 0x240], 0
mov dword [esp + 0x244], 1
mov dword [esp + 0x248], 0
mov dword [esp + 0x24c], 1
mov dword [esp + 0x250], 0
mov dword [esp + 0x254], 1
mov dword [esp + 0x258], 0
mov dword [esp + 0x25c], 1
mov dword [esp + 0x260], 0
mov dword [esp + 0x264], 1
mov dword [esp + 0x268], 0
mov dword [esp + 0x26c], 1
xor eax, eax
mov dword [esp + 0x270], 0
push 0x6d8
xorps xmm0, xmm0
mov word [esp + 0x2a9], ax
push eax
mov byte [esp + 0x2af], al
mov dword [esp + 0x2d0], eax
lea eax, [esp + 0x2d8]
push eax
mov dword [esp + 0x280], 1
mov dword [esp + 0x284], 0
mov dword [esp + 0x288], 1
mov dword [esp + 0x28c], 0
mov dword [esp + 0x290], 1
mov dword [esp + 0x294], 0
mov dword [esp + 0x298], 1
mov dword [esp + 0x29c], 0
mov dword [esp + 0x2a0], 1
mov dword [esp + 0x2a4], 0
mov dword [esp + 0x2a8], 1
mov dword [esp + 0x2ac], 0
mov byte [esp + 0x2b0], 6
movlpd qword [esp + 0x2b4], xmm0
movlpd qword [esp + 0x2bc], xmm0
movlpd qword [esp + 0x2c4], xmm0
movlpd qword [esp + 0x2cc], xmm0
call fcn.10036180
add esp, 0xc
mov dword [esp + 0x9a8], 0
lea edi, [ebx + 8]
mov byte [esp + 0x9ac], 0
mov ecx, 0x252
lea esi, [esp + 0x68]
rep movsd dword es:[edi], dword [esi]
push ebx
push dword [0x10056a08]
call dword [sym.imp.KERNEL32.dll_TlsSetValue]
test eax, eax
je 0x1000837d
cmp byte [ebx + 0x244], 0
lea edi, [ebx + 8]
mov dword [esp + 0x2c], edi
je 0x10007c35
xor dl, dl
mov ecx, edi
call fcn.10032cd0
mov edi, eax
mov dword [esp + 0x2c], eax
mov ebx, dword [ebp + 0xc]
mov ecx, ebx
mov esi, dword [ebp + 8]
imul ecx, esi
cmp byte [edi + 0x23c], 0
mov dword [esp + 0x28], ecx
jne 0x10007fa4
test ecx, ecx
jne 0x10007c69
test esi, esi
je 0x10007c63
test ebx, ebx
je 0x10007c63
mov al, 1
test al, al
jmp 0x10007c7c
xor al, al
test al, al
jmp 0x10007c7c
mov eax, esi
or eax, ebx
test eax, 0xffff0000
je 0x10007c82
xor edx, edx
mov eax, ecx
div ebx
cmp eax, esi
jne 0x10007f90
cmp ecx, 0x1000
ja 0x10007c9d
lea eax, [ecx + 7]
shr eax, 3
movzx ebx, byte [eax + 0x10056040]
mov dword [esp + 0x10], ebx
jmp 0x10007ca8
call fcn.10001010
mov ebx, eax
mov dword [esp + 0x10], eax
cmp ebx, 0x68
jae 0x10007f90
mov eax, dword [ebx*4 + 0x10055e80]
lea esi, [edi + 0x260]
cmp eax, 0x3800
mov dword [esp + 0x18], eax
setbe byte [esp + 0x14]
cmp byte [edi + 1], 0
jne 0x10007ceb
lea ecx, [edi + 0x940]
mov edx, 0xe
push 0
call fcn.100010c0
mov eax, dword [esp + 0x1c]
add esp, 4
test esi, esi
je 0x10007ef9
cmp eax, 0x3800
ja 0x10007dd6
lea eax, [ebx*2 + 1]
add eax, ebx
lea ecx, [esi + eax*8]
mov eax, dword [ecx]
movzx edx, ax
mov dword [esp + 0x1c], ecx
mov ebx, dword [eax]
add eax, 4
cmp dx, word [ecx + 0x10]
je 0x10007d3b
mov dword [ecx], eax
mov esi, dword [esp + 0x10]
push dword [esi*4 + 0x10055e80]
push 0
push ebx
call fcn.10036180
add esp, 0xc
jmp 0x10007f13
cmp dx, word [ecx + 0x14]
je 0x10007d49
mov dword [ecx], eax
mov word [ecx + 0x10], ax
jmp 0x10007d20
push 0
xor edx, edx
mov ecx, edi
call fcn.100014e0
add esp, 4
mov dword [esp + 0x14], eax
test eax, eax
jne 0x10007d66
xor ebx, ebx
jmp 0x10007f13
mov ecx, dword [esp + 0x1c]
mov esi, dword [esi]
call fcn.100010a0
mov ecx, esi
mov bl, al
call fcn.10001610
mov esi, dword [esp + 0x10]
mov ecx, edi
push 1
test bl, bl
je 0x10007d92
mov edx, dword [esp + 0x18]
push 1
push esi
jmp 0x10007f04
mov ebx, dword [esp + 0x20]
lea edx, [edi + 0x260]
push esi
push ebx
call fcn.10031340
mov edx, dword [esp + 0x20]
lea eax, [esp + 0x2e]
add esp, 0xc
mov ecx, edi
push eax
push esi
lea eax, [edi + 0x260]
push ebx
push eax
call fcn.10030c20
add esp, 0x10
mov ebx, eax
cmp byte [esp + 0x22], 0
jne 0x10007d24
xor ebx, ebx
jmp 0x10007f13
mov ecx, dword [esi]
call fcn.10001610
cmp ebx, eax
jae 0x10007ef9
mov esi, dword [esi]
lea eax, [ebx + ebx*2]
lea ecx, [edi + 0x260]
lea ecx, [ecx + eax*8]
add ecx, 8
mov dword [esp + 0x1c], ecx
call fcn.100010a0
mov ecx, esi
mov bl, al
call fcn.10001610
test bl, bl
jne 0x10007ef5
mov ebx, dword [esp + 0x1c]
mov eax, dword [ebx]
movzx edx, ax
mov ecx, dword [eax]
add eax, 4
cmp dx, word [ebx + 0x10]
je 0x10007e28
mov dword [ebx], eax
jmp 0x10007e34
cmp dx, word [ebx + 0x14]
je 0x10007e51
mov dword [ebx], eax
mov word [ebx + 0x10], ax
mov esi, dword [esp + 0x10]
mov ebx, ecx
push dword [esi*4 + 0x10055e80]
push 0
push ecx
call fcn.10036180
add esp, 0xc
jmp 0x10007f13
push 0
xor edx, edx
mov ecx, edi
call fcn.100014e0
add esp, 4
mov dword [esp + 0x1c], eax
test eax, eax
jne 0x10007e6e
xor ebx, ebx
jmp 0x10007f13
mov esi, dword [esp + 0x10]
lea edx, [edi + 0x260]
push 0
push esi
push ebx
mov ecx, edi
call fcn.10031340
mov esi, dword [esp + 0x34]
add esp, 0xc
cmp esi, 0x1000
ja 0x10007ea8
lea eax, [esi + 7]
shr eax, 3
movzx eax, byte [eax + 0x10056040]
mov ecx, dword [eax*4 + 0x10055e80]
jmp 0x10007edc
cmp esi, 0x70000000
jbe 0x10007eb4
xor ecx, ecx
jmp 0x10007edc
lea ecx, [esi*2 - 1]
call fcn.10001000
mov ecx, 4
cmp eax, 7
jb 0x10007ecd
lea ecx, [eax - 3]
mov eax, 1
shl eax, cl
dec eax
lea ecx, [esi + eax]
not eax
and ecx, eax
mov edx, dword [esp + 0x1c]
push 1
push ecx
mov ecx, edi
call fcn.100270a0
mov ebx, eax
add esp, 8
test ebx, ebx
jne 0x10007f17
jmp 0x10007f13
mov ebx, dword [esp + 0x10]
push dword [esp + 0x14]
xor edx, edx
mov ecx, edi
push 1
push ebx
mov esi, dword [esp + 0x34]
push esi
call fcn.10011370
mov ebx, eax
add esp, 0x10
test ebx, ebx
je 0x10007f90
mov ecx, dword [esp + 0x2c]
add edi, 0x240
mov byte [esp + 0x34], 1
mov dword [esp + 0x38], edi
lea eax, [ecx + 8]
mov dword [esp + 0x3c], eax
lea eax, [ecx + 0x10]
mov dword [esp + 0x40], eax
lea eax, [ecx + 0x248]
mov dword [esp + 0x44], eax
mov edx, dword [edi]
mov ecx, edx
add ecx, dword [esp + 0x18]
mov esi, dword [edi + 4]
mov eax, esi
adc eax, 0
mov dword [edi], ecx
mov dword [edi + 4], eax
mov eax, dword [esp + 0x40]
mov ecx, dword [eax]
mov eax, dword [eax + 4]
sub ecx, edx
sbb eax, esi
xor edx, edx
cmp edx, eax
jb 0x10008365
ja 0x10007f7a
cmp dword [esp + 0x18], ecx
jb 0x10008365
mov ecx, dword [esp + 0x2c]
lea edx, [esp + 0x34]
call fcn.10032540
mov eax, ebx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov eax, dword [sym.imp.KERNEL32.dll_SetLastError]
push 0xc
call eax
xor ebx, ebx
mov eax, ebx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
test ecx, ecx
jne 0x10007fbc
test esi, esi
je 0x10007fb6
test ebx, ebx
je 0x10007fb6
mov al, 1
test al, al
jmp 0x10007fcf
xor al, al
test al, al
jmp 0x10007fcf
mov eax, esi
or eax, ebx
test eax, 0xffff0000
je 0x10007fd5
xor edx, edx
mov eax, ecx
div ebx
cmp eax, esi
jne 0x1000832f
cmp ecx, 0x1000
ja 0x10007ff0
lea eax, [ecx + 7]
shr eax, 3
movzx ebx, byte [eax + 0x10056040]
mov dword [esp + 0x10], ebx
jmp 0x10007ffb
call fcn.10001010
mov ebx, eax
mov dword [esp + 0x10], eax
cmp ebx, 0x68
jae 0x1000832f
mov al, byte [edi + 1]
xor ecx, ecx
mov edx, dword [ebx*4 + 0x10055e80]
test al, al
mov dword [esp + 0x1c], edx
setg cl
dec ecx
cmp edx, 0x3800
mov dword [esp + 0x14], ecx
setbe byte [esp + 0x30]
test al, al
jg 0x10008052
cmp byte [edi], 0
jne 0x1000803e
xor esi, esi
mov dword [esp + 0x24], esi
mov dword [esp + 0x18], esi
jmp 0x10008082
lea esi, [edi + 0x260]
mov dword [esp + 0x18], 0
mov dword [esp + 0x24], esi
jmp 0x10008082
mov edx, ecx
xor esi, esi
push 1
mov ecx, edi
mov dword [esp + 0x28], esi
call fcn.100014b0
add esp, 4
mov dword [esp + 0x18], eax
test eax, eax
jne 0x10008082
mov ecx, dword [esp + 0x14]
mov dword [esp + 0x24], esi
cmp ecx, dword [0x100582b8]
jae 0x1000832f
cmp byte [edi + 1], 0
jne 0x1000809d
lea ecx, [edi + 0x940]
mov edx, 0xe
push 0
call fcn.100010c0
add esp, 4
test esi, esi
je 0x100082a6
cmp dword [esp + 0x1c], 0x3800
ja 0x10008185
lea eax, [ebx*2 + 1]
add eax, ebx
lea ecx, [esi + eax*8]
mov eax, dword [ecx]
movzx edx, ax
mov dword [esp + 0x14], ecx
mov ebx, dword [eax]
add eax, 4
cmp dx, word [ecx + 0x10]
je 0x100080f0
mov dword [ecx], eax
mov esi, dword [esp + 0x10]
push dword [esi*4 + 0x10055e80]
push 0
push ebx
call fcn.10036180
add esp, 0xc
jmp 0x100082c2
cmp dx, word [ecx + 0x14]
je 0x100080fe
mov dword [ecx], eax
mov word [ecx + 0x10], ax
jmp 0x100080d5
mov edx, dword [esp + 0x18]
mov ecx, edi
push 0
call fcn.100014e0
add esp, 4
mov dword [esp + 0x18], eax
test eax, eax
jne 0x1000811d
xor ebx, ebx
jmp 0x100082c2
mov ecx, dword [esp + 0x14]
mov esi, dword [esi]
call fcn.100010a0
mov ecx, esi
mov bl, al
call fcn.10001610
mov esi, dword [esp + 0x10]
mov ecx, edi
push 1
test bl, bl
je 0x10008145
push 1
push esi
jmp 0x100082af
mov ebx, dword [esp + 0x28]
mov edx, ebx
push esi
push dword [esp + 0x1c]
call fcn.10031340
mov edx, dword [esp + 0x24]
lea eax, [esp + 0x2f]
add esp, 0xc
mov ecx, edi
push eax
push esi
push dword [esp + 0x1c]
push ebx
call fcn.10030c20
add esp, 0x10
mov ebx, eax
cmp byte [esp + 0x23], 0
jne 0x100080d9
xor ebx, ebx
jmp 0x100082c2
mov ecx, dword [esi]
call fcn.10001610
cmp ebx, eax
jae 0x100082a6
mov ecx, dword [esp + 0x24]
lea eax, [ebx + ebx*2]
mov esi, dword [esi]
lea ecx, [ecx + eax*8]
add ecx, 8
mov dword [esp + 0x14], ecx
call fcn.100010a0
mov ecx, esi
mov bl, al
call fcn.10001610
test bl, bl
jne 0x100082a2
mov ebx, dword [esp + 0x14]
mov eax, dword [ebx]
movzx edx, ax
mov ecx, dword [eax]
add eax, 4
cmp dx, word [ebx + 0x10]
je 0x100081d5
mov dword [ebx], eax
jmp 0x100081e1
cmp dx, word [ebx + 0x14]
je 0x100081fe
mov dword [ebx], eax
mov word [ebx + 0x10], ax
mov esi, dword [esp + 0x10]
mov ebx, ecx
push dword [esi*4 + 0x10055e80]
push 0
push ecx
call fcn.10036180
add esp, 0xc
jmp 0x100082c2
mov edx, dword [esp + 0x18]
mov ecx, edi
push 0
call fcn.100014e0
add esp, 4
mov dword [esp + 0x14], eax
test eax, eax
jne 0x1000821d
xor ebx, ebx
jmp 0x100082c2
mov esi, dword [esp + 0x10]
mov ecx, edi
mov edx, dword [esp + 0x24]
push 0
push esi
push ebx
call fcn.10031340
mov esi, dword [esp + 0x34]
add esp, 0xc
cmp esi, 0x1000
ja 0x10008255
lea eax, [esi + 7]
shr eax, 3
movzx eax, byte [eax + 0x10056040]
mov ecx, dword [eax*4 + 0x10055e80]
jmp 0x10008289
cmp esi, 0x70000000
jbe 0x10008261
xor ecx, ecx
jmp 0x10008289
lea ecx, [esi*2 - 1]
call fcn.10001000
mov ecx, 4
cmp eax, 7
jb 0x1000827a
lea ecx, [eax - 3]
mov eax, 1
shl eax, cl
dec eax
lea ecx, [esi + eax]
not eax
and ecx, eax
mov edx, dword [esp + 0x14]
push 1
push ecx
mov ecx, edi
call fcn.100270a0
mov ebx, eax
add esp, 8
test ebx, ebx
jne 0x100082c6
jmp 0x100082c2
mov ebx, dword [esp + 0x10]
push dword [esp + 0x30]
mov ecx, edi
push 1
push ebx
mov esi, dword [esp + 0x34]
mov edx, dword [esp + 0x24]
push esi
call fcn.10011370
mov ebx, eax
add esp, 0x10
test ebx, ebx
je 0x1000832f
mov ecx, dword [esp + 0x2c]
add edi, 0x240
mov byte [esp + 0x48], 1
mov dword [esp + 0x4c], edi
lea eax, [ecx + 8]
mov dword [esp + 0x50], eax
lea eax, [ecx + 0x10]
mov dword [esp + 0x54], eax
lea eax, [ecx + 0x248]
mov ecx, dword [esp + 0x1c]
mov dword [esp + 0x58], eax
xor eax, eax
mov edx, dword [edi]
add ecx, edx
mov esi, dword [edi + 4]
adc eax, esi
mov dword [edi], ecx
mov dword [edi + 4], eax
mov eax, dword [esp + 0x54]
mov ecx, dword [eax]
mov eax, dword [eax + 4]
sub ecx, edx
sbb eax, esi
xor edx, edx
cmp edx, eax
jb 0x1000833a
ja 0x10008320
cmp dword [esp + 0x1c], ecx
jb 0x1000833a
mov ecx, dword [esp + 0x2c]
lea edx, [esp + 0x48]
call fcn.10032540
jmp 0x1000833a
mov eax, dword [sym.imp.KERNEL32.dll_SetLastError]
push 0xc
call eax
xor ebx, ebx
mov eax, dword [ebp + 8]
mov edx, ebx
mov dword [esp + 0x5c], eax
mov ecx, 3
mov eax, dword [ebp + 0xc]
mov dword [esp + 0x60], eax
lea eax, [esp + 0x5c]
push eax
push ebx
mov dword [esp + 0x6c], 0
call fcn.100248b0
add esp, 8
pop edi
pop esi
mov eax, ebx
pop ebx
mov esp, ebp
pop ebp
ret
mov ecx, str._jemalloc_:_Error_allocating_TSD_n
call fcn.10027c00
call fcn.10038150
mov ecx, str._jemalloc_:_Error_setting_TSD_n
call fcn.10027c00
call fcn.10038150
int3