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

Disassembly:
sub esp, 0xb4
push ebx
mov ebx, dword [esp + 0xc8]
cmp ebx, 0xa
jae 0x10078210
mov eax, 0xffffffec
pop ebx
add esp, 0xb4
ret
mov ecx, dword [esp + 0xcc]
mov edx, dword [esp + 0xbc]
mov eax, dword [esp + 0xc0]
add eax, edx
mov dword [esp + 0x54], eax
lea eax, [ecx + 4]
mov dword [esp + 8], eax
mov eax, dword [esp + 0xc4]
push ebp
push esi
push edi
movzx ebp, word [eax + 2]
mov edi, ebx
movzx esi, word [eax]
mov dword [esp + 0x10], ebp
movzx ebp, word [eax + 4]
add eax, 6
sub edi, ebp
mov dword [esp + 0x70], eax
sub edi, dword [esp + 0x10]
sub edi, esi
mov dword [esp + 0x2c], esi
add esi, eax
sub edi, 6
mov eax, dword [esp + 0x10]
add eax, esi
mov dword [esp + 0x6c], esi
mov dword [esp + 0x50], eax
mov eax, dword [esp + 0xcc]
add eax, 3
shr eax, 2
add edx, eax
push ecx
mov dword [esp + 0x50], edx
mov dword [esp + 0x34], edx
lea esi, [edx + eax]
add eax, esi
mov dword [esp + 0x68], esi
mov dword [esp + 0x60], eax
mov dword [esp + 0x28], esi
mov dword [esp + 0x38], eax
call fcn.1007a900
shr eax, 0x10
add esp, 4
movzx esi, al
mov dword [esp + 0x68], esi
cmp edi, ebx
ja 0x1007875c
mov eax, dword [esp + 0x60]
cmp dword [esp + 0x5c], eax
ja 0x1007875c
cmp dword [esp + 0xcc], 6
jb 0x1007875c
push dword [esp + 0x2c]
lea eax, [esp + 0x78]
push dword [esp + 0x74]
push eax
call fcn.10075990
add esp, 0xc
cmp eax, 0xffffff88
ja 0x10079602
push dword [esp + 0x10]
lea eax, [esp + 0xb4]
push dword [esp + 0x70]
push eax
call fcn.10075990
add esp, 0xc
cmp eax, 0xffffff88
ja 0x10079602
mov ebx, dword [esp + 0x50]
lea eax, [esp + 0x88]
push ebp
push ebx
push eax
call fcn.10075990
add esp, 0xc
cmp eax, 0xffffff88
ja 0x10079602
push edi
lea eax, [ebx + ebp]
push eax
lea eax, [esp + 0xa4]
push eax
call fcn.10075990
add esp, 0xc
cmp eax, 0xffffff88
ja 0x10079602
mov edx, dword [esp + 0x60]
mov eax, edx
mov ecx, dword [esp + 0x5c]
sub eax, ecx
cmp eax, 4
jb 0x100786bc
lea eax, [edx - 3]
cmp ecx, eax
jae 0x100786bc
mov eax, dword [esp + 0x7c]
neg esi
mov edx, dword [esp + 0x74]
and esi, 0x1f
mov ebx, dword [esp + 0x78]
mov edi, dword [esp + 0xb4]
mov ebp, dword [esp + 0x8c]
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0xb8]
mov dword [esp + 0x54], eax
mov eax, dword [esp + 0xb0]
mov dword [esp + 0x3c], eax
mov eax, dword [esp + 0x90]
mov dword [esp + 0x58], eax
mov eax, dword [esp + 0x88]
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0xa4]
mov dword [esp + 0x50], eax
mov eax, dword [esp + 0x9c]
mov dword [esp + 0x20], esi
mov esi, dword [esp + 0xa0]
mov dword [esp + 0x44], edx
mov dword [esp + 0x48], eax
jmp 0x100783ec
mov edx, dword [esp + 0x44]
mov ecx, ebx
mov eax, edx
mov edx, dword [esp + 0xc8]
and ecx, 0x1f
shl eax, cl
mov ecx, dword [esp + 0x20]
shr eax, cl
mov ecx, dword [esp + 0x14]
lea ecx, [ecx + eax*4]
movzx eax, word [ecx]
mov word [edx], ax
movzx eax, byte [ecx + 3]
movzx edx, byte [ecx + 2]
mov ecx, edi
add dword [esp + 0xc8], eax
and ecx, 0x1f
mov eax, dword [esp + 0x3c]
add edx, ebx
shl eax, cl
mov ecx, dword [esp + 0x20]
shr eax, cl
mov ecx, dword [esp + 0x14]
mov ebx, dword [esp + 0x30]
lea ecx, [ecx + eax*4]
movzx eax, word [ecx]
mov word [ebx], ax
movzx eax, byte [ecx + 2]
add edi, eax
movzx eax, byte [ecx + 3]
add ebx, eax
mov ecx, ebp
mov eax, dword [esp + 0x40]
and ecx, 0x1f
shl eax, cl
mov ecx, dword [esp + 0x20]
shr eax, cl
mov ecx, dword [esp + 0x14]
lea ecx, [ecx + eax*4]
mov dword [esp + 0x30], ebx
movzx eax, word [ecx]
mov ebx, dword [esp + 0x24]
mov word [ebx], ax
movzx eax, byte [ecx + 3]
movzx ebx, byte [ecx + 2]
mov ecx, esi
add dword [esp + 0x24], eax
and ecx, 0x1f
mov eax, dword [esp + 0x48]
add ebx, ebp
mov ebp, dword [esp + 0x34]
shl eax, cl
mov ecx, dword [esp + 0x20]
shr eax, cl
mov ecx, dword [esp + 0x14]
lea ecx, [ecx + eax*4]
movzx eax, word [ecx]
mov word [ebp], ax
movzx eax, byte [ecx + 3]
movzx ebp, byte [ecx + 2]
mov ecx, edx
add dword [esp + 0x34], eax
and ecx, 0x1f
mov eax, dword [esp + 0x44]
add ebp, esi
mov esi, dword [esp + 0xc8]
shl eax, cl
mov ecx, dword [esp + 0x20]
shr eax, cl
mov ecx, dword [esp + 0x14]
lea ecx, [ecx + eax*4]
movzx eax, word [ecx]
mov word [esi], ax
movzx eax, byte [ecx + 2]
add eax, edx
mov dword [esp + 0x18], eax
movzx eax, byte [ecx + 3]
mov ecx, edi
add esi, eax
mov eax, dword [esp + 0x3c]
mov dword [esp + 0xc8], esi
and ecx, 0x1f
mov esi, dword [esp + 0x14]
shl eax, cl
mov ecx, dword [esp + 0x20]
mov edx, dword [esp + 0x30]
shr eax, cl
lea ecx, [esi + eax*4]
movzx eax, word [ecx]
mov word [edx], ax
movzx eax, byte [ecx + 2]
add eax, edi
mov dword [esp + 0x1c], eax
movzx eax, byte [ecx + 3]
mov ecx, ebx
add edx, eax
and ecx, 0x1f
mov eax, dword [esp + 0x40]
shl eax, cl
mov ecx, dword [esp + 0x20]
shr eax, cl
mov dword [esp + 0x30], edx
mov edx, dword [esp + 0x24]
lea ecx, [esi + eax*4]
movzx eax, word [ecx]
mov word [edx], ax
movzx eax, byte [ecx + 2]
add eax, ebx
mov ebx, dword [esp + 0x18]
mov dword [esp + 0x28], eax
movzx eax, byte [ecx + 3]
mov ecx, ebp
add edx, eax
and ecx, 0x1f
mov eax, dword [esp + 0x48]
shl eax, cl
mov ecx, dword [esp + 0x20]
shr eax, cl
mov dword [esp + 0x24], edx
mov edx, dword [esp + 0x34]
lea ecx, [esi + eax*4]
movzx eax, word [ecx]
mov word [edx], ax
movzx esi, byte [ecx + 2]
movzx eax, byte [ecx + 3]
add esi, ebp
mov ecx, dword [esp + 0x38]
add edx, eax
mov dword [esp + 0x34], edx
cmp ecx, dword [esp + 0x84]
jae 0x100785a0
mov dword [esp + 0x2c], 3
jmp 0x100785c0
mov eax, ebx
mov dword [esp + 0x2c], 0
shr eax, 3
sub ecx, eax
and ebx, 7
mov dword [esp + 0x38], ecx
mov dword [esp + 0x18], ebx
mov eax, dword [ecx]
mov dword [esp + 0x44], eax
mov ecx, dword [esp + 0x54]
mov edi, dword [esp + 0x1c]
cmp ecx, dword [esp + 0xc0]
jae 0x100785db
mov dword [esp + 0x70], 3
jmp 0x100785fb
mov eax, edi
mov dword [esp + 0x70], 0
shr eax, 3
sub ecx, eax
and edi, 7
mov dword [esp + 0x54], ecx
mov dword [esp + 0x1c], edi
mov eax, dword [ecx]
mov dword [esp + 0x3c], eax
mov ecx, dword [esp + 0x58]
mov ebp, dword [esp + 0x28]
cmp ecx, dword [esp + 0x98]
jae 0x10078616
mov dword [esp + 0x6c], 3
jmp 0x10078636
mov eax, ebp
mov dword [esp + 0x6c], 0
shr eax, 3
sub ecx, eax
and ebp, 7
mov dword [esp + 0x58], ecx
mov dword [esp + 0x28], ebp
mov eax, dword [ecx]
mov dword [esp + 0x40], eax
mov ecx, dword [esp + 0x50]
cmp ecx, dword [esp + 0xac]
jae 0x1007864d
mov dword [esp + 0x10], 3
jmp 0x10078669
mov eax, esi
mov dword [esp + 0x10], 0
shr eax, 3
sub ecx, eax
and esi, 7
mov dword [esp + 0x50], ecx
mov eax, dword [ecx]
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0x60]
add eax, 0xfffffffd
cmp edx, eax
sbb ecx, ecx
xor eax, eax
neg ecx
cmp dword [esp + 0x10], eax
sete al
xor edx, edx
and ecx, eax
cmp dword [esp + 0x6c], edx
cmove edx, ecx
xor eax, eax
cmp dword [esp + 0x70], eax
sete al
and edx, eax
xor eax, eax
cmp dword [esp + 0x2c], eax
cmove eax, edx
test eax, eax
jne 0x100783e8
mov edx, dword [esp + 0x18]
mov ecx, dword [esp + 0x38]
mov dword [esp + 0x20], esi
mov esi, dword [esp + 0x68]
mov ebx, dword [esp + 0x20]
jmp 0x10078737
mov eax, dword [esp + 0x74]
mov ecx, dword [esp + 0x7c]
mov edx, dword [esp + 0x78]
mov edi, dword [esp + 0xb4]
mov ebp, dword [esp + 0x8c]
mov ebx, dword [esp + 0xa0]
mov dword [esp + 0x44], eax
mov eax, dword [esp + 0xb8]
mov dword [esp + 0x54], eax
mov eax, dword [esp + 0xb0]
mov dword [esp + 0x3c], eax
mov eax, dword [esp + 0x90]
mov dword [esp + 0x58], eax
mov eax, dword [esp + 0x88]
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0xa4]
mov dword [esp + 0x50], eax
mov eax, dword [esp + 0x9c]
mov dword [esp + 0x38], ecx
mov dword [esp + 0x18], edx
mov dword [esp + 0x1c], edi
mov dword [esp + 0x28], ebp
mov dword [esp + 0x20], ebx
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0x4c]
cmp dword [esp + 0xc8], eax
ja 0x1007875c
mov eax, dword [esp + 0x64]
cmp dword [esp + 0x30], eax
ja 0x1007875c
mov eax, dword [esp + 0x5c]
cmp dword [esp + 0x24], eax
mov eax, dword [esp + 0x4c]
jbe 0x1007876c
pop edi
pop esi
pop ebp
mov eax, 0xffffffec
pop ebx
add esp, 0xb4
ret
sub eax, dword [esp + 0xc8]
cmp eax, 4
mov eax, dword [esp + 0x80]
jb 0x100788b6
mov edi, dword [esp + 0xc8]
nop word [eax + eax]
cmp edx, 0x20
jbe 0x1007879c
mov ebx, 3
jmp 0x10078811
cmp ecx, dword [esp + 0x84]
jb 0x100787b9
mov eax, edx
and edx, 7
shr eax, 3
sub ecx, eax
mov ebx, dword [ecx]
mov dword [esp + 0x44], ebx
xor ebx, ebx
jmp 0x10078809
cmp ecx, eax
jne 0x100787cd
cmp edx, 0x20
sbb eax, eax
add eax, 2
mov dword [esp + 0x10], eax
mov ebx, eax
jmp 0x10078811
mov ebx, edx
mov dword [esp + 0x10], 0
shr ebx, 3
mov eax, ecx
sub eax, ebx
cmp eax, dword [esp + 0x80]
jae 0x100787f8
mov ebx, ecx
mov dword [esp + 0x10], 1
sub ebx, dword [esp + 0x80]
imul eax, ebx, 0xfffffff8
sub ecx, ebx
mov ebx, dword [esp + 0x10]
add edx, eax
mov eax, dword [ecx]
mov dword [esp + 0x44], eax
mov dword [esp + 0x18], edx
mov dword [esp + 0x38], ecx
mov eax, dword [esp + 0x4c]
add eax, 0xfffffffd
cmp edi, eax
sbb ecx, ecx
xor eax, eax
neg ecx
test ebx, ebx
sete al
test eax, ecx
je 0x10078920
mov eax, dword [esp + 0x44]
mov ecx, edx
and ecx, 0x1f
mov ebx, esi
shl eax, cl
neg ebx
and ebx, 0x1f
mov ecx, ebx
shr eax, cl
mov ecx, dword [esp + 0x14]
lea edx, [ecx + eax*4]
movzx eax, word [edx]
mov word [edi], ax
movzx edi, byte [edx + 2]
movzx eax, byte [edx + 3]
add edi, dword [esp + 0x18]
mov edx, dword [esp + 0xc8]
mov ecx, edi
add edx, eax
and ecx, 0x1f
mov eax, dword [esp + 0x44]
shl eax, cl
mov ecx, ebx
shr eax, cl
mov ecx, dword [esp + 0x14]
lea ecx, [ecx + eax*4]
mov dword [esp + 0xc8], edx
movzx eax, word [ecx]
mov word [edx], ax
movzx edx, byte [ecx + 2]
movzx eax, byte [ecx + 3]
add edx, edi
mov edi, dword [esp + 0xc8]
mov ecx, dword [esp + 0x38]
add edi, eax
mov eax, dword [esp + 0x80]
mov dword [esp + 0x18], edx
mov dword [esp + 0xc8], edi
jmp 0x10078790
cmp edx, 0x20
ja 0x10078928
cmp ecx, dword [esp + 0x84]
jb 0x100788de
mov eax, edx
shr eax, 3
sub ecx, eax
and edx, 7
mov dword [esp + 0x38], ecx
mov dword [esp + 0x18], edx
mov ecx, dword [ecx]
mov dword [esp + 0x44], ecx
jmp 0x10078928
cmp ecx, eax
je 0x10078928
mov eax, edx
shr eax, 3
mov dword [esp + 0x2c], eax
mov eax, ecx
sub eax, dword [esp + 0x2c]
cmp eax, dword [esp + 0x80]
jae 0x10078905
mov eax, ecx
sub eax, dword [esp + 0x80]
jmp 0x10078909
mov eax, dword [esp + 0x2c]
sub ecx, eax
imul eax, eax, 0xfffffff8
mov dword [esp + 0x38], ecx
add edx, eax
mov eax, dword [ecx]
mov dword [esp + 0x18], edx
mov dword [esp + 0x44], eax
jmp 0x10078928
mov ebx, dword [esp + 0x20]
mov edi, dword [esp + 0x1c]
mov ecx, dword [esp + 0x4c]
mov eax, ecx
sub eax, dword [esp + 0xc8]
cmp eax, 2
jb 0x10078ac2
mov edi, dword [esp + 0x38]
mov ebx, dword [esp + 0xc8]
mov ebp, dword [esp + 0x14]
nop dword [eax]
cmp edx, 0x20
jbe 0x10078962
mov dword [esp + 0x38], 3
jmp 0x100789e3
cmp edi, dword [esp + 0x84]
jb 0x1007897f
mov eax, edx
mov dword [esp + 0x38], 0
shr eax, 3
sub edi, eax
and edx, 7
jmp 0x100789d9
cmp edi, dword [esp + 0x80]
jne 0x100789a3
mov eax, esi
cmp edx, 0x20
jae 0x10078999
mov dword [esp + 0x38], 1
jmp 0x100789e5
mov dword [esp + 0x38], 2
jmp 0x100789e5
mov ecx, edx
mov dword [esp + 0x38], 0
shr ecx, 3
mov eax, edi
sub eax, ecx
cmp eax, dword [esp + 0x80]
jae 0x100789ce
mov ecx, edi
mov dword [esp + 0x38], 1
sub ecx, dword [esp + 0x80]
imul eax, ecx, 0xfffffff8
sub edi, ecx
mov ecx, dword [esp + 0x4c]
add edx, eax
mov eax, dword [edi]
mov dword [esp + 0x44], eax
mov dword [esp + 0x18], edx
mov eax, esi
neg eax
mov dword [esp + 0x10], eax
lea eax, [ecx - 2]
cmp eax, ebx
sbb ecx, ecx
xor eax, eax
inc ecx
cmp dword [esp + 0x38], eax
sete al
test eax, ecx
je 0x10078a39
mov ecx, edx
mov edx, dword [esp + 0x44]
and ecx, 0x1f
shl edx, cl
mov ecx, esi
neg ecx
and ecx, 0x1f
shr edx, cl
mov ecx, dword [esp + 0x4c]
mov ax, word [ebp + edx*4]
mov word [ebx], ax
movzx eax, byte [ebp + edx*4 + 2]
add dword [esp + 0x18], eax
movzx eax, byte [ebp + edx*4 + 3]
mov edx, dword [esp + 0x18]
add ebx, eax
jmp 0x10078950
mov eax, dword [esp + 0x4c]
mov ebp, dword [esp + 0x28]
add eax, 0xfffffffe
mov dword [esp + 0xc8], ebx
cmp ebx, eax
mov ebx, dword [esp + 0x20]
mov dword [esp + 0x38], edi
mov edi, dword [esp + 0x1c]
ja 0x10078ac2
and dword [esp + 0x10], 0x1f
mov edi, dword [esp + 0xc8]
mov ebp, dword [esp + 0x14]
mov ebx, dword [esp + 0x44]
mov esi, dword [esp + 0x10]
mov ecx, edx
mov eax, ebx
and ecx, 0x1f
shl eax, cl
mov ecx, esi
shr eax, cl
lea ecx, [eax*4]
mov ax, word [ecx + ebp]
mov word [edi], ax
movzx eax, byte [ecx + ebp + 2]
add edx, eax
movzx eax, byte [ecx + ebp + 3]
add edi, eax
mov eax, dword [esp + 0x4c]
add eax, 0xfffffffe
cmp edi, eax
jbe 0x10078a73
mov esi, dword [esp + 0x68]
mov ebp, dword [esp + 0x28]
mov ebx, dword [esp + 0x20]
mov dword [esp + 0xc8], edi
mov edi, dword [esp + 0x1c]
mov dword [esp + 0x18], edx
mov eax, dword [esp + 0x4c]
cmp dword [esp + 0xc8], eax
jae 0x10078b30
mov eax, dword [esp + 0x44]
mov ecx, edx
and ecx, 0x1f
shl eax, cl
mov ecx, esi
neg ecx
and ecx, 0x1f
shr eax, cl
mov dword [esp + 0x44], eax
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x44]
lea ebp, [eax + ecx*4]
mov al, byte [eax + ecx*4]
mov ecx, dword [esp + 0xc8]
mov dword [esp + 0x2c], ebp
mov byte [ecx], al
mov eax, ebp
mov ebp, dword [esp + 0x28]
cmp byte [eax + 3], 1
jne 0x10078b16
movzx eax, byte [eax + 2]
add edx, eax
jmp 0x10078b2c
cmp edx, 0x20
jae 0x10078b30
movzx eax, byte [eax + 2]
add edx, eax
mov eax, 0x20
cmp edx, 0x20
cmova edx, eax
mov dword [esp + 0x18], edx
mov eax, dword [esp + 0x64]
mov ecx, dword [esp + 0x30]
sub eax, ecx
cmp eax, 4
mov eax, dword [esp + 0xbc]
jb 0x10078c60
mov edx, ecx
nop dword [eax]
cmp edi, 0x20
jbe 0x10078b5c
mov ebx, 3
jmp 0x10078bcf
mov ecx, dword [esp + 0x54]
cmp ecx, dword [esp + 0xc0]
jb 0x10078b77
mov eax, edi
and edi, 7
shr eax, 3
sub ecx, eax
xor ebx, ebx
jmp 0x10078bc1
cmp ecx, eax
jne 0x10078b8b
cmp edi, 0x20
sbb eax, eax
add eax, 2
mov dword [esp + 0x10], eax
mov ebx, eax
jmp 0x10078bcf
mov ebx, edi
mov dword [esp + 0x10], 0
shr ebx, 3
mov eax, ecx
sub eax, ebx
cmp eax, dword [esp + 0xbc]
jae 0x10078bb6
mov ebx, ecx
mov dword [esp + 0x10], 1
sub ebx, dword [esp + 0xbc]
imul eax, ebx, 0xfffffff8
sub ecx, ebx
mov ebx, dword [esp + 0x10]
add edi, eax
mov eax, dword [ecx]
mov dword [esp + 0x3c], eax
mov dword [esp + 0x1c], edi
mov dword [esp + 0x54], ecx
mov eax, dword [esp + 0x64]
add eax, 0xfffffffd
cmp edx, eax
sbb ecx, ecx
xor eax, eax
neg ecx
test ebx, ebx
sete al
test eax, ecx
je 0x10078cce
mov eax, dword [esp + 0x3c]
mov ecx, edi
and ecx, 0x1f
mov ebx, esi
shl eax, cl
neg ebx
and ebx, 0x1f
mov ecx, ebx
shr eax, cl
mov ecx, dword [esp + 0x14]
lea edx, [ecx + eax*4]
mov ecx, dword [esp + 0x30]
movzx eax, word [edx]
mov word [ecx], ax
movzx eax, byte [edx + 2]
add edi, eax
movzx eax, byte [edx + 3]
mov edx, ecx
mov ecx, edi
add edx, eax
and ecx, 0x1f
mov eax, dword [esp + 0x3c]
shl eax, cl
mov ecx, ebx
shr eax, cl
mov ecx, dword [esp + 0x14]
lea ecx, [ecx + eax*4]
movzx eax, word [ecx]
mov word [edx], ax
movzx eax, byte [ecx + 2]
add eax, edi
mov dword [esp + 0x1c], eax
movzx eax, byte [ecx + 3]
mov edi, dword [esp + 0x1c]
add edx, eax
mov eax, dword [esp + 0xbc]
mov dword [esp + 0x30], edx
jmp 0x10078b50
cmp edi, 0x20
ja 0x10078cda
mov ecx, dword [esp + 0x54]
cmp ecx, dword [esp + 0xc0]
jb 0x10078c8c
mov eax, edi
shr eax, 3
sub ecx, eax
and edi, 7
mov dword [esp + 0x54], ecx
mov dword [esp + 0x1c], edi
mov eax, dword [ecx]
mov dword [esp + 0x3c], eax
jmp 0x10078cd6
cmp ecx, eax
je 0x10078cd6
mov eax, edi
shr eax, 3
mov dword [esp + 0x2c], eax
mov eax, ecx
sub eax, dword [esp + 0x2c]
cmp eax, dword [esp + 0xbc]
jae 0x10078cb3
mov eax, ecx
sub eax, dword [esp + 0xbc]
jmp 0x10078cb7
mov eax, dword [esp + 0x2c]
sub ecx, eax
imul eax, eax, 0xfffffff8
mov dword [esp + 0x54], ecx
add edi, eax
mov eax, dword [ecx]
mov dword [esp + 0x1c], edi
mov dword [esp + 0x3c], eax
jmp 0x10078cd6
mov ebx, dword [esp + 0x20]
mov edx, dword [esp + 0x18]
mov ecx, dword [esp + 0x30]
mov eax, dword [esp + 0x64]
sub eax, ecx
cmp eax, 2
jb 0x10078e51
mov ebx, dword [esp + 0x54]
mov edx, dword [esp + 0x30]
cmp edi, 0x20
jbe 0x10078d04
mov ebp, dword [esp + 0x3c]
mov dword [esp + 0x4c], 3
jmp 0x10078d79
cmp ebx, dword [esp + 0xc0]
jb 0x10078d21
mov eax, edi
mov dword [esp + 0x4c], 0
shr eax, 3
sub ebx, eax
and edi, 7
jmp 0x10078d73
mov ebp, dword [esp + 0xbc]
cmp ebx, ebp
jne 0x10078d4b
mov ebp, dword [esp + 0x3c]
mov eax, esi
cmp edi, 0x20
jae 0x10078d41
mov dword [esp + 0x4c], 1
jmp 0x10078d7b
mov dword [esp + 0x4c], 2
jmp 0x10078d7b
mov ecx, edi
mov dword [esp + 0x4c], 0
shr ecx, 3
mov eax, ebx
sub eax, ecx
cmp eax, ebp
jae 0x10078d6c
mov ecx, ebx
mov dword [esp + 0x4c], 1
sub ecx, ebp
imul eax, ecx, 0xfffffff8
sub ebx, ecx
add edi, eax
mov ebp, dword [ebx]
mov dword [esp + 0x3c], ebp
mov eax, esi
neg eax
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x64]
add eax, 0xfffffffe
cmp eax, edx
sbb ecx, ecx
xor eax, eax
inc ecx
cmp dword [esp + 0x4c], eax
sete al
test eax, ecx
je 0x10078dd9
mov ecx, edi
mov edx, ebp
mov ebp, dword [esp + 0x14]
and ecx, 0x1f
shl edx, cl
mov ecx, esi
neg ecx
and ecx, 0x1f
shr edx, cl
mov ecx, dword [esp + 0x30]
mov ax, word [ebp + edx*4]
mov word [ecx], ax
mov ecx, ebp
movzx eax, byte [ecx + edx*4 + 2]
add edi, eax
movzx eax, byte [ecx + edx*4 + 3]
mov edx, dword [esp + 0x30]
add edx, eax
mov dword [esp + 0x30], edx
jmp 0x10078cf1
mov eax, dword [esp + 0x64]
mov ebp, dword [esp + 0x28]
add eax, 0xfffffffe
mov dword [esp + 0x54], ebx
mov ebx, dword [esp + 0x20]
mov dword [esp + 0x1c], edi
cmp edx, eax
ja 0x10078e4d
and dword [esp + 0x10], 0x1f
mov ebp, dword [esp + 0x14]
mov ebx, dword [esp + 0x10]
mov esi, dword [esp + 0x3c]
mov ecx, edi
mov eax, esi
and ecx, 0x1f
shl eax, cl
mov ecx, ebx
shr eax, cl
lea ecx, [eax*4]
mov ax, word [ecx + ebp]
mov word [edx], ax
movzx eax, byte [ecx + ebp + 2]
add edi, eax
movzx eax, byte [ecx + ebp + 3]
add edx, eax
mov eax, dword [esp + 0x64]
add eax, 0xfffffffe
cmp edx, eax
jbe 0x10078e05
mov esi, dword [esp + 0x68]
mov ebp, dword [esp + 0x28]
mov ebx, dword [esp + 0x20]
mov dword [esp + 0x30], edx
mov dword [esp + 0x1c], edi
mov edx, dword [esp + 0x18]
mov eax, dword [esp + 0x64]
cmp dword [esp + 0x30], eax
jae 0x10078eb9
mov eax, dword [esp + 0x3c]
mov ecx, edi
and ecx, 0x1f
shl eax, cl
mov ecx, esi
neg ecx
and ecx, 0x1f
shr eax, cl
mov dword [esp + 0x3c], eax
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x3c]
lea esi, [eax + ecx*4]
mov al, byte [eax + ecx*4]
mov ecx, dword [esp + 0x30]
mov dword [esp + 0x2c], esi
mov byte [ecx], al
mov eax, esi
mov esi, dword [esp + 0x68]
cmp byte [eax + 3], 1
jne 0x10078e9f
movzx eax, byte [eax + 2]
add edi, eax
jmp 0x10078eb5
cmp edi, 0x20
jae 0x10078eb9
movzx eax, byte [eax + 2]
add edi, eax
mov eax, 0x20
cmp edi, 0x20
cmova edi, eax
mov dword [esp + 0x1c], edi
mov eax, dword [esp + 0x5c]
mov ecx, dword [esp + 0x24]
sub eax, ecx
cmp eax, 4
mov eax, dword [esp + 0x94]
jb 0x10078fd4
mov edx, ecx
cmp ebp, 0x20
jbe 0x10078ee5
mov edi, dword [esp + 0x40]
mov ebx, 3
jmp 0x10078f49
mov ecx, dword [esp + 0x58]
cmp ecx, dword [esp + 0x98]
jb 0x10078f00
mov eax, ebp
and ebp, 7
shr eax, 3
sub ecx, eax
xor ebx, ebx
jmp 0x10078f3b
cmp ecx, eax
jne 0x10078f12
mov edi, dword [esp + 0x40]
cmp ebp, 0x20
sbb ebx, ebx
add ebx, 2
jmp 0x10078f49
mov edi, ebp
mov eax, ecx
shr edi, 3
xor ebx, ebx
sub eax, edi
cmp eax, dword [esp + 0x94]
jae 0x10078f34
mov edi, ecx
mov ebx, 1
sub edi, dword [esp + 0x94]
imul eax, edi, 0xfffffff8
sub ecx, edi
add ebp, eax
mov edi, dword [ecx]
mov dword [esp + 0x40], edi
mov dword [esp + 0x28], ebp
mov dword [esp + 0x58], ecx
mov eax, dword [esp + 0x5c]
add eax, 0xfffffffd
cmp edx, eax
sbb ecx, ecx
xor eax, eax
neg ecx
test ebx, ebx
sete al
test eax, ecx
je 0x10079042
mov ecx, ebp
mov ebx, esi
and ecx, 0x1f
neg ebx
mov eax, edi
and ebx, 0x1f
shl eax, cl
mov ecx, ebx
shr eax, cl
mov ecx, dword [esp + 0x14]
lea edx, [ecx + eax*4]
mov ecx, dword [esp + 0x24]
movzx eax, word [edx]
mov word [ecx], ax
movzx edi, byte [edx + 2]
movzx eax, byte [edx + 3]
add edi, ebp
mov edx, ecx
mov ecx, edi
add edx, eax
and ecx, 0x1f
mov eax, dword [esp + 0x40]
shl eax, cl
mov ecx, ebx
shr eax, cl
mov ecx, dword [esp + 0x14]
lea ecx, [ecx + eax*4]
movzx eax, word [ecx]
mov word [edx], ax
movzx ebp, byte [ecx + 2]
movzx eax, byte [ecx + 3]
add ebp, edi
add edx, eax
mov dword [esp + 0x28], ebp
mov eax, dword [esp + 0x94]
mov dword [esp + 0x24], edx
jmp 0x10078ed5
cmp ebp, 0x20
ja 0x10079052
mov ecx, dword [esp + 0x58]
cmp ecx, dword [esp + 0x98]
jb 0x10079000
mov eax, ebp
shr eax, 3
sub ecx, eax
and ebp, 7
mov dword [esp + 0x58], ecx
mov dword [esp + 0x28], ebp
mov eax, dword [ecx]
mov dword [esp + 0x40], eax
jmp 0x1007904e
cmp ecx, eax
je 0x1007904e
mov eax, ebp
shr eax, 3
mov dword [esp + 0x2c], eax
mov eax, ecx
sub eax, dword [esp + 0x2c]
cmp eax, dword [esp + 0x94]
jae 0x10079027
mov eax, ecx
sub eax, dword [esp + 0x94]
jmp 0x1007902b
mov eax, dword [esp + 0x2c]
sub ecx, eax
imul eax, eax, 0xfffffff8
mov dword [esp + 0x58], ecx
add ebp, eax
mov eax, dword [ecx]
mov dword [esp + 0x28], ebp
mov dword [esp + 0x40], eax
jmp 0x1007904e
mov ebx, dword [esp + 0x20]
mov edi, dword [esp + 0x1c]
mov edx, dword [esp + 0x18]
mov ecx, dword [esp + 0x24]
mov eax, dword [esp + 0x5c]
sub eax, ecx
cmp eax, 2
jb 0x100791b5
mov ebx, dword [esp + 0x58]
mov edx, dword [esp + 0x24]
nop dword [eax]
cmp ebp, 0x20
jbe 0x1007907c
mov edi, 3
jmp 0x100790e0
cmp ebx, dword [esp + 0x98]
jb 0x10079093
mov eax, ebp
and ebp, 7
shr eax, 3
sub ebx, eax
xor edi, edi
jmp 0x100790da
cmp ebx, dword [esp + 0x94]
jne 0x100790b1
mov eax, esi
cmp ebp, 0x20
jae 0x100790aa
mov edi, 1
jmp 0x100790e2
mov edi, 2
jmp 0x100790e2
mov ecx, ebp
mov eax, ebx
shr ecx, 3
xor edi, edi
sub eax, ecx
cmp eax, dword [esp + 0x94]
jae 0x100790d3
mov ecx, ebx
mov edi, 1
sub ecx, dword [esp + 0x94]
imul eax, ecx, 0xfffffff8
sub ebx, ecx
add ebp, eax
mov eax, dword [ebx]
mov dword [esp + 0x40], eax
mov eax, esi
neg eax
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x5c]
add eax, 0xfffffffe
cmp eax, edx
sbb ecx, ecx
xor eax, eax
inc ecx
test edi, edi
sete al
test eax, ecx
je 0x1007913f
mov edx, dword [esp + 0x40]
mov ecx, ebp
mov edi, dword [esp + 0x14]
and ecx, 0x1f
shl edx, cl
mov ecx, esi
neg ecx
and ecx, 0x1f
shr edx, cl
mov ecx, dword [esp + 0x24]
mov ax, word [edi + edx*4]
mov word [ecx], ax
mov ecx, edi
movzx eax, byte [ecx + edx*4 + 2]
add ebp, eax
movzx eax, byte [ecx + edx*4 + 3]
mov edx, dword [esp + 0x24]
add edx, eax
mov dword [esp + 0x24], edx
jmp 0x10079070
mov eax, dword [esp + 0x5c]
mov edi, dword [esp + 0x1c]
add eax, 0xfffffffe
mov dword [esp + 0x58], ebx
mov ebx, dword [esp + 0x20]
mov dword [esp + 0x28], ebp
cmp edx, eax
ja 0x100791b1
and dword [esp + 0x10], 0x1f
mov ebx, dword [esp + 0x14]
mov edi, dword [esp + 0x10]
mov esi, dword [esp + 0x40]
nop dword [eax + eax]
mov ecx, ebp
mov eax, esi
and ecx, 0x1f
shl eax, cl
mov ecx, edi
shr eax, cl
lea ecx, [ebx + eax*4]
mov ax, word [ecx]
mov word [edx], ax
movzx eax, byte [ecx + 2]
add ebp, eax
movzx eax, byte [ecx + 3]
add edx, eax
mov eax, dword [esp + 0x5c]
add eax, 0xfffffffe
cmp edx, eax
jbe 0x10079170
mov esi, dword [esp + 0x68]
mov ebx, dword [esp + 0x20]
mov edi, dword [esp + 0x1c]
mov dword [esp + 0x24], edx
mov dword [esp + 0x28], ebp
mov edx, dword [esp + 0x18]
mov eax, dword [esp + 0x5c]
cmp dword [esp + 0x24], eax
jae 0x1007921d
mov eax, dword [esp + 0x40]
mov ecx, ebp
and ecx, 0x1f
shl eax, cl
mov ecx, esi
neg ecx
and ecx, 0x1f
shr eax, cl
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x40]
lea esi, [eax + ecx*4]
mov al, byte [eax + ecx*4]
mov ecx, dword [esp + 0x24]
mov dword [esp + 0x2c], esi
mov byte [ecx], al
mov eax, esi
mov esi, dword [esp + 0x68]
cmp byte [eax + 3], 1
jne 0x10079203
movzx eax, byte [eax + 2]
add ebp, eax
jmp 0x10079219
cmp ebp, 0x20
jae 0x1007921d
movzx eax, byte [eax + 2]
add ebp, eax
mov eax, 0x20
cmp ebp, 0x20
cmova ebp, eax
mov dword [esp + 0x28], ebp
mov eax, dword [esp + 0x60]
mov ecx, dword [esp + 0x34]
sub eax, ecx
cmp eax, 4
mov eax, dword [esp + 0xa8]
jb 0x10079350
mov edx, ecx
nop dword [eax]
cmp ebx, 0x20
jbe 0x1007924c
mov edi, 3
jmp 0x100792bf
mov ecx, dword [esp + 0x50]
cmp ecx, dword [esp + 0xac]
jb 0x10079267
mov eax, ebx
and ebx, 7
shr eax, 3
sub ecx, eax
xor edi, edi
jmp 0x100792b1
cmp ecx, eax
jne 0x1007927b
cmp ebx, 0x20
sbb eax, eax
add eax, 2
mov dword [esp + 0x10], eax
mov edi, eax
jmp 0x100792bf
mov edi, ebx
mov dword [esp + 0x10], 0
shr edi, 3
mov eax, ecx
sub eax, edi
cmp eax, dword [esp + 0xa8]
jae 0x100792a6
mov edi, ecx
mov dword [esp + 0x10], 1
sub edi, dword [esp + 0xa8]
imul eax, edi, 0xfffffff8
sub ecx, edi
mov edi, dword [esp + 0x10]
add ebx, eax
mov eax, dword [ecx]
mov dword [esp + 0x48], eax
mov dword [esp + 0x20], ebx
mov dword [esp + 0x50], ecx
mov eax, dword [esp + 0x60]
add eax, 0xfffffffd
cmp edx, eax
sbb ecx, ecx
xor eax, eax
neg ecx
test edi, edi
sete al
test eax, ecx
je 0x100793cb
mov edi, dword [esp + 0x20]
mov ebx, esi
mov eax, dword [esp + 0x48]
neg ebx
and ebx, 0x1f
mov ecx, edi
and ecx, 0x1f
shl eax, cl
mov ecx, ebx
shr eax, cl
mov ecx, dword [esp + 0x14]
lea edx, [ecx + eax*4]
mov ecx, dword [esp + 0x34]
movzx eax, word [edx]
mov word [ecx], ax
movzx eax, byte [edx + 2]
add edi, eax
movzx eax, byte [edx + 3]
mov edx, ecx
mov ecx, edi
add edx, eax
and ecx, 0x1f
mov eax, dword [esp + 0x48]
shl eax, cl
mov ecx, ebx
shr eax, cl
mov ecx, dword [esp + 0x14]
lea ecx, [ecx + eax*4]
movzx eax, word [ecx]
mov word [edx], ax
movzx ebx, byte [ecx + 2]
movzx eax, byte [ecx + 3]
add ebx, edi
add edx, eax
mov dword [esp + 0x20], ebx
mov eax, dword [esp + 0xa8]
mov dword [esp + 0x34], edx
jmp 0x10079240
cmp ebx, 0x20
ja 0x100793d7
mov ecx, dword [esp + 0x50]
cmp ecx, dword [esp + 0xac]
jb 0x1007937c
mov eax, ebx
shr eax, 3
sub ecx, eax
and ebx, 7
mov dword [esp + 0x50], ecx
mov eax, dword [ecx]
mov dword [esp + 0x48], eax
jmp 0x100793d3
cmp ecx, eax
je 0x100793d3
mov eax, ebx
shr eax, 3
mov dword [esp + 0x2c], eax
mov eax, ecx
sub eax, dword [esp + 0x2c]
cmp eax, dword [esp + 0xa8]
jae 0x100793b4
mov eax, ecx
sub eax, dword [esp + 0xa8]
sub ecx, eax
imul eax, eax, 0xfffffff8
mov dword [esp + 0x50], ecx
add ebx, eax
mov eax, dword [ecx]
mov dword [esp + 0x48], eax
jmp 0x100793d3
mov eax, dword [esp + 0x2c]
sub ecx, eax
imul eax, eax, 0xfffffff8
mov dword [esp + 0x50], ecx
add ebx, eax
mov eax, dword [ecx]
mov dword [esp + 0x48], eax
jmp 0x100793d3
mov edi, dword [esp + 0x1c]
mov edx, dword [esp + 0x18]
mov ecx, dword [esp + 0x34]
mov eax, dword [esp + 0x60]
sub eax, ecx
cmp eax, 2
jb 0x10079530
mov edi, dword [esp + 0x50]
mov edx, dword [esp + 0x34]
nop
cmp ebx, 0x20
jbe 0x100793fc
mov ebp, 3
jmp 0x10079460
cmp edi, dword [esp + 0xac]
jb 0x10079413
mov eax, ebx
and ebx, 7
shr eax, 3
sub edi, eax
xor ebp, ebp
jmp 0x1007945a
cmp edi, dword [esp + 0xa8]
jne 0x10079431
mov eax, esi
cmp ebx, 0x20
jae 0x1007942a
mov ebp, 1
jmp 0x10079462
mov ebp, 2
jmp 0x10079462
mov ecx, ebx
mov eax, edi
shr ecx, 3
xor ebp, ebp
sub eax, ecx
cmp eax, dword [esp + 0xa8]
jae 0x10079453
mov ecx, edi
mov ebp, 1
sub ecx, dword [esp + 0xa8]
imul eax, ecx, 0xfffffff8
sub edi, ecx
add ebx, eax
mov eax, dword [edi]
mov dword [esp + 0x48], eax
mov eax, esi
neg eax
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x60]
add eax, 0xfffffffe
cmp eax, edx
sbb ecx, ecx
xor eax, eax
inc ecx
test ebp, ebp
sete al
test eax, ecx
je 0x100794c0
mov edx, dword [esp + 0x48]
mov ecx, ebx
mov ebp, dword [esp + 0x14]
and ecx, 0x1f
shl edx, cl
mov ecx, esi
neg ecx
and ecx, 0x1f
shr edx, cl
mov ecx, dword [esp + 0x34]
mov ax, word [ebp + edx*4]
mov word [ecx], ax
mov ecx, ebp
movzx eax, byte [ecx + edx*4 + 2]
add ebx, eax
movzx eax, byte [ecx + edx*4 + 3]
mov edx, dword [esp + 0x34]
add edx, eax
mov dword [esp + 0x34], edx
jmp 0x100793f0
mov eax, dword [esp + 0x60]
mov ebp, dword [esp + 0x28]
add eax, 0xfffffffe
mov dword [esp + 0x50], edi
mov edi, dword [esp + 0x1c]
cmp edx, eax
ja 0x1007952c
and dword [esp + 0x10], 0x1f
mov ebp, dword [esp + 0x14]
mov edi, dword [esp + 0x10]
mov esi, dword [esp + 0x48]
mov ecx, ebx
mov eax, esi
and ecx, 0x1f
shl eax, cl
mov ecx, edi
shr eax, cl
lea ecx, [eax*4]
mov ax, word [ecx + ebp]
mov word [edx], ax
movzx eax, byte [ecx + ebp + 2]
add ebx, eax
movzx eax, byte [ecx + ebp + 3]
add edx, eax
mov eax, dword [esp + 0x60]
add eax, 0xfffffffe
cmp edx, eax
jbe 0x100794e8
mov esi, dword [esp + 0x68]
mov ebp, dword [esp + 0x28]
mov edi, dword [esp + 0x1c]
mov dword [esp + 0x34], edx
mov edx, dword [esp + 0x18]
mov eax, dword [esp + 0x60]
cmp dword [esp + 0x34], eax
jae 0x10079589
mov eax, dword [esp + 0x48]
neg esi
mov ecx, ebx
and esi, 0x1f
and ecx, 0x1f
shl eax, cl
mov ecx, esi
shr eax, cl
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x48]
lea esi, [eax + ecx*4]
mov ecx, dword [esp + 0x34]
mov al, byte [esi]
mov byte [ecx], al
cmp byte [esi + 3], 1
jne 0x10079573
movzx eax, byte [esi + 2]
add ebx, eax
jmp 0x10079589
cmp ebx, 0x20
jae 0x10079589
movzx eax, byte [esi + 2]
add ebx, eax
mov eax, 0x20
cmp ebx, 0x20
cmova ebx, eax
mov eax, dword [esp + 0x38]
cmp eax, dword [esp + 0x80]
jne 0x100795a0
cmp edx, 0x20
jne 0x100795a0
lea esi, [edx - 0x1f]
jmp 0x100795a2
xor esi, esi
mov eax, dword [esp + 0x54]
cmp eax, dword [esp + 0xbc]
jne 0x100795b9
cmp edi, 0x20
jne 0x100795b9
lea edx, [edi - 0x1f]
jmp 0x100795bb
xor edx, edx
mov eax, dword [esp + 0x58]
cmp eax, dword [esp + 0x94]
jne 0x100795d2
cmp ebp, 0x20
jne 0x100795d2
lea ecx, [ebp - 0x1f]
jmp 0x100795d4
xor ecx, ecx
mov eax, dword [esp + 0x50]
cmp eax, dword [esp + 0xa8]
jne 0x100795eb
cmp ebx, 0x20
jne 0x100795eb
lea eax, [ebx - 0x1f]
jmp 0x100795ed
xor eax, eax
and eax, ecx
mov ecx, 0xffffffec
and eax, edx
test esi, eax
mov eax, dword [esp + 0xcc]
cmove eax, ecx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xb4
ret