Function at 0x475fe0
Capabilities:
Resolve function by parsing pe exports

Disassembly:
sub esp, 0x70
push ebx
push ebp
push esi
mov esi, edx
mov dword [esp + 0x5c], esi
push edi
mov edi, ecx
mov dword [esp + 0x70], edi
cmp esi, 0x10
ja 0x476491
cmp esi, 8
jbe 0x47620e
movq xmm0, qword [0x4be960]
mov ebx, 0x85ebca87
movq qword [esp + 0x20], xmm0
movq xmm0, qword [0x4be968]
movq qword [esp + 0x18], xmm0
movq xmm0, qword [0x4be970]
mov ecx, dword [esp + 0x1c]
xor ecx, dword [esp + 0x24]
movq qword [esp + 0x28], xmm0
movq xmm0, qword [0x4be978]
movq qword [esp + 0x78], xmm0
movq xmm0, qword [edi]
movq qword [esp + 0x70], xmm0
movq xmm0, qword [esi + edi - 8]
mov edi, dword [esp + 0x18]
xor edi, dword [esp + 0x20]
sub edi, dword [esp + 0x88]
movq qword [esp + 0x10], xmm0
sbb ecx, dword [esp + 0x8c]
xor edi, dword [esp + 0x10]
xor edi, dword [esp + 0x70]
xor ecx, dword [esp + 0x14]
mov eax, edi
xor ecx, dword [esp + 0x74]
mul ebx
mov dword [esp + 0x20], ecx
mov dword [esp + 0x70], eax
mov esi, edx
mov eax, ecx
mul ebx
mov ecx, eax
mov ebx, edx
mov eax, edi
mov edx, 0x9e3779b1
mul edx
add eax, esi
mov edi, edx
mov esi, eax
mov edx, 0x85ebca77
mov eax, dword [esp + 0x78]
adc edi, 0
add esi, ecx
mov ecx, dword [esp + 0x7c]
adc edi, 0
xor eax, dword [esp + 0x28]
xor ecx, dword [esp + 0x2c]
add eax, dword [esp + 0x88]
adc ecx, dword [esp + 0x8c]
xor eax, dword [esp + 0x10]
xor ecx, dword [esp + 0x14]
mul edx
mov dword [esp + 0x40], eax
mov ebp, edx
mov eax, dword [esp + 0x20]
mov edx, 0x9e3779b1
mul edx
add dword [esp + 0x40], eax
mov eax, dword [esp + 0x40]
adc ebp, edx
add eax, edi
adc ebp, 0
add eax, ebx
adc ebp, 0
add eax, 0
mov dword [esp + 0x40], eax
adc ebp, ecx
xor ecx, ecx
or ecx, dword [esp + 0x70]
mov dword [esp + 0x20], ebp
mov ebp, eax
mov eax, dword [esp + 0x60]
mov edi, dword [esp + 0x20]
dec eax
shl eax, 0x16
add ecx, 0
bswap edi
adc esi, eax
xor edi, ecx
bswap ebp
xor ebp, esi
mov dword [esp + 0x60], ebp
mov eax, edi
mov dword [esp + 0x34], ebp
mov ecx, 0x27d4eb4f
mul ecx
push 0x16566791
mov ebx, eax
mov esi, edx
mov eax, ebp
mul ecx
push 0x9e3779f9
mov ecx, eax
mov dword [esp + 0x20], edx
mov eax, edi
mov edx, 0xc2b2ae3d
mul edx
mov edi, eax
mov ebp, edx
add edi, esi
adc ebp, 0
add edi, ecx
mov ecx, edi
adc ebp, 0
xor edx, edx
xor eax, eax
shr ecx, 5
or edx, ebx
xor eax, edi
xor ecx, edx
push eax
push ecx
call fcn.0047dfd0
mov ecx, edx
xor esi, esi
xor ecx, eax
xor esi, edx
mov eax, dword [esp + 0x60]
mov dword [esp + 0x30], ecx
mov ecx, 0xc2b2ae3d
push ecx
mul ecx
push 0x27d4eb4f
push dword [esp + 0x28]
mov dword [esp + 0x40], esi
mov edi, edx
push dword [esp + 0x4c]
mov esi, eax
call fcn.0047dfd0
add esi, eax
adc edi, edx
add esi, ebp
adc edi, 0
add esi, dword [esp + 0x18]
adc edi, 0
xor eax, eax
mov ecx, edi
shr ecx, 5
xor ecx, esi
xor eax, edi
push 0x16566791
push 0x9e3779f9
push eax
push ecx
call fcn.0047dfd0
mov ecx, edx
xor esi, esi
xor ecx, eax
mov eax, dword [esp + 0x84]
xor esi, edx
mov dword [esp + 0x38], ecx
mov dword [esp + 0x3c], esi
movups xmm0, xmmword [esp + 0x30]
movups xmmword [eax], xmm0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x70
ret
cmp esi, 4
jb 0x47633e
movq xmm0, qword [0x4be950]
xor ebx, ebx
xor ebx, dword [esp + 0x88]
mov edx, dword [esi + edi - 4]
mov ebp, dword [esp + 0x88]
movq qword [esp + 0x60], xmm0
movq xmm0, qword [0x4be958]
movq qword [esp + 0x10], xmm0
mov ecx, dword [esp + 0x10]
xor ecx, dword [esp + 0x60]
mov eax, dword [esp + 0x14]
xor eax, dword [esp + 0x64]
bswap ebp
xor ebp, dword [esp + 0x8c]
add ebx, ecx
lea ecx, [esi*4]
adc ebp, eax
xor eax, eax
add eax, dword [edi]
push 0x9fb21c65
adc edx, 0
xor ebx, eax
xor ebp, edx
mov dword [esp + 0x64], ebx
xor edi, edi
mov dword [esp + 0x1c], ebp
add ecx, 0x85ebca87
mov eax, ebx
push 0x1e98df25
adc edi, 0x9e3779b1
mul ecx
mov dword [esp + 0x28], edi
mov ebx, eax
mov esi, edx
mov eax, ebp
mul ecx
mov ecx, eax
mov ebp, edx
mov eax, dword [esp + 0x68]
mul edi
add eax, esi
mov edi, edx
adc edi, 0
add eax, ecx
mov dword [esp + 0x68], eax
mov eax, dword [esp + 0x20]
adc edi, 0
mul dword [esp + 0x28]
xor ecx, ecx
or ecx, ebx
mov esi, edx
mov ebx, eax
mov dword [esp + 0x78], ecx
mov eax, dword [esp + 0x68]
add ebx, edi
mov edx, eax
adc esi, 0
add ebx, ebp
adc esi, 0
shld edx, ecx, 1
add ecx, ecx
add ebx, ecx
adc esi, edx
mov edx, ebx
mov dword [esp + 0x68], esi
shrd edx, esi, 3
xor edx, dword [esp + 0x78]
shr esi, 3
xor esi, eax
xor eax, eax
mov ecx, esi
xor eax, esi
shr ecx, 3
xor ecx, edx
push eax
push ecx
call fcn.0047dfd0
mov ecx, eax
mov esi, edx
shrd ecx, esi, 0x1c
shr esi, 0x1c
xor ecx, eax
xor esi, edx
mov dword [esp + 0x30], ecx
xor eax, eax
mov ecx, dword [esp + 0x60]
shr ecx, 5
xor ecx, ebx
mov dword [esp + 0x34], esi
xor eax, dword [esp + 0x60]
jmp 0x4761d6
test esi, esi
je 0x4763e5
mov ecx, dword [0x4be944]
mov eax, esi
xor ecx, dword [0x4be940]
shr eax, 1
mov ebx, dword [0x4be94c]
movzx ebp, byte [eax + edi]
movzx eax, byte [edi]
shl ebp, 8
or ebp, eax
movzx eax, byte [esi + edi - 1]
shl ebp, 8
or ebp, esi
shl ebp, 8
or ebp, eax
xor eax, eax
add ecx, dword [esp + 0x88]
adc eax, dword [esp + 0x8c]
xor ecx, ebp
xor eax, 0
push eax
push ecx
call fcn.0046a200
xor ebx, dword [0x4be948]
xor ecx, ecx
mov dword [esp + 0x38], eax
xor eax, eax
bswap ebp
rol ebp, 0xd
sub ebx, dword [esp + 0x90]
mov dword [esp + 0x3c], edx
sbb eax, dword [esp + 0x94]
xor ebp, ebx
xor ecx, eax
push ecx
push ebp
call fcn.0046a200
mov dword [esp + 0x48], eax
add esp, 0x10
mov eax, dword [esp + 0x84]
mov dword [esp + 0x3c], edx
movups xmm0, xmmword [esp + 0x30]
movups xmmword [eax], xmm0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x70
ret
movq xmm0, qword [0x4be980]
movq qword [esp + 0x60], xmm0
movq xmm0, qword [0x4be988]
movq qword [esp + 0x10], xmm0
mov eax, dword [esp + 0x14]
xor eax, dword [esp + 0x64]
movq xmm0, qword [0x4be990]
mov ecx, dword [esp + 0x10]
xor ecx, dword [esp + 0x60]
xor eax, dword [esp + 0x8c]
xor ecx, dword [esp + 0x88]
movq qword [esp + 0x20], xmm0
movq xmm0, qword [0x4be998]
push eax
push ecx
movq qword [esp + 0x20], xmm0
call fcn.0046a200
mov ecx, dword [esp + 0x20]
xor ecx, dword [esp + 0x28]
xor ecx, dword [esp + 0x90]
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x24]
xor eax, dword [esp + 0x2c]
xor eax, dword [esp + 0x94]
push eax
push ecx
mov dword [esp + 0x44], edx
call fcn.0046a200
mov dword [esp + 0x48], eax
add esp, 0x10
mov eax, dword [esp + 0x84]
mov dword [esp + 0x3c], edx
movups xmm0, xmmword [esp + 0x30]
movups xmmword [eax], xmm0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x70
ret
cmp esi, 0x80
ja 0x476d7e
push 0x9e3779b1
push 0x85ebca87
push 0
push esi
call fcn.0047dfd0
mov ebx, dword [esp + 0x88]
xorps xmm0, xmm0
mov dword [esp + 0x40], edx
lea ecx, [edi + esi]
mov edx, dword [esp + 0x8c]
mov dword [esp + 0x6c], eax
movlpd qword [esp + 0x10], xmm0
mov dword [esp + 0x78], ecx
cmp esi, 0x20
jbe 0x476ab0
cmp esi, 0x40
jbe 0x4768be
cmp esi, 0x60
jbe 0x4766cc
movq xmm0, qword [edi + 0x30]
movq qword [esp + 0x48], xmm0
movq xmm0, qword [edi + 0x38]
movq qword [esp + 0x18], xmm0
movq xmm0, qword [0x4be9a8]
movq qword [esp + 0x10], xmm0
mov ecx, dword [esp + 0x10]
mov eax, dword [esp + 0x14]
sub ecx, ebx
movq xmm0, qword [0x4be9a0]
sbb eax, edx
movq qword [esp + 0x28], xmm0
xor eax, dword [esp + 0x1c]
xor ecx, dword [esp + 0x18]
mov edi, dword [esp + 0x28]
mov ebp, dword [esp + 0x2c]
add edi, ebx
mov dword [esp + 0x20], eax
adc ebp, edx
xor edi, dword [esp + 0x48]
xor ebp, dword [esp + 0x4c]
mov eax, edi
mul ecx
mov dword [esp + 0x28], ebp
mov ebx, eax
mov esi, edx
mov eax, ebp
mul ecx
mov ecx, eax
mov ebp, edx
mov eax, edi
mul dword [esp + 0x20]
add eax, esi
mov edi, edx
adc edi, 0
add eax, ecx
adc edi, 0
xor esi, esi
or esi, ebx
mov ebx, eax
mov eax, dword [esp + 0x28]
mul dword [esp + 0x20]
add eax, edi
adc edx, 0
add eax, ebp
mov ebp, dword [esp + 0x78]
adc edx, 0
xor esi, eax
xor ebx, edx
add esi, dword [esp + 0x6c]
movq xmm0, qword [ebp - 0x40]
adc ebx, dword [esp + 0x40]
movq qword [esp + 0x18], xmm0
movq xmm0, qword [ebp - 0x38]
movq qword [esp + 0x10], xmm0
mov ecx, dword [esp + 0x10]
add ecx, dword [esp + 0x18]
movq xmm0, qword [ebp - 0x40]
mov eax, dword [esp + 0x14]
adc eax, dword [esp + 0x1c]
xor esi, ecx
movq qword [esp + 0x48], xmm0
xor ebx, eax
movq xmm0, qword [ebp - 0x38]
movq qword [esp + 0x18], xmm0
movq xmm0, qword [0x4be9b8]
movq qword [esp + 0x10], xmm0
mov ecx, dword [esp + 0x10]
sub ecx, dword [esp + 0x88]
mov eax, dword [esp + 0x14]
sbb eax, dword [esp + 0x8c]
movq xmm0, qword [0x4be9b0]
xor eax, dword [esp + 0x1c]
xor ecx, dword [esp + 0x18]
movq qword [esp + 0x28], xmm0
mov edi, dword [esp + 0x28]
add edi, dword [esp + 0x88]
mov ebp, dword [esp + 0x2c]
mov dword [esp + 0x6c], esi
mov dword [esp + 0x40], ebx
mov dword [esp + 0x20], eax
adc ebp, dword [esp + 0x8c]
xor edi, dword [esp + 0x48]
xor ebp, dword [esp + 0x4c]
mov eax, edi
mul ecx
mov dword [esp + 0x18], ebp
mov ebx, eax
mov esi, edx
mov eax, ebp
mul ecx
mov ecx, eax
mov ebp, edx
mov eax, edi
mul dword [esp + 0x20]
add eax, esi
mov edi, edx
adc edi, 0
add eax, ecx
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x18]
adc edi, 0
mul dword [esp + 0x20]
xor ecx, ecx
or ecx, ebx
add eax, edi
mov edi, dword [esp + 0x70]
adc edx, 0
add eax, ebp
adc edx, 0
movq xmm0, qword [edi + 0x30]
movq qword [esp + 0x10], xmm0
movq xmm0, qword [edi + 0x38]
mov ebx, dword [esp + 0x10]
mov ebp, dword [esp + 0x14]
movq qword [esp + 0x18], xmm0
add ebx, dword [esp + 0x18]
adc ebp, dword [esp + 0x1c]
xor ebx, ecx
xor ebp, dword [esp + 0x28]
xor ebx, eax
xor ebp, edx
mov dword [esp + 0x48], ebx
mov edx, dword [esp + 0x8c]
mov ebx, dword [esp + 0x88]
mov dword [esp + 0x18], ebp
jmp 0x4766dc
mov eax, dword [esp + 0x14]
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x10]
mov dword [esp + 0x48], eax
movq xmm0, qword [edi + 0x20]
movq qword [esp + 0x50], xmm0
movq xmm0, qword [edi + 0x28]
movq qword [esp + 0x20], xmm0
movq xmm0, qword [0x4be988]
movq qword [esp + 0x10], xmm0
mov ecx, dword [esp + 0x10]
mov eax, dword [esp + 0x14]
sub ecx, ebx
movq xmm0, qword [0x4be980]
sbb eax, edx
movq qword [esp + 0x28], xmm0
xor eax, dword [esp + 0x24]
xor ecx, dword [esp + 0x20]
mov edi, dword [esp + 0x28]
mov ebp, dword [esp + 0x2c]
add edi, ebx
mov dword [esp + 0x20], eax
adc ebp, edx
xor edi, dword [esp + 0x50]
xor ebp, dword [esp + 0x54]
mov eax, edi
mul ecx
mov dword [esp + 0x10], ebp
mov ebx, eax
mov esi, edx
mov eax, ebp
mul ecx
mov ecx, eax
mov ebp, edx
mov eax, edi
mul dword [esp + 0x20]
add eax, esi
mov edi, edx
adc edi, 0
add eax, ecx
mov dword [esp + 0x28], eax
adc edi, 0
xor esi, esi
or esi, ebx
mov ebx, eax
mov eax, dword [esp + 0x10]
mul dword [esp + 0x20]
add eax, edi
adc edx, 0
add eax, ebp
mov ebp, dword [esp + 0x78]
adc edx, 0
xor esi, eax
xor ebx, edx
add esi, dword [esp + 0x6c]
adc ebx, dword [esp + 0x40]
movq xmm0, qword [ebp - 0x30]
movq qword [esp + 0x10], xmm0
movq xmm0, qword [ebp - 0x28]
movq qword [esp + 0x50], xmm0
mov ecx, dword [esp + 0x50]
add ecx, dword [esp + 0x10]
movq xmm0, qword [ebp - 0x30]
mov eax, dword [esp + 0x54]
adc eax, dword [esp + 0x14]
xor esi, ecx
movq qword [esp + 0x30], xmm0
xor ebx, eax
movq xmm0, qword [ebp - 0x28]
movq qword [esp + 0x10], xmm0
movq xmm0, qword [0x4be998]
movq qword [esp + 0x50], xmm0
mov ecx, dword [esp + 0x50]
sub ecx, dword [esp + 0x88]
mov eax, dword [esp + 0x54]
sbb eax, dword [esp + 0x8c]
movq xmm0, qword [0x4be990]
xor eax, dword [esp + 0x14]
xor ecx, dword [esp + 0x10]
movq qword [esp + 0x28], xmm0
mov edi, dword [esp + 0x28]
add edi, dword [esp + 0x88]
mov dword [esp + 0x6c], esi
mov dword [esp + 0x40], ebx
mov dword [esp + 0x20], eax
mov ebp, dword [esp + 0x2c]
adc ebp, dword [esp + 0x8c]
xor edi, dword [esp + 0x30]
xor ebp, dword [esp + 0x34]
mov eax, edi
mul ecx
mov dword [esp + 0x10], ebp
mov ebx, eax
mov esi, edx
mov eax, ebp
mul ecx
mov ecx, eax
mov ebp, edx
mov eax, edi
mul dword [esp + 0x20]
add eax, esi
mov edi, edx
mov esi, eax
mov eax, dword [esp + 0x10]
adc edi, 0
add esi, ecx
adc edi, 0
xor ecx, ecx
mul dword [esp + 0x20]
or ecx, ebx
mov ebx, dword [esp + 0x88]
add eax, edi
mov edi, dword [esp + 0x70]
adc edx, 0
add eax, ebp
movq xmm0, qword [edi + 0x20]
adc edx, 0
xor ecx, eax
movq qword [esp + 0x30], xmm0
movq xmm0, qword [edi + 0x28]
xor esi, edx
add dword [esp + 0x48], ecx
mov ecx, dword [esp + 0x30]
adc esi, dword [esp + 0x18]
mov eax, dword [esp + 0x34]
mov edx, dword [esp + 0x8c]
movq qword [esp + 0x50], xmm0
add ecx, dword [esp + 0x50]
adc eax, dword [esp + 0x54]
xor dword [esp + 0x48], ecx
xor esi, eax
mov dword [esp + 0x28], esi
jmp 0x4768ce
mov eax, dword [esp + 0x14]
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x10]
mov dword [esp + 0x48], eax
movq xmm0, qword [edi + 0x10]
movq qword [esp + 0x20], xmm0
movq xmm0, qword [edi + 0x18]
movq qword [esp + 0x50], xmm0
movq xmm0, qword [0x4be968]
movq qword [esp + 0x30], xmm0
mov ecx, dword [esp + 0x30]
mov eax, dword [esp + 0x34]
sub ecx, ebx
movq xmm0, qword [0x4be960]
sbb eax, edx
movq qword [esp + 0x10], xmm0
xor eax, dword [esp + 0x54]
xor ecx, dword [esp + 0x50]
mov edi, dword [esp + 0x10]
mov ebp, dword [esp + 0x14]
add edi, ebx
mov dword [esp + 0x18], eax
adc ebp, edx
xor edi, dword [esp + 0x20]
xor ebp, dword [esp + 0x24]
mov eax, edi
mul ecx
mov dword [esp + 0x20], ebp
mov ebx, eax
mov esi, edx
mov eax, ebp
mul ecx
mov ecx, eax
mov ebp, edx
mov eax, edi
mul dword [esp + 0x18]
add eax, esi
mov edi, edx
adc edi, 0
add eax, ecx
mov dword [esp + 0x10], eax
adc edi, 0
xor esi, esi
or esi, ebx
mov ebx, eax
mov eax, dword [esp + 0x20]
mul dword [esp + 0x18]
add eax, edi
adc edx, 0
add eax, ebp
mov ebp, dword [esp + 0x78]
adc edx, 0
xor esi, eax
xor ebx, edx
add esi, dword [esp + 0x6c]
adc ebx, dword [esp + 0x40]
movq xmm0, qword [ebp - 0x20]
movq qword [esp + 0x50], xmm0
movq xmm0, qword [ebp - 0x18]
movq qword [esp + 0x30], xmm0
mov ecx, dword [esp + 0x30]
add ecx, dword [esp + 0x50]
movq xmm0, qword [ebp - 0x20]
mov eax, dword [esp + 0x34]
adc eax, dword [esp + 0x54]
xor esi, ecx
movq qword [esp + 0x20], xmm0
xor ebx, eax
movq xmm0, qword [ebp - 0x18]
movq qword [esp + 0x50], xmm0
movq xmm0, qword [0x4be978]
movq qword [esp + 0x30], xmm0
mov ecx, dword [esp + 0x30]
sub ecx, dword [esp + 0x88]
mov eax, dword [esp + 0x34]
sbb eax, dword [esp + 0x8c]
movq xmm0, qword [0x4be970]
xor eax, dword [esp + 0x54]
xor ecx, dword [esp + 0x50]
movq qword [esp + 0x10], xmm0
mov edi, dword [esp + 0x10]
add edi, dword [esp + 0x88]
mov dword [esp + 0x6c], esi
mov dword [esp + 0x40], ebx
mov dword [esp + 0x18], eax
mov ebp, dword [esp + 0x14]
adc ebp, dword [esp + 0x8c]
xor edi, dword [esp + 0x20]
xor ebp, dword [esp + 0x24]
mov eax, edi
mul ecx
mov dword [esp + 0x10], ebp
mov ebx, eax
mov esi, edx
mov eax, ebp
mul ecx
mov ecx, eax
mov ebp, edx
mov eax, edi
mul dword [esp + 0x18]
add eax, esi
mov edi, edx
mov esi, eax
mov eax, dword [esp + 0x10]
adc edi, 0
add esi, ecx
adc edi, 0
xor ecx, ecx
mul dword [esp + 0x18]
or ecx, ebx
mov ebx, dword [esp + 0x88]
add eax, edi
mov edi, dword [esp + 0x70]
adc edx, 0
add eax, ebp
movq xmm0, qword [edi + 0x10]
adc edx, 0
xor ecx, eax
movq qword [esp + 0x30], xmm0
movq xmm0, qword [edi + 0x18]
xor esi, edx
add dword [esp + 0x48], ecx
mov ecx, dword [esp + 0x30]
adc esi, dword [esp + 0x28]
mov eax, dword [esp + 0x34]
mov edx, dword [esp + 0x8c]
movq qword [esp + 0x50], xmm0
add ecx, dword [esp + 0x50]
adc eax, dword [esp + 0x54]
xor dword [esp + 0x48], ecx
xor esi, eax
mov dword [esp + 0x20], esi
jmp 0x476ac0
mov eax, dword [esp + 0x14]
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x10]
mov dword [esp + 0x48], eax
movq xmm0, qword [edi]
movq qword [esp + 0x28], xmm0
movq xmm0, qword [edi + 8]
movq qword [esp + 0x50], xmm0
movq xmm0, qword [0x4be948]
movq qword [esp + 0x30], xmm0
mov ecx, dword [esp + 0x30]
mov eax, dword [esp + 0x34]
sub ecx, ebx
movq xmm0, qword [0x4be940]
sbb eax, edx
movq qword [esp + 0x10], xmm0
xor eax, dword [esp + 0x54]
xor ecx, dword [esp + 0x50]
mov edi, dword [esp + 0x10]
mov ebp, dword [esp + 0x14]
add edi, ebx
mov dword [esp + 0x18], eax
adc ebp, edx
xor edi, dword [esp + 0x28]
xor ebp, dword [esp + 0x2c]
mov eax, edi
mul ecx
mov dword [esp + 0x10], ebp
mov ebx, eax
mov esi, edx
mov eax, ebp
mul ecx
mov ecx, eax
mov ebp, edx
mov eax, edi
mul dword [esp + 0x18]
add eax, esi
mov edi, edx
adc edi, 0
add eax, ecx
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x10]
adc edi, 0
mul dword [esp + 0x18]
xor esi, esi
or esi, ebx
mov ebx, dword [esp + 0x28]
add eax, edi
adc edx, 0
add eax, ebp
mov ebp, dword [esp + 0x78]
adc edx, 0
xor esi, eax
xor ebx, edx
add esi, dword [esp + 0x6c]
adc ebx, dword [esp + 0x40]
movq xmm0, qword [ebp - 0x10]
movq qword [esp + 0x30], xmm0
movq xmm0, qword [ebp - 8]
mov ecx, dword [esp + 0x30]
mov eax, dword [esp + 0x34]
movq qword [esp + 0x50], xmm0
add ecx, dword [esp + 0x50]
movq xmm0, qword [ebp - 0x10]
adc eax, dword [esp + 0x54]
xor esi, ecx
movq qword [esp + 0x40], xmm0
xor ebx, eax
movq xmm0, qword [ebp - 8]
movq qword [esp + 0x50], xmm0
movq xmm0, qword [0x4be958]
movq qword [esp + 0x30], xmm0
mov ecx, dword [esp + 0x30]
sub ecx, dword [esp + 0x88]
mov eax, dword [esp + 0x34]
sbb eax, dword [esp + 0x8c]
movq xmm0, qword [0x4be950]
xor eax, dword [esp + 0x54]
xor ecx, dword [esp + 0x50]
movq qword [esp + 0x10], xmm0
mov edi, dword [esp + 0x10]
add edi, dword [esp + 0x88]
mov dword [esp + 0x78], esi
mov dword [esp + 0x28], ebx
mov dword [esp + 0x18], eax
mov ebp, dword [esp + 0x14]
adc ebp, dword [esp + 0x8c]
xor edi, dword [esp + 0x40]
xor ebp, dword [esp + 0x44]
mov eax, edi
mul ecx
mov dword [esp + 0x10], ebp
mov ebx, eax
mov esi, edx
mov eax, ebp
mul ecx
push 0x16566791
mov ecx, eax
mov ebp, edx
mov eax, edi
mul dword [esp + 0x1c]
push 0x9e3779f9
add eax, esi
mov edi, edx
adc edi, 0
add eax, ecx
mov ecx, dword [esp + 0x78]
adc edi, 0
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0x18]
xor esi, esi
mul dword [esp + 0x20]
movq xmm0, qword [ecx]
movq qword [esp + 0x38], xmm0
movq xmm0, qword [ecx + 8]
movq qword [esp + 0x58], xmm0
mov ecx, dword [esp + 0x38]
or esi, ebx
add eax, edi
adc edx, 0
add eax, ebp
mov ebp, dword [esp + 0x48]
adc edx, 0
xor esi, eax
mov eax, dword [esp + 0x3c]
xor ebp, edx
add esi, dword [esp + 0x50]
adc ebp, dword [esp + 0x28]
add ecx, dword [esp + 0x58]
adc eax, dword [esp + 0x5c]
xor esi, ecx
mov ecx, dword [esp + 0x30]
xor ebp, eax
mov dword [esp + 0x18], esi
mov esi, dword [esp + 0x80]
mov ebx, dword [esp + 0x18]
add esi, ebx
adc ecx, ebp
xor eax, eax
mov edx, ecx
xor eax, ecx
shr edx, 5
xor edx, esi
push eax
push edx
call fcn.0047dfd0
mov ecx, edx
xor esi, esi
xor ecx, eax
xor esi, edx
mov eax, dword [esp + 0x60]
sub eax, dword [esp + 0x88]
mov dword [esp + 0x30], ecx
mov ecx, 0
sbb ecx, dword [esp + 0x8c]
push 0xc2b2ae3d
push 0x27d4eb4f
push ecx
push eax
mov dword [esp + 0x44], esi
call fcn.0047dfd0
push 0x85ebca77
push 0xc2b2ae63
mov esi, eax
mov edi, edx
push ebp
push ebx
call fcn.0047dfd0
push 0x9e3779b1
push 0x85ebca87
push dword [esp + 0x30]
add esi, eax
push dword [esp + 0x84]
adc edi, edx
call fcn.0047dfd0
add esi, eax
push 0x16566791
adc edi, edx
xor eax, eax
mov ecx, edi
xor eax, edi
push 0x9e3779f9
shr ecx, 5
xor ecx, esi
push eax
push ecx
call fcn.0047dfd0
xor esi, esi
mov ecx, edx
xor ecx, eax
xor esi, edx
mov eax, dword [esp + 0x84]
neg ecx
mov dword [esp + 0x38], ecx
adc esi, 0
neg esi
mov dword [esp + 0x3c], esi
movups xmm0, xmmword [esp + 0x30]
movups xmmword [eax], xmm0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x70
ret
cmp esi, 0xf0
ja 0x476dbc
push dword [esp + 0x8c]
lea eax, [esp + 0x34]
push dword [esp + 0x8c]
push ecx
push 0x4be940
push eax
call fcn.0046af90
add esp, 0x14
movups xmm0, xmmword [eax]
mov eax, dword [esp + 0x84]
movups xmmword [eax], xmm0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x70
ret
push 0xc0
push 0x4be940
push dword [esp + 0x94]
lea eax, [esp + 0x5c]
push dword [esp + 0x94]
push esi
push edi
push eax
call fcn.00474950
add esp, 0x1c
movups xmm0, xmmword [eax]
mov eax, dword [esp + 0x84]
pop edi
pop esi
pop ebp
movups xmmword [eax], xmm0
pop ebx
add esp, 0x70
ret