Function at 0x4200c0
Capabilities:
Terminate process

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x42c5b5
mov eax, dword fs:[0]
push eax
sub esp, 0x38
push ebx
push esi
push edi
mov eax, dword [0x438008]
xor eax, ebp
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov esi, ecx
mov dword [ebp - 0x10], esi
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov edi, eax
mov dword [ebp - 0x44], vtable.CVolCommonBaseWithMemManager.0
lea eax, [ebp - 0x44]
mov dword [ebp - 0x24], edi
mov dword [ebp - 0x28], eax
mov dword [ebp - 0x44], vtable.CVolObject.0
mov dword [ebp - 0x40], 0
mov dword [ebp - 0x3c], 0
mov dword [ebp - 4], 0
mov dword [ebp - 0x44], vtable.CVolMem.0
mov dword [ebp - 0x38], 0
mov dword [ebp - 0x30], 0
mov dword [ebp - 0x34], 0
mov dword [ebp - 0x2c], 0x40
mov dword [ebp - 4], 1
mov dword [ebp - 0x2c], 0x80
mov dword [ebp - 4], 3
mov ebx, dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
push esi
call ebx
mov ecx, dword [esi + 0x28]
cmp ecx, edi
ja 0x4201c0
mov eax, edi
sub eax, ecx
cmp eax, dword [esi + 0x18]
jge 0x4201c0
push esi
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov dword [ebp - 4], 0xffffffff
lea eax, [ebp - 0x44]
mov dword [ebp - 0x28], eax
mov dword [ebp - 0x44], vtable.CVolMem.0
mov dword [ebp - 4], 0xc
mov edx, dword [ebp - 0x38]
test edx, edx
je 0x42085f
mov eax, dword [ebp - 0x44]
push edx
mov eax, dword [eax + 0xc]
cmp eax, method.CWString.virtual_12
jne 0x42085a
mov ecx, 0x438d88
call fcn.0041fed0
jmp 0x42085f
mov edx, dword [esi + 0x40]
xor ecx, ecx
shr edx, 2
sub edx, 1
mov dword [esi + 0x28], edi
mov dword [ebp - 0x14], ecx
mov dword [ebp - 0x1c], edx
js 0x4203ee
nop word [eax + eax]
cmp dword [esi + 0x40], 0
jne 0x4201ea
xor eax, eax
jmp 0x4201ed
mov eax, dword [esi + 0x38]
mov edi, dword [eax + edx*4]
mov dword [ebp - 0x18], edi
lea esi, [edi + 0x14]
push esi
mov dword [ebp - 0x20], esi
call ebx
mov byte [ebp - 4], 7
mov ebx, dword [edi + 0x34]
mov edi, dword [edi + 0x38]
mov byte [ebp - 4], 3
push dword [ebp - 0x20]
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
cmp edi, 2
jne 0x420463
mov eax, dword [ebp - 0x24]
cmp ebx, eax
ja 0x42023f
mov esi, dword [ebp - 0x10]
sub eax, ebx
cmp eax, dword [esi + 0x20]
jge 0x42023f
mov ecx, dword [ebp - 0x14]
mov ebx, dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
inc ecx
mov dword [ebp - 0x14], ecx
jmp 0x4203df
mov edx, dword [ebp - 0x34]
mov eax, edx
mov ebx, dword [ebp - 0x30]
sub eax, ebx
cmp eax, 4
jl 0x420260
mov eax, dword [ebp - 0x38]
mov edx, dword [ebp - 0x18]
mov dword [eax + ebx], edx
add dword [ebp - 0x30], 4
jmp 0x420346
mov ecx, dword [ebp - 0x38]
lea edi, [ebx + 4]
cmp edi, ebx
je 0x420340
test edi, edi
jne 0x4202b1
test ecx, ecx
je 0x420295
mov eax, dword [ebp - 0x44]
push ecx
mov eax, dword [eax + 0xc]
cmp eax, method.CWString.virtual_12
jne 0x420290
mov ecx, 0x438d88
call fcn.0041fed0
jmp 0x420295
lea ecx, [ebp - 0x44]
call eax
mov dword [ebp - 0x38], 0
xor ecx, ecx
mov dword [ebp - 0x30], 0
mov dword [ebp - 0x34], 0
jmp 0x420340
mov esi, dword [ebp - 0x2c]
mov eax, 0x40
test ecx, ecx
jne 0x4202f7
test esi, esi
cmovle esi, eax
mov eax, edi
cdq
idiv esi
mov eax, dword [ebp - 0x44]
sub esi, edx
add esi, edi
push esi
mov eax, dword [eax]
cmp eax, method.CWString.virtual_0
jne 0x4202f0
mov ecx, 0x438d88
call fcn.0041fdf0
mov ecx, eax
test ecx, ecx
jne 0x420337
push 0xffffffffffffffff
call dword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll_exit]
lea ecx, [ebp - 0x44]
call eax
jmp 0x420335
test esi, esi
cmovle esi, eax
cmp edx, edi
jl 0x420306
sub edx, edi
cmp edx, esi
jle 0x42033d
mov eax, edi
cdq
idiv esi
mov eax, dword [ebp - 0x44]
sub esi, edx
add esi, edi
push esi
mov eax, dword [eax + 8]
push ecx
cmp eax, method.CWString.virtual_8
jne 0x420330
mov ecx, 0x438d88
call fcn.0041fe40
mov ecx, eax
test ecx, ecx
je 0x4202e8
jmp 0x420337
lea ecx, [ebp - 0x44]
call eax
mov ecx, eax
mov dword [ebp - 0x34], esi
mov dword [ebp - 0x38], ecx
mov dword [ebp - 0x30], edi
mov edx, dword [ebp - 0x18]
mov dword [ecx + ebx], edx
mov ecx, dword [ebp - 0x1c]
mov esi, dword [ebp - 0x10]
add esi, 0x2c
lea edx, [ecx*4]
mov eax, dword [esi + 0x14]
cmp edx, 0xffffffff
jg 0x420424
lea ebx, [eax - 4]
test ebx, ebx
jg 0x42038f
mov ecx, dword [esi + 0xc]
test ecx, ecx
je 0x420378
mov eax, dword [esi]
push ecx
mov ecx, esi
call dword [eax + 0xc]
mov dword [esi + 0xc], 0
mov dword [esi + 0x14], 0
mov dword [esi + 0x10], 0
jmp 0x4203d3
cmp ebx, eax
je 0x4203d3
mov ecx, dword [esi + 0xc]
mov eax, 0x40
mov edi, dword [esi + 0x18]
test ecx, ecx
je 0x4205d2
test edi, edi
cmovle edi, eax
mov eax, dword [esi + 0x10]
cmp eax, ebx
jl 0x4203b8
sub eax, ebx
cmp eax, edi
jle 0x4203d0
mov eax, ebx
cdq
idiv edi
mov eax, dword [esi]
sub edi, edx
add edi, ebx
push edi
push ecx
mov ecx, esi
call dword [eax + 8]
mov dword [esi + 0xc], eax
mov dword [esi + 0x10], edi
mov dword [esi + 0x14], ebx
mov ebx, dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov esi, dword [ebp - 0x10]
mov ecx, dword [ebp - 0x14]
mov edx, dword [ebp - 0x1c]
sub edx, 1
mov dword [ebp - 0x1c], edx
jns 0x4201e0
cmp ecx, dword [esi + 0x1c]
jle 0x420804
mov eax, dword [esi + 0x40]
shr eax, 2
add eax, 0xffffffff
mov dword [ebp - 0x1c], eax
js 0x420804
lea ebx, [eax*4]
mov dword [ebp - 0x18], ebx
cmp dword [esi + 0x40], 0
jne 0x420621
xor eax, eax
jmp 0x420624
mov edi, eax
sub edi, edx
cmp edi, 4
jle 0x420449
mov ecx, dword [esi + 0xc]
sub eax, edx
add ecx, edx
mov edi, 4
sub eax, edi
push eax
lea eax, [ecx + 4]
push eax
push ecx
call sub.VCRUNTIME140.dll_memmove
add esp, 0xc
mov eax, dword [esi + 0x14]
cmp eax, edi
je 0x420369
sub eax, edi
mov ecx, esi
push eax
call fcn.0041f0e0
jmp 0x4203d3
mov dword [ebp - 0x28], esi
mov ebx, dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
push esi
call ebx
mov byte [ebp - 4], 8
mov edi, dword [ebp - 0x18]
mov esi, dword [edi + 0x38]
mov byte [ebp - 4], 3
push dword [ebp - 0x28]
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
test esi, esi
jne 0x4203d9
mov edx, dword [ebp - 0x34]
mov eax, edx
mov ebx, dword [ebp - 0x30]
sub eax, ebx
cmp eax, 4
jl 0x4204ac
mov eax, dword [ebp - 0x38]
mov dword [eax + ebx], edi
add dword [ebp - 0x30], 4
jmp 0x420594
mov ecx, dword [ebp - 0x38]
lea edi, [ebx + 4]
cmp edi, ebx
je 0x42058e
test edi, edi
jne 0x4204fd
test ecx, ecx
je 0x4204e1
mov eax, dword [ebp - 0x44]
push ecx
mov eax, dword [eax + 0xc]
cmp eax, method.CWString.virtual_12
jne 0x4204dc
mov ecx, 0x438d88
call fcn.0041fed0
jmp 0x4204e1
lea ecx, [ebp - 0x44]
call eax
mov dword [ebp - 0x38], 0
xor ecx, ecx
mov dword [ebp - 0x30], 0
mov dword [ebp - 0x34], 0
jmp 0x42058e
mov esi, dword [ebp - 0x2c]
mov eax, 0x40
test ecx, ecx
jne 0x420541
test esi, esi
cmovle esi, eax
mov eax, edi
cdq
idiv esi
mov eax, dword [ebp - 0x44]
sub esi, edx
add esi, edi
push esi
mov eax, dword [eax]
cmp eax, method.CWString.virtual_0
jne 0x42053a
mov ecx, 0x438d88
call fcn.0041fdf0
mov ecx, eax
test ecx, ecx
je 0x4202e8
jmp 0x420585
lea ecx, [ebp - 0x44]
call eax
jmp 0x420583
test esi, esi
cmovle esi, eax
cmp edx, edi
jl 0x420550
sub edx, edi
cmp edx, esi
jle 0x42058b
mov eax, edi
cdq
idiv esi
mov eax, dword [ebp - 0x44]
sub esi, edx
add esi, edi
push esi
mov eax, dword [eax + 8]
push ecx
cmp eax, method.CWString.virtual_8
jne 0x42057e
mov ecx, 0x438d88
call fcn.0041fe40
mov ecx, eax
test ecx, ecx
je 0x4202e8
jmp 0x420585
lea ecx, [ebp - 0x44]
call eax
mov ecx, eax
mov dword [ebp - 0x34], esi
mov dword [ebp - 0x38], ecx
mov dword [ebp - 0x30], edi
mov edx, dword [ebp - 0x18]
mov dword [ecx + ebx], edx
mov ecx, dword [ebp - 0x1c]
mov esi, dword [ebp - 0x10]
add esi, 0x2c
lea edx, [ecx*4]
mov eax, dword [esi + 0x14]
cmp edx, 0xffffffff
jg 0x4205ec
lea ebx, [eax - 4]
test ebx, ebx
jle 0x420369
cmp ebx, eax
je 0x4203d3
mov ecx, dword [esi + 0xc]
mov eax, 0x40
mov edi, dword [esi + 0x18]
test ecx, ecx
jne 0x4203a6
test edi, edi
mov ecx, esi
cmovle edi, eax
mov eax, ebx
cdq
idiv edi
mov eax, dword [esi]
sub edi, edx
add edi, ebx
push edi
call dword [eax]
jmp 0x4203ca
mov edi, eax
sub edi, edx
cmp edi, 4
jle 0x420611
mov ecx, dword [esi + 0xc]
sub eax, edx
add ecx, edx
mov edi, 4
sub eax, edi
push eax
lea eax, [ecx + 4]
push eax
push ecx
call sub.VCRUNTIME140.dll_memmove
add esp, 0xc
mov eax, dword [esi + 0x14]
cmp eax, edi
jne 0x420454
jmp 0x420369
mov eax, dword [esi + 0x38]
mov edi, dword [ebx + eax]
mov dword [ebp - 0x28], edi
lea eax, [edi + 0x14]
push eax
mov dword [ebp - 0x24], eax
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov byte [ebp - 4], 9
mov esi, dword [edi + 0x38]
mov byte [ebp - 4], 3
push dword [ebp - 0x24]
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
cmp esi, 2
jne 0x420840
mov edx, dword [ebp - 0x34]
mov eax, edx
mov ebx, dword [ebp - 0x30]
sub eax, ebx
cmp eax, 4
jl 0x420672
mov eax, dword [ebp - 0x38]
mov dword [eax + ebx], edi
add dword [ebp - 0x30], 4
jmp 0x42074c
lea edi, [ebx + 4]
cmp edi, ebx
jne 0x420681
mov ecx, dword [ebp - 0x38]
jmp 0x420746
test edi, edi
jne 0x4206b2
mov eax, dword [ebp - 0x38]
test eax, eax
je 0x420696
push eax
mov eax, dword [ebp - 0x44]
lea ecx, [ebp - 0x44]
call dword [eax + 0xc]
mov dword [ebp - 0x38], 0
xor ecx, ecx
mov dword [ebp - 0x30], 0
mov dword [ebp - 0x34], 0
jmp 0x420746
mov ecx, dword [ebp - 0x38]
mov eax, 0x40
mov esi, dword [ebp - 0x2c]
test ecx, ecx
jne 0x4206f9
test esi, esi
cmovle esi, eax
mov eax, edi
cdq
idiv esi
mov eax, dword [ebp - 0x44]
sub esi, edx
add esi, edi
push esi
mov eax, dword [eax]
cmp eax, method.CWString.virtual_0
jne 0x4206f2
mov ecx, 0x438d88
call fcn.0041fdf0
mov ecx, eax
test ecx, ecx
je 0x4202e8
jmp 0x42073d
lea ecx, [ebp - 0x44]
call eax
jmp 0x42073b
test esi, esi
cmovle esi, eax
cmp edx, edi
jl 0x420708
sub edx, edi
cmp edx, esi
jle 0x420743
mov eax, edi
cdq
idiv esi
mov eax, dword [ebp - 0x44]
sub esi, edx
add esi, edi
push esi
mov eax, dword [eax + 8]
push ecx
cmp eax, method.CWString.virtual_8
jne 0x420736
mov ecx, 0x438d88
call fcn.0041fe40
mov ecx, eax
test ecx, ecx
je 0x4202e8
jmp 0x42073d
lea ecx, [ebp - 0x44]
call eax
mov ecx, eax
mov dword [ebp - 0x34], esi
mov dword [ebp - 0x38], ecx
mov dword [ebp - 0x30], edi
mov eax, dword [ebp - 0x28]
mov dword [ecx + ebx], eax
mov esi, dword [ebp - 0x10]
mov ebx, dword [ebp - 0x18]
add esi, 0x2c
mov eax, dword [esi + 0x14]
cmp ebx, 0xffffffff
jg 0x420794
add eax, 0xfffffffc
test eax, eax
jg 0x42078a
mov ecx, dword [esi + 0xc]
test ecx, ecx
je 0x420773
mov eax, dword [esi]
push ecx
mov ecx, esi
call dword [eax + 0xc]
mov dword [esi + 0xc], 0
mov dword [esi + 0x14], 0
mov dword [esi + 0x10], 0
jmp 0x4207f5
push eax
mov ecx, esi
call fcn.0041f0e0
jmp 0x4207f5
mov edi, eax
sub edi, ebx
cmp edi, 4
jle 0x4207bb
mov ecx, dword [esi + 0xc]
mov edi, 4
add ecx, dword [ebp - 0x18]
sub eax, dword [ebp - 0x18]
sub eax, edi
push eax
lea eax, [ecx + 4]
push eax
push ecx
call sub.VCRUNTIME140.dll_memmove
add esp, 0xc
mov eax, dword [esi + 0x14]
cmp eax, edi
jne 0x4207e8
mov ecx, dword [esi + 0xc]
test ecx, ecx
je 0x4207d1
mov eax, dword [esi]
push ecx
mov ecx, esi
call dword [eax + 0xc]
mov dword [esi + 0xc], 0
mov dword [esi + 0x14], 0
mov dword [esi + 0x10], 0
jmp 0x4207f2
sub eax, edi
mov ecx, esi
push eax
call fcn.0041f0e0
mov ebx, dword [ebp - 0x18]
mov ecx, dword [ebp - 0x14]
mov esi, dword [ebp - 0x10]
dec ecx
mov dword [ebp - 0x14], ecx
cmp ecx, dword [esi + 0x1c]
jg 0x420843
push esi
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov eax, dword [ebp - 0x30]
xor esi, esi
mov edi, eax
shr edi, 2
test edi, edi
je 0x420179
nop dword [eax]
mov ecx, dword [ebp - 0x38]
xor edx, edx
test eax, eax
cmove ecx, edx
mov ecx, dword [ecx + esi*4]
mov eax, dword [ecx]
call dword [eax + 4]
inc esi
cmp esi, edi
jge 0x420179
mov eax, dword [ebp - 0x30]
jmp 0x420820
mov esi, dword [ebp - 0x10]
mov eax, dword [ebp - 0x1c]
sub ebx, 4
dec eax
mov dword [ebp - 0x18], ebx
mov dword [ebp - 0x1c], eax
test eax, eax
jns 0x420413
jmp 0x420804
lea ecx, [ebp - 0x44]
call eax
mov dword [ebp - 0x38], 0
mov dword [ebp - 0x30], 0
mov dword [ebp - 0x34], 0
mov dword [ebp - 4], 0xffffffff
mov dword [ebp - 0x44], vtable.CVolObject.0
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4