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

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x54
mov esi, dword [esp + 0x80]
mov dword [esp + 0x4c], 0xff
mov eax, 0xffffffff
cmp esi, 0x200
jb 0x77c331
lea eax, [esp + 0x50]
lea ecx, [esp + 0x4c]
push 0
push dword [esp + 0x78]
push dword [esp + 0x78]
push eax
push ecx
push dword [esp + 0x90]
call fcn.0077b020
add esp, 0x18
cmp eax, 0xffffff88
ja 0x77c331
mov dword [esp], eax
mov ebx, dword [esp + 0x50]
mov eax, 0xffffffd4
cmp ebx, dword [esp + 0x78]
ja 0x77c331
mov edi, 1
mov ecx, ebx
shl edi, cl
mov ebp, 1
mov eax, edi
sar eax, 0x1f
shld eax, edi, 2
xor edx, edx
shld edx, ebp, cl
shl edi, 2
shl ebp, cl
test bl, 0x20
cmovne edx, ebp
mov ecx, 0
cmovne ebp, ecx
add ebp, edi
adc edx, eax
mov edi, dword [esp + 0x4c]
lea eax, [edi*2 + 2]
add eax, ebp
adc edx, 0
add eax, 0x13
adc edx, 0
and eax, 0xfffffffc
add eax, 0x204
adc edx, 0
cmp esi, eax
mov eax, 0xffffffd4
sbb ecx, edx
jb 0x77c331
mov eax, 4
mov dword [esp + 0x1c], edi
mov ecx, ebx
shl eax, cl
mov edx, dword [esp + 0x7c]
lea ebp, [edx + 0x200]
lea edi, [eax + ebp]
add edi, 4
sub esi, eax
add esi, 0xfffffdfc
mov ecx, ebp
push esi
push edi
push ebx
push dword [esp + 0x28]
call fcn.0077b6f0
add esp, 0x10
cmp eax, 0xffffff88
ja 0x77c331
mov dword [esp + 0x1c], ebp
mov eax, dword [esp + 0x6c]
mov edi, dword [esp + 0x68]
mov ebx, dword [esp + 0x74]
mov esi, ebx
mov ecx, dword [esp]
sub esi, ecx
mov ebp, dword [esp + 0x70]
lea edx, [ecx + ebp]
mov ecx, dword [esp + 0x7c]
cmp word [ecx + 0x202], 0
lea ecx, [edi + eax]
mov dword [esp + 0x38], ecx
lea eax, [edi + eax - 3]
mov dword [esp + 0x48], eax
je 0x77bcb3
test esi, esi
je 0x77bee0
mov dword [esp + 0x10], edx
lea eax, [edx + 4]
mov dword [esp + 0x14], eax
cmp esi, 4
jb 0x77beea
lea eax, [ebx + ebp]
add eax, 0xfffffffc
mov dword [esp + 0xc], eax
mov eax, dword [ebp + ebx - 4]
mov dword [esp + 4], eax
mov ecx, 0xffffffff
cmp eax, 0x1000000
jb 0x77c198
shr eax, 0x18
bsr eax, eax
not eax
add eax, 9
mov dword [esp + 8], eax
mov ecx, esi
cmp esi, 0xffffff88
jbe 0x77bf34
jmp 0x77c198
lea ecx, [esp + 4]
push esi
call fcn.0077c580
add esp, 4
cmp eax, 0xffffff88
ja 0x77c331
lea ecx, [esp + 0x2c]
lea edi, [esp + 4]
mov edx, edi
mov esi, dword [esp + 0x1c]
push esi
call fcn.0077c640
add esp, 4
lea ecx, [esp + 0x24]
mov edx, edi
push esi
call fcn.0077c640
add esp, 4
mov eax, dword [esp + 4]
mov dword [esp + 0x18], eax
mov edx, dword [esp + 8]
mov ebp, dword [esp + 0x2c]
mov ebx, dword [esp + 0x24]
cmp edx, 0x20
ja 0x77c48f
mov eax, dword [esp + 0x14]
mov dword [esp + 0x3c], eax
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 0x10]
mov dword [esp + 0x44], ecx
mov ecx, dword [esp + 0x30]
mov dword [esp + 0x20], ecx
mov ecx, dword [esp + 0x28]
mov dword [esp + 0x34], ecx
mov ecx, dword [esp + 0x68]
lea esi, [ecx + 2]
jmp 0x77bdb8
mov ecx, edx
shr ecx, 3
sub eax, ecx
and edx, 7
mov ebx, dword [eax]
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x20]
movzx ecx, byte [eax + edi*4 + 3]
mov dword [esp + 0x18], ecx
add edx, ecx
mov ecx, edx
neg cl
mov ebp, ebx
shr ebp, cl
mov ecx, dword [esp + 0x18]
and ebp, dword [ecx*4 + 0xa992c8]
movzx ecx, word [eax + edi*4]
movzx eax, byte [eax + edi*4 + 2]
add ebp, ecx
mov ecx, dword [esp]
mov byte [ecx], al
mov eax, dword [esp + 0x34]
movzx edi, byte [eax + esi*4 + 3]
add edx, edi
mov ecx, edx
neg cl
mov dword [esp + 0x18], ebx
shr ebx, cl
and ebx, dword [edi*4 + 0xa992c8]
movzx ecx, word [eax + esi*4]
add ebx, ecx
movzx ecx, byte [eax + esi*4 + 2]
mov esi, dword [esp]
mov eax, dword [esp + 0x1c]
mov byte [esi + 1], cl
add esi, 4
cmp edx, 0x20
ja 0x77c4bc
mov dword [esp], esi
add esi, 0xfffffffe
cmp eax, dword [esp + 0x3c]
jae 0x77be05
mov dword [esp + 0x40], esi
mov esi, eax
mov ecx, dword [esp + 0x44]
sub esi, ecx
je 0x77c2e4
mov ecx, edx
shr ecx, 3
mov edi, eax
sub edi, ecx
cmp edi, dword [esp + 0x44]
mov edi, edx
mov edx, 0
setb dl
mov dword [esp + 0x1c], edx
mov edx, edi
cmovb ecx, esi
lea esi, [ecx*8]
sub edx, esi
mov esi, dword [esp + 0x40]
jmp 0x77be15
mov ecx, edx
shr ecx, 3
and edx, 7
mov dword [esp + 0x1c], 0
sub eax, ecx
mov edi, dword [eax]
cmp esi, dword [esp + 0x48]
jae 0x77c2ec
cmp dword [esp + 0x1c], 0
jne 0x77c2ec
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x20]
movzx ecx, word [eax + ebp*4]
mov dword [esp + 0x40], ecx
mov ch, byte [eax + ebp*4 + 2]
movzx eax, byte [eax + ebp*4 + 3]
add edx, eax
mov cl, dl
neg cl
mov esi, edi
shr edi, cl
and edi, dword [eax*4 + 0xa992c8]
mov eax, dword [esp]
mov byte [eax - 2], ch
mov eax, dword [esp + 0x34]
movzx ebp, byte [eax + ebx*4 + 3]
add edx, ebp
mov ecx, edx
neg cl
mov dword [esp + 0x18], esi
shr esi, cl
add edi, dword [esp + 0x40]
and esi, dword [ebp*4 + 0xa992c8]
movzx ecx, word [eax + ebx*4]
add esi, ecx
movzx ecx, byte [eax + ebx*4 + 2]
mov eax, dword [esp]
mov byte [eax - 1], cl
cmp edx, 0x21
jae 0x77c49b
mov eax, dword [esp + 0x1c]
cmp eax, dword [esp + 0x3c]
jae 0x77bd39
mov ecx, eax
mov ebp, dword [esp + 0x44]
sub ecx, ebp
je 0x77c2fe
mov ebx, edx
shr ebx, 3
mov dword [esp + 0x18], eax
sub dword [esp + 0x18], ebx
cmp dword [esp + 0x18], ebp
cmovb ebx, ecx
sub eax, ebx
shl ebx, 3
sub edx, ebx
mov ebx, dword [eax]
cmp dword [esp + 0x18], ebp
jae 0x77bd45
jmp 0x77c302
mov eax, 0xffffffb8
jmp 0x77c331
mov dword [esp + 0xc], edx
movzx eax, byte [edx]
mov dword [esp + 4], eax
cmp esi, 2
je 0x77bf08
cmp esi, 3
jne 0x77bf15
movzx ecx, byte [edx + 2]
shl ecx, 0x10
or eax, ecx
movzx ecx, byte [edx + 1]
shl ecx, 8
add ecx, eax
mov dword [esp + 4], ecx
movzx eax, byte [ebp + ebx - 1]
test eax, eax
je 0x77c162
bsr eax, eax
xor eax, 0x1f
shl esi, 3
sub eax, esi
add eax, 9
mov dword [esp + 8], eax
lea ecx, [esp + 0x2c]
lea edi, [esp + 4]
mov edx, edi
mov esi, dword [esp + 0x1c]
push esi
call fcn.0077c640
add esp, 4
lea ecx, [esp + 0x24]
mov edx, edi
push esi
call fcn.0077c640
add esp, 4
mov edx, dword [esp + 8]
mov ebp, dword [esp + 0x2c]
mov ebx, dword [esp + 0x24]
cmp edx, 0x20
ja 0x77c495
mov eax, dword [esp + 0x14]
mov dword [esp + 0x40], eax
mov ecx, dword [esp + 0xc]
mov eax, dword [esp + 0x10]
mov dword [esp + 0x34], eax
mov eax, dword [esp + 0x30]
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x28]
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x68]
lea edi, [eax + 2]
jmp 0x77c01b
mov eax, edx
shr eax, 3
sub ebp, eax
and edx, 7
mov dword [esp + 8], edx
mov ebx, dword [ebp]
mov dword [esp + 4], ebx
mov dword [esp + 0x3c], ebp
mov eax, dword [esp + 0x18]
movzx ecx, word [eax + esi*4]
mov dword [esp + 0x20], ecx
mov ch, byte [eax + esi*4 + 2]
movzx eax, byte [eax + esi*4 + 3]
mov ebp, ebx
mov cl, dl
shl ebp, cl
add edx, eax
mov cl, al
neg cl
shr ebp, cl
mov eax, dword [esp]
mov byte [eax], ch
mov esi, dword [esp + 0x1c]
movzx eax, byte [esi + edi*4 + 3]
mov ecx, edx
add edx, eax
shl ebx, cl
neg al
mov ecx, eax
shr ebx, cl
mov ecx, dword [esp + 0x3c]
add ebp, dword [esp + 0x20]
movzx eax, word [esi + edi*4]
add ebx, eax
movzx eax, byte [esi + edi*4 + 2]
mov edi, dword [esp]
mov dword [esp + 8], edx
mov byte [edi + 1], al
add edi, 4
cmp edx, 0x20
ja 0x77c4f1
lea eax, [edi - 2]
mov dword [esp + 0x20], eax
cmp ecx, dword [esp + 0x40]
mov dword [esp], edi
jae 0x77c064
mov esi, ecx
mov eax, dword [esp + 0x34]
sub esi, eax
je 0x77c170
mov eax, edx
shr eax, 3
mov edi, ecx
sub edi, eax
cmp edi, dword [esp + 0x34]
mov edi, ebx
mov ebx, 0
setb bl
mov dword [esp + 0x44], ebx
mov ebx, edi
cmovb eax, esi
lea esi, [eax*8]
sub edx, esi
jmp 0x77c074
mov eax, edx
shr eax, 3
and edx, 7
mov dword [esp + 0x44], 0
sub ecx, eax
mov dword [esp + 8], edx
mov dword [esp + 0x3c], ecx
mov edi, dword [ecx]
mov dword [esp + 4], edi
mov eax, dword [esp + 0x20]
cmp eax, dword [esp + 0x48]
jae 0x77c16c
cmp dword [esp + 0x44], 0
jne 0x77c16c
mov ecx, dword [esp + 0x18]
movzx eax, word [ecx + ebp*4]
mov dword [esp + 0x20], eax
movzx eax, byte [ecx + ebp*4 + 3]
mov ecx, edx
add edx, eax
mov esi, edi
shl esi, cl
neg al
mov ecx, eax
shr esi, cl
mov eax, dword [esp + 0x18]
movzx eax, byte [eax + ebp*4 + 2]
add esi, dword [esp + 0x20]
mov ecx, dword [esp]
mov byte [ecx - 2], al
mov eax, dword [esp + 0x1c]
movzx eax, byte [eax + ebx*4 + 3]
mov ecx, edx
add edx, eax
mov ebp, dword [esp + 0x1c]
movzx ebp, word [ebp + ebx*4]
mov dword [esp + 0x20], ebp
shl edi, cl
neg al
mov ecx, eax
shr edi, cl
add edi, dword [esp + 0x20]
mov eax, dword [esp + 0x1c]
movzx eax, byte [eax + ebx*4 + 2]
mov ecx, dword [esp]
mov byte [ecx - 1], al
cmp edx, 0x21
jae 0x77c4dc
mov ebp, dword [esp + 0x3c]
cmp ebp, dword [esp + 0x40]
jae 0x77bf9c
mov ecx, ebp
mov eax, dword [esp + 0x34]
sub ecx, eax
je 0x77c151
mov ebx, edx
shr ebx, 3
mov eax, ebp
sub eax, ebx
cmp eax, dword [esp + 0x34]
cmovb ebx, ecx
sub ebp, ebx
shl ebx, 3
sub edx, ebx
mov dword [esp + 8], edx
mov ebx, dword [ebp]
mov dword [esp + 4], ebx
cmp eax, dword [esp + 0x34]
jae 0x77bfb1
mov dword [esp + 0xc], ebp
mov dword [esp + 0x2c], esi
mov dword [esp + 0x24], edi
mov ebp, dword [esp]
jmp 0x77c180
mov eax, 0xffffffec
jmp 0x77c331
mov ecx, dword [esp + 0x3c]
mov dword [esp + 0xc], ecx
mov dword [esp + 0x2c], ebp
mov dword [esp + 0x24], ebx
mov ebp, dword [esp + 0x20]
mov eax, dword [esp + 0x38]
add eax, 0xfffffffe
mov ecx, 0xffffffba
mov dword [esp + 0x38], eax
cmp ebp, eax
mov eax, dword [esp + 0x68]
jbe 0x77c19f
mov eax, ecx
jmp 0x77c331
mov esi, ebp
sub esi, eax
inc ebp
jmp 0x77c1d1
mov eax, edx
shr eax, 3
sub ecx, eax
mov dword [esp + 0xc], ecx
and edx, 7
mov dword [esp + 8], edx
mov eax, dword [ecx]
mov dword [esp + 4], eax
add esi, 2
lea eax, [ebp + 2]
inc ebp
cmp ebp, dword [esp + 0x38]
mov ebp, eax
ja 0x77c32c
mov edi, dword [esp + 0x2c]
mov ebx, dword [esp + 0x30]
mov eax, dword [esp + 4]
mov ecx, edx
shl eax, cl
movzx ecx, byte [ebx + edi*4 + 3]
add edx, ecx
neg cl
shr eax, cl
movzx ecx, word [ebx + edi*4]
movzx ebx, byte [ebx + edi*4 + 2]
add eax, ecx
mov dword [esp + 8], edx
mov dword [esp + 0x2c], eax
mov byte [ebp - 1], bl
mov edx, dword [esp + 8]
cmp edx, 0x20
ja 0x77c547
mov ecx, dword [esp + 0xc]
cmp ecx, dword [esp + 0x14]
jae 0x77c246
mov edi, dword [esp + 0x10]
mov eax, ecx
sub eax, edi
je 0x77c25a
mov ebx, edx
shr ebx, 3
mov dword [esp + 0x20], ebp
mov ebp, ecx
sub ebp, ebx
cmp ebp, edi
mov ebp, dword [esp + 0x20]
cmovb ebx, eax
sub ecx, ebx
mov dword [esp + 0xc], ecx
shl ebx, 3
sub edx, ebx
jmp 0x77c254
mov eax, edx
shr eax, 3
sub ecx, eax
mov dword [esp + 0xc], ecx
and edx, 7
mov eax, dword [ecx]
mov dword [esp + 4], eax
cmp ebp, dword [esp + 0x38]
ja 0x77c32c
mov edi, dword [esp + 0x24]
mov ebx, dword [esp + 0x28]
mov eax, dword [esp + 4]
mov ecx, edx
shl eax, cl
movzx ecx, byte [ebx + edi*4 + 3]
add edx, ecx
neg cl
shr eax, cl
movzx ecx, word [ebx + edi*4]
movzx ebx, byte [ebx + edi*4 + 2]
add eax, ecx
mov dword [esp + 8], edx
mov dword [esp + 0x24], eax
mov byte [ebp], bl
mov edx, dword [esp + 8]
cmp edx, 0x20
ja 0x77c55c
mov ecx, dword [esp + 0xc]
cmp ecx, dword [esp + 0x14]
jae 0x77c1a6
mov edi, dword [esp + 0x10]
mov eax, ecx
sub eax, edi
je 0x77c1be
mov ebx, edx
shr ebx, 3
mov dword [esp + 0x20], ebp
mov ebp, ecx
sub ebp, ebx
cmp ebp, edi
mov ebp, dword [esp + 0x20]
cmovb ebx, eax
sub ecx, ebx
mov dword [esp + 0xc], ecx
shl ebx, 3
sub edx, ebx
jmp 0x77c1b4
mov esi, dword [esp + 0x40]
mov edi, dword [esp + 0x18]
mov dword [esp + 0xc], eax
mov dword [esp + 4], edi
mov dword [esp + 0x2c], ebp
mov dword [esp + 0x24], ebx
jmp 0x77c319
mov ebx, dword [esp + 0x18]
mov dword [esp + 0xc], eax
mov dword [esp + 8], edx
mov dword [esp + 4], ebx
mov dword [esp + 0x2c], edi
mov dword [esp + 0x24], esi
mov esi, dword [esp]
mov eax, dword [esp + 0x38]
add eax, 0xfffffffe
mov dword [esp + 0x38], eax
cmp esi, eax
mov eax, dword [esp + 0x68]
jbe 0x77c339
mov eax, 0xffffffba
add esp, 0x54
pop esi
pop edi
pop ebx
pop ebp
ret
mov ecx, esi
sub ecx, eax
inc esi
jmp 0x77c36a
mov eax, edx
shr eax, 3
sub ecx, eax
mov dword [esp + 0xc], ecx
and edx, 7
mov dword [esp + 8], edx
mov eax, dword [ecx]
mov dword [esp + 4], eax
mov ecx, dword [esp]
add ecx, 2
lea eax, [esi + 2]
inc esi
cmp esi, dword [esp + 0x38]
mov esi, eax
ja 0x77c32c
mov dword [esp], ecx
mov ecx, dword [esp + 0x2c]
mov ebx, dword [esp + 0x30]
mov edi, esi
movzx esi, word [ebx + ecx*4]
movzx eax, byte [ebx + ecx*4 + 2]
movzx ebp, byte [ebx + ecx*4 + 3]
mov ebx, dword [esp + 4]
add edx, ebp
mov ecx, edx
neg cl
shr ebx, cl
and ebx, dword [ebp*4 + 0xa992c8]
add ebx, esi
mov dword [esp + 8], edx
mov dword [esp + 0x2c], ebx
mov byte [edi - 1], al
mov edx, dword [esp + 8]
cmp edx, 0x20
ja 0x77c50d
mov ecx, dword [esp + 0xc]
cmp ecx, dword [esp + 0x14]
jae 0x77c3e9
mov esi, dword [esp + 0x10]
mov eax, ecx
sub eax, esi
je 0x77c3e5
mov ebx, edx
shr ebx, 3
mov ebp, ecx
sub ebp, ebx
cmp ebp, esi
cmovb ebx, eax
sub ecx, ebx
mov dword [esp + 0xc], ecx
shl ebx, 3
sub edx, ebx
mov eax, dword [ecx]
mov dword [esp + 4], eax
mov esi, edi
jmp 0x77c3ff
mov esi, edi
mov eax, edx
shr eax, 3
sub ecx, eax
mov dword [esp + 0xc], ecx
and edx, 7
mov eax, dword [ecx]
mov dword [esp + 4], eax
cmp esi, dword [esp + 0x38]
ja 0x77c32c
mov ecx, dword [esp + 0x24]
mov ebx, dword [esp + 0x28]
movzx esi, word [ebx + ecx*4]
movzx eax, byte [ebx + ecx*4 + 2]
movzx ebp, byte [ebx + ecx*4 + 3]
mov ebx, dword [esp + 4]
add edx, ebp
mov ecx, edx
neg cl
shr ebx, cl
and ebx, dword [ebp*4 + 0xa992c8]
add ebx, esi
mov esi, edi
mov dword [esp + 8], edx
mov dword [esp + 0x24], ebx
mov byte [edi], al
mov edx, dword [esp + 8]
cmp edx, 0x20
ja 0x77c522
mov ecx, dword [esp + 0xc]
cmp ecx, dword [esp + 0x14]
jae 0x77c340
mov esi, dword [esp + 0x10]
mov eax, ecx
sub eax, esi
je 0x77c488
mov ebx, edx
shr ebx, 3
mov ebp, ecx
sub ebp, ebx
cmp ebp, esi
cmovb ebx, eax
sub ecx, ebx
mov dword [esp + 0xc], ecx
shl ebx, 3
sub edx, ebx
mov dword [esp + 8], edx
mov eax, dword [ecx]
mov dword [esp + 4], eax
mov esi, edi
jmp 0x77c358
mov esi, dword [esp + 0x68]
jmp 0x77c4bf
mov eax, dword [esp + 0x68]
jmp 0x77c4f6
mov dword [esp + 8], edx
mov eax, dword [esp + 0x18]
mov dword [esp + 4], eax
mov dword [esp + 0x2c], edi
mov dword [esp + 0x24], esi
mov dword [esp + 0xc], 0xa99348
jmp 0x77c316
add esi, 0xfffffffe
mov eax, dword [esp + 0x18]
mov dword [esp + 4], eax
mov dword [esp + 0x2c], ebp
mov dword [esp + 0x24], ebx
mov dword [esp + 0xc], 0xa99348
jmp 0x77c319
mov dword [esp + 0x2c], esi
mov dword [esp + 0x24], edi
mov dword [esp + 0xc], 0xa99348
jmp 0x77c15d
add edi, 0xfffffffe
mov eax, edi
mov dword [esp + 0x2c], ebp
mov dword [esp + 0x24], ebx
mov dword [esp + 0xc], 0xa99348
mov ebp, eax
jmp 0x77c180
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x28]
lea eax, [ecx + eax*4]
add eax, 2
mov ecx, 2
jmp 0x77c538
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0x30]
lea eax, [ecx + eax*4]
add eax, 2
inc esi
mov edi, esi
mov ecx, 3
movzx eax, byte [eax]
mov byte [edi], al
mov eax, ecx
add eax, dword [esp]
jmp 0x77c331
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x28]
lea eax, [ecx + eax*4]
add eax, 2
mov ecx, 2
jmp 0x77c570
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0x30]
lea eax, [ecx + eax*4]
add eax, 2
inc ebp
mov ecx, 3
movzx eax, byte [eax]
mov byte [ebp], al
add ecx, esi
jmp 0x77c198