Function at 0x403a50
Capabilities:
Terminate process

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x46b876
mov eax, dword fs:[0]
push eax
sub esp, 0x14
push ebx
push esi
push edi
mov eax, dword [0x5e500c]
xor eax, ebp
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov ebx, edx
mov edi, ecx
mov dword [ebp - 0x20], edi
mov dword [ebp - 4], 0
mov dword [ebp - 0x1c], 0
mov dword [edi], vtable.CVolObject.0
mov dword [edi + 4], 0
mov dword [edi + 8], 0
mov dword [ebp - 4], 1
mov dword [edi], vtable.CVolMem.0
mov dword [edi + 0xc], 0
mov dword [edi + 0x14], 0
mov dword [edi + 0x10], 0
mov dword [edi + 0x18], 0x40
mov dword [ebp - 4], 0
mov esi, dword [edi + 0x14]
push 0x54
push 0
mov dword [ebp - 0x1c], 1
lea eax, [esi + 0x54]
push eax
call fcn.00463310
add eax, esi
push eax
call sub.VCRUNTIME140.dll_memset
mov esi, dword [ebx + 0xc]
add esp, 0xc
test esi, esi
jne 0x403b07
cmp dword [ebx + 0x24], esi
mov esi, 0x5ca534
je 0x403b07
mov esi, dword [ebx + 0x1c]
mov ecx, esi
lea edx, [ecx + 2]
nop dword [eax]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x403b10
sub ecx, edx
sar ecx, 1
lea ebx, [ecx + ecx]
test ebx, ebx
jle 0x403c33
mov ecx, dword [edi + 0x14]
mov dword [ebp - 0x10], ecx
test ecx, ecx
jg 0x403bf8
mov eax, dword [edi + 0x10]
sub eax, ecx
cmp eax, ebx
jl 0x403bd7
cmp ebx, 2
jne 0x403b72
test esi, esi
jne 0x403b5f
mov eax, dword [edi + 0xc]
xor edx, edx
mov word [eax + ecx], dx
add dword [edi + 0x14], ebx
jmp 0x403c33
mov eax, dword [edi + 0xc]
movzx edx, word [esi]
mov word [eax + ecx], dx
add dword [edi + 0x14], 2
jmp 0x403c33
cmp ebx, 4
jne 0x403b9c
test esi, esi
jne 0x403b8b
mov eax, dword [edi + 0xc]
xor edx, edx
mov dword [eax + ecx], edx
add dword [edi + 0x14], ebx
jmp 0x403c33
mov eax, dword [edi + 0xc]
mov edx, dword [esi]
mov dword [eax + ecx], edx
add dword [edi + 0x14], 4
jmp 0x403c33
cmp ebx, 8
jne 0x403bd7
test esi, esi
jne 0x403bc2
mov eax, dword [edi + 0xc]
xorps xmm0, xmm0
movlpd qword [ebp - 0x18], xmm0
mov edx, dword [ebp - 0x18]
mov esi, dword [ebp - 0x14]
mov dword [eax + ecx], edx
mov dword [eax + ecx + 4], esi
add dword [edi + 0x14], ebx
jmp 0x403c33
mov eax, dword [edi + 0xc]
mov edx, dword [esi]
mov esi, dword [esi + 4]
mov dword [eax + ecx], edx
mov dword [eax + ecx + 4], esi
add dword [edi + 0x14], 8
jmp 0x403c33
lea eax, [ecx + ebx]
mov ecx, edi
push eax
call fcn.00463310
add eax, dword [ebp - 0x10]
push ebx
test esi, esi
je 0x403bf3
push esi
push eax
call sub.VCRUNTIME140.dll_memcpy
jmp 0x403c30
push 0
push eax
jmp 0x403c2b
lea eax, [ecx + ebx]
mov ecx, edi
push eax
call fcn.00463310
push dword [ebp - 0x10]
mov dword [ebp - 0x14], eax
push eax
lea ecx, [eax + ebx]
push ecx
call sub.VCRUNTIME140.dll_memmove
add esp, 0xc
push ebx
test esi, esi
je 0x403c26
push esi
push dword [ebp - 0x14]
call sub.VCRUNTIME140.dll_memcpy
jmp 0x403c30
push 0
push dword [ebp - 0x14]
call sub.VCRUNTIME140.dll_memset
add esp, 0xc
mov ebx, dword [edi + 0x14]
mov eax, 0x40
mov dword [ebp - 0x14], ebx
mov dword [ebp - 0x10], eax
cmp ebx, eax
jg 0x403d3b
mov edx, dword [edi + 0x10]
mov eax, edx
mov ecx, dword [edi + 0xc]
sub eax, ebx
cmp eax, 4
jl 0x403c67
mov eax, dword [ebp + 8]
mov dword [ecx + ebx], eax
add dword [edi + 0x14], 4
jmp 0x403dcd
lea esi, [ebx + 4]
cmp esi, ebx
je 0x403d30
test esi, esi
jne 0x403cb9
test ecx, ecx
je 0x403c97
mov eax, dword [edi]
push ecx
mov eax, dword [eax + 0xc]
cmp eax, fcn.0045f7d0
jne 0x403c93
mov ecx, 0x5e6638
call fcn.00463fb0
jmp 0x403c97
mov ecx, edi
call eax
mov eax, dword [ebp + 8]
xor ecx, ecx
mov dword [edi + 0xc], 0
mov dword [edi + 0x14], 0
mov dword [edi + 0x10], 0
mov dword [ecx + ebx], eax
jmp 0x403dcd
test ecx, ecx
jne 0x403cd2
push esi
mov ecx, edi
call fcn.004632b0
mov ecx, eax
mov eax, dword [ebp + 8]
mov dword [ecx + ebx], eax
jmp 0x403dcd
mov eax, dword [edi + 0x18]
test eax, eax
cmovle eax, dword [ebp - 0x10]
mov dword [ebp - 0x14], eax
cmp edx, esi
jl 0x403ce8
sub edx, esi
cmp edx, eax
jle 0x403d2d
mov eax, esi
cdq
idiv dword [ebp - 0x14]
mov eax, esi
sub eax, edx
add eax, dword [ebp - 0x14]
mov dword [ebp - 0x10], eax
mov eax, dword [edi]
push dword [ebp - 0x10]
push ecx
mov eax, dword [eax + 8]
cmp eax, method.CWString.virtual_8
jne 0x403d1e
mov ecx, 0x5e6638
call fcn.00463f20
mov ecx, eax
test ecx, ecx
je 0x404418
jmp 0x403d24
mov ecx, edi
call eax
mov ecx, eax
mov eax, dword [ebp - 0x10]
mov dword [edi + 0xc], ecx
mov dword [edi + 0x10], eax
mov dword [edi + 0x14], esi
mov eax, dword [ebp + 8]
mov dword [ecx + ebx], eax
jmp 0x403dcd
mov esi, dword [edi + 0xc]
add ebx, 4
cmp ebx, dword [ebp - 0x14]
je 0x403db1
test esi, esi
jne 0x403d56
push ebx
mov ecx, edi
call fcn.004632b0
mov esi, eax
jmp 0x403db1
mov ecx, dword [edi + 0x18]
test ecx, ecx
cmovle ecx, eax
mov eax, dword [edi + 0x10]
cmp eax, ebx
jl 0x403d6b
sub eax, ebx
cmp eax, ecx
jle 0x403dae
mov eax, ebx
cdq
idiv ecx
mov eax, ebx
sub eax, edx
add eax, ecx
mov dword [ebp - 0x10], eax
mov eax, dword [edi]
push dword [ebp - 0x10]
push esi
mov eax, dword [eax + 8]
cmp eax, method.CWString.virtual_8
jne 0x403d9f
mov ecx, 0x5e6638
call fcn.00463f20
mov esi, eax
test esi, esi
je 0x404418
jmp 0x403da5
mov ecx, edi
call eax
mov esi, eax
mov eax, dword [ebp - 0x10]
mov dword [edi + 0xc], esi
mov dword [edi + 0x10], eax
mov dword [edi + 0x14], ebx
mov eax, dword [ebp - 0x14]
add esi, 0x40
add eax, 0xffffffc0
push eax
push esi
lea eax, [esi + 4]
push eax
call sub.VCRUNTIME140.dll_memmove
mov eax, dword [ebp + 8]
add esp, 0xc
mov dword [esi], eax
mov ebx, dword [edi + 0x14]
mov dword [ebp + 8], ebx
cmp ebx, 0x44
jg 0x403ed0
mov edx, dword [edi + 0x10]
mov eax, edx
sub eax, ebx
cmp eax, 4
jl 0x403dfb
mov eax, dword [edi + 0xc]
mov dword [eax + ebx], 0
add dword [edi + 0x14], 4
jmp 0x403f6d
mov ecx, dword [edi + 0xc]
add ebx, 4
cmp ebx, dword [ebp + 8]
je 0x403ec1
test ebx, ebx
jne 0x403e51
test ecx, ecx
je 0x403e2f
mov eax, dword [edi]
push ecx
mov eax, dword [eax + 0xc]
cmp eax, fcn.0045f7d0
jne 0x403e2b
mov ecx, 0x5e6638
call fcn.00463fb0
jmp 0x403e2f
mov ecx, edi
call eax
mov eax, dword [ebp + 8]
xor ecx, ecx
mov dword [edi + 0xc], 0
mov dword [edi + 0x14], 0
mov dword [edi + 0x10], 0
mov dword [ecx + eax], ecx
jmp 0x403f6d
test ecx, ecx
jne 0x403e6e
push ebx
mov ecx, edi
call fcn.004632b0
mov ecx, eax
mov eax, dword [ebp + 8]
mov dword [ecx + eax], 0
jmp 0x403f6d
mov esi, dword [edi + 0x18]
mov eax, 0x40
test esi, esi
cmovle esi, eax
cmp edx, ebx
jl 0x403e85
sub edx, ebx
cmp edx, esi
jle 0x403ebe
mov eax, ebx
cdq
idiv esi
mov eax, dword [edi]
sub esi, edx
add esi, ebx
push esi
mov eax, dword [eax + 8]
push ecx
cmp eax, method.CWString.virtual_8
jne 0x403eb2
mov ecx, 0x5e6638
call fcn.00463f20
mov ecx, eax
test ecx, ecx
je 0x404418
jmp 0x403eb8
mov ecx, edi
call eax
mov ecx, eax
mov dword [edi + 0xc], ecx
mov dword [edi + 0x10], esi
mov dword [edi + 0x14], ebx
mov eax, dword [ebp + 8]
mov dword [ecx + eax], 0
jmp 0x403f6d
mov esi, dword [edi + 0xc]
lea ecx, [ebx + 4]
cmp ecx, ebx
je 0x403f53
test esi, esi
jne 0x403eea
push ecx
mov ecx, edi
call fcn.004632b0
mov esi, eax
jmp 0x403f53
mov eax, dword [edi + 0x18]
mov edx, 0x40
test eax, eax
cmovle eax, edx
mov edx, dword [edi + 0x10]
mov dword [ebp + 8], eax
cmp edx, ecx
jl 0x403f0c
sub edx, ecx
cmp edx, eax
jg 0x403f0c
mov dword [edi + 0x14], ecx
jmp 0x403f53
mov eax, ecx
cdq
idiv dword [ebp + 8]
mov eax, dword [edi]
sub ecx, edx
add ecx, dword [ebp + 8]
push ecx
mov eax, dword [eax + 8]
mov dword [ebp + 8], ecx
push esi
cmp eax, method.CWString.virtual_8
jne 0x403f3e
mov ecx, 0x5e6638
call fcn.00463f20
mov esi, eax
test esi, esi
je 0x404418
jmp 0x403f44
mov ecx, edi
call eax
mov esi, eax
mov eax, dword [ebp + 8]
mov dword [edi + 0x10], eax
lea eax, [ebx + 4]
mov dword [edi + 0xc], esi
mov dword [edi + 0x14], eax
add esi, 0x44
lea eax, [ebx - 0x44]
push eax
push esi
lea eax, [esi + 4]
push eax
call sub.VCRUNTIME140.dll_memmove
add esp, 0xc
mov dword [esi], 0
mov ebx, dword [edi + 0x14]
mov dword [ebp + 8], ebx
cmp ebx, 0x48
jg 0x404070
mov edx, dword [edi + 0x10]
mov eax, edx
sub eax, ebx
cmp eax, 4
jl 0x403f9b
mov eax, dword [edi + 0xc]
mov dword [eax + ebx], 0
add dword [edi + 0x14], 4
jmp 0x40410d
mov ecx, dword [edi + 0xc]
add ebx, 4
cmp ebx, dword [ebp + 8]
je 0x404061
test ebx, ebx
jne 0x403ff1
test ecx, ecx
je 0x403fcf
mov eax, dword [edi]
push ecx
mov eax, dword [eax + 0xc]
cmp eax, fcn.0045f7d0
jne 0x403fcb
mov ecx, 0x5e6638
call fcn.00463fb0
jmp 0x403fcf
mov ecx, edi
call eax
mov eax, dword [ebp + 8]
xor ecx, ecx
mov dword [edi + 0xc], 0
mov dword [edi + 0x14], 0
mov dword [edi + 0x10], 0
mov dword [ecx + eax], ecx
jmp 0x40410d
test ecx, ecx
jne 0x40400e
push ebx
mov ecx, edi
call fcn.004632b0
mov ecx, eax
mov eax, dword [ebp + 8]
mov dword [ecx + eax], 0
jmp 0x40410d
mov esi, dword [edi + 0x18]
mov eax, 0x40
test esi, esi
cmovle esi, eax
cmp edx, ebx
jl 0x404025
sub edx, ebx
cmp edx, esi
jle 0x40405e
mov eax, ebx
cdq
idiv esi
mov eax, dword [edi]
sub esi, edx
add esi, ebx
push esi
mov eax, dword [eax + 8]
push ecx
cmp eax, method.CWString.virtual_8
jne 0x404052
mov ecx, 0x5e6638
call fcn.00463f20
mov ecx, eax
test ecx, ecx
je 0x404418
jmp 0x404058
mov ecx, edi
call eax
mov ecx, eax
mov dword [edi + 0xc], ecx
mov dword [edi + 0x10], esi
mov dword [edi + 0x14], ebx
mov eax, dword [ebp + 8]
mov dword [ecx + eax], 0
jmp 0x40410d
mov esi, dword [edi + 0xc]
lea ecx, [ebx + 4]
cmp ecx, ebx
je 0x4040f3
test esi, esi
jne 0x40408a
push ecx
mov ecx, edi
call fcn.004632b0
mov esi, eax
jmp 0x4040f3
mov eax, dword [edi + 0x18]
mov edx, 0x40
test eax, eax
cmovle eax, edx
mov edx, dword [edi + 0x10]
mov dword [ebp + 8], eax
cmp edx, ecx
jl 0x4040ac
sub edx, ecx
cmp edx, eax
jg 0x4040ac
mov dword [edi + 0x14], ecx
jmp 0x4040f3
mov eax, ecx
cdq
idiv dword [ebp + 8]
mov eax, dword [edi]
sub ecx, edx
add ecx, dword [ebp + 8]
push ecx
mov eax, dword [eax + 8]
mov dword [ebp + 8], ecx
push esi
cmp eax, method.CWString.virtual_8
jne 0x4040de
mov ecx, 0x5e6638
call fcn.00463f20
mov esi, eax
test esi, esi
je 0x404418
jmp 0x4040e4
mov ecx, edi
call eax
mov esi, eax
mov eax, dword [ebp + 8]
mov dword [edi + 0x10], eax
lea eax, [ebx + 4]
mov dword [edi + 0xc], esi
mov dword [edi + 0x14], eax
add esi, 0x48
lea eax, [ebx - 0x48]
push eax
push esi
lea eax, [esi + 4]
push eax
call sub.VCRUNTIME140.dll_memmove
add esp, 0xc
mov dword [esi], 0
mov ebx, dword [edi + 0x14]
mov dword [ebp + 8], ebx
cmp ebx, 0x4c
jg 0x404210
mov edx, dword [edi + 0x10]
mov eax, edx
sub eax, ebx
cmp eax, 4
jl 0x40413b
mov eax, dword [edi + 0xc]
mov dword [eax + ebx], 0
add dword [edi + 0x14], 4
jmp 0x4042ad
mov ecx, dword [edi + 0xc]
add ebx, 4
cmp ebx, dword [ebp + 8]
je 0x404201
test ebx, ebx
jne 0x404191
test ecx, ecx
je 0x40416f
mov eax, dword [edi]
push ecx
mov eax, dword [eax + 0xc]
cmp eax, fcn.0045f7d0
jne 0x40416b
mov ecx, 0x5e6638
call fcn.00463fb0
jmp 0x40416f
mov ecx, edi
call eax
mov eax, dword [ebp + 8]
xor ecx, ecx
mov dword [edi + 0xc], 0
mov dword [edi + 0x14], 0
mov dword [edi + 0x10], 0
mov dword [ecx + eax], ecx
jmp 0x4042ad
test ecx, ecx
jne 0x4041ae
push ebx
mov ecx, edi
call fcn.004632b0
mov ecx, eax
mov eax, dword [ebp + 8]
mov dword [ecx + eax], 0
jmp 0x4042ad
mov esi, dword [edi + 0x18]
mov eax, 0x40
test esi, esi
cmovle esi, eax
cmp edx, ebx
jl 0x4041c5
sub edx, ebx
cmp edx, esi
jle 0x4041fe
mov eax, ebx
cdq
idiv esi
mov eax, dword [edi]
sub esi, edx
add esi, ebx
push esi
mov eax, dword [eax + 8]
push ecx
cmp eax, method.CWString.virtual_8
jne 0x4041f2
mov ecx, 0x5e6638
call fcn.00463f20
mov ecx, eax
test ecx, ecx
je 0x404418
jmp 0x4041f8
mov ecx, edi
call eax
mov ecx, eax
mov dword [edi + 0xc], ecx
mov dword [edi + 0x10], esi
mov dword [edi + 0x14], ebx
mov eax, dword [ebp + 8]
mov dword [ecx + eax], 0
jmp 0x4042ad
mov esi, dword [edi + 0xc]
lea ecx, [ebx + 4]
cmp ecx, ebx
je 0x404293
test esi, esi
jne 0x40422a
push ecx
mov ecx, edi
call fcn.004632b0
mov esi, eax
jmp 0x404293
mov eax, dword [edi + 0x18]
mov edx, 0x40
test eax, eax
cmovle eax, edx
mov edx, dword [edi + 0x10]
mov dword [ebp + 8], eax
cmp edx, ecx
jl 0x40424c
sub edx, ecx
cmp edx, eax
jg 0x40424c
mov dword [edi + 0x14], ecx
jmp 0x404293
mov eax, ecx
cdq
idiv dword [ebp + 8]
mov eax, dword [edi]
sub ecx, edx
add ecx, dword [ebp + 8]
push ecx
mov eax, dword [eax + 8]
mov dword [ebp + 8], ecx
push esi
cmp eax, method.CWString.virtual_8
jne 0x40427e
mov ecx, 0x5e6638
call fcn.00463f20
mov esi, eax
test esi, esi
je 0x404418
jmp 0x404284
mov ecx, edi
call eax
mov esi, eax
mov eax, dword [ebp + 8]
mov dword [edi + 0x10], eax
lea eax, [ebx + 4]
mov dword [edi + 0xc], esi
mov dword [edi + 0x14], eax
add esi, 0x4c
lea eax, [ebx - 0x4c]
push eax
push esi
lea eax, [esi + 4]
push eax
call sub.VCRUNTIME140.dll_memmove
add esp, 0xc
mov dword [esi], 0
mov ebx, dword [edi + 0x14]
mov dword [ebp + 8], ebx
cmp ebx, 0x50
jg 0x4043b0
mov edx, dword [edi + 0x10]
mov eax, edx
sub eax, ebx
cmp eax, 4
jl 0x4042db
mov eax, dword [edi + 0xc]
mov dword [eax + ebx], 0
add dword [edi + 0x14], 4
jmp 0x40444f
mov ecx, dword [edi + 0xc]
add ebx, 4
cmp ebx, dword [ebp + 8]
je 0x4043a1
test ebx, ebx
jne 0x404331
test ecx, ecx
je 0x40430f
mov eax, dword [edi]
push ecx
mov eax, dword [eax + 0xc]
cmp eax, fcn.0045f7d0
jne 0x40430b
mov ecx, 0x5e6638
call fcn.00463fb0
jmp 0x40430f
mov ecx, edi
call eax
mov eax, dword [ebp + 8]
xor ecx, ecx
mov dword [edi + 0xc], 0
mov dword [edi + 0x14], 0
mov dword [edi + 0x10], 0
mov dword [ecx + eax], ecx
jmp 0x40444f
test ecx, ecx
jne 0x40434e
push ebx
mov ecx, edi
call fcn.004632b0
mov ecx, eax
mov eax, dword [ebp + 8]
mov dword [ecx + eax], 0
jmp 0x40444f
mov esi, dword [edi + 0x18]
mov eax, 0x40
test esi, esi
cmovle esi, eax
cmp edx, ebx
jl 0x404365
sub edx, ebx
cmp edx, esi
jle 0x40439e
mov eax, ebx
cdq
idiv esi
mov eax, dword [edi]
sub esi, edx
add esi, ebx
push esi
mov eax, dword [eax + 8]
push ecx
cmp eax, method.CWString.virtual_8
jne 0x404392
mov ecx, 0x5e6638
call fcn.00463f20
mov ecx, eax
test ecx, ecx
je 0x404418
jmp 0x404398
mov ecx, edi
call eax
mov ecx, eax
mov dword [edi + 0xc], ecx
mov dword [edi + 0x10], esi
mov dword [edi + 0x14], ebx
mov eax, dword [ebp + 8]
mov dword [ecx + eax], 0
jmp 0x40444f
mov esi, dword [edi + 0xc]
lea ecx, [ebx + 4]
cmp ecx, ebx
je 0x404435
test esi, esi
jne 0x4043ca
push ecx
mov ecx, edi
call fcn.004632b0
mov esi, eax
jmp 0x404435
mov eax, dword [edi + 0x18]
mov edx, 0x40
test eax, eax
cmovle eax, edx
mov edx, dword [edi + 0x10]
mov dword [ebp + 8], eax
cmp edx, ecx
jl 0x4043ec
sub edx, ecx
cmp edx, eax
jg 0x4043ec
mov dword [edi + 0x14], ecx
jmp 0x404435
mov eax, ecx
cdq
idiv dword [ebp + 8]
mov eax, dword [edi]
sub ecx, edx
add ecx, dword [ebp + 8]
push ecx
mov eax, dword [eax + 8]
mov dword [ebp + 8], ecx
push esi
cmp eax, method.CWString.virtual_8
jne 0x404420
mov ecx, 0x5e6638
call fcn.00463f20
mov esi, eax
test esi, esi
jne 0x404426
push 0xffffffffffffffff
call dword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll_exit]
mov ecx, edi
call eax
mov esi, eax
mov eax, dword [ebp + 8]
mov dword [edi + 0x10], eax
lea eax, [ebx + 4]
mov dword [edi + 0xc], esi
mov dword [edi + 0x14], eax
add esi, 0x50
lea eax, [ebx - 0x50]
push eax
push esi
lea eax, [esi + 4]
push eax
call sub.VCRUNTIME140.dll_memmove
add esp, 0xc
mov dword [esi], 0
mov eax, edi
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x14