Function at 0x798ce0
Capabilities:
Access peb ldr_data
Get kernel32 base address
Get process heap flags
Get process heap force flags

Disassembly:
push ebp
mov ebp, esp
push ecx
mov ecx, 9
push 0
push 0
dec ecx
jne 0x798ce9
push ecx
xchg dword [ebp - 4], ecx
push ebx
push esi
push edi
mov ebx, dword [ebp + 0xc]
mov esi, dword [ebp + 8]
test esi, esi
js 0x798d08
mov edi, dword [ebx + esi*4]
dec esi
push edi
jns 0x798d01
mov dword [ebp + 0xc], esp
mov dword [ebp - 8], ecx
mov dword [ebp - 4], edx
mov esi, eax
mov eax, dword [ebp - 4]
call fcn.0040ac20
mov eax, dword [ebp - 8]
call fcn.0040ac20
mov ecx, dword [ebp + 8]
inc ecx
mov eax, dword [ebp + 0xc]
mov edx, dword [0x4012b8]
call fcn.0040c610
xor eax, eax
push ebp
push 0x7994e1
push dword fs:[eax]
mov dword fs:[eax], esp
mov byte [ebp - 0xd], 0
mov byte [ebp - 0x19], 0
mov ebx, dword [esi + 0x19c]
mov byte [ebx + 4], 0
lea eax, [ebx + 8]
call fcn.0040ab3c
mov eax, dword [esi + 0x19c]
add eax, 0xc
call fcn.0040ab3c
mov eax, dword [esi + 0x19c]
add eax, 0x10
call fcn.0040ab3c
mov ebx, dword [esi + 0x19c]
movzx eax, byte [0x7994fc]
mov byte [ebx + 0x14], al
lea eax, [ebx + 0x18]
call fcn.0040ab3c
mov ebx, dword [esi + 0x19c]
mov byte [ebx + 0x1c], 1
lea eax, [ebx + 0x24]
call fcn.0040ab3c
mov eax, dword [esi + 0x19c]
add eax, 0x28
call fcn.0040ab3c
mov ebx, dword [esi + 0x19c]
mov dword [ebx + 0x20], 0xffffffff
lea eax, [ebx + 0x2c]
call fcn.0040ab3c
mov eax, dword [esi + 0x19c]
add eax, 0x30
call fcn.0040ab3c
mov eax, dword [esi + 0x19c]
add eax, 0x34
call fcn.0040ab3c
lea edx, [ebp - 0x24]
mov eax, dword [ebp - 4]
call fcn.00425650
mov edx, dword [ebp - 0x24]
lea eax, [ebp - 4]
call fcn.0040af64
mov ecx, 1
mov edx, dword [ebp - 4]
mov eax, 0x79950c
call fcn.0040c0ac
mov ebx, eax
cmp ebx, 1
jl 0x7994a7
lea eax, [ebp - 0xc]
push eax
mov ecx, ebx
dec ecx
mov edx, 1
mov eax, dword [ebp - 4]
call fcn.0040be9c
mov eax, dword [ebp - 0xc]
mov edx, 0x79951c
call fcn.0040be64
jne 0x798e87
mov eax, dword [esi + 0x19c]
mov byte [eax + 4], 1
lea eax, [ebp - 4]
push eax
lea edx, [ebx + 1]
mov ecx, 0x7fffffff
mov eax, dword [ebp - 4]
call fcn.0040be9c
mov ecx, 1
mov edx, dword [ebp - 4]
mov eax, 0x79950c
call fcn.0040c0ac
mov ebx, eax
cmp ebx, 1
jl 0x7994a7
lea eax, [ebp - 0xc]
push eax
mov ecx, ebx
dec ecx
mov edx, 1
mov eax, dword [ebp - 4]
call fcn.0040be9c
mov eax, dword [ebp - 0xc]
call fcn.00703cdc
test al, al
je 0x798ee9
mov eax, dword [esi + 0x19c]
add eax, 8
mov edx, dword [ebp - 0xc]
call fcn.0040af1c
lea eax, [ebp - 4]
push eax
lea edx, [ebx + 1]
mov ecx, 0x7fffffff
mov eax, dword [ebp - 4]
call fcn.0040be9c
mov ecx, 1
mov edx, dword [ebp - 4]
mov eax, 0x79950c
call fcn.0040c0ac
mov ebx, eax
cmp ebx, 1
jl 0x7994a7
lea eax, [ebp - 0xc]
push eax
mov ecx, ebx
dec ecx
mov edx, 1
mov eax, dword [ebp - 4]
call fcn.0040be9c
push 1
mov edx, 0x7c4d44
mov ecx, 0x18
mov eax, dword [ebp - 0xc]
call fcn.00703744
inc eax
je 0x7994a7
mov eax, dword [esi + 0x19c]
add eax, 0xc
mov edx, dword [ebp - 0xc]
call fcn.0040af1c
cmp dword [ebp - 8], 0
je 0x798f2e
mov eax, dword [esi + 0x19c]
mov eax, dword [eax + 0xc]
mov edx, dword [ebp - 8]
call fcn.0040be64
jne 0x798f32
mov byte [ebp - 0xd], 1
mov ebx, dword [ebp - 0xc]
test ebx, ebx
je 0x798f3e
sub ebx, 4
mov ebx, dword [ebx]
lea eax, [ebp - 4]
push eax
lea edx, [ebx + 2]
mov ecx, 0x7fffffff
mov eax, dword [ebp - 4]
call fcn.0040be9c
mov eax, dword [ebp - 4]
cmp word [eax], 0x28
je 0x798f71
mov eax, dword [esi + 0x19c]
add eax, 0x28
mov edx, dword [ebp - 4]
call fcn.0040af1c
jmp 0x7994a7
lea eax, [ebp - 4]
push eax
mov ecx, 0x7fffffff
mov edx, 2
mov eax, dword [ebp - 4]
call fcn.0040be9c
mov edx, 0x79952c
mov eax, dword [ebp - 4]
call fcn.0070671c
test al, al
je 0x798fc4
mov ebx, dword [ebp - 4]
test ebx, ebx
je 0x798fa4
sub ebx, 4
mov ebx, dword [ebx]
lea eax, [ebp - 4]
push eax
mov ecx, ebx
dec ecx
mov edx, 1
mov eax, dword [ebp - 4]
call fcn.0040be9c
mov eax, dword [esi + 0x19c]
mov byte [eax + 0x1c], 1
jmp 0x798fce
mov eax, dword [esi + 0x19c]
mov byte [eax + 0x1c], 0
mov dl, 1
mov eax, dword [0x494c14]
call fcn.004b907c
mov dword [ebp - 0x14], eax
xor edx, edx
push ebp
push 0x7994a0
push dword fs:[edx]
mov dword fs:[edx], esp
push 0
mov ecx, dword [ebp - 0x14]
mov edx, dword [ebp - 4]
mov eax, esi
call fcn.00796c34
mov eax, dword [ebp - 0x14]
mov edx, dword [eax]
call dword [edx + 0x14]
test eax, eax
jle 0x7990a6
mov eax, dword [ebp - 0x14]
mov edx, dword [eax]
call dword [edx + 0x14]
mov edx, eax
dec edx
lea ecx, [ebp - 0xc]
mov eax, dword [ebp - 0x14]
mov ebx, dword [eax]
call dword [ebx + 0xc]
mov edx, 0x79953c
mov eax, dword [ebp - 0xc]
call fcn.007066c8
test al, al
je 0x7990a6
mov edx, 0x79954c
mov eax, dword [ebp - 0xc]
call fcn.0070671c
test al, al
je 0x7990a6
mov ebx, dword [ebp - 0xc]
test ebx, ebx
je 0x79904e
sub ebx, 4
mov ebx, dword [ebx]
lea eax, [ebp - 0xc]
push eax
mov ecx, ebx
sub ecx, 2
mov edx, 2
mov eax, dword [ebp - 0xc]
call fcn.0040be9c
mov edx, 0x79955c
mov eax, dword [ebp - 0xc]
call fcn.007066b0
test al, al
je 0x799082
mov eax, dword [esi + 0x19c]
xor edx, edx
mov dword [eax + 0x20], edx
jmp 0x799093
mov eax, dword [ebp - 0xc]
call fcn.00705a6c
mov edx, dword [esi + 0x19c]
mov dword [edx + 0x20], eax
mov eax, dword [ebp - 0x14]
mov edx, dword [eax]
call dword [edx + 0x14]
mov edx, eax
dec edx
mov eax, dword [ebp - 0x14]
mov ecx, dword [eax]
call dword [ecx + 0x4c]
mov eax, dword [esi + 0x19c]
cmp byte [eax + 0x1c], 0
jne 0x7990f8
mov eax, dword [ebp - 0x14]
mov edx, dword [eax]
call dword [edx + 0x14]
test eax, eax
jle 0x7990f8
mov eax, dword [ebp - 0x14]
mov edx, dword [eax]
call dword [edx + 0x14]
mov edx, eax
dec edx
lea ecx, [ebp - 0x28]
mov eax, dword [ebp - 0x14]
mov ebx, dword [eax]
call dword [ebx + 0xc]
mov edx, dword [ebp - 0x28]
mov eax, dword [esi + 0x19c]
add eax, 0x24
call fcn.0040af1c
mov eax, dword [ebp - 0x14]
mov edx, dword [eax]
call dword [edx + 0x14]
mov edx, eax
dec edx
mov eax, dword [ebp - 0x14]
mov ecx, dword [eax]
call dword [ecx + 0x4c]
mov edx, dword [0x7c4de4]
mov eax, dword [ebp - 0x14]
mov ecx, dword [eax]
call dword [ecx + 0x58]
mov ebx, eax
cmp ebx, 0xffffffff
je 0x799167
mov eax, dword [ebp - 0x14]
mov edx, dword [eax]
call dword [edx + 0x14]
dec eax
cmp ebx, eax
jge 0x79914e
lea ecx, [ebp - 0x2c]
lea edx, [ebx + 1]
mov eax, dword [ebp - 0x14]
mov edi, dword [eax]
call dword [edi + 0xc]
mov edx, dword [ebp - 0x2c]
mov eax, dword [esi + 0x19c]
add eax, 0x10
call fcn.0040af1c
lea edx, [ebx + 1]
mov eax, dword [ebp - 0x14]
mov ecx, dword [eax]
call dword [ecx + 0x4c]
mov edx, ebx
mov eax, dword [ebp - 0x14]
mov ecx, dword [eax]
call dword [ecx + 0x4c]
push 1
mov edx, dword [ebp + 0xc]
mov ecx, dword [ebp + 8]
mov eax, dword [0x7c4de4]
call fcn.00703744
inc eax
jle 0x799167
mov byte [ebp - 0x19], 1
mov edx, dword [0x7c4dc4]
mov eax, dword [ebp - 0x14]
mov ecx, dword [eax]
call dword [ecx + 0x58]
mov ebx, eax
cmp ebx, 0xffffffff
je 0x7991e9
mov eax, dword [ebp - 0x14]
mov edx, dword [eax]
call dword [edx + 0x14]
dec eax
cmp ebx, eax
jge 0x7991d0
lea ecx, [ebp - 0x30]
lea edx, [ebx + 1]
mov eax, dword [ebp - 0x14]
mov edi, dword [eax]
call dword [edi + 0xc]
mov edx, dword [ebp - 0x30]
mov eax, dword [esi + 0x19c]
add eax, 0x18
call fcn.0040af1c
mov eax, dword [esi + 0x19c]
lea ecx, [eax + 0x14]
mov edx, dword [eax + 0x18]
mov eax, esi
call fcn.00797544
lea edx, [ebx + 1]
mov eax, dword [ebp - 0x14]
mov ecx, dword [eax]
call dword [ecx + 0x4c]
mov edx, ebx
mov eax, dword [ebp - 0x14]
mov ecx, dword [eax]
call dword [ecx + 0x4c]
push 1
mov edx, dword [ebp + 0xc]
mov ecx, dword [ebp + 8]
mov eax, dword [0x7c4dc4]
call fcn.00703744
inc eax
jle 0x7991e9
mov byte [ebp - 0x19], 1
mov edx, dword [0x7c4de8]
mov eax, dword [ebp - 0x14]
mov ecx, dword [eax]
call dword [ecx + 0x58]
mov ebx, eax
cmp ebx, 0xffffffff
je 0x799258
mov eax, dword [ebp - 0x14]
mov edx, dword [eax]
call dword [edx + 0x14]
dec eax
cmp ebx, eax
jge 0x79923f
lea ecx, [ebp - 0x34]
lea edx, [ebx + 1]
mov eax, dword [ebp - 0x14]
mov edi, dword [eax]
call dword [edi + 0xc]
mov edx, dword [ebp - 0x34]
mov eax, dword [esi + 0x19c]
add eax, 0x2c
call fcn.0040af1c
lea edx, [ebx + 1]
mov eax, dword [ebp - 0x14]
mov ecx, dword [eax]
call dword [ecx + 0x4c]
mov edx, ebx
mov eax, dword [ebp - 0x14]
mov ecx, dword [eax]
call dword [ecx + 0x4c]
push 1
mov edx, dword [ebp + 0xc]
mov ecx, dword [ebp + 8]
mov eax, dword [0x7c4de8]
call fcn.00703744
inc eax
jle 0x799258
mov byte [ebp - 0x19], 1
mov edx, dword [0x7c4dec]
mov eax, dword [ebp - 0x14]
mov ecx, dword [eax]
call dword [ecx + 0x58]
mov ebx, eax
cmp ebx, 0xffffffff
je 0x7992c7
mov eax, dword [ebp - 0x14]
mov edx, dword [eax]
call dword [edx + 0x14]
dec eax
cmp ebx, eax
jge 0x7992ae
lea ecx, [ebp - 0x38]
lea edx, [ebx + 1]
mov eax, dword [ebp - 0x14]
mov edi, dword [eax]
call dword [edi + 0xc]
mov edx, dword [ebp - 0x38]
mov eax, dword [esi + 0x19c]
add eax, 0x30
call fcn.0040af1c
lea edx, [ebx + 1]
mov eax, dword [ebp - 0x14]
mov ecx, dword [eax]
call dword [ecx + 0x4c]
mov edx, ebx
mov eax, dword [ebp - 0x14]
mov ecx, dword [eax]
call dword [ecx + 0x4c]
push 1
mov edx, dword [ebp + 0xc]
mov ecx, dword [ebp + 8]
mov eax, dword [0x7c4dec]
call fcn.00703744
inc eax
jle 0x7992c7
mov byte [ebp - 0x19], 1
mov edx, dword [0x7c4df0]
mov eax, dword [ebp - 0x14]
mov ecx, dword [eax]
call dword [ecx + 0x58]
mov ebx, eax
cmp ebx, 0xffffffff
je 0x799343
mov eax, dword [ebp - 0x14]
mov edx, dword [eax]
call dword [edx + 0x14]
dec eax
cmp ebx, eax
jge 0x79932a
lea ecx, [ebp - 0x40]
lea edx, [ebx + 1]
mov eax, dword [ebp - 0x14]
mov edi, dword [eax]
call dword [edi + 0xc]
mov edx, dword [ebp - 0x40]
lea ecx, [ebp - 0x3c]
mov eax, esi
call fcn.0078b920
mov edx, dword [ebp - 0x3c]
mov eax, dword [esi + 0x19c]
add eax, 0x34
call fcn.0040af1c
lea edx, [ebx + 1]
mov eax, dword [ebp - 0x14]
mov ecx, dword [eax]
call dword [ecx + 0x4c]
mov edx, ebx
mov eax, dword [ebp - 0x14]
mov ecx, dword [eax]
call dword [ecx + 0x4c]
push 1
mov edx, dword [ebp + 0xc]
mov ecx, dword [ebp + 8]
mov eax, dword [0x7c4df0]
call fcn.00703744
inc eax
jle 0x799343
mov byte [ebp - 0x19], 1
mov eax, dword [ebp + 8]
inc eax
test eax, eax
jle 0x7993ef
dec eax
test eax, eax
jl 0x799456
inc eax
mov dword [ebp - 0x20], eax
mov edi, dword [ebp + 0xc]
mov edx, dword [edi]
mov eax, dword [esi + 0x19c]
mov eax, dword [eax + 0x24]
call fcn.007066b0
test al, al
je 0x79937c
mov byte [ebp - 0x19], 1
jmp 0x799456
mov edx, dword [edi]
mov eax, dword [ebp - 0x14]
mov ecx, dword [eax]
call dword [ecx + 0x58]
mov ebx, eax
cmp ebx, 0xffffffff
je 0x7993e1
lea ecx, [ebp - 0x44]
mov edx, ebx
mov eax, dword [ebp - 0x14]
mov edi, dword [eax]
call dword [edi + 0xc]
mov edx, dword [ebp - 0x44]
mov eax, dword [esi + 0x19c]
add eax, 0x24
call fcn.0040af1c
mov byte [ebp - 0x19], 1
mov eax, dword [ebp - 0x14]
mov edx, dword [eax]
call dword [edx + 0x14]
dec eax
cmp ebx, eax
jge 0x799456
lea ecx, [ebp - 0x48]
lea edx, [ebx + 1]
mov eax, dword [ebp - 0x14]
mov ebx, dword [eax]
call dword [ebx + 0xc]
mov edx, dword [ebp - 0x48]
mov eax, dword [esi + 0x19c]
add eax, 0x28
call fcn.0040af1c
jmp 0x799456
add edi, 4
dec dword [ebp - 0x20]
jne 0x79935f
jmp 0x799456
mov eax, dword [esi + 0x19c]
cmp byte [eax + 0x1c], 0
je 0x799456
mov eax, dword [ebp - 0x14]
mov edx, dword [eax]
call dword [edx + 0x14]
dec eax
jle 0x799456
mov eax, dword [ebp - 0x14]
mov edx, dword [eax]
call dword [edx + 0x14]
mov edx, eax
sub edx, 2
lea ecx, [ebp - 0x4c]
mov eax, dword [ebp - 0x14]
mov ebx, dword [eax]
call dword [ebx + 0xc]
mov edx, dword [ebp - 0x4c]
mov eax, dword [esi + 0x19c]
add eax, 0x24
call fcn.0040af1c
mov eax, dword [ebp - 0x14]
mov edx, dword [eax]
call dword [edx + 0x14]
mov edx, eax
dec edx
lea ecx, [ebp - 0x50]
mov eax, dword [ebp - 0x14]
mov ebx, dword [eax]
call dword [ebx + 0xc]
mov edx, dword [ebp - 0x50]
mov eax, dword [esi + 0x19c]
add eax, 0x28
call fcn.0040af1c
mov byte [ebp - 0xd], 0
cmp dword [ebp - 8], 0
je 0x799473
mov eax, dword [esi + 0x19c]
mov eax, dword [eax + 0xc]
mov edx, dword [ebp - 8]
call fcn.0040be64
jne 0x799485
mov eax, dword [ebp + 8]
inc eax
test eax, eax
sete al
or al, byte [ebp - 0x19]
je 0x799485
mov byte [ebp - 0xd], 1
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x7994a7
mov eax, dword [ebp - 0x14]
xor edx, edx
mov dword [ebp - 0x14], edx
call fcn.00408c4c
ret
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x7994e8
lea eax, [ebp - 0x50]
mov edx, 0xc
call fcn.0040ab9c
lea eax, [ebp - 0xc]
mov edx, 3
call fcn.0040ab9c
mov eax, dword [ebp + 0xc]
mov ecx, dword [ebp + 8]
inc ecx
mov edx, dword [0x4012b8]
call fcn.0040c4a4
ret