Function at 0x100516c0
Capabilities:
Encode data using xor
Resolve function by parsing pe exports

Disassembly:
sub esp, 0x310
lea edx, [esp + 0x96]
sub edx, eax
mov dword [esp], edx
push ebx
mov ebx, dword [esp + 0x318]
lea edx, [esp + 0xa2]
sub edx, eax
push ebp
mov dword [esp + 0xc], edx
push esi
lea edx, [esp + 0xb2]
xor esi, esi
sub edx, eax
push edi
lea ecx, [eax + 2]
mov dword [esp + 0x18], edx
lea esp, [esp]
movzx eax, byte [ecx - 2]
cdq
shld edx, eax, 8
shl eax, 8
mov edi, eax
movzx eax, byte [ecx - 1]
mov ebp, edx
cdq
or edi, eax
or ebp, edx
shld ebp, edi, 8
movzx eax, byte [ecx]
shl edi, 8
cdq
or edi, eax
or ebp, edx
shld ebp, edi, 8
movzx eax, byte [ecx + 1]
shl edi, 8
cdq
or edi, eax
movzx eax, byte [ecx + 2]
or ebp, edx
shld ebp, edi, 8
shl edi, 8
cdq
or edi, eax
movzx eax, byte [ecx + 3]
or ebp, edx
shld ebp, edi, 8
shl edi, 8
cdq
or edi, eax
movzx eax, byte [ecx + 4]
or ebp, edx
shld ebp, edi, 8
cdq
shl edi, 8
or edi, eax
movzx eax, byte [ecx + 5]
or ebp, edx
shld ebp, edi, 8
cdq
shl edi, 8
or edi, eax
movzx eax, byte [ecx + 6]
or ebp, edx
cdq
shld edx, eax, 8
mov dword [esp + esi*8 + 0xa0], edi
shl eax, 8
mov edi, eax
movzx eax, byte [ecx + 7]
mov dword [esp + esi*8 + 0xa4], ebp
mov ebp, edx
cdq
or edi, eax
movzx eax, byte [ecx + 8]
or ebp, edx
shld ebp, edi, 8
shl edi, 8
cdq
or edi, eax
movzx eax, byte [ecx + 9]
or ebp, edx
shld ebp, edi, 8
shl edi, 8
cdq
or edi, eax
movzx eax, byte [ecx + 0xa]
or ebp, edx
shld ebp, edi, 8
cdq
shl edi, 8
or edi, eax
movzx eax, byte [ecx + 0xb]
or ebp, edx
shld ebp, edi, 8
cdq
shl edi, 8
or edi, eax
or ebp, edx
shld ebp, edi, 8
movzx eax, byte [ecx + 0xc]
cdq
or ebp, edx
shl edi, 8
or edi, eax
shld ebp, edi, 8
movzx eax, byte [ecx + 0xd]
cdq
or ebp, edx
shl edi, 8
or edi, eax
mov eax, dword [esp + 0x10]
mov dword [ecx + eax], edi
mov dword [ecx + eax + 4], ebp
movzx eax, byte [ecx + 0xe]
cdq
shld edx, eax, 8
shl eax, 8
mov edi, eax
movzx eax, byte [ecx + 0xf]
mov ebp, edx
cdq
or edi, eax
movzx eax, byte [ecx + 0x10]
or ebp, edx
shld ebp, edi, 8
shl edi, 8
cdq
or edi, eax
movzx eax, byte [ecx + 0x11]
or ebp, edx
shld ebp, edi, 8
cdq
shl edi, 8
or edi, eax
movzx eax, byte [ecx + 0x12]
or ebp, edx
shld ebp, edi, 8
cdq
shl edi, 8
or edi, eax
movzx eax, byte [ecx + 0x13]
or ebp, edx
shld ebp, edi, 8
cdq
shl edi, 8
or edi, eax
movzx eax, byte [ecx + 0x14]
or ebp, edx
shld ebp, edi, 8
cdq
shl edi, 8
or edi, eax
movzx eax, byte [ecx + 0x15]
or ebp, edx
shld ebp, edi, 8
cdq
shl edi, 8
or edi, eax
mov eax, dword [esp + 0x14]
mov dword [ecx + eax], edi
or ebp, edx
mov dword [ecx + eax + 4], ebp
movzx eax, byte [ecx + 0x16]
cdq
shld edx, eax, 8
shl eax, 8
mov edi, eax
movzx eax, byte [ecx + 0x17]
mov ebp, edx
cdq
or edi, eax
movzx eax, byte [ecx + 0x18]
or ebp, edx
shld ebp, edi, 8
cdq
shl edi, 8
or edi, eax
or ebp, edx
movzx eax, byte [ecx + 0x19]
shld ebp, edi, 8
shl edi, 8
cdq
or edi, eax
movzx eax, byte [ecx + 0x1a]
or ebp, edx
shld ebp, edi, 8
shl edi, 8
cdq
or edi, eax
movzx eax, byte [ecx + 0x1b]
or ebp, edx
shld ebp, edi, 8
shl edi, 8
cdq
or edi, eax
movzx eax, byte [ecx + 0x1c]
or ebp, edx
shld ebp, edi, 8
cdq
shl edi, 8
or edi, eax
movzx eax, byte [ecx + 0x1d]
or ebp, edx
shld ebp, edi, 8
cdq
shl edi, 8
or edi, eax
mov eax, dword [esp + 0x18]
or ebp, edx
mov dword [ecx + eax], edi
mov dword [ecx + eax + 4], ebp
add esi, 4
add ecx, 0x20
cmp esi, 0x10
jl 0x10051700
cmp esi, 0x50
jge 0x10051a18
mov ecx, 0x50
lea eax, [esp + esi*8 + 0x90]
sub ecx, esi
mov dword [esp + 0x10], eax
mov dword [esp + 0x14], ecx
mov ecx, dword [eax - 0x68]
mov edx, dword [eax - 0x64]
mov dword [esp + 0x40], ecx
mov ecx, dword [eax]
mov eax, dword [eax + 4]
mov edi, ecx
mov dword [esp + 0x60], ecx
mov dword [esp + 0x44], edx
mov edx, ecx
mov ebp, eax
shld ebp, ecx, 3
mov ebx, eax
shrd edi, ebx, 0x13
add ecx, ecx
xor esi, esi
or esi, edi
add ecx, ecx
add ecx, ecx
shr ebx, 0x13
mov edi, eax
shl edx, 0xd
or edx, ebx
shr edi, 0x1d
or edi, ecx
mov ecx, dword [esp + 0x60]
shrd ecx, eax, 6
xor ebx, ebx
or ebx, ebp
xor esi, edi
xor esi, ecx
mov ecx, dword [esp + 0x44]
xor edx, ebx
shr eax, 6
xor edx, eax
mov eax, dword [esp + 0x40]
mov ebp, ecx
mov ebx, eax
shrd ebx, ebp, 8
xor edi, edi
or edi, ebx
mov dword [esp + 0x18], esi
mov esi, eax
mov ebx, eax
shrd eax, ecx, 1
shl esi, 0x18
shr ebp, 8
or esi, ebp
shr ecx, 1
xor ebp, ebp
or ebp, eax
mov eax, dword [esp + 0x44]
shl ebx, 0x1f
or ebx, ecx
mov ecx, dword [esp + 0x40]
shrd ecx, eax, 7
xor edi, ebp
shr eax, 7
xor esi, ebx
xor edi, ecx
mov ecx, dword [esp + 0x18]
xor esi, eax
mov eax, dword [esp + 0x10]
add ecx, edi
adc edx, esi
add ecx, dword [eax - 0x70]
adc edx, dword [eax - 0x6c]
add ecx, dword [eax - 0x28]
adc edx, dword [eax - 0x24]
mov dword [eax + 0x10], ecx
mov dword [eax + 0x14], edx
add eax, 8
sub dword [esp + 0x14], 1
mov dword [esp + 0x10], eax
jne 0x10051940
mov ebx, dword [esp + 0x324]
mov eax, dword [ebx + 0x10]
mov ecx, dword [ebx + 0x1c]
mov edx, dword [ebx + 0x14]
mov esi, dword [ebx + 0x30]
mov edi, dword [ebx + 0x34]
mov dword [esp + 0x98], eax
mov dword [esp + 0x40], eax
mov eax, dword [ebx + 0x18]
mov dword [esp + 0x90], eax
mov dword [esp + 0x48], eax
mov eax, dword [ebx + 0x20]
mov dword [esp + 0x78], eax
mov dword [esp + 0x18], eax
mov eax, dword [ebx + 0x28]
mov dword [esp + 0x94], ecx
mov dword [esp + 0x4c], ecx
mov ecx, dword [ebx + 0x24]
mov dword [esp + 0x68], eax
mov dword [esp + 0x58], eax
mov eax, dword [ebx + 0x38]
mov dword [esp + 0x7c], ecx
mov dword [esp + 0x1c], ecx
mov ecx, dword [ebx + 0x2c]
mov dword [esp + 0x70], eax
mov dword [esp + 0x50], eax
mov eax, dword [ebx + 0x40]
mov dword [esp + 0x6c], ecx
mov dword [esp + 0x5c], ecx
mov ecx, dword [ebx + 0x3c]
mov dword [esp + 0x80], eax
mov dword [esp + 0x20], eax
mov eax, dword [ebx + 0x48]
mov dword [esp + 0x74], ecx
mov dword [esp + 0x54], ecx
mov ecx, dword [ebx + 0x44]
mov ebx, dword [ebx + 0x4c]
mov dword [esp + 0x60], eax
mov dword [esp + 0x30], eax
lea eax, [esp + 0xa0]
mov dword [esp + 0x9c], edx
mov dword [esp + 0x44], edx
mov dword [esp + 0x88], esi
mov dword [esp + 0x8c], edi
mov dword [esp + 0x28], esi
mov dword [esp + 0x2c], edi
mov dword [esp + 0x84], ecx
mov dword [esp + 0x24], ecx
mov dword [esp + 0x64], ebx
mov dword [esp + 0x34], ebx
mov dword [esp + 0x10], eax
mov dword [esp + 0x14], 0x10122ce0
jmp 0x10051afd
mov edi, dword [esp + 0x2c]
mov esi, dword [esp + 0x28]
mov ebx, esi
mov ebp, edi
shld ebp, ebx, 0x17
shl ebx, 0x17
xor ecx, ecx
or ecx, ebp
mov eax, edi
shr eax, 9
or eax, ebx
xor ebp, ebp
mov ebx, esi
shrd esi, edi, 0x12
or ebp, esi
mov esi, dword [esp + 0x28]
shl ebx, 0xe
xor eax, ebp
mov ebp, dword [esp + 0x2c]
shr edi, 0x12
or ebx, edi
xor ecx, ebx
xor ebx, ebx
mov edi, esi
shrd esi, ebp, 0xe
or ebx, esi
mov esi, dword [esp + 0x20]
xor eax, ebx
shr ebp, 0xe
shl edi, 0x12
or edi, ebp
xor ecx, edi
mov edi, dword [esp + 0x24]
mov ebx, esi
xor ebx, dword [esp + 0x50]
mov ebp, edi
and ebx, dword [esp + 0x28]
xor ebp, dword [esp + 0x54]
xor ebx, esi
and ebp, dword [esp + 0x2c]
mov esi, dword [esp + 0x14]
xor ebp, edi
add eax, ebx
adc ecx, ebp
add eax, dword [esi]
mov ebx, edx
adc ecx, dword [esi + 4]
add eax, dword [esp + 0x30]
mov esi, dword [esp + 0x10]
adc ecx, dword [esp + 0x34]
add eax, dword [esi]
mov ebp, edx
adc ecx, dword [esi + 4]
add dword [esp + 0x58], eax
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x40]
adc dword [esp + 0x5c], ecx
mov dword [esp + 0x3c], ecx
mov ecx, eax
shrd ecx, ebx, 0x1c
mov esi, eax
shr ebx, 0x1c
shld ebp, eax, 0x1e
shl esi, 4
or esi, ebx
xor ebx, ebx
or ebx, ebp
xor edi, edi
or edi, ecx
xor esi, ebx
mov ebx, dword [esp + 0x40]
shl eax, 0x1e
mov ecx, edx
shr ecx, 2
or ecx, eax
mov ebp, edx
shld ebp, ebx, 0x19
mov eax, edx
xor edi, ecx
shr eax, 7
shl ebx, 0x19
xor ecx, ecx
or eax, ebx
or ecx, ebp
mov ebp, dword [esp + 0x4c]
xor esi, ecx
mov ecx, dword [esp + 0x40]
xor edi, eax
mov eax, dword [esp + 0x48]
or ebp, edx
and ebp, dword [esp + 0x1c]
mov ebx, eax
or ebx, ecx
and ebx, dword [esp + 0x18]
and eax, ecx
mov ecx, dword [esp + 0x4c]
or ebx, eax
and ecx, edx
or ebp, ecx
add edi, ebx
adc esi, ebp
add edi, dword [esp + 0x38]
mov eax, 8
adc esi, dword [esp + 0x3c]
add dword [esp + 0x14], eax
add dword [esp + 0x10], eax
mov dword [esp + 0x30], edi
mov edi, dword [esp + 0x5c]
mov dword [esp + 0x34], esi
mov esi, dword [esp + 0x58]
mov ebx, esi
mov ebp, edi
shld ebp, ebx, 0x17
shl ebx, 0x17
mov eax, edi
shr eax, 9
or eax, ebx
xor ecx, ecx
or ecx, ebp
xor ebp, ebp
mov ebx, esi
shrd esi, edi, 0x12
or ebp, esi
mov esi, dword [esp + 0x58]
xor eax, ebp
mov ebp, dword [esp + 0x5c]
shl ebx, 0xe
shr edi, 0x12
or ebx, edi
xor ecx, ebx
mov edi, esi
shrd esi, ebp, 0xe
shr ebp, 0xe
xor ebx, ebx
or ebx, esi
mov esi, dword [esp + 0x50]
shl edi, 0x12
or edi, ebp
xor ecx, edi
mov edi, dword [esp + 0x54]
xor eax, ebx
mov ebx, esi
xor ebx, dword [esp + 0x28]
mov ebp, edi
xor ebp, dword [esp + 0x2c]
and ebx, dword [esp + 0x58]
and ebp, dword [esp + 0x5c]
xor ebx, esi
mov esi, dword [esp + 0x14]
xor ebp, edi
add eax, ebx
adc ecx, ebp
add eax, dword [esi]
adc ecx, dword [esi + 4]
add eax, dword [esp + 0x20]
mov esi, dword [esp + 0x10]
adc ecx, dword [esp + 0x24]
add eax, dword [esi]
adc ecx, dword [esi + 4]
add dword [esp + 0x18], eax
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x30]
adc dword [esp + 0x1c], ecx
mov dword [esp + 0x3c], ecx
mov ecx, dword [esp + 0x34]
mov ebx, eax
mov ebp, ecx
shrd ebx, ebp, 0x1c
shr ebp, 0x1c
xor edi, edi
or edi, ebx
mov esi, eax
mov ebx, ecx
shld ecx, eax, 0x1e
shr ebx, 2
shl esi, 4
or esi, ebp
xor ebp, ebp
or ebp, ecx
xor esi, ebp
mov ebp, dword [esp + 0x30]
shl eax, 0x1e
or ebx, eax
mov eax, dword [esp + 0x34]
xor edi, ebx
xor ebx, ebx
mov ecx, eax
shld eax, ebp, 0x19
or ebx, eax
mov eax, dword [esp + 0x30]
xor esi, ebx
shl ebp, 0x19
shr ecx, 7
or ecx, ebp
mov ebp, dword [esp + 0x34]
xor edi, ecx
mov ecx, dword [esp + 0x40]
or ebp, edx
and ebp, dword [esp + 0x4c]
mov ebx, eax
or ebx, ecx
and ebx, dword [esp + 0x48]
and eax, ecx
mov ecx, dword [esp + 0x34]
or ebx, eax
and ecx, edx
or ebp, ecx
add edi, ebx
adc esi, ebp
add edi, dword [esp + 0x38]
mov eax, 8
adc esi, dword [esp + 0x3c]
add dword [esp + 0x14], eax
add dword [esp + 0x10], eax
mov dword [esp + 0x20], edi
mov edi, dword [esp + 0x1c]
mov dword [esp + 0x24], esi
mov esi, dword [esp + 0x18]
mov ebp, edi
mov ebx, esi
shld ebp, ebx, 0x17
mov eax, edi
shl ebx, 0x17
shr eax, 9
or eax, ebx
mov ebx, esi
shrd esi, edi, 0x12
xor ecx, ecx
or ecx, ebp
xor ebp, ebp
or ebp, esi
mov esi, dword [esp + 0x18]
shl ebx, 0xe
shr edi, 0x12
or ebx, edi
xor eax, ebp
mov ebp, dword [esp + 0x1c]
mov edi, esi
shrd esi, ebp, 0xe
xor ecx, ebx
xor ebx, ebx
shl edi, 0x12
shr ebp, 0xe
or ebx, esi
or edi, ebp
mov esi, dword [esp + 0x28]
xor eax, ebx
xor ecx, edi
mov edi, dword [esp + 0x2c]
mov ebx, esi
xor ebx, dword [esp + 0x58]
mov ebp, edi
xor ebp, dword [esp + 0x5c]
and ebx, dword [esp + 0x18]
and ebp, dword [esp + 0x1c]
xor ebx, esi
mov esi, dword [esp + 0x14]
xor ebp, edi
add eax, ebx
adc ecx, ebp
add eax, dword [esi]
adc ecx, dword [esi + 4]
add eax, dword [esp + 0x50]
mov esi, dword [esp + 0x10]
adc ecx, dword [esp + 0x54]
add eax, dword [esi]
adc ecx, dword [esi + 4]
add dword [esp + 0x48], eax
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x20]
adc dword [esp + 0x4c], ecx
mov dword [esp + 0x3c], ecx
mov ecx, dword [esp + 0x24]
mov ebx, eax
mov ebp, ecx
shrd ebx, ebp, 0x1c
shr ebp, 0x1c
xor edi, edi
or edi, ebx
mov esi, eax
mov ebx, ecx
shld ecx, eax, 0x1e
shl esi, 4
or esi, ebp
xor ebp, ebp
or ebp, ecx
shr ebx, 2
xor esi, ebp
mov ebp, dword [esp + 0x20]
shl eax, 0x1e
or ebx, eax
mov eax, dword [esp + 0x24]
xor edi, ebx
mov ecx, eax
shld eax, ebp, 0x19
shl ebp, 0x19
shr ecx, 7
or ecx, ebp
mov ebp, dword [esp + 0x34]
xor ebx, ebx
or ebx, eax
mov eax, dword [esp + 0x24]
xor esi, ebx
xor edi, ecx
mov ecx, dword [esp + 0x30]
or ebp, eax
and ebp, edx
mov edx, dword [esp + 0x34]
mov ebx, ecx
or ebx, dword [esp + 0x20]
and ecx, dword [esp + 0x20]
and ebx, dword [esp + 0x40]
and edx, eax
or ebp, edx
or ebx, ecx
add edi, ebx
adc esi, ebp
add edi, dword [esp + 0x38]
mov eax, 8
adc esi, dword [esp + 0x3c]
add dword [esp + 0x14], eax
add dword [esp + 0x10], eax
mov edx, esi
mov dword [esp + 0x50], edi
mov edi, dword [esp + 0x4c]
mov dword [esp + 0x54], edx
mov esi, dword [esp + 0x48]
mov ebx, esi
mov ebp, edi
shld ebp, ebx, 0x17
shl ebx, 0x17
xor ecx, ecx
or ecx, ebp
mov eax, edi
shr eax, 9
or eax, ebx
xor ebp, ebp
mov ebx, esi
shrd esi, edi, 0x12
or ebp, esi
mov esi, dword [esp + 0x48]
xor eax, ebp
mov ebp, dword [esp + 0x4c]
shl ebx, 0xe
shr edi, 0x12
or ebx, edi
xor ecx, ebx
xor ebx, ebx
mov edi, esi
shrd esi, ebp, 0xe
or ebx, esi
mov esi, dword [esp + 0x58]
xor eax, ebx
shr ebp, 0xe
shl edi, 0x12
or edi, ebp
xor ecx, edi
mov edi, dword [esp + 0x5c]
mov ebx, esi
xor ebx, dword [esp + 0x18]
mov ebp, edi
xor ebp, dword [esp + 0x1c]
and ebx, dword [esp + 0x48]
and ebp, dword [esp + 0x4c]
xor ebx, esi
mov esi, dword [esp + 0x14]
xor ebp, edi
add eax, ebx
adc ecx, ebp
add eax, dword [esi]
mov ebx, edx
adc ecx, dword [esi + 4]
add eax, dword [esp + 0x28]
mov esi, dword [esp + 0x10]
adc ecx, dword [esp + 0x2c]
add eax, dword [esi]
mov ebp, edx
adc ecx, dword [esi + 4]
add dword [esp + 0x40], eax
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x50]
adc dword [esp + 0x44], ecx
mov dword [esp + 0x3c], ecx
mov ecx, eax
shrd ecx, ebx, 0x1c
mov esi, eax
shld ebp, eax, 0x1e
shr ebx, 0x1c
shl esi, 4
or esi, ebx
xor ebx, ebx
or ebx, ebp
xor edi, edi
or edi, ecx
xor esi, ebx
mov ebx, dword [esp + 0x50]
shl eax, 0x1e
mov ecx, edx
shr ecx, 2
or ecx, eax
mov ebp, edx
shld ebp, ebx, 0x19
xor edi, ecx
mov eax, edx
shr eax, 7
xor ecx, ecx
shl ebx, 0x19
or ecx, ebp
or eax, ebx
mov ebp, dword [esp + 0x24]
xor esi, ecx
mov ecx, dword [esp + 0x20]
xor edi, eax
mov eax, dword [esp + 0x50]
or ebp, edx
and ebp, dword [esp + 0x34]
mov ebx, ecx
or ebx, eax
and ebx, dword [esp + 0x30]
and ecx, eax
mov eax, dword [esp + 0x24]
or ebx, ecx
and eax, edx
or ebp, eax
add edi, ebx
adc esi, ebp
add edi, dword [esp + 0x38]
mov eax, 8
adc esi, dword [esp + 0x3c]
add dword [esp + 0x14], eax
add dword [esp + 0x10], eax
mov dword [esp + 0x28], edi
mov edi, dword [esp + 0x44]
mov dword [esp + 0x2c], esi
mov esi, dword [esp + 0x40]
mov ebx, esi
mov ebp, edi
shld ebp, ebx, 0x17
shl ebx, 0x17
mov eax, edi
shr eax, 9
or eax, ebx
xor ecx, ecx
or ecx, ebp
xor ebp, ebp
mov ebx, esi
shrd esi, edi, 0x12
or ebp, esi
mov esi, dword [esp + 0x40]
shl ebx, 0xe
xor eax, ebp
mov ebp, dword [esp + 0x44]
shr edi, 0x12
or ebx, edi
xor ecx, ebx
mov edi, esi
shrd esi, ebp, 0xe
shr ebp, 0xe
xor ebx, ebx
or ebx, esi
mov esi, dword [esp + 0x18]
shl edi, 0x12
or edi, ebp
xor ecx, edi
mov edi, dword [esp + 0x1c]
xor eax, ebx
mov ebx, esi
xor ebx, dword [esp + 0x48]
mov ebp, edi
xor ebp, dword [esp + 0x4c]
and ebx, dword [esp + 0x40]
and ebp, dword [esp + 0x44]
xor ebx, esi
mov esi, dword [esp + 0x14]
xor ebp, edi
add eax, ebx
adc ecx, ebp
add eax, dword [esi]
adc ecx, dword [esi + 4]
add eax, dword [esp + 0x58]
mov esi, dword [esp + 0x10]
adc ecx, dword [esp + 0x5c]
add eax, dword [esi]
adc ecx, dword [esi + 4]
add dword [esp + 0x30], eax
mov dword [esp + 0x38], eax
mov dword [esp + 0x3c], ecx
adc dword [esp + 0x34], ecx
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x2c]
mov ebx, eax
mov ebp, ecx
shrd ebx, ebp, 0x1c
shr ebp, 0x1c
xor edi, edi
or edi, ebx
mov esi, eax
shl esi, 4
or esi, ebp
xor ebp, ebp
mov ebx, ecx
shld ecx, eax, 0x1e
or ebp, ecx
xor esi, ebp
mov ebp, dword [esp + 0x28]
shr ebx, 2
shl eax, 0x1e
or ebx, eax
mov eax, dword [esp + 0x2c]
xor edi, ebx
mov ecx, eax
shld eax, ebp, 0x19
shl ebp, 0x19
xor ebx, ebx
or ebx, eax
mov eax, dword [esp + 0x28]
xor esi, ebx
shr ecx, 7
or ecx, ebp
xor edi, ecx
mov ecx, dword [esp + 0x50]
mov ebx, ecx
or ebx, eax
and ebx, dword [esp + 0x20]
and ecx, eax
or ebx, ecx
mov ebp, edx
or ebp, dword [esp + 0x2c]
and edx, dword [esp + 0x2c]
and ebp, dword [esp + 0x24]
mov eax, 8
or ebp, edx
add edi, ebx
adc esi, ebp
add edi, dword [esp + 0x38]
adc esi, dword [esp + 0x3c]
add dword [esp + 0x14], eax
add dword [esp + 0x10], eax
mov dword [esp + 0x58], edi
mov edi, dword [esp + 0x34]
mov edx, esi
mov esi, dword [esp + 0x30]
mov ebp, edi
mov ebx, esi
shld ebp, ebx, 0x17
mov eax, edi
shl ebx, 0x17
shr eax, 9
or eax, ebx
mov ebx, esi
shrd esi, edi, 0x12
xor ecx, ecx
or ecx, ebp
xor ebp, ebp
or ebp, esi
mov esi, dword [esp + 0x30]
shr edi, 0x12
shl ebx, 0xe
or ebx, edi
xor eax, ebp
mov ebp, dword [esp + 0x34]
mov edi, esi
shrd esi, ebp, 0xe
xor ecx, ebx
xor ebx, ebx
shl edi, 0x12
shr ebp, 0xe
mov dword [esp + 0x5c], edx
or ebx, esi
mov esi, dword [esp + 0x48]
xor eax, ebx
or edi, ebp
xor ecx, edi
mov edi, dword [esp + 0x4c]
mov ebx, esi
xor ebx, dword [esp + 0x40]
mov ebp, edi
and ebx, dword [esp + 0x30]
xor ebp, dword [esp + 0x44]
xor ebx, esi
and ebp, dword [esp + 0x34]
mov esi, dword [esp + 0x14]
xor ebp, edi
add eax, ebx
adc ecx, ebp
add eax, dword [esi]
mov ebx, edx
adc ecx, dword [esi + 4]
add eax, dword [esp + 0x18]
mov esi, dword [esp + 0x10]
adc ecx, dword [esp + 0x1c]
add eax, dword [esi]
mov ebp, edx
adc ecx, dword [esi + 4]
add dword [esp + 0x20], eax
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x58]
adc dword [esp + 0x24], ecx
mov dword [esp + 0x3c], ecx
mov ecx, eax
shrd ecx, ebx, 0x1c
shr ebx, 0x1c
mov esi, eax
shld ebp, eax, 0x1e
shl esi, 4
or esi, ebx
xor ebx, ebx
or ebx, ebp
xor esi, ebx
mov ebx, dword [esp + 0x58]
xor edi, edi
or edi, ecx
shl eax, 0x1e
mov ecx, edx
shr ecx, 2
or ecx, eax
xor edi, ecx
xor ecx, ecx
mov ebp, edx
shld ebp, ebx, 0x19
or ecx, ebp
mov ebp, dword [esp + 0x2c]
shl ebx, 0x19
xor esi, ecx
mov ecx, dword [esp + 0x28]
mov eax, edx
shr eax, 7
or eax, ebx
xor edi, eax
mov eax, dword [esp + 0x58]
mov ebx, ecx
or ebx, eax
and ebx, dword [esp + 0x50]
and ecx, eax
mov eax, dword [esp + 0x2c]
or ebp, edx
and ebp, dword [esp + 0x54]
and eax, edx
or ebp, eax
or ebx, ecx
add edi, ebx
adc esi, ebp
add edi, dword [esp + 0x38]
mov eax, 8
adc esi, dword [esp + 0x3c]
add dword [esp + 0x14], eax
add dword [esp + 0x10], eax
mov dword [esp + 0x18], edi
mov edi, dword [esp + 0x24]
mov dword [esp + 0x1c], esi
mov esi, dword [esp + 0x20]
mov ebx, esi
mov ebp, edi
shld ebp, ebx, 0x17
shl ebx, 0x17
xor ecx, ecx
or ecx, ebp
xor ebp, ebp
mov eax, edi
shr eax, 9
or eax, ebx
mov ebx, esi
shrd esi, edi, 0x12
or ebp, esi
mov esi, dword [esp + 0x20]
xor eax, ebp
mov ebp, dword [esp + 0x24]
shl ebx, 0xe
shr edi, 0x12
or ebx, edi
xor ecx, ebx
xor ebx, ebx
mov edi, esi
shrd esi, ebp, 0xe
or ebx, esi
mov esi, dword [esp + 0x40]
shr ebp, 0xe
xor eax, ebx
mov ebx, dword [esp + 0x30]
xor ebx, esi
and ebx, dword [esp + 0x20]
shl edi, 0x12
or edi, ebp
mov ebp, dword [esp + 0x34]
xor ecx, edi
mov edi, dword [esp + 0x44]
xor ebp, edi
and ebp, dword [esp + 0x24]
xor ebx, esi
mov esi, dword [esp + 0x14]
xor ebp, edi
add eax, ebx
adc ecx, ebp
add eax, dword [esi]
adc ecx, dword [esi + 4]
add eax, dword [esp + 0x48]
mov esi, dword [esp + 0x10]
adc ecx, dword [esp + 0x4c]
add eax, dword [esi]
adc ecx, dword [esi + 4]
add dword [esp + 0x50], eax
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x18]
adc dword [esp + 0x54], ecx
mov dword [esp + 0x3c], ecx
mov ecx, dword [esp + 0x1c]
mov ebx, eax
mov ebp, ecx
shrd ebx, ebp, 0x1c
xor edi, edi
or edi, ebx
mov esi, eax
shr ebp, 0x1c
mov ebx, ecx
shld ecx, eax, 0x1e
shl esi, 4
or esi, ebp
xor ebp, ebp
or ebp, ecx
shl eax, 0x1e
shr ebx, 2
or ebx, eax
mov eax, dword [esp + 0x1c]
xor esi, ebp
mov ebp, dword [esp + 0x18]
mov ecx, eax
shld eax, ebp, 0x19
xor edi, ebx
shr ecx, 7
xor ebx, ebx
shl ebp, 0x19
or ecx, ebp
or ebx, eax
mov eax, dword [esp + 0x18]
xor edi, ecx
mov ecx, dword [esp + 0x58]
xor esi, ebx
mov ebx, ecx
or ebx, eax
and ebx, dword [esp + 0x28]
and ecx, eax
or ebx, ecx
mov ebp, edx
or ebp, dword [esp + 0x1c]
and edx, dword [esp + 0x1c]
and ebp, dword [esp + 0x2c]
mov eax, 8
or ebp, edx
mov edx, dword [esp + 0x50]
add edi, ebx
adc esi, ebp
add edi, dword [esp + 0x38]
mov ebx, edx
adc esi, dword [esp + 0x3c]
add dword [esp + 0x14], eax
add dword [esp + 0x10], eax
mov dword [esp + 0x48], edi
mov edi, dword [esp + 0x54]
mov ebp, edi
shld ebp, ebx, 0x17
shl ebx, 0x17
mov eax, edi
shr eax, 9
or eax, ebx
xor ecx, ecx
or ecx, ebp
xor ebp, ebp
mov ebx, edx
shrd edx, edi, 0x12
or ebp, edx
mov edx, dword [esp + 0x50]
xor eax, ebp
mov ebp, dword [esp + 0x54]
shl ebx, 0xe
shr edi, 0x12
or ebx, edi
xor ecx, ebx
mov edi, edx
shrd edx, ebp, 0xe
shr ebp, 0xe
xor ebx, ebx
or ebx, edx
mov edx, dword [esp + 0x30]
shl edi, 0x12
or edi, ebp
xor ecx, edi
mov edi, dword [esp + 0x34]
xor eax, ebx
mov ebx, edx
xor ebx, dword [esp + 0x20]
mov ebp, edi
xor ebp, dword [esp + 0x24]
and ebx, dword [esp + 0x50]
and ebp, dword [esp + 0x54]
xor ebx, edx
mov edx, dword [esp + 0x14]
xor ebp, edi
add eax, ebx
adc ecx, ebp
add eax, dword [edx]
mov dword [esp + 0x4c], esi
adc ecx, dword [edx + 4]
add eax, dword [esp + 0x40]
mov edx, dword [esp + 0x10]
adc ecx, dword [esp + 0x44]
add eax, dword [edx]
adc ecx, dword [edx + 4]
add dword [esp + 0x28], eax
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x48]
adc dword [esp + 0x2c], ecx
mov dword [esp + 0x3c], ecx
mov ecx, eax
mov edx, eax
shl edx, 4
mov ebx, esi
shrd ecx, ebx, 0x1c
shr ebx, 0x1c
or edx, ebx
xor ebx, ebx
xor edi, edi
or edi, ecx
mov ebp, esi
shld ebp, eax, 0x1e
or ebx, ebp
xor edx, ebx
mov ebx, dword [esp + 0x48]
shl eax, 0x1e
mov ecx, esi
shr ecx, 2
or ecx, eax
xor edi, ecx
xor ecx, ecx
mov ebp, esi
shld ebp, ebx, 0x19
or ecx, ebp
mov ebp, dword [esp + 0x1c]
shl ebx, 0x19
xor edx, ecx
mov ecx, dword [esp + 0x18]
mov eax, esi
shr eax, 7
or eax, ebx
xor edi, eax
mov eax, dword [esp + 0x48]
mov ebx, ecx
or ebx, eax
and ebx, dword [esp + 0x58]
and ecx, eax
mov eax, dword [esp + 0x1c]
or ebp, esi
and ebp, dword [esp + 0x5c]
and eax, esi
or ebp, eax
mov eax, dword [esp + 0x14]
or ebx, ecx
add edi, ebx
adc edx, ebp
add edi, dword [esp + 0x38]
adc edx, dword [esp + 0x3c]
add dword [esp + 0x10], 8
add eax, 8
cmp eax, 0x10122f60
mov ecx, edi
mov dword [esp + 0x40], ecx
mov dword [esp + 0x44], edx
mov dword [esp + 0x14], eax
jl 0x10051af5
mov eax, dword [esp + 0x324]
mov edi, dword [esp + 0x98]
add edi, ecx
mov ecx, dword [esp + 0x9c]
adc ecx, edx
mov edx, dword [esp + 0x94]
mov dword [eax + 0x14], ecx
mov ecx, dword [esp + 0x90]
add ecx, dword [esp + 0x48]
mov dword [eax + 0x10], edi
adc edx, esi
mov dword [eax + 0x18], ecx
mov ecx, dword [esp + 0x78]
add ecx, dword [esp + 0x18]
mov dword [eax + 0x1c], edx
mov edx, dword [esp + 0x7c]
adc edx, dword [esp + 0x1c]
mov dword [eax + 0x20], ecx
mov ecx, dword [esp + 0x68]
add ecx, dword [esp + 0x58]
mov dword [eax + 0x24], edx
mov edx, dword [esp + 0x6c]
adc edx, dword [esp + 0x5c]
mov dword [eax + 0x28], ecx
mov ecx, dword [esp + 0x88]
add ecx, dword [esp + 0x28]
mov dword [eax + 0x2c], edx
mov edx, dword [esp + 0x8c]
adc edx, dword [esp + 0x2c]
mov dword [eax + 0x30], ecx
mov ecx, dword [esp + 0x70]
add ecx, dword [esp + 0x50]
mov dword [eax + 0x34], edx
mov edx, dword [esp + 0x74]
adc edx, dword [esp + 0x54]
mov dword [eax + 0x38], ecx
mov ecx, dword [esp + 0x80]
add ecx, dword [esp + 0x20]
mov dword [eax + 0x3c], edx
mov edx, dword [esp + 0x84]
adc edx, dword [esp + 0x24]
mov dword [eax + 0x40], ecx
mov ecx, dword [esp + 0x60]
add ecx, dword [esp + 0x30]
pop edi
mov dword [eax + 0x44], edx
mov edx, dword [esp + 0x60]
adc edx, dword [esp + 0x30]
pop esi
pop ebp
mov dword [eax + 0x48], ecx
mov dword [eax + 0x4c], edx
pop ebx
add esp, 0x310
ret