Function at 0x10023d5e
Capabilities:
Allocate thread local storage
Get disk information
Get thread local storage value

Disassembly:
mov eax, 0x10080ef4
call fcn.100803d8
sub esp, 0x90
push ebx
push esi
push edi
push 0
pop ebx
push 1
mov dword [ebp - 0x14], 0xf7e2799a
mov dword [ebp - 0x24], edx
mov dword [ebp - 0x28], ecx
mov dword [ebp - 0x14], 0x1d
pop edi
jmp 0x10023de2
mov dword [ebp - 0x20], 0x4d2e
mov dword [ebp - 0x18], 0xefa9
mov dword [ebp - 0x10], ebx
jmp 0x10023dae
mov eax, dword [ebp - 0x10]
mov dword [ebp + eax*4 - 0x30], 0x196a162c
inc dword [ebp - 0x10]
cmp dword [ebp - 0x10], edi
jl 0x10023da0
mov eax, dword [ebp - 0x20]
mov dword [ebp - 0x18], eax
mov eax, dword [ebp - 0x18]
mov dword [ebp - 0x30], eax
mov byte [ebp - 0x19], bl
cmp byte [ebp - 0x19], 0
je 0x10023ddf
push 0xaf6
push 0x11d5
call dword [sym.imp.USER32.dll_GetDesktopWindow]
push eax
call dword [sym.imp.USER32.dll_EnableScrollBar]
dec dword [ebp - 0x14]
cmp dword [ebp - 0x14], 0xa
jne 0x10023d8d
mov byte [ebp - 0x19], bl
cmp byte [ebp - 0x19], 0
je 0x10023df7
call dword [sym.imp.KERNEL32.dll_GetACP]
cmp byte [ebp + 0xc], 0
je 0x1002428a
mov dword [ebp - 0x10], 0x42a1
lea ecx, [ebp - 0x5c]
mov dword [ebp + 0xc], ebx
push edi
call fcn.10011da1
mov dword [ebp + 0xc], 0xbc43cc9f
mov dword [ebp + 0xc], ebx
jmp 0x10023e30
mov ecx, dword [ebp + 0xc]
mov eax, dword [ebp - 0x5c]
mov dword [eax + ecx*4], 0x4157736d
inc dword [ebp + 0xc]
cmp dword [ebp + 0xc], edi
jl 0x10023e20
push 3
mov dword [ebp + 0xc], ebx
pop esi
jmp 0x10023e4e
mov eax, dword [ebp + 0xc]
mov dword [ebp + eax*4 - 0x9c], 0xfffffffd
inc dword [ebp + 0xc]
cmp dword [ebp + 0xc], esi
jl 0x10023e3d
mov eax, dword [ebp - 0x10]
mov eax, dword [ebp - 0x10]
sub eax, dword [ebp - 0x10]
mov dword [ebp + 0xc], eax
mov eax, dword [ebp + 0xc]
mov eax, dword [ebp + 0xc]
mov eax, dword [ebp - 0x10]
mov eax, dword [ebp - 0x10]
mov eax, dword [ebp - 0x10]
mov eax, dword [ebp - 0x10]
mov eax, dword [ebp - 0x5c]
mov dword [eax], edi
mov dword [ebp + 0xc], 7
mov byte [ebp + 0xf], bl
cmp byte [ebp + 0xf], 0
je 0x10023e8d
push ebx
call dword [sym.imp.KERNEL32.dll_GetDriveTypeW]
lea ecx, [ebp - 0x5c]
call fcn.10012004
mov dword [ebp + 0xc], 0xd688
push 0xfffffffffffffff6
pop edi
mov dword [ebp - 0x44], edi
mov dword [ebp - 0x40], edi
mov dword [ebp - 0x3c], edi
mov dword [ebp - 0x38], edi
xor edi, edi
mov dword [ebp - 0x10], 0x56e74e80
inc edi
mov dword [ebp - 0x28], 0x2aff635
mov dword [ebp - 0x18], 0x7d266845
mov dword [ebp - 0x18], 6
mov dword [ebp - 0x14], 0x1e13ca4d
mov dword [ebp - 0x20], 0xfffffff9
mov eax, dword [ebp + 0xc]
cmp dword [ebp + 0xc], ebx
je 0x10023f01
mov eax, dword [ebp + 0xc]
mov eax, dword [ebp + 0xc]
cmp dword [ebp + 0xc], edi
jl 0x10023ef2
mov eax, edi
cmp dword [ebp + 0xc], ebx
jne 0x10023ef4
mov eax, ebx
mov dword [ebp - 0x40], eax
mov edx, edi
mov dword [ebp - 0x10], eax
cmp dword [ebp - 0x10], ebx
jne 0x10023f03
mov edx, ebx
mov eax, dword [ebp + 0xc]
xor ecx, ecx
cmp edx, eax
setg cl
mov dword [ebp - 0x28], ecx
cmp dword [ebp - 0x40], ebx
jne 0x10023f1c
mov eax, ebx
cmp dword [ebp - 0x10], ebx
je 0x10023f1e
mov eax, edi
mov dword [ebp - 0x18], eax
xor ecx, ecx
mov eax, dword [ebp + 0xc]
cmp eax, 0x4870
mov eax, dword [ebp + 0xc]
setge cl
xor edx, edx
cmp ecx, 0x1f0dfbc4
setle dl
xor ecx, ecx
cmp edx, eax
setl cl
mov dword [ebp - 0x18], ecx
xor ecx, ecx
mov eax, dword [ebp - 0x18]
mov dword [ebp - 0x14], eax
mov eax, dword [ebp - 0x10]
mov eax, dword [ebp - 0x10]
mov eax, dword [ebp - 0x28]
mov eax, dword [ebp - 0x20]
mov eax, dword [ebp - 0x10]
mov eax, dword [ebp - 0x14]
mov eax, dword [ebp - 0x18]
mov eax, dword [ebp - 0x20]
mov eax, dword [ebp - 0x38]
mov eax, dword [ebp - 0x14]
mov eax, dword [ebp - 0x14]
cmp eax, 0x360e5697
setle cl
imul ecx, dword [ebp + 0xc]
mov dword [ebp - 0x18], ecx
mov dword [ebp - 0x10], 0xae97
mov dword [ebp + 0xc], ebx
jmp 0x10023f9b
mov eax, dword [ebp + 0xc]
mov dword [ebp + eax*4 - 0x90], 0xa136951a
inc dword [ebp + 0xc]
cmp dword [ebp + 0xc], 4
jl 0x10023f8a
dec dword [ebp - 0x10]
mov dword [ebp - 0x10], ebx
jmp 0x10023ff0
mov dword [ebp - 0x14], 0xf47a6de
mov byte [ebp + 0xf], bl
cmp byte [ebp + 0xf], 0
je 0x10023fc4
push 0x1cf5
call dword [sym.imp.USER32.dll_GetKeyboardType]
mov dword [ebp - 0x14], esi
cmp dword [ebp - 0x14], ebx
jl 0x10023fed
mov dword [ebp + 0xc], edi
mov dword [ebp + 0xc], esi
cmp dword [ebp + 0xc], ebx
jl 0x10023fe8
mov eax, dword [ebp + 0xc]
cmp dword [ebp + eax*4 - 0x90], ebx
jne 0x10023fe8
dec dword [ebp + 0xc]
jns 0x10023fd7
dec dword [ebp - 0x14]
jns 0x10023fcc
inc dword [ebp - 0x10]
cmp dword [ebp - 0x10], esi
jle 0x10023fa9
mov dword [ebp - 0x10], 0x38ec
xor edx, edx
mov dword [ebp + 0xc], 0x17b722ba
mov dword [ebp - 0x14], 0x97b09b37
mov eax, dword [ebp - 0x10]
mov eax, dword [ebp - 0x10]
mov dword [ebp + 0xc], eax
mov eax, dword [ebp - 0x10]
mov eax, dword [ebp - 0x10]
mov eax, dword [ebp - 0x10]
mov eax, dword [ebp + 0xc]
mov eax, dword [ebp - 0x10]
mov eax, dword [ebp - 0x10]
cmp eax, edi
mov eax, dword [ebp - 0x10]
setle dl
xor ecx, ecx
cmp edx, eax
setg cl
xor edx, edx
mov dword [ebp - 0x14], ecx
mov ecx, dword [ebp - 0x14]
mov eax, dword [ebp - 0x10]
cmp ecx, eax
mov eax, dword [ebp - 0x10]
setl dl
xor ecx, ecx
cmp eax, edx
setle cl
cmp ecx, 0x118c84b7
jge 0x10024107
push 2
pop edi
mov dword [ebp + 0xc], 0xed734895
lea ecx, [ebp - 0x50]
push edi
call fcn.10011da1
mov dword [ebp + 0xc], ebx
jmp 0x10024082
mov eax, dword [ebp + 0xc]
mov dword [ebp + eax*4 - 0x2c], 0xf93be41b
inc dword [ebp + 0xc]
cmp dword [ebp + 0xc], 1
jl 0x10024074
mov dword [ebp + 0xc], ebx
jmp 0x1002409a
mov ecx, dword [ebp + 0xc]
mov eax, dword [ebp - 0x50]
or dword [eax + ecx*4], 0xffffffff
inc dword [ebp + 0xc]
cmp dword [ebp + 0xc], edi
jl 0x1002408d
cmp dword [ebp - 0x14], ebx
jne 0x100240b0
cmp dword [ebp - 0x2c], ebx
jne 0x100240b0
xor edi, edi
mov edx, ebx
inc edi
jmp 0x100240b5
xor edi, edi
inc edi
mov edx, edi
mov eax, dword [ebp - 0x2c]
xor ecx, ecx
cmp edx, eax
setl cl
xor eax, eax
cmp ecx, 0x5618
setne al
mov dword [ebp - 0x14], eax
mov eax, dword [ebp - 0x2c]
mov dword [ebp + 0xc], eax
mov ecx, dword [ebp + 0xc]
mov eax, dword [ebp - 0x50]
mov dword [eax + 4], ecx
mov dword [ebp - 0x10], ebx
jmp 0x100240ed
mov byte [ebp + 0xf], bl
cmp byte [ebp + 0xf], 0
jne 0x100240fc
inc dword [ebp - 0x10]
cmp dword [ebp - 0x10], edi
jle 0x100240e1
lea ecx, [ebp - 0x50]
call fcn.10012004
jmp 0x1002411b
push 0x1c3b
call dword [sym.imp.KERNEL32.dll_ExitThread]
mov dword [ebp + 0xc], 0xdae1dc63
mov dword [ebp - 0x20], 0xffffffff
mov eax, dword [ebp + 0xc]
mov dword [ebp - 0x20], eax
mov eax, dword [ebp - 0x24]
cmp byte [eax], 0
je 0x100241d0
mov dword [ebp + 0xc], 0x2e91a04
mov dword [ebp - 0x18], 0x6aa16542
mov dword [ebp + 0xc], 7
mov dword [ebp + 0xc], ebx
jmp 0x100241b0
mov dword [ebp - 0x14], 0xfffd
mov ecx, 0xda7ef5d8
mov dword [ebp - 0x20], esi
mov dword [ebp - 0x24], 0x2509e71b
mov eax, dword [ebp - 0x14]
mov eax, dword [ebp + 0xc]
cmp ecx, eax
mov eax, dword [ebp + 0xc]
sbb ecx, ecx
xor edx, edx
inc ecx
cmp eax, ecx
mov eax, dword [ebp + 0xc]
setge dl
xor ecx, ecx
cmp eax, edx
setl cl
xor edx, edx
mov dword [ebp - 0x18], ecx
mov ecx, dword [ebp - 0x18]
mov eax, dword [ebp + 0xc]
cmp ecx, eax
setne dl
cmp edx, dword [ebp + 0xc]
jle 0x10024192
mov edx, edi
cmp dword [ebp - 0x18], ebx
jne 0x10024194
mov edx, ebx
mov eax, dword [ebp - 0x14]
xor ecx, ecx
cmp edx, eax
setne cl
add ecx, dword [ebp - 0x14]
add ecx, dword [ebp + 0xc]
mov dword [ebp - 0x20], ecx
mov eax, dword [ebp - 0x20]
mov dword [ebp - 0x24], eax
inc dword [ebp + 0xc]
cmp dword [ebp + 0xc], 0x1d
je 0x10024141
mov byte [ebp + 0xf], bl
cmp byte [ebp + 0xf], 0
je 0x100241ca
push 0x1c4e
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
call dword [sym.imp.KERNEL32.dll_TlsAlloc]
mov dword [ebp + 0xc], 0x3fa7
lea ecx, [ebp - 0x68]
mov dword [ebp - 0x24], 0xfffffff8
mov dword [ebp + 0xc], 0xdd3f4672
push esi
call fcn.10011da1
push edi
lea ecx, [ebp - 0x80]
mov dword [ebp - 4], ebx
call fcn.10011da1
mov dword [ebp - 0x18], 0x93cc2542
mov dword [ebp - 0x20], edi
mov dword [ebp + 0xc], ebx
jmp 0x10024216
mov ecx, dword [ebp + 0xc]
mov eax, dword [ebp - 0x68]
or dword [eax + ecx*4], 0xffffffff
inc dword [ebp + 0xc]
cmp dword [ebp + 0xc], esi
jl 0x10024209
mov dword [ebp + 0xc], ebx
jmp 0x1002422a
mov eax, dword [ebp + 0xc]
mov dword [ebp + eax*4 - 0x34], esi
inc dword [ebp + 0xc]
cmp dword [ebp + 0xc], edi
jl 0x10024220
mov dword [ebp + 0xc], ebx
jmp 0x10024244
mov ecx, dword [ebp + 0xc]
mov eax, dword [ebp - 0x80]
mov dword [eax + ecx*4], 8
inc dword [ebp + 0xc]
cmp dword [ebp + 0xc], edi
jl 0x10024234
cmp dword [ebp - 0x34], 0xd5467356
mov eax, dword [ebp - 0x18]
sbb ecx, ecx
neg ecx
inc dword [ebp - 0x18]
cmp eax, ecx
mov eax, dword [ebp - 0x24]
cmove ebx, edi
xor eax, eax
cmp ebx, edi
setl al
mov dword [ebp + 0xc], eax
mov ecx, dword [ebp - 0x20]
mov eax, dword [ebp - 0x68]
mov dword [eax + 8], ecx
lea ecx, [ebp - 0x80]
call fcn.10012004
lea ecx, [ebp - 0x68]
call fcn.10012004
jmp 0x10024356
push 3
pop esi
mov dword [ebp - 0x10], 0x60477862
lea ecx, [ebp - 0x74]
push esi
call fcn.10011da1
mov dword [ebp + 0xc], ebx
mov dword [ebp + 0xc], ebx
jmp 0x100242b1
mov ecx, dword [ebp + 0xc]
mov eax, dword [ebp - 0x74]
mov dword [eax + ecx*4], edi
inc dword [ebp + 0xc]
cmp dword [ebp + 0xc], esi
jl 0x100242a5
mov dword [ebp - 0x10], ebx
cmp dword [ebp - 0x10], 0xb
jle 0x10024307
push 0xfffffffffffffff6
pop edi
mov dword [ebp - 0x14], 0x7c203980
mov dword [ebp - 0x14], ebx
jmp 0x100242f9
mov byte [ebp + 0xf], bl
cmp byte [ebp + 0xf], 0
je 0x100242f6
push ebx
push 0x21f7
push 0x1db5
call dword [sym.imp.USER32.dll_GetDesktopWindow]
push eax
call dword [sym.imp.USER32.dll_GetDC]
push eax
call dword [sym.imp.GDI32.dll_SetWindowExtEx]
dec dword [ebp - 0x14]
cmp dword [ebp - 0x14], edi
jl 0x100242ce
inc dword [ebp - 0x10]
cmp dword [ebp - 0x10], 0xb
jg 0x100242c2
push 2
pop edi
mov dword [ebp - 0x10], edi
cmp dword [ebp - 0x10], ebx
jl 0x10024331
mov dword [ebp + 0xc], 0x11151
mov dword [ebp + 0xc], ebx
jmp 0x10024327
mov dword [ebp - 0x20], ebx
dec dword [ebp - 0x20]
inc dword [ebp + 0xc]
cmp dword [ebp + 0xc], edi
jle 0x1002431e
dec dword [ebp - 0x10]
jns 0x10024312
lea ecx, [ebp - 0x74]
call fcn.10012004
mov edx, dword [ebp + 8]
mov dword [edx], ebx
cmp dword [edx], edi
jge 0x10024356
mov esi, dword [ebp - 0x28]
mov ecx, dword [edx]
mov eax, dword [esi]
mov dword [eax + ecx*4], 0x6f7fbf21
inc dword [edx]
cmp dword [edx], edi
jl 0x10024345
mov ecx, dword [ebp - 0xc]
pop edi
pop esi
pop ebx
mov dword fs:[0], ecx
mov esp, ebp
pop ebp
ret