Function at 0x40da7e
Capabilities:
Authenticate hmac
Encode data using xor
Encrypt data using speck

Disassembly:
mov eax, 0x4bee5f
call fcn.004be948
push ecx
mov eax, 0x115c
call fcn.004bb2f0
push ebx
push esi
push edi
mov dword [ebp - 0x10], esp
mov byte [ebp - 0x5c], dl
mov dword [ebp - 0x104], ecx
mov dword [ebp - 0x40], 0x25260417
mov dword [ebp - 0x2c], 0xda0bdbdf
xor edi, edi
inc edi
push edi
lea ecx, [ebp - 0x514]
call fcn.0040a30e
push 4
pop ebx
push ebx
lea ecx, [ebp - 0x694]
call fcn.0040a30e
xor eax, eax
mov dword [ebp - 0x14], eax
cmp dword [ebp - 0x14], edi
jge 0x40daf2
mov ecx, dword [ebp - 0x14]
mov eax, dword [ebp - 0x514]
mov dword [eax + ecx*4], 0xd96753f3
inc dword [ebp - 0x14]
cmp dword [ebp - 0x14], edi
jl 0x40dad8
xor eax, eax
mov dword [ebp - 0x14], eax
jmp 0x40db0a
mov ecx, dword [ebp - 0x14]
mov eax, dword [ebp - 0x694]
mov dword [eax + ecx*4], 0xb34c266d
inc dword [ebp - 0x14]
cmp dword [ebp - 0x14], ebx
jl 0x40daf7
mov eax, dword [ebp - 0x2c]
mov eax, dword [ebp - 0x40]
cmp dword [ebp - 0x40], 0xb0ad8ea5
sbb ecx, ecx
neg ecx
imul ecx, dword [ebp - 0x40]
mov eax, dword [ebp - 0x514]
mov dword [eax], ecx
mov eax, dword [ebp - 0x40]
mov eax, dword [ebp - 0x2c]
mov eax, dword [ebp - 0x40]
mov eax, dword [ebp - 0x40]
xor ecx, ecx
cmp eax, 0xd95f
setge cl
mov eax, dword [ebp - 0x40]
xor edx, edx
cmp eax, ecx
setle dl
mov eax, dword [ebp - 0x40]
xor ecx, ecx
cmp edx, eax
setg cl
mov dword [ebp - 0x2c], ecx
lea ecx, [ebp - 0x694]
call fcn.0040a3e0
lea ecx, [ebp - 0x514]
call fcn.0040a3e0
mov dword [ebp - 0x3c], 0x102c
cmp dword [ebp - 0x3c], 0x137f
jle 0x40dbeb
xor ebx, ebx
mov dword [ebp - 0x38], ebx
xor eax, eax
mov dword [ebp - 0x2c], eax
mov dword [ebp - 0x34], 0x6d46
xor ebx, ebx
xor esi, esi
mov ecx, ebx
shl eax, cl
cdq
push edx
push eax
lea ecx, [ebp - 0xc9c]
call fcn.004019b1
pop ecx
pop ecx
mov ecx, eax
call fcn.00409fae
push eax
call fcn.004a91a7
pop ecx
push esi
push edi
lea ecx, [ebp - 0xc9c]
call fcn.0040a8ad
inc ebx
cmp ebx, 0x5d79
mov eax, dword [ebp - 0x2c]
jl 0x40db94
mov ebx, dword [ebp - 0x38]
add eax, ebx
mov dword [ebp - 0x2c], eax
dec dword [ebp - 0x34]
jne 0x40db90
inc ebx
mov dword [ebp - 0x38], ebx
cmp ebx, 0x32ef
jl 0x40db84
push 4
pop ebx
mov dword [ebp - 0x40], 0xe57ad95e
mov dword [ebp - 0x24], 9
push edi
lea ecx, [ebp - 0x52c]
call fcn.0040a30e
mov dword [ebp - 0x18], 0
jmp 0x40dc21
mov ecx, dword [ebp - 0x18]
mov eax, dword [ebp - 0x52c]
mov dword [eax + ecx*4], 0xfffffffc
inc dword [ebp - 0x18]
cmp dword [ebp - 0x18], edi
jl 0x40dc0e
mov eax, dword [ebp - 0x40]
imul eax, dword [ebp - 0x40]
mov dword [ebp - 0x24], eax
mov dword [ebp - 0x40], 0
jmp 0x40dc4c
mov ecx, dword [ebp - 0x40]
mov eax, dword [ebp - 0x52c]
mov dword [eax + ecx*4], 0x38bea122
inc dword [ebp - 0x40]
cmp dword [ebp - 0x40], edi
jl 0x40dc39
lea ecx, [ebp - 0x52c]
call fcn.0040a3e0
mov dword [ebp - 0x40], 0x25260417
movdqa xmm0, xmmword [0xa966d0]
movdqu xmmword [ebp - 0x9c0], xmm0
lea ecx, [ebp - 0x9c0]
lea eax, [ebp - 0x9b0]
push ecx
push eax
push ecx
lea ecx, [ebp - 0x808]
call fcn.0040a3ba
mov dword [ebp - 0x44], 3
mov dword [ebp - 0x44], 3
cmp dword [ebp - 0x44], 0
jl 0x40dd02
mov dword [ebp - 0x34], 0x6c12a7b0
mov dword [ebp - 0x24], 0xffffffff
mov eax, dword [ebp - 0x44]
mov esi, dword [ebp - 0x44]
mov eax, dword [ebp - 0x44]
xor ecx, ecx
mov edx, dword [ebp - 0x808]
cmp dword [edx + eax*4], 0x23dcdf5
setl cl
imul ecx, dword [edx]
xor eax, eax
cmp ecx, 0x64e6
setl al
xor ecx, ecx
cmp dword [edx + esi*4], eax
setle cl
mov eax, dword [ebp - 0x34]
sub ecx, eax
xor edx, edx
cmp ecx, 0x5954
setge dl
mov eax, dword [ebp - 0x34]
xor ecx, ecx
cmp edx, eax
setle cl
mov dword [ebp - 0x24], ecx
dec dword [ebp - 0x44]
jns 0x40dca1
lea ecx, [ebp - 0x808]
call fcn.0040a3e0
mov dword [ebp - 0x50], 0xda0bdbdf
push edi
lea ecx, [ebp - 0x544]
call fcn.0040a30e
mov dword [ebp - 0x14], edi
xor eax, eax
mov dword [ebp - 0x18], eax
cmp dword [ebp - 0x18], edi
jge 0x40dd47
mov ecx, dword [ebp - 0x18]
mov eax, dword [ebp - 0x544]
mov dword [eax + ecx*4], 0x5b57fd54
inc dword [ebp - 0x18]
cmp dword [ebp - 0x18], edi
jl 0x40dd2d
xor eax, eax
mov dword [ebp - 0x14], eax
cmp dword [ebp - 0x14], eax
jg 0x40dddf
jmp 0x40dd57
xor eax, eax
mov dword [ebp - 0x24], 0x81f3403c
mov dword [ebp - 0x30], eax
mov eax, dword [ebp - 0x14]
mov eax, dword [ebp - 0x14]
mov edi, dword [ebp - 0x14]
mov eax, dword [ebp - 0x14]
xor ecx, ecx
mov esi, dword [ebp - 0x544]
cmp dword [esi + eax*4], 0x368a
setg cl
xor eax, eax
cmp ecx, dword [esi]
setge al
imul edx, eax, 0xfffffff7
mov eax, dword [ebp - 0x14]
xor ecx, ecx
cmp dword [esi + edi*4], eax
setne cl
xor eax, eax
cmp ecx, edx
setl al
xor ecx, ecx
cmp eax, 0xe49a
setg cl
mov eax, dword [ebp - 0x24]
xor edx, edx
cmp ecx, eax
sete dl
sub edx, 0x63a74adf
neg edx
sbb edx, edx
inc edx
mov dword [ebp - 0x30], edx
xor eax, eax
mov byte [ebp - 0x1d], al
cmp byte [ebp - 0x1d], al
je 0x40ddd0
push eax
call dword [fcn.00aab054]
xor eax, eax
inc dword [ebp - 0x14]
cmp dword [ebp - 0x14], eax
jle 0x40dd55
xor edi, edi
inc edi
lea ecx, [ebp - 0x544]
call fcn.0040a3e0
push edi
lea ecx, [ebp - 0x574]
call fcn.0040a30e
push ebx
lea ecx, [ebp - 0x6f0]
call fcn.0040a30e
mov dword [ebp - 0x1c], edi
mov dword [ebp - 0x24], 0xa421e0be
mov dword [ebp - 0x34], 0xffffffff
xor eax, eax
mov dword [ebp - 0x3f0], eax
mov dword [ebp - 0x3ec], eax
mov dword [ebp - 0x3e8], eax
mov dword [ebp - 0x3e4], eax
mov dword [ebp - 0x38], 0xfffffffc
mov dword [ebp - 0x30], 0xffffffff
push edi
lea ecx, [ebp - 0x55c]
call fcn.0040a30e
mov dword [ebp - 0x30], 0xfeea3821
mov dword [ebp - 0x34], 0x7bae
cmp dword [ebp - 0x34], 0x7be6
jle 0x40de93
xor esi, esi
xor ebx, ebx
mov edi, 0x41ba
mov eax, ebx
cdq
push edx
push eax
mov ecx, 0xaa82b8
call fcn.00409fb9
add ebx, esi
dec edi
jne 0x40de67
inc esi
cmp esi, 0xd30
jl 0x40de60
push 0x1532
call dword [0xaab48c]
inc edi
push 4
pop ebx
mov dword [ebp - 0x2c], 0xb6ea1325
and dword [ebp - 4], 0
cmp dword [ebp - 0x34], 0x7ae1
jge 0x40deb6
mov edx, 0xa83438
mov ecx, 0xaa82b8
call fcn.0040ca6e
or dword [ebp - 4], 0xffffffff
jmp 0x40dee0
xor eax, eax
mov dword [ebp - 0x34], edi
mov dword [ebp - 0x48], 0xde45
mov dword [ebp - 0x4c], 0xfffffff9
mov dword [ebp - 0x18], eax
jmp 0x40df0b
mov ecx, dword [ebp - 0x18]
mov eax, dword [ebp - 0x55c]
mov dword [eax + ecx*4], 0x7a30b913
inc dword [ebp - 0x18]
cmp dword [ebp - 0x18], edi
jl 0x40def8
mov eax, dword [ebp - 0x1c]
mov eax, dword [ebp - 0x38]
inc dword [ebp - 0x2c]
mov eax, dword [ebp - 0x2c]
mov eax, dword [ebp - 0x24]
mov eax, dword [ebp - 0x3ec]
mov eax, dword [ebp - 0x38]
mov eax, dword [ebp - 0x30]
mov eax, dword [ebp - 0x1c]
xor ecx, ecx
cmp eax, edi
setge cl
mov dword [ebp - 0x34], ecx
mov eax, dword [ebp - 0x34]
mov dword [ebp - 0x34], 0xfce3badf
mov eax, dword [ebp - 0x55c]
mov esi, dword [eax]
mov ecx, dword [ebp - 0x3e8]
mov eax, dword [ebp - 0x34]
xor edx, edx
cmp eax, ecx
setne dl
xor eax, eax
cmp edx, esi
setne al
xor edx, edx
cmp eax, esi
setne dl
mov eax, dword [ebp - 0x48]
xor ecx, ecx
cmp edx, eax
sete cl
mov dword [ebp - 0x4c], ecx
lea ecx, [ebp - 0x55c]
call fcn.0040a3e0
mov dword [ebp - 0x44], 0xfffffff8
mov dword [ebp - 0x14], 8
mov dword [ebp - 0x678], 0xb0d69b45
mov dword [ebp - 0x674], 0xb0d69b45
mov dword [ebp - 0x670], 0xb0d69b45
mov dword [ebp - 0x66c], 0xb0d69b45
mov dword [ebp - 0x44], 0x2559
cmp dword [ebp - 0x44], 0x2611
jle 0x40e045
xor eax, eax
mov dword [ebp - 0x18], eax
mov dword [ebp - 0x1c], eax
mov dword [ebp - 0x2c], 0x6108
xor ebx, ebx
xor ecx, ecx
mov dword [ebp - 0x34], ecx
mov dword [ebp - 0x38], 0x6496
xor esi, esi
shl eax, cl
cdq
push edx
push eax
lea ecx, [ebp - 0xccc]
call fcn.004019b1
pop ecx
pop ecx
mov ecx, eax
call fcn.00409fae
push eax
call fcn.004a91a7
pop ecx
push esi
push edi
lea ecx, [ebp - 0xccc]
call fcn.0040a8ad
mov ecx, dword [ebp - 0x34]
add ecx, ebx
mov dword [ebp - 0x34], ecx
dec dword [ebp - 0x38]
mov eax, dword [ebp - 0x1c]
jne 0x40dfe5
inc ebx
cmp ebx, 0x385c
jl 0x40dfd7
dec eax
mov dword [ebp - 0x1c], eax
dec dword [ebp - 0x2c]
jne 0x40dfd5
mov eax, dword [ebp - 0x18]
inc eax
mov dword [ebp - 0x18], eax
cmp eax, 0x60f
jl 0x40dfcb
push 4
pop ebx
mov dword [ebp - 0x34], edi
mov dword [ebp - 4], 2
cmp dword [ebp - 0x44], 0x21ae
jge 0x40e063
push 0xa834b4
call fcn.004a91a7
pop ecx
or dword [ebp - 4], 0xffffffff
jmp 0x40e08d
push 0xfffffffffffffff9
pop esi
xor eax, eax
mov dword [ebp - 0x24], 0xfffffff8
mov dword [ebp - 0x18], eax
jmp 0x40e0ac
mov eax, dword [ebp - 0x18]
mov dword [ebp + eax*4 - 0x60], 0xffffffff
inc dword [ebp - 0x18]
cmp dword [ebp - 0x18], edi
jl 0x40e09e
mov dword [ebp - 0x44], 0x13
jmp 0x40e1b6
push edi
lea ecx, [ebp - 0x1dc]
call fcn.0040a30e
mov dword [ebp - 0x18], 0
jmp 0x40e0e5
mov ecx, dword [ebp - 0x18]
mov eax, dword [ebp - 0x1dc]
mov dword [eax + ecx*4], 0x934f
inc dword [ebp - 0x18]
cmp dword [ebp - 0x18], edi
jl 0x40e0d2
mov eax, dword [ebp - 0x1dc]
cmp dword [eax], 0x6b6f
jg 0x40e106
cmp dword [eax], 0
jne 0x40e106
mov eax, dword [ebp - 0x44]
mov eax, dword [ebp - 0x1dc]
cmp dword [eax], 0x53494abc
jne 0x40e111
mov eax, dword [ebp - 0x44]
mov eax, dword [ebp - 0x14]
mov edx, dword [ebp - 0x14]
sub edx, 0x26c4
mov eax, dword [ebp - 0x14]
xor ecx, ecx
cmp edx, eax
setne cl
mov dword [ebp - 0x60], ecx
xor eax, eax
mov dword [ebp - 0x14], eax
cmp dword [ebp - 0x14], eax
jl 0x40e1a8
mov eax, dword [ebp - 0x14]
mov eax, dword [ebp + eax*4 - 0x60]
mov eax, dword [ebp - 0x14]
mov eax, dword [ebp + eax*4 - 0x60]
mov eax, dword [ebp - 0x14]
mov eax, dword [ebp - 0x14]
mov ecx, dword [ebp + eax*4 - 0x60]
mov eax, dword [ebp - 0x14]
mov dword [ebp + eax*4 - 0x60], ecx
mov eax, dword [ebp - 0x60]
mov eax, dword [ebp - 0x674]
xor ecx, ecx
mov eax, dword [ebp - 0x1dc]
cmp dword [eax], edi
setne cl
imul eax, ecx, 0x9586
mov dword [ebp - 0x34], eax
xor eax, eax
cmp dword [ebp - 0x34], eax
mov byte [ebp - 0x1d], al
je 0x40e190
cmp byte [ebp - 0x1d], al
je 0x40e1a3
push 0x1918
push eax
push eax
call dword [fcn.00aab380]
jmp 0x40e1a3
cmp byte [ebp - 0x1d], al
je 0x40e19e
push eax
call dword [fcn.00aab37c]
xor eax, eax
cmp dword [ebp - 0x24], eax
jne 0x40e1a8
dec dword [ebp - 0x14]
jns 0x40e134
lea ecx, [ebp - 0x1dc]
call fcn.0040a3e0
dec dword [ebp - 0x44]
cmp dword [ebp - 0x44], 0xffffffe3
je 0x40e0bd
mov dword [ebp - 0x14], 0
jmp 0x40e1dc
mov ecx, dword [ebp - 0x14]
mov eax, dword [ebp - 0x574]
mov dword [eax + ecx*4], 0xd96753f3
inc dword [ebp - 0x14]
cmp dword [ebp - 0x14], edi
jl 0x40e1c9
mov dword [ebp - 0x14], 0
jmp 0x40e1fd
mov ecx, dword [ebp - 0x14]
mov eax, dword [ebp - 0x6f0]
mov dword [eax + ecx*4], 0xb34c266d
inc dword [ebp - 0x14]
cmp dword [ebp - 0x14], ebx
jl 0x40e1ea
mov eax, dword [ebp - 0x50]
mov eax, dword [ebp - 0x40]
cmp dword [ebp - 0x40], 0xb0ad8ea5
sbb ecx, ecx
neg ecx
imul ecx, dword [ebp - 0x40]
mov eax, dword [ebp - 0x574]
mov dword [eax], ecx
mov eax, dword [ebp - 0x40]
mov eax, dword [ebp - 0x50]
mov eax, dword [ebp - 0x40]
mov eax, dword [ebp - 0x40]
xor ecx, ecx
cmp eax, 0xd95f
setge cl
mov eax, dword [ebp - 0x40]
xor edx, edx
cmp eax, ecx
setle dl
mov eax, dword [ebp - 0x40]
xor ecx, ecx
cmp edx, eax
setg cl
mov dword [ebp - 0x50], ecx
lea ecx, [ebp - 0x6f0]
call fcn.0040a3e0
lea ecx, [ebp - 0x574]
call fcn.0040a3e0
mov dword [ebp - 4], ebx
cmp dword [ebp - 0x3c], 0xc47
jge 0x40e279
push 0xa833e8
call fcn.004a91a7
pop ecx
or dword [ebp - 4], 0xffffffff
jmp 0x40e2a6
push 2
lea ecx, [ebp - 0x160]
call fcn.0040a30e
xor eax, eax
mov dword [ebp - 0x14], eax
mov dword [ebp - 0x34], edi
mov dword [ebp - 0x38], 0xffffffff
mov dword [ebp - 0x30], 0xffffffff
mov dword [ebp - 0x24], eax
mov dword [ebp - 0x24], ebx
mov dword [ebp - 0x24], esi
mov dword [ebp - 0x24], 0xffffffff
mov dword [ebp - 0x14], eax
cmp dword [ebp - 0x14], 2
jge 0x40e2fd
mov ecx, dword [ebp - 0x14]
mov eax, dword [ebp - 0x160]
mov dword [eax + ecx*4], 0xfffffff6
inc dword [ebp - 0x14]
cmp dword [ebp - 0x14], 2
jl 0x40e2e2
xor eax, eax
mov dword [ebp - 0x14], eax
cmp dword [ebp - 0x14], 3
jge 0x40e31f
mov eax, dword [ebp - 0x14]
mov dword [ebp + eax*4 - 0x820], 0x2e8b5a47
inc dword [ebp - 0x14]
cmp dword [ebp - 0x14], 3
jl 0x40e306
xor eax, eax
mov dword [ebp - 0x14], eax
cmp dword [ebp - 0x14], edi
jg 0x40e428
mov ebx, dword [ebp - 0x160]
mov dword [ebp - 0x24], ebx
mov dword [ebp - 0x30], 0xcd3624b6
mov dword [ebp - 0x48], 9
mov dword [ebp - 0x48], 0x4b38b4b7
mov dword [ebp - 0x48], edi
push edi
lea ecx, [ebp - 0x708]
call fcn.0040a30e
mov dword [ebp - 0x18], 0
jmp 0x40e374
mov ecx, dword [ebp - 0x18]
mov eax, dword [ebp - 0x708]
mov dword [eax + ecx*4], 0xfffffffe
inc dword [ebp - 0x18]
cmp dword [ebp - 0x18], edi
jl 0x40e361
mov ecx, dword [ebp - 0x14]
mov eax, dword [ebp - 0x160]
xor esi, esi
cmp dword [eax + ecx*4], esi
je 0x40e3e8
mov edx, dword [ebp - 0x14]
mov esi, dword [ebx + 4]
lea ecx, [esi + 0x43925499]
xor ebx, ebx
mov eax, dword [ebp - 0x160]
cmp ecx, dword [eax + edx*4]
setl bl
xor eax, eax
cmp ebx, 0x5290ce96
setl al
sub eax, 8
jne 0x40e3b7
test esi, esi
je 0x40e3b9
mov esi, edi
mov ecx, dword [ebp - 0x14]
mov edx, dword [ebp - 0x14]
mov eax, dword [ebp - 0x160]
mov ecx, dword [eax + ecx*4]
sub ecx, dword [eax + edx*4]
sub ecx, esi
xor edx, edx
mov ebx, dword [ebp - 0x24]
cmp ecx, dword [ebx + 4]
setle dl
mov eax, dword [ebp - 0x14]
xor ecx, ecx
cmp edx, eax
setne cl
mov dword [ebp - 0x34], ecx
mov eax, dword [ebp - 0x34]
mov ecx, dword [ebp - 0x14]
xor edx, edx
mov eax, dword [ebp - 0x160]
cmp ecx, dword [eax]
setl dl
mov ecx, dword [ebx + 4]
add ecx, edx
mov eax, dword [ebp - 0x38]
sub ecx, eax
sub ecx, dword [ebp - 0x30]
add ecx, dword [ebp - 0x38]
mov dword [ebp - 0x30], ecx
inc dword [ebp - 0x818]
lea ecx, [ebp - 0x708]
call fcn.0040a3e0
inc dword [ebp - 0x14]
cmp dword [ebp - 0x14], edi
jle 0x40e334
lea ecx, [ebp - 0x160]
call fcn.0040a3e0
push edi
lea ecx, [ebp - 0x58c]
call fcn.0040a30e
mov dword [ebp - 0x24], 0xffffffff
push edi
lea ecx, [ebp - 0x838]
call fcn.0040a30e
mov dword [ebp - 0x24], 0xfffffffc
mov dword [ebp - 0x14], 0
jmp 0x40e475
mov ecx, dword [ebp - 0x14]
mov eax, dword [ebp - 0x58c]
mov dword [eax + ecx*4], 0xfffffffb
inc dword [ebp - 0x14]
cmp dword [ebp - 0x14], edi
jl 0x40e462
mov dword [ebp - 0x14], 0
xor esi, esi
cmp dword [ebp - 0x14], edi
jge 0x40e499
mov ecx, dword [ebp - 0x14]
mov eax, dword [ebp - 0x838]
mov dword [eax + ecx*4], esi
inc dword [ebp - 0x14]
jmp 0x40e483
mov eax, dword [ebp - 0x58c]
mov dword [eax], esi
xor eax, eax
mov byte [ebp - 0x1d], al
cmp byte [ebp - 0x1d], al
je 0x40e4c1
push eax
push 0x183a
push 0x361
push 0xd66
call dword [fcn.00aab050]
lea ecx, [ebp - 0x838]
call fcn.0040a3e0
lea ecx, [ebp - 0x58c]
call fcn.0040a3e0
mov dword [ebp - 0x58], 0x25260417
mov dword [ebp - 0x18], 0x42c70bb7
xor eax, eax
mov dword [ebp - 0x18], eax
cmp dword [ebp - 0x18], 3
jge 0x40e509
mov eax, dword [ebp - 0x18]
mov dword [ebp + eax*4 - 0xffc], 0xfffffffc
inc dword [ebp - 0x18]
cmp dword [ebp - 0x18], 3
jl 0x40e4f0
xor eax, eax
mov dword [ebp - 0x18], 2
cmp dword [ebp - 0x18], eax
jl 0x40e53f
mov dword [ebp - 0x1c], edi
mov dword [ebp - 0x1c], 2
cmp dword [ebp - 0x1c], eax
jl 0x40e53a
mov byte [ebp - 0x1d], al
cmp byte [ebp - 0x1d], 0
je 0x40e535
call dword [fcn.00aab378]
xor eax, eax
dec dword [ebp - 0x1c]
jns 0x40e524
dec dword [ebp - 0x18]
jns 0x40e515
mov dword [ebp - 0x18], 0x128c
cmp dword [ebp - 0x18], 0x12cc
jle 0x40e5a5
mov edi, eax
mov dword [ebp - 0x38], eax
mov dword [ebp - 0x2c], eax
mov dword [ebp - 0x34], 0x7dbb
mov esi, eax
mov ebx, dword [ebp - 0x2c]
mov eax, ebx
xor eax, esi
xor eax, edi
cdq
push edx
push eax
mov ecx, 0xaa82b8
call fcn.00409fb9
inc esi
cmp esi, 0x25cc
jl 0x40e563
mov ebx, dword [ebp - 0x38]
add dword [ebp - 0x2c], ebx
dec dword [ebp - 0x34]
push 0
pop eax
jne 0x40e55e
inc ebx
mov dword [ebp - 0x38], ebx
cmp ebx, 0x70b7
jl 0x40e554
inc edi
cmp edi, 0x7ba8
jl 0x40e551
xor edi, edi
inc edi
mov dword [ebp - 0x38], 0x734d
cmp dword [ebp - 0x38], 0x7434
jle 0x40e61e
xor ecx, ecx
mov dword [ebp - 0x1c], ecx
xor ebx, ebx
xor eax, eax
mov dword [ebp - 0x34], eax
xor esi, esi
and eax, ebx
or eax, ecx
cdq
push edx
push eax
lea ecx, [ebp - 0xf18]
call fcn.004019b1
pop ecx
pop ecx
mov ecx, eax
call fcn.00409fae
push eax
call fcn.004a91a7
pop ecx
push esi
push edi
lea ecx, [ebp - 0xf18]
call fcn.0040a8ad
mov eax, dword [ebp - 0x34]
inc eax
mov dword [ebp - 0x34], eax
cmp eax, 0x64ed
mov ecx, dword [ebp - 0x1c]
jl 0x40e5c3
inc ebx
cmp ebx, 0x3440
jl 0x40e5bc
inc ecx
mov dword [ebp - 0x1c], ecx
cmp ecx, 0x37c1
jl 0x40e5ba
call dword [0xaab2d8]
mov byte [ebp - 0x1d], 0
mov dword [ebp - 4], 6
cmp dword [ebp - 0x38], 0x7264
jge 0x40e63d
push 0xa83550
call fcn.004a91a7
pop ecx
or dword [ebp - 4], 0xffffffff
jmp 0x40e664
push 4
pop ebx
push 0xfffffffffffffff9
pop esi
xor eax, eax
cmp byte [ebp - 0x1d], al
je 0x40e684
push eax
push eax
push 0x22b
push 0x1106
push eax
call dword [fcn.00aab4a8]
mov dword [ebp - 4], 8
cmp dword [ebp - 0x18], 0x1225
jge 0x40e6a3
mov edx, 0xa83530
mov ecx, 0xaa82b8
call fcn.0040ca6e
or dword [ebp - 4], 0xffffffff
jmp 0x40e6d0
mov dword [ebp - 0x50], 0xda0bdbdf
push 2
lea ecx, [ebp - 0x1c4]
call fcn.0040a30e
xor eax, eax
mov dword [ebp - 0x14], eax
mov dword [ebp - 0x34], edi
mov dword [ebp - 0x38], 0xffffffff
mov dword [ebp - 0x24], 0xffffffff
mov dword [ebp - 0x24], eax
mov dword [ebp - 0x24], ebx
mov dword [ebp - 0x24], esi
mov dword [ebp - 0x24], 0xffffffff
mov dword [ebp - 0x14], eax
cmp dword [ebp - 0x14], 2
jge 0x40e72e
mov ecx, dword [ebp - 0x14]
mov eax, dword [ebp - 0x1c4]
mov dword [eax + ecx*4], 0xfffffff6
inc dword [ebp - 0x14]
cmp dword [ebp - 0x14], 2
jl 0x40e713
xor eax, eax
mov dword [ebp - 0x14], eax
cmp dword [ebp - 0x14], 3
jge 0x40e750
mov eax, dword [ebp - 0x14]
mov dword [ebp + eax*4 - 0x720], 0x2e8b5a47
inc dword [ebp - 0x14]
cmp dword [ebp - 0x14], 3
jl 0x40e737
xor eax, eax
mov dword [ebp - 0x14], eax
cmp dword [ebp - 0x14], edi
jg 0x40e8d7
mov dword [ebp - 0x24], 0xcd3624b6
mov dword [ebp - 0x30], 9
mov dword [ebp - 0x30], 0x4b38b4b7
mov dword [ebp - 0x30], edi
push edi
lea ecx, [ebp - 0x850]
call fcn.0040a30e
mov dword [ebp - 0x18], 0
jmp 0x40e79c
mov ecx, dword [ebp - 0x18]
mov eax, dword [ebp - 0x850]
mov dword [eax + ecx*4], 0xfffffffe
inc dword [ebp - 0x18]
cmp dword [ebp - 0x18], edi
jl 0x40e789
mov dword [ebp - 0x2c], 0x7346
cmp dword [ebp - 0x2c], 0x7686
jle 0x40e7e9
xor edi, edi
xor esi, esi
xor ebx, ebx
lea eax, [esi + edi]
mov ecx, ebx
sar eax, cl
cdq
push edx
push eax
mov ecx, 0xaa82b8
call fcn.00409fb9
inc ebx
cmp ebx, 0x1256
jl 0x40e7b7
inc esi
cmp esi, 0x14d8
jl 0x40e7b5
inc edi
cmp edi, 0x2e64
jl 0x40e7b3
xor edi, edi
inc edi
mov ecx, dword [ebp - 0x14]
mov eax, dword [ebp - 0x1c4]
xor esi, esi
cmp dword [eax + ecx*4], esi
je 0x40e855
mov edx, dword [ebp - 0x14]
mov esi, dword [ebp - 0x1c4]
mov ebx, dword [esi + 4]
lea eax, [ebx + 0x43925499]
xor ecx, ecx
cmp eax, dword [esi + edx*4]
setl cl
xor eax, eax
cmp ecx, 0x5290ce96
setl al
sub eax, 8
jne 0x40e827
test ebx, ebx
je 0x40e829
mov ebx, edi
mov ecx, dword [ebp - 0x14]
mov edx, dword [ebp - 0x14]
mov eax, dword [ebp - 0x1c4]
mov ecx, dword [eax + ecx*4]
sub ecx, dword [eax + edx*4]
sub ecx, ebx
xor edx, edx
cmp ecx, dword [esi + 4]
setle dl
mov eax, dword [ebp - 0x14]
xor ecx, ecx
cmp edx, eax
setne cl
mov dword [ebp - 0x34], ecx
mov eax, dword [ebp - 0x34]
mov eax, dword [ebp - 0x14]
xor edx, edx
mov ecx, dword [ebp - 0x1c4]
cmp eax, dword [ecx]
setl dl
mov ecx, dword [ecx + 4]
add ecx, edx
mov eax, dword [ebp - 0x38]
sub ecx, eax
sub ecx, dword [ebp - 0x24]
add ecx, dword [ebp - 0x38]
mov dword [ebp - 0x24], ecx
mov dword [ebp - 4], 0xa
cmp dword [ebp - 0x2c], 0x6f80
jge 0x40e897
mov edx, 0xa83598
mov ecx, 0xaa82b8
call fcn.0040ca6e
or dword [ebp - 4], 0xffffffff
jmp 0x40e8be
inc dword [ebp - 0x718]
lea ecx, [ebp - 0x850]
call fcn.0040a3e0
inc dword [ebp - 0x14]
jmp 0x40e753
lea ecx, [ebp - 0x1c4]
call fcn.0040a3e0
push edi
lea ecx, [ebp - 0x5d4]
call fcn.0040a30e
mov dword [ebp - 0x18], 0x133
cmp dword [ebp - 0x18], 0x162
jle 0x40e961
xor ecx, ecx
mov dword [ebp - 0x1c], ecx
xor ebx, ebx
xor eax, eax
mov dword [ebp - 0x34], eax
xor esi, esi
add eax, ebx
and eax, ecx
cdq
push edx
push eax
lea ecx, [ebp - 0xcfc]
call fcn.004019b1
pop ecx
pop ecx
mov ecx, eax
call fcn.00409fae
push eax
call fcn.004a91a7
pop ecx
push esi
push edi
lea ecx, [ebp - 0xcfc]
call fcn.0040a8ad
mov eax, dword [ebp - 0x34]
inc eax
mov dword [ebp - 0x34], eax
cmp eax, 0x49b9
mov ecx, dword [ebp - 0x1c]
jl 0x40e90c
inc ebx
cmp ebx, 0x17f5
jl 0x40e905
inc ecx
mov dword [ebp - 0x1c], ecx
cmp ecx, 0x57dd
jl 0x40e903
mov dword [ebp - 0x2c], 5
push 2
lea ecx, [ebp - 0x868]
call fcn.0040a30e
mov dword [ebp - 0x24], edi
mov dword [ebp - 0x24], 3
push 3
lea ecx, [ebp - 0x738]
call fcn.0040a30e
mov dword [ebp - 0x28], 0
jmp 0x40e9a6
mov eax, dword [ebp - 0x28]
mov dword [ebp + eax*4 - 0xb08], 0xffffffff
inc dword [ebp - 0x28]
cmp dword [ebp - 0x28], 2
jl 0x40e995
mov dword [ebp - 0x28], 0
jmp 0x40e9c8
mov ecx, dword [ebp - 0x28]
mov eax, dword [ebp - 0x868]
mov dword [eax + ecx*4], 0x9b857552
inc dword [ebp - 0x28]
cmp dword [ebp - 0x28], 2
jl 0x40e9b5
mov dword [ebp - 0x28], 0
jmp 0x40e9ea
mov ecx, dword [ebp - 0x28]
mov eax, dword [ebp - 0x738]
mov dword [eax + ecx*4], 0x7b30477a
inc dword [ebp - 0x28]
cmp dword [ebp - 0x28], 3
jl 0x40e9d7
mov eax, dword [ebp - 0x2c]
mov eax, dword [ebp - 0x2c]
mov dword [ebp - 0x2c], 0xc511ec1f
mov dword [ebp - 0x2c], 0x5554
cmp dword [ebp - 0x2c], 0x5929
jle 0x40ea73
xor eax, eax
mov dword [ebp - 0x1c], eax
xor ebx, ebx
xor ecx, ecx
mov dword [ebp - 0x34], ecx
mov dword [ebp - 0x38], 0x1f52
xor esi, esi
shl eax, cl
cdq
push edx
push eax
lea ecx, [ebp - 0x1110]
call fcn.004019b1
pop ecx
pop ecx
mov ecx, eax
call fcn.00409fae
push eax
call fcn.004a91a7
pop ecx
push esi
push edi
lea ecx, [ebp - 0x1110]
call fcn.0040a8ad
mov ecx, dword [ebp - 0x34]
add ecx, ebx
mov dword [ebp - 0x34], ecx
dec dword [ebp - 0x38]
mov eax, dword [ebp - 0x1c]
jne 0x40ea22
inc ebx
cmp ebx, 0x3e09
jl 0x40ea14
inc eax
mov dword [ebp - 0x1c], eax
cmp eax, 0x2209
jl 0x40ea12
mov byte [ebp - 0x1d], 0
mov dword [ebp - 4], 0xc
cmp dword [ebp - 0x2c], 0x549e
jge 0x40ea92
push 0xa83668
call fcn.004a91a7
pop ecx
or dword [ebp - 4], 0xffffffff
jmp 0x40eab9
push 4
xor eax, eax
pop ebx
cmp byte [ebp - 0x1d], al
je 0x40eacf
push eax
push 0x1ad9
call dword [fcn.00aab54c]
lea ecx, [ebp - 0x738]
call fcn.0040a3e0
lea ecx, [ebp - 0x868]
call fcn.0040a3e0
mov dword [ebp - 4], 0xe
cmp dword [ebp - 0x18], 0xfffffd9d
jge 0x40eb00
push 0xa83608
call fcn.004a91a7
pop ecx
or dword [ebp - 4], 0xffffffff
jmp 0x40eb2a
push ebx
lea ecx, [ebp - 0x880]
call fcn.0040a30e
mov dword [ebp - 0x40], 0xe57ad95e
mov dword [ebp - 0x24], 9
push edi
lea ecx, [ebp - 0x5a4]
call fcn.0040a30e
mov dword [ebp - 0x18], 0
jmp 0x40eb6c
mov ecx, dword [ebp - 0x18]
mov eax, dword [ebp - 0x5a4]
mov dword [eax + ecx*4], 0xfffffffc
inc dword [ebp - 0x18]
cmp dword [ebp - 0x18], edi
jl 0x40eb59
mov dword [ebp - 0x2c], 0x2303
cmp dword [ebp - 0x2c], 0x2682
jle 0x40ebc6
xor ebx, ebx
mov dword [ebp - 0x38], ebx
mov dword [ebp - 0x24], ebx
mov dword [ebp - 0x34], 0x1448
xor esi, esi
mov eax, ebx
mov ecx, esi
sar eax, cl
cdq
push edx
push eax
mov ecx, 0xaa82b8
call fcn.00409fb9
inc esi
cmp esi, 0x9a9
jl 0x40eb92
dec ebx
dec dword [ebp - 0x34]
jne 0x40eb90
mov ebx, dword [ebp - 0x38]
inc ebx
mov dword [ebp - 0x38], ebx
cmp ebx, 0x563b
jl 0x40eb86
push 4
pop ebx
mov eax, dword [ebp - 0x40]
imul eax, dword [ebp - 0x40]
mov dword [ebp - 0x24], eax
mov dword [ebp - 4], 0x10
cmp dword [ebp - 0x2c], 0x2086
jge 0x40ebef
mov edx, 0xa83718
mov ecx, 0xaa82b8
call fcn.0040ca6e
or dword [ebp - 4], 0xffffffff
jmp 0x40ec19
xor eax, eax
mov dword [ebp - 0x40], eax
jmp 0x40ec33
mov ecx, dword [ebp - 0x40]
mov eax, dword [ebp - 0x5a4]
mov dword [eax + ecx*4], 0x38bea122
inc dword [ebp - 0x40]
cmp dword [ebp - 0x40], edi
jl 0x40ec20
lea ecx, [ebp - 0x5a4]
call fcn.0040a3e0
mov dword [ebp - 0x14], 0
jmp 0x40ec5f
mov ecx, dword [ebp - 0x14]
mov eax, dword [ebp - 0x5d4]
mov dword [eax + ecx*4], 0xd96753f3
inc dword [ebp - 0x14]
cmp dword [ebp - 0x14], edi
jl 0x40ec4c
movdqa xmm0, xmmword [0xa966d0]
movdqu xmmword [ebp - 0xa00], xmm0
lea ecx, [ebp - 0xa00]
lea eax, [ebp - 0x9f0]
push ecx
push eax
push ecx
lea ecx, [ebp - 0x750]
call fcn.0040a3ba
mov dword [ebp - 0x44], 3
mov dword [ebp - 0x44], 3
cmp dword [ebp - 0x44], 0
jl 0x40ed03
mov dword [ebp - 0x34], 0x6c12a7b0
mov dword [ebp - 0x24], 0xffffffff
mov eax, dword [ebp - 0x44]
mov esi, dword [ebp - 0x44]
mov eax, dword [ebp - 0x44]
xor ecx, ecx
mov edx, dword [ebp - 0x750]
cmp dword [edx + eax*4], 0x23dcdf5
setl cl
imul ecx, dword [edx]
xor eax, eax
cmp ecx, 0x64e6
setl al
xor ecx, ecx
cmp dword [edx + esi*4], eax
setle cl
mov eax, dword [ebp - 0x34]
sub ecx, eax
xor edx, edx
cmp ecx, 0x5954
setge dl
mov eax, dword [ebp - 0x34]
xor ecx, ecx
cmp edx, eax
setle cl
mov dword [ebp - 0x24], ecx
dec dword [ebp - 0x44]
jns 0x40eca2
lea ecx, [ebp - 0x750]
call fcn.0040a3e0
mov dword [ebp - 0x14], 0
jmp 0x40ed2a
mov ecx, dword [ebp - 0x14]
mov eax, dword [ebp - 0x880]
mov dword [eax + ecx*4], 0xb34c266d
inc dword [ebp - 0x14]
cmp dword [ebp - 0x14], ebx
jl 0x40ed17
push edi
lea ecx, [ebp - 0x5bc]
call fcn.0040a30e
mov dword [ebp - 0x14], edi
xor eax, eax
mov dword [ebp - 0x18], eax
cmp dword [ebp - 0x18], edi
jge 0x40ed62
mov ecx, dword [ebp - 0x18]
mov eax, dword [ebp - 0x5bc]
mov dword [eax + ecx*4], 0x5b57fd54
inc dword [ebp - 0x18]
cmp dword [ebp - 0x18], edi
jl 0x40ed48
xor eax, eax
mov dword [ebp - 0x14], eax
cmp dword [ebp - 0x14], eax
jg 0x40edfa
jmp 0x40ed72
xor eax, eax
mov dword [ebp - 0x24], 0x81f3403c
mov dword [ebp - 0x30], eax
mov eax, dword [ebp - 0x14]
mov eax, dword [ebp - 0x14]
mov edi, dword [ebp - 0x14]
mov eax, dword [ebp - 0x14]
xor ecx, ecx
mov esi, dword [ebp - 0x5bc]
cmp dword [esi + eax*4], 0x368a
setg cl
xor eax, eax
cmp ecx, dword [esi]
setge al
imul edx, eax, 0xfffffff7
mov eax, dword [ebp - 0x14]
xor ecx, ecx
cmp dword [esi + edi*4], eax
setne cl
xor eax, eax
cmp ecx, edx
setl al
xor ecx, ecx
cmp eax, 0xe49a
setg cl
mov eax, dword [ebp - 0x24]
xor edx, edx
cmp ecx, eax
sete dl
sub edx, 0x63a74adf
neg edx
sbb edx, edx
inc edx
mov dword [ebp - 0x30], edx
xor eax, eax
mov byte [ebp - 0x1d], al
cmp byte [ebp - 0x1d], al
je 0x40edeb
push eax
call dword [fcn.00aab054]
xor eax, eax
inc dword [ebp - 0x14]
cmp dword [ebp - 0x14], eax
jle 0x40ed70
xor edi, edi
inc edi
lea ecx, [ebp - 0x5bc]
call fcn.0040a3e0
mov eax, dword [ebp - 0x50]
mov eax, dword [ebp - 0x58]
cmp dword [ebp - 0x58], 0xb0ad8ea5
sbb ecx, ecx
neg ecx
imul ecx, dword [ebp - 0x58]
mov eax, dword [ebp - 0x5d4]
mov dword [eax], ecx
mov eax, dword [ebp - 0x58]
mov eax, dword [ebp - 0x50]
mov eax, dword [ebp - 0x58]
mov eax, dword [ebp - 0x58]
xor ecx, ecx
cmp eax, 0xd95f
setge cl
mov eax, dword [ebp - 0x58]
xor edx, edx
cmp eax, ecx
setle dl
mov eax, dword [ebp - 0x58]
xor ecx, ecx
cmp edx, eax
setg cl
mov dword [ebp - 0x50], ecx
lea ecx, [ebp - 0x880]
call fcn.0040a3e0
lea ecx, [ebp - 0x5d4]
call fcn.0040a3e0
mov dword [ebp - 0x34], 0x41e5
mov dword [ebp - 0x44], 0xf57a7c20
mov dword [ebp - 0x18], 0
jmp 0x40ee8d
mov eax, dword [ebp - 0x18]
mov dword [ebp + eax*4 - 0xc24], 3
inc dword [ebp - 0x18]
cmp dword [ebp - 0x18], 3
jl 0x40ee7c
mov eax, dword [ebp - 0x34]
mov dword [ebp - 0x44], eax
mov dword [ebp - 0x44], 0
jmp 0x40eeb2
mov dword [ebp - 0x24], 0x924c0001
mov eax, dword [ebp - 0x34]
mov dword [ebp - 0x24], eax
inc dword [ebp - 0x44]
cmp dword [ebp - 0x44], 0x14
jle 0x40eea2
mov dword [ebp - 0x34], 0x41e5
mov dword [ebp - 0x44], 0xf57a7c20
mov dword [ebp - 0x18], 0
jmp 0x40eee0
mov eax, dword [ebp - 0x18]
mov dword [ebp + eax*4 - 0x10b0], 3
inc dword [ebp - 0x18]
cmp dword [ebp - 0x18], 3
jl 0x40eecf
mov eax, dword [ebp - 0x34]
mov dword [ebp - 0x44], eax
mov dword [ebp - 0x44], 0
jmp 0x40ef05
mov dword [ebp - 0x24], 0x924c0001
mov eax, dword [ebp - 0x34]
mov dword [ebp - 0x24], eax
inc dword [ebp - 0x44]
cmp dword [ebp - 0x44], 0x14
jle 0x40eef5
push edi
lea ecx, [ebp - 0xc8]
call fcn.0040a30e
mov dword [ebp - 0x28], 0xffffffff
mov dword [ebp - 0x40], 0xa0c0e075
mov dword [ebp - 0x3d0], edi
mov dword [ebp - 0x3cc], edi
mov dword [ebp - 0x3c8], edi
mov dword [ebp - 0x3c4], edi
mov dword [ebp - 0x24], 0x908cb2cc
mov dword [ebp - 0x24], 0xfea38a5b
mov dword [ebp - 0x44], 0xfffffff8
mov dword [ebp - 0x24], edi
mov dword [ebp - 0x18], 0
jmp 0x40ef71
mov ecx, dword [ebp - 0x18]
mov eax, dword [ebp - 0xc8]
mov dword [eax + ecx*4], 0x730f94f3
inc dword [ebp - 0x18]
cmp dword [ebp - 0x18], edi
jl 0x40ef5e
mov eax, dword [ebp - 0xc8]
mov eax, dword [eax]
mov dword [ebp - 0x28], eax
mov eax, dword [ebp - 0x28]
mov ecx, dword [ebp - 0x28]
neg ecx
mov eax, dword [ebp - 0xc8]
cmp ecx, dword [eax]
jge 0x40ef9d
cmp dword [ebp - 0x28], 0
je 0x40ef9d
mov ecx, edi
jmp 0x40ef9f
xor ecx, ecx
mov eax, dword [ebp - 0xc8]
mov esi, dword [eax]
xor eax, eax
cmp ecx, esi
sete al
xor ecx, ecx
cmp eax, esi
setne cl
xor edx, edx
cmp ecx, esi
setne dl
mov eax, dword [ebp - 0x28]
xor ecx, ecx
cmp edx, eax
setl cl
sub ecx, 0x53526c71
cmp edi, ecx
sbb eax, eax
inc eax
mov edx, dword [ebp - 0xc8]
xor ecx, ecx
cmp dword [edx], eax
setl cl
xor eax, eax
cmp ecx, dword [edx]
setne al
mov dword [ebp - 0x40], eax
mov ecx, dword [edx]
mov eax, dword [ebp - 0x40]
add eax, ecx
cmp ecx, eax
jg 0x40f0b5
mov dword [ebp - 0x34], edi
mov dword [ebp - 0x18], 0
jmp 0x40f010
mov eax, dword [ebp - 0x18]
mov dword [ebp + eax*4 - 0xa3c], edi
inc dword [ebp - 0x18]
cmp dword [ebp - 0x18], 3
jl 0x40f003
mov dword [ebp - 0x40], 0xfffffffb
jmp 0x40f0a9
mov dword [ebp - 0x24], edi
mov dword [ebp - 0x18], 0
jmp 0x40f03f
mov eax, dword [ebp - 0x18]
mov dword [ebp + eax*4 - 0xa84], 0x674f9af3
inc dword [ebp - 0x18]
cmp dword [ebp - 0x18], 3
jl 0x40f02e
mov dword [ebp - 0x28], 0xffffffe7
jmp 0x40f088
mov dword [ebp - 0x2c], 0xfbcae26e
mov eax, dword [ebp - 0xc8]
mov dword [eax], 0xe511bd77
mov eax, dword [ebp - 0xa38]
mov eax, dword [ebp - 0x28]
mov eax, dword [ebp - 0x28]
mov eax, dword [ebp - 0x2c]
mov eax, dword [ebp - 0x34]
dec dword [ebp - 0x2c]
mov eax, dword [ebp - 0x34]
neg eax
sbb eax, eax
neg eax
mov dword [ebp - 0xa80], eax
inc dword [ebp - 0x28]
cmp dword [ebp - 0x28], 0xd
jg 0x40f04e
xor eax, eax
mov byte [ebp - 0x1d], al
cmp byte [ebp - 0x1d], al
je 0x40f0a6
push 0x18d5
push eax
push eax
push eax
call dword [0xaab39c]
inc dword [ebp - 0x40]
cmp dword [ebp - 0x40], 0x12
jg 0x40f022
jmp 0x40f0c3
mov dword [ebp - 0x24], 0xfffffffe
mov dword [ebp - 0x24], 0xfffffffc
xor eax, eax
mov dword [ebp - 0x28], eax
cmp dword [ebp - 0x28], 0x1a
jl 0x40f354
mov dword [ebp - 0x2c], 0x72c95c8f
mov dword [ebp - 0x34], 0x7d10
cmp dword [ebp - 0x34], 0x7fd3
jle 0x40f15f
push 0x16bb
push 0x114f
push eax
push eax
push 0x17d4
push 0x2518
call dword [0xaab52c]
xor ecx, ecx
mov dword [ebp - 0x18], ecx
xor edi, edi
xor esi, esi
xor ebx, ebx
mov eax, esi
cdq
idiv ebx
lea eax, [edi + ecx]
mov ecx, edx
sar eax, cl
cdq
push edx
push eax
mov ecx, 0xaa82b8
call fcn.00409fb9
inc ebx
cmp ebx, 0x8058
mov ecx, dword [ebp - 0x18]
jl 0x40f110
inc esi
cmp esi, 0x2b25
jl 0x40f10e
inc edi
cmp edi, 0x7e90
jl 0x40f10c
inc ecx
mov dword [ebp - 0x18], ecx
cmp ecx, 0xd17
jl 0x40f10a
xor esi, esi
push esi
call dword [0xaab2ec]
xor edi, edi
inc edi
mov dword [ebp - 0x18], 0xedd67940
mov dword [ebp - 4], 0x12
cmp dword [ebp - 0x34], 0x7951
jge 0x40f185
mov edx, 0xa837b8
mov ecx, 0xaa82b8
call fcn.0040ca6e
or dword [ebp - 4], 0xffffffff
jmp 0x40f1ac
xor eax, eax
mov dword [ebp - 0x34], 0xf5726b06
mov dword [ebp - 0x50], 0x996bd0c
mov dword [ebp - 0x38], 0x2de8
cmp dword [ebp - 0x38], 0x314c
jle 0x40f237
push eax
push eax
call dword [0xaab2f8]
xor ecx, ecx
mov dword [ebp - 0x1c], ecx
xor ebx, ebx
xor eax, eax
mov dword [ebp - 0x34], eax
xor esi, esi
xor eax, ebx
xor eax, ecx
cdq
push edx
push eax
lea ecx, [ebp - 0xd2c]
call fcn.004019b1
pop ecx
pop ecx
mov ecx, eax
call fcn.00409fae
push eax
call fcn.004a91a7
pop ecx
push esi
push edi
lea ecx, [ebp - 0xd2c]
call fcn.0040a8ad
mov eax, dword [ebp - 0x34]
inc eax
mov dword [ebp - 0x34], eax
cmp eax, 0x6f5c
mov ecx, dword [ebp - 0x1c]
jl 0x40f1e2
inc ebx
cmp ebx, 0x24d8
jl 0x40f1db
inc ecx
mov dword [ebp - 0x1c], ecx
cmp ecx, 0xc4d
jl 0x40f1d9
mov dword [ebp - 0x24], 0xd331f862
mov dword [ebp - 4], 0x14
cmp dword [ebp - 0x38], 0x2dd3
jge 0x40f259
push 0xa83844
call fcn.004a91a7
pop ecx
or dword [ebp - 4], 0xffffffff
jmp 0x40f280
push 3
lea ecx, [ebp - 0x768]
call fcn.0040a30e
mov dword [ebp - 0x18], 0
jmp 0x40f2a9
mov ecx, dword [ebp - 0x18]
mov eax, dword [ebp - 0x768]
mov dword [eax + ecx*4], 0xdd0043bd
inc dword [ebp - 0x18]
cmp dword [ebp - 0x18], 3
jl 0x40f296
mov dword [ebp - 0x34], 0xffffffff
mov eax, dword [ebp - 0x34]
mov eax, dword [ebp - 0x2c]
neg eax
mov dword [ebp - 0x18], eax
mov eax, dword [ebp - 0x18]
mov eax, dword [ebp - 0x18]
cmp dword [ebp - 0x18], 0xfffb
sbb eax, eax
neg eax
sub eax, dword [ebp - 0x28]
neg eax
sbb eax, eax
inc eax
mov ecx, dword [ebp - 0xc8]
imul eax, dword [ecx]
test eax, eax
jne 0x40f2f0
mov eax, dword [ebp - 0x18]
mov ecx, dword [ebp - 0xc8]
mov eax, dword [ecx]
imul eax, eax
test eax, eax
jne 0x40f300
cmp dword [ebp - 0x50], eax
mov ecx, eax
je 0x40f302
mov ecx, edi
mov eax, dword [ebp - 0x2c]
add eax, ecx
cmp eax, dword [ebp - 0x28]
jl 0x40f312
mov eax, dword [ebp - 0x3cc]
mov ecx, dword [ebp - 0x3cc]
mov eax, dword [ebp - 0x40]
xor edx, edx
cmp eax, ecx
setle dl
mov eax, dword [ebp - 0x50]
imul eax, edx
xor ecx, ecx
cmp eax, 0xb45d
setne cl
neg ecx
mov eax, dword [ebp - 0xc8]
mov dword [eax], ecx
inc dword [ebp - 0x44]
lea ecx, [ebp - 0x768]
call fcn.0040a3e0
inc dword [ebp - 0x28]
xor eax, eax
jmp 0x40f0c8
lea ecx, [ebp - 0xc8]
call fcn.0040a3e0
push edi
lea ecx, [ebp - 0xd4]
call fcn.0040a30e
mov dword [ebp - 0x28], 0xffffffff
mov dword [ebp - 0x44], 0xa0c0e075
mov dword [ebp - 0x390], edi
mov dword [ebp - 0x38c], edi
mov dword [ebp - 0x388], edi
mov dword [ebp - 0x384], edi
mov dword [ebp - 0x24], 0x908cb2cc
mov dword [ebp - 0x24], 0xfea38a5b
mov dword [ebp - 0x50], 0xfffffff8
mov dword [ebp - 0x24], edi
mov dword [ebp - 0x18], 0
jmp 0x40f3c5
mov ecx, dword [ebp - 0x18]
mov eax, dword [ebp - 0xd4]
mov dword [eax + ecx*4], 0x730f94f3
inc dword [ebp - 0x18]
cmp dword [ebp - 0x18], edi
jl 0x40f3b2
mov eax, dword [ebp - 0xd4]
mov eax, dword [eax]
mov dword [ebp - 0x28], eax
mov eax, dword [ebp - 0x28]
mov ecx, dword [ebp - 0x28]
neg ecx
mov eax, dword [ebp - 0xd4]
cmp ecx, dword [eax]
jge 0x40f3f1
cmp dword [ebp - 0x28], 0
je 0x40f3f1
mov ecx, edi
jmp 0x40f3f3
xor ecx, ecx
mov eax, dword [ebp - 0xd4]
mov esi, dword [eax]
xor eax, eax
cmp ecx, esi
sete al
xor ecx, ecx
cmp eax, esi
setne cl
xor edx, edx
cmp ecx, esi
setne dl
mov eax, dword [ebp - 0x28]
xor ecx, ecx
cmp edx, eax
setl cl
sub ecx, 0x53526c71
cmp edi, ecx
sbb eax, eax
inc eax
mov edx, dword [ebp - 0xd4]
xor ecx, ecx
cmp dword [edx], eax
setl cl
xor eax, eax
cmp ecx, dword [edx]
setne al
mov dword [ebp - 0x44], eax
mov ecx, dword [edx]
mov eax, dword [ebp - 0x44]
add eax, ecx
cmp ecx, eax
jg 0x40f5b7
mov dword [ebp - 0x38], edi
xor eax, eax
mov dword [ebp - 0x18], eax
cmp dword [ebp - 0x18], 3
jge 0x40f46e
mov eax, dword [ebp - 0x18]
mov dword [ebp + eax*4 - 0xacc], edi
inc dword [ebp - 0x18]
cmp dword [ebp - 0x18], 3
jl 0x40f459
xor eax, eax
mov dword [ebp - 0x44], 0xfffffffb
cmp dword [ebp - 0x44], 0x12
jle 0x40f5c5
mov dword [ebp - 0x24], edi
mov dword [ebp - 0x18], eax
cmp dword [ebp - 0x18], 3
jge 0x40f4a4
mov eax, dword [ebp - 0x18]
mov dword [ebp + eax*4 - 0xa6c], 0x674f9af3
inc dword [ebp - 0x18]
cmp dword [ebp - 0x18], 3
jl 0x40f48b
xor eax, eax
mov dword [ebp - 0x28], 0xffffffe7
cmp dword [ebp - 0x28], 0xd
jle 0x40f596
mov dword [ebp - 0x2c], 0xfbcae26e
mov dword [ebp - 0x1c], 0x70b9
cmp dword [ebp - 0x1c], 0x71d4
jle 0x40f516
mov edi, eax
mov dword [ebp - 0x34], eax
mov esi, eax
mov ebx, eax
mov eax, esi
and eax, edi
mov dword [ebp - 0x24], eax
mov edi, eax
mov eax, ebx
xor eax, edi
cdq
push edx
push eax
mov ecx, 0xaa82b8
call fcn.00409fb9
inc ebx
cmp ebx, 0x52d1
jl 0x40f4de
inc esi
cmp esi, 0x4b13
push 0
pop eax
mov edi, dword [ebp - 0x34]
jl 0x40f4d3
inc edi
mov dword [ebp - 0x34], edi
cmp edi, 0x3999
jl 0x40f4d1
xor edi, edi
inc edi
mov eax, dword [ebp - 0xd4]
mov dword [eax], 0xe511bd77
mov eax, dword [ebp - 0xac8]
mov eax, dword [ebp - 0x28]
mov eax, dword [ebp - 0x28]
mov eax, dword [ebp - 0x2c]
mov eax, dword [ebp - 0x38]
dec dword [ebp - 0x2c]
mov eax, dword [ebp - 0x38]
neg eax
sbb eax, eax
neg eax
mov dword [ebp - 0xa68], eax
mov dword [ebp - 4], 0x16
cmp dword [ebp - 0x1c], 0x6daa
jge 0x40f565
mov edx, 0xa838bc
mov ecx, 0xaa82b8
call fcn.0040ca6e
or dword [ebp - 4], 0xffffffff
jmp 0x40f58c
inc dword [ebp - 0x28]
xor eax, eax
jmp 0x40f4ab
mov byte [ebp - 0x1d], al
cmp byte [ebp - 0x1d], 0
je 0x40f5af
push 0x18d5
push eax
push eax
push eax
call dword [0xaab39c]
xor eax, eax
inc dword [ebp - 0x44]
jmp 0x40f475
mov dword [ebp - 0x24], 0xfffffffe
mov dword [ebp - 0x24], 0xfffffffc
mov dword [ebp - 0x1c], 0xc2
cmp dword [ebp - 0x1c], 0x192
jle 0x40f610
xor ebx, ebx
xor esi, esi
mov eax, esi
and eax, ebx
cdq
push edx
push eax
mov ecx, 0xaa82b8
call fcn.00409fb9
inc esi
cmp esi, 0x2b8a
jl 0x40f5d9
inc ebx
cmp ebx, 0x325f
jl 0x40f5d7
push 0x754
xor eax, eax
push eax
push 0x884
push eax
call dword [0xaab488]
mov dword [ebp - 0x28], 0
jmp 0x40f70c
mov dword [ebp - 0x38], 0x72c95c8f
mov dword [ebp - 0x18], 0xedd67940
mov dword [ebp - 0x34], 0xf5726b06
mov dword [ebp - 0x2c], 0x996bd0c
mov dword [ebp - 0x24], 0xd331f862
push 3
lea ecx, [ebp - 0x898]
call fcn.0040a30e
mov dword [ebp - 0x18], 0
jmp 0x40f668
mov ecx, dword [ebp - 0x18]
mov eax, dword [ebp - 0x898]
mov dword [eax + ecx*4], 0xdd0043bd
inc dword [ebp - 0x18]
cmp dword [ebp - 0x18], 3
jl 0x40f655
mov dword [ebp - 0x34], 0xffffffff
mov eax, dword [ebp - 0x34]
mov eax, dword [ebp - 0x38]
neg eax
mov dword [ebp - 0x18], eax
mov eax, dword [ebp - 0x18]
mov eax, dword [ebp - 0x18]
cmp dword [ebp - 0x18], 0xfffb
sbb eax, eax
neg eax
sub eax, dword [ebp - 0x28]
neg eax
sbb eax, eax
inc eax
mov ecx, dword [ebp - 0xd4]
imul eax, dword [ecx]
test eax, eax
jne 0x40f6af
mov eax, dword [ebp - 0x18]
mov ecx, dword [ebp - 0xd4]
mov eax, dword [ecx]
imul eax, eax
test eax, eax
jne 0x40f6bf
cmp dword [ebp - 0x2c], eax
mov ecx, eax
je 0x40f6c1
mov ecx, edi
mov eax, dword [ebp - 0x38]
add eax, ecx
cmp eax, dword [ebp - 0x28]
jl 0x40f6d1
cmp dword [ebp - 0x28], 0x1a
jge 0x40f61c
mov dword [ebp - 4], 0x18
cmp dword [ebp - 0x1c], 0xffffff2e
jge 0x40f735
mov edx, 0xa83918
mov ecx, 0xaa82b8
call fcn.0040ca6e
or dword [ebp - 4], 0xffffffff
jmp 0x40f75c
push 0xfffffffffffffff9
pop ebx
lea ecx, [ebp - 0xd4]
call fcn.0040a3e0
mov dword [ebp - 0x38], edi
mov dword [ebp - 0x24], 0xa421e0be
mov dword [ebp - 0x34], 0xffffffff
xor eax, eax
mov dword [ebp - 0x3a8], eax
mov dword [ebp - 0x3a4], eax
mov dword [ebp - 0x3a0], eax
mov dword [ebp - 0x39c], eax
mov dword [ebp - 0x34], 0xfffffffc
mov dword [ebp - 0x30], 0xffffffff
push edi
lea ecx, [ebp - 0x5ec]
call fcn.0040a30e
mov dword [ebp - 0x30], 0xfeea3821
mov dword [ebp - 0x2c], 0xb6ea1325
mov dword [ebp - 0x1c], edi
mov dword [ebp - 0x48], 0xde45
mov dword [ebp - 0x4c], ebx
mov dword [ebp - 0x18], 0
jmp 0x40f7e6
mov ecx, dword [ebp - 0x18]
mov eax, dword [ebp - 0x5ec]
mov dword [eax + ecx*4], 0x7a30b913
inc dword [ebp - 0x18]
cmp dword [ebp - 0x18], edi
jl 0x40f7d3
mov eax, dword [ebp - 0x38]
mov eax, dword [ebp - 0x34]
inc dword [ebp - 0x2c]
mov eax, dword [ebp - 0x2c]
mov eax, dword [ebp - 0x24]
mov eax, dword [ebp - 0x3a4]
mov eax, dword [ebp - 0x34]
mov eax, dword [ebp - 0x30]
mov eax, dword [ebp - 0x38]
xor ecx, ecx
cmp eax, edi
setge cl
mov dword [ebp - 0x1c], ecx
mov eax, dword [ebp - 0x1c]
mov dword [ebp - 0x34], 0xfce3badf
mov eax, dword [ebp - 0x5ec]
mov esi, dword [eax]
mov ecx, dword [ebp - 0x3a0]
mov eax, dword [ebp - 0x34]
xor edx, edx
cmp eax, ecx
setne dl
xor eax, eax
cmp edx, esi
setne al
xor edx, edx
cmp eax, esi
setne dl
mov eax, dword [ebp - 0x48]
xor ecx, ecx
cmp edx, eax
sete cl
mov dword [ebp - 0x4c], ecx
lea ecx, [ebp - 0x5ec]
call fcn.0040a3e0
mov dword [ebp - 0x44], 0xfffffff8
mov dword [ebp - 0x14], 8
mov dword [ebp - 0x688], 0xb0d69b45
mov dword [ebp - 0x684], 0xb0d69b45
mov dword [ebp - 0x680], 0xb0d69b45
mov dword [ebp - 0x67c], 0xb0d69b45
mov dword [ebp - 0x34], edi
mov dword [ebp - 0x24], 0xfffffff8
mov dword [ebp - 0x18], 0
jmp 0x40f8b2