Function at 0x420ee0
Capabilities:
Read .ini file

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x59ba6f
mov eax, dword fs:[0]
push eax
mov eax, 0x10aac
call fcn.0056e430
mov eax, dword [0x608554]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov eax, dword [ebp + 0x10]
mov esi, dword [ebp + 8]
push ecx
mov dword [ebp - 0x10aac], eax
lea ecx, [ebp - 0x10848]
mov eax, dword [ebp + 0x14]
push str.CBaseDirectPrintersSilent::GetScopeModelName
mov dword [ebp - 0x10aa0], eax
call fcn.0040a480
mov dword [ebp - 4], 0
mov ecx, dword [0x608f30]
cmp ecx, 0x608f30
je 0x420f85
test byte [ecx + 0x1c], 1
je 0x420f85
cmp dword [0x608f68], 8
mov eax, 0x608f54
mov edx, 0x5c8808
cmovae eax, dword [0x608f54]
push eax
push dword [ecx + 0x14]
push dword [ecx + 0x10]
mov ecx, 0x1e
call fcn.00401840
mov ecx, dword [0x608f30]
add esp, 0xc
test esi, esi
jne 0x420fd5
mov byte [ebp - 0x10844], 1
cmp ecx, 0x608f30
je 0x421b04
test byte [ecx + 0x1c], 1
je 0x421b04
cmp dword [0x608f68], 8
mov eax, 0x608f54
mov edx, 0x5c8808
cmovae eax, dword [0x608f54]
push eax
push dword [ecx + 0x14]
push dword [ecx + 0x10]
lea ecx, [esi + 0x1f]
call fcn.00401840
add esp, 0xc
jmp 0x421b04
push 0x800
lea eax, [ebp - 0x810]
push 0
push eax
call fcn.00571c00
mov ecx, dword [0x6184f0]
lea eax, [ebp - 0x810]
add esp, 0xc
mov ecx, dword [ecx + 0x1c]
push eax
push str.SILENTPATH
call fcn.004f65f0
push 0xfffe
lea eax, [ebp - 0x10810]
push 0
push eax
call fcn.00571c00
add esp, 0xc
lea eax, [ebp - 0x810]
push eax
push 0x7fff
lea eax, [ebp - 0x10810]
push eax
push esi
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileSectionW]
call fcn.00550b4e
mov ecx, eax
test ecx, ecx
je 0x421ba1
mov eax, dword [ecx]
push 2
push 0x7fff
call dword [eax]
mov dword [ebp - 0x10a90], eax
test eax, eax
je 0x421bab
cmp dword [eax + 8], 0x7fff
lea edi, [eax + 0x10]
mov dword [ebp - 0x10a7c], edi
jl 0x421bb0
xor eax, eax
mov dword [edi - 0xc], 0x7fff
mov word [edi + 0xfffe], ax
mov edx, 0x7fff
lea eax, [ebp - 0x10810]
mov ecx, edi
push 0x7fff
push eax
call fcn.00403ed0
add esp, 8
mov byte [ebp - 4], 1
xor ebx, ebx
call fcn.00550b4e
mov ecx, eax
test ecx, ecx
je 0x421bba
mov eax, dword [ecx]
call dword [eax + 0xc]
lea esi, [eax + 0x10]
mov dword [ebp - 0x10a60], esi
mov byte [ebp - 4], 2
call fcn.00550b4e
mov ecx, eax
test ecx, ecx
je 0x421bc4
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x10a64], eax
mov byte [ebp - 4], 3
mov eax, dword [0x5c8510]
mov ecx, dword [edi - 0xc]
mov dword [ebp - 0x10a88], eax
mov eax, dword [0x5c8514]
mov dword [ebp - 0x10ab4], eax
nop
test ebx, ebx
js 0x421a65
cmp ebx, ecx
jge 0x421a65
lea eax, [edi + ebx*2]
push 0
push eax
call fcn.00570b1c
add esp, 8
test eax, eax
je 0x421a65
sub eax, edi
sar eax, 1
mov dword [ebp - 0x10ab4], eax
test eax, eax
jle 0x421a65
xor edx, edx
add eax, 1
mov dword [ebp - 0x10ab0], eax
cmovns edx, eax
mov eax, closesocket
sub eax, ebx
cmp eax, edx
jl 0x421b97
mov ecx, dword [edi - 0xc]
lea eax, [edx + ebx]
sub ecx, ebx
cmp eax, dword [edi - 0xc]
cmovle ecx, edx
mov edx, dword [edi - 0xc]
xor eax, eax
cmp ebx, edx
cmovle eax, ecx
mov dword [ebp - 0x10a5c], eax
test ebx, ebx
jne 0x421193
add eax, ebx
cmp eax, edx
jne 0x421193
mov ecx, dword [ebp - 0x10a90]
call fcn.00403af0
add eax, 0x10
mov dword [ebp - 0x10a80], eax
jmp 0x4211cb
mov ecx, dword [edi - 0x10]
test ecx, ecx
je 0x4211a3
mov eax, dword [ecx]
call dword [eax + 0x10]
test eax, eax
jne 0x4211af
call fcn.00550b4e
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0x10]
push eax
push dword [ebp - 0x10a5c]
lea eax, [edi + ebx*2]
push eax
lea ecx, [ebp - 0x10a80]
call fcn.00403d50
mov eax, dword [ebp - 0x10a80]
lea edx, [esi - 0x10]
mov byte [ebp - 4], 4
lea ebx, [eax - 0x10]
mov dword [ebp - 0x10a5c], edx
cmp ebx, edx
je 0x42123b
cmp dword [edx + 0xc], 0
lea esi, [edx + 0xc]
jl 0x421226
mov ecx, dword [ebx]
cmp ecx, dword [edx]
jne 0x421226
mov ecx, ebx
call fcn.00403af0
mov dword [ebp - 0x10a78], eax
or ecx, 0xffffffff
lock xadd dword [esi], ecx
dec ecx
test ecx, ecx
jg 0x42121b
mov esi, dword [ebp - 0x10a5c]
push esi
mov ecx, dword [esi]
mov edx, dword [ecx]
call dword [edx + 4]
mov eax, dword [ebp - 0x10a78]
lea esi, [eax + 0x10]
mov dword [ebp - 0x10a60], esi
jmp 0x42123b
push dword [eax - 0xc]
lea ecx, [ebp - 0x10a60]
push eax
call fcn.00403bb0
mov esi, dword [ebp - 0x10a60]
mov byte [ebp - 4], 3
or eax, 0xffffffff
lock xadd dword [ebx + 0xc], eax
dec eax
test eax, eax
jg 0x421254
mov ecx, dword [ebx]
push ebx
mov eax, dword [ecx]
call dword [eax + 4]
cmp dword [esi - 0xc], 1
jl 0x421a65
movzx eax, word [esi]
mov ebx, esi
push eax
call fcn.005746d3
add esp, 4
test eax, eax
je 0x421308
movzx eax, word [ebx + 2]
add ebx, 2
push eax
call fcn.005746d3
add esp, 4
test eax, eax
jne 0x421274
cmp ebx, esi
je 0x421308
mov edx, dword [esi - 0xc]
sub ebx, esi
sar ebx, 1
test edx, edx
js 0x421bb0
mov eax, dword [esi - 8]
mov ecx, 1
sub ecx, dword [esi - 4]
sub eax, edx
or eax, ecx
jge 0x4212be
push edx
lea ecx, [ebp - 0x10a60]
call fcn.00403b50
mov esi, dword [ebp - 0x10a60]
mov ecx, dword [esi - 0xc]
lea edx, [esi + ebx*2]
mov eax, ecx
sub eax, ebx
mov dword [ebp - 0x10a5c], eax
lea eax, [eax*2 + 2]
push eax
push edx
lea eax, [ecx*2 + 2]
push eax
push esi
call fcn.004013c0
mov eax, dword [ebp - 0x10a5c]
add esp, 0x10
test eax, eax
js 0x421bb0
cmp eax, dword [esi - 8]
jg 0x421bb0
xor ecx, ecx
mov dword [esi - 0xc], eax
mov word [esi + eax*2], cx
movzx eax, word [esi]
xor ebx, ebx
mov dword [ebp - 0x10a5c], esi
test ax, ax
je 0x421391
mov ecx, eax
mov edi, esi
nop dword [eax]
push ecx
call fcn.005746d3
add esp, 4
test eax, eax
je 0x421338
test ebx, ebx
mov eax, edi
cmovne eax, ebx
mov ebx, eax
jmp 0x42133a
xor ebx, ebx
movzx eax, word [edi + 2]
add edi, 2
mov ecx, eax
test ax, ax
jne 0x421320
mov edi, dword [ebp - 0x10a7c]
test ebx, ebx
je 0x421391
sub ebx, esi
sar ebx, 1
js 0x421bb0
mov eax, dword [esi - 8]
mov ecx, 1
sub ecx, dword [esi - 4]
sub eax, ebx
or eax, ecx
jge 0x42137f
push ebx
lea ecx, [ebp - 0x10a60]
call fcn.00403b50
mov esi, dword [ebp - 0x10a60]
cmp ebx, dword [esi - 8]
jg 0x421bb0
xor eax, eax
mov dword [esi - 0xc], ebx
mov word [esi + ebx*2], ax
cmp dword [ebp + 0xc], 2
jne 0x421b2d
call fcn.00550b4e
mov ecx, eax
test ecx, ecx
je 0x421ba1
mov eax, dword [ecx]
call dword [eax + 0xc]
lea edi, [eax + 0x10]
mov dword [ebp - 0x10a6c], edi
mov byte [ebp - 4], 5
call fcn.00550b4e
mov ecx, eax
test ecx, ecx
je 0x421ba1
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x10a68], eax
mov byte [ebp - 4], 6
call fcn.00550b4e
mov ecx, eax
test ecx, ecx
je 0x421ba1
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x10a74], eax
push 0x20c
lea eax, [ebp - 0x10a54]
mov byte [ebp - 4], 7
push 0
push eax
call fcn.00571c00
mov edx, dword [esi - 0xc]
add esp, 0xc
test edx, edx
jle 0x421441
push dword [ebp - 0x10a88]
push esi
call fcn.00570b1c
mov ebx, eax
add esp, 8
test ebx, ebx
jne 0x421438
mov edx, dword [esi - 0xc]
or ebx, 0xffffffff
jmp 0x421444
mov edx, dword [esi - 0xc]
sub ebx, esi
sar ebx, 1
jmp 0x421444
or ebx, 0xffffffff
xor ecx, ecx
mov eax, edx
test ebx, ebx
cmovns ecx, ebx
cmp ecx, edx
cmovle eax, ecx
xor ecx, ecx
test edx, edx
cmovns ecx, eax
mov dword [ebp - 0x10a5c], ecx
cmp ecx, edx
jne 0x421476
lea ecx, [esi - 0x10]
call fcn.00403af0
add eax, 0x10
mov dword [ebp - 0x10a84], eax
jmp 0x4214ab
mov ecx, dword [esi - 0x10]
test ecx, ecx
je 0x421486
mov eax, dword [ecx]
call dword [eax + 0x10]
test eax, eax
jne 0x421492
call fcn.00550b4e
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0x10]
push eax
push dword [ebp - 0x10a5c]
lea ecx, [ebp - 0x10a84]
push esi
call fcn.00403d50
mov eax, dword [ebp - 0x10a84]
mov byte [ebp - 4], 8
lea edx, [eax - 0x10]
mov ecx, dword [ebp - 0x10a64]
add ecx, 0xfffffff0
mov dword [ebp - 0x10a5c], edx
mov dword [ebp - 0x10a78], ecx
cmp edx, ecx
je 0x42153e
add ecx, 0xc
mov dword [ebp - 0x10a70], ecx
cmp dword [ecx], 0
jl 0x421529
mov edi, dword [ebp - 0x10a78]
mov ecx, dword [edx]
cmp ecx, dword [edi]
mov edi, dword [ebp - 0x10a6c]
jne 0x421529
mov ecx, edx
call fcn.00403af0
mov edx, dword [ebp - 0x10a70]
or ecx, 0xffffffff
mov dword [ebp - 0x10a58], eax
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x42151e
mov eax, dword [ebp - 0x10a78]
push eax
mov ecx, dword [eax]
mov edx, dword [ecx]
call dword [edx + 4]
mov eax, dword [ebp - 0x10a58]
add eax, 0x10
mov dword [ebp - 0x10a64], eax
jmp 0x421538
push dword [eax - 0xc]
lea ecx, [ebp - 0x10a64]
push eax
call fcn.00403bb0
mov edx, dword [ebp - 0x10a5c]
mov byte [ebp - 4], 7
or eax, 0xffffffff
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x421557
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
add ebx, 1
js 0x421829
cmp ebx, dword [esi - 0xc]
jge 0x421829
push dword [ebp - 0x10a88]
lea eax, [esi + ebx*2]
push eax
call fcn.00570b1c
add esp, 8
test eax, eax
je 0x421829
sub eax, esi
sar eax, 1
mov dword [ebp - 0x10a5c], eax
cmp eax, 0xffffffff
je 0x421829
xor edx, edx
test ebx, ebx
cmovns edx, ebx
xor ecx, ecx
sub eax, ebx
mov dword [ebp - 0x10a70], edx
cmovns ecx, eax
mov eax, closesocket
sub eax, edx
cmp eax, ecx
jl 0x421b97
mov ebx, dword [esi - 0xc]
lea eax, [ecx + edx]
cmp eax, ebx
jle 0x4215c7
mov ecx, ebx
sub ecx, edx
xor eax, eax
cmp edx, ebx
cmovle eax, ecx
mov dword [ebp - 0x10a58], eax
test edx, edx
jne 0x4215ef
cmp eax, ebx
jne 0x4215ef
lea ecx, [esi - 0x10]
call fcn.00403af0
add eax, 0x10
mov dword [ebp - 0x10a8c], eax
jmp 0x42162d
mov ecx, dword [esi - 0x10]
test ecx, ecx
je 0x4215ff
mov eax, dword [ecx]
call dword [eax + 0x10]
test eax, eax
jne 0x42160b
call fcn.00550b4e
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0x10]
push eax
mov eax, dword [ebp - 0x10a70]
lea ecx, [ebp - 0x10a8c]
push dword [ebp - 0x10a58]
lea eax, [esi + eax*2]
push eax
call fcn.00403d50
mov eax, dword [ebp - 0x10a8c]
lea edx, [edi - 0x10]
mov byte [ebp - 4], 9
lea ebx, [eax - 0x10]
mov dword [ebp - 0x10a58], edx
cmp ebx, edx
je 0x42169d
cmp dword [edx + 0xc], 0
lea edi, [edx + 0xc]
jl 0x421688
mov ecx, dword [ebx]
cmp ecx, dword [edx]
jne 0x421688
mov ecx, ebx
call fcn.00403af0
mov dword [ebp - 0x10a70], eax
or ecx, 0xffffffff
lock xadd dword [edi], ecx
dec ecx
test ecx, ecx
jg 0x42167d
mov edi, dword [ebp - 0x10a58]
push edi
mov ecx, dword [edi]
mov edx, dword [ecx]
call dword [edx + 4]
mov eax, dword [ebp - 0x10a70]
lea edi, [eax + 0x10]
mov dword [ebp - 0x10a6c], edi
jmp 0x42169d
push dword [eax - 0xc]
lea ecx, [ebp - 0x10a6c]
push eax
call fcn.00403bb0
mov edi, dword [ebp - 0x10a6c]
mov byte [ebp - 4], 7
or eax, 0xffffffff
lock xadd dword [ebx + 0xc], eax
dec eax
test eax, eax
jg 0x4216b6
mov ecx, dword [ebx]
push ebx
mov eax, dword [ecx]
call dword [eax + 4]
mov ecx, dword [ebp - 0x10a5c]
mov eax, dword [esi - 0xc]
inc ecx
sub eax, ecx
push eax
push ecx
lea eax, [ebp - 0x10a94]
push eax
lea ecx, [ebp - 0x10a60]
call fcn.0041d2b0
mov byte [ebp - 4], 0xa
mov eax, dword [ebp - 0x10a94]
mov esi, dword [ebp - 0x10a74]
lea ebx, [eax - 0x10]
lea edx, [esi - 0x10]
mov dword [ebp - 0x10a58], edx
cmp ebx, edx
je 0x421752
cmp dword [edx + 0xc], 0
lea esi, [edx + 0xc]
jl 0x42173d
mov ecx, dword [ebx]
cmp ecx, dword [edx]
jne 0x42173d
mov ecx, ebx
call fcn.00403af0
mov dword [ebp - 0x10a70], eax
or ecx, 0xffffffff
lock xadd dword [esi], ecx
dec ecx
test ecx, ecx
jg 0x421732
mov esi, dword [ebp - 0x10a58]
push esi
mov ecx, dword [esi]
mov edx, dword [ecx]
call dword [edx + 4]
mov eax, dword [ebp - 0x10a70]
lea esi, [eax + 0x10]
mov dword [ebp - 0x10a74], esi
jmp 0x421752
push dword [eax - 0xc]
lea ecx, [ebp - 0x10a74]
push eax
call fcn.00403bb0
mov esi, dword [ebp - 0x10a74]
mov byte [ebp - 4], 7
or eax, 0xffffffff
lock xadd dword [ebx + 0xc], eax
dec eax
test eax, eax
jg 0x42176b
mov ecx, dword [ebx]
push ebx
mov eax, dword [ecx]
call dword [eax + 4]
push ecx
mov ebx, esp
lea ecx, [esi - 0x10]
mov dword [ebp - 0x10a58], ebx
call fcn.00403af0
add eax, 0x10
mov ecx, 0x61861c
mov dword [ebx], eax
lea eax, [ebp - 0x10a98]
push eax
call fcn.00460420
mov byte [ebp - 4], 0xb
mov edx, dword [eax]
mov esi, dword [ebp - 0x10a68]
lea ecx, [edx - 0x10]
lea ebx, [esi - 0x10]
cmp ecx, ebx
je 0x4217fc
cmp dword [ebx + 0xc], 0
lea esi, [ebx + 0xc]
jl 0x4217e7
mov eax, dword [ecx]
cmp eax, dword [ebx]
jne 0x4217e7
call fcn.00403af0
mov dword [ebp - 0x10a58], eax
or ecx, 0xffffffff
lock xadd dword [esi], ecx
dec ecx
test ecx, ecx
jg 0x4217dc
mov ecx, dword [ebx]
push ebx
mov edx, dword [ecx]
call dword [edx + 4]
mov eax, dword [ebp - 0x10a58]
add eax, 0x10
mov dword [ebp - 0x10a68], eax
jmp 0x4217f6
push dword [edx - 0xc]
lea ecx, [ebp - 0x10a68]
push edx
call fcn.00403bb0
mov esi, dword [ebp - 0x10a68]
mov byte [ebp - 4], 7
or ebx, 0xffffffff
mov edx, dword [ebp - 0x10a98]
mov eax, ebx
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x4218cd
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
jmp 0x4218cd
mov eax, dword [esi - 0xc]
lea ecx, [ebp - 0x10a60]
sub eax, ebx
push eax
push ebx
lea eax, [ebp - 0x10a9c]
push eax
call fcn.0041d2b0
mov byte [ebp - 4], 0xc
lea ebx, [edi - 0x10]
mov eax, dword [ebp - 0x10a9c]
lea esi, [eax - 0x10]
cmp esi, ebx
je 0x4218ac
cmp dword [ebx + 0xc], 0
lea edi, [ebx + 0xc]
jl 0x421897
mov ecx, dword [esi]
cmp ecx, dword [ebx]
jne 0x421897
mov ecx, esi
call fcn.00403af0
mov dword [ebp - 0x10a58], eax
or ecx, 0xffffffff
lock xadd dword [edi], ecx
dec ecx
test ecx, ecx
jg 0x42188c
mov ecx, dword [ebx]
push ebx
mov edx, dword [ecx]
call dword [edx + 4]
mov eax, dword [ebp - 0x10a58]
lea edi, [eax + 0x10]
mov dword [ebp - 0x10a6c], edi
jmp 0x4218ac
push dword [eax - 0xc]
lea ecx, [ebp - 0x10a6c]
push eax
call fcn.00403bb0
mov edi, dword [ebp - 0x10a6c]
or ebx, 0xffffffff
mov byte [ebp - 4], 7
mov eax, ebx
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg 0x4218c7
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
mov esi, dword [ebp - 0x10a68]
push 0x20c
lea eax, [ebp - 0x10a54]
push 0
push eax
call fcn.00571c00
push edi
call fcn.00577bb7
push 0x103
push esi
mov dword [ebp - 0x10a54], eax
lea eax, [ebp - 0x10a50]
push 0x104
push eax
call fcn.0057f4bc
mov edi, dword [ebp - 0x10aa0]
lea eax, [ebp - 0x10a64]
add esp, 0x20
mov ecx, edi
push eax
lea eax, [ebp - 0x10aa4]
push eax
call fcn.004254d0
mov esi, dword [ebp - 0x10aa4]
cmp esi, dword [edi]
je 0x421972
mov eax, dword [esi + 0x10]
test eax, eax
je 0x421ba1
mov ecx, dword [ebp - 0x10a64]
nop dword [eax]
mov dx, word [ecx]
cmp dx, word [eax]
jne 0x421966
test dx, dx
je 0x421962
mov dx, word [ecx + 2]
cmp dx, word [eax + 2]
jne 0x421966
add ecx, 4
add eax, 4
test dx, dx
jne 0x421940
xor eax, eax
jmp 0x42196b
sbb eax, eax
or eax, 1
shr eax, 0x1f
test al, al
je 0x4219a8
lea eax, [ebp - 0x10a64]
push ecx
mov dword [ebp - 0x10a58], eax
lea eax, [ebp - 0x10a58]
push eax
push ecx
mov ecx, edi
call fcn.00425b40
push eax
add eax, 0x10
mov ecx, edi
push eax
push esi
lea eax, [ebp - 0x10aa8]
push eax
call fcn.00425be0
mov esi, dword [ebp - 0x10aa8]
lea edi, [esi + 0x14]
mov ecx, 0x83
lea esi, [ebp - 0x10a54]
mov eax, ebx
rep movsd dword es:[edi], dword [esi]
mov byte [ebp - 4], 6
mov edx, dword [ebp - 0x10a74]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x4219d9
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 5
mov eax, ebx
mov edx, dword [ebp - 0x10a68]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x4219fa
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 3
mov eax, ebx
mov edx, dword [ebp - 0x10a6c]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x421a1b
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov edi, dword [ebp - 0x10a7c]
mov esi, dword [ebp - 0x10a60]
mov ecx, dword [ebp - 0x10aac]
lea eax, [ebp - 0x10a64]
push eax
call fcn.0055d02b
mov eax, dword [ebp - 0x10ab0]
mov ebx, eax
test eax, eax
js 0x421bb0
mov ecx, dword [edi - 0xc]
cmp dword [ebp - 0x10ab4], ecx
jge 0x421bb0
movzx eax, word [edi + eax*2]
test ax, ax
jne 0x421100
mov byte [ebp - 0x10844], 1
mov ecx, dword [0x608f30]
cmp ecx, 0x608f30
je 0x421aac
test byte [ecx + 0x1c], 1
je 0x421aac
cmp dword [0x608f68], 8
mov eax, 0x608f54
mov edx, 0x5c8808
cmovae eax, dword [0x608f54]
push eax
push dword [ecx + 0x14]
push dword [ecx + 0x10]
mov ecx, 0x20
call fcn.00401840
add esp, 0xc
mov byte [ebp - 4], 2
or ebx, 0xffffffff
mov edx, dword [ebp - 0x10a64]
mov eax, ebx
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x421ad0
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 1
add esi, 0xfffffff0
mov eax, ebx
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg 0x421aeb
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0
add edi, 0xfffffff0
lock xadd dword [edi + 0xc], ebx
dec ebx
test ebx, ebx
jg 0x421b04
mov ecx, dword [edi]
push edi
mov eax, dword [ecx]
call dword [eax + 4]
lea ecx, [ebp - 0x10848]
call fcn.0040a570
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.0056d977
mov esp, ebp
pop ebp
ret 0x10
mov ebx, dword [ebp - 0x10a64]
lea ecx, [esi - 0x10]
add ebx, 0xfffffff0
cmp ecx, ebx
je 0x421a27
cmp dword [ebx + 0xc], 0
jl 0x421b83
mov eax, dword [ecx]
cmp eax, dword [ebx]
jne 0x421b83
call fcn.00403af0
mov dword [ebp - 0x10a58], eax
lea edx, [ebx + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x421b75
mov ecx, dword [ebx]
push ebx
mov edx, dword [ecx]
call dword [edx + 4]
mov eax, dword [ebp - 0x10a58]
add eax, 0x10
mov dword [ebp - 0x10a64], eax
jmp 0x421a27
push dword [esi - 0xc]
lea ecx, [ebp - 0x10a64]
push esi
call fcn.00403bb0
jmp 0x421a27
push 0x80070216
call fcn.004013a0
push 0x80004005
call fcn.004013a0
call fcn.00403ec0
push 0x80070057
call fcn.004013a0
push 0x80004005
call fcn.004013a0
push 0x80004005
call fcn.004013a0
int3