Function at 0x10011800
Capabilities:
Get thread local storage value

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x10014de3
mov eax, dword fs:[0]
push eax
sub esp, 0x14c
mov eax, dword [0x10016334]
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 dword [ebp - 0x10], esp
mov edi, ecx
mov dword [ebp - 0xf0], edi
mov edx, dword [edi + 0x18]
mov dword [ebp - 0x144], edi
mov dword [ebp - 0xf4], 0
lea ebx, [edx + 0x7ff5f448]
cmp ebx, 0x2f2
mov dword [ebp - 0x12c], ebx
setbe al
mov byte [ebp - 0x124], al
test edx, edx
jns 0x10011895
mov ecx, dword [edi]
cmp dword [ecx + 0xc], 0
jl 0x10011895
mov ecx, dword [ecx + 8]
test ecx, ecx
je 0x10011895
mov eax, dword [ecx]
push ecx
mov esi, dword [eax + 8]
mov ecx, esi
call dword [0x10017168]
call esi
mov eax, dword [edi]
mov dword [eax + 8], 0
mov eax, dword [edi]
cmp dword [eax + 4], 1
je 0x10011904
cmp dword [eax + 8], 0
jne 0x100118e3
cmp ebx, 0x2f2
jbe 0x100118e3
lea eax, [ebp - 0xf4]
push eax
push 0
call dword [sym.imp.OLEAUT32.dll_SetErrorInfo]
test eax, eax
js 0x100118e3
mov ecx, dword [ebp - 0xf4]
test ecx, ecx
je 0x100118e3
mov eax, dword [edi]
mov dword [eax + 8], ecx
push dword [ebp - 0xf4]
push 0
call dword [sym.imp.OLEAUT32.dll_CreateErrorInfo]
mov ecx, dword [edi]
mov eax, dword [edi + 0x18]
mov dword [ecx + 0xc], eax
mov eax, 1
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.10013ec0
mov esp, ebp
pop ebp
ret
cmp byte [eax + 0x12], 0
je 0x10011914
xor ecx, ecx
mov dword [ebp - 0x11c], ecx
jmp 0x1001196d
mov edi, dword [edi + 0x14]
mov eax, dword [edi]
mov esi, dword [eax + 0x5c]
mov ecx, esi
call dword [0x10017168]
mov ecx, edi
call esi
mov ebx, eax
mov dword [ebp - 0x11c], ebx
test ebx, ebx
jne 0x10011943
mov ecx, dword [edi + 0x10]
cmp edi, ecx
je 0x10011941
mov edi, ecx
test edi, edi
jne 0x10011917
test ebx, ebx
mov ebx, dword [ebp - 0x12c]
mov ecx, dword [ebp - 0x11c]
je 0x10011967
mov eax, dword [ecx]
push ecx
mov esi, dword [eax + 0x14]
mov ecx, esi
call dword [0x10017168]
call esi
mov ecx, dword [ebp - 0x11c]
mov edi, dword [ebp - 0xf0]
mov eax, dword [edi]
inc dword [eax + 4]
mov dword [ebp - 4], 0
test ecx, ecx
je 0x1001198d
mov eax, dword [ecx]
push ecx
mov esi, dword [eax + 0x10]
mov ecx, esi
call dword [0x10017168]
call esi
mov ecx, dword [edi]
mov eax, 3
mov word [ebp - 0x158], ax
mov byte [ebp - 0x101], 0
mov eax, dword [ecx + 0x1c]
mov dword [ebp - 0x150], eax
cmp dword [ecx + 0x1c], 0
je 0x100119d5
xor eax, eax
mov dword [ebp - 0x138], 1
mov dword [ebp - 0x13c], eax
mov dword [ebp - 0x134], eax
lea eax, [ebp - 0x158]
mov dword [ebp - 0x140], eax
cmp ebx, 0x2f2
jbe 0x10011aa6
lea eax, [ebp - 0xf4]
push eax
push 0
call dword [sym.imp.OLEAUT32.dll_SetErrorInfo]
test eax, eax
js 0x10012616
mov ecx, dword [ebp - 0xf4]
test ecx, ecx
jne 0x10011bbe
mov eax, dword [edi]
cmp dword [eax + 8], ecx
jne 0x10011ab4
cmp dword [edi + 0x18], ecx
je 0x10011ab4
lea eax, [ebp - 0xf4]
push eax
push 0x10002210
push 1
push ecx
push 0x10002770
call dword [sym.imp.ole32.dll_CoCreateInstance]
test eax, eax
js 0x10011aa6
mov edi, dword [edi + 0x14]
mov eax, dword [edi]
mov esi, dword [eax + 0x60]
mov ecx, esi
mov eax, dword [ebp - 0xf0]
mov eax, dword [eax]
cmp dword [eax + 0x1c], 0
jne 0x10011a76
call dword [0x10017168]
mov ecx, edi
call esi
mov edi, dword [ebp - 0xf0]
push 0
push 0
push ecx
push eax
push ecx
push dword [ebp - 0xf4]
mov ecx, edi
call fcn.10012770
jmp 0x10011aa6
call dword [0x10017168]
mov ecx, edi
call esi
mov edi, dword [ebp - 0xf0]
lea ecx, [ebp - 0x140]
push 1
push ecx
push ecx
push eax
push ecx
push dword [ebp - 0xf4]
mov ecx, edi
call fcn.10012770
mov byte [ebp - 0x101], 1
mov ecx, dword [ebp - 0xf4]
test ecx, ecx
jne 0x10011bbe
mov eax, dword [edi]
cmp dword [eax + 8], 0
jne 0x10011bbe
cmp dword [edi + 0x18], 0
je 0x10011bbe
call fcn.10011740
test al, al
je 0x10011af2
lea eax, [ebp - 0xf4]
push eax
push 0x10002210
push 1
push 0
push 0x10002770
call dword [sym.imp.ole32.dll_CoCreateInstance]
test eax, eax
jns 0x10011b44
lea eax, [ebp - 0xf8]
mov dword [ebp - 0xf8], 0
push eax
call dword [sym.imp.OLEAUT32.dll_VarDecRound]
test eax, eax
js 0x10011b44
mov eax, dword [ebp - 0xf8]
lea ecx, [ebp - 0xf4]
push ecx
push 0x10002210
push eax
mov esi, dword [eax]
mov esi, dword [esi]
mov ecx, esi
call dword [0x10017168]
call esi
mov eax, dword [ebp - 0xf8]
push eax
mov ecx, dword [eax]
mov esi, dword [ecx + 8]
mov ecx, esi
call dword [0x10017168]
call esi
cmp dword [ebp - 0xf4], 0
je 0x10012616
mov edi, dword [edi + 0x14]
mov eax, dword [edi]
mov esi, dword [eax + 0x60]
mov ecx, esi
mov eax, dword [ebp - 0xf0]
mov eax, dword [eax]
cmp dword [eax + 0x1c], 0
je 0x10011b7e
call dword [0x10017168]
mov ecx, edi
call esi
push 1
lea ecx, [ebp - 0x140]
push ecx
jmp 0x10011b90
call dword [0x10017168]
mov ecx, edi
call esi
push dword [ebp - 0x124]
push 0
mov edi, dword [ebp - 0xf0]
push ecx
push eax
push ecx
push dword [ebp - 0xf4]
mov ecx, edi
call fcn.10012770
mov ecx, dword [edi]
mov eax, dword [ebp - 0xf4]
mov dword [ecx + 8], eax
mov ecx, dword [edi]
mov eax, dword [edi + 0x18]
mov dword [ecx + 0xc], eax
jmp 0x10012616
mov eax, dword [edi]
mov ebx, dword [eax + 8]
mov dword [ebp - 0xfc], ebx
test ebx, ebx
jne 0x10011bd5
test ecx, ecx
je 0x10012616
mov dword [ebp - 0x114], 0
mov dword [ebp - 0x100], 0
mov dword [ebp - 0x118], 0
mov dword [ebp - 0x128], 0
mov dword [ebp - 0x120], 0
mov byte [ebp - 4], 2
test ebx, ebx
je 0x10011c17
mov eax, dword [eax + 0xc]
mov dword [edi + 0x18], eax
jmp 0x10011c1f
mov ebx, ecx
mov dword [ebp - 0xfc], ecx
mov esi, dword [ebx]
lea eax, [ebp - 0x100]
push eax
push 0x1000336c
push ebx
mov esi, dword [esi]
mov ecx, esi
call dword [0x10017168]
call esi
test eax, eax
js 0x10011c5b
mov eax, dword [ebp - 0x100]
lea edx, [ebp - 0x118]
push edx
push eax
mov ecx, dword [eax]
mov esi, dword [ecx + 0x20]
mov ecx, esi
call dword [0x10017168]
call esi
mov eax, dword [ebp - 0x118]
test eax, eax
je 0x10011fbc
mov bl, 1
lea edi, [eax - 1]
mov dword [ebp - 0xf8], edi
test edi, edi
js 0x10011cba
mov eax, dword [ebp - 0x100]
lea ecx, [ebp - 0xec]
push ecx
push edi
push eax
mov esi, dword [eax]
mov esi, dword [esi + 0x10]
mov ecx, esi
call dword [0x10017168]
call esi
test eax, eax
jne 0x10011cb2
mov eax, dword [ebp - 0xec]
mov ecx, dword [ebp - 0xf0]
test eax, eax
js 0x10011cb5
cmp dword [ecx + 0x18], 0
jge 0x10011cb5
xor bl, bl
dec edi
jmp 0x10011c6e
mov dword [ecx + 0x18], eax
jmp 0x10011cc2
test bl, bl
je 0x10011fb0
mov dword [ebp - 0x110], 0
mov byte [ebp - 4], 3
lea ecx, [ebp - 0x110]
mov eax, dword [ebp - 0x100]
push ecx
push 0x100031c4
push eax
mov esi, dword [eax]
mov esi, dword [esi]
mov ecx, esi
call dword [0x10017168]
call esi
mov edi, eax
test edi, edi
jns 0x10011ddd
lea eax, [ebp - 0x120]
push eax
push 0x10002210
push 1
push 0
push 0x10002770
call dword [sym.imp.ole32.dll_CoCreateInstance]
test eax, eax
js 0x10011f56
mov eax, dword [ebp - 0x120]
lea ecx, [ebp - 0x128]
push ecx
push 0x1000336c
push eax
mov esi, dword [eax]
mov esi, dword [esi]
mov ecx, esi
call dword [0x10017168]
call esi
test eax, eax
js 0x10011f56
mov eax, dword [ebp - 0x120]
lea ecx, [ebp - 0x110]
push ecx
push 0x100031c4
push eax
mov esi, dword [eax]
mov esi, dword [esi]
mov ecx, esi
call dword [0x10017168]
call esi
mov edi, eax
test edi, edi
js 0x10011f56
mov ebx, dword [ebp - 0x118]
dec ebx
test ebx, ebx
js 0x10011dd5
mov dword [ebp - 0x108], 0
mov byte [ebp - 4], 4
lea ecx, [ebp - 0xec]
mov eax, dword [ebp - 0x100]
push ecx
push ebx
push eax
mov esi, dword [eax]
mov esi, dword [esi + 0x10]
mov ecx, esi
call dword [0x10017168]
call esi
mov edi, eax
test edi, edi
jns 0x10011e3a
mov byte [ebp - 4], 5
mov eax, dword [ebp - 0x108]
test eax, eax
je 0x10011dd1
mov ecx, dword [eax]
push eax
mov esi, dword [ecx + 8]
mov ecx, esi
call dword [0x10017168]
call esi
mov byte [ebp - 4], 3
test edi, edi
js 0x10011f56
mov eax, dword [ebp - 0x110]
lea edx, [ebp - 0x130]
push edx
push eax
mov ecx, dword [eax]
mov esi, dword [ecx + 0x10]
mov ecx, esi
call dword [0x10017168]
call esi
mov ebx, dword [ebp - 0xf8]
test eax, eax
je 0x10011e1d
mov eax, dword [ebp - 0x110]
push ebx
push eax
mov ecx, dword [eax]
mov esi, dword [ecx + 0xc]
mov ecx, esi
call dword [0x10017168]
call esi
mov edi, eax
test edi, edi
js 0x10011f5c
mov eax, dword [ebp - 0x120]
test eax, eax
je 0x10011f86
mov ebx, eax
jmp 0x10011f8c
mov eax, dword [ebp - 0x100]
lea ecx, [ebp - 0x108]
push ecx
push 0x10002260
push ebx
mov esi, dword [eax]
push eax
mov esi, dword [esi + 0x14]
mov ecx, esi
call dword [0x10017168]
call esi
test eax, eax
jns 0x10011e9a
mov eax, dword [ebp - 0x100]
mov esi, dword [eax]
lea eax, [ebp - 0x108]
push eax
call dword [sym.imp.KERNEL32.dll_GetUserDefaultLCID]
mov esi, dword [esi + 0x18]
mov ecx, esi
push eax
push ebx
push dword [ebp - 0x100]
call dword [0x10017168]
call esi
mov edi, eax
test edi, edi
jns 0x10011e9a
mov byte [ebp - 4], 6
jmp 0x10011db7
mov eax, dword [ebp - 0xf0]
mov eax, dword [eax + 0x18]
mov ecx, eax
and ecx, 0xfffff00
cmp eax, 0x800300fc
jg 0x10011ed0
cmp eax, 0x800300fb
jge 0x10011ee6
cmp eax, 0x80030002
jl 0x10011ede
cmp eax, 0x80030003
jle 0x10011ee6
cmp eax, 0x80030050
je 0x10011ee6
jmp 0x10011ede
cmp eax, 0x80030104
jl 0x10011ede
cmp eax, 0x80030105
jle 0x10011ee6
cmp ecx, 0x40e00
jne 0x10011ef7
push 0
push dword [ebp - 0x108]
push 0
push 0x10000000
jmp 0x10011f03
push 0
push dword [ebp - 0x108]
push 0
push 0
mov eax, dword [ebp - 0x128]
lea ecx, [ebp - 0xec]
push ecx
push eax
mov esi, dword [eax]
mov esi, dword [esi + 0xc]
mov ecx, esi
call dword [0x10017168]
call esi
mov edi, eax
test edi, edi
jns 0x10011f2f
mov byte [ebp - 4], 7
jmp 0x10011db7
mov byte [ebp - 4], 8
mov eax, dword [ebp - 0x108]
test eax, eax
je 0x10011f4d
mov ecx, dword [eax]
push eax
mov esi, dword [ecx + 8]
mov ecx, esi
call dword [0x10017168]
call esi
mov byte [ebp - 4], 3
jmp 0x10011d78
mov ebx, dword [ebp - 0xf8]
mov eax, dword [ebp - 0x100]
mov esi, dword [eax]
lea eax, [ebp - 0x114]
push eax
call dword [sym.imp.KERNEL32.dll_GetUserDefaultLCID]
mov esi, dword [esi + 0x18]
mov ecx, esi
push eax
push ebx
push dword [ebp - 0x100]
call dword [0x10017168]
call esi
mov ebx, dword [ebp - 0xfc]
mov byte [ebp - 4], 9
mov eax, dword [ebp - 0x110]
test eax, eax
je 0x10011faa
mov ecx, dword [eax]
push eax
mov esi, dword [ecx + 8]
mov ecx, esi
call dword [0x10017168]
call esi
mov byte [ebp - 4], 2
jmp 0x10011fb6
mov ebx, dword [ebp - 0xfc]
mov edi, dword [ebp - 0xf0]
mov eax, dword [edi]
cmp dword [eax + 0x1c], 0
je 0x100120fe
cmp byte [ebp - 0x101], 0
jne 0x100120fe
mov edi, dword [edi + 0x14]
mov dword [ebp - 0x10c], 0
mov eax, dword [edi]
mov esi, dword [eax + 0x60]
mov ecx, esi
call dword [0x10017168]
mov ecx, edi
call esi
mov edi, dword [ebp - 0xf0]
lea ecx, [ebp - 0x140]
push 1
push ecx
push ecx
push eax
push ecx
push ebx
mov ecx, edi
call fcn.10012770
inc dword [ebp - 0x118]
lea eax, [ebp - 0x10c]
mov esi, dword [ebx]
push eax
push 0x100031c4
push ebx
mov esi, dword [esi]
mov ecx, esi
call dword [0x10017168]
call esi
test eax, eax
js 0x10012070
mov eax, dword [ebp - 0x10c]
push 0
push eax
mov ecx, dword [eax]
mov esi, dword [ecx + 0xc]
mov ecx, esi
call dword [0x10017168]
call esi
mov ecx, dword [ebp - 0x10c]
mov edi, eax
push ecx
mov edx, dword [ecx]
mov esi, dword [edx + 8]
mov ecx, esi
call dword [0x10017168]
call esi
test edi, edi
mov edi, dword [ebp - 0xf0]
jns 0x100120fe
mov esi, dword [ebx]
lea eax, [ebp - 0xfc]
push eax
push 0x1000336c
push ebx
mov esi, dword [esi]
mov ecx, esi
mov dword [ebp - 0xfc], 0
call dword [0x10017168]
call esi
test eax, eax
js 0x100120fe
mov ecx, dword [ebp - 0x114]
test ecx, ecx
je 0x100120bd
mov eax, dword [ecx]
push ecx
mov esi, dword [eax + 8]
mov ecx, esi
call dword [0x10017168]
call esi
mov dword [ebp - 0x114], 0
mov eax, dword [ebp - 0xfc]
mov esi, dword [eax]
lea eax, [ebp - 0x114]
push eax
call dword [sym.imp.KERNEL32.dll_GetUserDefaultLCID]
mov esi, dword [esi + 0x18]
mov ecx, esi
push eax
push 0
push dword [ebp - 0xfc]
call dword [0x10017168]
call esi
mov eax, dword [ebp - 0xfc]
push eax
mov ecx, dword [eax]
mov esi, dword [ecx + 8]
mov ecx, esi
call dword [0x10017168]
call esi
mov eax, dword [ebp - 0x114]
test eax, eax
je 0x1001210a
mov ebx, eax
mov ecx, dword [ebp - 0x11c]
test ecx, ecx
je 0x10012134
push dword [edi + 0x18]
mov esi, dword [ecx]
push ebx
push dword [ebp - 0x118]
push dword [ebp - 0x100]
mov esi, dword [esi + 0xc]
push ecx
mov ecx, esi
call dword [0x10017168]
call esi
mov eax, dword [ebx]
push ebx
mov esi, dword [eax + 4]
mov ecx, esi
call dword [0x10017168]
call esi
mov eax, dword [edi]
mov ecx, dword [eax + 8]
test ecx, ecx
je 0x10012168
mov eax, dword [ecx]
push ecx
mov esi, dword [eax + 8]
mov ecx, esi
call dword [0x10017168]
call esi
mov eax, dword [edi]
mov dword [eax + 8], 0
mov eax, dword [edi]
mov dword [eax + 8], ebx
mov ecx, dword [edi]
mov eax, dword [edi + 0x18]
mov dword [ecx + 0xc], eax
mov ecx, dword [ebp - 0xf4]
test ecx, ecx
je 0x10012197
mov eax, dword [ecx]
push ecx
mov esi, dword [eax + 8]
mov ecx, esi
call dword [0x10017168]
call esi
mov dword [ebp - 0xf4], 0
mov ecx, dword [ebp - 0x114]
test ecx, ecx
je 0x100121bb
mov eax, dword [ecx]
push ecx
mov esi, dword [eax + 8]
mov ecx, esi
call dword [0x10017168]
call esi
mov dword [ebp - 0x114], 0
mov ecx, dword [ebp - 0x100]
test ecx, ecx
je 0x100121df
mov eax, dword [ecx]
push ecx
mov esi, dword [eax + 8]
mov ecx, esi
call dword [0x10017168]
call esi
mov dword [ebp - 0x100], 0
mov eax, dword [edi]
push dword [eax + 8]
push 0
call dword [sym.imp.OLEAUT32.dll_CreateErrorInfo]
cmp dword [edi + 0x18], 0
jl 0x100125da
mov edi, dword [edi + 0x14]
lea esp, [esp]
test edi, edi
je 0x100125d4
mov eax, dword [edi]
mov esi, dword [eax + 0x54]
mov ecx, esi
call dword [0x10017168]
mov ecx, edi
call esi
movzx eax, ax
cmp eax, 5
jne 0x10012746
mov ebx, dword [edi + 0x80]
lea eax, [edi - 0xc]
mov dword [ebp - 0x124], eax
xor esi, esi
xor eax, eax
mov edx, dword [ebx + 8]
test edx, edx
jle 0x10012267
nop
test eax, eax
js 0x1001225e
cmp eax, edx
jge 0x1001225e
mov ecx, dword [ebx + 4]
cmp edx, 2
jl 0x10012253
mov ecx, dword [ecx + eax*4]
test ecx, ecx
je 0x1001225e
cmp dword [ecx + 8], 0
je 0x1001225e
inc esi
inc eax
cmp eax, edx
jl 0x10012240
test esi, esi
jne 0x100122ab
mov ebx, dword [edi + 0x7c]
xor esi, esi
xor eax, eax
mov edx, dword [ebx + 8]
test edx, edx
jle 0x10012746
lea esp, [esp]
test eax, eax
js 0x1001229e
cmp eax, edx
jge 0x1001229e
mov ecx, dword [ebx + 4]
cmp edx, 2
jl 0x10012293
mov ecx, dword [ecx + eax*4]
test ecx, ecx
je 0x1001229e
cmp dword [ecx + 8], 0
je 0x1001229e
inc esi
inc eax
cmp eax, edx
jl 0x10012280
test esi, esi
je 0x10012746
mov edi, dword [ebp - 0x124]
push edi
mov eax, dword [edi]
mov esi, dword [eax + 4]
mov ecx, esi
call dword [0x10017168]
call esi
cmp dword [edi + 0x24], 0
jne 0x100125c4
lea eax, [ebp - 0x20]
mov dword [ebp - 0x28], 0
push eax
push 0
mov dword [ebp - 0x24], 0
mov dword [ebp - 0x20], 0
mov dword [ebp - 0x1c], 0
call dword [sym.imp.OLEAUT32.dll_SetErrorInfo]
test eax, eax
jne 0x10012307
mov eax, dword [ebp - 0x20]
test eax, eax
je 0x10012307
push eax
push 0
call dword [sym.imp.OLEAUT32.dll_CreateErrorInfo]
lea eax, [ebp - 0xc0]
mov dword [ebp - 0x30], 0
mov dword [ebp - 0x3c], eax
mov eax, 0xd
mov word [ebp - 0xc0], ax
mov dword [ebp - 0xb8], edi
mov dword [ebp - 0x40], 0
mov dword [ebp - 0x34], 3
mov byte [ebp - 4], 0xa
mov eax, 0x4003
mov word [ebp - 0xb0], ax
lea eax, [ebp - 0x12c]
mov dword [ebp - 0xa8], eax
mov dword [ebp - 0x2c], eax
mov eax, dword [ebp - 0xf0]
push ecx
lea ecx, [ebp - 0xc0]
mov dword [ebp - 0x12c], 1
mov dword [ebp - 0xfc], 0
push dword [eax + 0x18]
mov dword [ebp - 0x110], 0
call fcn.10010680
mov ebx, dword [edi + 0x88]
mov ecx, ebx
call fcn.10012c90
test eax, eax
je 0x10012522
mov eax, dword [ebp - 0x2c]
mov eax, dword [eax]
mov dword [ebp - 0x108], eax
xor eax, eax
mov dword [ebp - 0x10c], eax
mov eax, dword [0x10016698]
push dword [eax + 0xc]
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
test eax, eax
je 0x10012424
cmp byte [eax + 0x11], 0
je 0x10012424
push 0xb0
push 0x1000000
push dword [0x10016668]
call dword [sym.imp.MSDART.DLL_MpHeapAlloc]
add esp, 0xc
mov dword [ebp - 0x130], eax
mov byte [ebp - 4], 0xb
test eax, eax
je 0x10012400
lea ecx, [ebp - 0xc0]
push ecx
mov ecx, eax
call fcn.10003ad2
jmp 0x10012402
xor eax, eax
mov byte [ebp - 4], 0xa
test eax, eax
je 0x10012522
push eax
push 0
push 0x2001
push dword [ebx + 0x10]
call dword [sym.imp.USER32.dll_PostMessageW]
jmp 0x10012522
mov edx, dword [ebp - 0x40]
xor esi, esi
lea esp, [esp]
cmp esi, dword [ebx + 8]
jge 0x1001250e
test esi, esi
js 0x10012508
mov eax, dword [ebx + 8]
cmp esi, eax
jge 0x10012508
mov edi, dword [ebx + 4]
cmp eax, 2
jl 0x10012457
mov edi, dword [edi + esi*4]
test edi, edi
je 0x10012508
mov eax, edx
test eax, eax
jns 0x10012468
add eax, 7
sar eax, 3
mov ecx, edx
and ecx, reloc.OLEAUT32.dll_VariantInit
jns 0x1001247a
dec ecx
or ecx, 0xfffffff8
inc ecx
mov al, byte [eax + edi + 0x14]
shr al, cl
test al, 1
je 0x10012508
lea eax, [ebp - 0xc0]
mov ecx, ebx
push eax
push edi
call fcn.10012cd0
mov ecx, dword [ebp - 0x2c]
mov edx, eax
mov dword [ebp - 0x10c], edx
mov eax, dword [ecx]
mov dword [ebp - 0xf8], eax
cmp eax, 5
jne 0x100124e4
mov edx, dword [ebp - 0x40]
mov eax, edx
test eax, eax
jns 0x100124bb
add eax, 7
sar eax, 3
lea ecx, [eax + edi]
movzx eax, byte [ecx + 0x14]
and edx, reloc.OLEAUT32.dll_VariantInit
jns 0x100124d2
dec edx
or edx, 0xfffffff8
inc edx
btr eax, edx
mov edx, dword [ebp - 0x10c]
mov byte [ecx + 0x14], al
mov eax, dword [ebp - 0xf8]
sub dword [ebp - 0xfc], 1
je 0x1001250e
test edx, edx
js 0x100125af
cmp eax, 4
je 0x1001250e
mov eax, dword [ebp - 0x2c]
mov ecx, dword [ebp - 0x108]
mov dword [eax], ecx
mov edx, dword [ebp - 0x40]
inc esi
jmp 0x10012430
mov eax, dword [ebp - 0x10c]
test eax, eax
js 0x100125af
mov edi, dword [ebp - 0x124]
mov edi, dword [edi + 0x8c]
mov ecx, edi
call fcn.10012c90
test eax, eax
je 0x100125af
mov eax, dword [ebp - 0x2c]
mov dword [ebp - 0x24], 1
mov eax, dword [eax]
mov dword [ebp - 0xf8], eax
mov eax, dword [0x10016698]
push dword [eax + 0xc]
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
test eax, eax
je 0x10012655
cmp byte [eax + 0x11], 0
je 0x10012655
push 0xb0
push 0x1000000
push dword [0x10016668]
call dword [sym.imp.MSDART.DLL_MpHeapAlloc]
add esp, 0xc
mov dword [ebp - 0x130], eax
mov byte [ebp - 4], 0xc
test eax, eax
je 0x100125af
lea ecx, [ebp - 0xc0]
push ecx
mov ecx, eax
call fcn.10012f90
test eax, eax
je 0x100125af
push eax
push 0
push 0x2001
push dword [edi + 0x10]
call dword [sym.imp.USER32.dll_PostMessageW]
lea ecx, [ebp - 0xc0]
mov byte [ebp - 4], 2
call fcn.10013120
mov edi, dword [ebp - 0x124]
mov eax, dword [edi]
push edi
mov esi, dword [eax + 8]
mov ecx, esi
call dword [0x10017168]
call esi
mov edi, dword [ebp - 0xf0]
mov byte [ebp - 4], 0xd
mov eax, dword [ebp - 0x120]
test eax, eax
je 0x100125f8
mov ecx, dword [eax]
push eax
mov esi, dword [ecx + 8]
mov ecx, esi
call dword [0x10017168]
call esi
mov byte [ebp - 4], 0xe
mov eax, dword [ebp - 0x128]
test eax, eax
je 0x10012616
mov ecx, dword [eax]
push eax
mov esi, dword [ecx + 8]
mov ecx, esi
call dword [0x10017168]
call esi
mov dword [ebp - 4], 0xffffffff
mov eax, dword [edi]
mov ebx, dword [ebp - 0x11c]
dec dword [eax + 4]
test ebx, ebx
je 0x100118e3
mov eax, dword [ebx]
push ebx
mov esi, dword [eax + 0x18]
mov ecx, esi
call dword [0x10017168]
call esi
mov eax, dword [ebx]
push ebx
mov esi, dword [eax + 8]
mov ecx, esi
call dword [0x10017168]
call esi
jmp 0x100118e3
mov edx, dword [ebp - 0x40]
xor esi, esi
lea ebx, [ebx]
cmp esi, dword [edi + 8]
jge 0x100125af
test esi, esi
js 0x10012740
mov eax, dword [edi + 8]
cmp esi, eax
jge 0x10012740
mov ebx, dword [edi + 4]
cmp eax, 2
jl 0x10012687
mov ebx, dword [ebx + esi*4]
test ebx, ebx
je 0x10012740
mov eax, edx
test eax, eax
jns 0x10012698
add eax, 7
sar eax, 3
mov ecx, edx
and ecx, reloc.OLEAUT32.dll_VariantInit
jns 0x100126aa
dec ecx
or ecx, 0xfffffff8
inc ecx
mov al, byte [eax + ebx + 0x14]
shr al, cl
test al, 1
je 0x10012740
lea eax, [ebp - 0xc0]
mov ecx, edi
push eax
push ebx
call fcn.10012cd0
mov ecx, dword [ebp - 0x2c]
mov edx, eax
mov dword [ebp - 0xfc], edx
mov eax, dword [ecx]
mov dword [ebp - 0x10c], eax
cmp eax, 5
jne 0x10012717
mov edx, dword [ebp - 0x40]
mov eax, edx
test eax, eax
jns 0x100126eb
add eax, 7
sar eax, 3
lea ecx, [eax + ebx]
movzx eax, byte [ecx + 0x14]
and edx, reloc.OLEAUT32.dll_VariantInit
jns 0x10012702
dec edx
or edx, 0xfffffff8
inc edx
btr eax, edx
mov edx, dword [ebp - 0xfc]
mov byte [ecx + 0x14], al
mov ecx, dword [ebp - 0x2c]
mov eax, dword [ebp - 0x10c]
sub dword [ebp - 0x110], 1
je 0x100125af
test edx, edx
js 0x100125af
cmp eax, 4
je 0x100125af
mov eax, dword [ebp - 0xf8]
mov dword [ecx], eax
mov edx, dword [ebp - 0x40]
inc esi
jmp 0x10012660
mov eax, dword [edi + 0x10]
sub edi, eax
neg edi
sbb edi, edi
and edi, eax
jmp 0x10012200