Function at 0x407970
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
sub esp, 0x6c
mov ebx, edx
cmp word [ecx], 0
je 0x407fd3
xor esi, esi
dec esi
cmp word [ecx + esi + 3], 0
lea esi, [esi + 2]
jne 0x407988
lea eax, [esi + 1]
mov edx, eax
cmp eax, 0x20
mov dword [ebp - 0x5c], ebx
mov dword [ebp - 0x24], eax
jbe 0x407fed
cmp edx, 0x40
jbe 0x408145
mov edi, 0xb492b66f
mov ebx, dword [ecx + esi - 0xb]
mov dword [ebp - 0x14], ebx
xor ebx, edi
mov dword [ebp - 0x10], ebx
mov eax, dword [ecx + esi - 0xf]
mov dword [ebp - 0x34], eax
mov edi, 0xbe98f273
xor eax, edi
mov dword [ebp - 0x18], eax
mov edi, dword [ecx + esi - 0x33]
mov dword [ebp - 0x2c], edi
xor edi, 0xc3a5c85c
mov dword [ebp - 0x30], edi
mov edi, dword [ecx + esi - 0x37]
mov dword [ebp - 0x38], edi
mov ebx, 0x97cb3127
xor edi, ebx
mov dword [ebp - 0x44], edi
mov ebx, dword [ecx + esi - 0x3f]
add ebx, edx
mov dword [ebp - 0x20], ebx
mov edi, dword [ecx + esi - 0x3b]
adc edi, 0
mov dword [ebp - 0x1c], edi
mov edi, dword [ecx + esi - 0x27]
mov dword [ebp - 0x28], edi
add edi, eax
mov eax, dword [ecx + esi - 0x23]
mov dword [ebp - 0x3c], eax
mov dword [ebp - 0x48], ecx
mov ecx, eax
adc ecx, dword [ebp - 0x10]
add edi, ebx
mov edx, dword [ebp - 0x1c]
adc ecx, edx
mov eax, edi
shld eax, ecx, 0xb
mov dword [ebp - 0x4c], eax
shld ecx, edi, 0xb
mov ebx, dword [ebp - 0x38]
mov eax, dword [ebp - 0x48]
add ebx, dword [eax + esi - 0x2f]
mov edi, dword [ebp - 0x2c]
mov eax, dword [ebp - 0x48]
adc edi, dword [eax + esi - 0x2b]
add ebx, dword [ebp - 0x20]
mov eax, edx
adc edi, edx
mov eax, edi
shld eax, ebx, 0x14
mov edx, ebx
shld edx, edi, 0x14
add edx, dword [ebp - 0x20]
adc eax, dword [ebp - 0x1c]
add edx, ecx
mov ecx, dword [ebp - 0x48]
mov dword [ebp - 0x40], edx
adc eax, dword [ebp - 0x4c]
mov dword [ebp - 0x20], eax
add ebx, dword [ebp - 0x28]
mov dword [ebp - 0x38], ebx
adc edi, dword [ebp - 0x3c]
mov dword [ebp - 0x2c], edi
mov edi, dword [ebp - 0x24]
mov eax, edi
mov edx, 0xbe98f273
mul edx
imul ebx, edi, 0xb492b66f
add ebx, edx
add eax, dword [ecx + esi - 0x1f]
mov dword [ebp - 0x1c], eax
adc ebx, dword [ecx + esi - 0x1b]
mov dword [ebp - 0x24], ebx
mov edi, dword [ecx + esi - 7]
mov dword [ebp - 0x4c], edi
add edi, eax
mov edx, dword [ecx + esi - 3]
mov dword [ebp - 0x28], edx
adc edx, ebx
mov eax, 0x97cb3127
add edi, eax
adc edx, 0xc3a5c85c
mov eax, edi
shld eax, edx, 0xb
mov dword [ebp - 0x54], eax
shld edx, edi, 0xb
mov ebx, dword [ebp - 0x34]
add ebx, dword [ecx + esi - 0x17]
mov eax, dword [ebp - 0x14]
adc eax, dword [ecx + esi - 0x13]
add ebx, dword [ebp - 0x1c]
adc eax, dword [ebp - 0x24]
mov edi, eax
mov ecx, eax
shld edi, ebx, 0x14
mov eax, ebx
shld eax, ecx, 0x14
add eax, dword [ebp - 0x1c]
adc edi, dword [ebp - 0x24]
add eax, edx
mov dword [ebp - 0x3c], eax
adc edi, dword [ebp - 0x54]
mov dword [ebp - 0x24], edi
add ebx, dword [ebp - 0x4c]
mov dword [ebp - 0x34], ebx
adc ecx, dword [ebp - 0x28]
mov dword [ebp - 0x14], ecx
mov edi, dword [ebp - 0x20]
mov ebx, edi
shr ebx, 0xf
xor ebx, dword [ebp - 0x40]
mov eax, ebx
mov edx, 0xbe98f273
mul edx
imul edi, edi, 0xbe98f273
add edi, edx
imul ecx, ebx, 0xb492b66f
add edi, ecx
mov edx, eax
add edx, dword [ebp - 0x44]
adc edi, dword [ebp - 0x30]
mov ecx, dword [ebp - 0x48]
mov eax, dword [ecx]
mov dword [ebp - 0x30], edx
add eax, edx
mov ebx, dword [ecx + 4]
mov dword [ebp - 0x44], edi
adc ebx, edi
mov ecx, ebx
shld ecx, eax, 0x19
shrd ebx, eax, 7
mov eax, ebx
mov edx, 0xbe98f273
mul edx
mov dword [ebp - 0x28], eax
imul edi, ebx, 0xb492b66f
add edi, edx
imul eax, ecx, 0xbe98f273
mov ecx, dword [ebp - 0x10]
mov ebx, ecx
mov edx, dword [ebp - 0x18]
shld ebx, edx, 0x1f
add eax, edi
mov dword [ebp - 0x4c], eax
shld edx, ecx, 0x1f
mov eax, edx
mov ecx, edx
mov edx, 0xbe98f273
mul edx
mov dword [ebp - 0x18], eax
imul eax, ecx, 0xb492b66f
add eax, edx
imul edx, ebx, 0xbe98f273
add edx, eax
mov dword [ebp - 0x1c], edx
and esi, 0xffffffc0
xor eax, eax
mov ecx, eax
mov dword [ebp - 0x10], eax
mov edx, dword [ebp - 0x28]
add edx, dword [ebp - 0x38]
mov eax, dword [ebp - 0x4c]
adc eax, dword [ebp - 0x2c]
add edx, dword [ebp - 0x18]
adc eax, dword [ebp - 0x1c]
mov edi, dword [ebp - 0x48]
mov ebx, dword [edi + ecx + 0x10]
mov dword [ebp - 0x58], ebx
add edx, dword [ebp - 0x58]
mov ecx, dword [edi + ecx + 0x14]
mov dword [ebp - 0x50], ecx
adc eax, ecx
mov edi, dword [ebp - 0x44]
mov dword [ebp - 0x28], edi
mov ebx, eax
shld ebx, edx, 0x1b
shrd eax, edx, 5
mov edi, eax
mov edx, 0xb492b66f
imul edi, edx
mov edx, 0xbe98f273
mul edx
add edx, edi
mov edi, 0xbe98f273
imul ebx, edi
add ebx, edx
mov dword [ebp - 0x44], ebx
mov ecx, dword [ebp - 0x18]
add ecx, dword [ebp - 0x40]
mov edi, dword [ebp - 0x1c]
adc edi, dword [ebp - 0x20]
mov edx, dword [ebp - 0x10]
mov ebx, dword [ebp - 0x48]
mov edx, dword [ebx + edx + 0x30]
mov dword [ebp - 0x64], edx
add ecx, edx
mov edx, dword [ebp - 0x10]
mov edx, dword [ebx + edx + 0x34]
mov dword [ebp - 0x54], edx
adc edi, edx
mov edx, edi
shld edx, ecx, 0x16
mov dword [ebp - 0x18], edx
shrd edi, ecx, 0xa
mov dword [ebp - 0x1c], edi
mov edx, dword [ebp - 0x30]
mov ecx, dword [ebp - 0x40]
xor edx, dword [ebp - 0x34]
mov ebx, dword [ebp - 0x28]
xor ebx, dword [ebp - 0x14]
mov edi, ebx
shld edi, edx, 0x1f
mov dword [ebp - 0x4c], edi
shrd ebx, edx, 1
mov dword [ebp - 0x28], ebx
mov dword [ebp - 0x30], eax
mov edi, dword [ebp - 0x1c]
mov eax, edi
mov edx, 0xbe98f273
mul edx
mov ebx, 0xb492b66f
imul edi, ebx
add edx, edi
mov edi, 0xbe98f273
mov ebx, dword [ebp - 0x18]
imul ebx, edi
add ebx, edx
mov edi, ebx
mov dword [ebp - 0x18], eax
mov eax, ecx
mov edx, 0xbe98f273
mul edx
mov ebx, eax
xor edi, dword [ebp - 0x2c]
mov dword [ebp - 0x1c], edi
mov eax, dword [ebp - 0x18]
xor eax, dword [ebp - 0x38]
mov dword [ebp - 0x18], eax
mov eax, 0xb492b66f
imul ecx, eax
add ecx, edx
mov eax, dword [ebp - 0x20]
mov edx, 0xbe98f273
imul eax, edx
add eax, ecx
mov edi, dword [ebp - 0x44]
xor edi, dword [ebp - 0x24]
mov ecx, dword [ebp - 0x30]
xor ecx, dword [ebp - 0x3c]
mov dword [ebp - 0x30], ecx
mov edx, dword [ebp - 0x10]
mov ecx, dword [ebp - 0x48]
add ebx, dword [ecx + edx]
mov dword [ebp - 0x2c], ebx
mov edx, dword [ebp - 0x10]
adc eax, dword [ecx + edx + 4]
mov dword [ebp - 0x20], eax
mov edx, dword [ebp - 0x10]
mov eax, dword [ecx + edx + 0x18]
mov dword [ebp - 0x38], eax
mov ebx, dword [ebp - 0x34]
add ebx, eax
mov edx, dword [ebp - 0x10]
mov eax, dword [ecx + edx + 0x1c]
mov dword [ebp - 0x34], eax
mov edx, dword [ebp - 0x14]
adc edx, eax
mov eax, dword [ebp - 0x30]
add ebx, eax
mov eax, edi
mov dword [ebp - 0x44], edi
adc edx, edi
add ebx, dword [ebp - 0x2c]
adc edx, dword [ebp - 0x20]
mov eax, ebx
shld eax, edx, 0xb
mov dword [ebp - 0x60], eax
shld edx, ebx, 0xb
mov dword [ebp - 0x14], edx
mov edi, dword [ebp - 0x10]
mov eax, dword [ebp - 0x58]
add eax, dword [ecx + edi + 8]
mov edi, dword [ebp - 0x10]
mov edx, dword [ebp - 0x50]
adc edx, dword [ecx + edi + 0xc]
add eax, dword [ebp - 0x2c]
mov edi, dword [ebp - 0x20]
adc edx, edi
mov ecx, edx
mov ebx, eax
mov edx, eax
mov dword [ebp - 0x50], ecx
shld ebx, ecx, 0x14
shld ecx, eax, 0x14
add ebx, dword [ebp - 0x2c]
adc edi, ecx
add ebx, dword [ebp - 0x14]
mov dword [ebp - 0x40], ebx
adc edi, dword [ebp - 0x60]
mov dword [ebp - 0x20], edi
add edx, dword [ebp - 0x38]
mov dword [ebp - 0x38], edx
mov eax, dword [ebp - 0x50]
adc eax, dword [ebp - 0x34]
mov dword [ebp - 0x2c], eax
mov ebx, dword [ebp - 0x3c]
add ebx, dword [ebp - 0x28]
mov edx, dword [ebp - 0x24]
adc edx, dword [ebp - 0x4c]
mov eax, dword [ebp - 0x10]
mov ecx, dword [ebp - 0x48]
add ebx, dword [ecx + eax + 0x20]
mov dword [ebp - 0x3c], ebx
mov eax, dword [ebp - 0x10]
adc edx, dword [ecx + eax + 0x24]
mov dword [ebp - 0x24], edx
mov eax, dword [ebp - 0x10]
mov edi, dword [ecx + eax + 0x38]
mov dword [ebp - 0x34], edi
add edi, dword [ebp - 0x18]
mov eax, dword [ebp - 0x10]
mov eax, dword [ecx + eax + 0x3c]
mov dword [ebp - 0x14], eax
mov eax, dword [ebp - 0x14]
adc eax, dword [ebp - 0x1c]
add edi, ebx
adc eax, edx
mov edx, edi
shld edx, eax, 0xb
mov dword [ebp - 0x50], edx
shld eax, edi, 0xb
mov edx, dword [ebp - 0x10]
mov ebx, dword [ebp - 0x64]
add ebx, dword [ecx + edx + 0x28]
mov edx, dword [ebp - 0x10]
mov edi, dword [ebp - 0x54]
adc edi, dword [ecx + edx + 0x2c]
mov ecx, dword [ebp - 0x3c]
add ebx, ecx
adc edi, dword [ebp - 0x24]
mov edx, edi
mov dword [ebp - 0x54], edi
mov edi, ebx
shld edi, edx, 0x14
shld edx, ebx, 0x14
mov dword [ebp - 0x58], edx
add ecx, edi
mov edx, dword [ebp - 0x10]
mov edi, dword [ebp - 0x24]
adc edi, dword [ebp - 0x58]
add ecx, eax
mov dword [ebp - 0x3c], ecx
adc edi, dword [ebp - 0x50]
mov dword [ebp - 0x24], edi
mov eax, ebx
add eax, dword [ebp - 0x34]
mov dword [ebp - 0x34], eax
mov eax, dword [ebp - 0x54]
adc eax, dword [ebp - 0x14]
mov dword [ebp - 0x14], eax
add edx, 0x40
mov eax, edx
cmp esi, edx
jne 0x407ba3
mov edi, dword [ebp - 0x3c]
mov esi, dword [ebp - 0x40]
xor esi, edi
mov ecx, 0xeb382d69
mov eax, esi
mul ecx
mov ebx, 0xeb382d69
mov ecx, eax
imul eax, esi, 0x9ddfea08
add eax, edx
mov edx, dword [ebp - 0x20]
mov esi, dword [ebp - 0x24]
xor edx, esi
imul edx, edx, 0xeb382d69
add edx, eax
xor ecx, edi
xor esi, edx
shr edx, 0xf
xor ecx, edx
mov eax, ecx
mul ebx
imul edi, esi, 0xeb382d69
add edi, edx
imul ecx, ecx, 0x9ddfea08
add edi, ecx
imul ecx, edi, 0xeb382d69
shr edi, 0xf
xor edi, eax
mov eax, edi
mov esi, 0xeb382d69
mul esi
add edx, ecx
imul ecx, edi, 0x9ddfea08
add edx, ecx
add eax, dword [ebp - 0x28]
mov dword [ebp - 0x10], eax
adc edx, dword [ebp - 0x4c]
mov dword [ebp - 0x20], edx
mov ecx, dword [ebp - 0x38]
mov ebx, dword [ebp - 0x34]
xor ecx, ebx
mov eax, ecx
mul esi
mov edi, eax
imul eax, ecx, 0x9ddfea08
add eax, edx
mov esi, dword [ebp - 0x14]
mov ecx, dword [ebp - 0x2c]
xor ecx, esi
imul ecx, ecx, 0xeb382d69
add ecx, eax
xor edi, ebx
xor esi, ecx
shr ecx, 0xf
xor edi, ecx
mov eax, edi
mov ebx, 0xeb382d69
mul ebx
imul ecx, esi, 0xeb382d69
add ecx, edx
imul edx, edi, 0x9ddfea08
add ecx, edx
imul edi, ecx, 0xeb382d69
shr ecx, 0xf
xor ecx, eax
mov eax, ecx
mul ebx
mov dword [ebp - 0x14], eax
mov ebx, edx
add ebx, edi
imul eax, ecx, 0x9ddfea08
add ebx, eax
mov esi, dword [ebp - 0x1c]
mov eax, esi
shr eax, 0xf
xor eax, dword [ebp - 0x18]
mov ecx, 0xb492b66f
imul ecx, eax
mov edx, 0xbe98f273
mul edx
mov edi, eax
mov eax, 0xbe98f273
imul esi, eax
add esi, edx
add esi, ecx
add edi, dword [ebp - 0x30]
adc esi, dword [ebp - 0x44]
add edi, dword [ebp - 0x14]
adc esi, ebx
xor edi, dword [ebp - 0x10]
mov eax, edi
mov ecx, 0xeb382d69
mul ecx
mov ebx, eax
imul eax, edi, 0x9ddfea08
add eax, edx
mov edx, dword [ebp - 0x20]
xor esi, edx
imul ecx, esi, 0xeb382d69
add ecx, eax
xor edx, ecx
mov esi, edx
shr ecx, 0xf
xor ebx, dword [ebp - 0x10]
xor ebx, ecx
mov eax, ebx
mov edi, 0xeb382d69
mul edi
imul ecx, esi, 0xeb382d69
add ecx, edx
imul edx, ebx, 0x9ddfea08
add ecx, edx
imul ebx, ecx, 0xeb382d69
shr ecx, 0xf
xor ecx, eax
mov eax, ecx
mul edi
mov esi, eax
mov edi, edx
add edi, ebx
imul eax, ecx, 0x9ddfea08
add edi, eax
mov ebx, dword [ebp - 0x5c]
mov dword [esp], 0x22
call dword [sym.imp.mozglue.dll_moz_xmalloc]
xorps xmm0, xmm0
movups xmmword [eax], xmm0
movups xmmword [eax + 0x10], xmm0
mov word [eax + 0x20], 0
mov ecx, dword [ebx]
mov dword [ebx], eax
test ecx, ecx
jne 0x407fe0
mov dword [esp + 0x10], edi
mov dword [esp + 0xc], esi
mov dword [esp], eax
call fcn.004255c0
dec eax
cmp eax, 0x10
setb al
add esp, 0x6c
pop esi
pop edi
pop ebx
pop ebp
ret
xor edx, edx
call fcn.00426cd0
mov esi, eax
mov edi, edx
jmp 0x407f8f
mov dword [esp], ecx
call dword [sym.imp.mozglue.dll_free]
mov eax, dword [ebx]
jmp 0x407fb4
cmp edx, 0x10
jbe 0x407fd5
mov edi, dword [ecx]
mov edx, 0xbe98f273
mov eax, edi
mul edx
mov dword [ebp - 0x20], eax
imul eax, edi, 0xb492b66f
add eax, edx
mov dword [ebp - 0x10], eax
mov edi, dword [ecx + esi - 7]
mov edx, 0x2f90404f
mov eax, edi
mov dword [ebp - 0x30], edi
mul edx
mov dword [ebp - 0x3c], eax
mov dword [ebp - 0x14], edx
mov eax, dword [ecx + esi - 0xf]
mov dword [ebp - 0x18], eax
mov edx, 0x97cb3127
mul edx
mov dword [ebp - 0x1c], eax
imul ebx, edi, 0x9ae16a3b
add ebx, dword [ebp - 0x14]
imul edi, dword [ecx + esi - 3], 0x2f90404f
add edi, ebx
imul ebx, dword [ebp - 0x18], 0xc3a5c85c
add ebx, edx
imul eax, dword [ecx + esi - 0xb], 0x97cb3127
add eax, ebx
mov dword [ebp - 0x18], eax
mov esi, dword [ecx + 0xc]
mov dword [ebp - 0x2c], esi
xor esi, 0xc949d7c7
mov ebx, dword [ecx + 8]
mov dword [ebp - 0x38], ebx
xor ebx, 0x509e6557
mov edx, ebx
shld edx, esi, 0xc
shrd ebx, esi, 0x14
imul eax, dword [ecx + 4], 0xbe98f273
mov dword [ebp - 0x14], eax
mov eax, dword [ebp - 0x24]
add eax, dword [ebp - 0x20]
mov esi, dword [ebp - 0x10]
mov ecx, dword [ebp - 0x14]
lea ecx, [esi + ecx]
adc esi, dword [ebp - 0x14]
add eax, ebx
adc esi, edx
mov ebx, dword [ebp - 0x3c]
sub eax, ebx
mov dword [ebp - 0x24], eax
sbb esi, edi
mov dword [ebp - 0x10], esi
mov edx, dword [ebp - 0x20]
sub edx, dword [ebp - 0x38]
sbb ecx, dword [ebp - 0x2c]
mov eax, edx
shld eax, ecx, 0x15
shld ecx, edx, 0x15
mov edx, edi
shld edi, ebx, 2
imul ebx, dword [ebp - 0x30], 0xbe41013c
add ebx, ecx
shr edx, 0x1e
add edi, eax
adc ebx, edx
add edi, dword [ebp - 0x1c]
adc ebx, dword [ebp - 0x18]
mov esi, dword [ebp - 0x24]
xor edi, esi
mov ecx, 0xeb382d69
mov eax, edi
mul ecx
mov ecx, eax
imul eax, edi, 0x9ddfea08
add eax, edx
mov edi, dword [ebp - 0x10]
xor ebx, edi
imul edx, ebx, 0xeb382d69
add edx, eax
xor edi, edx
shr edx, 0xf
xor ecx, esi
xor ecx, edx
mov eax, ecx
mov esi, 0xeb382d69
mul esi
imul ebx, edi, 0xeb382d69
add ebx, edx
imul ecx, ecx, 0x9ddfea08
add ebx, ecx
imul ecx, ebx, 0xeb382d69
shr ebx, 0xf
xor ebx, eax
mov eax, ebx
mul esi
mov esi, eax
mov edi, edx
add edi, ecx
imul eax, ebx, 0x9ddfea08
mov ebx, dword [ebp - 0x5c]
add edi, eax
jmp 0x407f8f
mov edi, dword [ecx + esi - 0xf]
mov dword [ebp - 0x2c], edi
mov eax, dword [ecx + esi - 0xb]
mov dword [ebp - 0x3c], eax
add edx, edi
mov ebx, edx
mov edi, eax
adc edi, 0
mov edx, 0x97cb3127
mov eax, ebx
mul edx
mov dword [ebp - 0x24], eax
imul eax, ebx, 0xc3a5c85c
add eax, edx
imul edi, edi, 0x97cb3127
add edi, eax
mov edx, dword [ebp - 0x24]
add edx, dword [ecx]
adc edi, dword [ecx + 4]
mov ebx, dword [ecx + 0x18]
mov dword [ebp - 0x38], ebx
mov eax, edx
add eax, ebx
mov ebx, dword [ecx + 0x1c]
mov dword [ebp - 0x34], ebx
mov dword [ebp - 0x14], edi
adc dword [ebp - 0x14], ebx
mov ebx, dword [ebp - 0x14]
shld ebx, eax, 0xc
mov dword [ebp - 0x1c], ebx
shrd dword [ebp - 0x14], eax, 0x14
mov eax, edi
shld eax, edx, 0x1b
mov dword [ebp - 0x18], eax
mov eax, edx
shld eax, edi, 0x1b
mov dword [ebp - 0x44], eax
add edx, dword [ecx + 8]
adc edi, dword [ecx + 0xc]
mov eax, edx
shld eax, edi, 0x19
mov dword [ebp - 0x20], eax
mov eax, edi
shld eax, edx, 0x19
mov dword [ebp - 0x10], eax
mov ebx, dword [ecx + 0x10]
add edx, ebx
mov eax, dword [ecx + 0x14]
mov dword [ebp - 0x30], eax
adc edi, eax
mov eax, edx
mov dword [ebp - 0x24], edx
shld edx, edi, 1
mov dword [ebp - 0x40], edx
mov edx, edi
shld edx, eax, 1
mov dword [ebp - 0x28], edx
mov eax, dword [ebp - 0x10]
add eax, dword [ebp - 0x44]
mov dword [ebp - 0x10], eax
mov eax, dword [ebp - 0x20]
adc eax, dword [ebp - 0x18]
mov edx, dword [ebp - 0x14]
add dword [ebp - 0x10], edx
adc eax, dword [ebp - 0x1c]
mov edx, dword [ebp - 0x28]
add dword [ebp - 0x10], edx
adc eax, dword [ebp - 0x40]
mov dword [ebp - 0x20], eax
add ebx, dword [ecx + esi - 0x1f]
mov edx, dword [ebp - 0x30]
adc edx, dword [ecx + esi - 0x1b]
mov dword [ebp - 0x30], edx
mov eax, dword [ecx + esi - 7]
mov dword [ebp - 0x14], eax
mov eax, ebx
add eax, dword [ebp - 0x14]
mov dword [ebp - 0x40], eax
mov eax, dword [ecx + esi - 3]
mov dword [ebp - 0x1c], eax
mov eax, edx
adc eax, dword [ebp - 0x1c]
mov dword [ebp - 0x18], eax
mov eax, dword [ebp - 0x18]
mov edx, dword [ebp - 0x40]
shld eax, edx, 0xc
mov dword [ebp - 0x44], eax
shrd dword [ebp - 0x18], edx, 0x14
mov eax, dword [ebp - 0x30]
mov edx, eax
shld edx, ebx, 0x1b
mov dword [ebp - 0x40], edx
mov edx, ebx
shld edx, eax, 0x1b
mov dword [ebp - 0x28], edx
add ebx, dword [ecx + esi - 0x17]
adc eax, dword [ecx + esi - 0x13]
mov ecx, ebx
shld ecx, eax, 0x19
mov dword [ebp - 0x48], ecx
mov esi, eax
shld esi, ebx, 0x19
add ebx, dword [ebp - 0x2c]
adc eax, dword [ebp - 0x3c]
add dword [ebp - 0x14], ebx
adc dword [ebp - 0x1c], eax
mov ecx, ebx
shld ecx, eax, 1
shld eax, ebx, 1
mov edx, eax
mov eax, dword [ebp - 0x24]
add eax, dword [ebp - 0x38]
adc edi, dword [ebp - 0x34]
add eax, dword [ebp - 0x28]
adc edi, dword [ebp - 0x40]
add eax, dword [ebp - 0x18]
adc edi, dword [ebp - 0x44]
add eax, esi
adc edi, dword [ebp - 0x48]
add eax, edx
adc edi, ecx
mov ecx, 0x2f90404f
mov esi, eax
mul ecx
mov ecx, eax
imul eax, esi, 0x9ae16a3b
add eax, edx
imul edi, edi, 0x2f90404f
add edi, eax
mov eax, dword [ebp - 0x14]
add eax, dword [ebp - 0x10]
mov esi, dword [ebp - 0x1c]
adc esi, dword [ebp - 0x20]
mov ebx, eax
mov edx, 0x97cb3127
mul edx
imul ebx, ebx, 0xc3a5c85c
add ebx, edx
imul esi, esi, 0x97cb3127
add esi, ebx
add eax, ecx
adc esi, edi
imul edi, esi, 0x97cb3127
shr esi, 0xf
xor esi, eax
mov eax, esi
mov ecx, 0x97cb3127
mul ecx
mov ecx, edx
add ecx, edi
imul edx, esi, 0xc3a5c85c
add ecx, edx
add eax, dword [ebp - 0x10]
adc ecx, dword [ebp - 0x20]
imul ebx, ecx, 0x2f90404f
shr ecx, 0xf
xor ecx, eax
mov eax, ecx
mov edx, 0x2f90404f
mul edx
mov esi, eax
mov edi, edx
add edi, ebx
imul eax, ecx, 0x9ae16a3b
jmp 0x407f8a