Function at 0x685420
Capabilities:
Authenticate hmac
Encrypt data using speck

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
mov eax, 0x1200
call fcn.007ce210
mov edi, dword [ebp + 0x24]
mov ebx, dword [ebp + 0x20]
mov esi, dword [ebp + 0xc]
mov eax, dword [ebp + 8]
cmp eax, 0x32
je 0x685506
cmp eax, 0x33
je 0x686e61
cmp eax, 0x34
jne 0x68704a
mov dword [esp + 0x15c], 0
mov dword [esp + 0x158], 0
test edi, edi
sete cl
mov eax, edi
and eax, 1
xor eax, edi
cmp eax, 0xffffffff
setne dl
test esi, esi
mov eax, 0x66
je 0x6877b2
mov edi, dword [ebp + 0x2c]
test edi, edi
je 0x6877b2
and cl, dl
jne 0x6877b2
mov esi, dword [ebp + 0x28]
lea ecx, [esi + ebx]
cmp ecx, 0x3f8
ja 0x6877b2
xor eax, eax
test ecx, ecx
je 0x6877b2
lea eax, [esp + 0x160]
mov dword [esp], eax
mov dword [esp + 8], 0x400
mov dword [esp + 4], 0
call fcn.007c51a0
cmp esi, 0x3f8
jne 0x687250
mov eax, esi
and eax, 1
xor eax, esi
not eax
test eax, eax
je 0x687250
lea ebx, [esp + 0x164]
jmp 0x687290
lea eax, [esp + 0xb80]
mov dword [esp], eax
mov dword [esp + 8], 0x400
mov dword [esp + 4], 0
call fcn.007ce3c0
mov dword [esp + 0xb7c], 0
mov dword [esp + 0xb78], 0
cmp dword [ebp + 0x1c], 3
ja 0x6871ce
test esi, esi
je 0x68735d
test edi, edi
je 0x68736d
cmp dword [ebp + 0x10], 0
je 0x6871de
mov ebx, 0x2d5ac2c4
xor ebx, 0x336a30d7
add ebx, 0xe1cf0df7
lea eax, [esp + 0xb78]
mov dword [esp + 0x50], eax
mov byte [esp + 0x73], al
mov byte [esp + 0xc3], al
mov byte [esp + 0x87], al
mov byte [esp + 0x86], al
mov byte [esp + 0xaf], al
mov byte [esp + 0xef], al
mov byte [esp + 0x134], al
lea eax, [esp + 0xb88]
mov dword [esp + 0x5c], eax
lea eax, [esp + 0xb7c]
mov dword [esp + 0x4c], eax
mov dword [esp + 0x88], eax
mov dword [esp + 0x8c], eax
mov dword [esp + 0x100], eax
mov dword [esp + 0x98], eax
mov dword [esp + 0x54], eax
mov dword [esp + 0xc8], eax
mov dword [esp + 0x120], eax
mov dword [esp + 0x12c], eax
mov dword [esp + 0x124], eax
mov dword [esp + 0x128], eax
mov dword [esp + 0xf4], eax
mov dword [esp + 0x130], eax
mov dword [esp + 0x150], eax
mov dword [esp + 0x14c], eax
mov dword [esp + 0x154], eax
mov dword [esp + 0xa8], eax
mov dword [esp + 0xd4], eax
mov dword [esp + 0xd0], eax
mov dword [esp + 0xa4], eax
mov dword [esp + 0xf0], eax
mov dword [esp + 0xe0], eax
mov dword [esp + 0x148], eax
mov dword [esp + 0x144], eax
mov dword [esp + 0x74], eax
mov dword [esp + 0x6c], eax
mov dword [esp + 0xd8], eax
mov dword [esp + 0xdc], eax
mov dword [esp + 0x78], eax
mov dword [esp + 0xcc], eax
mov dword [esp + 0x140], eax
mov dword [esp + 0x13c], eax
mov dword [esp + 0xb0], eax
mov dword [esp + 0x94], eax
mov dword [esp + 0x68], eax
mov dword [esp + 0x7c], eax
mov dword [esp + 0x58], eax
mov dword [esp + 0x9c], eax
mov dword [esp + 0xe4], eax
mov dword [esp + 0x64], eax
mov dword [esp + 0xb8], eax
mov dword [esp + 0xbc], eax
mov dword [esp + 0x80], eax
mov dword [esp + 0xb4], eax
mov dword [esp + 0x10c], eax
mov dword [esp + 0xe8], eax
mov dword [esp + 0xc4], eax
mov dword [esp + 0x90], eax
mov dword [esp + 0x138], 0x66
mov dword [esp + 0xa0], eax
mov dword [esp + 0x60], eax
jmp 0x686dd0
mov al, 0x5c
movzx eax, al
mov ecx, 0xffffffff
cmp eax, 0x5c
mov edx, dword [ebp + 0x10]
je 0x685736
jmp 0x685757
mov ebx, edi
sub ebx, esi
mov dword [edx], ebx
add ecx, 1
jb 0x685730
mov dword [esp + 0x90], ebx
jmp 0x6857a0
mov eax, 0xc
mov dword [edx], ebx
add ecx, 1
jb 0x685750
mov dword [esp + 0x138], 0x66
mov dword [esp + 0x90], ebx
mov edi, dword [esp + 0xb8]
mov ebx, dword [esp + 0x12c]
mov ecx, dword [esp + 0x128]
mov edx, dword [esp + 0x124]
mov esi, dword [esp + 0x130]
jmp 0x685c57
mov eax, dword [esp + 0x90]
test eax, eax
je 0x685878
mov al, 0x50
movzx eax, al
cmp eax, 0x13
je 0x68588d
cmp eax, 0x50
je 0x685947
cmp eax, 0x66
jne 0x6859f5
mov eax, dword [esp + 0xa0]
mov eax, dword [eax]
mov ecx, dword [ebp + 0x20]
mov dword [esp + 8], ecx
mov ecx, dword [ebp + 0x1c]
mov dword [esp + 4], ecx
mov dword [esp], eax
call fcn.00688230
mov edx, eax
mov dword [esp + 0xbc], edx
mov eax, dword [ebp + 0x10]
mov eax, dword [eax]
mov dword [esp + 0x80], eax
lea ecx, [eax + edx]
mov dword [esp + 0xb4], ecx
lea ecx, [eax + edx - 1]
mov eax, edx
shr eax, 3
mov esi, 0x20408103
mul esi
shr edx, 4
inc edx
mov dword [esp + 0x10c], edx
shr ecx, 3
mov eax, ecx
mul esi
shr edx, 4
inc edx
mov dword [esp + 0xe8], edx
mov eax, dword [ebp + 0xc]
mov eax, dword [eax + 0x138]
mov dword [esp + 0xc4], eax
mov dword [esp + 0x138], 0
test eax, eax
mov dword [esp + 0xfc], 0
mov dword [esp + 0xf8], 0
jne 0x685aae
jmp 0x686ae0
mov eax, 1
mov dword [esp + 0x138], 0
jmp 0x685af0
mov ebx, 7
mov eax, dword [esp + 0xa0]
mov eax, dword [eax]
mov ecx, dword [ebp + 0x20]
mov dword [esp + 8], ecx
mov ecx, dword [ebp + 0x1c]
mov dword [esp + 4], ecx
mov dword [esp], eax
call fcn.00688230
mov edx, eax
mov dword [esp + 0xbc], edx
mov eax, dword [ebp + 0x10]
mov eax, dword [eax]
mov dword [esp + 0x80], eax
lea ecx, [eax + edx]
mov dword [esp + 0xb4], ecx
lea ecx, [eax + edx - 1]
mov eax, edx
shr eax, 3
mov esi, 0x20408103
mul esi
shr edx, 4
inc edx
mov dword [esp + 0x10c], edx
shr ecx, 3
mov eax, ecx
mul esi
mov esi, 6
shr edx, 4
inc edx
mov dword [esp + 0xe8], edx
mov eax, dword [ebp + 0xc]
mov eax, dword [eax + 0x138]
mov dword [esp + 0xc4], eax
mov dword [esp + 0x138], 0
test eax, eax
mov dword [esp + 0xfc], 0
mov dword [esp + 0xf8], 0
mov edi, dword [esp + 0x11c]
jne 0x686dd0
jmp 0x686d75
mov ebx, 0x15
mov eax, dword [esp + 0xa0]
mov eax, dword [eax]
mov ecx, dword [ebp + 0x20]
mov dword [esp + 8], ecx
mov ecx, dword [ebp + 0x1c]
mov dword [esp + 4], ecx
mov dword [esp], eax
call fcn.00688230
mov edx, eax
mov dword [esp + 0xbc], edx
mov eax, dword [ebp + 0x10]
mov eax, dword [eax]
mov dword [esp + 0x80], eax
lea ecx, [eax + edx]
mov dword [esp + 0xb4], ecx
lea ecx, [eax + edx - 1]
mov eax, edx
shr eax, 3
mov esi, 0x20408103
mul esi
shr edx, 4
inc edx
mov dword [esp + 0x10c], edx
shr ecx, 3
mov eax, ecx
mul esi
shr edx, 4
inc edx
mov dword [esp + 0xe8], edx
mov eax, dword [ebp + 0xc]
mov eax, dword [eax + 0x138]
mov dword [esp + 0xc4], eax
mov dword [esp + 0x138], 0
test eax, eax
mov dword [esp + 0xfc], 0
mov dword [esp + 0xf8], 0
jne 0x685aae
jmp 0x68622b
mov ebx, 0xb
mov eax, dword [esp + 0xa0]
mov eax, dword [eax]
mov ecx, dword [ebp + 0x20]
mov dword [esp + 8], ecx
mov ecx, dword [ebp + 0x1c]
mov dword [esp + 4], ecx
mov dword [esp], eax
call fcn.00688230
mov edi, eax
mov dword [esp + 0xbc], edi
mov eax, dword [ebp + 0x10]
mov eax, dword [eax]
mov dword [esp + 0x80], eax
lea ecx, [eax + edi - 1]
mov eax, edi
shr eax, 3
mov esi, 0x20408103
mul esi
shr edx, 4
inc edx
mov dword [esp + 0x10c], edx
shr ecx, 3
mov eax, ecx
mul esi
shr edx, 4
inc edx
mov dword [esp + 0xe8], edx
mov eax, dword [ebp + 0xc]
mov eax, dword [eax + 0x138]
mov dword [esp + 0xc4], eax
mov dword [esp + 0x138], 0
test eax, eax
mov ecx, dword [esp + 0x11c]
mov eax, dword [esp + 0x80]
lea eax, [eax + edi]
mov edi, ecx
mov dword [esp + 0xb4], eax
mov dword [esp + 0xfc], 0
mov dword [esp + 0xf8], 0
je 0x686bb4
mov ebx, 4
mov byte [esp + 0xaf], 0x15
mov eax, dword [ebp + 0xc]
mov eax, dword [eax + 0x13c]
mov dword [esp + 0xf0], eax
mov dword [esp + 0xfc], 0
mov dword [esp + 0xf8], 0
xor edi, edi
jmp 0x68668b
cmp eax, 1
je 0x687569
mov byte [esp + 0xc3], 0x62
mov eax, dword [esp + 0xcc]
lea ecx, [eax + 1]
mov dword [esp + 0xc8], 0
cmp ecx, dword [esp + 0xc4]
jb 0x685e89
movzx eax, byte [esp + 0xef]
cmp eax, 2
je 0x685b76
cmp eax, 4
mov edx, dword [esp + 0xc8]
jne 0x685bb7
mov ecx, 0xe
mov byte [esp + 0xef], 2
mov eax, dword [esp + 0x78]
cmp eax, edx
mov dword [esp + 0xfc], edx
mov dword [esp + 0xf8], eax
mov eax, dword [esp + 0x80]
mov dword [esp + 0xe4], eax
ja 0x686870
jmp 0x6868cd
mov eax, 0x12
mov byte [esp + 0xef], 0x26
mov ecx, dword [esp + 0x78]
mov edx, dword [esp + 0xc8]
cmp ecx, edx
mov dword [esp + 0xfc], edx
mov dword [esp + 0xf8], ecx
mov ecx, dword [esp + 0x80]
mov dword [esp + 0xe4], ecx
jbe 0x68606f
jmp 0x686870
mov eax, 0xe
mov byte [esp + 0xef], 4
mov ecx, dword [esp + 0x78]
cmp ecx, edx
mov dword [esp + 0xfc], edx
mov dword [esp + 0xf8], ecx
mov ecx, dword [esp + 0x80]
mov dword [esp + 0xe4], ecx
jbe 0x686831
jmp 0x686870
mov eax, 0x10
mov byte [esp + 0xaf], 0x15
imul ecx, edi, 0x118
mov esi, dword [esp + 0xf0]
cmp dword [esi + ecx + 0x110], edx
mov ecx, esi
jbe 0x685cd0
mov ecx, dword [esp + 0x114]
mov dword [esp + 0x120], ecx
mov ecx, ebx
mov ebx, dword [esp + 0x108]
mov edx, ecx
mov ecx, dword [esp + 0x104]
mov esi, dword [esp + 0x118]
mov dword [esp + 0x11c], edi
mov dword [esp + 0x130], esi
mov esi, edx
mov dword [esp + 0x124], esi
mov dword [esp + 0x128], ecx
mov dword [esp + 0x12c], ebx
mov dword [esp + 0xb8], edi
cmp eax, 0xc
mov eax, dword [esp + 0x120]
mov dword [esp + 0x114], eax
mov dword [esp + 0x108], ebx
mov dword [esp + 0x110], esi
mov dword [esp + 0x104], ecx
mov eax, dword [esp + 0x130]
mov dword [esp + 0x118], eax
je 0x6857a0
jmp 0x685d01
lea edx, [ecx + 1]
add eax, 1
jb 0x685cc0
jmp 0x685e30
mov dword [esp + 0x110], ebx
mov dword [esp + 0xf0], ecx
mov ebx, 0x10
imul eax, edi, 0x118
cmp dword [ecx + eax + 0x114], edx
mov dword [esp + 0x58], edi
mov dword [esp + 0xb8], edi
jae 0x6862ff
mov dword [esp + 0xb8], edi
mov ebx, 0xd
mov eax, 8
inc edi
mov dword [esp + 0x9c], 0
cmp edi, dword [esp + 0xc4]
jae 0x686366
mov esi, 0xffffffff
cmp eax, 8
jne 0x685d50
mov ebx, dword [esp + 0x110]
mov eax, dword [esp + 0x118]
jmp 0x6866cc
mov dword [esp + 0x11c], edi
mov edi, dword [ebp + 0xc]
jmp 0x685dd2
mov ebx, 0x19
mov byte [esp + 0x134], 0x18
lea eax, [edi + 0x120]
mov ecx, dword [edi + 0x140]
mov edx, dword [edi + 0x144]
mov dword [esp + 0x18], eax
mov dword [esp + 0xc], edx
mov dword [esp + 8], ecx
mov dword [esp], edi
mov dword [esp + 0x28], 0
mov dword [esp + 0x24], 0
mov dword [esp + 0x20], 0x10
mov dword [esp + 0x1c], 0x19
mov dword [esp + 0x14], 0
mov dword [esp + 0x10], 0
mov dword [esp + 4], 1
call fcn.00682db0
mov dword [esp + 0x138], eax
add esi, 1
jb 0x685d60
mov eax, dword [esp + 0x114]
mov dword [esp + 0x120], eax
mov eax, dword [esp + 0x108]
mov dword [esp + 0x12c], eax
mov eax, dword [esp + 0x110]
mov dword [esp + 0x124], eax
mov eax, dword [esp + 0x104]
mov dword [esp + 0x128], eax
mov eax, dword [esp + 0x118]
mov dword [esp + 0x130], eax
cmp ebx, 0xd
je 0x686e40
jmp 0x687569
mov dword [esp + 0x9c], edx
mov byte [esp + 0xc3], 0x53
mov byte [esp + 0x73], 0x76
mov eax, dword [esp + 0x114]
mov dword [esp + 0x120], eax
mov eax, dword [esp + 0x108]
mov dword [esp + 0x12c], eax
mov dword [esp + 0x124], esi
mov dword [esp + 0x128], ebx
mov eax, dword [esp + 0x118]
mov dword [esp + 0x130], eax
mov dword [esp + 0x11c], edi
xor ecx, ecx
mov dword [esp + 0x78], edx
mov eax, 3
mov byte [esp + 0xef], 2
imul edx, ecx, 0x118
mov esi, dword [esp + 0xf0]
mov edi, dword [esp + 0xe8]
cmp dword [esi + edx + 0x110], edi
mov dword [esp + 0xcc], ecx
jbe 0x6865eb
jmp 0x6867e0
lea edx, [ecx + 1]
add eax, 1
jb 0x685ed0
mov dword [esp + 0xc8], edx
jmp 0x685b23
mov ebx, edi
mov edi, dword [esp + 0x130]
lea eax, [edi - 1]
mov dword [esp + 0xe0], eax
mov ecx, dword [esp + 0x88]
mov edx, dword [ecx]
mov dword [esp + 0x148], edx
imul eax, eax, 0x118
mov ecx, dword [edx + eax + 0x110]
mov eax, dword [edx + eax + 0x114]
mov edx, dword [esp + 0xf4]
sub edx, ecx
mov dword [esp + 0x144], edx
mov esi, dword [esp + 0xe8]
cmp esi, eax
cmovb eax, esi
mov dword [esp + 0x74], eax
sub eax, ecx
mov dword [esp + 0x6c], eax
mov byte [esp + 0x87], 5
cmp edx, eax
mov eax, dword [esp + 0x12c]
mov ecx, dword [esp + 0x120]
mov edx, dword [esp + 0x128]
mov esi, dword [esp + 0x124]
ja 0x685fb6
cmp dword [esp + 0xb4], edx
mov dword [esp + 0xa8], ecx
mov dword [esp + 0xd4], eax
mov dword [esp + 0xd0], esi
mov dword [esp + 0xa4], edx
mov dword [esp + 0x140], ecx
mov dword [esp + 0x13c], edx
mov dword [esp + 0xb0], edi
mov edi, ebx
ja 0x685fd0
jmp 0x686560
mov dword [esp + 0x140], ecx
mov dword [esp + 0x13c], edx
mov edi, ebx
jmp 0x686560
mov dword [esp + 0x11c], edi
mov ecx, 0xffffffff
mov esi, dword [ebp + 0x10]
mov ebx, dword [esp + 0xe0]
mov edx, dword [esp + 0x100]
jmp 0x686033
mov eax, 9
imul edx, ebx, 0x118
mov edi, dword [esp + 0x148]
lea edx, [edi + edx + 0x108]
mov edi, dword [esp + 0x140]
mov dword [esp + 0x150], edi
mov edi, dword [esp + 0x13c]
mov dword [esp + 0x14c], edi
mov edi, dword [esp + 0x144]
mov dword [esp + 0x154], edi
add ecx, 1
jb 0x685ff0
mov dword [esp + 0x100], edx
mov edi, dword [esp + 0x11c]
cmp eax, 8
jne 0x686080
mov dword [esp + 0x11c], edi
mov dword [esp + 0xe0], ebx
mov eax, 8
mov byte [esp + 0x86], 0x74
mov ecx, dword [esi]
mov dword [esp + 0xe4], ecx
cmp eax, 8
jne 0x686ae0
jmp 0x686870
mov dword [esp + 0xe0], ebx
mov eax, dword [esp + 0x120]
mov dword [esp + 0x114], eax
mov eax, dword [esp + 0x12c]
mov dword [esp + 0x108], eax
mov eax, dword [esp + 0x124]
mov dword [esp + 0x110], eax
mov eax, dword [esp + 0x128]
mov dword [esp + 0x104], eax
mov eax, dword [esp + 0x130]
mov dword [esp + 0x118], eax
mov eax, dword [esp + 0xd4]
mov dword [esp + 0xdc], eax
mov eax, dword [esp + 0xd0]
mov dword [esp + 0xd8], eax
lea eax, [esp + 0xb80]
mov dword [esp], eax
mov dword [esp + 8], 0x400
mov dword [esp + 4], 0
call fcn.007c51a0
mov ebx, dword [esp + 0x14c]
mov eax, ebx
shr eax, 3
mov ecx, 0x20408103
mul ecx
shr edx, 4
imul eax, edx, 0x3f8
mov ecx, dword [esp + 0xb4]
sub ecx, ebx
mov edx, ebx
sub edx, eax
mov esi, dword [esp + 0xdc]
mov dword [esp + 0xd4], esi
mov esi, 0x3f8
sub esi, edx
cmp ecx, esi
cmovb esi, ecx
mov ecx, dword [esp + 0xd8]
mov dword [esp + 0xd0], ecx
mov ecx, ebx
sub ecx, eax
mov eax, 1
mov dword [esp + 0xd8], ecx
mov dword [esp + 0xdc], esi
mov ecx, dword [esp + 0x150]
mov dword [esp + 0x94], ecx
mov dword [esp + 0x68], ebx
mov ecx, dword [esp + 0x154]
mov dword [esp + 0x7c], ecx
mov ecx, dword [esp + 0x114]
mov dword [esp + 0x120], ecx
mov ecx, dword [esp + 0x108]
mov dword [esp + 0x12c], ecx
mov ecx, dword [esp + 0x110]
mov dword [esp + 0x124], ecx
mov ecx, dword [esp + 0x104]
mov dword [esp + 0x128], ecx
mov ecx, dword [esp + 0x118]
mov dword [esp + 0x130], ecx
jne 0x686640
mov eax, dword [esp + 0x5c]
mov ecx, dword [esp + 0xd8]
lea eax, [eax + ecx]
mov ecx, dword [esp + 0xdc]
mov dword [esp + 8], ecx
mov ecx, dword [esp + 0x94]
mov dword [esp + 4], ecx
mov dword [esp], eax
call fcn.007c51d0
lea esi, [esp + 0xb80]
mov dword [esp], esi
call fcn.00688470
test eax, eax
je 0x686239
mov dword [esp + 0x138], eax
mov ebx, 7
mov dword [esp + 0x11c], edi
cmp ebx, 7
jne 0x686ae0
jmp 0x687569
mov ebx, dword [esp + 0x50]
mov dword [ebx], 0x725db5a3
mov dword [esp], ebx
mov dword [esp + 8], 0x1e23de34
mov dword [esp + 4], 4
call fcn.007ca970
mov ecx, dword [esp + 0x4c]
mov dword [ecx], eax
mov dword [esp + 0x14], esi
mov eax, dword [esp + 0x8c]
mov dword [esp + 0xc], eax
mov dword [esp + 8], ebx
mov dword [esp], esi
mov dword [esp + 0x10], 0x10
mov dword [esp + 4], 0x400
call fcn.0067a820
test eax, eax
je 0x6862bd
mov dword [esp + 0x138], eax
mov eax, 9
mov edx, dword [esp + 0x108]
mov esi, dword [esp + 0x110]
mov ebx, dword [esp + 0x104]
mov ecx, dword [esp + 0x118]
jmp 0x686520
mov ebx, 0x13
mov eax, dword [esp + 0x7c]
shl eax, 0xa
or eax, 0x200
mov ecx, dword [esp + 0x100]
mov ecx, dword [ecx]
mov dword [esp + 4], eax
mov dword [esp], ecx
mov dword [esp + 8], 0
call fcn.0067a470
mov dword [esp + 0x138], 0x6f
cmp eax, 0xffffffff
je 0x687569
mov eax, 0xffffffff
cmp ebx, 0x10
jne 0x686327
mov ecx, dword [esp + 0x58]
mov edx, dword [esp + 0x9c]
mov esi, dword [esp + 0x110]
mov ebx, dword [esp + 0x104]
jmp 0x685cc3
mov ebx, 0x12
mov eax, dword [esp + 0x100]
mov eax, dword [eax]
lea ecx, [esp + 0xb80]
mov dword [esp + 4], ecx
mov dword [esp], eax
mov dword [esp + 8], 0x400
call fcn.0067a460
mov dword [esp + 0x138], 0x6b
cmp eax, 0x400
jne 0x687569
cmp ebx, 0xd
jne 0x686390
mov edx, dword [esp + 0x9c]
mov esi, dword [esp + 0x110]
mov ebx, dword [esp + 0x104]
jmp 0x685e30
mov eax, dword [esp + 0xdc]
mov ecx, dword [esp + 0x68]
lea ecx, [eax + ecx]
mov edx, dword [esp + 0x94]
lea esi, [edx + eax]
mov edx, dword [esp + 0x7c]
inc edx
mov dword [esp + 0x154], edx
cmp edx, dword [esp + 0x6c]
ja 0x686419
cmp dword [esp + 0xb4], ecx
mov dword [esp + 0xa8], esi
mov dword [esp + 0xa4], ecx
mov dword [esp + 0x120], esi
mov dword [esp + 0x150], esi
mov dword [esp + 0x12c], eax
mov eax, dword [esp + 0xd8]
mov dword [esp + 0x124], eax
mov dword [esp + 0x128], ecx
mov dword [esp + 0x14c], ecx
mov eax, dword [esp + 0xb0]
mov dword [esp + 0x130], eax
ja 0x6860e9
jmp 0x686560
mov dword [esp + 0x120], esi
mov dword [esp + 0x150], esi
mov dword [esp + 0x12c], eax
mov eax, dword [esp + 0xd8]
mov dword [esp + 0x124], eax
mov dword [esp + 0x128], ecx
mov dword [esp + 0x14c], ecx
mov eax, dword [esp + 0xb0]
mov dword [esp + 0x130], eax
jmp 0x686560
mov eax, dword [esp + 0x100]
mov eax, dword [eax]
lea esi, [esp + 0xb80]
mov dword [esp + 4], esi
mov dword [esp], eax
mov dword [esp + 8], 0x400
call fcn.0067a450
cmp eax, 0x400
jne 0x686502
mov dword [esp + 0x118], 4
mov ebx, dword [esp + 0x50]
mov dword [ebx], 0x725db5a3
mov dword [esp], ebx
mov dword [esp + 8], 0x1e23de34
mov dword [esp + 4], 4
call fcn.007ca970
mov ecx, dword [esp + 0x4c]
mov dword [ecx], eax
mov dword [esp + 0x14], esi
mov eax, dword [esp + 0x8c]
mov dword [esp + 0xc], eax
mov dword [esp + 8], ebx
mov dword [esp], esi
mov dword [esp + 0x10], 0x10
mov dword [esp + 4], 0x400
call fcn.0067a8d0
mov ecx, 0xb
mov dword [esp + 0x138], eax
test eax, eax
jne 0x686766
jmp 0x686b83
mov eax, 3
mov dword [esp + 0x138], 0x6b
mov dword [esp + 0x11c], edi
jmp 0x686823
cmp eax, 8
mov dword [esp + 0x11c], edi
mov eax, dword [esp + 0x114]
mov dword [esp + 0x120], eax
mov dword [esp + 0x12c], edx
mov dword [esp + 0x124], esi
mov dword [esp + 0x128], ebx
mov dword [esp + 0x130], ecx
je 0x6869d0
jmp 0x687569
mov edx, dword [esp + 0x130]
mov dword [esp + 0xb0], edx
mov eax, 0xb
mov byte [esp + 0x86], 0x74
mov esi, dword [esp + 0x12c]
mov ebx, edi
mov edi, dword [esp + 0x124]
lea ecx, [esi + edi]
cmp ecx, 0x3f8
sete cl
movzx ecx, cl
add ecx, dword [esp + 0x74]
mov dword [esp + 0xf4], ecx
lea ecx, [edx + 1]
mov dword [esp + 0x130], ecx
cmp ecx, dword [esp + 0x98]
mov dword [esp + 0x11c], ebx
mov ecx, dword [esp + 0x120]
mov dword [esp + 0xa8], ecx
mov dword [esp + 0xd4], esi
mov dword [esp + 0xd0], edi
mov edi, ebx
mov ecx, dword [esp + 0x128]
mov dword [esp + 0xa4], ecx
jbe 0x686640
cmp eax, 3
jne 0x686720
movzx eax, byte [esp + 0x73]
cmp eax, 0x38
jne 0x6867aa
mov eax, 0x14
mov byte [esp + 0x73], 0x38
mov edi, dword [esp + 0xcc]
imul ecx, edi, 0x118
mov edx, dword [esp + 0xf0]
mov esi, dword [esp + 0xe8]
cmp dword [edx + ecx + 0x114], esi
mov dword [esp + 0x54], edi
jae 0x68691b
jmp 0x6867e0
cmp eax, 1
jne 0x68677b
mov ebx, 3
mov eax, dword [esp + 0x7c]
shl eax, 0xa
or eax, 0x200
mov ecx, dword [esp + 0x100]
mov ecx, dword [ecx]
mov dword [esp + 4], eax
mov dword [esp], ecx
mov dword [esp + 8], 0
call fcn.0067a470
mov dword [esp + 0x138], 0x6f
cmp eax, 0xffffffff
je 0x687569
cmp ebx, 3
je 0x686460
mov eax, dword [esp + 0x120]
mov dword [esp + 0x114], eax
mov eax, dword [esp + 0x12c]
mov dword [esp + 0x108], eax
mov ebx, dword [esp + 0x124]
mov eax, dword [esp + 0x128]
mov dword [esp + 0x104], eax
mov eax, dword [esp + 0x130]
mov dword [esp + 0x118], eax
movzx eax, byte [esp + 0xaf]
cmp eax, 5
mov edx, dword [esp + 0x10c]
je 0x685c00
mov byte [esp + 0xaf], 5
imul eax, edi, 0x118
mov ecx, dword [esp + 0xf0]
cmp dword [ecx + eax + 0x110], edx
jbe 0x685cd0
mov dword [esp + 0x110], ebx
jmp 0x685d01
mov eax, 0xffffffff
mov dl, byte [esp + 0x86]
movzx ecx, dl
cmp ecx, 0x25
je 0x68683f
mov eax, 8
cmp ecx, 0x74
mov esi, dword [ebp + 0x10]
jne 0x686982
mov ecx, 1
mov byte [esp + 0x86], 0x7a
mov eax, dword [esi]
mov dword [esp + 0xe4], eax
mov edi, dword [esp + 0x11c]
cmp ecx, 1
mov dword [esp + 0x11c], edi
je 0x686870
jmp 0x687569
mov dword [esp + 0x11c], edi
mov ecx, dword [esp + 0x10c]
mov edx, dword [esp + 0x88]
mov esi, dword [esp + 0x8c]
mov bl, byte [esp + 0x87]
mov edi, dword [esp + 0x98]
jmp 0x686b42
mov eax, 0xa
mov byte [esp + 0x73], 0x76
mov edi, dword [esp + 0xcc]
imul ecx, edi, 0x118
mov edx, dword [esp + 0xf0]
mov esi, dword [esp + 0xe8]
cmp dword [edx + ecx + 0x114], esi
mov dword [esp + 0x54], edi
jae 0x686831
nop dword [eax]
mov eax, 4
movzx ecx, byte [esp + 0xc3]
cmp ecx, 0x53
jne 0x685af0
mov eax, 7
mov byte [esp + 0xc3], 0x53
mov ecx, dword [esp + 0xcc]
inc ecx
mov dword [esp + 0xc8], 0
cmp ecx, dword [esp + 0xc4]
jb 0x685e89
cmp eax, 3
jne 0x685b23
jmp 0x687569
cmp eax, 0xa
je 0x686924
jmp 0x686ae0
mov ecx, dword [ebp + 0x10]
mov esi, dword [esp + 0xe4]
jmp 0x686854
mov dl, 0x25
mov esi, dword [ecx]
add eax, 1
jb 0x686850
mov dword [esp + 0xe4], esi
mov byte [esp + 0x86], dl
nop word [eax + eax]
mov eax, dword [ebp + 0x20]
mov ecx, dword [esp + 0xe4]
lea edi, [ecx + eax]
mov eax, dword [esp + 0xa0]
mov eax, dword [eax]
mov ecx, dword [ebp + 0x1c]
lea edx, [ecx + ecx*2]
cmp edi, dword [eax + edx*4 + 8]
mov eax, 8
jbe 0x686940
mov esi, 0xffffffff
mov al, 0x76
movzx eax, al
cmp eax, 0x36
je 0x68698e
mov byte [esp + 0x134], 4
cmp eax, 0x40
je 0x6869b8
mov ecx, 0x15
cmp eax, 0x76
je 0x686912
mov dword [esp + 0x64], edi
cmp ecx, 0xe
je 0x686ae0
mov eax, dword [ebp + 0xc]
mov eax, dword [eax + 0x130]
mov ecx, dword [ebp + 0x1c]
lea ecx, [ecx + ecx*2]
mov edx, dword [esp + 0x64]
mov dword [eax + ecx*4 + 0x10], edx
jmp 0x6869d0
mov eax, 5
mov ecx, dword [ebp + 0xc]
mov ecx, dword [ecx + 0x130]
mov dword [ecx + edx*4 + 0x10], edi
add esi, 1
jb 0x686900
mov dword [esp + 0x64], edi
cmp eax, 5
je 0x6869d0
mov eax, 0xffffffff
mov ecx, dword [esp + 0x54]
mov edx, dword [esp + 0xc8]
jmp 0x685ed3
mov dword [esp + 0x64], edi
mov byte [esp + 0x134], 4
mov ecx, dword [esp + 0x120]
mov dword [esp + 0x114], ecx
mov edx, dword [esp + 0x12c]
mov esi, dword [esp + 0x124]
mov ebx, dword [esp + 0x128]
mov ecx, dword [esp + 0x130]
mov edi, dword [esp + 0x11c]
jmp 0x686520
mov ebx, dword [esp + 0xe0]
jmp 0x68603f
mov byte [esp + 0x134], 4
jmp 0x6869ad
mov eax, dword [ebp + 0xc]
mov eax, dword [eax + 0x130]
mov dword [eax + edx*4 + 0x10], edi
add esi, 1
jb 0x6869a0
mov dword [esp + 0x64], edi
jmp 0x6869d0
mov eax, dword [ebp + 0xc]
mov eax, dword [eax + 0x130]
mov dword [eax + edx*4 + 0x10], edi
mov dword [esp + 0x64], edi
nop dword [eax]
mov al, byte [esp + 0x134]
movzx ecx, al
cmp ecx, 4
je 0x686a50
cmp ecx, 0x18
je 0x68747c
mov eax, 0x12
cmp ecx, 0x57
je 0x6874eb
mov ecx, dword [esp + 0x120]
mov dword [esp + 0x114], ecx
mov ecx, dword [esp + 0x12c]
mov dword [esp + 0x108], ecx
mov ecx, dword [esp + 0x124]
mov dword [esp + 0x110], ecx
mov ecx, dword [esp + 0x128]
mov dword [esp + 0x104], ecx
mov ecx, dword [esp + 0x130]
mov dword [esp + 0x118], ecx
mov edi, dword [esp + 0x11c]
jmp 0x685d2b
mov ebx, 6
mov byte [esp + 0x134], 0x56
mov eax, dword [ebp + 0xc]
mov esi, eax
lea eax, [esi + 0x120]
mov ecx, dword [esi + 0x140]
mov edx, dword [esi + 0x144]
mov dword [esp + 0x18], eax
mov dword [esp + 0xc], edx
mov dword [esp + 8], ecx
mov dword [esp], esi
mov dword [esp + 0x28], 0
mov dword [esp + 0x24], 0
mov dword [esp + 0x20], 0x10
mov dword [esp + 0x1c], 0x19
mov dword [esp + 0x14], 0
mov dword [esp + 0x10], 0
mov dword [esp + 4], 1
call fcn.00682db0
mov dword [esp + 0x138], eax
mov edi, dword [esp + 0x11c]
jmp 0x686cf7
mov bl, 5
mov eax, dword [ebp + 0xc]
lea edx, [eax + 0x13c]
lea esi, [eax + 0x110]
mov dword [esp + 0x12c], 0
mov eax, dword [ebp + 0x24]
mov dword [esp + 0x120], eax
mov dword [esp + 0x124], 0
mov eax, dword [esp + 0xbc]
mov dword [esp + 0x128], eax
mov ecx, dword [esp + 0x10c]
mov dword [esp + 0xf4], ecx
mov eax, dword [esp + 0xf8]
mov dword [esp + 0x130], eax
mov edi, dword [esp + 0xfc]
movzx eax, bl
cmp eax, 0x4a
jne 0x686c10
mov dword [esp + 0x118], 5
mov dword [esp + 0x98], edi
mov byte [esp + 0x87], bl
mov dword [esp + 0x8c], esi
mov dword [esp + 0x88], edx
mov dword [esp + 0x10c], ecx
mov edi, dword [esp + 0x11c]
cmp dword [esp + 0x118], 4
jne 0x685ef0
mov ebx, 0x12
lea eax, [esp + 0xb80]
mov dword [esp], eax
call fcn.00688430
mov dword [esp + 0x138], eax
test eax, eax
jne 0x687569
cmp ebx, 0xb
mov dword [esp + 0x11c], edi
mov eax, dword [esp + 0x120]
mov dword [esp + 0x114], eax
mov eax, dword [esp + 0x12c]
mov dword [esp + 0x108], eax
mov eax, dword [esp + 0x124]
mov dword [esp + 0x110], eax
mov eax, dword [esp + 0x128]
mov dword [esp + 0x104], eax
mov eax, dword [esp + 0x130]
mov dword [esp + 0x118], eax
jne 0x6861d9
jmp 0x686ae0
mov dword [esp + 0x98], edi
mov dword [esp + 0x8c], esi
mov dword [esp + 0x10c], ecx
mov edi, dword [esp + 0x130]
lea eax, [edi - 1]
mov dword [esp + 0xe0], eax
mov dword [esp + 0x88], edx
mov edx, dword [edx]
mov dword [esp + 0x148], edx
imul eax, eax, 0x118
mov ecx, dword [edx + eax + 0x110]
mov eax, dword [edx + eax + 0x114]
mov edx, dword [esp + 0xf4]
sub edx, ecx
mov dword [esp + 0x144], edx
mov esi, dword [esp + 0xe8]
cmp esi, eax
cmovb eax, esi
mov dword [esp + 0x74], eax
sub eax, ecx
mov dword [esp + 0x6c], eax
mov esi, 0xa
mov byte [esp + 0x87], 0x4a
cmp edx, eax
ja 0x686d21
mov ebx, 7
mov edx, dword [esp + 0x128]
cmp dword [esp + 0xb4], edx
mov ecx, dword [esp + 0x120]
mov dword [esp + 0xa8], ecx
mov eax, dword [esp + 0x12c]
mov dword [esp + 0xd4], eax
mov eax, dword [esp + 0x124]
mov dword [esp + 0xd0], eax
mov dword [esp + 0xa4], edx
mov dword [esp + 0x140], ecx
mov dword [esp + 0x13c], edx
mov dword [esp + 0xb0], edi
mov edi, dword [esp + 0x11c]
jbe 0x686d75
cmp ebx, 6
mov dword [esp + 0x150], eax
mov dword [esp + 0x14c], eax
mov dword [esp + 0x154], eax
mov dword [esp + 0x100], eax
jne 0x685fd0
jmp 0x687569
mov ecx, dword [esp + 0x120]
mov dword [esp + 0xa8], ecx
mov eax, dword [esp + 0x12c]
mov dword [esp + 0xd4], eax
mov eax, dword [esp + 0x124]
mov dword [esp + 0xd0], eax
mov eax, dword [esp + 0x128]
mov dword [esp + 0xa4], eax
mov dword [esp + 0x140], ecx
mov dword [esp + 0x13c], eax
mov dword [esp + 0xb0], edi
mov edi, dword [esp + 0x11c]
mov dword [esp + 0x11c], edi
cmp esi, 6
mov eax, dword [esp + 0xa8]
mov dword [esp + 0x120], eax
mov eax, dword [esp + 0xd4]
mov dword [esp + 0x12c], eax
mov eax, dword [esp + 0xd0]
mov dword [esp + 0x124], eax
mov eax, dword [esp + 0xa4]
mov dword [esp + 0x128], eax
mov eax, dword [esp + 0xb0]
mov dword [esp + 0x130], eax
jne 0x686560
jmp 0x686ae0
cmp ebx, 7
je 0x685aae
mov dword [esp + 0x11c], edi
mov ebx, 0xd
mov eax, dword [ebp + 0x10]
mov ecx, dword [eax]
mov dword [esp + 0x90], ecx
mov eax, dword [ebp + 0x20]
lea eax, [ecx + eax]
mov ecx, dword [ebp + 0xc]
lea edx, [ecx + 0x10c]
mov dword [esp + 0xa0], edx
mov ecx, dword [ecx + 0x10c]
mov edx, dword [ebp + 0x1c]
lea edx, [edx + edx*2]
mov ecx, dword [ecx + edx*4]
mov dword [esp + 0x60], ecx
mov dword [esp + 0xfc], 0
cmp eax, ecx
mov dword [esp + 0xf8], 0
jbe 0x6857a0
jmp 0x685e1d
mov edi, dword [esp + 0x60]
mov ebx, edi
mov esi, dword [ebp + 0x20]
sub ebx, esi
ja 0x685710
mov dword [esp + 0x138], 0x66
jmp 0x687569
mov dword [esp + 0xb74], 0
mov dword [esp + 0xb70], 0
xorpd xmm0, xmm0
movapd xmmword [esp + 0xb60], xmm0
test esi, esi
mov ebx, 0x66
je 0x68722d
cmp dword [ebp + 0x14], 0
je 0x68722d
mov eax, dword [esi + 0x13c]
test eax, eax
je 0x68722d
mov cl, 4
movzx ecx, cl
cmp ecx, 9
mov eax, dword [eax + 0x108]
mov dword [esp], eax
mov dword [esp + 8], 0
mov dword [esp + 4], 0
call fcn.0067a470
cmp eax, 0xffffffff
je 0x6871ee
mov byte [esp + 0x150], 0x71
mov eax, dword [esi + 0x13c]
mov edi, esi
mov eax, dword [eax + 0x108]
lea ecx, [esp + 0x560]
mov dword [esp + 4], ecx
mov dword [esp], eax
mov dword [esp + 8], 0x200
call fcn.0067a450
xor esi, esi
mov ebx, 0x6b
cmp eax, 0x200
jne 0x6871fd
mov al, 0x39
movzx eax, al
cmp eax, 1
je 0x686f2d
cmp eax, 0x39
je 0x686f2d
cmp eax, 0x78
mov eax, dword [edi]
mov dword [esp + 8], eax
lea eax, [esp + 0xb60]
mov dword [esp], eax
mov dword [esp + 4], 0x10
call fcn.0067a720
mov ebx, eax
test ebx, ebx
jne 0x6871fd
mov dword [esp + 0xb70], 0x9def3ab8
lea edi, [esp + 0xb70]
mov dword [esp], edi
mov dword [esp + 8], 0x1e23de34
mov dword [esp + 4], 4
call fcn.007ca970
mov dword [esp + 0xb74], eax
lea eax, [esp + 0x560]
mov ecx, eax
mov dword [esp + 0x14], ecx
lea eax, [esp + 0xb60]
mov dword [esp + 0xc], eax
mov dword [esp + 8], edi
mov dword [esp], ecx
mov dword [esp + 0x10], 0x10
mov dword [esp + 4], 0x200
call fcn.0067a8d0
mov ebx, eax
test ebx, ebx
jne 0x6871fd
mov esi, edi
mov eax, dword [esp + 0x678]
mov dword [esp + 0x128], eax
mov eax, dword [esp + 0x67c]
mov dword [esp + 0x12c], eax
mov edi, dword [ebp + 0xc]
mov eax, dword [edi + 0x108]
mov dword [esp], eax
call fcn.00492770
mov ebx, 0x67
test eax, eax
je 0x68722d
mov dword [esp + 0x140], eax
mov al, 0x12
movzx eax, al
cmp eax, 0x16
je 0x687013
cmp eax, 0x18
mov byte [esp + 0x124], 0x5a
mov cl, 0x32
mov eax, dword [edi + 0x138]
xor ebx, ebx
test eax, eax
je 0x687a87
movzx ecx, cl
mov edx, 0xffffffff
cmp ecx, 0x32
jne 0x6877ba
mov byte [esp + 0x144], bh
jmp 0x687246
mov dword [esp + 0x11f4], 0
mov dword [esp + 0x11f0], 0
mov edi, esi
lea eax, [esp + 0xff0]
mov dword [esp], eax
mov dword [esp + 8], 0x200
mov dword [esp + 4], 0
call fcn.007ce3c0
xorpd xmm0, xmm0
movapd xmmword [esp + 0xfe0], xmm0
mov esi, 0x66
test edi, edi
je 0x687791
mov eax, dword [edi + 0x13c]
mov ebx, dword [eax + 0x108]
mov dword [esp], ebx
mov dword [esp + 8], 0
mov dword [esp + 4], 0
call fcn.0067a470
mov esi, 0x6f
cmp eax, 0xffffffff
je 0x687791
mov al, 0x1c
movzx eax, al
cmp eax, 0x78
lea eax, [esp + 0xff0]
mov dword [esp + 4], eax
mov dword [esp], ebx
mov dword [esp + 8], 0x200
call fcn.0067a450
mov esi, 0x6b
cmp eax, 0x200
jne 0x687791
mov eax, dword [edi]
mov dword [esp + 8], eax
lea ebx, [esp + 0xfe0]
mov dword [esp], ebx
mov dword [esp + 4], 0x10
call fcn.0067a720
mov esi, eax
test esi, esi
jne 0x687791
mov al, 0x2b
movzx eax, al
cmp eax, 0x2b
mov byte [esp + 0x154], 0xd
mov dword [esp + 0x11f0], 0x9def3ab8
lea esi, [esp + 0x11f0]
mov dword [esp], esi
mov dword [esp + 8], 0x1e23de34
mov dword [esp + 4], 4
call fcn.007ca970
mov dword [esp + 0x11f4], eax
lea eax, [esp + 0xff0]
mov dword [esp + 0x14], eax
mov dword [esp + 0xc], ebx
mov dword [esp + 8], esi
mov dword [esp], eax
mov dword [esp + 0x10], 0x10
mov dword [esp + 4], 0x200
call fcn.0067a8d0
mov esi, eax
test esi, esi
mov eax, dword [ebp + 0xc]
jne 0x687791
mov esi, eax
movzx eax, byte [esp + 0x154]
cmp eax, 0xd
je 0x6876f7
cmp eax, 0x50
mov ecx, dword [ebp + 0x10]
mov edx, dword [ebp + 0x18]
mov eax, 0xffffffff
test edx, edx
jne 0x687715
jmp 0x68771a
mov dword [esp + 0x138], 0x66
jmp 0x687569
mov dword [esp + 0x138], 0x66
jmp 0x687569
mov byte [esp + 0x150], 0x71
xor esi, esi
mov ebx, 0x6f
movzx eax, byte [esp + 0x150]
cmp eax, 0x71
je 0x687217
cmp eax, 0x78
mov dword [esp], esi
call fcn.004936c0
jmp 0x68722d
mov edi, 0xffffffff
jmp 0x687228
mov dword [esp], esi
call fcn.004936c0
add edi, 1
jb 0x687220
mov eax, ebx
jmp 0x6877b2
mov bh, 0x1e
mov bl, 0x50
mov byte [esp + 0x144], 0xa
mov ecx, dword [edi + 0x13c]
add edx, 1
jb 0x687234
jmp 0x6877da
lea eax, [esp + 0x168]
lea ebx, [esp + 0x164]
mov dword [esp + 0x14], eax
mov dword [esp + 0x10], ebx
mov eax, dword [ebp + 0x1c]
mov dword [esp + 4], eax
mov eax, dword [ebp + 0xc]
mov dword [esp], eax
mov dword [esp + 0xc], 0x3f8
mov dword [esp + 8], 0
call fcn.00682690
test eax, eax
jne 0x6877b2
mov al, 0x34
movzx eax, al
cmp eax, 0x38
jne 0x68737d
mov byte [esp + 0x154], 0x48
mov eax, dword [ebp + 0x20]
lea eax, [esp + eax + 0x168]
mov dword [esp + 8], esi
mov ecx, dword [ebp + 0x24]
mov dword [esp + 4], ecx
mov dword [esp], eax
call fcn.007c51d0
mov eax, dword [edi]
mov dword [esp + 0x164], eax
mov dword [esp], ebx
mov dword [esp + 8], 0xf3d456ab
mov dword [esp + 4], 0x3fc
call fcn.007ca970
mov dword [esp + 0x160], eax
mov dword [esp + 0x158], 0x725db5a3
lea esi, [esp + 0x158]
mov dword [esp], esi
mov dword [esp + 8], 0x1e23de34
mov dword [esp + 4], 4
call fcn.007ca970
mov dword [esp + 0x15c], eax
mov eax, dword [ebp + 0xc]
lea eax, [eax + 0x110]
lea ecx, [esp + 0x160]
mov dword [esp + 0x14], ecx
mov dword [esp + 0xc], eax
mov dword [esp + 8], esi
mov dword [esp], ecx
mov dword [esp + 0x10], 0x10
mov dword [esp + 4], 0x400
call fcn.0067a820
mov ecx, eax
and ecx, 1
inc ecx
xor ecx, eax
jmp 0x68743a
mov dword [esp + 0x138], 0x66
jmp 0x687569
mov dword [esp + 0x138], 0x66
jmp 0x687569
mov byte [esp + 0x154], 0x48
mov eax, dword [ebp + 0x20]
lea eax, [esp + eax + 0x168]
mov dword [esp + 8], esi
mov ecx, dword [ebp + 0x24]
mov dword [esp + 4], ecx
mov dword [esp], eax
call fcn.007c51d0
mov eax, dword [edi]
mov dword [esp + 0x164], eax
mov dword [esp], ebx
mov dword [esp + 8], 0xf3d456ab
mov dword [esp + 4], 0x3fc
call fcn.007ca970
mov dword [esp + 0x160], eax
mov dword [esp + 0x158], 0x725db5a3
lea esi, [esp + 0x158]
mov dword [esp], esi
mov dword [esp + 8], 0x1e23de34
mov dword [esp + 4], 4
call fcn.007ca970
mov dword [esp + 0x15c], eax
mov eax, dword [ebp + 0xc]
lea eax, [eax + 0x110]
lea ecx, [esp + 0x160]
mov dword [esp + 0x14], ecx
mov dword [esp + 0xc], eax
mov dword [esp + 8], esi
mov dword [esp], ecx
mov dword [esp + 0x10], 0x10
mov dword [esp + 4], 0x400
call fcn.0067a820
mov ecx, eax
imul ecx, ecx
and ecx, 3
cmp ecx, 2
sete cl
movzx ecx, cl
cmp eax, ecx
jne 0x6877b2
movzx eax, byte [esp + 0x154]
cmp eax, 0x48
jne 0x687594
mov bl, 0x19
mov eax, dword [ebp + 0xc]
mov edx, dword [eax + 0x138]
mov eax, dword [eax + 0x13c]
test edx, edx
mov ecx, 0xffffffff
je 0x68766f
jmp 0x6875c3
mov eax, dword [ebp + 0xc]
mov esi, eax
lea eax, [esi + 0x120]
mov ecx, dword [esi + 0x140]
mov edx, dword [esi + 0x144]
mov dword [esp + 0x18], eax
mov dword [esp + 0xc], edx
mov dword [esp + 8], ecx
mov dword [esp], esi
mov dword [esp + 0x28], 0
mov dword [esp + 0x24], 0
mov dword [esp + 0x20], 0x10
mov dword [esp + 0x1c], 0x19
mov dword [esp + 0x14], 0
mov dword [esp + 0x10], 0
mov dword [esp + 4], 1
call fcn.00682db0
mov dword [esp + 0x138], eax
jmp 0x687569
mov esi, 0xffffffff
mov eax, dword [ebp + 0xc]
lea edi, [eax + 0x120]
jmp 0x687564
mov eax, dword [ebp + 0xc]
mov edx, eax
mov eax, dword [edx + 0x140]
mov ecx, dword [edx + 0x144]
mov dword [esp + 0x18], edi
mov dword [esp + 0xc], ecx
mov dword [esp + 8], eax
mov dword [esp], edx
mov dword [esp + 0x28], 0
mov dword [esp + 0x24], 0
mov dword [esp + 0x20], 0x10
mov dword [esp + 0x1c], 0x19
mov dword [esp + 0x14], 0
mov dword [esp + 0x10], 0
mov dword [esp + 4], 1
call fcn.00682db0
mov dword [esp + 0x138], eax
add esi, 1
jb 0x687500
lea eax, [esp + 0xb80]
mov dword [esp], eax
mov dword [esp + 8], 0x400
mov dword [esp + 4], 0
call fcn.007c51a0
mov eax, dword [esp + 0x138]
jmp 0x6877b2
mov eax, dword [ebp + 0xc]
mov edx, dword [eax + 0x138]
mov eax, dword [eax + 0x13c]
test edx, edx
mov ecx, 0xffffffff
je 0x68766f
mov bl, 0x19
mov esi, edx
imul esi, esi
and esi, 3
cmp esi, 3
je 0x68766f
xor ecx, ecx
movzx esi, bl
cmp esi, 0x19
je 0x6875f2
cmp esi, 0x59
jne 0x687608
mov bl, 0x19
imul esi, ecx, 0x118
mov edi, dword [ebp + 0x1c]
cmp dword [eax + esi + 0x110], edi
ja 0x687646
mov esi, edx
xor edx, edx
test dl, dl
mov edx, esi
je 0x687629
jmp 0x687646
mov bl, 0x59
imul esi, ecx, 0x118
mov edi, dword [ebp + 0x1c]
cmp dword [eax + esi + 0x110], edi
jbe 0x687629
jmp 0x687646
mov bl, 0x52
imul esi, ecx, 0x118
mov esi, dword [eax + esi + 0x110]
cmp esi, dword [ebp + 0x1c]
jbe 0x687629
mov edi, esi
and edi, 1
xor edi, esi
not edi
test edi, edi
jne 0x687646
imul esi, ecx, 0x118
mov esi, dword [eax + esi + 0x114]
cmp esi, dword [ebp + 0x1c]
jae 0x68766f
mov edi, esi
not edi
and edi, 1
add edi, esi
je 0x68766f
mov esi, 3
sub esi, ecx
xor esi, ecx
setne bh
movzx esi, bh
add ecx, esi
cmp ecx, edx
jae 0x68766a
mov esi, 3
sub esi, ecx
xor esi, ecx
jne 0x6875c5
mov ecx, 0xffffffff
imul ecx, ecx, 0x118
mov esi, dword [eax + ecx + 0x108]
mov edx, dword [ebp + 0x1c]
sub edx, dword [eax + ecx + 0x110]
shl edx, 0xa
or edx, 0x200
mov dword [esp + 4], edx
mov dword [esp], esi
mov dword [esp + 8], 0
call fcn.0067a470
mov ecx, eax
and eax, 1
xor eax, ecx
cmp eax, 0xffffffff
setne al
movzx edx, al
mov eax, 0x6f
add edx, ecx
je 0x6877b2
mov al, 0x5a
movzx eax, al
cmp eax, 0x5a
lea eax, [esp + 0x160]
mov dword [esp + 4], eax
mov dword [esp], esi
mov dword [esp + 8], 0x400
call fcn.0067a460
xor ecx, ecx
cmp eax, 0x400
mov eax, 0x6f
cmove eax, ecx
jmp 0x6877b2
mov eax, 0xffffffff
mov edx, dword [ebp + 0x18]
test edx, edx
mov ecx, dword [ebp + 0x10]
jne 0x687715
jmp 0x68771a
movsd xmm0, qword [esp + 0x1108]
movsd qword [edx], xmm0
add eax, 1
jb 0x687708
mov eax, dword [esp + 0x1104]
mov dword [esi + 0x134], eax
test ecx, ecx
je 0x68772d
mov dword [ecx], eax
lea eax, [esp + 0xff0]
mov dword [esp + 4], eax
lea eax, [esp + 0xf80]
mov dword [esp], eax
mov dword [esp + 8], 0x60
call fcn.007c51d0
lea eax, [esp + 0xf88]
mov ecx, dword [esi + 0x10c]
mov dword [esp + 4], eax
mov dword [esp], ecx
mov dword [esp + 8], 0x30
call fcn.007c51d0
cmp dword [ebp + 0x14], 0
je 0x68778f
mov eax, dword [ebp + 0x14]
mov dword [esp + 4], eax
mov dword [esp], 1
call fcn.006880e0
mov esi, eax
test esi, esi
jne 0x687791
xor esi, esi
lea eax, [esp + 0xff0]
mov dword [esp], eax
mov dword [esp + 8], 0x200
mov dword [esp + 4], 0
call fcn.007c51a0
mov eax, esi
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
mov byte [esp + 0x144], bh
jmp 0x6877d5
mov bh, 0x1e
mov bl, 0x50
mov byte [esp + 0x144], 0xa
mov ecx, dword [edi + 0x13c]
add edx, 1
jb 0x6877c3
mov dword [esp + 0x130], 0
mov byte [esp + 0x134], bh
mov byte [esp + 0x154], bl
mov byte [esp + 0x138], bl
mov dword [esp + 0x148], 0
xor ebx, ebx
movzx edx, byte [esp + 0x138]
cmp edx, 5
je 0x687823
cmp edx, 0x50
jne 0x68782d
mov byte [esp + 0x138], 0x50
jmp 0x687835
mov byte [esp + 0x138], 0x29
jmp 0x687835
mov byte [esp + 0x138], 5
imul edx, dword [esp + 0x148], 0x118
mov edx, dword [ecx + edx + 0x108]
cmp edx, 0xffffffff
je 0x687a33
mov dword [esp + 0x14c], ebx
mov dword [esp], edx
mov dword [esp + 8], 0
mov dword [esp + 4], 0x200
call fcn.0067a470
mov ebx, 0x6f
xor esi, esi
cmp eax, 0xffffffff
je 0x687f34
movzx eax, byte [esp + 0x144]
cmp eax, 0xa
je 0x6878a0
cmp eax, 0x65
je 0x6878aa
cmp eax, 0x7c
jne 0x6878b4
mov byte [esp + 0x144], 0x65
jmp 0x6878bc
mov byte [esp + 0x144], 0x7c
jmp 0x6878bc
mov byte [esp + 0x144], 6
jmp 0x6878bc
mov byte [esp + 0x144], 0xa
mov eax, dword [edi + 0x13c]
imul ecx, dword [esp + 0x148], 0x118
mov ebx, 0xfffffe00
add ebx, dword [eax + ecx + 0x104]
mov dword [esp + 0x13c], ebx
mov eax, dword [eax + ecx + 0x108]
mov ecx, dword [esp + 0x140]
mov edx, dword [esp + 0x130]
lea ecx, [ecx + edx]
mov dword [esp + 8], ebx
mov dword [esp + 4], ecx
mov dword [esp], eax
call fcn.0067a450
mov ebx, 0x6b
cmp eax, dword [esp + 0x13c]
jne 0x687f34
mov al, byte [esp + 0x154]
movzx eax, al
cmp eax, 0x3b
je 0x68795d
cmp eax, 0x50
mov ecx, dword [esp + 0x130]
je 0x6879bb
cmp eax, 0x5c
mov ebx, dword [esp + 0x14c]
lea esi, [esp + 0xb70]
jne 0x6879ff
mov byte [esp + 0x154], 0x3b
jmp 0x687a07
mov edx, 0xffffffff
mov eax, dword [esp + 0x13c]
add eax, dword [esp + 0x130]
mov dword [esp + 0x13c], eax
imul esi, dword [esp + 0x148], 0x118
jmp 0x6879a6
mov byte [esp + 0x154], 0x50
mov eax, dword [edi + 0x138]
mov ecx, dword [edi + 0x13c]
mov ebx, dword [ecx + esi + 0x10c]
add ebx, dword [esp + 0x14c]
add edx, 1
jb 0x687984
mov edx, dword [esp + 0x13c]
mov dword [esp + 0x130], edx
jmp 0x6879f6
mov byte [esp + 0x154], 0x5c
add ecx, dword [esp + 0x13c]
mov dword [esp + 0x130], ecx
mov ecx, dword [edi + 0x13c]
imul eax, dword [esp + 0x148], 0x118
mov ebx, dword [esp + 0x14c]
add ebx, dword [ecx + eax + 0x10c]
mov eax, dword [edi + 0x138]
lea esi, [esp + 0xb70]
jmp 0x687a33
mov byte [esp + 0x154], 0x5a
add ecx, dword [esp + 0x13c]
mov dword [esp + 0x130], ecx
mov ecx, dword [edi + 0x13c]
imul eax, dword [esp + 0x148], 0x118
add ebx, dword [ecx + eax + 0x10c]
mov eax, dword [edi + 0x138]
movzx edx, byte [esp + 0x134]
cmp edx, 7
je 0x687a54
cmp edx, 0x1e
je 0x687a5e
cmp edx, 0x28
jne 0x687a68
mov byte [esp + 0x134], 0x1e
jmp 0x687a70
mov byte [esp + 0x134], 7
jmp 0x687a70
mov byte [esp + 0x134], 0x28
jmp 0x687a70
mov byte [esp + 0x134], 0x2b
mov edx, dword [esp + 0x148]
inc edx
mov dword [esp + 0x148], edx
cmp edx, eax
jb 0x687807
mov dword [esp + 0x14c], ebx
mov eax, dword [esp + 0x674]
mov dword [edi + 0x134], eax
lea eax, [esp + 0x568]
mov ecx, dword [edi + 0x10c]
mov dword [esp + 4], eax
mov dword [esp], ecx
mov dword [esp + 8], 0x30
call fcn.007c51d0
mov dword [esp + 0xb70], 0x725db5a3
mov dword [esp], esi
mov dword [esp + 8], 0x1e23de34
mov dword [esp + 4], 4
call fcn.007ca970
mov dword [esp + 0xb74], eax
lea eax, [esp + 0x760]
mov dword [esp], eax
mov dword [esp + 8], 0x400
mov dword [esp + 4], 0
call fcn.007c51a0
lea eax, [esp + 0x764]
mov dword [esp], eax
mov dword [esp + 8], 0xf3d456ab
mov dword [esp + 4], 0x3fc
call fcn.007ca970
mov dword [esp + 0x760], eax
mov dword [esp + 0x764], 0
lea eax, [edi + 0x110]
mov dword [esp + 0x144], eax
lea ecx, [esp + 0x760]
mov dword [esp + 0x14], ecx
mov dword [esp + 0xc], eax
mov dword [esp + 8], esi
mov dword [esp], ecx
mov dword [esp + 0x10], 0x10
mov dword [esp + 4], 0x400
call fcn.0067a820
test ebx, ebx
je 0x687c66
mov al, 0x17
mov cl, 0x18
xor esi, esi
mov byte [esp + 0x154], al
movzx eax, cl
mov edi, ebx
cmp eax, 0x18
je 0x687ba1
cmp eax, 0x64
je 0x687bab
cmp eax, 0x74
jne 0x687bb5
mov byte [esp + 0x148], 0x24
jmp 0x687bbd
mov byte [esp + 0x148], 0x18
jmp 0x687bbd
mov byte [esp + 0x148], 0x64
jmp 0x687bbd
mov byte [esp + 0x148], 0x74
mov ebx, esi
shl ebx, 0xa
add ebx, dword [esp + 0x140]
lea eax, [esp + 0x760]
mov dword [esp + 4], eax
mov dword [esp], ebx
mov dword [esp + 8], 0x400
call fcn.007c7b90
test eax, eax
je 0x687c25
mov dword [esp + 0x14], ebx
mov eax, dword [esp + 0x144]
mov dword [esp + 0xc], eax
lea eax, [esp + 0xb70]
mov dword [esp + 8], eax
mov dword [esp], ebx
mov dword [esp + 0x10], 0x10
mov dword [esp + 4], 0x400
call fcn.0067a8d0
mov ebx, eax
test ebx, ebx
je 0x687c3c
jmp 0x687f32
mov eax, 0xffffffff
jmp 0x687c37
mov dword [ebx + 4], 0
add eax, 1
jb 0x687c30
movzx eax, byte [esp + 0x154]
cmp eax, 0x67
jne 0x687c52
mov al, 0x67
inc esi
mov ebx, edi
cmp esi, ebx
jmp 0x687c59
inc esi
mov ebx, edi
cmp esi, ebx
mov al, 0x17
mov cl, byte [esp + 0x148]
jb 0x687b7c
mov al, 0x50
movzx eax, al
cmp eax, 0x7c
imul eax, ebx, 0x3f8
add eax, 8
mov dword [esp + 0x134], eax
mov dword [esp], eax
call fcn.00492770
mov esi, eax
test esi, esi
mov edi, dword [ebp + 0xc]
je 0x687f29
test ebx, ebx
mov eax, dword [esp + 0x128]
mov dword [esi], eax
mov eax, dword [esp + 0x12c]
mov dword [esi + 4], eax
mov eax, dword [esp + 0x140]
je 0x687e9c
mov dl, 0x1a
mov byte [esp + 0x148], 0x4c
mov byte [esp + 0x144], 0x55
xor ebx, ebx
mov dword [esp + 0x154], 8
mov dword [esp + 0x13c], ebx
shl ebx, 0xa
cmp dword [eax + ebx + 4], 0
je 0x687d74
mov byte [esp + 0x138], dl
add ebx, eax
movzx eax, byte [esp + 0x144]
cmp eax, 9
je 0x687dfd
mov edi, 0xffffffff
cmp eax, 0x55
jne 0x687d67
mov byte [esp + 0x144], 0x55
add ebx, 8
mov eax, dword [esp + 0x154]
lea eax, [esi + eax]
mov dword [esp + 4], ebx
mov dword [esp], eax
mov dword [esp + 8], 0x3f8
call fcn.007c51d0
mov edi, dword [ebp + 0xc]
jmp 0x687e52
mov byte [esp + 0x144], 9
lea eax, [ebx + 8]
mov ecx, dword [esp + 0x154]
lea ecx, [esi + ecx]
mov dword [esp + 4], eax
mov dword [esp], ecx
mov dword [esp + 8], 0x3f8
call fcn.007c51d0
add edi, 1
jb 0x687d3e
mov edi, dword [ebp + 0xc]
jmp 0x687e52
mov byte [esp + 0x138], dl
movzx eax, byte [esp + 0x148]
cmp eax, 0x3c
je 0x687e28
mov ebx, 0xffffffff
cmp eax, 0x6b
je 0x687dc2
jmp 0x687df6
mov byte [esp + 0x148], 0x4c
mov eax, dword [esp + 0x154]
lea eax, [esi + eax]
mov dword [esp], eax
mov dword [esp + 8], 0x3f8
mov dword [esp + 4], 0
call fcn.007c51a0
add ebx, 1
jb 0x687d98
jmp 0x687e52
mov byte [esp + 0x148], 0x6b
mov eax, dword [esp + 0x154]
lea eax, [esi + eax]
mov dword [esp], eax
mov dword [esp + 8], 0x3f8
mov dword [esp + 4], 0
call fcn.007c51a0
add ebx, 1
jb 0x687dcc
jmp 0x687e52
mov byte [esp + 0x144], 0x7a
add ebx, 8
mov eax, dword [esp + 0x154]
lea eax, [esi + eax]
mov dword [esp + 4], ebx
mov dword [esp], eax
mov dword [esp + 8], 0x3f8
call fcn.007c51d0
jmp 0x687e52
mov byte [esp + 0x148], 0x3c
mov eax, dword [esp + 0x154]
lea eax, [esi + eax]
mov dword [esp], eax
mov dword [esp + 8], 0x3f8
mov dword [esp + 4], 0
call fcn.007c51a0
movzx eax, byte [esp + 0x138]
cmp eax, 0x1a
mov eax, dword [esp + 0x14c]
mov ebx, dword [esp + 0x13c]
jne 0x687e7f
add dword [esp + 0x154], 0x3f8
inc ebx
cmp ebx, eax
mov dl, 0x6c
jmp 0x687e8f
add dword [esp + 0x154], 0x3f8
inc ebx
cmp ebx, eax
mov dl, 0x1a
mov eax, dword [esp + 0x140]
jne 0x687cd4
mov dword [esp + 0x140], eax
mov eax, dword [edi + 0x10c]
mov ecx, dword [eax]
mov edx, dword [eax + 0x24]
add ecx, dword [eax + 0xc]
add ecx, dword [eax + 0x18]
lea eax, [edx + ecx + 8]
mov ebx, 0x6b
cmp eax, dword [esp + 0x134]
ja 0x687f34
mov dword [esp + 4], eax
mov dword [esp], esi
mov dword [esp + 0xc], 0x1eff2356
mov dword [esp + 8], 0xde7a38c4
call fcn.007c8ec0
and edx, 0x7fffffff
mov ecx, dword [ebp + 0x14]
mov dword [ecx], eax
mov dword [ecx + 4], edx
xor ebx, ebx
mov edx, dword [ebp + 0x18]
test edx, edx
je 0x687f34
mov cl, 0x31
mov eax, 0xffffffff
movzx ecx, cl
cmp ecx, 0x31
je 0x687f77
cmp ecx, 0x3a
je 0x687f93
cmp ecx, 0x4d
mov eax, dword [esp + 0x128]
mov dword [edx], eax
mov eax, dword [esp + 0x12c]
mov dword [edx + 4], eax
jmp 0x687f34
mov ebx, 0x67
xor esi, esi
jmp 0x687f34
xor esi, esi
mov al, byte [esp + 0x124]
movzx eax, al
cmp eax, 0x5a
jne 0x687f57
mov eax, dword [esp + 0x140]
mov dword [esp], eax
call fcn.004936c0
jmp 0x6871fd
mov edi, 0xffffffff
jmp 0x687f6d
mov eax, dword [esp + 0x140]
mov dword [esp], eax
call fcn.004936c0
add edi, 1
jb 0x687f5e
jmp 0x6871fd
mov ecx, dword [esp + 0x12c]
mov edi, dword [esp + 0x128]
jmp 0x687f8c
mov dword [edx], edi
mov dword [edx + 4], ecx
add eax, 1
jb 0x687f87
jmp 0x687f34
mov ecx, dword [esp + 0x12c]
mov edi, dword [esp + 0x128]
jmp 0x687fa8
mov dword [edx], edi
mov dword [edx + 4], ecx
add eax, 1
jb 0x687fa3
jmp 0x687f34