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

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x174568
mov eax, dword fs:[0]
push eax
sub esp, 0x48
mov eax, dword [0x1a700c]
xor eax, ebp
mov dword [ebp - 0x14], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov ebx, edx
mov dword [ebp - 0x48], ebx
mov edi, ecx
mov dword [ebp - 0x44], edi
mov eax, dword [edi + 0x14]
mov dword [ebp - 0x3c], eax
mov eax, dword [edi + 0x18]
mov dword [ebp - 0x50], eax
mov dword [ebp - 0x40], 0
mov dword [ebp - 0x34], 0
mov dword [ebp - 0x30], 0
call fcn.000f8c10
mov dword [ebp - 0x34], eax
call fcn.000ee7f0
test ebx, 0x4000
jne 0xf6bde
call fcn.000ee7f0
mov edi, dword [0x1aa224]
push edi
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov esi, eax
test esi, esi
jne 0xf6b8e
push 0xc08
call fcn.0015c8ae
add esp, 4
mov esi, eax
push 0xc08
push 0
push esi
call fcn.00153d90
add esp, 0xc
push esi
push edi
call dword [sym.imp.KERNEL32.dll_TlsSetValue]
push str.Invalid_FS_Type_in_yaffsfs_open
mov dword [esi], 0x8000006
call fcn.000ee5f0
add esp, 4
xor ebx, ebx
mov ecx, dword [ebp - 0x34]
lea eax, [ebp - 0x48]
push ecx
push dword [ecx]
lea ecx, [ebp - 0x34]
push eax
call fcn.000f7b90
push dword [ebp - 0x34]
call fcn.00150cad
add esp, 4
mov eax, ebx
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x14]
xor ecx, ebp
call fcn.00150cb2
mov esp, ebp
pop ebp
ret
mov ecx, 0x160
call fcn.000f2310
mov ebx, eax
mov dword [ebp - 0x38], ebx
test ebx, ebx
je 0xf6ba1
mov esi, dword [sym.imp.KERNEL32.dll_InitializeCriticalSection]
lea eax, [ebx + 0x9c]
push eax
call esi
lea eax, [ebx + 0xb8]
push eax
call esi
mov dword [ebx + 0xb4], 0
lea edx, [ebp - 0x34]
mov ecx, edi
mov dword [ebx + 0x154], 0
mov dword [ebx + 0x158], 0
call fcn.000f2d40
cmp eax, 2
je 0xf6ba1
test eax, eax
jne 0xf6c4f
lea ecx, [ebp - 0x34]
call fcn.000f32e0
cmp eax, 1
je 0xf6ba1
push 0xf
push str.flash_page_size
lea ecx, [ebp - 0x2c]
mov dword [ebp - 0x18], 0xf
mov dword [ebp - 0x1c], 0
mov byte [ebp - 0x2c], 0
call fcn.000f7890
mov edi, dword [ebp - 0x34]
lea eax, [ebp - 0x2c]
push eax
lea ecx, [ebp - 0x34]
call fcn.000f8d20
mov esi, eax
mov eax, dword [ebp - 0x34]
cmp esi, eax
je 0xf6cdd
lea edx, [esi + 0x10]
cmp dword [edx + 0x14], 0x10
mov ebx, dword [edx + 0x10]
jb 0xf6c96
mov edx, dword [edx]
cmp dword [ebp - 0x18], 0x10
lea ecx, [ebp - 0x2c]
mov eax, ebx
cmovae ecx, dword [ebp - 0x2c]
cmp dword [ebp - 0x1c], ebx
cmovb eax, dword [ebp - 0x1c]
push eax
call fcn.000f2440
add esp, 4
test eax, eax
jne 0xf6cca
mov ecx, dword [ebp - 0x1c]
cmp ecx, ebx
jae 0xf6cc3
or eax, 0xffffffff
jmp 0xf6cca
xor eax, eax
cmp ecx, ebx
setne al
test eax, eax
mov dword [ebp - 4], 0xffffffff
sets al
test al, al
je 0xf6cdf
mov eax, dword [ebp - 0x34]
mov esi, eax
cmp esi, edi
lea ecx, [ebp - 0x2c]
setne bl
call fcn.000f7790
test bl, bl
je 0xf6d41
push 0xf
push str.flash_page_size
lea ecx, [ebp - 0x2c]
mov dword [ebp - 0x18], 0xf
mov dword [ebp - 0x1c], 0
mov byte [ebp - 0x2c], 0
call fcn.000f7890
lea eax, [ebp - 0x2c]
push eax
lea ecx, [ebp - 0x34]
call fcn.000f75a0
cmp dword [eax + 0x14], 0x10
jb 0xf6d25
mov eax, dword [eax]
push eax
call fcn.0015ae06
mov ecx, dword [ebp - 0x38]
add esp, 4
mov dword [ecx + 0x118], eax
lea ecx, [ebp - 0x2c]
call fcn.000f7790
jmp 0xf6d57
mov ecx, dword [ebp - 0x3c]
mov eax, 0x800
test ecx, ecx
cmove ecx, eax
mov eax, dword [ebp - 0x38]
mov dword [eax + 0x118], ecx
push 0x10
push str.flash_spare_size
lea ecx, [ebp - 0x2c]
mov dword [ebp - 0x18], 0xf
mov dword [ebp - 0x1c], 0
mov byte [ebp - 0x2c], 0
call fcn.000f7890
mov edi, dword [ebp - 0x34]
lea eax, [ebp - 0x2c]
push eax
lea ecx, [ebp - 0x34]
call fcn.000f8d20
mov esi, eax
mov eax, dword [ebp - 0x34]
cmp esi, eax
je 0xf6de5
lea edx, [esi + 0x10]
cmp dword [edx + 0x14], 0x10
mov ebx, dword [edx + 0x10]
jb 0xf6d9e
mov edx, dword [edx]
cmp dword [ebp - 0x18], 0x10
lea ecx, [ebp - 0x2c]
mov eax, ebx
cmovae ecx, dword [ebp - 0x2c]
cmp dword [ebp - 0x1c], ebx
cmovb eax, dword [ebp - 0x1c]
push eax
call fcn.000f2440
add esp, 4
test eax, eax
jne 0xf6dd2
mov ecx, dword [ebp - 0x1c]
cmp ecx, ebx
jae 0xf6dcb
or eax, 0xffffffff
jmp 0xf6dd2
xor eax, eax
cmp ecx, ebx
setne al
test eax, eax
mov dword [ebp - 4], 0xffffffff
sets al
test al, al
je 0xf6de7
mov eax, dword [ebp - 0x34]
mov esi, eax
cmp esi, edi
lea ecx, [ebp - 0x2c]
setne bl
call fcn.000f7790
test bl, bl
je 0xf6e49
push 0x10
push str.flash_spare_size
lea ecx, [ebp - 0x2c]
mov dword [ebp - 0x18], 0xf
mov dword [ebp - 0x1c], 0
mov byte [ebp - 0x2c], 0
call fcn.000f7890
lea eax, [ebp - 0x2c]
push eax
lea ecx, [ebp - 0x34]
call fcn.000f75a0
cmp dword [eax + 0x14], 0x10
jb 0xf6e2d
mov eax, dword [eax]
push eax
call fcn.0015ae06
mov ecx, dword [ebp - 0x38]
add esp, 4
mov dword [ecx + 0x11c], eax
lea ecx, [ebp - 0x2c]
call fcn.000f7790
jmp 0xf6e5f
mov ecx, dword [ebp - 0x50]
mov eax, 0x40
test ecx, ecx
cmove ecx, eax
mov eax, dword [ebp - 0x38]
mov dword [eax + 0x11c], ecx
push 0x16
push str.flash_chunks_per_block
lea ecx, [ebp - 0x2c]
mov dword [ebp - 0x18], 0xf
mov dword [ebp - 0x1c], 0
mov byte [ebp - 0x2c], 0
call fcn.000f7890
mov edi, dword [ebp - 0x34]
lea eax, [ebp - 0x2c]
push eax
lea ecx, [ebp - 0x34]
call fcn.000f8d20
mov esi, eax
mov eax, dword [ebp - 0x34]
cmp esi, eax
je 0xf6eed
lea edx, [esi + 0x10]
cmp dword [edx + 0x14], 0x10
mov ebx, dword [edx + 0x10]
jb 0xf6ea6
mov edx, dword [edx]
cmp dword [ebp - 0x18], 0x10
lea ecx, [ebp - 0x2c]
mov eax, ebx
cmovae ecx, dword [ebp - 0x2c]
cmp dword [ebp - 0x1c], ebx
cmovb eax, dword [ebp - 0x1c]
push eax
call fcn.000f2440
add esp, 4
test eax, eax
jne 0xf6eda
mov ecx, dword [ebp - 0x1c]
cmp ecx, ebx
jae 0xf6ed3
or eax, 0xffffffff
jmp 0xf6eda
xor eax, eax
cmp ecx, ebx
setne al
test eax, eax
mov dword [ebp - 4], 0xffffffff
sets al
test al, al
je 0xf6eef
mov eax, dword [ebp - 0x34]
mov esi, eax
cmp esi, edi
lea ecx, [ebp - 0x2c]
setne bl
call fcn.000f7790
test bl, bl
je 0xf6f51
push 0x16
push str.flash_chunks_per_block
lea ecx, [ebp - 0x2c]
mov dword [ebp - 0x18], 0xf
mov dword [ebp - 0x1c], 0
mov byte [ebp - 0x2c], 0
call fcn.000f7890
lea eax, [ebp - 0x2c]
push eax
lea ecx, [ebp - 0x34]
call fcn.000f75a0
cmp dword [eax + 0x14], 0x10
jb 0xf6f35
mov eax, dword [eax]
push eax
call fcn.0015ae06
mov ebx, dword [ebp - 0x38]
lea ecx, [ebp - 0x2c]
add esp, 4
mov dword [ebx + 0x120], eax
call fcn.000f7790
jmp 0xf6f5e
mov ebx, dword [ebp - 0x38]
mov dword [ebx + 0x120], 0x40
cmp byte [ebp + 0x10], 0
mov dword [ebx + 0x124], 1
mov dword [ebx + 0x128], 0
je 0xf6f84
mov dword [ebx + 0x15c], 1
jmp 0xf6f8e
mov dword [ebx + 0x15c], 0
mov eax, dword [ebp - 0x48]
lea ecx, [ebp - 0x2c]
push 0x14
mov dword [ebx + 0x68], eax
mov eax, dword [ebp - 0x44]
push str.spare_seq_num_offset
mov dword [ebx], 0x10101010
mov dword [ebx + 0x70], 0
mov dword [ebx + 4], eax
mov dword [ebx + 8], 0
mov dword [ebx + 0xc], 0
mov dword [ebx + 0x98], 1
mov dword [ebp - 0x18], 0xf
mov dword [ebp - 0x1c], 0
mov byte [ebp - 0x2c], 0
call fcn.000f7890
mov edi, dword [ebp - 0x34]
lea eax, [ebp - 0x2c]
push eax
lea ecx, [ebp - 0x34]
call fcn.000f8d20
mov esi, eax
mov eax, dword [ebp - 0x34]
cmp esi, eax
je 0xf7050
lea edx, [esi + 0x10]
cmp dword [edx + 0x14], 0x10
mov eax, dword [edx + 0x10]
mov dword [ebp - 0x3c], eax
jb 0xf7009
mov edx, dword [edx]
cmp dword [ebp - 0x18], 0x10
lea ecx, [ebp - 0x2c]
mov ebx, dword [ebp - 0x1c]
cmovae ecx, dword [ebp - 0x2c]
cmp ebx, dword [ebp - 0x3c]
cmovb eax, ebx
push eax
call fcn.000f2440
add esp, 4
test eax, eax
jne 0xf703f
mov ecx, dword [ebp - 0x3c]
mov edx, ebx
cmp edx, ecx
jae 0xf7038
or eax, 0xffffffff
jmp 0xf703f
xor eax, eax
cmp edx, ecx
setne al
mov ebx, dword [ebp - 0x38]
mov dword [ebp - 4], 0xffffffff
test eax, eax
jns 0xf7052
mov eax, dword [ebp - 0x34]
mov esi, eax
lea ecx, [ebp - 0x2c]
call fcn.000f7790
cmp esi, edi
je 0xf71fc
push 0x14
push str.spare_seq_num_offset
lea ecx, [ebp - 0x2c]
mov dword [ebp - 0x18], 0xf
mov dword [ebp - 0x1c], 0
mov byte [ebp - 0x2c], 0
call fcn.000f7890
lea eax, [ebp - 0x2c]
push eax
lea ecx, [ebp - 0x34]
call fcn.000f75a0
cmp dword [eax + 0x14], 0x10
jb 0xf7097
mov eax, dword [eax]
push eax
call fcn.0015ae06
add esp, 4
mov dword [ebx + 0x12c], eax
lea ecx, [ebp - 0x2c]
call fcn.000f7790
push 0x13
push str.spare_obj_id_offset
lea ecx, [ebp - 0x2c]
mov dword [ebp - 0x18], 0xf
mov dword [ebp - 0x1c], 0
mov byte [ebp - 0x2c], 0
call fcn.000f7890
lea eax, [ebp - 0x2c]
push eax
lea ecx, [ebp - 0x34]
call fcn.000f75a0
cmp dword [eax + 0x14], 0x10
jb 0xf70e3
mov eax, dword [eax]
push eax
call fcn.0015ae06
add esp, 4
mov dword [ebx + 0x130], eax
lea ecx, [ebp - 0x2c]
call fcn.000f7790
push 0x15
push str.spare_chunk_id_offset
lea ecx, [ebp - 0x2c]
mov dword [ebp - 0x18], 0xf
mov dword [ebp - 0x1c], 0
mov byte [ebp - 0x2c], 0
call fcn.000f7890
lea eax, [ebp - 0x2c]
push eax
lea ecx, [ebp - 0x34]
call fcn.000f75a0
cmp dword [eax + 0x14], 0x10
jb 0xf712f
mov eax, dword [eax]
push eax
call fcn.0015ae06
add esp, 4
mov dword [ebx + 0x134], eax
lea ecx, [ebp - 0x2c]
call fcn.000f7790
mov eax, dword [ebx + 0x12c]
mov ecx, dword [ebx + 0x11c]
add eax, 4
cmp eax, ecx
ja 0xf71d3
mov eax, dword [ebx + 0x130]
add eax, 4
cmp eax, ecx
ja 0xf71d3
mov eax, dword [ebx + 0x134]
add eax, 4
cmp eax, ecx
ja 0xf71d3
mov dword [ebx + 0x138], 0
push 0
push 0
lea edx, [ebp - 0x40]
mov ecx, ebx
call fcn.000f44e0
add esp, 8
test al, al
je 0xf725d
call fcn.000ee7f0
mov ecx, 0x800000a
call fcn.000ee550
push str.See_http:__wiki.sleuthkit.org_index.php_titleYAFFS2_for_help_on_Yaffs2_configuration
push str.not_a_YAFFS_file_system__first_record_.__s
call fcn.000ee5f0
add esp, 8
cmp dword [0x1aa220], 0
je 0xf7479
push str.See_http:__wiki.sleuthkit.org_index.php_titleYAFFS2_for_help_on_Yaffs2_configuration
push str.yaffsfs_open:_invalid_first_record_n_s_n
jmp 0xf7466
call fcn.000ee7f0
mov ecx, 0x8000000
call fcn.000ee550
push str.See_http:__wiki.sleuthkit.org_index.php_titleYAFFS2_for_help_on_Yaffs2_configuration
push dword [ebx + 0x11c]
push str.yaffs2_open:_Offset_s__in_config_file_too_large_for_spare_area__size__d_.__s
call fcn.000ee5f0
jmp 0xf7476
mov eax, dword [ebx + 0x15c]
mov ecx, ebx
neg eax
push 0
sbb eax, eax
and eax, 0x190
push eax
call fcn.000f3bd0
add esp, 8
test eax, eax
je 0xf717d
call fcn.000ee7f0
mov ecx, 0x800000a
call fcn.000ee550
push str.See_http:__wiki.sleuthkit.org_index.php_titleYAFFS2_for_help_on_Yaffs2_configuration
push str.not_a_YAFFS_file_system__bad_spare_format_.__s
call fcn.000ee5f0
add esp, 8
cmp dword [0x1aa220], 0
je 0xf7479
push str.See_http:__wiki.sleuthkit.org_index.php_titleYAFFS2_for_help_on_Yaffs2_configuration
push str.yaffsfs_open:_could_not_find_valid_spare_area_format_n_s_n
jmp 0xf7466
push dword [ebp - 0x40]
call fcn.00158d47
mov edx, dword [ebp - 0x44]
add esp, 4
mov dword [ebx + 0x6c], str.Chunk
mov dword [ebx + 0x28], 0
mov dword [ebx + 0x2c], 0
mov dword [ebx + 0x18], 1
mov dword [ebx + 0x1c], 0
mov dword [ebx + 0x20], 1
mov dword [ebx + 0x24], 0
mov eax, dword [edx + 0x10]
mov dword [ebx + 0x54], eax
mov ecx, dword [ebx + 0x118]
mov dword [ebx + 0x50], ecx
mov dword [ebx + 0x58], 0
mov eax, dword [ebx + 0x11c]
mov dword [ebx + 0x5c], eax
add eax, ecx
push 0
push eax
push dword [edx + 0xc]
push dword [edx + 8]
call fcn.00171c30
mov dword [ebx + 0x30], eax
mov ecx, eax
or eax, edx
mov dword [ebx + 0x34], edx
mov dword [ebx + 0x38], 0
mov dword [ebx + 0x3c], 0
je 0xf72ed
add ecx, 0xffffffff
adc edx, 0xffffffff
jmp 0xf72fb
xorps xmm0, xmm0
movlpd qword [ebp - 0x4c], xmm0
mov edx, dword [ebp - 0x48]
mov ecx, dword [ebp - 0x4c]
cmp dword [0x1aa220], 0
mov dword [ebx + 0x40], ecx
mov dword [ebx + 0x44], edx
mov dword [ebx + 0x48], ecx
mov dword [ebx + 0x4c], edx
mov dword [ebx + 0xdc], 0xf53a0
mov dword [ebx + 0xd4], 0xf5800
mov dword [ebx + 0xd8], 0xf5650
mov dword [ebx + 0xe4], 0xf6600
mov dword [ebx + 0xe8], 0xf6610
mov dword [ebx + 0xe0], 0xf4e80
mov dword [ebx + 0xf0], 0xf62e0
mov dword [ebx + 0x100], 0xf5ac0
mov dword [ebx + 0x108], 0xf5a60
mov dword [ebx + 0xec], 0xf5c10
mov dword [ebx + 0x104], 0x134980
mov dword [ebx + 0x10c], 0xf5fe0
mov dword [ebx + 0xf8], 0xf6a20
mov dword [ebx + 0xfc], 0xf6a20
mov dword [ebx + 0xf4], 0xf6a80
je 0xf73be
push str.yaffsfs_open:_building_cache..._n
push 2
call fcn.00158e14
add esp, 4
push eax
call fcn.000a3930
add esp, 8
push 8
call fcn.0015176d
mov esi, eax
add esp, 4
mov dword [esi], 0
mov dword [esi + 4], 0
call fcn.000f8c80
mov dword [esi], eax
mov ecx, ebx
mov dword [ebx + 0x158], esi
call fcn.000f4770
cmp dword [0x1aa220], 0
je 0xf740c
push str.yaffsfs_open:_done_building_cache__n
push 2
call fcn.00158e14
add esp, 4
push eax
call fcn.000a3930
add esp, 8
mov ecx, dword [ebx + 0x28]
push dword [ebx + 0x1c]
mov eax, dword [ebx + 0x2c]
add ecx, 0xffffffff
push dword [ebx + 0x18]
adc eax, 0xffffffff
mov dword [ebx + 0x10], ecx
mov ecx, ebx
mov dword [ebx + 0x14], eax
call fcn.000ef9e0
add esp, 8
test eax, eax
jne 0xf7499
call fcn.000ee7f0
mov ecx, 0x800000a
call fcn.000ee550
push str.See_http:__wiki.sleuthkit.org_index.php_titleYAFFS2_for_help_on_Yaffs2_configuration
push str.not_a_YAFFS_file_system__no_root_directory_.__s
call fcn.000ee5f0
add esp, 8
cmp dword [0x1aa220], 0
je 0xf7479
push str.See_http:__wiki.sleuthkit.org_index.php_titleYAFFS2_for_help_on_Yaffs2_configuration
push str.yaffsfs_open:_invalid_file_system_n_s_n
push 2
call fcn.00158e14
add esp, 4
push eax
call fcn.000a3930
add esp, 0xc
mov ecx, ebx
mov dword [ebx], 0
call fcn.000f2c50
mov ecx, ebx
call fcn.000f2ca0
mov ecx, ebx
call fcn.000eee80
jmp 0xf6ba1
mov ecx, eax
call fcn.000efa90
jmp 0xf6ba3