Function at 0x512ef0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
mov eax, 0x824
call fcn.0057a200
mov eax, dword [0x5faea4]
xor eax, esp
mov dword [esp + 0x820], eax
mov eax, dword [ebp + 8]
mov ecx, 0x100
push ebx
mov ebx, dword [ebp + 0x10]
push esi
mov esi, dword [ebp + 0xc]
push edi
push eax
lea eax, [esp + 0x2c]
mov dword [esp + 0x28], ebx
lea edi, [esp + 0x2c]
rep movsd dword es:[edi], dword [esi]
push eax
call fcn.00515820
add esp, 8
lea esi, [esp + 0x28]
cmp dword [ebp + 0x14], 0
lea edi, [esp + 0x428]
mov ecx, 0x100
rep movsd dword es:[edi], dword [esi]
je 0x512f60
lea eax, [esp + 0x428]
push ebx
push eax
call fcn.00515820
add esp, 8
lea edi, [esp + 0x78]
mov dword [esp + 0x1c], 8
mov dword [esp + 0xc], edi
mov ebx, dword [edi - 0x30]
mov eax, dword [edi - 0x50]
mul ebx
mov dword [esp + 0x14], ebx
shld edx, eax, 1
add eax, eax
add eax, dword [edi - 0x50]
adc edx, dword [edi - 0x4c]
add eax, ebx
mov dword [edi - 0x50], eax
adc edx, dword [edi - 0x2c]
mov dword [edi - 0x4c], edx
mov esi, edx
mov edx, eax
mov ecx, esi
xor edx, dword [edi + 0x10]
xor eax, eax
xor ecx, dword [edi + 0x14]
or eax, edx
mov dword [edi + 0x14], eax
mov eax, dword [esp + 0xc]
mov dword [edi + 0x10], ecx
mov edi, ecx
mov ebx, dword [eax + 0x14]
mov ecx, dword [eax - 0x10]
mov eax, ecx
mul edi
shld edx, eax, 1
add eax, eax
add eax, ecx
mov ecx, dword [esp + 0xc]
adc edx, dword [ecx - 0xc]
add eax, edi
mov dword [ecx - 0x10], eax
mov eax, dword [esp + 0x14]
adc edx, ebx
xor eax, dword [ecx - 0x10]
mov dword [ecx - 0xc], edx
mov edx, dword [ecx - 0x2c]
xor edx, dword [ecx - 0xc]
mov ecx, eax
mov dword [esp + 0x14], eax
xor eax, eax
shrd dword [esp + 0x14], edx, 0x18
or eax, dword [esp + 0x14]
shr edx, 0x18
shl ecx, 8
or ecx, edx
mov edx, dword [esp + 0xc]
mov dword [edx - 0x30], eax
mov dword [edx - 0x2c], ecx
mov ecx, dword [edx - 0x50]
mov eax, ecx
mul dword [edx - 0x30]
shld edx, eax, 1
add eax, eax
add eax, ecx
mov ecx, dword [esp + 0xc]
adc edx, esi
add eax, dword [ecx - 0x30]
mov esi, eax
mov dword [ecx - 0x50], eax
adc edx, dword [ecx - 0x2c]
xor esi, edi
mov dword [ecx - 0x4c], edx
xor eax, eax
xor edx, ebx
mov ecx, esi
shrd esi, edx, 0x10
shl ecx, 0x10
or eax, esi
shr edx, 0x10
mov esi, dword [esp + 0xc]
mov ebx, eax
or ecx, edx
mov dword [esi + 0x10], eax
mov eax, dword [esi - 0x10]
mul ebx
mov dword [esi + 0x14], ecx
shld edx, eax, 1
add eax, eax
add eax, dword [esi - 0x10]
mov edi, dword [esi - 0x28]
adc edx, dword [esi - 0xc]
add eax, ebx
mov ebx, dword [esi - 0x30]
adc edx, ecx
mov dword [esi - 0x10], eax
mov ecx, eax
mov dword [esi - 0xc], edx
mov eax, edx
xor ebx, ecx
mov edx, dword [esi - 0x2c]
xor edx, eax
xor eax, eax
mov ecx, edx
shld edx, ebx, 1
shr ecx, 0x1f
or eax, edx
add ebx, ebx
mov dword [esi - 0x2c], eax
or ecx, ebx
mov eax, dword [esi - 0x48]
mov ebx, dword [esi - 0x24]
mul edi
mov dword [esi - 0x30], ecx
shld edx, eax, 1
add eax, eax
add eax, dword [esi - 0x48]
adc edx, dword [esi - 0x44]
add eax, edi
mov dword [esi - 0x48], eax
adc edx, ebx
mov dword [esi - 0x44], edx
mov edx, eax
xor edx, dword [esi + 0x18]
xor eax, eax
mov ecx, dword [esi - 0x44]
or eax, edx
xor ecx, dword [esi + 0x1c]
mov dword [esi + 0x1c], eax
mov eax, dword [esp + 0xc]
mov dword [esi + 0x18], ecx
mov esi, ecx
mov ecx, dword [eax - 8]
mov eax, ecx
mul esi
shld edx, eax, 1
add eax, eax
add eax, ecx
mov ecx, dword [esp + 0xc]
adc edx, dword [ecx - 4]
add eax, esi
mov dword [ecx - 8], eax
mov esi, eax
adc edx, dword [ecx + 0x1c]
xor esi, edi
mov dword [ecx - 4], edx
xor eax, eax
xor edx, ebx
mov ecx, esi
shrd esi, edx, 0x18
shl ecx, 8
or eax, esi
shr edx, 0x18
mov esi, dword [esp + 0xc]
or ecx, edx
mov edi, eax
mov ebx, ecx
mov dword [esi - 0x28], eax
mov eax, dword [esi - 0x48]
mul edi
mov dword [esi - 0x24], ecx
shld edx, eax, 1
add eax, eax
add eax, dword [esi - 0x48]
adc edx, dword [esi - 0x44]
add eax, edi
mov dword [esi - 0x48], eax
mov ecx, eax
adc edx, ebx
mov dword [esi - 0x44], edx
mov eax, edx
mov edx, esi
mov esi, dword [edx + 0x18]
xor esi, ecx
mov ecx, edx
mov edx, dword [ecx + 0x1c]
mov ecx, esi
xor edx, eax
shl ecx, 0x10
shrd esi, edx, 0x10
xor eax, eax
shr edx, 0x10
or eax, esi
or ecx, edx
mov esi, eax
mov edx, dword [esp + 0xc]
mov dword [edx + 0x18], eax
mov dword [edx + 0x1c], ecx
mov ecx, dword [edx - 8]
mov eax, ecx
mul esi
shld edx, eax, 1
add eax, eax
add eax, ecx
mov ecx, dword [esp + 0xc]
adc edx, dword [ecx - 4]
add eax, esi
mov dword [ecx - 8], eax
mov esi, eax
adc edx, dword [ecx + 0x1c]
xor esi, edi
mov dword [ecx - 4], edx
xor eax, eax
xor edx, ebx
mov ecx, edx
shld edx, esi, 1
shr ecx, 0x1f
or eax, edx
add esi, esi
or ecx, esi
mov esi, dword [esp + 0xc]
mov ebx, dword [esi - 0x20]
mov dword [esi - 0x24], eax
mov eax, dword [esi - 0x40]
mul ebx
mov dword [esi - 0x28], ecx
shld edx, eax, 1
mov dword [esp + 0x14], ebx
add eax, eax
add eax, dword [esi - 0x40]
adc edx, dword [esi - 0x3c]
add eax, ebx
mov dword [esi - 0x40], eax
mov edi, eax
adc edx, dword [esi - 0x1c]
mov eax, dword [esp + 0xc]
mov dword [esi - 0x3c], edx
mov esi, edx
mov edx, edi
mov ecx, esi
xor ecx, dword [eax + 0x24]
xor edx, dword [eax + 0x20]
mov ebx, ecx
xor eax, eax
mov dword [esp + 0x10], ebx
or eax, edx
mov edx, dword [esp + 0xc]
mov dword [edx + 0x24], eax
mov eax, ebx
mov dword [edx + 0x20], ecx
mov ecx, dword [edx]
mul ecx
shld edx, eax, 1
add eax, eax
add eax, ebx
mov ebx, dword [esp + 0xc]
adc edx, dword [ebx + 0x24]
add eax, ecx
mov ecx, ebx
adc edx, dword [ecx + 4]
mov dword [ecx], eax
mov eax, dword [esp + 0x14]
mov ebx, edx
xor eax, dword [ecx]
mov dword [ecx + 4], edx
mov edx, dword [ecx - 0x1c]
mov ecx, eax
mov dword [esp + 0x14], eax
xor edx, ebx
shrd dword [esp + 0x14], edx, 0x18
xor eax, eax
shl ecx, 8
or eax, dword [esp + 0x14]
shr edx, 0x18
or ecx, edx
mov dword [esp + 0x18], ebx
mov edx, dword [esp + 0xc]
mov dword [edx - 0x20], eax
mov eax, edi
mov dword [edx - 0x1c], ecx
mov ecx, edx
mul dword [ecx - 0x20]
shld edx, eax, 1
add eax, eax
add eax, edi
mov edi, dword [ecx - 0x20]
adc edx, esi
mov esi, dword [ecx - 0x1c]
add eax, edi
mov dword [ecx - 0x40], eax
adc edx, esi
mov eax, dword [esp + 0x10]
mov dword [ecx - 0x3c], edx
mov ecx, edx
mov edx, dword [esp + 0xc]
mov ebx, edx
xor eax, dword [edx - 0x40]
mov edx, dword [ebx + 0x24]
xor edx, ecx
mov dword [esp + 0x10], eax
shrd dword [esp + 0x10], edx, 0x10
mov ecx, eax
xor eax, eax
or eax, dword [esp + 0x10]
shr edx, 0x10
shl ecx, 0x10
or ecx, edx
mov edx, ebx
mov dword [edx + 0x20], eax
mov dword [edx + 0x24], ecx
mov ecx, eax
mov eax, dword [edx + 0x24]
mov dword [esp + 0x20], eax
mov eax, ecx
mov dword [esp + 0x14], ecx
mov ecx, dword [edx]
mul ecx
shld edx, eax, 1
add eax, eax
add eax, dword [esp + 0x14]
adc edx, dword [esp + 0x20]
add eax, ecx
mov dword [ebx], eax
adc edx, dword [esp + 0x18]
xor edi, eax
xor esi, edx
mov dword [ebx + 4], edx
mov ecx, esi
xor eax, eax
shld esi, edi, 1
shr ecx, 0x1f
add edi, edi
or eax, esi
or ecx, edi
mov edi, ebx
mov ebx, dword [edi - 0x18]
mov dword [edi - 0x1c], eax
mov eax, dword [edi - 0x38]
mul ebx
mov dword [edi - 0x20], ecx
mov dword [esp + 0x10], ebx
shld edx, eax, 1
add eax, eax
mov ecx, dword [edi + 0x2c]
add eax, dword [edi - 0x38]
adc edx, dword [edi - 0x34]
add eax, ebx
mov dword [edi - 0x38], eax
adc edx, dword [edi - 0x14]
mov dword [edi - 0x34], edx
mov esi, edx
mov edx, dword [edi + 0x28]
xor ecx, esi
xor edx, eax
mov dword [edi + 0x28], ecx
xor eax, eax
or eax, edx
mov dword [edi + 0x2c], eax
mov edi, ecx
mov eax, dword [esp + 0xc]
mov ebx, dword [eax + 0x2c]
mov ecx, dword [eax + 8]
mov eax, ecx
mul edi
shld edx, eax, 1
add eax, eax
add eax, ecx
mov ecx, dword [esp + 0xc]
adc edx, dword [ecx + 0xc]
add eax, edi
mov dword [ecx + 8], eax
mov eax, dword [esp + 0x10]
adc edx, ebx
xor eax, dword [ecx + 8]
mov dword [ecx + 0xc], edx
mov edx, dword [ecx - 0x14]
xor edx, dword [ecx + 0xc]
mov ecx, eax
mov dword [esp + 0x10], eax
xor eax, eax
shrd dword [esp + 0x10], edx, 0x18
or eax, dword [esp + 0x10]
shr edx, 0x18
shl ecx, 8
or ecx, edx
mov edx, dword [esp + 0xc]
mov dword [edx - 0x18], eax
mov dword [edx - 0x14], ecx
mov ecx, dword [edx - 0x38]
mov eax, ecx
mul dword [edx - 0x18]
shld edx, eax, 1
add eax, eax
add eax, ecx
mov ecx, dword [esp + 0xc]
adc edx, esi
add eax, dword [ecx - 0x18]
mov esi, eax
mov dword [ecx - 0x38], eax
adc edx, dword [ecx - 0x14]
xor esi, edi
mov dword [ecx - 0x34], edx
xor eax, eax
xor edx, ebx
mov ecx, esi
mov ebx, dword [esp + 0xc]
shrd esi, edx, 0x10
shl ecx, 0x10
or eax, esi
shr edx, 0x10
mov dword [ebx + 0x28], eax
mov esi, eax
mov eax, dword [ebx + 8]
or ecx, edx
mul esi
mov edi, ecx
mov dword [ebx + 0x2c], ecx
shld edx, eax, 1
mov dword [esp + 0x18], edi
add eax, eax
add eax, dword [ebx + 8]
adc edx, dword [ebx + 0xc]
add eax, esi
adc edx, edi
mov dword [ebx + 8], eax
mov dword [ebx + 0xc], edx
mov ecx, eax
mov eax, edx
mov edi, dword [esp + 0xc]
mov edx, ebx
mov ebx, dword [edx - 0x18]
xor ebx, ecx
mov ecx, edx
mov edx, dword [ecx - 0x14]
xor edx, eax
xor eax, eax
mov ecx, edx
shld edx, ebx, 1
shr ecx, 0x1f
or eax, edx
add ebx, ebx
mov edx, dword [esp + 0xc]
or ecx, ebx
mov ebx, dword [edx - 0x24]
mov dword [edx - 0x14], eax
mov eax, dword [edx - 0x50]
mov dword [edx - 0x18], ecx
mov ecx, dword [edx - 0x28]
mul ecx
shld edx, eax, 1
add eax, eax
add eax, dword [edi - 0x50]
adc edx, dword [edi - 0x4c]
add eax, ecx
mov ecx, edi
adc edx, ebx
mov dword [ecx - 0x50], eax
mov dword [ecx - 0x4c], edx
mov edx, eax
mov ecx, dword [ecx - 0x4c]
xor edx, esi
xor ecx, dword [esp + 0x18]
xor eax, eax
or eax, edx
mov dword [edi + 0x28], ecx
mov dword [edi + 0x2c], eax
mov esi, edi
mov eax, ecx
mul dword [edi]
shld edx, eax, 1
add eax, eax
add eax, ecx
adc edx, dword [edi + 0x2c]
add eax, dword [edi]
mov dword [esi], eax
adc edx, dword [esi + 4]
mov dword [esi + 4], edx
mov edx, dword [esi - 0x28]
xor ebx, dword [esi + 4]
xor edx, eax
xor eax, eax
mov ecx, edx
shrd edx, ebx, 0x18
shl ecx, 8
or eax, edx
shr ebx, 0x18
mov dword [esi - 0x28], eax
mov edi, eax
mov eax, dword [esi - 0x50]
or ecx, ebx
mul edi
mov ebx, ecx
mov dword [esi - 0x24], ecx
shld edx, eax, 1
add eax, eax
add eax, dword [esi - 0x50]
adc edx, dword [esi - 0x4c]
add eax, edi
mov dword [esi - 0x50], eax
adc edx, ebx
mov dword [esi - 0x4c], edx
mov esi, eax
mov eax, dword [esp + 0xc]
xor esi, dword [eax + 0x28]
mov edx, dword [eax - 0x4c]
mov ecx, esi
xor edx, dword [eax + 0x2c]
xor eax, eax
shrd esi, edx, 0x10
shl ecx, 0x10
shr edx, 0x10
or eax, esi
or ecx, edx
mov edx, dword [esp + 0xc]
mov esi, dword [edx]
mov dword [edx + 0x28], eax
mov dword [edx + 0x2c], ecx
mov ecx, eax
mul esi
shld edx, eax, 1
add eax, eax
add eax, ecx
mov ecx, dword [esp + 0xc]
adc edx, dword [ecx + 0x2c]
add eax, esi
mov dword [ecx], eax
mov esi, eax
adc edx, dword [ecx + 4]
xor eax, eax
mov dword [ecx + 4], edx
xor esi, edi
xor edx, ebx
mov ebx, dword [esp + 0xc]
mov ecx, edx
shld edx, esi, 1
shr ecx, 0x1f
or eax, edx
mov edi, dword [ebx + 0x10]
mov dword [ebx - 0x24], eax
add esi, esi
or ecx, esi
mov dword [ebx - 0x28], ecx
mov ecx, dword [ebx - 0x20]
mov eax, ecx
mul dword [ebx - 0x48]
shld edx, eax, 1
add eax, eax
add eax, ecx
adc edx, dword [ebx - 0x1c]
add eax, dword [ebx - 0x48]
mov dword [ebx - 0x48], eax
adc edx, dword [ebx - 0x44]
xor edi, eax
mov esi, edx
mov dword [ebx - 0x44], edx
mov edx, dword [ebx + 0x14]
xor eax, eax
xor edx, esi
mov dword [esp + 0x18], esi
mov esi, dword [esp + 0xc]
or eax, edi
mov dword [ebx + 0x14], eax
mov edi, edx
mov dword [ebx + 0x10], edx
mov ebx, eax
mov eax, dword [esp + 0xc]
mov eax, dword [eax + 8]
mul edi
shld edx, eax, 1
add eax, eax
add eax, dword [esi + 8]
adc edx, dword [esi + 0xc]
add eax, edi
mov dword [esi + 8], eax
mov eax, esi
adc edx, ebx
xor ecx, dword [eax + 8]
mov dword [eax + 0xc], edx
mov edx, dword [eax - 0x1c]
xor edx, dword [eax + 0xc]
xor eax, eax
mov dword [esp + 0x10], ecx
shrd dword [esp + 0x10], edx, 0x18
shl ecx, 8
shr edx, 0x18
or eax, dword [esp + 0x10]
or ecx, edx
mov edx, esi
mov dword [edx - 0x20], eax
mov dword [edx - 0x1c], ecx
mov ecx, eax
mul dword [edx - 0x48]
shld edx, eax, 1
add eax, eax
add eax, ecx
mov ecx, esi
adc edx, dword [ecx - 0x1c]
add eax, dword [ecx - 0x48]
mov esi, eax
mov dword [ecx - 0x48], eax
adc edx, dword [esp + 0x18]
xor esi, edi
mov edi, ecx
mov dword [ecx - 0x44], edx
xor eax, eax
mov ecx, esi
shl ecx, 0x10
mov edx, dword [edi - 0x44]
xor edx, ebx
mov ebx, dword [edi - 0x20]
shrd esi, edx, 0x10
shr edx, 0x10
or eax, esi
or ecx, edx
mov dword [edi + 0x10], eax
mov dword [edi + 0x14], ecx
mov ecx, eax
mov eax, dword [edi + 8]
mul ecx
shld edx, eax, 1
add eax, eax
add eax, dword [edi + 8]
adc edx, dword [edi + 0xc]
add eax, ecx
mov dword [edi + 8], eax
adc edx, dword [edi + 0x14]
xor ebx, eax
mov dword [edi + 0xc], edx
xor eax, eax
mov edx, dword [edi - 0x1c]
xor edx, dword [edi + 0xc]
mov ecx, edx
shld edx, ebx, 1
shr ecx, 0x1f
or eax, edx
add ebx, ebx
mov dword [edi - 0x1c], eax
or ecx, ebx
mov dword [edi - 0x20], ecx
mov ebx, edi
mov ecx, dword [edi - 0x18]
mov eax, ecx
mul dword [edi - 0x40]
shld edx, eax, 1
add eax, eax
add eax, ecx
adc edx, dword [edi - 0x14]
add dword [edi - 0x40], eax
adc edx, dword [edi - 0x3c]
xor eax, eax
mov dword [edi - 0x3c], edx
mov esi, edx
mov edi, dword [ebx + 0x18]
xor edi, dword [ebx - 0x40]
mov edx, dword [ebx + 0x1c]
or eax, edi
xor edx, esi
mov dword [ebx + 0x1c], eax
mov dword [ebx + 0x18], edx
mov edi, edx
mov ebx, eax
mov dword [esp + 0x18], esi
mov eax, dword [esp + 0xc]
mov eax, dword [eax - 0x10]
mul edi
shld edx, eax, 1
mov esi, dword [esp + 0xc]
add eax, eax
add eax, dword [esi - 0x10]
adc edx, dword [esi - 0xc]
add eax, edi
mov dword [esi - 0x10], eax
mov eax, esi
adc edx, ebx
xor ecx, dword [eax - 0x10]
mov dword [eax - 0xc], edx
mov edx, dword [eax - 0x14]
xor edx, dword [eax - 0xc]
xor eax, eax
mov dword [esp + 0x10], ecx
shrd dword [esp + 0x10], edx, 0x18
or eax, dword [esp + 0x10]
shr edx, 0x18
shl ecx, 8
or ecx, edx
mov edx, esi
mov dword [edx - 0x18], eax
mov dword [edx - 0x14], ecx
mov ecx, eax
mul dword [edx - 0x40]
shld edx, eax, 1
add eax, eax
add eax, ecx
mov ecx, esi
adc edx, dword [ecx - 0x14]
add eax, dword [ecx - 0x40]
mov esi, eax
mov dword [ecx - 0x40], eax
adc edx, dword [esp + 0x18]
xor esi, edi
mov edi, ecx
mov dword [ecx - 0x3c], edx
xor eax, eax
mov ecx, esi
shl ecx, 0x10
mov edx, dword [edi - 0x3c]
xor edx, ebx
mov ebx, dword [edi - 0x18]
shrd esi, edx, 0x10
shr edx, 0x10
or eax, esi
or ecx, edx
mov dword [edi + 0x18], eax
mov dword [edi + 0x1c], ecx
mov ecx, eax
mov eax, dword [edi - 0x10]
mul ecx
shld edx, eax, 1
add eax, eax
add eax, dword [edi - 0x10]
adc edx, dword [edi - 0xc]
add eax, ecx
mov dword [edi - 0x10], eax
adc edx, dword [edi + 0x1c]
xor ebx, eax
mov dword [edi - 0xc], edx
xor eax, eax
mov edx, dword [edi - 0x14]
xor edx, dword [edi - 0xc]
mov ecx, edx
shld edx, ebx, 1
shr ecx, 0x1f
or eax, edx
add ebx, ebx
or ecx, ebx
mov dword [edi - 0x14], eax
mov dword [edi - 0x18], ecx
mov ecx, dword [edi - 0x30]
mov eax, ecx
mul dword [edi - 0x38]
shld edx, eax, 1
add eax, eax
add eax, ecx
adc edx, dword [edi - 0x2c]
add eax, dword [edi - 0x38]
mov dword [edi - 0x38], eax
adc edx, dword [edi - 0x34]
mov ebx, dword [esp + 0x14]
mov esi, edx
xor ebx, eax
mov dword [edi - 0x34], edx
mov edx, dword [esp + 0x20]
xor eax, eax
xor edx, esi
mov dword [esp + 0x18], esi
or eax, ebx
mov esi, dword [esp + 0xc]
mov dword [edi + 0x24], eax
mov eax, dword [esp + 0xc]
mov dword [edi + 0x20], edx
mov edi, edx
mov ebx, dword [eax + 0x24]
mov eax, dword [eax - 8]
mul edi
shld edx, eax, 1
add eax, eax
add eax, dword [esi - 8]
adc edx, dword [esi - 4]
add eax, edi
mov dword [esi - 8], eax
mov eax, esi
adc edx, ebx
xor ecx, dword [eax - 8]
mov dword [eax - 4], edx
mov edx, dword [eax - 0x2c]
xor edx, dword [eax - 4]
xor eax, eax
mov dword [esp + 0x10], ecx
shrd dword [esp + 0x10], edx, 0x18
or eax, dword [esp + 0x10]
shr edx, 0x18
shl ecx, 8
or ecx, edx
mov edx, esi
mov dword [edx - 0x30], eax
mov dword [edx - 0x2c], ecx
mov ecx, eax
mul dword [edx - 0x38]
shld edx, eax, 1
add eax, eax
add eax, ecx
mov ecx, esi
adc edx, dword [ecx - 0x2c]
add eax, dword [ecx - 0x38]
mov esi, eax
mov dword [ecx - 0x38], eax
adc edx, dword [esp + 0x18]
xor esi, edi
mov edi, ecx
mov dword [ecx - 0x34], edx
xor eax, eax
mov ecx, esi
shl ecx, 0x10
mov edx, dword [edi - 0x34]
xor edx, ebx
mov ebx, dword [edi - 0x30]
shrd esi, edx, 0x10
shr edx, 0x10
or eax, esi
or ecx, edx
mov dword [edi + 0x20], eax
mov dword [edi + 0x24], ecx
mov ecx, eax
mov eax, dword [edi - 8]
mul ecx
shld edx, eax, 1
add eax, eax
add eax, dword [edi - 8]
adc edx, dword [edi - 4]
add eax, ecx
mov dword [edi - 8], eax
adc edx, dword [edi + 0x24]
xor ebx, eax
mov dword [edi - 4], edx
mov edx, dword [edi - 0x2c]
xor edx, dword [edi - 4]
mov ecx, edx
shr ecx, 0x1f
shld edx, ebx, 1
xor eax, eax
add ebx, ebx
or eax, edx
or ecx, ebx
mov dword [edi - 0x2c], eax
mov dword [edi - 0x30], ecx
sub edi, 0xffffff80
sub dword [esp + 0x1c], 1
mov dword [esp + 0xc], edi
jne 0x512f70
lea esi, [esp + 0x2a8]
mov dword [esp + 0x1c], 8
nop dword [eax + eax]
mov ecx, dword [esi - 0x280]
mov eax, ecx
mov ebx, dword [esi - 0x180]
mul ebx
mov dword [esp + 0x10], ebx
shld edx, eax, 1
add eax, eax
add eax, ecx
adc edx, dword [esi - 0x27c]
add eax, ebx
mov dword [esi - 0x280], eax
adc edx, dword [esi - 0x17c]
mov edi, edx
mov dword [esi - 0x27c], edx
mov edx, eax
mov ecx, edi
xor edx, dword [esi + 0x80]
xor eax, eax
xor ecx, dword [esi + 0x84]
or eax, edx
mov dword [esi + 0x84], eax
mov ebx, ecx
mov eax, dword [esi - 0x80]
mul ebx
mov dword [esi + 0x80], ecx
shld edx, eax, 1
add eax, eax
add eax, dword [esi - 0x80]
adc edx, dword [esi - 0x7c]
add eax, ebx
mov dword [esi - 0x80], eax
adc edx, dword [esi + 0x84]
mov eax, dword [esp + 0x10]
xor eax, dword [esi - 0x80]
mov dword [esi - 0x7c], edx
mov ecx, eax
mov edx, dword [esi - 0x17c]
xor edx, dword [esi - 0x7c]
mov dword [esp + 0x10], eax
xor eax, eax
shrd dword [esp + 0x10], edx, 0x18
or eax, dword [esp + 0x10]
shr edx, 0x18
shl ecx, 8
or ecx, edx
mov dword [esi - 0x180], eax
mov dword [esi - 0x17c], ecx
mov ecx, dword [esi - 0x280]
mov eax, ecx
mul dword [esi - 0x180]
shld edx, eax, 1
add eax, eax
add eax, ecx
adc edx, edi
add eax, dword [esi - 0x180]
mov edi, eax
mov dword [esi - 0x280], eax
adc edx, dword [esi - 0x17c]
xor edi, ebx
mov dword [esi - 0x27c], edx
xor eax, eax
xor edx, dword [esi + 0x84]
mov ecx, edi
shrd edi, edx, 0x10
shl ecx, 0x10
or eax, edi
shr edx, 0x10
mov dword [esi + 0x80], eax
mov ebx, eax
mov eax, dword [esi - 0x80]
or ecx, edx
mul ebx
mov dword [esi + 0x84], ecx
shld edx, eax, 1
add eax, eax
add eax, dword [esi - 0x80]
adc edx, dword [esi - 0x7c]
add eax, ebx
mov dword [esi - 0x80], eax
adc edx, ecx
mov dword [esi - 0x7c], edx
mov edx, dword [esi - 0x17c]
xor edx, dword [esi - 0x7c]
mov ebx, dword [esi - 0x180]
mov ecx, edx
xor ebx, eax
shr ecx, 0x1f
shld edx, ebx, 1
xor eax, eax
or eax, edx
add ebx, ebx
mov dword [esi - 0x17c], eax
or ecx, ebx
mov ebx, dword [esi - 0x178]
mov dword [esi - 0x180], ecx
mov ecx, dword [esi - 0x278]
mov eax, ecx
mul ebx
shld edx, eax, 1
add eax, eax
add eax, ecx
adc edx, dword [esi - 0x274]
add eax, ebx
mov dword [esi - 0x278], eax
adc edx, dword [esi - 0x174]
mov dword [esi - 0x274], edx
mov edx, eax
xor edx, dword [esi + 0x88]
xor eax, eax
mov ecx, dword [esi - 0x274]
or eax, edx
xor ecx, dword [esi + 0x8c]
mov dword [esi + 0x8c], eax
mov edi, ecx
mov eax, dword [esi - 0x78]
mul edi
mov dword [esi + 0x88], ecx
shld edx, eax, 1
add eax, eax
add eax, dword [esi - 0x78]
adc edx, dword [esi - 0x74]
add eax, edi
mov edi, eax
mov dword [esi - 0x78], eax
adc edx, dword [esi + 0x8c]
xor edi, ebx
mov dword [esi - 0x74], edx
mov ecx, edi
xor edx, dword [esi - 0x174]
xor eax, eax
shrd edi, edx, 0x18
shl ecx, 8
shr edx, 0x18
or eax, edi
or ecx, edx
mov edi, dword [esi + 0x88]
mov dword [esi - 0x178], eax
mov ebx, eax
mov dword [esi - 0x174], ecx
mov ecx, dword [esi - 0x278]
mov eax, ecx
mul ebx
shld edx, eax, 1
add eax, eax
add eax, ecx
adc edx, dword [esi - 0x274]
add eax, ebx
mov dword [esi - 0x278], eax
adc edx, dword [esi - 0x174]
xor edi, eax
mov dword [esi - 0x274], edx
mov ecx, edi
mov edx, dword [esi + 0x8c]
xor eax, eax
xor edx, dword [esi - 0x274]
shrd edi, edx, 0x10
shl ecx, 0x10
shr edx, 0x10
or eax, edi
or ecx, edx
mov dword [esi + 0x88], eax
mov dword [esi + 0x8c], ecx
mov edi, eax
mov eax, dword [esi - 0x78]
mul edi
shld edx, eax, 1
add eax, eax
add eax, dword [esi - 0x78]
adc edx, dword [esi - 0x74]
add eax, edi
mov edi, eax
mov dword [esi - 0x78], eax
adc edx, ecx
xor eax, eax
mov dword [esi - 0x74], edx
xor edi, ebx
xor edx, dword [esi - 0x174]
mov ebx, dword [esi - 0x100]
mov ecx, edx
shld edx, edi, 1
shr ecx, 0x1f
or eax, edx
mov dword [esp + 0x10], ebx
mov dword [esi - 0x174], eax
add edi, edi
or ecx, edi
mov dword [esi - 0x178], ecx
mov ecx, dword [esi - 0x200]
mov eax, ecx
mul ebx
shld edx, eax, 1
add eax, eax
add eax, ecx
adc edx, dword [esi - 0x1fc]
add eax, ebx
mov ebx, eax
mov dword [esi - 0x200], eax
adc edx, dword [esi - 0xfc]
xor eax, eax
mov edi, edx
mov dword [esi - 0x1fc], edx
mov edx, ebx
mov ecx, edi
xor edx, dword [esi + 0x100]
xor ecx, dword [esi + 0x104]
or eax, edx
mov dword [esi + 0x104], eax
mov eax, ecx
mov dword [esp + 0x14], eax
mul dword [esi]
mov dword [esi + 0x100], ecx
shld edx, eax, 1
add eax, eax
add eax, ecx
adc edx, dword [esi + 0x104]
add dword [esi], eax
mov eax, dword [esp + 0x10]
adc edx, dword [esi + 4]
xor eax, dword [esi]
mov dword [esi + 4], edx
mov ecx, eax
mov edx, dword [esi - 0xfc]
xor edx, dword [esi + 4]
mov dword [esp + 0x10], eax
xor eax, eax
shrd dword [esp + 0x10], edx, 0x18
or eax, dword [esp + 0x10]
shr edx, 0x18
mov dword [esi - 0x100], eax
mov eax, ebx
shl ecx, 8
or ecx, edx
mul dword [esi - 0x100]
mov dword [esi - 0xfc], ecx
shld edx, eax, 1
add eax, eax
add eax, ebx
mov ebx, ecx
adc edx, edi
mov edi, dword [esi - 0x100]
add eax, edi
mov dword [esi - 0x200], eax
adc edx, ebx
mov eax, dword [esp + 0x14]
xor eax, dword [esi - 0x200]
mov dword [esp + 0x14], eax
mov ecx, eax
mov dword [esi - 0x1fc], edx
xor eax, eax
mov edx, dword [esi + 0x104]
xor edx, dword [esi - 0x1fc]
shrd dword [esp + 0x14], edx, 0x10
or eax, dword [esp + 0x14]
shr edx, 0x10
mov dword [esi + 0x100], eax
shl ecx, 0x10
or ecx, edx
mul dword [esi]
mov dword [esi + 0x104], ecx
shld edx, eax, 1
add eax, eax
add eax, dword [esi + 0x100]
adc edx, ecx
add dword [esi], eax
adc edx, dword [esi + 4]
xor eax, eax
xor edi, dword [esi]
xor ebx, edx
mov ecx, ebx
mov dword [esi + 4], edx
shld ebx, edi, 1
shr ecx, 0x1f
or eax, ebx
add edi, edi
mov ebx, dword [esi - 0xf8]
or ecx, edi
mov dword [esi - 0xfc], eax
mov dword [esi - 0x100], ecx
mov ecx, dword [esi - 0x1f8]
mov eax, ecx
mul ebx
mov dword [esp + 0x10], ebx
shld edx, eax, 1
add eax, eax
add eax, ecx
adc edx, dword [esi - 0x1f4]
add eax, ebx
mov dword [esi - 0x1f8], eax
adc edx, dword [esi - 0xf4]
mov edi, edx
mov dword [esi - 0x1f4], edx
mov edx, eax
mov ecx, edi
xor edx, dword [esi + 0x108]
xor eax, eax
xor ecx, dword [esi + 0x10c]
or eax, edx
mov dword [esi + 0x10c], eax
mov ebx, ecx
mov eax, dword [esi + 8]
mul ebx
mov dword [esi + 0x108], ecx
shld edx, eax, 1
add eax, eax
add eax, dword [esi + 8]
adc edx, dword [esi + 0xc]
add eax, ebx
mov dword [esi + 8], eax
adc edx, dword [esi + 0x10c]
mov eax, dword [esp + 0x10]
xor eax, dword [esi + 8]
mov dword [esi + 0xc], edx
mov ecx, eax
mov edx, dword [esi - 0xf4]
xor edx, dword [esi + 0xc]
mov dword [esp + 0x10], eax
xor eax, eax
shrd dword [esp + 0x10], edx, 0x18
or eax, dword [esp + 0x10]
shl ecx, 8
shr edx, 0x18
or ecx, edx
mov dword [esi - 0xf8], eax
mov dword [esi - 0xf4], ecx
mov ecx, dword [esi - 0x1f8]
mov eax, ecx
mul dword [esi - 0xf8]
shld edx, eax, 1
add eax, eax
add eax, ecx
adc edx, edi
add eax, dword [esi - 0xf8]
mov edi, eax
mov dword [esi - 0x1f8], eax
adc edx, dword [esi - 0xf4]
xor eax, eax
mov dword [esi - 0x1f4], edx
xor edi, ebx
xor edx, dword [esi + 0x10c]
mov ecx, edi
shrd edi, edx, 0x10
shl ecx, 0x10
or eax, edi
shr edx, 0x10
or ecx, edx
mov dword [esi + 0x108], eax
mov edi, eax
mov dword [esi + 0x10c], ecx
mov eax, dword [esi + 8]
mul edi
shld edx, eax, 1
add eax, eax
add eax, dword [esi + 8]
adc edx, dword [esi + 0xc]
add eax, edi
mov dword [esi + 8], eax
adc edx, ecx
mov eax, dword [esi - 0xf8]
xor eax, dword [esi + 8]
mov dword [esi + 0xc], edx
mov edx, dword [esi - 0xf4]
xor edx, dword [esi + 0xc]
mov dword [esp + 0x18], eax
mov ecx, edx
mov ebx, dword [esp + 0x18]
xor eax, eax
shld edx, ebx, 1
shr ecx, 0x1f
or eax, edx
add ebx, ebx
mov dword [esi - 0xf4], eax
or ecx, ebx
mov ebx, dword [esi - 0x280]
mov eax, ebx
mov dword [esi - 0xf8], ecx
mov ecx, dword [esi - 0x178]
mul ecx
shld edx, eax, 1
add eax, eax
add eax, ebx
mov ebx, dword [esi - 0x178]
adc edx, dword [esi - 0x27c]
add eax, ecx
mov dword [esi - 0x280], eax
adc edx, dword [esi - 0x174]
mov dword [esi - 0x27c], edx
mov edx, eax
mov ecx, dword [esi - 0x27c]
xor edx, edi
xor ecx, dword [esi + 0x10c]
xor eax, eax
or eax, edx
mov dword [esi + 0x108], ecx
mov dword [esi + 0x10c], eax
mov eax, ecx
mul dword [esi]
shld edx, eax, 1
add eax, eax
add eax, ecx
adc edx, dword [esi + 0x10c]
add dword [esi], eax
adc edx, dword [esi + 4]
xor ebx, dword [esi]
mov dword [esi + 4], edx
mov edx, dword [esi - 0x174]
xor edx, dword [esi + 4]
xor eax, eax
mov ecx, ebx
shrd ebx, edx, 0x18
shl ecx, 8
shr edx, 0x18
or eax, ebx
or ecx, edx
mov dword [esi - 0x178], eax
mov ebx, eax
mov dword [esi - 0x174], ecx
mov ecx, dword [esi - 0x280]
mov eax, ecx
mul ebx
shld edx, eax, 1
add eax, eax
add eax, ecx
adc edx, dword [esi - 0x27c]
add eax, ebx
mov edi, eax
mov dword [esi - 0x280], eax
adc edx, dword [esi - 0x174]
xor eax, eax
xor edi, dword [esi + 0x108]
mov dword [esi - 0x27c], edx
mov ecx, edi
xor edx, dword [esi + 0x10c]
shrd edi, edx, 0x10
shl ecx, 0x10
or eax, edi
shr edx, 0x10
or ecx, edx
mov dword [esi + 0x108], eax
mov dword [esi + 0x10c], ecx
mov ecx, eax
mul dword [esi]
shld edx, eax, 1
add eax, eax
add eax, ecx
adc edx, dword [esi + 0x10c]
add dword [esi], eax
mov edi, dword [esi]
adc edx, dword [esi + 4]
xor eax, eax
mov dword [esi + 4], edx
xor edi, ebx
xor edx, dword [esi - 0x174]
mov ebx, dword [esi - 0x100]
mov ecx, edx
shld edx, edi, 1
shr ecx, 0x1f
or eax, edx
add edi, edi
mov dword [esi - 0x174], eax
or ecx, edi
mov edi, dword [esi - 0xfc]
mov eax, ebx
mov dword [esi - 0x178], ecx
mov ecx, dword [esi - 0x278]
mul ecx
shld edx, eax, 1
add eax, eax
add eax, ebx
adc edx, edi
add eax, ecx
mov ecx, dword [esi + 0x84]
adc edx, dword [esi - 0x274]
mov dword [esi - 0x274], edx
mov edx, dword [esi + 0x80]
xor ecx, dword [esi - 0x274]
xor edx, eax
mov dword [esi - 0x278], eax
xor eax, eax
or eax, edx
mov dword [esi + 0x80], ecx
mov dword [esi + 0x84], eax
mov eax, dword [esi + 8]
mul ecx
mov dword [esp + 0x10], ecx
shld edx, eax, 1
add eax, eax
add eax, dword [esi + 8]
adc edx, dword [esi + 0xc]
add eax, ecx
mov dword [esi + 8], eax
adc edx, dword [esi + 0x84]
xor ebx, eax
xor edi, edx
mov dword [esi + 0xc], edx
xor eax, eax
mov ecx, ebx
shrd ebx, edi, 0x18
shl ecx, 8
or eax, ebx
shr edi, 0x18
or ecx, edi
mov dword [esi - 0x100], eax
mov ebx, eax
mov dword [esi - 0xfc], ecx
mov edi, ecx
mov ecx, dword [esi - 0x278]
mul ecx
shld edx, eax, 1
add eax, eax
add eax, ebx
adc edx, edi
add eax, ecx
mov dword [esi - 0x278], eax
adc edx, dword [esi - 0x274]
mov eax, dword [esp + 0x10]
xor eax, dword [esi - 0x278]
mov dword [esi - 0x274], edx
mov ecx, eax
mov edx, dword [esi + 0x84]
xor edx, dword [esi - 0x274]
mov dword [esp + 0x10], eax
xor eax, eax
shrd dword [esp + 0x10], edx, 0x10
or eax, dword [esp + 0x10]
shr edx, 0x10
shl ecx, 0x10
or ecx, edx
mov dword [esi + 0x80], eax
mov dword [esi + 0x84], ecx
mov ecx, eax
mov eax, dword [esi + 8]
mul ecx
shld edx, eax, 1
add eax, eax
add eax, dword [esi + 8]
adc edx, dword [esi + 0xc]
add eax, ecx
mov dword [esi + 8], eax
adc edx, dword [esi + 0x84]
xor ebx, eax
xor edi, edx
mov dword [esi + 0xc], edx
xor eax, eax
mov ecx, edi
shld edi, ebx, 1
shr ecx, 0x1f
or eax, edi
add ebx, ebx
mov edi, dword [esi - 0xf4]
or ecx, ebx
mov ebx, dword [esi - 0xf8]
mov dword [esi - 0xfc], eax
mov eax, ebx
mov dword [esi - 0x100], ecx
mov ecx, dword [esi - 0x200]
mul ecx
shld edx, eax, 1
add eax, eax
add eax, ebx
adc edx, edi
add eax, ecx
mov ecx, dword [esi + 0x8c]
adc edx, dword [esi - 0x1fc]
mov dword [esi - 0x1fc], edx
mov edx, dword [esi + 0x88]
mov dword [esi - 0x200], eax
xor edx, eax
xor ecx, dword [esi - 0x1fc]
xor eax, eax
or eax, edx
mov dword [esp + 0x10], ecx
mov dword [esi + 0x8c], eax
mov eax, dword [esi - 0x80]
mul ecx
mov dword [esi + 0x88], ecx
shld edx, eax, 1
add eax, eax
add eax, dword [esi - 0x80]
adc edx, dword [esi - 0x7c]
add eax, ecx
mov dword [esi - 0x80], eax
adc edx, dword [esi + 0x8c]
xor ebx, eax
xor edi, edx
mov dword [esi - 0x7c], edx
xor eax, eax
mov ecx, ebx
shrd ebx, edi, 0x18
shl ecx, 8
or eax, ebx
shr edi, 0x18
or ecx, edi
mov dword [esi - 0xf8], eax
mov ebx, eax
mov dword [esi - 0xf4], ecx
mov edi, ecx
mov ecx, dword [esi - 0x200]
mul ecx
shld edx, eax, 1
add eax, eax
add eax, ebx
adc edx, edi
add eax, ecx
mov dword [esi - 0x200], eax
adc edx, dword [esi - 0x1fc]
mov eax, dword [esp + 0x10]
xor eax, dword [esi - 0x200]
mov dword [esp + 0x10], eax
mov ecx, eax
mov dword [esi - 0x1fc], edx
xor eax, eax
mov edx, dword [esi + 0x8c]
xor edx, dword [esi - 0x1fc]
shrd dword [esp + 0x10], edx, 0x10
or eax, dword [esp + 0x10]
shl ecx, 0x10
shr edx, 0x10
or ecx, edx
mov dword [esi + 0x88], eax
mov dword [esi + 0x8c], ecx
mov ecx, eax
mov eax, dword [esi - 0x80]
mul ecx
shld edx, eax, 1
add eax, eax
add eax, dword [esi - 0x80]
adc edx, dword [esi - 0x7c]
add eax, ecx
mov dword [esi - 0x80], eax
adc edx, dword [esi + 0x8c]
xor ebx, eax
xor edi, edx
mov dword [esi - 0x7c], edx
mov ecx, edi
xor eax, eax
shld edi, ebx, 1
shr ecx, 0x1f
or eax, edi
add ebx, ebx
mov edi, dword [esi - 0x17c]
or ecx, ebx
mov ebx, dword [esi - 0x180]
mov dword [esi - 0xf4], eax
mov eax, ebx
mov dword [esi - 0xf8], ecx
mov ecx, dword [esi - 0x1f8]
mul ecx
shld edx, eax, 1
add eax, eax
add eax, ebx
adc edx, edi
add eax, ecx
mov ecx, dword [esi + 0x104]
adc edx, dword [esi - 0x1f4]
mov dword [esi - 0x1f8], eax
mov dword [esi - 0x1f4], edx
xor ecx, dword [esi - 0x1f4]
mov edx, dword [esi + 0x100]
xor edx, eax
mov dword [esp + 0x10], ecx
xor eax, eax
mov dword [esi + 0x100], ecx
or eax, edx
mov dword [esi + 0x104], eax
mov eax, dword [esi - 0x78]
mul ecx
shld edx, eax, 1
add eax, eax
add eax, dword [esi - 0x78]
adc edx, dword [esi - 0x74]
add eax, ecx
mov dword [esi - 0x78], eax
adc edx, dword [esi + 0x104]
xor ebx, eax
xor edi, edx
mov dword [esi - 0x74], edx
xor eax, eax
mov ecx, ebx
shrd ebx, edi, 0x18
shl ecx, 8
or eax, ebx
shr edi, 0x18
or ecx, edi
mov dword [esi - 0x180], eax
mov ebx, eax
mov dword [esi - 0x17c], ecx
mov edi, ecx
mov ecx, dword [esi - 0x1f8]
mul ecx
shld edx, eax, 1
add eax, eax
add eax, ebx
adc edx, edi
add eax, ecx
mov dword [esi - 0x1f8], eax
adc edx, dword [esi - 0x1f4]
mov eax, dword [esp + 0x10]
xor eax, dword [esi - 0x1f8]
mov dword [esi - 0x1f4], edx
mov ecx, eax
mov edx, dword [esi + 0x104]
xor edx, dword [esi - 0x1f4]
mov dword [esp + 0x10], eax
xor eax, eax
shrd dword [esp + 0x10], edx, 0x10
or eax, dword [esp + 0x10]
shr edx, 0x10
shl ecx, 0x10
or ecx, edx
mov dword [esi + 0x100], eax
mov dword [esi + 0x104], ecx
mov ecx, eax
mov eax, dword [esi - 0x78]
mul ecx
shld edx, eax, 1
add eax, eax
add eax, dword [esi - 0x78]
adc edx, dword [esi - 0x74]
add eax, ecx
mov dword [esi - 0x78], eax
adc edx, dword [esi + 0x104]
xor ebx, eax
xor edi, edx
mov dword [esi - 0x74], edx
mov edx, edi
xor eax, eax
shld edi, ebx, 1
shr edx, 0x1f
add ebx, ebx
or edx, ebx
lea esi, [esi + 0x10]
or eax, edi
mov dword [esi - 0x190], edx
sub dword [esp + 0x1c], 1
mov dword [esi - 0x18c], eax
jne 0x513850
mov eax, dword [esp + 0x24]
lea esi, [esp + 0x428]
mov edi, eax
mov ecx, 0x100
rep movsd dword es:[edi], dword [esi]
lea ecx, [esp + 0x28]
push ecx
push eax
call fcn.00515820
mov ecx, dword [esp + 0x834]
add esp, 8
pop edi
pop esi
pop ebx
xor ecx, esp
call fcn.00579e58
mov esp, ebp
pop ebp
ret