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

Disassembly:
sub esp, 0x17c
mov eax, dword [esp + 0x184]
mov cl, byte [eax]
push ebx
push ebp
inc eax
test cl, cl
push esi
push edi
mov byte [esp + 0x2c], cl
mov dword [esp + 0x18], eax
jns 0x77f325
test cl, 0x40
je 0x77f264
movzx dx, byte [eax]
inc eax
test dx, dx
jle 0x77f260
movzx edx, dx
dec edx
movzx esi, byte [eax]
lea eax, [eax + esi + 2]
jne 0x77f256
mov dword [esp + 0x18], eax
and cl, 0x3f
movzx ax, cl
movsx eax, ax
test eax, eax
jle 0x77fb3d
mov esi, dword [esp + 0x190]
mov dword [esp + 0x3c], eax
lea eax, [esp + 0x198]
push eax
lea ecx, [esp + 0x50]
push ecx
lea edx, [esp + 0x20]
push edx
push esi
call fcn.0077e6c0
mov eax, dword [esi + 0x2c]
mov ebp, dword [esp + 0x6c]
mov ecx, dword [esi + 4]
add eax, ebp
push eax
push ecx
call fcn.00771ec0
movzx ebx, word [esp + 0x78]
mov edx, dword [esi]
push ebx
push edx
call fcn.007720f0
mov edi, eax
mov eax, dword [esi + 4]
push ebx
push edi
push eax
call fcn.00771d20
mov ecx, dword [esp + 0x1dc]
mov edx, dword [esp + 0x84]
mov eax, dword [esp + 0x7c]
push ecx
mov ecx, dword [esp + 0x84]
push edx
mov edx, dword [esp + 0x80]
push eax
mov eax, dword [esp + 0x98]
push ecx
push edx
push eax
push ebp
push edi
push esi
call fcn.0077f220
mov ecx, dword [esi]
add esp, 0x50
push edi
push ecx
call fcn.007722f0
mov eax, dword [esp + 0x44]
add esp, 8
dec eax
mov dword [esp + 0x3c], eax
jne 0x77f281
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x17c
ret
mov ecx, dword [esp + 0x2c]
mov ebp, dword [esp + 0x190]
mov ebx, dword [ebp + 0xfc]
lea edx, [esp + 0x80]
push edx
lea eax, [esp + 0x1c]
push eax
xor esi, esi
push ecx
push ebp
mov word [esp + 0x90], si
mov word [esp + 0x112], si
mov word [esp + 0x194], si
mov word [esp + 0x196], si
call fcn.0077d5c0
mov al, byte [esp + 0x3c]
add esp, 0x10
test al, 8
je 0x77f396
mov eax, dword [esp + 0x18]
movzx cx, byte [eax]
inc eax
cmp cx, si
jle 0x77f392
movzx ecx, cx
dec ecx
movzx edx, byte [eax]
lea eax, [eax + edx + 2]
jne 0x77f388
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x1a4]
lea esi, [ebp + 0xe0]
mov dword [esp + 0x64], esi
mov ecx, 6
lea edi, [esp + 0x68]
rep movsd dword es:[edi], dword [esi]
mov ecx, dword [esp + 0x1a0]
push eax
mov eax, dword [esp + 0x1b0]
push ecx
mov ecx, dword [esp + 0x1b0]
mov esi, ebp
call fcn.0077e590
mov al, byte [ebp + 8]
add esp, 8
test al, al
mov byte [ebp + 0x34], 0
jbe 0x77f760
movzx edx, word [esp + 0x19c]
mov eax, dword [esp + 0x194]
lea ecx, [edx + eax - 1]
mov edx, dword [esp + 0x18]
xor eax, eax
mov dword [esp + 0x2c], ecx
mov word [esp + 0x188], ax
mov word [esp + 0x18a], ax
mov word [esp + 0x184], ax
mov word [esp + 0x186], ax
mov dword [esp + 0x30], edx
mov word [esp + 0x34], ax
mov dword [esp + 0x38], 0xffffffff
mov eax, dword [esp + 0x30]
mov ecx, dword [esp + 0x2c]
cmp eax, ecx
jb 0x77f44e
jne 0x77fb1a
cmp word [esp + 0x34], 0
jne 0x77fb1a
lea eax, [esp + 0x38]
push eax
lea edi, [esp + 0x50]
lea eax, [esp + 0x34]
lea ecx, [esp + 0x84]
call fcn.0077edf0
movsx eax, word [esp + 0x3c]
add esp, 4
sub eax, 0
je 0x77f616
dec eax
je 0x77f561
dec eax
jne 0x77f430
movsx eax, word [esp + 0x4e]
lea ecx, [esp + 0x14]
push ecx
lea edx, [esp + 0x20]
shl eax, 0x10
push edx
push eax
movsx eax, word [esp + 0x58]
shl eax, 0x10
mov esi, ebp
call fcn.0077e650
mov eax, dword [esp + 0x20]
mov edi, dword [esp + 0x28]
sar eax, 0x10
mov dword [esp + 0x1c], eax
movsx eax, word [esp + 0x5e]
lea ecx, [esp + 0x50]
push ecx
lea edx, [esp + 0x58]
shl eax, 0x10
push edx
push eax
movsx eax, word [esp + 0x68]
shl eax, 0x10
sar edi, 0x10
call fcn.0077e650
mov eax, dword [esp + 0x60]
sar eax, 0x10
mov dword [esp + 0x3c], eax
mov eax, dword [esp + 0x5c]
sar eax, 0x10
mov dword [esp + 0x40], eax
movsx eax, word [esp + 0x6e]
lea ecx, [esp + 0x54]
push ecx
lea edx, [esp + 0x5c]
shl eax, 0x10
push edx
push eax
movsx eax, word [esp + 0x78]
shl eax, 0x10
call fcn.0077e650
movsx ecx, word [esp + 0x34]
mov eax, dword [esp + 0x60]
mov esi, dword [esp + 0x64]
push 0
movsx edx, di
push ecx
push edx
sar eax, 0x10
push ebx
sar esi, 0x10
mov dword [esp + 0x54], eax
call fcn.0077a0c0
movsx eax, word [esp + 0x5c]
movsx ecx, word [esp + 0x58]
push 0
push eax
push ecx
push ebx
call fcn.0077a0c0
movsx edx, word [esp + 0x64]
add esp, 0x44
push 1
movsx eax, si
push edx
push eax
push ebx
call fcn.0077a0c0
add esp, 0x10
jmp 0x77f430
movsx eax, word [esp + 0x4c]
mov ecx, dword [esp + 0x1a0]
shl eax, 0x10
push eax
push ecx
mov dword [esp + 0x2c], eax
call fcn.007795d0
mov edx, dword [esp + 0x1ac]
mov edi, dword [esp + 0x1b0]
mov esi, eax
movsx eax, word [esp + 0x56]
shl eax, 0x10
push eax
push edx
add esi, edi
mov dword [esp + 0x30], eax
call fcn.007795d0
mov edx, dword [esp + 0x1bc]
mov edi, eax
mov eax, dword [ebp + 0xb4]
add edi, edx
push eax
push edi
mov dword [esp + 0x2c], edi
call fcn.007795d0
mov ecx, dword [ebp + 0x28]
add esi, eax
push ecx
push esi
mov dword [esp + 0x3c], esi
call fcn.007795d0
mov edx, dword [ebp + 0x28]
push edx
push edi
call fcn.007795d0
mov edx, dword [esp + 0x48]
lea eax, [esp + 0x3c]
push eax
mov eax, dword [esp + 0x50]
lea ecx, [esp + 0x48]
push ecx
push edx
mov esi, ebp
call fcn.0077e650
mov ecx, dword [esp + 0x48]
mov eax, dword [esp + 0x50]
sar ecx, 0x10
sar eax, 0x10
movsx ecx, cx
push 1
movsx edx, ax
push ecx
push edx
push ebx
call fcn.0077a0c0
add esp, 0x44
jmp 0x77f430
mov al, byte [ebp + 0x34]
test al, al
je 0x77f626
push ebx
call fcn.00779b80
add esp, 4
movsx edx, word [esp + 0x4e]
lea eax, [esp + 0x14]
push eax
movsx eax, word [esp + 0x50]
lea ecx, [esp + 0x20]
push ecx
shl edx, 0x10
push edx
shl eax, 0x10
mov esi, ebp
call fcn.0077e650
mov ecx, dword [esp + 0x20]
mov eax, dword [esp + 0x28]
sar ecx, 0x10
sar eax, 0x10
movsx ecx, cx
push 1
movsx edx, ax
push ecx
push edx
push ebx
call fcn.0077a0c0
add esp, 0x1c
mov byte [ebp + 0x34], 1
jmp 0x77f430
lea edx, [esp + 0x50]
push edx
call fcn.0077dae0
movsx edx, word [esp + 0x4c]
lea eax, [esp + 0x50]
push eax
movsx eax, word [esp + 0x70]
lea ecx, [esp + 0x5c]
shl edx, 0x10
push ecx
mov esi, ebp
shl eax, 0x10
push edx
call fcn.0077e650
mov eax, dword [esp + 0x5c]
movsx edx, word [esp + 0x70]
mov edi, dword [esp + 0x64]
sar eax, 0x10
mov dword [esp + 0x58], eax
add esp, 0x48
lea eax, [esp + 0x44]
push eax
movsx eax, word [esp + 0x28]
lea ecx, [esp + 0x4c]
shl edx, 0x10
push ecx
sar edi, 0x10
shl eax, 0x10
push edx
mov dword [esp + 0x3c], edi
call fcn.0077e650
mov eax, dword [esp + 0x54]
movsx edx, word [esp + 0x2c]
sar eax, 0x10
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0x50]
sar eax, 0x10
mov dword [esp + 0x34], eax
lea eax, [esp + 0x48]
push eax
movsx eax, word [esp + 0x48]
lea ecx, [esp + 0x50]
shl edx, 0x10
push ecx
push edx
shl eax, 0x10
call fcn.0077e650
mov eax, dword [esp + 0x54]
mov esi, dword [esp + 0x58]
sar eax, 0x10
mov dword [esp + 0x38], eax
movsx eax, word [esp + 0x28]
push 0
movsx ecx, di
push eax
push ecx
sar esi, 0x10
push ebx
mov dword [esp + 0x60], esi
call fcn.0077a0c0
movsx edx, word [esp + 0x50]
movsx eax, word [esp + 0x4c]
push 0
push edx
push eax
push ebx
call fcn.0077a0c0
movsx ecx, word [esp + 0x58]
push 1
movsx edx, si
push ecx
push edx
push ebx
call fcn.0077a0c0
add esp, 0x48
mov edi, edi
mov ecx, dword [esp + 0x18]
mov al, byte [ecx]
inc ecx
mov byte [esp + 0x2c], al
movzx eax, al
mov dword [esp + 0x18], ecx
mov ecx, eax
shr ecx, 4
cmp ecx, 7
ja case.default.0x77f780
jmp dword [ecx*4 + 0x77fb48]
lea eax, [esp + 0x10]
push eax
mov eax, dword [esp + 0x30]
lea ecx, [esp + 0x34]
push ecx
lea edx, [esp + 0x88]
push edx
push eax
lea ecx, [esp + 0x28]
push ecx
call fcn.0077dae0
movsx ecx, word [esp + 0x24]
lea edx, [esp + 0x28]
push edx
lea eax, [esp + 0x34]
push eax
movsx eax, word [esp + 0x4c]
shl ecx, 0x10
push ecx
shl eax, 0x10
mov esi, ebp
call fcn.0077e650
mov ecx, dword [esp + 0x34]
mov eax, dword [esp + 0x3c]
sar ecx, 0x10
sar eax, 0x10
movsx edx, cx
mov dword [esp + 0x50], eax
push 1
movsx eax, ax
push edx
push eax
push ebx
mov dword [esp + 0x40], ecx
call fcn.0077a0c0
add esp, 0x30
jmp 0x77f760
and eax, 0xf
mov ax, word [esp + eax*2 + 0x82]
lea ecx, [esp + 0x14]
push ecx
movsx ecx, word [esp + 0x18a]
mov word [esp + 0x188], ax
lea edx, [esp + 0x20]
movsx eax, ax
push edx
shl ecx, 0x10
push ecx
shl eax, 0x10
mov esi, ebp
call fcn.0077e650
mov ecx, dword [esp + 0x20]
mov eax, dword [esp + 0x28]
sar ecx, 0x10
sar eax, 0x10
movsx edx, cx
mov dword [esp + 0x3c], eax
push 1
movsx eax, ax
push edx
push eax
push ebx
mov dword [esp + 0x2c], ecx
call fcn.0077a0c0
add esp, 0x1c
jmp 0x77f760
and eax, 0xf
mov ax, word [esp + eax*2 + 0x104]
mov word [esp + 0x186], ax
movsx eax, ax
lea ecx, [esp + 0x14]
push ecx
lea edx, [esp + 0x20]
shl eax, 0x10
push edx
push eax
movsx eax, word [esp + 0x190]
shl eax, 0x10
mov esi, ebp
call fcn.0077e650
mov ecx, dword [esp + 0x20]
mov eax, dword [esp + 0x28]
sar ecx, 0x10
sar eax, 0x10
mov dword [esp + 0x1c], ecx
movsx ecx, cx
push 1
movsx edx, ax
push ecx
push edx
push ebx
mov dword [esp + 0x4c], eax
call fcn.0077a0c0
add esp, 0x1c
jmp 0x77f760
lea eax, [esp + 0x10]
push eax
mov eax, dword [esp + 0x30]
lea ecx, [esp + 0x34]
push ecx
lea edx, [esp + 0x88]
push edx
push eax
lea ecx, [esp + 0x28]
push ecx
call fcn.0077dae0
mov al, byte [ebp + 0x34]
add esp, 0x14
test al, al
je 0x77f8f4
push ebx
call fcn.00779b80
add esp, 4
movsx ecx, word [esp + 0x10]
lea edx, [esp + 0x14]
push edx
lea eax, [esp + 0x20]
push eax
movsx eax, word [esp + 0x38]
shl ecx, 0x10
push ecx
shl eax, 0x10
mov esi, ebp
call fcn.0077e650
mov ecx, dword [esp + 0x20]
mov eax, dword [esp + 0x28]
sar ecx, 0x10
sar eax, 0x10
movsx edx, cx
mov dword [esp + 0x3c], eax
push 1
movsx eax, ax
push edx
push eax
push ebx
mov dword [esp + 0x2c], ecx
call fcn.0077a0c0
add esp, 0x1c
mov byte [ebp + 0x34], 1
jmp 0x77f760
lea ecx, [esp + 0x10]
push ecx
mov ecx, dword [esp + 0x30]
lea edx, [esp + 0x34]
push edx
lea eax, [esp + 0x88]
push eax
push ecx
lea edx, [esp + 0x28]
push edx
call fcn.0077dae0
mov al, byte [ebp + 0x34]
add esp, 0x14
test al, al
je 0x77f97c
push ebx
call fcn.00779b80
add esp, 4
movsx edx, word [esp + 0x10]
lea eax, [esp + 0x14]
push eax
movsx eax, word [esp + 0x34]
lea ecx, [esp + 0x20]
push ecx
shl edx, 0x10
push edx
shl eax, 0x10
mov esi, ebp
call fcn.0077e650
mov ecx, dword [esp + 0x20]
mov eax, dword [esp + 0x28]
sar ecx, 0x10
sar eax, 0x10
mov dword [esp + 0x1c], ecx
movsx ecx, cx
push 1
movsx edx, ax
push ecx
push edx
push ebx
mov dword [esp + 0x4c], eax
call fcn.0077a0c0
add esp, 0x1c
mov byte [ebp + 0x34], 1
jmp 0x77f760
lea eax, [esp + 0x10]
push eax
lea ecx, [esp + 0x34]
push ecx
lea edx, [esp + 0x88]
push edx
lea eax, [esp + 0x24]
push 0xe
push eax
call fcn.0077dae0
lea ecx, [esp + 0x3c]
push ecx
lea edx, [esp + 0x3c]
push edx
lea eax, [esp + 0x9c]
push eax
lea ecx, [esp + 0x38]
push 8
push ecx
call fcn.0077dae0
lea edx, [esp + 0x48]
push edx
lea eax, [esp + 0x64]
push eax
lea ecx, [esp + 0xb0]
push ecx
push 0xb
jmp 0x77f672
lea eax, [esp + 0x10]
push eax
lea ecx, [esp + 0x34]
push ecx
lea edx, [esp + 0x88]
push edx
lea eax, [esp + 0x24]
push 0xb
push eax
call fcn.0077dae0
lea ecx, [esp + 0x3c]
push ecx
lea edx, [esp + 0x3c]
push edx
lea eax, [esp + 0x9c]
push eax
lea ecx, [esp + 0x38]
push 2
push ecx
call fcn.0077dae0
lea edx, [esp + 0x48]
push edx
lea eax, [esp + 0x64]
push eax
lea ecx, [esp + 0xb0]
push ecx
push 0xe
jmp 0x77f672
lea eax, [esp + 0x10]
push eax
mov eax, dword [esp + 0x30]
lea ecx, [esp + 0x34]
push ecx
lea edx, [esp + 0x88]
push edx
push eax
lea ecx, [esp + 0x28]
push ecx
call fcn.0077dae0
mov eax, dword [esp + 0x2c]
mov dl, byte [eax]
inc eax
mov dword [esp + 0x2c], eax
lea eax, [esp + 0x3c]
push eax
mov byte [esp + 0x44], dl
mov eax, dword [esp + 0x44]
lea ecx, [esp + 0x3c]
push ecx
lea edx, [esp + 0x9c]
push edx
push eax
lea ecx, [esp + 0x3c]
push ecx
call fcn.0077dae0
lea edx, [esp + 0x48]
push edx
lea eax, [esp + 0x64]
push eax
xor eax, eax
mov al, byte [esp + 0x5c]
shr al, 4
lea ecx, [esp + 0xb0]
push ecx
push eax
jmp 0x77f672
mov al, byte [ebp + 0x34]
test al, al
je 0x77fb00
push ebx
call fcn.00779b80
add esp, 4
mov byte [ebp + 0x34], 0
mov edi, dword [esp + 0x64]
mov ecx, 6
lea esi, [esp + 0x68]
rep movsd dword es:[edi], dword [esi]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x17c
ret
mov al, byte [ebp + 0x34]
test al, al
mov edi, dword [esp + 0x64]
mov ecx, 6
lea esi, [esp + 0x68]
rep movsd dword es:[edi], dword [esi]
je 0x77fb3d
push ebx
call fcn.00779b80
add esp, 4
mov byte [ebp + 0x34], 0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x17c
ret