Function at 0x426160
Capabilities:
Query or enumerate registry value

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x5f2ac2
mov eax, dword fs:[0]
push eax
mov eax, 0x1ff0
call fcn.005c0d00
mov eax, dword [0x6b7e40]
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 - 0x1f94], edx
mov eax, ecx
mov dword [ebp - 0x1f74], eax
mov dword [ebp - 0x1ff8], eax
mov eax, dword [ebp + 8]
mov dword [ebp - 0x1fa0], eax
mov dword [ebp - 0x1f9c], 0
mov dword [ebp - 4], 1
call fcn.004a4516
mov ecx, eax
xor eax, eax
test ecx, ecx
setne al
test eax, eax
jne 0x4261dc
push 0x80004005
call fcn.00402040
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x1f98], eax
push str.NewVersions
push str.SoftwareSolidWorksIM
lea eax, [ebp - 0x1f98]
push 0x642314
push eax
mov byte [ebp - 4], 2
call fcn.00404520
add esp, 0x10
call fcn.004a4516
mov ecx, eax
xor eax, eax
test ecx, ecx
setne al
test eax, eax
jne 0x426228
push 0x80004005
call fcn.00402040
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x1f88], eax
lea eax, [ebp - 0x1f60]
push eax
lea ecx, [ebp + 0xc]
mov byte [ebp - 4], 3
call fcn.00444aa0
mov byte [ebp - 4], 4
push dword [eax]
lea eax, [ebp - 0x1f88]
push str.Skip__s
push eax
call fcn.00404520
mov byte [ebp - 4], 3
mov edx, dword [ebp - 0x1f60]
add edx, 0xfffffff0
or esi, 0xffffffff
add esp, 0xc
lea ecx, [edx + 0xc]
mov eax, esi
lock xadd dword [ecx], eax
dec eax
test eax, eax
jg 0x426289
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
push str.Release
lea ecx, [ebp - 0x1f80]
call fcn.004021e0
lea eax, [ebp - 0x1f60]
push eax
lea ecx, [ebp + 0x14]
mov byte [ebp - 4], 5
call fcn.004465e0
mov byte [ebp - 4], 6
push dword [eax]
mov ebx, dword [ebp - 0x1f98]
push ebx
lea eax, [ebp - 0x1f80]
push 0x642314
push eax
call fcn.00404520
mov byte [ebp - 4], 5
mov edx, dword [ebp - 0x1f60]
add edx, 0xfffffff0
add esp, 0x10
lea eax, [edx + 0xc]
mov ecx, esi
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x4262f0
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
push str.Skip
lea ecx, [ebp - 0x1f8c]
call fcn.004021e0
lea eax, [ebp - 0x1f60]
push eax
lea ecx, [ebp + 0x14]
mov byte [ebp - 4], 7
call fcn.004465e0
mov byte [ebp - 4], 8
push dword [eax]
lea eax, [ebp - 0x1f8c]
push ebx
push 0x642314
push eax
call fcn.00404520
mov byte [ebp - 4], 7
mov edx, dword [ebp - 0x1f60]
add edx, 0xfffffff0
add esp, 0x10
lea eax, [edx + 0xc]
mov ecx, esi
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x426351
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
push 0x63bfdc
lea ecx, [ebp - 0x1f78]
call fcn.004021e0
mov byte [ebp - 4], 9
call fcn.004a4516
mov ecx, eax
xor eax, eax
test ecx, ecx
setne al
test eax, eax
jne 0x426381
push 0x80004005
call fcn.00402040
mov eax, dword [ecx]
call dword [eax + 0xc]
lea esi, [eax + 0x10]
mov dword [ebp - 0x1f64], esi
mov byte [ebp - 4], 0xa
xor eax, eax
mov word [ebp - 0x1784], ax
lea eax, [ebp - 0x1f68]
push eax
push 0x20019
push 0
push ebx
push SysReAllocStringLen
mov dword [ebp - 0x1f6c], 0
mov dword [ebp - 0x1f60], 0x7d0
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
mov edi, dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
test eax, eax
jne 0x426460
lea eax, [ebp - 0x1f60]
push eax
lea eax, [ebp - 0x1784]
push eax
lea eax, [ebp - 0x1f6c]
push eax
push 0
push dword [ebp - 0x1f88]
push dword [ebp - 0x1f68]
call edi
push dword [ebp - 0x1f68]
mov edi, eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
test edi, edi
jne 0x42645a
lea ecx, [ebp - 0x1784]
lea edx, [ecx + 2]
jmp 0x426420
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x426420
sub ecx, edx
sar ecx, 1
push ecx
lea eax, [ebp - 0x1784]
push eax
lea ecx, [ebp - 0x1f64]
call fcn.00402090
lea eax, [ebp - 0x1f64]
push eax
lea ecx, [ebp - 0x1f78]
call fcn.00404570
mov esi, dword [ebp - 0x1f64]
mov edi, dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
add esi, 0xfffffff0
mov byte [ebp - 4], 9
lea eax, [esi + 0xc]
or ecx, 0xffffffff
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x42647e
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
push 0x63bfdc
lea ecx, [ebp - 0x1f7c]
call fcn.004021e0
mov byte [ebp - 4], 0xb
call fcn.004a4516
mov ecx, eax
xor eax, eax
test ecx, ecx
setne al
test eax, eax
jne 0x4264ae
push 0x80004005
call fcn.00402040
mov eax, dword [ecx]
call dword [eax + 0xc]
lea esi, [eax + 0x10]
mov dword [ebp - 0x1f64], esi
push str.Skip
lea ecx, [ebp - 0x1f6c]
mov byte [ebp - 4], 0xc
call fcn.004021e0
mov byte [ebp - 4], 0xd
xor eax, eax
mov word [ebp - 0x1f54], ax
lea eax, [ebp - 0x1f68]
push eax
push 0x20019
push 0
push dword [ebp - 0x1f8c]
mov dword [ebp - 0x1f70], 0
push SysReAllocStringLen
mov dword [ebp - 0x1f60], 0x7d0
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
test eax, eax
jne 0x426585
lea eax, [ebp - 0x1f60]
push eax
lea eax, [ebp - 0x1f54]
push eax
lea eax, [ebp - 0x1f70]
push eax
push 0
push dword [ebp - 0x1f6c]
push dword [ebp - 0x1f68]
call edi
push dword [ebp - 0x1f68]
mov edi, eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
test edi, edi
jne 0x426585
lea ecx, [ebp - 0x1f54]
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x426554
sub ecx, edx
sar ecx, 1
push ecx
lea eax, [ebp - 0x1f54]
push eax
lea ecx, [ebp - 0x1f64]
call fcn.00402090
mov esi, dword [ebp - 0x1f64]
mov byte [ebp - 0x1f55], 1
jmp 0x42658c
mov byte [ebp - 0x1f55], 0
mov byte [ebp - 4], 0xc
mov edx, dword [ebp - 0x1f6c]
add edx, 0xfffffff0
or edi, 0xffffffff
lea eax, [edx + 0xc]
mov ecx, edi
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x4265b2
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
cmp byte [ebp - 0x1f55], 0
je 0x4265cd
lea eax, [ebp - 0x1f64]
push eax
lea ecx, [ebp - 0x1f7c]
call fcn.00404570
add esi, 0xfffffff0
mov byte [ebp - 4], 0xb
lea eax, [esi + 0xc]
mov ecx, edi
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x4265ea
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
cmp dword [ebp - 0x1f94], 0
je 0x4269c9
call fcn.004a4516
mov ecx, eax
xor eax, eax
test ecx, ecx
setne al
test eax, eax
jne 0x426613
push 0x80004005
call fcn.00402040
mov eax, dword [ecx]
call dword [eax + 0xc]
lea edi, [eax + 0x10]
mov dword [ebp - 0x1f64], edi
push str.Release
lea ecx, [ebp - 0x1f68]
mov byte [ebp - 4], 0xe
call fcn.004021e0
mov byte [ebp - 4], 0xf
xor eax, eax
mov word [ebp - 0xfb4], ax
lea eax, [ebp - 0x1f6c]
push eax
push 0x20019
push 0
push dword [ebp - 0x1f80]
mov dword [ebp - 0x1f60], 0
push SysReAllocStringLen
mov dword [ebp - 0x1f70], 0x7d0
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
test eax, eax
jne 0x4266f1
lea eax, [ebp - 0x1f70]
push eax
lea eax, [ebp - 0xfb4]
push eax
lea eax, [ebp - 0x1f60]
push eax
push 0
push dword [ebp - 0x1f68]
push dword [ebp - 0x1f6c]
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
push dword [ebp - 0x1f6c]
mov esi, eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
test esi, esi
jne 0x4266f1
lea ecx, [ebp - 0xfb4]
lea edx, [ecx + 2]
lea ecx, [ecx]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x4266c0
sub ecx, edx
sar ecx, 1
push ecx
lea eax, [ebp - 0xfb4]
push eax
lea ecx, [ebp - 0x1f64]
call fcn.00402090
mov edi, dword [ebp - 0x1f64]
mov byte [ebp - 0x1f55], 1
jmp 0x4266f8
mov byte [ebp - 0x1f55], 0
mov byte [ebp - 4], 0xe
mov edx, dword [ebp - 0x1f68]
add edx, 0xfffffff0
or ecx, 0xffffffff
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x42671c
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
cmp byte [ebp - 0x1f55], 0
je 0x426997
call fcn.004a4516
mov ecx, eax
xor eax, eax
test ecx, ecx
setne al
test eax, eax
jne 0x426745
push 0x80004005
call fcn.00402040
mov eax, dword [ecx]
call dword [eax + 0xc]
lea esi, [eax + 0x10]
mov dword [ebp - 0x1f68], esi
push str.Limit
lea ecx, [ebp - 0x1f60]
mov byte [ebp - 4], 0x10
call fcn.004021e0
mov byte [ebp - 4], 0x11
xor eax, eax
mov word [ebp - 0x7e4], ax
lea eax, [ebp - 0x1f6c]
push eax
push 0x20019
push 0
push dword [ebp - 0x1f80]
mov dword [ebp - 0x1fa4], 0
push SysReAllocStringLen
mov dword [ebp - 0x1f70], 0x7d0
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
test eax, eax
jne 0x426831
lea eax, [ebp - 0x1f70]
push eax
lea eax, [ebp - 0x7e4]
push eax
lea eax, [ebp - 0x1fa4]
push eax
push 0
push dword [ebp - 0x1f60]
push dword [ebp - 0x1f6c]
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
push dword [ebp - 0x1f6c]
mov dword [ebp - 0x1f5c], eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
cmp dword [ebp - 0x1f5c], 0
jne 0x426831
lea ecx, [ebp - 0x7e4]
lea edx, [ecx + 2]
lea esp, [esp]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x426800
sub ecx, edx
sar ecx, 1
push ecx
lea eax, [ebp - 0x7e4]
push eax
lea ecx, [ebp - 0x1f68]
call fcn.00402090
mov esi, dword [ebp - 0x1f68]
mov byte [ebp - 0x1f55], 1
jmp 0x426838
mov byte [ebp - 0x1f55], 0
mov byte [ebp - 4], 0x10
mov edx, dword [ebp - 0x1f60]
add edx, 0xfffffff0
or ecx, 0xffffffff
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x42685c
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
cmp byte [ebp - 0x1f55], 0
je 0x426965
push ecx
lea eax, [esi - 0x10]
mov dword [ebp - 0x1f5c], esp
push eax
call fcn.004046f0
mov ecx, dword [ebp - 0x1f5c]
add eax, 0x10
mov dword [ecx], eax
add esp, 4
lea ecx, [ebp - 0x1ff4]
call fcn.004466a0
push ecx
mov byte [ebp - 4], 0x12
lea eax, [edi - 0x10]
mov dword [ebp - 0x1f5c], esp
push eax
call fcn.004046f0
mov ecx, dword [ebp - 0x1f5c]
add eax, 0x10
mov dword [ecx], eax
add esp, 4
lea ecx, [ebp - 0x1fcc]
call fcn.004466a0
lea eax, [ebp - 0x1fcc]
push eax
lea ecx, [ebp - 0x1ff4]
mov byte [ebp - 4], 0x13
call fcn.00444de0
test al, al
jne 0x426905
lea eax, [ebp - 0x1fcc]
push eax
lea ecx, [ebp - 0x1ff4]
call fcn.00444d30
test al, al
je 0x42691d
lea eax, [ebp - 0x1fac]
push eax
lea ecx, [ebp - 0x1fd4]
call fcn.00445ff0
test al, al
je 0x42691d
lea eax, [ebp - 0x1f68]
push eax
lea ecx, [ebp - 0x1f64]
call fcn.00404570
mov edi, dword [ebp - 0x1f64]
mov byte [ebp - 4], 0x12
mov edx, dword [ebp - 0x1fac]
add edx, 0xfffffff0
or ecx, 0xffffffff
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x426941
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0x10
mov edx, dword [ebp - 0x1fd4]
add edx, 0xfffffff0
or ecx, 0xffffffff
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x426965
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov ecx, dword [ebp - 0x1f94]
lea eax, [ebp - 0x1f64]
push eax
call fcn.00404570
add esi, 0xfffffff0
mov byte [ebp - 4], 0xe
lea eax, [esi + 0xc]
or ecx, 0xffffffff
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x4269a9
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
jmp 0x4269a9
mov ecx, dword [ebp - 0x1f94]
push 0
push 0x63bfdc
call fcn.00402090
lea edx, [edi - 0x10]
or edi, 0xffffffff
mov byte [ebp - 4], 0xb
lea eax, [edx + 0xc]
mov ecx, edi
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x4269c9
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
push 0x63bfdc
lea ecx, [ebp - 0x1f84]
call fcn.004021e0
push 0x63bfdc
lea ecx, [ebp - 0x1f90]
mov byte [ebp - 4], 0x14
call fcn.004021e0
mov byte [ebp - 4], 0x15
mov ecx, dword [ebp - 0x1f74]
push 0x63bfdc
call fcn.004021e0
mov eax, dword [ebp - 0x1f7c]
mov dword [ebp - 0x1f9c], 1
cmp dword [eax - 0xc], 0
je 0x426bf6
push ecx
add eax, 0xfffffff0
mov esi, esp
push eax
call fcn.004046f0
add eax, 0x10
add esp, 4
lea ecx, [ebp - 0x1fec]
mov dword [esi], eax
call fcn.00444c70
mov eax, dword [ebp - 0x1f78]
cmp dword [eax - 0xc], 0
je 0x426ba3
push ecx
add eax, 0xfffffff0
mov esi, esp
push eax
call fcn.004046f0
add eax, 0x10
add esp, 4
lea ecx, [ebp - 0x1fc4]
mov dword [esi], eax
call fcn.00444c70
mov esi, dword [ebp - 0x1f74]
lea eax, [ebp - 0x1f78]
push eax
mov ecx, esi
call fcn.00404570
mov eax, dword [ebp - 0x1fc0]
movsd xmm3, qword [0x6546a8]
test eax, eax
jle 0x426aad
movd xmm1, eax
cvtdq2pd xmm1, xmm1
movd xmm0, dword [ebp - 0x1fc4]
divsd xmm1, xmm3
cvtdq2pd xmm0, xmm0
addsd xmm1, xmm0
jmp 0x426ab9
movd xmm1, dword [ebp - 0x1fc4]
cvtdq2pd xmm1, xmm1
mov eax, dword [ebp - 0x1fe8]
test eax, eax
jle 0x426ae1
movd xmm2, eax
cvtdq2pd xmm2, xmm2
movd xmm0, dword [ebp - 0x1fec]
divsd xmm2, xmm3
cvtdq2pd xmm0, xmm0
addsd xmm2, xmm0
jmp 0x426aed
movd xmm2, dword [ebp - 0x1fec]
cvtdq2pd xmm2, xmm2
ucomisd xmm1, xmm2
lahf
test ah, 0x44
jp 0x426c74
lea eax, [ebp - 0x1fec]
push eax
lea ecx, [ebp - 0x1fc4]
call fcn.00444de0
lea ecx, [ebp - 0x1fec]
test al, al
je 0x426b5d
lea eax, [ebp - 0x1f5c]
push eax
call fcn.004457a0
push eax
mov ecx, esi
mov byte [ebp - 4], 0x16
call fcn.00404570
mov byte [ebp - 4], 0x15
mov edx, dword [ebp - 0x1f5c]
add edx, 0xfffffff0
mov ecx, edi
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x426b52
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
lea ecx, [ebp - 0x1f84]
jmp 0x426c6e
lea eax, [ebp - 0x1fc4]
push eax
call fcn.00444de0
test al, al
je 0x426c74
lea eax, [ebp - 0x1f5c]
push eax
lea ecx, [ebp - 0x1fc4]
call fcn.004457a0
push eax
mov ecx, esi
mov byte [ebp - 4], 0x17
call fcn.00404570
lea ecx, [ebp - 0x1f5c]
mov byte [ebp - 4], 0x15
call fcn.00401020
jmp 0x426c68
lea eax, [ebp - 0x1f5c]
push eax
lea ecx, [ebp - 0x1fec]
call fcn.004457a0
mov byte [ebp - 4], 0x18
mov esi, dword [ebp - 0x1f74]
push eax
mov ecx, esi
call fcn.00404570
mov byte [ebp - 4], 0x15
mov edx, dword [ebp - 0x1f5c]
add edx, 0xfffffff0
mov ecx, edi
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x426b52
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
lea ecx, [ebp - 0x1f84]
jmp 0x426c6e
mov eax, dword [ebp - 0x1f78]
cmp dword [eax - 0xc], 0
je 0x426c74
push ecx
add eax, 0xfffffff0
mov esi, esp
push eax
call fcn.004046f0
add eax, 0x10
add esp, 4
lea ecx, [ebp - 0x1fc4]
mov dword [esi], eax
call fcn.00444c70
lea eax, [ebp - 0x1f5c]
push eax
lea ecx, [ebp - 0x1fc4]
call fcn.004457a0
mov byte [ebp - 4], 0x19
mov esi, dword [ebp - 0x1f74]
push eax
mov ecx, esi
call fcn.00404570
mov byte [ebp - 4], 0x15
mov edx, dword [ebp - 0x1f5c]
add edx, 0xfffffff0
mov ecx, edi
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x426c68
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
lea ecx, [ebp - 0x1f90]
push esi
call fcn.00404570
mov eax, dword [ebp - 0x1fa0]
test eax, eax
je 0x426c8c
lea ecx, [ebp - 0x1f7c]
push ecx
mov ecx, eax
call fcn.00404570
mov byte [ebp - 4], 0x14
mov edx, dword [ebp - 0x1f90]
add edx, 0xfffffff0
mov ecx, edi
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x426caf
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0xb
mov edx, dword [ebp - 0x1f84]
add edx, 0xfffffff0
mov ecx, edi
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x426cd2
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 9
mov edx, dword [ebp - 0x1f7c]
add edx, 0xfffffff0
mov ecx, edi
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x426cf5
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 7
mov edx, dword [ebp - 0x1f78]
add edx, 0xfffffff0
mov ecx, edi
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x426d18
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 5
mov edx, dword [ebp - 0x1f8c]
add edx, 0xfffffff0
mov ecx, edi
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x426d3b
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 3
mov edx, dword [ebp - 0x1f80]
add edx, 0xfffffff0
mov ecx, edi
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x426d5e
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 2
mov edx, dword [ebp - 0x1f88]
add edx, 0xfffffff0
mov ecx, edi
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x426d81
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
add ebx, 0xfffffff0
mov byte [ebp - 4], 1
lea eax, [ebx + 0xc]
mov ecx, edi
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x426d9e
mov ecx, dword [ebx]
push ebx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0
mov esi, dword [ebp + 0x14]
add esi, 0xfffffff0
lea eax, [esi + 0xc]
lock xadd dword [eax], edi
dec edi
test edi, edi
jg 0x426dbc
mov ecx, dword [esi]
push esi
mov edx, dword [ecx]
call dword [edx + 4]
mov eax, dword [ebp - 0x1f74]
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.005bc16b
mov esp, ebp
pop ebp
ret