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

Disassembly:
jmp 0x7746c0
sub esp, 0x78
push ebx
mov ebx, dword [esp + 0x8c]
xor eax, eax
test ebx, ebx
sete al
push ebp
mov ebp, dword [esp + 0x94]
xor ecx, ecx
test ebp, ebp
sete cl
or eax, ecx
jne 0x78c6fc
mov eax, dword [0xb15f88]
mov ecx, dword [0xb15f90]
mov edx, dword [0xb15f84]
mov dword [esp + 0x74], eax
mov eax, dword [0xb15f8c]
sub eax, 1
sub ecx, 1
test ebx, ebx
mov dword [esp + 0x70], edx
mov dword [esp + 0x78], eax
mov dword [esp + 0x7c], ecx
jge 0x774722
neg ebx
mov dword [esp + 0x90], ebx
test ebp, ebp
jge 0x77472f
neg ebp
mov dword [esp + 0x94], ebp
mov eax, dword [esp + 0x84]
mov edx, dword [eax + 0xc]
mov eax, dword [eax + 0x14]
push esi
push edi
mov edi, dword [0xb160b8]
mov esi, edi
shl esi, 0xa
shl edi, 0xb
mov dword [esp + 0x74], eax
mov eax, dword [eax + 0xc]
add esi, 0xc02d28
add edi, 0xc43128
cmp dword [esp + 0xa4], 0
mov dword [esp + 0x20], edx
mov dword [esp + 0x1c], eax
je 0x77fd37
push 0
add ecx, 1
push 0x882345
push ecx
call fcn.0057eff1
add esp, 0xc
test eax, eax
mov dword [esp + 0x38], eax
je case.0x789050.5
cmp ebx, ebp
jl 0x77a2c7
mov eax, ebx
imul eax, ebx
cdq
idiv dword [esp + 0x9c]
lea ecx, [ebx + ebx]
lea edx, [ebx*4]
xor ebp, ebp
mov dword [esp + 0x28], ebp
mov dword [esp + 0x48], ebx
mov dword [esp + 0x34], ebp
mov dword [esp + 0x30], eax
mov eax, 3
sub eax, ecx
mov dword [esp + 0x18], eax
mov eax, 3
sub eax, edx
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x8c]
mov ecx, dword [eax + 0x14]
mov eax, dword [ecx + 0x1c]
sub eax, ebp
je 0x77739d
sub eax, 1
jne case.0x77cf1a.5
mov ecx, dword [0xb160d4]
mov edx, ecx
and edx, 0xffffff
cmp edx, 0xffffff
je 0x77485b
movzx eax, byte [esp + 0xa2]
movzx edx, byte [0xb160d6]
imul eax, edx
sar eax, 8
mov byte [esp + 0xa2], al
movzx eax, byte [esp + 0xa1]
movzx edx, ch
imul eax, edx
sar eax, 8
mov byte [esp + 0xa1], al
movzx eax, byte [esp + 0xa0]
movzx ecx, cl
imul eax, ecx
sar eax, 8
mov byte [esp + 0xa0], al
mov eax, dword [0xb160b4]
cmp eax, 0xb
ja case.0x77cf1a.5
jmp dword [eax*4 + 0x78c704]
mov eax, dword [0xb160b8]
cmp eax, 0xff
jne 0x774d26
mov eax, dword [esp + 0x90]
mov ecx, dword [esp + 0x98]
lea edi, [eax + ecx]
mov esi, eax
sub esi, ecx
mov ecx, dword [esp + 0x94]
xor eax, eax
cmp ecx, dword [esp + 0x7c]
mov dword [esp + 0x44], edi
setl al
xor edx, edx
cmp edi, dword [esp + 0x78]
setl dl
xor ecx, ecx
or eax, edx
cmp esi, dword [esp + 0x80]
mov edx, dword [esp + 0x94]
setg cl
or eax, ecx
xor ecx, ecx
cmp edx, dword [esp + 0x84]
setg cl
or eax, ecx
mov ecx, dword [esp + 0x38]
movzx ecx, byte [ecx + edx]
or eax, ecx
mov ecx, dword [esp + 0xa0]
jne 0x77492a
mov eax, dword [esp + 0x78]
cmp esi, eax
jge 0x7748f4
mov esi, eax
mov eax, dword [esp + 0x44]
mov edi, dword [esp + 0x80]
cmp eax, edi
jle 0x774905
mov eax, edi
mov edi, dword [esp + 0x38]
mov byte [edi + edx], 1
mov edi, dword [esp + 0x1c]
imul edi, edx
sub eax, esi
add eax, 1
add edi, dword [esp + 0x20]
lea esi, [edi + esi*4]
mov dword [esi], ecx
add esi, 4
sub eax, 1
jne 0x774920
mov edi, dword [esp + 0x18]
test edi, edi
mov esi, dword [esp + 0x30]
mov dword [esp + 0x2c], 0
jge 0x774973
mov ebp, dword [esp + 0x9c]
cmp ebp, esi
jl 0x77495a
mov eax, 1
mov dword [esp + 0x34], eax
sub ebp, esi
mov dword [esp + 0x2c], eax
jmp 0x77495e
mov eax, dword [esp + 0x34]
lea ecx, [eax*4]
add dword [esp + 0x14], ecx
lea edi, [edi + ecx + 2]
mov dword [esp + 0x18], edi
jmp 0x7749de
mov ebx, dword [esp + 0x98]
add ebx, 0xffffffff
cmp dword [esp + 0x14], 0
jl 0x7749a2
lea eax, [ebx*4]
sub edi, eax
mov ecx, 2
sub ecx, eax
add dword [esp + 0x14], ecx
mov eax, dword [esp + 0x34]
mov dword [esp + 0x18], edi
jmp 0x7749de
mov ebp, dword [esp + 0x9c]
cmp ebp, esi
jl 0x7749be
mov eax, 1
mov dword [esp + 0x34], eax
sub ebp, esi
mov dword [esp + 0x2c], eax
jmp 0x7749c2
mov eax, dword [esp + 0x34]
mov ecx, eax
sub ecx, ebx
add ecx, ecx
add ecx, ecx
lea edi, [edi + ecx + 2]
mov dword [esp + 0x18], edi
mov edi, dword [esp + 0x14]
lea ecx, [edi + ecx + 2]
mov dword [esp + 0x14], ecx
test ebx, ebx
jle 0x774c7e
mov edi, dword [esp + 0x90]
lea ecx, [ebx*4]
mov dword [esp + 0x74], ecx
lea ecx, [eax + edx]
mov dword [esp + 0x68], ecx
imul ecx, dword [esp + 0x1c]
add edi, ebx
mov dword [esp + 0x5c], edi
mov edi, dword [esp + 0x90]
mov dword [esp + 0x58], ecx
mov ecx, dword [esp + 0x1c]
sub edx, eax
sub edi, ebx
neg ecx
mov dword [esp + 0x64], edx
imul edx, dword [esp + 0x1c]
mov dword [esp + 0x60], edi
mov dword [esp + 0x3c], ecx
mov dword [esp + 0x54], edx
cmp dword [esp + 0x2c], 0
je 0x774b83
mov eax, dword [esp + 0x68]
mov esi, dword [esp + 0x5c]
xor edx, edx
cmp eax, dword [esp + 0x7c]
mov dword [esp + 0x24], edi
setl dl
xor ecx, ecx
cmp edi, dword [esp + 0x80]
mov edi, dword [esp + 0x68]
setg cl
xor eax, eax
or edx, ecx
mov ecx, dword [esp + 0x78]
cmp esi, ecx
mov ecx, dword [esp + 0x38]
setl al
or edx, eax
xor eax, eax
cmp edi, dword [esp + 0x84]
setg al
or edx, eax
movzx eax, byte [edi + ecx]
or edx, eax
jne 0x774ada
mov eax, dword [esp + 0x78]
cmp dword [esp + 0x60], eax
jge 0x774a9d
mov dword [esp + 0x24], eax
jmp 0x774aa1
mov eax, dword [esp + 0x24]
mov edx, dword [esp + 0x80]
cmp dword [esp + 0x5c], edx
jle 0x774ab0
mov esi, edx
mov edx, dword [esp + 0x58]
mov byte [edi + ecx], 1
mov ecx, esi
sub ecx, eax
lea eax, [edx + eax*4]
mov edx, dword [esp + 0xa0]
add ecx, 1
add eax, dword [esp + 0x20]
lea ecx, [ecx]
mov dword [eax], edx
add eax, 4
sub ecx, 1
jne 0x774ad0
mov edi, dword [esp + 0x64]
xor ecx, ecx
cmp edi, dword [esp + 0x7c]
setl cl
xor edx, edx
cmp edi, dword [esp + 0x84]
mov edi, dword [esp + 0x24]
setg dl
xor eax, eax
or ecx, edx
cmp esi, dword [esp + 0x78]
setl al
xor edx, edx
or ecx, eax
cmp edi, dword [esp + 0x80]
mov eax, dword [esp + 0x64]
setg dl
or ecx, edx
mov edx, dword [esp + 0x38]
movzx edx, byte [eax + edx]
or ecx, edx
jne 0x774b77
mov ecx, dword [esp + 0x78]
cmp edi, ecx
jge 0x774b2c
mov edi, ecx
mov ecx, dword [esp + 0x80]
cmp esi, ecx
jle 0x774b39
mov esi, ecx
mov ecx, dword [esp + 0x38]
mov byte [eax + ecx], 1
mov eax, dword [esp + 0x54]
mov ecx, dword [esp + 0xa0]
sub esi, edi
mov edx, 1
lea eax, [eax + edi*4]
add esi, edx
add eax, dword [esp + 0x20]
lea esp, [esp]
mov dword [eax], ecx
add eax, 4
sub esi, edx
jne 0x774b60
mov eax, dword [esp + 0x34]
mov esi, dword [esp + 0x30]
mov edi, dword [esp + 0x60]
jmp 0x774b88
mov eax, dword [esp + 0x34]
mov esi, dword [esp + 0x30]
mov edi, dword [esp + 0x60]
mov edx, 1
cmp dword [esp + 0x18], 0
mov dword [esp + 0x2c], 0
jge 0x774be7
add ebp, dword [esp + 0x9c]
cmp ebp, esi
jl 0x774bcb
mov ecx, dword [esp + 0x1c]
add dword [esp + 0x68], edx
add dword [esp + 0x58], ecx
add eax, edx
mov edx, dword [esp + 0x3c]
add dword [esp + 0x54], edx
mov ecx, 1
sub dword [esp + 0x64], ecx
mov dword [esp + 0x34], eax
sub ebp, esi
mov dword [esp + 0x2c], ecx
mov edx, dword [esp + 0x18]
lea ecx, [eax*4]
add dword [esp + 0x14], ecx
lea edx, [edx + ecx + 2]
mov dword [esp + 0x18], edx
jmp 0x774c6f
sub dword [esp + 0x5c], edx
add edi, edx
sub ebx, edx
cmp dword [esp + 0x14], 0
mov dword [esp + 0x60], edi
jl 0x774c16
mov ecx, dword [esp + 0x74]
sub ecx, 4
sub dword [esp + 0x18], ecx
mov edx, 2
sub edx, ecx
add dword [esp + 0x14], edx
mov dword [esp + 0x74], ecx
jmp 0x774c6f
add ebp, dword [esp + 0x9c]
sub dword [esp + 0x74], 4
cmp ebp, esi
jl 0x774c4f
mov ecx, dword [esp + 0x1c]
add dword [esp + 0x68], edx
add dword [esp + 0x58], ecx
add eax, edx
mov edx, dword [esp + 0x3c]
add dword [esp + 0x54], edx
mov ecx, 1
sub dword [esp + 0x64], ecx
mov dword [esp + 0x34], eax
sub ebp, esi
mov dword [esp + 0x2c], ecx
mov ecx, dword [esp + 0x18]
mov edx, eax
sub edx, ebx
add edx, edx
add edx, edx
lea ecx, [ecx + edx + 2]
mov dword [esp + 0x18], ecx
mov ecx, dword [esp + 0x14]
lea edx, [ecx + edx + 2]
mov dword [esp + 0x14], edx
test ebx, ebx
jg 0x774a34
mov edx, dword [esp + 0x94]
mov ecx, dword [esp + 0x90]
sub edx, eax
mov eax, edx
mov esi, ecx
lea edi, [ebx + ecx]
xor ecx, ecx
sub esi, ebx
cmp eax, dword [esp + 0x7c]
setl cl
xor edx, edx
cmp edi, dword [esp + 0x78]
setl dl
or ecx, edx
xor edx, edx
cmp eax, dword [esp + 0x84]
setg dl
or ecx, edx
xor edx, edx
cmp esi, dword [esp + 0x80]
setg dl
or ecx, edx
mov edx, dword [esp + 0x38]
movzx edx, byte [eax + edx]
or ecx, edx
jne case.0x77cf1a.5
mov ecx, dword [esp + 0x78]
cmp esi, ecx
jge 0x774cda
mov esi, ecx
mov ecx, dword [esp + 0x80]
cmp edi, ecx
jle 0x774ce7
mov edi, ecx
mov ecx, dword [esp + 0x38]
mov byte [eax + ecx], 1
imul eax, dword [esp + 0x1c]
sub edi, esi
add edi, 1
add eax, dword [esp + 0x20]
lea eax, [eax + esi*4]
mov edx, dword [esp + 0xa0]
mov dword [eax], edx
add eax, 4
sub edi, 1
jne 0x774d00
mov eax, dword [esp + 0x38]
push eax
call fcn.0057cf76
add esp, 4
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x78
ret
test eax, eax
je case.0x77cf1a.5
mov esi, dword [esp + 0x90]
mov eax, dword [esp + 0x98]
mov ecx, dword [esp + 0x94]
mov edi, esi
sub edi, eax
add esi, eax
xor eax, eax
cmp ecx, dword [esp + 0x7c]
mov dword [esp + 0x24], edi
setl al
xor edx, edx
cmp esi, dword [esp + 0x78]
setl dl
xor ecx, ecx
or eax, edx
cmp edi, dword [esp + 0x80]
mov edx, dword [esp + 0x94]
mov edi, dword [esp + 0x38]
setg cl
or eax, ecx
xor ecx, ecx
cmp edx, dword [esp + 0x84]
setg cl
or eax, ecx
movzx ecx, byte [edi + edx]
or eax, ecx
jne 0x774e37
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x78]
cmp eax, ecx
jge 0x774da2
mov eax, ecx
mov ecx, dword [esp + 0x80]
cmp esi, ecx
jle 0x774daf
mov esi, ecx
mov ecx, dword [esp + 0x1c]
imul ecx, edx
sub esi, eax
add esi, 1
add ecx, dword [esp + 0x20]
mov byte [edi + edx], 1
lea eax, [ecx + eax*4]
movzx ecx, byte [esp + 0xa0]
mov edi, esi
movzx esi, byte [eax]
mov edx, ecx
sub edx, esi
imul edx, dword [0xb160b8]
shl esi, 8
add edx, esi
sar edx, 8
mov byte [eax], dl
movzx esi, byte [eax + 1]
movzx edx, byte [esp + 0xa1]
sub edx, esi
imul edx, dword [0xb160b8]
shl esi, 8
add edx, esi
sar edx, 8
mov byte [eax + 1], dl
movzx esi, byte [eax + 2]
movzx edx, byte [esp + 0xa2]
sub edx, esi
imul edx, dword [0xb160b8]
shl esi, 8
add edx, esi
sar edx, 8
mov byte [eax + 2], dl
add eax, 4
sub edi, 1
jne 0x774dd0
mov edx, dword [esp + 0x94]
mov ecx, dword [esp + 0x18]
test ecx, ecx
mov esi, dword [esp + 0x1c]
mov dword [esp + 0x2c], 0
jge 0x774e8a
mov ebp, dword [esp + 0x9c]
mov eax, dword [esp + 0x30]
cmp ebp, eax
mov dword [esp + 0x28], ebp
jl 0x774e74
sub ebp, eax
mov dword [esp + 0x34], 1
mov dword [esp + 0x28], ebp
mov dword [esp + 0x2c], 1
mov eax, dword [esp + 0x34]
add eax, eax
add eax, eax
add dword [esp + 0x14], eax
lea ecx, [ecx + eax + 2]
mov dword [esp + 0x18], ecx
jmp 0x774efc
mov ebx, dword [esp + 0x98]
add ebx, 0xffffffff
cmp dword [esp + 0x14], 0
jl 0x774eb5
lea eax, [ebx*4]
sub ecx, eax
mov dword [esp + 0x18], ecx
mov ecx, 2
sub ecx, eax
add dword [esp + 0x14], ecx
jmp 0x774efc
mov ebp, dword [esp + 0x9c]
mov eax, dword [esp + 0x30]
cmp ebp, eax
mov dword [esp + 0x28], ebp
jl 0x774ede
sub ebp, eax
mov dword [esp + 0x34], 1
mov dword [esp + 0x28], ebp
mov dword [esp + 0x2c], 1
mov eax, dword [esp + 0x34]
sub eax, ebx
add eax, eax
add eax, eax
lea ecx, [ecx + eax + 2]
mov dword [esp + 0x18], ecx
mov ecx, dword [esp + 0x14]
lea eax, [ecx + eax + 2]
mov dword [esp + 0x14], eax
test ebx, ebx
jle 0x77524d
mov eax, dword [esp + 0x90]
add eax, ebx
lea ecx, [ebx*4]
mov dword [esp + 0x74], ecx
mov ecx, dword [esp + 0x34]
lea edi, [ecx + edx]
mov dword [esp + 0x5c], eax
mov eax, edx
sub eax, ecx
mov ecx, edi
imul ecx, esi
mov dword [esp + 0x68], edi
mov edi, dword [esp + 0x90]
mov dword [esp + 0x58], ecx
mov ecx, esi
sub edi, ebx
neg ecx
mov dword [esp + 0x64], eax
imul eax, esi
mov dword [esp + 0x60], edi
mov dword [esp + 0x3c], ecx
mov dword [esp + 0x54], eax
cmp dword [esp + 0x2c], 0
je 0x775147
mov eax, dword [esp + 0x68]
mov esi, dword [esp + 0x5c]
xor edx, edx
cmp eax, dword [esp + 0x7c]
mov dword [esp + 0x24], edi
setl dl
xor ecx, ecx
cmp edi, dword [esp + 0x80]
mov edi, dword [esp + 0x68]
setg cl
xor eax, eax
or edx, ecx
mov ecx, dword [esp + 0x78]
cmp esi, ecx
mov ecx, dword [esp + 0x38]
setl al
or edx, eax
xor eax, eax
cmp edi, dword [esp + 0x84]
setg al
or edx, eax
movzx eax, byte [edi + ecx]
or edx, eax
jne 0x775056
mov eax, dword [esp + 0x78]
cmp dword [esp + 0x60], eax
jge 0x774fc1
mov dword [esp + 0x24], eax
jmp 0x774fc5
mov eax, dword [esp + 0x24]
mov edx, dword [esp + 0x80]
cmp dword [esp + 0x5c], edx
jle 0x774fd4
mov esi, edx
mov byte [edi + ecx], 1
mov ecx, dword [esp + 0x58]
movzx edi, byte [esp + 0xa0]
mov ebp, esi
sub ebp, eax
lea ecx, [ecx + eax*4]
add ebp, 1
add ecx, dword [esp + 0x20]
movzx edx, byte [ecx]
mov eax, edi
sub eax, edx
imul eax, dword [0xb160b8]
shl edx, 8
add eax, edx
sar eax, 8
mov byte [ecx], al
movzx edx, byte [ecx + 1]
movzx eax, byte [esp + 0xa1]
sub eax, edx
imul eax, dword [0xb160b8]
shl edx, 8
add eax, edx
sar eax, 8
mov byte [ecx + 1], al
movzx edx, byte [ecx + 2]
movzx eax, byte [esp + 0xa2]
sub eax, edx
imul eax, dword [0xb160b8]
shl edx, 8
add eax, edx
sar eax, 8
mov byte [ecx + 2], al
add ecx, 4
sub ebp, 1
jne 0x774ff2
mov ebp, dword [esp + 0x28]
mov edi, dword [esp + 0x64]
xor ecx, ecx
cmp edi, dword [esp + 0x7c]
setl cl
xor edx, edx
cmp edi, dword [esp + 0x84]
mov edi, dword [esp + 0x24]
setg dl
xor eax, eax
or ecx, edx
cmp esi, dword [esp + 0x78]
setl al
xor edx, edx
or ecx, eax
cmp edi, dword [esp + 0x80]
mov eax, dword [esp + 0x64]
setg dl
or ecx, edx
mov edx, dword [esp + 0x38]
movzx edx, byte [eax + edx]
or ecx, edx
jne 0x77513f
mov ecx, dword [esp + 0x78]
cmp edi, ecx
jge 0x7750ac
mov edi, ecx
mov ecx, dword [esp + 0x80]
cmp esi, ecx
jle 0x7750b9
mov esi, ecx
mov ecx, dword [esp + 0x38]
mov edx, dword [esp + 0x54]
movzx ebp, byte [esp + 0xa0]
sub esi, edi
mov byte [eax + ecx], 1
lea ecx, [edx + edi*4]
movzx edi, byte [esp + 0xa1]
add esi, 1
add ecx, dword [esp + 0x20]
movzx edx, byte [ecx]
mov eax, ebp
sub eax, edx
imul eax, dword [0xb160b8]
shl edx, 8
add eax, edx
sar eax, 8
mov byte [ecx], al
movzx edx, byte [ecx + 1]
mov eax, edi
sub eax, edx
imul eax, dword [0xb160b8]
shl edx, 8
add eax, edx
sar eax, 8
mov byte [ecx + 1], al
movzx edx, byte [ecx + 2]
movzx eax, byte [esp + 0xa2]
sub eax, edx
imul eax, dword [0xb160b8]
shl edx, 8
add eax, edx
sar eax, 8
mov byte [ecx + 2], al
add ecx, 4
sub esi, 1
jne 0x7750e1
mov ebp, dword [esp + 0x28]
mov ecx, dword [esp + 0x3c]
mov edi, dword [esp + 0x60]
mov edx, dword [esp + 0x18]
test edx, edx
mov dword [esp + 0x2c], 0
jge 0x7751a8
add ebp, dword [esp + 0x9c]
mov eax, dword [esp + 0x30]
cmp ebp, eax
mov dword [esp + 0x28], ebp
jl 0x775193
mov esi, dword [esp + 0x1c]
add dword [esp + 0x34], 1
add dword [esp + 0x68], 1
add dword [esp + 0x58], esi
add dword [esp + 0x54], ecx
sub dword [esp + 0x64], 1
sub ebp, eax
mov dword [esp + 0x28], ebp
mov dword [esp + 0x2c], 1
mov eax, dword [esp + 0x34]
add eax, eax
add eax, eax
add dword [esp + 0x14], eax
lea edx, [edx + eax + 2]
jmp 0x77523a
mov esi, dword [esp + 0x14]
sub dword [esp + 0x5c], 1
add edi, 1
sub ebx, 1
test esi, esi
mov dword [esp + 0x60], edi
jl 0x7751df
mov eax, dword [esp + 0x74]
sub eax, 4
sub edx, eax
mov dword [esp + 0x18], edx
mov edx, 2
sub edx, eax
add esi, edx
mov dword [esp + 0x74], eax
mov dword [esp + 0x14], esi
jmp 0x77523e
add ebp, dword [esp + 0x9c]
mov eax, dword [esp + 0x30]
sub dword [esp + 0x74], 4
cmp ebp, eax
mov dword [esp + 0x28], ebp
jl 0x775224
mov edx, dword [esp + 0x1c]
add dword [esp + 0x58], edx
add dword [esp + 0x34], 1
add dword [esp + 0x68], 1
add dword [esp + 0x54], ecx
sub dword [esp + 0x64], 1
mov edx, dword [esp + 0x18]
sub ebp, eax
mov dword [esp + 0x28], ebp
mov dword [esp + 0x2c], 1
mov eax, dword [esp + 0x34]
sub eax, ebx
add eax, eax
add eax, eax
lea edx, [edx + eax + 2]
lea eax, [esi + eax + 2]
mov dword [esp + 0x14], eax
mov dword [esp + 0x18], edx
test ebx, ebx
jg 0x774f54
mov edx, dword [esp + 0x94]
sub edx, dword [esp + 0x34]
mov eax, dword [esp + 0x90]
xor ecx, ecx
mov ebp, eax
sub ebp, ebx
lea esi, [ebx + eax]
mov eax, edx
cmp eax, dword [esp + 0x7c]
setl cl
xor edx, edx
cmp esi, dword [esp + 0x78]
setl dl
or ecx, edx
xor edx, edx
cmp eax, dword [esp + 0x84]
setg dl
or ecx, edx
xor edx, edx
cmp ebp, dword [esp + 0x80]
setg dl
or ecx, edx
mov edx, dword [esp + 0x38]
movzx edx, byte [eax + edx]
or ecx, edx
jne case.0x77cf1a.5
mov ecx, dword [esp + 0x78]
cmp ebp, ecx
jge 0x7752ab
mov ebp, ecx
mov ecx, dword [esp + 0x80]
cmp esi, ecx
jle 0x7752b8
mov esi, ecx
mov ecx, dword [esp + 0x38]
movzx edi, byte [esp + 0xa0]
movzx edx, byte [esp + 0xa2]
mov byte [eax + ecx], 1
imul eax, dword [esp + 0x1c]
sub esi, ebp
add esi, 1
add eax, dword [esp + 0x20]
lea eax, [eax + ebp*4]
movzx ebp, byte [esp + 0xa1]
lea esp, [esp]
movzx ecx, byte [eax]
mov ebx, edi
sub ebx, ecx
imul ebx, dword [0xb160b8]
shl ecx, 8
add ebx, ecx
sar ebx, 8
mov byte [eax], bl
movzx ecx, byte [eax + 1]
mov ebx, ebp
sub ebx, ecx
imul ebx, dword [0xb160b8]
shl ecx, 8
add ebx, ecx
sar ebx, 8
mov byte [eax + 1], bl
movzx ecx, byte [eax + 2]
mov ebx, edx
sub ebx, ecx
imul ebx, dword [0xb160b8]
shl ecx, 8
add ebx, ecx
sar ebx, 8
mov byte [eax + 2], bl
add eax, 4
sub esi, 1
jne 0x7752f0
mov eax, dword [esp + 0x38]
push eax
call fcn.0057cf76
add esp, 4
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x78
ret
cmp dword [0xb160b8], 0
je case.0x77cf1a.5
mov edi, dword [esp + 0x90]
mov ecx, dword [esp + 0x98]
mov ebp, dword [esp + 0x94]
xor edx, edx
mov eax, edi
sub eax, ecx
add edi, ecx
cmp ebp, dword [esp + 0x7c]
mov dword [esp + 0x24], eax
setl dl
xor eax, eax
cmp edi, dword [esp + 0x78]
setl al
xor ecx, ecx
or edx, eax
mov eax, dword [esp + 0x24]
cmp eax, dword [esp + 0x80]
setg cl
or edx, ecx
xor ecx, ecx
cmp ebp, dword [esp + 0x84]
setg cl
or edx, ecx
mov ecx, dword [esp + 0x38]
movzx eax, byte [ecx + ebp]
or edx, eax
jne 0x775492
mov eax, dword [esp + 0x24]
mov edx, dword [esp + 0x78]
cmp eax, edx
jge 0x7753d7
mov eax, edx
mov edx, dword [esp + 0x80]
cmp edi, edx
jle 0x7753e4
mov edi, edx
movzx edx, byte [esp + 0xa0]
mov byte [ecx + ebp], 1
mov ecx, dword [esp + 0x1c]
imul ecx, ebp
sub edi, eax
add edi, 1
add ecx, dword [esp + 0x20]
mov dword [esp + 0x40], edi
lea edi, [ecx + eax*4]
movzx ecx, byte [esp + 0xa1]
lea eax, [esi + edx*4]
mov dword [esp + 0x54], eax
movzx eax, byte [esp + 0xa2]
lea edx, [esi + ecx*4]
lea ecx, [esi + eax*4]
mov dword [esp + 0x4c], edx
mov dword [esp + 0x50], ecx
lea esp, [esp]
mov edx, dword [esp + 0x54]
mov al, byte [edx]
mov ecx, dword [esp + 0x4c]
mov dl, byte [ecx]
mov byte [esp + 0x10], al
mov eax, dword [esp + 0x50]
mov cl, byte [eax]
mov eax, dword [edi]
mov byte [esp + 0x12], cl
mov byte [esp + 0x11], dl
mov ecx, dword [esp + 0x10]
and ecx, 0xfefeff
mov edx, eax
or eax, dword [esp + 0x10]
and edx, 0xfefeff
add edx, ecx
mov ecx, edx
and ecx, 0x1010100
mov ebp, ecx
shr ebp, 8
sub ecx, ebp
and eax, 0x10100
or ecx, eax
or ecx, edx
mov dword [edi], ecx
mov ebp, 1
add edi, 4
sub dword [esp + 0x40], ebp
jne 0x775430
jmp 0x775497
mov ebp, 1
mov edx, dword [esp + 0x18]
test edx, edx
mov ecx, dword [esp + 0x30]
mov eax, dword [esp + 0x9c]
mov dword [esp + 0x2c], 0
jge 0x7754da
cmp eax, ecx
mov dword [esp + 0x28], eax
jl 0x7754c8
sub eax, ecx
mov dword [esp + 0x34], ebp
mov dword [esp + 0x28], eax
mov dword [esp + 0x2c], ebp
mov eax, dword [esp + 0x34]
add eax, eax
add eax, eax
add dword [esp + 0x14], eax
lea edx, [edx + eax + 2]
jmp 0x77553c
mov ebx, dword [esp + 0x98]
mov edi, dword [esp + 0x14]
add ebx, 0xffffffff
test edi, edi
mov dword [esp + 0x48], ebx
jl 0x775508
lea eax, [ebx*4]
mov ecx, 2
sub ecx, eax
sub edx, eax
add edi, ecx
mov dword [esp + 0x14], edi
jmp 0x77553c
cmp eax, ecx
mov dword [esp + 0x28], eax
jl 0x775526
sub eax, ecx
mov dword [esp + 0x34], 1
mov dword [esp + 0x28], eax
mov dword [esp + 0x2c], 1
mov eax, dword [esp + 0x34]
sub eax, ebx
add eax, eax
add eax, eax
lea edx, [edx + eax + 2]
lea eax, [edi + eax + 2]
mov dword [esp + 0x14], eax
test ebx, ebx
mov dword [esp + 0x18], edx
jle 0x7758fb
mov edx, dword [esp + 0x34]
mov eax, dword [esp + 0x94]
mov edi, dword [esp + 0x90]
lea ecx, [ebx*4]
mov dword [esp + 0x74], ecx
lea ecx, [edx + eax]
mov dword [esp + 0x58], ecx
sub eax, edx
mov edx, dword [esp + 0x1c]
imul ecx, edx
mov dword [esp + 0x68], ecx
mov ecx, edi
sub ecx, ebx
mov dword [esp + 0x60], ecx
mov ecx, edx
neg ecx
mov dword [esp + 0x5c], eax
imul eax, edx
lea ebp, [ebx + edi]
mov dword [esp + 0x64], ebp
mov ebp, dword [esp + 0x2c]
mov dword [esp + 0x3c], ecx
mov dword [esp + 0x6c], eax
nop
test ebp, ebp
je 0x7757ff
mov edx, dword [esp + 0x60]
mov edi, dword [esp + 0x80]
mov eax, dword [esp + 0x64]
mov dword [esp + 0x24], edx
mov edx, dword [esp + 0x7c]
xor ecx, ecx
cmp dword [esp + 0x58], edx
mov dword [esp + 0x44], eax
setl cl
xor edx, edx
cmp dword [esp + 0x60], edi
mov edi, dword [esp + 0x78]
setg dl
or ecx, edx
xor edx, edx
cmp eax, edi
mov edi, dword [esp + 0x84]
setl dl
or ecx, edx
xor edx, edx
cmp dword [esp + 0x58], edi
mov edi, dword [esp + 0x38]
setg dl
or ecx, edx
mov edx, dword [esp + 0x58]
movzx edx, byte [edx + edi]
or ecx, edx
jne 0x7756e8
mov ecx, dword [esp + 0x78]
cmp dword [esp + 0x60], ecx
jge 0x77561a
mov dword [esp + 0x24], ecx
jmp 0x77561e
mov ecx, dword [esp + 0x24]
mov edx, dword [esp + 0x80]
cmp dword [esp + 0x64], edx
jle 0x775631
mov eax, edx
mov dword [esp + 0x44], edx
mov edx, dword [esp + 0x58]
mov byte [edx + edi], 1
mov edx, dword [esp + 0x68]
lea ebp, [edx + ecx*4]
sub eax, ecx
movzx ecx, byte [esp + 0xa0]
lea edx, [esi + ecx*4]
movzx ecx, byte [esp + 0xa1]
mov dword [esp + 0x54], edx
lea edx, [esi + ecx*4]
movzx ecx, byte [esp + 0xa2]
mov dword [esp + 0x4c], edx
lea edx, [esi + ecx*4]
add eax, 1
add ebp, dword [esp + 0x20]
mov dword [esp + 0x50], edx
jmp 0x775680
mov ecx, dword [esp + 0x54]
movzx edx, byte [ecx]
mov ecx, dword [esp + 0x4c]
mov byte [esp + 0x10], dl
movzx edx, byte [ecx]
mov ecx, dword [esp + 0x50]
mov byte [esp + 0x11], dl
movzx edx, byte [ecx]
mov byte [esp + 0x12], dl
mov edx, dword [ebp]
mov ecx, dword [esp + 0x10]
and ecx, 0xfefeff
mov edi, edx
or edx, dword [esp + 0x10]
and edi, 0xfefeff
add edi, ecx
mov ecx, edi
and ecx, 0x1010100
mov ebx, ecx
shr ebx, 8
sub ecx, ebx
and edx, 0x10100
or ecx, edx
or ecx, edi
mov dword [ebp], ecx
add ebp, 4
sub eax, 1
jne 0x775680
mov ebx, dword [esp + 0x48]
mov eax, dword [esp + 0x44]
mov ecx, dword [esp + 0x7c]
mov edi, dword [esp + 0x84]
xor edx, edx
cmp dword [esp + 0x5c], ecx
setl dl
xor ecx, ecx
cmp dword [esp + 0x5c], edi
mov edi, dword [esp + 0x80]
setg cl
or edx, ecx
xor ecx, ecx
cmp eax, dword [esp + 0x78]
setl cl
or edx, ecx
xor ecx, ecx
cmp dword [esp + 0x24], edi
mov edi, dword [esp + 0x38]
setg cl
or edx, ecx
mov ecx, dword [esp + 0x5c]
movzx ecx, byte [ecx + edi]
or edx, ecx
jne 0x7757ff
mov ecx, dword [esp + 0x24]
mov edx, dword [esp + 0x78]
cmp ecx, edx
jge 0x775746
mov ecx, edx
mov edx, dword [esp + 0x80]
cmp eax, edx
jle 0x775753
mov eax, edx
mov edx, dword [esp + 0x5c]
sub eax, ecx
add eax, 1
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x6c]
lea ebp, [eax + ecx*4]
movzx ecx, byte [esp + 0xa0]
movzx eax, byte [esp + 0xa1]
add ebp, dword [esp + 0x20]
mov byte [edx + edi], 1
lea edx, [esi + ecx*4]
mov dword [esp + 0x54], edx
movzx edx, byte [esp + 0xa2]
lea ecx, [esi + eax*4]
lea eax, [esi + edx*4]
mov dword [esp + 0x4c], ecx
mov dword [esp + 0x50], eax
lea esp, [esp]
mov ecx, dword [esp + 0x54]
mov dl, byte [ecx]
mov eax, dword [esp + 0x4c]
mov cl, byte [eax]
mov byte [esp + 0x10], dl
mov edx, dword [esp + 0x50]
mov al, byte [edx]
mov edx, dword [ebp]
mov byte [esp + 0x11], cl
mov byte [esp + 0x12], al
mov ecx, dword [esp + 0x10]
and ecx, 0xfefeff
mov edi, edx
or edx, dword [esp + 0x10]
and edi, 0xfefeff
add edi, ecx
mov ecx, edi
and ecx, 0x1010100
mov eax, ecx
shr eax, 8
sub ecx, eax
and edx, 0x10100
or ecx, edx
or ecx, edi
mov dword [ebp], ecx
add ebp, 4
sub dword [esp + 0x40], 1
jne 0x7757a0
mov edi, dword [esp + 0x18]
xor ebp, ebp
test edi, edi
jge 0x775858
mov eax, dword [esp + 0x28]
add eax, dword [esp + 0x9c]
mov ecx, dword [esp + 0x30]
cmp eax, ecx
mov dword [esp + 0x28], eax
jl 0x775847
mov edx, dword [esp + 0x1c]
add dword [esp + 0x68], edx
mov edx, dword [esp + 0x3c]
add dword [esp + 0x6c], edx
mov ebp, 1
add dword [esp + 0x34], ebp
add dword [esp + 0x58], ebp
sub dword [esp + 0x5c], ebp
sub eax, ecx
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x34]
add eax, eax
add eax, eax
add dword [esp + 0x14], eax
jmp 0x7758eb
mov edx, dword [esp + 0x14]
mov eax, 1
add dword [esp + 0x60], eax
sub dword [esp + 0x64], eax
sub ebx, eax
test edx, edx
mov dword [esp + 0x48], ebx
jl 0x775893
mov eax, dword [esp + 0x74]
sub eax, 4
mov ecx, 2
sub edi, eax
sub ecx, eax
add edx, ecx
mov dword [esp + 0x74], eax
mov dword [esp + 0x18], edi
mov dword [esp + 0x14], edx
jmp 0x7758f3
mov eax, dword [esp + 0x28]
add eax, dword [esp + 0x9c]
mov ecx, dword [esp + 0x30]
sub dword [esp + 0x74], 4
cmp eax, ecx
mov dword [esp + 0x28], eax
jl 0x7758d9
mov ebp, dword [esp + 0x1c]
add dword [esp + 0x68], ebp
mov ebp, dword [esp + 0x3c]
add dword [esp + 0x6c], ebp
add dword [esp + 0x34], 1
add dword [esp + 0x58], 1
sub dword [esp + 0x5c], 1
sub eax, ecx
mov dword [esp + 0x28], eax
mov ebp, 1
mov eax, dword [esp + 0x34]
sub eax, ebx
add eax, eax
add eax, eax
lea edx, [edx + eax + 2]
mov dword [esp + 0x14], edx
lea ecx, [edi + eax + 2]
mov dword [esp + 0x18], ecx
test ebx, ebx
jg 0x7755a0
mov eax, dword [esp + 0x90]
xor ecx, ecx
mov ebp, eax
lea edi, [ebx + eax]
mov eax, dword [esp + 0x94]
sub eax, dword [esp + 0x34]
sub ebp, ebx
cmp eax, dword [esp + 0x7c]
setl cl
xor edx, edx
cmp edi, dword [esp + 0x78]
setl dl
or ecx, edx
xor edx, edx
cmp eax, dword [esp + 0x84]
setg dl
or ecx, edx
xor edx, edx
cmp ebp, dword [esp + 0x80]
setg dl
or ecx, edx
mov edx, dword [esp + 0x38]
movzx edx, byte [eax + edx]
or ecx, edx
jne case.0x77cf1a.5
mov ecx, dword [esp + 0x78]
cmp ebp, ecx
jge 0x77595e
mov ebp, ecx
mov ecx, dword [esp + 0x80]
cmp edi, ecx
jle 0x77596b
mov edi, ecx
mov ecx, dword [esp + 0x38]
movzx edx, byte [esp + 0xa0]
mov byte [eax + ecx], 1
imul eax, dword [esp + 0x1c]
movzx ecx, byte [esp + 0xa1]
sub edi, ebp
add edi, 1
add eax, dword [esp + 0x20]
mov ebx, edi
lea edi, [eax + ebp*4]
lea eax, [esi + edx*4]
mov dword [esp + 0x54], eax
movzx eax, byte [esp + 0xa2]
lea edx, [esi + ecx*4]
lea ecx, [esi + eax*4]
mov dword [esp + 0x4c], edx
mov dword [esp + 0x50], ecx
mov edx, dword [esp + 0x54]
mov al, byte [edx]
mov ecx, dword [esp + 0x4c]
mov dl, byte [ecx]
mov byte [esp + 0x10], al
mov eax, dword [esp + 0x50]
mov cl, byte [eax]
mov byte [esp + 0x11], dl
mov byte [esp + 0x12], cl
mov ecx, dword [edi]
mov ebp, dword [esp + 0x10]
mov edx, ecx
mov eax, ebp
and eax, 0xfefeff
and edx, 0xfefeff
add edx, eax
mov eax, edx
and eax, 0x1010100
mov esi, eax
shr esi, 8
or ecx, ebp
sub eax, esi
and ecx, 0x10100
or eax, ecx
or eax, edx
mov dword [edi], eax
add edi, 4
sub ebx, 1
jne 0x7759b3
mov eax, dword [esp + 0x38]
push eax
call fcn.0057cf76
add esp, 4
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x78
ret
cmp dword [0xb160b8], 0
je case.0x77cf1a.5
mov edi, dword [esp + 0x90]
mov eax, dword [esp + 0x98]
xor edx, edx
mov ebp, edi
sub ebp, eax
add edi, eax
mov eax, dword [esp + 0x94]
cmp eax, dword [esp + 0x7c]
mov dword [esp + 0x24], ebp
setl dl
xor ecx, ecx
cmp edi, dword [esp + 0x78]
setl cl
xor eax, eax
or edx, ecx
cmp ebp, dword [esp + 0x80]
mov ecx, dword [esp + 0x94]
mov ebp, dword [esp + 0x38]
setg al
or edx, eax
xor eax, eax
cmp ecx, dword [esp + 0x84]
setg al
or edx, eax
movzx eax, byte [ecx + ebp]
or edx, eax
jne 0x775b48
mov eax, dword [esp + 0x24]
mov edx, dword [esp + 0x78]
cmp eax, edx
jge 0x775aa2
mov eax, edx
mov edx, dword [esp + 0x80]
cmp edi, edx
jle 0x775aaf
mov edi, edx
mov edx, dword [esp + 0x1c]
imul edx, ecx
sub edi, eax
add edi, 1
add edx, dword [esp + 0x20]
mov byte [ecx + ebp], 1
lea ecx, [edx + eax*4]
movzx eax, byte [esp + 0xa0]
lea edx, [esi + eax*4]
movzx eax, byte [esp + 0xa1]
mov dword [esp + 0x54], edx
lea edx, [esi + eax*4]
movzx eax, byte [esp + 0xa2]
mov dword [esp + 0x4c], edx
lea edx, [esi + eax*4]
mov dword [esp + 0x50], edx
mov eax, dword [esp + 0x54]
movzx edx, byte [eax]
mov eax, dword [esp + 0x4c]
mov byte [esp + 0x10], dl
movzx edx, byte [eax]
mov eax, dword [esp + 0x50]
mov byte [esp + 0x11], dl
movzx edx, byte [eax]
mov byte [esp + 0x12], dl
mov edx, dword [ecx]
mov eax, dword [esp + 0x10]
and eax, 0xfefefeff
or edx, 0x1010100
sub edx, eax
mov eax, edx
and eax, 0x1010100
mov ebp, eax
shr ebp, 8
sub eax, ebp
and eax, edx
mov dword [ecx], eax
add ecx, 4
sub edi, 1
jne 0x775af3
mov ecx, dword [esp + 0x94]
mov edi, dword [esp + 0x1c]
xor ebp, ebp
cmp dword [esp + 0x18], ebp
jge 0x775b97
mov eax, dword [esp + 0x9c]
mov edx, dword [esp + 0x30]
cmp eax, edx
mov dword [esp + 0x28], eax
jl 0x775b7a
sub eax, edx
mov dword [esp + 0x34], 1
mov dword [esp + 0x28], eax
mov ebp, 1
mov eax, dword [esp + 0x34]
mov edx, dword [esp + 0x18]
add eax, eax
add eax, eax
add dword [esp + 0x14], eax
lea edx, [edx + eax + 2]
mov dword [esp + 0x18], edx
jmp 0x775c0c
mov ebx, dword [esp + 0x98]
add ebx, 0xffffffff
cmp dword [esp + 0x14], 0
mov dword [esp + 0x48], ebx
jl 0x775bc4
lea eax, [ebx*4]
sub dword [esp + 0x18], eax
mov edx, 2
sub edx, eax
add dword [esp + 0x14], edx
jmp 0x775c0c
mov eax, dword [esp + 0x9c]
mov edx, dword [esp + 0x30]
cmp eax, edx
mov dword [esp + 0x28], eax
jl 0x775bea
sub eax, edx
mov dword [esp + 0x34], 1
mov dword [esp + 0x28], eax
mov ebp, 1
mov eax, dword [esp + 0x34]
mov edx, dword [esp + 0x18]
sub eax, ebx
add eax, eax
add eax, eax
lea edx, [edx + eax + 2]
mov dword [esp + 0x18], edx
mov edx, dword [esp + 0x14]
lea eax, [edx + eax + 2]
mov dword [esp + 0x14], eax
test ebx, ebx
jle 0x775f98
mov eax, dword [esp + 0x90]
mov edx, dword [esp + 0x94]
add eax, ebx
lea ecx, [ebx*4]
mov dword [esp + 0x74], ecx
mov ecx, dword [esp + 0x34]
add edx, ecx
mov dword [esp + 0x60], eax
mov eax, dword [esp + 0x94]
sub eax, ecx
mov ecx, edx
imul ecx, edi
mov dword [esp + 0x5c], edx
mov dword [esp + 0x6c], ecx
mov ecx, dword [esp + 0x90]
mov edx, edi
sub ecx, ebx
neg edx
mov dword [esp + 0x58], eax
imul eax, edi
mov dword [esp + 0x64], ecx
mov dword [esp + 0x3c], edx
mov dword [esp + 0x68], eax
nop
test ebp, ebp
je 0x775e94
mov ecx, dword [esp + 0x64]
mov edi, dword [esp + 0x80]
mov eax, dword [esp + 0x60]
mov dword [esp + 0x24], ecx
mov ecx, dword [esp + 0x7c]
xor edx, edx
cmp dword [esp + 0x5c], ecx
mov ebp, dword [esp + 0x38]
setl dl
xor ecx, ecx
cmp dword [esp + 0x64], edi
mov edi, dword [esp + 0x78]
setg cl
or edx, ecx
xor ecx, ecx
cmp eax, edi
mov edi, dword [esp + 0x84]
setl cl
or edx, ecx
xor ecx, ecx
cmp dword [esp + 0x5c], edi
mov edi, dword [esp + 0x5c]
setg cl
or edx, ecx
movzx ecx, byte [edi + ebp]
or edx, ecx
jne 0x775d94
mov ecx, dword [esp + 0x78]
cmp dword [esp + 0x64], ecx
jge 0x775ce6
mov dword [esp + 0x24], ecx
jmp 0x775cea
mov ecx, dword [esp + 0x24]
mov edx, dword [esp + 0x80]
cmp dword [esp + 0x60], edx
jle 0x775cf9
mov eax, edx
mov edx, dword [esp + 0x6c]
mov byte [edi + ebp], 1
lea edi, [edx + ecx*4]
mov ebp, eax
sub ebp, ecx
movzx ecx, byte [esp + 0xa0]
lea edx, [esi + ecx*4]
movzx ecx, byte [esp + 0xa1]
mov dword [esp + 0x54], edx
lea edx, [esi + ecx*4]
movzx ecx, byte [esp + 0xa2]
mov dword [esp + 0x4c], edx
lea edx, [esi + ecx*4]
add ebp, 1
add edi, dword [esp + 0x20]
mov dword [esp + 0x50], edx
lea esp, [esp]
mov ecx, dword [esp + 0x54]
movzx edx, byte [ecx]
mov ecx, dword [esp + 0x4c]
mov byte [esp + 0x10], dl
movzx edx, byte [ecx]
mov ecx, dword [esp + 0x50]
mov byte [esp + 0x11], dl
movzx edx, byte [ecx]
mov byte [esp + 0x12], dl
mov edx, dword [edi]
mov ecx, dword [esp + 0x10]
and ecx, 0xfefefeff
or edx, 0x1010100
sub edx, ecx
mov ecx, edx
and ecx, 0x1010100
mov ebx, ecx
shr ebx, 8
sub ecx, ebx
and ecx, edx
mov dword [edi], ecx
add edi, 4
sub ebp, 1
jne 0x775d40
mov ebx, dword [esp + 0x48]
mov ecx, dword [esp + 0x58]
mov edi, dword [esp + 0x84]
xor edx, edx
cmp ecx, dword [esp + 0x7c]
mov ebp, dword [esp + 0x38]
setl dl
xor ecx, ecx
cmp dword [esp + 0x58], edi
mov edi, dword [esp + 0x80]
setg cl
or edx, ecx
xor ecx, ecx
cmp eax, dword [esp + 0x78]
setl cl
or edx, ecx
xor ecx, ecx
cmp dword [esp + 0x24], edi
mov edi, dword [esp + 0x58]
setg cl
or edx, ecx
movzx ecx, byte [edi + ebp]
or edx, ecx
jne 0x775e90
mov ecx, dword [esp + 0x24]
mov edx, dword [esp + 0x78]
cmp ecx, edx
jge 0x775df2
mov ecx, edx
mov edx, dword [esp + 0x80]
cmp eax, edx
jle 0x775dff
mov eax, edx
mov edx, dword [esp + 0x68]
sub eax, ecx
mov byte [edi + ebp], 1
lea edi, [edx + ecx*4]
movzx ecx, byte [esp + 0xa0]
lea edx, [esi + ecx*4]
movzx ecx, byte [esp + 0xa1]
mov dword [esp + 0x54], edx
lea edx, [esi + ecx*4]
movzx ecx, byte [esp + 0xa2]
mov dword [esp + 0x4c], edx
lea edx, [esi + ecx*4]
add eax, 1
add edi, dword [esp + 0x20]
mov dword [esp + 0x50], edx
mov ecx, dword [esp + 0x54]
movzx edx, byte [ecx]
mov ecx, dword [esp + 0x4c]
mov byte [esp + 0x10], dl
movzx edx, byte [ecx]
mov ecx, dword [esp + 0x50]
mov byte [esp + 0x11], dl
movzx edx, byte [ecx]
mov byte [esp + 0x12], dl
mov edx, dword [edi]
mov ecx, dword [esp + 0x10]
and ecx, 0xfefefeff
or edx, 0x1010100
sub edx, ecx
mov ecx, edx
and ecx, 0x1010100
mov ebp, ecx
shr ebp, 8
sub ecx, ebp
and ecx, edx
mov dword [edi], ecx
add edi, 4
sub eax, 1
jne 0x775e40
mov edx, dword [esp + 0x3c]
mov edi, dword [esp + 0x18]
xor ebp, ebp
test edi, edi
jge 0x775ef0
mov eax, dword [esp + 0x28]
add eax, dword [esp + 0x9c]
mov ecx, dword [esp + 0x30]
cmp eax, ecx
mov dword [esp + 0x28], eax
jl 0x775edb
mov ebp, dword [esp + 0x1c]
add dword [esp + 0x6c], ebp
add dword [esp + 0x34], 1
add dword [esp + 0x5c], 1
add dword [esp + 0x68], edx
sub dword [esp + 0x58], 1
sub eax, ecx
mov dword [esp + 0x28], eax
mov ebp, 1
mov eax, dword [esp + 0x34]
add eax, eax
add eax, eax
add dword [esp + 0x14], eax
lea ecx, [edi + eax + 2]
jmp 0x775f85
mov edi, dword [esp + 0x14]
mov eax, 1
add dword [esp + 0x64], eax
sub dword [esp + 0x60], eax
sub ebx, eax
test edi, edi
mov dword [esp + 0x48], ebx
jl 0x775f29
mov eax, dword [esp + 0x74]
sub eax, 4
sub dword [esp + 0x18], eax
mov ecx, 2
sub ecx, eax
add edi, ecx
mov dword [esp + 0x74], eax
mov dword [esp + 0x14], edi
jmp 0x775f89
mov eax, dword [esp + 0x28]
add eax, dword [esp + 0x9c]
mov ecx, dword [esp + 0x30]
sub dword [esp + 0x74], 4
cmp eax, ecx
mov dword [esp + 0x28], eax
jl 0x775f6b
mov ebp, dword [esp + 0x1c]
add dword [esp + 0x6c], ebp
add dword [esp + 0x34], 1
add dword [esp + 0x5c], 1
add dword [esp + 0x68], edx
sub dword [esp + 0x58], 1
sub eax, ecx
mov dword [esp + 0x28], eax
mov ebp, 1
mov eax, dword [esp + 0x34]
mov ecx, dword [esp + 0x18]
sub eax, ebx
add eax, eax
add eax, eax
lea ecx, [ecx + eax + 2]
lea eax, [edi + eax + 2]
mov dword [esp + 0x14], eax
mov dword [esp + 0x18], ecx
test ebx, ebx
jg 0x775c70
mov ecx, dword [esp + 0x94]
sub ecx, dword [esp + 0x34]
mov edx, dword [esp + 0x90]
mov eax, edx
sub eax, ebx
lea edi, [ebx + edx]
mov dword [esp + 0x24], eax
mov eax, ecx
xor ecx, ecx
cmp eax, dword [esp + 0x7c]
mov ebx, dword [esp + 0x24]
setl cl
xor edx, edx
cmp edi, dword [esp + 0x78]
setl dl
or ecx, edx
xor edx, edx
cmp eax, dword [esp + 0x84]
setg dl
or ecx, edx
xor edx, edx
cmp ebx, dword [esp + 0x80]
setg dl
or ecx, edx
mov edx, dword [esp + 0x38]
movzx edx, byte [eax + edx]
or ecx, edx
jne case.0x77cf1a.5
mov edx, dword [esp + 0x78]
mov ecx, ebx
cmp ecx, edx
jge 0x776000
mov ecx, edx
mov edx, dword [esp + 0x80]
cmp edi, edx
jle 0x77600d
mov edi, edx
mov edx, dword [esp + 0x38]
mov byte [eax + edx], 1
imul eax, dword [esp + 0x1c]
sub edi, ecx
add edi, 1
add eax, dword [esp + 0x20]
lea edx, [eax + ecx*4]
movzx eax, byte [esp + 0xa0]
movzx ecx, byte [esp + 0xa1]
lea ebx, [esi + eax*4]
movzx eax, byte [esp + 0xa2]
lea ebp, [esi + ecx*4]
lea ecx, [esi + eax*4]
mov dword [esp + 0x50], ecx
jmp 0x776050
mov al, byte [ebx]
movzx ecx, byte [ebp]
mov byte [esp + 0x10], al
mov eax, dword [esp + 0x50]
mov byte [esp + 0x11], cl
movzx ecx, byte [eax]
mov byte [esp + 0x12], cl
mov ecx, dword [edx]
mov eax, dword [esp + 0x10]
and eax, 0xfefefeff
or ecx, 0x1010100
sub ecx, eax
mov eax, ecx
and eax, 0x1010100
mov esi, eax
shr esi, 8
sub eax, esi
and eax, ecx
mov dword [edx], eax
add edx, 4
sub edi, 1
jne 0x776050
mov eax, dword [esp + 0x38]
push eax
call fcn.0057cf76
add esp, 4
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x78
ret
mov esi, dword [esp + 0x90]
mov eax, dword [esp + 0x98]
xor edx, edx
mov edi, esi
sub edi, eax
add esi, eax
mov eax, dword [esp + 0x94]
cmp eax, dword [esp + 0x7c]
mov dword [esp + 0x24], edi
setl dl
xor ecx, ecx
cmp esi, dword [esp + 0x78]
setl cl
xor eax, eax
or edx, ecx
cmp edi, dword [esp + 0x80]
mov edi, dword [esp + 0x94]
setg al
xor ecx, ecx
or edx, eax
cmp edi, dword [esp + 0x84]
setg cl
or edx, ecx
mov ecx, dword [esp + 0x38]
movzx eax, byte [ecx + edi]
or edx, eax
jne 0x776194
mov eax, dword [esp + 0x24]
mov edx, dword [esp + 0x78]
cmp eax, edx
jge 0x77611f
mov eax, edx
mov edx, dword [esp + 0x80]
cmp esi, edx
jle 0x77612c
mov esi, edx
mov byte [ecx + edi], 1
mov ecx, dword [esp + 0x1c]
imul ecx, edi
movzx edi, byte [esp + 0xa0]
sub esi, eax
add esi, 1
add ecx, dword [esp + 0x20]
lea eax, [ecx + eax*4]
jmp 0x776150
movzx edx, byte [eax]
movzx ecx, byte [esp + 0xa1]
imul edx, edi
sar edx, 8
mov byte [eax], dl
movzx edx, byte [eax + 1]
imul edx, ecx
movzx ecx, byte [esp + 0xa2]
sar edx, 8
mov byte [eax + 1], dl
movzx edx, byte [eax + 2]
imul edx, ecx
sar edx, 8
mov byte [eax + 2], dl
add eax, 4
sub esi, 1
jne 0x776150
mov edi, dword [esp + 0x94]
mov ecx, dword [esp + 0x18]
test ecx, ecx
mov edx, dword [esp + 0x1c]
mov dword [esp + 0x2c], 0
jge 0x7761ea
mov ebp, dword [esp + 0x9c]
mov eax, dword [esp + 0x30]
cmp ebp, eax
mov dword [esp + 0x28], ebp
jl 0x7761d1
sub ebp, eax
mov dword [esp + 0x34], 1
mov dword [esp + 0x28], ebp
mov dword [esp + 0x2c], 1
mov eax, dword [esp + 0x34]
add eax, eax
add eax, eax
add dword [esp + 0x14], eax
lea ecx, [ecx + eax + 2]
mov dword [esp + 0x18], ecx
jmp 0x77625c
mov ebx, dword [esp + 0x98]
add ebx, 0xffffffff
cmp dword [esp + 0x14], 0
jl 0x776215
lea eax, [ebx*4]
sub ecx, eax
mov dword [esp + 0x18], ecx
mov ecx, 2
sub ecx, eax
add dword [esp + 0x14], ecx
jmp 0x77625c
mov ebp, dword [esp + 0x9c]
mov eax, dword [esp + 0x30]
cmp ebp, eax
mov dword [esp + 0x28], ebp
jl 0x77623e
sub ebp, eax
mov dword [esp + 0x34], 1
mov dword [esp + 0x28], ebp
mov dword [esp + 0x2c], 1
mov eax, dword [esp + 0x34]
sub eax, ebx
add eax, eax
add eax, eax
lea ecx, [ecx + eax + 2]
mov dword [esp + 0x18], ecx
mov ecx, dword [esp + 0x14]
lea eax, [ecx + eax + 2]
mov dword [esp + 0x14], eax
test ebx, ebx
jle 0x776581
mov eax, dword [esp + 0x90]
add eax, ebx
lea ecx, [ebx*4]
mov dword [esp + 0x70], ecx
mov ecx, dword [esp + 0x34]
lea esi, [ecx + edi]
mov dword [esp + 0x64], eax
mov eax, edi
sub eax, ecx
mov ecx, esi
imul ecx, edx
mov dword [esp + 0x60], esi
mov esi, dword [esp + 0x90]
mov dword [esp + 0x6c], ecx
mov ecx, edx
sub esi, ebx
neg ecx
mov dword [esp + 0x5c], eax
imul eax, edx
mov dword [esp + 0x74], esi
mov dword [esp + 0x3c], ecx
mov dword [esp + 0x68], eax
cmp dword [esp + 0x2c], 0
je 0x776481
mov edi, dword [esp + 0x78]
mov eax, dword [esp + 0x64]
xor ecx, ecx
cmp esi, dword [esp + 0x80]
mov ebp, esi
setg cl
xor edx, edx
cmp eax, edi
mov edi, dword [esp + 0x84]
setl dl
mov dword [esp + 0x24], ebp
or ecx, edx
xor edx, edx
cmp dword [esp + 0x60], edi
mov edi, dword [esp + 0x7c]
setg dl
or ecx, edx
xor edx, edx
cmp dword [esp + 0x60], edi
mov edi, dword [esp + 0x60]
setl dl
or ecx, edx
mov edx, dword [esp + 0x38]
movzx edx, byte [edi + edx]
or ecx, edx
jne 0x7763a5
mov ecx, dword [esp + 0x78]
cmp esi, ecx
jge 0x776325
mov ebp, ecx
mov dword [esp + 0x24], ecx
mov ecx, dword [esp + 0x80]
cmp dword [esp + 0x64], ecx
jle 0x776334
mov eax, ecx
mov ecx, dword [esp + 0x38]
mov edx, dword [esp + 0x6c]
mov byte [edi + ecx], 1
lea ecx, [edx + ebp*4]
movzx edx, byte [esp + 0xa1]
mov esi, eax
sub esi, ebp
movzx ebp, byte [esp + 0xa0]
mov dword [esp + 0x58], edx
movzx edx, byte [esp + 0xa2]
add esi, 1
add ecx, dword [esp + 0x20]
mov dword [esp + 0x54], edx
mov edi, edi
movzx edx, byte [ecx]
imul edx, ebp
sar edx, 8
mov byte [ecx], dl
movzx edx, byte [ecx + 1]
imul edx, dword [esp + 0x58]
sar edx, 8
mov byte [ecx + 1], dl
movzx edx, byte [ecx + 2]
imul edx, dword [esp + 0x54]
sar edx, 8
mov byte [ecx + 2], dl
add ecx, 4
sub esi, 1
jne 0x776370
mov esi, dword [esp + 0x74]
mov edx, dword [esp + 0x5c]
mov ebp, dword [esp + 0x7c]
mov edi, dword [esp + 0x78]
xor ecx, ecx
cmp edx, dword [esp + 0x84]
setg cl
xor edx, edx
cmp dword [esp + 0x5c], ebp
mov ebp, dword [esp + 0x80]
setl dl
or ecx, edx
xor edx, edx
cmp eax, edi
setl dl
or ecx, edx
xor edx, edx
cmp dword [esp + 0x24], ebp
mov ebp, dword [esp + 0x5c]
setg dl
or ecx, edx
mov edx, dword [esp + 0x38]
movzx edx, byte [edx + ebp]
or ecx, edx
jne 0x776475
mov ecx, dword [esp + 0x24]
cmp ecx, edi
jge 0x776401
mov ecx, edi
mov edx, dword [esp + 0x80]
cmp eax, edx
jle 0x77640e
mov eax, edx
mov esi, dword [esp + 0x38]
mov edx, dword [esp + 0x5c]
movzx ebp, byte [esp + 0xa0]
movzx edi, byte [esp + 0xa1]
sub eax, ecx
add eax, 1
mov byte [edx + esi], 1
mov esi, eax
mov eax, dword [esp + 0x68]
lea ecx, [eax + ecx*4]
add ecx, dword [esp + 0x20]
movzx eax, byte [esp + 0xa2]
movzx edx, byte [ecx]
imul edx, ebp
sar edx, 8
mov byte [ecx], dl
movzx edx, byte [ecx + 1]
imul edx, edi
sar edx, 8
mov byte [ecx + 1], dl
movzx edx, byte [ecx + 2]
imul edx, eax
sar edx, 8
mov byte [ecx + 2], dl
add ecx, 4
sub esi, 1
jne 0x776444
mov esi, dword [esp + 0x74]
mov ecx, dword [esp + 0x3c]
mov edx, dword [esp + 0x1c]
mov ebp, dword [esp + 0x28]
cmp dword [esp + 0x18], 0
mov eax, dword [esp + 0x30]
mov dword [esp + 0x2c], 0
jge 0x7764e5
add ebp, dword [esp + 0x9c]
cmp ebp, eax
mov dword [esp + 0x28], ebp
jl 0x7764c8
add dword [esp + 0x34], 1
add dword [esp + 0x60], 1
add dword [esp + 0x6c], edx
add dword [esp + 0x68], ecx
sub dword [esp + 0x5c], 1
sub ebp, eax
mov dword [esp + 0x28], ebp
mov dword [esp + 0x2c], 1
mov eax, dword [esp + 0x34]
mov edi, dword [esp + 0x18]
add eax, eax
add eax, eax
add dword [esp + 0x14], eax
lea edi, [edi + eax + 2]
mov dword [esp + 0x18], edi
jmp 0x776572
sub dword [esp + 0x64], 1
add esi, 1
sub ebx, 1
cmp dword [esp + 0x14], 0
mov dword [esp + 0x74], esi
jl 0x776517
mov eax, dword [esp + 0x70]
sub eax, 4
sub dword [esp + 0x18], eax
mov edi, 2
sub edi, eax
add dword [esp + 0x14], edi
mov dword [esp + 0x70], eax
jmp 0x776572
add ebp, dword [esp + 0x9c]
sub dword [esp + 0x70], 4
cmp ebp, eax
mov dword [esp + 0x28], ebp
jl 0x776550
add dword [esp + 0x34], 1
add dword [esp + 0x60], 1
add dword [esp + 0x6c], edx
add dword [esp + 0x68], ecx
sub dword [esp + 0x5c], 1
sub ebp, eax
mov dword [esp + 0x28], ebp
mov dword [esp + 0x2c], 1
mov eax, dword [esp + 0x34]
mov edi, dword [esp + 0x18]
sub eax, ebx
add eax, eax
add eax, eax
lea edi, [edi + eax + 2]
mov dword [esp + 0x18], edi
mov edi, dword [esp + 0x14]
lea eax, [edi + eax + 2]
mov dword [esp + 0x14], eax
test ebx, ebx
jg 0x7762b4
mov edi, dword [esp + 0x94]
sub edi, dword [esp + 0x34]
mov eax, dword [esp + 0x90]
xor ecx, ecx
mov ebp, eax
sub ebp, ebx
lea esi, [ebx + eax]
mov eax, edi
cmp eax, dword [esp + 0x7c]
setl cl
xor edx, edx
cmp esi, dword [esp + 0x78]
setl dl
or ecx, edx
xor edx, edx
cmp eax, dword [esp + 0x84]
setg dl
or ecx, edx
xor edx, edx
cmp ebp, dword [esp + 0x80]
setg dl
or ecx, edx
mov edx, dword [esp + 0x38]
movzx edx, byte [eax + edx]
or ecx, edx
jne case.0x77cf1a.5
mov ecx, dword [esp + 0x78]
cmp ebp, ecx
jge 0x7765df
mov ebp, ecx
mov ecx, dword [esp + 0x80]
cmp esi, ecx
jle 0x7765ec
mov esi, ecx
mov ecx, dword [esp + 0x38]
movzx edi, byte [esp + 0xa1]
mov byte [eax + ecx], 1
imul eax, dword [esp + 0x1c]
movzx ecx, byte [esp + 0xa0]
sub esi, ebp
add esi, 1
add eax, dword [esp + 0x20]
lea eax, [eax + ebp*4]
movzx ebp, byte [esp + 0xa2]
lea ecx, [ecx]
movzx edx, byte [eax]
imul edx, ecx
sar edx, 8
mov byte [eax], dl
movzx edx, byte [eax + 1]
imul edx, edi
sar edx, 8
mov byte [eax + 1], dl
movzx edx, byte [eax + 2]
imul edx, ebp
sar edx, 8
mov byte [eax + 2], dl
add eax, 4
sub esi, 1
jne 0x776620
mov eax, dword [esp + 0x38]
push eax
call fcn.0057cf76
add esp, 4
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x78
ret
mov esi, dword [esp + 0x90]
mov eax, dword [esp + 0x98]
mov ecx, dword [esp + 0x94]
mov edi, esi
sub edi, eax
add esi, eax
xor eax, eax
cmp ecx, dword [esp + 0x7c]
mov dword [esp + 0x24], edi
setl al
xor edx, edx
cmp esi, dword [esp + 0x78]
setl dl
xor ecx, ecx
or eax, edx
cmp edi, dword [esp + 0x80]
mov edx, dword [esp + 0x94]
mov edi, dword [esp + 0x38]
setg cl
or eax, ecx
xor ecx, ecx
cmp edx, dword [esp + 0x84]
setg cl
or eax, ecx
movzx ecx, byte [edi + edx]
or eax, ecx
jne 0x776792
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x78]
cmp eax, ecx
jge 0x7766d6
mov eax, ecx
mov ecx, dword [esp + 0x80]
cmp esi, ecx
jle 0x7766e3
mov esi, ecx
mov ecx, dword [esp + 0x1c]
imul ecx, edx
sub esi, eax
add esi, 1
add ecx, dword [esp + 0x20]
mov byte [edi + edx], 1
mov edi, esi
lea eax, [ecx + eax*4]
lea esp, [esp]
movzx esi, byte [eax]
movzx ecx, byte [esp + 0xa0]
mov edx, esi
imul edx, ecx
sar edx, 8
movzx ecx, dl
sub ecx, esi
imul ecx, dword [0xb160b8]
shl esi, 8
add ecx, esi
sar ecx, 8
mov byte [eax], cl
movzx esi, byte [eax + 1]
movzx ecx, byte [esp + 0xa1]
mov edx, esi
imul edx, ecx
sar edx, 8
movzx ecx, dl
sub ecx, esi
imul ecx, dword [0xb160b8]
shl esi, 8
add ecx, esi
sar ecx, 8
mov byte [eax + 1], cl
movzx esi, byte [eax + 2]
movzx ecx, byte [esp + 0xa2]
mov edx, esi
imul edx, ecx
sar edx, 8
movzx ecx, dl
sub ecx, esi
imul ecx, dword [0xb160b8]
shl esi, 8
add ecx, esi
sar ecx, 8
mov byte [eax + 2], cl
add eax, 4
sub edi, 1
jne 0x776700
mov edx, dword [esp + 0x94]
mov ecx, dword [esp + 0x18]
test ecx, ecx
mov esi, dword [esp + 0x1c]
mov dword [esp + 0x2c], 0
jge 0x7767e8
mov ebp, dword [esp + 0x9c]
mov eax, dword [esp + 0x30]
cmp ebp, eax
mov dword [esp + 0x28], ebp
jl 0x7767cf
sub ebp, eax
mov dword [esp + 0x34], 1
mov dword [esp + 0x28], ebp
mov dword [esp + 0x2c], 1
mov eax, dword [esp + 0x34]
add eax, eax
add eax, eax
add dword [esp + 0x14], eax
lea ecx, [ecx + eax + 2]
mov dword [esp + 0x18], ecx
jmp 0x77685a
mov ebx, dword [esp + 0x98]
add ebx, 0xffffffff
cmp dword [esp + 0x14], 0
jl 0x776813
lea eax, [ebx*4]
sub ecx, eax
mov dword [esp + 0x18], ecx
mov ecx, 2
sub ecx, eax
add dword [esp + 0x14], ecx
jmp 0x77685a
mov ebp, dword [esp + 0x9c]
mov eax, dword [esp + 0x30]
cmp ebp, eax
mov dword [esp + 0x28], ebp
jl 0x77683c
sub ebp, eax
mov dword [esp + 0x34], 1
mov dword [esp + 0x28], ebp
mov dword [esp + 0x2c], 1
mov eax, dword [esp + 0x34]
sub eax, ebx
add eax, eax
add eax, eax
lea ecx, [ecx + eax + 2]
mov dword [esp + 0x18], ecx
mov ecx, dword [esp + 0x14]
lea eax, [ecx + eax + 2]
mov dword [esp + 0x14], eax
test ebx, ebx
jle 0x776bf3
mov eax, dword [esp + 0x90]
add eax, ebx
lea ecx, [ebx*4]
mov dword [esp + 0x74], ecx
mov ecx, dword [esp + 0x34]
lea edi, [ecx + edx]
mov dword [esp + 0x64], eax
mov eax, edx
sub eax, ecx
mov ecx, edi
imul ecx, esi
mov dword [esp + 0x68], edi
mov edi, dword [esp + 0x90]
mov dword [esp + 0x5c], ecx
mov ecx, esi
sub edi, ebx
neg ecx
mov dword [esp + 0x60], eax
imul eax, esi
mov dword [esp + 0x6c], edi
mov dword [esp + 0x3c], ecx
mov dword [esp + 0x58], eax
cmp dword [esp + 0x2c], 0
je 0x776aed
mov eax, dword [esp + 0x68]
mov esi, dword [esp + 0x64]
xor edx, edx
cmp eax, dword [esp + 0x7c]
mov dword [esp + 0x24], edi
setl dl
xor ecx, ecx
cmp edi, dword [esp + 0x80]
mov edi, dword [esp + 0x68]
setg cl
xor eax, eax
or edx, ecx
mov ecx, dword [esp + 0x78]
cmp esi, ecx
mov ecx, dword [esp + 0x38]
setl al
or edx, eax
xor eax, eax
cmp edi, dword [esp + 0x84]
setg al
or edx, eax
movzx eax, byte [edi + ecx]
or edx, eax
jne 0x7769df
mov eax, dword [esp + 0x78]
cmp dword [esp + 0x6c], eax
jge 0x77691f
mov dword [esp + 0x24], eax
jmp 0x776923
mov eax, dword [esp + 0x24]
mov edx, dword [esp + 0x80]
cmp dword [esp + 0x64], edx
jle 0x776932
mov esi, edx
mov byte [edi + ecx], 1
mov ecx, dword [esp + 0x5c]
mov ebp, esi
sub ebp, eax
lea ecx, [ecx + eax*4]
add ebp, 1
add ecx, dword [esp + 0x20]
jmp 0x776950
movzx edx, byte [ecx]
movzx edi, byte [esp + 0xa0]
mov eax, edx
imul eax, edi
sar eax, 8
movzx eax, al
sub eax, edx
imul eax, dword [0xb160b8]
movzx edi, byte [esp + 0xa1]
shl edx, 8
add eax, edx
sar eax, 8
mov byte [ecx], al
movzx edx, byte [ecx + 1]
mov eax, edx
imul eax, edi
sar eax, 8
movzx eax, al
sub eax, edx
imul eax, dword [0xb160b8]
movzx edi, byte [esp + 0xa2]
shl edx, 8
add eax, edx
sar eax, 8
mov byte [ecx + 1], al
movzx edx, byte [ecx + 2]
mov eax, edx
imul eax, edi
sar eax, 8
movzx eax, al
sub eax, edx
imul eax, dword [0xb160b8]
shl edx, 8
add eax, edx
sar eax, 8
mov byte [ecx + 2], al
add ecx, 4
sub ebp, 1
jne 0x776950
mov ebp, dword [esp + 0x28]
mov edi, dword [esp + 0x60]
xor ecx, ecx
cmp edi, dword [esp + 0x7c]
setl cl
xor edx, edx
cmp edi, dword [esp + 0x84]
mov edi, dword [esp + 0x24]
setg dl
xor eax, eax
or ecx, edx
cmp esi, dword [esp + 0x78]
setl al
xor edx, edx
or ecx, eax
cmp edi, dword [esp + 0x80]
mov eax, dword [esp + 0x60]
setg dl
or ecx, edx
mov edx, dword [esp + 0x38]
movzx edx, byte [eax + edx]
or ecx, edx
jne 0x776ae5
mov ecx, dword [esp + 0x78]
cmp edi, ecx
jge 0x776a35
mov edi, ecx
mov ecx, dword [esp + 0x80]
cmp esi, ecx
jle 0x776a42
mov esi, ecx
mov ecx, dword [esp + 0x38]
mov edx, dword [esp + 0x58]
movzx ebp, byte [esp + 0xa0]
mov byte [eax + ecx], 1
sub esi, edi
lea ecx, [edx + edi*4]
add esi, 1
add ecx, dword [esp + 0x20]
movzx edx, byte [ecx]
mov eax, edx
imul eax, ebp
sar eax, 8
movzx eax, al
sub eax, edx
imul eax, dword [0xb160b8]
movzx edi, byte [esp + 0xa1]
shl edx, 8
add eax, edx
sar eax, 8
mov byte [ecx], al
movzx edx, byte [ecx + 1]
mov eax, edx
imul eax, edi
sar eax, 8
movzx eax, al
sub eax, edx
imul eax, dword [0xb160b8]
movzx edi, byte [esp + 0xa2]
shl edx, 8
add eax, edx
sar eax, 8
mov byte [ecx + 1], al
movzx edx, byte [ecx + 2]
mov eax, edx
imul eax, edi
sar eax, 8
movzx eax, al
sub eax, edx
imul eax, dword [0xb160b8]
shl edx, 8
add eax, edx
sar eax, 8
mov byte [ecx + 2], al
add ecx, 4
sub esi, 1
jne 0x776a62
mov ebp, dword [esp + 0x28]
mov ecx, dword [esp + 0x3c]
mov edi, dword [esp + 0x6c]
mov edx, dword [esp + 0x18]
test edx, edx
mov dword [esp + 0x2c], 0
jge 0x776b4e
add ebp, dword [esp + 0x9c]
mov eax, dword [esp + 0x30]
cmp ebp, eax
mov dword [esp + 0x28], ebp
jl 0x776b39
mov esi, dword [esp + 0x1c]
add dword [esp + 0x34], 1
add dword [esp + 0x68], 1
add dword [esp + 0x5c], esi
add dword [esp + 0x58], ecx
sub dword [esp + 0x60], 1
sub ebp, eax
mov dword [esp + 0x28], ebp
mov dword [esp + 0x2c], 1
mov eax, dword [esp + 0x34]
add eax, eax
add eax, eax
add dword [esp + 0x14], eax
lea edx, [edx + eax + 2]
jmp 0x776be0
mov esi, dword [esp + 0x14]
sub dword [esp + 0x64], 1
add edi, 1
sub ebx, 1
test esi, esi
mov dword [esp + 0x6c], edi
jl 0x776b85
mov eax, dword [esp + 0x74]
sub eax, 4
sub edx, eax
mov dword [esp + 0x18], edx
mov edx, 2
sub edx, eax
add esi, edx
mov dword [esp + 0x74], eax
mov dword [esp + 0x14], esi
jmp 0x776be4
add ebp, dword [esp + 0x9c]
mov eax, dword [esp + 0x30]
sub dword [esp + 0x74], 4
cmp ebp, eax
mov dword [esp + 0x28], ebp
jl 0x776bca
mov edx, dword [esp + 0x1c]
add dword [esp + 0x5c], edx
add dword [esp + 0x34], 1
add dword [esp + 0x68], 1
add dword [esp + 0x58], ecx
sub dword [esp + 0x60], 1
mov edx, dword [esp + 0x18]
sub ebp, eax
mov dword [esp + 0x28], ebp
mov dword [esp + 0x2c], 1
mov eax, dword [esp + 0x34]
sub eax, ebx
add eax, eax
add eax, eax
lea edx, [edx + eax + 2]
lea eax, [esi + eax + 2]
mov dword [esp + 0x14], eax
mov dword [esp + 0x18], edx
test ebx, ebx
jg 0x7768b2
mov edx, dword [esp + 0x94]
sub edx, dword [esp + 0x34]
mov eax, dword [esp + 0x90]
xor ecx, ecx
mov ebp, eax
sub ebp, ebx
lea esi, [ebx + eax]
mov eax, edx
cmp eax, dword [esp + 0x7c]
setl cl
xor edx, edx
cmp esi, dword [esp + 0x78]
setl dl
or ecx, edx
xor edx, edx
cmp eax, dword [esp + 0x84]
setg dl
or ecx, edx
xor edx, edx
cmp ebp, dword [esp + 0x80]
setg dl
or ecx, edx
mov edx, dword [esp + 0x38]
movzx edx, byte [eax + edx]
or ecx, edx
jne case.0x77cf1a.5
mov ecx, dword [esp + 0x78]
cmp ebp, ecx
jge 0x776c51
mov ebp, ecx
mov ecx, dword [esp + 0x80]
cmp esi, ecx
jle 0x776c5e
mov esi, ecx
mov ecx, dword [esp + 0x38]
movzx edi, byte [esp + 0xa0]
movzx edx, byte [esp + 0xa2]
mov byte [eax + ecx], 1
imul eax, dword [esp + 0x1c]
sub esi, ebp
add esi, 1
add eax, dword [esp + 0x20]
lea eax, [eax + ebp*4]
movzx ebp, byte [esp + 0xa1]
nop
movzx ecx, byte [eax]
mov ebx, ecx
imul ebx, edi
sar ebx, 8
movzx ebx, bl
sub ebx, ecx
imul ebx, dword [0xb160b8]
shl ecx, 8
add ebx, ecx
sar ebx, 8
mov byte [eax], bl
movzx ecx, byte [eax + 1]
mov ebx, ecx
imul ebx, ebp
sar ebx, 8
movzx ebx, bl
sub ebx, ecx
imul ebx, dword [0xb160b8]
shl ecx, 8
add ebx, ecx
sar ebx, 8
mov byte [eax + 1], bl
movzx ecx, byte [eax + 2]
mov ebx, ecx
imul ebx, edx
sar ebx, 8
movzx ebx, bl
sub ebx, ecx
imul ebx, dword [0xb160b8]
shl ecx, 8
add ebx, ecx
sar ebx, 8
mov byte [eax + 2], bl
add eax, 4
sub esi, 1
jne 0x776c90
mov eax, dword [esp + 0x38]
push eax
call fcn.0057cf76
add esp, 4
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x78
ret
mov esi, dword [esp + 0x90]
mov eax, dword [esp + 0x98]
xor edx, edx
mov edi, esi
sub edi, eax
add esi, eax
mov eax, dword [esp + 0x94]
cmp eax, dword [esp + 0x7c]
mov dword [esp + 0x24], edi
setl dl
xor ecx, ecx
cmp esi, dword [esp + 0x78]
setl cl
xor eax, eax
or edx, ecx
cmp edi, dword [esp + 0x80]
mov edi, dword [esp + 0x94]
setg al
xor ecx, ecx
or edx, eax
cmp edi, dword [esp + 0x84]
mov eax, dword [esp + 0x38]
setg cl
or edx, ecx
movzx ecx, byte [eax + edi]
or edx, ecx
jne 0x776e3f
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x78]
cmp eax, ecx
jge 0x776d88
mov eax, ecx
mov ecx, dword [esp + 0x80]
cmp esi, ecx
jle 0x776d95
mov esi, ecx
mov edx, dword [esp + 0x38]
mov ecx, edi
mov byte [edx + ecx], 1
mov edx, dword [esp + 0x1c]
imul edx, ecx
mov cl, byte [esp + 0xa0]
sub esi, eax
add esi, 1
add edx, dword [esp + 0x20]
not cl
lea eax, [edx + eax*4]
mov dl, byte [esp + 0xa1]
not dl
movzx edx, dl
mov dword [esp + 0x70], edx
mov dl, byte [esp + 0xa2]
not dl
movzx edx, dl
mov edi, esi
movzx ecx, cl
mov dword [esp + 0x58], edx
movzx esi, byte [eax]
mov edx, ecx
sub edx, esi
imul edx, dword [0xb160b8]
shl esi, 8
add edx, esi
sar edx, 8
mov byte [eax], dl
movzx esi, byte [eax + 1]
mov edx, dword [esp + 0x70]
sub edx, esi
imul edx, dword [0xb160b8]
shl esi, 8
add edx, esi
sar edx, 8
mov byte [eax + 1], dl
movzx esi, byte [eax + 2]
mov edx, dword [esp + 0x58]
sub edx, esi
imul edx, dword [0xb160b8]
shl esi, 8
add edx, esi
sar edx, 8
mov byte [eax + 2], dl
add eax, 4
sub edi, 1
jne 0x776de0
mov edi, dword [esp + 0x94]
mov ecx, dword [esp + 0x18]
test ecx, ecx
mov esi, dword [esp + 0x1c]
mov dword [esp + 0x2c], 0
jge 0x776e91
mov ebp, dword [esp + 0x9c]
mov eax, dword [esp + 0x30]
cmp ebp, eax
mov dword [esp + 0x28], ebp
jl 0x776e7c
sub ebp, eax
mov dword [esp + 0x34], 1
mov dword [esp + 0x28], ebp
mov dword [esp + 0x2c], 1
mov eax, dword [esp + 0x34]
add eax, eax
add eax, eax
add dword [esp + 0x14], eax
lea ecx, [ecx + eax + 2]
jmp 0x776efb
mov ebx, dword [esp + 0x98]
add ebx, 0xffffffff
cmp dword [esp + 0x14], 0
jl 0x776eb8
lea eax, [ebx*4]
mov edx, 2
sub edx, eax
sub ecx, eax
add dword [esp + 0x14], edx
jmp 0x776efb
mov ebp, dword [esp + 0x9c]
mov eax, dword [esp + 0x30]
cmp ebp, eax
mov dword [esp + 0x28], ebp
jl 0x776ee1
sub ebp, eax
mov dword [esp + 0x34], 1
mov dword [esp + 0x28], ebp
mov dword [esp + 0x2c], 1
mov eax, dword [esp + 0x34]
mov edx, dword [esp + 0x14]
sub eax, ebx
add eax, eax
add eax, eax
lea ecx, [ecx + eax + 2]
lea eax, [edx + eax + 2]
mov dword [esp + 0x14], eax
test ebx, ebx
mov dword [esp + 0x18], ecx
jle 0x77728c
mov eax, dword [esp + 0x90]
add eax, ebx
lea ecx, [ebx*4]
mov dword [esp + 0x74], ecx
mov ecx, dword [esp + 0x34]
lea edx, [ecx + edi]
mov dword [esp + 0x64], eax
mov eax, edi
mov edi, dword [esp + 0x90]
sub eax, ecx
mov ecx, edx
imul ecx, esi
mov dword [esp + 0x5c], ecx
mov ecx, esi
sub edi, ebx
neg ecx
mov dword [esp + 0x60], eax
imul eax, esi
mov dword [esp + 0x68], edx
mov dword [esp + 0x6c], edi
mov dword [esp + 0x3c], ecx
mov dword [esp + 0x54], eax
jmp 0x776f60
cmp dword [esp + 0x2c], 0
je 0x777183
mov eax, dword [esp + 0x68]
mov esi, dword [esp + 0x64]
xor edx, edx
cmp eax, dword [esp + 0x7c]
mov dword [esp + 0x24], edi
setl dl
xor ecx, ecx
cmp edi, dword [esp + 0x80]
mov edi, dword [esp + 0x68]
setg cl
xor eax, eax
or edx, ecx
mov ecx, dword [esp + 0x78]
cmp esi, ecx
mov ecx, dword [esp + 0x38]
setl al
or edx, eax
xor eax, eax
cmp edi, dword [esp + 0x84]
setg al
or edx, eax
movzx eax, byte [edi + ecx]
or edx, eax
jne 0x77707e
mov eax, dword [esp + 0x78]
cmp dword [esp + 0x6c], eax
jge 0x776fcd
mov dword [esp + 0x24], eax
jmp 0x776fd1
mov eax, dword [esp + 0x24]
mov edx, dword [esp + 0x80]
cmp dword [esp + 0x64], edx
jle 0x776fe0
mov esi, edx
mov dl, byte [esp + 0xa0]
mov byte [edi + ecx], 1
mov ecx, dword [esp + 0x5c]
lea ecx, [ecx + eax*4]
mov ebp, esi
sub ebp, eax
mov al, byte [esp + 0xa1]
not dl
not al
movzx edi, dl
movzx edx, al
mov al, byte [esp + 0xa2]
not al
mov dword [esp + 0x70], edx
movzx edx, al
add ebp, 1
add ecx, dword [esp + 0x20]
mov dword [esp + 0x58], edx
movzx edx, byte [ecx]
mov eax, edi
sub eax, edx
imul eax, dword [0xb160b8]
shl edx, 8
add eax, edx
sar eax, 8
mov byte [ecx], al
movzx edx, byte [ecx + 1]
mov eax, dword [esp + 0x70]
sub eax, edx
imul eax, dword [0xb160b8]
shl edx, 8
add eax, edx
sar eax, 8
mov byte [ecx + 1], al
movzx edx, byte [ecx + 2]
mov eax, dword [esp + 0x58]
sub eax, edx
imul eax, dword [0xb160b8]
shl edx, 8
add eax, edx
sar eax, 8
mov byte [ecx + 2], al
add ecx, 4
sub ebp, 1
jne 0x777022
mov ebp, dword [esp + 0x28]
mov edi, dword [esp + 0x60]
xor ecx, ecx
cmp edi, dword [esp + 0x7c]
setl cl
xor edx, edx
cmp edi, dword [esp + 0x84]
mov edi, dword [esp + 0x24]
setg dl
xor eax, eax
or ecx, edx
cmp esi, dword [esp + 0x78]
setl al
xor edx, edx
or ecx, eax
cmp edi, dword [esp + 0x80]
mov eax, dword [esp + 0x60]
setg dl
or ecx, edx
mov edx, dword [esp + 0x38]
movzx edx, byte [eax + edx]
or ecx, edx
jne 0x77717b
mov ecx, dword [esp + 0x78]
cmp edi, ecx
jge 0x7770d4
mov edi, ecx
mov ecx, dword [esp + 0x80]
cmp esi, ecx
jle 0x7770e1
mov esi, ecx
mov ecx, dword [esp + 0x38]
mov edx, dword [esp + 0x54]
mov byte [eax + ecx], 1
mov al, byte [esp + 0xa0]
lea ecx, [edx + edi*4]
mov dl, byte [esp + 0xa1]
not al
movzx ebp, al
mov al, byte [esp + 0xa2]
sub esi, edi
not dl
not al
movzx edi, dl
movzx edx, al
add esi, 1
add ecx, dword [esp + 0x20]
mov dword [esp + 0x58], edx
movzx edx, byte [ecx]
mov eax, ebp
sub eax, edx
imul eax, dword [0xb160b8]
shl edx, 8
add eax, edx
sar eax, 8
mov byte [ecx], al
movzx edx, byte [ecx + 1]
mov eax, edi
sub eax, edx
imul eax, dword [0xb160b8]
shl edx, 8
add eax, edx
sar eax, 8
mov byte [ecx + 1], al
movzx edx, byte [ecx + 2]
mov eax, dword [esp + 0x58]
sub eax, edx
imul eax, dword [0xb160b8]
shl edx, 8
add eax, edx
sar eax, 8
mov byte [ecx + 2], al
add ecx, 4
sub esi, 1
jne 0x777121
mov ebp, dword [esp + 0x28]
mov ecx, dword [esp + 0x3c]
mov edi, dword [esp + 0x6c]
mov edx, dword [esp + 0x18]
test edx, edx
mov dword [esp + 0x2c], 0
jge 0x7771e4
add ebp, dword [esp + 0x9c]
mov eax, dword [esp + 0x30]
cmp ebp, eax
mov dword [esp + 0x28], ebp
jl 0x7771cf
mov esi, dword [esp + 0x1c]
add dword [esp + 0x34], 1
add dword [esp + 0x68], 1
add dword [esp + 0x5c], esi
add dword [esp + 0x54], ecx
sub dword [esp + 0x60], 1
sub ebp, eax
mov dword [esp + 0x28], ebp
mov dword [esp + 0x2c], 1
mov eax, dword [esp + 0x34]
add eax, eax
add eax, eax
add dword [esp + 0x14], eax
lea edx, [edx + eax + 2]
jmp 0x777279
mov esi, dword [esp + 0x14]
sub dword [esp + 0x64], 1
add edi, 1
sub ebx, 1
test esi, esi
mov dword [esp + 0x6c], edi
jl 0x77721e
mov eax, dword [esp + 0x74]
sub eax, 4
sub edx, eax
mov dword [esp + 0x18], edx
mov edx, 2
sub edx, eax
add esi, edx
mov dword [esp + 0x74], eax
mov dword [esp + 0x14], esi
jmp 0x77727d
add ebp, dword [esp + 0x9c]
mov eax, dword [esp + 0x30]
sub dword [esp + 0x74], 4
cmp ebp, eax
mov dword [esp + 0x28], ebp
jl 0x777263
mov edx, dword [esp + 0x1c]
add dword [esp + 0x5c], edx
add dword [esp + 0x34], 1
add dword [esp + 0x68], 1
add dword [esp + 0x54], ecx
sub dword [esp + 0x60], 1
mov edx, dword [esp + 0x18]
sub ebp, eax
mov dword [esp + 0x28], ebp
mov dword [esp + 0x2c], 1
mov eax, dword [esp + 0x34]
sub eax, ebx
add eax, eax
add eax, eax
lea edx, [edx + eax + 2]
lea eax, [esi + eax + 2]
mov dword [esp + 0x14], eax
mov dword [esp + 0x18], edx
test ebx, ebx
jg 0x776f60
mov edi, dword [esp + 0x94]
sub edi, dword [esp + 0x34]
mov eax, dword [esp + 0x90]
xor ecx, ecx
mov ebp, eax
sub ebp, ebx
lea esi, [ebx + eax]
mov eax, edi
cmp eax, dword [esp + 0x7c]
setl cl
xor edx, edx
cmp esi, dword [esp + 0x78]
setl dl
or ecx, edx
xor edx, edx
cmp eax, dword [esp + 0x84]
setg dl
or ecx, edx
xor edx, edx
cmp ebp, dword [esp + 0x80]
setg dl
or ecx, edx
mov edx, dword [esp + 0x38]
movzx edx, byte [eax + edx]
or ecx, edx
jne case.0x77cf1a.5
mov ecx, dword [esp + 0x78]
cmp ebp, ecx
jge 0x7772ea
mov ebp, ecx
mov ecx, dword [esp + 0x80]
cmp esi, ecx
jle 0x7772f7
mov esi, ecx
mov ecx, dword [esp + 0x38]
mov byte [eax + ecx], 1
imul eax, dword [esp + 0x1c]
mov cl, byte [esp + 0xa0]
not cl
sub esi, ebp
movzx edi, cl
mov cl, byte [esp + 0xa1]
add esi, 1
add eax, dword [esp + 0x20]
not cl
lea eax, [eax + ebp*4]
movzx ebp, cl
mov cl, byte [esp + 0xa2]
not cl
movzx edx, cl
movzx ecx, byte [eax]
mov ebx, edi
sub ebx, ecx
imul ebx, dword [0xb160b8]
shl ecx, 8
add ebx, ecx
sar ebx, 8
mov byte [eax], bl
movzx ecx, byte [eax + 1]
mov ebx, ebp
sub ebx, ecx
imul ebx, dword [0xb160b8]
shl ecx, 8
add ebx, ecx
sar ebx, 8
mov byte [eax + 1], bl
movzx ecx, byte [eax + 2]
mov ebx, edx
sub ebx, ecx
imul ebx, dword [0xb160b8]
shl ecx, 8
add ebx, ecx
sar ebx, 8
mov byte [eax + 2], bl
add eax, 4
sub esi, 1
jne 0x777334
mov eax, dword [esp + 0x38]
push eax
call fcn.0057cf76
add esp, 4
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x78
ret
mov ecx, dword [0xb160d4]
mov edx, ecx
and edx, 0xffffff
cmp edx, 0xffffff
je 0x77740a
mov eax, dword [esp + 0xa0]
mov edx, eax
sar edx, 5
and edx, 0x3f
movzx ecx, ch
imul edx, ecx
movzx ecx, byte [0xb160d4]
and eax, 0x1f
imul eax, ecx
movzx ecx, byte [0xb160d6]
sar eax, 5
and edx, 0xffffff07
or edx, eax
mov eax, dword [esp + 0xa0]
sar eax, 8
and eax, 0xfffffff8
imul eax, ecx
sar edx, 3
and eax, 0xfffff800
or edx, eax
mov dword [esp + 0xa0], edx
jmp 0x777411
mov edx, dword [esp + 0xa0]
mov eax, dword [0xb160b4]
cmp eax, 0xb
ja case.0x77cf1a.5
jmp dword [eax*4 + 0x78c734]
mov eax, dword [0xb160b8]
cmp eax, 0xff
jne 0x7778e9
mov eax, dword [esp + 0x90]
mov ecx, dword [esp + 0x98]
lea edi, [eax + ecx]
mov esi, eax
sub esi, ecx
mov ecx, dword [esp + 0x94]
xor eax, eax
cmp ecx, dword [esp + 0x7c]
mov dword [esp + 0x44], edi
setl al
xor edx, edx
cmp edi, dword [esp + 0x78]
setl dl
xor ecx, ecx
or eax, edx
cmp esi, dword [esp + 0x80]
mov edx, dword [esp + 0x94]
setg cl
or eax, ecx
xor ecx, ecx
cmp edx, dword [esp + 0x84]
setg cl
or eax, ecx
mov ecx, dword [esp + 0x38]
movzx ecx, byte [ecx + edx]
or eax, ecx
mov cx, word [esp + 0xa0]
jne 0x7774e2
mov eax, dword [esp + 0x78]
cmp esi, eax
jge 0x7774ab
mov esi, eax
mov eax, dword [esp + 0x44]
mov edi, dword [esp + 0x80]
cmp eax, edi
jle 0x7774bc
mov eax, edi
mov edi, dword [esp + 0x38]
mov byte [edi + edx], 1
mov edi, dword [esp + 0x1c]
imul edi, edx
sub eax, esi
add eax, 1
add edi, dword [esp + 0x20]
lea esi, [edi + esi*2]
mov word [esi], cx
add esi, 2
sub eax, 1
jne 0x7774d7
mov edi, dword [esp + 0x18]
test edi, edi
mov esi, dword [esp + 0x30]
mov dword [esp + 0x2c], 0
jge 0x77752e
mov ebp, dword [esp + 0x9c]
cmp ebp, esi
jl 0x777512
mov eax, 1
mov dword [esp + 0x34], eax
sub ebp, esi
mov dword [esp + 0x2c], eax
jmp 0x777516
mov eax, dword [esp + 0x34]
lea ecx, [eax*4]
add dword [esp + 0x14], ecx
lea edi, [edi + ecx + 2]
mov dword [esp + 0x18], edi
jmp 0x777599
mov ebx, dword [esp + 0x98]
add ebx, 0xffffffff
cmp dword [esp + 0x14], 0
jl 0x77755d
lea eax, [ebx*4]
sub edi, eax
mov ecx, 2
sub ecx, eax
add dword [esp + 0x14], ecx
mov eax, dword [esp + 0x34]
mov dword [esp + 0x18], edi
jmp 0x777599
mov ebp, dword [esp + 0x9c]
cmp ebp, esi
jl 0x777579
mov eax, 1
mov dword [esp + 0x34], eax
sub ebp, esi
mov dword [esp + 0x2c], eax
jmp 0x77757d
mov eax, dword [esp + 0x34]
mov ecx, eax
sub ecx, ebx
add ecx, ecx
add ecx, ecx
lea edi, [edi + ecx + 2]
mov dword [esp + 0x18], edi
mov edi, dword [esp + 0x14]
lea ecx, [edi + ecx + 2]
mov dword [esp + 0x14], ecx
test ebx, ebx
jle 0x77783f
mov edi, dword [esp + 0x90]
lea ecx, [ebx*4]
mov dword [esp + 0x74], ecx
lea ecx, [eax + edx]
mov dword [esp + 0x68], ecx
imul ecx, dword [esp + 0x1c]
add edi, ebx
mov dword [esp + 0x64], edi
mov edi, dword [esp + 0x90]
mov dword [esp + 0x5c], ecx
mov ecx, dword [esp + 0x1c]
sub edx, eax
sub edi, ebx
neg ecx
mov dword [esp + 0x60], edx
imul edx, dword [esp + 0x1c]
mov dword [esp + 0x6c], edi
mov dword [esp + 0x3c], ecx
mov dword [esp + 0x58], edx
nop
cmp dword [esp + 0x2c], 0
je 0x777744
mov eax, dword [esp + 0x68]
mov esi, dword [esp + 0x64]
xor edx, edx
cmp eax, dword [esp + 0x7c]
mov dword [esp + 0x24], edi
setl dl
xor ecx, ecx
cmp edi, dword [esp + 0x80]
mov edi, dword [esp + 0x68]
setg cl
xor eax, eax
or edx, ecx
mov ecx, dword [esp + 0x78]
cmp esi, ecx
mov ecx, dword [esp + 0x38]
setl al
or edx, eax
xor eax, eax
cmp edi, dword [esp + 0x84]
setg al
or edx, eax
movzx eax, byte [edi + ecx]
or edx, eax
jne 0x77769b
mov eax, dword [esp + 0x78]
cmp dword [esp + 0x6c], eax
jge 0x777659
mov dword [esp + 0x24], eax
jmp 0x77765d
mov eax, dword [esp + 0x24]
mov edx, dword [esp + 0x80]
cmp dword [esp + 0x64], edx
jle 0x77766c
mov esi, edx
mov edx, dword [esp + 0x5c]
mov byte [edi + ecx], 1
mov ecx, esi
sub ecx, eax
lea eax, [edx + eax*2]
mov dx, word [esp + 0xa0]
add ecx, 1
add eax, dword [esp + 0x20]
lea ebx, [ebx]
mov word [eax], dx
add eax, 2
sub ecx, 1
jne 0x777690
mov edi, dword [esp + 0x60]
xor ecx, ecx
cmp edi, dword [esp + 0x7c]
setl cl
xor edx, edx
cmp edi, dword [esp + 0x84]
mov edi, dword [esp + 0x24]
setg dl
xor eax, eax
or ecx, edx
cmp esi, dword [esp + 0x78]
setl al
xor edx, edx
or ecx, eax
cmp edi, dword [esp + 0x80]
mov eax, dword [esp + 0x60]
setg dl
or ecx, edx
mov edx, dword [esp + 0x38]
movzx edx, byte [eax + edx]
or ecx, edx
jne 0x777738
mov ecx, dword [esp + 0x78]
cmp edi, ecx
jge 0x7776ed
mov edi, ecx
mov ecx, dword [esp + 0x80]
cmp esi, ecx
jle 0x7776fa
mov esi, ecx
mov ecx, dword [esp + 0x38]
mov byte [eax + ecx], 1
mov eax, dword [esp + 0x58]
mov cx, word [esp + 0xa0]
sub esi, edi
mov edx, 1
lea eax, [eax + edi*2]
add esi, edx
add eax, dword [esp + 0x20]
mov edi, edi
mov word [eax], cx
add eax, 2
sub esi, edx
jne 0x777720
mov edi, dword [esp + 0x6c]
mov eax, dword [esp + 0x34]
mov esi, dword [esp + 0x30]
jmp 0x777749
mov edi, dword [esp + 0x6c]
mov eax, dword [esp + 0x34]
mov esi, dword [esp + 0x30]
mov edx, 1
cmp dword [esp + 0x18], 0
mov dword [esp + 0x2c], 0
jge 0x7777a8
add ebp, dword [esp + 0x9c]
cmp ebp, esi
jl 0x77778c
mov ecx, dword [esp + 0x1c]
add dword [esp + 0x68], edx
add dword [esp + 0x5c], ecx
add eax, edx
mov edx, dword [esp + 0x3c]
add dword [esp + 0x58], edx
mov ecx, 1
sub dword [esp + 0x60], ecx
mov dword [esp + 0x34], eax
sub ebp, esi
mov dword [esp + 0x2c], ecx
mov edx, dword [esp + 0x18]
lea ecx, [eax*4]
add dword [esp + 0x14], ecx
lea edx, [edx + ecx + 2]
mov dword [esp + 0x18], edx
jmp 0x777830
sub dword [esp + 0x64], edx
add edi, edx
sub ebx, edx
cmp dword [esp + 0x14], 0
mov dword [esp + 0x6c], edi
jl 0x7777d7
mov ecx, dword [esp + 0x74]
sub ecx, 4
sub dword [esp + 0x18], ecx
mov edx, 2
sub edx, ecx
add dword [esp + 0x14], edx
mov dword [esp + 0x74], ecx
jmp 0x777830
add ebp, dword [esp + 0x9c]
sub dword [esp + 0x74], 4
cmp ebp, esi
jl 0x777810
mov ecx, dword [esp + 0x1c]
add dword [esp + 0x68], edx
add dword [esp + 0x5c], ecx
add eax, edx
mov edx, dword [esp + 0x3c]
add dword [esp + 0x58], edx
mov ecx, 1
sub dword [esp + 0x60], ecx
mov dword [esp + 0x34], eax
sub ebp, esi
mov dword [esp + 0x2c], ecx
mov ecx, dword [esp + 0x18]
mov edx, eax
sub edx, ebx
add edx, edx
add edx, edx
lea ecx, [ecx + edx + 2]
mov dword [esp + 0x18], ecx
mov ecx, dword [esp + 0x14]
lea edx, [ecx + edx + 2]
mov dword [esp + 0x14], edx
test ebx, ebx
jg 0x7775f0
mov edx, dword [esp + 0x94]
mov ecx, dword [esp + 0x90]
sub edx, eax
mov eax, edx
mov esi, ecx
lea edi, [ebx + ecx]
xor ecx, ecx
sub esi, ebx
cmp eax, dword [esp + 0x7c]
setl cl
xor edx, edx
cmp edi, dword [esp + 0x78]
setl dl
or ecx, edx
xor edx, edx
cmp eax, dword [esp + 0x84]
setg dl
or ecx, edx
xor edx, edx
cmp esi, dword [esp + 0x80]
setg dl
or ecx, edx
mov edx, dword [esp + 0x38]
movzx edx, byte [eax + edx]
or ecx, edx
jne case.0x77cf1a.5
mov ecx, dword [esp + 0x78]
cmp esi, ecx
jge 0x77789b
mov esi, ecx
mov ecx, dword [esp + 0x80]
cmp edi, ecx
jle 0x7778a8
mov edi, ecx
mov ecx, dword [esp + 0x38]
mov byte [eax + ecx], 1
imul eax, dword [esp + 0x1c]
sub edi, esi
add edi, 1
add eax, dword [esp + 0x20]
lea eax, [eax + esi*2]
mov dx, word [esp + 0xa0]
mov word [eax], dx
add eax, 2
sub edi, 1
jne 0x7778c1
mov eax, dword [esp + 0x38]
push eax
call fcn.0057cf76
add esp, 4
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x78
ret
test eax, eax
je case.0x77cf1a.5
mov ecx, dword [esp + 0x90]
mov esi, dword [esp + 0x98]
mov eax, ecx
add ecx, esi
sub eax, esi
mov esi, dword [esp + 0x78]
mov dword [esp + 0x44], ecx
mov ecx, dword [esp + 0x94]
mov dword [esp + 0x24], eax
xor eax, eax
cmp ecx, dword [esp + 0x7c]
mov ebp, dword [esp + 0x38]
setl al
xor ecx, ecx
cmp dword [esp + 0x44], esi
mov esi, dword [esp + 0x80]
setl cl
or eax, ecx
xor ecx, ecx
cmp dword [esp + 0x24], esi
mov esi, dword [esp + 0x94]
setg cl
or eax, ecx
xor ecx, ecx
cmp esi, dword [esp + 0x84]
setg cl
or eax, ecx
movzx ecx, byte [esi + ebp]
or eax, ecx
jne 0x777a3b
mov ecx, dword [esp + 0x24]
mov eax, dword [esp + 0x78]
cmp ecx, eax
jge 0x777971
mov ecx, eax
mov eax, dword [esp + 0x44]
cmp eax, dword [esp + 0x80]
jle 0x777985
mov eax, dword [esp + 0x80]
sub eax, ecx
add eax, 1
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x1c]
imul eax, esi
add eax, dword [esp + 0x20]
mov byte [esi + ebp], 1
lea eax, [eax + ecx*2]
mov ecx, edx
sar ecx, 0xb
mov esi, edx
sar esi, 5
mov dword [esp + 0x54], ecx
and esi, 0x3f
mov ecx, edx
and ecx, 0x1f
mov dword [esp + 0x2c], eax
mov dword [esp + 0x58], esi
mov dword [esp + 0x4c], ecx
jmp 0x7779c8
mov esi, dword [esp + 0x58]
movzx ecx, word [eax]
movzx eax, cx
mov ebp, eax
shr ebp, 5
and ebp, 0x3f
sub esi, ebp
mov dword [esp + 0x44], eax
mov ebp, ecx
shr ebp, 5
shr eax, 0xb
and ebp, 0x3f
add bp, word [edi + esi*4]
mov esi, dword [esp + 0x54]
sub esi, eax
mov ax, cx
shr ax, 0xb
add ax, word [edi + esi*4]
mov esi, dword [esp + 0x4c]
shl ax, 0xb
shl bp, 5
or bp, ax
mov eax, dword [esp + 0x44]
and eax, 0x1f
sub esi, eax
mov eax, dword [esp + 0x2c]
and ecx, 0x1f
add cx, word [edi + esi*4]
add eax, 2
or bp, cx
sub dword [esp + 0x40], 1
mov word [eax - 2], bp
mov dword [esp + 0x2c], eax
jne 0x7779c4
mov esi, dword [esp + 0x94]
mov ebp, dword [esp + 0x18]
test ebp, ebp
mov dword [esp + 0x2c], 0
jge 0x777a8d
mov eax, dword [esp + 0x9c]
cmp eax, dword [esp + 0x30]
mov dword [esp + 0x28], eax
jl 0x777a74
sub eax, dword [esp + 0x30]
mov dword [esp + 0x34], 1
mov dword [esp + 0x28], eax
mov dword [esp + 0x2c], 1
mov eax, dword [esp + 0x34]
add eax, eax
add eax, eax
add dword [esp + 0x14], eax
lea ecx, [eax + ebp + 2]
mov dword [esp + 0x18], ecx
jmp 0x777b07
mov ebx, dword [esp + 0x98]
add ebx, 0xffffffff
cmp dword [esp + 0x14], 0
mov dword [esp + 0x48], ebx
jl 0x777abc
lea eax, [ebx*4]
mov ecx, 2
sub ebp, eax
sub ecx, eax
add dword [esp + 0x14], ecx
mov dword [esp + 0x18], ebp
jmp 0x777b07
mov eax, dword [esp + 0x9c]
mov ecx, dword [esp + 0x30]
cmp eax, ecx
mov dword [esp + 0x28], eax
jl 0x777ae9
mov ebp, dword [esp + 0x18]
sub eax, ecx
mov dword [esp + 0x34], 1
mov dword [esp + 0x28], eax
mov dword [esp + 0x2c], 1
mov eax, dword [esp + 0x34]
sub eax, ebx
add eax, eax
add eax, eax
lea ecx, [eax + ebp + 2]
mov dword [esp + 0x18], ecx
mov ecx, dword [esp + 0x14]
lea eax, [ecx + eax + 2]
mov dword [esp + 0x14], eax
test ebx, ebx
jle 0x777eee
mov eax, dword [esp + 0x90]
mov ebp, dword [esp + 0x34]
add eax, ebx
lea ecx, [ebx*4]
mov dword [esp + 0x64], eax
mov eax, esi
mov dword [esp + 0x74], ecx
lea ecx, [esi + ebp]
mov esi, dword [esp + 0x90]
sub eax, ebp
mov ebp, dword [esp + 0x1c]
sub esi, ebx
mov dword [esp + 0x68], esi
mov esi, ebp
mov dword [esp + 0x5c], ecx
imul ecx, ebp
neg esi
mov dword [esp + 0x60], eax
imul eax, ebp
mov ebp, dword [esp + 0x2c]
mov dword [esp + 0x6c], ecx
mov dword [esp + 0x3c], esi
mov dword [esp + 0x50], eax
test ebp, ebp
je 0x777dc4
mov eax, dword [esp + 0x5c]
mov ebp, dword [esp + 0x68]
mov esi, dword [esp + 0x64]
xor ecx, ecx
cmp eax, dword [esp + 0x7c]
mov dword [esp + 0x24], ebp
setl cl
xor eax, eax
cmp ebp, dword [esp + 0x80]
mov ebp, esi
setg al
mov dword [esp + 0x44], esi
or ecx, eax
xor eax, eax
cmp ebp, dword [esp + 0x78]
mov ebp, dword [esp + 0x5c]
setl al
or ecx, eax
xor eax, eax
cmp ebp, dword [esp + 0x84]
setg al
or ecx, eax
mov eax, dword [esp + 0x38]
movzx eax, byte [eax + ebp]
or ecx, eax
jne 0x777ca4
mov eax, dword [esp + 0x78]
cmp dword [esp + 0x68], eax
jge 0x777bd7
mov dword [esp + 0x24], eax
jmp 0x777bdb
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x80]
cmp dword [esp + 0x64], ecx
jle 0x777bee
mov esi, ecx
mov dword [esp + 0x44], ecx
mov ecx, dword [esp + 0x38]
mov byte [ecx + ebp], 1
mov ecx, dword [esp + 0x6c]
sub esi, eax
lea eax, [ecx + eax*2]
add eax, dword [esp + 0x20]
mov ebx, edx
sar ebx, 5
mov ebp, edx
add esi, 1
and ebx, 0x3f
sar ebp, 0xb
mov ecx, edx
and ecx, 0x1f
mov dword [esp + 0x40], esi
mov dword [esp + 0x2c], eax
mov dword [esp + 0x58], ebx
mov dword [esp + 0x54], ebp
mov dword [esp + 0x4c], ecx
jmp 0x777c38
mov ebp, dword [esp + 0x54]
mov ebx, dword [esp + 0x58]
movzx ecx, word [eax]
movzx esi, cx
mov eax, esi
shr eax, 5
and eax, 0x3f
sub ebx, eax
mov eax, ecx
shr eax, 5
and eax, 0x3f
add ax, word [edi + ebx*4]
mov ebx, esi
shr ebx, 0xb
sub ebp, ebx
mov bx, cx
shr bx, 0xb
add bx, word [edi + ebp*4]
shl ax, 5
shl bx, 0xb
or ax, bx
mov ebx, dword [esp + 0x4c]
and esi, 0x1f
sub ebx, esi
and ecx, 0x1f
add cx, word [edi + ebx*4]
or ax, cx
mov bx, ax
mov eax, dword [esp + 0x2c]
mov word [eax], bx
add eax, 2
sub dword [esp + 0x40], 1
mov dword [esp + 0x2c], eax
jne 0x777c30
mov ebx, dword [esp + 0x48]
mov esi, dword [esp + 0x44]
mov ebp, dword [esp + 0x60]
xor ecx, ecx
cmp ebp, dword [esp + 0x7c]
setl cl
xor eax, eax
cmp ebp, dword [esp + 0x84]
mov ebp, dword [esp + 0x24]
setg al
or ecx, eax
xor eax, eax
cmp esi, dword [esp + 0x78]
setl al
or ecx, eax
xor eax, eax
cmp ebp, dword [esp + 0x80]
mov ebp, dword [esp + 0x60]
setg al
or ecx, eax
mov eax, dword [esp + 0x38]
movzx eax, byte [eax + ebp]
or ecx, eax
jne 0x777dc0
mov ecx, dword [esp + 0x78]
mov eax, dword [esp + 0x24]
cmp eax, ecx
jge 0x777cfe
mov eax, ecx
mov ecx, dword [esp + 0x80]
cmp esi, ecx
jle 0x777d0b
mov esi, ecx
mov ecx, dword [esp + 0x38]
mov ebx, dword [esp + 0x60]
mov byte [ebx + ecx], 1
mov ecx, dword [esp + 0x50]
sub esi, eax
lea eax, [ecx + eax*2]
add eax, dword [esp + 0x20]
mov ebx, edx
sar ebx, 5
mov ebp, edx
add esi, 1
and ebx, 0x3f
sar ebp, 0xb
mov ecx, edx
and ecx, 0x1f
mov dword [esp + 0x40], esi
mov dword [esp + 0x2c], eax
mov dword [esp + 0x58], ebx
mov dword [esp + 0x54], ebp
mov dword [esp + 0x4c], ecx
jmp 0x777d58
mov ebp, dword [esp + 0x54]
mov ebx, dword [esp + 0x58]
movzx ecx, word [eax]
movzx esi, cx
mov eax, esi
shr eax, 5
and eax, 0x3f
sub ebx, eax
mov eax, ecx
shr eax, 5
and eax, 0x3f
add ax, word [edi + ebx*4]
mov ebx, esi
shr ebx, 0xb
sub ebp, ebx
mov bx, cx
shr bx, 0xb
add bx, word [edi + ebp*4]
shl ax, 5
shl bx, 0xb
or ax, bx
mov ebx, dword [esp + 0x4c]
and esi, 0x1f
sub ebx, esi
and ecx, 0x1f
add cx, word [edi + ebx*4]
or ax, cx
mov bx, ax
mov eax, dword [esp + 0x2c]
mov word [eax], bx
add eax, 2
sub dword [esp + 0x40], 1
mov dword [esp + 0x2c], eax
jne 0x777d50
mov ebx, dword [esp + 0x48]
mov ecx, dword [esp + 0x6c]
xor ebp, ebp
cmp dword [esp + 0x18], ebp
jge 0x777e2e
mov eax, dword [esp + 0x28]
add eax, dword [esp + 0x9c]
mov esi, dword [esp + 0x30]
cmp eax, esi
mov dword [esp + 0x28], eax
jl 0x777e11
mov ebp, dword [esp + 0x3c]
add ecx, dword [esp + 0x1c]
add dword [esp + 0x50], ebp
add dword [esp + 0x34], 1
add dword [esp + 0x5c], 1
sub dword [esp + 0x60], 1
sub eax, esi
mov dword [esp + 0x6c], ecx
mov dword [esp + 0x28], eax
mov ebp, 1
mov eax, dword [esp + 0x34]
mov esi, dword [esp + 0x18]
add eax, eax
add eax, eax
add dword [esp + 0x14], eax
lea esi, [esi + eax + 2]
mov dword [esp + 0x18], esi
jmp 0x777edf
cmp dword [esp + 0x14], 0
jl 0x777e67
mov eax, 1
add dword [esp + 0x68], eax
sub dword [esp + 0x64], eax
sub ebx, eax
mov eax, dword [esp + 0x74]
sub eax, 4
sub dword [esp + 0x18], eax
mov esi, 2
sub esi, eax
add dword [esp + 0x14], esi
mov dword [esp + 0x48], ebx
mov dword [esp + 0x74], eax
jmp 0x777edf
mov eax, dword [esp + 0x28]
add eax, dword [esp + 0x9c]
sub dword [esp + 0x74], 4
mov esi, 1
add dword [esp + 0x68], esi
sub dword [esp + 0x64], esi
sub ebx, esi
cmp eax, dword [esp + 0x30]
mov dword [esp + 0x48], ebx
mov dword [esp + 0x28], eax
jl 0x777ebd
add dword [esp + 0x34], esi
add dword [esp + 0x5c], esi
mov esi, dword [esp + 0x3c]
add ecx, dword [esp + 0x1c]
add dword [esp + 0x50], esi
mov ebp, 1
sub dword [esp + 0x60], ebp
sub eax, dword [esp + 0x30]
mov dword [esp + 0x6c], ecx
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x34]
mov esi, dword [esp + 0x18]
sub eax, ebx
add eax, eax
add eax, eax
lea esi, [esi + eax + 2]
mov dword [esp + 0x18], esi
mov esi, dword [esp + 0x14]
lea eax, [esi + eax + 2]
mov dword [esp + 0x14], eax
test ebx, ebx
jg 0x777b65
mov esi, dword [esp + 0x94]
sub esi, dword [esp + 0x34]
mov ecx, dword [esp + 0x90]
lea ebp, [ebx + ecx]
mov eax, ecx
sub eax, ebx
xor ecx, ecx
cmp esi, dword [esp + 0x7c]
setl cl
xor ebx, ebx
cmp ebp, dword [esp + 0x78]
setl bl
or ecx, ebx
xor ebx, ebx
cmp esi, dword [esp + 0x84]
setg bl
or ecx, ebx
xor ebx, ebx
cmp eax, dword [esp + 0x80]
setg bl
or ecx, ebx
mov ebx, dword [esp + 0x38]
movzx ebx, byte [esi + ebx]
or ecx, ebx
jne case.0x77cf1a.5
mov ecx, dword [esp + 0x78]
cmp eax, ecx
jge 0x777f4a
mov eax, ecx
mov ecx, dword [esp + 0x80]
cmp ebp, ecx
jle 0x777f57
mov ebp, ecx
mov ecx, dword [esp + 0x38]
mov byte [esi + ecx], 1
imul esi, dword [esp + 0x1c]
add esi, dword [esp + 0x20]
sub ebp, eax
add ebp, 1
mov ebx, edx
mov dword [esp + 0x40], ebp
sar ebx, 5
mov ebp, edx
and ebx, 0x3f
sar ebp, 0xb
and edx, 0x1f
lea esi, [esi + eax*2]
mov dword [esp + 0x58], ebx
mov dword [esp + 0x54], ebp
mov dword [esp + 0x4c], edx
jmp 0x777f9a
mov ebp, dword [esp + 0x54]
mov ebx, dword [esp + 0x58]
movzx eax, word [esi]
movzx ecx, ax
mov edx, ecx
shr edx, 5
and edx, 0x3f
sub ebx, edx
mov edx, eax
shr edx, 5
and edx, 0x3f
add dx, word [edi + ebx*4]
mov ebx, ecx
shr ebx, 0xb
sub ebp, ebx
mov bx, ax
shr bx, 0xb
add bx, word [edi + ebp*4]
shl dx, 5
shl bx, 0xb
or dx, bx
mov ebx, dword [esp + 0x4c]
and ecx, 0x1f
sub ebx, ecx
and eax, 0x1f
add ax, word [edi + ebx*4]
add esi, 2
or dx, ax
sub dword [esp + 0x40], 1
mov word [esi - 2], dx
jne 0x777f92
mov eax, dword [esp + 0x38]
push eax
call fcn.0057cf76
add esp, 4
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x78
ret
cmp dword [0xb160b8], 0
je case.0x77cf1a.5
mov ecx, dword [esp + 0x90]
mov edi, dword [esp + 0x98]
mov eax, ecx
add ecx, edi
sub eax, edi
mov edi, dword [esp + 0x78]
mov dword [esp + 0x44], ecx
mov ecx, dword [esp + 0x94]
mov dword [esp + 0x24], eax
xor eax, eax
cmp ecx, dword [esp + 0x7c]
mov ebp, dword [esp + 0x94]
setl al
xor ecx, ecx
cmp dword [esp + 0x44], edi
mov edi, dword [esp + 0x80]
setl cl
or eax, ecx
xor ecx, ecx
cmp dword [esp + 0x24], edi
mov edi, dword [esp + 0x38]
setg cl
or eax, ecx
xor ecx, ecx
cmp ebp, dword [esp + 0x84]
setg cl
or eax, ecx
movzx ecx, byte [edi + ebp]
or eax, ecx
jne 0x778164
mov ecx, dword [esp + 0x24]
mov eax, dword [esp + 0x78]
cmp ecx, eax
jge 0x778096
mov ecx, eax
mov eax, dword [esp + 0x44]
cmp eax, dword [esp + 0x80]
jle 0x7780aa
mov eax, dword [esp + 0x80]
sub eax, ecx
add eax, 1
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x1c]
imul eax, ebp
add eax, dword [esp + 0x20]
mov byte [edi + ebp], 1
lea edi, [eax + ecx*2]
mov ecx, edx
sar ecx, 0xb
lea eax, [esi + ecx*4]
mov ecx, edx
sar ecx, 5
and ecx, 0x3f
mov dword [esp + 0x54], eax
lea eax, [esi + ecx*4]
mov ecx, edx
and ecx, 0x1f
mov dword [esp + 0x50], eax
lea eax, [esi + ecx*4]
mov dword [esp + 0x2c], edi
mov dword [esp + 0x4c], eax
mov ecx, dword [esp + 0x54]
mov ax, word [ecx]
mov ecx, dword [esp + 0x50]
shl ax, 6
add ax, word [ecx]
mov ecx, dword [esp + 0x4c]
shl ax, 5
add ax, word [ecx]
movzx ecx, word [edi]
movzx edi, cx
movzx eax, ax
mov ecx, eax
and ecx, 0xf7def7df
and edi, 0xf7def7df
add edi, ecx
mov ecx, edi
and ecx, 0x8210820
mov ebp, ecx
shr ebp, 5
sub ecx, ebp
mov ebp, dword [esp + 0x2c]
movzx ebp, word [ebp]
or eax, ebp
and eax, 0x820
or ecx, eax
or ecx, edi
mov edi, dword [esp + 0x2c]
mov word [edi], cx
add edi, 2
sub dword [esp + 0x40], 1
mov dword [esp + 0x2c], edi
jne 0x7780f0
mov ebp, dword [esp + 0x94]
cmp dword [esp + 0x18], 0
mov dword [esp + 0x2c], 0
jge 0x7781b9
mov eax, dword [esp + 0x9c]
mov ecx, dword [esp + 0x30]
cmp eax, ecx
mov dword [esp + 0x28], eax
jl 0x77819c
sub eax, ecx
mov dword [esp + 0x34], 1
mov dword [esp + 0x28], eax
mov dword [esp + 0x2c], 1
mov eax, dword [esp + 0x34]
mov ecx, dword [esp + 0x18]
add eax, eax
add eax, eax
add dword [esp + 0x14], eax
lea ecx, [ecx + eax + 2]
mov dword [esp + 0x18], ecx
jmp 0x778231
mov ebx, dword [esp + 0x98]
add ebx, 0xffffffff
cmp dword [esp + 0x14], 0
mov dword [esp + 0x48], ebx
jl 0x7781e6
lea eax, [ebx*4]
sub dword [esp + 0x18], eax
mov ecx, 2
sub ecx, eax
add dword [esp + 0x14], ecx
jmp 0x778231
mov eax, dword [esp + 0x9c]
mov ecx, dword [esp + 0x30]
cmp eax, ecx
mov dword [esp + 0x28], eax
jl 0x77820f
sub eax, ecx
mov dword [esp + 0x34], 1
mov dword [esp + 0x28], eax
mov dword [esp + 0x2c], 1
mov eax, dword [esp + 0x34]
mov ecx, dword [esp + 0x18]
sub eax, ebx
add eax, eax
add eax, eax
lea ecx, [ecx + eax + 2]
mov dword [esp + 0x18], ecx
mov ecx, dword [esp + 0x14]
lea eax, [ecx + eax + 2]
mov dword [esp + 0x14], eax
test ebx, ebx
jle 0x7785e3
mov edi, dword [esp + 0x90]
lea ecx, [ebx*4]
mov dword [esp + 0x74], ecx
mov ecx, dword [esp + 0x34]
lea eax, [ecx + ebp]
mov dword [esp + 0x60], eax
lea eax, [ebx + edi]
mov dword [esp + 0x64], eax
mov eax, ebp
mov ebp, dword [esp + 0x60]
sub eax, ecx
mov ecx, dword [esp + 0x1c]
imul ebp, ecx
mov dword [esp + 0x68], ebp
mov ebp, edi
mov edi, ecx
neg edi
sub ebp, ebx
mov dword [esp + 0x5c], eax
imul eax, ecx
mov dword [esp + 0x3c], edi
mov edi, dword [esp + 0x2c]
mov dword [esp + 0x6c], ebp
mov dword [esp + 0x58], eax
nop
test edi, edi
je 0x7784ce
mov ecx, dword [esp + 0x60]
mov edi, dword [esp + 0x64]
mov ebx, dword [esp + 0x78]
xor eax, eax
cmp ecx, dword [esp + 0x7c]
mov dword [esp + 0x24], ebp
setl al
xor ecx, ecx
cmp ebp, dword [esp + 0x80]
mov ebp, dword [esp + 0x60]
setg cl
mov dword [esp + 0x44], edi
or eax, ecx
xor ecx, ecx
cmp edi, ebx
setl cl
or eax, ecx
xor ecx, ecx
cmp ebp, dword [esp + 0x84]
setg cl
or eax, ecx
mov ecx, dword [esp + 0x38]
movzx ebx, byte [ecx + ebp]
or eax, ebx
jne 0x7783bc
mov eax, dword [esp + 0x78]
cmp dword [esp + 0x6c], eax
jge 0x7782fe
mov dword [esp + 0x24], eax
jmp 0x778302
mov eax, dword [esp + 0x24]
mov ebx, dword [esp + 0x80]
cmp dword [esp + 0x64], ebx
jle 0x778315
mov edi, ebx
mov dword [esp + 0x44], ebx
mov byte [ecx + ebp], 1
mov ecx, dword [esp + 0x68]
sub edi, eax
lea eax, [ecx + eax*2]
add eax, dword [esp + 0x20]
mov ecx, edx
sar ecx, 0xb
lea ecx, [esi + ecx*4]
mov dword [esp + 0x54], ecx
mov ecx, edx
sar ecx, 5
and ecx, 0x3f
lea ecx, [esi + ecx*4]
mov dword [esp + 0x50], ecx
add edi, 1
mov ecx, edx
and ecx, 0x1f
lea ecx, [esi + ecx*4]
mov dword [esp + 0x40], edi
mov dword [esp + 0x4c], ecx
mov ecx, dword [esp + 0x54]
mov cx, word [ecx]
mov edi, dword [esp + 0x50]
shl cx, 6
add cx, word [edi]
mov edi, dword [esp + 0x4c]
shl cx, 5
add cx, word [edi]
add eax, 2
movzx edi, cx
movzx ecx, word [eax - 2]
movzx ebp, cx
mov ecx, edi
and ecx, 0xf7def7df
and ebp, 0xf7def7df
add ebp, ecx
mov ecx, ebp
and ecx, 0x8210820
mov ebx, ecx
shr ebx, 5
sub ecx, ebx
movzx ebx, word [eax - 2]
or edi, ebx
and edi, 0x820
or ecx, edi
or ecx, ebp
sub dword [esp + 0x40], 1
mov word [eax - 2], cx
jne 0x778354
mov edi, dword [esp + 0x44]
mov ebp, dword [esp + 0x5c]
xor ecx, ecx
cmp ebp, dword [esp + 0x7c]
mov ebx, dword [esp + 0x5c]
setl cl
xor eax, eax
cmp ebp, dword [esp + 0x84]
mov ebp, dword [esp + 0x24]
setg al
or ecx, eax
xor eax, eax
cmp edi, dword [esp + 0x78]
setl al
or ecx, eax
xor eax, eax
cmp ebp, dword [esp + 0x80]
setg al
or ecx, eax
mov eax, dword [esp + 0x38]
movzx ebx, byte [ebx + eax]
or ecx, ebx
jne 0x7784c6
mov ecx, dword [esp + 0x78]
cmp ebp, ecx
jge 0x778412
mov ebp, ecx
mov ecx, dword [esp + 0x80]
cmp edi, ecx
jle 0x77841f
mov edi, ecx
mov ecx, dword [esp + 0x5c]
mov byte [ecx + eax], 1
mov eax, dword [esp + 0x58]
mov ecx, edx
sar ecx, 0xb
lea ecx, [esi + ecx*4]
mov dword [esp + 0x54], ecx
mov ecx, edx
sar ecx, 5
and ecx, 0x3f
lea ecx, [esi + ecx*4]
mov dword [esp + 0x50], ecx
sub edi, ebp
lea eax, [eax + ebp*2]
add eax, dword [esp + 0x20]
add edi, 1
mov ecx, edx
and ecx, 0x1f
lea ecx, [esi + ecx*4]
mov dword [esp + 0x40], edi
mov dword [esp + 0x4c], ecx
mov ecx, dword [esp + 0x54]
mov cx, word [ecx]
mov edi, dword [esp + 0x50]
shl cx, 6
add cx, word [edi]
mov edi, dword [esp + 0x4c]
shl cx, 5
add cx, word [edi]
add eax, 2
movzx edi, cx
movzx ecx, word [eax - 2]
movzx ebp, cx
mov ecx, edi
and ecx, 0xf7def7df
and ebp, 0xf7def7df
add ebp, ecx
mov ecx, ebp
and ecx, 0x8210820
mov ebx, ecx
shr ebx, 5
sub ecx, ebx
movzx ebx, word [eax - 2]
or edi, ebx
and edi, 0x820
or ecx, edi
or ecx, ebp
sub dword [esp + 0x40], 1
mov word [eax - 2], cx
jne 0x778462
mov ebx, dword [esp + 0x48]
mov ebp, dword [esp + 0x6c]
mov eax, dword [esp + 0x30]
mov ecx, dword [esp + 0x28]
xor edi, edi
cmp dword [esp + 0x18], edi
mov dword [esp + 0x2c], edi
jge 0x77853c
add ecx, dword [esp + 0x9c]
cmp ecx, eax
mov dword [esp + 0x28], ecx
jl 0x77851f
mov ecx, 1
add dword [esp + 0x34], ecx
add dword [esp + 0x60], ecx
mov ecx, dword [esp + 0x1c]
add dword [esp + 0x68], ecx
mov ecx, dword [esp + 0x3c]
add dword [esp + 0x58], ecx
mov edi, 1
sub dword [esp + 0x5c], edi
sub dword [esp + 0x28], eax
mov eax, dword [esp + 0x34]
mov ecx, dword [esp + 0x18]
add eax, eax
add eax, eax
add dword [esp + 0x14], eax
lea ecx, [ecx + eax + 2]
mov dword [esp + 0x18], ecx
jmp 0x7785db
sub dword [esp + 0x64], 1
sub ebx, 1
add ebp, 1
cmp dword [esp + 0x14], 0
mov dword [esp + 0x48], ebx
mov dword [esp + 0x6c], ebp
jl 0x778575
mov eax, dword [esp + 0x74]
sub eax, 4
sub dword [esp + 0x18], eax
mov ecx, 2
sub ecx, eax
add dword [esp + 0x14], ecx
mov dword [esp + 0x74], eax
jmp 0x7785db
add ecx, dword [esp + 0x9c]
sub dword [esp + 0x74], 4
cmp ecx, eax
mov dword [esp + 0x28], ecx
jl 0x7785b5
mov ecx, 1
add dword [esp + 0x34], ecx
add dword [esp + 0x60], ecx
mov ecx, dword [esp + 0x1c]
add dword [esp + 0x68], ecx
mov ecx, dword [esp + 0x3c]
add dword [esp + 0x58], ecx
mov edi, 1
sub dword [esp + 0x5c], edi
sub dword [esp + 0x28], eax
jmp 0x7785b9
mov edi, dword [esp + 0x2c]
mov eax, dword [esp + 0x34]
mov ecx, dword [esp + 0x18]
sub eax, ebx
add eax, eax
add eax, eax
lea ecx, [ecx + eax + 2]
mov dword [esp + 0x18], ecx
mov ecx, dword [esp + 0x14]
lea eax, [ecx + eax + 2]
mov dword [esp + 0x14], eax
test ebx, ebx
jg 0x778290
mov ecx, dword [esp + 0x90]
mov edi, dword [esp + 0x94]
sub edi, dword [esp + 0x34]
lea ebp, [ebx + ecx]
mov eax, ecx
sub eax, ebx
xor ecx, ecx
cmp edi, dword [esp + 0x7c]
setl cl
xor ebx, ebx
cmp ebp, dword [esp + 0x78]
setl bl
or ecx, ebx
xor ebx, ebx
cmp edi, dword [esp + 0x84]
setg bl
or ecx, ebx
xor ebx, ebx
cmp eax, dword [esp + 0x80]
setg bl
or ecx, ebx
mov ebx, dword [esp + 0x38]
movzx ebx, byte [edi + ebx]
or ecx, ebx
jne case.0x77cf1a.5
mov ecx, dword [esp + 0x78]
cmp eax, ecx
jge 0x778646
mov eax, ecx
mov ecx, dword [esp + 0x80]
cmp ebp, ecx
jle 0x778653
mov ebp, ecx
mov ecx, dword [esp + 0x38]
mov byte [edi + ecx], 1
imul edi, dword [esp + 0x1c]
add edi, dword [esp + 0x20]
sub ebp, eax
lea ebx, [edi + eax*2]
mov eax, edx
sar eax, 0xb
lea ecx, [esi + eax*4]
mov eax, edx
sar eax, 5
and eax, 0x3f
add ebp, 1
and edx, 0x1f
mov dword [esp + 0x54], ecx
lea ecx, [esi + eax*4]
lea edx, [esi + edx*4]
mov dword [esp + 0x50], ecx
mov dword [esp + 0x4c], edx
mov eax, dword [esp + 0x54]
mov cx, word [eax]
mov edx, dword [esp + 0x50]
mov eax, dword [esp + 0x4c]
shl cx, 6
add cx, word [edx]
movzx edx, word [ebx]
shl cx, 5
add cx, word [eax]
movzx edi, dx
movzx ecx, cx
mov eax, ecx
and eax, 0xf7def7df
and edi, 0xf7def7df
add edi, eax
mov eax, edi
and eax, 0x8210820
mov esi, eax
shr esi, 5
or ecx, edx
sub eax, esi
and ecx, 0x820
or eax, ecx
or eax, edi
mov word [ebx], ax
add ebx, 2
sub ebp, 1
jne 0x778691
mov eax, dword [esp + 0x38]
push eax
call fcn.0057cf76
add esp, 4
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x78
ret
cmp dword [0xb160b8], 0
je case.0x77cf1a.5
mov ecx, dword [esp + 0x90]
mov edi, dword [esp + 0x98]
mov eax, ecx
sub eax, edi
add ecx, edi
mov edi, dword [esp + 0x78]
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x94]
mov dword [esp + 0x44], ecx
xor ecx, ecx
cmp eax, dword [esp + 0x7c]
mov ebp, dword [esp + 0x38]
setl cl
xor eax, eax
cmp dword [esp + 0x44], edi
mov edi, dword [esp + 0x80]
setl al
or ecx, eax
xor eax, eax
cmp dword [esp + 0x24], edi
mov edi, dword [esp + 0x84]
setg al
or ecx, eax
xor eax, eax
cmp dword [esp + 0x94], edi
mov edi, dword [esp + 0x94]
setg al
or ecx, eax
movzx eax, byte [edi + ebp]
or ecx, eax
jne 0x778846
mov ecx, dword [esp + 0x24]
mov eax, dword [esp + 0x78]
cmp ecx, eax
jge 0x778794
mov ecx, eax
mov eax, dword [esp + 0x44]
cmp eax, dword [esp + 0x80]
jle 0x7787a8
mov eax, dword [esp + 0x80]
sub eax, ecx
add eax, 1
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x1c]
imul eax, edi
add eax, dword [esp + 0x20]
mov byte [edi + ebp], 1
lea ebp, [eax + ecx*2]
mov ecx, edx
sar ecx, 0xb
lea eax, [esi + ecx*4]
mov ecx, edx
sar ecx, 5
and ecx, 0x3f
mov dword [esp + 0x54], eax
lea eax, [esi + ecx*4]
mov ecx, edx
and ecx, 0x1f
mov dword [esp + 0x50], eax
lea eax, [esi + ecx*4]
mov dword [esp + 0x4c], eax
lea ebx, [ebx]
mov ecx, dword [esp + 0x54]
mov ax, word [ecx]
mov ecx, dword [esp + 0x50]
shl ax, 6
add ax, word [ecx]
mov ecx, dword [esp + 0x4c]
shl ax, 5
add ax, word [ecx]
movzx ecx, word [ebp]
movzx eax, ax
and eax, 0xf7def7df
or ecx, 0x8210820
sub ecx, eax
mov eax, ecx
and eax, 0x8210820
mov edi, eax
shr edi, 5
sub eax, edi
and eax, ecx
mov word [ebp], ax
add ebp, 2
sub dword [esp + 0x40], 1
jne 0x7787f0
mov edi, dword [esp + 0x94]
mov ebp, dword [esp + 0x18]
test ebp, ebp
mov dword [esp + 0x2c], 0
jge 0x77889a
mov eax, dword [esp + 0x9c]
mov edi, dword [esp + 0x30]
cmp eax, edi
mov dword [esp + 0x28], eax
jl 0x77887e
mov ecx, 1
sub eax, edi
mov dword [esp + 0x34], ecx
mov dword [esp + 0x28], eax
mov dword [esp + 0x2c], ecx
jmp 0x778882
mov ecx, dword [esp + 0x34]
lea edi, [ecx*4]
add dword [esp + 0x14], edi
lea ebp, [edi + ebp + 2]
mov dword [esp + 0x18], ebp
jmp 0x77891c
mov ebx, dword [esp + 0x98]
add ebx, 0xffffffff
cmp dword [esp + 0x14], 0
mov dword [esp + 0x48], ebx
jl 0x7788d4
lea eax, [ebx*4]
mov ecx, 2
sub ecx, eax
sub ebp, eax
add dword [esp + 0x14], ecx
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x34]
mov dword [esp + 0x18], ebp
jmp 0x778923
mov eax, dword [esp + 0x9c]
mov edi, dword [esp + 0x30]
cmp eax, edi
mov dword [esp + 0x28], eax
jl 0x7788fc
mov ecx, 1
sub eax, edi
mov dword [esp + 0x34], ecx
mov dword [esp + 0x28], eax
mov dword [esp + 0x2c], ecx
jmp 0x778900
mov ecx, dword [esp + 0x34]
mov edi, ecx
sub edi, ebx
add edi, edi
add edi, edi
lea ebp, [edi + ebp + 2]
mov dword [esp + 0x18], ebp
mov ebp, dword [esp + 0x14]
lea edi, [edi + ebp + 2]
mov dword [esp + 0x14], edi
mov edi, dword [esp + 0x94]
test ebx, ebx
jle 0x778cc7
lea ebp, [ebx*4]
mov dword [esp + 0x74], ebp
lea ebp, [ecx + edi]
sub edi, ecx
mov dword [esp + 0x5c], ebp
mov ebp, dword [esp + 0x90]
mov dword [esp + 0x58], edi
mov dword [esp + 0x44], edi
mov edi, dword [esp + 0x5c]
add ebp, ebx
mov dword [esp + 0x64], ebp
mov ebp, dword [esp + 0x1c]
imul edi, ebp
mov dword [esp + 0x6c], edi
mov edi, dword [esp + 0x90]
sub edi, ebx
mov dword [esp + 0x68], edi
mov edi, ebp
neg edi
mov dword [esp + 0x3c], edi
mov edi, dword [esp + 0x58]
imul edi, ebp
mov dword [esp + 0x60], edi
cmp dword [esp + 0x2c], 0
je 0x778bab
mov edi, dword [esp + 0x68]
mov eax, dword [esp + 0x64]
xor ebx, ebx
cmp edi, dword [esp + 0x80]
mov dword [esp + 0x24], edi
mov edi, dword [esp + 0x78]
setg bl
xor ecx, ecx
cmp eax, edi
mov edi, dword [esp + 0x84]
setl cl
mov ebp, dword [esp + 0x5c]
or ebx, ecx
xor ecx, ecx
cmp dword [esp + 0x5c], edi
mov edi, dword [esp + 0x7c]
setg cl
or ebx, ecx
xor ecx, ecx
cmp dword [esp + 0x5c], edi
setl cl
or ebx, ecx
mov ecx, dword [esp + 0x38]
movzx edi, byte [ecx + ebp]
or ebx, edi
jne 0x778aa1
mov edi, dword [esp + 0x78]
cmp dword [esp + 0x68], edi
jge 0x7789f8
mov dword [esp + 0x24], edi
jmp 0x7789fc
mov edi, dword [esp + 0x24]
mov ebx, dword [esp + 0x80]
cmp dword [esp + 0x64], ebx
jle 0x778a0b
mov eax, ebx
mov byte [ecx + ebp], 1
mov ecx, eax
sub ecx, edi
add ecx, 1
mov dword [esp + 0x40], ecx
mov ecx, dword [esp + 0x6c]
lea ebp, [ecx + edi*2]
add ebp, dword [esp + 0x20]
mov ecx, edx
sar ecx, 0xb
lea ecx, [esi + ecx*4]
mov dword [esp + 0x54], ecx
mov ecx, edx
sar ecx, 5
and ecx, 0x3f
lea ecx, [esi + ecx*4]
mov dword [esp + 0x50], ecx
mov ecx, edx
and ecx, 0x1f
lea ecx, [esi + ecx*4]
mov dword [esp + 0x4c], ecx
lea esp, [esp]
mov ecx, dword [esp + 0x54]
mov cx, word [ecx]
mov edi, dword [esp + 0x50]
shl cx, 6
add cx, word [edi]
mov edi, dword [esp + 0x4c]
shl cx, 5
add cx, word [edi]
movzx edi, word [ebp]
movzx ecx, cx
and ecx, 0xf7def7df
or edi, 0x8210820
sub edi, ecx
mov ecx, edi
and ecx, 0x8210820
mov ebx, ecx
shr ebx, 5
sub ecx, ebx
and ecx, edi
mov word [ebp], cx
add ebp, 2
sub dword [esp + 0x40], 1
jne 0x778a50
mov edi, dword [esp + 0x84]
xor ecx, ecx
cmp dword [esp + 0x44], edi
mov edi, dword [esp + 0x7c]
setg cl
xor ebx, ebx
cmp dword [esp + 0x44], edi
mov edi, dword [esp + 0x80]
setl bl
or ecx, ebx
xor ebx, ebx
cmp eax, dword [esp + 0x78]
setl bl
or ecx, ebx
xor ebx, ebx
cmp dword [esp + 0x24], edi
mov edi, dword [esp + 0x38]
setg bl
or ecx, ebx
mov ebx, dword [esp + 0x44]
movzx edi, byte [ebx + edi]
or ecx, edi
jne 0x778b9f
mov ecx, dword [esp + 0x24]
mov edi, dword [esp + 0x78]
cmp ecx, edi
jge 0x778aff
mov ecx, edi
mov edi, dword [esp + 0x80]
cmp eax, edi
jle 0x778b0c
mov eax, edi
mov edi, dword [esp + 0x44]
mov ebx, dword [esp + 0x38]
sub eax, ecx
mov byte [edi + ebx], 1
mov edi, dword [esp + 0x60]
lea ebp, [edi + ecx*2]
add ebp, dword [esp + 0x20]
mov ecx, edx
sar ecx, 0xb
lea ecx, [esi + ecx*4]
mov dword [esp + 0x54], ecx
mov ecx, edx
sar ecx, 5
and ecx, 0x3f
lea ecx, [esi + ecx*4]
mov dword [esp + 0x50], ecx
mov ecx, edx
add eax, 1
and ecx, 0x1f
lea ecx, [esi + ecx*4]
mov dword [esp + 0x4c], ecx
nop
mov ecx, dword [esp + 0x54]
mov cx, word [ecx]
mov edi, dword [esp + 0x50]
shl cx, 6
add cx, word [edi]
mov edi, dword [esp + 0x4c]
shl cx, 5
add cx, word [edi]
movzx edi, word [ebp]
movzx ecx, cx
and ecx, 0xf7def7df
or edi, 0x8210820
sub edi, ecx
mov ecx, edi
and ecx, 0x8210820
mov ebx, ecx
shr ebx, 5
sub ecx, ebx
and ecx, edi
mov word [ebp], cx
add ebp, 2
sub eax, 1
jne 0x778b50
mov eax, dword [esp + 0x28]
mov ebx, dword [esp + 0x48]
mov ecx, dword [esp + 0x34]
cmp dword [esp + 0x18], 0
mov edi, 1
mov dword [esp + 0x2c], 0
jge 0x778c1f
add eax, dword [esp + 0x9c]
cmp eax, dword [esp + 0x30]
mov dword [esp + 0x28], eax
jl 0x778c03
add dword [esp + 0x5c], edi
add ecx, edi
mov edi, dword [esp + 0x1c]
add dword [esp + 0x6c], edi
mov edi, dword [esp + 0x3c]
add dword [esp + 0x60], edi
mov edi, 1
sub dword [esp + 0x44], edi
sub eax, dword [esp + 0x30]
mov dword [esp + 0x34], ecx
mov dword [esp + 0x28], eax
mov dword [esp + 0x2c], edi
mov ebp, dword [esp + 0x18]
lea edi, [ecx*4]
add dword [esp + 0x14], edi
lea ebp, [edi + ebp + 2]
mov dword [esp + 0x18], ebp
jmp 0x778cb8
add dword [esp + 0x68], edi
sub dword [esp + 0x64], edi
sub ebx, edi
cmp dword [esp + 0x14], 0
mov dword [esp + 0x48], ebx
jl 0x778c53
mov edi, dword [esp + 0x74]
sub edi, 4
sub dword [esp + 0x18], edi
mov ebp, 2
sub ebp, edi
add dword [esp + 0x14], ebp
mov dword [esp + 0x74], edi
jmp 0x778cb8
add eax, dword [esp + 0x9c]
sub dword [esp + 0x74], 4
cmp eax, dword [esp + 0x30]
mov dword [esp + 0x28], eax
jl 0x778c98
add dword [esp + 0x5c], edi
add ecx, edi
mov edi, dword [esp + 0x1c]
add dword [esp + 0x6c], edi
mov edi, dword [esp + 0x3c]
add dword [esp + 0x60], edi
mov edi, 1
sub dword [esp + 0x44], edi
sub eax, dword [esp + 0x30]
mov dword [esp + 0x34], ecx
mov dword [esp + 0x28], eax
mov dword [esp + 0x2c], edi
mov ebp, dword [esp + 0x18]
mov edi, ecx
sub edi, ebx
add edi, edi
add edi, edi
lea ebp, [edi + ebp + 2]
mov dword [esp + 0x18], ebp
mov ebp, dword [esp + 0x14]
lea edi, [edi + ebp + 2]
mov dword [esp + 0x14], edi
test ebx, ebx
jg 0x778983
mov edi, dword [esp + 0x94]
mov ebp, dword [esp + 0x90]
sub edi, ecx
mov eax, ebp
sub eax, ebx
mov dword [esp + 0x24], eax
xor eax, eax
add ebp, ebx
cmp edi, dword [esp + 0x7c]
mov dword [esp + 0x44], ebp
setl al
xor ecx, ecx
cmp ebp, dword [esp + 0x78]
mov ebp, dword [esp + 0x24]
setl cl
or eax, ecx
xor ecx, ecx
cmp edi, dword [esp + 0x84]
setg cl
or eax, ecx
xor ecx, ecx
cmp ebp, dword [esp + 0x80]
setg cl
or eax, ecx
mov ecx, dword [esp + 0x38]
movzx ecx, byte [edi + ecx]
or eax, ecx
jne case.0x77cf1a.5
mov eax, dword [esp + 0x78]
cmp ebp, eax
jge 0x778d2c
mov ebp, eax
mov ecx, dword [esp + 0x80]
mov eax, dword [esp + 0x44]
cmp eax, ecx
jle 0x778d3d
mov eax, ecx
mov ecx, dword [esp + 0x38]
mov byte [edi + ecx], 1
imul edi, dword [esp + 0x1c]
add edi, dword [esp + 0x20]
sub eax, ebp
add eax, 1
mov ebx, eax
mov ecx, edx
mov eax, edx
sar eax, 0xb
sar ecx, 5
and ecx, 0x3f
lea edi, [edi + ebp*2]
lea ebp, [esi + eax*4]
lea eax, [esi + ecx*4]
and edx, 0x1f
mov dword [esp + 0x50], eax
lea esi, [esi + edx*4]
jmp 0x778d80
mov cx, word [ebp]
mov edx, dword [esp + 0x50]
shl cx, 6
add cx, word [edx]
add edi, 2
shl cx, 5
add cx, word [esi]
movzx eax, cx
movzx ecx, word [edi - 2]
and eax, 0xf7def7df
or ecx, 0x8210820
sub ecx, eax
mov eax, ecx
and eax, 0x8210820
mov edx, eax
shr edx, 5
sub eax, edx
and eax, ecx
sub ebx, 1
mov word [edi - 2], ax
jne 0x778d80
mov eax, dword [esp + 0x38]
push eax
call fcn.0057cf76
add esp, 4
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x78
ret
mov ecx, dword [esp + 0x90]
mov esi, dword [esp + 0x98]
mov edi, dword [esp + 0x78]
mov eax, ecx
add ecx, esi
sub eax, esi
mov dword [esp + 0x44], ecx
mov ecx, dword [esp + 0x7c]
mov dword [esp + 0x24], eax
xor eax, eax
cmp dword [esp + 0x94], ecx
mov ebp, dword [esp + 0x94]
setl al
xor ecx, ecx
cmp dword [esp + 0x44], edi
mov edi, dword [esp + 0x80]
setl cl
or eax, ecx
xor ecx, ecx
cmp dword [esp + 0x24], edi
mov edi, dword [esp + 0x84]
setg cl
or eax, ecx
xor ecx, ecx
cmp dword [esp + 0x94], edi
mov edi, dword [esp + 0x38]
setg cl
or eax, ecx
movzx ecx, byte [edi + ebp]
or eax, ecx
jne 0x778f09
mov ecx, dword [esp + 0x24]
mov eax, dword [esp + 0x78]
cmp ecx, eax
jge 0x778e62
mov ecx, eax
mov eax, dword [esp + 0x44]
mov esi, dword [esp + 0x80]
cmp eax, esi
jle 0x778e73
mov eax, esi
sub eax, ecx
add eax, 1
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x1c]
imul eax, ebp
add eax, dword [esp + 0x20]
mov byte [edi + ebp], 1
lea eax, [eax + ecx*2]
mov edi, edx
mov esi, edx
and edi, 0x7e0
mov ecx, edx
and esi, 0xf800
and ecx, 0x1f
mov dword [esp + 0x58], edi
mov dword [esp + 0x4c], ecx
jmp 0x778eb4
mov edi, dword [esp + 0x58]
movzx ecx, word [eax]
mov ebp, ecx
and ebp, 0x7e0
imul ebp, edi
mov edi, ecx
and edi, 0xf800
imul edi, esi
and ecx, 0x1f
imul ecx, dword [esp + 0x4c]
shr ebp, 0xb
shr edi, 0x10
and ebp, 0x7e0
and edi, 0xf800
or ebp, edi
shr ecx, 5
or ebp, ecx
mov word [eax], bp
add eax, 2
sub dword [esp + 0x40], 1
jne 0x778eb0
mov esi, dword [esp + 0x98]
mov ebp, dword [esp + 0x94]
mov ecx, dword [esp + 0x18]
xor edi, edi
test ecx, ecx
jge 0x778f52
mov eax, dword [esp + 0x9c]
mov esi, dword [esp + 0x30]
cmp eax, esi
mov dword [esp + 0x28], eax
jl 0x778f39
sub eax, esi
mov dword [esp + 0x34], 1
mov dword [esp + 0x28], eax
mov edi, 1
mov eax, dword [esp + 0x34]
add eax, eax
add eax, eax
add dword [esp + 0x14], eax
lea ecx, [ecx + eax + 2]
mov dword [esp + 0x18], ecx
jmp 0x778fbe
cmp dword [esp + 0x14], 0
lea ebx, [esi - 1]
mov dword [esp + 0x48], ebx
jl 0x778f7a
lea eax, [ebx*4]
sub ecx, eax
mov dword [esp + 0x18], ecx
mov ecx, 2
sub ecx, eax
add dword [esp + 0x14], ecx
jmp 0x778fbe
mov eax, dword [esp + 0x9c]
mov esi, dword [esp + 0x30]
cmp eax, esi
mov dword [esp + 0x28], eax
jl 0x778fa0
sub eax, esi
mov dword [esp + 0x34], 1
mov dword [esp + 0x28], eax
mov edi, 1
mov eax, dword [esp + 0x34]
sub eax, ebx
add eax, eax
add eax, eax
lea ecx, [ecx + eax + 2]
mov dword [esp + 0x18], ecx
mov ecx, dword [esp + 0x14]
lea eax, [ecx + eax + 2]
mov dword [esp + 0x14], eax
test ebx, ebx
jle 0x77931e
mov esi, dword [esp + 0x34]
mov eax, dword [esp + 0x90]
lea ecx, [ebx*4]
mov dword [esp + 0x74], ecx
lea ecx, [esi + ebp]
mov dword [esp + 0x68], ecx
imul ecx, dword [esp + 0x1c]
add eax, ebx
mov dword [esp + 0x64], eax
mov eax, ebp
sub eax, esi
mov esi, dword [esp + 0x90]
mov dword [esp + 0x60], ecx
mov ecx, dword [esp + 0x1c]
mov ebp, eax
sub esi, ebx
neg ecx
imul eax, dword [esp + 0x1c]
mov dword [esp + 0x54], ebp
mov dword [esp + 0x6c], esi
mov dword [esp + 0x3c], ecx
mov dword [esp + 0x5c], eax
lea esp, [esp]
test edi, edi
je 0x779203
mov eax, dword [esp + 0x68]
mov ebx, dword [esp + 0x78]
mov edi, dword [esp + 0x64]
xor ecx, ecx
cmp eax, dword [esp + 0x7c]
mov ebp, dword [esp + 0x68]
setl cl
xor eax, eax
cmp esi, dword [esp + 0x80]
mov dword [esp + 0x24], esi
setg al
or ecx, eax
xor eax, eax
cmp edi, ebx
setl al
or ecx, eax
xor eax, eax
cmp ebp, dword [esp + 0x84]
setg al
or ecx, eax
mov eax, dword [esp + 0x38]
movzx ebx, byte [eax + ebp]
or ecx, ebx
jne 0x779120
mov ecx, dword [esp + 0x78]
cmp dword [esp + 0x6c], ecx
jge 0x77908a
mov esi, ecx
mov dword [esp + 0x24], ecx
mov ecx, dword [esp + 0x80]
cmp dword [esp + 0x64], ecx
jle 0x779099
mov edi, ecx
mov ecx, dword [esp + 0x60]
mov byte [eax + ebp], 1
mov eax, edi
sub eax, esi
add eax, 1
mov dword [esp + 0x40], eax
lea esi, [ecx + esi*2]
add esi, dword [esp + 0x20]
mov ebx, edx
mov eax, edx
and ebx, 0x7e0
mov ecx, edx
and eax, 0xf800
and ecx, 0x1f
mov dword [esp + 0x58], ebx
mov dword [esp + 0x4c], ecx
jmp 0x7790d5
mov ebx, dword [esp + 0x58]
movzx ecx, word [esi]
mov ebp, ecx
and ebp, 0x7e0
imul ebp, ebx
mov ebx, ecx
and ebx, 0xf800
imul ebx, eax
and ecx, 0x1f
imul ecx, dword [esp + 0x4c]
shr ebp, 0xb
shr ebx, 0x10
and ebp, 0x7e0
and ebx, 0xf800
or ebp, ebx
shr ecx, 5
or ebp, ecx
mov word [esi], bp
add esi, 2
sub dword [esp + 0x40], 1
jne 0x7790d1
mov esi, dword [esp + 0x24]
mov ebp, dword [esp + 0x54]
xor ecx, ecx
cmp ebp, dword [esp + 0x7c]
setl cl
xor eax, eax
cmp ebp, dword [esp + 0x84]
setg al
or ecx, eax
xor eax, eax
cmp edi, dword [esp + 0x78]
setl al
or ecx, eax
xor eax, eax
cmp esi, dword [esp + 0x80]
setg al
or ecx, eax
mov eax, dword [esp + 0x38]
movzx ebx, byte [eax + ebp]
or ecx, ebx
jne 0x7791fb
mov ecx, dword [esp + 0x78]
cmp esi, ecx
jge 0x77916e
mov esi, ecx
mov ecx, dword [esp + 0x80]
cmp edi, ecx
jle 0x77917b
mov edi, ecx
mov ecx, dword [esp + 0x5c]
sub edi, esi
add edi, 1
mov byte [eax + ebp], 1
mov dword [esp + 0x40], edi
lea esi, [ecx + esi*2]
add esi, dword [esp + 0x20]
mov eax, edx
mov edi, edx
mov ecx, edx
and eax, 0x7e0
and edi, 0xf800
and ecx, 0x1f
mov dword [esp + 0x4c], ecx
jmp 0x7791b0
movzx ecx, word [esi]
mov ebx, ecx
and ebx, 0x7e0
mov ebp, ecx
imul ebx, eax
and ebp, 0xf800
imul ebp, edi
and ecx, 0x1f
imul ecx, dword [esp + 0x4c]
shr ebx, 0xb
shr ebp, 0x10
and ebx, 0x7e0
and ebp, 0xf800
or ebx, ebp
shr ecx, 5
or ebx, ecx
mov word [esi], bx
add esi, 2
sub dword [esp + 0x40], 1
jne 0x7791b0
mov ebp, dword [esp + 0x54]
mov esi, dword [esp + 0x6c]
mov ebx, dword [esp + 0x48]
mov eax, dword [esp + 0x30]
mov ecx, dword [esp + 0x28]
xor edi, edi
cmp dword [esp + 0x18], edi
mov dword [esp + 0x2c], edi
jge 0x779274
add ecx, dword [esp + 0x9c]
cmp ecx, eax
mov dword [esp + 0x28], ecx
jl 0x779257
mov ecx, 1
add dword [esp + 0x34], ecx
add dword [esp + 0x68], ecx
mov ecx, dword [esp + 0x1c]
add dword [esp + 0x60], ecx
mov ecx, dword [esp + 0x3c]
add dword [esp + 0x5c], ecx
sub ebp, 1
sub dword [esp + 0x28], eax
mov dword [esp + 0x54], ebp
mov edi, 1
mov eax, dword [esp + 0x34]
mov ecx, dword [esp + 0x18]
add eax, eax
add eax, eax
add dword [esp + 0x14], eax
lea ecx, [ecx + eax + 2]
mov dword [esp + 0x18], ecx
jmp 0x779316
sub dword [esp + 0x64], 1
sub ebx, 1
add esi, 1
cmp dword [esp + 0x14], 0
mov dword [esp + 0x48], ebx
mov dword [esp + 0x6c], esi
jl 0x7792ad
mov eax, dword [esp + 0x74]
sub eax, 4
sub dword [esp + 0x18], eax
mov ecx, 2
sub ecx, eax
add dword [esp + 0x14], ecx
mov dword [esp + 0x74], eax
jmp 0x779316
add ecx, dword [esp + 0x9c]
sub dword [esp + 0x74], 4
cmp ecx, eax
mov dword [esp + 0x28], ecx
jl 0x7792f0
mov ecx, 1
add dword [esp + 0x34], ecx
add dword [esp + 0x68], ecx
mov ecx, dword [esp + 0x1c]
add dword [esp + 0x60], ecx
mov ecx, dword [esp + 0x3c]
add dword [esp + 0x5c], ecx
sub ebp, 1
sub dword [esp + 0x28], eax
mov dword [esp + 0x54], ebp
mov edi, 1
jmp 0x7792f4
mov edi, dword [esp + 0x2c]
mov eax, dword [esp + 0x34]
mov ecx, dword [esp + 0x18]
sub eax, ebx
add eax, eax
add eax, eax
lea ecx, [ecx + eax + 2]
mov dword [esp + 0x18], ecx
mov ecx, dword [esp + 0x14]
lea eax, [ecx + eax + 2]
mov dword [esp + 0x14], eax
test ebx, ebx
jg 0x779020
mov ecx, dword [esp + 0x90]
mov esi, dword [esp + 0x94]
sub esi, dword [esp + 0x34]
mov eax, ecx
sub eax, ebx
lea edi, [ebx + ecx]
xor ecx, ecx
cmp esi, dword [esp + 0x7c]
mov dword [esp + 0x24], eax
setl cl
xor eax, eax
cmp edi, dword [esp + 0x78]
mov ebx, dword [esp + 0x80]
setl al
or ecx, eax
xor eax, eax
cmp esi, dword [esp + 0x84]
setg al
or ecx, eax
xor eax, eax
cmp dword [esp + 0x24], ebx
setg al
or ecx, eax
mov eax, dword [esp + 0x38]
movzx eax, byte [esi + eax]
or ecx, eax
jne case.0x77cf1a.5
mov ecx, dword [esp + 0x78]
mov eax, dword [esp + 0x24]
cmp eax, ecx
jge 0x77938d
mov eax, ecx
mov ecx, dword [esp + 0x80]
cmp edi, ecx
jle 0x77939a
mov edi, ecx
mov ecx, dword [esp + 0x38]
mov byte [esi + ecx], 1
imul esi, dword [esp + 0x1c]
add esi, dword [esp + 0x20]
sub edi, eax
mov ecx, edx
mov ebx, edx
add edi, 1
and ecx, 0x7e0
and ebx, 0xf800
mov dword [esp + 0x40], edi
lea esi, [esi + eax*2]
and edx, 0x1f
lea ebx, [ebx]
movzx eax, word [esi]
mov edi, eax
and edi, 0x7e0
mov ebp, eax
imul edi, ecx
and ebp, 0xf800
imul ebp, ebx
and eax, 0x1f
imul eax, edx
shr edi, 0xb
shr ebp, 0x10
and edi, 0x7e0
and ebp, 0xf800
or edi, ebp
shr eax, 5
or edi, eax
mov word [esi], di
add esi, 2
sub dword [esp + 0x40], 1
jne 0x7793d0
mov eax, dword [esp + 0x38]
push eax
call fcn.0057cf76
add esp, 4
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x78
ret
mov ecx, dword [esp + 0x90]
mov esi, dword [esp + 0x98]
mov eax, ecx
add ecx, esi
sub eax, esi
mov esi, dword [esp + 0x78]
mov dword [esp + 0x44], ecx
mov ecx, dword [esp + 0x94]
mov dword [esp + 0x24], eax
xor eax, eax
cmp ecx, dword [esp + 0x7c]
mov ebp, dword [esp + 0x38]
setl al
xor ecx, ecx
cmp dword [esp + 0x44], esi
mov esi, dword [esp + 0x80]
setl cl
or eax, ecx
xor ecx, ecx
cmp dword [esp + 0x24], esi
mov esi, dword [esp + 0x94]
setg cl
or eax, ecx
xor ecx, ecx
cmp esi, dword [esp + 0x84]
setg cl
or eax, ecx
movzx ecx, byte [esi + ebp]
or eax, ecx
jne 0x779596
mov ecx, dword [esp + 0x24]
mov eax, dword [esp + 0x78]
cmp ecx, eax
jge 0x7794aa
mov ecx, eax
mov eax, dword [esp + 0x44]
cmp eax, dword [esp + 0x80]
jle 0x7794be
mov eax, dword [esp + 0x80]
sub eax, ecx
add eax, 1
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x1c]
imul eax, esi
add eax, dword [esp + 0x20]
mov byte [esi + ebp], 1
lea eax, [eax + ecx*2]
mov ecx, edx
sar ecx, 5
and ecx, 0x3f
mov dword [esp + 0x58], ecx
mov ecx, edx
sar ecx, 0xb
mov dword [esp + 0x54], ecx
mov ecx, edx
and ecx, 0x1f
mov dword [esp + 0x2c], eax
mov dword [esp + 0x4c], ecx
jmp 0x779500
movzx ecx, word [eax]
movzx esi, cx
mov eax, esi
shr eax, 5
and eax, 0x3f
mov ebp, esi
and esi, 0x1f
mov dword [esp + 0x10], esi
mov esi, eax
imul esi, dword [esp + 0x58]
shr ebp, 0xb
mov dword [esp + 0x50], ebp
sar esi, 6
sub esi, eax
mov eax, dword [esp + 0x50]
mov ebp, ecx
shr ebp, 5
and ebp, 0x3f
add bp, word [edi + esi*4]
mov esi, dword [esp + 0x54]
imul esi, eax
sar esi, 5
sub esi, eax
mov ax, cx
shr ax, 0xb
add ax, word [edi + esi*4]
shl bp, 5
shl ax, 0xb
or bp, ax
mov eax, dword [esp + 0x10]
imul eax, dword [esp + 0x4c]
sar eax, 5
sub eax, dword [esp + 0x10]
and ecx, 0x1f
add cx, word [edi + eax*4]
mov eax, dword [esp + 0x2c]
or bp, cx
mov word [eax], bp
add eax, 2
sub dword [esp + 0x40], 1
mov dword [esp + 0x2c], eax
jne 0x779500
mov esi, dword [esp + 0x94]
mov ebp, dword [esp + 0x18]
test ebp, ebp
mov dword [esp + 0x2c], 0
jge 0x7795e8
mov eax, dword [esp + 0x9c]
cmp eax, dword [esp + 0x30]
mov dword [esp + 0x28], eax
jl 0x7795cf
sub eax, dword [esp + 0x30]
mov dword [esp + 0x34], 1
mov dword [esp + 0x28], eax
mov dword [esp + 0x2c], 1
mov eax, dword [esp + 0x34]
add eax, eax
add eax, eax
add dword [esp + 0x14], eax
lea ecx, [eax + ebp + 2]
mov dword [esp + 0x18], ecx
jmp 0x779662
mov ebx, dword [esp + 0x98]
add ebx, 0xffffffff
cmp dword [esp + 0x14], 0
mov dword [esp + 0x48], ebx
jl 0x779617
lea eax, [ebx*4]
mov ecx, 2
sub ebp, eax
sub ecx, eax
add dword [esp + 0x14], ecx
mov dword [esp + 0x18], ebp
jmp 0x779662
mov eax, dword [esp + 0x9c]
mov ecx, dword [esp + 0x30]
cmp eax, ecx
mov dword [esp + 0x28], eax
jl 0x779644
mov ebp, dword [esp + 0x18]
sub eax, ecx
mov dword [esp + 0x34], 1
mov dword [esp + 0x28], eax
mov dword [esp + 0x2c], 1
mov eax, dword [esp + 0x34]
sub eax, ebx
add eax, eax
add eax, eax
lea ecx, [eax + ebp + 2]
mov dword [esp + 0x18], ecx
mov ecx, dword [esp + 0x14]
lea eax, [ecx + eax + 2]
mov dword [esp + 0x14], eax
test ebx, ebx
jle 0x779a70
mov eax, dword [esp + 0x90]
mov ebp, dword [esp + 0x34]
add eax, ebx
lea ecx, [ebx*4]
mov dword [esp + 0x64], eax
mov eax, esi
mov dword [esp + 0x74], ecx
lea ecx, [esi + ebp]
mov esi, dword [esp + 0x90]
sub eax, ebp
mov ebp, dword [esp + 0x1c]
sub esi, ebx
mov dword [esp + 0x68], esi
mov esi, ebp
mov dword [esp + 0x5c], ecx
imul ecx, ebp
neg esi
mov dword [esp + 0x60], eax
imul eax, ebp
mov ebp, dword [esp + 0x2c]
mov dword [esp + 0x6c], ecx
mov dword [esp + 0x3c], esi
mov dword [esp + 0x70], eax
test ebp, ebp
je 0x779946
mov eax, dword [esp + 0x5c]
mov ebp, dword [esp + 0x68]
mov esi, dword [esp + 0x64]
xor ecx, ecx
cmp eax, dword [esp + 0x7c]
mov dword [esp + 0x24], ebp
setl cl
xor eax, eax
cmp ebp, dword [esp + 0x80]
mov ebp, esi
setg al
mov dword [esp + 0x44], esi
or ecx, eax
xor eax, eax
cmp ebp, dword [esp + 0x78]
mov ebp, dword [esp + 0x5c]
setl al
or ecx, eax
xor eax, eax
cmp ebp, dword [esp + 0x84]
setg al
or ecx, eax
mov eax, dword [esp + 0x38]
movzx eax, byte [eax + ebp]
or ecx, eax
jne 0x779812
mov eax, dword [esp + 0x78]
cmp dword [esp + 0x68], eax
jge 0x779732
mov dword [esp + 0x24], eax
jmp 0x779736
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x80]
cmp dword [esp + 0x64], ecx
jle 0x779749
mov esi, ecx
mov dword [esp + 0x44], ecx
mov ecx, dword [esp + 0x38]
sub esi, eax
mov byte [ecx + ebp], 1
mov ecx, dword [esp + 0x6c]
lea ebp, [ecx + eax*2]
add ebp, dword [esp + 0x20]
mov eax, edx
sar eax, 5
and eax, 0x3f
mov dword [esp + 0x58], eax
mov eax, edx
sar eax, 0xb
mov dword [esp + 0x54], eax
add esi, 1
mov eax, edx
and eax, 0x1f
mov dword [esp + 0x40], esi
mov dword [esp + 0x4c], eax
movzx ecx, word [ebp]
movzx eax, cx
mov esi, eax
mov ebx, eax
and eax, 0x1f
mov dword [esp + 0x10], eax
shr esi, 5
and esi, 0x3f
mov eax, esi
imul eax, dword [esp + 0x58]
sar eax, 6
sub eax, esi
shr ebx, 0xb
mov esi, ecx
shr esi, 5
and esi, 0x3f
add si, word [edi + eax*4]
mov dword [esp + 0x50], ebx
mov eax, ebx
mov ebx, dword [esp + 0x54]
imul ebx, eax
sar ebx, 5
sub ebx, eax
mov ax, cx
shr ax, 0xb
add ax, word [edi + ebx*4]
shl si, 5
shl ax, 0xb
or si, ax
mov eax, dword [esp + 0x10]
imul eax, dword [esp + 0x4c]
sar eax, 5
sub eax, dword [esp + 0x10]
and ecx, 0x1f
add cx, word [edi + eax*4]
add ebp, 2
or si, cx
sub dword [esp + 0x40], 1
mov word [ebp - 2], si
jne 0x779783
mov ebx, dword [esp + 0x48]
mov esi, dword [esp + 0x44]
mov ebp, dword [esp + 0x60]
xor ecx, ecx
cmp ebp, dword [esp + 0x7c]
setl cl
xor eax, eax
cmp ebp, dword [esp + 0x84]
mov ebp, dword [esp + 0x24]
setg al
or ecx, eax
xor eax, eax
cmp esi, dword [esp + 0x78]
setl al
or ecx, eax
xor eax, eax
cmp ebp, dword [esp + 0x80]
mov ebp, dword [esp + 0x60]
setg al
or ecx, eax
mov eax, dword [esp + 0x38]
movzx eax, byte [eax + ebp]
or ecx, eax
jne 0x779942
mov ecx, dword [esp + 0x78]
mov eax, dword [esp + 0x24]
cmp eax, ecx
jge 0x77986c
mov eax, ecx
mov ecx, dword [esp + 0x80]
cmp esi, ecx
jle 0x779879
mov esi, ecx
mov ecx, dword [esp + 0x38]
mov ebx, dword [esp + 0x60]
sub esi, eax
mov byte [ebx + ecx], 1
mov ecx, dword [esp + 0x70]
lea ebp, [ecx + eax*2]
add ebp, dword [esp + 0x20]
mov eax, edx
sar eax, 5
and eax, 0x3f
mov dword [esp + 0x58], eax
mov eax, edx
sar eax, 0xb
mov dword [esp + 0x54], eax
add esi, 1
mov eax, edx
and eax, 0x1f
mov dword [esp + 0x40], esi
mov dword [esp + 0x4c], eax
movzx ecx, word [ebp]
movzx eax, cx
mov esi, eax
mov ebx, eax
and eax, 0x1f
mov dword [esp + 0x10], eax
shr esi, 5
and esi, 0x3f
mov eax, esi
imul eax, dword [esp + 0x58]
sar eax, 6
sub eax, esi
shr ebx, 0xb
mov esi, ecx
shr esi, 5
and esi, 0x3f
add si, word [edi + eax*4]
mov dword [esp + 0x50], ebx
mov eax, ebx
mov ebx, dword [esp + 0x54]
imul ebx, eax
sar ebx, 5
sub ebx, eax
mov ax, cx
shr ax, 0xb
add ax, word [edi + ebx*4]
shl si, 5
shl ax, 0xb
or si, ax
mov eax, dword [esp + 0x10]
imul eax, dword [esp + 0x4c]
sar eax, 5
sub eax, dword [esp + 0x10]
and ecx, 0x1f
add cx, word [edi + eax*4]
add ebp, 2
or si, cx
sub dword [esp + 0x40], 1
mov word [ebp - 2], si
jne 0x7798b7
mov ebx, dword [esp + 0x48]
mov ecx, dword [esp + 0x6c]
xor ebp, ebp
cmp dword [esp + 0x18], ebp
jge 0x7799b0
mov eax, dword [esp + 0x28]
add eax, dword [esp + 0x9c]
mov esi, dword [esp + 0x30]
cmp eax, esi
mov dword [esp + 0x28], eax
jl 0x779993
mov ebp, dword [esp + 0x3c]
add ecx, dword [esp + 0x1c]
add dword [esp + 0x70], ebp
add dword [esp + 0x34], 1
add dword [esp + 0x5c], 1
sub dword [esp + 0x60], 1
sub eax, esi
mov dword [esp + 0x6c], ecx
mov dword [esp + 0x28], eax
mov ebp, 1
mov eax, dword [esp + 0x34]
mov esi, dword [esp + 0x18]
add eax, eax
add eax, eax
add dword [esp + 0x14], eax
lea esi, [esi + eax + 2]
mov dword [esp + 0x18], esi
jmp 0x779a61
cmp dword [esp + 0x14], 0
jl 0x7799e9
mov eax, 1
add dword [esp + 0x68], eax
sub dword [esp + 0x64], eax
sub ebx, eax
mov eax, dword [esp + 0x74]
sub eax, 4
sub dword [esp + 0x18], eax
mov esi, 2
sub esi, eax
add dword [esp + 0x14], esi
mov dword [esp + 0x48], ebx
mov dword [esp + 0x74], eax
jmp 0x779a61
mov eax, dword [esp + 0x28]
add eax, dword [esp + 0x9c]
sub dword [esp + 0x74], 4
mov esi, 1
add dword [esp + 0x68], esi
sub dword [esp + 0x64], esi
sub ebx, esi
cmp eax, dword [esp + 0x30]
mov dword [esp + 0x48], ebx
mov dword [esp + 0x28], eax
jl 0x779a3f
add dword [esp + 0x34], esi
add dword [esp + 0x5c], esi
mov esi, dword [esp + 0x3c]
add ecx, dword [esp + 0x1c]
add dword [esp + 0x70], esi
mov ebp, 1
sub dword [esp + 0x60], ebp
sub eax, dword [esp + 0x30]
mov dword [esp + 0x6c], ecx
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x34]
mov esi, dword [esp + 0x18]
sub eax, ebx
add eax, eax
add eax, eax
lea esi, [esi + eax + 2]
mov dword [esp + 0x18], esi
mov esi, dword [esp + 0x14]
lea eax, [esi + eax + 2]
mov dword [esp + 0x14], eax
test ebx, ebx
jg 0x7796c0
mov esi, dword [esp + 0x94]
sub esi, dword [esp + 0x34]
mov ecx, dword [esp + 0x90]
lea ebp, [ebx + ecx]
mov eax, ecx
sub eax, ebx
xor ecx, ecx
cmp esi, dword [esp + 0x7c]
setl cl
xor ebx, ebx
cmp ebp, dword [esp + 0x78]
setl bl
or ecx, ebx
xor ebx, ebx
cmp esi, dword [esp + 0x84]
setg bl
or ecx, ebx
xor ebx, ebx
cmp eax, dword [esp + 0x80]
setg bl
or ecx, ebx
mov ebx, dword [esp + 0x38]
movzx ebx, byte [esi + ebx]
or ecx, ebx
jne case.0x77cf1a.5
mov ecx, dword [esp + 0x78]
cmp eax, ecx
jge 0x779acc
mov eax, ecx
mov ecx, dword [esp + 0x80]
cmp ebp, ecx
jle 0x779ad9
mov ebp, ecx
mov ecx, dword [esp + 0x38]
mov byte [esi + ecx], 1
imul esi, dword [esp + 0x1c]
add esi, dword [esp + 0x20]
sub ebp, eax
add ebp, 1
mov dword [esp + 0x40], ebp
lea esi, [esi + eax*2]
mov ebp, edx
sar ebp, 5
mov eax, edx
sar eax, 0xb
and ebp, 0x3f
and edx, 0x1f
mov dword [esp + 0x2c], esi
mov dword [esp + 0x54], eax
mov dword [esp + 0x4c], edx
movzx eax, word [esi]
movzx esi, ax
mov ecx, esi
shr ecx, 5
and ecx, 0x3f
mov edx, ecx
imul edx, ebp
sar edx, 6
sub edx, ecx
mov ecx, eax
shr ecx, 5
and ecx, 0x3f
add cx, word [edi + edx*4]
mov edx, dword [esp + 0x54]
mov ebx, esi
shr ebx, 0xb
imul edx, ebx
sar edx, 5
sub edx, ebx
mov bx, ax
and esi, 0x1f
shr bx, 0xb
add bx, word [edi + edx*4]
mov edx, esi
imul edx, dword [esp + 0x4c]
sar edx, 5
sub edx, esi
mov esi, dword [esp + 0x2c]
shl cx, 5
and eax, 0x1f
add ax, word [edi + edx*4]
shl bx, 0xb
or cx, bx
or cx, ax
mov word [esi], cx
add esi, 2
sub dword [esp + 0x40], 1
mov dword [esp + 0x2c], esi
jne 0x779b12
mov eax, dword [esp + 0x38]
push eax
call fcn.0057cf76
add esp, 4
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x78
ret
mov ecx, dword [esp + 0x90]
mov esi, dword [esp + 0x98]
mov eax, ecx
add ecx, esi
sub eax, esi
mov esi, dword [esp + 0x78]
mov dword [esp + 0x44], ecx
mov ecx, dword [esp + 0x94]
mov dword [esp + 0x24], eax
xor eax, eax
cmp ecx, dword [esp + 0x7c]
mov ebp, dword [esp + 0x94]
setl al
xor ecx, ecx
cmp dword [esp + 0x44], esi
mov esi, dword [esp + 0x80]
setl cl
or eax, ecx
xor ecx, ecx
cmp dword [esp + 0x24], esi
mov esi, dword [esp + 0x38]
setg cl
or eax, ecx
xor ecx, ecx
cmp ebp, dword [esp + 0x84]
setg cl
or eax, ecx
movzx ecx, byte [esi + ebp]
or eax, ecx
jne 0x779cf7
mov ecx, dword [esp + 0x24]
mov eax, dword [esp + 0x78]
cmp ecx, eax
jge 0x779c20
mov ecx, eax
mov eax, dword [esp + 0x44]
cmp eax, dword [esp + 0x80]
jle 0x779c34
mov eax, dword [esp + 0x80]
sub eax, ecx
add eax, 1
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x1c]
imul eax, ebp
add eax, dword [esp + 0x20]
mov byte [esi + ebp], 1
lea eax, [eax + ecx*2]
mov ecx, edx
not ecx
movzx ecx, cx
mov esi, ecx
shr esi, 5
mov ebp, ecx
and esi, 0x3f
shr ebp, 0xb
and ecx, 0x1f
mov dword [esp + 0x2c], eax
mov dword [esp + 0x54], esi
mov dword [esp + 0x58], ebp
mov dword [esp + 0x50], ecx
jmp 0x779c84
mov esi, dword [esp + 0x54]
movzx ecx, word [eax]
movzx eax, cx
mov ebp, eax
shr ebp, 5
and ebp, 0x3f
sub esi, ebp
mov dword [esp + 0x44], eax
mov ebp, ecx
shr ebp, 5
shr eax, 0xb
and ebp, 0x3f
add bp, word [edi + esi*4]
mov esi, dword [esp + 0x58]
sub esi, eax
mov ax, cx
shr ax, 0xb
add ax, word [edi + esi*4]
mov esi, dword [esp + 0x50]
shl ax, 0xb
shl bp, 5
or bp, ax
mov eax, dword [esp + 0x44]
and eax, 0x1f
sub esi, eax
mov eax, dword [esp + 0x2c]
and ecx, 0x1f
add cx, word [edi + esi*4]
add eax, 2
or bp, cx
sub dword [esp + 0x40], 1
mov word [eax - 2], bp
mov dword [esp + 0x2c], eax
jne 0x779c80
mov ebp, dword [esp + 0x94]
cmp dword [esp + 0x18], 0
mov dword [esp + 0x2c], 0
jge 0x779d4c
mov eax, dword [esp + 0x9c]
mov ecx, dword [esp + 0x30]
cmp eax, ecx
mov dword [esp + 0x28], eax
jl 0x779d2f
sub eax, ecx
mov dword [esp + 0x34], 1
mov dword [esp + 0x28], eax
mov dword [esp + 0x2c], 1
mov eax, dword [esp + 0x34]
mov ecx, dword [esp + 0x18]
add eax, eax
add eax, eax
add dword [esp + 0x14], eax
lea ecx, [ecx + eax + 2]
mov dword [esp + 0x18], ecx
jmp 0x779dc7
mov ebx, dword [esp + 0x98]
add ebx, 0xffffffff
cmp dword [esp + 0x14], 0
mov dword [esp + 0x48], ebx
jl 0x779d7c
lea eax, [ebx*4]
sub dword [esp + 0x18], eax
mov ecx, 2
sub ecx, eax
add dword [esp + 0x14], ecx
jmp 0x779dc7
mov eax, dword [esp + 0x9c]
mov ecx, dword [esp + 0x30]
cmp eax, ecx
mov dword [esp + 0x28], eax
jl 0x779da5
sub eax, ecx
mov dword [esp + 0x34], 1
mov dword [esp + 0x28], eax
mov dword [esp + 0x2c], 1
mov eax, dword [esp + 0x34]
mov ecx, dword [esp + 0x18]
sub eax, ebx
add eax, eax
add eax, eax
lea ecx, [ecx + eax + 2]
mov dword [esp + 0x18], ecx
mov ecx, dword [esp + 0x14]
lea eax, [ecx + eax + 2]
mov dword [esp + 0x14], eax
test ebx, ebx
jle 0x77a199
mov esi, dword [esp + 0x90]
lea ecx, [ebx*4]
mov dword [esp + 0x74], ecx
mov ecx, dword [esp + 0x34]
lea eax, [ecx + ebp]
mov dword [esp + 0x60], eax
lea eax, [ebx + esi]
mov dword [esp + 0x64], eax
mov eax, ebp
mov ebp, dword [esp + 0x60]
sub eax, ecx
mov ecx, dword [esp + 0x1c]
imul ebp, ecx
mov dword [esp + 0x6c], ebp
mov ebp, esi
mov esi, ecx
neg esi
sub ebp, ebx
mov dword [esp + 0x5c], eax
imul eax, ecx
mov dword [esp + 0x3c], esi
mov esi, dword [esp + 0x2c]
mov dword [esp + 0x70], ebp
mov dword [esp + 0x68], eax
test esi, esi
je 0x77a084
mov ecx, dword [esp + 0x60]
mov esi, dword [esp + 0x64]
mov ebx, dword [esp + 0x78]
xor eax, eax
cmp ecx, dword [esp + 0x7c]
mov dword [esp + 0x24], ebp
setl al
xor ecx, ecx
cmp ebp, dword [esp + 0x80]
mov ebp, dword [esp + 0x60]
setg cl
mov dword [esp + 0x44], esi
or eax, ecx
xor ecx, ecx
cmp esi, ebx
setl cl
or eax, ecx
xor ecx, ecx
cmp ebp, dword [esp + 0x84]
setg cl
or eax, ecx
mov ecx, dword [esp + 0x38]
movzx ebx, byte [ecx + ebp]
or eax, ebx
jne 0x779f60
mov eax, dword [esp + 0x78]
cmp dword [esp + 0x70], eax
jge 0x779e93
mov dword [esp + 0x24], eax
jmp 0x779e97
mov eax, dword [esp + 0x24]
mov ebx, dword [esp + 0x80]
cmp dword [esp + 0x64], ebx
jle 0x779eaa
mov esi, ebx
mov dword [esp + 0x44], ebx
mov byte [ecx + ebp], 1
mov ecx, dword [esp + 0x6c]
sub esi, eax
lea eax, [ecx + eax*2]
add eax, dword [esp + 0x20]
mov ecx, edx
not ecx
movzx ecx, cx
mov ebx, ecx
shr ebx, 5
mov ebp, ecx
add esi, 1
and ebx, 0x3f
shr ebp, 0xb
and ecx, 0x1f
mov dword [esp + 0x40], esi
mov dword [esp + 0x2c], eax
mov dword [esp + 0x54], ebx
mov dword [esp + 0x58], ebp
mov dword [esp + 0x50], ecx
jmp 0x779ef8
mov ebp, dword [esp + 0x58]
mov ebx, dword [esp + 0x54]
movzx ecx, word [eax]
movzx esi, cx
mov eax, esi
shr eax, 5
and eax, 0x3f
sub ebx, eax
mov eax, ecx
shr eax, 5
and eax, 0x3f
add ax, word [edi + ebx*4]
mov ebx, esi
shr ebx, 0xb
sub ebp, ebx
mov bx, cx
shr bx, 0xb
add bx, word [edi + ebp*4]
shl ax, 5
shl bx, 0xb
or ax, bx
mov ebx, dword [esp + 0x50]
and esi, 0x1f
sub ebx, esi
and ecx, 0x1f
add cx, word [edi + ebx*4]
or ax, cx
mov bx, ax
mov eax, dword [esp + 0x2c]
mov word [eax], bx
add eax, 2
sub dword [esp + 0x40], 1
mov dword [esp + 0x2c], eax
jne 0x779ef0
mov esi, dword [esp + 0x44]
mov ebp, dword [esp + 0x5c]
xor ecx, ecx
cmp ebp, dword [esp + 0x7c]
mov ebx, dword [esp + 0x5c]
setl cl
xor eax, eax
cmp ebp, dword [esp + 0x84]
mov ebp, dword [esp + 0x24]
setg al
or ecx, eax
xor eax, eax
cmp esi, dword [esp + 0x78]
setl al
or ecx, eax
xor eax, eax
cmp ebp, dword [esp + 0x80]
setg al
or ecx, eax
mov eax, dword [esp + 0x38]
movzx ebx, byte [ebx + eax]
or ecx, ebx
jne 0x77a07c
mov ecx, dword [esp + 0x78]
cmp ebp, ecx
jge 0x779fb6
mov ebp, ecx
mov ecx, dword [esp + 0x80]
cmp esi, ecx
jle 0x779fc3
mov esi, ecx
mov ecx, dword [esp + 0x5c]
mov byte [ecx + eax], 1
mov eax, dword [esp + 0x68]
mov ecx, edx
not ecx
movzx ecx, cx
sub esi, ebp
lea eax, [eax + ebp*2]
add eax, dword [esp + 0x20]
mov ebx, ecx
shr ebx, 5
mov ebp, ecx
add esi, 1
and ebx, 0x3f
shr ebp, 0xb
and ecx, 0x1f
mov dword [esp + 0x40], esi
mov dword [esp + 0x2c], eax
mov dword [esp + 0x54], ebx
mov dword [esp + 0x58], ebp
mov dword [esp + 0x50], ecx
jmp 0x77a018
mov ebp, dword [esp + 0x58]
mov ebx, dword [esp + 0x54]
movzx ecx, word [eax]
movzx esi, cx
mov eax, esi
shr eax, 5
and eax, 0x3f
sub ebx, eax
mov eax, ecx
shr eax, 5
and eax, 0x3f
add ax, word [edi + ebx*4]
mov ebx, esi
shr ebx, 0xb
sub ebp, ebx
mov bx, cx
shr bx, 0xb
add bx, word [edi + ebp*4]
shl ax, 5
shl bx, 0xb
or ax, bx
mov ebx, dword [esp + 0x50]
and esi, 0x1f
sub ebx, esi
and ecx, 0x1f
add cx, word [edi + ebx*4]
or ax, cx
mov bx, ax
mov eax, dword [esp + 0x2c]
mov word [eax], bx
add eax, 2
sub dword [esp + 0x40], 1
mov dword [esp + 0x2c], eax
jne 0x77a010
mov ebx, dword [esp + 0x48]
mov ebp, dword [esp + 0x70]
mov eax, dword [esp + 0x30]
mov ecx, dword [esp + 0x28]
xor esi, esi
cmp dword [esp + 0x18], esi
mov dword [esp + 0x2c], esi
jge 0x77a0f2
add ecx, dword [esp + 0x9c]
cmp ecx, eax
mov dword [esp + 0x28], ecx
jl 0x77a0d5
mov ecx, 1
add dword [esp + 0x34], ecx
add dword [esp + 0x60], ecx
mov ecx, dword [esp + 0x1c]
add dword [esp + 0x6c], ecx
mov ecx, dword [esp + 0x3c]
add dword [esp + 0x68], ecx
mov esi, 1
sub dword [esp + 0x5c], esi
sub dword [esp + 0x28], eax
mov eax, dword [esp + 0x34]
mov ecx, dword [esp + 0x18]
add eax, eax
add eax, eax
add dword [esp + 0x14], eax
lea ecx, [ecx + eax + 2]
mov dword [esp + 0x18], ecx
jmp 0x77a191
sub dword [esp + 0x64], 1
sub ebx, 1
add ebp, 1
cmp dword [esp + 0x14], 0
mov dword [esp + 0x48], ebx
mov dword [esp + 0x70], ebp
jl 0x77a12b
mov eax, dword [esp + 0x74]
sub eax, 4
sub dword [esp + 0x18], eax
mov ecx, 2
sub ecx, eax
add dword [esp + 0x14], ecx
mov dword [esp + 0x74], eax
jmp 0x77a191
add ecx, dword [esp + 0x9c]
sub dword [esp + 0x74], 4
cmp ecx, eax
mov dword [esp + 0x28], ecx
jl 0x77a16b
mov ecx, 1
add dword [esp + 0x34], ecx
add dword [esp + 0x60], ecx
mov ecx, dword [esp + 0x1c]
add dword [esp + 0x6c], ecx
mov ecx, dword [esp + 0x3c]
add dword [esp + 0x68], ecx
mov esi, 1
sub dword [esp + 0x5c], esi
sub dword [esp + 0x28], eax
jmp 0x77a16f
mov esi, dword [esp + 0x2c]
mov eax, dword [esp + 0x34]
mov ecx, dword [esp + 0x18]
sub eax, ebx
add eax, eax
add eax, eax
lea ecx, [ecx + eax + 2]
mov dword [esp + 0x18], ecx
mov ecx, dword [esp + 0x14]
lea eax, [ecx + eax + 2]
mov dword [esp + 0x14], eax
test ebx, ebx
jg 0x779e25
mov ecx, dword [esp + 0x90]
mov esi, dword [esp + 0x94]
sub esi, dword [esp + 0x34]
lea ebp, [ebx + ecx]
mov eax, ecx
sub eax, ebx
xor ecx, ecx
cmp esi, dword [esp + 0x7c]
setl cl
xor ebx, ebx
cmp ebp, dword [esp + 0x78]
setl bl
or ecx, ebx
xor ebx, ebx
cmp esi, dword [esp + 0x84]
setg bl
or ecx, ebx
xor ebx, ebx
cmp eax, dword [esp + 0x80]
setg bl
or ecx, ebx
mov ebx, dword [esp + 0x38]
movzx ebx, byte [esi + ebx]
or ecx, ebx
jne case.0x77cf1a.5
mov ecx, dword [esp + 0x78]
cmp eax, ecx
jge 0x77a1fc
mov eax, ecx
mov ecx, dword [esp + 0x80]
cmp ebp, ecx
jle 0x77a209
mov ebp, ecx
mov ecx, dword [esp + 0x38]
mov byte [esi + ecx], 1
imul esi, dword [esp + 0x1c]
add esi, dword [esp + 0x20]
not edx
sub ebp, eax
lea esi, [esi + eax*2]
movzx eax, dx
mov edx, eax
shr edx, 5
mov ebx, eax
add ebp, 1
and edx, 0x3f
shr ebx, 0xb
and eax, 0x1f
mov dword [esp + 0x40], ebp
mov dword [esp + 0x54], edx
mov dword [esp + 0x58], ebx
mov dword [esp + 0x50], eax
jmp 0x77a258
mov edx, dword [esp + 0x54]
mov ebx, dword [esp + 0x58]
movzx eax, word [esi]
movzx ecx, ax
mov ebp, ecx
shr ebp, 5
and ebp, 0x3f
sub edx, ebp
mov ebp, eax
shr ebp, 5
and ebp, 0x3f
add bp, word [edi + edx*4]
mov edx, ecx
shr edx, 0xb
sub ebx, edx
mov dx, ax
shr dx, 0xb
add dx, word [edi + ebx*4]
shl bp, 5
shl dx, 0xb
or bp, dx
mov edx, dword [esp + 0x50]
and ecx, 0x1f
sub edx, ecx
and eax, 0x1f
add ax, word [edi + edx*4]
add esi, 2
or bp, ax
sub dword [esp + 0x40], 1
mov word [esi - 2], bp
jne 0x77a250
mov eax, dword [esp + 0x38]
push eax
call fcn.0057cf76
add esp, 4
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x78
ret
mov eax, dword [esp + 0x9c]
mov ecx, dword [esp + 0x98]
imul eax, eax
cdq
idiv ecx
lea edx, [ecx + ecx]
mov ebx, 3
sub ebx, edx
xor ebp, ebp
mov dword [esp + 0x28], ebp
mov dword [esp + 0x34], ebp
mov dword [esp + 0x18], ebx
mov dword [esp + 0x30], eax
mov eax, ecx
add ecx, ecx
add ecx, ecx
mov edx, ecx
mov ecx, 3
sub ecx, edx
mov dword [esp + 0x14], ecx
mov ecx, dword [esp + 0x8c]
mov edx, dword [ecx + 0x14]
mov ecx, dword [edx + 0x1c]
sub ecx, ebp
mov dword [esp + 0x48], eax
je 0x77ce8e
sub ecx, 1
jne case.0x77cf1a.5
mov edx, dword [0xb160d4]
mov ecx, edx
and ecx, 0xffffff
cmp ecx, 0xffffff
je 0x77a38e
movzx ecx, byte [esp + 0xa2]
movzx edi, byte [0xb160d6]
imul ecx, edi
sar ecx, 8
mov byte [esp + 0xa2], cl
movzx ecx, byte [esp + 0xa1]
movzx edi, dh
imul ecx, edi
sar ecx, 8
mov byte [esp + 0xa1], cl
movzx ecx, byte [esp + 0xa0]
movzx edx, dl
imul ecx, edx
sar ecx, 8
mov byte [esp + 0xa0], cl
mov ecx, dword [0xb160b4]
cmp ecx, 0xb
ja case.0x77cf1a.5
jmp dword [ecx*4 + 0x78c764]
mov ecx, dword [0xb160b8]
cmp ecx, 0xff
jne 0x77a856
mov edx, dword [esp + 0x90]
mov esi, dword [esp + 0x98]
mov ecx, edx
sub ecx, esi
add edx, esi
mov esi, dword [esp + 0x78]
mov dword [esp + 0x24], ecx
mov ecx, dword [esp + 0x94]
mov dword [esp + 0x44], edx
xor edx, edx
cmp ecx, dword [esp + 0x7c]
setl dl
xor ecx, ecx
cmp dword [esp + 0x44], esi
mov esi, dword [esp + 0x80]
setl cl
or edx, ecx
xor ecx, ecx
cmp dword [esp + 0x24], esi
mov esi, dword [esp + 0x84]
setg cl
or edx, ecx
xor ecx, ecx
cmp dword [esp + 0x94], esi
mov esi, dword [esp + 0x38]
setg cl
or edx, ecx
mov ecx, dword [esp + 0x94]
movzx esi, byte [esi + ecx]
or edx, esi
jne 0x77a47a
mov esi, dword [esp + 0x24]
mov edx, dword [esp + 0x78]
cmp esi, edx
jge 0x77a43d
mov esi, edx
mov edx, dword [esp + 0x44]
mov edi, dword [esp + 0x80]
cmp edx, edi
jle 0x77a44e
mov edx, edi
mov edi, dword [esp + 0x38]
mov byte [edi + ecx], 1
mov edi, dword [esp + 0x1c]
imul edi, ecx
sub edx, esi
add edx, 1
add edi, dword [esp + 0x20]
lea esi, [edi + esi*4]
mov edi, dword [esp + 0xa0]
mov dword [esi], edi
add esi, 4
sub edx, 1
jne 0x77a470
xor esi, esi
test ebx, ebx
jge 0x77a494
mov esi, 1
add ebx, 6
add dword [esp + 0x14], 4
mov ebp, esi
jmp 0x77a503
cmp dword [esp + 0x14], 0
mov edx, dword [esp + 0x98]
mov dword [esp + 0x28], edx
jl 0x77a4cd
mov edi, dword [esp + 0x30]
cmp edx, edi
jl 0x77a4b7
lea eax, [edx - 1]
sub edx, edi
mov dword [esp + 0x28], edx
lea edx, [eax*4]
mov edi, 2
sub edi, edx
sub ebx, edx
add dword [esp + 0x14], edi
jmp 0x77a503
mov esi, dword [esp + 0x30]
cmp edx, esi
jl 0x77a4de
lea eax, [edx - 1]
sub edx, esi
mov dword [esp + 0x28], edx
lea edi, [eax*4]
mov edx, 4
sub edx, edi
mov edi, dword [esp + 0x14]
lea ebx, [ebx + edx + 2]
mov ebp, 1
lea edx, [edi + edx + 2]
mov esi, ebp
mov dword [esp + 0x14], edx
test eax, eax
jle 0x77a7a7
mov edi, dword [esp + 0x90]
lea edx, [eax*4]
mov dword [esp + 0x70], edx
lea edx, [ecx + ebp]
mov dword [esp + 0x5c], edx
imul edx, dword [esp + 0x1c]
mov dword [esp + 0x6c], edx
mov edx, dword [esp + 0x90]
sub edx, eax
add edi, eax
mov dword [esp + 0x64], edx
mov edx, dword [esp + 0x1c]
mov dword [esp + 0x60], edi
sub ecx, ebp
mov edi, edx
neg edi
mov dword [esp + 0x58], ecx
imul ecx, edx
mov dword [esp + 0x3c], edi
mov dword [esp + 0x68], ecx
lea esp, [esp]
test esi, esi
je 0x77a6be
mov edx, dword [esp + 0x60]
mov ecx, dword [esp + 0x64]
mov esi, dword [esp + 0x80]
mov dword [esp + 0x44], edx
mov edx, dword [esp + 0x5c]
mov dword [esp + 0x24], ecx
xor ecx, ecx
cmp edx, dword [esp + 0x7c]
mov edi, dword [esp + 0x38]
setl cl
xor edx, edx
cmp dword [esp + 0x64], esi
mov esi, dword [esp + 0x78]
setg dl
or ecx, edx
xor edx, edx
cmp dword [esp + 0x60], esi
mov esi, dword [esp + 0x84]
setl dl
or ecx, edx
xor edx, edx
cmp dword [esp + 0x5c], esi
mov esi, dword [esp + 0x5c]
setg dl
or ecx, edx
movzx edx, byte [esi + edi]
or ecx, edx
jne 0x77a61a
mov ecx, dword [esp + 0x78]
cmp dword [esp + 0x64], ecx
jge 0x77a5dc
mov dword [esp + 0x24], ecx
jmp 0x77a5e0
mov ecx, dword [esp + 0x24]
mov edx, dword [esp + 0x80]
cmp dword [esp + 0x60], edx
jle 0x77a5f1
mov dword [esp + 0x44], edx
mov edx, dword [esp + 0x44]
mov byte [esi + edi], 1
mov esi, dword [esp + 0x6c]
sub edx, ecx
lea ecx, [esi + ecx*4]
mov esi, dword [esp + 0xa0]
add edx, 1
add ecx, dword [esp + 0x20]
mov dword [ecx], esi
add ecx, 4
sub edx, 1
jne 0x77a610
mov edx, dword [esp + 0x7c]
mov esi, dword [esp + 0x84]
xor ecx, ecx
cmp dword [esp + 0x58], edx
mov edi, dword [esp + 0x58]
setl cl
xor edx, edx
cmp dword [esp + 0x58], esi
mov esi, dword [esp + 0x78]
setg dl
or ecx, edx
xor edx, edx
cmp dword [esp + 0x44], esi
mov esi, dword [esp + 0x80]
setl dl
or ecx, edx
xor edx, edx
cmp dword [esp + 0x24], esi
setg dl
or ecx, edx
mov edx, dword [esp + 0x38]
movzx esi, byte [edi + edx]
or ecx, esi
jne 0x77a6ba
mov esi, dword [esp + 0x24]
mov ecx, dword [esp + 0x78]
cmp esi, ecx
jge 0x77a67c
mov esi, ecx
mov ecx, dword [esp + 0x44]
cmp ecx, dword [esp + 0x80]
jle 0x77a690
mov ecx, dword [esp + 0x80]
sub ecx, esi
add ecx, 1
mov byte [edi + edx], 1
mov edx, ecx
mov ecx, dword [esp + 0x68]
lea ecx, [ecx + esi*4]
add ecx, dword [esp + 0x20]
mov esi, dword [esp + 0xa0]
lea ecx, [ecx]
mov dword [ecx], esi
add ecx, 4
sub edx, 1
jne 0x77a6b0
mov edi, dword [esp + 0x3c]
xor esi, esi
test ebx, ebx
jge 0x77a6ef
mov edx, dword [esp + 0x1c]
add dword [esp + 0x6c], edx
add dword [esp + 0x68], edi
mov esi, 1
add dword [esp + 0x5c], esi
sub dword [esp + 0x58], esi
add ebp, esi
lea ecx, [ebp*4]
add dword [esp + 0x14], ecx
jmp 0x77a794
mov edx, dword [esp + 0x14]
test edx, edx
jl 0x77a73a
mov edx, dword [esp + 0x28]
add edx, dword [esp + 0x98]
mov ecx, dword [esp + 0x30]
cmp edx, ecx
mov dword [esp + 0x28], edx
jl 0x77a724
add dword [esp + 0x64], 1
sub dword [esp + 0x60], 1
sub dword [esp + 0x70], 4
sub eax, 1
sub dword [esp + 0x28], ecx
mov ecx, dword [esp + 0x70]
mov edx, 2
sub edx, ecx
sub ebx, ecx
add dword [esp + 0x14], edx
jmp 0x77a798
mov ecx, dword [esp + 0x28]
add ecx, dword [esp + 0x98]
cmp ecx, dword [esp + 0x30]
mov dword [esp + 0x28], ecx
jl 0x77a769
add dword [esp + 0x64], 1
sub dword [esp + 0x60], 1
sub dword [esp + 0x70], 4
sub eax, 1
sub ecx, dword [esp + 0x30]
mov dword [esp + 0x28], ecx
mov ecx, dword [esp + 0x1c]
add dword [esp + 0x6c], ecx
add dword [esp + 0x68], edi
mov esi, 1
add dword [esp + 0x5c], esi
sub dword [esp + 0x58], esi
add ebp, esi
mov ecx, ebp
sub ecx, eax
add ecx, ecx
add ecx, ecx
lea edx, [edx + ecx + 2]
mov dword [esp + 0x14], edx
lea ebx, [ebx + ecx + 2]
test eax, eax
jg 0x77a560
mov ecx, dword [esp + 0x94]
mov edx, dword [esp + 0x90]
lea edi, [eax + edx]
mov esi, edx
sub esi, eax
xor eax, eax
sub ecx, ebp
cmp ecx, dword [esp + 0x7c]
setl al
xor edx, edx
cmp edi, dword [esp + 0x78]
setl dl
or eax, edx
xor edx, edx
cmp ecx, dword [esp + 0x84]
setg dl
or eax, edx
xor edx, edx
cmp esi, dword [esp + 0x80]
setg dl
or eax, edx
mov edx, dword [esp + 0x38]
movzx edx, byte [ecx + edx]
or eax, edx
jne case.0x77cf1a.5
mov eax, dword [esp + 0x78]
cmp esi, eax
jge 0x77a801
mov esi, eax
mov eax, dword [esp + 0x80]
cmp edi, eax
jle 0x77a80e
mov edi, eax
mov eax, dword [esp + 0x38]
mov byte [ecx + eax], 1
imul ecx, dword [esp + 0x1c]
sub edi, esi
add edi, 1
add ecx, dword [esp + 0x20]
lea ecx, [ecx + esi*4]
jmp 0x77a830
mov edx, dword [esp + 0xa0]
mov dword [ecx], edx
add ecx, 4
sub edi, 1
jne 0x77a830
mov eax, dword [esp + 0x38]
push eax
call fcn.0057cf76
add esp, 4
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x78
ret
test ecx, ecx
je case.0x77cf1a.5
mov edx, dword [esp + 0x90]
mov esi, dword [esp + 0x98]
mov ecx, edx
add edx, esi
sub ecx, esi
mov esi, dword [esp + 0x78]
mov dword [esp + 0x44], edx
mov edx, dword [esp + 0x94]
mov dword [esp + 0x24], ecx
xor ecx, ecx
cmp edx, dword [esp + 0x7c]
mov edi, dword [esp + 0x94]
setl cl
xor edx, edx
cmp dword [esp + 0x44], esi
mov esi, dword [esp + 0x80]
setl dl
or ecx, edx
xor edx, edx
cmp dword [esp + 0x24], esi
mov esi, dword [esp + 0x84]
setg dl
or ecx, edx
xor edx, edx
cmp dword [esp + 0x94], esi
mov esi, dword [esp + 0x38]
setg dl
or ecx, edx
movzx edx, byte [esi + edi]
or ecx, edx
jne 0x77a97d
mov ecx, dword [esp + 0x24]
mov edx, dword [esp + 0x78]
cmp ecx, edx
jge 0x77a8e5
mov ecx, edx
mov edx, dword [esp + 0x44]
cmp edx, dword [esp + 0x80]
jle 0x77a8f9
mov edx, dword [esp + 0x80]
mov byte [esi + edi], 1
mov esi, dword [esp + 0x1c]
imul esi, edi
sub edx, ecx
add edx, 1
add esi, dword [esp + 0x20]
lea esi, [esi + ecx*4]
movzx edi, byte [esi]
movzx ecx, byte [esp + 0xa0]
sub ecx, edi
imul ecx, dword [0xb160b8]
shl edi, 8
add ecx, edi
sar ecx, 8
mov byte [esi], cl
movzx edi, byte [esi + 1]
movzx ecx, byte [esp + 0xa1]
sub ecx, edi
imul ecx, dword [0xb160b8]
shl edi, 8
add ecx, edi
sar ecx, 8
mov byte [esi + 1], cl
movzx edi, byte [esi + 2]
movzx ecx, byte [esp + 0xa2]
sub ecx, edi
imul ecx, dword [0xb160b8]
shl edi, 8
add ecx, edi
sar ecx, 8
mov byte [esi + 2], cl
add esi, 4
sub edx, 1
jne 0x77a910
mov edi, dword [esp + 0x94]
xor esi, esi
test ebx, ebx
jge 0x77a997
mov esi, 1
add ebx, 6
add dword [esp + 0x14], 4
mov ebp, esi
jmp 0x77aa02
cmp dword [esp + 0x14], 0
mov ecx, dword [esp + 0x98]
mov edx, dword [esp + 0x30]
mov dword [esp + 0x28], ecx
jl 0x77a9d0
cmp ecx, edx
jl 0x77a9ba
lea eax, [ecx - 1]
sub ecx, edx
mov dword [esp + 0x28], ecx
lea ecx, [eax*4]
mov edx, 2
sub edx, ecx
sub ebx, ecx
add dword [esp + 0x14], edx
jmp 0x77aa06
cmp ecx, edx
jl 0x77a9dd
lea eax, [ecx - 1]
sub ecx, edx
mov dword [esp + 0x28], ecx
lea ecx, [eax*4]
mov edx, 4
sub edx, ecx
mov ecx, dword [esp + 0x14]
lea ebx, [ebx + edx + 2]
mov ebp, 1
lea edx, [ecx + edx + 2]
mov esi, ebp
mov dword [esp + 0x14], edx
mov dword [esp + 0x34], ebp
test eax, eax
mov dword [esp + 0x18], ebx
jle 0x77ad71
lea ecx, [eax*4]
mov dword [esp + 0x70], ecx
mov ecx, dword [esp + 0x90]
add ecx, eax
lea edx, [edi + ebp]
mov dword [esp + 0x60], ecx
mov ecx, edi
mov edi, dword [esp + 0x90]
sub edi, eax
mov dword [esp + 0x64], edi
mov edi, dword [esp + 0x1c]
sub ecx, ebp
mov dword [esp + 0x58], edx
imul edx, dword [esp + 0x1c]
neg edi
mov dword [esp + 0x5c], ecx
imul ecx, dword [esp + 0x1c]
mov dword [esp + 0x6c], edx
mov dword [esp + 0x3c], edi
mov dword [esp + 0x68], ecx
test esi, esi
je 0x77ac89
mov ecx, dword [esp + 0x60]
mov edx, dword [esp + 0x64]
mov esi, dword [esp + 0x80]
mov dword [esp + 0x44], ecx
mov ecx, dword [esp + 0x58]
mov dword [esp + 0x24], edx
xor edx, edx
cmp ecx, dword [esp + 0x7c]
setl dl
xor ecx, ecx
cmp dword [esp + 0x64], esi
mov esi, dword [esp + 0x78]
setg cl
or edx, ecx
xor ecx, ecx
cmp dword [esp + 0x60], esi
mov esi, dword [esp + 0x84]
setl cl
or edx, ecx
xor ecx, ecx
cmp dword [esp + 0x58], esi
mov esi, dword [esp + 0x58]
setg cl
or edx, ecx
mov ecx, dword [esp + 0x38]
movzx ecx, byte [esi + ecx]
or edx, ecx
jne 0x77ab82
mov ecx, dword [esp + 0x78]
cmp dword [esp + 0x64], ecx
jge 0x77aade
mov dword [esp + 0x24], ecx
jmp 0x77aae2
mov ecx, dword [esp + 0x24]
mov edx, dword [esp + 0x80]
cmp dword [esp + 0x60], edx
jle 0x77aaf3
mov dword [esp + 0x44], edx
mov edx, dword [esp + 0x38]
movzx edi, byte [esp + 0xa0]
movzx ebp, byte [esp + 0xa1]
mov byte [esi + edx], 1
mov esi, dword [esp + 0x44]
mov edx, dword [esp + 0x6c]
sub esi, ecx
lea ecx, [edx + ecx*4]
add esi, 1
add ecx, dword [esp + 0x20]
nop
movzx edx, byte [ecx]
mov ebx, edi
sub ebx, edx
imul ebx, dword [0xb160b8]
shl edx, 8
add ebx, edx
sar ebx, 8
mov byte [ecx], bl
movzx edx, byte [ecx + 1]
mov ebx, ebp
sub ebx, edx
imul ebx, dword [0xb160b8]
shl edx, 8
add ebx, edx
sar ebx, 8
mov byte [ecx + 1], bl
movzx edx, byte [ecx + 2]
movzx ebx, byte [esp + 0xa2]
sub ebx, edx
imul ebx, dword [0xb160b8]
shl edx, 8
add ebx, edx
sar ebx, 8
mov byte [ecx + 2], bl
add ecx, 4
sub esi, 1
jne 0x77ab20
mov ebx, dword [esp + 0x18]
mov ebp, dword [esp + 0x34]
mov edx, dword [esp + 0x7c]
mov esi, dword [esp + 0x84]
xor ecx, ecx
cmp dword [esp + 0x5c], edx
setl cl
xor edx, edx
cmp dword [esp + 0x5c], esi
mov esi, dword [esp + 0x78]
setg dl
or ecx, edx
xor edx, edx
cmp dword [esp + 0x44], esi
mov esi, dword [esp + 0x80]
setl dl
or ecx, edx
xor edx, edx
cmp dword [esp + 0x24], esi
mov esi, dword [esp + 0x5c]
setg dl
or ecx, edx
mov edx, dword [esp + 0x38]
movzx edx, byte [esi + edx]
or ecx, edx
jne 0x77ac85
mov edx, dword [esp + 0x24]
mov ecx, dword [esp + 0x78]
cmp edx, ecx
jge 0x77abe4
mov edx, ecx
mov ecx, dword [esp + 0x44]
mov esi, dword [esp + 0x80]
cmp ecx, esi
jle 0x77abf5
mov ecx, esi
mov esi, dword [esp + 0x38]
mov edi, dword [esp + 0x5c]
movzx ebp, byte [esp + 0xa0]
sub ecx, edx
add ecx, 1
mov byte [edi + esi], 1
movzx edi, byte [esp + 0xa1]
mov esi, ecx
mov ecx, dword [esp + 0x68]
lea ecx, [ecx + edx*4]
add ecx, dword [esp + 0x20]
movzx edx, byte [ecx]
mov ebx, ebp
sub ebx, edx
imul ebx, dword [0xb160b8]
shl edx, 8
add ebx, edx
sar ebx, 8
mov byte [ecx], bl
movzx edx, byte [ecx + 1]
mov ebx, edi
sub ebx, edx
imul ebx, dword [0xb160b8]
shl edx, 8
add ebx, edx
sar ebx, 8
mov byte [ecx + 1], bl
movzx edx, byte [ecx + 2]
movzx ebx, byte [esp + 0xa2]
sub ebx, edx
imul ebx, dword [0xb160b8]
shl edx, 8
add ebx, edx
sar ebx, 8
mov byte [ecx + 2], bl
add ecx, 4
sub esi, 1
jne 0x77ac23
mov ebx, dword [esp + 0x18]
mov ebp, dword [esp + 0x34]
mov edx, dword [esp + 0x6c]
xor esi, esi
test ebx, ebx
jge 0x77acbe
mov ecx, dword [esp + 0x3c]
add dword [esp + 0x68], ecx
add edx, dword [esp + 0x1c]
mov esi, 1
add dword [esp + 0x58], esi
sub dword [esp + 0x5c], esi
add ebp, esi
lea ecx, [ebp*4]
add dword [esp + 0x14], ecx
lea ebx, [ebx + ecx + 2]
jmp 0x77ad5d
mov ecx, dword [esp + 0x28]
add ecx, dword [esp + 0x98]
cmp dword [esp + 0x14], 0
mov dword [esp + 0x28], ecx
jl 0x77ad0a
cmp ecx, dword [esp + 0x30]
jl 0x77acf4
add dword [esp + 0x64], 1
sub dword [esp + 0x60], 1
sub dword [esp + 0x70], 4
sub eax, 1
sub ecx, dword [esp + 0x30]
mov dword [esp + 0x28], ecx
mov ecx, dword [esp + 0x70]
mov edi, 2
sub edi, ecx
sub ebx, ecx
add dword [esp + 0x14], edi
jmp 0x77ad65
mov esi, dword [esp + 0x30]
cmp ecx, esi
jl 0x77ad2a
add dword [esp + 0x64], 1
sub dword [esp + 0x60], 1
sub dword [esp + 0x70], 4
sub eax, 1
sub ecx, esi
mov dword [esp + 0x28], ecx
mov ecx, dword [esp + 0x3c]
add dword [esp + 0x68], ecx
add edx, dword [esp + 0x1c]
mov edi, dword [esp + 0x14]
mov esi, 1
add dword [esp + 0x58], esi
sub dword [esp + 0x5c], esi
add ebp, esi
mov ecx, ebp
sub ecx, eax
add ecx, ecx
add ecx, ecx
lea ebx, [ebx + ecx + 2]
lea ecx, [edi + ecx + 2]
mov dword [esp + 0x14], ecx
mov dword [esp + 0x6c], edx
mov dword [esp + 0x34], ebp
test eax, eax
mov dword [esp + 0x18], ebx
jg 0x77aa62
mov ecx, dword [esp + 0x90]
lea esi, [eax + ecx]
xor edx, edx
mov edi, ecx
mov ecx, dword [esp + 0x94]
sub edi, eax
sub ecx, ebp
cmp ecx, dword [esp + 0x7c]
setl dl
xor eax, eax
cmp esi, dword [esp + 0x78]
setl al
or edx, eax
xor eax, eax
cmp ecx, dword [esp + 0x84]
setg al
or edx, eax
xor eax, eax
cmp edi, dword [esp + 0x80]
setg al
or edx, eax
mov eax, dword [esp + 0x38]
movzx eax, byte [ecx + eax]
or edx, eax
jne case.0x77cf1a.5
mov eax, dword [esp + 0x78]
cmp edi, eax
jge 0x77add2
mov edi, eax
mov eax, dword [esp + 0x80]
cmp esi, eax
jle 0x77addf
mov esi, eax
mov edx, dword [esp + 0x38]
movzx ebp, byte [esp + 0xa1]
mov byte [ecx + edx], 1
imul ecx, dword [esp + 0x1c]
movzx edx, byte [esp + 0xa2]
sub esi, edi
add esi, 1
add ecx, dword [esp + 0x20]
lea eax, [ecx + edi*4]
movzx edi, byte [esp + 0xa0]
movzx ecx, byte [eax]
mov ebx, edi
sub ebx, ecx
imul ebx, dword [0xb160b8]
shl ecx, 8
add ebx, ecx
sar ebx, 8
mov byte [eax], bl
movzx ecx, byte [eax + 1]
mov ebx, ebp
sub ebx, ecx
imul ebx, dword [0xb160b8]
shl ecx, 8
add ebx, ecx
sar ebx, 8
mov byte [eax + 1], bl
movzx ecx, byte [eax + 2]
mov ebx, edx
sub ebx, ecx
imul ebx, dword [0xb160b8]
shl ecx, 8
add ebx, ecx
sar ebx, 8
mov byte [eax + 2], bl
add eax, 4
sub esi, 1
jne 0x77ae10
mov eax, dword [esp + 0x38]
push eax
call fcn.0057cf76
add esp, 4
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x78
ret
cmp dword [0xb160b8], 0
je case.0x77cf1a.5
mov edx, dword [esp + 0x90]
mov edi, dword [esp + 0x98]
mov ecx, edx
sub ecx, edi
add edi, edx
mov dword [esp + 0x24], ecx
mov ecx, dword [esp + 0x7c]
xor edx, edx
cmp dword [esp + 0x94], ecx
mov dword [esp + 0x44], edi
setl dl
xor ecx, ecx
cmp edi, dword [esp + 0x78]
mov edi, dword [esp + 0x80]
setl cl
or edx, ecx
xor ecx, ecx
cmp dword [esp + 0x24], edi
mov edi, dword [esp + 0x38]
setg cl
xor ebx, ebx
or edx, ecx
mov ecx, dword [esp + 0x94]
cmp ecx, dword [esp + 0x84]
movzx edi, byte [edi + ecx]
setg bl
or edx, ebx
or edx, edi
jne 0x77afd2
mov edi, dword [esp + 0x24]
mov edx, dword [esp + 0x78]
cmp edi, edx
jge 0x77af02
mov edi, edx
mov edx, dword [esp + 0x44]
mov ebx, dword [esp + 0x80]
cmp edx, ebx
jle 0x77af13
mov edx, ebx
mov ebx, dword [esp + 0x38]
sub edx, edi
add edx, 1
mov dword [esp + 0x40], edx
mov edx, dword [esp + 0x1c]
imul edx, ecx
add edx, dword [esp + 0x20]
mov byte [ebx + ecx], 1
movzx ecx, byte [esp + 0xa0]
lea ecx, [esi + ecx*4]
mov dword [esp + 0x54], ecx
movzx ecx, byte [esp + 0xa1]
lea ecx, [esi + ecx*4]
mov dword [esp + 0x4c], ecx
movzx ecx, byte [esp + 0xa2]
lea edx, [edx + edi*4]
lea ecx, [esi + ecx*4]
mov dword [esp + 0x2c], edx
mov dword [esp + 0x50], ecx
mov ecx, dword [esp + 0x54]
movzx ecx, byte [ecx]
mov edx, dword [edx]
mov byte [esp + 0x10], cl
mov ecx, dword [esp + 0x4c]
movzx ecx, byte [ecx]
mov byte [esp + 0x11], cl
mov ecx, dword [esp + 0x50]
movzx ecx, byte [ecx]
mov byte [esp + 0x12], cl
mov ecx, dword [esp + 0x10]
mov edi, edx
or edx, dword [esp + 0x10]
and ecx, 0xfefeff
and edi, 0xfefeff
add edi, ecx
mov ecx, edi
and ecx, 0x1010100
mov ebx, ecx
shr ebx, 8
and edx, 0x10100
sub ecx, ebx
or ecx, edx
mov edx, dword [esp + 0x2c]
or ecx, edi
mov dword [edx], ecx
add edx, 4
sub dword [esp + 0x40], 1
mov dword [esp + 0x2c], edx
jne 0x77af63
mov ecx, dword [esp + 0x94]
mov edx, dword [esp + 0x18]
test edx, edx
mov dword [esp + 0x2c], 0
jge 0x77afef
add edx, 6
add dword [esp + 0x14], 4
jmp 0x77b05e
cmp dword [esp + 0x14], 0
mov edi, dword [esp + 0x98]
mov ebx, dword [esp + 0x30]
mov dword [esp + 0x28], edi
jl 0x77b02f
cmp edi, ebx
jl 0x77b016
lea eax, [edi - 1]
sub edi, ebx
mov dword [esp + 0x48], eax
mov dword [esp + 0x28], edi
lea edi, [eax*4]
mov ebx, 2
sub ebx, edi
sub edx, edi
add dword [esp + 0x14], ebx
jmp 0x77b06b
cmp edi, ebx
jl 0x77b040
lea eax, [edi - 1]
sub edi, ebx
mov dword [esp + 0x48], eax
mov dword [esp + 0x28], edi
lea ebx, [eax*4]
mov edi, 4
sub edi, ebx
mov ebx, dword [esp + 0x14]
lea edx, [edx + edi + 2]
lea edi, [ebx + edi + 2]
mov dword [esp + 0x14], edi
mov ebp, 1
mov dword [esp + 0x2c], ebp
mov dword [esp + 0x34], ebp
test eax, eax
mov dword [esp + 0x18], edx
jle 0x77b42e
mov ebx, dword [esp + 0x90]
lea edi, [eax*4]
mov dword [esp + 0x6c], edi
lea edi, [ecx + ebp]
mov dword [esp + 0x68], edi
imul edi, dword [esp + 0x1c]
add ebx, eax
mov dword [esp + 0x64], ebx
mov ebx, dword [esp + 0x1c]
mov dword [esp + 0x5c], edi
mov edi, dword [esp + 0x90]
sub ecx, ebp
sub edi, eax
neg ebx
mov dword [esp + 0x60], ecx
imul ecx, dword [esp + 0x1c]
mov dword [esp + 0x70], edi
mov dword [esp + 0x3c], ebx
mov dword [esp + 0x58], ecx
cmp dword [esp + 0x2c], 0
je 0x77b31e
mov edx, dword [esp + 0x64]
mov dword [esp + 0x44], edx
mov edx, dword [esp + 0x68]
xor ecx, ecx
cmp edx, dword [esp + 0x7c]
mov dword [esp + 0x24], edi
setl cl
xor edx, edx
cmp edi, dword [esp + 0x80]
mov edi, dword [esp + 0x78]
setg dl
or ecx, edx
xor edx, edx
cmp dword [esp + 0x64], edi
mov edi, dword [esp + 0x68]
setl dl
or ecx, edx
xor edx, edx
cmp edi, dword [esp + 0x84]
setg dl
or ecx, edx
mov edx, dword [esp + 0x38]
movzx ebx, byte [edi + edx]
or ecx, ebx
jne 0x77b1fa
mov ecx, dword [esp + 0x78]
cmp dword [esp + 0x70], ecx
jge 0x77b138
mov dword [esp + 0x24], ecx
jmp 0x77b13c
mov ecx, dword [esp + 0x24]
mov eax, dword [esp + 0x80]
cmp dword [esp + 0x64], eax
jle 0x77b14d
mov dword [esp + 0x44], eax
mov eax, dword [esp + 0x44]
mov byte [edi + edx], 1
mov edx, dword [esp + 0x5c]
lea ebp, [edx + ecx*4]
sub eax, ecx
movzx ecx, byte [esp + 0xa0]
lea edx, [esi + ecx*4]
movzx ecx, byte [esp + 0xa1]
mov dword [esp + 0x54], edx
lea edx, [esi + ecx*4]
movzx ecx, byte [esp + 0xa2]
mov dword [esp + 0x4c], edx
lea edx, [esi + ecx*4]
add eax, 1
add ebp, dword [esp + 0x20]
mov dword [esp + 0x50], edx
mov ecx, dword [esp + 0x54]
movzx edx, byte [ecx]
mov ecx, dword [esp + 0x4c]
mov byte [esp + 0x10], dl
movzx edx, byte [ecx]
mov ecx, dword [esp + 0x50]
mov byte [esp + 0x11], dl
movzx edx, byte [ecx]
mov byte [esp + 0x12], dl
mov edx, dword [ebp]
mov ecx, dword [esp + 0x10]
and ecx, 0xfefeff
mov edi, edx
or edx, dword [esp + 0x10]
and edi, 0xfefeff
add edi, ecx
mov ecx, edi
and ecx, 0x1010100
mov ebx, ecx
shr ebx, 8
sub ecx, ebx
and edx, 0x10100
or ecx, edx
or ecx, edi
mov dword [ebp], ecx
add ebp, 4
sub eax, 1
jne 0x77b192
mov eax, dword [esp + 0x48]
mov ebp, dword [esp + 0x34]
mov edi, dword [esp + 0x60]
xor ecx, ecx
cmp edi, dword [esp + 0x7c]
mov ebx, dword [esp + 0x60]
setl cl
xor edx, edx
cmp edi, dword [esp + 0x84]
mov edi, dword [esp + 0x78]
setg dl
or ecx, edx
xor edx, edx
cmp dword [esp + 0x44], edi
mov edi, dword [esp + 0x24]
setl dl
or ecx, edx
xor edx, edx
cmp edi, dword [esp + 0x80]
setg dl
or ecx, edx
mov edx, dword [esp + 0x38]
movzx ebx, byte [ebx + edx]
or ecx, ebx
jne 0x77b316
mov ecx, dword [esp + 0x78]
cmp edi, ecx
jge 0x77b254
mov edi, ecx
mov ecx, dword [esp + 0x44]
mov ebx, dword [esp + 0x80]
cmp ecx, ebx
jle 0x77b265
mov ecx, ebx
mov ebx, dword [esp + 0x60]
sub ecx, edi
add ecx, 1
mov byte [ebx + edx], 1
movzx edx, byte [esp + 0xa0]
mov dword [esp + 0x40], ecx
mov ecx, dword [esp + 0x58]
lea ebp, [ecx + edi*4]
add ebp, dword [esp + 0x20]
lea ecx, [esi + edx*4]
movzx edx, byte [esp + 0xa1]
mov dword [esp + 0x54], ecx
lea ecx, [esi + edx*4]
movzx edx, byte [esp + 0xa2]
mov dword [esp + 0x4c], ecx
lea ecx, [esi + edx*4]
mov dword [esp + 0x50], ecx
mov edi, edi
mov edx, dword [esp + 0x54]
movzx ecx, byte [edx]
mov edx, dword [esp + 0x4c]
mov byte [esp + 0x10], cl
movzx ecx, byte [edx]
mov edx, dword [esp + 0x50]
mov byte [esp + 0x11], cl
movzx ecx, byte [edx]
mov edx, dword [ebp]
mov byte [esp + 0x12], cl
mov ecx, dword [esp + 0x10]
and ecx, 0xfefeff
mov edi, edx
or edx, dword [esp + 0x10]
and edi, 0xfefeff
add edi, ecx
mov ecx, edi
and ecx, 0x1010100
mov ebx, ecx
shr ebx, 8
sub ecx, ebx
and edx, 0x10100
or ecx, edx
or ecx, edi
mov dword [ebp], ecx
add ebp, 4
sub dword [esp + 0x40], 1
jne 0x77b2b0
mov ebp, dword [esp + 0x34]
mov edi, dword [esp + 0x70]
mov edx, dword [esp + 0x18]
test edx, edx
mov dword [esp + 0x2c], 0
jge 0x77b366
sub dword [esp + 0x60], 1
mov ecx, 1
add dword [esp + 0x68], ecx
add ebp, ecx
mov dword [esp + 0x2c], ecx
mov ecx, dword [esp + 0x1c]
add dword [esp + 0x5c], ecx
mov ecx, dword [esp + 0x3c]
add dword [esp + 0x58], ecx
lea ecx, [ebp*4]
add dword [esp + 0x14], ecx
lea edx, [edx + ecx + 2]
jmp 0x77b417
mov ebx, dword [esp + 0x28]
add ebx, dword [esp + 0x98]
cmp dword [esp + 0x14], 0
mov ecx, dword [esp + 0x30]
mov dword [esp + 0x28], ebx
jl 0x77b3ba
cmp ebx, ecx
jl 0x77b3a4
sub dword [esp + 0x64], 1
sub dword [esp + 0x6c], 4
sub eax, 1
add edi, 1
sub dword [esp + 0x28], ecx
mov dword [esp + 0x48], eax
mov dword [esp + 0x70], edi
mov ecx, dword [esp + 0x6c]
mov ebx, 2
sub ebx, ecx
sub edx, ecx
add dword [esp + 0x14], ebx
jmp 0x77b41b
cmp ebx, ecx
jl 0x77b3da
sub dword [esp + 0x64], 1
sub dword [esp + 0x6c], 4
sub eax, 1
add edi, 1
sub dword [esp + 0x28], ecx
mov dword [esp + 0x48], eax
mov dword [esp + 0x70], edi
mov ecx, dword [esp + 0x1c]
add dword [esp + 0x5c], ecx
mov ecx, dword [esp + 0x3c]
add dword [esp + 0x58], ecx
add dword [esp + 0x68], 1
mov ebx, dword [esp + 0x14]
mov ecx, 1
sub dword [esp + 0x60], ecx
mov dword [esp + 0x2c], ecx
add ebp, 1
mov ecx, ebp
sub ecx, eax
add ecx, ecx
add ecx, ecx
lea edx, [edx + ecx + 2]
lea ecx, [ebx + ecx + 2]
mov dword [esp + 0x14], ecx
mov dword [esp + 0x34], ebp
test eax, eax
mov dword [esp + 0x18], edx
jg 0x77b0c5
mov ecx, dword [esp + 0x94]
mov edi, dword [esp + 0x90]
sub ecx, ebp
mov edx, edi
sub edx, eax
add edi, eax
mov dword [esp + 0x24], edx
xor edx, edx
cmp ecx, dword [esp + 0x7c]
mov ebp, dword [esp + 0x80]
setl dl
xor eax, eax
cmp edi, dword [esp + 0x78]
setl al
or edx, eax
xor eax, eax
cmp ecx, dword [esp + 0x84]
setg al
or edx, eax
xor eax, eax
cmp dword [esp + 0x24], ebp
setg al
or edx, eax
mov eax, dword [esp + 0x38]
movzx eax, byte [ecx + eax]
or edx, eax
jne case.0x77cf1a.5
mov eax, dword [esp + 0x24]
mov edx, dword [esp + 0x78]
cmp eax, edx
jge 0x77b493
mov eax, edx
cmp edi, ebp
jle 0x77b499
mov edi, ebp
mov edx, dword [esp + 0x38]
mov byte [ecx + edx], 1
imul ecx, dword [esp + 0x1c]
movzx edx, byte [esp + 0xa1]
sub edi, eax
add edi, 1
add ecx, dword [esp + 0x20]
mov ebp, edi
lea edi, [ecx + eax*4]
movzx eax, byte [esp + 0xa0]
lea ecx, [esi + eax*4]
mov dword [esp + 0x54], ecx
movzx ecx, byte [esp + 0xa2]
lea eax, [esi + edx*4]
lea edx, [esi + ecx*4]
mov dword [esp + 0x4c], eax
mov dword [esp + 0x50], edx
mov eax, dword [esp + 0x54]
mov cl, byte [eax]
mov edx, dword [esp + 0x4c]
mov al, byte [edx]
mov byte [esp + 0x10], cl
mov ecx, dword [esp + 0x50]
mov dl, byte [ecx]
mov ecx, dword [edi]
mov byte [esp + 0x11], al
mov byte [esp + 0x12], dl
mov ebx, dword [esp + 0x10]
mov edx, ecx
mov eax, ebx
and eax, 0xfefeff
and edx, 0xfefeff
add edx, eax
mov eax, edx
and eax, 0x1010100
mov esi, eax
shr esi, 8
or ecx, ebx
sub eax, esi
and ecx, 0x10100
or eax, ecx
or eax, edx
mov dword [edi], eax
add edi, 4
sub ebp, 1
jne 0x77b4e1
mov eax, dword [esp + 0x38]
push eax
call fcn.0057cf76
add esp, 4
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x78
ret
cmp dword [0xb160b8], 0
je case.0x77cf1a.5
mov edx, dword [esp + 0x90]
mov edi, dword [esp + 0x98]
mov ecx, edx
sub ecx, edi
add edi, edx
mov edx, dword [esp + 0x7c]
mov dword [esp + 0x24], ecx
xor ecx, ecx
cmp dword [esp + 0x94], edx
mov ebx, dword [esp + 0x94]
setl cl
xor edx, edx
cmp edi, dword [esp + 0x78]
mov dword [esp + 0x44], edi
mov edi, dword [esp + 0x80]
setl dl
or ecx, edx
xor edx, edx
cmp dword [esp + 0x24], edi
setg dl
or ecx, edx
xor edx, edx
cmp ebx, dword [esp + 0x84]
setg dl
or ecx, edx
mov edx, dword [esp + 0x38]
movzx edx, byte [edx + ebx]
or ecx, edx
jne 0x77b68e
mov edx, dword [esp + 0x24]
mov ecx, dword [esp + 0x78]
cmp edx, ecx
jge 0x77b5d8
mov edx, ecx
mov ecx, dword [esp + 0x44]
mov edi, dword [esp + 0x80]
cmp ecx, edi
jle 0x77b5e9
mov ecx, edi
mov edi, dword [esp + 0x38]
sub ecx, edx
add ecx, 1
mov dword [esp + 0x40], ecx
mov ecx, dword [esp + 0x1c]
imul ecx, ebx
add ecx, dword [esp + 0x20]
mov byte [edi + ebx], 1
lea edi, [ecx + edx*4]
movzx edx, byte [esp + 0xa0]
lea ecx, [esi + edx*4]
movzx edx, byte [esp + 0xa1]
mov dword [esp + 0x54], ecx
lea ecx, [esi + edx*4]
movzx edx, byte [esp + 0xa2]
mov dword [esp + 0x4c], ecx
lea ecx, [esi + edx*4]
mov dword [esp + 0x50], ecx
mov edx, dword [esp + 0x54]
movzx ecx, byte [edx]
mov edx, dword [esp + 0x4c]
mov byte [esp + 0x10], cl
movzx ecx, byte [edx]
mov edx, dword [esp + 0x50]
mov byte [esp + 0x11], cl
movzx ecx, byte [edx]
mov edx, dword [edi]
mov byte [esp + 0x12], cl
mov ecx, dword [esp + 0x10]
and ecx, 0xfefefeff
or edx, 0x1010100
sub edx, ecx
mov ecx, edx
and ecx, 0x1010100
mov ebx, ecx
shr ebx, 8
sub ecx, ebx
and ecx, edx
mov dword [edi], ecx
add edi, 4
sub dword [esp + 0x40], 1
jne 0x77b635
mov ebx, dword [esp + 0x94]
mov edx, dword [esp + 0x18]
test edx, edx
mov dword [esp + 0x2c], 0
jge 0x77b6ab
add edx, 6
add dword [esp + 0x14], 4
jmp 0x77b712
cmp dword [esp + 0x14], 0
mov ecx, dword [esp + 0x98]
mov edi, dword [esp + 0x30]
mov dword [esp + 0x28], ecx
jl 0x77b6e7
cmp ecx, edi
jl 0x77b6ce
lea eax, [ecx - 1]
sub ecx, edi
mov dword [esp + 0x28], ecx
lea ecx, [eax*4]
mov edi, 2
sub edi, ecx
sub edx, ecx
add dword [esp + 0x14], edi
jmp 0x77b71b
cmp ecx, edi
jl 0x77b6f4
lea eax, [ecx - 1]
sub ecx, edi
mov dword [esp + 0x28], ecx
lea edi, [eax*4]
mov ecx, 4
sub ecx, edi
mov edi, dword [esp + 0x14]
lea edx, [edx + ecx + 2]
lea ecx, [edi + ecx + 2]
mov dword [esp + 0x14], ecx
mov ebp, 1
mov dword [esp + 0x2c], ebp
test eax, eax
mov dword [esp + 0x18], edx
jle 0x77bab6
lea edi, [ebx + ebp]
mov dword [esp + 0x68], edi
imul edi, dword [esp + 0x1c]
lea ecx, [eax*4]
mov dword [esp + 0x6c], ecx
mov ecx, dword [esp + 0x90]
add ecx, eax
mov dword [esp + 0x64], ecx
mov ecx, ebx
mov ebx, dword [esp + 0x1c]
mov dword [esp + 0x5c], edi
mov edi, dword [esp + 0x90]
sub ecx, ebp
sub edi, eax
neg ebx
mov dword [esp + 0x60], ecx
imul ecx, dword [esp + 0x1c]
mov dword [esp + 0x70], edi
mov dword [esp + 0x3c], ebx
mov dword [esp + 0x58], ecx
jmp 0x77b780
cmp dword [esp + 0x2c], 0
je 0x77b9ba
mov edx, dword [esp + 0x64]
mov ecx, dword [esp + 0x68]
mov dword [esp + 0x44], edx
xor edx, edx
cmp ecx, dword [esp + 0x7c]
mov dword [esp + 0x24], edi
setl dl
xor ecx, ecx
cmp edi, dword [esp + 0x80]
mov edi, dword [esp + 0x78]
setg cl
or edx, ecx
xor ecx, ecx
cmp dword [esp + 0x64], edi
mov edi, dword [esp + 0x68]
setl cl
or edx, ecx
xor ecx, ecx
cmp edi, dword [esp + 0x84]
setg cl
or edx, ecx
mov ecx, dword [esp + 0x38]
movzx ebx, byte [edi + ecx]
or edx, ebx
jne 0x77b8a3
mov edx, dword [esp + 0x78]
cmp dword [esp + 0x70], edx
jge 0x77b7f3
mov dword [esp + 0x24], edx
jmp 0x77b7f7
mov edx, dword [esp + 0x24]
mov ebx, dword [esp + 0x80]
cmp dword [esp + 0x64], ebx
jle 0x77b808
mov dword [esp + 0x44], ebx
mov byte [edi + ecx], 1
mov ecx, dword [esp + 0x44]
sub ecx, edx
add ecx, 1
mov dword [esp + 0x40], ecx
mov ecx, dword [esp + 0x5c]
lea edi, [ecx + edx*4]
movzx edx, byte [esp + 0xa0]
add edi, dword [esp + 0x20]
lea ecx, [esi + edx*4]
movzx edx, byte [esp + 0xa1]
mov dword [esp + 0x54], ecx
lea ecx, [esi + edx*4]
movzx edx, byte [esp + 0xa2]
mov dword [esp + 0x4c], ecx
lea ecx, [esi + edx*4]
mov dword [esp + 0x50], ecx
mov edx, dword [esp + 0x54]
movzx ecx, byte [edx]
mov edx, dword [esp + 0x4c]
mov byte [esp + 0x10], cl
movzx ecx, byte [edx]
mov edx, dword [esp + 0x50]
mov byte [esp + 0x11], cl
movzx ecx, byte [edx]
mov edx, dword [edi]
mov byte [esp + 0x12], cl
mov ecx, dword [esp + 0x10]
and ecx, 0xfefefeff
or edx, 0x1010100
sub edx, ecx
mov ecx, edx
and ecx, 0x1010100
mov ebx, ecx
shr ebx, 8
sub ecx, ebx
and ecx, edx
mov dword [edi], ecx
add edi, 4
sub dword [esp + 0x40], 1
jne 0x77b851
mov edi, dword [esp + 0x60]
xor ecx, ecx
cmp edi, dword [esp + 0x7c]
mov ebx, dword [esp + 0x60]
setl cl
xor edx, edx
cmp edi, dword [esp + 0x84]
mov edi, dword [esp + 0x78]
setg dl
or ecx, edx
xor edx, edx
cmp dword [esp + 0x44], edi
mov edi, dword [esp + 0x24]
setl dl
or ecx, edx
xor edx, edx
cmp edi, dword [esp + 0x80]
setg dl
or ecx, edx
mov edx, dword [esp + 0x38]
movzx ebx, byte [ebx + edx]
or ecx, ebx
jne 0x77b9b2
mov ecx, dword [esp + 0x78]
cmp edi, ecx
jge 0x77b8fd
mov edi, ecx
mov ecx, dword [esp + 0x44]
mov ebx, dword [esp + 0x80]
cmp ecx, ebx
jle 0x77b90e
mov ecx, ebx
mov ebx, dword [esp + 0x60]
sub ecx, edi
add ecx, 1
mov byte [ebx + edx], 1
movzx edx, byte [esp + 0xa0]
mov dword [esp + 0x40], ecx
mov ecx, dword [esp + 0x58]
lea edi, [ecx + edi*4]
add edi, dword [esp + 0x20]
lea ecx, [esi + edx*4]
movzx edx, byte [esp + 0xa1]
mov dword [esp + 0x54], ecx
lea ecx, [esi + edx*4]
movzx edx, byte [esp + 0xa2]
mov dword [esp + 0x4c], ecx
lea ecx, [esi + edx*4]
mov dword [esp + 0x50], ecx
jmp 0x77b960
mov edx, dword [esp + 0x54]
movzx ecx, byte [edx]
mov edx, dword [esp + 0x4c]
mov byte [esp + 0x10], cl
movzx ecx, byte [edx]
mov edx, dword [esp + 0x50]
mov byte [esp + 0x11], cl
movzx ecx, byte [edx]
mov edx, dword [edi]
mov byte [esp + 0x12], cl
mov ecx, dword [esp + 0x10]
and ecx, 0xfefefeff
or edx, 0x1010100
sub edx, ecx
mov ecx, edx
and ecx, 0x1010100
mov ebx, ecx
shr ebx, 8
sub ecx, ebx
and ecx, edx
mov dword [edi], ecx
add edi, 4
sub dword [esp + 0x40], 1
jne 0x77b960
mov edi, dword [esp + 0x70]
mov edx, dword [esp + 0x18]
test edx, edx
mov dword [esp + 0x2c], 0
jge 0x77b9fe
sub dword [esp + 0x60], 1
mov ecx, 1
add dword [esp + 0x68], ecx
add ebp, ecx
mov dword [esp + 0x2c], ecx
mov ecx, dword [esp + 0x1c]
add dword [esp + 0x5c], ecx
mov ecx, dword [esp + 0x3c]
add dword [esp + 0x58], ecx
lea ecx, [ebp*4]
add dword [esp + 0x14], ecx
lea edx, [edx + ecx + 2]
jmp 0x77baa3
mov ebx, dword [esp + 0x28]
add ebx, dword [esp + 0x98]
cmp dword [esp + 0x14], 0
mov ecx, dword [esp + 0x30]
mov dword [esp + 0x28], ebx
jl 0x77ba4a
cmp ebx, ecx
jl 0x77ba34
sub dword [esp + 0x64], 1
sub dword [esp + 0x6c], 4
add edi, 1
sub eax, 1
sub dword [esp + 0x28], ecx
mov dword [esp + 0x70], edi
mov ecx, dword [esp + 0x6c]
mov ebx, 2
sub ebx, ecx
sub edx, ecx
add dword [esp + 0x14], ebx
jmp 0x77baa3
cmp ebx, ecx
jl 0x77ba66
sub dword [esp + 0x64], 1
sub dword [esp + 0x6c], 4
add edi, 1
sub eax, 1
sub dword [esp + 0x28], ecx
mov dword [esp + 0x70], edi
mov ecx, dword [esp + 0x1c]
add dword [esp + 0x5c], ecx
mov ecx, dword [esp + 0x3c]
add dword [esp + 0x58], ecx
add dword [esp + 0x68], 1
mov ebx, dword [esp + 0x14]
mov ecx, 1
sub dword [esp + 0x60], ecx
mov dword [esp + 0x2c], ecx
add ebp, 1
mov ecx, ebp
sub ecx, eax
add ecx, ecx
add ecx, ecx
lea edx, [edx + ecx + 2]
lea ecx, [ebx + ecx + 2]
mov dword [esp + 0x14], ecx
test eax, eax
mov dword [esp + 0x18], edx
jg 0x77b780
mov ebx, dword [esp + 0x94]
mov edi, dword [esp + 0x90]
sub ebx, ebp
mov ecx, edi
sub ecx, eax
add edi, eax
xor eax, eax
mov dword [esp + 0x24], ecx
mov ecx, ebx
cmp ecx, dword [esp + 0x7c]
mov edx, dword [esp + 0x80]
setl al
xor ebx, ebx
cmp edi, dword [esp + 0x78]
setl bl
or eax, ebx
xor ebx, ebx
cmp ecx, dword [esp + 0x84]
setg bl
or eax, ebx
xor ebx, ebx
cmp dword [esp + 0x24], edx
setg bl
or eax, ebx
mov ebx, dword [esp + 0x38]
movzx ebx, byte [ecx + ebx]
or eax, ebx
jne case.0x77cf1a.5
mov eax, dword [esp + 0x24]
mov ebx, dword [esp + 0x78]
cmp eax, ebx
jge 0x77bb1d
mov eax, ebx
cmp edi, edx
jle 0x77bb23
mov edi, edx
mov edx, dword [esp + 0x38]
mov byte [ecx + edx], 1
imul ecx, dword [esp + 0x1c]
sub edi, eax
add edi, 1
add ecx, dword [esp + 0x20]
lea edx, [ecx + eax*4]
movzx eax, byte [esp + 0xa0]
movzx ecx, byte [esp + 0xa1]
lea ebx, [esi + eax*4]
movzx eax, byte [esp + 0xa2]
lea ebp, [esi + ecx*4]
lea ecx, [esi + eax*4]
mov dword [esp + 0x50], ecx
mov al, byte [ebx]
movzx ecx, byte [ebp]
mov byte [esp + 0x10], al
mov eax, dword [esp + 0x50]
mov byte [esp + 0x11], cl
movzx ecx, byte [eax]
mov byte [esp + 0x12], cl
mov ecx, dword [edx]
mov eax, dword [esp + 0x10]
and eax, 0xfefefeff
or ecx, 0x1010100
sub ecx, eax
mov eax, ecx
and eax, 0x1010100
mov esi, eax
shr esi, 8
sub eax, esi
and eax, ecx
mov dword [edx], eax
add edx, 4
sub edi, 1
jne 0x77bb61
mov eax, dword [esp + 0x38]
push eax
call fcn.0057cf76
add esp, 4
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x78
ret
mov edx, dword [esp + 0x90]
mov esi, dword [esp + 0x98]
mov ecx, edx
add edx, esi
sub ecx, esi
mov esi, dword [esp + 0x78]
mov dword [esp + 0x44], edx
mov edx, dword [esp + 0x94]
mov dword [esp + 0x24], ecx
xor ecx, ecx
cmp edx, dword [esp + 0x7c]
setl cl
xor edx, edx
cmp dword [esp + 0x44], esi
mov esi, dword [esp + 0x80]
setl dl
or ecx, edx
xor edx, edx
cmp dword [esp + 0x24], esi
mov esi, dword [esp + 0x84]
setg dl
or ecx, edx
xor edx, edx
cmp dword [esp + 0x94], esi
mov esi, dword [esp + 0x38]
setg dl
or ecx, edx
mov edx, dword [esp + 0x94]
movzx esi, byte [esi + edx]
or ecx, esi
jne 0x77bcd5
mov esi, dword [esp + 0x24]
mov ecx, dword [esp + 0x78]
cmp esi, ecx
jge 0x77bc43
mov esi, ecx
mov ecx, dword [esp + 0x44]
mov edi, dword [esp + 0x80]
cmp ecx, edi
jle 0x77bc54
mov ecx, edi
sub ecx, esi
add ecx, 1
mov dword [esp + 0x40], ecx
mov ecx, dword [esp + 0x1c]
mov edi, dword [esp + 0x38]
imul ecx, edx
add ecx, dword [esp + 0x20]
mov byte [edi + edx], 1
lea esi, [ecx + esi*4]
movzx ecx, byte [esp + 0xa0]
mov dword [esp + 0x70], ecx
movzx ecx, byte [esp + 0xa1]
mov dword [esp + 0x58], ecx
movzx ecx, byte [esp + 0xa2]
mov dword [esp + 0x54], ecx
jmp 0x77bca0
movzx ecx, byte [esi]
imul ecx, dword [esp + 0x70]
sar ecx, 8
mov byte [esi], cl
movzx ecx, byte [esi + 1]
imul ecx, dword [esp + 0x58]
sar ecx, 8
mov byte [esi + 1], cl
movzx ecx, byte [esi + 2]
imul ecx, dword [esp + 0x54]
sar ecx, 8
mov byte [esi + 2], cl
add esi, 4
sub dword [esp + 0x40], 1
jne 0x77bca0
xor edi, edi
test ebx, ebx
jge 0x77bcef
mov edi, 1
add ebx, 6
add dword [esp + 0x14], 4
mov ebp, edi
jmp 0x77bd5a
cmp dword [esp + 0x14], 0
mov ecx, dword [esp + 0x98]
mov esi, dword [esp + 0x30]
mov dword [esp + 0x28], ecx
jl 0x77bd28
cmp ecx, esi
jl 0x77bd12
lea eax, [ecx - 1]
sub ecx, esi
mov dword [esp + 0x28], ecx
lea ecx, [eax*4]
mov esi, 2
sub esi, ecx
sub ebx, ecx
add dword [esp + 0x14], esi
jmp 0x77bd5a
cmp ecx, esi
jl 0x77bd35
lea eax, [ecx - 1]
sub ecx, esi
mov dword [esp + 0x28], ecx
lea esi, [eax*4]
mov ecx, 4
sub ecx, esi
mov esi, dword [esp + 0x14]
lea ebx, [ebx + ecx + 2]
mov ebp, 1
lea ecx, [esi + ecx + 2]
mov edi, ebp
mov dword [esp + 0x14], ecx
test eax, eax
jle 0x77c090
lea ecx, [eax*4]
mov dword [esp + 0x68], ecx
mov ecx, dword [esp + 0x90]
lea esi, [edx + ebp]
add ecx, eax
mov dword [esp + 0x64], ecx
mov ecx, edx
mov edx, esi
imul edx, dword [esp + 0x1c]
mov dword [esp + 0x60], esi
mov esi, dword [esp + 0x90]
mov dword [esp + 0x50], edx
mov edx, dword [esp + 0x1c]
sub ecx, ebp
sub esi, eax
neg edx
mov dword [esp + 0x5c], ecx
imul ecx, dword [esp + 0x1c]
mov dword [esp + 0x6c], esi
mov dword [esp + 0x3c], edx
mov dword [esp + 0x4c], ecx
test edi, edi
je 0x77bf97
mov edx, dword [esp + 0x64]
xor ecx, ecx
cmp esi, dword [esp + 0x80]
mov dword [esp + 0x44], edx
setg cl
xor edx, edx
mov dword [esp + 0x24], esi
mov esi, dword [esp + 0x78]
cmp dword [esp + 0x64], esi
mov esi, dword [esp + 0x84]
setl dl
mov edi, dword [esp + 0x38]
or ecx, edx
xor edx, edx
cmp dword [esp + 0x60], esi
mov esi, dword [esp + 0x7c]
setg dl
or ecx, edx
xor edx, edx
cmp dword [esp + 0x60], esi
mov esi, dword [esp + 0x60]
setl dl
or ecx, edx
movzx edx, byte [esi + edi]
or ecx, edx
jne 0x77beb3
mov ecx, dword [esp + 0x78]
cmp dword [esp + 0x6c], ecx
jge 0x77be28
mov dword [esp + 0x24], ecx
jmp 0x77be2c
mov ecx, dword [esp + 0x24]
mov edx, dword [esp + 0x80]
cmp dword [esp + 0x64], edx
jle 0x77be3d
mov dword [esp + 0x44], edx
mov edx, dword [esp + 0x50]
mov byte [esi + edi], 1
mov esi, dword [esp + 0x44]
sub esi, ecx
lea ecx, [edx + ecx*4]
movzx edx, byte [esp + 0xa0]
mov dword [esp + 0x70], edx
movzx edx, byte [esp + 0xa1]
mov dword [esp + 0x58], edx
movzx edx, byte [esp + 0xa2]
add esi, 1
add ecx, dword [esp + 0x20]
mov dword [esp + 0x54], edx
lea esp, [esp]
movzx edx, byte [ecx]
imul edx, dword [esp + 0x70]
sar edx, 8
mov byte [ecx], dl
movzx edx, byte [ecx + 1]
imul edx, dword [esp + 0x58]
sar edx, 8
mov byte [ecx + 1], dl
movzx edx, byte [ecx + 2]
imul edx, dword [esp + 0x54]
sar edx, 8
mov byte [ecx + 2], dl
add ecx, 4
sub esi, 1
jne 0x77be80
mov edx, dword [esp + 0x84]
mov esi, dword [esp + 0x7c]
xor ecx, ecx
cmp dword [esp + 0x5c], edx
setg cl
xor edx, edx
cmp dword [esp + 0x5c], esi
mov esi, dword [esp + 0x78]
setl dl
or ecx, edx
xor edx, edx
cmp dword [esp + 0x44], esi
mov esi, dword [esp + 0x80]
setl dl
or ecx, edx
xor edx, edx
cmp dword [esp + 0x24], esi
mov esi, dword [esp + 0x5c]
setg dl
or ecx, edx
movzx edx, byte [esi + edi]
or ecx, edx
jne 0x77bf93
mov edx, dword [esp + 0x24]
mov ecx, dword [esp + 0x78]
cmp edx, ecx
jge 0x77bf11
mov edx, ecx
mov ecx, dword [esp + 0x44]
cmp ecx, dword [esp + 0x80]
jle 0x77bf25
mov ecx, dword [esp + 0x80]
sub ecx, edx
add ecx, 1
mov byte [esi + edi], 1
mov esi, ecx
mov ecx, dword [esp + 0x4c]
lea ecx, [ecx + edx*4]
movzx edx, byte [esp + 0xa0]
add ecx, dword [esp + 0x20]
mov dword [esp + 0x70], edx
movzx edx, byte [esp + 0xa1]
mov dword [esp + 0x58], edx
movzx edx, byte [esp + 0xa2]
mov dword [esp + 0x54], edx
nop
movzx edx, byte [ecx]
imul edx, dword [esp + 0x70]
sar edx, 8
mov byte [ecx], dl
movzx edx, byte [ecx + 1]
imul edx, dword [esp + 0x58]
sar edx, 8
mov byte [ecx + 1], dl
movzx edx, byte [ecx + 2]
imul edx, dword [esp + 0x54]
sar edx, 8
mov byte [ecx + 2], dl
add ecx, 4
sub esi, 1
jne 0x77bf60
mov esi, dword [esp + 0x6c]
xor edi, edi
test ebx, ebx
jge 0x77bfcc
mov ecx, dword [esp + 0x1c]
add dword [esp + 0x50], ecx
mov edx, dword [esp + 0x3c]
add dword [esp + 0x4c], edx
mov edi, 1
add dword [esp + 0x60], edi
sub dword [esp + 0x5c], edi
add ebp, edi
lea ecx, [ebp*4]
add dword [esp + 0x14], ecx
jmp 0x77c07d
mov edx, dword [esp + 0x14]
test edx, edx
jl 0x77c01d
mov edx, dword [esp + 0x28]
add edx, dword [esp + 0x98]
mov ecx, dword [esp + 0x30]
cmp edx, ecx
mov dword [esp + 0x28], edx
jl 0x77c007
sub dword [esp + 0x64], 1
sub dword [esp + 0x68], 4
add esi, 1
sub eax, 1
sub dword [esp + 0x28], ecx
mov dword [esp + 0x6c], esi
mov ecx, dword [esp + 0x68]
mov edx, 2
sub edx, ecx
sub ebx, ecx
add dword [esp + 0x14], edx
jmp 0x77c081
mov ecx, dword [esp + 0x28]
add ecx, dword [esp + 0x98]
cmp ecx, dword [esp + 0x30]
mov dword [esp + 0x28], ecx
jl 0x77c04e
sub dword [esp + 0x64], 1
sub dword [esp + 0x68], 4
add esi, 1
sub eax, 1
sub ecx, dword [esp + 0x30]
mov dword [esp + 0x6c], esi
mov dword [esp + 0x28], ecx
mov ecx, dword [esp + 0x1c]
add dword [esp + 0x50], ecx
mov ecx, dword [esp + 0x3c]
add dword [esp + 0x4c], ecx
mov edi, 1
add dword [esp + 0x60], edi
sub dword [esp + 0x5c], edi
add ebp, edi
mov ecx, ebp
sub ecx, eax
add ecx, ecx
add ecx, ecx
lea edx, [edx + ecx + 2]
mov dword [esp + 0x14], edx
lea ebx, [ebx + ecx + 2]
test eax, eax
jg 0x77bdb4
mov edx, dword [esp + 0x94]
mov ecx, dword [esp + 0x90]
sub edx, ebp
lea esi, [eax + ecx]
mov edi, ecx
sub edi, eax
mov ecx, edx
xor eax, eax
cmp ecx, dword [esp + 0x7c]
setl al
xor edx, edx
cmp esi, dword [esp + 0x78]
setl dl
or eax, edx
xor edx, edx
cmp ecx, dword [esp + 0x84]
setg dl
or eax, edx
xor edx, edx
cmp edi, dword [esp + 0x80]
setg dl
or eax, edx
mov edx, dword [esp + 0x38]
movzx edx, byte [ecx + edx]
or eax, edx
jne case.0x77cf1a.5
mov eax, dword [esp + 0x78]
cmp edi, eax
jge 0x77c0ec
mov edi, eax
mov eax, dword [esp + 0x80]
cmp esi, eax
jle 0x77c0f9
mov esi, eax
mov eax, dword [esp + 0x38]
movzx ebp, byte [esp + 0xa2]
mov byte [ecx + eax], 1
imul ecx, dword [esp + 0x1c]
sub esi, edi
add esi, 1
add ecx, dword [esp + 0x20]
lea eax, [ecx + edi*4]
movzx ecx, byte [esp + 0xa0]
movzx edi, byte [esp + 0xa1]
lea ebx, [ebx]
movzx edx, byte [eax]
imul edx, ecx
sar edx, 8
mov byte [eax], dl
movzx edx, byte [eax + 1]
imul edx, edi
sar edx, 8
mov byte [eax + 1], dl
movzx edx, byte [eax + 2]
imul edx, ebp
sar edx, 8
mov byte [eax + 2], dl
add eax, 4
sub esi, 1
jne 0x77c130
mov eax, dword [esp + 0x38]
push eax
call fcn.0057cf76
add esp, 4
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x78
ret
mov edx, dword [esp + 0x90]
mov esi, dword [esp + 0x98]
mov ecx, edx
add edx, esi
sub ecx, esi
mov esi, dword [esp + 0x78]
mov dword [esp + 0x44], edx
mov edx, dword [esp + 0x94]
mov dword [esp + 0x24], ecx
xor ecx, ecx
cmp edx, dword [esp + 0x7c]
mov edi, dword [esp + 0x94]
setl cl
xor edx, edx
cmp dword [esp + 0x44], esi
mov esi, dword [esp + 0x80]
setl dl
or ecx, edx
xor edx, edx
cmp dword [esp + 0x24], esi
mov esi, dword [esp + 0x84]
setg dl
or ecx, edx
xor edx, edx
cmp dword [esp + 0x94], esi
setg dl
or ecx, edx
mov edx, dword [esp + 0x38]
movzx edx, byte [edx + edi]
or ecx, edx
jne 0x77c2cc
mov esi, dword [esp + 0x24]
mov ecx, dword [esp + 0x78]
cmp esi, ecx
jge 0x77c1f9
mov esi, ecx
mov edx, dword [esp + 0x44]
mov ecx, dword [esp + 0x80]
cmp edx, ecx
jle 0x77c20a
mov edx, ecx
sub edx, esi
mov ecx, dword [esp + 0x38]
add edx, 1
mov dword [esp + 0x40], edx
mov edx, dword [esp + 0x1c]
imul edx, edi
add edx, dword [esp + 0x20]
mov byte [ecx + edi], 1
movzx ecx, byte [esp + 0xa0]
lea esi, [edx + esi*4]
movzx edx, byte [esp + 0xa1]
mov dword [esp + 0x58], edx
movzx edx, byte [esp + 0xa2]
mov dword [esp + 0x54], edx
lea esp, [esp]
movzx edi, byte [esi]
mov edx, edi
imul edx, ecx
sar edx, 8
movzx edx, dl
sub edx, edi
imul edx, dword [0xb160b8]
shl edi, 8
add edx, edi
sar edx, 8
mov byte [esi], dl
movzx edi, byte [esi + 1]
mov edx, edi
imul edx, dword [esp + 0x58]
sar edx, 8
movzx edx, dl
sub edx, edi
imul edx, dword [0xb160b8]
shl edi, 8
add edx, edi
sar edx, 8
mov byte [esi + 1], dl
movzx edi, byte [esi + 2]
mov edx, edi
imul edx, dword [esp + 0x54]
sar edx, 8
movzx edx, dl
sub edx, edi
imul edx, dword [0xb160b8]
shl edi, 8
add edx, edi
sar edx, 8
mov byte [esi + 2], dl
add esi, 4
sub dword [esp + 0x40], 1
jne 0x77c250
mov edi, dword [esp + 0x94]
xor esi, esi
test ebx, ebx
jge 0x77c2e6
mov esi, 1
add ebx, 6
add dword [esp + 0x14], 4
mov ebp, esi
jmp 0x77c351
cmp dword [esp + 0x14], 0
mov ecx, dword [esp + 0x98]
mov edx, dword [esp + 0x30]
mov dword [esp + 0x28], ecx
jl 0x77c31f
cmp ecx, edx
jl 0x77c309
lea eax, [ecx - 1]
sub ecx, edx
mov dword [esp + 0x28], ecx
lea ecx, [eax*4]
mov edx, 2
sub edx, ecx
sub ebx, ecx
add dword [esp + 0x14], edx
jmp 0x77c355
cmp ecx, edx
jl 0x77c32c
lea eax, [ecx - 1]
sub ecx, edx
mov dword [esp + 0x28], ecx
lea ecx, [eax*4]
mov edx, 4
sub edx, ecx
mov ecx, dword [esp + 0x14]
lea ebx, [ebx + edx + 2]
mov ebp, 1
lea edx, [ecx + edx + 2]
mov esi, ebp
mov dword [esp + 0x14], edx
mov dword [esp + 0x34], ebp
test eax, eax
mov dword [esp + 0x18], ebx
jle 0x77c6f5
lea ecx, [eax*4]
mov dword [esp + 0x70], ecx
mov ecx, dword [esp + 0x90]
add ecx, eax
lea edx, [edi + ebp]
mov dword [esp + 0x60], ecx
mov ecx, edi
mov edi, dword [esp + 0x90]
sub edi, eax
mov dword [esp + 0x64], edi
mov edi, dword [esp + 0x1c]
sub ecx, ebp
mov dword [esp + 0x5c], edx
imul edx, dword [esp + 0x1c]
neg edi
mov dword [esp + 0x58], ecx
imul ecx, dword [esp + 0x1c]
mov dword [esp + 0x6c], edx
mov dword [esp + 0x3c], edi
mov dword [esp + 0x68], ecx
test esi, esi
je 0x77c60d
mov ecx, dword [esp + 0x60]
mov edx, dword [esp + 0x64]
mov esi, dword [esp + 0x80]
mov dword [esp + 0x44], ecx
mov ecx, dword [esp + 0x5c]
mov dword [esp + 0x24], edx
xor edx, edx
cmp ecx, dword [esp + 0x7c]
setl dl
xor ecx, ecx
cmp dword [esp + 0x64], esi
mov esi, dword [esp + 0x78]
setg cl
or edx, ecx
xor ecx, ecx
cmp dword [esp + 0x60], esi
mov esi, dword [esp + 0x84]
setl cl
or edx, ecx
xor ecx, ecx
cmp dword [esp + 0x5c], esi
mov esi, dword [esp + 0x5c]
setg cl
or edx, ecx
mov ecx, dword [esp + 0x38]
movzx ecx, byte [esi + ecx]
or edx, ecx
jne 0x77c4ed
mov ecx, dword [esp + 0x78]
cmp dword [esp + 0x64], ecx
jge 0x77c42d
mov dword [esp + 0x24], ecx
jmp 0x77c431
mov ecx, dword [esp + 0x24]
mov edx, dword [esp + 0x80]
cmp dword [esp + 0x60], edx
jle 0x77c442
mov dword [esp + 0x44], edx
mov edx, dword [esp + 0x38]
movzx edi, byte [esp + 0xa0]
mov byte [esi + edx], 1
mov esi, dword [esp + 0x44]
mov edx, dword [esp + 0x6c]
sub esi, ecx
lea ecx, [edx + ecx*4]
add esi, 1
add ecx, dword [esp + 0x20]
movzx edx, byte [ecx]
mov ebx, edx
imul ebx, edi
sar ebx, 8
movzx ebx, bl
sub ebx, edx
imul ebx, dword [0xb160b8]
movzx ebp, byte [esp + 0xa1]
shl edx, 8
add ebx, edx
sar ebx, 8
mov byte [ecx], bl
movzx edx, byte [ecx + 1]
mov ebx, edx
imul ebx, ebp
sar ebx, 8
movzx ebx, bl
sub ebx, edx
imul ebx, dword [0xb160b8]
movzx ebp, byte [esp + 0xa2]
shl edx, 8
add ebx, edx
sar ebx, 8
mov byte [ecx + 1], bl
movzx edx, byte [ecx + 2]
mov ebx, edx
imul ebx, ebp
sar ebx, 8
movzx ebx, bl
sub ebx, edx
imul ebx, dword [0xb160b8]
shl edx, 8
add ebx, edx
sar ebx, 8
mov byte [ecx + 2], bl
add ecx, 4
sub esi, 1
jne 0x77c466
mov ebx, dword [esp + 0x18]
mov ebp, dword [esp + 0x34]
mov edx, dword [esp + 0x7c]
mov esi, dword [esp + 0x84]
xor ecx, ecx
cmp dword [esp + 0x58], edx
mov edi, dword [esp + 0x58]
setl cl
xor edx, edx
cmp dword [esp + 0x58], esi
mov esi, dword [esp + 0x78]
setg dl
or ecx, edx
xor edx, edx
cmp dword [esp + 0x44], esi
mov esi, dword [esp + 0x80]
setl dl
or ecx, edx
xor edx, edx
cmp dword [esp + 0x24], esi
setg dl
or ecx, edx
mov edx, dword [esp + 0x38]
movzx edx, byte [edi + edx]
or ecx, edx
jne 0x77c609
mov edx, dword [esp + 0x24]
mov ecx, dword [esp + 0x78]
cmp edx, ecx
jge 0x77c54f
mov edx, ecx
mov ecx, dword [esp + 0x44]
mov esi, dword [esp + 0x80]
cmp ecx, esi
jle 0x77c560
mov ecx, esi
mov esi, dword [esp + 0x38]
movzx ebp, byte [esp + 0xa0]
sub ecx, edx
add ecx, 1
mov byte [edi + esi], 1
mov esi, ecx
mov ecx, dword [esp + 0x68]
lea ecx, [ecx + edx*4]
add ecx, dword [esp + 0x20]
movzx edx, byte [ecx]
mov ebx, edx
imul ebx, ebp
sar ebx, 8
movzx ebx, bl
sub ebx, edx
imul ebx, dword [0xb160b8]
movzx edi, byte [esp + 0xa1]
shl edx, 8
add ebx, edx
sar ebx, 8
mov byte [ecx], bl
movzx edx, byte [ecx + 1]
mov ebx, edx
imul ebx, edi
sar ebx, 8
movzx ebx, bl
sub ebx, edx
imul ebx, dword [0xb160b8]
movzx edi, byte [esp + 0xa2]
shl edx, 8
add ebx, edx
sar ebx, 8
mov byte [ecx + 1], bl
movzx edx, byte [ecx + 2]
mov ebx, edx
imul ebx, edi
sar ebx, 8
movzx ebx, bl
sub ebx, edx
imul ebx, dword [0xb160b8]
shl edx, 8
add ebx, edx
sar ebx, 8
mov byte [ecx + 2], bl
add ecx, 4
sub esi, 1
jne 0x77c582
mov ebx, dword [esp + 0x18]
mov ebp, dword [esp + 0x34]
mov edx, dword [esp + 0x6c]
xor esi, esi
test ebx, ebx
jge 0x77c642
mov ecx, dword [esp + 0x3c]
add dword [esp + 0x68], ecx
add edx, dword [esp + 0x1c]
mov esi, 1
add dword [esp + 0x5c], esi
sub dword [esp + 0x58], esi
add ebp, esi
lea ecx, [ebp*4]
add dword [esp + 0x14], ecx
lea ebx, [ebx + ecx + 2]
jmp 0x77c6e1
mov ecx, dword [esp + 0x28]
add ecx, dword [esp + 0x98]
cmp dword [esp + 0x14], 0
mov dword [esp + 0x28], ecx
jl 0x77c68e
cmp ecx, dword [esp + 0x30]
jl 0x77c678
add dword [esp + 0x64], 1
sub dword [esp + 0x60], 1
sub dword [esp + 0x70], 4
sub eax, 1
sub ecx, dword [esp + 0x30]
mov dword [esp + 0x28], ecx
mov ecx, dword [esp + 0x70]
mov edi, 2
sub edi, ecx
sub ebx, ecx
add dword [esp + 0x14], edi
jmp 0x77c6e9
mov esi, dword [esp + 0x30]
cmp ecx, esi
jl 0x77c6ae
add dword [esp + 0x64], 1
sub dword [esp + 0x60], 1
sub dword [esp + 0x70], 4
sub eax, 1
sub ecx, esi
mov dword [esp + 0x28], ecx
mov ecx, dword [esp + 0x3c]
add dword [esp + 0x68], ecx
add edx, dword [esp + 0x1c]
mov edi, dword [esp + 0x14]
mov esi, 1
add dword [esp + 0x5c], esi
sub dword [esp + 0x58], esi
add ebp, esi
mov ecx, ebp
sub ecx, eax
add ecx, ecx
add ecx, ecx
lea ebx, [ebx + ecx + 2]
lea ecx, [edi + ecx + 2]
mov dword [esp + 0x14], ecx
mov dword [esp + 0x6c], edx
mov dword [esp + 0x34], ebp
test eax, eax
mov dword [esp + 0x18], ebx
jg 0x77c3b1
mov ecx, dword [esp + 0x90]
lea esi, [eax + ecx]
xor edx, edx
mov edi, ecx
mov ecx, dword [esp + 0x94]
sub edi, eax
sub ecx, ebp
cmp ecx, dword [esp + 0x7c]
setl dl
xor eax, eax
cmp esi, dword [esp + 0x78]
setl al
or edx, eax
xor eax, eax
cmp ecx, dword [esp + 0x84]
setg al
or edx, eax
xor eax, eax
cmp edi, dword [esp + 0x80]
setg al
or edx, eax
mov eax, dword [esp + 0x38]
movzx eax, byte [ecx + eax]
or edx, eax
jne case.0x77cf1a.5
mov eax, dword [esp + 0x78]
cmp edi, eax
jge 0x77c756
mov edi, eax
mov eax, dword [esp + 0x80]
cmp esi, eax
jle 0x77c763
mov esi, eax
mov edx, dword [esp + 0x38]
movzx ebp, byte [esp + 0xa1]
mov byte [ecx + edx], 1
imul ecx, dword [esp + 0x1c]
movzx edx, byte [esp + 0xa2]
sub esi, edi
add esi, 1
add ecx, dword [esp + 0x20]
lea eax, [ecx + edi*4]
movzx edi, byte [esp + 0xa0]
movzx ecx, byte [eax]
mov ebx, ecx
imul ebx, edi
sar ebx, 8
movzx ebx, bl
sub ebx, ecx
imul ebx, dword [0xb160b8]
shl ecx, 8
add ebx, ecx
sar ebx, 8
mov byte [eax], bl
movzx ecx, byte [eax + 1]
mov ebx, ecx
imul ebx, ebp
sar ebx, 8
movzx ebx, bl
sub ebx, ecx
imul ebx, dword [0xb160b8]
shl ecx, 8
add ebx, ecx
sar ebx, 8
mov byte [eax + 1], bl
movzx ecx, byte [eax + 2]
mov ebx, ecx
imul ebx, edx
sar ebx, 8
movzx ebx, bl
sub ebx, ecx
imul ebx, dword [0xb160b8]
shl ecx, 8
add ebx, ecx
sar ebx, 8
mov byte [eax + 2], bl
add eax, 4
sub esi, 1
jne 0x77c794
mov eax, dword [esp + 0x38]
push eax
call fcn.0057cf76
add esp, 4
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x78
ret
mov edx, dword [esp + 0x90]
mov esi, dword [esp + 0x98]
mov ecx, edx
add edx, esi
sub ecx, esi
mov esi, dword [esp + 0x78]
mov dword [esp + 0x44], edx
mov edx, dword [esp + 0x94]
mov dword [esp + 0x24], ecx
xor ecx, ecx
cmp edx, dword [esp + 0x7c]
mov edi, dword [esp + 0x94]
setl cl
xor edx, edx
cmp dword [esp + 0x44], esi
mov esi, dword [esp + 0x80]
setl dl
or ecx, edx
xor edx, edx
cmp dword [esp + 0x24], esi
mov esi, dword [esp + 0x84]
setg dl
or ecx, edx
xor edx, edx
cmp dword [esp + 0x94], esi
mov esi, dword [esp + 0x38]
setg dl
or ecx, edx
movzx edx, byte [esi + edi]
or ecx, edx
jne 0x77c961
mov ecx, dword [esp + 0x24]
mov edx, dword [esp + 0x78]
cmp ecx, edx
jge 0x77c89f
mov ecx, edx
mov edx, dword [esp + 0x44]
cmp edx, dword [esp + 0x80]
jle 0x77c8b3
mov edx, dword [esp + 0x80]
mov byte [esi + edi], 1
mov esi, dword [esp + 0x1c]
sub edx, ecx
imul esi, edi
add edx, 1
add esi, dword [esp + 0x20]
lea esi, [esi + ecx*4]
mov cl, byte [esp + 0xa0]
not cl
movzx ecx, cl
mov dword [esp + 0x74], ecx
mov cl, byte [esp + 0xa1]
not cl
movzx ecx, cl
mov dword [esp + 0x70], ecx
mov cl, byte [esp + 0xa2]
not cl
movzx ecx, cl
mov dword [esp + 0x58], ecx
lea ebx, [ebx]
movzx edi, byte [esi]
mov ecx, dword [esp + 0x74]
sub ecx, edi
imul ecx, dword [0xb160b8]
shl edi, 8
add ecx, edi
sar ecx, 8
mov byte [esi], cl
movzx edi, byte [esi + 1]
mov ecx, dword [esp + 0x70]
sub ecx, edi
imul ecx, dword [0xb160b8]
shl edi, 8
add ecx, edi
sar ecx, 8
mov byte [esi + 1], cl
movzx edi, byte [esi + 2]
mov ecx, dword [esp + 0x58]
sub ecx, edi
imul ecx, dword [0xb160b8]
shl edi, 8
add ecx, edi
sar ecx, 8
mov byte [esi + 2], cl
add esi, 4
sub edx, 1
jne 0x77c900
mov edi, dword [esp + 0x94]
xor esi, esi
test ebx, ebx
jge 0x77c97b
mov esi, 1
add ebx, 6
add dword [esp + 0x14], 4
mov ebp, esi
jmp 0x77c9e6
cmp dword [esp + 0x14], 0
mov ecx, dword [esp + 0x98]
mov edx, dword [esp + 0x30]
mov dword [esp + 0x28], ecx
jl 0x77c9b4
cmp ecx, edx
jl 0x77c99e
lea eax, [ecx - 1]
sub ecx, edx
mov dword [esp + 0x28], ecx
lea ecx, [eax*4]
mov edx, 2
sub edx, ecx
sub ebx, ecx
add dword [esp + 0x14], edx
jmp 0x77c9ea
cmp ecx, edx
jl 0x77c9c1
lea eax, [ecx - 1]
sub ecx, edx
mov dword [esp + 0x28], ecx
lea ecx, [eax*4]
mov edx, 4
sub edx, ecx
mov ecx, dword [esp + 0x14]
lea ebx, [ebx + edx + 2]
mov ebp, 1
lea edx, [ecx + edx + 2]
mov esi, ebp
mov dword [esp + 0x14], edx
mov dword [esp + 0x34], ebp
test eax, eax
mov dword [esp + 0x18], ebx
jle 0x77cd7a
lea ecx, [eax*4]
mov dword [esp + 0x70], ecx
mov ecx, dword [esp + 0x90]
add ecx, eax
lea edx, [edi + ebp]
mov dword [esp + 0x68], ecx
mov ecx, edi
mov edi, dword [esp + 0x90]
sub edi, eax
mov dword [esp + 0x64], edi
mov edi, dword [esp + 0x1c]
sub ecx, ebp
mov dword [esp + 0x60], edx
imul edx, dword [esp + 0x1c]
neg edi
mov dword [esp + 0x5c], ecx
imul ecx, dword [esp + 0x1c]
mov dword [esp + 0x6c], edx
mov dword [esp + 0x3c], edi
mov dword [esp + 0x54], ecx
test esi, esi
je 0x77cc92
mov esi, dword [esp + 0x68]
mov edx, dword [esp + 0x64]
xor ecx, ecx
cmp esi, dword [esp + 0x78]
mov dword [esp + 0x24], edx
setl cl
xor edx, edx
mov dword [esp + 0x44], esi
mov esi, dword [esp + 0x84]
cmp dword [esp + 0x60], esi
mov esi, dword [esp + 0x7c]
setg dl
or ecx, edx
xor edx, edx
cmp dword [esp + 0x60], esi
mov esi, dword [esp + 0x80]
setl dl
or ecx, edx
xor edx, edx
cmp dword [esp + 0x64], esi
mov esi, dword [esp + 0x60]
setg dl
or ecx, edx
mov edx, dword [esp + 0x38]
movzx edx, byte [esi + edx]
or ecx, edx
jne 0x77cb75
mov ecx, dword [esp + 0x78]
cmp dword [esp + 0x64], ecx
jge 0x77cabe
mov dword [esp + 0x24], ecx
jmp 0x77cac2
mov ecx, dword [esp + 0x24]
mov edx, dword [esp + 0x80]
cmp dword [esp + 0x68], edx
jle 0x77cad3
mov dword [esp + 0x44], edx
mov edx, dword [esp + 0x38]
mov byte [esi + edx], 1
mov edx, dword [esp + 0x6c]
mov esi, dword [esp + 0x44]
sub esi, ecx
lea ecx, [edx + ecx*4]
mov dl, byte [esp + 0xa0]
not dl
movzx edi, dl
mov dl, byte [esp + 0xa1]
not dl
movzx ebp, dl
mov dl, byte [esp + 0xa2]
not dl
movzx edx, dl
add esi, 1
add ecx, dword [esp + 0x20]
mov dword [esp + 0x58], edx
movzx edx, byte [ecx]
mov ebx, edi
sub ebx, edx
imul ebx, dword [0xb160b8]
shl edx, 8
add ebx, edx
sar ebx, 8
mov byte [ecx], bl
movzx edx, byte [ecx + 1]
mov ebx, ebp
sub ebx, edx
imul ebx, dword [0xb160b8]
shl edx, 8
add ebx, edx
sar ebx, 8
mov byte [ecx + 1], bl
movzx edx, byte [ecx + 2]
mov ebx, dword [esp + 0x58]
sub ebx, edx
imul ebx, dword [0xb160b8]
shl edx, 8
add ebx, edx
sar ebx, 8
mov byte [ecx + 2], bl
add ecx, 4
sub esi, 1
jne 0x77cb17
mov ebx, dword [esp + 0x18]
mov ebp, dword [esp + 0x34]
mov edx, dword [esp + 0x7c]
mov esi, dword [esp + 0x84]
xor ecx, ecx
cmp dword [esp + 0x5c], edx
setl cl
xor edx, edx
cmp dword [esp + 0x5c], esi
mov esi, dword [esp + 0x78]
setg dl
or ecx, edx
xor edx, edx
cmp dword [esp + 0x44], esi
mov esi, dword [esp + 0x80]
setl dl
or ecx, edx
xor edx, edx
cmp dword [esp + 0x24], esi
mov esi, dword [esp + 0x5c]
setg dl
or ecx, edx
mov edx, dword [esp + 0x38]
movzx edx, byte [esi + edx]
or ecx, edx
jne 0x77cc8e
mov edx, dword [esp + 0x24]
mov ecx, dword [esp + 0x78]
cmp edx, ecx
jge 0x77cbd7
mov edx, ecx
mov ecx, dword [esp + 0x44]
mov esi, dword [esp + 0x80]
cmp ecx, esi
jle 0x77cbe8
mov ecx, esi
mov esi, dword [esp + 0x38]
mov edi, dword [esp + 0x5c]
sub ecx, edx
add ecx, 1
mov byte [edi + esi], 1
mov esi, ecx
mov ecx, dword [esp + 0x54]
lea ecx, [ecx + edx*4]
mov dl, byte [esp + 0xa0]
add ecx, dword [esp + 0x20]
not dl
movzx ebp, dl
mov dl, byte [esp + 0xa1]
not dl
movzx edi, dl
mov dl, byte [esp + 0xa2]
not dl
movzx edx, dl
mov dword [esp + 0x58], edx
mov edi, edi
movzx edx, byte [ecx]
mov ebx, ebp
sub ebx, edx
imul ebx, dword [0xb160b8]
shl edx, 8
add ebx, edx
sar ebx, 8
mov byte [ecx], bl
movzx edx, byte [ecx + 1]
mov ebx, edi
sub ebx, edx
imul ebx, dword [0xb160b8]
shl edx, 8
add ebx, edx
sar ebx, 8
mov byte [ecx + 1], bl
movzx edx, byte [ecx + 2]
mov ebx, dword [esp + 0x58]
sub ebx, edx
imul ebx, dword [0xb160b8]
shl edx, 8
add ebx, edx
sar ebx, 8
mov byte [ecx + 2], bl
add ecx, 4
sub esi, 1
jne 0x77cc30
mov ebx, dword [esp + 0x18]
mov ebp, dword [esp + 0x34]
mov edx, dword [esp + 0x6c]
xor esi, esi
test ebx, ebx
jge 0x77ccc7
mov ecx, dword [esp + 0x3c]
add dword [esp + 0x54], ecx
add edx, dword [esp + 0x1c]
mov esi, 1
add dword [esp + 0x60], esi
sub dword [esp + 0x5c], esi
add ebp, esi
lea ecx, [ebp*4]
add dword [esp + 0x14], ecx
lea ebx, [ebx + ecx + 2]
jmp 0x77cd66
mov ecx, dword [esp + 0x28]
add ecx, dword [esp + 0x98]
cmp dword [esp + 0x14], 0
mov dword [esp + 0x28], ecx
jl 0x77cd13
cmp ecx, dword [esp + 0x30]
jl 0x77ccfd
add dword [esp + 0x64], 1
sub dword [esp + 0x68], 1
sub dword [esp + 0x70], 4
sub eax, 1
sub ecx, dword [esp + 0x30]
mov dword [esp + 0x28], ecx
mov ecx, dword [esp + 0x70]
mov edi, 2
sub edi, ecx
sub ebx, ecx
add dword [esp + 0x14], edi
jmp 0x77cd6e
mov esi, dword [esp + 0x30]
cmp ecx, esi
jl 0x77cd33
add dword [esp + 0x64], 1
sub dword [esp + 0x68], 1
sub dword [esp + 0x70], 4
sub eax, 1
sub ecx, esi
mov dword [esp + 0x28], ecx
mov ecx, dword [esp + 0x3c]
add dword [esp + 0x54], ecx
add edx, dword [esp + 0x1c]
mov edi, dword [esp + 0x14]
mov esi, 1
add dword [esp + 0x60], esi
sub dword [esp + 0x5c], esi
add ebp, esi
mov ecx, ebp
sub ecx, eax
add ecx, ecx
add ecx, ecx
lea ebx, [ebx + ecx + 2]
lea ecx, [edi + ecx + 2]
mov dword [esp + 0x14], ecx
mov dword [esp + 0x6c], edx
mov dword [esp + 0x34], ebp
test eax, eax
mov dword [esp + 0x18], ebx
jg 0x77ca46
mov ecx, dword [esp + 0x90]
lea esi, [eax + ecx]
xor edx, edx
mov edi, ecx
mov ecx, dword [esp + 0x94]
sub edi, eax
sub ecx, ebp
cmp ecx, dword [esp + 0x7c]
setl dl
xor eax, eax
cmp esi, dword [esp + 0x78]
setl al
or edx, eax
xor eax, eax
cmp ecx, dword [esp + 0x84]
setg al
or edx, eax
xor eax, eax
cmp edi, dword [esp + 0x80]
setg al
or edx, eax
mov eax, dword [esp + 0x38]
movzx eax, byte [ecx + eax]
or edx, eax
jne case.0x77cf1a.5
mov eax, dword [esp + 0x78]
cmp edi, eax
jge 0x77cddb
mov edi, eax
mov eax, dword [esp + 0x80]
cmp esi, eax
jle 0x77cde8
mov esi, eax
mov edx, dword [esp + 0x38]
mov byte [ecx + edx], 1
imul ecx, dword [esp + 0x1c]
sub esi, edi
add esi, 1
add ecx, dword [esp + 0x20]
lea eax, [ecx + edi*4]
mov cl, byte [esp + 0xa0]
not cl
movzx edi, cl
mov cl, byte [esp + 0xa1]
not cl
movzx ebp, cl
mov cl, byte [esp + 0xa2]
not cl
movzx edx, cl
movzx ecx, byte [eax]
mov ebx, edi
sub ebx, ecx
imul ebx, dword [0xb160b8]
shl ecx, 8
add ebx, ecx
sar ebx, 8
mov byte [eax], bl
movzx ecx, byte [eax + 1]
mov ebx, ebp
sub ebx, ecx
imul ebx, dword [0xb160b8]
shl ecx, 8
add ebx, ecx
sar ebx, 8
mov byte [eax + 1], bl
movzx ecx, byte [eax + 2]
mov ebx, edx
sub ebx, ecx
imul ebx, dword [0xb160b8]
shl ecx, 8
add ebx, ecx
sar ebx, 8
mov byte [eax + 2], bl
add eax, 4
sub esi, 1
jne 0x77ce25
mov eax, dword [esp + 0x38]
push eax
call fcn.0057cf76
add esp, 4
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x78
ret
mov ecx, dword [0xb160d4]
mov edx, ecx
and edx, 0xffffff
cmp edx, 0xffffff
je 0x77cf04
mov ebx, dword [esp + 0xa0]
mov edx, ebx
movzx ecx, ch
sar edx, 5
and edx, 0x3f
imul edx, ecx
movzx ecx, byte [0xb160d4]
and ebx, 0x1f
imul ebx, ecx
mov ecx, dword [esp + 0xa0]
sar ebx, 5
and edx, 0xffffff07
or edx, ebx
movzx ebx, byte [0xb160d6]
sar ecx, 8
and ecx, 0xfffffff8
imul ecx, ebx
mov ebx, dword [esp + 0x18]
sar edx, 3
and ecx, 0xfffff800
or edx, ecx
mov dword [esp + 0xa0], edx
jmp 0x77cf0b
mov edx, dword [esp + 0xa0]
mov ecx, dword [0xb160b4]
cmp ecx, 0xb
ja case.0x77cf1a.5
jmp dword [ecx*4 + 0x78c794]
mov ecx, dword [0xb160b8]
cmp ecx, 0xff
jne 0x77d3d8
mov edx, dword [esp + 0x90]
mov esi, dword [esp + 0x98]
mov ecx, edx
sub ecx, esi
add edx, esi
mov esi, dword [esp + 0x78]
mov dword [esp + 0x24], ecx
mov ecx, dword [esp + 0x94]
mov dword [esp + 0x44], edx
xor edx, edx
cmp ecx, dword [esp + 0x7c]
setl dl
xor ecx, ecx
cmp dword [esp + 0x44], esi
mov esi, dword [esp + 0x80]
setl cl
or edx, ecx
xor ecx, ecx
cmp dword [esp + 0x24], esi
mov esi, dword [esp + 0x84]
setg cl
or edx, ecx
xor ecx, ecx
cmp dword [esp + 0x94], esi
mov esi, dword [esp + 0x38]
setg cl
or edx, ecx
mov ecx, dword [esp + 0x94]
movzx esi, byte [esi + ecx]
or edx, esi
jne 0x77cffb
mov esi, dword [esp + 0x24]
mov edx, dword [esp + 0x78]
cmp esi, edx
jge 0x77cfba
mov esi, edx
mov edx, dword [esp + 0x44]
mov edi, dword [esp + 0x80]
cmp edx, edi
jle 0x77cfcb
mov edx, edi
mov edi, dword [esp + 0x38]
mov byte [edi + ecx], 1
mov edi, dword [esp + 0x1c]
imul edi, ecx
sub edx, esi
add edx, 1
add edi, dword [esp + 0x20]
lea esi, [edi + esi*2]
mov di, word [esp + 0xa0]
mov edi, edi
mov word [esi], di
add esi, 2
sub edx, 1
jne 0x77cff0
xor esi, esi
test ebx, ebx
jge 0x77d015
mov esi, 1
add ebx, 6
add dword [esp + 0x14], 4
mov ebp, esi
jmp 0x77d087
cmp dword [esp + 0x14], 0
mov edx, dword [esp + 0x98]
mov dword [esp + 0x28], edx
jl 0x77d051
mov edi, dword [esp + 0x30]
cmp edx, edi
jl 0x77d038
lea eax, [edx - 1]
sub edx, edi
mov dword [esp + 0x28], edx
lea edx, [eax*4]
mov edi, 2
sub edi, edx
sub ebx, edx
add dword [esp + 0x14], edi
jmp 0x77d087
mov esi, dword [esp + 0x30]
cmp edx, esi
jl 0x77d062
lea eax, [edx - 1]
sub edx, esi
mov dword [esp + 0x28], edx
lea edi, [eax*4]
mov edx, 4
sub edx, edi
mov edi, dword [esp + 0x14]
lea ebx, [ebx + edx + 2]
mov ebp, 1
lea edx, [edi + edx + 2]
mov esi, ebp
mov dword [esp + 0x14], edx
test eax, eax
jle 0x77d330
mov edi, dword [esp + 0x90]
lea edx, [eax*4]
mov dword [esp + 0x70], edx
lea edx, [ecx + ebp]
mov dword [esp + 0x5c], edx
imul edx, dword [esp + 0x1c]
mov dword [esp + 0x6c], edx
mov edx, dword [esp + 0x90]
sub edx, eax
add edi, eax
mov dword [esp + 0x64], edx
mov edx, dword [esp + 0x1c]
mov dword [esp + 0x60], edi
sub ecx, ebp
mov edi, edx
neg edi
mov dword [esp + 0x58], ecx
imul ecx, edx
mov dword [esp + 0x3c], edi
mov dword [esp + 0x68], ecx
lea ecx, [ecx]
test esi, esi
je 0x77d23f
mov edx, dword [esp + 0x60]
mov ecx, dword [esp + 0x64]
mov esi, dword [esp + 0x80]
mov dword [esp + 0x44], edx
mov edx, dword [esp + 0x5c]
mov dword [esp + 0x24], ecx
xor ecx, ecx
cmp edx, dword [esp + 0x7c]
mov edi, dword [esp + 0x38]
setl cl
xor edx, edx
cmp dword [esp + 0x64], esi
mov esi, dword [esp + 0x78]
setg dl
or ecx, edx
xor edx, edx
cmp dword [esp + 0x60], esi
mov esi, dword [esp + 0x84]
setl dl
or ecx, edx
xor edx, edx
cmp dword [esp + 0x5c], esi
mov esi, dword [esp + 0x5c]
setg dl
or ecx, edx
movzx edx, byte [esi + edi]
or ecx, edx
jne 0x77d19c
mov ecx, dword [esp + 0x78]
cmp dword [esp + 0x64], ecx
jge 0x77d15c
mov dword [esp + 0x24], ecx
jmp 0x77d160
mov ecx, dword [esp + 0x24]
mov edx, dword [esp + 0x80]
cmp dword [esp + 0x60], edx
jle 0x77d171
mov dword [esp + 0x44], edx
mov edx, dword [esp + 0x44]
mov byte [esi + edi], 1
mov esi, dword [esp + 0x6c]
sub edx, ecx
lea ecx, [esi + ecx*2]
mov si, word [esp + 0xa0]
add edx, 1
add ecx, dword [esp + 0x20]
mov word [ecx], si
add ecx, 2
sub edx, 1
jne 0x77d191
mov edx, dword [esp + 0x7c]
mov esi, dword [esp + 0x84]
xor ecx, ecx
cmp dword [esp + 0x58], edx
mov edi, dword [esp + 0x58]
setl cl
xor edx, edx
cmp dword [esp + 0x58], esi
mov esi, dword [esp + 0x78]
setg dl
or ecx, edx
xor edx, edx
cmp dword [esp + 0x44], esi
mov esi, dword [esp + 0x80]
setl dl
or ecx, edx
xor edx, edx
cmp dword [esp + 0x24], esi
setg dl
or ecx, edx
mov edx, dword [esp + 0x38]
movzx esi, byte [edi + edx]
or ecx, esi
jne 0x77d23b
mov esi, dword [esp + 0x24]
mov ecx, dword [esp + 0x78]
cmp esi, ecx
jge 0x77d1fe
mov esi, ecx
mov ecx, dword [esp + 0x44]
cmp ecx, dword [esp + 0x80]
jle 0x77d212
mov ecx, dword [esp + 0x80]
sub ecx, esi
add ecx, 1
mov byte [edi + edx], 1
mov edx, ecx
mov ecx, dword [esp + 0x68]
lea ecx, [ecx + esi*2]
add ecx, dword [esp + 0x20]
mov si, word [esp + 0xa0]
mov word [ecx], si
add ecx, 2
sub edx, 1
jne 0x77d230
mov edi, dword [esp + 0x3c]
xor esi, esi
test ebx, ebx
jge 0x77d274
mov edx, dword [esp + 0x1c]
add dword [esp + 0x6c], edx
add dword [esp + 0x68], edi
mov esi, 1
add dword [esp + 0x5c], esi
sub dword [esp + 0x58], esi
add ebp, esi
lea ecx, [ebp*4]
add dword [esp + 0x14], ecx
jmp 0x77d31d
mov edx, dword [esp + 0x14]
test edx, edx
jl 0x77d2c3
mov edx, dword [esp + 0x28]
add edx, dword [esp + 0x98]
mov ecx, dword [esp + 0x30]
cmp edx, ecx
mov dword [esp + 0x28], edx
jl 0x77d2ad
add dword [esp + 0x64], 1
sub dword [esp + 0x60], 1
sub dword [esp + 0x70], 4
sub eax, 1
sub dword [esp + 0x28], ecx
mov ecx, dword [esp + 0x70]
mov edx, 2
sub edx, ecx
sub ebx, ecx
add dword [esp + 0x14], edx
jmp 0x77d321
mov ecx, dword [esp + 0x28]
add ecx, dword [esp + 0x98]
cmp ecx, dword [esp + 0x30]
mov dword [esp + 0x28], ecx
jl 0x77d2f2
add dword [esp + 0x64], 1
sub dword [esp + 0x60], 1
sub dword [esp + 0x70], 4
sub eax, 1
sub ecx, dword [esp + 0x30]
mov dword [esp + 0x28], ecx
mov ecx, dword [esp + 0x1c]
add dword [esp + 0x6c], ecx
add dword [esp + 0x68], edi
mov esi, 1
add dword [esp + 0x5c], esi
sub dword [esp + 0x58], esi
add ebp, esi
mov ecx, ebp
sub ecx, eax
add ecx, ecx
add ecx, ecx
lea edx, [edx + ecx + 2]
mov dword [esp + 0x14], edx
lea ebx, [ebx + ecx + 2]
test eax, eax
jg 0x77d0e0
mov ecx, dword [esp + 0x94]
mov edx, dword [esp + 0x90]
lea edi, [eax + edx]
mov esi, edx
sub esi, eax
xor eax, eax
sub ecx, ebp
cmp ecx, dword [esp + 0x7c]
setl al
xor edx, edx
cmp edi, dword [esp + 0x78]
setl dl
or eax, edx
xor edx, edx
cmp ecx, dword [esp + 0x84]
setg dl
or eax, edx
xor edx, edx
cmp esi, dword [esp + 0x80]
setg dl
or eax, edx
mov edx, dword [esp + 0x38]
movzx edx, byte [ecx + edx]
or eax, edx
jne case.0x77cf1a.5
mov eax, dword [esp + 0x78]
cmp esi, eax
jge 0x77d38a
mov esi, eax
mov eax, dword [esp + 0x80]
cmp edi, eax
jle 0x77d397
mov edi, eax
mov eax, dword [esp + 0x38]
mov byte [ecx + eax], 1
imul ecx, dword [esp + 0x1c]
sub edi, esi
add edi, 1
add ecx, dword [esp + 0x20]
lea ecx, [ecx + esi*2]
mov dx, word [esp + 0xa0]
mov word [ecx], dx
add ecx, 2
sub edi, 1
jne 0x77d3b0
mov eax, dword [esp + 0x38]
push eax
call fcn.0057cf76
add esp, 4
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x78
ret
test ecx, ecx
je case.0x77cf1a.5
mov esi, dword [esp + 0x90]
mov ebx, dword [esp + 0x98]
mov ecx, esi
add esi, ebx
sub ecx, ebx
mov dword [esp + 0x24], ecx
xor ecx, ecx
mov dword [esp + 0x44], esi
mov esi, dword [esp + 0x7c]
cmp dword [esp + 0x94], esi
mov esi, dword [esp + 0x78]
setl cl
xor ebx, ebx
cmp dword [esp + 0x44], esi
mov esi, dword [esp + 0x80]
setl bl
or ecx, ebx
xor ebx, ebx
cmp dword [esp + 0x24], esi
mov esi, dword [esp + 0x84]
setg bl
or ecx, ebx
xor ebx, ebx
cmp dword [esp + 0x94], esi
mov esi, dword [esp + 0x94]
setg bl
or ecx, ebx
mov ebx, dword [esp + 0x38]
movzx ebx, byte [ebx + esi]
or ecx, ebx
jne 0x77d53c
mov ebx, dword [esp + 0x24]
mov ecx, dword [esp + 0x78]
cmp ebx, ecx
jge 0x77d467
mov ebx, ecx
mov ecx, dword [esp + 0x44]
mov ebp, dword [esp + 0x80]
cmp ecx, ebp
jle 0x77d478
mov ecx, ebp
mov ebp, dword [esp + 0x38]
sub ecx, ebx
add ecx, 1
mov dword [esp + 0x40], ecx
mov ecx, dword [esp + 0x1c]
imul ecx, esi
add ecx, dword [esp + 0x20]
mov byte [esi + ebp], 1
lea ecx, [ecx + ebx*2]
mov esi, edx
sar esi, 0xb
mov ebx, edx
sar ebx, 5
mov dword [esp + 0x54], esi
and ebx, 0x3f
mov esi, edx
and esi, 0x1f
mov dword [esp + 0x2c], ecx
mov dword [esp + 0x58], ebx
mov dword [esp + 0x4c], esi
jmp 0x77d4c4
mov ebx, dword [esp + 0x58]
movzx ecx, word [ecx]
movzx esi, cx
mov ebp, esi
shr ebp, 5
and ebp, 0x3f
sub ebx, ebp
mov ebp, ecx
shr ebp, 5
mov dword [esp + 0x44], esi
and ebp, 0x3f
add bp, word [edi + ebx*4]
mov ebx, dword [esp + 0x54]
shr esi, 0xb
sub ebx, esi
mov si, cx
shr si, 0xb
add si, word [edi + ebx*4]
mov ebx, dword [esp + 0x4c]
shl si, 0xb
shl bp, 5
or bp, si
mov esi, dword [esp + 0x44]
and esi, 0x1f
and ecx, 0x1f
sub ebx, esi
add cx, word [edi + ebx*4]
mov ebx, 1
or bp, cx
mov ecx, dword [esp + 0x2c]
mov word [ecx], bp
add ecx, 2
sub dword [esp + 0x40], ebx
mov dword [esp + 0x2c], ecx
jne 0x77d4c0
mov esi, dword [esp + 0x94]
jmp 0x77d541
mov ebx, 1
mov ebp, dword [esp + 0x18]
test ebp, ebp
mov dword [esp + 0x2c], 0
jge 0x77d55e
add ebp, 6
add dword [esp + 0x14], 4
jmp 0x77d5e0
cmp dword [esp + 0x14], 0
mov ecx, dword [esp + 0x98]
mov dword [esp + 0x28], ecx
jl 0x77d5a6
mov ebx, dword [esp + 0x30]
cmp ecx, ebx
jl 0x77d589
lea eax, [ecx - 1]
sub ecx, ebx
mov dword [esp + 0x48], eax
mov dword [esp + 0x28], ecx
lea ecx, [eax*4]
mov ebx, 2
sub ebx, ecx
sub ebp, ecx
add dword [esp + 0x14], ebx
mov ebx, dword [esp + 0x34]
jmp 0x77d5e8
mov esi, dword [esp + 0x30]
cmp ecx, esi
jl 0x77d5bb
lea eax, [ecx - 1]
sub ecx, esi
mov dword [esp + 0x48], eax
mov dword [esp + 0x28], ecx
lea esi, [eax*4]
mov ecx, 4
sub ecx, esi
mov esi, dword [esp + 0x14]
lea ebp, [ecx + ebp + 2]
lea ecx, [esi + ecx + 2]
mov esi, dword [esp + 0x94]
mov dword [esp + 0x14], ecx
mov dword [esp + 0x2c], ebx
mov dword [esp + 0x34], ebx
test eax, eax
mov dword [esp + 0x18], ebp
jle 0x77d9c7
lea ecx, [eax*4]
mov dword [esp + 0x70], ecx
lea ecx, [ebx + esi]
mov dword [esp + 0x5c], ecx
mov ecx, dword [esp + 0x90]
add ecx, eax
mov dword [esp + 0x60], ecx
mov ecx, dword [esp + 0x5c]
sub esi, ebx
mov dword [esp + 0x58], esi
mov dword [esp + 0x50], esi
mov esi, dword [esp + 0x1c]
imul ecx, esi
mov dword [esp + 0x6c], ecx
mov ecx, dword [esp + 0x90]
sub ecx, eax
mov dword [esp + 0x64], ecx
mov ecx, esi
neg ecx
mov dword [esp + 0x3c], ecx
mov ecx, dword [esp + 0x58]
imul ecx, esi
mov dword [esp + 0x68], ecx
lea esp, [esp]
cmp dword [esp + 0x2c], 0
je 0x77d8bb
mov ecx, dword [esp + 0x64]
mov esi, dword [esp + 0x7c]
mov dword [esp + 0x24], ecx
mov ecx, dword [esp + 0x60]
mov dword [esp + 0x44], ecx
xor ecx, ecx
cmp dword [esp + 0x5c], esi
mov esi, dword [esp + 0x80]
setl cl
xor ebx, ebx
cmp dword [esp + 0x64], esi
mov esi, dword [esp + 0x78]
setg bl
mov ebp, dword [esp + 0x38]
or ecx, ebx
xor ebx, ebx
cmp dword [esp + 0x60], esi
mov esi, dword [esp + 0x84]
setl bl
or ecx, ebx
xor ebx, ebx
cmp dword [esp + 0x5c], esi
mov esi, dword [esp + 0x5c]
setg bl
or ecx, ebx
movzx ebx, byte [esi + ebp]
or ecx, ebx
jne 0x77d794
mov ecx, dword [esp + 0x78]
cmp dword [esp + 0x64], ecx
jge 0x77d6cf
mov dword [esp + 0x24], ecx
jmp 0x77d6d3
mov ecx, dword [esp + 0x24]
mov eax, dword [esp + 0x80]
cmp dword [esp + 0x60], eax
jle 0x77d6e4
mov dword [esp + 0x44], eax
mov eax, dword [esp + 0x44]
sub eax, ecx
add eax, 1
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x6c]
mov byte [esi + ebp], 1
lea eax, [eax + ecx*2]
add eax, dword [esp + 0x20]
mov ebx, edx
sar ebx, 5
mov ebp, edx
and ebx, 0x3f
sar ebp, 0xb
mov ecx, edx
and ecx, 0x1f
mov dword [esp + 0x2c], eax
mov dword [esp + 0x58], ebx
mov dword [esp + 0x54], ebp
mov dword [esp + 0x4c], ecx
jmp 0x77d72c
mov ebp, dword [esp + 0x54]
mov ebx, dword [esp + 0x58]
movzx ecx, word [eax]
movzx esi, cx
mov eax, esi
shr eax, 5
and eax, 0x3f
sub ebx, eax
mov eax, ecx
shr eax, 5
and eax, 0x3f
add ax, word [edi + ebx*4]
mov ebx, esi
shr ebx, 0xb
sub ebp, ebx
mov bx, cx
shr bx, 0xb
add bx, word [edi + ebp*4]
shl ax, 5
shl bx, 0xb
or ax, bx
mov ebx, dword [esp + 0x4c]
and esi, 0x1f
sub ebx, esi
and ecx, 0x1f
add cx, word [edi + ebx*4]
or ax, cx
mov bx, ax
mov eax, dword [esp + 0x2c]
mov word [eax], bx
add eax, 2
sub dword [esp + 0x40], 1
mov dword [esp + 0x2c], eax
jne 0x77d724
mov eax, dword [esp + 0x48]
mov esi, dword [esp + 0x50]
xor ecx, ecx
cmp esi, dword [esp + 0x7c]
mov esi, dword [esp + 0x84]
setl cl
xor ebx, ebx
cmp dword [esp + 0x50], esi
mov esi, dword [esp + 0x78]
setg bl
mov ebp, dword [esp + 0x38]
or ecx, ebx
xor ebx, ebx
cmp dword [esp + 0x44], esi
mov esi, dword [esp + 0x80]
setl bl
or ecx, ebx
xor ebx, ebx
cmp dword [esp + 0x24], esi
mov esi, dword [esp + 0x50]
setg bl
or ecx, ebx
movzx ebx, byte [esi + ebp]
or ecx, ebx
jne 0x77d8b3
mov ecx, dword [esp + 0x24]
mov eax, dword [esp + 0x78]
cmp ecx, eax
jge 0x77d7f6
mov ecx, eax
mov eax, dword [esp + 0x44]
mov ebx, dword [esp + 0x80]
cmp eax, ebx
jle 0x77d807
mov eax, ebx
sub eax, ecx
add eax, 1
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x68]
mov byte [esi + ebp], 1
lea eax, [eax + ecx*2]
add eax, dword [esp + 0x20]
mov ebx, edx
sar ebx, 5
mov ebp, edx
and ebx, 0x3f
sar ebp, 0xb
mov ecx, edx
and ecx, 0x1f
mov dword [esp + 0x2c], eax
mov dword [esp + 0x58], ebx
mov dword [esp + 0x54], ebp
mov dword [esp + 0x4c], ecx
jmp 0x77d84b
mov ebp, dword [esp + 0x54]
mov ebx, dword [esp + 0x58]
movzx ecx, word [eax]
movzx esi, cx
mov eax, esi
shr eax, 5
and eax, 0x3f
sub ebx, eax
mov eax, ecx
shr eax, 5
and eax, 0x3f
add ax, word [edi + ebx*4]
mov ebx, esi
shr ebx, 0xb
sub ebp, ebx
mov bx, cx
shr bx, 0xb
add bx, word [edi + ebp*4]
shl ax, 5
shl bx, 0xb
or ax, bx
mov ebx, dword [esp + 0x4c]
and esi, 0x1f
sub ebx, esi
and ecx, 0x1f
add cx, word [edi + ebx*4]
or ax, cx
mov bx, ax
mov eax, dword [esp + 0x2c]
mov word [eax], bx
add eax, 2
sub dword [esp + 0x40], 1
mov dword [esp + 0x2c], eax
jne 0x77d843
mov eax, dword [esp + 0x48]
mov ebx, dword [esp + 0x34]
mov ebp, dword [esp + 0x18]
test ebp, ebp
mov dword [esp + 0x2c], 0
jge 0x77d903
sub dword [esp + 0x50], 1
mov ecx, 1
add dword [esp + 0x5c], ecx
add ebx, ecx
mov dword [esp + 0x2c], ecx
mov ecx, dword [esp + 0x1c]
add dword [esp + 0x6c], ecx
mov ecx, dword [esp + 0x3c]
add dword [esp + 0x68], ecx
lea ecx, [ebx*4]
add dword [esp + 0x14], ecx
lea ebp, [ecx + ebp + 2]
jmp 0x77d9b0
mov esi, dword [esp + 0x28]
add esi, dword [esp + 0x98]
cmp dword [esp + 0x14], 0
mov ecx, dword [esp + 0x30]
mov dword [esp + 0x28], esi
jl 0x77d955
cmp esi, ecx
jl 0x77d93f
add dword [esp + 0x64], 1
sub dword [esp + 0x60], 1
sub dword [esp + 0x70], 4
sub eax, 1
sub dword [esp + 0x28], ecx
mov dword [esp + 0x48], eax
mov ecx, dword [esp + 0x70]
mov esi, 2
sub esi, ecx
sub ebp, ecx
add dword [esp + 0x14], esi
jmp 0x77d9b4
cmp esi, ecx
jl 0x77d973
add dword [esp + 0x64], 1
sub dword [esp + 0x60], 1
sub dword [esp + 0x70], 4
sub eax, 1
sub dword [esp + 0x28], ecx
mov dword [esp + 0x48], eax
mov ecx, dword [esp + 0x1c]
add dword [esp + 0x6c], ecx
mov ecx, dword [esp + 0x3c]
add dword [esp + 0x68], ecx
add dword [esp + 0x5c], 1
mov esi, dword [esp + 0x14]
mov ecx, 1
sub dword [esp + 0x50], ecx
mov dword [esp + 0x2c], ecx
add ebx, 1
mov ecx, ebx
sub ecx, eax
add ecx, ecx
add ecx, ecx
lea ebp, [ecx + ebp + 2]
lea ecx, [esi + ecx + 2]
mov dword [esp + 0x14], ecx
mov dword [esp + 0x34], ebx
test eax, eax
mov dword [esp + 0x18], ebp
jg 0x77d650
mov esi, dword [esp + 0x94]
mov ebp, dword [esp + 0x90]
sub esi, ebx
mov ecx, ebp
sub ecx, eax
add ebp, eax
xor eax, eax
cmp esi, dword [esp + 0x7c]
mov dword [esp + 0x24], ecx
setl al
xor ecx, ecx
cmp ebp, dword [esp + 0x78]
mov dword [esp + 0x44], ebp
mov ebp, dword [esp + 0x24]
setl cl
or eax, ecx
xor ecx, ecx
cmp esi, dword [esp + 0x84]
setg cl
xor ebx, ebx
or eax, ecx
mov ecx, dword [esp + 0x80]
cmp ebp, ecx
setg bl
or eax, ebx
mov ebx, dword [esp + 0x38]
movzx ebx, byte [esi + ebx]
or eax, ebx
jne case.0x77cf1a.5
mov eax, dword [esp + 0x78]
cmp ebp, eax
jge 0x77da2e
mov ebp, eax
mov eax, dword [esp + 0x44]
cmp eax, ecx
jle 0x77da38
mov eax, ecx
mov ecx, dword [esp + 0x38]
mov byte [esi + ecx], 1
imul esi, dword [esp + 0x1c]
add esi, dword [esp + 0x20]
sub eax, ebp
mov ebx, edx
lea esi, [esi + ebp*2]
sar ebx, 5
mov ebp, edx
add eax, 1
and ebx, 0x3f
sar ebp, 0xb
and edx, 0x1f
mov dword [esp + 0x40], eax
mov dword [esp + 0x58], ebx
mov dword [esp + 0x54], ebp
mov dword [esp + 0x4c], edx
jmp 0x77da7b
mov ebx, dword [esp + 0x58]
mov ebp, dword [esp + 0x54]
movzx eax, word [esi]
movzx ecx, ax
mov edx, ecx
shr edx, 5
and edx, 0x3f
sub ebx, edx
mov edx, eax
shr edx, 5
and edx, 0x3f
add dx, word [edi + ebx*4]
mov ebx, ecx
shr ebx, 0xb
sub ebp, ebx
mov bx, ax
shr bx, 0xb
add bx, word [edi + ebp*4]
shl dx, 5
shl bx, 0xb
or dx, bx
mov ebx, dword [esp + 0x4c]
and ecx, 0x1f
sub ebx, ecx
and eax, 0x1f
add ax, word [edi + ebx*4]
add esi, 2
or dx, ax
sub dword [esp + 0x40], 1
mov word [esi - 2], dx
jne 0x77da73
mov eax, dword [esp + 0x38]
push eax
call fcn.0057cf76
add esp, 4
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x78
ret
cmp dword [0xb160b8], 0
je case.0x77cf1a.5
mov edi, dword [esp + 0x90]
mov ebx, dword [esp + 0x98]
mov ecx, edi
add edi, ebx
sub ecx, ebx
mov dword [esp + 0x24], ecx
xor ecx, ecx
mov dword [esp + 0x44], edi
mov edi, dword [esp + 0x7c]
cmp dword [esp + 0x94], edi
mov edi, dword [esp + 0x78]
setl cl
xor ebx, ebx
cmp dword [esp + 0x44], edi
mov edi, dword [esp + 0x80]
setl bl
mov ebp, dword [esp + 0x94]
or ecx, ebx
xor ebx, ebx
cmp dword [esp + 0x24], edi
mov edi, dword [esp + 0x84]
setg bl
or ecx, ebx
xor ebx, ebx
cmp dword [esp + 0x94], edi
setg bl
or ecx, ebx
mov ebx, dword [esp + 0x38]
movzx edi, byte [ebx + ebp]
or ecx, edi
jne 0x77dc55
mov edi, dword [esp + 0x24]
mov ecx, dword [esp + 0x78]
cmp edi, ecx
jge 0x77db7e
mov edi, ecx
mov ecx, dword [esp + 0x44]
cmp ecx, dword [esp + 0x80]
jle 0x77db92
mov ecx, dword [esp + 0x80]
sub ecx, edi
add ecx, 1
mov dword [esp + 0x40], ecx
mov ecx, dword [esp + 0x1c]
imul ecx, ebp
add ecx, dword [esp + 0x20]
mov byte [ebx + ebp], 1
lea ebx, [ecx + edi*2]
mov ecx, edx
sar ecx, 0xb
lea ecx, [esi + ecx*4]
mov dword [esp + 0x54], ecx
mov ecx, edx
sar ecx, 5
and ecx, 0x3f
lea ecx, [esi + ecx*4]
mov dword [esp + 0x50], ecx
mov ecx, edx
and ecx, 0x1f
lea ecx, [esi + ecx*4]
mov dword [esp + 0x2c], ebx
mov dword [esp + 0x4c], ecx
jmp 0x77dbe0
mov ecx, dword [esp + 0x54]
mov cx, word [ecx]
mov edi, dword [esp + 0x50]
shl cx, 6
add cx, word [edi]
mov edi, dword [esp + 0x4c]
shl cx, 5
add cx, word [edi]
movzx edi, cx
movzx ecx, word [ebx]
movzx ebx, cx
mov ecx, edi
and ecx, 0xf7def7df
and ebx, 0xf7def7df
add ebx, ecx
mov ecx, ebx
and ecx, 0x8210820
mov ebp, ecx
shr ebp, 5
sub ecx, ebp
mov ebp, dword [esp + 0x2c]
movzx ebp, word [ebp]
or edi, ebp
and edi, 0x820
or ecx, edi
or ecx, ebx
mov ebx, dword [esp + 0x2c]
mov word [ebx], cx
add ebx, 2
sub dword [esp + 0x40], 1
mov dword [esp + 0x2c], ebx
jne 0x77dbe0
mov ebp, dword [esp + 0x94]
mov edi, dword [esp + 0x18]
test edi, edi
mov dword [esp + 0x2c], 0
jge 0x77dc72
add edi, 6
add dword [esp + 0x14], 4
jmp 0x77dcf0
cmp dword [esp + 0x14], 0
mov ecx, dword [esp + 0x98]
mov ebx, dword [esp + 0x30]
mov dword [esp + 0x28], ecx
jl 0x77dcba
cmp ecx, ebx
jl 0x77dc9d
lea eax, [ecx - 1]
sub ecx, ebx
mov dword [esp + 0x48], eax
mov dword [esp + 0x28], ecx
lea ecx, [eax*4]
mov ebx, 2
sub ebx, ecx
sub edi, ecx
add dword [esp + 0x14], ebx
mov ebx, dword [esp + 0x34]
jmp 0x77dcfd
cmp ecx, ebx
jl 0x77dccb
lea eax, [ecx - 1]
sub ecx, ebx
mov dword [esp + 0x48], eax
mov dword [esp + 0x28], ecx
lea ebp, [eax*4]
mov ecx, 4
sub ecx, ebp
mov ebp, dword [esp + 0x14]
lea edi, [edi + ecx + 2]
lea ecx, [ecx + ebp + 2]
mov ebp, dword [esp + 0x94]
mov dword [esp + 0x14], ecx
mov ebx, 1
mov dword [esp + 0x2c], ebx
mov dword [esp + 0x34], ebx
test eax, eax
mov dword [esp + 0x18], edi
jle 0x77e0c4
lea ecx, [eax*4]
mov dword [esp + 0x70], ecx
lea ecx, [ebx + ebp]
mov dword [esp + 0x60], ecx
mov ecx, dword [esp + 0x90]
add ecx, eax
mov dword [esp + 0x64], ecx
mov ecx, dword [esp + 0x60]
sub ebp, ebx
mov dword [esp + 0x58], ebp
mov dword [esp + 0x5c], ebp
mov ebp, dword [esp + 0x1c]
imul ecx, ebp
mov dword [esp + 0x6c], ecx
mov ecx, dword [esp + 0x90]
sub ecx, eax
mov dword [esp + 0x68], ecx
mov ecx, ebp
neg ecx
mov dword [esp + 0x3c], ecx
mov ecx, dword [esp + 0x58]
imul ecx, ebp
mov dword [esp + 0x58], ecx
cmp dword [esp + 0x2c], 0
je 0x77dfb0
mov ecx, dword [esp + 0x60]
mov ebp, dword [esp + 0x68]
mov edi, dword [esp + 0x64]
mov ebx, dword [esp + 0x78]
xor eax, eax
cmp ecx, dword [esp + 0x7c]
mov dword [esp + 0x24], ebp
setl al
xor ecx, ecx
cmp ebp, dword [esp + 0x80]
mov ebp, dword [esp + 0x60]
setg cl
mov dword [esp + 0x44], edi
or eax, ecx
xor ecx, ecx
cmp edi, ebx
setl cl
or eax, ecx
xor ecx, ecx
cmp ebp, dword [esp + 0x84]
setg cl
or eax, ecx
mov ecx, dword [esp + 0x38]
movzx ebx, byte [ecx + ebp]
or eax, ebx
jne 0x77de98
mov eax, dword [esp + 0x78]
cmp dword [esp + 0x68], eax
jge 0x77ddd6
mov dword [esp + 0x24], eax
jmp 0x77ddda
mov eax, dword [esp + 0x24]
mov ebx, dword [esp + 0x80]
cmp dword [esp + 0x64], ebx
jle 0x77dded
mov edi, ebx
mov dword [esp + 0x44], ebx
mov byte [ecx + ebp], 1
mov ecx, dword [esp + 0x6c]
sub edi, eax
lea eax, [ecx + eax*2]
add eax, dword [esp + 0x20]
mov ecx, edx
sar ecx, 0xb
lea ecx, [esi + ecx*4]
mov dword [esp + 0x54], ecx
mov ecx, edx
sar ecx, 5
and ecx, 0x3f
lea ecx, [esi + ecx*4]
mov dword [esp + 0x50], ecx
add edi, 1
mov ecx, edx
and ecx, 0x1f
lea ecx, [esi + ecx*4]
mov dword [esp + 0x40], edi
mov dword [esp + 0x4c], ecx
lea esp, [esp]
mov ecx, dword [esp + 0x54]
mov cx, word [ecx]
mov edi, dword [esp + 0x50]
shl cx, 6
add cx, word [edi]
mov edi, dword [esp + 0x4c]
shl cx, 5
add cx, word [edi]
add eax, 2
movzx edi, cx
movzx ecx, word [eax - 2]
movzx ebp, cx
mov ecx, edi
and ecx, 0xf7def7df
and ebp, 0xf7def7df
add ebp, ecx
mov ecx, ebp
and ecx, 0x8210820
mov ebx, ecx
shr ebx, 5
sub ecx, ebx
movzx ebx, word [eax - 2]
or edi, ebx
and edi, 0x820
or ecx, edi
or ecx, ebp
sub dword [esp + 0x40], 1
mov word [eax - 2], cx
jne 0x77de30
mov edi, dword [esp + 0x44]
mov ebp, dword [esp + 0x5c]
xor ecx, ecx
cmp ebp, dword [esp + 0x7c]
mov ebx, dword [esp + 0x5c]
setl cl
xor eax, eax
cmp ebp, dword [esp + 0x84]
mov ebp, dword [esp + 0x24]
setg al
or ecx, eax
xor eax, eax
cmp edi, dword [esp + 0x78]
setl al
or ecx, eax
xor eax, eax
cmp ebp, dword [esp + 0x80]
setg al
or ecx, eax
mov eax, dword [esp + 0x38]
movzx ebx, byte [ebx + eax]
or ecx, ebx
jne 0x77dfa4
mov ecx, dword [esp + 0x78]
cmp ebp, ecx
jge 0x77deee
mov ebp, ecx
mov ecx, dword [esp + 0x80]
cmp edi, ecx
jle 0x77defb
mov edi, ecx
mov ecx, dword [esp + 0x5c]
mov byte [ecx + eax], 1
mov eax, dword [esp + 0x58]
mov ecx, edx
sar ecx, 0xb
lea ecx, [esi + ecx*4]
mov dword [esp + 0x54], ecx
mov ecx, edx
sar ecx, 5
and ecx, 0x3f
lea ecx, [esi + ecx*4]
mov dword [esp + 0x50], ecx
sub edi, ebp
lea eax, [eax + ebp*2]
add eax, dword [esp + 0x20]
add edi, 1
mov ecx, edx
and ecx, 0x1f
lea ecx, [esi + ecx*4]
mov dword [esp + 0x40], edi
mov dword [esp + 0x4c], ecx
mov edi, edi
mov ecx, dword [esp + 0x54]
mov cx, word [ecx]
mov edi, dword [esp + 0x50]
shl cx, 6
add cx, word [edi]
mov edi, dword [esp + 0x4c]
shl cx, 5
add cx, word [edi]
add eax, 2
movzx edi, cx
movzx ecx, word [eax - 2]
movzx ebp, cx
mov ecx, edi
and ecx, 0xf7def7df
and ebp, 0xf7def7df
add ebp, ecx
mov ecx, ebp
and ecx, 0x8210820
mov ebx, ecx
shr ebx, 5
sub ecx, ebx
movzx ebx, word [eax - 2]
or edi, ebx
and edi, 0x820
or ecx, edi
or ecx, ebp
sub dword [esp + 0x40], 1
mov word [eax - 2], cx
jne 0x77df40
mov edi, dword [esp + 0x18]
mov ebx, dword [esp + 0x34]
mov eax, dword [esp + 0x48]
test edi, edi
mov dword [esp + 0x2c], 0
jge 0x77dff8
sub dword [esp + 0x5c], 1
mov ecx, 1
add dword [esp + 0x60], ecx
add ebx, ecx
mov dword [esp + 0x2c], ecx
mov ecx, dword [esp + 0x1c]
add dword [esp + 0x6c], ecx
mov ecx, dword [esp + 0x3c]
add dword [esp + 0x58], ecx
lea ecx, [ebx*4]
add dword [esp + 0x14], ecx
lea edi, [edi + ecx + 2]
jmp 0x77e0ad
mov ebp, dword [esp + 0x28]
add ebp, dword [esp + 0x98]
cmp dword [esp + 0x14], 0
mov ecx, dword [esp + 0x30]
mov dword [esp + 0x28], ebp
jl 0x77e04e
cmp ebp, ecx
jl 0x77e038
add dword [esp + 0x68], 1
sub dword [esp + 0x64], 1
sub dword [esp + 0x70], 4
sub eax, 1
sub dword [esp + 0x28], ecx
mov dword [esp + 0x48], eax
mov ecx, dword [esp + 0x70]
mov ebp, 2
sub ebp, ecx
sub edi, ecx
add dword [esp + 0x14], ebp
jmp 0x77e0b1
cmp ebp, ecx
jl 0x77e070
add dword [esp + 0x68], 1
sub dword [esp + 0x64], 1
sub dword [esp + 0x70], 4
sub eax, 1
sub dword [esp + 0x28], ecx
mov dword [esp + 0x48], eax
mov ecx, dword [esp + 0x1c]
add dword [esp + 0x6c], ecx
mov ecx, dword [esp + 0x3c]
add dword [esp + 0x58], ecx
add dword [esp + 0x60], 1
mov ebp, dword [esp + 0x14]
mov ecx, 1
sub dword [esp + 0x5c], ecx
mov dword [esp + 0x2c], ecx
add ebx, 1
mov ecx, ebx
sub ecx, eax
add ecx, ecx
add ecx, ecx
lea edi, [edi + ecx + 2]
lea ecx, [ecx + ebp + 2]
mov dword [esp + 0x14], ecx
mov dword [esp + 0x34], ebx
test eax, eax
mov dword [esp + 0x18], edi
jg 0x77dd61
mov ebp, dword [esp + 0x94]
mov edi, dword [esp + 0x90]
sub ebp, ebx
xor ebx, ebx
mov ecx, edi
sub ecx, eax
add eax, edi
mov edi, ebp
cmp edi, dword [esp + 0x7c]
mov ebp, dword [esp + 0x80]
setl bl
mov dword [esp + 0x24], ecx
xor ecx, ecx
cmp eax, dword [esp + 0x78]
mov dword [esp + 0x44], eax
setl cl
xor eax, eax
or ebx, ecx
cmp edi, dword [esp + 0x84]
mov ecx, dword [esp + 0x24]
setg al
or ebx, eax
xor eax, eax
cmp ecx, ebp
setg al
or ebx, eax
mov eax, dword [esp + 0x38]
movzx eax, byte [edi + eax]
or ebx, eax
jne case.0x77cf1a.5
mov eax, dword [esp + 0x78]
cmp ecx, eax
jge 0x77e12d
mov ecx, eax
mov eax, dword [esp + 0x44]
cmp eax, ebp
jle 0x77e137
mov eax, ebp
mov ebx, dword [esp + 0x38]
mov byte [edi + ebx], 1
imul edi, dword [esp + 0x1c]
add edi, dword [esp + 0x20]
sub eax, ecx
lea ebx, [edi + ecx*2]
add eax, 1
mov ecx, edx
sar ecx, 0xb
mov ebp, eax
lea eax, [esi + ecx*4]
mov ecx, edx
sar ecx, 5
and ecx, 0x3f
mov dword [esp + 0x54], eax
lea eax, [esi + ecx*4]
and edx, 0x1f
lea ecx, [esi + edx*4]
mov dword [esp + 0x50], eax
mov dword [esp + 0x4c], ecx
jmp 0x77e180
mov edx, dword [esp + 0x54]
mov ax, word [edx]
mov ecx, dword [esp + 0x50]
mov edx, dword [esp + 0x4c]
shl ax, 6
add ax, word [ecx]
add ebx, 2
shl ax, 5
add ax, word [edx]
movzx edx, word [ebx - 2]
movzx ecx, ax
movzx edi, dx
mov eax, ecx
and eax, 0xf7def7df
and edi, 0xf7def7df
add edi, eax
mov eax, edi
and eax, 0x8210820
mov esi, eax
shr esi, 5
or ecx, edx
sub eax, esi
and ecx, 0x820
or eax, ecx
or eax, edi
sub ebp, 1
mov word [ebx - 2], ax
jne 0x77e180
mov eax, dword [esp + 0x38]
push eax
call fcn.0057cf76
add esp, 4
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x78
ret
cmp dword [0xb160b8], 0
je case.0x77cf1a.5
mov edi, dword [esp + 0x90]
mov ebx, dword [esp + 0x98]
mov ecx, edi
add edi, ebx
sub ecx, ebx
mov dword [esp + 0x24], ecx
xor ecx, ecx
mov dword [esp + 0x44], edi
mov edi, dword [esp + 0x7c]
cmp dword [esp + 0x94], edi
mov edi, dword [esp + 0x78]
setl cl
xor ebx, ebx
cmp dword [esp + 0x44], edi
mov edi, dword [esp + 0x80]
setl bl
mov ebp, dword [esp + 0x94]
or ecx, ebx
xor ebx, ebx
cmp dword [esp + 0x24], edi
mov edi, dword [esp + 0x84]
setg bl
or ecx, ebx
xor ebx, ebx
cmp dword [esp + 0x94], edi
setg bl
or ecx, ebx
mov ebx, dword [esp + 0x38]
movzx edi, byte [ebx + ebp]
or ecx, edi
jne 0x77e336
mov edi, dword [esp + 0x24]
mov ecx, dword [esp + 0x78]
cmp edi, ecx
jge 0x77e285
mov edi, ecx
mov ecx, dword [esp + 0x44]
cmp ecx, dword [esp + 0x80]
jle 0x77e299
mov ecx, dword [esp + 0x80]
sub ecx, edi
add ecx, 1
mov dword [esp + 0x40], ecx
mov ecx, dword [esp + 0x1c]
imul ecx, ebp
add ecx, dword [esp + 0x20]
mov byte [ebx + ebp], 1
lea ebx, [ecx + edi*2]
mov ecx, edx
sar ecx, 0xb
lea ecx, [esi + ecx*4]
mov dword [esp + 0x54], ecx
mov ecx, edx
sar ecx, 5
and ecx, 0x3f
lea ecx, [esi + ecx*4]
mov dword [esp + 0x50], ecx
mov ecx, edx
and ecx, 0x1f
lea ecx, [esi + ecx*4]
mov dword [esp + 0x4c], ecx
jmp 0x77e2e0
mov ecx, dword [esp + 0x54]
mov cx, word [ecx]
mov edi, dword [esp + 0x50]
shl cx, 6
add cx, word [edi]
mov edi, dword [esp + 0x4c]
shl cx, 5
add cx, word [edi]
movzx edi, word [ebx]
movzx ecx, cx
and ecx, 0xf7def7df
or edi, 0x8210820
sub edi, ecx
mov ecx, edi
and ecx, 0x8210820
mov ebp, ecx
shr ebp, 5
sub ecx, ebp
and ecx, edi
mov word [ebx], cx
add ebx, 2
sub dword [esp + 0x40], 1
jne 0x77e2e0
mov ebp, dword [esp + 0x94]
mov ebx, dword [esp + 0x18]
test ebx, ebx
mov dword [esp + 0x2c], 0
jge 0x77e353
add ebx, 6
add dword [esp + 0x14], 4
jmp 0x77e3c9
cmp dword [esp + 0x14], 0
mov ecx, dword [esp + 0x98]
mov edi, dword [esp + 0x30]
mov dword [esp + 0x28], ecx
jl 0x77e397
cmp ecx, edi
jl 0x77e37a
lea eax, [ecx - 1]
sub ecx, edi
mov dword [esp + 0x28], ecx
lea ecx, [eax*4]
mov edi, 2
sub edi, ecx
sub ebx, ecx
add dword [esp + 0x14], edi
mov edi, dword [esp + 0x34]
jmp 0x77e3d6
cmp ecx, edi
jl 0x77e3a4
lea eax, [ecx - 1]
sub ecx, edi
mov dword [esp + 0x28], ecx
lea ebp, [eax*4]
mov ecx, 4
sub ecx, ebp
mov ebp, dword [esp + 0x14]
lea ebx, [ebx + ecx + 2]
lea ecx, [ecx + ebp + 2]
mov ebp, dword [esp + 0x94]
mov dword [esp + 0x14], ecx
mov edi, 1
mov dword [esp + 0x2c], edi
mov dword [esp + 0x34], edi
test eax, eax
mov dword [esp + 0x18], ebx
jle 0x77e789
lea ecx, [eax*4]
mov dword [esp + 0x70], ecx
lea ecx, [edi + ebp]
mov dword [esp + 0x5c], ecx
mov ecx, dword [esp + 0x90]
add ecx, eax
mov dword [esp + 0x60], ecx
mov ecx, dword [esp + 0x5c]
sub ebp, edi
mov dword [esp + 0x58], ebp
mov dword [esp + 0x48], ebp
mov ebp, dword [esp + 0x1c]
imul ecx, ebp
mov dword [esp + 0x6c], ecx
mov ecx, dword [esp + 0x90]
sub ecx, eax
mov dword [esp + 0x64], ecx
mov ecx, ebp
neg ecx
mov dword [esp + 0x3c], ecx
mov ecx, dword [esp + 0x58]
imul ecx, ebp
mov dword [esp + 0x68], ecx
lea ebx, [ebx]
cmp dword [esp + 0x2c], 0
je 0x77e689
mov ecx, dword [esp + 0x64]
mov edi, dword [esp + 0x80]
mov dword [esp + 0x24], ecx
mov ecx, dword [esp + 0x60]
mov dword [esp + 0x44], ecx
mov ecx, dword [esp + 0x5c]
xor ebx, ebx
cmp ecx, dword [esp + 0x7c]
mov ebp, dword [esp + 0x5c]
setl bl
xor ecx, ecx
cmp dword [esp + 0x64], edi
mov edi, dword [esp + 0x78]
setg cl
or ebx, ecx
xor ecx, ecx
cmp dword [esp + 0x60], edi
mov edi, dword [esp + 0x84]
setl cl
or ebx, ecx
xor ecx, ecx
cmp dword [esp + 0x5c], edi
setg cl
or ebx, ecx
mov ecx, dword [esp + 0x38]
movzx edi, byte [ecx + ebp]
or ebx, edi
jne 0x77e571
mov edi, dword [esp + 0x78]
cmp dword [esp + 0x64], edi
jge 0x77e4bf
mov dword [esp + 0x24], edi
jmp 0x77e4c3
mov edi, dword [esp + 0x24]
mov ebx, dword [esp + 0x80]
cmp dword [esp + 0x60], ebx
jle 0x77e4d4
mov dword [esp + 0x44], ebx
mov byte [ecx + ebp], 1
mov ecx, dword [esp + 0x44]
sub ecx, edi
add ecx, 1
mov dword [esp + 0x40], ecx
mov ecx, dword [esp + 0x6c]
lea ebp, [ecx + edi*2]
add ebp, dword [esp + 0x20]
mov ecx, edx
sar ecx, 0xb
lea ecx, [esi + ecx*4]
mov dword [esp + 0x54], ecx
mov ecx, edx
sar ecx, 5
and ecx, 0x3f
lea ecx, [esi + ecx*4]
mov dword [esp + 0x50], ecx
mov ecx, edx
and ecx, 0x1f
lea ecx, [esi + ecx*4]
mov dword [esp + 0x4c], ecx
jmp 0x77e520
mov ecx, dword [esp + 0x54]
mov cx, word [ecx]
mov edi, dword [esp + 0x50]
shl cx, 6
add cx, word [edi]
mov edi, dword [esp + 0x4c]
shl cx, 5
add cx, word [edi]
movzx edi, word [ebp]
movzx ecx, cx
and ecx, 0xf7def7df
or edi, 0x8210820
sub edi, ecx
mov ecx, edi
and ecx, 0x8210820
mov ebx, ecx
shr ebx, 5
sub ecx, ebx
and ecx, edi
mov word [ebp], cx
add ebp, 2
sub dword [esp + 0x40], 1
jne 0x77e520
mov edi, dword [esp + 0x84]
xor ecx, ecx
cmp dword [esp + 0x48], edi
mov edi, dword [esp + 0x7c]
setg cl
xor ebx, ebx
cmp dword [esp + 0x48], edi
mov edi, dword [esp + 0x78]
setl bl
mov ebp, dword [esp + 0x48]
or ecx, ebx
xor ebx, ebx
cmp dword [esp + 0x44], edi
mov edi, dword [esp + 0x80]
setl bl
or ecx, ebx
xor ebx, ebx
cmp dword [esp + 0x24], edi
setg bl
or ecx, ebx
mov ebx, dword [esp + 0x38]
movzx edi, byte [ebx + ebp]
or ecx, edi
jne 0x77e681
mov edi, dword [esp + 0x24]
mov ecx, dword [esp + 0x78]
cmp edi, ecx
jge 0x77e5d3
mov edi, ecx
mov ecx, dword [esp + 0x44]
cmp ecx, dword [esp + 0x80]
jle 0x77e5e7
mov ecx, dword [esp + 0x80]
sub ecx, edi
add ecx, 1
mov dword [esp + 0x40], ecx
mov ecx, dword [esp + 0x68]
mov byte [ebx + ebp], 1
lea ebp, [ecx + edi*2]
add ebp, dword [esp + 0x20]
mov ecx, edx
sar ecx, 0xb
lea ecx, [esi + ecx*4]
mov dword [esp + 0x54], ecx
mov ecx, edx
sar ecx, 5
and ecx, 0x3f
lea ecx, [esi + ecx*4]
mov dword [esp + 0x50], ecx
mov ecx, edx
and ecx, 0x1f
lea ecx, [esi + ecx*4]
mov dword [esp + 0x4c], ecx
jmp 0x77e630
mov ecx, dword [esp + 0x54]
mov cx, word [ecx]
mov edi, dword [esp + 0x50]
shl cx, 6
add cx, word [edi]
mov edi, dword [esp + 0x4c]
shl cx, 5
add cx, word [edi]
movzx edi, word [ebp]
movzx ecx, cx
and ecx, 0xf7def7df
or edi, 0x8210820
sub edi, ecx
mov ecx, edi
and ecx, 0x8210820
mov ebx, ecx
shr ebx, 5
sub ecx, ebx
and ecx, edi
mov word [ebp], cx
add ebp, 2
sub dword [esp + 0x40], 1
jne 0x77e630
mov edi, dword [esp + 0x34]
mov ebx, dword [esp + 0x18]
test ebx, ebx
mov dword [esp + 0x2c], 0
jge 0x77e6d1
sub dword [esp + 0x48], 1
mov ecx, 1
add dword [esp + 0x5c], ecx
add edi, ecx
mov dword [esp + 0x2c], ecx
mov ecx, dword [esp + 0x1c]
add dword [esp + 0x6c], ecx
mov ecx, dword [esp + 0x3c]
add dword [esp + 0x68], ecx
lea ecx, [edi*4]
add dword [esp + 0x14], ecx
lea ebx, [ebx + ecx + 2]
jmp 0x77e772
mov ebp, dword [esp + 0x28]
add ebp, dword [esp + 0x98]
cmp dword [esp + 0x14], 0
mov ecx, dword [esp + 0x30]
mov dword [esp + 0x28], ebp
jl 0x77e71b
cmp ebp, ecx
jl 0x77e705
add dword [esp + 0x64], 1
sub dword [esp + 0x60], 1
sub dword [esp + 0x70], 4
sub eax, 1
sub dword [esp + 0x28], ecx
mov ecx, dword [esp + 0x70]
mov ebp, 2
sub ebp, ecx
sub ebx, ecx
add dword [esp + 0x14], ebp
jmp 0x77e776
cmp ebp, ecx
jl 0x77e735
add dword [esp + 0x64], 1
sub dword [esp + 0x60], 1
sub dword [esp + 0x70], 4
sub eax, 1
sub dword [esp + 0x28], ecx
mov ecx, dword [esp + 0x1c]
add dword [esp + 0x6c], ecx
mov ecx, dword [esp + 0x3c]
add dword [esp + 0x68], ecx
add dword [esp + 0x5c], 1
mov ebp, dword [esp + 0x14]
mov ecx, 1
sub dword [esp + 0x48], ecx
mov dword [esp + 0x2c], ecx
add edi, 1
mov ecx, edi
sub ecx, eax
add ecx, ecx
add ecx, ecx
lea ebx, [ebx + ecx + 2]
lea ecx, [ecx + ebp + 2]
mov dword [esp + 0x14], ecx
mov dword [esp + 0x34], edi
test eax, eax
mov dword [esp + 0x18], ebx
jg 0x77e440
mov ebp, dword [esp + 0x94]
mov ebx, dword [esp + 0x90]
mov ecx, ebx
sub ecx, eax
add eax, ebx
sub ebp, edi
xor ebx, ebx
mov edi, ebp
cmp edi, dword [esp + 0x7c]
mov dword [esp + 0x24], ecx
setl bl
mov ebp, dword [esp + 0x24]
xor ecx, ecx
cmp eax, dword [esp + 0x78]
mov dword [esp + 0x44], eax
setl cl
xor eax, eax
or ebx, ecx
cmp edi, dword [esp + 0x84]
mov ecx, dword [esp + 0x80]
setg al
or ebx, eax
xor eax, eax
cmp ebp, ecx
setg al
or ebx, eax
mov eax, dword [esp + 0x38]
movzx eax, byte [edi + eax]
or ebx, eax
jne case.0x77cf1a.5
mov eax, dword [esp + 0x78]
cmp ebp, eax
jge 0x77e7f2
mov ebp, eax
mov eax, dword [esp + 0x44]
cmp eax, ecx
jle 0x77e7fc
mov eax, ecx
mov ecx, dword [esp + 0x38]
mov byte [edi + ecx], 1
imul edi, dword [esp + 0x1c]
add edi, dword [esp + 0x20]
sub eax, ebp
add eax, 1
mov ebx, eax
mov ecx, edx
mov eax, edx
sar eax, 0xb
sar ecx, 5
and ecx, 0x3f
lea edi, [edi + ebp*2]
lea ebp, [esi + eax*4]
lea eax, [esi + ecx*4]
and edx, 0x1f
mov dword [esp + 0x50], eax
lea esi, [esi + edx*4]
mov cx, word [ebp]
mov edx, dword [esp + 0x50]
shl cx, 6
add cx, word [edx]
add edi, 2
shl cx, 5
add cx, word [esi]
movzx eax, cx
movzx ecx, word [edi - 2]
and eax, 0xf7def7df
or ecx, 0x8210820
sub ecx, eax
mov eax, ecx
and eax, 0x8210820
mov edx, eax
shr edx, 5
sub eax, edx
and eax, ecx
sub ebx, 1
mov word [edi - 2], ax
jne 0x77e834
mov eax, dword [esp + 0x38]
push eax
call fcn.0057cf76
add esp, 4
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x78
ret
mov edi, dword [esp + 0x90]
mov esi, dword [esp + 0x98]
mov ecx, edi
sub ecx, esi
add edi, esi
mov esi, dword [esp + 0x7c]
mov dword [esp + 0x24], ecx
xor ecx, ecx
cmp dword [esp + 0x94], esi
mov esi, dword [esp + 0x78]
setl cl
xor ebx, ebx
cmp edi, esi
mov esi, dword [esp + 0x80]
setl bl
mov ebp, dword [esp + 0x38]
mov dword [esp + 0x44], edi
or ecx, ebx
xor ebx, ebx
cmp dword [esp + 0x24], esi
mov esi, dword [esp + 0x84]
setg bl
or ecx, ebx
xor ebx, ebx
cmp dword [esp + 0x94], esi
mov esi, dword [esp + 0x94]
movzx edi, byte [esi + ebp]
setg bl
or ecx, ebx
or ecx, edi
jne 0x77e9b8
mov ecx, dword [esp + 0x24]
mov edi, dword [esp + 0x78]
cmp ecx, edi
jge 0x77e914
mov ecx, edi
mov edi, dword [esp + 0x44]
mov ebx, dword [esp + 0x80]
cmp edi, ebx
jle 0x77e925
mov edi, ebx
sub edi, ecx
add edi, 1
mov dword [esp + 0x40], edi
mov edi, dword [esp + 0x1c]
imul edi, esi
add edi, dword [esp + 0x20]
mov byte [esi + ebp], 1
lea edi, [edi + ecx*2]
mov ebx, edx
mov esi, edx
and ebx, 0x7e0
mov ecx, edx
and esi, 0xf800
and ecx, 0x1f
mov dword [esp + 0x58], ebx
mov dword [esp + 0x4c], ecx
jmp 0x77e964
mov ebx, dword [esp + 0x58]
movzx ecx, word [edi]
mov ebp, ecx
and ebp, 0x7e0
imul ebp, ebx
mov ebx, ecx
and ebx, 0xf800
imul ebx, esi
and ecx, 0x1f
imul ecx, dword [esp + 0x4c]
shr ebp, 0xb
and ebp, 0x7e0
shr ebx, 0x10
and ebx, 0xf800
or ebp, ebx
shr ecx, 5
or ebp, ecx
mov word [edi], bp
mov ebp, 1
add edi, 2
sub dword [esp + 0x40], ebp
jne 0x77e960
mov esi, dword [esp + 0x94]
jmp 0x77e9bd
mov ebp, 1
mov ebx, dword [esp + 0x18]
test ebx, ebx
mov dword [esp + 0x2c], 0
jge 0x77e9e0
add ebx, 6
add dword [esp + 0x14], 4
mov dword [esp + 0x2c], ebp
mov edi, ebp
jmp 0x77ea51
cmp dword [esp + 0x14], 0
mov ecx, dword [esp + 0x98]
mov edi, dword [esp + 0x30]
mov dword [esp + 0x28], ecx
jl 0x77ea20
cmp ecx, edi
jl 0x77ea03
lea eax, [ecx - 1]
sub ecx, edi
mov dword [esp + 0x28], ecx
lea ecx, [eax*4]
mov edi, 2
sub edi, ecx
sub ebx, ecx
add dword [esp + 0x14], edi
mov edi, dword [esp + 0x34]
jmp 0x77ea55
cmp ecx, edi
jl 0x77ea2d
lea eax, [ecx - 1]
sub ecx, edi
mov dword [esp + 0x28], ecx
mov edi, ebp
mov dword [esp + 0x2c], ebp
lea ebp, [eax*4]
mov ecx, 4
sub ecx, ebp
mov ebp, dword [esp + 0x14]
lea ebx, [ebx + ecx + 2]
lea ecx, [ecx + ebp + 2]
mov dword [esp + 0x14], ecx
mov dword [esp + 0x34], edi
test eax, eax
mov dword [esp + 0x18], ebx
jle 0x77edd4
lea ecx, [eax*4]
mov dword [esp + 0x70], ecx
mov ecx, dword [esp + 0x90]
lea ebp, [edi + esi]
add ecx, eax
mov dword [esp + 0x60], ecx
mov ecx, esi
mov esi, ebp
imul esi, dword [esp + 0x1c]
mov dword [esp + 0x6c], esi
mov esi, dword [esp + 0x90]
sub esi, eax
mov dword [esp + 0x64], esi
mov esi, dword [esp + 0x1c]
sub ecx, edi
neg esi
mov dword [esp + 0x5c], ecx
imul ecx, dword [esp + 0x1c]
mov dword [esp + 0x68], ebp
mov dword [esp + 0x3c], esi
mov dword [esp + 0x54], ecx
cmp dword [esp + 0x2c], 0
je 0x77ecd7
mov esi, dword [esp + 0x64]
mov edi, dword [esp + 0x60]
xor ecx, ecx
cmp ebp, dword [esp + 0x7c]
mov ebp, dword [esp + 0x80]
setl cl
xor ebx, ebx
cmp esi, ebp
mov ebp, dword [esp + 0x78]
setg bl
mov dword [esp + 0x24], esi
mov dword [esp + 0x44], edi
or ecx, ebx
xor ebx, ebx
cmp edi, ebp
mov ebp, dword [esp + 0x84]
setl bl
or ecx, ebx
xor ebx, ebx
cmp dword [esp + 0x68], ebp
mov ebp, dword [esp + 0x68]
setg bl
or ecx, ebx
mov ebx, dword [esp + 0x38]
movzx ebx, byte [ebx + ebp]
or ecx, ebx
jne 0x77ebcf
mov ecx, dword [esp + 0x78]
cmp esi, ecx
jge 0x77eb28
mov esi, ecx
mov dword [esp + 0x24], ecx
mov ecx, dword [esp + 0x80]
cmp dword [esp + 0x60], ecx
jle 0x77eb3b
mov edi, ecx
mov dword [esp + 0x44], ecx
mov ecx, dword [esp + 0x38]
mov byte [ecx + ebp], 1
mov ecx, edi
sub ecx, esi
add ecx, 1
mov dword [esp + 0x40], ecx
mov ecx, dword [esp + 0x6c]
lea esi, [ecx + esi*2]
add esi, dword [esp + 0x20]
mov ebx, edx
mov edi, edx
and ebx, 0x7e0
mov ecx, edx
and edi, 0xf800
and ecx, 0x1f
mov dword [esp + 0x58], ebx
mov dword [esp + 0x4c], ecx
jmp 0x77eb84
mov ebx, dword [esp + 0x58]
movzx ecx, word [esi]
mov ebp, ecx
and ebp, 0x7e0
imul ebp, ebx
mov ebx, ecx
and ebx, 0xf800
imul ebx, edi
and ecx, 0x1f
imul ecx, dword [esp + 0x4c]
shr ebp, 0xb
shr ebx, 0x10
and ebp, 0x7e0
and ebx, 0xf800
or ebp, ebx
shr ecx, 5
or ebp, ecx
mov word [esi], bp
add esi, 2
sub dword [esp + 0x40], 1
jne 0x77eb80
mov ebp, dword [esp + 0x68]
mov esi, dword [esp + 0x5c]
xor ecx, ecx
cmp esi, dword [esp + 0x7c]
mov esi, dword [esp + 0x84]
setl cl
xor ebx, ebx
cmp dword [esp + 0x5c], esi
mov esi, dword [esp + 0x78]
setg bl
mov edi, dword [esp + 0x38]
or ecx, ebx
xor ebx, ebx
cmp dword [esp + 0x44], esi
mov esi, dword [esp + 0x80]
setl bl
or ecx, ebx
xor ebx, ebx
cmp dword [esp + 0x24], esi
setg bl
or ecx, ebx
mov ebx, dword [esp + 0x5c]
movzx esi, byte [ebx + edi]
or ecx, esi
jne 0x77eccf
mov esi, dword [esp + 0x24]
mov ecx, dword [esp + 0x78]
cmp esi, ecx
jge 0x77ec31
mov esi, ecx
mov ecx, dword [esp + 0x44]
mov ebp, dword [esp + 0x80]
cmp ecx, ebp
jle 0x77ec42
mov ecx, ebp
sub ecx, esi
add ecx, 1
mov dword [esp + 0x40], ecx
mov ecx, dword [esp + 0x54]
mov byte [ebx + edi], 1
lea esi, [ecx + esi*2]
add esi, dword [esp + 0x20]
mov ebx, edx
mov edi, edx
and ebx, 0x7e0
mov ecx, edx
and edi, 0xf800
and ecx, 0x1f
mov dword [esp + 0x58], ebx
mov dword [esp + 0x4c], ecx
jmp 0x77ec84
mov ebx, dword [esp + 0x58]
movzx ecx, word [esi]
mov ebp, ecx
and ebp, 0x7e0
imul ebp, ebx
mov ebx, ecx
and ebx, 0xf800
imul ebx, edi
and ecx, 0x1f
imul ecx, dword [esp + 0x4c]
shr ebp, 0xb
shr ebx, 0x10
and ebp, 0x7e0
and ebx, 0xf800
or ebp, ebx
shr ecx, 5
or ebp, ecx
mov word [esi], bp
add esi, 2
sub dword [esp + 0x40], 1
jne 0x77ec80
mov ebp, dword [esp + 0x68]
mov edi, dword [esp + 0x34]
mov ebx, dword [esp + 0x18]
test ebx, ebx
mov dword [esp + 0x2c], 0
jge 0x77ed1a
mov ecx, dword [esp + 0x1c]
add dword [esp + 0x6c], ecx
mov ecx, dword [esp + 0x3c]
add dword [esp + 0x54], ecx
sub dword [esp + 0x5c], 1
add edi, 1
lea ecx, [edi*4]
add ebp, 1
add dword [esp + 0x14], ecx
mov dword [esp + 0x2c], 1
lea ebx, [ebx + ecx + 2]
jmp 0x77edb9
mov esi, dword [esp + 0x28]
add esi, dword [esp + 0x98]
cmp dword [esp + 0x14], 0
mov ecx, dword [esp + 0x30]
mov dword [esp + 0x28], esi
jl 0x77ed64
cmp esi, ecx
jl 0x77ed4e
add dword [esp + 0x64], 1
sub dword [esp + 0x60], 1
sub dword [esp + 0x70], 4
sub eax, 1
sub dword [esp + 0x28], ecx
mov ecx, dword [esp + 0x70]
mov esi, 2
sub esi, ecx
sub ebx, ecx
add dword [esp + 0x14], esi
jmp 0x77edc1
cmp esi, ecx
jl 0x77ed7e
add dword [esp + 0x64], 1
sub dword [esp + 0x60], 1
sub dword [esp + 0x70], 4
sub eax, 1
sub dword [esp + 0x28], ecx
mov ecx, dword [esp + 0x1c]
add dword [esp + 0x6c], ecx
mov ecx, dword [esp + 0x3c]
add dword [esp + 0x54], ecx
mov esi, dword [esp + 0x14]
mov ecx, 1
sub dword [esp + 0x5c], ecx
mov dword [esp + 0x2c], ecx
add edi, 1
mov ecx, edi
sub ecx, eax
add ecx, ecx
add ebp, 1
add ecx, ecx
lea ebx, [ebx + ecx + 2]
lea ecx, [esi + ecx + 2]
mov dword [esp + 0x14], ecx
mov dword [esp + 0x68], ebp
mov dword [esp + 0x34], edi
test eax, eax
mov dword [esp + 0x18], ebx
jg 0x77eab3
mov esi, dword [esp + 0x94]
mov ebx, dword [esp + 0x90]
lea ebp, [eax + ebx]
sub esi, edi
mov ecx, ebx
sub ecx, eax
xor eax, eax
cmp esi, dword [esp + 0x7c]
mov dword [esp + 0x24], ecx
setl al
xor ecx, ecx
cmp ebp, dword [esp + 0x78]
mov edi, dword [esp + 0x80]
setl cl
or eax, ecx
xor ecx, ecx
cmp esi, dword [esp + 0x84]
setg cl
or eax, ecx
xor ecx, ecx
cmp dword [esp + 0x24], edi
setg cl
or eax, ecx
mov ecx, dword [esp + 0x38]
movzx ecx, byte [esi + ecx]
or eax, ecx
jne case.0x77cf1a.5
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x78]
cmp eax, ecx
jge 0x77ee3a
mov eax, ecx
cmp ebp, edi
jle 0x77ee40
mov ebp, edi
mov ecx, dword [esp + 0x38]
mov byte [esi + ecx], 1
imul esi, dword [esp + 0x1c]
add esi, dword [esp + 0x20]
sub ebp, eax
mov ecx, edx
mov edi, edx
add ebp, 1
and ecx, 0x7e0
and edi, 0xf800
mov dword [esp + 0x40], ebp
lea esi, [esi + eax*2]
and edx, 0x1f
movzx eax, word [esi]
mov ebx, eax
and ebx, 0x7e0
mov ebp, eax
imul ebx, ecx
and ebp, 0xf800
imul ebp, edi
and eax, 0x1f
imul eax, edx
shr ebx, 0xb
shr ebp, 0x10
and ebx, 0x7e0
and ebp, 0xf800
or ebx, ebp
shr eax, 5
or ebx, eax
mov word [esi], bx
add esi, 2
sub dword [esp + 0x40], 1
jne 0x77ee70
mov eax, dword [esp + 0x38]
push eax
call fcn.0057cf76
add esp, 4
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x78
ret
mov esi, dword [esp + 0x90]
mov ebx, dword [esp + 0x98]
mov ecx, esi
add esi, ebx
sub ecx, ebx
mov dword [esp + 0x24], ecx
xor ecx, ecx
mov dword [esp + 0x44], esi
mov esi, dword [esp + 0x7c]
cmp dword [esp + 0x94], esi
mov esi, dword [esp + 0x78]
setl cl
xor ebx, ebx
cmp dword [esp + 0x44], esi
mov esi, dword [esp + 0x80]
setl bl
or ecx, ebx
xor ebx, ebx
cmp dword [esp + 0x24], esi
mov esi, dword [esp + 0x84]
setg bl
or ecx, ebx
xor ebx, ebx
cmp dword [esp + 0x94], esi
mov esi, dword [esp + 0x94]
setg bl
or ecx, ebx
mov ebx, dword [esp + 0x38]
movzx ebx, byte [ebx + esi]
or ecx, ebx
jne 0x77f039
mov ebx, dword [esp + 0x24]
mov ecx, dword [esp + 0x78]
cmp ebx, ecx
jge 0x77ef51
mov ebx, ecx
mov ecx, dword [esp + 0x44]
mov ebp, dword [esp + 0x80]
cmp ecx, ebp
jle 0x77ef62
mov ecx, ebp
mov ebp, dword [esp + 0x38]
sub ecx, ebx
add ecx, 1
mov byte [esi + ebp], 1
mov dword [esp + 0x40], ecx
mov ecx, dword [esp + 0x1c]
imul ecx, esi
add ecx, dword [esp + 0x20]
mov esi, edx
sar esi, 5
and esi, 0x3f
mov dword [esp + 0x58], esi
mov esi, edx
sar esi, 0xb
mov dword [esp + 0x54], esi
mov esi, edx
lea ecx, [ecx + ebx*2]
and esi, 0x1f
mov dword [esp + 0x2c], ecx
mov dword [esp + 0x4c], esi
movzx ecx, word [ecx]
movzx ebx, cx
mov esi, ebx
shr esi, 5
and esi, 0x3f
mov ebp, ebx
and ebx, 0x1f
mov dword [esp + 0x10], ebx
mov ebx, esi
imul ebx, dword [esp + 0x58]
shr ebp, 0xb
mov dword [esp + 0x50], ebp
mov ebp, ecx
sar ebx, 6
sub ebx, esi
mov esi, dword [esp + 0x50]
shr ebp, 5
and ebp, 0x3f
add bp, word [edi + ebx*4]
mov ebx, dword [esp + 0x54]
imul ebx, esi
sar ebx, 5
sub ebx, esi
mov si, cx
shr si, 0xb
add si, word [edi + ebx*4]
shl bp, 5
shl si, 0xb
or bp, si
mov esi, dword [esp + 0x10]
imul esi, dword [esp + 0x4c]
sar esi, 5
sub esi, dword [esp + 0x10]
and ecx, 0x1f
add cx, word [edi + esi*4]
or bp, cx
mov ecx, dword [esp + 0x2c]
mov word [ecx], bp
add ecx, 2
sub dword [esp + 0x40], 1
mov dword [esp + 0x2c], ecx
jne 0x77efa3
mov esi, dword [esp + 0x94]
mov ebp, dword [esp + 0x18]
test ebp, ebp
mov dword [esp + 0x2c], 0
jge 0x77f056
add ebp, 6
add dword [esp + 0x14], 4
jmp 0x77f0d8
cmp dword [esp + 0x14], 0
mov ecx, dword [esp + 0x98]
mov dword [esp + 0x28], ecx
jl 0x77f09e
mov ebx, dword [esp + 0x30]
cmp ecx, ebx
jl 0x77f081
lea eax, [ecx - 1]
sub ecx, ebx
mov dword [esp + 0x48], eax
mov dword [esp + 0x28], ecx
lea ecx, [eax*4]
mov ebx, 2
sub ebx, ecx
sub ebp, ecx
add dword [esp + 0x14], ebx
mov ebx, dword [esp + 0x34]
jmp 0x77f0e5
mov esi, dword [esp + 0x30]
cmp ecx, esi
jl 0x77f0b3
lea eax, [ecx - 1]
sub ecx, esi
mov dword [esp + 0x48], eax
mov dword [esp + 0x28], ecx
lea esi, [eax*4]
mov ecx, 4
sub ecx, esi
mov esi, dword [esp + 0x14]
lea ebp, [ecx + ebp + 2]
lea ecx, [esi + ecx + 2]
mov esi, dword [esp + 0x94]
mov dword [esp + 0x14], ecx
mov ebx, 1
mov dword [esp + 0x2c], ebx
mov dword [esp + 0x34], ebx
test eax, eax
mov dword [esp + 0x18], ebp
jle 0x77f4f3
lea ecx, [eax*4]
mov dword [esp + 0x70], ecx
lea ecx, [ebx + esi]
mov dword [esp + 0x5c], ecx
mov ecx, dword [esp + 0x90]
add ecx, eax
mov dword [esp + 0x60], ecx
mov ecx, dword [esp + 0x5c]
sub esi, ebx
mov dword [esp + 0x58], esi
mov dword [esp + 0x68], esi
mov esi, dword [esp + 0x1c]
imul ecx, esi
mov dword [esp + 0x6c], ecx
mov ecx, dword [esp + 0x90]
sub ecx, eax
mov dword [esp + 0x64], ecx
mov ecx, esi
neg ecx
mov dword [esp + 0x3c], ecx
mov ecx, dword [esp + 0x58]
imul ecx, esi
mov dword [esp + 0x74], ecx
lea esp, [esp]
cmp dword [esp + 0x2c], 0
je 0x77f3e7
mov ecx, dword [esp + 0x64]
mov esi, dword [esp + 0x7c]
mov dword [esp + 0x24], ecx
mov ecx, dword [esp + 0x60]
mov dword [esp + 0x44], ecx
xor ecx, ecx
cmp dword [esp + 0x5c], esi
mov esi, dword [esp + 0x80]
setl cl
xor ebx, ebx
cmp dword [esp + 0x64], esi
mov esi, dword [esp + 0x78]
setg bl
mov ebp, dword [esp + 0x38]
or ecx, ebx
xor ebx, ebx
cmp dword [esp + 0x60], esi
mov esi, dword [esp + 0x84]
setl bl
or ecx, ebx
xor ebx, ebx
cmp dword [esp + 0x5c], esi
mov esi, dword [esp + 0x5c]
setg bl
or ecx, ebx
movzx ebx, byte [esi + ebp]
or ecx, ebx
jne 0x77f2ab
mov ecx, dword [esp + 0x78]
cmp dword [esp + 0x64], ecx
jge 0x77f1cf
mov dword [esp + 0x24], ecx
jmp 0x77f1d3
mov ecx, dword [esp + 0x24]
mov eax, dword [esp + 0x80]
cmp dword [esp + 0x60], eax
jle 0x77f1e4
mov dword [esp + 0x44], eax
mov eax, dword [esp + 0x44]
sub eax, ecx
add eax, 1
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x6c]
mov byte [esi + ebp], 1
lea ebp, [eax + ecx*2]
add ebp, dword [esp + 0x20]
mov eax, edx
sar eax, 5
and eax, 0x3f
mov dword [esp + 0x58], eax
mov eax, edx
sar eax, 0xb
mov dword [esp + 0x54], eax
mov eax, edx
and eax, 0x1f
mov dword [esp + 0x4c], eax
mov edi, edi
movzx ecx, word [ebp]
movzx eax, cx
mov esi, eax
mov ebx, eax
and eax, 0x1f
mov dword [esp + 0x10], eax
shr esi, 5
and esi, 0x3f
mov eax, esi
imul eax, dword [esp + 0x58]
sar eax, 6
sub eax, esi
shr ebx, 0xb
mov esi, ecx
shr esi, 5
and esi, 0x3f
add si, word [edi + eax*4]
mov dword [esp + 0x50], ebx
mov eax, ebx
mov ebx, dword [esp + 0x54]
imul ebx, eax
sar ebx, 5
sub ebx, eax
mov ax, cx
shr ax, 0xb
add ax, word [edi + ebx*4]
shl si, 5
shl ax, 0xb
or si, ax
mov eax, dword [esp + 0x10]
imul eax, dword [esp + 0x4c]
sar eax, 5
sub eax, dword [esp + 0x10]
and ecx, 0x1f
add cx, word [edi + eax*4]
add ebp, 2
or si, cx
sub dword [esp + 0x40], 1
mov word [ebp - 2], si
jne 0x77f220
mov eax, dword [esp + 0x48]
mov esi, dword [esp + 0x68]
xor ecx, ecx
cmp esi, dword [esp + 0x7c]
mov esi, dword [esp + 0x84]
setl cl
xor ebx, ebx
cmp dword [esp + 0x68], esi
mov esi, dword [esp + 0x78]
setg bl
mov ebp, dword [esp + 0x38]
or ecx, ebx
xor ebx, ebx
cmp dword [esp + 0x44], esi
mov esi, dword [esp + 0x80]
setl bl
or ecx, ebx
xor ebx, ebx
cmp dword [esp + 0x24], esi
mov esi, dword [esp + 0x68]
setg bl
or ecx, ebx
movzx ebx, byte [esi + ebp]
or ecx, ebx
jne 0x77f3df
mov ecx, dword [esp + 0x24]
mov eax, dword [esp + 0x78]
cmp ecx, eax
jge 0x77f30d
mov ecx, eax
mov eax, dword [esp + 0x44]
mov ebx, dword [esp + 0x80]
cmp eax, ebx
jle 0x77f31e
mov eax, ebx
sub eax, ecx
add eax, 1
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x74]
mov byte [esi + ebp], 1
lea ebp, [eax + ecx*2]
add ebp, dword [esp + 0x20]
mov eax, edx
sar eax, 5
and eax, 0x3f
mov dword [esp + 0x58], eax
mov eax, edx
sar eax, 0xb
mov dword [esp + 0x54], eax
mov eax, edx
and eax, 0x1f
mov dword [esp + 0x4c], eax
movzx ecx, word [ebp]
movzx eax, cx
mov esi, eax
mov ebx, eax
and eax, 0x1f
mov dword [esp + 0x10], eax
shr esi, 5
and esi, 0x3f
mov eax, esi
imul eax, dword [esp + 0x58]
sar eax, 6
sub eax, esi
shr ebx, 0xb
mov esi, ecx
shr esi, 5
and esi, 0x3f
add si, word [edi + eax*4]
mov dword [esp + 0x50], ebx
mov eax, ebx
mov ebx, dword [esp + 0x54]
imul ebx, eax
sar ebx, 5
sub ebx, eax
mov ax, cx
shr ax, 0xb
add ax, word [edi + ebx*4]
shl si, 5
shl ax, 0xb
or si, ax
mov eax, dword [esp + 0x10]
imul eax, dword [esp + 0x4c]
sar eax, 5
sub eax, dword [esp + 0x10]
and ecx, 0x1f
add cx, word [edi + eax*4]
add ebp, 2
or si, cx
sub dword [esp + 0x40], 1
mov word [ebp - 2], si
jne 0x77f354
mov eax, dword [esp + 0x48]
mov ebx, dword [esp + 0x34]
mov ebp, dword [esp + 0x18]
test ebp, ebp
mov dword [esp + 0x2c], 0
jge 0x77f42f
sub dword [esp + 0x68], 1
mov ecx, 1
add dword [esp + 0x5c], ecx
add ebx, ecx
mov dword [esp + 0x2c], ecx
mov ecx, dword [esp + 0x1c]
add dword [esp + 0x6c], ecx
mov ecx, dword [esp + 0x3c]
add dword [esp + 0x74], ecx
lea ecx, [ebx*4]
add dword [esp + 0x14], ecx
lea ebp, [ecx + ebp + 2]
jmp 0x77f4dc
mov esi, dword [esp + 0x28]
add esi, dword [esp + 0x98]
cmp dword [esp + 0x14], 0
mov ecx, dword [esp + 0x30]
mov dword [esp + 0x28], esi
jl 0x77f481
cmp esi, ecx
jl 0x77f46b
add dword [esp + 0x64], 1
sub dword [esp + 0x60], 1
sub dword [esp + 0x70], 4
sub eax, 1
sub dword [esp + 0x28], ecx
mov dword [esp + 0x48], eax
mov ecx, dword [esp + 0x70]
mov esi, 2
sub esi, ecx
sub ebp, ecx
add dword [esp + 0x14], esi
jmp 0x77f4e0
cmp esi, ecx
jl 0x77f49f
add dword [esp + 0x64], 1
sub dword [esp + 0x60], 1
sub dword [esp + 0x70], 4
sub eax, 1
sub dword [esp + 0x28], ecx
mov dword [esp + 0x48], eax
mov ecx, dword [esp + 0x1c]
add dword [esp + 0x6c], ecx
mov ecx, dword [esp + 0x3c]
add dword [esp + 0x74], ecx
add dword [esp + 0x5c], 1
mov esi, dword [esp + 0x14]
mov ecx, 1
sub dword [esp + 0x68], ecx
mov dword [esp + 0x2c], ecx
add ebx, 1
mov ecx, ebx
sub ecx, eax
add ecx, ecx
add ecx, ecx
lea ebp, [ecx + ebp + 2]
lea ecx, [esi + ecx + 2]
mov dword [esp + 0x14], ecx
mov dword [esp + 0x34], ebx
test eax, eax
mov dword [esp + 0x18], ebp
jg 0x77f150
mov esi, dword [esp + 0x94]
mov ebp, dword [esp + 0x90]
sub esi, ebx
mov ecx, ebp
sub ecx, eax
add ebp, eax
xor eax, eax
cmp esi, dword [esp + 0x7c]
mov dword [esp + 0x24], ecx
setl al
xor ecx, ecx
cmp ebp, dword [esp + 0x78]
mov dword [esp + 0x44], ebp
mov ebp, dword [esp + 0x24]
setl cl
or eax, ecx
xor ecx, ecx
cmp esi, dword [esp + 0x84]
setg cl
xor ebx, ebx
or eax, ecx
mov ecx, dword [esp + 0x80]
cmp ebp, ecx
setg bl
or eax, ebx
mov ebx, dword [esp + 0x38]
movzx ebx, byte [esi + ebx]
or eax, ebx
jne case.0x77cf1a.5
mov eax, dword [esp + 0x78]
cmp ebp, eax
jge 0x77f55a
mov ebp, eax
mov eax, dword [esp + 0x44]
cmp eax, ecx
jle 0x77f564
mov eax, ecx
mov ecx, dword [esp + 0x38]
mov byte [esi + ecx], 1
imul esi, dword [esp + 0x1c]
add esi, dword [esp + 0x20]
sub eax, ebp
add eax, 1
lea esi, [esi + ebp*2]
mov ebp, edx
mov dword [esp + 0x40], eax
sar ebp, 5
mov eax, edx
sar eax, 0xb
and ebp, 0x3f
and edx, 0x1f
mov dword [esp + 0x2c], esi
mov dword [esp + 0x54], eax
mov dword [esp + 0x4c], edx
lea ecx, [ecx]
movzx eax, word [esi]
movzx esi, ax
mov ecx, esi
shr ecx, 5
and ecx, 0x3f
mov edx, ecx
imul edx, ebp
sar edx, 6
sub edx, ecx
mov ecx, eax
shr ecx, 5
and ecx, 0x3f
add cx, word [edi + edx*4]
mov edx, dword [esp + 0x54]
mov ebx, esi
shr ebx, 0xb
imul edx, ebx
sar edx, 5
sub edx, ebx
mov bx, ax
and esi, 0x1f
shr bx, 0xb
add bx, word [edi + edx*4]
mov edx, esi
imul edx, dword [esp + 0x4c]
sar edx, 5
sub edx, esi
mov esi, dword [esp + 0x2c]
shl cx, 5
and eax, 0x1f
add ax, word [edi + edx*4]
shl bx, 0xb
or cx, bx
or cx, ax
mov word [esi], cx
add esi, 2
sub dword [esp + 0x40], 1
mov dword [esp + 0x2c], esi
jne 0x77f5a0
mov eax, dword [esp + 0x38]
push eax
call fcn.0057cf76
add esp, 4
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x78
ret
mov esi, dword [esp + 0x90]
mov ebx, dword [esp + 0x98]
mov ecx, esi
add esi, ebx
sub ecx, ebx
mov dword [esp + 0x44], esi
mov esi, dword [esp + 0x7c]
mov dword [esp + 0x24], ecx
xor ecx, ecx
cmp dword [esp + 0x94], esi
mov esi, dword [esp + 0x78]
setl cl
xor ebx, ebx
cmp dword [esp + 0x44], esi
mov esi, dword [esp + 0x80]
setl bl
mov ebp, dword [esp + 0x94]
or ecx, ebx
xor ebx, ebx
cmp dword [esp + 0x24], esi
mov esi, dword [esp + 0x84]
setg bl
or ecx, ebx
xor ebx, ebx
cmp dword [esp + 0x94], esi
mov esi, dword [esp + 0x38]
movzx esi, byte [esi + ebp]
setg bl
or ecx, ebx
or ecx, esi
jne 0x77f786
mov esi, dword [esp + 0x24]
mov ecx, dword [esp + 0x78]
cmp esi, ecx
jge 0x77f6b5
mov esi, ecx
mov ecx, dword [esp + 0x44]
mov ebx, dword [esp + 0x80]
cmp ecx, ebx
jle 0x77f6c6
mov ecx, ebx
sub ecx, esi
mov ebx, dword [esp + 0x38]
add ecx, 1
mov dword [esp + 0x40], ecx
mov ecx, dword [esp + 0x1c]
imul ecx, ebp
add ecx, dword [esp + 0x20]
mov byte [ebx + ebp], 1
lea ecx, [ecx + esi*2]
mov esi, edx
not esi
movzx esi, si
mov ebx, esi
shr ebx, 5
mov ebp, esi
and ebx, 0x3f
shr ebp, 0xb
and esi, 0x1f
mov dword [esp + 0x2c], ecx
mov dword [esp + 0x54], ebx
mov dword [esp + 0x58], ebp
mov dword [esp + 0x50], esi
jmp 0x77f714
mov ebx, dword [esp + 0x54]
movzx ecx, word [ecx]
movzx esi, cx
mov ebp, esi
shr ebp, 5
and ebp, 0x3f
sub ebx, ebp
mov ebp, ecx
shr ebp, 5
mov dword [esp + 0x44], esi
and ebp, 0x3f
add bp, word [edi + ebx*4]
mov ebx, dword [esp + 0x58]
shr esi, 0xb
sub ebx, esi
mov si, cx
shr si, 0xb
add si, word [edi + ebx*4]
mov ebx, dword [esp + 0x50]
shl si, 0xb
shl bp, 5
or bp, si
mov esi, dword [esp + 0x44]
and esi, 0x1f
and ecx, 0x1f
sub ebx, esi
add cx, word [edi + ebx*4]
or bp, cx
mov ecx, dword [esp + 0x2c]
mov word [ecx], bp
add ecx, 2
sub dword [esp + 0x40], 1
mov dword [esp + 0x2c], ecx
jne 0x77f710
mov ebp, dword [esp + 0x94]
mov esi, dword [esp + 0x18]
test esi, esi
mov dword [esp + 0x2c], 0
jge 0x77f7a3
add esi, 6
add dword [esp + 0x14], 4
jmp 0x77f821
cmp dword [esp + 0x14], 0
mov ecx, dword [esp + 0x98]
mov ebx, dword [esp + 0x30]
mov dword [esp + 0x28], ecx
jl 0x77f7eb
cmp ecx, ebx
jl 0x77f7ce
lea eax, [ecx - 1]
sub ecx, ebx
mov dword [esp + 0x48], eax
mov dword [esp + 0x28], ecx
lea ecx, [eax*4]
mov ebx, 2
sub ebx, ecx
sub esi, ecx
add dword [esp + 0x14], ebx
mov ebx, dword [esp + 0x34]
jmp 0x77f82e
cmp ecx, ebx
jl 0x77f7fc
lea eax, [ecx - 1]
sub ecx, ebx
mov dword [esp + 0x48], eax
mov dword [esp + 0x28], ecx
lea ebp, [eax*4]
mov ecx, 4
sub ecx, ebp
mov ebp, dword [esp + 0x14]
lea esi, [esi + ecx + 2]
lea ecx, [ecx + ebp + 2]
mov ebp, dword [esp + 0x94]
mov dword [esp + 0x14], ecx
mov ebx, 1
mov dword [esp + 0x2c], ebx
mov dword [esp + 0x34], ebx
test eax, eax
mov dword [esp + 0x18], esi
jle 0x77fc04
lea ecx, [eax*4]
mov dword [esp + 0x74], ecx
lea ecx, [ebx + ebp]
mov dword [esp + 0x64], ecx
mov ecx, dword [esp + 0x90]
add ecx, eax
mov dword [esp + 0x68], ecx
mov ecx, dword [esp + 0x64]
sub ebp, ebx
mov dword [esp + 0x58], ebp
mov dword [esp + 0x60], ebp
mov ebp, dword [esp + 0x1c]
imul ecx, ebp
mov dword [esp + 0x70], ecx
mov ecx, dword [esp + 0x90]
sub ecx, eax
mov dword [esp + 0x5c], ecx
mov ecx, ebp
neg ecx
mov dword [esp + 0x3c], ecx
mov ecx, dword [esp + 0x58]
imul ecx, ebp
mov dword [esp + 0x6c], ecx
cmp dword [esp + 0x2c], 0
je 0x77faf8
mov ecx, dword [esp + 0x64]
mov ebp, dword [esp + 0x5c]
mov esi, dword [esp + 0x68]
mov ebx, dword [esp + 0x78]
xor eax, eax
cmp ecx, dword [esp + 0x7c]
mov dword [esp + 0x24], ebp
setl al
xor ecx, ecx
cmp ebp, dword [esp + 0x80]
mov ebp, dword [esp + 0x64]
setg cl
mov dword [esp + 0x44], esi
or eax, ecx
xor ecx, ecx
cmp esi, ebx
setl cl
or eax, ecx
xor ecx, ecx
cmp ebp, dword [esp + 0x84]
setg cl
or eax, ecx
mov ecx, dword [esp + 0x38]
movzx ebx, byte [ecx + ebp]
or eax, ebx
jne 0x77f9d0
mov eax, dword [esp + 0x78]
cmp dword [esp + 0x5c], eax
jge 0x77f907
mov dword [esp + 0x24], eax
jmp 0x77f90b
mov eax, dword [esp + 0x24]
mov ebx, dword [esp + 0x80]
cmp dword [esp + 0x68], ebx
jle 0x77f91e
mov esi, ebx
mov dword [esp + 0x44], ebx
mov byte [ecx + ebp], 1
mov ecx, dword [esp + 0x70]
sub esi, eax
lea eax, [ecx + eax*2]
add eax, dword [esp + 0x20]
mov ecx, edx
not ecx
movzx ecx, cx
mov ebx, ecx
shr ebx, 5
mov ebp, ecx
add esi, 1
and ebx, 0x3f
shr ebp, 0xb
and ecx, 0x1f
mov dword [esp + 0x40], esi
mov dword [esp + 0x2c], eax
mov dword [esp + 0x54], ebx
mov dword [esp + 0x58], ebp
mov dword [esp + 0x50], ecx
jmp 0x77f968
mov ebp, dword [esp + 0x58]
mov ebx, dword [esp + 0x54]
movzx ecx, word [eax]
movzx esi, cx
mov eax, esi
shr eax, 5
and eax, 0x3f
sub ebx, eax
mov eax, ecx
shr eax, 5
and eax, 0x3f
add ax, word [edi + ebx*4]
mov ebx, esi
shr ebx, 0xb
sub ebp, ebx
mov bx, cx
shr bx, 0xb
add bx, word [edi + ebp*4]
shl ax, 5
shl bx, 0xb
or ax, bx
mov ebx, dword [esp + 0x50]
and esi, 0x1f
sub ebx, esi
and ecx, 0x1f
add cx, word [edi + ebx*4]
or ax, cx
mov bx, ax
mov eax, dword [esp + 0x2c]
mov word [eax], bx
add eax, 2
sub dword [esp + 0x40], 1
mov dword [esp + 0x2c], eax
jne 0x77f960
mov esi, dword [esp + 0x44]
mov ebp, dword [esp + 0x60]
xor ecx, ecx
cmp ebp, dword [esp + 0x7c]
mov ebx, dword [esp + 0x60]
setl cl
xor eax, eax
cmp ebp, dword [esp + 0x84]
mov ebp, dword [esp + 0x24]
setg al
or ecx, eax
xor eax, eax
cmp esi, dword [esp + 0x78]
setl al
or ecx, eax
xor eax, eax
cmp ebp, dword [esp + 0x80]
setg al
or ecx, eax
mov eax, dword [esp + 0x38]
movzx ebx, byte [ebx + eax]
or ecx, ebx
jne 0x77faec
mov ecx, dword [esp + 0x78]
cmp ebp, ecx
jge 0x77fa26
mov ebp, ecx
mov ecx, dword [esp + 0x80]
cmp esi, ecx
jle 0x77fa33
mov esi, ecx
mov ecx, dword [esp + 0x60]
mov byte [ecx + eax], 1
mov eax, dword [esp + 0x6c]
mov ecx, edx
not ecx
movzx ecx, cx
sub esi, ebp
lea eax, [eax + ebp*2]
add eax, dword [esp + 0x20]
mov ebx, ecx
shr ebx, 5
mov ebp, ecx
add esi, 1
and ebx, 0x3f
shr ebp, 0xb
and ecx, 0x1f
mov dword [esp + 0x40], esi
mov dword [esp + 0x2c], eax
mov dword [esp + 0x54], ebx
mov dword [esp + 0x58], ebp
mov dword [esp + 0x50], ecx
jmp 0x77fa88
mov ebp, dword [esp + 0x58]
mov ebx, dword [esp + 0x54]
movzx ecx, word [eax]
movzx esi, cx
mov eax, esi
shr eax, 5
and eax, 0x3f
sub ebx, eax
mov eax, ecx
shr eax, 5
and eax, 0x3f
add ax, word [edi + ebx*4]
mov ebx, esi
shr ebx, 0xb
sub ebp, ebx
mov bx, cx
shr bx, 0xb
add bx, word [edi + ebp*4]
shl ax, 5
shl bx, 0xb
or ax, bx
mov ebx, dword [esp + 0x50]
and esi, 0x1f
sub ebx, esi
and ecx, 0x1f
add cx, word [edi + ebx*4]
or ax, cx
mov bx, ax
mov eax, dword [esp + 0x2c]
mov word [eax], bx
add eax, 2
sub dword [esp + 0x40], 1
mov dword [esp + 0x2c], eax
jne 0x77fa80
mov ebx, dword [esp + 0x34]
mov eax, dword [esp + 0x48]
mov esi, dword [esp + 0x18]
test esi, esi
mov dword [esp + 0x2c], 0
jge 0x77fb40
sub dword [esp + 0x60], 1
mov ecx, 1
add dword [esp + 0x64], ecx
add ebx, ecx
mov dword [esp + 0x2c], ecx
mov ecx, dword [esp + 0x1c]
add dword [esp + 0x70], ecx
mov ecx, dword [esp + 0x3c]
add dword [esp + 0x6c], ecx
lea ecx, [ebx*4]
add dword [esp + 0x14], ecx
lea esi, [esi + ecx + 2]
jmp 0x77fbed
mov ebp, dword [esp + 0x28]
add ebp, dword [esp + 0x98]
cmp dword [esp + 0x14], 0
mov ecx, dword [esp + 0x30]
mov dword [esp + 0x28], ebp
jl 0x77fb92
cmp ebp, ecx
jl 0x77fb7c
add dword [esp + 0x5c], 1
sub dword [esp + 0x68], 1
sub dword [esp + 0x74], 4
sub eax, 1
sub dword [esp + 0x28], ecx
mov dword [esp + 0x48], eax
mov ecx, dword [esp + 0x74]
mov ebp, 2
sub ebp, ecx
sub esi, ecx
add dword [esp + 0x14], ebp
jmp 0x77fbf1
cmp ebp, ecx
jl 0x77fbb0
add dword [esp + 0x5c], 1
sub dword [esp + 0x68], 1
sub dword [esp + 0x74], 4
sub eax, 1
sub dword [esp + 0x28], ecx
mov dword [esp + 0x48], eax
mov ecx, dword [esp + 0x1c]
add dword [esp + 0x70], ecx
mov ecx, dword [esp + 0x3c]
add dword [esp + 0x6c], ecx
add dword [esp + 0x64], 1
mov ebp, dword [esp + 0x14]
mov ecx, 1
sub dword [esp + 0x60], ecx
mov dword [esp + 0x2c], ecx
add ebx, 1
mov ecx, ebx
sub ecx, eax
add ecx, ecx
add ecx, ecx
lea esi, [esi + ecx + 2]
lea ecx, [ecx + ebp + 2]
mov dword [esp + 0x14], ecx
mov dword [esp + 0x34], ebx
test eax, eax
mov dword [esp + 0x18], esi
jg 0x77f892
mov ebp, dword [esp + 0x94]
mov esi, dword [esp + 0x90]
sub ebp, ebx
xor ebx, ebx
mov ecx, esi
sub ecx, eax
add eax, esi
mov esi, ebp
cmp esi, dword [esp + 0x7c]
mov dword [esp + 0x24], ecx
setl bl
mov ebp, dword [esp + 0x24]
xor ecx, ecx
cmp eax, dword [esp + 0x78]
mov dword [esp + 0x44], eax
setl cl
xor eax, eax
or ebx, ecx
cmp esi, dword [esp + 0x84]
setg al
xor ecx, ecx
or ebx, eax
cmp ebp, dword [esp + 0x80]
setg cl
or ebx, ecx
mov ecx, dword [esp + 0x38]
movzx eax, byte [esi + ecx]
or ebx, eax
jne case.0x77cf1a.5
mov eax, dword [esp + 0x78]
cmp ebp, eax
jge 0x77fc6b
mov ebp, eax
mov eax, dword [esp + 0x44]
mov ebx, dword [esp + 0x80]
cmp eax, ebx
jle 0x77fc7c
mov eax, ebx
sub eax, ebp
mov byte [esi + ecx], 1
imul esi, dword [esp + 0x1c]
add esi, dword [esp + 0x20]
add eax, 1
not edx
mov dword [esp + 0x40], eax
movzx eax, dx
mov edx, eax
shr edx, 5
mov ebx, eax
and edx, 0x3f
shr ebx, 0xb
and eax, 0x1f
lea esi, [esi + ebp*2]
mov dword [esp + 0x54], edx
mov dword [esp + 0x58], ebx
mov dword [esp + 0x50], eax
jmp 0x77fcc8
mov ebx, dword [esp + 0x58]
mov edx, dword [esp + 0x54]
movzx eax, word [esi]
movzx ecx, ax
mov ebp, ecx
shr ebp, 5
and ebp, 0x3f
sub edx, ebp
mov ebp, eax
shr ebp, 5
and ebp, 0x3f
add bp, word [edi + edx*4]
mov edx, ecx
shr edx, 0xb
sub ebx, edx
mov dx, ax
shr dx, 0xb
add dx, word [edi + ebx*4]
shl bp, 5
shl dx, 0xb
or bp, dx
mov edx, dword [esp + 0x50]
and ecx, 0x1f
sub edx, ecx
and eax, 0x1f
add ax, word [edi + edx*4]
add esi, 2
or bp, ax
sub dword [esp + 0x40], 1
mov word [esi - 2], bp
jne 0x77fcc0
mov eax, dword [esp + 0x38]
push eax
call fcn.0057cf76
add esp, 4
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x78
ret
cmp ebx, ebp
lea ecx, [ebx + ebx]
jl 0x785cfd
mov eax, ebx
imul eax, ebx
cdq
idiv dword [esp + 0x9c]
mov edx, ebx
mov ebx, ecx
mov ecx, 3
sub ecx, ebx
mov dword [esp + 0x18], ecx
mov ecx, dword [esp + 0x98]
add ecx, ecx
add ecx, ecx
mov ebx, ecx
mov ecx, 3
sub ecx, ebx
mov dword [esp + 0x14], ecx
mov ecx, dword [esp + 0x74]
mov ecx, dword [ecx + 0x1c]
xor ebp, ebp
mov dword [esp + 0x30], eax
xor eax, eax
sub ecx, ebp
mov dword [esp + 0x28], eax
je 0x782a8b
sub ecx, 1
jne case.0x789050.5
mov ecx, dword [0xb160d4]
and ecx, 0xffffff
cmp ecx, 0xffffff
je 0x77fe10
movzx ebx, byte [esp + 0xa2]
movzx ecx, byte [0xb160d6]
movzx edi, byte [0xb160d5]
imul ebx, ecx
movzx ecx, byte [esp + 0xa1]
mov dword [esp + 0x74], ecx
imul ecx, edi
movzx edi, byte [0xb160d4]
sar ecx, 8
mov byte [esp + 0xa1], cl
movzx ecx, byte [esp + 0xa0]
mov dword [esp + 0x74], ecx
imul ecx, edi
sar ebx, 8
sar ecx, 8
mov byte [esp + 0xa2], bl
mov byte [esp + 0xa0], cl
jmp 0x77fe17
mov bl, byte [esp + 0xa2]
mov ecx, dword [0xb160b4]
cmp ecx, 0xb
ja case.0x789050.5
jmp dword [ecx*4 + 0x78c7c4]
mov ecx, dword [0xb160b8]
cmp ecx, 0xff
jne 0x7802b7
mov esi, dword [esp + 0x90]
mov ebx, dword [esp + 0x78]
mov edi, dword [esp + 0x80]
sub edi, ebx
mov ecx, esi
sub ecx, dword [esp + 0x98]
mov dword [esp + 0x34], edi
mov edi, ecx
sub edi, ebx
cmp edi, dword [esp + 0x34]
ja 0x77fea2
mov edi, dword [esp + 0x84]
mov ebx, dword [esp + 0x94]
sub edi, dword [esp + 0x7c]
sub ebx, dword [esp + 0x7c]
cmp ebx, edi
ja 0x77fea2
mov edi, dword [esp + 0x1c]
imul edi, dword [esp + 0x94]
add edi, dword [esp + 0x20]
mov ebx, dword [esp + 0xa0]
mov dword [edi + ecx*4], ebx
mov ecx, dword [esp + 0x98]
add ecx, esi
sub ecx, dword [esp + 0x78]
cmp ecx, dword [esp + 0x34]
ja 0x77fef6
mov ecx, dword [esp + 0x7c]
mov edi, dword [esp + 0x84]
mov ebx, dword [esp + 0x94]
sub edi, ecx
sub ebx, ecx
cmp ebx, edi
ja 0x77fef6
mov edi, dword [esp + 0x1c]
imul edi, dword [esp + 0x94]
add edi, dword [esp + 0x20]
mov ecx, dword [esp + 0x98]
mov ebx, dword [esp + 0xa0]
add ecx, esi
mov dword [edi + ecx*4], ebx
mov ebx, dword [esp + 0x18]
test ebx, ebx
mov dword [esp + 0x2c], 0
jge 0x77ff3c
mov eax, dword [esp + 0x9c]
mov edi, dword [esp + 0x30]
cmp eax, edi
jl 0x77ff24
mov ebp, 1
sub eax, edi
mov dword [esp + 0x2c], ebp
lea ecx, [ebp*4]
add dword [esp + 0x14], ecx
lea ebx, [ebx + ecx + 2]
mov dword [esp + 0x18], ebx
jmp 0x77ffa8
mov edx, dword [esp + 0x98]
add edx, 0xffffffff
cmp dword [esp + 0x14], 0
mov dword [esp + 0x2c], 1
jl 0x77ff76
lea ecx, [edx*4]
mov edi, 2
sub edi, ecx
sub ebx, ecx
add dword [esp + 0x14], edi
mov edi, dword [esp + 0x30]
mov dword [esp + 0x18], ebx
jmp 0x77ffa8
mov eax, dword [esp + 0x9c]
mov edi, dword [esp + 0x30]
cmp eax, edi
jl 0x77ff8c
mov ebp, 1
sub eax, edi
mov ecx, ebp
sub ecx, edx
add ecx, ecx
add ecx, ecx
lea ebx, [ebx + ecx + 2]
mov dword [esp + 0x18], ebx
mov ebx, dword [esp + 0x14]
lea ecx, [ebx + ecx + 2]
mov dword [esp + 0x14], ecx
test edx, edx
jle 0x780222
lea ecx, [edx*4]
mov dword [esp + 0x74], ecx
lea ecx, [edx + esi]
add ecx, ecx
add ecx, ecx
mov dword [esp + 0x60], ecx
mov ebx, dword [esp + 0x94]
mov ecx, edx
sub ecx, dword [esp + 0x78]
add ecx, esi
mov dword [esp + 0x64], ecx
mov ecx, dword [esp + 0x94]
add ecx, ebp
imul ecx, dword [esp + 0x1c]
mov dword [esp + 0x58], ecx
mov ecx, ebp
sub ecx, dword [esp + 0x7c]
add ecx, ebx
mov dword [esp + 0x5c], ecx
mov ecx, dword [esp + 0x1c]
neg ecx
mov dword [esp + 0x3c], ecx
mov ecx, ebx
sub ecx, dword [esp + 0x7c]
sub ecx, ebp
mov dword [esp + 0x50], ecx
mov ecx, esi
sub ecx, dword [esp + 0x78]
sub esi, edx
sub ecx, edx
mov dword [esp + 0x68], ecx
mov ecx, ebx
sub ecx, ebp
imul ecx, dword [esp + 0x1c]
add esi, esi
mov dword [esp + 0x54], ecx
add esi, esi
lea esp, [esp]
cmp dword [esp + 0x2c], 0
mov ebx, 1
je 0x780121
mov ecx, dword [esp + 0x34]
cmp dword [esp + 0x68], ecx
ja 0x780073
mov ecx, dword [esp + 0x84]
sub ecx, dword [esp + 0x7c]
cmp dword [esp + 0x5c], ecx
ja 0x780073
mov ecx, dword [esp + 0x58]
mov edi, dword [esp + 0xa0]
mov ebx, dword [esp + 0x20]
add ecx, esi
mov dword [ecx + ebx], edi
mov edi, dword [esp + 0x30]
mov ecx, dword [esp + 0x34]
cmp dword [esp + 0x64], ecx
ja 0x7800ae
mov ecx, dword [esp + 0x84]
sub ecx, dword [esp + 0x7c]
cmp dword [esp + 0x5c], ecx
ja 0x7800ae
mov edi, dword [esp + 0x60]
mov ecx, dword [esp + 0x58]
mov ebx, dword [esp + 0x20]
add ecx, edi
mov edi, dword [esp + 0xa0]
mov dword [ecx + ebx], edi
mov edi, dword [esp + 0x30]
mov ecx, dword [esp + 0x34]
cmp dword [esp + 0x68], ecx
ja 0x7800e1
mov ecx, dword [esp + 0x84]
sub ecx, dword [esp + 0x7c]
cmp dword [esp + 0x50], ecx
ja 0x7800e1
mov ecx, dword [esp + 0x54]
mov edi, dword [esp + 0xa0]
mov ebx, dword [esp + 0x20]
add ecx, esi
mov dword [ecx + ebx], edi
mov edi, dword [esp + 0x30]
mov ecx, dword [esp + 0x34]
cmp dword [esp + 0x64], ecx
ja 0x78011c
mov ecx, dword [esp + 0x84]
sub ecx, dword [esp + 0x7c]
cmp dword [esp + 0x50], ecx
ja 0x78011c
mov edi, dword [esp + 0x60]
mov ecx, dword [esp + 0x54]
mov ebx, dword [esp + 0x20]
add ecx, edi
mov edi, dword [esp + 0xa0]
mov dword [ecx + ebx], edi
mov edi, dword [esp + 0x30]
mov ebx, 1
cmp dword [esp + 0x18], 0
mov dword [esp + 0x2c], 0
jge 0x780180
add eax, dword [esp + 0x9c]
cmp eax, edi
jl 0x780164
mov ecx, dword [esp + 0x1c]
add dword [esp + 0x58], ecx
mov ecx, dword [esp + 0x3c]
add dword [esp + 0x54], ecx
add dword [esp + 0x5c], ebx
mov ecx, 1
sub dword [esp + 0x50], ecx
add ebp, ebx
sub eax, edi
mov dword [esp + 0x2c], ecx
mov ebx, dword [esp + 0x18]
lea ecx, [ebp*4]
add dword [esp + 0x14], ecx
lea ebx, [ebx + ecx + 2]
mov dword [esp + 0x18], ebx
jmp 0x780213
add dword [esp + 0x68], ebx
sub dword [esp + 0x64], ebx
sub edx, ebx
cmp dword [esp + 0x14], 0
mov dword [esp + 0x2c], ebx
jl 0x7801bc
mov ecx, dword [esp + 0x74]
sub dword [esp + 0x60], 4
sub ecx, 4
sub dword [esp + 0x18], ecx
mov ebx, 2
sub ebx, ecx
add esi, 4
add dword [esp + 0x14], ebx
mov dword [esp + 0x74], ecx
jmp 0x780213
add eax, dword [esp + 0x9c]
mov ecx, 4
sub dword [esp + 0x60], ecx
sub dword [esp + 0x74], ecx
add esi, ecx
cmp eax, edi
jl 0x7801f3
mov ecx, dword [esp + 0x1c]
add dword [esp + 0x58], ecx
mov ecx, dword [esp + 0x3c]
add dword [esp + 0x5c], ebx
add dword [esp + 0x54], ecx
sub dword [esp + 0x50], 1
add ebp, ebx
sub eax, edi
mov ebx, dword [esp + 0x18]
mov ecx, ebp
sub ecx, edx
add ecx, ecx
add ecx, ecx
lea ebx, [ebx + ecx + 2]
mov dword [esp + 0x18], ebx
mov ebx, dword [esp + 0x14]
lea ecx, [ebx + ecx + 2]
mov dword [esp + 0x14], ecx
test edx, edx
jg 0x780030
mov esi, dword [esp + 0x90]
mov eax, dword [esp + 0x94]
lea ecx, [edx + esi]
sub ecx, dword [esp + 0x78]
sub eax, ebp
cmp ecx, dword [esp + 0x34]
mov ecx, dword [esp + 0x7c]
ja 0x78026b
mov ebx, dword [esp + 0x84]
mov edi, eax
sub edi, ecx
sub ebx, ecx
cmp edi, ebx
ja 0x78026b
imul eax, dword [esp + 0x1c]
add eax, dword [esp + 0x20]
mov edi, dword [esp + 0xa0]
lea ecx, [edx + esi]
mov dword [eax + ecx*4], edi
mov ecx, dword [esp + 0x7c]
sub esi, edx
mov edx, dword [esp + 0x94]
mov eax, esi
sub eax, dword [esp + 0x78]
add ebp, edx
cmp eax, dword [esp + 0x34]
ja case.0x789050.5
mov eax, dword [esp + 0x84]
mov edx, ebp
sub edx, ecx
sub eax, ecx
cmp edx, eax
ja case.0x789050.5
imul ebp, dword [esp + 0x1c]
add ebp, dword [esp + 0x20]
mov eax, dword [esp + 0xa0]
pop edi
mov dword [ebp + esi*4], eax
pop esi
pop ebp
pop ebx
add esp, 0x78
ret
test ecx, ecx
je case.0x789050.5
mov ecx, dword [esp + 0x90]
sub ecx, dword [esp + 0x98]
mov edi, dword [esp + 0x78]
mov esi, dword [esp + 0x80]
mov dword [esp + 0x24], ecx
sub esi, edi
sub ecx, edi
cmp ecx, esi
mov dword [esp + 0x34], esi
ja 0x78037f
mov ecx, dword [esp + 0x7c]
mov esi, dword [esp + 0x84]
mov edi, dword [esp + 0x94]
sub esi, ecx
sub edi, ecx
cmp edi, esi
ja 0x78037b
mov ecx, dword [esp + 0x1c]
imul ecx, dword [esp + 0x94]
add ecx, dword [esp + 0x20]
mov esi, dword [esp + 0x24]
movzx edi, byte [ecx + esi*4]
lea esi, [ecx + esi*4]
movzx ecx, byte [esp + 0xa0]
sub ecx, edi
imul ecx, dword [0xb160b8]
shl edi, 8
add ecx, edi
sar ecx, 8
mov byte [esi], cl
movzx edi, byte [esi + 1]
movzx ecx, byte [esp + 0xa1]
sub ecx, edi
imul ecx, dword [0xb160b8]
shl edi, 8
add ecx, edi
sar ecx, 8
mov byte [esi + 1], cl
movzx edi, byte [esi + 2]
movzx ecx, bl
sub ecx, edi
imul ecx, dword [0xb160b8]
shl edi, 8
add ecx, edi
sar ecx, 8
mov byte [esi + 2], cl
mov esi, dword [esp + 0x34]
mov ecx, dword [esp + 0x98]
mov edi, dword [esp + 0x90]
add ecx, edi
mov dword [esp + 0x24], ecx
sub ecx, dword [esp + 0x78]
cmp ecx, esi
ja 0x78042e
mov ecx, dword [esp + 0x7c]
mov esi, dword [esp + 0x84]
mov edi, dword [esp + 0x94]
sub esi, ecx
sub edi, ecx
cmp edi, esi
ja 0x78042e
mov ecx, dword [esp + 0x1c]
imul ecx, dword [esp + 0x94]
add ecx, dword [esp + 0x20]
mov esi, dword [esp + 0x24]
movzx edi, byte [ecx + esi*4]
lea esi, [ecx + esi*4]
movzx ecx, byte [esp + 0xa0]
sub ecx, edi
imul ecx, dword [0xb160b8]
shl edi, 8
add ecx, edi
sar ecx, 8
mov byte [esi], cl
movzx edi, byte [esi + 1]
movzx ecx, byte [esp + 0xa1]
sub ecx, edi
imul ecx, dword [0xb160b8]
shl edi, 8
add ecx, edi
sar ecx, 8
mov byte [esi + 1], cl
movzx edi, byte [esi + 2]
movzx ecx, bl
sub ecx, edi
imul ecx, dword [0xb160b8]
shl edi, 8
add ecx, edi
sar ecx, 8
mov byte [esi + 2], cl
mov esi, dword [esp + 0x18]
test esi, esi
mov edi, dword [esp + 0x30]
mov dword [esp + 0x2c], 0
jge 0x780474
mov eax, dword [esp + 0x9c]
cmp eax, edi
jl 0x78045c
mov ebp, 1
sub eax, edi
mov dword [esp + 0x2c], ebp
lea ecx, [ebp*4]
add dword [esp + 0x14], ecx
lea esi, [esi + ecx + 2]
mov dword [esp + 0x18], esi
jmp 0x7804dc
mov edx, dword [esp + 0x98]
add edx, 0xffffffff
cmp dword [esp + 0x14], 0
mov dword [esp + 0x2c], 1
jl 0x7804aa
lea ecx, [edx*4]
sub esi, ecx
mov dword [esp + 0x18], esi
mov esi, 2
sub esi, ecx
add dword [esp + 0x14], esi
jmp 0x7804dc
mov eax, dword [esp + 0x9c]
cmp eax, edi
jl 0x7804bc
mov ebp, 1
sub eax, edi
mov ecx, dword [esp + 0x18]
mov esi, ebp
sub esi, edx
add esi, esi
add esi, esi
lea ecx, [ecx + esi + 2]
mov dword [esp + 0x18], ecx
mov ecx, dword [esp + 0x14]
lea ecx, [ecx + esi + 2]
mov dword [esp + 0x14], ecx
test edx, edx
jle 0x78684d
lea ecx, [edx*4]
mov dword [esp + 0x74], ecx
mov ecx, dword [esp + 0x90]
add ecx, edx
add ecx, ecx
add ecx, ecx
mov dword [esp + 0x5c], ecx
mov esi, dword [esp + 0x7c]
mov ecx, edx
sub ecx, dword [esp + 0x78]
add ecx, dword [esp + 0x90]
mov dword [esp + 0x60], ecx
mov ecx, dword [esp + 0x94]
add ecx, ebp
imul ecx, dword [esp + 0x1c]
mov dword [esp + 0x54], ecx
mov ecx, ebp
sub ecx, esi
add ecx, dword [esp + 0x94]
mov dword [esp + 0x58], ecx
mov ecx, dword [esp + 0x1c]
neg ecx
mov dword [esp + 0x3c], ecx
mov ecx, dword [esp + 0x94]
sub ecx, esi
sub ecx, ebp
mov dword [esp + 0x4c], ecx
mov ecx, dword [esp + 0x90]
sub ecx, dword [esp + 0x78]
sub ecx, edx
mov dword [esp + 0x64], ecx
mov ecx, dword [esp + 0x94]
sub ecx, ebp
imul ecx, dword [esp + 0x1c]
mov dword [esp + 0x50], ecx
mov ecx, dword [esp + 0x90]
sub ecx, edx
add ecx, ecx
add ecx, ecx
mov dword [esp + 0x68], ecx
jmp 0x780590
cmp dword [esp + 0x2c], 0
mov esi, 4
je 0x7807ed
mov ecx, dword [esp + 0x64]
cmp ecx, dword [esp + 0x34]
ja 0x780632
mov ecx, dword [esp + 0x84]
sub ecx, dword [esp + 0x7c]
cmp dword [esp + 0x58], ecx
ja 0x780632
mov ecx, dword [esp + 0x68]
mov esi, dword [esp + 0x54]
add esi, ecx
add esi, dword [esp + 0x20]
movzx ecx, byte [esp + 0xa0]
movzx edi, byte [esi]
sub ecx, edi
imul ecx, dword [0xb160b8]
mov dword [esp + 0x48], edi
shl edi, 8
add ecx, edi
sar ecx, 8
mov byte [esi], cl
movzx edi, byte [esi + 1]
movzx ecx, byte [esp + 0xa1]
sub ecx, edi
imul ecx, dword [0xb160b8]
shl edi, 8
add ecx, edi
sar ecx, 8
mov byte [esi + 1], cl
movzx edi, byte [esi + 2]
movzx ecx, bl
sub ecx, edi
imul ecx, dword [0xb160b8]
shl edi, 8
add ecx, edi
mov edi, dword [esp + 0x30]
sar ecx, 8
mov byte [esi + 2], cl
mov ecx, dword [esp + 0x34]
cmp dword [esp + 0x60], ecx
ja 0x7806c4
mov ecx, dword [esp + 0x84]
sub ecx, dword [esp + 0x7c]
cmp dword [esp + 0x58], ecx
ja 0x7806c4
mov ecx, dword [esp + 0x54]
mov esi, dword [esp + 0x5c]
add esi, ecx
add esi, dword [esp + 0x20]
movzx ecx, byte [esp + 0xa0]
movzx edi, byte [esi]
sub ecx, edi
imul ecx, dword [0xb160b8]
mov dword [esp + 0x48], edi
shl edi, 8
add ecx, edi
sar ecx, 8
mov byte [esi], cl
movzx edi, byte [esi + 1]
movzx ecx, byte [esp + 0xa1]
sub ecx, edi
imul ecx, dword [0xb160b8]
shl edi, 8
add ecx, edi
sar ecx, 8
mov byte [esi + 1], cl
movzx edi, byte [esi + 2]
movzx ecx, bl
sub ecx, edi
imul ecx, dword [0xb160b8]
shl edi, 8
add ecx, edi
mov edi, dword [esp + 0x30]
sar ecx, 8
mov byte [esi + 2], cl
mov ecx, dword [esp + 0x34]
cmp dword [esp + 0x64], ecx
ja 0x780756
mov ecx, dword [esp + 0x84]
sub ecx, dword [esp + 0x7c]
cmp dword [esp + 0x4c], ecx
ja 0x780756
mov ecx, dword [esp + 0x68]
mov esi, dword [esp + 0x50]
add esi, ecx
add esi, dword [esp + 0x20]
movzx ecx, byte [esp + 0xa0]
movzx edi, byte [esi]
sub ecx, edi
imul ecx, dword [0xb160b8]
mov dword [esp + 0x48], edi
shl edi, 8
add ecx, edi
sar ecx, 8
mov byte [esi], cl
movzx edi, byte [esi + 1]
movzx ecx, byte [esp + 0xa1]
sub ecx, edi
imul ecx, dword [0xb160b8]
shl edi, 8
add ecx, edi
sar ecx, 8
mov byte [esi + 1], cl
movzx edi, byte [esi + 2]
movzx ecx, bl
sub ecx, edi
imul ecx, dword [0xb160b8]
shl edi, 8
add ecx, edi
mov edi, dword [esp + 0x30]
sar ecx, 8
mov byte [esi + 2], cl
mov ecx, dword [esp + 0x60]
cmp ecx, dword [esp + 0x34]
ja 0x7807e8
mov ecx, dword [esp + 0x84]
sub ecx, dword [esp + 0x7c]
cmp dword [esp + 0x4c], ecx
ja 0x7807e8
mov ecx, dword [esp + 0x50]
mov esi, dword [esp + 0x5c]
add esi, ecx
add esi, dword [esp + 0x20]
movzx ecx, byte [esp + 0xa0]
movzx edi, byte [esi]
sub ecx, edi
imul ecx, dword [0xb160b8]
mov dword [esp + 0x48], edi
shl edi, 8
add ecx, edi
sar ecx, 8
mov byte [esi], cl
movzx edi, byte [esi + 1]
movzx ecx, byte [esp + 0xa1]
sub ecx, edi
imul ecx, dword [0xb160b8]
shl edi, 8
add ecx, edi
sar ecx, 8
mov byte [esi + 1], cl
movzx edi, byte [esi + 2]
movzx ecx, bl
sub ecx, edi
imul ecx, dword [0xb160b8]
shl edi, 8
add ecx, edi
mov edi, dword [esp + 0x30]
sar ecx, 8
mov byte [esi + 2], cl
mov esi, 4
cmp dword [esp + 0x18], 0
mov dword [esp + 0x2c], 0
jge 0x780852
add eax, dword [esp + 0x9c]
cmp eax, edi
jl 0x780836
mov ecx, dword [esp + 0x1c]
add dword [esp + 0x54], ecx
mov ecx, dword [esp + 0x3c]
add dword [esp + 0x50], ecx
add dword [esp + 0x58], 1
mov ecx, 1
sub dword [esp + 0x4c], ecx
add ebp, 1
sub eax, edi
mov dword [esp + 0x2c], ecx
mov esi, dword [esp + 0x18]
lea ecx, [ebp*4]
add dword [esp + 0x14], ecx
lea esi, [esi + ecx + 2]
mov dword [esp + 0x18], esi
jmp 0x7808de
add dword [esp + 0x68], esi
sub dword [esp + 0x5c], esi
mov ecx, 1
add dword [esp + 0x64], ecx
sub dword [esp + 0x60], ecx
sub edx, ecx
cmp dword [esp + 0x14], 0
mov dword [esp + 0x2c], ecx
jl 0x780892
mov ecx, dword [esp + 0x74]
sub ecx, esi
sub dword [esp + 0x18], ecx
mov esi, 2
sub esi, ecx
add dword [esp + 0x14], esi
mov dword [esp + 0x74], ecx
jmp 0x7808de
add eax, dword [esp + 0x9c]
sub dword [esp + 0x74], esi
cmp eax, edi
jl 0x7808be
add dword [esp + 0x58], ecx
sub dword [esp + 0x4c], 1
add ebp, ecx
mov ecx, dword [esp + 0x1c]
add dword [esp + 0x54], ecx
mov ecx, dword [esp + 0x3c]
add dword [esp + 0x50], ecx
sub eax, edi
mov ecx, dword [esp + 0x18]
mov esi, ebp
sub esi, edx
add esi, esi
add esi, esi
lea ecx, [ecx + esi + 2]
mov dword [esp + 0x18], ecx
mov ecx, dword [esp + 0x14]
lea ecx, [ecx + esi + 2]
mov dword [esp + 0x14], ecx
test edx, edx
jg 0x780590
jmp 0x78684d
cmp dword [0xb160b8], 0
je case.0x789050.5
mov ecx, dword [esp + 0x90]
sub ecx, dword [esp + 0x98]
mov edi, dword [esp + 0x80]
sub edi, dword [esp + 0x78]
mov dword [esp + 0x24], ecx
sub ecx, dword [esp + 0x78]
mov dword [esp + 0x34], edi
cmp ecx, edi
ja 0x7809db
mov ecx, dword [esp + 0x7c]
mov edi, dword [esp + 0x84]
mov ebx, dword [esp + 0x94]
sub ebx, ecx
sub edi, ecx
cmp ebx, edi
mov bl, byte [esp + 0xa2]
ja 0x7809db
mov ecx, dword [esp + 0x1c]
imul ecx, dword [esp + 0x94]
add ecx, dword [esp + 0x20]
mov edi, dword [esp + 0x24]
lea edi, [ecx + edi*4]
movzx ecx, byte [esp + 0xa0]
movzx ecx, byte [esi + ecx*4]
mov byte [esp + 0x10], cl
movzx ecx, byte [esp + 0xa1]
movzx ecx, byte [esi + ecx*4]
mov byte [esp + 0x11], cl
movzx ecx, bl
movzx ecx, byte [esi + ecx*4]
mov byte [esp + 0x12], cl
mov ecx, dword [edi]
mov dword [esp + 0x2c], edi
mov edi, dword [esp + 0x10]
mov dword [esp + 0x58], ecx
and ecx, 0xfefeff
and edi, 0xfefeff
add ecx, edi
mov dword [esp + 0x44], ecx
and ecx, 0x1010100
mov edi, ecx
shr edi, 8
sub ecx, edi
mov dword [esp + 0x74], ecx
mov ecx, dword [esp + 0x58]
or ecx, dword [esp + 0x10]
mov edi, dword [esp + 0x74]
and ecx, 0x10100
or edi, ecx
or edi, dword [esp + 0x44]
mov ecx, dword [esp + 0x2c]
mov dword [ecx], edi
mov ecx, dword [esp + 0x90]
mov edi, dword [esp + 0x98]
add ecx, edi
mov dword [esp + 0x24], ecx
sub ecx, dword [esp + 0x78]
cmp ecx, dword [esp + 0x34]
ja 0x780ab3
mov ecx, dword [esp + 0x7c]
mov edi, dword [esp + 0x84]
mov ebx, dword [esp + 0x94]
sub ebx, ecx
sub edi, ecx
cmp ebx, edi
mov bl, byte [esp + 0xa2]
ja 0x780ab3
mov ecx, dword [esp + 0x1c]
imul ecx, dword [esp + 0x94]
add ecx, dword [esp + 0x20]
mov edi, dword [esp + 0x24]
lea edi, [ecx + edi*4]
movzx ecx, byte [esp + 0xa0]
movzx ecx, byte [esi + ecx*4]
mov byte [esp + 0x10], cl
movzx ecx, byte [esp + 0xa1]
movzx ecx, byte [esi + ecx*4]
mov byte [esp + 0x11], cl
movzx ecx, bl
movzx ecx, byte [esi + ecx*4]
mov byte [esp + 0x12], cl
mov ecx, dword [edi]
mov dword [esp + 0x2c], edi
mov edi, dword [esp + 0x10]
mov dword [esp + 0x58], ecx
and ecx, 0xfefeff
and edi, 0xfefeff
add ecx, edi
mov dword [esp + 0x44], ecx
and ecx, 0x1010100
mov edi, ecx
shr edi, 8
sub ecx, edi
mov dword [esp + 0x74], ecx
mov ecx, dword [esp + 0x58]
or ecx, dword [esp + 0x10]
mov edi, dword [esp + 0x74]
and ecx, 0x10100
or edi, ecx
or edi, dword [esp + 0x44]
mov ecx, dword [esp + 0x2c]
mov dword [ecx], edi
cmp dword [esp + 0x18], 0
mov dword [esp + 0x2c], 0
jge 0x780afc
mov eax, dword [esp + 0x9c]
mov ecx, dword [esp + 0x30]
cmp eax, ecx
jl 0x780ae0
mov ebp, 1
sub eax, ecx
mov dword [esp + 0x2c], ebp
mov edi, dword [esp + 0x18]
lea ecx, [ebp*4]
add dword [esp + 0x14], ecx
lea edi, [edi + ecx + 2]
mov dword [esp + 0x18], edi
jmp 0x780b66
mov edx, dword [esp + 0x98]
add edx, 0xffffffff
cmp dword [esp + 0x14], 0
mov dword [esp + 0x2c], 1
jl 0x780b30
lea ecx, [edx*4]
sub dword [esp + 0x18], ecx
mov edi, 2
sub edi, ecx
add dword [esp + 0x14], edi
jmp 0x780b66
mov eax, dword [esp + 0x9c]
mov ecx, dword [esp + 0x30]
cmp eax, ecx
jl 0x780b46
mov ebp, 1
sub eax, ecx
mov edi, dword [esp + 0x18]
mov ecx, ebp
sub ecx, edx
add ecx, ecx
add ecx, ecx
lea edi, [edi + ecx + 2]
mov dword [esp + 0x18], edi
mov edi, dword [esp + 0x14]
lea ecx, [edi + ecx + 2]
mov dword [esp + 0x14], ecx
test edx, edx
jle 0x780fb5
mov edi, dword [esp + 0x90]
lea ecx, [edx*4]
mov dword [esp + 0x74], ecx
lea ecx, [edx + edi]
add ecx, ecx
add ecx, ecx
mov dword [esp + 0x5c], ecx
mov ecx, edx
sub ecx, dword [esp + 0x78]
add ecx, edi
mov dword [esp + 0x60], ecx
mov ecx, dword [esp + 0x94]
add ecx, ebp
imul ecx, dword [esp + 0x1c]
mov edi, dword [esp + 0x94]
mov dword [esp + 0x50], ecx
mov ecx, ebp
sub ecx, dword [esp + 0x7c]
add ecx, edi
mov dword [esp + 0x54], ecx
mov ecx, dword [esp + 0x1c]
neg ecx
mov dword [esp + 0x3c], ecx
mov ecx, edi
sub ecx, dword [esp + 0x7c]
sub ecx, ebp
mov dword [esp + 0x48], ecx
mov ecx, dword [esp + 0x90]
sub ecx, dword [esp + 0x78]
sub ecx, edx
mov dword [esp + 0x64], ecx
mov ecx, edi
sub ecx, ebp
imul ecx, dword [esp + 0x1c]
mov dword [esp + 0x4c], ecx
mov ecx, dword [esp + 0x90]
sub ecx, edx
add ecx, ecx
add ecx, ecx
mov dword [esp + 0x68], ecx
jmp 0x780c10
cmp dword [esp + 0x2c], 0
mov edi, 4
je 0x780eb2
mov ecx, dword [esp + 0x64]
cmp ecx, dword [esp + 0x34]
ja 0x780cc3
mov ecx, dword [esp + 0x84]
sub ecx, dword [esp + 0x7c]
cmp dword [esp + 0x54], ecx
ja 0x780cc3
mov ecx, dword [esp + 0x50]
mov edi, dword [esp + 0x68]
add edi, ecx
movzx ecx, byte [esp + 0xa0]
movzx ecx, byte [esi + ecx*4]
add edi, dword [esp + 0x20]
mov byte [esp + 0x10], cl
movzx ecx, byte [esp + 0xa1]
movzx ecx, byte [esi + ecx*4]
mov byte [esp + 0x11], cl
movzx ecx, bl
movzx ecx, byte [esi + ecx*4]
mov byte [esp + 0x12], cl
mov ecx, dword [edi]
mov dword [esp + 0x2c], edi
mov edi, dword [esp + 0x10]
mov dword [esp + 0x58], ecx
and edi, 0xfefeff
and ecx, 0xfefeff
add ecx, edi
mov dword [esp + 0x44], ecx
and ecx, 0x1010100
mov edi, ecx
shr edi, 8
sub ecx, edi
mov edi, dword [esp + 0x58]
or edi, dword [esp + 0x10]
and edi, 0x10100
or ecx, edi
or ecx, dword [esp + 0x44]
mov edi, dword [esp + 0x2c]
mov dword [edi], ecx
mov ecx, dword [esp + 0x34]
cmp dword [esp + 0x60], ecx
ja 0x780d66
mov ecx, dword [esp + 0x84]
sub ecx, dword [esp + 0x7c]
cmp dword [esp + 0x54], ecx
ja 0x780d66
mov ecx, dword [esp + 0x50]
mov edi, dword [esp + 0x5c]
add edi, ecx
movzx ecx, byte [esp + 0xa0]
movzx ecx, byte [esi + ecx*4]
add edi, dword [esp + 0x20]
mov byte [esp + 0x10], cl
movzx ecx, byte [esp + 0xa1]
movzx ecx, byte [esi + ecx*4]
mov byte [esp + 0x11], cl
movzx ecx, bl
movzx ecx, byte [esi + ecx*4]
mov byte [esp + 0x12], cl
mov ecx, dword [edi]
mov dword [esp + 0x2c], edi
mov edi, dword [esp + 0x10]
mov dword [esp + 0x58], ecx
and edi, 0xfefeff
and ecx, 0xfefeff
add ecx, edi
mov dword [esp + 0x44], ecx
and ecx, 0x1010100
mov edi, ecx
shr edi, 8
sub ecx, edi
mov edi, dword [esp + 0x58]
or edi, dword [esp + 0x10]
and edi, 0x10100
or ecx, edi
or ecx, dword [esp + 0x44]
mov edi, dword [esp + 0x2c]
mov dword [edi], ecx
mov ecx, dword [esp + 0x34]
cmp dword [esp + 0x64], ecx
ja 0x780e09
mov ecx, dword [esp + 0x84]
sub ecx, dword [esp + 0x7c]
cmp dword [esp + 0x48], ecx
ja 0x780e09
mov ecx, dword [esp + 0x68]
mov edi, dword [esp + 0x4c]
add edi, ecx
movzx ecx, byte [esp + 0xa0]
movzx ecx, byte [esi + ecx*4]
add edi, dword [esp + 0x20]
mov byte [esp + 0x10], cl
movzx ecx, byte [esp + 0xa1]
movzx ecx, byte [esi + ecx*4]
mov byte [esp + 0x11], cl
movzx ecx, bl
movzx ecx, byte [esi + ecx*4]
mov byte [esp + 0x12], cl
mov ecx, dword [edi]
mov dword [esp + 0x2c], edi
mov edi, dword [esp + 0x10]
mov dword [esp + 0x58], ecx
and edi, 0xfefeff
and ecx, 0xfefeff
add ecx, edi
mov dword [esp + 0x44], ecx
and ecx, 0x1010100
mov edi, ecx
shr edi, 8
sub ecx, edi
mov edi, dword [esp + 0x58]
or edi, dword [esp + 0x10]
and edi, 0x10100
or ecx, edi
or ecx, dword [esp + 0x44]
mov edi, dword [esp + 0x2c]
mov dword [edi], ecx
mov ecx, dword [esp + 0x60]
cmp ecx, dword [esp + 0x34]
ja 0x780ead
mov ecx, dword [esp + 0x84]
sub ecx, dword [esp + 0x7c]
cmp dword [esp + 0x48], ecx
ja 0x780ead
mov ecx, dword [esp + 0x5c]
mov edi, dword [esp + 0x4c]
add edi, ecx
movzx ecx, byte [esp + 0xa0]
movzx ecx, byte [esi + ecx*4]
add edi, dword [esp + 0x20]
mov byte [esp + 0x10], cl
movzx ecx, byte [esp + 0xa1]
movzx ecx, byte [esi + ecx*4]
mov byte [esp + 0x11], cl
movzx ecx, bl
movzx ecx, byte [esi + ecx*4]
mov byte [esp + 0x12], cl
mov ebx, dword [esp + 0x10]
mov dword [esp + 0x2c], edi
mov edi, dword [edi]
mov ecx, edi
or edi, dword [esp + 0x10]
and ecx, 0xfefeff
and ebx, 0xfefeff
add ecx, ebx
mov dword [esp + 0x44], ecx
and ecx, 0x1010100
mov ebx, ecx
shr ebx, 8
sub ecx, ebx
mov bl, byte [esp + 0xa2]
and edi, 0x10100
or ecx, edi
or ecx, dword [esp + 0x44]
mov edi, dword [esp + 0x2c]
mov dword [edi], ecx
mov edi, 4
cmp dword [esp + 0x18], 0
mov ecx, 1
mov dword [esp + 0x2c], 0
jge 0x780f1e
add eax, dword [esp + 0x9c]
cmp eax, dword [esp + 0x30]
jl 0x780f02
add dword [esp + 0x54], ecx
add ebp, ecx
mov ecx, dword [esp + 0x1c]
add dword [esp + 0x50], ecx
mov ecx, dword [esp + 0x3c]
add dword [esp + 0x4c], ecx
mov ecx, 1
sub dword [esp + 0x48], ecx
sub eax, dword [esp + 0x30]
mov dword [esp + 0x2c], ecx
mov edi, dword [esp + 0x18]
lea ecx, [ebp*4]
add dword [esp + 0x14], ecx
lea edi, [edi + ecx + 2]
mov dword [esp + 0x18], edi
jmp 0x780fad
add dword [esp + 0x68], edi
add dword [esp + 0x64], ecx
sub dword [esp + 0x60], ecx
sub dword [esp + 0x5c], edi
sub edx, ecx
cmp dword [esp + 0x14], 0
mov dword [esp + 0x2c], ecx
jl 0x780f59
mov ecx, dword [esp + 0x74]
sub ecx, edi
sub dword [esp + 0x18], ecx
mov edi, 2
sub edi, ecx
add dword [esp + 0x14], edi
mov dword [esp + 0x74], ecx
jmp 0x780fad
add eax, dword [esp + 0x9c]
sub dword [esp + 0x74], edi
cmp eax, dword [esp + 0x30]
jl 0x780f8d
add dword [esp + 0x54], ecx
sub dword [esp + 0x48], 1
add ebp, ecx
mov ecx, dword [esp + 0x1c]
add dword [esp + 0x50], ecx
mov ecx, dword [esp + 0x3c]
add dword [esp + 0x4c], ecx
sub eax, dword [esp + 0x30]
mov edi, dword [esp + 0x18]
mov ecx, ebp
sub ecx, edx
add ecx, ecx
add ecx, ecx
lea edi, [edi + ecx + 2]
mov dword [esp + 0x18], edi
mov edi, dword [esp + 0x14]
lea ecx, [edi + ecx + 2]
mov dword [esp + 0x14], ecx
test edx, edx
jg 0x780c10
mov eax, dword [esp + 0x90]
mov ecx, dword [esp + 0x94]
lea edi, [edx + eax]
sub edi, dword [esp + 0x78]
sub ecx, ebp
cmp edi, dword [esp + 0x34]
mov dword [esp + 0x50], ecx
mov ecx, dword [esp + 0x7c]
ja 0x787128
mov eax, dword [esp + 0x50]
jmp 0x787087
cmp dword [0xb160b8], 0
je case.0x789050.5
mov ecx, dword [esp + 0x90]
sub ecx, dword [esp + 0x98]
mov edi, dword [esp + 0x78]
mov dword [esp + 0x24], ecx
mov ecx, dword [esp + 0x80]
sub ecx, edi
mov dword [esp + 0x34], ecx
mov ecx, dword [esp + 0x24]
sub ecx, edi
cmp ecx, dword [esp + 0x34]
ja 0x7810c1
mov ecx, dword [esp + 0x7c]
mov edi, dword [esp + 0x84]
mov ebx, dword [esp + 0x94]
sub ebx, ecx
sub edi, ecx
cmp ebx, edi
mov bl, byte [esp + 0xa2]
ja 0x7810c1
mov ecx, dword [esp + 0x1c]
imul ecx, dword [esp + 0x94]
add ecx, dword [esp + 0x20]
mov edi, dword [esp + 0x24]
lea edi, [ecx + edi*4]
movzx ecx, byte [esp + 0xa0]
movzx ecx, byte [esi + ecx*4]
mov byte [esp + 0x10], cl
movzx ecx, byte [esp + 0xa1]
movzx ecx, byte [esi + ecx*4]
mov byte [esp + 0x11], cl
movzx ecx, bl
movzx ecx, byte [esi + ecx*4]
mov byte [esp + 0x12], cl
mov ecx, dword [edi]
mov dword [esp + 0x2c], edi
mov edi, dword [esp + 0x10]
and edi, 0xfefefeff
or ecx, 0x1010100
sub ecx, edi
mov dword [esp + 0x44], ecx
and ecx, 0x1010100
mov edi, ecx
shr edi, 8
sub ecx, edi
and ecx, dword [esp + 0x44]
mov edi, dword [esp + 0x2c]
mov dword [edi], ecx
mov ecx, dword [esp + 0x90]
mov edi, dword [esp + 0x98]
add ecx, edi
mov dword [esp + 0x24], ecx
sub ecx, dword [esp + 0x78]
cmp ecx, dword [esp + 0x34]
ja 0x78117d
mov ecx, dword [esp + 0x7c]
mov edi, dword [esp + 0x84]
mov ebx, dword [esp + 0x94]
sub ebx, ecx
sub edi, ecx
cmp ebx, edi
mov bl, byte [esp + 0xa2]
ja 0x78117d
mov ecx, dword [esp + 0x1c]
imul ecx, dword [esp + 0x94]
add ecx, dword [esp + 0x20]
mov edi, dword [esp + 0x24]
lea edi, [ecx + edi*4]
movzx ecx, byte [esp + 0xa0]
movzx ecx, byte [esi + ecx*4]
mov byte [esp + 0x10], cl
movzx ecx, byte [esp + 0xa1]
movzx ecx, byte [esi + ecx*4]
mov byte [esp + 0x11], cl
movzx ecx, bl
movzx ecx, byte [esi + ecx*4]
mov byte [esp + 0x12], cl
mov ecx, dword [edi]
mov dword [esp + 0x2c], edi
mov edi, dword [esp + 0x10]
and edi, 0xfefefeff
or ecx, 0x1010100
sub ecx, edi
mov dword [esp + 0x44], ecx
and ecx, 0x1010100
mov edi, ecx
shr edi, 8
sub ecx, edi
and ecx, dword [esp + 0x44]
mov edi, dword [esp + 0x2c]
mov dword [edi], ecx
cmp dword [esp + 0x18], 0
mov dword [esp + 0x2c], 0
jge 0x7811c6
mov eax, dword [esp + 0x9c]
mov ecx, dword [esp + 0x30]
cmp eax, ecx
jl 0x7811aa
mov ebp, 1
sub eax, ecx
mov dword [esp + 0x2c], ebp
mov edi, dword [esp + 0x18]
lea ecx, [ebp*4]
add dword [esp + 0x14], ecx
lea edi, [edi + ecx + 2]
mov dword [esp + 0x18], edi
jmp 0x781230
mov edx, dword [esp + 0x98]
add edx, 0xffffffff
cmp dword [esp + 0x14], 0
mov dword [esp + 0x2c], 1
jl 0x7811fa
lea ecx, [edx*4]
sub dword [esp + 0x18], ecx
mov edi, 2
sub edi, ecx
add dword [esp + 0x14], edi
jmp 0x781230
mov eax, dword [esp + 0x9c]
mov ecx, dword [esp + 0x30]
cmp eax, ecx
jl 0x781210
mov ebp, 1
sub eax, ecx
mov edi, dword [esp + 0x18]
mov ecx, ebp
sub ecx, edx
add ecx, ecx
add ecx, ecx
lea edi, [edi + ecx + 2]
mov dword [esp + 0x18], edi
mov edi, dword [esp + 0x14]
lea ecx, [edi + ecx + 2]
mov dword [esp + 0x14], ecx
test edx, edx
jle 0x78162a
lea ecx, [edx*4]
mov dword [esp + 0x74], ecx
mov ecx, dword [esp + 0x90]
add ecx, edx
add ecx, ecx
add ecx, ecx
mov dword [esp + 0x5c], ecx
mov edi, dword [esp + 0x94]
mov ecx, edx
sub ecx, dword [esp + 0x78]
add ecx, dword [esp + 0x90]
mov dword [esp + 0x60], ecx
mov ecx, dword [esp + 0x94]
add ecx, ebp
imul ecx, dword [esp + 0x1c]
mov dword [esp + 0x54], ecx
mov ecx, ebp
sub ecx, dword [esp + 0x7c]
add ecx, edi
mov dword [esp + 0x58], ecx
mov ecx, dword [esp + 0x1c]
neg ecx
mov dword [esp + 0x3c], ecx
mov ecx, edi
sub ecx, dword [esp + 0x7c]
sub ecx, ebp
mov dword [esp + 0x4c], ecx
mov ecx, dword [esp + 0x90]
sub ecx, dword [esp + 0x78]
sub ecx, edx
mov dword [esp + 0x64], ecx
mov ecx, edi
sub ecx, ebp
imul ecx, dword [esp + 0x1c]
mov dword [esp + 0x50], ecx
mov ecx, dword [esp + 0x90]
sub ecx, edx
add ecx, ecx
add ecx, ecx
mov dword [esp + 0x68], ecx
nop
cmp dword [esp + 0x2c], 0
mov edi, 4
je 0x781521
mov ecx, dword [esp + 0x64]
cmp ecx, dword [esp + 0x34]
ja 0x78136f
mov ecx, dword [esp + 0x84]
sub ecx, dword [esp + 0x7c]
cmp dword [esp + 0x58], ecx
ja 0x78136f
mov ecx, dword [esp + 0x68]
mov edi, dword [esp + 0x54]
add edi, ecx
movzx ecx, byte [esp + 0xa0]
movzx ecx, byte [esi + ecx*4]
add edi, dword [esp + 0x20]
mov byte [esp + 0x10], cl
movzx ecx, byte [esp + 0xa1]
movzx ecx, byte [esi + ecx*4]
mov byte [esp + 0x11], cl
movzx ecx, bl
movzx ecx, byte [esi + ecx*4]
mov byte [esp + 0x12], cl
mov ecx, dword [edi]
mov dword [esp + 0x2c], edi
mov edi, dword [esp + 0x10]
and edi, 0xfefefeff
or ecx, 0x1010100
sub ecx, edi
mov dword [esp + 0x44], ecx
and ecx, 0x1010100
mov edi, ecx
shr edi, 8
sub ecx, edi
and ecx, dword [esp + 0x44]
mov edi, dword [esp + 0x2c]
mov dword [edi], ecx
mov ecx, dword [esp + 0x34]
cmp dword [esp + 0x60], ecx
ja 0x7813fe
mov ecx, dword [esp + 0x84]
sub ecx, dword [esp + 0x7c]
cmp dword [esp + 0x58], ecx
ja 0x7813fe
mov ecx, dword [esp + 0x54]
mov edi, dword [esp + 0x5c]
add edi, ecx
movzx ecx, byte [esp + 0xa0]
movzx ecx, byte [esi + ecx*4]
add edi, dword [esp + 0x20]
mov byte [esp + 0x10], cl
movzx ecx, byte [esp + 0xa1]
movzx ecx, byte [esi + ecx*4]
mov byte [esp + 0x11], cl
movzx ecx, bl
movzx ecx, byte [esi + ecx*4]
mov byte [esp + 0x12], cl
mov ecx, dword [edi]
mov dword [esp + 0x2c], edi
mov edi, dword [esp + 0x10]
and edi, 0xfefefeff
or ecx, 0x1010100
sub ecx, edi
mov dword [esp + 0x44], ecx
and ecx, 0x1010100
mov edi, ecx
shr edi, 8
sub ecx, edi
and ecx, dword [esp + 0x44]
mov edi, dword [esp + 0x2c]
mov dword [edi], ecx
mov ecx, dword [esp + 0x34]
cmp dword [esp + 0x64], ecx
ja 0x78148d
mov ecx, dword [esp + 0x84]
sub ecx, dword [esp + 0x7c]
cmp dword [esp + 0x4c], ecx
ja 0x78148d
mov ecx, dword [esp + 0x68]
mov edi, dword [esp + 0x50]
add edi, ecx
movzx ecx, byte [esp + 0xa0]
movzx ecx, byte [esi + ecx*4]
add edi, dword [esp + 0x20]
mov byte [esp + 0x10], cl
movzx ecx, byte [esp + 0xa1]
movzx ecx, byte [esi + ecx*4]
mov byte [esp + 0x11], cl
movzx ecx, bl
movzx ecx, byte [esi + ecx*4]
mov byte [esp + 0x12], cl
mov ecx, dword [edi]
mov dword [esp + 0x2c], edi
mov edi, dword [esp + 0x10]
and edi, 0xfefefeff
or ecx, 0x1010100
sub ecx, edi
mov dword [esp + 0x44], ecx
and ecx, 0x1010100
mov edi, ecx
shr edi, 8
sub ecx, edi
and ecx, dword [esp + 0x44]
mov edi, dword [esp + 0x2c]
mov dword [edi], ecx
mov ecx, dword [esp + 0x60]
cmp ecx, dword [esp + 0x34]
ja 0x78151c
mov ecx, dword [esp + 0x84]
sub ecx, dword [esp + 0x7c]
cmp dword [esp + 0x4c], ecx
ja 0x78151c
mov ecx, dword [esp + 0x50]
mov edi, dword [esp + 0x5c]
add edi, ecx
movzx ecx, byte [esp + 0xa0]
movzx ecx, byte [esi + ecx*4]
add edi, dword [esp + 0x20]
mov byte [esp + 0x10], cl
movzx ecx, byte [esp + 0xa1]
movzx ecx, byte [esi + ecx*4]
mov byte [esp + 0x11], cl
movzx ecx, bl
movzx ecx, byte [esi + ecx*4]
mov byte [esp + 0x12], cl
mov ecx, dword [edi]
mov dword [esp + 0x2c], edi
mov edi, dword [esp + 0x10]
and edi, 0xfefefeff
or ecx, 0x1010100
sub ecx, edi
mov dword [esp + 0x44], ecx
and ecx, 0x1010100
mov edi, ecx
shr edi, 8
sub ecx, edi
and ecx, dword [esp + 0x44]
mov edi, dword [esp + 0x2c]
mov dword [edi], ecx
mov edi, 4
cmp dword [esp + 0x18], 0
mov dword [esp + 0x2c], 0
jge 0x78158a
add eax, dword [esp + 0x9c]
cmp eax, dword [esp + 0x30]
jl 0x78156e
mov ecx, dword [esp + 0x1c]
add dword [esp + 0x54], ecx
mov ecx, dword [esp + 0x3c]
add dword [esp + 0x50], ecx
add dword [esp + 0x58], 1
mov ecx, 1
sub dword [esp + 0x4c], ecx
add ebp, 1
sub eax, dword [esp + 0x30]
mov dword [esp + 0x2c], ecx
mov edi, dword [esp + 0x18]
lea ecx, [ebp*4]
add dword [esp + 0x14], ecx
lea edi, [edi + ecx + 2]
mov dword [esp + 0x18], edi
jmp 0x781622
add dword [esp + 0x68], edi
sub dword [esp + 0x5c], edi
mov ecx, 1
add dword [esp + 0x64], ecx
sub dword [esp + 0x60], ecx
sub edx, ecx
cmp dword [esp + 0x14], 0
mov dword [esp + 0x2c], ecx
jl 0x7815ce
mov ecx, dword [esp + 0x74]
sub ecx, edi
sub dword [esp + 0x18], ecx
mov edi, 2
sub edi, ecx
add dword [esp + 0x14], edi
mov dword [esp + 0x74], ecx
jmp 0x781622
add eax, dword [esp + 0x9c]
sub dword [esp + 0x74], edi
cmp eax, dword [esp + 0x30]
jl 0x781602
add dword [esp + 0x58], ecx
sub dword [esp + 0x4c], 1
add ebp, ecx
mov ecx, dword [esp + 0x1c]
add dword [esp + 0x54], ecx
mov ecx, dword [esp + 0x3c]
add dword [esp + 0x50], ecx
sub eax, dword [esp + 0x30]
mov edi, dword [esp + 0x18]
mov ecx, ebp
sub ecx, edx
add ecx, ecx
add ecx, ecx
lea edi, [edi + ecx + 2]
mov dword [esp + 0x18], edi
mov edi, dword [esp + 0x14]
lea ecx, [edi + ecx + 2]
mov dword [esp + 0x14], ecx
test edx, edx
jg 0x7812d0
mov eax, dword [esp + 0x90]
mov ecx, dword [esp + 0x94]
lea edi, [edx + eax]
sub edi, dword [esp + 0x78]
sub ecx, ebp
cmp edi, dword [esp + 0x34]
mov dword [esp + 0x50], ecx
mov ecx, dword [esp + 0x7c]
ja 0x7878c5
mov eax, dword [esp + 0x50]
jmp 0x787836
mov ecx, dword [esp + 0x90]
sub ecx, dword [esp + 0x98]
mov edi, dword [esp + 0x78]
mov esi, dword [esp + 0x80]
sub esi, edi
mov dword [esp + 0x24], ecx
sub ecx, edi
mov dword [esp + 0x34], esi
cmp ecx, esi
mov esi, dword [esp + 0x94]
ja 0x781707
mov ecx, dword [esp + 0x7c]
mov edi, dword [esp + 0x84]
sub esi, ecx
sub edi, ecx
cmp esi, edi
mov esi, dword [esp + 0x94]
ja 0x781707
mov ecx, dword [esp + 0x1c]
mov edi, dword [esp + 0x24]
imul ecx, esi
add ecx, dword [esp + 0x20]
movzx ebx, byte [esp + 0xa0]
lea edi, [ecx + edi*4]
movzx ecx, byte [edi]
imul ecx, ebx
movzx ebx, byte [esp + 0xa1]
sar ecx, 8
mov byte [edi], cl
movzx ecx, byte [edi + 1]
imul ecx, ebx
mov bl, byte [esp + 0xa2]
sar ecx, 8
mov byte [edi + 1], cl
movzx ecx, byte [edi + 2]
mov dword [esp + 0x2c], edi
movzx edi, bl
imul ecx, edi
mov edi, dword [esp + 0x2c]
sar ecx, 8
mov byte [edi + 2], cl
mov ecx, dword [esp + 0x98]
mov edi, dword [esp + 0x90]
add ecx, edi
mov dword [esp + 0x24], ecx
sub ecx, dword [esp + 0x78]
cmp ecx, dword [esp + 0x34]
ja 0x7817a0
mov ecx, dword [esp + 0x7c]
mov edi, dword [esp + 0x84]
sub esi, ecx
sub edi, ecx
cmp esi, edi
mov esi, dword [esp + 0x94]
ja 0x7817a0
mov ecx, dword [esp + 0x1c]
mov edi, dword [esp + 0x24]
imul ecx, esi
add ecx, dword [esp + 0x20]
movzx ebx, byte [esp + 0xa0]
lea edi, [ecx + edi*4]
movzx ecx, byte [edi]
imul ecx, ebx
movzx ebx, byte [esp + 0xa1]
sar ecx, 8
mov byte [edi], cl
movzx ecx, byte [edi + 1]
imul ecx, ebx
mov bl, byte [esp + 0xa2]
sar ecx, 8
mov byte [edi + 1], cl
movzx ecx, byte [edi + 2]
mov dword [esp + 0x2c], edi
movzx edi, bl
imul ecx, edi
mov edi, dword [esp + 0x2c]
sar ecx, 8
mov byte [edi + 2], cl
cmp dword [esp + 0x18], 0
mov dword [esp + 0x2c], 0
jge 0x7817e9
mov eax, dword [esp + 0x9c]
mov ecx, dword [esp + 0x30]
cmp eax, ecx
jl 0x7817cd
mov ebp, 1
sub eax, ecx
mov dword [esp + 0x2c], ebp
mov edi, dword [esp + 0x18]
lea ecx, [ebp*4]
add dword [esp + 0x14], ecx
lea edi, [edi + ecx + 2]
mov dword [esp + 0x18], edi
jmp 0x781857
mov edx, dword [esp + 0x98]
add edx, 0xffffffff
cmp dword [esp + 0x14], 0
mov dword [esp + 0x2c], 1
jl 0x781821
lea ecx, [edx*4]
sub dword [esp + 0x18], ecx
mov edi, 2
sub edi, ecx
add dword [esp + 0x14], edi
jmp 0x781857
mov eax, dword [esp + 0x9c]
mov ecx, dword [esp + 0x30]
cmp eax, ecx
jl 0x781837
mov ebp, 1
sub eax, ecx
mov edi, dword [esp + 0x18]
mov ecx, ebp
sub ecx, edx
add ecx, ecx
add ecx, ecx
lea edi, [edi + ecx + 2]
mov dword [esp + 0x18], edi
mov edi, dword [esp + 0x14]
lea ecx, [edi + ecx + 2]
mov dword [esp + 0x14], ecx
test edx, edx
jle 0x787eda
lea ecx, [edx*4]
mov dword [esp + 0x74], ecx
mov ecx, dword [esp + 0x90]
add ecx, edx
add ecx, ecx
add ecx, ecx
mov dword [esp + 0x5c], ecx
mov edi, dword [esp + 0x7c]
mov ecx, edx
sub ecx, dword [esp + 0x78]
add ecx, dword [esp + 0x90]
mov dword [esp + 0x60], ecx
lea ecx, [esi + ebp]
imul ecx, dword [esp + 0x1c]
mov dword [esp + 0x54], ecx
mov ecx, ebp
sub ecx, edi
add ecx, esi
mov dword [esp + 0x58], ecx
mov ecx, dword [esp + 0x1c]
neg ecx
mov dword [esp + 0x3c], ecx
mov ecx, esi
sub ecx, edi
sub ecx, ebp
mov dword [esp + 0x50], ecx
mov ecx, dword [esp + 0x90]
sub ecx, dword [esp + 0x78]
sub esi, ebp
imul esi, dword [esp + 0x1c]
sub ecx, edx
mov dword [esp + 0x64], ecx
mov ecx, dword [esp + 0x90]
sub ecx, edx
add ecx, ecx
add ecx, ecx
mov dword [esp + 0x70], esi
mov dword [esp + 0x68], ecx
jmp 0x7818f0
cmp dword [esp + 0x2c], 0
mov edi, 4
je 0x781ad6
mov ecx, dword [esp + 0x34]
cmp dword [esp + 0x64], ecx
ja 0x781978
mov ecx, dword [esp + 0x84]
sub ecx, dword [esp + 0x7c]
cmp dword [esp + 0x58], ecx
ja 0x781978
mov ecx, dword [esp + 0x68]
mov edi, dword [esp + 0x54]
movzx ebx, byte [esp + 0xa0]
add edi, ecx
add edi, dword [esp + 0x20]
movzx ecx, byte [edi]
imul ecx, ebx
movzx ebx, byte [esp + 0xa1]
sar ecx, 8
mov byte [edi], cl
movzx ecx, byte [edi + 1]
imul ecx, ebx
mov bl, byte [esp + 0xa2]
sar ecx, 8
mov byte [edi + 1], cl
movzx ecx, byte [edi + 2]
mov dword [esp + 0x2c], edi
movzx edi, bl
imul ecx, edi
mov edi, dword [esp + 0x2c]
sar ecx, 8
mov byte [edi + 2], cl
mov ecx, dword [esp + 0x34]
cmp dword [esp + 0x60], ecx
ja 0x7819f0
mov ecx, dword [esp + 0x84]
sub ecx, dword [esp + 0x7c]
cmp dword [esp + 0x58], ecx
ja 0x7819f0
mov ecx, dword [esp + 0x54]
mov edi, dword [esp + 0x5c]
movzx ebx, byte [esp + 0xa0]
add edi, ecx
add edi, dword [esp + 0x20]
movzx ecx, byte [edi]
imul ecx, ebx
movzx ebx, byte [esp + 0xa1]
sar ecx, 8
mov byte [edi], cl
movzx ecx, byte [edi + 1]
imul ecx, ebx
mov bl, byte [esp + 0xa2]
sar ecx, 8
mov byte [edi + 1], cl
movzx ecx, byte [edi + 2]
mov dword [esp + 0x2c], edi
movzx edi, bl
imul ecx, edi
mov edi, dword [esp + 0x2c]
sar ecx, 8
mov byte [edi + 2], cl
mov ecx, dword [esp + 0x34]
cmp dword [esp + 0x64], ecx
ja 0x781a61
mov ecx, dword [esp + 0x84]
sub ecx, dword [esp + 0x7c]
cmp dword [esp + 0x50], ecx
ja 0x781a61
mov ecx, dword [esp + 0x68]
lea edi, [ecx + esi]
add edi, dword [esp + 0x20]
movzx esi, byte [esp + 0xa0]
movzx ecx, byte [edi]
imul ecx, esi
movzx esi, byte [esp + 0xa1]
mov bl, byte [esp + 0xa2]
sar ecx, 8
mov byte [edi], cl
movzx ecx, byte [edi + 1]
imul ecx, esi
sar ecx, 8
mov byte [edi + 1], cl
movzx ecx, byte [edi + 2]
movzx esi, bl
imul ecx, esi
mov esi, dword [esp + 0x70]
sar ecx, 8
mov byte [edi + 2], cl
mov ecx, dword [esp + 0x34]
cmp dword [esp + 0x60], ecx
ja 0x781ad1
mov ecx, dword [esp + 0x84]
sub ecx, dword [esp + 0x7c]
cmp dword [esp + 0x50], ecx
ja 0x781ad1
mov ecx, dword [esp + 0x5c]
movzx edi, byte [esp + 0xa0]
add esi, ecx
add esi, dword [esp + 0x20]
mov bl, byte [esp + 0xa2]
movzx ecx, byte [esi]
imul ecx, edi
movzx edi, byte [esp + 0xa1]
sar ecx, 8
mov byte [esi], cl
movzx ecx, byte [esi + 1]
imul ecx, edi
sar ecx, 8
mov byte [esi + 1], cl
movzx ecx, byte [esi + 2]
movzx edi, bl
imul ecx, edi
sar ecx, 8
mov byte [esi + 2], cl
mov esi, dword [esp + 0x70]
mov edi, 4
cmp dword [esp + 0x18], 0
mov dword [esp + 0x2c], 0
jge 0x781b3f
add eax, dword [esp + 0x9c]
mov ecx, dword [esp + 0x30]
cmp eax, ecx
jl 0x781b23
add esi, dword [esp + 0x3c]
mov edi, dword [esp + 0x1c]
add dword [esp + 0x58], 1
add dword [esp + 0x54], edi
sub dword [esp + 0x50], 1
add ebp, 1
mov dword [esp + 0x70], esi
sub eax, ecx
mov dword [esp + 0x2c], 1
mov edi, dword [esp + 0x18]
lea ecx, [ebp*4]
add dword [esp + 0x14], ecx
lea edi, [edi + ecx + 2]
mov dword [esp + 0x18], edi
jmp 0x781bd5
add dword [esp + 0x68], edi
sub dword [esp + 0x5c], edi
mov ecx, 1
add dword [esp + 0x64], ecx
sub dword [esp + 0x60], ecx
sub edx, ecx
cmp dword [esp + 0x14], 0
mov dword [esp + 0x2c], ecx
jl 0x781b7f
mov ecx, dword [esp + 0x74]
sub ecx, edi
sub dword [esp + 0x18], ecx
mov edi, 2
sub edi, ecx
add dword [esp + 0x14], edi
mov dword [esp + 0x74], ecx
jmp 0x781bd5
add eax, dword [esp + 0x9c]
mov ecx, dword [esp + 0x30]
sub dword [esp + 0x74], edi
cmp eax, ecx
jl 0x781bb5
add esi, dword [esp + 0x3c]
mov edi, dword [esp + 0x1c]
add dword [esp + 0x58], 1
add dword [esp + 0x54], edi
sub dword [esp + 0x50], 1
add ebp, 1
mov dword [esp + 0x70], esi
sub eax, ecx
mov edi, dword [esp + 0x18]
mov ecx, ebp
sub ecx, edx
add ecx, ecx
add ecx, ecx
lea edi, [edi + ecx + 2]
mov dword [esp + 0x18], edi
mov edi, dword [esp + 0x14]
lea ecx, [edi + ecx + 2]
mov dword [esp + 0x14], ecx
test edx, edx
jg 0x7818f0
jmp 0x787ed3
mov ecx, dword [esp + 0x90]
sub ecx, dword [esp + 0x98]
mov edi, dword [esp + 0x78]
mov esi, dword [esp + 0x80]
mov dword [esp + 0x24], ecx
sub esi, edi
sub ecx, edi
cmp ecx, esi
mov dword [esp + 0x34], esi
ja 0x781cbd
mov ecx, dword [esp + 0x7c]
mov esi, dword [esp + 0x84]
mov edi, dword [esp + 0x94]
sub esi, ecx
sub edi, ecx
cmp edi, esi
ja 0x781cb9
mov ecx, dword [esp + 0x1c]
imul ecx, dword [esp + 0x94]
add ecx, dword [esp + 0x20]
mov esi, dword [esp + 0x24]
movzx edi, byte [ecx + esi*4]
lea esi, [ecx + esi*4]
movzx ecx, byte [esp + 0xa0]
imul ecx, edi
sar ecx, 8
movzx ecx, cl
sub ecx, edi
imul ecx, dword [0xb160b8]
shl edi, 8
add ecx, edi
sar ecx, 8
mov byte [esi], cl
movzx edi, byte [esi + 1]
movzx ecx, byte [esp + 0xa1]
imul ecx, edi
sar ecx, 8
movzx ecx, cl
sub ecx, edi
imul ecx, dword [0xb160b8]
shl edi, 8
add ecx, edi
sar ecx, 8
mov byte [esi + 1], cl
movzx edi, byte [esi + 2]
movzx ecx, bl
imul ecx, edi
sar ecx, 8
movzx ecx, cl
sub ecx, edi
imul ecx, dword [0xb160b8]
shl edi, 8
add ecx, edi
sar ecx, 8
mov byte [esi + 2], cl
mov esi, dword [esp + 0x34]
mov ecx, dword [esp + 0x90]
mov edi, dword [esp + 0x98]
add ecx, edi
mov dword [esp + 0x24], ecx
sub ecx, dword [esp + 0x78]
cmp ecx, esi
ja 0x781d87
mov ecx, dword [esp + 0x7c]
mov esi, dword [esp + 0x84]
mov edi, dword [esp + 0x94]
sub esi, ecx
sub edi, ecx
cmp edi, esi
ja 0x781d87
mov ecx, dword [esp + 0x1c]
imul ecx, dword [esp + 0x94]
add ecx, dword [esp + 0x20]
mov esi, dword [esp + 0x24]
movzx edi, byte [ecx + esi*4]
lea esi, [ecx + esi*4]
movzx ecx, byte [esp + 0xa0]
imul ecx, edi
sar ecx, 8
movzx ecx, cl
sub ecx, edi
imul ecx, dword [0xb160b8]
shl edi, 8
add ecx, edi
sar ecx, 8
mov byte [esi], cl
movzx edi, byte [esi + 1]
movzx ecx, byte [esp + 0xa1]
imul ecx, edi
sar ecx, 8
movzx ecx, cl
sub ecx, edi
imul ecx, dword [0xb160b8]
shl edi, 8
add ecx, edi
sar ecx, 8
mov byte [esi + 1], cl
movzx edi, byte [esi + 2]
movzx ecx, bl
imul ecx, edi
sar ecx, 8
movzx ecx, cl
sub ecx, edi
imul ecx, dword [0xb160b8]
shl edi, 8
add ecx, edi
sar ecx, 8
mov byte [esi + 2], cl
mov esi, dword [esp + 0x18]
test esi, esi
mov edi, dword [esp + 0x30]
mov dword [esp + 0x2c], 0
jge 0x781dcd
mov eax, dword [esp + 0x9c]
cmp eax, edi
jl 0x781db5
mov ebp, 1
sub eax, edi
mov dword [esp + 0x2c], ebp
lea ecx, [ebp*4]
add dword [esp + 0x14], ecx
lea esi, [esi + ecx + 2]
mov dword [esp + 0x18], esi
jmp 0x781e35
mov edx, dword [esp + 0x98]
add edx, 0xffffffff
cmp dword [esp + 0x14], 0
mov dword [esp + 0x2c], 1
jl 0x781e03
lea ecx, [edx*4]
sub esi, ecx
mov dword [esp + 0x18], esi
mov esi, 2
sub esi, ecx
add dword [esp + 0x14], esi
jmp 0x781e35
mov eax, dword [esp + 0x9c]
cmp eax, edi
jl 0x781e15
mov ebp, 1
sub eax, edi
mov ecx, dword [esp + 0x18]
mov esi, ebp
sub esi, edx
add esi, esi
add esi, esi
lea ecx, [ecx + esi + 2]
mov dword [esp + 0x18], ecx
mov ecx, dword [esp + 0x14]
lea ecx, [ecx + esi + 2]
mov dword [esp + 0x14], ecx
test edx, edx
jle 0x7822a2
lea ecx, [edx*4]
mov dword [esp + 0x74], ecx
mov ecx, dword [esp + 0x90]
add ecx, edx
add ecx, ecx
add ecx, ecx
mov dword [esp + 0x5c], ecx
mov esi, dword [esp + 0x7c]
mov ecx, edx
sub ecx, dword [esp + 0x78]
add ecx, dword [esp + 0x90]
mov dword [esp + 0x60], ecx
mov ecx, dword [esp + 0x94]
add ecx, ebp
imul ecx, dword [esp + 0x1c]
mov dword [esp + 0x54], ecx
mov ecx, ebp
sub ecx, esi
add ecx, dword [esp + 0x94]
mov dword [esp + 0x58], ecx
mov ecx, dword [esp + 0x1c]
neg ecx
mov dword [esp + 0x3c], ecx
mov ecx, dword [esp + 0x94]
sub ecx, esi
sub ecx, ebp
mov dword [esp + 0x4c], ecx
mov ecx, dword [esp + 0x90]
sub ecx, dword [esp + 0x78]
sub ecx, edx
mov dword [esp + 0x64], ecx
mov ecx, dword [esp + 0x94]
sub ecx, ebp
imul ecx, dword [esp + 0x1c]
mov dword [esp + 0x50], ecx
mov ecx, dword [esp + 0x90]
sub ecx, edx
add ecx, ecx
add ecx, ecx
mov dword [esp + 0x68], ecx
lea esp, [esp]
cmp dword [esp + 0x2c], 0
mov esi, 4
je 0x7821a9
mov ecx, dword [esp + 0x64]
cmp ecx, dword [esp + 0x34]
ja 0x781f9d
mov ecx, dword [esp + 0x84]
sub ecx, dword [esp + 0x7c]
cmp dword [esp + 0x58], ecx
ja 0x781f9d
mov ecx, dword [esp + 0x68]
mov esi, dword [esp + 0x54]
add esi, ecx
add esi, dword [esp + 0x20]
movzx ecx, byte [esp + 0xa0]
movzx edi, byte [esi]
imul ecx, edi
sar ecx, 8
movzx ecx, cl
sub ecx, edi
imul ecx, dword [0xb160b8]
mov dword [esp + 0x48], edi
shl edi, 8
add ecx, edi
sar ecx, 8
mov byte [esi], cl
movzx edi, byte [esi + 1]
movzx ecx, byte [esp + 0xa1]
imul ecx, edi
sar ecx, 8
movzx ecx, cl
sub ecx, edi
imul ecx, dword [0xb160b8]
shl edi, 8
add ecx, edi
sar ecx, 8
mov byte [esi + 1], cl
movzx edi, byte [esi + 2]
movzx ecx, bl
imul ecx, edi
sar ecx, 8
movzx ecx, cl
sub ecx, edi
imul ecx, dword [0xb160b8]
shl edi, 8
add ecx, edi
mov edi, dword [esp + 0x30]
sar ecx, 8
mov byte [esi + 2], cl
mov ecx, dword [esp + 0x34]
cmp dword [esp + 0x60], ecx
ja 0x78204a
mov ecx, dword [esp + 0x84]
sub ecx, dword [esp + 0x7c]
cmp dword [esp + 0x58], ecx
ja 0x78204a
mov ecx, dword [esp + 0x54]
mov esi, dword [esp + 0x5c]
add esi, ecx
add esi, dword [esp + 0x20]
movzx ecx, byte [esp + 0xa0]
movzx edi, byte [esi]
imul ecx, edi
sar ecx, 8
movzx ecx, cl
sub ecx, edi
imul ecx, dword [0xb160b8]
mov dword [esp + 0x48], edi
shl edi, 8
add ecx, edi
sar ecx, 8
mov byte [esi], cl
movzx edi, byte [esi + 1]
movzx ecx, byte [esp + 0xa1]
imul ecx, edi
sar ecx, 8
movzx ecx, cl
sub ecx, edi
imul ecx, dword [0xb160b8]
shl edi, 8
add ecx, edi
sar ecx, 8
mov byte [esi + 1], cl
movzx edi, byte [esi + 2]
movzx ecx, bl
imul ecx, edi
sar ecx, 8
movzx ecx, cl
sub ecx, edi
imul ecx, dword [0xb160b8]
shl edi, 8
add ecx, edi
mov edi, dword [esp + 0x30]
sar ecx, 8
mov byte [esi + 2], cl
mov ecx, dword [esp + 0x34]
cmp dword [esp + 0x64], ecx
ja 0x7820f7
mov ecx, dword [esp + 0x84]
sub ecx, dword [esp + 0x7c]
cmp dword [esp + 0x4c], ecx
ja 0x7820f7
mov ecx, dword [esp + 0x68]
mov esi, dword [esp + 0x50]
add esi, ecx
add esi, dword [esp + 0x20]
movzx ecx, byte [esp + 0xa0]
movzx edi, byte [esi]
imul ecx, edi
sar ecx, 8
movzx ecx, cl
sub ecx, edi
imul ecx, dword [0xb160b8]
mov dword [esp + 0x48], edi
shl edi, 8
add ecx, edi
sar ecx, 8
mov byte [esi], cl
movzx edi, byte [esi + 1]
movzx ecx, byte [esp + 0xa1]
imul ecx, edi
sar ecx, 8
movzx ecx, cl
sub ecx, edi
imul ecx, dword [0xb160b8]
shl edi, 8
add ecx, edi
sar ecx, 8
mov byte [esi + 1], cl
movzx edi, byte [esi + 2]
movzx ecx, bl
imul ecx, edi
sar ecx, 8
movzx ecx, cl
sub ecx, edi
imul ecx, dword [0xb160b8]
shl edi, 8
add ecx, edi
mov edi, dword [esp + 0x30]
sar ecx, 8
mov byte [esi + 2], cl
mov ecx, dword [esp + 0x60]
cmp ecx, dword [esp + 0x34]
ja 0x7821a4
mov ecx, dword [esp + 0x84]
sub ecx, dword [esp + 0x7c]
cmp dword [esp + 0x4c], ecx
ja 0x7821a4
mov ecx, dword [esp + 0x50]
mov esi, dword [esp + 0x5c]
add esi, ecx
add esi, dword [esp + 0x20]
movzx ecx, byte [esp + 0xa0]
movzx edi, byte [esi]
imul ecx, edi
sar ecx, 8
movzx ecx, cl
sub ecx, edi
imul ecx, dword [0xb160b8]
mov dword [esp + 0x48], edi
shl edi, 8
add ecx, edi
sar ecx, 8
mov byte [esi], cl
movzx edi, byte [esi + 1]
movzx ecx, byte [esp + 0xa1]
imul ecx, edi
sar ecx, 8
movzx ecx, cl
sub ecx, edi
imul ecx, dword [0xb160b8]
shl edi, 8
add ecx, edi
sar ecx, 8
mov byte [esi + 1], cl
movzx edi, byte [esi + 2]
movzx ecx, bl
imul ecx, edi
sar ecx, 8
movzx ecx, cl
sub ecx, edi
imul ecx, dword [0xb160b8]
shl edi, 8
add ecx, edi
mov edi, dword [esp + 0x30]
sar ecx, 8
mov byte [esi + 2], cl
mov esi, 4
cmp dword [esp + 0x18], 0
mov dword [esp + 0x2c], 0
jge 0x78220e
add eax, dword [esp + 0x9c]
cmp eax, edi
jl 0x7821f2
mov ecx, dword [esp + 0x1c]
add dword [esp + 0x54], ecx
mov ecx, dword [esp + 0x3c]
add dword [esp + 0x50], ecx
add dword [esp + 0x58], 1
mov ecx, 1
sub dword [esp + 0x4c], ecx
add ebp, 1
sub eax, edi
mov dword [esp + 0x2c], ecx
mov esi, dword [esp + 0x18]
lea ecx, [ebp*4]
add dword [esp + 0x14], ecx
lea esi, [esi + ecx + 2]
mov dword [esp + 0x18], esi
jmp 0x78229a
add dword [esp + 0x68], esi
sub dword [esp + 0x5c], esi
mov ecx, 1
add dword [esp + 0x64], ecx
sub dword [esp + 0x60], ecx
sub edx, ecx
cmp dword [esp + 0x14], 0
mov dword [esp + 0x2c], ecx
jl 0x78224e
mov ecx, dword [esp + 0x74]
sub ecx, esi
sub dword [esp + 0x18], ecx
mov esi, 2
sub esi, ecx
add dword [esp + 0x14], esi
mov dword [esp + 0x74], ecx
jmp 0x78229a
add eax, dword [esp + 0x9c]
sub dword [esp + 0x74], esi
cmp eax, edi
jl 0x78227a
add dword [esp + 0x58], ecx
sub dword [esp + 0x4c], 1
add ebp, ecx
mov ecx, dword [esp + 0x1c]
add dword [esp + 0x54], ecx
mov ecx, dword [esp + 0x3c]
add dword [esp + 0x50], ecx
sub eax, edi
mov ecx, dword [esp + 0x18]
mov esi, ebp
sub esi, edx
add esi, esi
add esi, esi
lea ecx, [ecx + esi + 2]
mov dword [esp + 0x18], ecx
mov ecx, dword [esp + 0x14]
lea ecx, [ecx + esi + 2]
mov dword [esp + 0x14], ecx
test edx, edx
jg 0x781ee0
mov eax, dword [esp + 0x90]
mov esi, dword [esp + 0x94]
add eax, edx
mov ecx, eax
sub ecx, dword [esp + 0x78]
sub esi, ebp
cmp ecx, dword [esp + 0x34]
ja 0x78235e
mov edi, dword [esp + 0x84]
sub edi, dword [esp + 0x7c]
mov ecx, esi
sub ecx, dword [esp + 0x7c]
cmp ecx, edi
ja 0x78235e
imul esi, dword [esp + 0x1c]
add esi, dword [esp + 0x20]
movzx edi, byte [esi + eax*4]
lea esi, [esi + eax*4]
movzx eax, byte [esp + 0xa0]
imul eax, edi
sar eax, 8
movzx ecx, al
sub ecx, edi
imul ecx, dword [0xb160b8]
movzx eax, byte [esp + 0xa1]
shl edi, 8
add ecx, edi
sar ecx, 8
mov byte [esi], cl
movzx edi, byte [esi + 1]
imul eax, edi
sar eax, 8
movzx ecx, al
sub ecx, edi
imul ecx, dword [0xb160b8]
shl edi, 8
add ecx, edi
sar ecx, 8
mov byte [esi + 1], cl
movzx edi, byte [esi + 2]
movzx eax, bl
imul eax, edi
sar eax, 8
movzx ecx, al
sub ecx, edi
imul ecx, dword [0xb160b8]
shl edi, 8
add ecx, edi
sar ecx, 8
mov byte [esi + 2], cl
mov eax, dword [esp + 0x90]
sub eax, edx
mov edx, dword [esp + 0x94]
mov ecx, eax
sub ecx, dword [esp + 0x78]
add ebp, edx
cmp ecx, dword [esp + 0x34]
ja case.0x789050.5
mov edx, dword [esp + 0x7c]
mov ecx, dword [esp + 0x84]
mov esi, ebp
sub esi, edx
sub ecx, edx
cmp esi, ecx
ja case.0x789050.5
imul ebp, dword [esp + 0x1c]
add ebp, dword [esp + 0x20]
movzx esi, byte [ebp + eax*4]
movzx edx, byte [esp + 0xa0]
imul edx, esi
lea eax, [ebp + eax*4]
sar edx, 8
movzx ecx, dl
sub ecx, esi
imul ecx, dword [0xb160b8]
movzx edx, byte [esp + 0xa1]
shl esi, 8
add ecx, esi
sar ecx, 8
mov byte [eax], cl
movzx esi, byte [eax + 1]
imul edx, esi
sar edx, 8
movzx ecx, dl
sub ecx, esi
imul ecx, dword [0xb160b8]
shl esi, 8
add ecx, esi
sar ecx, 8
mov byte [eax + 1], cl
movzx ecx, byte [eax + 2]
movzx edx, bl
imul edx, ecx
sar edx, 8
movzx edx, dl
sub edx, ecx
imul edx, dword [0xb160b8]
pop edi
shl ecx, 8
pop esi
add edx, ecx
sar edx, 8
pop ebp
mov byte [eax + 2], dl
pop ebx
add esp, 0x78
ret
mov ecx, dword [esp + 0x90]
sub ecx, dword [esp + 0x98]
mov edi, dword [esp + 0x78]
mov esi, dword [esp + 0x80]
sub esi, edi
mov dword [esp + 0x24], ecx
sub ecx, edi
mov dword [esp + 0x34], esi
cmp ecx, esi
mov esi, dword [esp + 0x7c]
ja 0x7824f0
mov ecx, dword [esp + 0x84]
mov edi, dword [esp + 0x94]
sub ecx, esi
sub edi, esi
cmp edi, ecx
ja 0x7824f0
mov ecx, dword [esp + 0x1c]
imul ecx, dword [esp + 0x94]
add ecx, dword [esp + 0x20]
mov esi, dword [esp + 0x24]
movzx edi, byte [ecx + esi*4]
lea esi, [ecx + esi*4]
mov cl, byte [esp + 0xa0]
not cl
movzx ecx, cl
sub ecx, edi
imul ecx, dword [0xb160b8]
shl edi, 8
add ecx, edi
sar ecx, 8
mov byte [esi], cl
mov cl, byte [esp + 0xa1]
movzx edi, byte [esi + 1]
not cl
movzx ecx, cl
sub ecx, edi
imul ecx, dword [0xb160b8]
shl edi, 8
add ecx, edi
sar ecx, 8
mov byte [esi + 1], cl
movzx edi, byte [esi + 2]
mov cl, bl
not cl
movzx ecx, cl
sub ecx, edi
imul ecx, dword [0xb160b8]
shl edi, 8
add ecx, edi
sar ecx, 8
mov byte [esi + 2], cl
mov esi, dword [esp + 0x7c]
mov ecx, dword [esp + 0x90]
mov edi, dword [esp + 0x98]
add ecx, edi
mov dword [esp + 0x24], ecx
sub ecx, dword [esp + 0x78]
cmp ecx, dword [esp + 0x34]
ja 0x7825a9
mov ecx, dword [esp + 0x84]
mov edi, dword [esp + 0x94]
sub ecx, esi
sub edi, esi
cmp edi, ecx
ja 0x7825a9
mov ecx, dword [esp + 0x1c]
imul ecx, dword [esp + 0x94]
add ecx, dword [esp + 0x20]
mov esi, dword [esp + 0x24]
movzx edi, byte [ecx + esi*4]
lea esi, [ecx + esi*4]
mov cl, byte [esp + 0xa0]
not cl
movzx ecx, cl
sub ecx, edi
imul ecx, dword [0xb160b8]
shl edi, 8
add ecx, edi
sar ecx, 8
mov byte [esi], cl
mov cl, byte [esp + 0xa1]
movzx edi, byte [esi + 1]
not cl
movzx ecx, cl
sub ecx, edi
imul ecx, dword [0xb160b8]
shl edi, 8
add ecx, edi
sar ecx, 8
mov byte [esi + 1], cl
movzx edi, byte [esi + 2]
mov cl, bl
not cl
movzx ecx, cl
sub ecx, edi
imul ecx, dword [0xb160b8]
shl edi, 8
add ecx, edi
sar ecx, 8
mov byte [esi + 2], cl
mov esi, dword [esp + 0x18]
test esi, esi
mov edi, dword [esp + 0x30]
mov dword [esp + 0x2c], 0
jge 0x7825ef
mov eax, dword [esp + 0x9c]
cmp eax, edi
jl 0x7825d7
mov ebp, 1
sub eax, edi
mov dword [esp + 0x2c], ebp
lea ecx, [ebp*4]
add dword [esp + 0x14], ecx
lea esi, [esi + ecx + 2]
mov dword [esp + 0x18], esi
jmp 0x782653
mov edx, dword [esp + 0x98]
add edx, 0xffffffff
cmp dword [esp + 0x14], 0
mov dword [esp + 0x2c], 1
jl 0x782625
lea ecx, [edx*4]
sub esi, ecx
mov dword [esp + 0x18], esi
mov esi, 2
sub esi, ecx
add dword [esp + 0x14], esi
jmp 0x782653
mov eax, dword [esp + 0x9c]
cmp eax, edi
jl 0x782637
mov ebp, 1
sub eax, edi
mov ecx, ebp
sub ecx, edx
add ecx, ecx
add ecx, ecx
lea esi, [esi + ecx + 2]
mov dword [esp + 0x18], esi
mov esi, dword [esp + 0x14]
lea ecx, [esi + ecx + 2]
mov dword [esp + 0x14], ecx
test edx, edx
jle 0x788e59
lea ecx, [edx*4]
mov dword [esp + 0x74], ecx
mov ecx, dword [esp + 0x90]
add ecx, edx
add ecx, ecx
add ecx, ecx
mov dword [esp + 0x5c], ecx
mov esi, dword [esp + 0x7c]
mov ecx, edx
sub ecx, dword [esp + 0x78]
add ecx, dword [esp + 0x90]
mov dword [esp + 0x60], ecx
mov ecx, dword [esp + 0x94]
add ecx, ebp
imul ecx, dword [esp + 0x1c]
mov dword [esp + 0x54], ecx
mov ecx, ebp
sub ecx, esi
add ecx, dword [esp + 0x94]
mov dword [esp + 0x58], ecx
mov ecx, dword [esp + 0x1c]
neg ecx
mov dword [esp + 0x3c], ecx
mov ecx, dword [esp + 0x94]
sub ecx, esi
sub ecx, ebp
mov dword [esp + 0x4c], ecx
mov ecx, dword [esp + 0x90]
sub ecx, dword [esp + 0x78]
sub ecx, edx
mov dword [esp + 0x64], ecx
mov ecx, dword [esp + 0x94]
sub ecx, ebp
imul ecx, dword [esp + 0x1c]
mov dword [esp + 0x50], ecx
mov ecx, dword [esp + 0x90]
sub ecx, edx
add ecx, ecx
add ecx, ecx
mov dword [esp + 0x68], ecx
lea ebx, [ebx]
cmp dword [esp + 0x2c], 0
mov esi, 4
je 0x78298d
mov ecx, dword [esp + 0x64]
cmp ecx, dword [esp + 0x34]
ja 0x7827ae
mov ecx, dword [esp + 0x84]
sub ecx, dword [esp + 0x7c]
cmp dword [esp + 0x58], ecx
ja 0x7827ae
mov ecx, dword [esp + 0x68]
mov esi, dword [esp + 0x54]
add esi, ecx
add esi, dword [esp + 0x20]
mov cl, byte [esp + 0xa0]
movzx edi, byte [esi]
not cl
movzx ecx, cl
sub ecx, edi
imul ecx, dword [0xb160b8]
mov dword [esp + 0x48], edi
shl edi, 8
add ecx, edi
sar ecx, 8
mov byte [esi], cl
mov cl, byte [esp + 0xa1]
movzx edi, byte [esi + 1]
not cl
movzx ecx, cl
sub ecx, edi
imul ecx, dword [0xb160b8]
shl edi, 8
add ecx, edi
sar ecx, 8
mov byte [esi + 1], cl
movzx edi, byte [esi + 2]
mov cl, bl
not cl
movzx ecx, cl
sub ecx, edi
imul ecx, dword [0xb160b8]
shl edi, 8
add ecx, edi
mov edi, dword [esp + 0x30]
sar ecx, 8
mov byte [esi + 2], cl
mov ecx, dword [esp + 0x34]
cmp dword [esp + 0x60], ecx
ja 0x78284c
mov ecx, dword [esp + 0x84]
sub ecx, dword [esp + 0x7c]
cmp dword [esp + 0x58], ecx
ja 0x78284c
mov ecx, dword [esp + 0x54]
mov esi, dword [esp + 0x5c]
add esi, ecx
add esi, dword [esp + 0x20]
mov cl, byte [esp + 0xa0]
movzx edi, byte [esi]
not cl
movzx ecx, cl
sub ecx, edi
imul ecx, dword [0xb160b8]
mov dword [esp + 0x48], edi
shl edi, 8
add ecx, edi
sar ecx, 8
mov byte [esi], cl
mov cl, byte [esp + 0xa1]
movzx edi, byte [esi + 1]
not cl
movzx ecx, cl
sub ecx, edi
imul ecx, dword [0xb160b8]
shl edi, 8
add ecx, edi
sar ecx, 8
mov byte [esi + 1], cl
movzx edi, byte [esi + 2]
mov cl, bl
not cl
movzx ecx, cl
sub ecx, edi
imul ecx, dword [0xb160b8]
shl edi, 8
add ecx, edi
mov edi, dword [esp + 0x30]
sar ecx, 8
mov byte [esi + 2], cl
mov ecx, dword [esp + 0x34]
cmp dword [esp + 0x64], ecx
ja 0x7828ea
mov ecx, dword [esp + 0x84]
sub ecx, dword [esp + 0x7c]
cmp dword [esp + 0x4c], ecx
ja 0x7828ea
mov ecx, dword [esp + 0x68]
mov esi, dword [esp + 0x50]
add esi, ecx
add esi, dword [esp + 0x20]
mov cl, byte [esp + 0xa0]
movzx edi, byte [esi]
not cl
movzx ecx, cl
sub ecx, edi
imul ecx, dword [0xb160b8]
mov dword [esp + 0x48], edi
shl edi, 8
add ecx, edi
sar ecx, 8
mov byte [esi], cl
mov cl, byte [esp + 0xa1]
movzx edi, byte [esi + 1]
not cl
movzx ecx, cl
sub ecx, edi
imul ecx, dword [0xb160b8]
shl edi, 8
add ecx, edi
sar ecx, 8
mov byte [esi + 1], cl
movzx edi, byte [esi + 2]
mov cl, bl
not cl
movzx ecx, cl
sub ecx, edi
imul ecx, dword [0xb160b8]
shl edi, 8
add ecx, edi
mov edi, dword [esp + 0x30]
sar ecx, 8
mov byte [esi + 2], cl
mov ecx, dword [esp + 0x60]
cmp ecx, dword [esp + 0x34]
ja 0x782988
mov ecx, dword [esp + 0x84]
sub ecx, dword [esp + 0x7c]
cmp dword [esp + 0x4c], ecx
ja 0x782988
mov ecx, dword [esp + 0x50]
mov esi, dword [esp + 0x5c]
add esi, ecx
add esi, dword [esp + 0x20]
mov cl, byte [esp + 0xa0]
movzx edi, byte [esi]
not cl
movzx ecx, cl
sub ecx, edi
imul ecx, dword [0xb160b8]
mov dword [esp + 0x48], edi
shl edi, 8
add ecx, edi
sar ecx, 8
mov byte [esi], cl
mov cl, byte [esp + 0xa1]
movzx edi, byte [esi + 1]
not cl
movzx ecx, cl
sub ecx, edi
imul ecx, dword [0xb160b8]
shl edi, 8
add ecx, edi
sar ecx, 8
mov byte [esi + 1], cl
movzx edi, byte [esi + 2]
mov cl, bl
not cl
movzx ecx, cl
sub ecx, edi
imul ecx, dword [0xb160b8]
shl edi, 8
add ecx, edi
mov edi, dword [esp + 0x30]
sar ecx, 8
mov byte [esi + 2], cl
mov esi, 4
cmp dword [esp + 0x18], 0
mov dword [esp + 0x2c], 0
jge 0x7829f2
add eax, dword [esp + 0x9c]
cmp eax, edi
jl 0x7829d6
mov ecx, dword [esp + 0x1c]
add dword [esp + 0x54], ecx
mov ecx, dword [esp + 0x3c]
add dword [esp + 0x50], ecx
add dword [esp + 0x58], 1
mov ecx, 1
sub dword [esp + 0x4c], ecx
add ebp, 1
sub eax, edi
mov dword [esp + 0x2c], ecx
mov esi, dword [esp + 0x18]
lea ecx, [ebp*4]
add dword [esp + 0x14], ecx
lea esi, [esi + ecx + 2]
mov dword [esp + 0x18], esi
jmp 0x782a7e
add dword [esp + 0x68], esi
sub dword [esp + 0x5c], esi
mov ecx, 1
add dword [esp + 0x64], ecx
sub dword [esp + 0x60], ecx
sub edx, ecx
cmp dword [esp + 0x14], 0
mov dword [esp + 0x2c], ecx
jl 0x782a32
mov ecx, dword [esp + 0x74]
sub ecx, esi
sub dword [esp + 0x18], ecx
mov esi, 2
sub esi, ecx
add dword [esp + 0x14], esi
mov dword [esp + 0x74], ecx
jmp 0x782a7e
add eax, dword [esp + 0x9c]
sub dword [esp + 0x74], esi
cmp eax, edi
jl 0x782a5e
add dword [esp + 0x58], ecx
sub dword [esp + 0x4c], 1
add ebp, ecx
mov ecx, dword [esp + 0x1c]
add dword [esp + 0x54], ecx
mov ecx, dword [esp + 0x3c]
add dword [esp + 0x50], ecx
sub eax, edi
mov ecx, dword [esp + 0x18]
mov esi, ebp
sub esi, edx
add esi, esi
add esi, esi
lea ecx, [ecx + esi + 2]
mov dword [esp + 0x18], ecx
mov ecx, dword [esp + 0x14]
lea ecx, [ecx + esi + 2]
mov dword [esp + 0x14], ecx
test edx, edx
jg 0x782700
jmp 0x788e59
mov ebx, dword [0xb160d4]
mov ecx, ebx
and ecx, 0xffffff
cmp ecx, 0xffffff
je 0x782b00
mov eax, dword [esp + 0xa0]
mov ecx, eax
sar ecx, 5
and ecx, 0x3f
movzx ebx, bh
imul ecx, ebx
movzx ebx, byte [0xb160d4]
and eax, 0x1f
imul eax, ebx
movzx ebx, byte [0xb160d6]
sar eax, 5
and ecx, 0xffffff07
or ecx, eax
mov eax, dword [esp + 0xa0]
sar eax, 8
and eax, 0xfffffff8
imul eax, ebx
and eax, 0xfffff800
sar ecx, 3
or ecx, eax
mov eax, dword [esp + 0x28]
mov dword [esp + 0xa0], ecx
jmp 0x782b07
mov ecx, dword [esp + 0xa0]
mov ebx, dword [0xb160b4]
cmp ebx, 0xb
ja case.0x789050.5
jmp dword [ebx*4 + 0x78c7f4]
mov esi, dword [0xb160b8]
cmp esi, 0xff
jne 0x782fb5
mov esi, dword [esp + 0x90]
mov ebx, dword [esp + 0x78]
mov edi, dword [esp + 0x80]
sub edi, ebx
mov ecx, esi
sub ecx, dword [esp + 0x98]
mov dword [esp + 0x34], edi
mov edi, ecx
sub edi, ebx
cmp edi, dword [esp + 0x34]
ja 0x782b94
mov edi, dword [esp + 0x84]
mov ebx, dword [esp + 0x94]
sub edi, dword [esp + 0x7c]
sub ebx, dword [esp + 0x7c]
cmp ebx, edi
ja 0x782b94
mov edi, dword [esp + 0x1c]
imul edi, dword [esp + 0x94]
add edi, dword [esp + 0x20]
mov bx, word [esp + 0xa0]
mov word [edi + ecx*2], bx
mov ecx, dword [esp + 0x98]
add ecx, esi
sub ecx, dword [esp + 0x78]
cmp ecx, dword [esp + 0x34]
ja 0x782bee
mov ecx, dword [esp + 0x7c]
mov edi, dword [esp + 0x84]
mov ebx, dword [esp + 0x94]
sub edi, ecx
sub ebx, ecx
cmp ebx, edi
ja 0x782bee
mov edi, dword [esp + 0x1c]
imul edi, dword [esp + 0x94]
add edi, dword [esp + 0x20]
mov ecx, dword [esp + 0x98]
mov bx, word [esp + 0xa0]
add ecx, esi
mov word [edi + ecx*2], bx
mov ebx, dword [esp + 0x18]
test ebx, ebx
mov dword [esp + 0x2c], 0
jge 0x782c34
mov eax, dword [esp + 0x9c]
mov edi, dword [esp + 0x30]
cmp eax, edi
jl 0x782c1c
mov ebp, 1
sub eax, edi
mov dword [esp + 0x2c], ebp
lea ecx, [ebp*4]
add dword [esp + 0x14], ecx
lea ebx, [ebx + ecx + 2]
mov dword [esp + 0x18], ebx
jmp 0x782ca0
mov edx, dword [esp + 0x98]
add edx, 0xffffffff
cmp dword [esp + 0x14], 0
mov dword [esp + 0x2c], 1
jl 0x782c6e
lea ecx, [edx*4]
mov edi, 2
sub edi, ecx
sub ebx, ecx
add dword [esp + 0x14], edi
mov edi, dword [esp + 0x30]
mov dword [esp + 0x18], ebx
jmp 0x782ca0
mov eax, dword [esp + 0x9c]
mov edi, dword [esp + 0x30]
cmp eax, edi
jl 0x782c84
mov ebp, 1
sub eax, edi
mov ecx, ebp
sub ecx, edx
add ecx, ecx
add ecx, ecx
lea ebx, [ebx + ecx + 2]
mov dword [esp + 0x18], ebx
mov ebx, dword [esp + 0x14]
lea ecx, [ebx + ecx + 2]
mov dword [esp + 0x14], ecx
test edx, edx
jle 0x782f1c
lea ecx, [edx*4]
mov dword [esp + 0x74], ecx
lea ecx, [edx + esi]
add ecx, ecx
mov dword [esp + 0x60], ecx
mov ebx, dword [esp + 0x94]
mov ecx, edx
sub ecx, dword [esp + 0x78]
add ecx, esi
mov dword [esp + 0x64], ecx
mov ecx, dword [esp + 0x94]
add ecx, ebp
imul ecx, dword [esp + 0x1c]
mov dword [esp + 0x58], ecx
mov ecx, ebp
sub ecx, dword [esp + 0x7c]
add ecx, ebx
mov dword [esp + 0x5c], ecx
mov ecx, dword [esp + 0x1c]
neg ecx
mov dword [esp + 0x3c], ecx
mov ecx, ebx
sub ecx, dword [esp + 0x7c]
sub ecx, ebp
mov dword [esp + 0x50], ecx
mov ecx, esi
sub ecx, dword [esp + 0x78]
sub esi, edx
sub ecx, edx
mov dword [esp + 0x68], ecx
mov ecx, ebx
sub ecx, ebp
imul ecx, dword [esp + 0x1c]
mov dword [esp + 0x54], ecx
add esi, esi
cmp dword [esp + 0x2c], 0
mov ecx, 1
je 0x782e21
mov ecx, dword [esp + 0x34]
cmp dword [esp + 0x68], ecx
ja 0x782d69
mov ecx, dword [esp + 0x84]
sub ecx, dword [esp + 0x7c]
cmp dword [esp + 0x5c], ecx
ja 0x782d69
mov ecx, dword [esp + 0x58]
mov di, word [esp + 0xa0]
mov ebx, dword [esp + 0x20]
add ecx, esi
mov word [ecx + ebx], di
mov edi, dword [esp + 0x30]
mov ecx, dword [esp + 0x34]
cmp dword [esp + 0x64], ecx
ja 0x782da6
mov ecx, dword [esp + 0x84]
sub ecx, dword [esp + 0x7c]
cmp dword [esp + 0x5c], ecx
ja 0x782da6
mov edi, dword [esp + 0x60]
mov ecx, dword [esp + 0x58]
mov ebx, dword [esp + 0x20]
add ecx, edi
mov di, word [esp + 0xa0]
mov word [ecx + ebx], di
mov edi, dword [esp + 0x30]
mov ecx, dword [esp + 0x34]
cmp dword [esp + 0x68], ecx
ja 0x782ddf
mov ecx, dword [esp + 0x84]
sub ecx, dword [esp + 0x7c]
cmp dword [esp + 0x50], ecx
ja 0x782ddf
mov ecx, dword [esp + 0x54]
mov di, word [esp + 0xa0]
mov ebx, dword [esp + 0x20]
add ecx, esi
mov word [ecx + ebx], di
mov edi, dword [esp + 0x30]
mov ecx, dword [esp + 0x34]
cmp dword [esp + 0x64], ecx
ja 0x782e1c
mov ecx, dword [esp + 0x84]
sub ecx, dword [esp + 0x7c]
cmp dword [esp + 0x50], ecx
ja 0x782e1c
mov edi, dword [esp + 0x60]
mov ecx, dword [esp + 0x54]
mov ebx, dword [esp + 0x20]
add ecx, edi
mov di, word [esp + 0xa0]
mov word [ecx + ebx], di
mov edi, dword [esp + 0x30]
mov ecx, 1
cmp dword [esp + 0x18], 0
mov dword [esp + 0x2c], 0
jge 0x782e84
add eax, dword [esp + 0x9c]
cmp eax, edi
jl 0x782e68
add dword [esp + 0x5c], ecx
add ebp, ecx
mov ecx, dword [esp + 0x1c]
add dword [esp + 0x58], ecx
mov ecx, dword [esp + 0x3c]
add dword [esp + 0x54], ecx
mov ecx, 1
sub dword [esp + 0x50], ecx
sub eax, edi
mov dword [esp + 0x2c], ecx
mov ebx, dword [esp + 0x18]
lea ecx, [ebp*4]
add dword [esp + 0x14], ecx
lea ebx, [ebx + ecx + 2]
mov dword [esp + 0x18], ebx
jmp 0x782f0d
add dword [esp + 0x68], ecx
sub dword [esp + 0x64], ecx
sub dword [esp + 0x60], 2
sub edx, ecx
add esi, 2
cmp dword [esp + 0x14], 0
mov dword [esp + 0x2c], ecx
jl 0x782ec0
mov ecx, dword [esp + 0x74]
sub ecx, 4
sub dword [esp + 0x18], ecx
mov ebx, 2
sub ebx, ecx
add dword [esp + 0x14], ebx
mov dword [esp + 0x74], ecx
jmp 0x782f0d
add eax, dword [esp + 0x9c]
sub dword [esp + 0x74], 4
cmp eax, edi
jl 0x782eed
add dword [esp + 0x5c], ecx
sub dword [esp + 0x50], 1
add ebp, ecx
mov ecx, dword [esp + 0x1c]
add dword [esp + 0x58], ecx
mov ecx, dword [esp + 0x3c]
add dword [esp + 0x54], ecx
sub eax, edi
mov ebx, dword [esp + 0x18]
mov ecx, ebp
sub ecx, edx
add ecx, ecx
add ecx, ecx
lea ebx, [ebx + ecx + 2]
mov dword [esp + 0x18], ebx
mov ebx, dword [esp + 0x14]
lea ecx, [ebx + ecx + 2]
mov dword [esp + 0x14], ecx
test edx, edx
jg 0x782d20
mov esi, dword [esp + 0x90]
mov eax, dword [esp + 0x94]
lea ecx, [edx + esi]
sub ecx, dword [esp + 0x78]
sub eax, ebp
cmp ecx, dword [esp + 0x34]
ja 0x782f63
mov ecx, dword [esp + 0x7c]
mov ebx, dword [esp + 0x84]
mov edi, eax
sub edi, ecx
sub ebx, ecx
cmp edi, ebx
ja 0x782f63
imul eax, dword [esp + 0x1c]
add eax, dword [esp + 0x20]
mov di, word [esp + 0xa0]
lea ecx, [edx + esi]
mov word [eax + ecx*2], di
sub esi, edx
mov edx, dword [esp + 0x94]
mov eax, esi
sub eax, dword [esp + 0x78]
add ebp, edx
cmp eax, dword [esp + 0x34]
ja case.0x789050.5
mov ecx, dword [esp + 0x7c]
mov eax, dword [esp + 0x84]
mov edx, ebp
sub edx, ecx
sub eax, ecx
cmp edx, eax
ja case.0x789050.5
imul ebp, dword [esp + 0x1c]
add ebp, dword [esp + 0x20]
mov ax, word [esp + 0xa0]
pop edi
mov word [ebp + esi*2], ax
pop esi
pop ebp
pop ebx
add esp, 0x78
ret
test esi, esi
je case.0x789050.5
mov esi, dword [esp + 0x90]
sub esi, dword [esp + 0x98]
mov ebx, dword [esp + 0x78]
mov dword [esp + 0x24], esi
mov esi, dword [esp + 0x80]
sub esi, ebx
mov dword [esp + 0x34], esi
mov esi, dword [esp + 0x24]
sub esi, ebx
cmp esi, dword [esp + 0x34]
ja 0x7830a0
mov eax, dword [esp + 0x7c]
mov esi, dword [esp + 0x84]
mov ebx, dword [esp + 0x94]
sub esi, eax
sub ebx, eax
cmp ebx, esi
ja 0x78309c
mov eax, dword [esp + 0x1c]
imul eax, dword [esp + 0x94]
add eax, dword [esp + 0x20]
mov esi, dword [esp + 0x24]
lea eax, [eax + esi*2]
mov dword [esp + 0x2c], eax
movzx eax, word [eax]
movzx esi, ax
mov dword [esp + 0x44], esi
shr esi, 5
and esi, 0x3f
mov ebx, ecx
sar ebx, 5
and ebx, 0x3f
sub ebx, esi
mov esi, eax
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x44]
shr esi, 5
shr eax, 0xb
and esi, 0x3f
add si, word [edi + ebx*4]
mov ebx, ecx
sar ebx, 0xb
sub ebx, eax
mov ax, word [esp + 0x38]
shr ax, 0xb
add ax, word [edi + ebx*4]
shl si, 5
shl ax, 0xb
or si, ax
mov eax, dword [esp + 0x44]
and eax, 0x1f
mov ebx, ecx
and ebx, 0x1f
sub ebx, eax
mov eax, dword [esp + 0x38]
and eax, 0x1f
add ax, word [edi + ebx*4]
or si, ax
mov eax, dword [esp + 0x2c]
mov word [eax], si
mov eax, dword [esp + 0x28]
mov esi, dword [esp + 0x98]
mov ebx, dword [esp + 0x90]
add esi, ebx
mov dword [esp + 0x24], esi
sub esi, dword [esp + 0x78]
cmp esi, dword [esp + 0x34]
ja 0x783172
mov eax, dword [esp + 0x7c]
mov esi, dword [esp + 0x84]
mov ebx, dword [esp + 0x94]
sub esi, eax
sub ebx, eax
cmp ebx, esi
ja 0x78316e
mov eax, dword [esp + 0x1c]
imul eax, dword [esp + 0x94]
add eax, dword [esp + 0x20]
mov esi, dword [esp + 0x24]
lea eax, [eax + esi*2]
mov dword [esp + 0x2c], eax
movzx eax, word [eax]
movzx esi, ax
mov dword [esp + 0x44], esi
shr esi, 5
and esi, 0x3f
mov ebx, ecx
sar ebx, 5
and ebx, 0x3f
sub ebx, esi
mov esi, eax
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x44]
shr esi, 5
shr eax, 0xb
and esi, 0x3f
add si, word [edi + ebx*4]
mov ebx, ecx
sar ebx, 0xb
sub ebx, eax
mov ax, word [esp + 0x38]
shr ax, 0xb
add ax, word [edi + ebx*4]
shl si, 5
shl ax, 0xb
or si, ax
mov eax, dword [esp + 0x44]
and eax, 0x1f
mov ebx, ecx
and ebx, 0x1f
sub ebx, eax
mov eax, dword [esp + 0x38]
and eax, 0x1f
add ax, word [edi + ebx*4]
or si, ax
mov eax, dword [esp + 0x2c]
mov word [eax], si
mov eax, dword [esp + 0x28]
cmp dword [esp + 0x18], 0
mov ebx, dword [esp + 0x30]
mov esi, dword [esp + 0x9c]
mov dword [esp + 0x2c], 0
jge 0x7831c5
cmp esi, ebx
mov eax, esi
mov dword [esp + 0x28], eax
jl 0x7831a9
mov ebp, 1
sub eax, ebx
mov dword [esp + 0x28], eax
mov dword [esp + 0x2c], ebp
mov ebx, dword [esp + 0x18]
lea esi, [ebp*4]
add dword [esp + 0x14], esi
lea ebx, [ebx + esi + 2]
mov dword [esp + 0x18], ebx
jmp 0x78322e
mov edx, dword [esp + 0x98]
add edx, 0xffffffff
cmp dword [esp + 0x14], 0
mov dword [esp + 0x2c], 1
jl 0x7831f9
lea esi, [edx*4]
sub dword [esp + 0x18], esi
mov ebx, 2
sub ebx, esi
add dword [esp + 0x14], ebx
jmp 0x78322e
cmp esi, ebx
mov eax, esi
mov dword [esp + 0x28], esi
jl 0x78320e
sub eax, ebx
mov ebp, 1
mov dword [esp + 0x28], eax
mov ebx, dword [esp + 0x18]
mov esi, ebp
sub esi, edx
add esi, esi
add esi, esi
lea ebx, [ebx + esi + 2]
mov dword [esp + 0x18], ebx
mov ebx, dword [esp + 0x14]
lea esi, [ebx + esi + 2]
mov dword [esp + 0x14], esi
test edx, edx
jle 0x7836a3
lea esi, [edx*4]
mov dword [esp + 0x74], esi
mov esi, dword [esp + 0x90]
add esi, edx
add esi, esi
mov dword [esp + 0x5c], esi
mov ebx, dword [esp + 0x7c]
mov esi, edx
sub esi, dword [esp + 0x78]
add esi, dword [esp + 0x90]
mov dword [esp + 0x60], esi
mov esi, dword [esp + 0x94]
add esi, ebp
imul esi, dword [esp + 0x1c]
mov dword [esp + 0x54], esi
mov esi, ebp
sub esi, ebx
add esi, dword [esp + 0x94]
mov dword [esp + 0x58], esi
mov esi, dword [esp + 0x1c]
neg esi
mov dword [esp + 0x3c], esi
mov esi, dword [esp + 0x94]
sub esi, ebx
sub esi, ebp
mov dword [esp + 0x4c], esi
mov esi, dword [esp + 0x90]
sub esi, dword [esp + 0x78]
sub esi, edx
mov dword [esp + 0x64], esi
mov esi, dword [esp + 0x94]
sub esi, ebp
imul esi, dword [esp + 0x1c]
mov dword [esp + 0x50], esi
mov esi, dword [esp + 0x90]
sub esi, edx
add esi, esi
mov dword [esp + 0x68], esi
cmp dword [esp + 0x2c], 0
je 0x78358c
mov esi, dword [esp + 0x64]
cmp esi, dword [esp + 0x34]
ja 0x783388
mov esi, dword [esp + 0x84]
sub esi, dword [esp + 0x7c]
cmp dword [esp + 0x58], esi
ja 0x783388
mov esi, dword [esp + 0x54]
mov eax, dword [esp + 0x68]
add eax, esi
add eax, dword [esp + 0x20]
mov ebx, ecx
mov dword [esp + 0x2c], eax
movzx eax, word [eax]
movzx esi, ax
mov dword [esp + 0x44], esi
sar ebx, 5
shr esi, 5
and esi, 0x3f
and ebx, 0x3f
sub ebx, esi
mov esi, eax
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x44]
shr eax, 0xb
shr esi, 5
and esi, 0x3f
add si, word [edi + ebx*4]
mov ebx, ecx
sar ebx, 0xb
sub ebx, eax
mov ax, word [esp + 0x38]
shr ax, 0xb
add ax, word [edi + ebx*4]
shl si, 5
shl ax, 0xb
or si, ax
mov eax, dword [esp + 0x44]
and eax, 0x1f
mov ebx, ecx
and ebx, 0x1f
sub ebx, eax
mov eax, dword [esp + 0x38]
and eax, 0x1f
add ax, word [edi + ebx*4]
or si, ax
mov eax, dword [esp + 0x2c]
mov word [eax], si
mov eax, dword [esp + 0x28]
mov esi, dword [esp + 0x34]
cmp dword [esp + 0x60], esi
ja 0x783434
mov esi, dword [esp + 0x84]
sub esi, dword [esp + 0x7c]
cmp dword [esp + 0x58], esi
ja 0x783434
mov esi, dword [esp + 0x20]
mov eax, dword [esp + 0x54]
add eax, esi
add eax, dword [esp + 0x5c]
mov ebx, ecx
mov dword [esp + 0x2c], eax
movzx eax, word [eax]
movzx esi, ax
mov dword [esp + 0x44], esi
sar ebx, 5
shr esi, 5
and esi, 0x3f
and ebx, 0x3f
sub ebx, esi
mov esi, eax
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x44]
shr eax, 0xb
shr esi, 5
and esi, 0x3f
add si, word [edi + ebx*4]
mov ebx, ecx
sar ebx, 0xb
sub ebx, eax
mov ax, word [esp + 0x38]
shr ax, 0xb
add ax, word [edi + ebx*4]
shl si, 5
shl ax, 0xb
or si, ax
mov eax, dword [esp + 0x44]
and eax, 0x1f
mov ebx, ecx
and ebx, 0x1f
sub ebx, eax
mov eax, dword [esp + 0x38]
and eax, 0x1f
add ax, word [edi + ebx*4]
or si, ax
mov eax, dword [esp + 0x2c]
mov word [eax], si
mov eax, dword [esp + 0x28]
mov esi, dword [esp + 0x34]
cmp dword [esp + 0x64], esi
ja 0x7834e0
mov esi, dword [esp + 0x84]
sub esi, dword [esp + 0x7c]
cmp dword [esp + 0x4c], esi
ja 0x7834e0
mov esi, dword [esp + 0x50]
mov eax, dword [esp + 0x68]
add eax, esi
add eax, dword [esp + 0x20]
mov ebx, ecx
mov dword [esp + 0x2c], eax
movzx eax, word [eax]
movzx esi, ax
mov dword [esp + 0x44], esi
sar ebx, 5
shr esi, 5
and esi, 0x3f
and ebx, 0x3f
sub ebx, esi
mov esi, eax
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x44]
shr eax, 0xb
shr esi, 5
and esi, 0x3f
add si, word [edi + ebx*4]
mov ebx, ecx
sar ebx, 0xb
sub ebx, eax
mov ax, word [esp + 0x38]
shr ax, 0xb
add ax, word [edi + ebx*4]
shl si, 5
shl ax, 0xb
or si, ax
mov eax, dword [esp + 0x44]
and eax, 0x1f
mov ebx, ecx
and ebx, 0x1f
sub ebx, eax
mov eax, dword [esp + 0x38]
and eax, 0x1f
add ax, word [edi + ebx*4]
or si, ax
mov eax, dword [esp + 0x2c]
mov word [eax], si
mov eax, dword [esp + 0x28]
mov esi, dword [esp + 0x34]
cmp dword [esp + 0x60], esi
ja 0x78358c
mov esi, dword [esp + 0x84]
sub esi, dword [esp + 0x7c]
cmp dword [esp + 0x4c], esi
ja 0x78358c
mov esi, dword [esp + 0x20]
mov eax, dword [esp + 0x50]
add eax, esi
add eax, dword [esp + 0x5c]
mov ebx, ecx
mov dword [esp + 0x2c], eax
movzx eax, word [eax]
movzx esi, ax
mov dword [esp + 0x44], esi
sar ebx, 5
shr esi, 5
and esi, 0x3f
and ebx, 0x3f
sub ebx, esi
mov esi, eax
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x44]
shr eax, 0xb
shr esi, 5
and esi, 0x3f
add si, word [edi + ebx*4]
mov ebx, ecx
sar ebx, 0xb
sub ebx, eax
mov ax, word [esp + 0x38]
shr ax, 0xb
add ax, word [edi + ebx*4]
shl si, 5
shl ax, 0xb
or si, ax
mov eax, dword [esp + 0x44]
and eax, 0x1f
mov ebx, ecx
and ebx, 0x1f
sub ebx, eax
mov eax, dword [esp + 0x38]
and eax, 0x1f
add ax, word [edi + ebx*4]
or si, ax
mov eax, dword [esp + 0x2c]
mov word [eax], si
mov eax, dword [esp + 0x28]
cmp dword [esp + 0x18], 0
mov ebx, 1
mov dword [esp + 0x2c], 0
jge 0x7835fd
add eax, dword [esp + 0x9c]
cmp eax, dword [esp + 0x30]
mov dword [esp + 0x28], eax
jl 0x7835e1
mov esi, dword [esp + 0x1c]
add dword [esp + 0x54], esi
mov esi, dword [esp + 0x3c]
add dword [esp + 0x50], esi
add dword [esp + 0x58], ebx
mov esi, ebx
sub dword [esp + 0x4c], esi
add ebp, ebx
sub eax, dword [esp + 0x30]
mov dword [esp + 0x2c], esi
mov dword [esp + 0x28], eax
mov ebx, dword [esp + 0x18]
lea esi, [ebp*4]
add dword [esp + 0x14], esi
lea ebx, [ebx + esi + 2]
mov dword [esp + 0x18], ebx
jmp 0x78369b
add dword [esp + 0x64], ebx
sub dword [esp + 0x60], ebx
mov esi, 2
add dword [esp + 0x68], esi
sub dword [esp + 0x5c], esi
sub edx, ebx
cmp dword [esp + 0x14], 0
mov dword [esp + 0x2c], ebx
jl 0x78363e
mov esi, dword [esp + 0x74]
sub esi, 4
sub dword [esp + 0x18], esi
mov ebx, 2
sub ebx, esi
add dword [esp + 0x14], ebx
mov dword [esp + 0x74], esi
jmp 0x78369b
add eax, dword [esp + 0x9c]
sub dword [esp + 0x74], 4
cmp eax, dword [esp + 0x30]
mov dword [esp + 0x28], eax
jl 0x78367b
mov esi, dword [esp + 0x1c]
add dword [esp + 0x54], esi
mov esi, dword [esp + 0x3c]
add dword [esp + 0x58], ebx
add dword [esp + 0x50], esi
sub dword [esp + 0x4c], 1
add ebp, ebx
sub eax, dword [esp + 0x30]
mov dword [esp + 0x28], eax
mov ebx, dword [esp + 0x18]
mov esi, ebp
sub esi, edx
add esi, esi
add esi, esi
lea ebx, [ebx + esi + 2]
mov dword [esp + 0x18], ebx
mov ebx, dword [esp + 0x14]
lea esi, [ebx + esi + 2]
mov dword [esp + 0x14], esi
test edx, edx
jg 0x7832d1
mov eax, dword [esp + 0x90]
mov esi, dword [esp + 0x94]
lea ebx, [edx + eax]
sub ebx, dword [esp + 0x78]
sub esi, ebp
cmp ebx, dword [esp + 0x34]
mov dword [esp + 0x50], esi
mov esi, dword [esp + 0x7c]
ja 0x78377e
mov eax, dword [esp + 0x50]
mov ebx, dword [esp + 0x84]
sub eax, esi
sub ebx, esi
cmp eax, ebx
ja 0x783777
mov eax, dword [esp + 0x50]
imul eax, dword [esp + 0x1c]
add eax, dword [esp + 0x20]
mov esi, dword [esp + 0x90]
add esi, edx
lea eax, [eax + esi*2]
mov dword [esp + 0x2c], eax
movzx eax, word [eax]
movzx esi, ax
mov dword [esp + 0x44], esi
shr esi, 5
and esi, 0x3f
mov ebx, ecx
sar ebx, 5
and ebx, 0x3f
sub ebx, esi
mov esi, eax
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x44]
shr esi, 5
shr eax, 0xb
and esi, 0x3f
add si, word [edi + ebx*4]
mov ebx, ecx
sar ebx, 0xb
sub ebx, eax
mov ax, word [esp + 0x38]
shr ax, 0xb
add ax, word [edi + ebx*4]
shl si, 5
shl ax, 0xb
or si, ax
mov eax, dword [esp + 0x44]
and eax, 0x1f
mov ebx, ecx
and ebx, 0x1f
sub ebx, eax
mov eax, dword [esp + 0x38]
and eax, 0x1f
add ax, word [edi + ebx*4]
or si, ax
mov eax, dword [esp + 0x2c]
mov word [eax], si
mov esi, dword [esp + 0x7c]
mov eax, dword [esp + 0x90]
sub eax, edx
mov edx, dword [esp + 0x94]
add ebp, edx
mov edx, eax
sub edx, dword [esp + 0x78]
cmp edx, dword [esp + 0x34]
ja case.0x789050.5
mov edx, dword [esp + 0x84]
mov ebx, ebp
sub ebx, esi
sub edx, esi
cmp ebx, edx
ja case.0x789050.5
imul ebp, dword [esp + 0x1c]
add ebp, dword [esp + 0x20]
lea eax, [ebp + eax*2]
mov dword [esp + 0x2c], eax
movzx eax, word [eax]
jmp 0x789d16
cmp dword [0xb160b8], 0
je case.0x789050.5
mov edi, dword [esp + 0x90]
sub edi, dword [esp + 0x98]
mov ebx, dword [esp + 0x78]
mov dword [esp + 0x24], edi
mov edi, dword [esp + 0x80]
sub edi, ebx
mov dword [esp + 0x34], edi
mov edi, dword [esp + 0x24]
sub edi, ebx
cmp edi, dword [esp + 0x34]
ja 0x7838ad
mov eax, dword [esp + 0x7c]
mov edi, dword [esp + 0x84]
mov ebx, dword [esp + 0x94]
sub edi, eax
sub ebx, eax
cmp ebx, edi
ja 0x7838a9
mov eax, dword [esp + 0x1c]
imul eax, dword [esp + 0x94]
add eax, dword [esp + 0x20]
mov edi, dword [esp + 0x24]
lea eax, [eax + edi*2]
mov edi, ecx
sar edi, 0xb
mov di, word [esi + edi*4]
shl di, 6
mov ebx, ecx
sar ebx, 5
and ebx, 0x3f
add di, word [esi + ebx*4]
mov dword [esp + 0x2c], eax
movzx eax, word [eax]
shl di, 5
mov ebx, ecx
and ebx, 0x1f
add di, word [esi + ebx*4]
mov dword [esp + 0x38], eax
movzx edi, di
movzx eax, ax
mov ebx, edi
or edi, dword [esp + 0x38]
and eax, 0xf7def7df
and ebx, 0xf7def7df
add eax, ebx
mov dword [esp + 0x44], eax
and eax, 0x8210820
mov ebx, eax
shr ebx, 5
and edi, 0x820
sub eax, ebx
or eax, edi
or eax, dword [esp + 0x44]
mov edi, dword [esp + 0x2c]
mov word [edi], ax
mov eax, dword [esp + 0x28]
mov edi, dword [esp + 0x98]
mov ebx, dword [esp + 0x90]
add edi, ebx
mov dword [esp + 0x24], edi
sub edi, dword [esp + 0x78]
cmp edi, dword [esp + 0x34]
ja 0x783975
mov eax, dword [esp + 0x7c]
mov edi, dword [esp + 0x84]
mov ebx, dword [esp + 0x94]
sub edi, eax
sub ebx, eax
cmp ebx, edi
ja 0x783971
mov eax, dword [esp + 0x1c]
imul eax, dword [esp + 0x94]
add eax, dword [esp + 0x20]
mov edi, dword [esp + 0x24]
lea eax, [eax + edi*2]
mov edi, ecx
sar edi, 0xb
mov di, word [esi + edi*4]
shl di, 6
mov ebx, ecx
sar ebx, 5
and ebx, 0x3f
add di, word [esi + ebx*4]
mov dword [esp + 0x2c], eax
movzx eax, word [eax]
shl di, 5
mov ebx, ecx
and ebx, 0x1f
add di, word [esi + ebx*4]
mov dword [esp + 0x38], eax
movzx edi, di
movzx eax, ax
mov ebx, edi
or edi, dword [esp + 0x38]
and eax, 0xf7def7df
and ebx, 0xf7def7df
add eax, ebx
mov dword [esp + 0x44], eax
and eax, 0x8210820
mov ebx, eax
shr ebx, 5
and edi, 0x820
sub eax, ebx
or eax, edi
or eax, dword [esp + 0x44]
mov edi, dword [esp + 0x2c]
mov word [edi], ax
mov eax, dword [esp + 0x28]
cmp dword [esp + 0x18], 0
mov ebx, dword [esp + 0x30]
mov edi, dword [esp + 0x9c]
mov dword [esp + 0x2c], 0
jge 0x7839c0
cmp edi, ebx
mov eax, edi
jl 0x7839a4
mov ebp, 1
sub eax, ebx
mov dword [esp + 0x2c], ebp
mov ebx, dword [esp + 0x18]
lea edi, [ebp*4]
add dword [esp + 0x14], edi
lea ebx, [ebx + edi + 2]
mov dword [esp + 0x18], ebx
jmp 0x783a21
mov edx, dword [esp + 0x98]
add edx, 0xffffffff
cmp dword [esp + 0x14], 0
mov dword [esp + 0x2c], 1
jl 0x7839f4
lea edi, [edx*4]
sub dword [esp + 0x18], edi
mov ebx, 2
sub ebx, edi
add dword [esp + 0x14], ebx
jmp 0x783a21
cmp edi, ebx
mov eax, edi
jl 0x783a01
mov ebp, 1
sub eax, ebx
mov ebx, dword [esp + 0x18]
mov edi, ebp
sub edi, edx
add edi, edi
add edi, edi
lea ebx, [ebx + edi + 2]
mov dword [esp + 0x18], ebx
mov ebx, dword [esp + 0x14]
lea edi, [ebx + edi + 2]
mov dword [esp + 0x14], edi
test edx, edx
jle 0x783e9a
lea edi, [edx*4]
mov dword [esp + 0x74], edi
mov edi, dword [esp + 0x90]
add edi, edx
add edi, edi
mov dword [esp + 0x5c], edi
mov ebx, dword [esp + 0x94]
mov edi, edx
sub edi, dword [esp + 0x78]
add edi, dword [esp + 0x90]
mov dword [esp + 0x60], edi
mov edi, dword [esp + 0x94]
add edi, ebp
imul edi, dword [esp + 0x1c]
mov dword [esp + 0x50], edi
mov edi, ebp
sub edi, dword [esp + 0x7c]
add edi, ebx
mov dword [esp + 0x54], edi
mov edi, dword [esp + 0x1c]
neg edi
mov dword [esp + 0x3c], edi
mov edi, ebx
sub edi, dword [esp + 0x7c]
sub edi, ebp
mov dword [esp + 0x48], edi
mov edi, dword [esp + 0x90]
sub edi, dword [esp + 0x78]
sub edi, edx
mov dword [esp + 0x64], edi
mov edi, ebx
sub edi, ebp
imul edi, dword [esp + 0x1c]
mov dword [esp + 0x4c], edi
mov edi, dword [esp + 0x90]
sub edi, edx
add edi, edi
mov dword [esp + 0x68], edi
lea esp, [esp]
cmp dword [esp + 0x2c], 0
je 0x783d93
mov edi, dword [esp + 0x64]
cmp edi, dword [esp + 0x34]
ja 0x783b7d
mov edi, dword [esp + 0x84]
sub edi, dword [esp + 0x7c]
cmp dword [esp + 0x54], edi
ja 0x783b7d
mov ebx, dword [esp + 0x50]
mov edi, dword [esp + 0x68]
add edi, ebx
add edi, dword [esp + 0x20]
mov ebx, ecx
mov dword [esp + 0x2c], edi
sar ebx, 5
and ebx, 0x3f
mov edi, ecx
sar edi, 0xb
mov di, word [esi + edi*4]
shl di, 6
add di, word [esi + ebx*4]
mov ebx, ecx
shl di, 5
and ebx, 0x1f
add di, word [esi + ebx*4]
movzx ebx, di
mov edi, dword [esp + 0x2c]
movzx edi, word [edi]
mov dword [esp + 0x38], edi
movzx edi, di
mov dword [esp + 0x58], ebx
and edi, 0xf7def7df
and ebx, 0xf7def7df
add edi, ebx
mov dword [esp + 0x44], edi
and edi, 0x8210820
mov ebx, edi
shr ebx, 5
sub edi, ebx
mov dword [esp + 0x70], edi
mov edi, dword [esp + 0x58]
or edi, dword [esp + 0x38]
mov ebx, dword [esp + 0x70]
and edi, 0x820
or ebx, edi
or ebx, dword [esp + 0x44]
mov edi, dword [esp + 0x2c]
mov word [edi], bx
mov edi, dword [esp + 0x34]
cmp dword [esp + 0x60], edi
ja 0x783c2f
mov edi, dword [esp + 0x84]
sub edi, dword [esp + 0x7c]
cmp dword [esp + 0x54], edi
ja 0x783c2f
mov ebx, dword [esp + 0x5c]
mov edi, dword [esp + 0x50]
add edi, ebx
add edi, dword [esp + 0x20]
mov ebx, ecx
mov dword [esp + 0x2c], edi
sar ebx, 5
and ebx, 0x3f
mov edi, ecx
sar edi, 0xb
mov di, word [esi + edi*4]
shl di, 6
add di, word [esi + ebx*4]
mov ebx, ecx
shl di, 5
and ebx, 0x1f
add di, word [esi + ebx*4]
movzx ebx, di
mov edi, dword [esp + 0x2c]
movzx edi, word [edi]
mov dword [esp + 0x38], edi
movzx edi, di
mov dword [esp + 0x58], ebx
and edi, 0xf7def7df
and ebx, 0xf7def7df
add edi, ebx
mov dword [esp + 0x44], edi
and edi, 0x8210820
mov ebx, edi
shr ebx, 5
sub edi, ebx
mov dword [esp + 0x70], edi
mov edi, dword [esp + 0x58]
or edi, dword [esp + 0x38]
mov ebx, dword [esp + 0x70]
and edi, 0x820
or ebx, edi
or ebx, dword [esp + 0x44]
mov edi, dword [esp + 0x2c]
mov word [edi], bx
mov edi, dword [esp + 0x34]
cmp dword [esp + 0x64], edi
ja 0x783ce1
mov edi, dword [esp + 0x84]
sub edi, dword [esp + 0x7c]
cmp dword [esp + 0x48], edi
ja 0x783ce1
mov ebx, dword [esp + 0x4c]
mov edi, dword [esp + 0x68]
add edi, ebx
add edi, dword [esp + 0x20]
mov ebx, ecx
mov dword [esp + 0x2c], edi
sar ebx, 5
and ebx, 0x3f
mov edi, ecx
sar edi, 0xb
mov di, word [esi + edi*4]
shl di, 6
add di, word [esi + ebx*4]
mov ebx, ecx
shl di, 5
and ebx, 0x1f
add di, word [esi + ebx*4]
movzx ebx, di
mov edi, dword [esp + 0x2c]
movzx edi, word [edi]
mov dword [esp + 0x38], edi
movzx edi, di
mov dword [esp + 0x58], ebx
and edi, 0xf7def7df
and ebx, 0xf7def7df
add edi, ebx
mov dword [esp + 0x44], edi
and edi, 0x8210820
mov ebx, edi
shr ebx, 5
sub edi, ebx
mov dword [esp + 0x70], edi
mov edi, dword [esp + 0x58]
or edi, dword [esp + 0x38]
mov ebx, dword [esp + 0x70]
and edi, 0x820
or ebx, edi
or ebx, dword [esp + 0x44]
mov edi, dword [esp + 0x2c]
mov word [edi], bx
mov edi, dword [esp + 0x60]
cmp edi, dword [esp + 0x34]
ja 0x783d93
mov edi, dword [esp + 0x84]
sub edi, dword [esp + 0x7c]
cmp dword [esp + 0x48], edi
ja 0x783d93
mov ebx, dword [esp + 0x5c]
mov edi, dword [esp + 0x4c]
add edi, ebx
add edi, dword [esp + 0x20]
mov ebx, ecx
mov dword [esp + 0x2c], edi
sar ebx, 5
and ebx, 0x3f
mov edi, ecx
sar edi, 0xb
mov di, word [esi + edi*4]
shl di, 6
add di, word [esi + ebx*4]
mov ebx, ecx
shl di, 5
and ebx, 0x1f
add di, word [esi + ebx*4]
movzx ebx, di
mov edi, dword [esp + 0x2c]
movzx edi, word [edi]
mov dword [esp + 0x38], edi
movzx edi, di
mov dword [esp + 0x58], ebx
and edi, 0xf7def7df
and ebx, 0xf7def7df
add edi, ebx
mov dword [esp + 0x44], edi
and edi, 0x8210820
mov ebx, edi
shr ebx, 5
sub edi, ebx
mov dword [esp + 0x70], edi
mov edi, dword [esp + 0x58]
or edi, dword [esp + 0x38]
mov ebx, dword [esp + 0x70]
and edi, 0x820
or ebx, edi
or ebx, dword [esp + 0x44]
mov edi, dword [esp + 0x2c]
mov word [edi], bx
cmp dword [esp + 0x18], 0
mov dword [esp + 0x2c], 0
jge 0x783dfc
add eax, dword [esp + 0x9c]
cmp eax, dword [esp + 0x30]
jl 0x783de0
mov edi, dword [esp + 0x1c]
add dword [esp + 0x50], edi
mov edi, dword [esp + 0x3c]
add dword [esp + 0x4c], edi
add dword [esp + 0x54], 1
mov edi, 1
sub dword [esp + 0x48], edi
add ebp, 1
sub eax, dword [esp + 0x30]
mov dword [esp + 0x2c], edi
mov ebx, dword [esp + 0x18]
lea edi, [ebp*4]
add dword [esp + 0x14], edi
lea ebx, [ebx + edi + 2]
mov dword [esp + 0x18], ebx
jmp 0x783e92
mov edi, 1
add dword [esp + 0x64], edi
sub dword [esp + 0x60], edi
mov ebx, 2
add dword [esp + 0x68], ebx
sub dword [esp + 0x5c], ebx
sub edx, edi
cmp dword [esp + 0x14], 0
mov dword [esp + 0x2c], edi
jl 0x783e3d
mov edi, dword [esp + 0x74]
sub edi, 4
sub dword [esp + 0x18], edi
sub ebx, edi
add dword [esp + 0x14], ebx
mov dword [esp + 0x74], edi
jmp 0x783e92
add eax, dword [esp + 0x9c]
sub dword [esp + 0x74], 4
cmp eax, dword [esp + 0x30]
jl 0x783e72
add dword [esp + 0x54], edi
sub dword [esp + 0x48], 1
add ebp, edi
mov edi, dword [esp + 0x1c]
add dword [esp + 0x50], edi
mov edi, dword [esp + 0x3c]
add dword [esp + 0x4c], edi
sub eax, dword [esp + 0x30]
mov ebx, dword [esp + 0x18]
mov edi, ebp
sub edi, edx
add edi, edi
add edi, edi
lea ebx, [ebx + edi + 2]
mov dword [esp + 0x18], ebx
mov ebx, dword [esp + 0x14]
lea edi, [ebx + edi + 2]
mov dword [esp + 0x14], edi
test edx, edx
jg 0x783ac0
mov eax, dword [esp + 0x90]
mov edi, dword [esp + 0x94]
lea ebx, [edx + eax]
sub ebx, dword [esp + 0x78]
sub edi, ebp
cmp ebx, dword [esp + 0x34]
mov dword [esp + 0x50], edi
mov edi, dword [esp + 0x7c]
ja 0x78a535
mov eax, dword [esp + 0x50]
jmp 0x78a491
cmp dword [0xb160b8], 0
je case.0x789050.5
mov edi, dword [esp + 0x90]
sub edi, dword [esp + 0x98]
mov ebx, dword [esp + 0x78]
mov dword [esp + 0x24], edi
mov edi, dword [esp + 0x80]
sub edi, ebx
mov dword [esp + 0x34], edi
mov edi, dword [esp + 0x24]
sub edi, ebx
cmp edi, dword [esp + 0x34]
ja 0x783f9a
mov eax, dword [esp + 0x7c]
mov edi, dword [esp + 0x84]
mov ebx, dword [esp + 0x94]
sub edi, eax
sub ebx, eax
cmp ebx, edi
ja 0x783f96
mov eax, dword [esp + 0x1c]
imul eax, dword [esp + 0x94]
add eax, dword [esp + 0x20]
mov edi, dword [esp + 0x24]
lea eax, [eax + edi*2]
mov edi, ecx
sar edi, 0xb
mov di, word [esi + edi*4]
shl di, 6
mov ebx, ecx
sar ebx, 5
and ebx, 0x3f
add di, word [esi + ebx*4]
mov ebx, ecx
shl di, 5
and ebx, 0x1f
add di, word [esi + ebx*4]
mov dword [esp + 0x2c], eax
movzx ebx, di
movzx edi, word [eax]
and ebx, 0xf7def7df
or edi, 0x8210820
sub edi, ebx
mov eax, edi
and eax, 0x8210820
mov ebx, eax
shr ebx, 5
sub eax, ebx
and eax, edi
mov edi, dword [esp + 0x2c]
mov word [edi], ax
mov eax, dword [esp + 0x28]
mov edi, dword [esp + 0x98]
mov ebx, dword [esp + 0x90]
add edi, ebx
mov dword [esp + 0x24], edi
sub edi, dword [esp + 0x78]
cmp edi, dword [esp + 0x34]
ja 0x78404a
mov eax, dword [esp + 0x7c]
mov edi, dword [esp + 0x84]
mov ebx, dword [esp + 0x94]
sub edi, eax
sub ebx, eax
cmp ebx, edi
ja 0x784046
mov eax, dword [esp + 0x1c]
imul eax, dword [esp + 0x94]
add eax, dword [esp + 0x20]
mov edi, dword [esp + 0x24]
lea eax, [eax + edi*2]
mov edi, ecx
sar edi, 0xb
mov di, word [esi + edi*4]
shl di, 6
mov ebx, ecx
sar ebx, 5
and ebx, 0x3f
add di, word [esi + ebx*4]
mov ebx, ecx
shl di, 5
and ebx, 0x1f
add di, word [esi + ebx*4]
mov dword [esp + 0x2c], eax
movzx ebx, di
movzx edi, word [eax]
and ebx, 0xf7def7df
or edi, 0x8210820
sub edi, ebx
mov eax, edi
and eax, 0x8210820
mov ebx, eax
shr ebx, 5
sub eax, ebx
and eax, edi
mov edi, dword [esp + 0x2c]
mov word [edi], ax
mov eax, dword [esp + 0x28]
cmp dword [esp + 0x18], 0
mov ebx, dword [esp + 0x30]
mov edi, dword [esp + 0x9c]
mov dword [esp + 0x2c], 0
jge 0x784095
cmp edi, ebx
mov eax, edi
jl 0x784079
mov ebp, 1
sub eax, ebx
mov dword [esp + 0x2c], ebp
mov ebx, dword [esp + 0x18]
lea edi, [ebp*4]
add dword [esp + 0x14], edi
lea ebx, [ebx + edi + 2]
mov dword [esp + 0x18], ebx
jmp 0x7840f6
mov edx, dword [esp + 0x98]
add edx, 0xffffffff
cmp dword [esp + 0x14], 0
mov dword [esp + 0x2c], 1
jl 0x7840c9
lea edi, [edx*4]
sub dword [esp + 0x18], edi
mov ebx, 2
sub ebx, edi
add dword [esp + 0x14], ebx
jmp 0x7840f6
cmp edi, ebx
mov eax, edi
jl 0x7840d6
mov ebp, 1
sub eax, ebx
mov ebx, dword [esp + 0x18]
mov edi, ebp
sub edi, edx
add edi, edi
add edi, edi
lea ebx, [ebx + edi + 2]
mov dword [esp + 0x18], ebx
mov ebx, dword [esp + 0x14]
lea edi, [ebx + edi + 2]
mov dword [esp + 0x14], edi
test edx, edx
jle 0x7844df
lea edi, [edx*4]
mov dword [esp + 0x74], edi
mov edi, dword [esp + 0x90]
add edi, edx
add edi, edi
mov dword [esp + 0x5c], edi
mov ebx, dword [esp + 0x94]
mov edi, edx
sub edi, dword [esp + 0x78]
add edi, dword [esp + 0x90]
mov dword [esp + 0x60], edi
mov edi, dword [esp + 0x94]
add edi, ebp
imul edi, dword [esp + 0x1c]
mov dword [esp + 0x54], edi
mov edi, ebp
sub edi, dword [esp + 0x7c]
add edi, ebx
mov dword [esp + 0x58], edi
mov edi, dword [esp + 0x1c]
neg edi
mov dword [esp + 0x3c], edi
mov edi, ebx
sub edi, dword [esp + 0x7c]
sub edi, ebp
mov dword [esp + 0x4c], edi
mov edi, dword [esp + 0x90]
sub edi, dword [esp + 0x78]
sub edi, edx
mov dword [esp + 0x64], edi
mov edi, ebx
sub edi, ebp
imul edi, dword [esp + 0x1c]
mov dword [esp + 0x50], edi
mov edi, dword [esp + 0x90]
sub edi, edx
add edi, edi
mov dword [esp + 0x68], edi
cmp dword [esp + 0x2c], 0
je 0x7843d8
mov edi, dword [esp + 0x64]
cmp edi, dword [esp + 0x34]
ja 0x78422b
mov edi, dword [esp + 0x84]
sub edi, dword [esp + 0x7c]
cmp dword [esp + 0x58], edi
ja 0x78422b
mov ebx, dword [esp + 0x54]
mov edi, dword [esp + 0x68]
add edi, ebx
add edi, dword [esp + 0x20]
mov ebx, ecx
mov dword [esp + 0x2c], edi
sar ebx, 5
and ebx, 0x3f
mov edi, ecx
sar edi, 0xb
mov di, word [esi + edi*4]
shl di, 6
add di, word [esi + ebx*4]
mov ebx, ecx
shl di, 5
and ebx, 0x1f
add di, word [esi + ebx*4]
movzx ebx, di
mov edi, dword [esp + 0x2c]
movzx edi, word [edi]
and ebx, 0xf7def7df
or edi, 0x8210820
sub edi, ebx
mov dword [esp + 0x44], edi
and edi, 0x8210820
mov ebx, edi
shr ebx, 5
sub edi, ebx
and edi, dword [esp + 0x44]
mov ebx, dword [esp + 0x2c]
mov word [ebx], di
mov edi, dword [esp + 0x34]
cmp dword [esp + 0x60], edi
ja 0x7842ba
mov edi, dword [esp + 0x84]
sub edi, dword [esp + 0x7c]
cmp dword [esp + 0x58], edi
ja 0x7842ba
mov ebx, dword [esp + 0x5c]
mov edi, dword [esp + 0x54]
add edi, ebx
add edi, dword [esp + 0x20]
mov ebx, ecx
mov dword [esp + 0x2c], edi
sar ebx, 5
and ebx, 0x3f
mov edi, ecx
sar edi, 0xb
mov di, word [esi + edi*4]
shl di, 6
add di, word [esi + ebx*4]
mov ebx, ecx
shl di, 5
and ebx, 0x1f
add di, word [esi + ebx*4]
movzx ebx, di
mov edi, dword [esp + 0x2c]
movzx edi, word [edi]
and ebx, 0xf7def7df
or edi, 0x8210820
sub edi, ebx
mov dword [esp + 0x44], edi
and edi, 0x8210820
mov ebx, edi
shr ebx, 5
sub edi, ebx
and edi, dword [esp + 0x44]
mov ebx, dword [esp + 0x2c]
mov word [ebx], di
mov edi, dword [esp + 0x34]
cmp dword [esp + 0x64], edi
ja 0x784349
mov edi, dword [esp + 0x84]
sub edi, dword [esp + 0x7c]
cmp dword [esp + 0x4c], edi
ja 0x784349
mov ebx, dword [esp + 0x50]
mov edi, dword [esp + 0x68]
add edi, ebx
add edi, dword [esp + 0x20]
mov ebx, ecx
mov dword [esp + 0x2c], edi
sar ebx, 5
and ebx, 0x3f
mov edi, ecx
sar edi, 0xb
mov di, word [esi + edi*4]
shl di, 6
add di, word [esi + ebx*4]
mov ebx, ecx
shl di, 5
and ebx, 0x1f
add di, word [esi + ebx*4]
movzx ebx, di
mov edi, dword [esp + 0x2c]
movzx edi, word [edi]
and ebx, 0xf7def7df
or edi, 0x8210820
sub edi, ebx
mov dword [esp + 0x44], edi
and edi, 0x8210820
mov ebx, edi
shr ebx, 5
sub edi, ebx
and edi, dword [esp + 0x44]
mov ebx, dword [esp + 0x2c]
mov word [ebx], di
mov edi, dword [esp + 0x60]
cmp edi, dword [esp + 0x34]
ja 0x7843d8
mov edi, dword [esp + 0x84]
sub edi, dword [esp + 0x7c]
cmp dword [esp + 0x4c], edi
ja 0x7843d8
mov ebx, dword [esp + 0x5c]
mov edi, dword [esp + 0x50]
add edi, ebx
add edi, dword [esp + 0x20]
mov ebx, ecx
mov dword [esp + 0x2c], edi
sar ebx, 5
and ebx, 0x3f
mov edi, ecx
sar edi, 0xb
mov di, word [esi + edi*4]
shl di, 6
add di, word [esi + ebx*4]
mov ebx, ecx
shl di, 5
and ebx, 0x1f
add di, word [esi + ebx*4]
movzx ebx, di
mov edi, dword [esp + 0x2c]
movzx edi, word [edi]
and ebx, 0xf7def7df
or edi, 0x8210820
sub edi, ebx
mov dword [esp + 0x44], edi
and edi, 0x8210820
mov ebx, edi
shr ebx, 5
sub edi, ebx
and edi, dword [esp + 0x44]
mov ebx, dword [esp + 0x2c]
mov word [ebx], di
cmp dword [esp + 0x18], 0
mov dword [esp + 0x2c], 0
jge 0x784441
add eax, dword [esp + 0x9c]
cmp eax, dword [esp + 0x30]
jl 0x784425
mov edi, dword [esp + 0x1c]
add dword [esp + 0x54], edi
mov edi, dword [esp + 0x3c]
add dword [esp + 0x50], edi
add dword [esp + 0x58], 1
mov edi, 1
sub dword [esp + 0x4c], edi
add ebp, 1
sub eax, dword [esp + 0x30]
mov dword [esp + 0x2c], edi
mov ebx, dword [esp + 0x18]
lea edi, [ebp*4]
add dword [esp + 0x14], edi
lea ebx, [ebx + edi + 2]
mov dword [esp + 0x18], ebx
jmp 0x7844d7
mov edi, 1
add dword [esp + 0x64], edi
sub dword [esp + 0x60], edi
mov ebx, 2
add dword [esp + 0x68], ebx
sub dword [esp + 0x5c], ebx
sub edx, edi
cmp dword [esp + 0x14], 0
mov dword [esp + 0x2c], edi
jl 0x784482
mov edi, dword [esp + 0x74]
sub edi, 4
sub dword [esp + 0x18], edi
sub ebx, edi
add dword [esp + 0x14], ebx
mov dword [esp + 0x74], edi
jmp 0x7844d7
add eax, dword [esp + 0x9c]
sub dword [esp + 0x74], 4
cmp eax, dword [esp + 0x30]
jl 0x7844b7
add dword [esp + 0x58], edi
sub dword [esp + 0x4c], 1
add ebp, edi
mov edi, dword [esp + 0x1c]
add dword [esp + 0x54], edi
mov edi, dword [esp + 0x3c]
add dword [esp + 0x50], edi
sub eax, dword [esp + 0x30]
mov ebx, dword [esp + 0x18]
mov edi, ebp
sub edi, edx
add edi, edi
add edi, edi
lea ebx, [ebx + edi + 2]
mov dword [esp + 0x18], ebx
mov ebx, dword [esp + 0x14]
lea edi, [ebx + edi + 2]
mov dword [esp + 0x14], edi
test edx, edx
jg 0x784191
mov eax, dword [esp + 0x90]
mov edi, dword [esp + 0x94]
lea ebx, [edx + eax]
sub ebx, dword [esp + 0x78]
sub edi, ebp
cmp ebx, dword [esp + 0x34]
mov dword [esp + 0x50], edi
mov edi, dword [esp + 0x7c]
ja 0x78acc7
mov eax, dword [esp + 0x50]
jmp 0x78ac3b
mov esi, dword [esp + 0x90]
sub esi, dword [esp + 0x98]
mov ebx, dword [esp + 0x78]
mov edi, dword [esp + 0x80]
mov dword [esp + 0x24], esi
sub edi, ebx
sub esi, ebx
cmp esi, edi
mov dword [esp + 0x34], edi
ja 0x7845d5
mov esi, dword [esp + 0x7c]
mov edi, dword [esp + 0x84]
mov ebx, dword [esp + 0x94]
sub edi, esi
sub ebx, esi
cmp ebx, edi
ja 0x7845d1
mov esi, dword [esp + 0x1c]
imul esi, dword [esp + 0x94]
add esi, dword [esp + 0x20]
mov edi, dword [esp + 0x24]
lea esi, [esi + edi*2]
mov dword [esp + 0x2c], esi
movzx esi, word [esi]
mov edi, esi
mov dword [esp + 0x44], esi
and edi, 0xf800
and esi, 0x7e0
mov ebx, ecx
and ebx, 0xf800
imul edi, ebx
mov ebx, ecx
and ebx, 0x7e0
imul esi, ebx
shr esi, 0xb
and esi, 0x7e0
shr edi, 0x10
and edi, 0xf800
or edi, esi
mov esi, dword [esp + 0x44]
and esi, 0x1f
mov ebx, ecx
and ebx, 0x1f
imul esi, ebx
shr esi, 5
or edi, esi
mov esi, dword [esp + 0x2c]
mov word [esi], di
mov edi, dword [esp + 0x34]
mov esi, dword [esp + 0x90]
mov ebx, dword [esp + 0x98]
add esi, ebx
mov dword [esp + 0x24], esi
sub esi, dword [esp + 0x78]
cmp esi, edi
ja 0x784688
mov esi, dword [esp + 0x7c]
mov edi, dword [esp + 0x84]
mov ebx, dword [esp + 0x94]
sub edi, esi
sub ebx, esi
cmp ebx, edi
ja 0x784688
mov esi, dword [esp + 0x1c]
imul esi, dword [esp + 0x94]
add esi, dword [esp + 0x20]
mov edi, dword [esp + 0x24]
lea esi, [esi + edi*2]
mov dword [esp + 0x2c], esi
movzx esi, word [esi]
mov edi, esi
mov dword [esp + 0x44], esi
and edi, 0xf800
and esi, 0x7e0
mov ebx, ecx
and ebx, 0xf800
imul edi, ebx
mov ebx, ecx
and ebx, 0x7e0
imul esi, ebx
shr esi, 0xb
and esi, 0x7e0
shr edi, 0x10
and edi, 0xf800
or edi, esi
mov esi, dword [esp + 0x44]
and esi, 0x1f
mov ebx, ecx
and ebx, 0x1f
imul esi, ebx
shr esi, 5
or edi, esi
mov esi, dword [esp + 0x2c]
mov word [esi], di
mov ebx, dword [esp + 0x18]
test ebx, ebx
mov dword [esp + 0x2c], 0
jge 0x7846ce
mov eax, dword [esp + 0x9c]
mov edi, dword [esp + 0x30]
cmp eax, edi
jl 0x7846b6
mov ebp, 1
sub eax, edi
mov dword [esp + 0x2c], ebp
lea esi, [ebp*4]
add dword [esp + 0x14], esi
lea ebx, [ebx + esi + 2]
mov dword [esp + 0x18], ebx
jmp 0x78473e
mov edx, dword [esp + 0x98]
add edx, 0xffffffff
cmp dword [esp + 0x14], 0
mov dword [esp + 0x2c], 1
jl 0x78470c
lea esi, [edx*4]
mov edi, 2
sub edi, esi
sub ebx, esi
add dword [esp + 0x14], edi
mov edi, dword [esp + 0x30]
mov dword [esp + 0x18], ebx
jmp 0x78473e
mov eax, dword [esp + 0x9c]
mov edi, dword [esp + 0x30]
cmp eax, edi
jl 0x784722
mov ebp, 1
sub eax, edi
mov esi, ebp
sub esi, edx
add esi, esi
add esi, esi
lea ebx, [ebx + esi + 2]
mov dword [esp + 0x18], ebx
mov ebx, dword [esp + 0x14]
lea esi, [ebx + esi + 2]
mov dword [esp + 0x14], esi
test edx, edx
jle 0x784b3b
lea esi, [edx*4]
mov dword [esp + 0x74], esi
mov esi, dword [esp + 0x90]
add esi, edx
add esi, esi
mov dword [esp + 0x5c], esi
mov ebx, dword [esp + 0x7c]
mov esi, edx
sub esi, dword [esp + 0x78]
add esi, dword [esp + 0x90]
mov dword [esp + 0x60], esi
mov esi, dword [esp + 0x94]
add esi, ebp
imul esi, dword [esp + 0x1c]
mov dword [esp + 0x54], esi
mov esi, ebp
sub esi, ebx
add esi, dword [esp + 0x94]
mov dword [esp + 0x58], esi
mov esi, dword [esp + 0x1c]
neg esi
mov dword [esp + 0x3c], esi
mov esi, dword [esp + 0x94]
sub esi, ebx
sub esi, ebp
mov dword [esp + 0x4c], esi
mov esi, dword [esp + 0x90]
sub esi, dword [esp + 0x78]
sub esi, edx
mov dword [esp + 0x64], esi
mov esi, dword [esp + 0x94]
sub esi, ebp
imul esi, dword [esp + 0x1c]
mov dword [esp + 0x50], esi
mov esi, dword [esp + 0x90]
sub esi, edx
add esi, esi
mov dword [esp + 0x68], esi
cmp dword [esp + 0x2c], 0
je 0x784a38
mov esi, dword [esp + 0x64]
cmp esi, dword [esp + 0x34]
ja 0x78487f
mov esi, dword [esp + 0x84]
sub esi, dword [esp + 0x7c]
cmp dword [esp + 0x58], esi
ja 0x78487f
mov edi, dword [esp + 0x54]
mov esi, dword [esp + 0x68]
add esi, edi
add esi, dword [esp + 0x20]
mov ebx, ecx
mov dword [esp + 0x2c], esi
movzx esi, word [esi]
mov edi, esi
and edi, 0xf800
and ebx, 0xf800
imul edi, ebx
mov dword [esp + 0x44], esi
and esi, 0x7e0
mov ebx, ecx
and ebx, 0x7e0
imul esi, ebx
shr esi, 0xb
and esi, 0x7e0
shr edi, 0x10
and edi, 0xf800
or edi, esi
mov esi, dword [esp + 0x44]
and esi, 0x1f
mov ebx, ecx
and ebx, 0x1f
imul esi, ebx
shr esi, 5
or edi, esi
mov esi, dword [esp + 0x2c]
mov word [esi], di
mov edi, dword [esp + 0x30]
mov esi, dword [esp + 0x34]
cmp dword [esp + 0x60], esi
ja 0x784912
mov esi, dword [esp + 0x84]
sub esi, dword [esp + 0x7c]
cmp dword [esp + 0x58], esi
ja 0x784912
mov edi, dword [esp + 0x5c]
mov esi, dword [esp + 0x54]
add esi, edi
add esi, dword [esp + 0x20]
mov ebx, ecx
mov dword [esp + 0x2c], esi
movzx esi, word [esi]
mov edi, esi
and edi, 0xf800
and ebx, 0xf800
imul edi, ebx
mov dword [esp + 0x44], esi
and esi, 0x7e0
mov ebx, ecx
and ebx, 0x7e0
imul esi, ebx
shr esi, 0xb
and esi, 0x7e0
shr edi, 0x10
and edi, 0xf800
or edi, esi
mov esi, dword [esp + 0x44]
and esi, 0x1f
mov ebx, ecx
and ebx, 0x1f
imul esi, ebx
shr esi, 5
or edi, esi
mov esi, dword [esp + 0x2c]
mov word [esi], di
mov edi, dword [esp + 0x30]
mov esi, dword [esp + 0x34]
cmp dword [esp + 0x64], esi
ja 0x7849a5
mov esi, dword [esp + 0x84]
sub esi, dword [esp + 0x7c]
cmp dword [esp + 0x4c], esi
ja 0x7849a5
mov edi, dword [esp + 0x50]
mov esi, dword [esp + 0x68]
add esi, edi
add esi, dword [esp + 0x20]
mov ebx, ecx
mov dword [esp + 0x2c], esi
movzx esi, word [esi]
mov edi, esi
and edi, 0xf800
and ebx, 0xf800
imul edi, ebx
mov dword [esp + 0x44], esi
and esi, 0x7e0
mov ebx, ecx
and ebx, 0x7e0
imul esi, ebx
shr esi, 0xb
and esi, 0x7e0
shr edi, 0x10
and edi, 0xf800
or edi, esi
mov esi, dword [esp + 0x44]
and esi, 0x1f
mov ebx, ecx
and ebx, 0x1f
imul esi, ebx
shr esi, 5
or edi, esi
mov esi, dword [esp + 0x2c]
mov word [esi], di
mov edi, dword [esp + 0x30]
mov esi, dword [esp + 0x34]
cmp dword [esp + 0x60], esi
ja 0x784a38
mov esi, dword [esp + 0x84]
sub esi, dword [esp + 0x7c]
cmp dword [esp + 0x4c], esi
ja 0x784a38
mov edi, dword [esp + 0x5c]
mov esi, dword [esp + 0x50]
add esi, edi
add esi, dword [esp + 0x20]
mov ebx, ecx
mov dword [esp + 0x2c], esi
movzx esi, word [esi]
mov edi, esi
and edi, 0xf800
and ebx, 0xf800
imul edi, ebx
mov dword [esp + 0x44], esi
and esi, 0x7e0
mov ebx, ecx
and ebx, 0x7e0
imul esi, ebx
shr esi, 0xb
and esi, 0x7e0
shr edi, 0x10
and edi, 0xf800
or edi, esi
mov esi, dword [esp + 0x44]
and esi, 0x1f
mov ebx, ecx
and ebx, 0x1f
imul esi, ebx
shr esi, 5
or edi, esi
mov esi, dword [esp + 0x2c]
mov word [esi], di
mov edi, dword [esp + 0x30]
cmp dword [esp + 0x18], 0
mov ebx, 1
mov dword [esp + 0x2c], 0
jge 0x784a9d
add eax, dword [esp + 0x9c]
cmp eax, edi
jl 0x784a81
mov esi, dword [esp + 0x1c]
add dword [esp + 0x54], esi
mov esi, dword [esp + 0x3c]
add dword [esp + 0x50], esi
add dword [esp + 0x58], ebx
mov esi, ebx
sub dword [esp + 0x4c], esi
add ebp, ebx
sub eax, edi
mov dword [esp + 0x2c], esi
mov ebx, dword [esp + 0x18]
lea esi, [ebp*4]
add dword [esp + 0x14], esi
lea ebx, [ebx + esi + 2]
mov dword [esp + 0x18], ebx
jmp 0x784b33
add dword [esp + 0x64], ebx
sub dword [esp + 0x60], ebx
mov esi, 2
add dword [esp + 0x68], esi
sub dword [esp + 0x5c], esi
sub edx, ebx
cmp dword [esp + 0x14], 0
mov dword [esp + 0x2c], ebx
jl 0x784ae2
mov esi, dword [esp + 0x74]
sub esi, 4
sub dword [esp + 0x18], esi
mov ebx, 2
sub ebx, esi
add dword [esp + 0x14], ebx
mov dword [esp + 0x74], esi
jmp 0x784b33
add eax, dword [esp + 0x9c]
sub dword [esp + 0x74], 4
cmp eax, edi
jl 0x784b13
mov esi, dword [esp + 0x1c]
add dword [esp + 0x54], esi
mov esi, dword [esp + 0x3c]
add dword [esp + 0x58], ebx
add dword [esp + 0x50], esi
sub dword [esp + 0x4c], 1
add ebp, ebx
sub eax, edi
mov ebx, dword [esp + 0x18]
mov esi, ebp
sub esi, edx
add esi, esi
add esi, esi
lea ebx, [ebx + esi + 2]
mov dword [esp + 0x18], ebx
mov ebx, dword [esp + 0x14]
lea esi, [ebx + esi + 2]
mov dword [esp + 0x14], esi
test edx, edx
jg 0x7847e1
mov eax, dword [esp + 0x90]
lea esi, [edx + eax]
mov eax, dword [esp + 0x94]
mov edi, esi
sub edi, dword [esp + 0x78]
sub eax, ebp
cmp edi, dword [esp + 0x34]
ja 0x784bdb
mov ebx, dword [esp + 0x84]
sub ebx, dword [esp + 0x7c]
mov edi, eax
sub edi, dword [esp + 0x7c]
cmp edi, ebx
ja 0x784bdb
imul eax, dword [esp + 0x1c]
add eax, dword [esp + 0x20]
mov edi, ecx
lea eax, [eax + esi*2]
mov dword [esp + 0x2c], eax
movzx eax, word [eax]
and edi, 0xf800
mov esi, eax
and esi, 0xf800
imul esi, edi
mov edi, eax
and edi, 0x7e0
mov ebx, ecx
and ebx, 0x7e0
imul edi, ebx
shr edi, 0xb
shr esi, 0x10
and edi, 0x7e0
and esi, 0xf800
or esi, edi
and eax, 0x1f
mov edi, ecx
and edi, 0x1f
imul eax, edi
shr eax, 5
or esi, eax
mov eax, dword [esp + 0x2c]
mov word [eax], si
mov eax, dword [esp + 0x90]
mov esi, dword [esp + 0x84]
sub eax, edx
mov edx, dword [esp + 0x94]
add ebp, edx
mov edx, eax
sub edx, dword [esp + 0x78]
cmp edx, dword [esp + 0x34]
ja case.0x789050.5
mov edx, dword [esp + 0x7c]
mov edi, ebp
sub edi, edx
sub esi, edx
cmp edi, esi
ja case.0x789050.5
imul ebp, dword [esp + 0x1c]
add ebp, dword [esp + 0x20]
mov edi, ecx
lea edx, [ebp + eax*2]
movzx eax, word [edx]
and edi, 0xf800
mov esi, eax
and esi, 0xf800
imul esi, edi
mov edi, eax
and edi, 0x7e0
mov ebx, ecx
and ebx, 0x7e0
imul edi, ebx
and eax, 0x1f
and ecx, 0x1f
imul eax, ecx
shr esi, 0x10
shr edi, 0xb
and esi, 0xf800
and edi, 0x7e0
or esi, edi
shr eax, 5
or esi, eax
pop edi
mov word [edx], si
pop esi
pop ebp
pop ebx
add esp, 0x78
ret
mov esi, dword [esp + 0x90]
sub esi, dword [esp + 0x98]
mov ebx, dword [esp + 0x78]
mov dword [esp + 0x24], esi
mov esi, dword [esp + 0x80]
sub esi, ebx
mov dword [esp + 0x34], esi
mov esi, dword [esp + 0x24]
sub esi, ebx
cmp esi, dword [esp + 0x34]
ja 0x784d77
mov eax, dword [esp + 0x7c]
mov esi, dword [esp + 0x84]
mov ebx, dword [esp + 0x94]
sub esi, eax
sub ebx, eax
cmp ebx, esi
ja 0x784d73
mov eax, dword [esp + 0x1c]
imul eax, dword [esp + 0x94]
add eax, dword [esp + 0x20]
mov esi, dword [esp + 0x24]
lea eax, [eax + esi*2]
mov dword [esp + 0x2c], eax
movzx eax, word [eax]
movzx ebx, ax
mov esi, ebx
shr ebx, 0xb
mov dword [esp + 0x50], ebx
movzx ebx, ax
and ebx, 0x1f
mov dword [esp + 0x10], ebx
shr esi, 5
and esi, 0x3f
mov ebx, ecx
sar ebx, 5
and ebx, 0x3f
imul ebx, esi
sar ebx, 6
sub ebx, esi
mov esi, eax
shr esi, 5
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x50]
and esi, 0x3f
add si, word [edi + ebx*4]
mov ebx, ecx
sar ebx, 0xb
imul ebx, eax
sar ebx, 5
sub ebx, eax
mov ax, word [esp + 0x38]
shr ax, 0xb
add ax, word [edi + ebx*4]
shl si, 5
shl ax, 0xb
or si, ax
mov eax, dword [esp + 0x10]
mov ebx, ecx
and ebx, 0x1f
imul ebx, eax
sar ebx, 5
sub ebx, eax
mov eax, dword [esp + 0x38]
and eax, 0x1f
add ax, word [edi + ebx*4]
or si, ax
mov eax, dword [esp + 0x2c]
mov word [eax], si
mov eax, dword [esp + 0x28]
mov esi, dword [esp + 0x98]
mov ebx, dword [esp + 0x90]
add esi, ebx
mov dword [esp + 0x24], esi
sub esi, dword [esp + 0x78]
cmp esi, dword [esp + 0x34]
ja 0x784e64
mov eax, dword [esp + 0x7c]
mov esi, dword [esp + 0x84]
mov ebx, dword [esp + 0x94]
sub esi, eax
sub ebx, eax
cmp ebx, esi
ja 0x784e60
mov eax, dword [esp + 0x1c]
imul eax, dword [esp + 0x94]
add eax, dword [esp + 0x20]
mov esi, dword [esp + 0x24]
lea eax, [eax + esi*2]
mov dword [esp + 0x2c], eax
movzx eax, word [eax]
movzx ebx, ax
mov esi, ebx
shr ebx, 0xb
mov dword [esp + 0x50], ebx
movzx ebx, ax
and ebx, 0x1f
mov dword [esp + 0x10], ebx
shr esi, 5
and esi, 0x3f
mov ebx, ecx
sar ebx, 5
and ebx, 0x3f
imul ebx, esi
sar ebx, 6
sub ebx, esi
mov esi, eax
shr esi, 5
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x50]
and esi, 0x3f
add si, word [edi + ebx*4]
mov ebx, ecx
sar ebx, 0xb
imul ebx, eax
sar ebx, 5
sub ebx, eax
mov ax, word [esp + 0x38]
shr ax, 0xb
add ax, word [edi + ebx*4]
shl si, 5
shl ax, 0xb
or si, ax
mov eax, dword [esp + 0x10]
mov ebx, ecx
and ebx, 0x1f
imul ebx, eax
sar ebx, 5
sub ebx, eax
mov eax, dword [esp + 0x38]
and eax, 0x1f
add ax, word [edi + ebx*4]
or si, ax
mov eax, dword [esp + 0x2c]
mov word [eax], si
mov eax, dword [esp + 0x28]
cmp dword [esp + 0x18], 0
mov ebx, dword [esp + 0x30]
mov esi, dword [esp + 0x9c]
mov dword [esp + 0x2c], 0
jge 0x784eb7
cmp esi, ebx
mov eax, esi
mov dword [esp + 0x28], eax
jl 0x784e9b
mov ebp, 1
sub eax, ebx
mov dword [esp + 0x28], eax
mov dword [esp + 0x2c], ebp
mov ebx, dword [esp + 0x18]
lea esi, [ebp*4]
add dword [esp + 0x14], esi
lea ebx, [ebx + esi + 2]
mov dword [esp + 0x18], ebx
jmp 0x784f24
mov edx, dword [esp + 0x98]
add edx, 0xffffffff
cmp dword [esp + 0x14], 0
mov dword [esp + 0x2c], 1
jl 0x784eef
lea esi, [edx*4]
sub dword [esp + 0x18], esi
mov ebx, 2
sub ebx, esi
add dword [esp + 0x14], ebx
jmp 0x784f24
cmp esi, ebx
mov eax, esi
mov dword [esp + 0x28], esi
jl 0x784f04
sub eax, ebx
mov ebp, 1
mov dword [esp + 0x28], eax
mov ebx, dword [esp + 0x18]
mov esi, ebp
sub esi, edx
add esi, esi
add esi, esi
lea ebx, [ebx + esi + 2]
mov dword [esp + 0x18], ebx
mov ebx, dword [esp + 0x14]
lea esi, [ebx + esi + 2]
mov dword [esp + 0x14], esi
test edx, edx
jle 0x785412
lea esi, [edx*4]
mov dword [esp + 0x74], esi
mov esi, dword [esp + 0x90]
add esi, edx
add esi, esi
mov dword [esp + 0x5c], esi
mov ebx, dword [esp + 0x7c]
mov esi, edx
sub esi, dword [esp + 0x78]
add esi, dword [esp + 0x90]
mov dword [esp + 0x60], esi
mov esi, dword [esp + 0x94]
add esi, ebp
imul esi, dword [esp + 0x1c]
mov dword [esp + 0x54], esi
mov esi, ebp
sub esi, ebx
add esi, dword [esp + 0x94]
mov dword [esp + 0x58], esi
mov esi, dword [esp + 0x1c]
neg esi
mov dword [esp + 0x3c], esi
mov esi, dword [esp + 0x94]
sub esi, ebx
sub esi, ebp
mov dword [esp + 0x48], esi
mov esi, dword [esp + 0x90]
sub esi, dword [esp + 0x78]
sub esi, edx
mov dword [esp + 0x64], esi
mov esi, dword [esp + 0x94]
sub esi, ebp
imul esi, dword [esp + 0x1c]
mov dword [esp + 0x4c], esi
mov esi, dword [esp + 0x90]
sub esi, edx
add esi, esi
mov dword [esp + 0x68], esi
jmp 0x784fd0
cmp dword [esp + 0x2c], 0
je 0x7852f7
mov esi, dword [esp + 0x64]
cmp esi, dword [esp + 0x34]
ja 0x7850a2
mov esi, dword [esp + 0x84]
sub esi, dword [esp + 0x7c]
cmp dword [esp + 0x58], esi
ja 0x7850a2
mov esi, dword [esp + 0x54]
mov eax, dword [esp + 0x68]
add eax, esi
add eax, dword [esp + 0x20]
mov dword [esp + 0x2c], eax
movzx eax, word [eax]
movzx ebx, ax
mov esi, ebx
shr ebx, 0xb
mov dword [esp + 0x50], ebx
movzx ebx, ax
and ebx, 0x1f
mov dword [esp + 0x10], ebx
shr esi, 5
and esi, 0x3f
mov ebx, ecx
sar ebx, 5
and ebx, 0x3f
imul ebx, esi
sar ebx, 6
sub ebx, esi
mov esi, eax
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x50]
shr esi, 5
and esi, 0x3f
add si, word [edi + ebx*4]
mov ebx, ecx
sar ebx, 0xb
imul ebx, eax
sar ebx, 5
sub ebx, eax
mov ax, word [esp + 0x38]
shr ax, 0xb
add ax, word [edi + ebx*4]
shl si, 5
shl ax, 0xb
or si, ax
mov eax, dword [esp + 0x10]
mov ebx, ecx
and ebx, 0x1f
imul ebx, eax
sar ebx, 5
sub ebx, eax
mov eax, dword [esp + 0x38]
and eax, 0x1f
add ax, word [edi + ebx*4]
or si, ax
mov eax, dword [esp + 0x2c]
mov word [eax], si
mov eax, dword [esp + 0x28]
mov esi, dword [esp + 0x34]
cmp dword [esp + 0x60], esi
ja 0x785169
mov esi, dword [esp + 0x84]
sub esi, dword [esp + 0x7c]
cmp dword [esp + 0x58], esi
ja 0x785169
mov esi, dword [esp + 0x5c]
mov eax, dword [esp + 0x54]
add eax, esi
add eax, dword [esp + 0x20]
mov dword [esp + 0x2c], eax
movzx eax, word [eax]
movzx ebx, ax
mov esi, ebx
shr ebx, 0xb
mov dword [esp + 0x50], ebx
movzx ebx, ax
and ebx, 0x1f
mov dword [esp + 0x10], ebx
shr esi, 5
and esi, 0x3f
mov ebx, ecx
sar ebx, 5
and ebx, 0x3f
imul ebx, esi
sar ebx, 6
sub ebx, esi
mov esi, eax
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x50]
shr esi, 5
and esi, 0x3f
add si, word [edi + ebx*4]
mov ebx, ecx
sar ebx, 0xb
imul ebx, eax
sar ebx, 5
sub ebx, eax
mov ax, word [esp + 0x38]
shr ax, 0xb
add ax, word [edi + ebx*4]
shl si, 5
shl ax, 0xb
or si, ax
mov eax, dword [esp + 0x10]
mov ebx, ecx
and ebx, 0x1f
imul ebx, eax
sar ebx, 5
sub ebx, eax
mov eax, dword [esp + 0x38]
and eax, 0x1f
add ax, word [edi + ebx*4]
or si, ax
mov eax, dword [esp + 0x2c]
mov word [eax], si
mov eax, dword [esp + 0x28]
mov esi, dword [esp + 0x34]
cmp dword [esp + 0x64], esi
ja 0x785230
mov esi, dword [esp + 0x84]
sub esi, dword [esp + 0x7c]
cmp dword [esp + 0x48], esi
ja 0x785230
mov esi, dword [esp + 0x4c]
mov eax, dword [esp + 0x68]
add eax, esi
add eax, dword [esp + 0x20]
mov dword [esp + 0x2c], eax
movzx eax, word [eax]
movzx ebx, ax
mov esi, ebx
shr ebx, 0xb
mov dword [esp + 0x50], ebx
movzx ebx, ax
and ebx, 0x1f
mov dword [esp + 0x10], ebx
shr esi, 5
and esi, 0x3f
mov ebx, ecx
sar ebx, 5
and ebx, 0x3f
imul ebx, esi
sar ebx, 6
sub ebx, esi
mov esi, eax
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x50]
shr esi, 5
and esi, 0x3f
add si, word [edi + ebx*4]
mov ebx, ecx
sar ebx, 0xb
imul ebx, eax
sar ebx, 5
sub ebx, eax
mov ax, word [esp + 0x38]
shr ax, 0xb
add ax, word [edi + ebx*4]
shl si, 5
shl ax, 0xb
or si, ax
mov eax, dword [esp + 0x10]
mov ebx, ecx
and ebx, 0x1f
imul ebx, eax
sar ebx, 5
sub ebx, eax
mov eax, dword [esp + 0x38]
and eax, 0x1f
add ax, word [edi + ebx*4]
or si, ax
mov eax, dword [esp + 0x2c]
mov word [eax], si
mov eax, dword [esp + 0x28]
mov esi, dword [esp + 0x34]
cmp dword [esp + 0x60], esi
ja 0x7852f7
mov esi, dword [esp + 0x84]
sub esi, dword [esp + 0x7c]
cmp dword [esp + 0x48], esi
ja 0x7852f7
mov esi, dword [esp + 0x5c]
mov eax, dword [esp + 0x4c]
add eax, esi
add eax, dword [esp + 0x20]
mov dword [esp + 0x2c], eax
movzx eax, word [eax]
movzx ebx, ax
mov esi, ebx
shr ebx, 0xb
mov dword [esp + 0x50], ebx
movzx ebx, ax
and ebx, 0x1f
mov dword [esp + 0x10], ebx
shr esi, 5
and esi, 0x3f
mov ebx, ecx
sar ebx, 5
and ebx, 0x3f
imul ebx, esi
sar ebx, 6
sub ebx, esi
mov esi, eax
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x50]
shr esi, 5
and esi, 0x3f
add si, word [edi + ebx*4]
mov ebx, ecx
sar ebx, 0xb
imul ebx, eax
sar ebx, 5
sub ebx, eax
mov ax, word [esp + 0x38]
shr ax, 0xb
add ax, word [edi + ebx*4]
shl si, 5
shl ax, 0xb
or si, ax
mov eax, dword [esp + 0x10]
mov ebx, ecx
and ebx, 0x1f
imul ebx, eax
sar ebx, 5
sub ebx, eax
mov eax, dword [esp + 0x38]
and eax, 0x1f
add ax, word [edi + ebx*4]
or si, ax
mov eax, dword [esp + 0x2c]
mov word [eax], si
mov eax, dword [esp + 0x28]
cmp dword [esp + 0x18], 0
mov ebx, 1
mov dword [esp + 0x2c], 0
jge 0x785368
add eax, dword [esp + 0x9c]
cmp eax, dword [esp + 0x30]
mov dword [esp + 0x28], eax
jl 0x78534c
mov esi, dword [esp + 0x1c]
add dword [esp + 0x54], esi
mov esi, dword [esp + 0x3c]
add dword [esp + 0x4c], esi
add dword [esp + 0x58], ebx
mov esi, ebx
sub dword [esp + 0x48], esi
add ebp, ebx
sub eax, dword [esp + 0x30]
mov dword [esp + 0x2c], esi
mov dword [esp + 0x28], eax
mov ebx, dword [esp + 0x18]
lea esi, [ebp*4]
add dword [esp + 0x14], esi
lea ebx, [ebx + esi + 2]
mov dword [esp + 0x18], ebx
jmp 0x78540a
add dword [esp + 0x64], ebx
sub dword [esp + 0x60], ebx
mov esi, 2
add dword [esp + 0x68], esi
sub dword [esp + 0x5c], esi
sub edx, ebx
cmp dword [esp + 0x14], 0
mov dword [esp + 0x2c], ebx
jl 0x7853ad
mov esi, dword [esp + 0x74]
sub esi, 4
sub dword [esp + 0x18], esi
mov ebx, 2
sub ebx, esi
add dword [esp + 0x14], ebx
mov dword [esp + 0x74], esi
jmp 0x78540a
add eax, dword [esp + 0x9c]
sub dword [esp + 0x74], 4
cmp eax, dword [esp + 0x30]
mov dword [esp + 0x28], eax
jl 0x7853ea
mov esi, dword [esp + 0x1c]
add dword [esp + 0x54], esi
mov esi, dword [esp + 0x3c]
add dword [esp + 0x58], ebx
add dword [esp + 0x4c], esi
sub dword [esp + 0x48], 1
add ebp, ebx
sub eax, dword [esp + 0x30]
mov dword [esp + 0x28], eax
mov ebx, dword [esp + 0x18]
mov esi, ebp
sub esi, edx
add esi, esi
add esi, esi
lea ebx, [ebx + esi + 2]
mov dword [esp + 0x18], ebx
mov ebx, dword [esp + 0x14]
lea esi, [ebx + esi + 2]
mov dword [esp + 0x14], esi
test edx, edx
jg 0x784fd0
mov eax, dword [esp + 0x90]
mov esi, dword [esp + 0x94]
lea ebx, [edx + eax]
sub ebx, dword [esp + 0x78]
sub esi, ebp
cmp ebx, dword [esp + 0x34]
mov dword [esp + 0x50], esi
mov esi, dword [esp + 0x7c]
ja 0x78bd29
mov eax, dword [esp + 0x50]
jmp 0x78bc62
mov esi, dword [esp + 0x90]
sub esi, dword [esp + 0x98]
mov ebx, dword [esp + 0x78]
mov dword [esp + 0x24], esi
mov esi, dword [esp + 0x80]
sub esi, ebx
mov dword [esp + 0x34], esi
mov esi, dword [esp + 0x24]
sub esi, ebx
cmp esi, dword [esp + 0x34]
ja 0x78553e
mov eax, dword [esp + 0x7c]
mov esi, dword [esp + 0x84]
mov ebx, dword [esp + 0x94]
sub esi, eax
sub ebx, eax
cmp ebx, esi
ja 0x78553a
mov eax, dword [esp + 0x1c]
imul eax, dword [esp + 0x94]
add eax, dword [esp + 0x20]
mov esi, dword [esp + 0x24]
lea esi, [eax + esi*2]
mov dword [esp + 0x2c], esi
movzx esi, word [esi]
mov dword [esp + 0x38], esi
movzx esi, si
mov dword [esp + 0x44], esi
mov eax, ecx
not eax
movzx eax, ax
mov ebx, eax
shr esi, 5
shr ebx, 5
and esi, 0x3f
and ebx, 0x3f
sub ebx, esi
mov esi, dword [esp + 0x38]
shr esi, 5
and esi, 0x3f
add si, word [edi + ebx*4]
mov ebx, dword [esp + 0x44]
mov dword [esp + 0x58], eax
shr eax, 0xb
shr ebx, 0xb
sub eax, ebx
movzx ebx, word [esp + 0x38]
shr bx, 0xb
add bx, word [edi + eax*4]
mov eax, dword [esp + 0x44]
shl si, 5
shl bx, 0xb
or si, bx
mov word [esp + 0x10], si
mov esi, dword [esp + 0x58]
movzx ebx, word [esp + 0x10]
and eax, 0x1f
and esi, 0x1f
sub esi, eax
mov eax, dword [esp + 0x38]
and eax, 0x1f
add ax, word [edi + esi*4]
or bx, ax
mov eax, dword [esp + 0x2c]
mov word [eax], bx
mov eax, dword [esp + 0x28]
mov esi, dword [esp + 0x98]
mov ebx, dword [esp + 0x90]
add esi, ebx
mov dword [esp + 0x24], esi
sub esi, dword [esp + 0x78]
cmp esi, dword [esp + 0x34]
ja 0x785627
mov eax, dword [esp + 0x7c]
mov esi, dword [esp + 0x84]
mov ebx, dword [esp + 0x94]
sub esi, eax
sub ebx, eax
cmp ebx, esi
ja 0x785623
mov eax, dword [esp + 0x1c]
imul eax, dword [esp + 0x94]
add eax, dword [esp + 0x20]
mov esi, dword [esp + 0x24]
lea esi, [eax + esi*2]
mov dword [esp + 0x2c], esi
movzx esi, word [esi]
mov dword [esp + 0x38], esi
movzx esi, si
mov dword [esp + 0x44], esi
mov eax, ecx
not eax
movzx eax, ax
mov ebx, eax
shr esi, 5
shr ebx, 5
and esi, 0x3f
and ebx, 0x3f
sub ebx, esi
mov esi, dword [esp + 0x38]
shr esi, 5
and esi, 0x3f
add si, word [edi + ebx*4]
mov ebx, dword [esp + 0x44]
mov dword [esp + 0x58], eax
shr eax, 0xb
shr ebx, 0xb
sub eax, ebx
movzx ebx, word [esp + 0x38]
shr bx, 0xb
add bx, word [edi + eax*4]
mov eax, dword [esp + 0x44]
shl si, 5
shl bx, 0xb
or si, bx
mov word [esp + 0x10], si
mov esi, dword [esp + 0x58]
movzx ebx, word [esp + 0x10]
and eax, 0x1f
and esi, 0x1f
sub esi, eax
mov eax, dword [esp + 0x38]
and eax, 0x1f
add ax, word [edi + esi*4]
or bx, ax
mov eax, dword [esp + 0x2c]
mov word [eax], bx
mov eax, dword [esp + 0x28]
cmp dword [esp + 0x18], 0
mov ebx, dword [esp + 0x30]
mov esi, dword [esp + 0x9c]
mov dword [esp + 0x2c], 0
jge 0x78567a
cmp esi, ebx
mov eax, esi
mov dword [esp + 0x28], eax
jl 0x78565e
mov ebp, 1
sub eax, ebx
mov dword [esp + 0x28], eax
mov dword [esp + 0x2c], ebp
mov ebx, dword [esp + 0x18]
lea esi, [ebp*4]
add dword [esp + 0x14], esi
lea ebx, [ebx + esi + 2]
mov dword [esp + 0x18], ebx
jmp 0x7856e7
mov edx, dword [esp + 0x98]
add edx, 0xffffffff
cmp dword [esp + 0x14], 0
mov dword [esp + 0x2c], 1
jl 0x7856b2
lea esi, [edx*4]
sub dword [esp + 0x18], esi
mov ebx, 2
sub ebx, esi
add dword [esp + 0x14], ebx
jmp 0x7856e7
cmp esi, ebx
mov eax, esi
mov dword [esp + 0x28], esi
jl 0x7856c7
sub eax, ebx
mov ebp, 1
mov dword [esp + 0x28], eax
mov ebx, dword [esp + 0x18]
mov esi, ebp
sub esi, edx
add esi, esi
add esi, esi
lea ebx, [ebx + esi + 2]
mov dword [esp + 0x18], ebx
mov ebx, dword [esp + 0x14]
lea esi, [ebx + esi + 2]
mov dword [esp + 0x14], esi
test edx, edx
jle 0x785bc2
lea esi, [edx*4]
mov dword [esp + 0x74], esi
mov esi, dword [esp + 0x90]
add esi, edx
add esi, esi
mov dword [esp + 0x5c], esi
mov ebx, dword [esp + 0x7c]
mov esi, edx
sub esi, dword [esp + 0x78]
add esi, dword [esp + 0x90]
mov dword [esp + 0x60], esi
mov esi, dword [esp + 0x94]
add esi, ebp
imul esi, dword [esp + 0x1c]
mov dword [esp + 0x50], esi
mov esi, ebp
sub esi, ebx
add esi, dword [esp + 0x94]
mov dword [esp + 0x54], esi
mov esi, dword [esp + 0x1c]
neg esi
mov dword [esp + 0x3c], esi
mov esi, dword [esp + 0x94]
sub esi, ebx
sub esi, ebp
mov dword [esp + 0x48], esi
mov esi, dword [esp + 0x90]
sub esi, dword [esp + 0x78]
sub esi, edx
mov dword [esp + 0x64], esi
mov esi, dword [esp + 0x94]
sub esi, ebp
imul esi, dword [esp + 0x1c]
mov dword [esp + 0x4c], esi
mov esi, dword [esp + 0x90]
sub esi, edx
add esi, esi
mov dword [esp + 0x68], esi
lea ebx, [ebx]
cmp dword [esp + 0x2c], 0
je 0x785aa7
mov esi, dword [esp + 0x64]
cmp esi, dword [esp + 0x34]
ja 0x78585e
mov esi, dword [esp + 0x84]
sub esi, dword [esp + 0x7c]
cmp dword [esp + 0x54], esi
ja 0x78585e
mov esi, dword [esp + 0x50]
mov eax, dword [esp + 0x68]
add eax, esi
add eax, dword [esp + 0x20]
mov esi, ecx
mov dword [esp + 0x2c], eax
movzx eax, word [eax]
mov dword [esp + 0x38], eax
movzx eax, ax
mov dword [esp + 0x44], eax
shr eax, 5
not esi
movzx esi, si
and eax, 0x3f
mov ebx, esi
shr ebx, 5
and ebx, 0x3f
sub ebx, eax
mov eax, dword [esp + 0x38]
shr eax, 5
and eax, 0x3f
add ax, word [edi + ebx*4]
mov ebx, dword [esp + 0x44]
shr ebx, 0xb
mov dword [esp + 0x58], esi
shr esi, 0xb
sub esi, ebx
movzx ebx, word [esp + 0x38]
shl ax, 5
shr bx, 0xb
add bx, word [edi + esi*4]
mov esi, dword [esp + 0x58]
shl bx, 0xb
or ax, bx
mov word [esp + 0x10], ax
mov eax, dword [esp + 0x44]
movzx ebx, word [esp + 0x10]
and eax, 0x1f
and esi, 0x1f
sub esi, eax
mov eax, dword [esp + 0x38]
and eax, 0x1f
add ax, word [edi + esi*4]
or bx, ax
mov eax, dword [esp + 0x2c]
mov word [eax], bx
mov eax, dword [esp + 0x28]
mov esi, dword [esp + 0x34]
cmp dword [esp + 0x60], esi
ja 0x785921
mov esi, dword [esp + 0x84]
sub esi, dword [esp + 0x7c]
cmp dword [esp + 0x54], esi
ja 0x785921
mov esi, dword [esp + 0x5c]
mov eax, dword [esp + 0x50]
add eax, esi
add eax, dword [esp + 0x20]
mov esi, ecx
mov dword [esp + 0x2c], eax
movzx eax, word [eax]
mov dword [esp + 0x38], eax
movzx eax, ax
mov dword [esp + 0x44], eax
shr eax, 5
not esi
movzx esi, si
and eax, 0x3f
mov ebx, esi
shr ebx, 5
and ebx, 0x3f
sub ebx, eax
mov eax, dword [esp + 0x38]
shr eax, 5
and eax, 0x3f
add ax, word [edi + ebx*4]
mov ebx, dword [esp + 0x44]
shr ebx, 0xb
mov dword [esp + 0x58], esi
shr esi, 0xb
sub esi, ebx
movzx ebx, word [esp + 0x38]
shl ax, 5
shr bx, 0xb
add bx, word [edi + esi*4]
mov esi, dword [esp + 0x58]
shl bx, 0xb
or ax, bx
mov word [esp + 0x10], ax
mov eax, dword [esp + 0x44]
movzx ebx, word [esp + 0x10]
and eax, 0x1f
and esi, 0x1f
sub esi, eax
mov eax, dword [esp + 0x38]
and eax, 0x1f
add ax, word [edi + esi*4]
or bx, ax
mov eax, dword [esp + 0x2c]
mov word [eax], bx
mov eax, dword [esp + 0x28]
mov esi, dword [esp + 0x34]
cmp dword [esp + 0x64], esi
ja 0x7859e4
mov esi, dword [esp + 0x84]
sub esi, dword [esp + 0x7c]
cmp dword [esp + 0x48], esi
ja 0x7859e4
mov esi, dword [esp + 0x4c]
mov eax, dword [esp + 0x68]
add eax, esi
add eax, dword [esp + 0x20]
mov esi, ecx
mov dword [esp + 0x2c], eax
movzx eax, word [eax]
mov dword [esp + 0x38], eax
movzx eax, ax
mov dword [esp + 0x44], eax
shr eax, 5
not esi
movzx esi, si
and eax, 0x3f
mov ebx, esi
shr ebx, 5
and ebx, 0x3f
sub ebx, eax
mov eax, dword [esp + 0x38]
shr eax, 5
and eax, 0x3f
add ax, word [edi + ebx*4]
mov ebx, dword [esp + 0x44]
shr ebx, 0xb
mov dword [esp + 0x58], esi
shr esi, 0xb
sub esi, ebx
movzx ebx, word [esp + 0x38]
shl ax, 5
shr bx, 0xb
add bx, word [edi + esi*4]
mov esi, dword [esp + 0x58]
shl bx, 0xb
or ax, bx
mov word [esp + 0x10], ax
mov eax, dword [esp + 0x44]
movzx ebx, word [esp + 0x10]
and eax, 0x1f
and esi, 0x1f
sub esi, eax
mov eax, dword [esp + 0x38]
and eax, 0x1f
add ax, word [edi + esi*4]
or bx, ax
mov eax, dword [esp + 0x2c]
mov word [eax], bx
mov eax, dword [esp + 0x28]
mov esi, dword [esp + 0x34]
cmp dword [esp + 0x60], esi
ja 0x785aa7
mov esi, dword [esp + 0x84]
sub esi, dword [esp + 0x7c]
cmp dword [esp + 0x48], esi
ja 0x785aa7
mov esi, dword [esp + 0x5c]
mov eax, dword [esp + 0x4c]
add eax, esi
add eax, dword [esp + 0x20]
mov esi, ecx
mov dword [esp + 0x2c], eax
movzx eax, word [eax]
mov dword [esp + 0x38], eax
movzx eax, ax
mov dword [esp + 0x44], eax
shr eax, 5
not esi
movzx esi, si
and eax, 0x3f
mov ebx, esi
shr ebx, 5
and ebx, 0x3f
sub ebx, eax
mov eax, dword [esp + 0x38]
shr eax, 5
and eax, 0x3f
add ax, word [edi + ebx*4]
mov ebx, dword [esp + 0x44]
shr ebx, 0xb
mov dword [esp + 0x58], esi
shr esi, 0xb
sub esi, ebx
movzx ebx, word [esp + 0x38]
shl ax, 5
shr bx, 0xb
add bx, word [edi + esi*4]
mov esi, dword [esp + 0x58]
shl bx, 0xb
or ax, bx
mov word [esp + 0x10], ax
mov eax, dword [esp + 0x44]
movzx ebx, word [esp + 0x10]
and eax, 0x1f
and esi, 0x1f
sub esi, eax
mov eax, dword [esp + 0x38]
and eax, 0x1f
add ax, word [edi + esi*4]
or bx, ax
mov eax, dword [esp + 0x2c]
mov word [eax], bx
mov eax, dword [esp + 0x28]
cmp dword [esp + 0x18], 0
mov ebx, 1
mov dword [esp + 0x2c], 0
jge 0x785b18
add eax, dword [esp + 0x9c]
cmp eax, dword [esp + 0x30]
mov dword [esp + 0x28], eax
jl 0x785afc
mov esi, dword [esp + 0x1c]
add dword [esp + 0x50], esi
mov esi, dword [esp + 0x3c]
add dword [esp + 0x4c], esi
add dword [esp + 0x54], ebx
mov esi, ebx
sub dword [esp + 0x48], esi
add ebp, ebx
sub eax, dword [esp + 0x30]
mov dword [esp + 0x2c], esi
mov dword [esp + 0x28], eax
mov ebx, dword [esp + 0x18]
lea esi, [ebp*4]
add dword [esp + 0x14], esi
lea ebx, [ebx + esi + 2]
mov dword [esp + 0x18], ebx
jmp 0x785bba
add dword [esp + 0x64], ebx
sub dword [esp + 0x60], ebx
mov esi, 2
add dword [esp + 0x68], esi
sub dword [esp + 0x5c], esi
sub edx, ebx
cmp dword [esp + 0x14], 0
mov dword [esp + 0x2c], ebx
jl 0x785b5d
mov esi, dword [esp + 0x74]
sub esi, 4
sub dword [esp + 0x18], esi
mov ebx, 2
sub ebx, esi
add dword [esp + 0x14], ebx
mov dword [esp + 0x74], esi
jmp 0x785bba
add eax, dword [esp + 0x9c]
sub dword [esp + 0x74], 4
cmp eax, dword [esp + 0x30]
mov dword [esp + 0x28], eax
jl 0x785b9a
mov esi, dword [esp + 0x1c]
add dword [esp + 0x50], esi
mov esi, dword [esp + 0x3c]
add dword [esp + 0x54], ebx
add dword [esp + 0x4c], esi
sub dword [esp + 0x48], 1
add ebp, ebx
sub eax, dword [esp + 0x30]
mov dword [esp + 0x28], eax
mov ebx, dword [esp + 0x18]
mov esi, ebp
sub esi, edx
add esi, esi
add esi, esi
lea ebx, [ebx + esi + 2]
mov dword [esp + 0x18], ebx
mov ebx, dword [esp + 0x14]
lea esi, [ebx + esi + 2]
mov dword [esp + 0x14], esi
test edx, edx
jg 0x785790
mov eax, dword [esp + 0x90]
mov esi, dword [esp + 0x94]
lea ebx, [edx + eax]
sub ebx, dword [esp + 0x78]
sub esi, ebp
cmp ebx, dword [esp + 0x34]
mov dword [esp + 0x50], esi
mov esi, dword [esp + 0x7c]
ja 0x785cb4
mov eax, dword [esp + 0x50]
mov ebx, dword [esp + 0x84]
sub eax, esi
sub ebx, esi
cmp eax, ebx
ja 0x785cad
mov eax, dword [esp + 0x50]
imul eax, dword [esp + 0x1c]
add eax, dword [esp + 0x20]
mov esi, dword [esp + 0x90]
add esi, edx
lea eax, [eax + esi*2]
mov dword [esp + 0x2c], eax
movzx eax, word [eax]
mov dword [esp + 0x38], eax
movzx eax, ax
mov dword [esp + 0x44], eax
shr eax, 5
and eax, 0x3f
mov esi, ecx
not esi
movzx esi, si
mov ebx, esi
shr ebx, 5
and ebx, 0x3f
sub ebx, eax
mov eax, dword [esp + 0x38]
shr eax, 5
and eax, 0x3f
add ax, word [edi + ebx*4]
mov ebx, dword [esp + 0x44]
mov dword [esp + 0x58], esi
shr ebx, 0xb
shr esi, 0xb
sub esi, ebx
movzx ebx, word [esp + 0x38]
shr bx, 0xb
add bx, word [edi + esi*4]
mov esi, dword [esp + 0x58]
shl ax, 5
shl bx, 0xb
or ax, bx
mov word [esp + 0x10], ax
mov eax, dword [esp + 0x44]
movzx ebx, word [esp + 0x10]
and eax, 0x1f
and esi, 0x1f
sub esi, eax
mov eax, dword [esp + 0x38]
and eax, 0x1f
add ax, word [edi + esi*4]
mov esi, dword [esp + 0x7c]
or bx, ax
mov eax, dword [esp + 0x2c]
mov word [eax], bx
mov eax, dword [esp + 0x90]
sub eax, edx
mov edx, dword [esp + 0x94]
add ebp, edx
mov edx, eax
sub edx, dword [esp + 0x78]
cmp edx, dword [esp + 0x34]
ja case.0x789050.5
mov edx, dword [esp + 0x84]
mov ebx, ebp
sub ebx, esi
sub edx, esi
cmp ebx, edx
ja case.0x789050.5
imul ebp, dword [esp + 0x1c]
add ebp, dword [esp + 0x20]
lea eax, [ebp + eax*2]
mov dword [esp + 0x2c], eax
movzx eax, word [eax]
jmp 0x78c699
mov eax, dword [esp + 0x9c]
imul eax, eax
cdq
idiv ebx
mov edx, ebx
xor ebp, ebp
mov dword [esp + 0x28], ebp
mov dword [esp + 0x30], eax
mov eax, 3
sub eax, ecx
lea ecx, [ebx*4]
mov ebx, ecx
mov ecx, 3
sub ecx, ebx
mov dword [esp + 0x14], ecx
mov ecx, dword [esp + 0x74]
mov ecx, dword [ecx + 0x1c]
sub ecx, ebp
mov dword [esp + 0x18], eax
je 0x788fc2
sub ecx, 1
jne case.0x789050.5
mov ecx, dword [0xb160d4]
and ecx, 0xffffff
cmp ecx, 0xffffff
je 0x785dc3
movzx ebx, byte [esp + 0xa2]
movzx ecx, byte [0xb160d6]
movzx edi, byte [0xb160d5]
imul ebx, ecx
movzx ecx, byte [esp + 0xa1]
mov dword [esp + 0x74], ecx
imul ecx, edi
movzx edi, byte [0xb160d4]
sar ecx, 8
mov byte [esp + 0xa1], cl
movzx ecx, byte [esp + 0xa0]
mov dword [esp + 0x74], ecx
imul ecx, edi
sar ebx, 8
sar ecx, 8
mov byte [esp + 0xa2], bl
mov byte [esp + 0xa0], cl
jmp 0x785dca
mov bl, byte [esp + 0xa2]
mov ecx, dword [0xb160b4]
cmp ecx, 0xb
ja case.0x789050.5
jmp dword [ecx*4 + 0x78c824]
mov ecx, dword [0xb160b8]
cmp ecx, 0xff
jne 0x786251
mov ebx, dword [esp + 0x90]
mov edi, dword [esp + 0x78]
mov esi, dword [esp + 0x80]
sub esi, edi
mov ecx, ebx
sub ecx, dword [esp + 0x98]
mov dword [esp + 0x34], esi
mov esi, ecx
sub esi, edi
cmp esi, dword [esp + 0x34]
ja 0x785e59
mov esi, dword [esp + 0x84]
mov edi, dword [esp + 0x94]
sub esi, dword [esp + 0x7c]
sub edi, dword [esp + 0x7c]
cmp edi, esi
ja 0x785e59
mov esi, dword [esp + 0x1c]
imul esi, dword [esp + 0x94]
add esi, dword [esp + 0x20]
mov edi, dword [esp + 0xa0]
mov dword [esi + ecx*4], edi
mov ecx, dword [esp + 0x98]
lea esi, [ebx + ecx]
sub esi, dword [esp + 0x78]
cmp esi, dword [esp + 0x34]
ja 0x785eb9
mov ecx, dword [esp + 0x7c]
mov esi, dword [esp + 0x84]
mov edi, dword [esp + 0x94]
sub esi, ecx
sub edi, ecx
cmp edi, esi
mov ecx, dword [esp + 0x98]
ja 0x785eb9
mov esi, dword [esp + 0x1c]
imul esi, dword [esp + 0x94]
add esi, dword [esp + 0x20]
mov edi, dword [esp + 0xa0]
add ecx, ebx
mov dword [esi + ecx*4], edi
mov ecx, dword [esp + 0x98]
xor edi, edi
test eax, eax
jge 0x785ed1
add eax, 6
add dword [esp + 0x14], 4
mov edi, 1
jmp 0x785f43
cmp dword [esp + 0x14], 0
mov esi, dword [esp + 0x30]
mov dword [esp + 0x28], ecx
jl 0x785f11
cmp ecx, esi
jl 0x785ef8
mov edx, ecx
sub edx, esi
mov dword [esp + 0x28], edx
lea edx, [ecx - 1]
mov edi, 1
lea ecx, [edx*4]
mov esi, 2
sub esi, ecx
sub eax, ecx
add dword [esp + 0x14], esi
jmp 0x785f45
cmp ecx, esi
mov edi, 1
jl 0x785f25
mov edx, ecx
sub edx, esi
mov dword [esp + 0x28], edx
lea edx, [ecx - 1]
lea esi, [edx*4]
mov ecx, 4
sub ecx, esi
mov esi, dword [esp + 0x14]
lea eax, [eax + ecx + 2]
lea ecx, [esi + ecx + 2]
mov dword [esp + 0x14], ecx
mov ebp, edi
test edx, edx
jle 0x7861bc
lea ecx, [edx*4]
mov dword [esp + 0x74], ecx
lea ecx, [edx + ebx]
add ecx, ecx
add ecx, ecx
mov dword [esp + 0x5c], ecx
mov esi, dword [esp + 0x94]
mov ecx, edx
sub ecx, dword [esp + 0x78]
add ecx, ebx
mov dword [esp + 0x60], ecx
mov ecx, dword [esp + 0x94]
add ecx, ebp
imul ecx, dword [esp + 0x1c]
mov dword [esp + 0x54], ecx
mov ecx, ebp
sub ecx, dword [esp + 0x7c]
add ecx, esi
mov dword [esp + 0x58], ecx
mov ecx, dword [esp + 0x1c]
neg ecx
mov dword [esp + 0x3c], ecx
mov ecx, esi
sub ecx, dword [esp + 0x7c]
sub esi, ebp
imul esi, dword [esp + 0x1c]
sub ecx, ebp
mov dword [esp + 0x50], ecx
mov ecx, ebx
sub ecx, dword [esp + 0x78]
sub ecx, edx
mov dword [esp + 0x64], ecx
mov ecx, ebx
sub ecx, edx
add ecx, ecx
add ecx, ecx
mov dword [esp + 0x68], ecx
jmp 0x785fd4
mov ecx, dword [esp + 0x68]
test edi, edi
je 0x7860b8
mov edi, dword [esp + 0x34]
cmp dword [esp + 0x64], edi
ja 0x786017
mov edi, dword [esp + 0x84]
sub edi, dword [esp + 0x7c]
cmp dword [esp + 0x58], edi
ja 0x786017
mov edi, dword [esp + 0x54]
mov ebx, dword [esp + 0x20]
add ecx, edi
mov edi, dword [esp + 0xa0]
mov dword [ecx + ebx], edi
mov ecx, dword [esp + 0x68]
mov edi, dword [esp + 0x60]
cmp edi, dword [esp + 0x34]
ja 0x786056
mov edi, dword [esp + 0x84]
sub edi, dword [esp + 0x7c]
cmp dword [esp + 0x58], edi
ja 0x786056
mov edi, dword [esp + 0x5c]
mov ecx, dword [esp + 0x54]
mov ebx, dword [esp + 0x20]
add ecx, edi
mov edi, dword [esp + 0xa0]
mov dword [ecx + ebx], edi
mov ecx, dword [esp + 0x68]
mov edi, dword [esp + 0x64]
cmp edi, dword [esp + 0x34]
ja 0x786085
mov edi, dword [esp + 0x84]
sub edi, dword [esp + 0x7c]
cmp dword [esp + 0x50], edi
ja 0x786085
mov edi, dword [esp + 0xa0]
mov ebx, dword [esp + 0x20]
add ecx, esi
mov dword [ecx + ebx], edi
mov ecx, dword [esp + 0x60]
cmp ecx, dword [esp + 0x34]
ja 0x7860b8
mov ecx, dword [esp + 0x84]
sub ecx, dword [esp + 0x7c]
cmp dword [esp + 0x50], ecx
ja 0x7860b8
mov ecx, dword [esp + 0x5c]
mov edi, dword [esp + 0xa0]
mov ebx, dword [esp + 0x20]
add ecx, esi
mov dword [ecx + ebx], edi
xor edi, edi
test eax, eax
jge 0x7860f1
mov ecx, dword [esp + 0x1c]
add dword [esp + 0x54], ecx
add esi, dword [esp + 0x3c]
mov edi, 1
add dword [esp + 0x58], edi
sub dword [esp + 0x50], edi
add ebp, edi
lea ecx, [ebp*4]
add dword [esp + 0x14], ecx
lea eax, [eax + ecx + 2]
jmp 0x7861ad
mov ecx, dword [esp + 0x98]
add dword [esp + 0x28], ecx
cmp dword [esp + 0x14], 0
mov ecx, dword [esp + 0x30]
jl 0x78614f
cmp dword [esp + 0x28], ecx
jl 0x786139
sub dword [esp + 0x28], ecx
mov edi, 1
add dword [esp + 0x64], edi
sub dword [esp + 0x60], edi
mov ecx, 4
add dword [esp + 0x68], ecx
sub dword [esp + 0x5c], ecx
sub edx, edi
sub dword [esp + 0x74], ecx
mov ecx, dword [esp + 0x74]
mov ebx, 2
sub ebx, ecx
sub eax, ecx
add dword [esp + 0x14], ebx
jmp 0x7861ad
cmp dword [esp + 0x28], ecx
mov edi, 1
mov ebx, edi
jl 0x78617f
sub dword [esp + 0x28], ecx
add dword [esp + 0x64], ebx
sub dword [esp + 0x60], ebx
mov ecx, 4
add dword [esp + 0x68], ecx
sub dword [esp + 0x5c], ecx
sub edx, ebx
sub dword [esp + 0x74], ecx
mov ecx, dword [esp + 0x1c]
add dword [esp + 0x54], ecx
add dword [esp + 0x58], ebx
add esi, dword [esp + 0x3c]
sub dword [esp + 0x50], edi
add ebp, ebx
mov ebx, dword [esp + 0x14]
mov ecx, ebp
sub ecx, edx
add ecx, ecx
add ecx, ecx
lea eax, [eax + ecx + 2]
lea ecx, [ebx + ecx + 2]
mov dword [esp + 0x14], ecx
test edx, edx
jg 0x785fd0
mov ebx, dword [esp + 0x90]
mov eax, dword [esp + 0x94]
mov esi, dword [esp + 0x7c]
lea ecx, [edx + ebx]
sub ecx, dword [esp + 0x78]
sub eax, ebp
cmp ecx, dword [esp + 0x34]
ja 0x786205
mov edi, dword [esp + 0x84]
mov ecx, eax
sub ecx, esi
sub edi, esi
cmp ecx, edi
ja 0x786205
imul eax, dword [esp + 0x1c]
add eax, dword [esp + 0x20]
mov edi, dword [esp + 0xa0]
lea ecx, [edx + ebx]
mov dword [eax + ecx*4], edi
sub ebx, edx
mov edx, dword [esp + 0x94]
mov eax, ebx
sub eax, dword [esp + 0x78]
add ebp, edx
cmp eax, dword [esp + 0x34]
ja case.0x789050.5
mov eax, dword [esp + 0x84]
mov ecx, ebp
sub ecx, esi
sub eax, esi
cmp ecx, eax
ja case.0x789050.5
imul ebp, dword [esp + 0x1c]
add ebp, dword [esp + 0x20]
mov edx, dword [esp + 0xa0]
pop edi
pop esi
mov dword [ebp + ebx*4], edx
pop ebp
pop ebx
add esp, 0x78
ret
test ecx, ecx
je case.0x789050.5
mov esi, dword [esp + 0x90]
mov ecx, dword [esp + 0x98]
mov edi, dword [esp + 0x80]
sub edi, dword [esp + 0x78]
sub esi, ecx
mov dword [esp + 0x24], esi
sub esi, dword [esp + 0x78]
mov dword [esp + 0x34], edi
cmp esi, edi
ja 0x78631e
mov ecx, dword [esp + 0x7c]
mov esi, dword [esp + 0x84]
mov edi, dword [esp + 0x94]
sub esi, ecx
sub edi, ecx
cmp edi, esi
ja 0x786317
mov ecx, dword [esp + 0x1c]
imul ecx, dword [esp + 0x94]
add ecx, dword [esp + 0x20]
mov esi, dword [esp + 0x24]
movzx edi, byte [ecx + esi*4]
lea esi, [ecx + esi*4]
movzx ecx, byte [esp + 0xa0]
sub ecx, edi
imul ecx, dword [0xb160b8]
shl edi, 8
add ecx, edi
sar ecx, 8
mov byte [esi], cl
movzx edi, byte [esi + 1]
movzx ecx, byte [esp + 0xa1]
sub ecx, edi
imul ecx, dword [0xb160b8]
shl edi, 8
add ecx, edi
sar ecx, 8
mov byte [esi + 1], cl
movzx edi, byte [esi + 2]
movzx ecx, bl
sub ecx, edi
imul ecx, dword [0xb160b8]
shl edi, 8
add ecx, edi
sar ecx, 8
mov byte [esi + 2], cl
mov ecx, dword [esp + 0x98]
mov esi, dword [esp + 0x90]
add esi, ecx
mov dword [esp + 0x24], esi
sub esi, dword [esp + 0x78]
cmp esi, dword [esp + 0x34]
ja 0x7863cf
mov ecx, dword [esp + 0x7c]
mov esi, dword [esp + 0x84]
mov edi, dword [esp + 0x94]
sub esi, ecx
sub edi, ecx
cmp edi, esi
ja 0x7863c8
mov ecx, dword [esp + 0x1c]
imul ecx, dword [esp + 0x94]
add ecx, dword [esp + 0x20]
mov esi, dword [esp + 0x24]
movzx edi, byte [ecx + esi*4]
lea esi, [ecx + esi*4]
movzx ecx, byte [esp + 0xa0]
sub ecx, edi
imul ecx, dword [0xb160b8]
shl edi, 8
add ecx, edi
sar ecx, 8
mov byte [esi], cl
movzx edi, byte [esi + 1]
movzx ecx, byte [esp + 0xa1]
sub ecx, edi
imul ecx, dword [0xb160b8]
shl edi, 8
add ecx, edi
sar ecx, 8
mov byte [esi + 1], cl
movzx edi, byte [esi + 2]
movzx ecx, bl
sub ecx, edi
imul ecx, dword [0xb160b8]
shl edi, 8
add ecx, edi
sar ecx, 8
mov byte [esi + 2], cl
mov ecx, dword [esp + 0x98]
xor esi, esi
test eax, eax
jge 0x7863e7
add eax, 6
add dword [esp + 0x14], 4
mov esi, 1
jmp 0x786459
cmp dword [esp + 0x14], 0
mov edi, dword [esp + 0x30]
mov dword [esp + 0x28], ecx
jl 0x786427
cmp ecx, edi
jl 0x78640e
mov edx, ecx
sub edx, edi
mov dword [esp + 0x28], edx
lea edx, [ecx - 1]
mov esi, 1
lea ecx, [edx*4]
mov edi, 2
sub edi, ecx
sub eax, ecx
add dword [esp + 0x14], edi
jmp 0x78645b
cmp ecx, edi
mov esi, 1
jl 0x78643b
mov edx, ecx
sub edx, edi
mov dword [esp + 0x28], edx
lea edx, [ecx - 1]
lea edi, [edx*4]
mov ecx, 4
sub ecx, edi
mov edi, dword [esp + 0x14]
lea eax, [eax + ecx + 2]
lea ecx, [edi + ecx + 2]
mov dword [esp + 0x14], ecx
mov ebp, esi
test edx, edx
jle 0x78684d
lea ecx, [edx*4]
mov dword [esp + 0x74], ecx
mov ecx, dword [esp + 0x90]
add ecx, edx
add ecx, ecx
add ecx, ecx
mov dword [esp + 0x5c], ecx
mov edi, dword [esp + 0x7c]
mov ecx, edx
sub ecx, dword [esp + 0x78]
add ecx, dword [esp + 0x90]
mov dword [esp + 0x60], ecx
mov ecx, dword [esp + 0x94]
add ecx, ebp
imul ecx, dword [esp + 0x1c]
mov dword [esp + 0x54], ecx
mov ecx, ebp
sub ecx, edi
add ecx, dword [esp + 0x94]
mov dword [esp + 0x58], ecx
mov ecx, dword [esp + 0x1c]
neg ecx
mov dword [esp + 0x3c], ecx
mov ecx, dword [esp + 0x94]
sub ecx, edi
sub ecx, ebp
mov dword [esp + 0x4c], ecx
mov ecx, dword [esp + 0x90]
sub ecx, dword [esp + 0x78]
sub ecx, edx
mov dword [esp + 0x64], ecx
mov ecx, dword [esp + 0x94]
sub ecx, ebp
imul ecx, dword [esp + 0x1c]
mov dword [esp + 0x50], ecx
mov ecx, dword [esp + 0x90]
sub ecx, edx
add ecx, ecx
add ecx, ecx
mov dword [esp + 0x68], ecx
jmp 0x786508
mov ecx, dword [esp + 0x68]
test esi, esi
je 0x786748
mov esi, dword [esp + 0x64]
cmp esi, dword [esp + 0x34]
ja 0x78659e
mov esi, dword [esp + 0x84]
sub esi, dword [esp + 0x7c]
cmp dword [esp + 0x58], esi
ja 0x78659e
mov esi, dword [esp + 0x54]
add esi, ecx
add esi, dword [esp + 0x20]
movzx ecx, byte [esp + 0xa0]
movzx edi, byte [esi]
sub ecx, edi
imul ecx, dword [0xb160b8]
mov dword [esp + 0x48], edi
shl edi, 8
add ecx, edi
sar ecx, 8
mov byte [esi], cl
movzx edi, byte [esi + 1]
movzx ecx, byte [esp + 0xa1]
sub ecx, edi
imul ecx, dword [0xb160b8]
shl edi, 8
add ecx, edi
sar ecx, 8
mov byte [esi + 1], cl
movzx edi, byte [esi + 2]
movzx ecx, bl
sub ecx, edi
imul ecx, dword [0xb160b8]
shl edi, 8
add ecx, edi
sar ecx, 8
mov byte [esi + 2], cl
mov ecx, dword [esp + 0x68]
mov esi, dword [esp + 0x34]
cmp dword [esp + 0x60], esi
ja 0x786630
mov esi, dword [esp + 0x84]
sub esi, dword [esp + 0x7c]
cmp dword [esp + 0x58], esi
ja 0x786630
mov ecx, dword [esp + 0x54]
mov esi, dword [esp + 0x5c]
add esi, ecx
add esi, dword [esp + 0x20]
movzx ecx, byte [esp + 0xa0]
movzx edi, byte [esi]
sub ecx, edi
imul ecx, dword [0xb160b8]
mov dword [esp + 0x48], edi
shl edi, 8
add ecx, edi
sar ecx, 8
mov byte [esi], cl
movzx edi, byte [esi + 1]
movzx ecx, byte [esp + 0xa1]
sub ecx, edi
imul ecx, dword [0xb160b8]
shl edi, 8
add ecx, edi
sar ecx, 8
mov byte [esi + 1], cl
movzx edi, byte [esi + 2]
movzx ecx, bl
sub ecx, edi
imul ecx, dword [0xb160b8]
shl edi, 8
add ecx, edi
sar ecx, 8
mov byte [esi + 2], cl
mov ecx, dword [esp + 0x68]
mov esi, dword [esp + 0x34]
cmp dword [esp + 0x64], esi
ja 0x7866ba
mov esi, dword [esp + 0x84]
sub esi, dword [esp + 0x7c]
cmp dword [esp + 0x4c], esi
ja 0x7866ba
mov esi, dword [esp + 0x50]
add esi, ecx
add esi, dword [esp + 0x20]
movzx ecx, byte [esp + 0xa0]
movzx edi, byte [esi]
sub ecx, edi
imul ecx, dword [0xb160b8]
mov dword [esp + 0x48], edi
shl edi, 8
add ecx, edi
sar ecx, 8
mov byte [esi], cl
movzx edi, byte [esi + 1]
movzx ecx, byte [esp + 0xa1]
sub ecx, edi
imul ecx, dword [0xb160b8]
shl edi, 8
add ecx, edi
sar ecx, 8
mov byte [esi + 1], cl
movzx edi, byte [esi + 2]
movzx ecx, bl
sub ecx, edi
imul ecx, dword [0xb160b8]
shl edi, 8
add ecx, edi
sar ecx, 8
mov byte [esi + 2], cl
mov ecx, dword [esp + 0x34]
cmp dword [esp + 0x60], ecx
ja 0x786748
mov ecx, dword [esp + 0x84]
sub ecx, dword [esp + 0x7c]
cmp dword [esp + 0x4c], ecx
ja 0x786748
mov ecx, dword [esp + 0x5c]
mov esi, dword [esp + 0x50]
add esi, ecx
add esi, dword [esp + 0x20]
movzx ecx, byte [esp + 0xa0]
movzx edi, byte [esi]
sub ecx, edi
imul ecx, dword [0xb160b8]
mov dword [esp + 0x48], edi
shl edi, 8
add ecx, edi
sar ecx, 8
mov byte [esi], cl
movzx edi, byte [esi + 1]
movzx ecx, byte [esp + 0xa1]
sub ecx, edi
imul ecx, dword [0xb160b8]
shl edi, 8
add ecx, edi
sar ecx, 8
mov byte [esi + 1], cl
movzx edi, byte [esi + 2]
movzx ecx, bl
sub ecx, edi
imul ecx, dword [0xb160b8]
shl edi, 8
add ecx, edi
sar ecx, 8
mov byte [esi + 2], cl
xor esi, esi
test eax, eax
jge 0x786785
mov ecx, dword [esp + 0x1c]
add dword [esp + 0x54], ecx
mov ecx, dword [esp + 0x3c]
add dword [esp + 0x50], ecx
mov esi, 1
add dword [esp + 0x58], esi
sub dword [esp + 0x4c], esi
add ebp, esi
lea ecx, [ebp*4]
add dword [esp + 0x14], ecx
lea eax, [eax + ecx + 2]
jmp 0x786845
mov ecx, dword [esp + 0x98]
add dword [esp + 0x28], ecx
cmp dword [esp + 0x14], 0
mov ecx, dword [esp + 0x30]
jl 0x7867e3
cmp dword [esp + 0x28], ecx
jl 0x7867cd
sub dword [esp + 0x28], ecx
mov esi, 1
add dword [esp + 0x64], esi
sub dword [esp + 0x60], esi
mov ecx, 4
add dword [esp + 0x68], ecx
sub dword [esp + 0x5c], ecx
sub edx, esi
sub dword [esp + 0x74], ecx
mov ecx, dword [esp + 0x74]
mov edi, 2
sub edi, ecx
sub eax, ecx
add dword [esp + 0x14], edi
jmp 0x786845
cmp dword [esp + 0x28], ecx
mov esi, 1
mov edi, esi
jl 0x786813
sub dword [esp + 0x28], ecx
add dword [esp + 0x64], edi
sub dword [esp + 0x60], edi
mov ecx, 4
add dword [esp + 0x68], ecx
sub dword [esp + 0x5c], ecx
sub edx, edi
sub dword [esp + 0x74], ecx
mov ecx, dword [esp + 0x1c]
add dword [esp + 0x54], ecx
mov ecx, dword [esp + 0x3c]
add dword [esp + 0x50], ecx
add dword [esp + 0x58], edi
sub dword [esp + 0x4c], esi
add ebp, edi
mov edi, dword [esp + 0x14]
mov ecx, ebp
sub ecx, edx
add ecx, ecx
add ecx, ecx
lea eax, [eax + ecx + 2]
lea ecx, [edi + ecx + 2]
mov dword [esp + 0x14], ecx
test edx, edx
jg 0x786504
mov eax, dword [esp + 0x90]
mov esi, dword [esp + 0x94]
add eax, edx
mov ecx, eax
sub ecx, dword [esp + 0x78]
sub esi, ebp
cmp ecx, dword [esp + 0x34]
ja 0x7868ee
mov edi, dword [esp + 0x84]
sub edi, dword [esp + 0x7c]
mov ecx, esi
sub ecx, dword [esp + 0x7c]
cmp ecx, edi
ja 0x7868ee
imul esi, dword [esp + 0x1c]
add esi, dword [esp + 0x20]
movzx edi, byte [esi + eax*4]
lea esi, [esi + eax*4]
movzx eax, byte [esp + 0xa0]
movzx ecx, byte [esp + 0xa1]
sub eax, edi
imul eax, dword [0xb160b8]
shl edi, 8
add eax, edi
sar eax, 8
mov byte [esi], al
movzx edi, byte [esi + 1]
sub ecx, edi
imul ecx, dword [0xb160b8]
shl edi, 8
add ecx, edi
sar ecx, 8
mov byte [esi + 1], cl
movzx edi, byte [esi + 2]
movzx eax, bl
sub eax, edi
imul eax, dword [0xb160b8]
shl edi, 8
add eax, edi
sar eax, 8
mov byte [esi + 2], al
mov eax, dword [esp + 0x90]
mov ecx, dword [esp + 0x94]
sub eax, edx
mov edx, eax
sub edx, dword [esp + 0x78]
add ebp, ecx
cmp edx, dword [esp + 0x34]
ja case.0x789050.5
mov edx, dword [esp + 0x7c]
mov ecx, dword [esp + 0x84]
mov esi, ebp
sub esi, edx
sub ecx, edx
cmp esi, ecx
ja case.0x789050.5
imul ebp, dword [esp + 0x1c]
add ebp, dword [esp + 0x20]
movzx esi, byte [ebp + eax*4]
movzx ecx, byte [esp + 0xa0]
movzx edx, byte [esp + 0xa1]
lea eax, [ebp + eax*4]
sub ecx, esi
imul ecx, dword [0xb160b8]
shl esi, 8
add ecx, esi
sar ecx, 8
mov byte [eax], cl
movzx esi, byte [eax + 1]
sub edx, esi
imul edx, dword [0xb160b8]
shl esi, 8
add edx, esi
sar edx, 8
mov byte [eax + 1], dl
movzx ecx, byte [eax + 2]
movzx edx, bl
sub edx, ecx
imul edx, dword [0xb160b8]
pop edi
shl ecx, 8
pop esi
add edx, ecx
sar edx, 8
pop ebp
mov byte [eax + 2], dl
pop ebx
add esp, 0x78
ret
cmp dword [0xb160b8], 0
je case.0x789050.5
mov ecx, dword [esp + 0x90]
sub ecx, dword [esp + 0x98]
mov edi, dword [esp + 0x80]
sub edi, dword [esp + 0x78]
mov dword [esp + 0x24], ecx
sub ecx, dword [esp + 0x78]
mov dword [esp + 0x34], edi
cmp ecx, edi
ja 0x786a89
mov ecx, dword [esp + 0x7c]
mov edi, dword [esp + 0x84]
mov ebx, dword [esp + 0x94]
sub ebx, ecx
sub edi, ecx
cmp ebx, edi
mov bl, byte [esp + 0xa2]
ja 0x786a89
mov ecx, dword [esp + 0x1c]
imul ecx, dword [esp + 0x94]
add ecx, dword [esp + 0x20]
mov edi, dword [esp + 0x24]
lea edi, [ecx + edi*4]
movzx ecx, byte [esp + 0xa0]
movzx ecx, byte [esi + ecx*4]
mov byte [esp + 0x10], cl
movzx ecx, byte [esp + 0xa1]
movzx ecx, byte [esi + ecx*4]
mov byte [esp + 0x11], cl
movzx ecx, bl
movzx ecx, byte [esi + ecx*4]
mov byte [esp + 0x12], cl
mov ecx, dword [edi]
mov dword [esp + 0x2c], edi
mov edi, dword [esp + 0x10]
mov dword [esp + 0x58], ecx
and ecx, 0xfefeff
and edi, 0xfefeff
add ecx, edi
mov dword [esp + 0x44], ecx
and ecx, 0x1010100
mov edi, ecx
shr edi, 8
sub ecx, edi
mov dword [esp + 0x74], ecx
mov ecx, dword [esp + 0x58]
or ecx, dword [esp + 0x10]
mov edi, dword [esp + 0x74]
and ecx, 0x10100
or edi, ecx
or edi, dword [esp + 0x44]
mov ecx, dword [esp + 0x2c]
mov dword [ecx], edi
mov ecx, dword [esp + 0x90]
mov edi, dword [esp + 0x98]
add ecx, edi
mov dword [esp + 0x24], ecx
sub ecx, dword [esp + 0x78]
cmp ecx, dword [esp + 0x34]
ja 0x786b61
mov ecx, dword [esp + 0x7c]
mov edi, dword [esp + 0x84]
mov ebx, dword [esp + 0x94]
sub ebx, ecx
sub edi, ecx
cmp ebx, edi
mov bl, byte [esp + 0xa2]
ja 0x786b61
mov ecx, dword [esp + 0x1c]
imul ecx, dword [esp + 0x94]
add ecx, dword [esp + 0x20]
mov edi, dword [esp + 0x24]
lea edi, [ecx + edi*4]
movzx ecx, byte [esp + 0xa0]
movzx ecx, byte [esi + ecx*4]
mov byte [esp + 0x10], cl
movzx ecx, byte [esp + 0xa1]
movzx ecx, byte [esi + ecx*4]
mov byte [esp + 0x11], cl
movzx ecx, bl
movzx ecx, byte [esi + ecx*4]
mov byte [esp + 0x12], cl
mov ecx, dword [edi]
mov dword [esp + 0x2c], edi
mov edi, dword [esp + 0x10]
mov dword [esp + 0x58], ecx
and ecx, 0xfefeff
and edi, 0xfefeff
add ecx, edi
mov dword [esp + 0x44], ecx
and ecx, 0x1010100
mov edi, ecx
shr edi, 8
sub ecx, edi
mov dword [esp + 0x74], ecx
mov ecx, dword [esp + 0x58]
or ecx, dword [esp + 0x10]
mov edi, dword [esp + 0x74]
and ecx, 0x10100
or edi, ecx
or edi, dword [esp + 0x44]
mov ecx, dword [esp + 0x2c]
mov dword [ecx], edi
test eax, eax
mov ecx, dword [esp + 0x98]
mov dword [esp + 0x2c], 0
jge 0x786b8a
mov ebp, 1
add eax, 6
add dword [esp + 0x14], 4
mov dword [esp + 0x2c], ebp
jmp 0x786c03
cmp dword [esp + 0x14], 0
mov edi, dword [esp + 0x30]
mov dword [esp + 0x28], ecx
jl 0x786bcd
cmp ecx, edi
jl 0x786bb4
mov edx, ecx
sub edx, edi
mov dword [esp + 0x28], edx
lea edx, [ecx - 1]
mov dword [esp + 0x2c], 1
lea ecx, [edx*4]
mov edi, 2
sub edi, ecx
sub eax, ecx
add dword [esp + 0x14], edi
jmp 0x786c03
cmp ecx, edi
mov ebp, 1
mov dword [esp + 0x2c], ebp
jl 0x786be5
mov edx, ecx
sub edx, edi
mov dword [esp + 0x28], edx
lea edx, [ecx - 1]
lea edi, [edx*4]
mov ecx, 4
sub ecx, edi
mov edi, dword [esp + 0x14]
lea eax, [eax + ecx + 2]
lea ecx, [edi + ecx + 2]
mov dword [esp + 0x14], ecx
test edx, edx
jle 0x78705e
mov edi, dword [esp + 0x90]
lea ecx, [edx*4]
mov dword [esp + 0x74], ecx
lea ecx, [edx + edi]
add ecx, ecx
add ecx, ecx
mov dword [esp + 0x5c], ecx
mov ecx, edx
sub ecx, dword [esp + 0x78]
add ecx, edi
mov dword [esp + 0x60], ecx
mov ecx, dword [esp + 0x94]
add ecx, ebp
imul ecx, dword [esp + 0x1c]
mov edi, dword [esp + 0x94]
mov dword [esp + 0x50], ecx
mov ecx, ebp
sub ecx, dword [esp + 0x7c]
add ecx, edi
mov dword [esp + 0x54], ecx
mov ecx, dword [esp + 0x1c]
neg ecx
mov dword [esp + 0x3c], ecx
mov ecx, edi
sub ecx, dword [esp + 0x7c]
sub ecx, ebp
mov dword [esp + 0x48], ecx
mov ecx, dword [esp + 0x90]
sub ecx, dword [esp + 0x78]
sub ecx, edx
mov dword [esp + 0x64], ecx
mov ecx, edi
sub ecx, ebp
imul ecx, dword [esp + 0x1c]
mov dword [esp + 0x4c], ecx
mov ecx, dword [esp + 0x90]
sub ecx, edx
add ecx, ecx
add ecx, ecx
mov dword [esp + 0x68], ecx
mov edi, edi
cmp dword [esp + 0x2c], 0
je 0x786f38
mov ecx, dword [esp + 0x64]
cmp ecx, dword [esp + 0x34]
ja 0x786d4e
mov ecx, dword [esp + 0x84]
sub ecx, dword [esp + 0x7c]
cmp dword [esp + 0x54], ecx
ja 0x786d4e
mov ecx, dword [esp + 0x68]
mov edi, dword [esp + 0x50]
add edi, ecx
movzx ecx, byte [esp + 0xa0]
movzx ecx, byte [esi + ecx*4]
add edi, dword [esp + 0x20]
mov byte [esp + 0x10], cl
movzx ecx, byte [esp + 0xa1]
movzx ecx, byte [esi + ecx*4]
mov byte [esp + 0x11], cl
movzx ecx, bl
movzx ecx, byte [esi + ecx*4]
mov byte [esp + 0x12], cl
mov ecx, dword [edi]
mov dword [esp + 0x2c], edi
mov edi, dword [esp + 0x10]
mov dword [esp + 0x58], ecx
and edi, 0xfefeff
and ecx, 0xfefeff
add ecx, edi
mov dword [esp + 0x44], ecx
and ecx, 0x1010100
mov edi, ecx
shr edi, 8
sub ecx, edi
mov edi, dword [esp + 0x58]
or edi, dword [esp + 0x10]
and edi, 0x10100
or ecx, edi
or ecx, dword [esp + 0x44]
mov edi, dword [esp + 0x2c]
mov dword [edi], ecx
mov ecx, dword [esp + 0x34]
cmp dword [esp + 0x60], ecx
ja 0x786df1
mov ecx, dword [esp + 0x84]
sub ecx, dword [esp + 0x7c]
cmp dword [esp + 0x54], ecx
ja 0x786df1
mov ecx, dword [esp + 0x50]
mov edi, dword [esp + 0x5c]
add edi, ecx
movzx ecx, byte [esp + 0xa0]
movzx ecx, byte [esi + ecx*4]
add edi, dword [esp + 0x20]
mov byte [esp + 0x10], cl
movzx ecx, byte [esp + 0xa1]
movzx ecx, byte [esi + ecx*4]
mov byte [esp + 0x11], cl
movzx ecx, bl
movzx ecx, byte [esi + ecx*4]
mov byte [esp + 0x12], cl
mov ecx, dword [edi]
mov dword [esp + 0x2c], edi
mov edi, dword [esp + 0x10]
mov dword [esp + 0x58], ecx
and edi, 0xfefeff
and ecx, 0xfefeff
add ecx, edi
mov dword [esp + 0x44], ecx
and ecx, 0x1010100
mov edi, ecx
shr edi, 8
sub ecx, edi
mov edi, dword [esp + 0x58]
or edi, dword [esp + 0x10]
and edi, 0x10100
or ecx, edi
or ecx, dword [esp + 0x44]
mov edi, dword [esp + 0x2c]
mov dword [edi], ecx
mov ecx, dword [esp + 0x34]
cmp dword [esp + 0x64], ecx
ja 0x786e94
mov ecx, dword [esp + 0x84]
sub ecx, dword [esp + 0x7c]
cmp dword [esp + 0x48], ecx
ja 0x786e94
mov ecx, dword [esp + 0x68]
mov edi, dword [esp + 0x4c]
add edi, ecx
movzx ecx, byte [esp + 0xa0]
movzx ecx, byte [esi + ecx*4]
add edi, dword [esp + 0x20]
mov byte [esp + 0x10], cl
movzx ecx, byte [esp + 0xa1]
movzx ecx, byte [esi + ecx*4]
mov byte [esp + 0x11], cl
movzx ecx, bl
movzx ecx, byte [esi + ecx*4]
mov byte [esp + 0x12], cl
mov ecx, dword [edi]
mov dword [esp + 0x2c], edi
mov edi, dword [esp + 0x10]
mov dword [esp + 0x58], ecx
and edi, 0xfefeff
and ecx, 0xfefeff
add ecx, edi
mov dword [esp + 0x44], ecx
and ecx, 0x1010100
mov edi, ecx
shr edi, 8
sub ecx, edi
mov edi, dword [esp + 0x58]
or edi, dword [esp + 0x10]
and edi, 0x10100
or ecx, edi
or ecx, dword [esp + 0x44]
mov edi, dword [esp + 0x2c]
mov dword [edi], ecx
mov ecx, dword [esp + 0x34]
cmp dword [esp + 0x60], ecx
ja 0x786f38
mov ecx, dword [esp + 0x84]
sub ecx, dword [esp + 0x7c]
cmp dword [esp + 0x48], ecx
ja 0x786f38
mov ecx, dword [esp + 0x4c]
mov edi, dword [esp + 0x5c]
add edi, ecx
movzx ecx, byte [esp + 0xa0]
movzx ecx, byte [esi + ecx*4]
add edi, dword [esp + 0x20]
mov byte [esp + 0x10], cl
movzx ecx, byte [esp + 0xa1]
movzx ecx, byte [esi + ecx*4]
mov byte [esp + 0x11], cl
movzx ecx, bl
movzx ecx, byte [esi + ecx*4]
mov byte [esp + 0x12], cl
mov ebx, dword [esp + 0x10]
mov dword [esp + 0x2c], edi
mov edi, dword [edi]
mov ecx, edi
or edi, dword [esp + 0x10]
and ecx, 0xfefeff
and ebx, 0xfefeff
add ecx, ebx
mov dword [esp + 0x44], ecx
and ecx, 0x1010100
mov ebx, ecx
shr ebx, 8
sub ecx, ebx
mov bl, byte [esp + 0xa2]
and edi, 0x10100
or ecx, edi
or ecx, dword [esp + 0x44]
mov edi, dword [esp + 0x2c]
mov dword [edi], ecx
test eax, eax
mov dword [esp + 0x2c], 0
jge 0x786f80
sub dword [esp + 0x48], 1
mov ecx, 1
add dword [esp + 0x54], ecx
add ebp, ecx
mov dword [esp + 0x2c], ecx
mov ecx, dword [esp + 0x1c]
add dword [esp + 0x50], ecx
mov ecx, dword [esp + 0x3c]
add dword [esp + 0x4c], ecx
lea ecx, [ebp*4]
add dword [esp + 0x14], ecx
lea eax, [eax + ecx + 2]
jmp 0x787056
mov edi, dword [esp + 0x28]
add edi, dword [esp + 0x98]
cmp dword [esp + 0x14], 0
mov ecx, dword [esp + 0x30]
mov dword [esp + 0x28], edi
jl 0x786fe6
cmp edi, ecx
jl 0x786fd0
sub edi, ecx
mov ecx, 1
add dword [esp + 0x64], ecx
sub dword [esp + 0x60], ecx
mov dword [esp + 0x28], edi
mov edi, 4
add dword [esp + 0x68], edi
sub dword [esp + 0x5c], edi
sub edx, ecx
sub dword [esp + 0x74], edi
mov dword [esp + 0x2c], ecx
mov ecx, dword [esp + 0x74]
mov edi, 2
sub edi, ecx
sub eax, ecx
add dword [esp + 0x14], edi
jmp 0x787056
cmp edi, ecx
mov dword [esp + 0x2c], 1
jl 0x78701e
sub edi, ecx
mov ecx, 4
add dword [esp + 0x68], ecx
sub dword [esp + 0x5c], ecx
mov dword [esp + 0x28], edi
mov edi, 1
add dword [esp + 0x64], edi
sub dword [esp + 0x60], edi
sub edx, edi
sub dword [esp + 0x74], ecx
jmp 0x787023
mov edi, 1
mov ecx, dword [esp + 0x1c]
add dword [esp + 0x50], ecx
mov ecx, dword [esp + 0x3c]
add dword [esp + 0x4c], ecx
add dword [esp + 0x54], edi
sub dword [esp + 0x48], 1
add ebp, edi
mov edi, dword [esp + 0x14]
mov ecx, ebp
sub ecx, edx
add ecx, ecx
add ecx, ecx
lea eax, [eax + ecx + 2]
lea ecx, [edi + ecx + 2]
mov dword [esp + 0x14], ecx
test edx, edx
jg 0x786ca0
mov eax, dword [esp + 0x90]
lea ecx, [edx + eax]
sub ecx, dword [esp + 0x78]
mov eax, dword [esp + 0x94]
sub eax, ebp
cmp ecx, dword [esp + 0x34]
mov ecx, dword [esp + 0x7c]
mov dword [esp + 0x50], eax
ja 0x787121
mov edi, dword [esp + 0x84]
sub edi, ecx
sub eax, ecx
cmp eax, edi
ja 0x787121
mov eax, dword [esp + 0x50]
imul eax, dword [esp + 0x1c]
add eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x90]
add ecx, edx
lea edi, [eax + ecx*4]
movzx eax, byte [esp + 0xa0]
movzx ecx, byte [esi + eax*4]
movzx eax, byte [esp + 0xa1]
mov byte [esp + 0x10], cl
movzx ecx, byte [esi + eax*4]
mov byte [esp + 0x11], cl
movzx eax, bl
movzx ecx, byte [esi + eax*4]
mov byte [esp + 0x12], cl
mov ecx, dword [edi]
mov dword [esp + 0x2c], edi
mov edi, dword [esp + 0x10]
mov eax, ecx
or ecx, dword [esp + 0x10]
and eax, 0xfefeff
and edi, 0xfefeff
add eax, edi
mov dword [esp + 0x44], eax
and eax, 0x1010100
mov edi, eax
shr edi, 8
and ecx, 0x10100
sub eax, edi
or eax, ecx
or eax, dword [esp + 0x44]
mov ecx, dword [esp + 0x2c]
mov dword [ecx], eax
mov ecx, dword [esp + 0x7c]
mov eax, dword [esp + 0x90]
sub eax, edx
mov edx, dword [esp + 0x94]
add ebp, edx
mov edx, eax
sub edx, dword [esp + 0x78]
cmp edx, dword [esp + 0x34]
ja case.0x789050.5
mov edx, dword [esp + 0x84]
mov edi, ebp
sub edi, ecx
sub edx, ecx
cmp edi, edx
ja case.0x789050.5
imul ebp, dword [esp + 0x1c]
add ebp, dword [esp + 0x20]
movzx edx, byte [esp + 0xa1]
lea edi, [ebp + eax*4]
movzx eax, byte [esp + 0xa0]
mov cl, byte [esi + eax*4]
mov al, byte [esi + edx*4]
mov byte [esp + 0x10], cl
movzx ecx, bl
mov dl, byte [esi + ecx*4]
mov ecx, dword [edi]
mov byte [esp + 0x11], al
mov byte [esp + 0x12], dl
mov esi, dword [esp + 0x10]
mov edx, ecx
mov eax, esi
and eax, 0xfefeff
and edx, 0xfefeff
add edx, eax
mov eax, edx
and eax, 0x1010100
mov ebx, eax
shr ebx, 8
or ecx, esi
sub eax, ebx
and ecx, 0x10100
or eax, ecx
or eax, edx
mov dword [edi], eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x78
ret
cmp dword [0xb160b8], 0
je case.0x789050.5
mov ecx, dword [esp + 0x90]
sub ecx, dword [esp + 0x98]
mov edi, dword [esp + 0x78]
mov dword [esp + 0x24], ecx
mov ecx, dword [esp + 0x80]
sub ecx, edi
mov dword [esp + 0x34], ecx
mov ecx, dword [esp + 0x24]
sub ecx, edi
cmp ecx, dword [esp + 0x34]
ja 0x7872a2
mov ecx, dword [esp + 0x7c]
mov edi, dword [esp + 0x84]
mov ebx, dword [esp + 0x94]
sub ebx, ecx
sub edi, ecx
cmp ebx, edi
mov bl, byte [esp + 0xa2]
ja 0x7872a2
mov ecx, dword [esp + 0x1c]
imul ecx, dword [esp + 0x94]
add ecx, dword [esp + 0x20]
mov edi, dword [esp + 0x24]
lea edi, [ecx + edi*4]
movzx ecx, byte [esp + 0xa0]
movzx ecx, byte [esi + ecx*4]
mov byte [esp + 0x10], cl
movzx ecx, byte [esp + 0xa1]
movzx ecx, byte [esi + ecx*4]
mov byte [esp + 0x11], cl
movzx ecx, bl
movzx ecx, byte [esi + ecx*4]
mov byte [esp + 0x12], cl
mov ecx, dword [edi]
mov dword [esp + 0x2c], edi
mov edi, dword [esp + 0x10]
and edi, 0xfefefeff
or ecx, 0x1010100
sub ecx, edi
mov dword [esp + 0x44], ecx
and ecx, 0x1010100
mov edi, ecx
shr edi, 8
sub ecx, edi
and ecx, dword [esp + 0x44]
mov edi, dword [esp + 0x2c]
mov dword [edi], ecx
mov ecx, dword [esp + 0x90]
mov edi, dword [esp + 0x98]
add ecx, edi
mov dword [esp + 0x24], ecx
sub ecx, dword [esp + 0x78]
cmp ecx, dword [esp + 0x34]
ja 0x78735e
mov ecx, dword [esp + 0x7c]
mov edi, dword [esp + 0x84]
mov ebx, dword [esp + 0x94]
sub ebx, ecx
sub edi, ecx
cmp ebx, edi
mov bl, byte [esp + 0xa2]
ja 0x78735e
mov ecx, dword [esp + 0x1c]
imul ecx, dword [esp + 0x94]
add ecx, dword [esp + 0x20]
mov edi, dword [esp + 0x24]
lea edi, [ecx + edi*4]
movzx ecx, byte [esp + 0xa0]
movzx ecx, byte [esi + ecx*4]
mov byte [esp + 0x10], cl
movzx ecx, byte [esp + 0xa1]
movzx ecx, byte [esi + ecx*4]
mov byte [esp + 0x11], cl
movzx ecx, bl
movzx ecx, byte [esi + ecx*4]
mov byte [esp + 0x12], cl
mov ecx, dword [edi]
mov dword [esp + 0x2c], edi
mov edi, dword [esp + 0x10]
and edi, 0xfefefeff
or ecx, 0x1010100
sub ecx, edi
mov dword [esp + 0x44], ecx
and ecx, 0x1010100
mov edi, ecx
shr edi, 8
sub ecx, edi
and ecx, dword [esp + 0x44]
mov edi, dword [esp + 0x2c]
mov dword [edi], ecx
test eax, eax
mov ecx, dword [esp + 0x98]
mov dword [esp + 0x2c], 0
jge 0x787387
mov ebp, 1
add eax, 6
add dword [esp + 0x14], 4
mov dword [esp + 0x2c], ebp
jmp 0x787400
cmp dword [esp + 0x14], 0
mov edi, dword [esp + 0x30]
mov dword [esp + 0x28], ecx
jl 0x7873ca
cmp ecx, edi
jl 0x7873b1
mov edx, ecx
sub edx, edi
mov dword [esp + 0x28], edx
lea edx, [ecx - 1]
mov dword [esp + 0x2c], 1
lea ecx, [edx*4]
mov edi, 2
sub edi, ecx
sub eax, ecx
add dword [esp + 0x14], edi
jmp 0x787400
cmp ecx, edi
mov ebp, 1
mov dword [esp + 0x2c], ebp
jl 0x7873e2
mov edx, ecx
sub edx, edi
mov dword [esp + 0x28], edx
lea edx, [ecx - 1]
lea edi, [edx*4]
mov ecx, 4
sub ecx, edi
mov edi, dword [esp + 0x14]
lea eax, [eax + ecx + 2]
lea ecx, [edi + ecx + 2]
mov dword [esp + 0x14], ecx
test edx, edx
jle 0x78780d
lea ecx, [edx*4]
mov dword [esp + 0x74], ecx
mov ecx, dword [esp + 0x90]
add ecx, edx
add ecx, ecx
add ecx, ecx
mov dword [esp + 0x5c], ecx
mov edi, dword [esp + 0x94]
mov ecx, edx
sub ecx, dword [esp + 0x78]
add ecx, dword [esp + 0x90]
mov dword [esp + 0x60], ecx
mov ecx, dword [esp + 0x94]
add ecx, ebp
imul ecx, dword [esp + 0x1c]
mov dword [esp + 0x54], ecx
mov ecx, ebp
sub ecx, dword [esp + 0x7c]
add ecx, edi
mov dword [esp + 0x58], ecx
mov ecx, dword [esp + 0x1c]
neg ecx
mov dword [esp + 0x3c], ecx
mov ecx, edi
sub ecx, dword [esp + 0x7c]
sub ecx, ebp
mov dword [esp + 0x4c], ecx
mov ecx, dword [esp + 0x90]
sub ecx, dword [esp + 0x78]
sub ecx, edx
mov dword [esp + 0x64], ecx
mov ecx, edi
sub ecx, ebp
imul ecx, dword [esp + 0x1c]
mov dword [esp + 0x50], ecx
mov ecx, dword [esp + 0x90]
sub ecx, edx
add ecx, ecx
add ecx, ecx
mov dword [esp + 0x68], ecx
nop
cmp dword [esp + 0x2c], 0
je 0x7876e7
mov ecx, dword [esp + 0x64]
cmp ecx, dword [esp + 0x34]
ja 0x78753a
mov ecx, dword [esp + 0x84]
sub ecx, dword [esp + 0x7c]
cmp dword [esp + 0x58], ecx
ja 0x78753a
mov ecx, dword [esp + 0x68]
mov edi, dword [esp + 0x54]
add edi, ecx
movzx ecx, byte [esp + 0xa0]
movzx ecx, byte [esi + ecx*4]
add edi, dword [esp + 0x20]
mov byte [esp + 0x10], cl
movzx ecx, byte [esp + 0xa1]
movzx ecx, byte [esi + ecx*4]
mov byte [esp + 0x11], cl
movzx ecx, bl
movzx ecx, byte [esi + ecx*4]
mov byte [esp + 0x12], cl
mov ecx, dword [edi]
mov dword [esp + 0x2c], edi
mov edi, dword [esp + 0x10]
and edi, 0xfefefeff
or ecx, 0x1010100
sub ecx, edi
mov dword [esp + 0x44], ecx
and ecx, 0x1010100
mov edi, ecx
shr edi, 8
sub ecx, edi
and ecx, dword [esp + 0x44]
mov edi, dword [esp + 0x2c]
mov dword [edi], ecx
mov ecx, dword [esp + 0x34]
cmp dword [esp + 0x60], ecx
ja 0x7875c9
mov ecx, dword [esp + 0x84]
sub ecx, dword [esp + 0x7c]
cmp dword [esp + 0x58], ecx
ja 0x7875c9
mov ecx, dword [esp + 0x54]
mov edi, dword [esp + 0x5c]
add edi, ecx
movzx ecx, byte [esp + 0xa0]
movzx ecx, byte [esi + ecx*4]
add edi, dword [esp + 0x20]
mov byte [esp + 0x10], cl
movzx ecx, byte [esp + 0xa1]
movzx ecx, byte [esi + ecx*4]
mov byte [esp + 0x11], cl
movzx ecx, bl
movzx ecx, byte [esi + ecx*4]
mov byte [esp + 0x12], cl
mov ecx, dword [edi]
mov dword [esp + 0x2c], edi
mov edi, dword [esp + 0x10]
and edi, 0xfefefeff
or ecx, 0x1010100
sub ecx, edi
mov dword [esp + 0x44], ecx
and ecx, 0x1010100
mov edi, ecx
shr edi, 8
sub ecx, edi
and ecx, dword [esp + 0x44]
mov edi, dword [esp + 0x2c]
mov dword [edi], ecx
mov ecx, dword [esp + 0x34]
cmp dword [esp + 0x64], ecx
ja 0x787658
mov ecx, dword [esp + 0x84]
sub ecx, dword [esp + 0x7c]
cmp dword [esp + 0x4c], ecx
ja 0x787658
mov ecx, dword [esp + 0x68]
mov edi, dword [esp + 0x50]
add edi, ecx
movzx ecx, byte [esp + 0xa0]
movzx ecx, byte [esi + ecx*4]
add edi, dword [esp + 0x20]
mov byte [esp + 0x10], cl
movzx ecx, byte [esp + 0xa1]
movzx ecx, byte [esi + ecx*4]
mov byte [esp + 0x11], cl
movzx ecx, bl
movzx ecx, byte [esi + ecx*4]
mov byte [esp + 0x12], cl
mov ecx, dword [edi]
mov dword [esp + 0x2c], edi
mov edi, dword [esp + 0x10]
and edi, 0xfefefeff
or ecx, 0x1010100
sub ecx, edi
mov dword [esp + 0x44], ecx
and ecx, 0x1010100
mov edi, ecx
shr edi, 8
sub ecx, edi
and ecx, dword [esp + 0x44]
mov edi, dword [esp + 0x2c]
mov dword [edi], ecx
mov ecx, dword [esp + 0x34]
cmp dword [esp + 0x60], ecx
ja 0x7876e7
mov ecx, dword [esp + 0x84]
sub ecx, dword [esp + 0x7c]
cmp dword [esp + 0x4c], ecx
ja 0x7876e7
mov ecx, dword [esp + 0x50]
mov edi, dword [esp + 0x5c]
add edi, ecx
movzx ecx, byte [esp + 0xa0]
movzx ecx, byte [esi + ecx*4]
add edi, dword [esp + 0x20]
mov byte [esp + 0x10], cl
movzx ecx, byte [esp + 0xa1]
movzx ecx, byte [esi + ecx*4]
mov byte [esp + 0x11], cl
movzx ecx, bl
movzx ecx, byte [esi + ecx*4]
mov byte [esp + 0x12], cl
mov ecx, dword [edi]
mov dword [esp + 0x2c], edi
mov edi, dword [esp + 0x10]
and edi, 0xfefefeff
or ecx, 0x1010100
sub ecx, edi
mov dword [esp + 0x44], ecx
and ecx, 0x1010100
mov edi, ecx
shr edi, 8
sub ecx, edi
and ecx, dword [esp + 0x44]
mov edi, dword [esp + 0x2c]
mov dword [edi], ecx
test eax, eax
mov dword [esp + 0x2c], 0
jge 0x78772f
sub dword [esp + 0x4c], 1
mov ecx, 1
add dword [esp + 0x58], ecx
add ebp, ecx
mov dword [esp + 0x2c], ecx
mov ecx, dword [esp + 0x1c]
add dword [esp + 0x54], ecx
mov ecx, dword [esp + 0x3c]
add dword [esp + 0x50], ecx
lea ecx, [ebp*4]
add dword [esp + 0x14], ecx
lea eax, [eax + ecx + 2]
jmp 0x787805
mov ecx, dword [esp + 0x28]
add ecx, dword [esp + 0x98]
cmp dword [esp + 0x14], 0
mov edi, dword [esp + 0x30]
mov dword [esp + 0x28], ecx
jl 0x787795
cmp ecx, edi
jl 0x78777f
sub ecx, edi
mov edi, 4
add dword [esp + 0x68], edi
sub dword [esp + 0x5c], edi
mov dword [esp + 0x28], ecx
mov ecx, 1
add dword [esp + 0x64], ecx
sub dword [esp + 0x60], ecx
sub edx, ecx
sub dword [esp + 0x74], edi
mov dword [esp + 0x2c], ecx
mov ecx, dword [esp + 0x74]
mov edi, 2
sub edi, ecx
sub eax, ecx
add dword [esp + 0x14], edi
jmp 0x787805
cmp ecx, edi
mov dword [esp + 0x2c], 1
jl 0x7877cd
sub ecx, edi
mov edi, 1
add dword [esp + 0x64], edi
sub dword [esp + 0x60], edi
mov dword [esp + 0x28], ecx
mov ecx, 4
add dword [esp + 0x68], ecx
sub dword [esp + 0x5c], ecx
sub edx, edi
sub dword [esp + 0x74], ecx
jmp 0x7877d2
mov edi, 1
mov ecx, dword [esp + 0x1c]
add dword [esp + 0x54], ecx
mov ecx, dword [esp + 0x3c]
add dword [esp + 0x50], ecx
add dword [esp + 0x58], edi
sub dword [esp + 0x4c], 1
add ebp, edi
mov edi, dword [esp + 0x14]
mov ecx, ebp
sub ecx, edx
add ecx, ecx
add ecx, ecx
lea eax, [eax + ecx + 2]
lea ecx, [edi + ecx + 2]
mov dword [esp + 0x14], ecx
test edx, edx
jg 0x7874a0
mov eax, dword [esp + 0x90]
lea ecx, [edx + eax]
sub ecx, dword [esp + 0x78]
mov eax, dword [esp + 0x94]
sub eax, ebp
cmp ecx, dword [esp + 0x34]
mov ecx, dword [esp + 0x7c]
mov dword [esp + 0x50], eax
ja 0x7878be
mov edi, dword [esp + 0x84]
sub edi, ecx
sub eax, ecx
cmp eax, edi
ja 0x7878be
mov eax, dword [esp + 0x50]
imul eax, dword [esp + 0x1c]
add eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x90]
add ecx, edx
lea edi, [eax + ecx*4]
movzx eax, byte [esp + 0xa0]
movzx ecx, byte [esi + eax*4]
movzx eax, byte [esp + 0xa1]
mov byte [esp + 0x10], cl
movzx ecx, byte [esi + eax*4]
mov byte [esp + 0x11], cl
movzx eax, bl
movzx ecx, byte [esi + eax*4]
mov byte [esp + 0x12], cl
mov ecx, dword [edi]
mov eax, dword [esp + 0x10]
and eax, 0xfefefeff
or ecx, 0x1010100
sub ecx, eax
mov eax, ecx
and eax, 0x1010100
mov dword [esp + 0x2c], edi
mov edi, eax
shr edi, 8
sub eax, edi
and eax, ecx
mov ecx, dword [esp + 0x2c]
mov dword [ecx], eax
mov ecx, dword [esp + 0x7c]
mov eax, dword [esp + 0x90]
sub eax, edx
mov edx, dword [esp + 0x94]
add ebp, edx
mov edx, eax
sub edx, dword [esp + 0x78]
cmp edx, dword [esp + 0x34]
ja case.0x789050.5
mov edx, dword [esp + 0x84]
mov edi, ebp
sub edi, ecx
sub edx, ecx
cmp edi, edx
ja case.0x789050.5
imul ebp, dword [esp + 0x1c]
add ebp, dword [esp + 0x20]
pop edi
lea edx, [ebp + eax*4]
movzx eax, byte [esp + 0x9c]
movzx ecx, byte [esi + eax*4]
movzx eax, byte [esp + 0x9d]
mov byte [esp + 0xc], cl
movzx ecx, byte [esi + eax*4]
movzx eax, bl
mov byte [esp + 0xd], cl
movzx ecx, byte [esi + eax*4]
mov byte [esp + 0xe], cl
mov ecx, dword [edx]
mov eax, dword [esp + 0xc]
and eax, 0xfefefeff
or ecx, 0x1010100
sub ecx, eax
mov eax, ecx
and eax, 0x1010100
mov esi, eax
shr esi, 8
sub eax, esi
pop esi
and eax, ecx
pop ebp
mov dword [edx], eax
pop ebx
add esp, 0x78
ret
mov ecx, dword [esp + 0x90]
sub ecx, dword [esp + 0x98]
mov edi, dword [esp + 0x78]
mov esi, dword [esp + 0x80]
sub esi, edi
mov dword [esp + 0x24], ecx
sub ecx, edi
mov dword [esp + 0x34], esi
cmp ecx, esi
mov esi, dword [esp + 0x94]
ja 0x787a05
mov ecx, dword [esp + 0x7c]
mov edi, dword [esp + 0x84]
sub esi, ecx
sub edi, ecx
cmp esi, edi
mov esi, dword [esp + 0x94]
ja 0x787a05
mov ecx, dword [esp + 0x1c]
mov edi, dword [esp + 0x24]
imul ecx, esi
add ecx, dword [esp + 0x20]
movzx ebx, byte [esp + 0xa0]
lea edi, [ecx + edi*4]
movzx ecx, byte [edi]
imul ecx, ebx
movzx ebx, byte [esp + 0xa1]
sar ecx, 8
mov byte [edi], cl
movzx ecx, byte [edi + 1]
imul ecx, ebx
mov bl, byte [esp + 0xa2]
sar ecx, 8
mov byte [edi + 1], cl
movzx ecx, byte [edi + 2]
mov dword [esp + 0x2c], edi
movzx edi, bl
imul ecx, edi
mov edi, dword [esp + 0x2c]
sar ecx, 8
mov byte [edi + 2], cl
mov ecx, dword [esp + 0x98]
mov edi, dword [esp + 0x90]
add ecx, edi
mov dword [esp + 0x24], ecx
sub ecx, dword [esp + 0x78]
cmp ecx, dword [esp + 0x34]
ja 0x787a9e
mov ecx, dword [esp + 0x7c]
mov edi, dword [esp + 0x84]
sub esi, ecx
sub edi, ecx
cmp esi, edi
mov esi, dword [esp + 0x94]
ja 0x787a9e
mov ecx, dword [esp + 0x1c]
mov edi, dword [esp + 0x24]
imul ecx, esi
add ecx, dword [esp + 0x20]
movzx ebx, byte [esp + 0xa0]
lea edi, [ecx + edi*4]
movzx ecx, byte [edi]
imul ecx, ebx
movzx ebx, byte [esp + 0xa1]
sar ecx, 8
mov byte [edi], cl
movzx ecx, byte [edi + 1]
imul ecx, ebx
mov bl, byte [esp + 0xa2]
sar ecx, 8
mov byte [edi + 1], cl
movzx ecx, byte [edi + 2]
mov dword [esp + 0x2c], edi
movzx edi, bl
imul ecx, edi
mov edi, dword [esp + 0x2c]
sar ecx, 8
mov byte [edi + 2], cl
test eax, eax
mov ecx, dword [esp + 0x98]
mov dword [esp + 0x2c], 0
jge 0x787ac7
mov ebp, 1
add eax, 6
add dword [esp + 0x14], 4
mov dword [esp + 0x2c], ebp
jmp 0x787b40
cmp dword [esp + 0x14], 0
mov edi, dword [esp + 0x30]
mov dword [esp + 0x28], ecx
jl 0x787b0a
cmp ecx, edi
jl 0x787af1
mov edx, ecx
sub edx, edi
mov dword [esp + 0x28], edx
lea edx, [ecx - 1]
mov dword [esp + 0x2c], 1
lea ecx, [edx*4]
mov edi, 2
sub edi, ecx
sub eax, ecx
add dword [esp + 0x14], edi
jmp 0x787b40
cmp ecx, edi
mov ebp, 1
mov dword [esp + 0x2c], ebp
jl 0x787b22
mov edx, ecx
sub edx, edi
mov dword [esp + 0x28], edx
lea edx, [ecx - 1]
lea edi, [edx*4]
mov ecx, 4
sub ecx, edi
mov edi, dword [esp + 0x14]
lea eax, [eax + ecx + 2]
lea ecx, [edi + ecx + 2]
mov dword [esp + 0x14], ecx
test edx, edx
jle 0x787eda
lea ecx, [edx*4]
mov dword [esp + 0x74], ecx
mov ecx, dword [esp + 0x90]
add ecx, edx
add ecx, ecx
add ecx, ecx
mov dword [esp + 0x5c], ecx
mov edi, dword [esp + 0x7c]
mov ecx, edx
sub ecx, dword [esp + 0x78]
add ecx, dword [esp + 0x90]
mov dword [esp + 0x60], ecx
lea ecx, [esi + ebp]
imul ecx, dword [esp + 0x1c]
mov dword [esp + 0x54], ecx
mov ecx, ebp
sub ecx, edi
add ecx, esi
mov dword [esp + 0x58], ecx
mov ecx, dword [esp + 0x1c]
neg ecx
mov dword [esp + 0x3c], ecx
mov ecx, esi
sub ecx, edi
mov edi, dword [esp + 0x90]
sub ecx, ebp
sub esi, ebp
imul esi, dword [esp + 0x1c]
mov dword [esp + 0x50], ecx
mov ecx, dword [esp + 0x90]
sub ecx, dword [esp + 0x78]
sub edi, edx
sub ecx, edx
add edi, edi
add edi, edi
mov dword [esp + 0x64], ecx
mov dword [esp + 0x70], esi
mov dword [esp + 0x68], edi
jmp 0x787be4
mov ecx, dword [esp + 0x64]
cmp dword [esp + 0x2c], 0
je 0x787dbc
cmp ecx, dword [esp + 0x34]
ja 0x787c63
mov ecx, dword [esp + 0x84]
sub ecx, dword [esp + 0x7c]
cmp dword [esp + 0x58], ecx
ja 0x787c63
mov ecx, dword [esp + 0x68]
mov edi, dword [esp + 0x54]
movzx ebx, byte [esp + 0xa0]
add edi, ecx
add edi, dword [esp + 0x20]
movzx ecx, byte [edi]
imul ecx, ebx
movzx ebx, byte [esp + 0xa1]
sar ecx, 8
mov byte [edi], cl
movzx ecx, byte [edi + 1]
imul ecx, ebx
mov bl, byte [esp + 0xa2]
sar ecx, 8
mov byte [edi + 1], cl
movzx ecx, byte [edi + 2]
mov dword [esp + 0x2c], edi
movzx edi, bl
imul ecx, edi
mov edi, dword [esp + 0x2c]
sar ecx, 8
mov byte [edi + 2], cl
mov ecx, dword [esp + 0x34]
cmp dword [esp + 0x60], ecx
ja 0x787cdb
mov ecx, dword [esp + 0x84]
sub ecx, dword [esp + 0x7c]
cmp dword [esp + 0x58], ecx
ja 0x787cdb
mov ecx, dword [esp + 0x54]
mov edi, dword [esp + 0x5c]
movzx ebx, byte [esp + 0xa0]
add edi, ecx
add edi, dword [esp + 0x20]
movzx ecx, byte [edi]
imul ecx, ebx
movzx ebx, byte [esp + 0xa1]
sar ecx, 8
mov byte [edi], cl
movzx ecx, byte [edi + 1]
imul ecx, ebx
mov bl, byte [esp + 0xa2]
sar ecx, 8
mov byte [edi + 1], cl
movzx ecx, byte [edi + 2]
mov dword [esp + 0x2c], edi
movzx edi, bl
imul ecx, edi
mov edi, dword [esp + 0x2c]
sar ecx, 8
mov byte [edi + 2], cl
mov ecx, dword [esp + 0x34]
cmp dword [esp + 0x64], ecx
ja 0x787d4c
mov ecx, dword [esp + 0x84]
sub ecx, dword [esp + 0x7c]
cmp dword [esp + 0x50], ecx
ja 0x787d4c
mov ecx, dword [esp + 0x68]
lea edi, [ecx + esi]
add edi, dword [esp + 0x20]
movzx esi, byte [esp + 0xa0]
movzx ecx, byte [edi]
imul ecx, esi
movzx esi, byte [esp + 0xa1]
mov bl, byte [esp + 0xa2]
sar ecx, 8
mov byte [edi], cl
movzx ecx, byte [edi + 1]
imul ecx, esi
sar ecx, 8
mov byte [edi + 1], cl
movzx ecx, byte [edi + 2]
movzx esi, bl
imul ecx, esi
mov esi, dword [esp + 0x70]
sar ecx, 8
mov byte [edi + 2], cl
mov ecx, dword [esp + 0x34]
cmp dword [esp + 0x60], ecx
ja 0x787dbc
mov ecx, dword [esp + 0x84]
sub ecx, dword [esp + 0x7c]
cmp dword [esp + 0x50], ecx
ja 0x787dbc
mov ecx, dword [esp + 0x5c]
movzx edi, byte [esp + 0xa0]
add esi, ecx
add esi, dword [esp + 0x20]
mov bl, byte [esp + 0xa2]
movzx ecx, byte [esi]
imul ecx, edi
movzx edi, byte [esp + 0xa1]
sar ecx, 8
mov byte [esi], cl
movzx ecx, byte [esi + 1]
imul ecx, edi
sar ecx, 8
mov byte [esi + 1], cl
movzx ecx, byte [esi + 2]
movzx edi, bl
imul ecx, edi
sar ecx, 8
mov byte [esi + 2], cl
mov esi, dword [esp + 0x70]
test eax, eax
mov dword [esp + 0x2c], 0
jge 0x787e00
add esi, dword [esp + 0x3c]
sub dword [esp + 0x50], 1
mov ecx, 1
add dword [esp + 0x58], ecx
add ebp, ecx
mov dword [esp + 0x2c], ecx
mov ecx, dword [esp + 0x1c]
add dword [esp + 0x54], ecx
lea ecx, [ebp*4]
add dword [esp + 0x14], ecx
lea eax, [eax + ecx + 2]
jmp 0x787ec7
mov ecx, dword [esp + 0x98]
add dword [esp + 0x28], ecx
cmp dword [esp + 0x14], 0
mov ecx, dword [esp + 0x30]
jl 0x787e62
cmp dword [esp + 0x28], ecx
jl 0x787e4c
sub dword [esp + 0x28], ecx
mov ecx, 1
add dword [esp + 0x64], ecx
sub dword [esp + 0x60], ecx
mov edi, 4
add dword [esp + 0x68], edi
sub dword [esp + 0x5c], edi
sub edx, ecx
sub dword [esp + 0x74], edi
mov dword [esp + 0x2c], ecx
mov ecx, dword [esp + 0x74]
mov edi, 2
sub edi, ecx
sub eax, ecx
add dword [esp + 0x14], edi
jmp 0x787ecb
cmp dword [esp + 0x28], ecx
mov dword [esp + 0x2c], 1
mov edi, 1
jl 0x787e98
sub dword [esp + 0x28], ecx
add dword [esp + 0x64], edi
sub dword [esp + 0x60], edi
mov ecx, 4
add dword [esp + 0x68], ecx
sub dword [esp + 0x5c], ecx
sub edx, edi
sub dword [esp + 0x74], ecx
mov ecx, dword [esp + 0x1c]
add dword [esp + 0x54], ecx
add dword [esp + 0x58], edi
add esi, dword [esp + 0x3c]
sub dword [esp + 0x50], 1
add ebp, edi
mov edi, dword [esp + 0x14]
mov ecx, ebp
sub ecx, edx
add ecx, ecx
add ecx, ecx
lea eax, [eax + ecx + 2]
lea ecx, [edi + ecx + 2]
mov dword [esp + 0x14], ecx
mov dword [esp + 0x70], esi
test edx, edx
jg 0x787be0
mov esi, dword [esp + 0x94]
mov eax, dword [esp + 0x90]
lea ecx, [edx + eax]
sub ecx, dword [esp + 0x78]
mov eax, esi
sub eax, ebp
cmp ecx, dword [esp + 0x34]
mov ecx, dword [esp + 0x7c]
mov dword [esp + 0x50], eax
ja 0x787f67
mov edi, dword [esp + 0x84]
sub edi, ecx
sub eax, ecx
cmp eax, edi
ja 0x787f67
mov edi, dword [esp + 0x50]
imul edi, dword [esp + 0x1c]
mov ecx, dword [esp + 0x90]
add edi, dword [esp + 0x20]
lea eax, [edx + ecx]
movzx ecx, byte [esp + 0xa0]
lea edi, [edi + eax*4]
movzx eax, byte [edi]
imul eax, ecx
movzx ecx, byte [esp + 0xa1]
sar eax, 8
mov byte [edi], al
movzx eax, byte [edi + 1]
imul eax, ecx
sar eax, 8
mov byte [edi + 1], al
movzx eax, byte [edi + 2]
movzx ecx, bl
imul eax, ecx
mov ecx, dword [esp + 0x7c]
sar eax, 8
mov byte [edi + 2], al
mov eax, dword [esp + 0x90]
sub eax, edx
mov edx, eax
sub edx, dword [esp + 0x78]
add ebp, esi
cmp edx, dword [esp + 0x34]
ja case.0x789050.5
mov edx, dword [esp + 0x84]
mov esi, ebp
sub esi, ecx
sub edx, ecx
cmp esi, edx
ja case.0x789050.5
imul ebp, dword [esp + 0x1c]
add ebp, dword [esp + 0x20]
movzx ecx, byte [esp + 0xa0]
lea esi, [ebp + eax*4]
movzx eax, byte [esi]
imul eax, ecx
sar eax, 8
mov byte [esi], al
movzx edx, byte [esi + 1]
movzx eax, byte [esp + 0xa1]
imul edx, eax
sar edx, 8
mov byte [esi + 1], dl
movzx ecx, byte [esi + 2]
movzx edx, bl
imul ecx, edx
pop edi
sar ecx, 8
mov byte [esi + 2], cl
pop esi
pop ebp
pop ebx
add esp, 0x78
ret
mov esi, dword [esp + 0x90]
mov ecx, dword [esp + 0x98]
mov edi, dword [esp + 0x80]
sub edi, dword [esp + 0x78]
sub esi, ecx
mov dword [esp + 0x24], esi
sub esi, dword [esp + 0x78]
mov dword [esp + 0x34], edi
cmp esi, edi
ja 0x7880c4
mov ecx, dword [esp + 0x7c]
mov esi, dword [esp + 0x84]
mov edi, dword [esp + 0x94]
sub esi, ecx
sub edi, ecx
cmp edi, esi
ja 0x7880bd
mov ecx, dword [esp + 0x1c]
imul ecx, dword [esp + 0x94]
add ecx, dword [esp + 0x20]
mov esi, dword [esp + 0x24]
movzx edi, byte [ecx + esi*4]
lea esi, [ecx + esi*4]
movzx ecx, byte [esp + 0xa0]
imul ecx, edi
sar ecx, 8
movzx ecx, cl
sub ecx, edi
imul ecx, dword [0xb160b8]
shl edi, 8
add ecx, edi
sar ecx, 8
mov byte [esi], cl
movzx edi, byte [esi + 1]
movzx ecx, byte [esp + 0xa1]
imul ecx, edi
sar ecx, 8
movzx ecx, cl
sub ecx, edi
imul ecx, dword [0xb160b8]
shl edi, 8
add ecx, edi
sar ecx, 8
mov byte [esi + 1], cl
movzx edi, byte [esi + 2]
movzx ecx, bl
imul ecx, edi
sar ecx, 8
movzx ecx, cl
sub ecx, edi
imul ecx, dword [0xb160b8]
shl edi, 8
add ecx, edi
sar ecx, 8
mov byte [esi + 2], cl
mov ecx, dword [esp + 0x98]
mov esi, dword [esp + 0x90]
add esi, ecx
mov dword [esp + 0x24], esi
sub esi, dword [esp + 0x78]
cmp esi, dword [esp + 0x34]
ja 0x788190
mov ecx, dword [esp + 0x7c]
mov esi, dword [esp + 0x84]
mov edi, dword [esp + 0x94]
sub esi, ecx
sub edi, ecx
cmp edi, esi
ja 0x788189
mov ecx, dword [esp + 0x1c]
imul ecx, dword [esp + 0x94]
add ecx, dword [esp + 0x20]
mov esi, dword [esp + 0x24]
movzx edi, byte [ecx + esi*4]
lea esi, [ecx + esi*4]
movzx ecx, byte [esp + 0xa0]
imul ecx, edi
sar ecx, 8
movzx ecx, cl
sub ecx, edi
imul ecx, dword [0xb160b8]
shl edi, 8
add ecx, edi
sar ecx, 8
mov byte [esi], cl
movzx edi, byte [esi + 1]
movzx ecx, byte [esp + 0xa1]
imul ecx, edi
sar ecx, 8
movzx ecx, cl
sub ecx, edi
imul ecx, dword [0xb160b8]
shl edi, 8
add ecx, edi
sar ecx, 8
mov byte [esi + 1], cl
movzx edi, byte [esi + 2]
movzx ecx, bl
imul ecx, edi
sar ecx, 8
movzx ecx, cl
sub ecx, edi
imul ecx, dword [0xb160b8]
shl edi, 8
add ecx, edi
sar ecx, 8
mov byte [esi + 2], cl
mov ecx, dword [esp + 0x98]
xor esi, esi
test eax, eax
jge 0x7881ac
add eax, 6
add dword [esp + 0x14], 4
mov esi, 1
jmp 0x788226
cmp dword [esp + 0x14], 0
mov edi, dword [esp + 0x30]
mov dword [esp + 0x28], ecx
jl 0x7881f0
cmp ecx, edi
jl 0x7881d7
mov edx, ecx
sub edx, edi
mov dword [esp + 0x28], edx
lea edx, [ecx - 1]
mov esi, 1
lea ecx, [edx*4]
mov edi, 2
sub edi, ecx
sub eax, ecx
add dword [esp + 0x14], edi
jmp 0x788228
cmp ecx, edi
mov esi, 1
jl 0x788208
mov edx, ecx
sub edx, edi
mov dword [esp + 0x28], edx
lea edx, [ecx - 1]
lea edi, [edx*4]
mov ecx, 4
sub ecx, edi
mov edi, dword [esp + 0x14]
lea eax, [eax + ecx + 2]
lea ecx, [edi + ecx + 2]
mov dword [esp + 0x14], ecx
mov ebp, esi
test edx, edx
jle 0x788689
lea ecx, [edx*4]
mov dword [esp + 0x74], ecx
mov ecx, dword [esp + 0x90]
add ecx, edx
add ecx, ecx
add ecx, ecx
mov dword [esp + 0x5c], ecx
mov edi, dword [esp + 0x7c]
mov ecx, edx
sub ecx, dword [esp + 0x78]
add ecx, dword [esp + 0x90]
mov dword [esp + 0x60], ecx
mov ecx, dword [esp + 0x94]
add ecx, ebp
imul ecx, dword [esp + 0x1c]
mov dword [esp + 0x54], ecx
mov ecx, ebp
sub ecx, edi
add ecx, dword [esp + 0x94]
mov dword [esp + 0x58], ecx
mov ecx, dword [esp + 0x1c]
neg ecx
mov dword [esp + 0x3c], ecx
mov ecx, dword [esp + 0x94]
sub ecx, edi
sub ecx, ebp
mov dword [esp + 0x4c], ecx
mov ecx, dword [esp + 0x90]
sub ecx, dword [esp + 0x78]
sub ecx, edx
mov dword [esp + 0x64], ecx
mov ecx, dword [esp + 0x94]
sub ecx, ebp
imul ecx, dword [esp + 0x1c]
mov dword [esp + 0x50], ecx
mov ecx, dword [esp + 0x90]
sub ecx, edx
add ecx, ecx
add ecx, ecx
mov dword [esp + 0x68], ecx
jmp 0x7882d8
mov ecx, dword [esp + 0x68]
test esi, esi
je 0x788584
mov esi, dword [esp + 0x64]
cmp esi, dword [esp + 0x34]
ja 0x788389
mov esi, dword [esp + 0x84]
sub esi, dword [esp + 0x7c]
cmp dword [esp + 0x58], esi
ja 0x788389
mov esi, dword [esp + 0x54]
add esi, ecx
add esi, dword [esp + 0x20]
movzx ecx, byte [esp + 0xa0]
movzx edi, byte [esi]
imul ecx, edi
sar ecx, 8
movzx ecx, cl
sub ecx, edi
imul ecx, dword [0xb160b8]
mov dword [esp + 0x48], edi
shl edi, 8
add ecx, edi
sar ecx, 8
mov byte [esi], cl
movzx edi, byte [esi + 1]
movzx ecx, byte [esp + 0xa1]
imul ecx, edi
sar ecx, 8
movzx ecx, cl
sub ecx, edi
imul ecx, dword [0xb160b8]
shl edi, 8
add ecx, edi
sar ecx, 8
mov byte [esi + 1], cl
movzx edi, byte [esi + 2]
movzx ecx, bl
imul ecx, edi
sar ecx, 8
movzx ecx, cl
sub ecx, edi
imul ecx, dword [0xb160b8]
shl edi, 8
add ecx, edi
sar ecx, 8
mov byte [esi + 2], cl
mov ecx, dword [esp + 0x68]
mov esi, dword [esp + 0x34]
cmp dword [esp + 0x60], esi
ja 0x788436
mov esi, dword [esp + 0x84]
sub esi, dword [esp + 0x7c]
cmp dword [esp + 0x58], esi
ja 0x788436
mov ecx, dword [esp + 0x54]
mov esi, dword [esp + 0x5c]
add esi, ecx
add esi, dword [esp + 0x20]
movzx ecx, byte [esp + 0xa0]
movzx edi, byte [esi]
imul ecx, edi
sar ecx, 8
movzx ecx, cl
sub ecx, edi
imul ecx, dword [0xb160b8]
mov dword [esp + 0x48], edi
shl edi, 8
add ecx, edi
sar ecx, 8
mov byte [esi], cl
movzx edi, byte [esi + 1]
movzx ecx, byte [esp + 0xa1]
imul ecx, edi
sar ecx, 8
movzx ecx, cl
sub ecx, edi
imul ecx, dword [0xb160b8]
shl edi, 8
add ecx, edi
sar ecx, 8
mov byte [esi + 1], cl
movzx edi, byte [esi + 2]
movzx ecx, bl
imul ecx, edi
sar ecx, 8
movzx ecx, cl
sub ecx, edi
imul ecx, dword [0xb160b8]
shl edi, 8
add ecx, edi
sar ecx, 8
mov byte [esi + 2], cl
mov ecx, dword [esp + 0x68]
mov esi, dword [esp + 0x34]
cmp dword [esp + 0x64], esi
ja 0x7884db
mov esi, dword [esp + 0x84]
sub esi, dword [esp + 0x7c]
cmp dword [esp + 0x4c], esi
ja 0x7884db
mov esi, dword [esp + 0x50]
add esi, ecx
add esi, dword [esp + 0x20]
movzx ecx, byte [esp + 0xa0]
movzx edi, byte [esi]
imul ecx, edi
sar ecx, 8
movzx ecx, cl
sub ecx, edi
imul ecx, dword [0xb160b8]
mov dword [esp + 0x48], edi
shl edi, 8
add ecx, edi
sar ecx, 8
mov byte [esi], cl
movzx edi, byte [esi + 1]
movzx ecx, byte [esp + 0xa1]
imul ecx, edi
sar ecx, 8
movzx ecx, cl
sub ecx, edi
imul ecx, dword [0xb160b8]
shl edi, 8
add ecx, edi
sar ecx, 8
mov byte [esi + 1], cl
movzx edi, byte [esi + 2]
movzx ecx, bl
imul ecx, edi
sar ecx, 8
movzx ecx, cl
sub ecx, edi
imul ecx, dword [0xb160b8]
shl edi, 8
add ecx, edi
sar ecx, 8
mov byte [esi + 2], cl
mov ecx, dword [esp + 0x34]
cmp dword [esp + 0x60], ecx
ja 0x788584
mov ecx, dword [esp + 0x84]
sub ecx, dword [esp + 0x7c]
cmp dword [esp + 0x4c], ecx
ja 0x788584
mov ecx, dword [esp + 0x50]
mov esi, dword [esp + 0x5c]
add esi, ecx
add esi, dword [esp + 0x20]
movzx ecx, byte [esp + 0xa0]
movzx edi, byte [esi]
imul ecx, edi
sar ecx, 8
movzx ecx, cl
sub ecx, edi
imul ecx, dword [0xb160b8]
mov dword [esp + 0x48], edi
shl edi, 8
add ecx, edi
sar ecx, 8
mov byte [esi], cl
movzx edi, byte [esi + 1]
movzx ecx, byte [esp + 0xa1]
imul ecx, edi
sar ecx, 8
movzx ecx, cl
sub ecx, edi
imul ecx, dword [0xb160b8]
shl edi, 8
add ecx, edi
sar ecx, 8
mov byte [esi + 1], cl
movzx edi, byte [esi + 2]
movzx ecx, bl
imul ecx, edi
sar ecx, 8
movzx ecx, cl
sub ecx, edi
imul ecx, dword [0xb160b8]
shl edi, 8
add ecx, edi
sar ecx, 8
mov byte [esi + 2], cl
xor esi, esi
test eax, eax
jge 0x7885c1
mov ecx, dword [esp + 0x1c]
add dword [esp + 0x54], ecx
mov ecx, dword [esp + 0x3c]
add dword [esp + 0x50], ecx
mov esi, 1
add dword [esp + 0x58], esi
sub dword [esp + 0x4c], esi
add ebp, esi
lea ecx, [ebp*4]
add dword [esp + 0x14], ecx
lea eax, [eax + ecx + 2]
jmp 0x788681
mov ecx, dword [esp + 0x98]
add dword [esp + 0x28], ecx
cmp dword [esp + 0x14], 0
mov ecx, dword [esp + 0x30]
jl 0x78861f
cmp dword [esp + 0x28], ecx
jl 0x788609
sub dword [esp + 0x28], ecx
mov esi, 1
add dword [esp + 0x64], esi
sub dword [esp + 0x60], esi
mov ecx, 4
add dword [esp + 0x68], ecx
sub dword [esp + 0x5c], ecx
sub edx, esi
sub dword [esp + 0x74], ecx
mov ecx, dword [esp + 0x74]
mov edi, 2
sub edi, ecx
sub eax, ecx
add dword [esp + 0x14], edi
jmp 0x788681
cmp dword [esp + 0x28], ecx
mov esi, 1
mov edi, esi
jl 0x78864f
sub dword [esp + 0x28], ecx
add dword [esp + 0x64], edi
sub dword [esp + 0x60], edi
mov ecx, 4
add dword [esp + 0x68], ecx
sub dword [esp + 0x5c], ecx
sub edx, edi
sub dword [esp + 0x74], ecx
mov ecx, dword [esp + 0x1c]
add dword [esp + 0x54], ecx
mov ecx, dword [esp + 0x3c]
add dword [esp + 0x50], ecx
add dword [esp + 0x58], edi
sub dword [esp + 0x4c], esi
add ebp, edi
mov edi, dword [esp + 0x14]
mov ecx, ebp
sub ecx, edx
add ecx, ecx
add ecx, ecx
lea eax, [eax + ecx + 2]
lea ecx, [edi + ecx + 2]
mov dword [esp + 0x14], ecx
test edx, edx
jg 0x7882d4
mov eax, dword [esp + 0x90]
mov esi, dword [esp + 0x94]
add eax, edx
mov ecx, eax
sub ecx, dword [esp + 0x78]
sub esi, ebp
cmp ecx, dword [esp + 0x34]
ja 0x788745
mov edi, dword [esp + 0x84]
sub edi, dword [esp + 0x7c]
mov ecx, esi
sub ecx, dword [esp + 0x7c]
cmp ecx, edi
ja 0x788745
imul esi, dword [esp + 0x1c]
add esi, dword [esp + 0x20]
movzx edi, byte [esi + eax*4]
lea esi, [esi + eax*4]
movzx eax, byte [esp + 0xa0]
imul eax, edi
sar eax, 8
movzx ecx, al
sub ecx, edi
imul ecx, dword [0xb160b8]
movzx eax, byte [esp + 0xa1]
shl edi, 8
add ecx, edi
sar ecx, 8
mov byte [esi], cl
movzx edi, byte [esi + 1]
imul eax, edi
sar eax, 8
movzx ecx, al
sub ecx, edi
imul ecx, dword [0xb160b8]
shl edi, 8
add ecx, edi
sar ecx, 8
mov byte [esi + 1], cl
movzx edi, byte [esi + 2]
movzx eax, bl
imul eax, edi
sar eax, 8
movzx ecx, al
sub ecx, edi
imul ecx, dword [0xb160b8]
shl edi, 8
add ecx, edi
sar ecx, 8
mov byte [esi + 2], cl
mov eax, dword [esp + 0x90]
sub eax, edx
mov edx, dword [esp + 0x94]
mov ecx, eax
sub ecx, dword [esp + 0x78]
add ebp, edx
cmp ecx, dword [esp + 0x34]
ja case.0x789050.5
mov edx, dword [esp + 0x7c]
mov ecx, dword [esp + 0x84]
mov esi, ebp
sub esi, edx
sub ecx, edx
cmp esi, ecx
ja case.0x789050.5
imul ebp, dword [esp + 0x1c]
add ebp, dword [esp + 0x20]
movzx esi, byte [ebp + eax*4]
movzx edx, byte [esp + 0xa0]
imul edx, esi
lea eax, [ebp + eax*4]
sar edx, 8
movzx ecx, dl
sub ecx, esi
imul ecx, dword [0xb160b8]
movzx edx, byte [esp + 0xa1]
shl esi, 8
add ecx, esi
sar ecx, 8
mov byte [eax], cl
movzx esi, byte [eax + 1]
imul edx, esi
sar edx, 8
movzx ecx, dl
sub ecx, esi
imul ecx, dword [0xb160b8]
shl esi, 8
add ecx, esi
sar ecx, 8
mov byte [eax + 1], cl
movzx ecx, byte [eax + 2]
movzx edx, bl
imul edx, ecx
sar edx, 8
movzx edx, dl
sub edx, ecx
imul edx, dword [0xb160b8]
pop edi
shl ecx, 8
pop esi
add edx, ecx
sar edx, 8
pop ebp
mov byte [eax + 2], dl
pop ebx
add esp, 0x78
ret
mov esi, dword [esp + 0x90]
mov ecx, dword [esp + 0x98]
mov edi, dword [esp + 0x80]
sub edi, dword [esp + 0x78]
sub esi, ecx
mov dword [esp + 0x24], esi
sub esi, dword [esp + 0x78]
mov dword [esp + 0x34], edi
cmp esi, edi
ja 0x7888dc
mov ecx, dword [esp + 0x7c]
mov esi, dword [esp + 0x84]
mov edi, dword [esp + 0x94]
sub esi, ecx
sub edi, ecx
cmp edi, esi
ja 0x7888d5
mov ecx, dword [esp + 0x1c]
imul ecx, dword [esp + 0x94]
add ecx, dword [esp + 0x20]
mov esi, dword [esp + 0x24]
movzx edi, byte [ecx + esi*4]
lea esi, [ecx + esi*4]
mov cl, byte [esp + 0xa0]
not cl
movzx ecx, cl
sub ecx, edi
imul ecx, dword [0xb160b8]
shl edi, 8
add ecx, edi
sar ecx, 8
mov byte [esi], cl
mov cl, byte [esp + 0xa1]
movzx edi, byte [esi + 1]
not cl
movzx ecx, cl
sub ecx, edi
imul ecx, dword [0xb160b8]
shl edi, 8
add ecx, edi
sar ecx, 8
mov byte [esi + 1], cl
movzx edi, byte [esi + 2]
mov cl, bl
not cl
movzx ecx, cl
sub ecx, edi
imul ecx, dword [0xb160b8]
shl edi, 8
add ecx, edi
sar ecx, 8
mov byte [esi + 2], cl
mov ecx, dword [esp + 0x98]
mov esi, dword [esp + 0x90]
add esi, ecx
mov dword [esp + 0x24], esi
sub esi, dword [esp + 0x78]
cmp esi, dword [esp + 0x34]
ja 0x788999
mov ecx, dword [esp + 0x7c]
mov esi, dword [esp + 0x84]
mov edi, dword [esp + 0x94]
sub esi, ecx
sub edi, ecx
cmp edi, esi
ja 0x788992
mov ecx, dword [esp + 0x1c]
imul ecx, dword [esp + 0x94]
add ecx, dword [esp + 0x20]
mov esi, dword [esp + 0x24]
movzx edi, byte [ecx + esi*4]
lea esi, [ecx + esi*4]
mov cl, byte [esp + 0xa0]
not cl
movzx ecx, cl
sub ecx, edi
imul ecx, dword [0xb160b8]
shl edi, 8
add ecx, edi
sar ecx, 8
mov byte [esi], cl
mov cl, byte [esp + 0xa1]
movzx edi, byte [esi + 1]
not cl
movzx ecx, cl
sub ecx, edi
imul ecx, dword [0xb160b8]
shl edi, 8
add ecx, edi
sar ecx, 8
mov byte [esi + 1], cl
movzx edi, byte [esi + 2]
mov cl, bl
not cl
movzx ecx, cl
sub ecx, edi
imul ecx, dword [0xb160b8]
shl edi, 8
add ecx, edi
sar ecx, 8
mov byte [esi + 2], cl
mov ecx, dword [esp + 0x98]
xor esi, esi
test eax, eax
jge 0x7889b5
add eax, 6
add dword [esp + 0x14], 4
mov esi, 1
jmp 0x788a2f
cmp dword [esp + 0x14], 0
mov edi, dword [esp + 0x30]
mov dword [esp + 0x28], ecx
jl 0x7889f9
cmp ecx, edi
jl 0x7889e0
mov edx, ecx
sub edx, edi
mov dword [esp + 0x28], edx
lea edx, [ecx - 1]
mov esi, 1
lea ecx, [edx*4]
mov edi, 2
sub edi, ecx
sub eax, ecx
add dword [esp + 0x14], edi
jmp 0x788a31
cmp ecx, edi
mov esi, 1
jl 0x788a11
mov edx, ecx
sub edx, edi
mov dword [esp + 0x28], edx
lea edx, [ecx - 1]
lea edi, [edx*4]
mov ecx, 4
sub ecx, edi
mov edi, dword [esp + 0x14]
lea eax, [eax + ecx + 2]
lea ecx, [edi + ecx + 2]
mov dword [esp + 0x14], ecx
mov ebp, esi
test edx, edx
jle 0x788e59
lea ecx, [edx*4]
mov dword [esp + 0x74], ecx
mov ecx, dword [esp + 0x90]
add ecx, edx
add ecx, ecx
add ecx, ecx
mov dword [esp + 0x5c], ecx
mov edi, dword [esp + 0x7c]
mov ecx, edx
sub ecx, dword [esp + 0x78]
add ecx, dword [esp + 0x90]
mov dword [esp + 0x60], ecx
mov ecx, dword [esp + 0x94]
add ecx, ebp
imul ecx, dword [esp + 0x1c]
mov dword [esp + 0x54], ecx
mov ecx, ebp
sub ecx, edi
add ecx, dword [esp + 0x94]
mov dword [esp + 0x58], ecx
mov ecx, dword [esp + 0x1c]
neg ecx
mov dword [esp + 0x3c], ecx
mov ecx, dword [esp + 0x94]
sub ecx, edi
sub ecx, ebp
mov dword [esp + 0x4c], ecx
mov ecx, dword [esp + 0x90]
sub ecx, dword [esp + 0x78]
sub ecx, edx
mov dword [esp + 0x64], ecx
mov ecx, dword [esp + 0x94]
sub ecx, ebp
imul ecx, dword [esp + 0x1c]
mov dword [esp + 0x50], ecx
mov ecx, dword [esp + 0x90]
sub ecx, edx
add ecx, ecx
add ecx, ecx
mov dword [esp + 0x68], ecx
jmp 0x788ae4
mov ecx, dword [esp + 0x68]
test esi, esi
je 0x788d54
mov esi, dword [esp + 0x64]
cmp esi, dword [esp + 0x34]
ja 0x788b86
mov esi, dword [esp + 0x84]
sub esi, dword [esp + 0x7c]
cmp dword [esp + 0x58], esi
ja 0x788b86
mov esi, dword [esp + 0x54]
add esi, ecx
add esi, dword [esp + 0x20]
mov cl, byte [esp + 0xa0]
movzx edi, byte [esi]
not cl
movzx ecx, cl
sub ecx, edi
imul ecx, dword [0xb160b8]
mov dword [esp + 0x48], edi
shl edi, 8
add ecx, edi
sar ecx, 8
mov byte [esi], cl
mov cl, byte [esp + 0xa1]
movzx edi, byte [esi + 1]
not cl
movzx ecx, cl
sub ecx, edi
imul ecx, dword [0xb160b8]
shl edi, 8
add ecx, edi
sar ecx, 8
mov byte [esi + 1], cl
movzx edi, byte [esi + 2]
mov cl, bl
not cl
movzx ecx, cl
sub ecx, edi
imul ecx, dword [0xb160b8]
shl edi, 8
add ecx, edi
sar ecx, 8
mov byte [esi + 2], cl
mov ecx, dword [esp + 0x68]
mov esi, dword [esp + 0x34]
cmp dword [esp + 0x60], esi
ja 0x788c24
mov esi, dword [esp + 0x84]
sub esi, dword [esp + 0x7c]
cmp dword [esp + 0x58], esi
ja 0x788c24
mov ecx, dword [esp + 0x54]
mov esi, dword [esp + 0x5c]
add esi, ecx
add esi, dword [esp + 0x20]
mov cl, byte [esp + 0xa0]
movzx edi, byte [esi]
not cl
movzx ecx, cl
sub ecx, edi
imul ecx, dword [0xb160b8]
mov dword [esp + 0x48], edi
shl edi, 8
add ecx, edi
sar ecx, 8
mov byte [esi], cl
mov cl, byte [esp + 0xa1]
movzx edi, byte [esi + 1]
not cl
movzx ecx, cl
sub ecx, edi
imul ecx, dword [0xb160b8]
shl edi, 8
add ecx, edi
sar ecx, 8
mov byte [esi + 1], cl
movzx edi, byte [esi + 2]
mov cl, bl
not cl
movzx ecx, cl
sub ecx, edi
imul ecx, dword [0xb160b8]
shl edi, 8
add ecx, edi
sar ecx, 8
mov byte [esi + 2], cl
mov ecx, dword [esp + 0x68]
mov esi, dword [esp + 0x34]
cmp dword [esp + 0x64], esi
ja 0x788cba
mov esi, dword [esp + 0x84]
sub esi, dword [esp + 0x7c]
cmp dword [esp + 0x4c], esi
ja 0x788cba
mov esi, dword [esp + 0x50]
add esi, ecx
add esi, dword [esp + 0x20]
mov cl, byte [esp + 0xa0]
movzx edi, byte [esi]
not cl
movzx ecx, cl
sub ecx, edi
imul ecx, dword [0xb160b8]
mov dword [esp + 0x48], edi
shl edi, 8
add ecx, edi
sar ecx, 8
mov byte [esi], cl
mov cl, byte [esp + 0xa1]
movzx edi, byte [esi + 1]
not cl
movzx ecx, cl
sub ecx, edi
imul ecx, dword [0xb160b8]
shl edi, 8
add ecx, edi
sar ecx, 8
mov byte [esi + 1], cl
movzx edi, byte [esi + 2]
mov cl, bl
not cl
movzx ecx, cl
sub ecx, edi
imul ecx, dword [0xb160b8]
shl edi, 8
add ecx, edi
sar ecx, 8
mov byte [esi + 2], cl
mov ecx, dword [esp + 0x34]
cmp dword [esp + 0x60], ecx
ja 0x788d54
mov ecx, dword [esp + 0x84]
sub ecx, dword [esp + 0x7c]
cmp dword [esp + 0x4c], ecx
ja 0x788d54
mov ecx, dword [esp + 0x50]
mov esi, dword [esp + 0x5c]
add esi, ecx
add esi, dword [esp + 0x20]
mov cl, byte [esp + 0xa0]
movzx edi, byte [esi]
not cl
movzx ecx, cl
sub ecx, edi
imul ecx, dword [0xb160b8]
mov dword [esp + 0x48], edi
shl edi, 8
add ecx, edi
sar ecx, 8
mov byte [esi], cl
mov cl, byte [esp + 0xa1]
movzx edi, byte [esi + 1]
not cl
movzx ecx, cl
sub ecx, edi
imul ecx, dword [0xb160b8]
shl edi, 8
add ecx, edi
sar ecx, 8
mov byte [esi + 1], cl
movzx edi, byte [esi + 2]
mov cl, bl
not cl
movzx ecx, cl
sub ecx, edi
imul ecx, dword [0xb160b8]
shl edi, 8
add ecx, edi
sar ecx, 8
mov byte [esi + 2], cl
xor esi, esi
test eax, eax
jge 0x788d91
mov ecx, dword [esp + 0x1c]
add dword [esp + 0x54], ecx
mov ecx, dword [esp + 0x3c]
add dword [esp + 0x50], ecx
mov esi, 1
add dword [esp + 0x58], esi
sub dword [esp + 0x4c], esi
add ebp, esi
lea ecx, [ebp*4]
add dword [esp + 0x14], ecx
lea eax, [eax + ecx + 2]
jmp 0x788e51
mov ecx, dword [esp + 0x98]
add dword [esp + 0x28], ecx
cmp dword [esp + 0x14], 0
mov ecx, dword [esp + 0x30]
jl 0x788def
cmp dword [esp + 0x28], ecx
jl 0x788dd9
sub dword [esp + 0x28], ecx
mov esi, 1
add dword [esp + 0x64], esi
sub dword [esp + 0x60], esi
mov ecx, 4
add dword [esp + 0x68], ecx
sub dword [esp + 0x5c], ecx
sub edx, esi
sub dword [esp + 0x74], ecx
mov ecx, dword [esp + 0x74]
mov edi, 2
sub edi, ecx
sub eax, ecx
add dword [esp + 0x14], edi
jmp 0x788e51
cmp dword [esp + 0x28], ecx
mov esi, 1
mov edi, esi
jl 0x788e1f
sub dword [esp + 0x28], ecx
add dword [esp + 0x64], edi
sub dword [esp + 0x60], edi
mov ecx, 4
add dword [esp + 0x68], ecx
sub dword [esp + 0x5c], ecx
sub edx, edi
sub dword [esp + 0x74], ecx
mov ecx, dword [esp + 0x1c]
add dword [esp + 0x54], ecx
mov ecx, dword [esp + 0x3c]
add dword [esp + 0x50], ecx
add dword [esp + 0x58], edi
sub dword [esp + 0x4c], esi
add ebp, edi
mov edi, dword [esp + 0x14]
mov ecx, ebp
sub ecx, edx
add ecx, ecx
add ecx, ecx
lea eax, [eax + ecx + 2]
lea ecx, [edi + ecx + 2]
mov dword [esp + 0x14], ecx
test edx, edx
jg 0x788ae0
mov eax, dword [esp + 0x90]
mov esi, dword [esp + 0x94]
add eax, edx
mov ecx, eax
sub ecx, dword [esp + 0x78]
sub esi, ebp
cmp ecx, dword [esp + 0x34]
ja 0x788f0d
mov edi, dword [esp + 0x84]
sub edi, dword [esp + 0x7c]
mov ecx, esi
sub ecx, dword [esp + 0x7c]
cmp ecx, edi
ja 0x788f0d
imul esi, dword [esp + 0x1c]
add esi, dword [esp + 0x20]
movzx edi, byte [esi + eax*4]
lea esi, [esi + eax*4]
mov al, byte [esp + 0xa0]
not al
movzx ecx, al
sub ecx, edi
imul ecx, dword [0xb160b8]
shl edi, 8
add ecx, edi
sar ecx, 8
mov byte [esi], cl
mov cl, byte [esp + 0xa1]
movzx edi, byte [esi + 1]
mov al, cl
not al
movzx eax, al
sub eax, edi
imul eax, dword [0xb160b8]
shl edi, 8
add eax, edi
sar eax, 8
mov byte [esi + 1], al
movzx edi, byte [esi + 2]
mov al, bl
not al
movzx eax, al
sub eax, edi
imul eax, dword [0xb160b8]
shl edi, 8
add eax, edi
sar eax, 8
mov byte [esi + 2], al
jmp 0x788f14
mov cl, byte [esp + 0xa1]
mov eax, dword [esp + 0x90]
sub eax, edx
mov edx, dword [esp + 0x94]
add ebp, edx
mov edx, eax
sub edx, dword [esp + 0x78]
cmp edx, dword [esp + 0x34]
ja case.0x789050.5
mov esi, dword [esp + 0x7c]
mov edx, dword [esp + 0x84]
mov edi, ebp
sub edi, esi
sub edx, esi
cmp edi, edx
ja case.0x789050.5
imul ebp, dword [esp + 0x1c]
add ebp, dword [esp + 0x20]
mov dl, byte [esp + 0xa0]
movzx esi, byte [ebp + eax*4]
not dl
lea eax, [ebp + eax*4]
movzx edx, dl
sub edx, esi
imul edx, dword [0xb160b8]
shl esi, 8
add edx, esi
sar edx, 8
mov byte [eax], dl
movzx esi, byte [eax + 1]
not cl
movzx ecx, cl
sub ecx, esi
imul ecx, dword [0xb160b8]
shl esi, 8
add ecx, esi
sar ecx, 8
mov byte [eax + 1], cl
movzx ecx, byte [eax + 2]
not bl
movzx edx, bl
sub edx, ecx
imul edx, dword [0xb160b8]
pop edi
shl ecx, 8
pop esi
add edx, ecx
sar edx, 8
pop ebp
mov byte [eax + 2], dl
pop ebx
add esp, 0x78
ret
mov ebx, dword [0xb160d4]
mov ecx, ebx
and ecx, 0xffffff
cmp ecx, 0xffffff
je 0x78903a
mov eax, dword [esp + 0xa0]
mov ecx, eax
sar ecx, 5
and ecx, 0x3f
movzx ebx, bh
imul ecx, ebx
movzx ebx, byte [0xb160d4]
and eax, 0x1f
imul eax, ebx
movzx ebx, byte [0xb160d6]
sar eax, 5
and ecx, 0xffffff07
or ecx, eax
mov eax, dword [esp + 0xa0]
sar eax, 8
and eax, 0xfffffff8
imul eax, ebx
and eax, 0xfffff800
sar ecx, 3
or ecx, eax
mov eax, dword [esp + 0x18]
mov dword [esp + 0xa0], ecx
jmp 0x789041
mov ecx, dword [esp + 0xa0]
mov ebx, dword [0xb160b4]
cmp ebx, 0xb
ja case.0x789050.5
jmp dword [ebx*4 + 0x78c854]
mov esi, dword [0xb160b8]
cmp esi, 0xff
jne 0x7894f7
mov ecx, dword [esp + 0x90]
mov esi, dword [esp + 0x98]
mov ebx, dword [esp + 0x80]
sub ebx, dword [esp + 0x78]
mov edi, ecx
sub edi, esi
mov dword [esp + 0x24], edi
sub edi, dword [esp + 0x78]
mov dword [esp + 0x34], ebx
cmp edi, ebx
ja 0x7890df
mov esi, dword [esp + 0x7c]
mov edi, dword [esp + 0x84]
mov ebx, dword [esp + 0x94]
sub edi, esi
sub ebx, esi
cmp ebx, edi
ja 0x7890d8
mov esi, dword [esp + 0x1c]
imul esi, dword [esp + 0x94]
add esi, dword [esp + 0x20]
mov edi, dword [esp + 0x24]
mov bx, word [esp + 0xa0]
mov word [esi + edi*2], bx
mov esi, dword [esp + 0x98]
lea edi, [ecx + esi]
sub edi, dword [esp + 0x78]
cmp edi, dword [esp + 0x34]
ja 0x78913a
mov esi, dword [esp + 0x7c]
mov edi, dword [esp + 0x84]
mov ebx, dword [esp + 0x94]
sub edi, esi
sub ebx, esi
cmp ebx, edi
mov esi, dword [esp + 0x98]
ja 0x78913a
mov edi, dword [esp + 0x1c]
imul edi, dword [esp + 0x94]
add edi, dword [esp + 0x20]
mov bx, word [esp + 0xa0]
add esi, ecx
mov word [edi + esi*2], bx
mov esi, dword [esp + 0x98]
xor edi, edi
test eax, eax
jge 0x789156
add eax, 6
add dword [esp + 0x14], 4
mov edi, 1
jmp 0x7891d0
cmp dword [esp + 0x14], 0
mov ebx, dword [esp + 0x30]
mov dword [esp + 0x28], esi
jl 0x78919a
cmp esi, ebx
jl 0x789181
mov edx, esi
sub edx, ebx
mov dword [esp + 0x28], edx
lea edx, [esi - 1]
mov edi, 1
lea esi, [edx*4]
mov ebx, 2
sub ebx, esi
sub eax, esi
add dword [esp + 0x14], ebx
jmp 0x7891d2
cmp esi, ebx
mov edi, 1
jl 0x7891b2
mov edx, esi
sub edx, ebx
mov dword [esp + 0x28], edx
lea edx, [esi - 1]
lea ebx, [edx*4]
mov esi, 4
sub esi, ebx
mov ebx, dword [esp + 0x14]
lea eax, [eax + esi + 2]
lea esi, [ebx + esi + 2]
mov dword [esp + 0x14], esi
mov ebp, edi
test edx, edx
jle 0x78945e
lea esi, [edx*4]
mov dword [esp + 0x74], esi
lea esi, [edx + ecx]
add esi, esi
mov dword [esp + 0x5c], esi
mov ebx, dword [esp + 0x94]
mov esi, edx
sub esi, dword [esp + 0x78]
add esi, ecx
mov dword [esp + 0x60], esi
mov esi, dword [esp + 0x94]
add esi, ebp
imul esi, dword [esp + 0x1c]
mov dword [esp + 0x54], esi
mov esi, ebp
sub esi, dword [esp + 0x7c]
add esi, ebx
mov dword [esp + 0x58], esi
mov esi, dword [esp + 0x1c]
neg esi
mov dword [esp + 0x3c], esi
mov esi, ebx
sub esi, dword [esp + 0x7c]
sub esi, ebp
mov dword [esp + 0x50], esi
mov esi, ecx
sub esi, dword [esp + 0x78]
sub ecx, edx
sub esi, edx
mov dword [esp + 0x64], esi
mov esi, ebx
sub esi, ebp
imul esi, dword [esp + 0x1c]
add ecx, ecx
mov dword [esp + 0x68], ecx
jmp 0x789264
mov ecx, dword [esp + 0x68]
test edi, edi
je 0x789358
mov edi, dword [esp + 0x34]
cmp dword [esp + 0x64], edi
ja 0x7892a9
mov edi, dword [esp + 0x84]
sub edi, dword [esp + 0x7c]
cmp dword [esp + 0x58], edi
ja 0x7892a9
mov edi, dword [esp + 0x54]
mov ebx, dword [esp + 0x20]
add ecx, edi
mov di, word [esp + 0xa0]
mov word [ecx + ebx], di
mov ecx, dword [esp + 0x68]
mov edi, dword [esp + 0x34]
cmp dword [esp + 0x60], edi
ja 0x7892ea
mov edi, dword [esp + 0x84]
sub edi, dword [esp + 0x7c]
cmp dword [esp + 0x58], edi
ja 0x7892ea
mov edi, dword [esp + 0x5c]
mov ecx, dword [esp + 0x54]
mov ebx, dword [esp + 0x20]
add ecx, edi
mov di, word [esp + 0xa0]
mov word [ecx + ebx], di
mov ecx, dword [esp + 0x68]
mov edi, dword [esp + 0x34]
cmp dword [esp + 0x64], edi
ja 0x78931f
mov edi, dword [esp + 0x84]
sub edi, dword [esp + 0x7c]
cmp dword [esp + 0x50], edi
ja 0x78931f
mov di, word [esp + 0xa0]
mov ebx, dword [esp + 0x20]
add ecx, esi
mov word [ecx + ebx], di
mov ecx, dword [esp + 0x34]
cmp dword [esp + 0x60], ecx
ja 0x789358
mov ecx, dword [esp + 0x84]
sub ecx, dword [esp + 0x7c]
cmp dword [esp + 0x50], ecx
ja 0x789358
mov ecx, dword [esp + 0x5c]
mov di, word [esp + 0xa0]
mov ebx, dword [esp + 0x20]
add ecx, esi
mov word [ecx + ebx], di
xor edi, edi
test eax, eax
jge 0x789391
mov ecx, dword [esp + 0x1c]
add dword [esp + 0x54], ecx
add esi, dword [esp + 0x3c]
mov edi, 1
add dword [esp + 0x58], edi
sub dword [esp + 0x50], edi
add ebp, edi
lea ecx, [ebp*4]
add dword [esp + 0x14], ecx
lea eax, [eax + ecx + 2]
jmp 0x78944f
mov ecx, dword [esp + 0x98]
add dword [esp + 0x28], ecx
cmp dword [esp + 0x14], 0
mov ecx, dword [esp + 0x30]
jl 0x7893f0
cmp dword [esp + 0x28], ecx
jl 0x7893da
sub dword [esp + 0x28], ecx
mov edi, 1
add dword [esp + 0x64], edi
sub dword [esp + 0x60], edi
mov ecx, 2
add dword [esp + 0x68], ecx
sub dword [esp + 0x5c], ecx
sub edx, edi
sub dword [esp + 0x74], 4
mov ecx, dword [esp + 0x74]
mov ebx, 2
sub ebx, ecx
sub eax, ecx
add dword [esp + 0x14], ebx
jmp 0x78944f
cmp dword [esp + 0x28], ecx
mov edi, 1
mov ebx, edi
jl 0x789421
sub dword [esp + 0x28], ecx
add dword [esp + 0x64], ebx
sub dword [esp + 0x60], ebx
mov ecx, 2
add dword [esp + 0x68], ecx
sub dword [esp + 0x5c], ecx
sub edx, ebx
sub dword [esp + 0x74], 4
mov ecx, dword [esp + 0x1c]
add dword [esp + 0x54], ecx
add dword [esp + 0x58], ebx
add esi, dword [esp + 0x3c]
sub dword [esp + 0x50], edi
add ebp, ebx
mov ebx, dword [esp + 0x14]
mov ecx, ebp
sub ecx, edx
add ecx, ecx
add ecx, ecx
lea eax, [eax + ecx + 2]
lea ecx, [ebx + ecx + 2]
mov dword [esp + 0x14], ecx
test edx, edx
jg 0x789260
mov ecx, dword [esp + 0x90]
mov eax, dword [esp + 0x94]
mov edi, dword [esp + 0x7c]
lea esi, [edx + ecx]
sub esi, dword [esp + 0x78]
sub eax, ebp
cmp esi, dword [esp + 0x34]
ja 0x7894a9
mov ebx, dword [esp + 0x84]
mov esi, eax
sub esi, edi
sub ebx, edi
cmp esi, ebx
ja 0x7894a9
imul eax, dword [esp + 0x1c]
add eax, dword [esp + 0x20]
mov bx, word [esp + 0xa0]
lea esi, [edx + ecx]
mov word [eax + esi*2], bx
sub ecx, edx
mov edx, dword [esp + 0x94]
mov eax, ecx
sub eax, dword [esp + 0x78]
add ebp, edx
cmp eax, dword [esp + 0x34]
ja case.0x789050.5
mov eax, dword [esp + 0x84]
mov edx, ebp
sub edx, edi
sub eax, edi
cmp edx, eax
ja case.0x789050.5
imul ebp, dword [esp + 0x1c]
add ebp, dword [esp + 0x20]
mov ax, word [esp + 0xa0]
pop edi
pop esi
mov word [ebp + ecx*2], ax
pop ebp
pop ebx
add esp, 0x78
ret
test esi, esi
je case.0x789050.5
mov esi, dword [esp + 0x90]
sub esi, dword [esp + 0x98]
mov ebx, dword [esp + 0x78]
mov dword [esp + 0x24], esi
mov esi, dword [esp + 0x80]
sub esi, ebx
mov dword [esp + 0x34], esi
mov esi, dword [esp + 0x24]
sub esi, ebx
cmp esi, dword [esp + 0x34]
ja 0x7895e2
mov eax, dword [esp + 0x7c]
mov esi, dword [esp + 0x84]
mov ebx, dword [esp + 0x94]
sub esi, eax
sub ebx, eax
cmp ebx, esi
ja 0x7895de
mov eax, dword [esp + 0x1c]
imul eax, dword [esp + 0x94]
add eax, dword [esp + 0x20]
mov esi, dword [esp + 0x24]
lea eax, [eax + esi*2]
mov dword [esp + 0x2c], eax
movzx eax, word [eax]
movzx esi, ax
mov dword [esp + 0x44], esi
shr esi, 5
and esi, 0x3f
mov ebx, ecx
sar ebx, 5
and ebx, 0x3f
sub ebx, esi
mov esi, eax
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x44]
shr esi, 5
shr eax, 0xb
and esi, 0x3f
add si, word [edi + ebx*4]
mov ebx, ecx
sar ebx, 0xb
sub ebx, eax
mov ax, word [esp + 0x38]
shr ax, 0xb
add ax, word [edi + ebx*4]
shl si, 5
shl ax, 0xb
or si, ax
mov eax, dword [esp + 0x44]
and eax, 0x1f
mov ebx, ecx
and ebx, 0x1f
sub ebx, eax
mov eax, dword [esp + 0x38]
and eax, 0x1f
add ax, word [edi + ebx*4]
or si, ax
mov eax, dword [esp + 0x2c]
mov word [eax], si
mov eax, dword [esp + 0x18]
mov esi, dword [esp + 0x98]
mov ebx, dword [esp + 0x90]
add esi, ebx
mov dword [esp + 0x24], esi
sub esi, dword [esp + 0x78]
cmp esi, dword [esp + 0x34]
ja 0x7896b4
mov eax, dword [esp + 0x7c]
mov esi, dword [esp + 0x84]
mov ebx, dword [esp + 0x94]
sub esi, eax
sub ebx, eax
cmp ebx, esi
ja 0x7896b0
mov eax, dword [esp + 0x1c]
imul eax, dword [esp + 0x94]
add eax, dword [esp + 0x20]
mov esi, dword [esp + 0x24]
lea eax, [eax + esi*2]
mov dword [esp + 0x2c], eax
movzx eax, word [eax]
movzx esi, ax
mov dword [esp + 0x44], esi
shr esi, 5
and esi, 0x3f
mov ebx, ecx
sar ebx, 5
and ebx, 0x3f
sub ebx, esi
mov esi, eax
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x44]
shr esi, 5
shr eax, 0xb
and esi, 0x3f
add si, word [edi + ebx*4]
mov ebx, ecx
sar ebx, 0xb
sub ebx, eax
mov ax, word [esp + 0x38]
shr ax, 0xb
add ax, word [edi + ebx*4]
shl si, 5
shl ax, 0xb
or si, ax
mov eax, dword [esp + 0x44]
and eax, 0x1f
mov ebx, ecx
and ebx, 0x1f
sub ebx, eax
mov eax, dword [esp + 0x38]
and eax, 0x1f
add ax, word [edi + ebx*4]
or si, ax
mov eax, dword [esp + 0x2c]
mov word [eax], si
mov eax, dword [esp + 0x18]
test eax, eax
mov esi, dword [esp + 0x98]
mov ebx, dword [esp + 0x30]
mov dword [esp + 0x2c], 0
jge 0x7896e5
mov ebp, 1
add eax, 6
add dword [esp + 0x14], 4
mov dword [esp + 0x2c], ebp
jmp 0x789762
cmp dword [esp + 0x14], 0
mov dword [esp + 0x28], esi
jl 0x789728
cmp esi, ebx
jl 0x78970f
mov edx, esi
sub edx, ebx
mov dword [esp + 0x28], edx
lea edx, [esi - 1]
mov dword [esp + 0x2c], 1
lea esi, [edx*4]
mov ebx, 2
sub ebx, esi
sub eax, esi
add dword [esp + 0x14], ebx
jmp 0x789762
cmp esi, ebx
mov ebp, 1
mov dword [esp + 0x2c], ebp
jl 0x789744
mov edx, esi
sub edx, ebx
mov dword [esp + 0x28], edx
lea edx, [esi - 1]
lea ebx, [edx*4]
mov esi, 4
sub esi, ebx
mov ebx, dword [esp + 0x14]
lea eax, [eax + esi + 2]
lea esi, [ebx + esi + 2]
mov dword [esp + 0x14], esi
test edx, edx
mov dword [esp + 0x18], eax
jle 0x789bfa
lea esi, [edx*4]
mov dword [esp + 0x74], esi
mov esi, dword [esp + 0x90]
add esi, edx
add esi, esi
mov dword [esp + 0x5c], esi
mov ebx, dword [esp + 0x7c]
mov esi, edx
sub esi, dword [esp + 0x78]
add esi, dword [esp + 0x90]
mov dword [esp + 0x60], esi
mov esi, dword [esp + 0x94]
add esi, ebp
imul esi, dword [esp + 0x1c]
mov dword [esp + 0x54], esi
mov esi, ebp
sub esi, ebx
add esi, dword [esp + 0x94]
mov dword [esp + 0x58], esi
mov esi, dword [esp + 0x1c]
neg esi
mov dword [esp + 0x3c], esi
mov esi, dword [esp + 0x94]
sub esi, ebx
sub esi, ebp
mov dword [esp + 0x4c], esi
mov esi, dword [esp + 0x90]
sub esi, dword [esp + 0x78]
sub esi, edx
mov dword [esp + 0x64], esi
mov esi, dword [esp + 0x94]
sub esi, ebp
imul esi, dword [esp + 0x1c]
mov dword [esp + 0x50], esi
mov esi, dword [esp + 0x90]
sub esi, edx
add esi, esi
mov dword [esp + 0x68], esi
lea esp, [esp]
cmp dword [esp + 0x2c], 0
je 0x789acb
mov esi, dword [esp + 0x64]
cmp esi, dword [esp + 0x34]
ja 0x7898c7
mov esi, dword [esp + 0x84]
sub esi, dword [esp + 0x7c]
cmp dword [esp + 0x58], esi
ja 0x7898c7
mov esi, dword [esp + 0x54]
mov eax, dword [esp + 0x68]
add eax, esi
add eax, dword [esp + 0x20]
mov ebx, ecx
mov dword [esp + 0x2c], eax
movzx eax, word [eax]
movzx esi, ax
mov dword [esp + 0x44], esi
sar ebx, 5
shr esi, 5
and esi, 0x3f
and ebx, 0x3f
sub ebx, esi
mov esi, eax
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x44]
shr eax, 0xb
shr esi, 5
and esi, 0x3f
add si, word [edi + ebx*4]
mov ebx, ecx
sar ebx, 0xb
sub ebx, eax
mov ax, word [esp + 0x38]
shr ax, 0xb
add ax, word [edi + ebx*4]
shl si, 5
shl ax, 0xb
or si, ax
mov eax, dword [esp + 0x44]
and eax, 0x1f
mov ebx, ecx
and ebx, 0x1f
sub ebx, eax
mov eax, dword [esp + 0x38]
and eax, 0x1f
add ax, word [edi + ebx*4]
or si, ax
mov eax, dword [esp + 0x2c]
mov word [eax], si
mov eax, dword [esp + 0x18]
mov esi, dword [esp + 0x34]
cmp dword [esp + 0x60], esi
ja 0x789973
mov esi, dword [esp + 0x84]
sub esi, dword [esp + 0x7c]
cmp dword [esp + 0x58], esi
ja 0x789973
mov esi, dword [esp + 0x5c]
mov eax, dword [esp + 0x54]
add eax, esi
add eax, dword [esp + 0x20]
mov ebx, ecx
mov dword [esp + 0x2c], eax
movzx eax, word [eax]
movzx esi, ax
mov dword [esp + 0x44], esi
sar ebx, 5
shr esi, 5
and esi, 0x3f
and ebx, 0x3f
sub ebx, esi
mov esi, eax
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x44]
shr eax, 0xb
shr esi, 5
and esi, 0x3f
add si, word [edi + ebx*4]
mov ebx, ecx
sar ebx, 0xb
sub ebx, eax
mov ax, word [esp + 0x38]
shr ax, 0xb
add ax, word [edi + ebx*4]
shl si, 5
shl ax, 0xb
or si, ax
mov eax, dword [esp + 0x44]
and eax, 0x1f
mov ebx, ecx
and ebx, 0x1f
sub ebx, eax
mov eax, dword [esp + 0x38]
and eax, 0x1f
add ax, word [edi + ebx*4]
or si, ax
mov eax, dword [esp + 0x2c]
mov word [eax], si
mov eax, dword [esp + 0x18]
mov esi, dword [esp + 0x34]
cmp dword [esp + 0x64], esi
ja 0x789a1f
mov esi, dword [esp + 0x84]
sub esi, dword [esp + 0x7c]
cmp dword [esp + 0x4c], esi
ja 0x789a1f
mov esi, dword [esp + 0x50]
mov eax, dword [esp + 0x68]
add eax, esi
add eax, dword [esp + 0x20]
mov ebx, ecx
mov dword [esp + 0x2c], eax
movzx eax, word [eax]
movzx esi, ax
mov dword [esp + 0x44], esi
sar ebx, 5
shr esi, 5
and esi, 0x3f
and ebx, 0x3f
sub ebx, esi
mov esi, eax
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x44]
shr eax, 0xb
shr esi, 5
and esi, 0x3f
add si, word [edi + ebx*4]
mov ebx, ecx
sar ebx, 0xb
sub ebx, eax
mov ax, word [esp + 0x38]
shr ax, 0xb
add ax, word [edi + ebx*4]
shl si, 5
shl ax, 0xb
or si, ax
mov eax, dword [esp + 0x44]
and eax, 0x1f
mov ebx, ecx
and ebx, 0x1f
sub ebx, eax
mov eax, dword [esp + 0x38]
and eax, 0x1f
add ax, word [edi + ebx*4]
or si, ax
mov eax, dword [esp + 0x2c]
mov word [eax], si
mov eax, dword [esp + 0x18]
mov esi, dword [esp + 0x34]
cmp dword [esp + 0x60], esi
ja 0x789acb
mov esi, dword [esp + 0x84]
sub esi, dword [esp + 0x7c]
cmp dword [esp + 0x4c], esi
ja 0x789acb
mov esi, dword [esp + 0x5c]
mov eax, dword [esp + 0x50]
add eax, esi
add eax, dword [esp + 0x20]
mov ebx, ecx
mov dword [esp + 0x2c], eax
movzx eax, word [eax]
movzx esi, ax
mov dword [esp + 0x44], esi
sar ebx, 5
shr esi, 5
and esi, 0x3f
and ebx, 0x3f
sub ebx, esi
mov esi, eax
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x44]
shr eax, 0xb
shr esi, 5
and esi, 0x3f
add si, word [edi + ebx*4]
mov ebx, ecx
sar ebx, 0xb
sub ebx, eax
mov ax, word [esp + 0x38]
shr ax, 0xb
add ax, word [edi + ebx*4]
shl si, 5
shl ax, 0xb
or si, ax
mov eax, dword [esp + 0x44]
and eax, 0x1f
mov ebx, ecx
and ebx, 0x1f
sub ebx, eax
mov eax, dword [esp + 0x38]
and eax, 0x1f
add ax, word [edi + ebx*4]
or si, ax
mov eax, dword [esp + 0x2c]
mov word [eax], si
mov eax, dword [esp + 0x18]
test eax, eax
mov dword [esp + 0x2c], 0
jge 0x789b13
sub dword [esp + 0x4c], 1
mov esi, 1
add dword [esp + 0x58], esi
add ebp, esi
mov dword [esp + 0x2c], esi
mov esi, dword [esp + 0x1c]
add dword [esp + 0x54], esi
mov esi, dword [esp + 0x3c]
add dword [esp + 0x50], esi
lea esi, [ebp*4]
add dword [esp + 0x14], esi
lea eax, [eax + esi + 2]
jmp 0x789bee
mov ebx, dword [esp + 0x28]
add ebx, dword [esp + 0x98]
cmp dword [esp + 0x14], 0
mov esi, dword [esp + 0x30]
mov dword [esp + 0x28], ebx
jl 0x789b7a
cmp ebx, esi
jl 0x789b64
sub ebx, esi
mov esi, 1
add dword [esp + 0x64], esi
sub dword [esp + 0x60], esi
mov dword [esp + 0x28], ebx
mov ebx, 2
add dword [esp + 0x68], ebx
sub dword [esp + 0x5c], ebx
sub edx, esi
sub dword [esp + 0x74], 4
mov dword [esp + 0x2c], esi
mov esi, dword [esp + 0x74]
mov ebx, 2
sub ebx, esi
sub eax, esi
add dword [esp + 0x14], ebx
jmp 0x789bee
cmp ebx, esi
mov dword [esp + 0x2c], 1
jl 0x789bb6
sub ebx, esi
mov dword [esp + 0x28], ebx
mov ebx, 1
add dword [esp + 0x64], ebx
sub dword [esp + 0x60], ebx
mov esi, 2
add dword [esp + 0x68], esi
sub dword [esp + 0x5c], esi
sub edx, ebx
sub dword [esp + 0x74], 4
jmp 0x789bbb
mov ebx, 1
mov esi, dword [esp + 0x1c]
add dword [esp + 0x54], esi
mov esi, dword [esp + 0x3c]
add dword [esp + 0x50], esi
add dword [esp + 0x58], ebx
sub dword [esp + 0x4c], 1
add ebp, ebx
mov ebx, dword [esp + 0x14]
mov esi, ebp
sub esi, edx
add esi, esi
add esi, esi
lea eax, [eax + esi + 2]
lea esi, [ebx + esi + 2]
mov dword [esp + 0x14], esi
test edx, edx
mov dword [esp + 0x18], eax
jg 0x789810
mov eax, dword [esp + 0x90]
lea esi, [edx + eax]
sub esi, dword [esp + 0x78]
mov eax, dword [esp + 0x94]
sub eax, ebp
cmp esi, dword [esp + 0x34]
mov esi, dword [esp + 0x7c]
mov dword [esp + 0x50], eax
ja 0x789cca
mov ebx, dword [esp + 0x84]
sub eax, esi
sub ebx, esi
cmp eax, ebx
ja 0x789cca
mov eax, dword [esp + 0x50]
imul eax, dword [esp + 0x1c]
add eax, dword [esp + 0x20]
mov esi, dword [esp + 0x90]
add esi, edx
lea eax, [eax + esi*2]
mov dword [esp + 0x2c], eax
movzx eax, word [eax]
movzx esi, ax
mov dword [esp + 0x44], esi
shr esi, 5
and esi, 0x3f
mov ebx, ecx
sar ebx, 5
and ebx, 0x3f
sub ebx, esi
mov esi, eax
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x44]
shr esi, 5
shr eax, 0xb
and esi, 0x3f
add si, word [edi + ebx*4]
mov ebx, ecx
sar ebx, 0xb
sub ebx, eax
mov ax, word [esp + 0x38]
shr ax, 0xb
add ax, word [edi + ebx*4]
shl si, 5
shl ax, 0xb
or si, ax
mov eax, dword [esp + 0x44]
and eax, 0x1f
mov ebx, ecx
and ebx, 0x1f
sub ebx, eax
mov eax, dword [esp + 0x38]
and eax, 0x1f
add ax, word [edi + ebx*4]
or si, ax
mov eax, dword [esp + 0x2c]
mov word [eax], si
mov esi, dword [esp + 0x7c]
mov eax, dword [esp + 0x90]
sub eax, edx
mov edx, dword [esp + 0x94]
add ebp, edx
mov edx, eax
sub edx, dword [esp + 0x78]
cmp edx, dword [esp + 0x34]
ja case.0x789050.5
mov edx, dword [esp + 0x84]
mov ebx, ebp
sub ebx, esi
sub edx, esi
cmp ebx, edx
ja case.0x789050.5
imul ebp, dword [esp + 0x1c]
add ebp, dword [esp + 0x20]
lea ebp, [ebp + eax*2]
movzx eax, word [ebp]
mov dword [esp + 0x2c], ebp
movzx edx, ax
mov ebx, ecx
sar ebx, 5
and ebx, 0x3f
mov esi, edx
shr esi, 5
and esi, 0x3f
sub ebx, esi
mov esi, eax
shr esi, 5
and esi, 0x3f
add si, word [edi + ebx*4]
mov ebp, ecx
mov ebx, edx
shr ebx, 0xb
sar ebp, 0xb
sub ebp, ebx
mov bx, ax
shr bx, 0xb
add bx, word [edi + ebp*4]
and edx, 0x1f
and ecx, 0x1f
and eax, 0x1f
shl si, 5
shl bx, 0xb
sub ecx, edx
add ax, word [edi + ecx*4]
or si, bx
or si, ax
mov eax, dword [esp + 0x2c]
pop edi
mov word [eax], si
pop esi
pop ebp
pop ebx
add esp, 0x78
ret
cmp dword [0xb160b8], 0
je case.0x789050.5
mov edi, dword [esp + 0x90]
sub edi, dword [esp + 0x98]
mov ebx, dword [esp + 0x78]
mov dword [esp + 0x24], edi
mov edi, dword [esp + 0x80]
sub edi, ebx
mov dword [esp + 0x34], edi
mov edi, dword [esp + 0x24]
sub edi, ebx
cmp edi, dword [esp + 0x34]
ja 0x789e60
mov eax, dword [esp + 0x7c]
mov edi, dword [esp + 0x84]
mov ebx, dword [esp + 0x94]
sub edi, eax
sub ebx, eax
cmp ebx, edi
ja 0x789e5c
mov eax, dword [esp + 0x1c]
imul eax, dword [esp + 0x94]
add eax, dword [esp + 0x20]
mov edi, dword [esp + 0x24]
lea eax, [eax + edi*2]
mov edi, ecx
sar edi, 0xb
mov di, word [esi + edi*4]
shl di, 6
mov ebx, ecx
sar ebx, 5
and ebx, 0x3f
add di, word [esi + ebx*4]
mov dword [esp + 0x2c], eax
movzx eax, word [eax]
shl di, 5
mov ebx, ecx
and ebx, 0x1f
add di, word [esi + ebx*4]
mov dword [esp + 0x38], eax
movzx edi, di
movzx eax, ax
mov ebx, edi
or edi, dword [esp + 0x38]
and eax, 0xf7def7df
and ebx, 0xf7def7df
add eax, ebx
mov dword [esp + 0x44], eax
and eax, 0x8210820
mov ebx, eax
shr ebx, 5
and edi, 0x820
sub eax, ebx
or eax, edi
or eax, dword [esp + 0x44]
mov edi, dword [esp + 0x2c]
mov word [edi], ax
mov eax, dword [esp + 0x18]
mov edi, dword [esp + 0x98]
mov ebx, dword [esp + 0x90]
add edi, ebx
mov dword [esp + 0x24], edi
sub edi, dword [esp + 0x78]
cmp edi, dword [esp + 0x34]
ja 0x789f28
mov eax, dword [esp + 0x7c]
mov edi, dword [esp + 0x84]
mov ebx, dword [esp + 0x94]
sub edi, eax
sub ebx, eax
cmp ebx, edi
ja 0x789f24
mov eax, dword [esp + 0x1c]
imul eax, dword [esp + 0x94]
add eax, dword [esp + 0x20]
mov edi, dword [esp + 0x24]
lea eax, [eax + edi*2]
mov edi, ecx
sar edi, 0xb
mov di, word [esi + edi*4]
shl di, 6
mov ebx, ecx
sar ebx, 5
and ebx, 0x3f
add di, word [esi + ebx*4]
mov dword [esp + 0x2c], eax
movzx eax, word [eax]
shl di, 5
mov ebx, ecx
and ebx, 0x1f
add di, word [esi + ebx*4]
mov dword [esp + 0x38], eax
movzx edi, di
movzx eax, ax
mov ebx, edi
or edi, dword [esp + 0x38]
and eax, 0xf7def7df
and ebx, 0xf7def7df
add eax, ebx
mov dword [esp + 0x44], eax
and eax, 0x8210820
mov ebx, eax
shr ebx, 5
and edi, 0x820
sub eax, ebx
or eax, edi
or eax, dword [esp + 0x44]
mov edi, dword [esp + 0x2c]
mov word [edi], ax
mov eax, dword [esp + 0x18]
test eax, eax
mov edi, dword [esp + 0x98]
mov ebx, dword [esp + 0x30]
mov dword [esp + 0x2c], 0
jge 0x789f59
mov ebp, 1
add eax, 6
add dword [esp + 0x14], 4
mov dword [esp + 0x2c], ebp
jmp 0x789fd6
cmp dword [esp + 0x14], 0
mov dword [esp + 0x28], edi
jl 0x789f9c
cmp edi, ebx
jl 0x789f83
mov edx, edi
sub edx, ebx
mov dword [esp + 0x28], edx
lea edx, [edi - 1]
mov dword [esp + 0x2c], 1
lea edi, [edx*4]
mov ebx, 2
sub ebx, edi
sub eax, edi
add dword [esp + 0x14], ebx
jmp 0x789fd6
cmp edi, ebx
mov ebp, 1
mov dword [esp + 0x2c], ebp
jl 0x789fb8
mov edx, edi
sub edx, ebx
mov dword [esp + 0x28], edx
lea edx, [edi - 1]
lea ebx, [edx*4]
mov edi, 4
sub edi, ebx
mov ebx, dword [esp + 0x14]
lea eax, [eax + edi + 2]
lea edi, [ebx + edi + 2]
mov dword [esp + 0x14], edi
test edx, edx
mov dword [esp + 0x18], eax
jle 0x78a468
lea edi, [edx*4]
mov dword [esp + 0x74], edi
mov edi, dword [esp + 0x90]
add edi, edx
add edi, edi
mov dword [esp + 0x5c], edi
mov ebx, dword [esp + 0x94]
mov edi, edx
sub edi, dword [esp + 0x78]
add edi, dword [esp + 0x90]
mov dword [esp + 0x60], edi
mov edi, dword [esp + 0x94]
add edi, ebp
imul edi, dword [esp + 0x1c]
mov dword [esp + 0x50], edi
mov edi, ebp
sub edi, dword [esp + 0x7c]
add edi, ebx
mov dword [esp + 0x54], edi
mov edi, dword [esp + 0x1c]
neg edi
mov dword [esp + 0x3c], edi
mov edi, ebx
sub edi, dword [esp + 0x7c]
sub edi, ebp
mov dword [esp + 0x48], edi
mov edi, dword [esp + 0x90]
sub edi, dword [esp + 0x78]
sub edi, edx
mov dword [esp + 0x64], edi
mov edi, ebx
sub edi, ebp
imul edi, dword [esp + 0x1c]
mov dword [esp + 0x4c], edi
mov edi, dword [esp + 0x90]
sub edi, edx
add edi, edi
mov dword [esp + 0x68], edi
cmp dword [esp + 0x2c], 0
je 0x78a339
mov edi, dword [esp + 0x64]
cmp edi, dword [esp + 0x34]
ja 0x78a132
mov edi, dword [esp + 0x84]
sub edi, dword [esp + 0x7c]
cmp dword [esp + 0x54], edi
ja 0x78a132
mov ebx, dword [esp + 0x50]
mov edi, dword [esp + 0x68]
add edi, ebx
add edi, dword [esp + 0x20]
mov ebx, ecx
mov dword [esp + 0x2c], edi
sar ebx, 5
and ebx, 0x3f
mov edi, ecx
sar edi, 0xb
mov di, word [esi + edi*4]
shl di, 6
add di, word [esi + ebx*4]
mov ebx, ecx
shl di, 5
and ebx, 0x1f
add di, word [esi + ebx*4]
movzx ebx, di
mov edi, dword [esp + 0x2c]
movzx edi, word [edi]
mov dword [esp + 0x38], edi
movzx edi, di
mov dword [esp + 0x58], ebx
and edi, 0xf7def7df
and ebx, 0xf7def7df
add edi, ebx
mov dword [esp + 0x44], edi
and edi, 0x8210820
mov ebx, edi
shr ebx, 5
sub edi, ebx
mov dword [esp + 0x70], edi
mov edi, dword [esp + 0x58]
or edi, dword [esp + 0x38]
mov ebx, dword [esp + 0x70]
and edi, 0x820
or ebx, edi
or ebx, dword [esp + 0x44]
mov edi, dword [esp + 0x2c]
mov word [edi], bx
mov edi, dword [esp + 0x34]
cmp dword [esp + 0x60], edi
ja 0x78a1e4
mov edi, dword [esp + 0x84]
sub edi, dword [esp + 0x7c]
cmp dword [esp + 0x54], edi
ja 0x78a1e4
mov ebx, dword [esp + 0x5c]
mov edi, dword [esp + 0x50]
add edi, ebx
add edi, dword [esp + 0x20]
mov ebx, ecx
mov dword [esp + 0x2c], edi
sar ebx, 5
and ebx, 0x3f
mov edi, ecx
sar edi, 0xb
mov di, word [esi + edi*4]
shl di, 6
add di, word [esi + ebx*4]
mov ebx, ecx
shl di, 5
and ebx, 0x1f
add di, word [esi + ebx*4]
movzx ebx, di
mov edi, dword [esp + 0x2c]
movzx edi, word [edi]
mov dword [esp + 0x38], edi
movzx edi, di
mov dword [esp + 0x58], ebx
and edi, 0xf7def7df
and ebx, 0xf7def7df
add edi, ebx
mov dword [esp + 0x44], edi
and edi, 0x8210820
mov ebx, edi
shr ebx, 5
sub edi, ebx
mov dword [esp + 0x70], edi
mov edi, dword [esp + 0x58]
or edi, dword [esp + 0x38]
mov ebx, dword [esp + 0x70]
and edi, 0x820
or ebx, edi
or ebx, dword [esp + 0x44]
mov edi, dword [esp + 0x2c]
mov word [edi], bx
mov edi, dword [esp + 0x34]
cmp dword [esp + 0x64], edi
ja 0x78a296
mov edi, dword [esp + 0x84]
sub edi, dword [esp + 0x7c]
cmp dword [esp + 0x48], edi
ja 0x78a296
mov ebx, dword [esp + 0x4c]
mov edi, dword [esp + 0x68]
add edi, ebx
add edi, dword [esp + 0x20]
mov ebx, ecx
mov dword [esp + 0x2c], edi
sar ebx, 5
and ebx, 0x3f
mov edi, ecx
sar edi, 0xb
mov di, word [esi + edi*4]
shl di, 6
add di, word [esi + ebx*4]
mov ebx, ecx
shl di, 5
and ebx, 0x1f
add di, word [esi + ebx*4]
movzx ebx, di
mov edi, dword [esp + 0x2c]
movzx edi, word [edi]
mov dword [esp + 0x38], edi
movzx edi, di
mov dword [esp + 0x58], ebx
and edi, 0xf7def7df
and ebx, 0xf7def7df
add edi, ebx
mov dword [esp + 0x44], edi
and edi, 0x8210820
mov ebx, edi
shr ebx, 5
sub edi, ebx
mov dword [esp + 0x70], edi
mov edi, dword [esp + 0x58]
or edi, dword [esp + 0x38]
mov ebx, dword [esp + 0x70]
and edi, 0x820
or ebx, edi
or ebx, dword [esp + 0x44]
mov edi, dword [esp + 0x2c]
mov word [edi], bx
mov edi, dword [esp + 0x34]
cmp dword [esp + 0x60], edi
ja 0x78a339
mov edi, dword [esp + 0x84]
sub edi, dword [esp + 0x7c]
cmp dword [esp + 0x48], edi
ja 0x78a339
mov edi, dword [esp + 0x5c]
mov eax, dword [esp + 0x4c]
add eax, edi
add eax, dword [esp + 0x20]
mov edi, ecx
sar edi, 0xb
mov di, word [esi + edi*4]
shl di, 6
mov ebx, ecx
sar ebx, 5
and ebx, 0x3f
add di, word [esi + ebx*4]
mov dword [esp + 0x2c], eax
movzx eax, word [eax]
shl di, 5
mov ebx, ecx
and ebx, 0x1f
add di, word [esi + ebx*4]
mov dword [esp + 0x38], eax
movzx ebx, di
movzx edi, ax
and edi, 0xf7def7df
mov eax, ebx
or ebx, dword [esp + 0x38]
and eax, 0xf7def7df
add edi, eax
mov dword [esp + 0x44], edi
and edi, 0x8210820
mov eax, edi
shr eax, 5
sub edi, eax
mov eax, dword [esp + 0x2c]
and ebx, 0x820
or edi, ebx
or edi, dword [esp + 0x44]
mov word [eax], di
mov eax, dword [esp + 0x18]
test eax, eax
mov dword [esp + 0x2c], 0
jge 0x78a381
sub dword [esp + 0x48], 1
mov edi, 1
add dword [esp + 0x54], edi
add ebp, edi
mov dword [esp + 0x2c], edi
mov edi, dword [esp + 0x1c]
add dword [esp + 0x50], edi
mov edi, dword [esp + 0x3c]
add dword [esp + 0x4c], edi
lea edi, [ebp*4]
add dword [esp + 0x14], edi
lea eax, [eax + edi + 2]
jmp 0x78a45c
mov ebx, dword [esp + 0x28]
add ebx, dword [esp + 0x98]
cmp dword [esp + 0x14], 0
mov edi, dword [esp + 0x30]
mov dword [esp + 0x28], ebx
jl 0x78a3e8
cmp ebx, edi
jl 0x78a3d2
sub ebx, edi
mov edi, 1
add dword [esp + 0x64], edi
sub dword [esp + 0x60], edi
mov dword [esp + 0x28], ebx
mov ebx, 2
add dword [esp + 0x68], ebx
sub dword [esp + 0x5c], ebx
sub edx, edi
sub dword [esp + 0x74], 4
mov dword [esp + 0x2c], edi
mov edi, dword [esp + 0x74]
mov ebx, 2
sub ebx, edi
sub eax, edi
add dword [esp + 0x14], ebx
jmp 0x78a45c
cmp ebx, edi
mov dword [esp + 0x2c], 1
jl 0x78a424
sub ebx, edi
mov dword [esp + 0x28], ebx
mov ebx, 1
add dword [esp + 0x64], ebx
sub dword [esp + 0x60], ebx
mov edi, 2
add dword [esp + 0x68], edi
sub dword [esp + 0x5c], edi
sub edx, ebx
sub dword [esp + 0x74], 4
jmp 0x78a429
mov ebx, 1
mov edi, dword [esp + 0x1c]
add dword [esp + 0x50], edi
mov edi, dword [esp + 0x3c]
add dword [esp + 0x4c], edi
add dword [esp + 0x54], ebx
sub dword [esp + 0x48], 1
add ebp, ebx
mov ebx, dword [esp + 0x14]
mov edi, ebp
sub edi, edx
add edi, edi
add edi, edi
lea eax, [eax + edi + 2]
lea edi, [ebx + edi + 2]
mov dword [esp + 0x14], edi
test edx, edx
mov dword [esp + 0x18], eax
jg 0x78a075
mov eax, dword [esp + 0x90]
lea edi, [edx + eax]
sub edi, dword [esp + 0x78]
mov eax, dword [esp + 0x94]
sub eax, ebp
cmp edi, dword [esp + 0x34]
mov edi, dword [esp + 0x7c]
mov dword [esp + 0x50], eax
ja 0x78a52e
mov ebx, dword [esp + 0x84]
sub ebx, edi
sub eax, edi
cmp eax, ebx
ja 0x78a52e
mov eax, dword [esp + 0x50]
imul eax, dword [esp + 0x1c]
add eax, dword [esp + 0x20]
mov edi, dword [esp + 0x90]
add edi, edx
lea eax, [eax + edi*2]
mov edi, ecx
sar edi, 0xb
mov di, word [esi + edi*4]
shl di, 6
mov ebx, ecx
sar ebx, 5
and ebx, 0x3f
add di, word [esi + ebx*4]
mov dword [esp + 0x2c], eax
movzx eax, word [eax]
shl di, 5
mov ebx, ecx
and ebx, 0x1f
add di, word [esi + ebx*4]
mov dword [esp + 0x38], eax
movzx edi, di
movzx eax, ax
mov ebx, edi
or edi, dword [esp + 0x38]
and eax, 0xf7def7df
and ebx, 0xf7def7df
add eax, ebx
mov dword [esp + 0x44], eax
and eax, 0x8210820
mov ebx, eax
shr ebx, 5
and edi, 0x820
sub eax, ebx
or eax, edi
mov edi, dword [esp + 0x2c]
or eax, dword [esp + 0x44]
mov word [edi], ax
mov edi, dword [esp + 0x7c]
mov eax, dword [esp + 0x90]
sub eax, edx
mov edx, dword [esp + 0x94]
add ebp, edx
mov edx, eax
sub edx, dword [esp + 0x78]
cmp edx, dword [esp + 0x34]
ja case.0x789050.5
mov edx, dword [esp + 0x84]
mov ebx, ebp
sub ebx, edi
sub edx, edi
cmp ebx, edx
ja case.0x789050.5
imul ebp, dword [esp + 0x1c]
add ebp, dword [esp + 0x20]
lea edi, [ebp + eax*2]
mov eax, ecx
sar eax, 0xb
mov dx, word [esi + eax*4]
mov eax, ecx
sar eax, 5
and eax, 0x3f
shl dx, 6
add dx, word [esi + eax*4]
and ecx, 0x1f
shl dx, 5
add dx, word [esi + ecx*4]
movzx esi, word [edi]
movzx ecx, dx
movzx edx, si
mov eax, ecx
and eax, 0xf7def7df
and edx, 0xf7def7df
add edx, eax
mov eax, edx
and eax, 0x8210820
mov ebx, eax
shr ebx, 5
or ecx, esi
sub eax, ebx
and ecx, 0x820
or eax, ecx
or eax, edx
mov word [edi], ax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x78
ret
cmp dword [0xb160b8], 0
je case.0x789050.5
mov edi, dword [esp + 0x90]
sub edi, dword [esp + 0x98]
mov ebx, dword [esp + 0x78]
mov dword [esp + 0x24], edi
mov edi, dword [esp + 0x80]
sub edi, ebx
mov dword [esp + 0x34], edi
mov edi, dword [esp + 0x24]
sub edi, ebx
cmp edi, dword [esp + 0x34]
ja 0x78a6a1
mov eax, dword [esp + 0x7c]
mov edi, dword [esp + 0x84]
mov ebx, dword [esp + 0x94]
sub edi, eax
sub ebx, eax
cmp ebx, edi
ja 0x78a69d
mov eax, dword [esp + 0x1c]
imul eax, dword [esp + 0x94]
add eax, dword [esp + 0x20]
mov edi, dword [esp + 0x24]
lea eax, [eax + edi*2]
mov edi, ecx
sar edi, 0xb
mov di, word [esi + edi*4]
shl di, 6
mov ebx, ecx
sar ebx, 5
and ebx, 0x3f
add di, word [esi + ebx*4]
mov ebx, ecx
shl di, 5
and ebx, 0x1f
add di, word [esi + ebx*4]
mov dword [esp + 0x2c], eax
movzx ebx, di
movzx edi, word [eax]
and ebx, 0xf7def7df
or edi, 0x8210820
sub edi, ebx
mov eax, edi
and eax, 0x8210820
mov ebx, eax
shr ebx, 5
sub eax, ebx
and eax, edi
mov edi, dword [esp + 0x2c]
mov word [edi], ax
mov eax, dword [esp + 0x18]
mov edi, dword [esp + 0x90]
mov ebx, dword [esp + 0x98]
add edi, ebx
mov dword [esp + 0x24], edi
sub edi, dword [esp + 0x78]
cmp edi, dword [esp + 0x34]
ja 0x78a751
mov eax, dword [esp + 0x7c]
mov edi, dword [esp + 0x84]
mov ebx, dword [esp + 0x94]
sub edi, eax
sub ebx, eax
cmp ebx, edi
ja 0x78a74d
mov eax, dword [esp + 0x1c]
imul eax, dword [esp + 0x94]
add eax, dword [esp + 0x20]
mov edi, dword [esp + 0x24]
lea eax, [eax + edi*2]
mov edi, ecx
sar edi, 0xb
mov di, word [esi + edi*4]
shl di, 6
mov ebx, ecx
sar ebx, 5
and ebx, 0x3f
add di, word [esi + ebx*4]
mov ebx, ecx
shl di, 5
and ebx, 0x1f
add di, word [esi + ebx*4]
mov dword [esp + 0x2c], eax
movzx ebx, di
movzx edi, word [eax]
and ebx, 0xf7def7df
or edi, 0x8210820
sub edi, ebx
mov eax, edi
and eax, 0x8210820
mov ebx, eax
shr ebx, 5
sub eax, ebx
and eax, edi
mov edi, dword [esp + 0x2c]
mov word [edi], ax
mov eax, dword [esp + 0x18]
test eax, eax
mov edi, dword [esp + 0x98]
mov ebx, dword [esp + 0x30]
mov dword [esp + 0x2c], 0
jge 0x78a782
mov ebp, 1
add eax, 6
add dword [esp + 0x14], 4
mov dword [esp + 0x2c], ebp
jmp 0x78a7ff
cmp dword [esp + 0x14], 0
mov dword [esp + 0x28], edi
jl 0x78a7c5
cmp edi, ebx
jl 0x78a7ac
mov edx, edi
sub edx, ebx
mov dword [esp + 0x28], edx
lea edx, [edi - 1]
mov dword [esp + 0x2c], 1
lea edi, [edx*4]
mov ebx, 2
sub ebx, edi
sub eax, edi
add dword [esp + 0x14], ebx
jmp 0x78a7ff
cmp edi, ebx
mov ebp, 1
mov dword [esp + 0x2c], ebp
jl 0x78a7e1
mov edx, edi
sub edx, ebx
mov dword [esp + 0x28], edx
lea edx, [edi - 1]
lea ebx, [edx*4]
mov edi, 4
sub edi, ebx
mov ebx, dword [esp + 0x14]
lea eax, [eax + edi + 2]
lea edi, [ebx + edi + 2]
mov dword [esp + 0x14], edi
test edx, edx
jle 0x78ac12
lea edi, [edx*4]
mov dword [esp + 0x74], edi
mov edi, dword [esp + 0x90]
add edi, edx
add edi, edi
mov dword [esp + 0x5c], edi
mov ebx, dword [esp + 0x94]
mov edi, edx
sub edi, dword [esp + 0x78]
add edi, dword [esp + 0x90]
mov dword [esp + 0x60], edi
mov edi, dword [esp + 0x94]
add edi, ebp
imul edi, dword [esp + 0x1c]
mov dword [esp + 0x54], edi
mov edi, ebp
sub edi, dword [esp + 0x7c]
add edi, ebx
mov dword [esp + 0x58], edi
mov edi, dword [esp + 0x1c]
neg edi
mov dword [esp + 0x3c], edi
mov edi, ebx
sub edi, dword [esp + 0x7c]
sub edi, ebp
mov dword [esp + 0x4c], edi
mov edi, dword [esp + 0x90]
sub edi, dword [esp + 0x78]
sub edi, edx
mov dword [esp + 0x64], edi
mov edi, ebx
sub edi, ebp
imul edi, dword [esp + 0x1c]
mov dword [esp + 0x50], edi
mov edi, dword [esp + 0x90]
sub edi, edx
add edi, edi
mov dword [esp + 0x68], edi
lea ebx, [ebx]
cmp dword [esp + 0x2c], 0
je 0x78aae7
mov edi, dword [esp + 0x64]
cmp edi, dword [esp + 0x34]
ja 0x78a93a
mov edi, dword [esp + 0x84]
sub edi, dword [esp + 0x7c]
cmp dword [esp + 0x58], edi
ja 0x78a93a
mov ebx, dword [esp + 0x54]
mov edi, dword [esp + 0x68]
add edi, ebx
add edi, dword [esp + 0x20]
mov ebx, ecx
mov dword [esp + 0x2c], edi
sar ebx, 5
and ebx, 0x3f
mov edi, ecx
sar edi, 0xb
mov di, word [esi + edi*4]
shl di, 6
add di, word [esi + ebx*4]
mov ebx, ecx
shl di, 5
and ebx, 0x1f
add di, word [esi + ebx*4]
movzx ebx, di
mov edi, dword [esp + 0x2c]
movzx edi, word [edi]
and ebx, 0xf7def7df
or edi, 0x8210820
sub edi, ebx
mov dword [esp + 0x44], edi
and edi, 0x8210820
mov ebx, edi
shr ebx, 5
sub edi, ebx
and edi, dword [esp + 0x44]
mov ebx, dword [esp + 0x2c]
mov word [ebx], di
mov edi, dword [esp + 0x34]
cmp dword [esp + 0x60], edi
ja 0x78a9c9
mov edi, dword [esp + 0x84]
sub edi, dword [esp + 0x7c]
cmp dword [esp + 0x58], edi
ja 0x78a9c9
mov ebx, dword [esp + 0x5c]
mov edi, dword [esp + 0x54]
add edi, ebx
add edi, dword [esp + 0x20]
mov ebx, ecx
mov dword [esp + 0x2c], edi
sar ebx, 5
and ebx, 0x3f
mov edi, ecx
sar edi, 0xb
mov di, word [esi + edi*4]
shl di, 6
add di, word [esi + ebx*4]
mov ebx, ecx
shl di, 5
and ebx, 0x1f
add di, word [esi + ebx*4]
movzx ebx, di
mov edi, dword [esp + 0x2c]
movzx edi, word [edi]
and ebx, 0xf7def7df
or edi, 0x8210820
sub edi, ebx
mov dword [esp + 0x44], edi
and edi, 0x8210820
mov ebx, edi
shr ebx, 5
sub edi, ebx
and edi, dword [esp + 0x44]
mov ebx, dword [esp + 0x2c]
mov word [ebx], di
mov edi, dword [esp + 0x34]
cmp dword [esp + 0x64], edi
ja 0x78aa58
mov edi, dword [esp + 0x84]
sub edi, dword [esp + 0x7c]
cmp dword [esp + 0x4c], edi
ja 0x78aa58
mov ebx, dword [esp + 0x50]
mov edi, dword [esp + 0x68]
add edi, ebx
add edi, dword [esp + 0x20]
mov ebx, ecx
mov dword [esp + 0x2c], edi
sar ebx, 5
and ebx, 0x3f
mov edi, ecx
sar edi, 0xb
mov di, word [esi + edi*4]
shl di, 6
add di, word [esi + ebx*4]
mov ebx, ecx
shl di, 5
and ebx, 0x1f
add di, word [esi + ebx*4]
movzx ebx, di
mov edi, dword [esp + 0x2c]
movzx edi, word [edi]
and ebx, 0xf7def7df
or edi, 0x8210820
sub edi, ebx
mov dword [esp + 0x44], edi
and edi, 0x8210820
mov ebx, edi
shr ebx, 5
sub edi, ebx
and edi, dword [esp + 0x44]
mov ebx, dword [esp + 0x2c]
mov word [ebx], di
mov edi, dword [esp + 0x34]
cmp dword [esp + 0x60], edi
ja 0x78aae7
mov edi, dword [esp + 0x84]
sub edi, dword [esp + 0x7c]
cmp dword [esp + 0x4c], edi
ja 0x78aae7
mov ebx, dword [esp + 0x5c]
mov edi, dword [esp + 0x50]
add edi, ebx
add edi, dword [esp + 0x20]
mov ebx, ecx
mov dword [esp + 0x2c], edi
sar ebx, 5
and ebx, 0x3f
mov edi, ecx
sar edi, 0xb
mov di, word [esi + edi*4]
shl di, 6
add di, word [esi + ebx*4]
mov ebx, ecx
shl di, 5
and ebx, 0x1f
add di, word [esi + ebx*4]
movzx ebx, di
mov edi, dword [esp + 0x2c]
movzx edi, word [edi]
and ebx, 0xf7def7df
or edi, 0x8210820
sub edi, ebx
mov dword [esp + 0x44], edi
and edi, 0x8210820
mov ebx, edi
shr ebx, 5
sub edi, ebx
and edi, dword [esp + 0x44]
mov ebx, dword [esp + 0x2c]
mov word [ebx], di
test eax, eax
mov dword [esp + 0x2c], 0
jge 0x78ab2f
sub dword [esp + 0x4c], 1
mov edi, 1
add dword [esp + 0x58], edi
add ebp, edi
mov dword [esp + 0x2c], edi
mov edi, dword [esp + 0x1c]
add dword [esp + 0x54], edi
mov edi, dword [esp + 0x3c]
add dword [esp + 0x50], edi
lea edi, [ebp*4]
add dword [esp + 0x14], edi
lea eax, [eax + edi + 2]
jmp 0x78ac0a
mov edi, dword [esp + 0x28]
add edi, dword [esp + 0x98]
cmp dword [esp + 0x14], 0
mov ebx, dword [esp + 0x30]
mov dword [esp + 0x28], edi
jl 0x78ab96
cmp edi, ebx
jl 0x78ab80
sub edi, ebx
mov dword [esp + 0x28], edi
mov edi, 1
add dword [esp + 0x64], edi
sub dword [esp + 0x60], edi
mov ebx, 2
add dword [esp + 0x68], ebx
sub dword [esp + 0x5c], ebx
sub edx, edi
sub dword [esp + 0x74], 4
mov dword [esp + 0x2c], edi
mov edi, dword [esp + 0x74]
mov ebx, 2
sub ebx, edi
sub eax, edi
add dword [esp + 0x14], ebx
jmp 0x78ac0a
cmp edi, ebx
mov dword [esp + 0x2c], 1
jl 0x78abd2
sub edi, ebx
mov ebx, 1
add dword [esp + 0x64], ebx
sub dword [esp + 0x60], ebx
mov dword [esp + 0x28], edi
mov edi, 2
add dword [esp + 0x68], edi
sub dword [esp + 0x5c], edi
sub edx, ebx
sub dword [esp + 0x74], 4
jmp 0x78abd7
mov ebx, 1
mov edi, dword [esp + 0x1c]
add dword [esp + 0x54], edi
mov edi, dword [esp + 0x3c]
add dword [esp + 0x50], edi
add dword [esp + 0x58], ebx
sub dword [esp + 0x4c], 1
add ebp, ebx
mov ebx, dword [esp + 0x14]
mov edi, ebp
sub edi, edx
add edi, edi
add edi, edi
lea eax, [eax + edi + 2]
lea edi, [ebx + edi + 2]
mov dword [esp + 0x14], edi
test edx, edx
jg 0x78a8a0
mov eax, dword [esp + 0x90]
lea edi, [edx + eax]
sub edi, dword [esp + 0x78]
mov eax, dword [esp + 0x94]
sub eax, ebp
cmp edi, dword [esp + 0x34]
mov edi, dword [esp + 0x7c]
mov dword [esp + 0x50], eax
ja 0x78acc0
mov ebx, dword [esp + 0x84]
sub ebx, edi
sub eax, edi
cmp eax, ebx
ja 0x78acc0
mov eax, dword [esp + 0x50]
imul eax, dword [esp + 0x1c]
add eax, dword [esp + 0x20]
mov edi, dword [esp + 0x90]
add edi, edx
lea eax, [eax + edi*2]
mov edi, ecx
sar edi, 0xb
mov di, word [esi + edi*4]
shl di, 6
mov ebx, ecx
sar ebx, 5
and ebx, 0x3f
add di, word [esi + ebx*4]
mov ebx, ecx
shl di, 5
and ebx, 0x1f
add di, word [esi + ebx*4]
mov dword [esp + 0x2c], eax
movzx ebx, di
movzx edi, word [eax]
and ebx, 0xf7def7df
or edi, 0x8210820
sub edi, ebx
mov eax, edi
and eax, 0x8210820
mov ebx, eax
shr ebx, 5
sub eax, ebx
and eax, edi
mov edi, dword [esp + 0x2c]
mov word [edi], ax
mov edi, dword [esp + 0x7c]
mov eax, dword [esp + 0x90]
sub eax, edx
mov edx, dword [esp + 0x94]
add ebp, edx
mov edx, eax
sub edx, dword [esp + 0x78]
cmp edx, dword [esp + 0x34]
ja case.0x789050.5
mov edx, dword [esp + 0x84]
mov ebx, ebp
sub ebx, edi
sub edx, edi
cmp ebx, edx
ja case.0x789050.5
imul ebp, dword [esp + 0x1c]
add ebp, dword [esp + 0x20]
mov edi, ecx
lea edx, [ebp + eax*2]
mov eax, ecx
sar eax, 0xb
mov ax, word [esi + eax*4]
shl ax, 6
sar edi, 5
and edi, 0x3f
add ax, word [esi + edi*4]
and ecx, 0x1f
shl ax, 5
add ax, word [esi + ecx*4]
movzx ecx, word [edx]
movzx eax, ax
and eax, 0xf7def7df
or ecx, 0x8210820
sub ecx, eax
mov eax, ecx
and eax, 0x8210820
mov esi, eax
shr esi, 5
pop edi
sub eax, esi
pop esi
and eax, ecx
pop ebp
mov word [edx], ax
pop ebx
add esp, 0x78
ret
mov edi, dword [esp + 0x90]
mov esi, dword [esp + 0x98]
mov ebx, dword [esp + 0x80]
sub ebx, dword [esp + 0x78]
sub edi, esi
mov dword [esp + 0x24], edi
sub edi, dword [esp + 0x78]
mov dword [esp + 0x34], ebx
cmp edi, ebx
ja 0x78ae1f
mov esi, dword [esp + 0x7c]
mov edi, dword [esp + 0x84]
mov ebx, dword [esp + 0x94]
sub edi, esi
sub ebx, esi
cmp ebx, edi
ja 0x78ae18
mov esi, dword [esp + 0x1c]
imul esi, dword [esp + 0x94]
add esi, dword [esp + 0x20]
mov edi, dword [esp + 0x24]
lea esi, [esi + edi*2]
mov dword [esp + 0x2c], esi
movzx esi, word [esi]
mov edi, esi
mov dword [esp + 0x44], esi
and edi, 0xf800
and esi, 0x7e0
mov ebx, ecx
and ebx, 0xf800
imul edi, ebx
mov ebx, ecx
and ebx, 0x7e0
imul esi, ebx
shr esi, 0xb
and esi, 0x7e0
shr edi, 0x10
and edi, 0xf800
or edi, esi
mov esi, dword [esp + 0x44]
and esi, 0x1f
mov ebx, ecx
and ebx, 0x1f
imul esi, ebx
shr esi, 5
or edi, esi
mov esi, dword [esp + 0x2c]
mov word [esi], di
mov esi, dword [esp + 0x98]
mov edi, dword [esp + 0x90]
add edi, esi
mov dword [esp + 0x24], edi
sub edi, dword [esp + 0x78]
cmp edi, dword [esp + 0x34]
ja 0x78aed4
mov esi, dword [esp + 0x7c]
mov edi, dword [esp + 0x84]
mov ebx, dword [esp + 0x94]
sub edi, esi
sub ebx, esi
cmp ebx, edi
ja 0x78aecd
mov esi, dword [esp + 0x1c]
imul esi, dword [esp + 0x94]
add esi, dword [esp + 0x20]
mov edi, dword [esp + 0x24]
lea esi, [esi + edi*2]
mov dword [esp + 0x2c], esi
movzx esi, word [esi]
mov edi, esi
mov dword [esp + 0x44], esi
and edi, 0xf800
and esi, 0x7e0
mov ebx, ecx
and ebx, 0xf800
imul edi, ebx
mov ebx, ecx
and ebx, 0x7e0
imul esi, ebx
shr esi, 0xb
and esi, 0x7e0
shr edi, 0x10
and edi, 0xf800
or edi, esi
mov esi, dword [esp + 0x44]
and esi, 0x1f
mov ebx, ecx
and ebx, 0x1f
imul esi, ebx
shr esi, 5
or edi, esi
mov esi, dword [esp + 0x2c]
mov word [esi], di
mov esi, dword [esp + 0x98]
xor edi, edi
test eax, eax
jge 0x78aef0
add eax, 6
add dword [esp + 0x14], 4
mov edi, 1
jmp 0x78af6a
cmp dword [esp + 0x14], 0
mov ebx, dword [esp + 0x30]
mov dword [esp + 0x28], esi
jl 0x78af34
cmp esi, ebx
jl 0x78af1b
mov edx, esi
sub edx, ebx
mov dword [esp + 0x28], edx
lea edx, [esi - 1]
mov edi, 1
lea esi, [edx*4]
mov ebx, 2
sub ebx, esi
sub eax, esi
add dword [esp + 0x14], ebx
jmp 0x78af6c
cmp esi, ebx
mov edi, 1
jl 0x78af4c
mov edx, esi
sub edx, ebx
mov dword [esp + 0x28], edx
lea edx, [esi - 1]
lea ebx, [edx*4]
mov esi, 4
sub esi, ebx
mov ebx, dword [esp + 0x14]
lea eax, [eax + esi + 2]
lea esi, [ebx + esi + 2]
mov dword [esp + 0x14], esi
mov ebp, edi
test edx, edx
jle 0x78b363
lea esi, [edx*4]
mov dword [esp + 0x74], esi
mov esi, dword [esp + 0x90]
add esi, edx
add esi, esi
mov dword [esp + 0x5c], esi
mov ebx, dword [esp + 0x7c]
mov esi, edx
sub esi, dword [esp + 0x78]
add esi, dword [esp + 0x90]
mov dword [esp + 0x60], esi
mov esi, dword [esp + 0x94]
add esi, ebp
imul esi, dword [esp + 0x1c]
mov dword [esp + 0x54], esi
mov esi, ebp
sub esi, ebx
add esi, dword [esp + 0x94]
mov dword [esp + 0x58], esi
mov esi, dword [esp + 0x1c]
neg esi
mov dword [esp + 0x3c], esi
mov esi, dword [esp + 0x94]
sub esi, ebx
sub esi, ebp
mov dword [esp + 0x4c], esi
mov esi, dword [esp + 0x90]
sub esi, dword [esp + 0x78]
sub esi, edx
mov dword [esp + 0x64], esi
mov esi, dword [esp + 0x94]
sub esi, ebp
imul esi, dword [esp + 0x1c]
mov dword [esp + 0x50], esi
mov esi, dword [esp + 0x90]
sub esi, edx
add esi, esi
mov dword [esp + 0x68], esi
jmp 0x78b018
mov esi, dword [esp + 0x68]
test edi, edi
je 0x78b25c
mov edi, dword [esp + 0x64]
cmp edi, dword [esp + 0x34]
ja 0x78b0af
mov edi, dword [esp + 0x84]
sub edi, dword [esp + 0x7c]
cmp dword [esp + 0x58], edi
ja 0x78b0af
mov edi, dword [esp + 0x54]
add esi, edi
add esi, dword [esp + 0x20]
mov ebx, ecx
mov dword [esp + 0x2c], esi
movzx esi, word [esi]
mov edi, esi
mov dword [esp + 0x44], esi
and ebx, 0xf800
and edi, 0xf800
imul edi, ebx
and esi, 0x7e0
mov ebx, ecx
and ebx, 0x7e0
imul esi, ebx
shr esi, 0xb
and esi, 0x7e0
shr edi, 0x10
and edi, 0xf800
or edi, esi
mov esi, dword [esp + 0x44]
and esi, 0x1f
mov ebx, ecx
and ebx, 0x1f
imul esi, ebx
shr esi, 5
or edi, esi
mov esi, dword [esp + 0x2c]
mov word [esi], di
mov esi, dword [esp + 0x68]
mov edi, dword [esp + 0x34]
cmp dword [esp + 0x60], edi
ja 0x78b142
mov edi, dword [esp + 0x84]
sub edi, dword [esp + 0x7c]
cmp dword [esp + 0x58], edi
ja 0x78b142
mov edi, dword [esp + 0x5c]
mov esi, dword [esp + 0x54]
add esi, edi
add esi, dword [esp + 0x20]
mov ebx, ecx
mov dword [esp + 0x2c], esi
movzx esi, word [esi]
mov edi, esi
mov dword [esp + 0x44], esi
and ebx, 0xf800
and edi, 0xf800
imul edi, ebx
and esi, 0x7e0
mov ebx, ecx
and ebx, 0x7e0
imul esi, ebx
shr esi, 0xb
and esi, 0x7e0
shr edi, 0x10
and edi, 0xf800
or edi, esi
mov esi, dword [esp + 0x44]
and esi, 0x1f
mov ebx, ecx
and ebx, 0x1f
imul esi, ebx
shr esi, 5
or edi, esi
mov esi, dword [esp + 0x2c]
mov word [esi], di
mov esi, dword [esp + 0x68]
mov edi, dword [esp + 0x34]
cmp dword [esp + 0x64], edi
ja 0x78b1cd
mov edi, dword [esp + 0x84]
sub edi, dword [esp + 0x7c]
cmp dword [esp + 0x4c], edi
ja 0x78b1cd
mov edi, dword [esp + 0x50]
add esi, edi
add esi, dword [esp + 0x20]
mov ebx, ecx
mov dword [esp + 0x2c], esi
movzx esi, word [esi]
mov edi, esi
and ebx, 0xf800
mov dword [esp + 0x44], esi
and edi, 0xf800
imul edi, ebx
and esi, 0x7e0
mov ebx, ecx
and ebx, 0x7e0
imul esi, ebx
shr esi, 0xb
and esi, 0x7e0
shr edi, 0x10
and edi, 0xf800
or edi, esi
mov esi, dword [esp + 0x44]
and esi, 0x1f
mov ebx, ecx
and ebx, 0x1f
imul esi, ebx
shr esi, 5
or edi, esi
mov esi, dword [esp + 0x2c]
mov word [esi], di
mov esi, dword [esp + 0x34]
cmp dword [esp + 0x60], esi
ja 0x78b25c
mov esi, dword [esp + 0x84]
sub esi, dword [esp + 0x7c]
cmp dword [esp + 0x4c], esi
ja 0x78b25c
mov edi, dword [esp + 0x50]
mov esi, dword [esp + 0x5c]
add esi, edi
add esi, dword [esp + 0x20]
mov ebx, ecx
mov dword [esp + 0x2c], esi
movzx esi, word [esi]
mov edi, esi
and ebx, 0xf800
mov dword [esp + 0x44], esi
and edi, 0xf800
imul edi, ebx
and esi, 0x7e0
mov ebx, ecx
and ebx, 0x7e0
imul esi, ebx
shr esi, 0xb
and esi, 0x7e0
shr edi, 0x10
and edi, 0xf800
or edi, esi
mov esi, dword [esp + 0x44]
and esi, 0x1f
mov ebx, ecx
and ebx, 0x1f
imul esi, ebx
shr esi, 5
or edi, esi
mov esi, dword [esp + 0x2c]
mov word [esi], di
xor edi, edi
test eax, eax
jge 0x78b299
mov esi, dword [esp + 0x1c]
add dword [esp + 0x54], esi
mov esi, dword [esp + 0x3c]
add dword [esp + 0x50], esi
mov edi, 1
add dword [esp + 0x58], edi
sub dword [esp + 0x4c], edi
add ebp, edi
lea esi, [ebp*4]
add dword [esp + 0x14], esi
lea eax, [eax + esi + 2]
jmp 0x78b35b
mov esi, dword [esp + 0x98]
add dword [esp + 0x28], esi
cmp dword [esp + 0x14], 0
mov esi, dword [esp + 0x30]
jl 0x78b2f8
cmp dword [esp + 0x28], esi
jl 0x78b2e2
sub dword [esp + 0x28], esi
mov edi, 1
add dword [esp + 0x64], edi
sub dword [esp + 0x60], edi
mov esi, 2
add dword [esp + 0x68], esi
sub dword [esp + 0x5c], esi
sub edx, edi
sub dword [esp + 0x74], 4
mov esi, dword [esp + 0x74]
mov ebx, 2
sub ebx, esi
sub eax, esi
add dword [esp + 0x14], ebx
jmp 0x78b35b
cmp dword [esp + 0x28], esi
mov edi, 1
mov ebx, edi
jl 0x78b329
sub dword [esp + 0x28], esi
add dword [esp + 0x64], ebx
sub dword [esp + 0x60], ebx
mov esi, 2
add dword [esp + 0x68], esi
sub dword [esp + 0x5c], esi
sub edx, ebx
sub dword [esp + 0x74], 4
mov esi, dword [esp + 0x1c]
add dword [esp + 0x54], esi
mov esi, dword [esp + 0x3c]
add dword [esp + 0x50], esi
add dword [esp + 0x58], ebx
sub dword [esp + 0x4c], edi
add ebp, ebx
mov ebx, dword [esp + 0x14]
mov esi, ebp
sub esi, edx
add esi, esi
add esi, esi
lea eax, [eax + esi + 2]
lea esi, [ebx + esi + 2]
mov dword [esp + 0x14], esi
test edx, edx
jg 0x78b014
mov eax, dword [esp + 0x90]
lea esi, [edx + eax]
mov eax, dword [esp + 0x94]
mov edi, esi
sub edi, dword [esp + 0x78]
sub eax, ebp
cmp edi, dword [esp + 0x34]
ja 0x78b403
mov ebx, dword [esp + 0x84]
sub ebx, dword [esp + 0x7c]
mov edi, eax
sub edi, dword [esp + 0x7c]
cmp edi, ebx
ja 0x78b403
imul eax, dword [esp + 0x1c]
add eax, dword [esp + 0x20]
mov edi, ecx
lea eax, [eax + esi*2]
mov dword [esp + 0x2c], eax
movzx eax, word [eax]
and edi, 0xf800
mov esi, eax
and esi, 0xf800
imul esi, edi
mov edi, eax
and edi, 0x7e0
mov ebx, ecx
and ebx, 0x7e0
imul edi, ebx
shr edi, 0xb
shr esi, 0x10
and edi, 0x7e0
and esi, 0xf800
or esi, edi
and eax, 0x1f
mov edi, ecx
and edi, 0x1f
imul eax, edi
shr eax, 5
or esi, eax
mov eax, dword [esp + 0x2c]
mov word [eax], si
mov eax, dword [esp + 0x90]
mov esi, dword [esp + 0x84]
sub eax, edx
mov edx, dword [esp + 0x94]
add ebp, edx
mov edx, eax
sub edx, dword [esp + 0x78]
cmp edx, dword [esp + 0x34]
ja case.0x789050.5
mov edx, dword [esp + 0x7c]
mov edi, ebp
sub edi, edx
sub esi, edx
cmp edi, esi
ja case.0x789050.5
imul ebp, dword [esp + 0x1c]
add ebp, dword [esp + 0x20]
mov esi, ecx
lea ebp, [ebp + eax*2]
movzx eax, word [ebp]
and esi, 0xf800
mov edx, eax
and edx, 0xf800
imul edx, esi
mov esi, eax
and esi, 0x7e0
mov edi, ecx
and edi, 0x7e0
imul esi, edi
and eax, 0x1f
and ecx, 0x1f
imul eax, ecx
shr edx, 0x10
shr esi, 0xb
and esi, 0x7e0
and edx, 0xf800
or edx, esi
pop edi
shr eax, 5
or edx, eax
pop esi
mov word [ebp], dx
pop ebp
pop ebx
add esp, 0x78
ret
mov esi, dword [esp + 0x90]
sub esi, dword [esp + 0x98]
mov ebx, dword [esp + 0x78]
mov dword [esp + 0x24], esi
mov esi, dword [esp + 0x80]
sub esi, ebx
mov dword [esp + 0x34], esi
mov esi, dword [esp + 0x24]
sub esi, ebx
cmp esi, dword [esp + 0x34]
ja 0x78b5a1
mov eax, dword [esp + 0x7c]
mov esi, dword [esp + 0x84]
mov ebx, dword [esp + 0x94]
sub esi, eax
sub ebx, eax
cmp ebx, esi
ja 0x78b59d
mov eax, dword [esp + 0x1c]
imul eax, dword [esp + 0x94]
add eax, dword [esp + 0x20]
mov esi, dword [esp + 0x24]
lea eax, [eax + esi*2]
mov dword [esp + 0x2c], eax
movzx eax, word [eax]
movzx ebx, ax
mov esi, ebx
shr ebx, 0xb
mov dword [esp + 0x50], ebx
movzx ebx, ax
and ebx, 0x1f
mov dword [esp + 0x10], ebx
shr esi, 5
and esi, 0x3f
mov ebx, ecx
sar ebx, 5
and ebx, 0x3f
imul ebx, esi
sar ebx, 6
sub ebx, esi
mov esi, eax
shr esi, 5
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x50]
and esi, 0x3f
add si, word [edi + ebx*4]
mov ebx, ecx
sar ebx, 0xb
imul ebx, eax
sar ebx, 5
sub ebx, eax
mov ax, word [esp + 0x38]
shr ax, 0xb
add ax, word [edi + ebx*4]
shl si, 5
shl ax, 0xb
or si, ax
mov eax, dword [esp + 0x10]
mov ebx, ecx
and ebx, 0x1f
imul ebx, eax
sar ebx, 5
sub ebx, eax
mov eax, dword [esp + 0x38]
and eax, 0x1f
add ax, word [edi + ebx*4]
or si, ax
mov eax, dword [esp + 0x2c]
mov word [eax], si
mov eax, dword [esp + 0x18]
mov esi, dword [esp + 0x90]
mov ebx, dword [esp + 0x98]
add esi, ebx
mov dword [esp + 0x24], esi
sub esi, dword [esp + 0x78]
cmp esi, dword [esp + 0x34]
ja 0x78b68e
mov eax, dword [esp + 0x7c]
mov esi, dword [esp + 0x84]
mov ebx, dword [esp + 0x94]
sub esi, eax
sub ebx, eax
cmp ebx, esi
ja 0x78b68a
mov eax, dword [esp + 0x1c]
imul eax, dword [esp + 0x94]
add eax, dword [esp + 0x20]
mov esi, dword [esp + 0x24]
lea eax, [eax + esi*2]
mov dword [esp + 0x2c], eax
movzx eax, word [eax]
movzx ebx, ax
mov esi, ebx
shr ebx, 0xb
mov dword [esp + 0x50], ebx
movzx ebx, ax
and ebx, 0x1f
mov dword [esp + 0x10], ebx
shr esi, 5
and esi, 0x3f
mov ebx, ecx
sar ebx, 5
and ebx, 0x3f
imul ebx, esi
sar ebx, 6
sub ebx, esi
mov esi, eax
shr esi, 5
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x50]
and esi, 0x3f
add si, word [edi + ebx*4]
mov ebx, ecx
sar ebx, 0xb
imul ebx, eax
sar ebx, 5
sub ebx, eax
mov ax, word [esp + 0x38]
shr ax, 0xb
add ax, word [edi + ebx*4]
shl si, 5
shl ax, 0xb
or si, ax
mov eax, dword [esp + 0x10]
mov ebx, ecx
and ebx, 0x1f
imul ebx, eax
sar ebx, 5
sub ebx, eax
mov eax, dword [esp + 0x38]
and eax, 0x1f
add ax, word [edi + ebx*4]
or si, ax
mov eax, dword [esp + 0x2c]
mov word [eax], si
mov eax, dword [esp + 0x18]
test eax, eax
mov esi, dword [esp + 0x98]
mov ebx, dword [esp + 0x30]
mov dword [esp + 0x2c], 0
jge 0x78b6bf
mov ebp, 1
add eax, 6
add dword [esp + 0x14], 4
mov dword [esp + 0x2c], ebp
jmp 0x78b73c
cmp dword [esp + 0x14], 0
mov dword [esp + 0x28], esi
jl 0x78b702
cmp esi, ebx
jl 0x78b6e9
mov edx, esi
sub edx, ebx
mov dword [esp + 0x28], edx
lea edx, [esi - 1]
mov dword [esp + 0x2c], 1
lea esi, [edx*4]
mov ebx, 2
sub ebx, esi
sub eax, esi
add dword [esp + 0x14], ebx
jmp 0x78b73c
cmp esi, ebx
mov ebp, 1
mov dword [esp + 0x2c], ebp
jl 0x78b71e
mov edx, esi
sub edx, ebx
mov dword [esp + 0x28], edx
lea edx, [esi - 1]
lea ebx, [edx*4]
mov esi, 4
sub esi, ebx
mov ebx, dword [esp + 0x14]
lea eax, [eax + esi + 2]
lea esi, [ebx + esi + 2]
mov dword [esp + 0x14], esi
test edx, edx
mov dword [esp + 0x18], eax
jle 0x78bc39
lea esi, [edx*4]
mov dword [esp + 0x74], esi
mov esi, dword [esp + 0x90]
add esi, edx
add esi, esi
mov dword [esp + 0x5c], esi
mov ebx, dword [esp + 0x7c]
mov esi, edx
sub esi, dword [esp + 0x78]
add esi, dword [esp + 0x90]
mov dword [esp + 0x60], esi
mov esi, dword [esp + 0x94]
add esi, ebp
imul esi, dword [esp + 0x1c]
mov dword [esp + 0x54], esi
mov esi, ebp
sub esi, ebx
add esi, dword [esp + 0x94]
mov dword [esp + 0x58], esi
mov esi, dword [esp + 0x1c]
neg esi
mov dword [esp + 0x3c], esi
mov esi, dword [esp + 0x94]
sub esi, ebx
sub esi, ebp
mov dword [esp + 0x48], esi
mov esi, dword [esp + 0x90]
sub esi, dword [esp + 0x78]
sub esi, edx
mov dword [esp + 0x64], esi
mov esi, dword [esp + 0x94]
sub esi, ebp
imul esi, dword [esp + 0x1c]
mov dword [esp + 0x4c], esi
mov esi, dword [esp + 0x90]
sub esi, edx
add esi, esi
mov dword [esp + 0x68], esi
cmp dword [esp + 0x2c], 0
je 0x78bb0a
mov esi, dword [esp + 0x64]
cmp esi, dword [esp + 0x34]
ja 0x78b8b5
mov esi, dword [esp + 0x84]
sub esi, dword [esp + 0x7c]
cmp dword [esp + 0x58], esi
ja 0x78b8b5
mov esi, dword [esp + 0x54]
mov eax, dword [esp + 0x68]
add eax, esi
add eax, dword [esp + 0x20]
mov dword [esp + 0x2c], eax
movzx eax, word [eax]
movzx ebx, ax
mov esi, ebx
shr ebx, 0xb
mov dword [esp + 0x50], ebx
movzx ebx, ax
and ebx, 0x1f
mov dword [esp + 0x10], ebx
shr esi, 5
and esi, 0x3f
mov ebx, ecx
sar ebx, 5
and ebx, 0x3f
imul ebx, esi
sar ebx, 6
sub ebx, esi
mov esi, eax
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x50]
shr esi, 5
and esi, 0x3f
add si, word [edi + ebx*4]
mov ebx, ecx
sar ebx, 0xb
imul ebx, eax
sar ebx, 5
sub ebx, eax
mov ax, word [esp + 0x38]
shr ax, 0xb
add ax, word [edi + ebx*4]
shl si, 5
shl ax, 0xb
or si, ax
mov eax, dword [esp + 0x10]
mov ebx, ecx
and ebx, 0x1f
imul ebx, eax
sar ebx, 5
sub ebx, eax
mov eax, dword [esp + 0x38]
and eax, 0x1f
add ax, word [edi + ebx*4]
or si, ax
mov eax, dword [esp + 0x2c]
mov word [eax], si
mov eax, dword [esp + 0x18]
mov esi, dword [esp + 0x34]
cmp dword [esp + 0x60], esi
ja 0x78b97c
mov esi, dword [esp + 0x84]
sub esi, dword [esp + 0x7c]
cmp dword [esp + 0x58], esi
ja 0x78b97c
mov esi, dword [esp + 0x5c]
mov eax, dword [esp + 0x54]
add eax, esi
add eax, dword [esp + 0x20]
mov dword [esp + 0x2c], eax
movzx eax, word [eax]
movzx ebx, ax
mov esi, ebx
shr ebx, 0xb
mov dword [esp + 0x50], ebx
movzx ebx, ax
and ebx, 0x1f
mov dword [esp + 0x10], ebx
shr esi, 5
and esi, 0x3f
mov ebx, ecx
sar ebx, 5
and ebx, 0x3f
imul ebx, esi
sar ebx, 6
sub ebx, esi
mov esi, eax
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x50]
shr esi, 5
and esi, 0x3f
add si, word [edi + ebx*4]
mov ebx, ecx
sar ebx, 0xb
imul ebx, eax
sar ebx, 5
sub ebx, eax
mov ax, word [esp + 0x38]
shr ax, 0xb
add ax, word [edi + ebx*4]
shl si, 5
shl ax, 0xb
or si, ax
mov eax, dword [esp + 0x10]
mov ebx, ecx
and ebx, 0x1f
imul ebx, eax
sar ebx, 5
sub ebx, eax
mov eax, dword [esp + 0x38]
and eax, 0x1f
add ax, word [edi + ebx*4]
or si, ax
mov eax, dword [esp + 0x2c]
mov word [eax], si
mov eax, dword [esp + 0x18]
mov esi, dword [esp + 0x34]
cmp dword [esp + 0x64], esi
ja 0x78ba43
mov esi, dword [esp + 0x84]
sub esi, dword [esp + 0x7c]
cmp dword [esp + 0x48], esi
ja 0x78ba43
mov esi, dword [esp + 0x4c]
mov eax, dword [esp + 0x68]
add eax, esi
add eax, dword [esp + 0x20]
mov dword [esp + 0x2c], eax
movzx eax, word [eax]
movzx ebx, ax
mov esi, ebx
shr ebx, 0xb
mov dword [esp + 0x50], ebx
movzx ebx, ax
and ebx, 0x1f
mov dword [esp + 0x10], ebx
shr esi, 5
and esi, 0x3f
mov ebx, ecx
sar ebx, 5
and ebx, 0x3f
imul ebx, esi
sar ebx, 6
sub ebx, esi
mov esi, eax
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x50]
shr esi, 5
and esi, 0x3f
add si, word [edi + ebx*4]
mov ebx, ecx
sar ebx, 0xb
imul ebx, eax
sar ebx, 5
sub ebx, eax
mov ax, word [esp + 0x38]
shr ax, 0xb
add ax, word [edi + ebx*4]
shl si, 5
shl ax, 0xb
or si, ax
mov eax, dword [esp + 0x10]
mov ebx, ecx
and ebx, 0x1f
imul ebx, eax
sar ebx, 5
sub ebx, eax
mov eax, dword [esp + 0x38]
and eax, 0x1f
add ax, word [edi + ebx*4]
or si, ax
mov eax, dword [esp + 0x2c]
mov word [eax], si
mov eax, dword [esp + 0x18]
mov esi, dword [esp + 0x34]
cmp dword [esp + 0x60], esi
ja 0x78bb0a
mov esi, dword [esp + 0x84]
sub esi, dword [esp + 0x7c]
cmp dword [esp + 0x48], esi
ja 0x78bb0a
mov esi, dword [esp + 0x5c]
mov eax, dword [esp + 0x4c]
add eax, esi
add eax, dword [esp + 0x20]
mov dword [esp + 0x2c], eax
movzx eax, word [eax]
movzx ebx, ax
mov esi, ebx
shr ebx, 0xb
mov dword [esp + 0x50], ebx
movzx ebx, ax
and ebx, 0x1f
mov dword [esp + 0x10], ebx
shr esi, 5
and esi, 0x3f
mov ebx, ecx
sar ebx, 5
and ebx, 0x3f
imul ebx, esi
sar ebx, 6
sub ebx, esi
mov esi, eax
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x50]
shr esi, 5
and esi, 0x3f
add si, word [edi + ebx*4]
mov ebx, ecx
sar ebx, 0xb
imul ebx, eax
sar ebx, 5
sub ebx, eax
mov ax, word [esp + 0x38]
shr ax, 0xb
add ax, word [edi + ebx*4]
shl si, 5
shl ax, 0xb
or si, ax
mov eax, dword [esp + 0x10]
mov ebx, ecx
and ebx, 0x1f
imul ebx, eax
sar ebx, 5
sub ebx, eax
mov eax, dword [esp + 0x38]
and eax, 0x1f
add ax, word [edi + ebx*4]
or si, ax
mov eax, dword [esp + 0x2c]
mov word [eax], si
mov eax, dword [esp + 0x18]
test eax, eax
mov dword [esp + 0x2c], 0
jge 0x78bb52
sub dword [esp + 0x48], 1
mov esi, 1
add dword [esp + 0x58], esi
add ebp, esi
mov dword [esp + 0x2c], esi
mov esi, dword [esp + 0x1c]
add dword [esp + 0x54], esi
mov esi, dword [esp + 0x3c]
add dword [esp + 0x4c], esi
lea esi, [ebp*4]
add dword [esp + 0x14], esi
lea eax, [eax + esi + 2]
jmp 0x78bc2d
mov ebx, dword [esp + 0x28]
add ebx, dword [esp + 0x98]
cmp dword [esp + 0x14], 0
mov esi, dword [esp + 0x30]
mov dword [esp + 0x28], ebx
jl 0x78bbb9
cmp ebx, esi
jl 0x78bba3
sub ebx, esi
mov esi, 1
add dword [esp + 0x64], esi
sub dword [esp + 0x60], esi
mov dword [esp + 0x28], ebx
mov ebx, 2
add dword [esp + 0x68], ebx
sub dword [esp + 0x5c], ebx
sub edx, esi
sub dword [esp + 0x74], 4
mov dword [esp + 0x2c], esi
mov esi, dword [esp + 0x74]
mov ebx, 2
sub ebx, esi
sub eax, esi
add dword [esp + 0x14], ebx
jmp 0x78bc2d
cmp ebx, esi
mov dword [esp + 0x2c], 1
jl 0x78bbf5
sub ebx, esi
mov dword [esp + 0x28], ebx
mov ebx, 1
add dword [esp + 0x64], ebx
sub dword [esp + 0x60], ebx
mov esi, 2
add dword [esp + 0x68], esi
sub dword [esp + 0x5c], esi
sub edx, ebx
sub dword [esp + 0x74], 4
jmp 0x78bbfa
mov ebx, 1
mov esi, dword [esp + 0x1c]
add dword [esp + 0x54], esi
mov esi, dword [esp + 0x3c]
add dword [esp + 0x4c], esi
add dword [esp + 0x58], ebx
sub dword [esp + 0x48], 1
add ebp, ebx
mov ebx, dword [esp + 0x14]
mov esi, ebp
sub esi, edx
add esi, esi
add esi, esi
lea eax, [eax + esi + 2]
lea esi, [ebx + esi + 2]
mov dword [esp + 0x14], esi
test edx, edx
mov dword [esp + 0x18], eax
jg 0x78b7e3
mov eax, dword [esp + 0x90]
lea esi, [edx + eax]
sub esi, dword [esp + 0x78]
mov eax, dword [esp + 0x94]
sub eax, ebp
cmp esi, dword [esp + 0x34]
mov esi, dword [esp + 0x7c]
mov dword [esp + 0x50], eax
ja 0x78bd22
mov ebx, dword [esp + 0x84]
sub ebx, esi
sub eax, esi
cmp eax, ebx
ja 0x78bd22
mov eax, dword [esp + 0x50]
imul eax, dword [esp + 0x1c]
add eax, dword [esp + 0x20]
mov esi, dword [esp + 0x90]
add esi, edx
lea eax, [eax + esi*2]
movzx esi, word [eax]
mov dword [esp + 0x2c], eax
movzx ebx, si
mov eax, ebx
shr ebx, 0xb
mov dword [esp + 0x50], ebx
movzx ebx, si
and ebx, 0x1f
mov dword [esp + 0x10], ebx
shr eax, 5
and eax, 0x3f
mov ebx, ecx
sar ebx, 5
and ebx, 0x3f
imul ebx, eax
sar ebx, 6
sub ebx, eax
mov eax, dword [esp + 0x50]
mov dword [esp + 0x38], esi
shr esi, 5
and esi, 0x3f
add si, word [edi + ebx*4]
mov ebx, ecx
sar ebx, 0xb
imul ebx, eax
sar ebx, 5
sub ebx, eax
mov ax, word [esp + 0x38]
shr ax, 0xb
add ax, word [edi + ebx*4]
shl si, 5
shl ax, 0xb
or si, ax
mov eax, dword [esp + 0x10]
mov ebx, ecx
and ebx, 0x1f
imul ebx, eax
sar ebx, 5
sub ebx, eax
mov eax, dword [esp + 0x38]
and eax, 0x1f
add ax, word [edi + ebx*4]
or si, ax
mov eax, dword [esp + 0x2c]
mov word [eax], si
mov esi, dword [esp + 0x7c]
mov eax, dword [esp + 0x90]
sub eax, edx
mov edx, dword [esp + 0x94]
add ebp, edx
mov edx, eax
sub edx, dword [esp + 0x78]
cmp edx, dword [esp + 0x34]
ja case.0x789050.5
mov edx, dword [esp + 0x84]
mov ebx, ebp
sub ebx, esi
sub edx, esi
cmp ebx, edx
ja case.0x789050.5
imul ebp, dword [esp + 0x1c]
add ebp, dword [esp + 0x20]
lea ebp, [ebp + eax*2]
movzx eax, word [ebp]
mov dword [esp + 0x2c], ebp
movzx esi, ax
mov ebp, ecx
sar ebp, 5
and ebp, 0x3f
mov edx, esi
shr edx, 5
and edx, 0x3f
imul ebp, edx
sar ebp, 6
sub ebp, edx
mov edx, eax
shr edx, 5
and edx, 0x3f
add dx, word [edi + ebp*4]
mov ebp, ecx
mov ebx, esi
shr ebx, 0xb
sar ebp, 0xb
imul ebp, ebx
and esi, 0x1f
and ecx, 0x1f
imul ecx, esi
sar ebp, 5
sub ebp, ebx
mov bx, ax
shr bx, 0xb
add bx, word [edi + ebp*4]
sar ecx, 5
sub ecx, esi
and eax, 0x1f
add ax, word [edi + ecx*4]
shl bx, 0xb
shl dx, 5
pop edi
or dx, bx
pop esi
or dx, ax
mov eax, dword [esp + 0x24]
pop ebp
mov word [eax], dx
pop ebx
add esp, 0x78
ret
mov esi, dword [esp + 0x90]
sub esi, dword [esp + 0x98]
mov ebx, dword [esp + 0x78]
mov dword [esp + 0x24], esi
mov esi, dword [esp + 0x80]
sub esi, ebx
mov dword [esp + 0x34], esi
mov esi, dword [esp + 0x24]
sub esi, ebx
cmp esi, dword [esp + 0x34]
ja 0x78bede
mov eax, dword [esp + 0x7c]
mov esi, dword [esp + 0x84]
mov ebx, dword [esp + 0x94]
sub esi, eax
sub ebx, eax
cmp ebx, esi
ja 0x78beda
mov eax, dword [esp + 0x1c]
imul eax, dword [esp + 0x94]
add eax, dword [esp + 0x20]
mov esi, dword [esp + 0x24]
lea esi, [eax + esi*2]
mov dword [esp + 0x2c], esi
movzx esi, word [esi]
mov dword [esp + 0x38], esi
movzx esi, si
mov dword [esp + 0x44], esi
mov eax, ecx
not eax
movzx eax, ax
mov ebx, eax
shr esi, 5
shr ebx, 5
and esi, 0x3f
and ebx, 0x3f
sub ebx, esi
mov esi, dword [esp + 0x38]
shr esi, 5
and esi, 0x3f
add si, word [edi + ebx*4]
mov ebx, dword [esp + 0x44]
mov dword [esp + 0x58], eax
shr eax, 0xb
shr ebx, 0xb
sub eax, ebx
movzx ebx, word [esp + 0x38]
shr bx, 0xb
add bx, word [edi + eax*4]
mov eax, dword [esp + 0x44]
shl si, 5
shl bx, 0xb
or si, bx
mov word [esp + 0x10], si
mov esi, dword [esp + 0x58]
movzx ebx, word [esp + 0x10]
and eax, 0x1f
and esi, 0x1f
sub esi, eax
mov eax, dword [esp + 0x38]
and eax, 0x1f
add ax, word [edi + esi*4]
or bx, ax
mov eax, dword [esp + 0x2c]
mov word [eax], bx
mov eax, dword [esp + 0x18]
mov esi, dword [esp + 0x90]
mov ebx, dword [esp + 0x98]
add esi, ebx
mov dword [esp + 0x24], esi
sub esi, dword [esp + 0x78]
cmp esi, dword [esp + 0x34]
ja 0x78bfc7
mov eax, dword [esp + 0x7c]
mov esi, dword [esp + 0x84]
mov ebx, dword [esp + 0x94]
sub esi, eax
sub ebx, eax
cmp ebx, esi
ja 0x78bfc3
mov eax, dword [esp + 0x1c]
imul eax, dword [esp + 0x94]
add eax, dword [esp + 0x20]
mov esi, dword [esp + 0x24]
lea esi, [eax + esi*2]
mov dword [esp + 0x2c], esi
movzx esi, word [esi]
mov dword [esp + 0x38], esi
movzx esi, si
mov dword [esp + 0x44], esi
mov eax, ecx
not eax
movzx eax, ax
mov ebx, eax
shr esi, 5
shr ebx, 5
and esi, 0x3f
and ebx, 0x3f
sub ebx, esi
mov esi, dword [esp + 0x38]
shr esi, 5
and esi, 0x3f
add si, word [edi + ebx*4]
mov ebx, dword [esp + 0x44]
mov dword [esp + 0x58], eax
shr eax, 0xb
shr ebx, 0xb
sub eax, ebx
movzx ebx, word [esp + 0x38]
shr bx, 0xb
add bx, word [edi + eax*4]
mov eax, dword [esp + 0x44]
shl si, 5
shl bx, 0xb
or si, bx
mov word [esp + 0x10], si
mov esi, dword [esp + 0x58]
movzx ebx, word [esp + 0x10]
and eax, 0x1f
and esi, 0x1f
sub esi, eax
mov eax, dword [esp + 0x38]
and eax, 0x1f
add ax, word [edi + esi*4]
or bx, ax
mov eax, dword [esp + 0x2c]
mov word [eax], bx
mov eax, dword [esp + 0x18]
test eax, eax
mov esi, dword [esp + 0x98]
mov ebx, dword [esp + 0x30]
mov dword [esp + 0x2c], 0
jge 0x78bff8
mov ebp, 1
add eax, 6
add dword [esp + 0x14], 4
mov dword [esp + 0x2c], ebp
jmp 0x78c075
cmp dword [esp + 0x14], 0
mov dword [esp + 0x28], esi
jl 0x78c03b
cmp esi, ebx
jl 0x78c022
mov edx, esi
sub edx, ebx
mov dword [esp + 0x28], edx
lea edx, [esi - 1]
mov dword [esp + 0x2c], 1
lea esi, [edx*4]
mov ebx, 2
sub ebx, esi
sub eax, esi
add dword [esp + 0x14], ebx
jmp 0x78c075
cmp esi, ebx
mov ebp, 1
mov dword [esp + 0x2c], ebp
jl 0x78c057
mov edx, esi
sub edx, ebx
mov dword [esp + 0x28], edx
lea edx, [esi - 1]
lea ebx, [edx*4]
mov esi, 4
sub esi, ebx
mov ebx, dword [esp + 0x14]
lea eax, [eax + esi + 2]
lea esi, [ebx + esi + 2]
mov dword [esp + 0x14], esi
test edx, edx
mov dword [esp + 0x18], eax
jle 0x78c566
lea esi, [edx*4]
mov dword [esp + 0x74], esi
mov esi, dword [esp + 0x90]
add esi, edx
add esi, esi
mov dword [esp + 0x5c], esi
mov ebx, dword [esp + 0x7c]
mov esi, edx
sub esi, dword [esp + 0x78]
add esi, dword [esp + 0x90]
mov dword [esp + 0x60], esi
mov esi, dword [esp + 0x94]
add esi, ebp
imul esi, dword [esp + 0x1c]
mov dword [esp + 0x50], esi
mov esi, ebp
sub esi, ebx
add esi, dword [esp + 0x94]
mov dword [esp + 0x54], esi
mov esi, dword [esp + 0x1c]
neg esi
mov dword [esp + 0x3c], esi
mov esi, dword [esp + 0x94]
sub esi, ebx
sub esi, ebp
mov dword [esp + 0x48], esi
mov esi, dword [esp + 0x90]
sub esi, dword [esp + 0x78]
sub esi, edx
mov dword [esp + 0x64], esi
mov esi, dword [esp + 0x94]
sub esi, ebp
imul esi, dword [esp + 0x1c]
mov dword [esp + 0x4c], esi
mov esi, dword [esp + 0x90]
sub esi, edx
add esi, esi
mov dword [esp + 0x68], esi
lea esp, [esp]
cmp dword [esp + 0x2c], 0
je 0x78c437
mov esi, dword [esp + 0x64]
cmp esi, dword [esp + 0x34]
ja 0x78c1ee
mov esi, dword [esp + 0x84]
sub esi, dword [esp + 0x7c]
cmp dword [esp + 0x54], esi
ja 0x78c1ee
mov esi, dword [esp + 0x50]
mov eax, dword [esp + 0x68]
add eax, esi
add eax, dword [esp + 0x20]
mov esi, ecx
mov dword [esp + 0x2c], eax
movzx eax, word [eax]
mov dword [esp + 0x38], eax
movzx eax, ax
mov dword [esp + 0x44], eax
shr eax, 5
not esi
movzx esi, si
and eax, 0x3f
mov ebx, esi
shr ebx, 5
and ebx, 0x3f
sub ebx, eax
mov eax, dword [esp + 0x38]
shr eax, 5
and eax, 0x3f
add ax, word [edi + ebx*4]
mov ebx, dword [esp + 0x44]
shr ebx, 0xb
mov dword [esp + 0x58], esi
shr esi, 0xb
sub esi, ebx
movzx ebx, word [esp + 0x38]
shl ax, 5
shr bx, 0xb
add bx, word [edi + esi*4]
mov esi, dword [esp + 0x58]
shl bx, 0xb
or ax, bx
mov word [esp + 0x10], ax
mov eax, dword [esp + 0x44]
movzx ebx, word [esp + 0x10]
and eax, 0x1f
and esi, 0x1f
sub esi, eax
mov eax, dword [esp + 0x38]
and eax, 0x1f
add ax, word [edi + esi*4]
or bx, ax
mov eax, dword [esp + 0x2c]
mov word [eax], bx
mov eax, dword [esp + 0x18]
mov esi, dword [esp + 0x34]
cmp dword [esp + 0x60], esi
ja 0x78c2b1
mov esi, dword [esp + 0x84]
sub esi, dword [esp + 0x7c]
cmp dword [esp + 0x54], esi
ja 0x78c2b1
mov esi, dword [esp + 0x5c]
mov eax, dword [esp + 0x50]
add eax, esi
add eax, dword [esp + 0x20]
mov esi, ecx
mov dword [esp + 0x2c], eax
movzx eax, word [eax]
mov dword [esp + 0x38], eax
movzx eax, ax
mov dword [esp + 0x44], eax
shr eax, 5
not esi
movzx esi, si
and eax, 0x3f
mov ebx, esi
shr ebx, 5
and ebx, 0x3f
sub ebx, eax
mov eax, dword [esp + 0x38]
shr eax, 5
and eax, 0x3f
add ax, word [edi + ebx*4]
mov ebx, dword [esp + 0x44]
shr ebx, 0xb
mov dword [esp + 0x58], esi
shr esi, 0xb
sub esi, ebx
movzx ebx, word [esp + 0x38]
shl ax, 5
shr bx, 0xb
add bx, word [edi + esi*4]
mov esi, dword [esp + 0x58]
shl bx, 0xb
or ax, bx
mov word [esp + 0x10], ax
mov eax, dword [esp + 0x44]
movzx ebx, word [esp + 0x10]
and eax, 0x1f
and esi, 0x1f
sub esi, eax
mov eax, dword [esp + 0x38]
and eax, 0x1f
add ax, word [edi + esi*4]
or bx, ax
mov eax, dword [esp + 0x2c]
mov word [eax], bx
mov eax, dword [esp + 0x18]
mov esi, dword [esp + 0x34]
cmp dword [esp + 0x64], esi
ja 0x78c374
mov esi, dword [esp + 0x84]
sub esi, dword [esp + 0x7c]
cmp dword [esp + 0x48], esi
ja 0x78c374
mov esi, dword [esp + 0x4c]
mov eax, dword [esp + 0x68]
add eax, esi
add eax, dword [esp + 0x20]
mov esi, ecx
mov dword [esp + 0x2c], eax
movzx eax, word [eax]
mov dword [esp + 0x38], eax
movzx eax, ax
mov dword [esp + 0x44], eax
shr eax, 5
not esi
movzx esi, si
and eax, 0x3f
mov ebx, esi
shr ebx, 5
and ebx, 0x3f
sub ebx, eax
mov eax, dword [esp + 0x38]
shr eax, 5
and eax, 0x3f
add ax, word [edi + ebx*4]
mov ebx, dword [esp + 0x44]
shr ebx, 0xb
mov dword [esp + 0x58], esi
shr esi, 0xb
sub esi, ebx
movzx ebx, word [esp + 0x38]
shl ax, 5
shr bx, 0xb
add bx, word [edi + esi*4]
mov esi, dword [esp + 0x58]
shl bx, 0xb
or ax, bx
mov word [esp + 0x10], ax
mov eax, dword [esp + 0x44]
movzx ebx, word [esp + 0x10]
and eax, 0x1f
and esi, 0x1f
sub esi, eax
mov eax, dword [esp + 0x38]
and eax, 0x1f
add ax, word [edi + esi*4]
or bx, ax
mov eax, dword [esp + 0x2c]
mov word [eax], bx
mov eax, dword [esp + 0x18]
mov esi, dword [esp + 0x34]
cmp dword [esp + 0x60], esi
ja 0x78c437
mov esi, dword [esp + 0x84]
sub esi, dword [esp + 0x7c]
cmp dword [esp + 0x48], esi
ja 0x78c437
mov esi, dword [esp + 0x5c]
mov eax, dword [esp + 0x4c]
add eax, esi
add eax, dword [esp + 0x20]
mov esi, ecx
mov dword [esp + 0x2c], eax
movzx eax, word [eax]
mov dword [esp + 0x38], eax
movzx eax, ax
mov dword [esp + 0x44], eax
shr eax, 5
not esi
movzx esi, si
and eax, 0x3f
mov ebx, esi
shr ebx, 5
and ebx, 0x3f
sub ebx, eax
mov eax, dword [esp + 0x38]
shr eax, 5
and eax, 0x3f
add ax, word [edi + ebx*4]
mov ebx, dword [esp + 0x44]
shr ebx, 0xb
mov dword [esp + 0x58], esi
shr esi, 0xb
sub esi, ebx
movzx ebx, word [esp + 0x38]
shl ax, 5
shr bx, 0xb
add bx, word [edi + esi*4]
mov esi, dword [esp + 0x58]
shl bx, 0xb
or ax, bx
mov word [esp + 0x10], ax
mov eax, dword [esp + 0x44]
movzx ebx, word [esp + 0x10]
and eax, 0x1f
and esi, 0x1f
sub esi, eax
mov eax, dword [esp + 0x38]
and eax, 0x1f
add ax, word [edi + esi*4]
or bx, ax
mov eax, dword [esp + 0x2c]
mov word [eax], bx
mov eax, dword [esp + 0x18]
test eax, eax
mov dword [esp + 0x2c], 0
jge 0x78c47f
sub dword [esp + 0x48], 1
mov esi, 1
add dword [esp + 0x54], esi
add ebp, esi
mov dword [esp + 0x2c], esi
mov esi, dword [esp + 0x1c]
add dword [esp + 0x50], esi
mov esi, dword [esp + 0x3c]
add dword [esp + 0x4c], esi
lea esi, [ebp*4]
add dword [esp + 0x14], esi
lea eax, [eax + esi + 2]
jmp 0x78c55a
mov ebx, dword [esp + 0x28]
add ebx, dword [esp + 0x98]
cmp dword [esp + 0x14], 0
mov esi, dword [esp + 0x30]
mov dword [esp + 0x28], ebx
jl 0x78c4e6
cmp ebx, esi
jl 0x78c4d0
sub ebx, esi
mov esi, 1
add dword [esp + 0x64], esi
sub dword [esp + 0x60], esi
mov dword [esp + 0x28], ebx
mov ebx, 2
add dword [esp + 0x68], ebx
sub dword [esp + 0x5c], ebx
sub edx, esi
sub dword [esp + 0x74], 4
mov dword [esp + 0x2c], esi
mov esi, dword [esp + 0x74]
mov ebx, 2
sub ebx, esi
sub eax, esi
add dword [esp + 0x14], ebx
jmp 0x78c55a
cmp ebx, esi
mov dword [esp + 0x2c], 1
jl 0x78c522
sub ebx, esi
mov dword [esp + 0x28], ebx
mov ebx, 1
add dword [esp + 0x64], ebx
sub dword [esp + 0x60], ebx
mov esi, 2
add dword [esp + 0x68], esi
sub dword [esp + 0x5c], esi
sub edx, ebx
sub dword [esp + 0x74], 4
jmp 0x78c527
mov ebx, 1
mov esi, dword [esp + 0x1c]
add dword [esp + 0x50], esi
mov esi, dword [esp + 0x3c]
add dword [esp + 0x4c], esi
add dword [esp + 0x54], ebx
sub dword [esp + 0x48], 1
add ebp, ebx
mov ebx, dword [esp + 0x14]
mov esi, ebp
sub esi, edx
add esi, esi
add esi, esi
lea eax, [eax + esi + 2]
lea esi, [ebx + esi + 2]
mov dword [esp + 0x14], esi
test edx, edx
mov dword [esp + 0x18], eax
jg 0x78c120
mov eax, dword [esp + 0x90]
lea esi, [edx + eax]
sub esi, dword [esp + 0x78]
mov eax, dword [esp + 0x94]
sub eax, ebp
cmp esi, dword [esp + 0x34]
mov esi, dword [esp + 0x7c]
mov dword [esp + 0x50], eax
ja 0x78c64d
mov ebx, dword [esp + 0x84]
sub eax, esi
sub ebx, esi
cmp eax, ebx
ja 0x78c64d
mov eax, dword [esp + 0x50]
imul eax, dword [esp + 0x1c]
add eax, dword [esp + 0x20]
mov esi, dword [esp + 0x90]
add esi, edx
lea eax, [eax + esi*2]
mov dword [esp + 0x2c], eax
movzx eax, word [eax]
mov dword [esp + 0x38], eax
movzx eax, ax
mov dword [esp + 0x44], eax
shr eax, 5
and eax, 0x3f
mov esi, ecx
not esi
movzx esi, si
mov ebx, esi
shr ebx, 5
and ebx, 0x3f
sub ebx, eax
mov eax, dword [esp + 0x38]
shr eax, 5
and eax, 0x3f
add ax, word [edi + ebx*4]
mov ebx, dword [esp + 0x44]
mov dword [esp + 0x58], esi
shr ebx, 0xb
shr esi, 0xb
sub esi, ebx
movzx ebx, word [esp + 0x38]
shr bx, 0xb
add bx, word [edi + esi*4]
mov esi, dword [esp + 0x58]
shl ax, 5
shl bx, 0xb
or ax, bx
mov word [esp + 0x10], ax
mov eax, dword [esp + 0x44]
movzx ebx, word [esp + 0x10]
and eax, 0x1f
and esi, 0x1f
sub esi, eax
mov eax, dword [esp + 0x38]
and eax, 0x1f
add ax, word [edi + esi*4]
mov esi, dword [esp + 0x7c]
or bx, ax
mov eax, dword [esp + 0x2c]
mov word [eax], bx
mov eax, dword [esp + 0x90]
sub eax, edx
mov edx, dword [esp + 0x94]
add ebp, edx
mov edx, eax
sub edx, dword [esp + 0x78]
cmp edx, dword [esp + 0x34]
ja case.0x789050.5
mov edx, dword [esp + 0x84]
mov ebx, ebp
sub ebx, esi
sub edx, esi
cmp ebx, edx
ja case.0x789050.5
imul ebp, dword [esp + 0x1c]
add ebp, dword [esp + 0x20]
lea ebp, [ebp + eax*2]
movzx eax, word [ebp]
mov dword [esp + 0x2c], ebp
movzx edx, ax
not ecx
movzx ecx, cx
mov esi, ecx
shr esi, 5
mov ebx, edx
shr ebx, 5
and ebx, 0x3f
and esi, 0x3f
sub esi, ebx
mov ebx, eax
shr ebx, 5
and ebx, 0x3f
add bx, word [edi + esi*4]
mov esi, ecx
mov ebp, edx
shr ebp, 0xb
shr esi, 0xb
sub esi, ebp
mov bp, ax
shr bp, 0xb
add bp, word [edi + esi*4]
and edx, 0x1f
and ecx, 0x1f
and eax, 0x1f
sub ecx, edx
add ax, word [edi + ecx*4]
shl bp, 0xb
shl bx, 5
or bx, bp
or bx, ax
mov eax, dword [esp + 0x2c]
mov word [eax], bx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x78
ret