Function at 0x799b80
Capabilities:
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, ecx
push edi
push esi
mov esi, edx
push ebx
sub esp, 0xcc
mov edi, dword [esp + 0xe0]
mov dword [esp + 0xc], eax
mov ebx, edi
mov dword [esp + 0x94], edi
mov edi, dword [esp + 0xe4]
mov word [esp + 0x7a], bx
test di, di
je 0x799bc1
mov edx, dword [eax]
mov edx, dword [edx]
test byte [edx + 0x4c], 0x40
jne 0x79a1dd
mov ebx, dword [esi]
mov dword [esp + 0x9c], ebx
cmp bx, 0x3f
ja 0x79a1dd
movzx ebx, bx
mov eax, 1
xor edx, edx
mov ecx, ebx
mov dword [esp], ebx
xor ebx, ebx
shld edx, eax, cl
shl eax, cl
test cl, 0x20
cmovne edx, eax
cmovne eax, ebx
mov ebx, edx
mov ecx, eax
movzx edx, word [esp + 0x94]
add ecx, 0xffffffff
adc ebx, 0xffffffff
and dx, 0x800
mov dword [esp + 0x50], ecx
mov word [esp + 0x98], dx
setne dl
movzx edx, dl
mov dword [esp + 0x54], ebx
add dx, 0x182
mov word [esp + 0x58], dx
mov edx, ecx
mov ecx, ebx
or ecx, edx
je 0x79a4ba
mov dword [esp + 0x1c], esi
movzx esi, di
mov eax, dword [esp + 0xc]
movzx edi, word [esp + 0x94]
mov dword [esp + 0x84], ebp
mov dword [esp + 0x4c], eax
and di, 0xc0
mov dword [esp + 0x68], esi
cmp di, 1
mov word [esp + 0x26], di
sbb edi, edi
add eax, 0x1e8
mov dword [esp + 0x7c], 0
mov edx, edi
lea edi, [esi + 1]
mov dword [esp + 0x80], 0
add edx, 1
mov dword [esp + 0x6c], edi
mov byte [esp + 0x5b], dl
mov dword [esp + 0x10], 0
mov dword [esp + 0x14], 0
mov dword [esp + 0x40], 0
mov dword [esp + 0x60], 0
mov dword [esp + 0x64], 0
mov dword [esp + 0x90], eax
jmp 0x799d04
mov eax, dword [esp + 0x10]
mov edi, dword [esp + 0x50]
mov edx, dword [esp + 0x14]
mov ebp, dword [esp + 0x54]
add dword [esp + 0x40], 1
cmp eax, edi
mov esi, dword [esp + 0x40]
mov eax, edx
sbb eax, ebp
jae 0x79a6d5
mov eax, dword [esp + 0x6c]
cmp esi, eax
je 0x79a6ed
mov eax, dword [esp + 0x20]
mov esi, dword [eax + 8]
mov eax, dword [eax + 0xc]
or dword [esp + 0x60], esi
or dword [esp + 0x64], eax
mov edi, dword [esp + 0x40]
cmp dword [esp + 0x68], edi
jle 0x79a487
cmp word [esp + 0x98], 0
mov eax, dword [esp + 0x84]
mov eax, dword [eax + 0x18]
mov eax, dword [eax + edi*4]
mov dword [esp + 0x20], eax
jne 0x799cc1
mov eax, dword [esp + 0x20]
mov edx, dword [eax + 0x24]
test dh, 4
jne 0x79a4a2
movzx eax, word [esp + 0x7a]
and ax, 0x80
mov word [esp + 0x5c], ax
je 0x799d58
mov eax, dword [esp + 0x20]
xor esi, esi
mov word [eax + 0x1e], si
mov eax, dword [esp + 0x20]
mov edi, dword [esp + 0x4c]
movzx eax, byte [eax + 0x10]
lea eax, [eax + eax*8]
shl eax, 3
add eax, dword [edi + 4]
mov eax, dword [eax + 0x34]
mov dword [esp + 0x28], eax
mov eax, dword [esp]
test eax, eax
je 0x79a646
movzx ebp, word [esp + 0x58]
add edi, 0x50
xor esi, esi
mov dword [esp + 0xc], edi
mov dword [esp + 0x18], ebp
mov ebp, eax
jmp 0x799da0
add esi, 1
cmp ebp, esi
je 0x799ea4
mov edx, dword [esp + 0x14]
mov eax, dword [esp + 0x10]
mov ecx, esi
shrd eax, edx, cl
shr edx, cl
test cl, 0x20
cmovne eax, edx
and eax, 1
jne 0x799d95
lea edi, [esi + esi*4]
mov eax, dword [esp + 0x1c]
shl edi, 2
mov ebx, dword [eax + edi + 4]
lea esi, [esi]
nop
test ebx, ebx
je 0x80ae85
mov eax, dword [ebx + 4]
test eax, 0x41000
je 0x799e05
test eax, 0x40000
je 0x79a1f0
mov eax, dword [ebx + 0x14]
mov ebx, dword [eax + 4]
test ebx, ebx
je 0x80ae85
mov eax, dword [ebx + 4]
test eax, 0x41000
jne 0x799de2
cmp byte [ebx], 0xa4
jne 0x799d95
mov eax, dword [esp + 0x28]
cmp dword [ebx + 0x1c], eax
jne 0x799d95
movsx ecx, word [ebx + 0x20]
push 0
push dword [esp + 0x1c]
mov eax, dword [esp + 0x68]
not eax
mov dword [esp + 0x78], eax
mov eax, dword [esp + 0x6c]
not eax
mov dword [esp + 0x7c], eax
push dword [esp + 0x7c]
push dword [esp + 0x7c]
mov edx, dword [esp + 0x38]
mov eax, dword [esp + 0x1c]
call fcn.00798420
add esp, 0x10
test eax, eax
je 0x799d95
movzx edx, word [eax + 0xc]
cmp dx, 1
je 0x79a69d
and edx, 0x82
je 0x799e72
cmp word [ebx + 0x20], 0
jns 0x79a67b
mov ecx, esi
xor eax, eax
xor edx, edx
mov edi, dword [esp + 0x14]
test cl, 0x20
sete al
setne dl
add esi, 1
shl eax, cl
shl edx, cl
mov ecx, dword [esp + 0x10]
or edi, edx
or ecx, eax
mov dword [esp + 0x14], edi
mov dword [esp + 0x10], ecx
cmp ebp, esi
jne 0x799da0
mov eax, dword [esp + 0x20]
mov edx, dword [eax + 0x24]
test dh, 0x10
jne 0x79a4fa
test dh, 1
jne 0x79a60b
mov eax, dword [esp + 0x20]
mov eax, dword [eax + 0x20]
mov dword [esp + 0x2c], eax
test eax, eax
je 0x79a1dd
test byte [eax + 0x38], 4
jne 0x79a1dd
movzx edi, word [eax + 0x32]
mov word [esp + 0x9a], di
mov edi, eax
movzx eax, word [eax + 0x34]
movzx ebx, byte [edi + 0x36]
mov dword [esp + 0x3c], eax
mov byte [esp + 0x49], bl
test bl, bl
jne 0x79a62f
test eax, eax
je 0x79a136
movzx ecx, byte [esp + 0x40]
mov eax, 1
xor edx, edx
xor ebx, ebx
mov byte [esp + 0x4a], 0
shld edx, eax, cl
shl eax, cl
test cl, 0x20
mov byte [esp + 0x79], 0
cmovne edx, eax
cmovne eax, ebx
mov byte [esp + 0x78], 0
xor esi, esi
mov dword [esp + 0x88], eax
movzx eax, word [esp + 0x7a]
mov dword [esp + 0x8c], edx
and eax, 0x40
mov word [esp + 0x5e], ax
jmp 0x799fa3
mov edi, dword [esp + 0x20]
movzx edx, word [edi + 0x2a]
cmp edx, esi
jg 0x799faf
mov edi, dword [esp + 0x20]
lea ebx, [esi*4]
mov ecx, dword [edi + 0x30]
mov edi, dword [ecx + esi*4]
movzx edx, word [edi + 0xc]
test word [esp + 0x58], dx
je 0x79a411
movzx edi, byte [esp + 0x49]
mov eax, 0
test dx, 0x180
cmovne edi, eax
mov eax, edi
mov byte [esp + 0x49], al
add esi, 1
cmp esi, dword [esp + 0x3c]
jge 0x79a120
mov eax, dword [esp + 0x20]
movzx eax, word [eax + 0x18]
cmp eax, esi
jg 0x799f52
mov edx, dword [esp]
test edx, edx
setg byte [esp + 0xc]
mov edi, dword [esp + 0x2c]
test edi, edi
je 0x79a463
mov ecx, dword [edi + 0x1c]
mov edx, dword [edi + 4]
mov dword [esp + 0x18], 0xffffffff
movzx ecx, byte [ecx + esi]
movzx edx, word [edx + esi*2]
and ecx, 1
mov byte [esp + 0x4b], cl
mov ecx, dword [edi + 0xc]
cmp dx, word [ecx + 0x28]
je 0x79a018
movsx edi, dx
mov dword [esp + 0x18], edi
test edi, edi
js 0x79a018
test byte [esp + 0x49], 1
je 0x79a018
mov byte [esp + 0x49], 1
cmp eax, esi
jg 0x79a018
mov edx, dword [ecx + 4]
lea eax, [edi + edi*4]
lea eax, [edx + eax*4]
cmp byte [eax + 0xc], 0
setne byte [esp + 0x49]
cmp byte [esp + 0xc], 0
je 0x79a108
lea eax, [esi*4]
mov dword [esp + 0x30], esi
xor ebx, ebx
mov edi, dword [esp + 0x14]
mov dword [esp + 0x38], eax
add eax, esi
mov esi, dword [esp + 0x10]
mov dword [esp + 0x34], eax
jmp 0x79a05d
movzx eax, byte [esp + 0xc]
add ebx, 1
cmp dword [esp], ebx
jle 0x79a104
test al, al
je 0x79a104
mov ecx, ebx
mov eax, esi
mov edx, edi
shrd eax, edi, cl
shr edx, cl
test bl, 0x20
cmovne eax, edx
and eax, 1
jne 0x79a044
lea ebp, [ebx + ebx*4]
mov eax, dword [esp + 0x1c]
shl ebp, 2
mov edx, dword [eax + ebp + 4]
test edx, edx
je 0x79a475
mov ecx, dword [edx + 4]
mov eax, edx
test ecx, 0x41000
jne 0x79a0b5
jmp 0x79a0c4
mov eax, dword [eax + 0x14]
mov eax, dword [eax + 4]
test eax, eax
je 0x79a0c4
mov ecx, dword [eax + 4]
test ecx, 0x41000
je 0x79a0c4
and ecx, 0x40000
jne 0x79a0a0
mov eax, dword [eax + 0xc]
test eax, eax
jne 0x79a0aa
cmp word [esp + 0x26], 0
jne 0x79a200
cmp dword [esp + 0x18], 0xffffffff
jl 0x79a2a4
cmp byte [eax], 0xa4
jne 0x79a104
mov ecx, dword [esp + 0x28]
cmp ecx, dword [eax + 0x1c]
jne 0x79a104
movsx eax, word [eax + 0x20]
cmp eax, dword [esp + 0x18]
je 0x79a22b
movzx eax, byte [esp + 0x5b]
and eax, 1
jmp 0x79a049
mov esi, dword [esp + 0x30]
test esi, esi
je 0x79a244
movzx eax, word [esp + 0x9a]
cmp eax, esi
jg 0x79a244
cmp byte [esp + 0x4a], 0
jne 0x79a24f
cmp byte [esp + 0x49], 0
jne 0x79a24f
mov ebx, dword [esp + 0x10]
mov ebp, dword [esp + 0x54]
mov esi, dword [esp + 0x14]
mov edi, dword [esp + 0x50]
mov eax, ebx
mov edx, ebp
xor eax, edi
xor edx, esi
or edx, eax
je 0x79a4ba
mov ecx, dword [esp]
sub ecx, 1
test ecx, ecx
jle 0x79a1dd
xor eax, eax
xor edx, edx
test cl, 0x20
sete al
setne dl
shl eax, cl
shl edx, cl
add eax, 0xffffffff
adc edx, 0xffffffff
mov edi, eax
mov eax, dword [esp + 0x10]
mov ebp, edx
mov edx, dword [esp + 0x14]
mov esi, eax
and esi, edi
mov ebx, edx
and ebx, ebp
mov eax, esi
xor eax, edi
xor ebx, ebp
or ebx, eax
je 0x79a6fd
mov esi, dword [esp + 0x10]
mov edi, dword [esp + 0x14]
jmp 0x79a1d8
xor eax, eax
xor edx, edx
test cl, 0x20
mov ebp, esi
sete al
setne dl
mov ebx, edi
shl eax, cl
shl edx, cl
add eax, 0xffffffff
adc edx, 0xffffffff
mov dword [esp], eax
and ebp, eax
xor ebp, dword [esp]
and ebx, edx
mov dword [esp + 4], edx
xor ebx, dword [esp + 4]
or ebx, ebp
je 0x79a6fd
sub ecx, 1
jne 0x79a1a3
add esp, 0xcc
xor eax, eax
pop ebx
pop esi
pop edi
pop ebp
ret
mov ebx, dword [ebx + 0xc]
jmp 0x799dd0
cmp dword [esp + 0x18], 0xffffffff
jl 0x79a273
cmp byte [eax], 0xa4
jne 0x79a044
mov ecx, dword [esp + 0x28]
cmp dword [eax + 0x1c], ecx
jne 0x79a044
movsx eax, word [eax + 0x20]
cmp eax, dword [esp + 0x18]
jne 0x79a0f7
cmp dword [esp + 0x18], 0xffffffff
je 0x79a672
movzx eax, byte [esp + 0x5b]
mov byte [esp + 0x5a], al
jmp 0x79a2d3
cmp byte [esp + 0x4a], 0
je 0x79a136
mov eax, dword [esp + 0x20]
mov esi, dword [eax + 8]
mov eax, dword [eax + 0xc]
or dword [esp + 0x7c], esi
or dword [esp + 0x80], eax
cmp dword [esp], 0
je 0x799cc1
jmp 0x79a50f
mov ecx, dword [esp + 0x2c]
mov edx, dword [esp + 0x34]
shl edx, 2
add edx, dword [ecx + 0x28]
mov ecx, dword [esp + 0x28]
mov edx, dword [edx + 4]
call fcn.00797db0
test eax, eax
jne 0x79a044
mov eax, dword [esp + 0x1c]
mov byte [esp + 0x5a], 1
mov edx, dword [eax + ebp + 4]
jmp 0x79a2d3
mov ecx, dword [esp + 0x2c]
mov edx, dword [esp + 0x34]
shl edx, 2
add edx, dword [ecx + 0x28]
mov ecx, dword [esp + 0x28]
mov edx, dword [edx + 4]
call fcn.00797db0
test eax, eax
jne 0x79a104
mov eax, dword [esp + 0x1c]
mov byte [esp + 0x5a], 0
mov edx, dword [eax + ebp + 4]
mov eax, dword [esp + 0x4c]
mov ebp, dword [eax]
mov eax, ebp
call fcn.00793eb0
test eax, eax
je 0x79a47c
mov edx, dword [esp + 0x2c]
mov ecx, dword [esp + 0x38]
mov dword [esp + 0x44], ebx
mov edx, dword [edx + 0x20]
mov ecx, dword [edx + ecx]
mov edx, dword [eax]
jmp 0x79a319
movzx ebx, byte [ebp + 0xbfad00]
cmp byte [eax + 0xbfad00], bl
jne 0x79a400
add edx, 1
add ecx, 1
movzx eax, byte [edx]
movzx ebp, byte [ecx]
cmp eax, ebp
jne 0x79a300
test eax, eax
jne 0x79a313
mov ebx, dword [esp + 0x44]
mov esi, dword [esp + 0x30]
cmp word [esp + 0x5c], 0
je 0x79a342
mov edi, dword [esp + 0x20]
lea eax, [esi + 1]
mov word [edi + 0x1e], ax
mov edi, dword [esp + 0x1c]
lea eax, [ebx + ebx*4]
cmp word [esp + 0x5e], 0
movzx eax, byte [edi + eax*4 + 0xc]
jne 0x79a394
cmp byte [esp + 0x78], 0
jne 0x79a4df
mov edx, eax
and edx, 1
cmp dl, byte [esp + 0x4b]
je 0x79a4d0
mov edx, dword [esp + 0xec]
mov edi, dword [esp + 0x88]
mov byte [esp + 0x79], 1
mov ebp, dword [esp + 0x8c]
mov byte [esp + 0x78], 1
or dword [edx], edi
or dword [edx + 4], ebp
test al, 2
je 0x79a3af
mov edi, dword [esp + 0x20]
movzx eax, word [edi + 0x18]
cmp eax, esi
jne 0x79a108
or dword [edi + 0x24], 0x80000
movzx edi, byte [esp + 0x4a]
mov eax, 1
mov ebp, dword [esp + 0x14]
mov ecx, ebx
cmp dword [esp + 0x18], 0xffffffff
cmove edi, eax
xor edx, edx
mov eax, edi
mov edi, dword [esp + 0x10]
mov byte [esp + 0x4a], al
xor eax, eax
test bl, 0x20
sete al
setne dl
shl edx, cl
shl eax, cl
mov ecx, edi
mov edi, ebp
or ecx, eax
or edi, edx
mov dword [esp + 0x10], ecx
mov dword [esp + 0x14], edi
jmp 0x799f96
movzx eax, byte [esp + 0x5a]
mov ebx, dword [esp + 0x44]
and eax, 1
jmp 0x79a049
mov ebp, dword [esp]
test ebp, ebp
setg byte [esp + 0xc]
and edx, 1
je 0x799fb9
lea edx, [esi + 1]
mov edi, dword [edi]
cmp edx, eax
jge 0x799fb9
mov ebx, dword [ecx + ebx + 4]
cmp edi, dword [ebx]
je 0x79a452
lea esi, [esi]
add edx, 1
cmp eax, edx
je 0x799fb9
mov ebx, dword [ecx + edx*4]
cmp dword [ebx], edi
jne 0x79a440
mov edi, dword [esp + 0x2c]
mov byte [esp + 0xc], 0
test edi, edi
jne 0x799fc5
mov dword [esp + 0x18], 0xffffffff
mov byte [esp + 0x4b], 0
jmp 0x79a018
xor eax, eax
jmp 0x79a0c4
mov eax, dword [ebp]
mov eax, dword [eax + 8]
jmp 0x79a2e8
mov eax, dword [esp + 0xe8]
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x20]
mov edx, dword [eax + 0x24]
test dh, 4
je 0x799d3e
cmp byte [eax + 0x1d], 0
je 0x79a70a
test byte [esp + 0x94], 0x80
jne 0x79a70a
movzx eax, byte [esp + 0x9c]
add esp, 0xcc
pop ebx
pop esi
pop edi
pop ebp
ret
mov byte [esp + 0x79], 0
mov byte [esp + 0x78], 1
jmp 0x79a394
mov edx, eax
movzx ecx, byte [esp + 0x4b]
xor cl, byte [esp + 0x79]
and edx, 1
cmp cl, dl
jne 0x79a108
jmp 0x79a394
mov eax, dword [esp + 0x20]
mov esi, dword [eax + 8]
mov eax, dword [eax + 0xc]
or dword [esp + 0x7c], esi
or dword [esp + 0x80], eax
mov eax, dword [esp + 0x1c]
xor ebx, ebx
mov edi, dword [esp + 0x14]
lea esi, [eax + 4]
mov ebp, esi
mov esi, dword [esp + 0x10]
jmp 0x79a562
mov eax, dword [esp + 0x90]
mov edx, ecx
mov dword [esp + 0xc], ecx
call fcn.007798d0
mov ecx, edx
or ecx, eax
mov ecx, dword [esp + 0xc]
je 0x79a5bb
mov ecx, dword [esp + 0x7c]
not ecx
and eax, ecx
mov ecx, dword [esp + 0x80]
not ecx
and edx, ecx
or edx, eax
je 0x79a580
add ebx, 1
add ebp, 0x14
cmp dword [esp], ebx
jle 0x79a5ae
mov edx, edi
mov ecx, ebx
mov eax, esi
shrd eax, edx, cl
shr edx, cl
test cl, 0x20
je 0x79a574
mov eax, edx
and eax, 1
jne 0x79a557
mov ecx, dword [ebp]
test ecx, ecx
jne 0x79a524
mov ecx, ebx
mov eax, 1
xor edx, edx
shld edx, eax, cl
shl eax, cl
test cl, 0x20
je 0x79a597
mov edx, eax
xor eax, eax
mov ecx, edx
or eax, esi
add ebx, 1
add ebp, 0x14
mov edx, ecx
mov esi, eax
or edx, edi
mov edi, edx
cmp dword [esp], ebx
jg 0x79a562
mov dword [esp + 0x10], esi
mov dword [esp + 0x14], edi
jmp 0x799cc1
mov eax, 1
mov edx, ecx
mov dword [esp + 0xa8], 0x76ddd0
mov word [esp + 0xb8], ax
lea eax, [esp + 0xa4]
mov dword [esp + 0xac], 0x762440
mov dword [esp + 0xbc], 0
call fcn.0076d540
cmp word [esp + 0xb8], 0
je 0x79a557
jmp 0x79a580
xor esi, esi
mov dword [esp + 0x3c], 1
mov dword [esp + 0x2c], 0
mov word [esp + 0x9a], si
mov byte [esp + 0x49], 1
jmp 0x799f08
and dh, 0x80
je 0x79a669
test eax, eax
je 0x79a136
mov byte [esp + 0x49], 0
jmp 0x799f08
test dh, 0x10
je 0x799eb4
mov eax, dword [esp + 0x20]
mov esi, dword [eax + 8]
mov eax, dword [eax + 0xc]
or dword [esp + 0x7c], esi
or dword [esp + 0x80], eax
jmp 0x799cc1
test eax, eax
jne 0x79a625
jmp 0x79a24f
mov esi, dword [esp + 0x30]
jmp 0x79a32f
mov ebx, dword [esp + 0x1c]
mov ecx, dword [eax]
mov eax, dword [esp + 0x4c]
mov edx, dword [ebx + edi + 4]
mov eax, dword [eax]
call fcn.00794bf0
test eax, eax
jne 0x799e72
jmp 0x799d95
mov edi, dword [esp + 0x20]
movzx ebx, word [edi + 0x28]
test ebx, ebx
je 0x799d95
mov ecx, dword [edi + 0x30]
xor edx, edx
cmp eax, dword [ecx]
jne 0x79a6c9
jmp 0x799e72
cmp dword [ecx + edx*4], eax
je 0x799e72
add edx, 1
cmp edx, ebx
jne 0x79a6c0
jmp 0x799d95
mov eax, dword [esp + 0x54]
cmp dword [esp + 0x14], eax
jne 0x79a6ed
mov eax, dword [esp + 0x50]
cmp dword [esp + 0x10], eax
je 0x79a4ba
add esp, 0xcc
mov eax, 0xffffffff
pop ebx
pop esi
pop edi
pop ebp
ret
add esp, 0xcc
mov eax, ecx
pop ebx
pop esi
pop edi
pop ebp
ret
mov ebx, dword [esp + 0x50]
mov esi, dword [esp + 0x54]
mov edi, dword [esp + 0x10]
mov ebp, dword [esp + 0x14]
mov eax, ebx
mov edx, esi
xor eax, edi
xor edx, ebp
or edx, eax
je 0x79a4ba
jmp 0x79a6ed
movzx eax, byte [pe_dos_header]
ud2