Function at 0x4013c0
Capabilities:
Query or enumerate registry value

Disassembly:
mov eax, dword fs:[0]
push 0xffffffffffffffff
push 0x407fe3
push eax
mov dword fs:[0], esp
sub esp, 0xfc0
push ebx
mov ebx, dword [esp + 0xfd4]
push ebp
xor ebp, ebp
push esi
cmp ebx, ebp
push edi
jne 0x4013f4
or eax, 0xffffffff
jmp 0x40260d
mov ecx, ebx
call fcn.00402eb0
test al, al
jne 0x401407
or eax, 0xffffffff
jmp 0x40260d
mov ecx, dword [ebx + 0x10]
push 0x40b428
call fcn.00403e60
test eax, eax
je 0x401431
mov ecx, dword [ebx + 0x10]
push ebp
push 0x40b428
call fcn.00403e60
mov ecx, eax
call fcn.00407a20
mov esi, eax
jmp 0x401436
mov esi, str.MSSQLSERVER
lea eax, [esp + 0x3a0]
mov dword [esp + 0x1c], esi
test eax, eax
je 0x40149a
cmp esi, ebp
je 0x401460
cmp word [esi], bp
je 0x401460
push str.MSSQLSERVER
push esi
call fcn.00407c02
add esp, 8
test eax, eax
jne 0x401477
lea ecx, [esp + 0x3a0]
push str.MSSQLSERVER
push ecx
call fcn.00407bfc
add esp, 8
jmp 0x40149a
lea edx, [esp + 0x3a0]
push str.MSSQL_
push edx
call fcn.00407bfc
lea eax, [esp + 0x3a8]
push esi
push eax
call fcn.00407bf6
add esp, 0x10
mov ecx, 0x82
xor eax, eax
lea edi, [esp + 0xbb8]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
mov ecx, 0x82
xor eax, eax
lea edi, [esp + 0x6ac]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
mov ecx, 0x82
xor eax, eax
lea edi, [esp + 0x4a0]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
mov al, byte [ebx + 4]
test al, al
je 0x401867
mov cx, word [0x40c880]
xor eax, eax
mov word [esp + 0x168], cx
mov ecx, 0x81
lea edi, [esp + 0x16a]
lea edx, [esp + 0x6ac]
rep stosd dword es:[edi], eax
test edx, edx
stosw word es:[edi], ax
je 0x401d9e
lea eax, [esp + 0x168]
test eax, eax
je 0x401d9e
cmp esi, ebp
je 0x401535
cmp word [esi], bp
je 0x401535
push str.MSSQLSERVER
push esi
call fcn.00407c02
add esp, 8
test eax, eax
jne 0x401595
push str.MSSQLSERVER
call fcn.004027d0
add esp, 4
test eax, eax
je 0x40155a
lea ecx, [esp + 0x168]
push str.SoftwareMicrosoftMSSQLServer
push ecx
call fcn.00407bfc
jmp 0x4015a3
lea edx, [esp + 0x168]
push 0x40b370
push edx
call fcn.00407bfc
lea eax, [esp + 0x170]
push 0x40b36c
push eax
call fcn.00407bf6
lea ecx, [esp + 0x178]
push str.MSSQLSERVER
push ecx
call fcn.00407bf6
add esp, 0x18
jmp 0x4015a6
lea edx, [esp + 0x168]
push esi
push edx
call fcn.004029e0
add esp, 8
xor eax, eax
cmp eax, str.Setup
je 0x4015c4
lea ecx, [esp + 0x168]
push str.Setup
push ecx
call fcn.00407bf6
add esp, 8
mov ebx, dword [0x409010]
lea edx, [esp + 0x10]
push edx
push 0x20019
lea eax, [esp + 0x170]
push ebp
push eax
push 0x80000002
mov dword [esp + 0x28], 0x20a
mov dword [esp + 0x24], ebp
mov word [esp + 0x6c0], bp
call ebx
test eax, eax
jne 0x401d9e
lea ecx, [esp + 0x14]
mov ebp, dword [0x409020]
lea edx, [esp + 0x6ac]
push ecx
push edx
push eax
push eax
mov eax, dword [esp + 0x20]
push str.SQLPath
push eax
call ebp
mov esi, eax
mov ecx, dword [esp + 0x10]
push ecx
call dword [0x409018]
test esi, esi
jne 0x401d9e
xor edx, edx
cmp edx, 0x40b36c
je 0x40169e
push 0x40b36c
call fcn.00407bd0
push 0x40b36c
mov esi, eax
call fcn.00407bd0
add esi, eax
add esp, 8
lea eax, [esi + esi + 4]
cmp eax, 0x20a
ja 0x401d9e
cmp word [0x40b36c], 0x5c
je 0x401689
lea ecx, [esp + 0x6ac]
push 0x40b36c
push ecx
call fcn.00407bf6
add esp, 8
lea edx, [esp + 0x6ac]
push 0x40b36c
push edx
call fcn.00407bf6
add esp, 8
mov ax, word [0x40c880]
mov ecx, 0x81
mov word [esp + 0x168], ax
xor eax, eax
lea edi, [esp + 0x16a]
rep stosd dword es:[edi], eax
lea ecx, [esp + 0x4a0]
test ecx, ecx
stosw word es:[edi], ax
je 0x401d9e
lea edx, [esp + 0x168]
test edx, edx
je 0x401d9e
mov esi, dword [esp + 0x1c]
xor edi, edi
cmp esi, edi
je 0x4016fd
cmp word [esi], di
je 0x4016fd
push str.MSSQLSERVER
push esi
call fcn.00407c02
add esp, 8
test eax, eax
jne 0x40175d
push str.MSSQLSERVER
call fcn.004027d0
add esp, 4
test eax, eax
je 0x401722
lea eax, [esp + 0x168]
push str.SoftwareMicrosoftMSSQLServer
push eax
call fcn.00407bfc
jmp 0x40176b
lea ecx, [esp + 0x168]
push 0x40b370
push ecx
call fcn.00407bfc
lea edx, [esp + 0x170]
push 0x40b36c
push edx
call fcn.00407bf6
lea eax, [esp + 0x178]
push str.MSSQLSERVER
push eax
call fcn.00407bf6
add esp, 0x18
jmp 0x40176e
lea ecx, [esp + 0x168]
push esi
push ecx
call fcn.004029e0
add esp, 8
xor edx, edx
cmp edx, str.Setup
je 0x40178d
lea eax, [esp + 0x168]
push str.Setup
push eax
call fcn.00407bf6
add esp, 8
lea ecx, [esp + 0x10]
lea edx, [esp + 0x168]
push ecx
push 0x20019
push edi
push edx
push 0x80000002
mov dword [esp + 0x28], 0x20a
mov dword [esp + 0x24], edi
mov word [esp + 0x4b4], di
call ebx
test eax, eax
jne 0x401d9e
mov edx, dword [esp + 0x10]
lea eax, [esp + 0x14]
lea ecx, [esp + 0x4a0]
push eax
xor ebx, ebx
push ecx
push ebx
push ebx
push str.SQLDataRoot
push edx
call ebp
mov esi, eax
mov eax, dword [esp + 0x10]
push eax
call dword [0x409018]
cmp esi, ebx
jne 0x401d9e
xor ecx, ecx
cmp ecx, 0x40b36c
je 0x401d63
push 0x40b36c
call fcn.00407bd0
push 0x40b36c
mov esi, eax
call fcn.00407bd0
add esi, eax
add esp, 8
lea edx, [esi + esi + 4]
cmp edx, 0x20a
ja 0x401d9e
cmp word [0x40b36c], 0x5c
je 0x40184d
lea eax, [esp + 0x4a0]
push 0x40b36c
push eax
call fcn.00407bf6
add esp, 8
lea ecx, [esp + 0x4a0]
push 0x40b36c
push ecx
call fcn.00407bf6
add esp, 8
jmp 0x401d63
mov ecx, 0x41
xor eax, eax
lea edi, [esp + 0x168]
push ebp
rep stosd dword es:[edi], eax
push ebp
lea edx, [esp + 0x28]
push 0x11
push edx
push 0xffffffffffffffff
push esi
push ebp
push ebp
stosb byte es:[edi], al
call dword [0x4090c8]
mov al, byte [0x40c87c]
mov ecx, 0x40
mov byte [esp + 0x64], al
xor eax, eax
lea edi, [esp + 0x65]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
lea ecx, [esp + 0x168]
test ecx, ecx
stosb byte es:[edi], al
je 0x401d9e
lea edx, [esp + 0x64]
test edx, edx
je 0x401d9e
lea eax, [esp + 0x20]
test eax, eax
je 0x4018ea
mov al, byte [esp + 0x20]
test al, al
je 0x4018ea
lea ecx, [esp + 0x20]
push 0x40b328
push ecx
call fcn.00407bf0
add esp, 8
test eax, eax
jne 0x401975
push 0x40b328
call fcn.00402800
add esp, 4
lea edx, [esp + 0x64]
test eax, eax
je 0x401923
mov edi, 0x40b308
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, edx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
jmp 0x401987
mov edi, str.SoftwareMicrosoftMicrosoft_SQL_Server_
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, edx
lea edx, [esp + 0x64]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
xor eax, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov edi, 0x40b328
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov ebx, ecx
mov edi, edx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, ebx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, ebx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
jmp 0x401987
lea eax, [esp + 0x20]
lea ecx, [esp + 0x64]
push eax
push ecx
call fcn.004028d0
add esp, 8
xor edx, edx
cmp edx, 0x40b2d4
je 0x4019bf
mov edi, 0x40b2d4
or ecx, 0xffffffff
xor eax, eax
lea edx, [esp + 0x64]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov ebx, ecx
mov edi, edx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, ebx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, ebx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ebp, dword [0x40901c]
lea eax, [esp + 0x10]
push eax
push 0x20019
lea ecx, [esp + 0x6c]
push 0
push ecx
push 0x80000002
mov dword [esp + 0x28], 0x105
mov dword [esp + 0x24], 0
mov byte [esp + 0x17c], 0
call ebp
test eax, eax
jne 0x401d9e
mov ecx, dword [esp + 0x10]
lea edx, [esp + 0x14]
lea eax, [esp + 0x168]
push edx
push eax
push 0
push 0
push 0x40b2cc
push ecx
call dword [0x409024]
mov esi, eax
mov edx, dword [esp + 0x10]
push edx
call dword [0x409018]
test esi, esi
jne 0x401d9e
xor eax, eax
cmp eax, 0x40b2c8
je 0x401ad8
mov edi, 0x40b2c8
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
dec ecx
lea edi, [esp + 0x168]
mov edx, ecx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
dec ecx
lea eax, [edx + ecx + 2]
cmp eax, 0x105
ja 0x401d9e
cmp byte [0x40b2c8], 0x5c
je 0x401aa7
mov edi, 0x40b2c8
or ecx, 0xffffffff
xor eax, eax
lea edx, [esp + 0x168]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov ebx, ecx
mov edi, edx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, ebx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, ebx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov edi, 0x40b2c8
or ecx, 0xffffffff
xor eax, eax
lea edx, [esp + 0x168]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov ebx, ecx
mov edi, edx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, ebx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, ebx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ebx, dword [0x4090a8]
lea eax, [esp + 0x6ac]
push 0x104
push eax
lea ecx, [esp + 0x170]
push 0xffffffffffffffff
push ecx
push 1
push 0
call ebx
mov ecx, 0x41
xor eax, eax
lea edi, [esp + 0x168]
mov dl, byte [0x40c87c]
rep stosd dword es:[edi], eax
stosb byte es:[edi], al
mov ecx, 0x40
xor eax, eax
lea edi, [esp + 0x65]
mov byte [esp + 0x64], dl
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
lea eax, [esp + 0x64]
test eax, eax
je 0x401d9e
lea ecx, [esp + 0x20]
test ecx, ecx
je 0x401b5c
mov al, byte [esp + 0x20]
test al, al
je 0x401b5c
lea edx, [esp + 0x20]
push 0x40b328
push edx
call fcn.00407bf0
add esp, 8
test eax, eax
jne 0x401be7
push 0x40b328
call fcn.00402800
add esp, 4
lea edx, [esp + 0x64]
test eax, eax
je 0x401b95
mov edi, 0x40b308
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, edx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
jmp 0x401bf9
mov edi, str.SoftwareMicrosoftMicrosoft_SQL_Server_
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, edx
lea edx, [esp + 0x64]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
xor eax, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov edi, 0x40b328
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov edi, edx
mov edx, ecx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, edx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
jmp 0x401bf9
lea eax, [esp + 0x20]
lea ecx, [esp + 0x64]
push eax
push ecx
call fcn.004028d0
add esp, 8
xor edx, edx
cmp edx, 0x40b2d4
je 0x401c31
mov edi, 0x40b2d4
or ecx, 0xffffffff
xor eax, eax
lea edx, [esp + 0x64]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov edi, edx
mov edx, ecx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, edx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea eax, [esp + 0x10]
lea ecx, [esp + 0x64]
push eax
push 0x20019
push 0
push ecx
push 0x80000002
mov dword [esp + 0x28], 0x105
mov dword [esp + 0x24], 0
mov byte [esp + 0x17c], 0
call ebp
test eax, eax
jne 0x401d9e
mov ecx, dword [esp + 0x10]
lea edx, [esp + 0x14]
lea eax, [esp + 0x168]
push edx
push eax
push 0
push 0
push 0x40b2bc
push ecx
call dword [0x409024]
mov esi, eax
mov edx, dword [esp + 0x10]
push edx
call dword [0x409018]
test esi, esi
jne 0x401d9e
xor eax, eax
cmp eax, 0x40b2c8
je 0x401d44
mov edi, 0x40b2c8
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
dec ecx
lea edi, [esp + 0x168]
mov edx, ecx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
dec ecx
lea eax, [edx + ecx + 2]
cmp eax, 0x105
ja 0x401d9e
cmp byte [0x40b2c8], 0x5c
je 0x401d13
mov edi, 0x40b2c8
or ecx, 0xffffffff
xor eax, eax
lea edx, [esp + 0x168]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov ebp, ecx
mov edi, edx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, ebp
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, ebp
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov edi, 0x40b2c8
or ecx, 0xffffffff
xor eax, eax
lea edx, [esp + 0x168]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov ebp, ecx
mov edi, edx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, ebp
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, ebp
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea eax, [esp + 0x4a0]
push 0x104
push eax
lea ecx, [esp + 0x170]
push 0xffffffffffffffff
push ecx
push 1
push 0
call ebx
xor ebx, ebx
mov eax, dword [0x40c890]
lea edx, [esp + 0x6ac]
push edx
call dword [eax + 0x1e8]
cmp eax, 0xffffffff
jne 0x401d85
mov eax, 3
jmp 0x40260d
mov edx, dword [0x40c890]
lea ecx, [esp + 0x4a0]
push ecx
call dword [edx + 0x1e8]
cmp eax, 0xffffffff
jne 0x401da8
mov eax, 3
jmp 0x40260d
lea eax, [esp + 0x6ac]
lea ecx, [esp + 0xbb8]
push eax
push ecx
call fcn.00407bfc
lea edx, [esp + 0xbc0]
push 0x40b298
push edx
call fcn.00407bf6
lea eax, [esp + 0x3b0]
add esp, 0x10
mov dword [esp + 0x34], eax
mov eax, dword [0x40c890]
lea edx, [esp + 0xbb8]
lea ecx, [esp + 0xbb8]
push edx
mov dword [esp + 0x3c], 0xf01ff
mov dword [esp + 0x40], 0x10
mov dword [esp + 0x44], 3
mov dword [esp + 0x48], 1
mov dword [esp + 0x4c], ecx
mov dword [esp + 0x50], ebx
mov dword [esp + 0x54], ebx
mov dword [esp + 0x58], ebx
mov dword [esp + 0x5c], ebx
mov dword [esp + 0x60], ebx
mov dword [esp + 0x64], ebx
call dword [eax + 0x1e8]
cmp eax, 0xffffffff
jne 0x401e42
mov eax, 2
jmp 0x40260d
mov esi, dword [esp + 0xfe0]
push 0x40b294
mov ecx, dword [esi + 0x10]
call fcn.00403e60
test eax, eax
je 0x401e79
mov ecx, dword [esi + 0x10]
push ebx
push 0x40b294
call fcn.00403e60
mov ecx, eax
call fcn.00407a50
test eax, eax
je 0x401e79
mov dword [esp + 0x10], ebx
jmp 0x401eec
mov edx, dword [esp + 0x1c]
mov ecx, 0x40
xor eax, eax
lea edi, [esp + 0xab8]
rep stosd dword es:[edi], eax
push ebx
push ebx
lea ecx, [esp + 0xac0]
push pe_nt_image_headers32
push ecx
push 0xffffffffffffffff
push edx
push ebx
push ebx
call dword [0x4090c8]
lea eax, [esp + 0xab8]
push ebx
push eax
push ebx
push ebx
lea ecx, [esp + 0x380]
call fcn.00405340
lea ecx, [esp + 0x370]
mov dword [esp + 0xfd8], ebx
call fcn.00405890
lea ecx, [esp + 0x370]
mov dword [esp + 0x10], eax
mov dword [esp + 0xfd8], 0xffffffff
call fcn.00405410
mov al, byte [esi + 4]
push 0x28
test al, al
je 0x40206d
call fcn.00407bdc
mov ebx, eax
add esp, 4
mov dword [esp + 0x14], ebx
test ebx, ebx
mov dword [esp + 0xfd8], 1
je 0x402010
mov ecx, dword [esp + 0xfe0]
push 0x40b290
mov ecx, dword [ecx + 0x10]
call fcn.00403e60
test eax, eax
je 0x401f53
mov esi, dword [esp + 0xfe0]
push 0
push 0x40b290
mov ecx, dword [esi + 0x10]
call fcn.00403e60
mov ecx, eax
call fcn.00407a20
mov ebp, eax
jmp 0x401f5c
mov esi, dword [esp + 0xfe0]
xor ebp, ebp
mov ecx, dword [esi + 0x10]
push 0x40b28c
call fcn.00403e60
test eax, eax
je 0x401f87
mov ecx, dword [esi + 0x10]
push 0
push 0x40b28c
call fcn.00403e60
mov ecx, eax
call fcn.00407a20
mov edi, eax
jmp 0x401f89
xor edi, edi
mov ecx, dword [esi + 0x10]
push 0x40b288
call fcn.00403e60
test eax, eax
je 0x401fbb
mov edx, dword [esp + 0xfe0]
push 0
push 0x40b288
mov ecx, dword [edx + 0x10]
call fcn.00403e60
mov ecx, eax
call fcn.00407a20
mov esi, eax
jmp 0x401fbd
xor esi, esi
mov eax, dword [esp + 0xfe0]
push str.WPSUM
mov ecx, dword [eax + 0x10]
call fcn.00403e60
test eax, eax
je 0x401ff4
mov ecx, dword [esp + 0xfe0]
push 0
push str.WPSUM
mov ecx, dword [ecx + 0x10]
call fcn.00403e60
mov ecx, eax
call fcn.00407a20
jmp 0x401ff6
xor eax, eax
mov edx, dword [esp + 0x1c]
push ebp
push edi
push esi
push eax
lea eax, [esp + 0x4b0]
push edx
push eax
mov ecx, ebx
call fcn.00403080
jmp 0x402012
xor eax, eax
or edi, 0xffffffff
push 0x370
mov dword [esp + 0xfdc], edi
mov ebp, eax
call fcn.00407bdc
add esp, 4
mov dword [esp + 0x14], eax
test eax, eax
mov dword [esp + 0xfd8], 2
je 0x40205d
lea ecx, [esp + 0x3a0]
push 0
push ecx
mov ecx, eax
call fcn.00406110
mov dword [esp + 0xfd8], edi
mov esi, eax
jmp 0x4021ca
xor eax, eax
mov dword [esp + 0xfd8], edi
mov esi, eax
jmp 0x4021ca
call fcn.00407bdc
mov ebx, eax
add esp, 4
mov dword [esp + 0x14], ebx
test ebx, ebx
mov dword [esp + 0xfd8], 3
je 0x402176
mov esi, dword [esp + 0xfe0]
push 0x40b290
mov ecx, dword [esi + 0x10]
call fcn.00403e60
test eax, eax
je 0x4020c0
mov ecx, dword [esi + 0x10]
push 0
push 0x40b290
call fcn.00403e60
mov ecx, eax
call fcn.00407a20
mov ebp, eax
jmp 0x4020c2
xor ebp, ebp
mov ecx, dword [esi + 0x10]
push 0x40b28c
call fcn.00403e60
test eax, eax
je 0x4020ed
mov ecx, dword [esi + 0x10]
push 0
push 0x40b28c
call fcn.00403e60
mov ecx, eax
call fcn.00407a20
mov edi, eax
jmp 0x4020ef
xor edi, edi
mov ecx, dword [esi + 0x10]
push 0x40b288
call fcn.00403e60
test eax, eax
je 0x402121
mov edx, dword [esp + 0xfe0]
push 0
push 0x40b288
mov ecx, dword [edx + 0x10]
call fcn.00403e60
mov ecx, eax
call fcn.00407a20
mov esi, eax
jmp 0x402123
xor esi, esi
mov eax, dword [esp + 0xfe0]
push str.WPSUM
mov ecx, dword [eax + 0x10]
call fcn.00403e60
test eax, eax
je 0x40215a
mov ecx, dword [esp + 0xfe0]
push 0
push str.WPSUM
mov ecx, dword [ecx + 0x10]
call fcn.00403e60
mov ecx, eax
call fcn.00407a20
jmp 0x40215c
xor eax, eax
mov edx, dword [esp + 0x1c]
push ebp
push edi
push esi
push eax
lea eax, [esp + 0x4b0]
push edx
push eax
mov ecx, ebx
call fcn.004036b0
jmp 0x402178
xor eax, eax
push 0x574
mov dword [esp + 0xfdc], 0xffffffff
mov ebp, eax
call fcn.00407bdc
add esp, 4
mov dword [esp + 0x14], eax
test eax, eax
mov dword [esp + 0xfd8], 4
je 0x4021b8
lea ecx, [esp + 0x3a0]
push 0
push ecx
mov ecx, eax
call fcn.004058d0
jmp 0x4021ba
xor eax, eax
mov dword [esp + 0xfd8], 0xffffffff
mov esi, eax
or edi, 0xffffffff
mov ebx, dword [esp + 0xfe0]
mov byte [esp + 0x1b], 0
mov al, byte [ebx + 4]
test al, al
je 0x402284
mov edx, dword [esi]
mov ecx, esi
call dword [edx + 4]
test eax, eax
jne 0x402294
or edi, 0xffffffff
push 0xffffffffffffffff
push 0x17
call fcn.004026d0
mov eax, dword [0x40c894]
add esp, 8
cmp eax, 0xffffffff
je 0x40222f
push 0
push 0x40b1e0
call fcn.00402630
mov ecx, dword [0x40c894]
add esp, 8
push ecx
call dword [0x4090bc]
mov dword [0x40c894], 0xffffffff
test ebp, ebp
je 0x402243
mov ecx, ebp
call fcn.004037c0
push ebp
call fcn.00407bd6
add esp, 4
test esi, esi
je 0x402257
mov ecx, esi
call fcn.00404cf0
push esi
call fcn.00407bd6
add esp, 4
mov al, byte [esp + 0x1b]
test al, al
jne 0x4025fd
push 0x30
push 4
call fcn.00402a50
mov al, byte [ebx + 0xc]
add esp, 8
test al, al
je 0x40227d
mov ecx, ebx
call fcn.00402bd0
mov eax, edi
jmp 0x40260d
mov eax, dword [esi]
lea ecx, [esp + 0x34]
push ecx
mov ecx, esi
call dword [eax]
jmp 0x4021e8
mov ecx, dword [ebx + 0x10]
push 0x40b1dc
call fcn.00403e60
test eax, eax
je 0x4022e8
mov ecx, dword [ebx + 0x10]
push 0
push 0x40b1dc
call fcn.00403e60
mov ecx, eax
call fcn.00407a20
test eax, eax
je 0x4022e8
mov ecx, dword [ebx + 0x10]
push 0
push 0x40b1dc
call fcn.00403e60
mov ecx, eax
call fcn.00407a20
lea edx, [esp + 0xdc4]
push eax
push edx
call fcn.00407bfc
add esp, 8
jmp 0x402312
lea eax, [esp + 0x6ac]
lea ecx, [esp + 0xdc4]
push eax
push ecx
call fcn.00407bfc
lea edx, [esp + 0xdcc]
push 0x40b1b4
push edx
call fcn.00407bf6
add esp, 0x10
push 0
push 0x8000080
push 4
push 0
push 2
lea eax, [esp + 0xdd8]
push 0x40000000
push eax
call dword [0x4091cc]
cmp eax, edi
mov dword [0x40c894], eax
je 0x40237f
push 0
push eax
call dword [0x4090a0]
cmp eax, edi
jne 0x40235d
mov ecx, dword [0x40c894]
push ecx
call dword [0x4090bc]
mov dword [0x40c894], edi
jmp 0x40237f
mov edx, dword [0x40c894]
push 2
push 0
push 0xfffffffffffffffe
push edx
call dword [0x4090b0]
push 0
push 0x40b1e0
call fcn.00402630
add esp, 8
push fcn.00402630
mov ecx, ebp
call fcn.00403810
push 0xffffffffffffffff
push 0x2a
call fcn.004026d0
mov ecx, 0x80
xor eax, eax
lea edi, [esp + 0x8c0]
add esp, 8
mov dword [esi + 0x360], 0x1d4c0
rep stosd dword es:[edi], eax
mov eax, dword [0x40c890]
mov ecx, dword [ebx + 0x10]
push 0
push 0x40b1b0
lea edi, [eax + 0x4cc]
call fcn.00403e60
mov ecx, eax
call fcn.00407a20
push eax
lea ecx, [esp + 0x8bc]
push 0x40b1a8
push ecx
call dword [edi]
lea edx, [esp + 0x8c4]
push 0
push edx
call fcn.00402630
mov ecx, 0x80
xor eax, eax
lea edi, [esp + 0x8cc]
add esp, 0x14
rep stosd dword es:[edi], eax
mov eax, dword [0x40c890]
mov ecx, dword [ebx + 0x10]
push 0
push 0x40b1b0
lea edi, [eax + 0x4cc]
call fcn.00403e60
mov ecx, eax
call fcn.00407a20
push eax
lea ecx, [esp + 0x8bc]
push str._q_s
push ecx
call dword [edi]
push 0
push str._m__Q__T4022__T3659
call fcn.00402630
mov ecx, dword [ebx + 0x10]
add esp, 0x14
push str.dbdebug
call fcn.00403e60
test eax, eax
mov edi, dword [esp + 0x10]
jne 0x4024c9
test edi, edi
je 0x40248e
mov edx, dword [esi]
push str._T4010
push str._T3659
lea eax, [esp + 0x8c0]
push str._T4022
push eax
push 0x40b12c
push 0x40b124
push 6
push esi
call dword [edx + 0x18]
add esp, 0x20
jmp 0x402554
mov ecx, dword [esi]
push str._T3610
push str._T3660
push str._T4010
push str._T3659
lea edx, [esp + 0x8c8]
push str._T4022
push edx
push 0x40b12c
push 0x40b124
push 8
push esi
call dword [ecx + 0x18]
add esp, 0x28
jmp 0x402554
test edi, edi
je 0x40250f
push str._T4052
push str._T4031
mov eax, dword [esi]
push str._T4054
push str._T3605
push str._T4010
push str._T3659
lea ecx, [esp + 0x8d0]
push str._T4022
push ecx
push 0x40b12c
push 0x40b124
push 0xa
push esi
call dword [eax + 0x18]
add esp, 0x30
jmp 0x402554
push str._T4052
push str._T4031
push str._T4054
mov edx, dword [esi]
push 0x40b0a8
push str._T3660
push str._T4010
push str._T3659
lea eax, [esp + 0x8d4]
push str._T4022
push eax
push 0x40b12c
push 0x40b124
push 0xc
push esi
call dword [edx + 0x18]
add esp, 0x34
test eax, eax
jne 0x40257c
or edi, 0xffffffff
call dword [0x4090d4]
push eax
push 0
push 0x21
call fcn.00402740
mov edx, dword [esi]
add esp, 0xc
mov ecx, esi
push 1
call dword [edx + 0x1c]
jmp 0x4021f3
push 0xffffffffffffffff
push 0x2c
call fcn.004026d0
add esp, 8
mov ecx, ebp
call fcn.00403830
test eax, eax
jne 0x4025a4
mov eax, dword [esi]
push 1
mov ecx, esi
or edi, 0xffffffff
call dword [eax + 0x1c]
jmp 0x4021f3
push 0xffffffffffffffff
push 0x2f
call fcn.004026d0
mov edx, dword [ebp]
add esp, 8
mov ecx, ebp
push 0xffffffffffffffff
push edi
call dword [edx]
test eax, eax
jne 0x4025c3
or edi, 0xffffffff
jmp 0x4025c7
mov edi, dword [esp + 0x14]
push 0xffffffffffffffff
push 0x2e
call fcn.004026d0
add esp, 8
mov ecx, ebp
call fcn.00403b20
push 0xffffffffffffffff
push 0x2b
call fcn.004026d0
mov eax, dword [esi]
add esp, 8
mov ecx, esi
push 1
call dword [eax + 0x1c]
push 0xffffffffffffffff
push 0xd
mov byte [esp + 0x23], 1
jmp 0x4021f7
mov al, byte [ebx + 0xc]
test al, al
je 0x40260b
mov ecx, ebx
call fcn.00402bd0
xor eax, eax
mov ecx, dword [esp + 0xfd0]
pop edi
pop esi
pop ebp
pop ebx
mov dword fs:[0], ecx
add esp, 0xfcc
ret 4