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

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0xac
mov edi, dword [esp + 0xc8]
mov eax, 0xffffffb8
cmp edi, 0x1ffff
ja 0x777758
cmp edi, 3
jae 0x777763
mov eax, 0xffffffec
add esp, 0xac
pop esi
pop edi
pop ebx
pop ebp
ret
mov ebp, dword [esp + 0xc4]
movzx esi, byte [ebp]
mov ebx, esi
shr ebx, 6
jmp dword [ebx*4 + 0xa984e0]
mov dword [esp + 0x14], esi
cmp edi, 5
jb case.default.0x777773
mov eax, dword [esp + 0x14]
shr eax, 4
and eax, 3
movzx ebx, byte [ebp + 1]
cmp eax, 2
je 0x777d1a
cmp eax, 3
jne 0x777d6e
mov esi, dword [esp + 0x14]
and esi, 0xf
shl esi, 0xe
shl ebx, 6
or ebx, esi
movzx edi, byte [ebp + 2]
mov eax, edi
shr eax, 2
or eax, ebx
cmp eax, 0x20000
ja case.default.0x777773
mov ebx, eax
and edi, 3
shl edi, 0x10
movzx eax, byte [ebp + 3]
shl eax, 8
or eax, edi
movzx esi, byte [ebp + 4]
lea ebp, [esi + eax]
add ebp, 5
mov dword [esp], ebp
cmp ebp, dword [esp + 0xc8]
ja case.default.0x777773
mov dword [esp + 8], edx
or eax, esi
mov edx, 5
mov ebp, dword [esp + 0xc4]
jmp 0x777dc6
mov ebx, esi
shr ebx, 4
and ebx, 3
cmp ebx, 2
mov dword [esp + 8], edx
je 0x777974
cmp ebx, 3
jne 0x7779a5
mov ebx, edi
mov edx, esi
and edx, 0xf
shl edx, 0x10
movzx esi, byte [ebp + 1]
shl esi, 8
or esi, edx
movzx edx, byte [ebp + 2]
or edx, esi
mov esi, 3
jmp 0x7779b1
mov eax, esi
shr eax, 4
and eax, 3
cmp eax, 2
je 0x77798b
cmp eax, 3
jne 0x777a4c
cmp edi, 3
je case.default.0x777773
mov edi, edx
and esi, 0xf
shl esi, 0x10
movzx eax, byte [ebp + 1]
shl eax, 8
or eax, esi
movzx esi, byte [ebp + 2]
or esi, eax
mov edx, ebp
mov eax, 3
cmp esi, 0x20000
jbe 0x777a58
jmp case.default.0x777773
mov eax, esi
and eax, 0x30
cmp eax, 0x10
jne case.default.0x777773
cmp dword [ecx + 0x5450], 0
je 0x777d10
mov dword [esp + 0x14], esi
movzx eax, byte [ebp + 1]
mov dword [esp + 0x30], eax
and eax, 3
shl eax, 8
movzx esi, byte [ebp + 2]
lea ebx, [eax + esi]
add ebx, 3
cmp ebx, edi
ja case.default.0x777773
movzx edi, byte [ecx + 0x140d]
shl edi, 8
cmp edi, 0x100
jne case.default.0x777773
mov dword [esp], ebx
mov dword [esp + 8], edx
mov edx, dword [esp + 0x14]
and edx, 0xf
shl edx, 6
mov ebx, dword [esp + 0x30]
shr ebx, 2
or ebx, edx
or eax, esi
lea edx, [ecx + 0x54cc]
mov dword [esp + 0xc], ecx
lea edi, [ecx + 0x140c]
lea esi, [ebp + 3]
mov ebp, ebx
mov ebx, edx
mov ecx, edx
mov edx, ebp
push edi
push eax
push esi
call fcn.007760d0
add esp, 0xc
cmp eax, 0xffffff88
ja case.default.0x777773
mov ecx, dword [esp + 0xc]
mov dword [ecx + 0x54b8], ebx
mov dword [ecx + 0x54c8], ebp
mov dword [ecx + ebp + 0x54d0], 0
mov dword [ecx + ebp + 0x54cc], 0
mov edx, dword [esp + 8]
mov eax, 0xffffffb8
mov edi, dword [esp + 0xc8]
jmp 0x777e30
mov edx, esi
mov ebx, edi
and edx, 0xf
shl edx, 8
movzx esi, byte [ebp + 1]
or edx, esi
mov esi, 2
jmp 0x7779b1
mov edi, edx
and esi, 0xf
shl esi, 8
movzx eax, byte [ebp + 1]
or esi, eax
mov edx, ebp
mov eax, 2
jmp 0x777a58
mov ebx, edi
mov edx, esi
and edx, 0x1f
mov esi, 1
lea ebp, [esi + edx]
lea edi, [esi + edx]
add edi, 8
cmp edi, ebx
mov edi, ebx
jbe 0x777a27
cmp ebp, edi
ja case.default.0x777773
mov dword [esp], ebp
mov ebx, edi
lea edi, [ecx + 0x54cc]
add esi, dword [esp + 0xc4]
mov ebp, edx
push edx
push esi
push edi
mov esi, ecx
call sub.api_ms_win_crt_private_l1_1_0.dll_memcpy
mov eax, 0xffffffb8
mov ecx, esi
mov edx, dword [esp + 0x14]
add esp, 0xc
mov dword [esi + 0x54b8], edi
mov edi, ebx
mov ebx, dword [esp]
mov dword [esi + 0x54c8], ebp
mov dword [esi + ebp + 0x54d0], 0
mov dword [esi + ebp + 0x54cc], 0
mov esi, edi
sub esi, ebx
je 0x777758
jmp 0x777aa6
add esi, dword [esp + 0xc4]
mov dword [ecx + 0x54b8], esi
mov dword [ecx + 0x54c8], edx
mov ebx, ebp
mov edx, dword [esp + 8]
mov esi, edi
sub esi, ebx
je 0x777758
jmp 0x777aa6
mov edi, edx
and esi, 0x1f
mov edx, ebp
mov eax, 1
mov dword [esp], eax
mov ebp, esi
lea ebx, [ecx + 0x54cc]
lea eax, [esi + 8]
mov esi, dword [esp]
movzx esi, byte [edx + esi]
push eax
push esi
push ebx
mov esi, edi
mov edi, ecx
call sub.api_ms_win_crt_string_l1_1_0.dll_memset
mov eax, 0xffffffb8
mov ecx, edi
mov edi, dword [esp + 0xd4]
mov edx, esi
add esp, 0xc
mov dword [ecx + 0x54b8], ebx
mov ebx, dword [esp]
mov dword [ecx + 0x54c8], ebp
inc ebx
mov esi, edi
sub esi, ebx
je 0x777758
add ebx, dword [esp + 0xc4]
mov edi, dword [esp + 0xc0]
add edi, edx
mov dword [esp + 0x30], edi
mov ebp, dword [ecx + 0x54b8]
mov edi, dword [ecx + 0x54c8]
mov dword [esp + 0x14], ebp
add edi, ebp
mov dword [esp], ebx
movzx ebx, byte [ebx]
test ebx, ebx
je 0x777c8c
mov dword [esp + 8], edx
mov ebp, dword [ecx + 0x5414]
mov dword [esp + 0x1c], ebp
mov edx, dword [ecx + 0x5418]
mov ebp, dword [ecx + 0x541c]
mov dword [esp + 0xa8], ebp
mov ebp, dword [ecx + 0x5454]
mov dword [esp + 4], ebp
test bl, bl
mov dword [esp + 0x34], ebx
js 0x777cc7
mov dword [esp + 0x8c], edx
mov dword [esp + 0x74], edi
mov edx, dword [esp]
lea ebp, [edx + 1]
mov ebx, dword [esp + 0xc4]
add ebx, dword [esp + 0xc8]
lea esi, [ebp + 4]
cmp esi, ebx
ja 0x777758
mov edi, ebx
movzx ebx, byte [ebp]
mov edx, ebx
shr edx, 6
inc ebp
mov eax, edi
sub eax, ebp
mov dword [esp + 0xc], ecx
mov esi, dword [esp + 4]
push esi
push 6
push 0xa987a0
push eax
push ebp
push 9
push 0x23
call fcn.0077aa70
add esp, 0x1c
cmp eax, 0xffffff88
ja case.default.0x777773
mov ecx, dword [esp + 0xc]
add ecx, 0x804
add ebp, eax
mov edx, ebx
shr edx, 4
and edx, 3
mov eax, edi
sub eax, ebp
push esi
push 5
push 0xa987e8
push eax
push ebp
push 8
push 0x1c
call fcn.0077aa70
add esp, 0x1c
cmp eax, 0xffffff88
ja case.default.0x777773
mov esi, dword [esp + 0xc]
lea ecx, [esi + 0xc08]
shr ebx, 2
and ebx, 3
add ebp, eax
mov eax, edi
sub eax, ebp
mov edx, ebx
push dword [esp + 4]
push 6
push 0xa98822
push eax
push ebp
push 9
push 0x34
call fcn.0077aa70
add esp, 0x1c
mov ecx, eax
mov eax, 0xffffffec
cmp ecx, 0xffffff88
mov edx, dword [esp + 8]
mov ebx, dword [esp + 0x14]
ja 0x777758
add ebp, ecx
mov eax, ebp
sub eax, dword [esp]
cmp eax, 0xffffff88
ja 0x777758
mov dword [esp], ebp
cmp dword [esp + 0x34], 0
je 0x777e9b
mov dword [esi + 0x5454], 1
mov eax, dword [esi + 0x542c]
mov dword [esp + 0x70], eax
movsd xmm0, qword [esi + 0x5424]
movsd qword [esp + 0x68], xmm0
mov ecx, edi
mov esi, dword [esp]
sub ecx, esi
je case.default.0x777773
mov dword [esp + 0x4c], esi
cmp ecx, 4
jb 0x777ea6
lea eax, [esi + ecx]
add eax, 0xfffffffc
mov dword [esp + 0x48], eax
mov edi, dword [esi + ecx - 4]
mov dword [esp + 0x40], edi
cmp edi, 0x1000000
jb case.default.0x777773
cmp ecx, 0xffffff88
ja case.default.0x777773
add ecx, 0xfffffffc
mov dword [esp + 4], ecx
mov eax, edi
shr eax, 0x18
bsr eax, eax
not eax
add eax, 9
jmp 0x777efe
mov ebp, edx
mov ebx, dword [esp + 0x14]
mov ecx, edi
sub edi, ebx
mov esi, dword [esp + 0x30]
sub esi, ebp
mov eax, 0xffffffba
cmp edi, esi
ja 0x777758
cmp ecx, ebx
je 0x777cbe
push edi
push ebx
push ebp
mov ebx, edx
call sub.api_ms_win_crt_private_l1_1_0.dll_memcpy
mov edx, ebx
add esp, 0xc
add ebp, edi
mov eax, ebp
sub eax, edx
jmp 0x777758
cmp ebx, 0xff
je 0x777e42
cmp esi, 2
mov ebx, dword [esp + 0xc4]
jl 0x777758
mov dword [esp + 0x8c], edx
mov dword [esp + 0x74], edi
mov edi, dword [esp + 0x34]
shl edi, 8
mov edx, dword [esp]
lea ebp, [edx + 2]
movzx esi, byte [edx + 1]
add edi, esi
add edi, 0xffff8000
mov dword [esp + 0x34], edi
jmp 0x777b29
mov eax, 0xffffffe2
jmp 0x777758
mov dword [esp + 0x30], ebx
movzx eax, byte [ebp + 2]
mov dword [esp + 4], eax
and eax, 0x3f
shl eax, 8
movzx ebx, byte [ebp + 3]
mov dword [esp + 0x34], ebx
add ebx, eax
add ebx, 4
mov dword [esp], ebx
cmp dword [esp], edi
ja case.default.0x777773
mov dword [esp + 8], edx
mov esi, dword [esp + 0x14]
and esi, 0xf
shl esi, 0xa
mov edx, dword [esp + 0x30]
lea edx, [esi + edx*4]
mov ebx, dword [esp + 4]
shr ebx, 6
or ebx, edx
add eax, dword [esp + 0x34]
mov edx, 4
jmp 0x777dc6
mov esi, ebx
and esi, 3
shl esi, 8
movzx eax, byte [ebp + 2]
mov dword [esp + 4], eax
mov dword [esp + 0x30], ebx
mov ebx, dword [esp + 4]
add ebx, esi
add ebx, 3
mov dword [esp], ebx
cmp dword [esp], edi
ja case.default.0x777773
mov eax, esi
mov dword [esp + 8], edx
mov ebx, dword [esp + 0x14]
mov edx, ebx
and edx, 0xf
shl edx, 6
mov edi, dword [esp + 0x30]
shr edi, 2
or edi, edx
add eax, dword [esp + 4]
mov edx, 3
test bl, 0x10
jne 0x777e76
mov ebx, edi
lea edi, [ecx + 0x140c]
mov esi, ecx
add ecx, 0x54cc
add edx, ebp
push eax
push edx
push ebx
push ecx
push edi
call fcn.00777070
add esp, 0x14
cmp eax, 0xffffff88
mov edx, dword [esp + 8]
mov eax, 0xffffffb8
mov edi, dword [esp + 0xc8]
ja case.default.0x777773
mov ecx, esi
add esi, 0x54cc
mov dword [ecx + 0x54b8], esi
mov dword [ecx + 0x54c8], ebx
mov dword [ecx + 0x5450], 1
mov dword [ecx + ebx + 0x54d0], 0
mov dword [ecx + ebx + 0x54cc], 0
mov ebx, dword [esp]
mov esi, edi
sub esi, ebx
je 0x777758
jmp 0x777aa6
cmp esi, 3
mov ebx, dword [esp + 0xc4]
jl 0x777758
mov dword [esp + 0x8c], edx
mov dword [esp + 0x74], edi
mov edx, dword [esp]
lea ebp, [edx + 3]
movzx esi, word [edx + 1]
add esi, 0x7f00
mov dword [esp + 0x34], esi
jmp 0x777b29
lea edx, [ecx + 0x140c]
mov esi, ecx
add ecx, 0x54cc
lea ebx, [ebp + 3]
push eax
push ebx
push edi
push ecx
push edx
call fcn.00774c50
add esp, 0x14
mov ebx, edi
jmp 0x777de3
mov ebp, edx
mov edi, dword [esp + 0x74]
jmp 0x777c92
mov dword [esp + 0x48], esi
movzx edi, byte [esi]
mov dword [esp + 0x40], edi
cmp ecx, 2
je 0x777ec8
mov edx, ecx
cmp ecx, 3
jne 0x777ed7
movzx eax, byte [esi + 2]
shl eax, 0x10
or edi, eax
jmp 0x777eca
mov edx, ecx
movzx eax, byte [esi + 1]
shl eax, 8
add edi, eax
mov dword [esp + 0x40], edi
movzx eax, byte [esi + edx - 1]
test eax, eax
je case.default.0x777773
bsr eax, eax
xor eax, 0x1f
shl edx, 3
sub eax, edx
add eax, 9
mov dword [esp + 0x44], eax
mov dword [esp + 4], 0
mov esi, edi
mov ecx, eax
shl esi, cl
mov ecx, dword [esp + 0xc]
movzx ebx, word [ecx]
shr esi, 1
mov cl, 0x1f
sub cl, bl
shr esi, cl
mov ch, 0x1f
add eax, ebx
mov dword [esp + 0x50], esi
cmp eax, 0x20
ja 0x777f86
mov edx, dword [esp + 4]
cmp edx, 4
jge 0x777f5f
mov ebx, dword [esp]
lea esi, [ebx + edx]
mov ecx, esi
sub ecx, ebx
je 0x778b18
mov edi, eax
shr edi, 3
sub esi, edi
mov edx, dword [esp]
cmp esi, edx
cmovb edi, ecx
mov ecx, dword [esp + 4]
sub ecx, edi
mov dword [esp + 4], ecx
add ecx, edx
mov dword [esp + 0x48], ecx
shl edi, 3
sub eax, edi
jmp 0x777f76
mov ecx, eax
shr ecx, 3
sub edx, ecx
mov dword [esp + 4], edx
mov ecx, dword [esp]
add ecx, edx
mov dword [esp + 0x48], ecx
and eax, 7
mov ecx, dword [esp + 4]
mov edx, dword [esp]
mov edi, dword [edx + ecx]
mov dword [esp + 0x40], edi
mov ch, 0x1f
mov ebx, dword [esp + 0xc]
lea edx, [ebx + 4]
mov esi, edi
mov cl, al
shl esi, cl
mov dword [esp + 0x54], edx
movzx ebx, word [ebx + 0x804]
shr esi, 1
sub ch, bl
mov cl, ch
shr esi, cl
add eax, ebx
mov dword [esp + 0x58], esi
cmp eax, 0x20
ja 0x778014
mov edx, dword [esp + 4]
cmp edx, 4
jge 0x777fef
mov esi, dword [esp]
add edx, esi
mov ecx, edx
sub ecx, esi
je 0x778b25
mov esi, eax
shr esi, 3
sub edx, esi
mov edi, dword [esp]
cmp edx, edi
cmovb esi, ecx
mov ecx, dword [esp + 4]
sub ecx, esi
mov dword [esp + 4], ecx
add ecx, edi
mov dword [esp + 0x48], ecx
shl esi, 3
sub eax, esi
jmp 0x778006
mov ecx, eax
shr ecx, 3
sub edx, ecx
mov dword [esp + 4], edx
mov ecx, dword [esp]
add ecx, edx
mov dword [esp + 0x48], ecx
and eax, 7
mov ecx, dword [esp + 4]
mov edx, dword [esp]
mov edi, dword [edx + ecx]
mov dword [esp + 0x40], edi
mov edx, dword [esp + 8]
mov esi, dword [esp + 0xc]
lea ecx, [esi + 0x808]
mov dword [esp + 0x5c], ecx
mov ecx, eax
shl edi, cl
movzx ebx, word [esi + 0xc08]
shr edi, 1
mov cl, 0x1f
sub cl, bl
shr edi, cl
add eax, ebx
mov dword [esp + 0x44], eax
mov dword [esp + 0x60], edi
cmp eax, 0x20
ja 0x778099
mov edx, dword [esp + 4]
mov ecx, dword [esp]
add ecx, edx
cmp edx, 4
jge 0x77807d
mov esi, ecx
sub esi, dword [esp]
mov edx, dword [esp + 8]
je 0x778099
mov edx, eax
shr edx, 3
mov edi, ecx
sub edi, edx
cmp edi, dword [esp]
cmovb edx, esi
sub ecx, edx
mov dword [esp + 0x48], ecx
shl edx, 3
sub eax, edx
jmp 0x77808b
mov edx, eax
shr edx, 3
sub ecx, edx
mov dword [esp + 0x48], ecx
and eax, 7
mov dword [esp + 0x44], eax
mov eax, dword [ecx]
mov dword [esp + 0x40], eax
mov edx, dword [esp + 8]
mov ebp, dword [esp + 0xc]
lea eax, [ebp + 0x5424]
mov dword [esp + 0x98], eax
add ebp, 0xc0c
mov dword [esp + 0x64], ebp
mov eax, dword [esp + 0x30]
lea ecx, [eax - 8]
mov dword [esp + 0x38], ecx
add eax, 0xfffffff3
mov dword [esp + 0x9c], eax
mov eax, dword [esp + 0x1c]
lea ecx, [eax + 8]
mov dword [esp + 0x94], ecx
lea ecx, [eax + 0x10]
mov dword [esp + 0x7c], ecx
add eax, 0x18
mov dword [esp + 0x90], eax
mov dword [esp], edx
mov ebx, dword [esp + 0x14]
jmp 0x77811a
push ebp
push eax
push ebx
call sub.api_ms_win_crt_private_l1_1_0.dll_memmove
add esp, 0xc
mov edx, dword [esp + 8]
mov ebx, dword [esp + 0x14]
add ebx, dword [esp + 0x84]
mov ecx, dword [esp + 0x24]
mov eax, ecx
cmp ecx, 0xffffff89
jae 0x777758
mov ebp, dword [esp]
mov esi, dword [esp + 0x44]
cmp esi, 0x21
jae 0x778aea
mov edi, dword [esp + 0x48]
mov ecx, dword [esp + 0x4c]
lea eax, [ecx + 4]
mov dword [esp + 0x10], eax
cmp edi, eax
mov dword [esp + 0x18], ecx
mov dword [esp + 0x14], ebx
jae 0x77816e
mov eax, edi
sub eax, ecx
je 0x778186
mov ecx, esi
shr ecx, 3
mov ebx, edi
sub edi, ecx
cmp edi, dword [esp + 0x18]
mov edi, ebx
mov ebx, dword [esp + 0x14]
cmovb ecx, eax
sub edi, ecx
mov dword [esp + 0x48], edi
shl ecx, 3
sub esi, ecx
jmp 0x77817c
mov eax, esi
shr eax, 3
sub edi, eax
mov dword [esp + 0x48], edi
and esi, 7
mov dword [esp + 0x44], esi
mov eax, dword [edi]
mov dword [esp + 0x40], eax
sub dword [esp + 0x34], 1
jb 0x778afa
mov dword [esp], edi
mov eax, dword [esp + 0x50]
mov ecx, dword [esp + 0x54]
mov dword [esp + 0xa4], eax
mov dword [esp + 0xa0], ecx
movzx eax, byte [ecx + eax*4 + 2]
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x60]
mov ecx, dword [esp + 0x64]
mov dword [esp + 0x3c], eax
mov dword [esp + 0x80], ecx
movzx eax, byte [ecx + eax*4 + 2]
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x58]
mov ecx, dword [esp + 0x5c]
movzx ebx, byte [ecx + eax*4 + 2]
test ebx, ebx
mov dword [esp + 0x84], eax
mov dword [esp + 0x28], ecx
je 0x77824a
mov edi, dword [esp + 0x40]
mov eax, esi
mov ecx, eax
shl edi, cl
shr edi, 1
mov cl, 0x1f
sub cl, bl
shr edi, cl
add eax, ebx
mov dword [esp + 0x44], eax
mov esi, eax
cmp eax, 0x20
ja 0x77826d
mov ecx, dword [esp]
cmp ecx, dword [esp + 0x10]
jae 0x77824e
mov dword [esp + 0xc], edi
mov eax, ecx
sub eax, dword [esp + 0x18]
je 0x7782b3
mov dword [esp + 4], esi
shr esi, 3
mov edi, ecx
sub edi, esi
cmp edi, dword [esp + 0x18]
cmovb esi, eax
mov eax, dword [esp + 4]
sub ecx, esi
mov dword [esp + 0x48], ecx
shl esi, 3
sub eax, esi
mov edi, dword [esp + 0xc]
jmp 0x77825e
xor edi, edi
jmp 0x778279
mov eax, esi
shr eax, 3
sub ecx, eax
mov eax, esi
mov dword [esp + 0x48], ecx
and eax, 7
mov esi, eax
mov dword [esp + 0x44], eax
mov dword [esp], ecx
mov eax, dword [ecx]
mov dword [esp + 0x40], eax
add edi, dword [ebx*4 + 0xa98b54]
cmp ebx, 1
jne 0x7782c3
mov ecx, 1
sub ecx, edi
cmp edi, 2
cmovae ecx, edi
cmp dword [esp + 0x20], 0
cmovne ecx, edi
test ecx, ecx
je 0x7782ad
mov edi, dword [esp + ecx*4 + 0x68]
cmp ecx, 1
je 0x7782a3
mov eax, dword [esp + 0x6c]
mov dword [esp + 0x70], eax
mov eax, dword [esp + 0x68]
mov dword [esp + 0x6c], eax
jmp 0x7782cf
mov edi, dword [esp + 0x68]
jmp 0x7782d3
mov edi, dword [esp + 0xc]
add edi, dword [ebx*4 + 0xa98b54]
cmp ebx, 1
je 0x778279
movsd xmm0, qword [esp + 0x68]
movsd qword [esp + 0x6c], xmm0
mov dword [esp + 0x68], edi
mov eax, dword [esp + 0x24]
mov ebx, dword [eax*4 + 0xa9891c]
mov dword [esp + 4], 0
cmp al, 0x20
jb 0x778308
mov eax, dword [esp + 0x40]
mov ecx, esi
shl eax, cl
shr eax, 1
mov cl, 0x1f
sub cl, bl
shr eax, cl
mov dword [esp + 4], eax
mov eax, esi
add eax, ebx
mov esi, eax
mov dword [esp + 0x44], eax
mov ecx, dword [esp + 0x20]
mov eax, dword [ecx*4 + 0xa9888c]
mov dword [esp + 0x2c], eax
add ebx, eax
mov eax, dword [esp + 0x24]
mov eax, dword [eax*4 + 0xa98a80]
cmp ebx, 0x19
mov dword [esp + 0xc], edi
mov dword [esp + 0x78], eax
jb 0x77836e
mov ebx, esi
cmp esi, 0x20
mov esi, dword [esp]
ja 0x77838d
cmp esi, dword [esp + 0x10]
jae 0x778375
mov eax, esi
sub eax, dword [esp + 0x18]
je 0x77838d
mov ecx, ebx
shr ecx, 3
mov edi, dword [esp]
sub edi, ecx
cmp edi, dword [esp + 0x18]
mov esi, dword [esp]
cmovb ecx, eax
sub esi, ecx
mov dword [esp + 0x48], esi
shl ecx, 3
sub ebx, ecx
mov ecx, dword [esp + 0x20]
jmp 0x778383
mov ebx, esi
mov esi, dword [esp]
jmp 0x77838d
mov eax, ebx
shr eax, 3
sub esi, eax
mov dword [esp + 0x48], esi
and ebx, 7
mov dword [esp + 0x44], ebx
mov eax, dword [esi]
mov dword [esp + 0x40], eax
mov eax, dword [ecx*4 + 0xa989f0]
mov dword [esp + 0x88], eax
mov dword [esp + 0x20], 0
cmp cl, 0x10
jb 0x7783ca
mov eax, dword [esp + 0x40]
mov ecx, ebx
shl eax, cl
shr eax, 1
mov cl, 0x1f
mov edi, ebx
mov ebx, dword [esp + 0x2c]
sub cl, bl
shr eax, cl
mov dword [esp + 0x20], eax
add edi, ebx
mov ebx, edi
mov dword [esp + 0x44], edi
cmp ebx, 0x20
mov dword [esp + 0x2c], ebp
jbe 0x7783d8
mov dword [esp], esi
jmp 0x77841e
cmp esi, dword [esp + 0x10]
jae 0x778403
mov eax, esi
mov ebp, dword [esp + 0x18]
sub eax, ebp
je 0x7783d3
mov ecx, ebx
shr ecx, 3
mov edi, esi
sub edi, ecx
cmp edi, ebp
cmovb ecx, eax
sub esi, ecx
mov dword [esp + 0x48], esi
shl ecx, 3
sub ebx, ecx
jmp 0x778411
mov eax, ebx
shr eax, 3
sub esi, eax
mov dword [esp + 0x48], esi
and ebx, 7
mov dword [esp + 0x44], ebx
mov dword [esp], esi
mov eax, dword [esi]
mov dword [esp + 0x40], eax
mov eax, ebx
mov ebp, dword [esp + 0x40]
mov ebx, ebp
mov ecx, eax
shl ebx, cl
mov esi, dword [esp + 0xa4]
mov edi, dword [esp + 0xa0]
movzx ecx, byte [edi + esi*4 + 3]
mov dword [esp + 0x24], ecx
shr ebx, 1
mov cl, 0x1f
sub cl, byte [esp + 0x24]
shr ebx, cl
movzx ecx, word [edi + esi*4]
add ebx, ecx
add eax, dword [esp + 0x24]
mov dword [esp + 0x44], eax
mov dword [esp + 0x50], ebx
mov ecx, dword [esp + 0x3c]
mov esi, dword [esp + 0x80]
movzx edi, word [esi + ecx*4]
mov dword [esp + 0x24], edi
movzx ebx, byte [esi + ecx*4 + 3]
mov edi, ebp
mov ecx, eax
shl edi, cl
shr edi, 1
mov cl, 0x1f
sub cl, bl
shr edi, cl
add edi, dword [esp + 0x24]
add eax, ebx
mov dword [esp + 0x44], eax
mov dword [esp + 0x60], edi
cmp eax, 0x20
mov ecx, eax
ja 0x7784e2
mov edi, dword [esp]
cmp edi, dword [esp + 0x10]
jae 0x7784ca
mov eax, edi
mov ebx, dword [esp + 0x18]
sub eax, ebx
je 0x7784e2
mov esi, ecx
shr esi, 3
mov edi, dword [esp]
sub edi, esi
cmp edi, ebx
mov edi, dword [esp]
cmovb esi, eax
sub edi, esi
mov dword [esp + 0x48], edi
shl esi, 3
sub ecx, esi
jmp 0x7784d8
mov eax, ecx
shr eax, 3
sub edi, eax
mov dword [esp + 0x48], edi
and ecx, 7
mov dword [esp + 0x44], ecx
mov ebp, dword [edi]
mov dword [esp + 0x40], ebp
shl ebp, cl
mov esi, ecx
mov eax, dword [esp + 0x84]
mov edi, dword [esp + 0x28]
movzx ebx, byte [edi + eax*4 + 3]
shr ebp, 1
mov cl, 0x1f
sub cl, bl
shr ebp, cl
movzx eax, word [edi + eax*4]
add ebp, eax
mov eax, dword [esp + 0x88]
mov ecx, dword [esp + 0x20]
add eax, ecx
add esi, ebx
mov ebx, eax
mov dword [esp + 0x44], esi
mov dword [esp + 0x58], ebp
lea edi, [eax + 8]
mov ecx, dword [esp + 0x30]
mov ebp, dword [esp + 0x2c]
sub ecx, ebp
mov eax, 0xffffffba
cmp edi, ecx
ja 0x777758
mov edi, dword [esp + 4]
mov esi, dword [esp + 0x78]
add esi, edi
mov dword [esp + 0x28], esi
add esi, ebx
mov dword [esp + 0x24], esi
cmp esi, ecx
mov edi, dword [esp + 0x14]
ja 0x777758
mov eax, dword [esp + 0x74]
sub eax, edi
cmp eax, ebx
jb case.default.0x777773
lea eax, [ebx + ebp]
lea ecx, [ebp + 8]
cmp eax, ecx
cmova ecx, eax
lea esi, [ebx + ebp]
mov edi, ebp
not ebp
add ebp, ecx
mov eax, edi
mov ecx, dword [esp + 0x14]
mov dword [esp], ebp
cmp ebp, 0x18
mov ebp, edi
mov dword [esp + 0x84], ebx
mov dword [esp + 0x10], esi
jb 0x7785e5
mov edi, ebp
mov ecx, dword [esp + 0x14]
sub edi, ecx
mov eax, ebp
cmp edi, 0x20
jb 0x7785e5
mov ebx, dword [esp]
shr ebx, 3
inc ebx
mov dword [esp], ebx
and ebx, 0xfffffffc
lea eax, [ebx*8]
add eax, ebp
mov esi, dword [esp + 0x14]
lea ecx, [esi + ebx*8]
xor edi, edi
movups xmm0, xmmword [esi + edi*8]
movups xmm1, xmmword [esi + edi*8 + 0x10]
movups xmmword [ebp + edi*8], xmm0
movups xmmword [ebp + edi*8 + 0x10], xmm1
add edi, 4
cmp ebx, edi
jne 0x7785c2
cmp dword [esp], ebx
mov esi, dword [esp + 0x10]
je 0x7785f7
movsd xmm0, qword [ecx]
movsd qword [eax], xmm0
add eax, 8
add ecx, 8
cmp eax, esi
jb 0x7785e5
mov eax, dword [esp + 0x24]
add eax, ebp
mov dword [esp], eax
mov edi, esi
mov ebp, dword [esp + 0xc]
sub edi, ebp
mov ecx, esi
sub ecx, dword [esp + 0x1c]
mov dword [esp + 0x18], ecx
cmp ecx, ebp
mov ecx, dword [esp + 0x8c]
jae 0x778682
mov eax, esi
mov ebx, esi
sub eax, ecx
cmp eax, ebp
mov ebp, dword [esp + 0x28]
jb case.default.0x777773
mov esi, edi
mov edi, dword [esp + 0x1c]
sub esi, edi
mov edx, dword [esp + 0xa8]
lea eax, [edx + esi]
lea ecx, [eax + ebp]
cmp ecx, edx
jbe 0x7780f1
mov ecx, esi
neg ecx
push ecx
push eax
push ebx
call sub.api_ms_win_crt_private_l1_1_0.dll_memmove
add esp, 0xc
sub ebx, esi
mov dword [esp + 0x10], ebx
cmp ebx, dword [esp + 0x38]
ja 0x7788aa
add ebp, esi
cmp ebp, 2
jbe 0x7788aa
mov dword [esp + 0x28], ebp
mov esi, edi
mov edx, dword [esp + 8]
jmp 0x778684
mov esi, edi
mov edi, dword [esp + 0xc]
cmp edi, 7
ja 0x7786c5
movzx eax, byte [esi]
mov ebx, dword [esp + 0x10]
mov byte [ebx], al
movzx eax, byte [esi + 1]
mov byte [ebx + 1], al
movzx eax, byte [esi + 2]
mov byte [ebx + 2], al
movzx eax, byte [esi + 3]
mov byte [ebx + 3], al
mov eax, dword [edi*4 + 0xa98bc8]
mov ecx, dword [esi + eax]
add eax, esi
mov dword [ebx + 4], ecx
sub eax, dword [edi*4 + str._b_b_b_a_b_t_n_v]
mov esi, eax
jmp 0x7786d1
movsd xmm0, qword [esi]
mov ebx, dword [esp + 0x10]
movsd qword [ebx], xmm0
add ebx, 8
mov dword [esp + 0x3c], esi
lea ebp, [esi + 8]
mov eax, dword [esp]
cmp eax, dword [esp + 0x9c]
jbe 0x77882d
mov esi, dword [esp + 0x38]
cmp ebx, esi
mov ecx, dword [esp + 0x18]
jae 0x7787de
cmp edi, ecx
cmova ecx, edi
mov eax, dword [esp + 0x7c]
lea edi, [eax + ecx]
cmp esi, edi
cmova edi, esi
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x80], ecx
add eax, ecx
sub edi, eax
add edi, 0xfffffff7
mov eax, ebx
mov ecx, ebp
mov dword [esp + 0x28], edi
cmp edi, 0x18
jb 0x7787bc
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 0x18]
cmp eax, ecx
mov edi, ecx
cmova edi, eax
add edi, dword [esp + 0x1c]
sub edi, dword [esp + 0x3c]
mov eax, ebx
mov ecx, ebp
cmp edi, 0x20
jb 0x7787bc
mov eax, dword [esp + 0x28]
shr eax, 3
inc eax
mov dword [esp + 0x28], eax
mov ecx, eax
and ecx, 0xfffffffc
lea eax, [ebx + ecx*8]
mov dword [esp + 0x10], ecx
lea ecx, [ecx*8]
add ecx, ebp
mov edx, dword [esp + 0x90]
mov esi, dword [esp + 0x2c]
add edx, esi
mov edi, dword [esp + 0x80]
sub edi, esi
add edi, edx
xor edx, edx
mov esi, dword [esp + 0x3c]
movups xmm0, xmmword [esi + edx*8 + 8]
movups xmm1, xmmword [esi + edx*8 + 0x18]
movups xmmword [edi + edx*8 - 0x10], xmm0
movups xmmword [edi + edx*8], xmm1
add edx, 4
cmp dword [esp + 0x10], edx
jne 0x77878e
mov edx, dword [esp + 0x10]
cmp dword [esp + 0x28], edx
mov edx, dword [esp + 8]
mov esi, dword [esp + 0x38]
je 0x7787ce
movsd xmm0, qword [ecx]
movsd qword [eax], xmm0
add eax, 8
add ecx, 8
cmp eax, esi
jb 0x7787bc
mov eax, esi
sub eax, ebx
add ebp, eax
mov ebx, esi
mov edi, dword [esp + 0xc]
mov ecx, dword [esp + 0x18]
cmp ebx, dword [esp]
jae 0x778100
mov esi, dword [esp + 4]
add esi, dword [esp + 0x20]
add esi, dword [esp + 0x78]
add esi, dword [esp + 0x88]
add esi, dword [esp + 0x2c]
cmp edi, ecx
mov eax, ecx
cmova eax, edi
add eax, dword [esp + 0x94]
cmp dword [esp + 0x38], eax
cmova eax, dword [esp + 0x38]
sub esi, eax
mov dword [esp + 4], esi
cmp esi, 8
jae 0x7789ae
mov ecx, ebp
mov esi, ebx
jmp 0x778aa1
mov ecx, dword [esp + 4]
add ecx, dword [esp + 0x1c]
add ecx, dword [esp + 0x78]
mov esi, dword [esp + 0x18]
cmp edi, esi
mov eax, esi
cmovb eax, edi
cmova esi, edi
add eax, ecx
add eax, esi
sub eax, edi
mov ecx, dword [esp + 0x7c]
add ecx, esi
cmp eax, ecx
cmovbe eax, ecx
mov dword [esp + 0x20], esi
mov edi, dword [esp + 0x1c]
sub eax, esi
sub eax, edi
add eax, 0xfffffff7
cmp eax, 0x18
jb 0x77888a
mov esi, edi
mov ecx, dword [esp + 0xc]
mov edi, dword [esp + 0x18]
cmp ecx, edi
cmova edi, ecx
add edi, esi
sub edi, dword [esp + 0x3c]
cmp edi, 0x20
jae 0x7789d7
mov eax, dword [esp + 0x10]
add eax, dword [esp + 0x28]
movsd xmm0, qword [ebp]
movsd qword [ebx], xmm0
add ebx, 8
add ebp, 8
cmp ebx, eax
jb 0x778892
jmp 0x778100
mov eax, dword [esp + 0x10]
cmp eax, dword [esp]
mov edx, dword [esp + 8]
mov ecx, dword [esp + 0xc]
jae 0x778100
mov eax, dword [esp + 4]
sub eax, dword [esp + 0x1c]
add eax, dword [esp + 0x20]
add eax, dword [esp + 0x78]
add eax, dword [esp + 0x88]
add eax, dword [esp + 0x2c]
sub eax, ecx
mov dword [esp + 4], eax
cmp eax, 8
jb 0x778ab2
cmp dword [esp + 0xc], 0x20
jb 0x778ab2
xor eax, eax
mov ebx, 0
cmp dword [esp + 4], 0x20
jb 0x778954
mov ebx, dword [esp + 4]
and ebx, 0xffffffe0
mov ecx, dword [esp + 0x7c]
mov esi, dword [esp + 0x2c]
lea edx, [esi + ecx]
mov ecx, dword [esp + 0xc]
sub ecx, esi
add ecx, edx
xor edx, edx
mov esi, dword [esp + 0x1c]
movups xmm0, xmmword [esi + edx]
movups xmm1, xmmword [esi + edx + 0x10]
movups xmmword [ecx + edx - 0x10], xmm0
movups xmmword [ecx + edx], xmm1
add edx, 0x20
cmp ebx, edx
jne 0x778922
cmp dword [esp + 4], ebx
mov edx, dword [esp + 8]
je 0x778100
test byte [esp + 4], 0x18
je 0x778ad8
mov edi, dword [esp + 4]
and edi, 0xfffffff8
mov esi, dword [esp + 0x1c]
lea ecx, [esi + edi]
add dword [esp + 0x10], edi
mov edx, dword [esp + 0xc]
add edx, ebx
mov ebp, dword [esp + 0x2c]
sub edx, ebp
add ebp, esi
add ebp, edx
mov dword [esp + 0xc], edi
mov edx, edi
sub edx, ebx
lea edi, [esi + ebx]
movsd xmm0, qword [edi + eax]
movsd qword [ebp + eax], xmm0
add eax, 8
cmp edx, eax
jne 0x778981
mov eax, dword [esp + 0xc]
cmp dword [esp + 4], eax
mov edx, dword [esp + 8]
mov esi, dword [esp + 0x10]
jne 0x778abe
jmp 0x778100
cmp edi, ecx
cmova ecx, edi
add ecx, dword [esp + 0x94]
mov eax, dword [esp + 0x38]
cmp eax, ecx
cmova ecx, eax
sub ecx, ebp
cmp ecx, 0x20
jae 0x778a33
mov ecx, ebp
mov esi, ebx
mov edx, dword [esp + 8]
jmp 0x778aa1
shr eax, 3
inc eax
mov ecx, eax
and ecx, 0xfffffffc
lea ebx, [ebx + ecx*8]
mov dword [esp + 4], ecx
lea ebp, [ebp + ecx*8]
mov esi, dword [esp + 0x2c]
mov ecx, dword [esp + 0x20]
sub ecx, esi
add esi, dword [esp + 0x90]
add esi, ecx
xor edi, edi
mov ecx, dword [esp + 0x3c]
movups xmm0, xmmword [ecx + edi*8 + 8]
movups xmm1, xmmword [ecx + edi*8 + 0x18]
movups xmmword [esi + edi*8 - 0x10], xmm0
movups xmmword [esi + edi*8], xmm1
add edi, 4
cmp dword [esp + 4], edi
jne 0x778a04
cmp eax, dword [esp + 4]
mov eax, dword [esp + 0x10]
je 0x778100
jmp 0x77888e
xor eax, eax
cmp dword [esp + 4], 0x20
jb 0x778a74
mov eax, dword [esp + 4]
and eax, 0xffffffe0
xor ecx, ecx
movups xmm0, xmmword [ebp + ecx]
movups xmm1, xmmword [ebp + ecx + 0x10]
movups xmmword [ebx + ecx], xmm0
movups xmmword [ebx + ecx + 0x10], xmm1
add ecx, 0x20
cmp eax, ecx
jne 0x778a45
cmp dword [esp + 4], eax
mov edx, dword [esp + 8]
je 0x778100
test byte [esp + 4], 0x18
je 0x778acf
mov edx, dword [esp + 4]
and edx, 0xfffffff8
lea ecx, [edx + ebp]
lea esi, [ebx + edx]
movsd xmm0, qword [ebp + eax]
movsd qword [ebx + eax], xmm0
add eax, 8
cmp edx, eax
jne 0x778a81
cmp dword [esp + 4], edx
mov edx, dword [esp + 8]
je 0x778100
movzx eax, byte [ecx]
inc ecx
mov byte [esi], al
inc esi
cmp esi, dword [esp]
jb 0x778aa1
jmp 0x778100
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + 8]
mov esi, dword [esp + 0x10]
movzx eax, byte [ecx]
inc ecx
mov byte [esi], al
inc esi
cmp esi, dword [esp]
jb 0x778abe
jmp 0x778100
add ebx, eax
add ebp, eax
jmp 0x7789ca
mov esi, dword [esp + 0x10]
add esi, ebx
add ebx, dword [esp + 0x1c]
mov ecx, ebx
mov edx, dword [esp + 8]
jmp 0x778abe
mov eax, 0xffffffec
cmp dword [esp + 0x34], 0
jne 0x777758
lea esi, [esp + 0x68]
mov eax, dword [esi + 8]
mov ecx, dword [esp + 0x98]
mov dword [ecx + 8], eax
movsd xmm0, qword [esi]
movsd qword [ecx], xmm0
jmp 0x777e9d
mov dword [esp + 4], 0
jmp 0x777f84
mov dword [esp + 4], 0
jmp 0x778014