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

Disassembly:
mov eax, 0x4bd1bd
call fcn.004bcdc8
sub esp, 0xe94
push ebx
push esi
push edi
mov dword [ebp - 0x10], esp
mov byte [ebp - 0x64], dl
mov dword [ebp - 0x114], ecx
mov dword [ebp - 0x24], 0x75b4
xor eax, eax
cmp dword [ebp - 0x24], 0x795a
jle 0x401a14
mov esi, eax
mov dword [ebp - 0x4c], eax
mov edi, eax
mov eax, esi
cdq
idiv edi
mov ebx, edx
mov esi, 0x195c
mov eax, ebx
cdq
push edx
push eax
mov ecx, 0xace718
call fcn.00414b0c
inc ebx
dec esi
jne 0x4019d8
inc edi
cmp edi, 0x6bd4
mov esi, dword [ebp - 0x4c]
jl 0x4019cc
inc esi
mov dword [ebp - 0x4c], esi
cmp esi, 0x1419
push 0
pop eax
jl 0x4019ca
push eax
push 0x1fbf
call dword [0xad108c]
xor eax, eax
mov dword [ebp - 0x3c], 0x1e559696
mov dword [ebp - 4], eax
cmp dword [ebp - 0x24], 0x7439
jge 0x401a36
mov edx, 0xab1cd0
mov ecx, 0xace718
call fcn.00417008
or ebx, 0xffffffff
mov dword [ebp - 4], ebx
xor eax, eax
mov dword [ebp - 0x30], 0x27f355c0
mov dword [ebp - 0x48], 0x72e7eb66
mov dword [ebp - 0x14], eax
xor edi, edi
inc edi
cmp dword [ebp - 0x14], edi
jge 0x401a68
mov eax, dword [ebp - 0x14]
mov dword [ebp + eax*4 - 0x68], edi
inc dword [ebp - 0x14]
cmp dword [ebp - 0x14], edi
jl 0x401a57
xor eax, eax
mov dword [ebp - 0x3c], eax
cmp dword [ebp - 0x3c], eax
jl 0x401b4c
mov dword [ebp - 0x54], 0xa7bf748b
mov dword [ebp - 0x5c], 0xa4c63829
mov eax, dword [ebp - 0x3c]
cmp dword [ebp + eax*4 - 0x68], 0
jne 0x401b32
mov eax, dword [ebp - 0x3c]
mov eax, dword [ebp + eax*4 - 0x68]
xor ecx, ecx
cmp eax, 0x6dfc
setne cl
cmp ecx, 0x996a5308
sbb edx, edx
add edx, 8
neg edx
sbb edx, edx
inc edx
imul edx, dword [ebp - 0x3c]
sub edx, dword [ebp - 0x3c]
neg edx
sbb edx, edx
inc edx
mov eax, dword [ebp - 0x3c]
xor ecx, ecx
cmp edx, eax
setge cl
mov eax, dword [ebp - 0x3c]
sub ecx, dword [ebp + eax*4 - 0x68]
neg ecx
sbb ecx, ecx
inc ecx
cmp ecx, 0xdf7b1466
jae 0x401ade
mov eax, dword [ebp - 0x30]
mov eax, dword [ebp - 0x3c]
mov eax, dword [ebp + eax*4 - 0x68]
mov eax, dword [ebp - 0x3c]
mov eax, dword [ebp + eax*4 - 0x68]
mov eax, dword [ebp - 0x3c]
mov eax, dword [ebp + eax*4 - 0x68]
mov eax, dword [ebp - 0x3c]
mov eax, dword [ebp + eax*4 - 0x68]
mov eax, dword [ebp - 0x3c]
mov eax, dword [ebp + eax*4 - 0x68]
mov eax, dword [ebp - 0x54]
mov eax, dword [ebp - 0x68]
mov eax, dword [ebp - 0x5c]
mov eax, dword [ebp - 0x3c]
cmp dword [ebp + eax*4 - 0x68], 0
jne 0x401b32
xor eax, eax
jmp 0x401b34
mov eax, edi
xor ecx, ecx
add eax, 0x6d9e
setns cl
mov dword [ebp - 0x48], ecx
dec dword [ebp - 0x3c]
jns 0x401a74
xor eax, eax
mov dword [ebp - 0x48], eax
jmp 0x401b5b
mov dword [ebp - 0x3c], 0x4f57b17b
inc dword [ebp - 0x48]
cmp dword [ebp - 0x48], 0xb
jne 0x401b51
mov dword [ebp - 0x14], eax
push edi
lea ecx, [ebp - 0x6b8]
call fcn.00414d37
push 3
lea ecx, [ebp - 0x328]
call fcn.00414d37
mov dword [ebp - 0x54], ebx
xor eax, eax
mov dword [ebp - 0x20], eax
cmp dword [ebp - 0x20], edi
jge 0x401ba4
mov ecx, dword [ebp - 0x20]
mov eax, dword [ebp - 0x6b8]
mov dword [eax + ecx*4], 0x3cdf98a5
inc dword [ebp - 0x20]
cmp dword [ebp - 0x20], edi
jl 0x401b8a
xor eax, eax
mov dword [ebp - 0x20], eax
cmp dword [ebp - 0x20], 3
jge 0x401bc4
mov ecx, dword [ebp - 0x20]
mov eax, dword [ebp - 0x328]
mov dword [eax + ecx*4], ebx
inc dword [ebp - 0x20]
cmp dword [ebp - 0x20], 3
jl 0x401bad
xor eax, eax
mov dword [ebp - 0x14], eax
cmp dword [ebp - 0x14], 0xffffffe7
jl 0x401c8c
mov esi, dword [ebp - 0x328]
mov dword [ebp - 0x3c], ebx
mov dword [ebp - 0x30], 0xd9e62b56
mov dword [ebp - 0x3c], eax
cmp dword [ebp - 0x3c], eax
jg 0x401c07
mov dword [ebp - 0x30], 0x149cec79
mov ecx, dword [ebp - 0x3c]
mov eax, dword [ebp - 0x328]
mov dword [eax], ecx
mov dword [ebp - 0x30], ecx
inc dword [ebp - 0x3c]
cmp dword [ebp - 0x3c], 0
jle 0x401be9
mov eax, dword [ebp - 0x54]
xor edx, edx
cmp eax, dword [esi + 8]
setle dl
mov eax, dword [ebp - 0x3c]
mov dword [ebp - 0x3c], eax
mov eax, dword [ebp - 0x3c]
xor ecx, ecx
cmp eax, ebx
setle cl
sub edx, ecx
sub edx, 0xed40a165
neg edx
sbb edx, edx
inc edx
add edx, 8
je 0x401c41
mov eax, dword [ebp - 0x6b8]
cmp dword [eax], 0
jne 0x401c8a
jmp 0x401c7a
mov dword [ebp - 0x30], ebx
cmp dword [ebp - 0x3c], 0xcb1a7a81
sbb eax, eax
neg eax
mov dword [ebp - 0x30], eax
mov dword [ebp - 0x3c], 0
jmp 0x401c74
cmp dword [ebp - 0x3c], 0x80090ae7
sbb eax, eax
neg eax
xor ecx, ecx
cmp eax, dword [esi + 8]
setne cl
mov dword [ebp - 0x30], ecx
dec dword [ebp - 0x3c]
cmp dword [ebp - 0x3c], 0xfffffff5
jne 0x401c5b
dec dword [ebp - 0x14]
cmp dword [ebp - 0x14], 0xffffffe7
push 0
pop eax
jge 0x401bd7
xor eax, eax
mov byte [ebp - 0x3d], al
cmp byte [ebp - 0x3d], 0
je 0x401ca1
push eax
push 0xb71
call dword [0xad136c]
lea ecx, [ebp - 0x328]
call fcn.00414e09
lea ecx, [ebp - 0x6b8]
call fcn.00414e09
mov dword [ebp - 0x44], 0x643e
cmp dword [ebp - 0x44], 0x65f4
jle 0x401d01
push 0x1689
xor eax, eax
push eax
push eax
call dword [0xad1338]
xor esi, esi
mov edi, esi
mov ebx, 0x3e71
mov eax, edi
cdq
push edx
push eax
mov ecx, 0xace718
call fcn.00414b0c
dec edi
dec ebx
jne 0x401cdf
inc esi
cmp esi, 0x2c70
jl 0x401cd8
xor edi, edi
inc edi
or ebx, 0xffffffff
mov dword [ebp - 0x48], 0x313dd33a
mov dword [ebp - 0x30], ebx
mov dword [ebp - 0x14], 0
jmp 0x401d25
mov eax, dword [ebp - 0x14]
mov dword [ebp + eax*4 - 0x748], 0x1bd
inc dword [ebp - 0x14]
cmp dword [ebp - 0x14], 4
jl 0x401d14
mov dword [ebp - 0x48], 4
jmp 0x401e4f
mov dword [ebp - 0x20], 0xe8c9f369
mov dword [ebp - 0x14], 0
jmp 0x401d58
mov eax, dword [ebp - 0x14]
mov dword [ebp + eax*4 - 0x9cc], 0x1c36b586
inc dword [ebp - 0x14]
cmp dword [ebp - 0x14], 3
jl 0x401d47
mov dword [ebp - 0x20], 0
jmp 0x401e42
mov dword [ebp - 0x4c], 0
mov dword [ebp - 0x24], 0x1cc0e426
mov eax, dword [ebp - 0x20]
cmp dword [ebp + eax*4 - 0x748], 0
je 0x401de5
mov eax, dword [ebp - 0x20]
mov ecx, dword [ebp + eax*4 - 0x748]
mov eax, dword [ebp - 0x20]
mov dword [ebp + eax*4 - 0x748], ecx
xor eax, eax
test ecx, ecx
sete al
mov dword [ebp - 0x4c], eax
mov ecx, dword [ebp - 0x20]
mov eax, dword [ebp - 0x48]
imul ecx, eax
mov dword [ebp - 0x9c4], ecx
mov eax, dword [ebp - 0x20]
xor edx, edx
cmp ecx, eax
setne dl
mov eax, dword [ebp - 0x4c]
xor ecx, ecx
cmp eax, edx
setle cl
xor eax, eax
cmp ecx, 0x62d7bc35
setge al
imul eax, eax, 0x3053
cmp eax, ebx
jbe 0x401de5
mov eax, dword [ebp - 0x20]
mov eax, dword [ebp + eax*4 - 0x748]
mov eax, dword [ebp - 0x24]
xor ecx, ecx
test eax, eax
setle cl
add ecx, 0x25bb5a27
mov eax, dword [ebp - 0x20]
xor edx, edx
cmp ecx, eax
setl dl
cmp edx, 0xfffa
sbb edx, edx
add edx, 0xfffff8df
neg edx
sbb edx, edx
inc edx
mov eax, dword [ebp - 0x24]
xor ecx, ecx
cmp edx, eax
setle cl
mov dword [ebp - 0x30], ecx
xor eax, eax
mov byte [ebp - 0x3d], al
cmp byte [ebp - 0x3d], al
je 0x401e3f
push eax
push 0x1fbc
push 0xf1f
push 0x2168
call dword [0xad1488]
inc dword [ebp - 0x20]
cmp dword [ebp - 0x20], 3
jle 0x401d6a
dec dword [ebp - 0x48]
cmp dword [ebp - 0x48], ebx
jge 0x401d37
mov dword [ebp - 4], 2
cmp dword [ebp - 0x44], 0x6061
jge 0x401e77
mov edx, 0xab1d40
mov ecx, 0xace718
call fcn.00417008
mov dword [ebp - 4], ebx
xor eax, eax
jmp 0x401ea1
mov dword [ebp - 0x3c], 0x1e559696
mov dword [ebp - 0x30], 0x27f355c0
mov dword [ebp - 0x48], 0x72e7eb66
mov dword [ebp - 0x14], eax
cmp dword [ebp - 0x14], edi
jge 0x401ecf
mov eax, dword [ebp - 0x14]
mov dword [ebp + eax*4 - 0x6c], edi
inc dword [ebp - 0x14]
cmp dword [ebp - 0x14], edi
jl 0x401ebe
xor eax, eax
mov dword [ebp - 0x3c], eax
cmp dword [ebp - 0x3c], eax
jl 0x401f99
mov dword [ebp - 0x54], 0xa7bf748b
mov dword [ebp - 0x5c], 0xa4c63829
mov eax, dword [ebp - 0x3c]
cmp dword [ebp + eax*4 - 0x6c], 0
jne 0x401f7f
mov eax, dword [ebp - 0x3c]
mov eax, dword [ebp + eax*4 - 0x6c]
xor ecx, ecx
cmp eax, 0x6dfc
setne cl
cmp ecx, 0x996a5308
sbb edx, edx
add edx, 8
neg edx
sbb edx, edx
inc edx
imul edx, dword [ebp - 0x3c]
sub edx, dword [ebp - 0x3c]
neg edx
sbb edx, edx
inc edx
mov eax, dword [ebp - 0x3c]
xor ecx, ecx
cmp edx, eax
setge cl
mov eax, dword [ebp - 0x3c]
sub ecx, dword [ebp + eax*4 - 0x6c]
neg ecx
sbb ecx, ecx
inc ecx
cmp ecx, 0xdf7b1466
jae 0x401f45
mov eax, dword [ebp - 0x30]
mov eax, dword [ebp - 0x3c]
mov eax, dword [ebp + eax*4 - 0x6c]
mov eax, dword [ebp - 0x3c]
mov eax, dword [ebp + eax*4 - 0x6c]
mov eax, dword [ebp - 0x3c]
mov eax, dword [ebp + eax*4 - 0x6c]
mov eax, dword [ebp - 0x3c]
mov eax, dword [ebp + eax*4 - 0x6c]
mov eax, dword [ebp - 0x3c]
mov eax, dword [ebp + eax*4 - 0x6c]
mov eax, dword [ebp - 0x54]
mov eax, dword [ebp - 0x6c]
mov eax, dword [ebp - 0x5c]
mov eax, dword [ebp - 0x3c]
cmp dword [ebp + eax*4 - 0x6c], 0
jne 0x401f7f
xor eax, eax
jmp 0x401f81
mov eax, edi
xor ecx, ecx
add eax, 0x6d9e
setns cl
mov dword [ebp - 0x48], ecx
dec dword [ebp - 0x3c]
jns 0x401edb
xor eax, eax
mov dword [ebp - 0x48], eax
jmp 0x401fa8
mov dword [ebp - 0x3c], 0x4f57b17b
inc dword [ebp - 0x48]
cmp dword [ebp - 0x48], 0xb
jne 0x401f9e
mov dword [ebp - 0x34], 0xe48d327c
mov byte [ebp - 0x3d], al
cmp byte [ebp - 0x3d], 0
je 0x401fd6
push 0xab
push 0x2099
push eax
push 0x411
call dword [0xad146c]
xor eax, eax
mov byte [ebp - 0x3d], al
cmp byte [ebp - 0x3d], 0
je 0x401fe6
push eax
call dword [0xad130c]
mov dword [ebp - 0x48], 0xfe0a8eac
mov dword [ebp - 0x4c], 0xfffffffa
push 4
lea ecx, [ebp - 0x6d0]
call fcn.00414d37
mov dword [ebp - 0x4c], 0xe57f6cc9
xor eax, eax
mov dword [ebp - 0x14], eax
cmp dword [ebp - 0x14], 4
jge 0x40202e
mov ecx, dword [ebp - 0x14]
mov eax, dword [ebp - 0x6d0]
mov dword [eax + ecx*4], 0xa7b051af
inc dword [ebp - 0x14]
cmp dword [ebp - 0x14], 4
jl 0x402013
xor eax, eax
mov dword [ebp - 0x48], eax
cmp dword [ebp - 0x48], 0xfffffffd
je 0x4020d3
mov esi, dword [ebp - 0x6d0]
mov dword [ebp - 0x14], eax
jmp 0x402053
mov eax, dword [ebp - 0x14]
mov dword [ebp + eax*4 - 0xa4], edi
inc dword [ebp - 0x14]
cmp dword [ebp - 0x14], edi
jl 0x402046
mov eax, dword [ebp - 0xa4]
mov dword [ebp - 0x4c], eax
mov ecx, dword [ebp - 0xa4]
mov eax, dword [ebp - 0x4c]
xor ebx, ebx
cmp ecx, eax
setge bl
mov dword [esi + 0xc], ebx
xor edx, edx
cmp ebx, 0x14f4
setne dl
mov eax, dword [ebp - 0xa4]
xor ecx, ecx
cmp edx, eax
setne cl
add ecx, 0x71dfd947
mov dword [ebp - 0x4c], ecx
mov ecx, dword [ebp - 0x4c]
mov eax, dword [ebp - 0x48]
xor edx, edx
cmp ecx, eax
setge dl
mov eax, dword [ebp - 0xa4]
xor ecx, ecx
cmp eax, edx
setl cl
mov eax, dword [ebp - 0x48]
imul eax, ecx
sub eax, dword [ebp - 0x48]
neg eax
sbb eax, eax
inc eax
mov dword [ebp - 0xa4], eax
dec dword [ebp - 0x48]
cmp dword [ebp - 0x48], 0xfffffffd
push 0
pop eax
jne 0x402041
mov byte [ebp - 0x3d], al
cmp byte [ebp - 0x3d], 0
je 0x4020ee
push eax
push eax
push eax
push eax
push eax
push eax
push eax
push eax
push eax
push eax
push eax
push eax
call dword [0xad1028]
lea ecx, [ebp - 0x6d0]
call fcn.00414e09
mov dword [ebp - 0x4c], 0xc6e5c7a0
mov dword [ebp - 0x30], edi
mov dword [ebp - 0x34], 3
mov dword [ebp - 0x34], 0
mov dword [ebp - 0x34], 0xab3c
mov dword [ebp - 0x34], 0xffffffff
mov dword [ebp - 0x5c], 0xffffffff
push 4
lea ecx, [ebp - 0x6e8]
call fcn.00414d37
mov dword [ebp - 0x34], 0x3fda37b1
xor eax, eax
mov dword [ebp - 0x54], eax
mov dword [ebp - 0x30], 0x9e68fc78
mov dword [ebp - 0x34], 0xfffffff7
mov dword [ebp - 0x448], edi
mov dword [ebp - 0x444], edi
mov dword [ebp - 0x440], edi
mov dword [ebp - 0x43c], edi
mov dword [ebp - 0x20], eax
cmp dword [ebp - 0x20], 4
jge 0x402187
mov eax, dword [ebp - 0x20]
mov dword [ebp + eax*4 - 0xaa0], 0
inc dword [ebp - 0x20]
cmp dword [ebp - 0x20], 4
jl 0x40216e
xor eax, eax
mov dword [ebp - 0x20], eax
jmp 0x40219f
mov ecx, dword [ebp - 0x20]
mov eax, dword [ebp - 0x6e8]
mov dword [eax + ecx*4], 0xf06702e6
inc dword [ebp - 0x20]
cmp dword [ebp - 0x20], 4
jl 0x40218c
mov eax, dword [ebp - 0x4c]
mov eax, dword [ebp - 0x4c]
neg eax
sbb eax, eax
neg eax
inc eax
mov dword [ebp - 0x30], eax
mov ecx, dword [ebp - 0x54]
add ecx, 2
mov dword [ebp - 0xa9c], ecx
xor edx, edx
mov eax, dword [ebp - 0x6e8]
cmp ecx, dword [eax + 4]
setge dl
sub edx, 0x46d81130
mov eax, dword [ebp - 0x5c]
add eax, edx
mov dword [ebp - 0x30], eax
mov dword [ebp - 0x24], 0x6d5
cmp dword [ebp - 0x24], 0x747
jle 0x402271
push 0
call dword [0xad106c]
xor eax, eax
mov dword [ebp - 0x14], eax
xor edi, edi
mov dword [ebp - 0x4c], edi
xor esi, esi
xor ebx, ebx
lea ecx, [esi + edi]
mov edi, eax
sar edi, cl
mov eax, edi
and eax, ebx
cdq
push edx
push eax
lea ecx, [ebp - 0xb30]
call fcn.0040191d
pop ecx
pop ecx
mov ecx, eax
call fcn.00414b01
push eax
call fcn.004a7977
pop ecx
push 0
push 1
lea ecx, [ebp - 0xb30]
call fcn.004151d7
inc ebx
cmp ebx, 0x5993
jl 0x40220e
inc esi
cmp esi, 0x2e38
mov edi, dword [ebp - 0x4c]
mov eax, dword [ebp - 0x14]
jl 0x402205
inc edi
mov dword [ebp - 0x4c], edi
cmp edi, 0x1fd2
jl 0x402203
inc eax
mov dword [ebp - 0x14], eax
cmp eax, 0x5e06
jl 0x4021fe
xor edi, edi
inc edi
dec dword [ebp - 0x448]
mov dword [ebp - 4], 4
cmp dword [ebp - 0x24], 0x672
jge 0x402292
push 0xab1dc0
call fcn.004a7977
pop ecx
or dword [ebp - 4], 0xffffffff
jmp 0x4022b9
lea ecx, [ebp - 0x6e8]
call fcn.00414e09
mov dword [ebp - 0x3c], 0x1e559696
mov dword [ebp - 0x18], 0xa48bbca6
push 4
lea ecx, [ebp - 0x718]
call fcn.00414d37
mov dword [ebp - 0x48], 0xff51885a
mov dword [ebp - 0x50], 0x77d
cmp dword [ebp - 0x50], 0xa8a
jle 0x40235a
xor eax, eax
push eax
push eax
call dword [0xad12f0]
xor edi, edi
mov dword [ebp - 0x44], edi
xor eax, eax
mov dword [ebp - 0x14], eax
mov dword [ebp - 0x24], 0x254d
xor esi, esi
mov edi, dword [ebp - 0x14]
xor ebx, ebx
mov dword [ebp - 0x4c], 0x1921
mov eax, edi
or eax, ebx
cdq
push edx
push eax
mov ecx, 0xace718
call fcn.00414b0c
add ebx, esi
dec dword [ebp - 0x4c]
jne 0x40231f
inc esi
cmp esi, 0x336
jl 0x402316
mov edi, dword [ebp - 0x44]
add dword [ebp - 0x14], edi
dec dword [ebp - 0x24]
jne 0x402311
inc edi
mov dword [ebp - 0x44], edi
cmp edi, 0x7061
jl 0x402305
xor edi, edi
inc edi
mov dword [ebp - 0x2c], 0x7e52
mov dword [ebp - 4], 6
cmp dword [ebp - 0x50], 0x71b
jge 0x402380
mov edx, 0xab1e18
mov ecx, 0xace718
call fcn.00417008
or dword [ebp - 4], 0xffffffff
jmp 0x4023a7
push 2
lea ecx, [ebp - 0x26c]
call fcn.00414d37
mov dword [ebp - 0x20], 0
jmp 0x4023d0
mov ecx, dword [ebp - 0x20]
mov eax, dword [ebp - 0x718]
mov dword [eax + ecx*4], 0x4b4e1265
inc dword [ebp - 0x20]
cmp dword [ebp - 0x20], 4
jl 0x4023bd
mov dword [ebp - 0x20], 0
jmp 0x4023f2
mov ecx, dword [ebp - 0x20]
mov eax, dword [ebp - 0x26c]
mov dword [eax + ecx*4], 0x30b54543
inc dword [ebp - 0x20]
cmp dword [ebp - 0x20], 2
jl 0x4023df
mov dword [ebp - 0x18], 0xfffffffb
cmp dword [ebp - 0x18], 0xe
je 0x40245d
mov esi, dword [ebp - 0x718]
push 2
lea ecx, [ebp - 0x700]
call fcn.00414d37
mov dword [ebp - 0x14], 0
jmp 0x402434
mov ecx, dword [ebp - 0x14]
mov eax, dword [ebp - 0x700]
mov dword [eax + ecx*4], 0xed680444
inc dword [ebp - 0x14]
cmp dword [ebp - 0x14], 2
jl 0x402421
mov eax, dword [ebp - 0x700]
dec dword [eax + 4]
mov eax, dword [eax + 4]
mov dword [esi + 0xc], eax
lea ecx, [ebp - 0x700]
call fcn.00414e09
inc dword [ebp - 0x18]
cmp dword [ebp - 0x18], 0xe
jne 0x40240b
mov eax, dword [ebp - 0x18]
mov eax, dword [ebp - 0x18]
mov eax, dword [ebp - 0x18]
mov eax, dword [ebp - 0x48]
mov eax, dword [ebp - 0x18]
mov eax, dword [ebp - 0x2c]
mov eax, dword [ebp - 0x48]
mov eax, dword [ebp - 0x2c]
mov eax, dword [ebp - 0x2c]
mov eax, dword [ebp - 0x48]
imul edx, dword [ebp - 0x2c], 6
mov eax, dword [ebp - 0x26c]
sub edx, dword [eax]
neg edx
sbb edx, edx
inc edx
mov eax, dword [ebp - 0x18]
xor ecx, ecx
cmp edx, eax
setl cl
xor edx, edx
mov eax, dword [ebp - 0x26c]
cmp ecx, dword [eax]
setle dl
mov eax, dword [ebp - 0x48]
xor ecx, ecx
cmp edx, eax
setne cl
mov eax, dword [ebp - 0x26c]
mov dword [eax + 4], ecx
lea ecx, [ebp - 0x26c]
call fcn.00414e09
lea ecx, [ebp - 0x718]
call fcn.00414e09
mov dword [ebp - 0x50], 0x27f355c0
mov dword [ebp - 0x48], 2
mov dword [ebp - 0x2c], 0xfffffff6
mov dword [ebp - 0x14], edi
mov dword [ebp - 0x38], 0xe57f6cc9
mov dword [ebp - 0x44], 0x31aa08ec
mov dword [ebp - 0x5c], 0xf63588c5
mov dword [ebp - 0x34], 0xfffffff7
movdqa xmm0, xmmword [0xac0f10]
movdqu xmmword [ebp - 0x910], xmm0
lea ecx, [ebp - 0x910]
lea eax, [ebp - 0x900]
push ecx
push eax
push ecx
lea ecx, [ebp - 0x78c]
call fcn.00414de3
push edi
lea ecx, [ebp - 0x774]
call fcn.00414d37
mov dword [ebp - 0x18], 0xaeacb2d5
mov dword [ebp - 0x2c8], 6
mov dword [ebp - 0x2c4], 6
mov dword [ebp - 0x2c0], 6
mov dword [ebp - 0x2bc], 6
mov dword [ebp - 0x4c], 0x31c6
cmp dword [ebp - 0x4c], 0x330f
jle 0x4025a7
xor edi, edi
xor esi, esi
mov eax, esi
and eax, edi
cdq
push edx
push eax
mov ecx, 0xace718
call fcn.00414b0c
inc esi
cmp esi, 0x73fc
jl 0x402579
inc edi
cmp edi, 0x1427
jl 0x402577
push 0
call dword [0xad144c]
xor edi, edi
inc edi
mov dword [ebp - 4], 8
cmp dword [ebp - 0x4c], 0x3111
jge 0x4025c6
mov edx, 0xab1e98
mov ecx, 0xace718
call fcn.00417008
or dword [ebp - 4], 0xffffffff
xor eax, eax
jmp 0x4025f1
mov dword [ebp - 0x20], eax
cmp dword [ebp - 0x20], 3
jge 0x402613
mov eax, dword [ebp - 0x20]
mov dword [ebp + eax*4 - 0x20c], 0xeac8b13e
inc dword [ebp - 0x20]
cmp dword [ebp - 0x20], 3
jl 0x4025fa
xor eax, eax
mov dword [ebp - 0x20], eax
cmp dword [ebp - 0x20], edi
jge 0x402631
mov ecx, dword [ebp - 0x20]
mov eax, dword [ebp - 0x774]
mov dword [eax + ecx*4], edi
inc dword [ebp - 0x20]
cmp dword [ebp - 0x20], edi
jl 0x40261b
xor eax, eax
mov dword [ebp - 0x48], 2
cmp dword [ebp - 0x48], eax
jl 0x4027b0
mov dword [ebp - 0x54], 0x1b4956e7
mov dword [ebp - 0x30], edi
mov dword [ebp - 0x4c], edi
push 2
lea ecx, [ebp - 0x67c]
call fcn.00414d37
mov dword [ebp - 0x24], 0x4c46
mov dword [ebp - 0x30], edi
mov dword [ebp - 0x20], 0
jmp 0x402681
mov ecx, dword [ebp - 0x20]
mov eax, dword [ebp - 0x67c]
mov dword [eax + ecx*4], 0xdfbc43c
inc dword [ebp - 0x20]
cmp dword [ebp - 0x20], 2
jl 0x40266e
mov dword [ebp - 0x20], 0
jmp 0x4026a1
mov eax, dword [ebp - 0x20]
mov dword [ebp + eax*4 - 0x84c], 0xd9a54e58
inc dword [ebp - 0x20]
cmp dword [ebp - 0x20], edi
jl 0x402690
inc dword [ebp - 0x18]
mov eax, dword [ebp - 0x48]
mov eax, dword [ebp + eax*4 - 0x20c]
mov eax, dword [ebp - 0x18]
mov esi, dword [ebp - 0x67c]
mov eax, dword [esi + 4]
mov dword [ebp - 0x30], eax
mov eax, dword [ebp - 0x2c]
mov eax, dword [ebp - 0x48]
mov ecx, dword [ebp + eax*4 - 0x20c]
mov eax, dword [ebp - 0x24]
xor edx, edx
cmp ecx, eax
setge dl
xor eax, eax
test edx, edx
setns al
sub eax, 8
neg eax
sbb eax, eax
inc eax
sub eax, dword [ebp - 0x4c]
neg eax
sbb eax, eax
inc eax
xor ecx, ecx
cmp eax, 7
setle cl
mov eax, dword [ebp - 0x18]
xor edx, edx
cmp ecx, eax
setl dl
sub edx, 0x303a
mov eax, dword [ebp - 0x18]
xor ecx, ecx
cmp edx, eax
setge cl
sub ecx, dword [ebp - 0x44]
neg ecx
sbb ecx, ecx
inc ecx
sub ecx, dword [esi + 4]
mov dword [ebp - 0x14], ecx
mov eax, dword [ebp - 0x14]
mov eax, dword [ebp - 0x2c4]
xor ecx, ecx
test eax, eax
setg cl
add ecx, 0x5e790e86
mov eax, dword [ebp - 0x2c0]
xor edx, edx
cmp ecx, eax
setl dl
xor ecx, ecx
cmp edx, 0x98e8
setle cl
xor eax, eax
cmp ecx, 0xffffffff
setle al
imul ecx, eax, 0xeb13
mov eax, dword [ebp - 0x48]
cmp ecx, dword [ebp + eax*4 - 0x20c]
jl 0x40276b
mov eax, dword [ebp - 0x4c]
cmp dword [ebp - 0x24], 0xffffffff
sbb edx, edx
neg edx
mov eax, dword [ebp - 0x54]
xor ecx, ecx
cmp edx, eax
setle cl
mov dword [ebp - 0x30], ecx
mov byte [ebp - 0x3d], 0
cmp byte [ebp - 0x3d], 0
je 0x40279a
push 0x509
push 0x472
call dword [0xad14ac]
lea ecx, [ebp - 0x67c]
call fcn.00414e09
dec dword [ebp - 0x48]
jns 0x402641
xor eax, eax
cmp dword [ebp - 0x2c4], eax
je 0x4027e5
cmp dword [ebp - 0x204], eax
jne 0x4027c7
cmp dword [ebp - 0x5c], eax
mov ecx, eax
je 0x4027c9
mov ecx, edi
mov eax, dword [ebp - 0x38]
sub ecx, eax
mov dword [ebp - 0x14], ecx
mov ecx, dword [ebp - 0x14]
mov eax, dword [ebp - 0x78c]
mov dword [eax + 0xc], ecx
je 0x4027e3
mov edx, edi
jmp 0x4027e7
xor eax, eax
mov edx, eax
mov eax, dword [ebp - 0x18]
xor ecx, ecx
cmp edx, eax
setle cl
xor eax, eax
cmp ecx, 0xc21e6db7
setne al
mov dword [ebp - 0x2c], eax
mov ecx, dword [ebp - 0x2c]
neg ecx
sbb ecx, ecx
neg ecx
mov eax, dword [ebp - 0x208]
sub ecx, eax
mov eax, dword [ebp - 0x2c4]
add eax, ecx
cmp eax, 0x170c0
jne 0x402829
cmp dword [ebp - 0x44], 0
je 0x402829
mov eax, edi
jmp 0x40282b
xor eax, eax
mov dword [ebp - 0x38], eax
mov eax, dword [ebp - 0x38]
xor ecx, ecx
cmp eax, 5
setg cl
mov dword [ebp - 0x48], ecx
lea ecx, [ebp - 0x774]
call fcn.00414e09
lea ecx, [ebp - 0x78c]
call fcn.00414e09
mov dword [ebp - 0x2c], 0x72e7eb66
mov dword [ebp - 0x48], 0x125d16df
mov dword [ebp - 0x30], 2
mov dword [ebp - 0x54], 0xd9d7
mov dword [ebp - 0x14], 0
jmp 0x402888
mov eax, dword [ebp - 0x14]
mov dword [ebp + eax*4 - 0x6a0], 0xfffffffa
inc dword [ebp - 0x14]
cmp dword [ebp - 0x14], 3
jl 0x402877
mov dword [ebp - 0x4c], 0x245f
cmp dword [ebp - 0x4c], 0x25a8
jle 0x4028fb
xor esi, esi
mov edi, esi
mov ebx, 0x179b
mov eax, edi
cdq
push edx
push eax
lea ecx, [ebp - 0xe78]
call fcn.0040191d
pop ecx
pop ecx
mov ecx, eax
call fcn.00414b01
push eax
call fcn.004a7977
pop ecx
push 0
push 1
lea ecx, [ebp - 0xe78]
call fcn.004151d7
dec edi
dec ebx
jne 0x4028a7
inc esi
cmp esi, 0x12c6
jl 0x4028a0
push 0x19db
push 0x21b9
push 0x1f0f
call dword [0xad1114]
xor edi, edi
inc edi
mov dword [ebp - 0x48], 2
cmp dword [ebp - 0x48], 0
jl 0x402966
mov dword [ebp - 0x14], 0xcb03
inc dword [ebp - 0x14]
mov eax, dword [ebp - 0x48]
cmp dword [ebp + eax*4 - 0x6a0], 0
jne 0x402928
xor eax, eax
cmp dword [ebp - 0x30], eax
mov esi, eax
je 0x40292a
mov esi, edi
mov ecx, dword [ebp - 0x14]
sub ecx, dword [ebp - 0x14]
neg ecx
sbb ecx, ecx
inc ecx
mov eax, dword [ebp - 0x48]
mov eax, dword [ebp + eax*4 - 0x6a0]
xor edx, edx
cmp ecx, eax
setge dl
mov eax, dword [ebp - 0x48]
mov eax, dword [ebp + eax*4 - 0x6a0]
xor ecx, ecx
cmp eax, edx
setg cl
xor eax, eax
cmp esi, ecx
sete al
mov dword [ebp - 0x54], eax
dec dword [ebp - 0x48]
jns 0x402908
mov dword [ebp - 4], 0xa
cmp dword [ebp - 0x4c], 0x207b
jge 0x402981
push 0xab1f18
call fcn.004a7977
pop ecx
or dword [ebp - 4], 0xffffffff
xor eax, eax
jmp 0x4029ac
mov byte [ebp - 0x3d], al
cmp byte [ebp - 0x3d], 0
je 0x4029cd
push 0x1e6
push eax
push 0x49f
push 0x16b1
call dword [0xad14b0]
xor eax, eax
mov dword [ebp - 0x14], eax
jmp 0x4029dc
mov eax, dword [ebp - 0x14]
mov dword [ebp + eax*4 - 0x70], edi
inc dword [ebp - 0x14]
cmp dword [ebp - 0x14], edi
jl 0x4029d2
push 2
lea ecx, [ebp - 0x310]
call fcn.00414d37
push 3
lea ecx, [ebp - 0x4c0]
call fcn.00414d37
mov dword [ebp - 0x30], 0xe2632c5
mov dword [ebp - 0x54], 0x8e045dce
mov dword [ebp - 0x34], 0xbc1b0fe2
mov dword [ebp - 0x5c], 0x5d5e
mov dword [ebp - 0x48], 0x55e97312
mov dword [ebp - 0x3c], 0
jmp 0x402a37
mov ecx, dword [ebp - 0x3c]
mov eax, dword [ebp - 0x310]
and dword [eax + ecx*4], 0
inc dword [ebp - 0x3c]
cmp dword [ebp - 0x3c], 2
jl 0x402a27
mov dword [ebp - 0x3c], 0
jmp 0x402a59
mov ecx, dword [ebp - 0x3c]
mov eax, dword [ebp - 0x4c0]
mov dword [eax + ecx*4], 0x4801897a
inc dword [ebp - 0x3c]
cmp dword [ebp - 0x3c], 3
jl 0x402a46
mov dword [ebp - 0x24], 0x5925
cmp dword [ebp - 0x24], 0x5b9b
jle 0x402ac8
xor edi, edi
mov ebx, edi
mov dword [ebp - 0x4c], 0x650
xor esi, esi
mov eax, ebx
and eax, esi
cdq
push edx
push eax
lea ecx, [ebp - 0xb60]
call fcn.0040191d
pop ecx
pop ecx
mov ecx, eax
call fcn.00414b01
push eax
call fcn.004a7977
pop ecx
push 0
push 1
lea ecx, [ebp - 0xb60]
call fcn.004151d7
inc esi
cmp esi, 0x2750
jl 0x402a7c
dec ebx
dec dword [ebp - 0x4c]
jne 0x402a7a
inc edi
cmp edi, 0x6b33
jl 0x402a71
xor edi, edi
inc edi
mov dword [ebp - 0x3c], 0
jmp 0x402ae2
mov eax, dword [ebp - 0x3c]
mov dword [ebp + eax*4 - 0xa60], 0
inc dword [ebp - 0x3c]
cmp dword [ebp - 0x3c], 4
jl 0x402ad1
mov dword [ebp - 4], 0xc
cmp dword [ebp - 0x24], 0x5830
jge 0x402b03
push 0xab1f98
call fcn.004a7977
pop ecx
or dword [ebp - 4], 0xffffffff
xor eax, eax
jmp 0x402b2e
mov esi, dword [ebp - 0x4c0]
mov dword [esi + 8], edi
mov ebx, dword [ebp - 0x310]
jmp 0x402b44
xor eax, eax
xor edi, edi
inc edi
mov dword [ebp - 0x54], eax
mov dword [ebp - 0x34], 0xc6eed1e1
mov dword [ebp - 0x34], 0xd3ecf04b
mov dword [ebp - 0x4c], 0xfc36fe5
mov dword [ebp - 0x2c], 0x4adca1a1
mov dword [ebp - 0x34], 0xffffffff
push 3
lea ecx, [ebp - 0x304]
call fcn.00414d37
mov dword [ebp - 0x14], 0
jmp 0x402b93
mov ecx, dword [ebp - 0x14]
mov eax, dword [ebp - 0x304]
mov dword [eax + ecx*4], 8
inc dword [ebp - 0x14]
cmp dword [ebp - 0x14], 3
jl 0x402b80
mov eax, dword [esi + 8]
cmp eax, dword [ebx + 4]
jg 0x402bdb
cmp dword [ebp - 0x2c], 0
je 0x402bc3
mov eax, dword [ebp - 0x30]
cmp dword [ebp - 0x2c], 0x56a4
jne 0x402bbf
mov eax, dword [ebp - 0x304]
cmp dword [eax + 4], 0
je 0x402bc3
mov ecx, edi
jmp 0x402bc5
xor ecx, ecx
inc dword [ebp - 0x48]
mov eax, dword [ebp - 0x48]
mov dword [ebp - 0x4c], ecx
mov eax, dword [ebp - 0x4c]
xor eax, eax
cmp dword [ebp - 0xa58], eax
je 0x402bdd
mov eax, edi
mov dword [ebp - 0x2c], eax
mov edi, dword [ebp - 0x304]
mov eax, dword [ebp - 0x2c]
xor ecx, ecx
cmp eax, dword [edi + 4]
setle cl
mov eax, dword [ebp - 0x54]
xor edx, edx
cmp eax, ecx
setge dl
sub edx, dword [ebp - 0x5c]
neg edx
sbb edx, edx
inc edx
mov dword [ebp - 0x54], edx
jne 0x402c0f
xor eax, eax
cmp dword [esi + 8], eax
je 0x402c12
xor eax, eax
inc eax
mov dword [edi + 4], eax
lea edx, [eax - 0x4b0f4f2d]
mov ecx, dword [esi + 8]
mov eax, dword [ebp - 0x310]
mov dword [eax + ecx*4], edx
xor eax, eax
mov byte [ebp - 0x3d], al
cmp byte [ebp - 0x3d], al
je 0x402c38
push eax
call dword [0xad1314]
lea ecx, [ebp - 0x304]
call fcn.00414e09
dec dword [esi + 8]
jns 0x402b3f
lea ecx, [ebp - 0x4c0]
call fcn.00414e09
lea ecx, [ebp - 0x310]
call fcn.00414e09
xor eax, eax
mov dword [ebp - 0x3c], eax
xor ebx, ebx
inc ebx
cmp dword [ebp - 0x3c], eax
jl 0x4032e8
mov dword [ebp - 0x48], 0xffffffff
mov dword [ebp - 0x30], 0x5c829ed8
mov byte [ebp - 0x3d], al
cmp byte [ebp - 0x3d], 0
je 0x402c95
push 0x1237
call dword [0xad1468]
mov dword [ebp - 0x48], 0xd
jmp 0x402cd3
mov dword [ebp - 0x14], 0xffffffff
mov dword [ebp - 0x30], 0x79b69b2e
mov ecx, dword [ebp - 0x14]
neg ecx
sbb ecx, ecx
neg ecx
mov eax, dword [ebp - 0x48]
mov eax, dword [ebp - 0x30]
mov eax, dword [ebp - 0x14]
mov eax, dword [ebp - 0x48]
neg eax
sbb eax, eax
neg eax
imul eax, ecx
add eax, dword [ebp - 0x14]
mov dword [ebp - 0x30], eax
dec dword [ebp - 0x48]
cmp dword [ebp - 0x48], 0xfffffffe
jl 0x402c9e
mov dword [ebp - 0x5c], 0xa7bf748b
mov dword [ebp - 0x4c], 0x393b
cmp dword [ebp - 0x4c], 0x39fa
jle 0x402d17
xor edi, edi
xor esi, esi
mov eax, esi
or eax, edi
cdq
push edx
push eax
mov ecx, 0xace718
call fcn.00414b0c
inc esi
cmp esi, 0x49be
jl 0x402cf4
inc edi
cmp edi, 0x4328
jl 0x402cf2
mov dword [ebp - 0x14], 0
mov dword [ebp - 4], 0xe
cmp dword [ebp - 0x4c], 0x3641
jge 0x402d3d
mov edx, 0xab2000
mov ecx, 0xace718
call fcn.00417008
or dword [ebp - 4], 0xffffffff
jmp 0x402d64
push ebx
lea ecx, [ebp - 0x4b4]
call fcn.00414d37
push 3
lea ecx, [ebp - 0x2f8]
call fcn.00414d37
mov dword [ebp - 0x54], 0xffffffff
xor eax, eax
mov dword [ebp - 0x20], eax
cmp dword [ebp - 0x20], ebx
jge 0x402da8
mov ecx, dword [ebp - 0x20]
mov eax, dword [ebp - 0x4b4]
mov dword [eax + ecx*4], 0x3cdf98a5
inc dword [ebp - 0x20]
cmp dword [ebp - 0x20], ebx
jl 0x402d8e
xor eax, eax
mov dword [ebp - 0x20], eax
cmp dword [ebp - 0x20], 3
jge 0x402dc9
mov ecx, dword [ebp - 0x20]
mov eax, dword [ebp - 0x2f8]
or dword [eax + ecx*4], 0xffffffff
inc dword [ebp - 0x20]
cmp dword [ebp - 0x20], 3
jl 0x402db1
xor eax, eax
mov dword [ebp - 0x14], eax
cmp dword [ebp - 0x14], 0xffffffe7
jl 0x402f34
mov dword [ebp - 0x38], 0xffffffff
mov dword [ebp - 0x30], 0xd9e62b56
mov dword [ebp - 0x38], eax
cmp dword [ebp - 0x38], eax
jg 0x402eeb
mov dword [ebp - 0x4c], 0x5e8e
cmp dword [ebp - 0x4c], 0x61c6
jle 0x402e8a
mov dword [ebp - 0x2c], eax
mov ebx, eax
mov esi, eax
mov edi, eax
mov edx, ebx
mov ecx, esi
shl edx, cl
mov dword [ebp - 0x30], edx
mov eax, edi
and eax, edx
xor eax, dword [ebp - 0x2c]
cdq
push edx
push eax
lea ecx, [ebp - 0xd10]
call fcn.0040191d
pop ecx
pop ecx
mov ecx, eax
call fcn.00414b01
push eax
call fcn.004a7977
pop ecx
push 0
push 1
lea ecx, [ebp - 0xd10]
call fcn.004151d7
inc edi
cmp edi, 0xa75
mov edx, dword [ebp - 0x30]
jl 0x402e16
inc esi
xor eax, eax
cmp esi, 0x5878
jl 0x402e0b
inc ebx
cmp ebx, 0x2c4
jl 0x402e09
mov ecx, dword [ebp - 0x2c]
inc ecx
mov dword [ebp - 0x2c], ecx
cmp ecx, 0x7968
jl 0x402e07
push eax
push 0x12d4
push eax
push eax
call dword [0xad1318]
xor ebx, ebx
inc ebx
mov dword [ebp - 0x30], 0x149cec79
mov dword [ebp - 4], 0x10
cmp dword [ebp - 0x4c], 0x5d02
jge 0x402eac
push 0xab2068
call fcn.004a7977
pop ecx
or dword [ebp - 4], 0xffffffff
jmp 0x402ed3
mov ecx, dword [ebp - 0x38]
mov eax, dword [ebp - 0x2f8]
mov dword [eax], ecx
mov dword [ebp - 0x30], ecx
inc dword [ebp - 0x38]
xor eax, eax
jmp 0x402de7
mov esi, dword [ebp - 0x2f8]
mov eax, dword [ebp - 0x54]
xor edx, edx
cmp eax, dword [esi + 8]
setle dl
mov eax, dword [ebp - 0x38]
mov dword [ebp - 0x38], eax
mov eax, dword [ebp - 0x38]
xor ecx, ecx
cmp eax, 0xffffffff
setle cl
sub edx, ecx
sub edx, 0xed40a165
neg edx
sbb edx, edx
inc edx
add edx, 8
je 0x402fc5
mov eax, dword [ebp - 0x4b4]
cmp dword [eax], 0
je 0x403002
xor eax, eax
mov byte [ebp - 0x3d], al
cmp byte [ebp - 0x3d], 0
je 0x402f49
push eax
push 0xb71
call dword [0xad136c]
lea ecx, [ebp - 0x2f8]
call fcn.00414e09
lea ecx, [ebp - 0x4b4]
call fcn.00414e09
mov dword [ebp - 0x54], 0xa4c63829
mov dword [ebp - 0x2c], 0x313dd33a
mov dword [ebp - 0x30], 0xffffffff
mov dword [ebp - 0x4c], 0x320
cmp dword [ebp - 0x4c], 0x38b
jle 0x402fbc
xor ebx, ebx
xor edi, edi
xor esi, esi
lea eax, [edi + ebx]
mov ecx, esi
sar eax, cl
cdq
push edx
push eax
mov ecx, 0xace718
call fcn.00414b0c
inc esi
cmp esi, 0x47ea
jl 0x402f8a
inc edi
cmp edi, 0x1531
jl 0x402f88
inc ebx
cmp ebx, 0x786a
jl 0x402f86
xor ebx, ebx
inc ebx
mov dword [ebp - 0x14], 0
jmp 0x40301d
mov dword [ebp - 0x30], 0xffffffff
cmp dword [ebp - 0x38], 0xcb1a7a81
sbb eax, eax
neg eax
mov dword [ebp - 0x30], eax
mov dword [ebp - 0x38], 0
jmp 0x402ffc
cmp dword [ebp - 0x38], 0x80090ae7
sbb eax, eax
neg eax
xor ecx, ecx
cmp eax, dword [esi + 8]
setne cl
mov dword [ebp - 0x30], ecx
dec dword [ebp - 0x38]
cmp dword [ebp - 0x38], 0xfffffff5
jne 0x402fe3
dec dword [ebp - 0x14]
xor eax, eax
jmp 0x402dcc
mov eax, dword [ebp - 0x14]
mov dword [ebp + eax*4 - 0x738], 0x1bd
inc dword [ebp - 0x14]
cmp dword [ebp - 0x14], 4
jl 0x40300c
mov dword [ebp - 4], 0x12
cmp dword [ebp - 0x4c], 0x8c
jge 0x403042
mov edx, 0xab20c0
mov ecx, 0xace718
call fcn.00417008
or dword [ebp - 4], 0xffffffff
xor eax, eax
jmp 0x40306d
mov dword [ebp - 0x2c], 4
cmp dword [ebp - 0x2c], 0xffffffff
jl 0x403239
mov dword [ebp - 0x20], 0xe8c9f369
mov dword [ebp - 0x14], eax
cmp dword [ebp - 0x14], 3
jge 0x4030a7
mov eax, dword [ebp - 0x14]
mov dword [ebp + eax*4 - 0x9e4], 0x1c36b586
inc dword [ebp - 0x14]
cmp dword [ebp - 0x14], 3
jl 0x40308e
xor eax, eax
mov dword [ebp - 0x20], eax
cmp dword [ebp - 0x20], 3
jg 0x403231
mov dword [ebp - 0x4c], eax
mov dword [ebp - 0x24], 0x1cc0e426
mov dword [ebp - 0x4c], 0x912
cmp dword [ebp - 0x4c], 0xcdb
jle 0x403119
mov ebx, eax
mov edi, eax
mov esi, eax
mov edx, ebx
mov ecx, edi
shl edx, cl
mov dword [ebp - 0x30], edx
mov eax, esi
and eax, edx
cdq
push edx
push eax
mov ecx, 0xace718
call fcn.00414b0c
inc esi
cmp esi, 0x457e
mov edx, dword [ebp - 0x30]
jl 0x4030dd
inc edi
cmp edi, 0x3bcb
push 0
pop eax
jl 0x4030d2
inc ebx
cmp ebx, 0x383d
jl 0x4030d0
push eax
call dword [0xad1330]
xor ebx, ebx
inc ebx
mov dword [ebp - 4], 0x14
cmp dword [ebp - 0x4c], 0x564
jge 0x403138
mov edx, 0xab2108
mov ecx, 0xace718
call fcn.00417008
or dword [ebp - 4], 0xffffffff
jmp 0x40315f
mov eax, dword [ebp - 0x20]
cmp dword [ebp + eax*4 - 0x738], 0
je 0x4031cd
mov eax, dword [ebp - 0x20]
mov ecx, dword [ebp + eax*4 - 0x738]
mov eax, dword [ebp - 0x20]
mov dword [ebp + eax*4 - 0x738], ecx
xor eax, eax
test ecx, ecx
sete al
mov dword [ebp - 0x4c], eax
mov ecx, dword [ebp - 0x20]
mov eax, dword [ebp - 0x2c]
imul ecx, eax
mov dword [ebp - 0x9dc], ecx
mov eax, dword [ebp - 0x20]
xor edx, edx
cmp ecx, eax
setne dl
mov eax, dword [ebp - 0x4c]
xor ecx, ecx
cmp eax, edx
setle cl
xor eax, eax
cmp ecx, 0x62d7bc35
setge al
imul eax, eax, 0x3053
cmp eax, 0xffffffff
jbe 0x4031cd
mov eax, dword [ebp - 0x20]
mov eax, dword [ebp + eax*4 - 0x738]
mov eax, dword [ebp - 0x24]
xor ecx, ecx
test eax, eax
setle cl
add ecx, 0x25bb5a27
mov eax, dword [ebp - 0x20]
xor edx, edx
cmp ecx, eax
setl dl
cmp edx, 0xfffa
sbb edx, edx
add edx, 0xfffff8df
neg edx
sbb edx, edx
inc edx
mov eax, dword [ebp - 0x24]
xor ecx, ecx
cmp edx, eax
setle cl
mov dword [ebp - 0x30], ecx
xor eax, eax
mov byte [ebp - 0x3d], al
cmp byte [ebp - 0x3d], al
je 0x403227
push eax
push 0x1fbc
push 0xf1f
push 0x2168
call dword [0xad1488]
inc dword [ebp - 0x20]
xor eax, eax
jmp 0x4030aa
dec dword [ebp - 0x2c]
jmp 0x403074
mov eax, dword [ebp - 0x3c]
cmp dword [ebp + eax*4 - 0x70], 0
jne 0x4032cf
mov eax, dword [ebp - 0x3c]
mov eax, dword [ebp + eax*4 - 0x70]
xor ecx, ecx
cmp eax, 0x6dfc
setne cl
cmp ecx, 0x996a5308
sbb edx, edx
add edx, 8
neg edx
sbb edx, edx
inc edx
imul edx, dword [ebp - 0x3c]
sub edx, dword [ebp - 0x3c]
neg edx
sbb edx, edx
inc edx
mov eax, dword [ebp - 0x3c]
xor ecx, ecx
cmp edx, eax
setge cl
mov eax, dword [ebp - 0x3c]
sub ecx, dword [ebp + eax*4 - 0x70]
neg ecx
sbb ecx, ecx
inc ecx
cmp ecx, 0xdf7b1466
jae 0x403295
mov eax, dword [ebp - 0x50]
mov eax, dword [ebp - 0x3c]
mov eax, dword [ebp + eax*4 - 0x70]
mov eax, dword [ebp - 0x3c]
mov eax, dword [ebp + eax*4 - 0x70]
mov eax, dword [ebp - 0x3c]
mov eax, dword [ebp + eax*4 - 0x70]
mov eax, dword [ebp - 0x3c]
mov eax, dword [ebp + eax*4 - 0x70]
mov eax, dword [ebp - 0x3c]
mov eax, dword [ebp + eax*4 - 0x70]
mov eax, dword [ebp - 0x5c]
mov eax, dword [ebp - 0x70]
mov eax, dword [ebp - 0x54]
mov eax, dword [ebp - 0x3c]
cmp dword [ebp + eax*4 - 0x70], 0
jne 0x4032cf
xor eax, eax
jmp 0x4032d1
mov eax, ebx
xor ecx, ecx
add eax, 0x6d9e
setns cl
mov dword [ebp - 0x2c], ecx
dec dword [ebp - 0x3c]
xor eax, eax
jmp 0x402c6a
mov dword [ebp - 0x2c], eax
cmp dword [ebp - 0x2c], 0xb
je 0x40354d
push 2
lea ecx, [ebp - 0x200]
call fcn.00414d37
xor eax, eax
mov dword [ebp - 0x20], eax
mov dword [ebp - 0x14], eax
cmp dword [ebp - 0x14], 2
jge 0x403327
mov ecx, dword [ebp - 0x14]
mov eax, dword [ebp - 0x200]
mov dword [eax + ecx*4], ebx
inc dword [ebp - 0x14]
cmp dword [ebp - 0x14], 2
jl 0x403310
xor eax, eax
mov dword [ebp - 0x20], eax
cmp dword [ebp - 0x20], ebx
jg 0x403533
mov dword [ebp - 0x4c], 0x1616
cmp dword [ebp - 0x4c], 0x198d
jle 0x4033a9
push eax
push 0x4a9
push eax
call dword [0xad1310]
xor ebx, ebx
xor esi, esi
xor edi, edi
mov eax, esi
mov ecx, edi
sar eax, cl
xor eax, ebx
cdq
push edx
push eax
lea ecx, [ebp - 0xb90]
call fcn.0040191d
pop ecx
pop ecx
mov ecx, eax
call fcn.00414b01
push eax
call fcn.004a7977
pop ecx
push 0
push 1
lea ecx, [ebp - 0xb90]
call fcn.004151d7
inc edi
cmp edi, 0x1ded
jl 0x403356
inc esi
cmp esi, 0x10b1
jl 0x403354
inc ebx
cmp ebx, 0x709
jl 0x403352
xor ebx, ebx
inc ebx
mov dword [ebp - 0x24], 7
mov dword [ebp - 4], 0x16
cmp dword [ebp - 0x4c], 0x1357
jge 0x4033cb
push 0xab218c
call fcn.004a7977
pop ecx
or dword [ebp - 4], 0xffffffff
jmp 0x4033f2
mov edi, dword [ebp - 0x200]
mov eax, dword [edi + 4]
mov dword [ebp - 0x24], eax
mov eax, dword [ebp - 0x20]
mov eax, dword [ebp - 0x24]
mov eax, dword [ebp - 0x20]
mov eax, dword [ebp - 0x20]
xor ecx, ecx
mov edx, dword [ebp - 0x200]
cmp dword [edx + eax*4], ecx
setge cl
cmp ecx, 0x1e5c
jne 0x403428
xor eax, eax
cmp dword [edx], eax
mov edx, eax
je 0x40342a
mov edx, ebx
mov eax, dword [ebp - 0x20]
mov esi, dword [ebp - 0x20]
xor ebx, ebx
mov ecx, dword [ebp - 0x200]
cmp dword [ecx + eax*4], edx
sete bl
imul ebx, dword [ecx]
sub ebx, 0x7758b39d
neg ebx
sbb ebx, ebx
inc ebx
xor edx, edx
cmp ebx, dword [ecx + esi*4]
setg dl
mov eax, dword [ebp - 0x20]
xor ecx, ecx
cmp edx, eax
setge cl
mov dword [edi + 4], ecx
mov dword [ebp - 0x24], 0x239c
cmp dword [ebp - 0x24], 0x25b4
jle 0x4034de
xor ebx, ebx
xor edi, edi
xor eax, eax
mov dword [ebp - 0x14], eax
mov dword [ebp - 0x4c], 0x63fc
xor esi, esi
mov ecx, esi
sar eax, cl
or eax, ebx
cdq
push edx
push eax
lea ecx, [ebp - 0xde8]
call fcn.0040191d
pop ecx
pop ecx
mov ecx, eax
call fcn.00414b01
push eax
call fcn.004a7977
pop ecx
push 0
push 1
lea ecx, [ebp - 0xde8]
call fcn.004151d7
inc esi
cmp esi, 0x7c79
mov eax, dword [ebp - 0x14]
jl 0x403483
add eax, edi
mov dword [ebp - 0x14], eax
dec dword [ebp - 0x4c]
jne 0x403481
inc edi
cmp edi, 0x5bb2
jl 0x403475
inc ebx
cmp ebx, 0x4c90
jl 0x403473
mov ecx, dword [ebp - 0x20]
mov eax, dword [ebp - 0x200]
cmp dword [eax + ecx*4], 0
jne 0x40350c
mov dword [ebp - 4], 0x18
cmp dword [ebp - 0x24], 0x20b5
jge 0x403508
push 0xab21f0
call fcn.004a7977
pop ecx
or dword [ebp - 4], 0xffffffff
xor ebx, ebx
inc ebx
inc dword [ebp - 0x20]
xor eax, eax
jmp 0x40332a
lea ecx, [ebp - 0x200]
call fcn.00414e09
mov dword [ebp - 0x3c], 0x4f57b17b
inc dword [ebp - 0x2c]
jmp 0x4032eb
mov dword [ebp - 0x34], 0xe48d327c
mov dword [ebp - 0x24], 0x38ac
cmp dword [ebp - 0x24], 0x3c26
jle 0x4035ae
xor eax, eax
mov ebx, eax
mov dword [ebp - 0x4c], eax
mov esi, eax
mov edi, eax
mov eax, ebx
cdq
idiv esi
mov ebx, edx
mov eax, ebx
cdq
idiv edi
mov eax, edx
cdq
push edx
push eax
mov ecx, 0xace718
call fcn.00414b0c
inc edi
cmp edi, 0x1e2
jl 0x403576
inc esi
cmp esi, 0x57a5
push 0
pop eax
mov ebx, dword [ebp - 0x4c]
jl 0x40356d
inc ebx
mov dword [ebp - 0x4c], ebx
cmp ebx, 0x647a
jl 0x40356b
mov byte [ebp - 0x3d], 0
mov dword [ebp - 4], 0x1a
cmp dword [ebp - 0x24], 0x3529
jge 0x4035d1
mov edx, 0xab2270
mov ecx, 0xace718
call fcn.00417008
or dword [ebp - 4], 0xffffffff
xor eax, eax
xor ebx, ebx
inc ebx
cmp byte [ebp - 0x3d], al
je 0x4035f5
push 0xab
push 0x2099
push eax
push 0x411
call dword [0xad146c]
xor eax, eax
mov byte [ebp - 0x3d], al
cmp byte [ebp - 0x3d], al
je 0x403606
push eax
call dword [0xad130c]
mov dword [ebp - 0x4c], 0x3a00
cmp dword [ebp - 0x4c], 0x3b00
jle 0x403666
push 0x1ef3
push 0x16dc
push 0x1c13
push 0x2437
push 0x19de
push 0x26f4
push 0x244b
call dword [0xad1088]
xor edi, edi
xor esi, esi
mov eax, esi
or eax, edi
cdq
push edx
push eax
mov ecx, 0xace718
call fcn.00414b0c
inc esi
cmp esi, 0x55b2
jl 0x403643
inc edi
cmp edi, 0x3132
jl 0x403641
mov dword [ebp - 4], 0x1c
cmp dword [ebp - 0x4c], 0x36f4
jge 0x403685
mov edx, 0xab22d4
mov ecx, 0xace718
call fcn.00417008
or dword [ebp - 4], 0xffffffff
xor eax, eax
jmp 0x4036ca
mov dword [ebp - 0x14], 0xd7f825e7
mov dword [ebp - 0x4c], 0x74d8
cmp dword [ebp - 0x4c], 0x765c
jle 0x403707
mov esi, eax
mov edi, esi
mov ebx, 0x5c75
mov eax, edi
cdq
push edx
push eax
mov ecx, 0xace718
call fcn.00414b0c
dec edi
dec ebx
jne 0x4036ea
inc esi
cmp esi, 0xbad
jl 0x4036e3
inc ebx
push 2
lea ecx, [ebp - 0x7a4]
call fcn.00414d37
mov dword [ebp - 4], 0x1e
cmp dword [ebp - 0x4c], 0x713a
jge 0x403733
mov edx, 0xab2320
mov ecx, 0xace718
call fcn.00417008
or dword [ebp - 4], 0xffffffff
xor eax, eax
jmp 0x40375e
mov dword [ebp - 0x34], 0xfffffffc
mov dword [ebp - 0x30], 0xcedb
mov dword [ebp - 0x54], 0x2a6f9a4d
mov dword [ebp - 0x14], eax
cmp dword [ebp - 0x14], 2
jge 0x403797
mov ecx, dword [ebp - 0x14]
mov eax, dword [ebp - 0x7a4]
mov dword [eax + ecx*4], 0x59141a9c
inc dword [ebp - 0x14]
cmp dword [ebp - 0x14], 2
jl 0x40377c
xor eax, eax
mov dword [ebp - 0x14], eax
jmp 0x4037b6
mov dword [ebp - 0x4c], 0xffffffff
mov eax, dword [ebp - 0x30]
mov eax, dword [ebp - 0x4c]
mov eax, dword [ebp - 0x4c]
mov dword [ebp - 0x54], 8
dec dword [ebp - 0x14]
cmp dword [ebp - 0x14], 0xffffffe8
je 0x40379c
lea ecx, [ebp - 0x7a4]
call fcn.00414e09
movdqa xmm0, xmmword [0xac0f20]
movdqu xmmword [ebp - 0x970], xmm0
lea ecx, [ebp - 0x970]
lea eax, [ebp - 0x960]
push ecx
push eax
push ecx
lea ecx, [ebp - 0x7bc]
call fcn.00414de3
mov dword [ebp - 0x34], 0x6dbc1c23
mov dword [ebp - 0x34], 0xf6a1c3d0
mov dword [ebp - 0x34], 0xd20a2e71
mov eax, dword [ebp - 0x7bc]
and dword [eax], 0
lea ecx, [ebp - 0x7bc]
call fcn.00414e09
mov dword [ebp - 0x18], 0xfffd
mov dword [ebp - 0x2c], 0x2086bd08
mov dword [ebp - 0x48], 0xfffffff8
mov dword [ebp - 0x30], 9
xor eax, eax
mov byte [ebp - 0x3d], al
mov dword [ebp - 0x24], 0x6c98
cmp dword [ebp - 0x24], 0x6cb8
jle 0x4038c5
mov ecx, eax
mov dword [ebp - 0x14], eax
mov ebx, eax
mov dword [ebp - 0x4c], eax
mov edi, eax
mov eax, ebx
cdq
idiv edi
mov esi, ecx
sub esi, edx
mov ebx, 0x6681
mov eax, esi
cdq
push edx
push eax
lea ecx, [ebp - 0xbc0]
call fcn.0040191d
pop ecx
pop ecx
mov ecx, eax
call fcn.00414b01
push eax
call fcn.004a7977
pop ecx
push 0
push 1
lea ecx, [ebp - 0xbc0]
call fcn.004151d7
dec esi
dec ebx
jne 0x403865
inc edi
cmp edi, 0x32a8
mov ebx, dword [ebp - 0x4c]
mov ecx, dword [ebp - 0x14]
jl 0x403857
inc ebx
mov dword [ebp - 0x4c], ebx
cmp ebx, 0x6118
push 0
pop eax
jl 0x403855
inc ecx
mov dword [ebp - 0x14], ecx
cmp ecx, 0x2904
jl 0x403850
xor ebx, ebx
inc ebx
cmp byte [ebp - 0x3d], 0
je 0x4038d8
push eax
push ebx
push 0x1e58
call dword [0xad12ac]
mov dword [ebp - 4], 0x20
cmp dword [ebp - 0x24], 0x6adc
jge 0x4038f3
push 0xab2390
call fcn.004a7977
pop ecx
or dword [ebp - 4], 0xffffffff
jmp 0x40391a
mov eax, dword [ebp - 0x2c]
mov dword [ebp - 0x2c], 0xfffffff7
mov ecx, dword [ebp - 0x2c]
mov eax, dword [ebp - 0x18]
dec dword [ebp - 0x18]
cmp eax, ecx
jl 0x403935
mov esi, ebx
jmp 0x403937
xor esi, esi
mov eax, dword [ebp - 0x48]
cmp eax, dword [ebp - 0x48]
jg 0x403949
cmp dword [ebp - 0x48], 0
je 0x403949
mov edx, ebx
jmp 0x40394b
xor edx, edx
mov eax, dword [ebp - 0x48]
xor ecx, ecx
cmp eax, edx
setne cl
sub ecx, dword [ebp - 0x48]
add ecx, dword [ebp - 0x48]
xor eax, eax
cmp esi, ecx
setle al
mov dword [ebp - 0x30], eax
mov dword [ebp - 0x34], 0xe48d327c
mov dword [ebp - 0x48], 0xd811f07b
mov dword [ebp - 0x2c], 0xfffffff8
push 3
lea ecx, [ebp - 0x7d4]
call fcn.00414d37
mov dword [ebp - 0x34], 0x52f67d50
mov dword [ebp - 0x54], 4
mov dword [ebp - 0x34], 0xdca8fecf
mov dword [ebp - 0x30], 0xfffffff6
xor eax, eax
mov dword [ebp - 0x4c], eax
mov dword [ebp - 0x14], 0xffffffff
mov dword [ebp - 0x4c], 0xed3
cmp dword [ebp - 0x4c], 0x1079
jle 0x4039ed
push eax
push eax
call dword [0xad12f4]
xor esi, esi
mov edi, esi
mov ebx, 0x349c
mov eax, edi
cdq
push edx
push eax
mov ecx, 0xace718
call fcn.00414b0c
dec edi
dec ebx
jne 0x4039d0
inc esi
cmp esi, 0x385a
jl 0x4039c9
inc ebx
mov dword [ebp - 4], 0x22
cmp dword [ebp - 0x4c], 0xc04
jge 0x403a0c
mov edx, 0xab2408
mov ecx, 0xace718
call fcn.00417008
or dword [ebp - 4], 0xffffffff
xor eax, eax
jmp 0x403a37
mov dword [ebp - 0x20], eax
cmp dword [ebp - 0x20], 3
jge 0x403a5b
mov ecx, dword [ebp - 0x20]
mov eax, dword [ebp - 0x7d4]
mov dword [eax + ecx*4], 0xd193e056
inc dword [ebp - 0x20]
cmp dword [ebp - 0x20], 3
jl 0x403a40
xor eax, eax
mov dword [ebp - 0x20], eax
jmp 0x403a71
mov eax, dword [ebp - 0x20]
mov dword [ebp + eax*4 - 0x9fc], 0xfffffff7
inc dword [ebp - 0x20]
cmp dword [ebp - 0x20], 3
jl 0x403a60
mov eax, dword [ebp - 0x48]
mov dword [ebp - 0x2c], eax
mov eax, dword [ebp - 0x48]
sub eax, 4
cmp eax, dword [ebp - 0x2c]
jne 0x403a97
mov dword [ebp - 0x4c], ebx
mov eax, dword [ebp - 0x14]
mov eax, dword [ebp - 0x4c]
dec dword [ebp - 0x14]
mov eax, dword [ebp - 0x2c]
mov eax, dword [ebp - 0x48]
mov ecx, dword [ebp - 0x30]
mov eax, dword [ebp - 0x54]
xor edx, edx
cmp ecx, eax
setl dl
mov dword [ebp - 0x9f4], edx
lea ecx, [ebp - 0x7d4]
call fcn.00414e09
xor eax, eax
mov byte [ebp - 0x3d], al
cmp byte [ebp - 0x3d], al
je 0x403ada
push 0xab
push 0x2099
push eax
push 0x411
call dword [0xad146c]
xor eax, eax
mov dword [ebp - 0x34], eax
mov dword [ebp - 0x34], 0xbaeef20f
mov dword [ebp - 0x34], 0x5f1dbecc
mov dword [ebp - 0x34], 0xd37ad435
mov dword [ebp - 0x34], 0x909b7928
mov dword [ebp - 0x34], 0xced8f6ef
mov dword [ebp - 0x34], 0x3a88e00f
mov dword [ebp - 0x34], ebx
mov dword [ebp - 0x34], 0x7979b389
mov dword [ebp - 0x34], 0x4e912083
mov dword [ebp - 0x34], 0x71f09a2b
mov dword [ebp - 0x34], 0xfffffff8
mov dword [ebp - 0x34], 0x31e468a0
mov dword [ebp - 0x34], 0x61bf0796
mov dword [ebp - 0x34], 0x495231fb
mov dword [ebp - 0x34], 0x9beab1d6
mov dword [ebp - 0x34], 0xc0549ec7
mov dword [ebp - 0x34], 0xfffffff6
mov dword [ebp - 0x34], 0xfffffff6
mov dword [ebp - 0x34], ebx
mov dword [ebp - 0x20], eax
cmp dword [ebp - 0x20], 2
jge 0x403b78
mov eax, dword [ebp - 0x20]
mov dword [ebp + eax*4 - 0xa10], ebx
inc dword [ebp - 0x20]
cmp dword [ebp - 0x20], 2
jl 0x403b63
xor eax, eax
mov dword [ebp - 0x20], eax
cmp dword [ebp - 0x20], 3
jge 0x403b9a
mov eax, dword [ebp - 0x20]
mov dword [ebp + eax*4 - 0x7ec], 0xffff
inc dword [ebp - 0x20]
cmp dword [ebp - 0x20], 3
jl 0x403b81
xor eax, eax
inc dword [ebp - 0x7ec]
mov byte [ebp - 0x19], al
mov dword [ebp - 0x48], 0xfe0a8eac
mov dword [ebp - 0x4c], 0xfffffffa
push 4
lea ecx, [ebp - 0x5ec]
call fcn.00414d37
mov dword [ebp - 0x4c], 0xe57f6cc9
xor eax, eax
mov dword [ebp - 0x14], eax
cmp dword [ebp - 0x14], 4
jge 0x403beb
mov ecx, dword [ebp - 0x14]
mov eax, dword [ebp - 0x5ec]
mov dword [eax + ecx*4], 0xa7b051af
inc dword [ebp - 0x14]
cmp dword [ebp - 0x14], 4
jl 0x403bd0
mov dword [ebp - 0x48], eax
cmp dword [ebp - 0x48], 0xfffffffd
je 0x403c93