Function at 0x4c90d0
Capabilities:
Encode data using xor
Hash data using sha512
Resolve function by parsing pe exports

Disassembly:
mov eax, 0x184
call fcn.00526eb0
cmp dword [esp + 0x18c], 0
mov ecx, dword [esp + 0x188]
je 0x4cc114
push ebx
push ebp
push esi
mov esi, edx
add esi, 2
push edi
mov dword [esp + 0x60], esi
lea esp, [esp]
mov eax, dword [ecx]
mov edx, dword [ecx + 4]
mov dword [esp + 0x174], eax
mov dword [esp + 0x40], eax
mov eax, dword [ecx + 8]
mov dword [esp + 0x134], eax
mov dword [esp + 0x48], eax
mov eax, dword [ecx + 0x10]
mov dword [esp + 0x13c], eax
mov dword [esp + 0x18], eax
mov eax, dword [ecx + 0x24]
mov dword [esp + 0x160], eax
mov dword [esp + 0x3c], eax
mov eax, dword [ecx + 0x28]
mov dword [esp + 0x16c], eax
mov dword [esp + 0x30], eax
mov eax, dword [ecx + 0x30]
mov dword [esp + 0x178], edx
mov dword [esp + 0x44], edx
mov edx, dword [ecx + 0xc]
mov dword [esp + 0x17c], eax
mov dword [esp + 0x28], eax
movzx eax, byte [esi - 2]
mov dword [esp + 0x138], edx
mov dword [esp + 0x4c], edx
mov edx, dword [ecx + 0x14]
mov dword [esp + 0x140], edx
mov dword [esp + 0x1c], edx
mov edx, dword [ecx + 0x2c]
mov dword [esp + 0x170], edx
mov dword [esp + 0x34], edx
mov edx, dword [ecx + 0x34]
mov dword [esp + 0x180], edx
mov dword [esp + 0x2c], edx
cdq
shld edx, eax, 8
shl eax, 8
mov ebx, eax
movzx eax, byte [esi - 1]
mov ebp, edx
cdq
or ebx, eax
movzx eax, byte [esi]
or ebp, edx
shld ebp, ebx, 8
shl ebx, 8
cdq
or ebx, eax
movzx eax, byte [esi + 1]
or ebp, edx
shld ebp, ebx, 8
shl ebx, 8
cdq
or ebx, eax
movzx eax, byte [esi + 2]
or ebp, edx
shld ebp, ebx, 8
mov edi, dword [ecx + 0x20]
shl ebx, 8
cdq
or ebx, eax
movzx eax, byte [esi + 3]
dec dword [esp + 0x19c]
or ebp, edx
shld ebp, ebx, 8
cdq
shl ebx, 8
or ebx, eax
movzx eax, byte [esi + 4]
or ebp, edx
shld ebp, ebx, 8
cdq
shl ebx, 8
or ebx, eax
movzx eax, byte [esi + 5]
or ebp, edx
shld ebp, ebx, 8
mov dword [esp + 0x15c], edi
mov dword [esp + 0x38], edi
shl ebx, 8
cdq
or ebx, eax
mov eax, dword [ecx + 0x38]
mov ecx, dword [ecx + 0x3c]
or ebp, edx
mov dword [esp + 0xac], ebx
mov dword [esp + 0xa8], ecx
mov ecx, dword [esp + 0x3c]
mov dword [esp + 0xa4], eax
xor edx, edx
mov ebx, ecx
mov dword [esp + 0xb0], ebp
mov eax, ecx
shr eax, 9
mov esi, edi
shld ebx, esi, 0x17
or edx, ebx
shl esi, 0x17
or eax, esi
xor ebx, ebx
mov ebp, edi
shrd ebp, ecx, 0x12
or ebx, ebp
mov ebp, dword [esp + 0x3c]
xor eax, ebx
shr ecx, 0x12
mov esi, edi
shl esi, 0xe
or esi, ecx
xor edx, esi
xor esi, esi
mov ebx, edi
shrd ebx, ebp, 0xe
or esi, ebx
xor eax, esi
shr ebp, 0xe
mov ecx, edi
shl ecx, 0x12
or ecx, ebp
mov ebp, dword [esp + 0x30]
xor edx, ecx
mov ecx, dword [esp + 0x3c]
and ebp, edi
mov esi, edi
mov edi, dword [esp + 0x34]
not esi
and esi, dword [esp + 0x28]
and edi, ecx
xor esi, ebp
mov ebp, dword [esp + 0x4c]
mov ebx, ecx
not ebx
and ebx, dword [esp + 0x2c]
xor ebx, edi
add eax, esi
mov esi, dword [esp + 0x198]
mov ecx, dword [esi + 0x18]
mov esi, dword [esi + 0x1c]
mov edi, dword [esp + 0x44]
adc edx, ebx
add eax, dword [esp + 0xa4]
mov ebx, dword [esp + 0x48]
adc edx, dword [esp + 0xa8]
add eax, dword [esp + 0xac]
mov dword [esp + 0x14c], ecx
adc edx, dword [esp + 0xb0]
add eax, 0xd728ae22
adc edx, 0x428a2f98
add ecx, eax
mov dword [esp + 0x10], eax
mov dword [esp + 0x150], esi
adc esi, edx
mov dword [esp + 0x14], edx
mov edx, dword [esp + 0x40]
mov eax, ebx
xor eax, edx
mov dword [esp + 0x80], eax
mov eax, ebp
xor eax, edi
mov dword [esp + 0x50], ecx
mov dword [esp + 0x54], esi
mov dword [esp + 0x84], eax
mov eax, ebx
and eax, edx
mov dword [esp + 0x78], eax
mov eax, ebp
and eax, edi
mov dword [esp + 0x7c], eax
xor ebx, ebx
mov ebp, edx
shrd ebp, edi, 0x1c
or ebx, ebp
mov dword [esp + 0x164], ebx
mov eax, edx
shl eax, 4
shr edi, 0x1c
or eax, edi
mov edi, dword [esp + 0x44]
xor ebp, ebp
mov ebx, edi
shld edi, edx, 0x1e
or ebp, edi
xor eax, ebp
mov ebp, dword [esp + 0x40]
shr ebx, 2
shl edx, 0x1e
or ebx, edx
xor dword [esp + 0x164], ebx
mov edx, dword [esp + 0x44]
xor ebx, ebx
mov edi, edx
shld edx, ebp, 0x19
or ebx, edx
mov edx, dword [esp + 0x164]
xor eax, ebx
mov ebx, dword [esp + 0x84]
and ebx, dword [esp + 0x1c]
shl ebp, 0x19
xor ebx, dword [esp + 0x7c]
shr edi, 7
or edi, ebp
xor edx, edi
mov edi, dword [esp + 0x80]
and edi, dword [esp + 0x18]
xor edi, dword [esp + 0x78]
add edx, edi
adc eax, ebx
add edx, dword [esp + 0x10]
mov edi, dword [esp + 0x60]
adc eax, dword [esp + 0x14]
mov dword [esp + 0x20], edx
mov dword [esp + 0x24], eax
movzx eax, byte [edi + 6]
cdq
shld edx, eax, 8
shl eax, 8
mov ebx, eax
movzx eax, byte [edi + 7]
mov ebp, edx
cdq
or ebx, eax
movzx eax, byte [edi + 8]
or ebp, edx
shld ebp, ebx, 8
shl ebx, 8
cdq
or ebx, eax
movzx eax, byte [edi + 9]
or ebp, edx
shld ebp, ebx, 8
shl ebx, 8
cdq
or ebx, eax
movzx eax, byte [edi + 0xa]
or ebp, edx
shld ebp, ebx, 8
cdq
shl ebx, 8
or ebx, eax
movzx eax, byte [edi + 0xb]
or ebp, edx
shld ebp, ebx, 8
shl ebx, 8
cdq
or ebx, eax
movzx eax, byte [edi + 0xc]
or ebp, edx
shld ebp, ebx, 8
shl ebx, 8
cdq
or ebx, eax
movzx eax, byte [edi + 0xd]
or ebp, edx
shld ebp, ebx, 8
shl ebx, 8
cdq
or ebx, eax
or ebp, edx
xor eax, eax
mov dword [esp + 0xb4], ebx
mov dword [esp + 0xb8], ebp
mov edi, ecx
mov ebx, esi
shld ebx, edi, 0x17
or eax, ebx
shl edi, 0x17
mov dword [esp + 0x190], eax
mov ebx, ecx
mov ebp, esi
shrd ebx, ebp, 0x12
shr ebp, 0x12
mov edx, esi
shr edx, 9
or edx, edi
xor edi, edi
or edi, ebx
xor edx, edi
mov eax, ecx
shl eax, 0xe
or eax, ebp
xor dword [esp + 0x190], eax
xor eax, eax
mov ebx, ecx
mov ebp, esi
shrd ebx, ebp, 0xe
or eax, ebx
xor edx, eax
mov eax, dword [esp + 0x190]
shr ebp, 0xe
mov edi, ecx
shl edi, 0x12
or edi, ebp
mov ebp, dword [esp + 0x38]
xor eax, edi
and ebp, ecx
mov edi, ecx
mov ecx, dword [esp + 0x3c]
and ecx, esi
not edi
and edi, dword [esp + 0x30]
mov ebx, esi
xor edi, ebp
mov ebp, dword [esp + 0x24]
not ebx
and ebx, dword [esp + 0x34]
xor ebx, ecx
mov ecx, dword [esp + 0x20]
add edx, edi
adc eax, ebx
add edx, dword [esp + 0xb4]
mov ebx, ecx
adc eax, dword [esp + 0xb8]
add edx, dword [esp + 0x28]
adc eax, dword [esp + 0x2c]
add edx, 0x23ef65cd
adc eax, 0x71374491
add dword [esp + 0x18], edx
mov dword [esp + 0x14], eax
adc dword [esp + 0x1c], eax
shrd ebx, ebp, 0x1c
mov eax, ecx
xor edi, edi
shl eax, 4
shr ebp, 0x1c
or edi, ebx
mov dword [esp + 0x12c], edi
mov edi, dword [esp + 0x24]
mov ebx, edi
shld edi, ecx, 0x1e
or eax, ebp
shr ebx, 2
shl ecx, 0x1e
or ebx, ecx
xor dword [esp + 0x12c], ebx
mov ecx, dword [esp + 0x24]
mov ebx, dword [esp + 0x20]
xor ebp, ebp
or ebp, edi
xor eax, ebp
mov edi, ecx
shld ecx, ebx, 0x19
shr edi, 7
shl ebx, 0x19
or edi, ebx
mov ebx, dword [esp + 0x12c]
xor ebx, edi
mov edi, dword [esp + 0x84]
and edi, dword [esp + 0x24]
xor ebp, ebp
xor edi, dword [esp + 0x7c]
or ebp, ecx
mov ecx, dword [esp + 0x80]
and ecx, dword [esp + 0x20]
xor eax, ebp
xor ecx, dword [esp + 0x78]
add ebx, ecx
adc eax, edi
mov ecx, dword [esp + 0x60]
add ebx, edx
adc eax, dword [esp + 0x14]
mov dword [esp + 0x28], ebx
mov dword [esp + 0x2c], eax
movzx eax, byte [ecx + 0xe]
cdq
shld edx, eax, 8
shl eax, 8
mov edi, eax
movzx eax, byte [ecx + 0xf]
mov ebx, edx
cdq
or edi, eax
movzx eax, byte [ecx + 0x10]
or ebx, edx
shld ebx, edi, 8
shl edi, 8
cdq
or edi, eax
movzx eax, byte [ecx + 0x11]
or ebx, edx
shld ebx, edi, 8
shl edi, 8
cdq
or edi, eax
movzx eax, byte [ecx + 0x12]
or ebx, edx
shld ebx, edi, 8
shl edi, 8
cdq
or edi, eax
movzx eax, byte [ecx + 0x13]
or ebx, edx
shld ebx, edi, 8
shl edi, 8
cdq
or edi, eax
movzx eax, byte [ecx + 0x14]
or ebx, edx
shld ebx, edi, 8
cdq
shl edi, 8
or edi, eax
movzx eax, byte [ecx + 0x15]
or ebx, edx
shld ebx, edi, 8
shl edi, 8
cdq
or edi, eax
or ebx, edx
mov edx, dword [esp + 0x18]
mov dword [esp + 0xbc], edi
mov edi, dword [esp + 0x1c]
mov dword [esp + 0xc0], ebx
mov ebp, edi
mov eax, edi
mov ebx, edx
shld ebp, ebx, 0x17
shl ebx, 0x17
and esi, dword [esp + 0x1c]
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 + 0x18]
shr edi, 0x12
shl ebx, 0xe
or ebx, edi
xor eax, ebp
mov ebp, dword [esp + 0x1c]
xor ecx, ebx
xor ebx, ebx
mov edi, edx
shrd edx, ebp, 0xe
or ebx, edx
mov edx, dword [esp + 0x18]
shl edi, 0x12
xor eax, ebx
mov ebx, dword [esp + 0x1c]
shr ebp, 0xe
or edi, ebp
mov ebp, dword [esp + 0x50]
xor ecx, edi
and ebp, edx
mov edi, edx
not edi
and edi, dword [esp + 0x38]
not ebx
and ebx, dword [esp + 0x3c]
xor edi, ebp
xor ebx, esi
mov esi, dword [esp + 0x28]
add eax, edi
adc ecx, ebx
add eax, dword [esp + 0xbc]
mov edi, esi
adc ecx, dword [esp + 0xc0]
add eax, dword [esp + 0x30]
adc ecx, dword [esp + 0x34]
add eax, 0xec4d3b2f
adc ecx, 0xb5c0fbcf
add dword [esp + 0x48], eax
mov dword [esp + 0x14], ecx
mov dword [esp + 0x10], eax
adc dword [esp + 0x4c], ecx
mov ecx, dword [esp + 0x2c]
mov ebx, ecx
shrd edi, ebx, 0x1c
mov eax, esi
xor edx, edx
or edx, edi
mov ebp, ecx
shld ebp, esi, 0x1e
shr ebx, 0x1c
shl eax, 4
or eax, ebx
mov edi, ecx
shr edi, 2
shl esi, 0x1e
xor ebx, ebx
or edi, esi
or ebx, ebp
xor edx, edi
xor eax, ebx
mov ebx, dword [esp + 0x28]
xor edi, edi
mov ebp, ecx
shld ebp, ebx, 0x19
or edi, ebp
xor eax, edi
mov edi, dword [esp + 0x40]
shl ebx, 0x19
mov esi, ecx
shr esi, 7
or esi, ebx
xor edx, esi
mov esi, dword [esp + 0x28]
mov ebx, esi
and esi, edi
xor ebx, edi
and ebx, dword [esp + 0x20]
mov ebp, ecx
xor ebp, dword [esp + 0x44]
and ecx, dword [esp + 0x44]
and ebp, dword [esp + 0x24]
xor ebx, esi
xor ebp, ecx
mov ecx, dword [esp + 0x60]
add edx, ebx
adc eax, ebp
add edx, dword [esp + 0x10]
adc eax, dword [esp + 0x14]
mov dword [esp + 0x30], edx
mov dword [esp + 0x34], eax
movzx eax, byte [ecx + 0x16]
cdq
shld edx, eax, 8
shl eax, 8
mov esi, eax
movzx eax, byte [ecx + 0x17]
mov edi, edx
cdq
or esi, eax
movzx eax, byte [ecx + 0x18]
or edi, edx
shld edi, esi, 8
shl esi, 8
cdq
or esi, eax
movzx eax, byte [ecx + 0x19]
or edi, edx
shld edi, esi, 8
shl esi, 8
cdq
or esi, eax
movzx eax, byte [ecx + 0x1a]
or edi, edx
shld edi, esi, 8
shl esi, 8
cdq
or esi, eax
movzx eax, byte [ecx + 0x1b]
or edi, edx
shld edi, esi, 8
shl esi, 8
cdq
or esi, eax
movzx eax, byte [ecx + 0x1c]
or edi, edx
shld edi, esi, 8
cdq
shl esi, 8
or esi, eax
movzx eax, byte [ecx + 0x1d]
or edi, edx
shld edi, esi, 8
cdq
shl esi, 8
or esi, eax
mov dword [esp + 0xc4], esi
mov esi, dword [esp + 0x4c]
or edi, edx
mov eax, esi
mov dword [esp + 0xc8], edi
shr eax, 9
mov edx, dword [esp + 0x48]
mov ebx, esi
xor ecx, ecx
mov edi, edx
shld ebx, edi, 0x17
or ecx, ebx
shl edi, 0x17
or eax, edi
xor ebx, ebx
mov ebp, edx
shrd ebp, esi, 0x12
or ebx, ebp
mov ebp, dword [esp + 0x4c]
xor eax, ebx
shr esi, 0x12
mov edi, edx
shl edi, 0xe
or edi, esi
xor ecx, edi
xor edi, edi
mov ebx, edx
shrd ebx, ebp, 0xe
or edi, ebx
xor eax, edi
shr ebp, 0xe
mov esi, edx
shl esi, 0x12
or esi, ebp
mov ebp, dword [esp + 0x18]
xor ecx, esi
mov esi, dword [esp + 0x4c]
and ebp, edx
mov edi, edx
mov edx, dword [esp + 0x1c]
and edx, esi
not edi
and edi, dword [esp + 0x50]
mov ebx, esi
xor edi, ebp
mov esi, dword [esp + 0x30]
not ebx
and ebx, dword [esp + 0x54]
xor ebx, edx
add eax, edi
adc ecx, ebx
add eax, dword [esp + 0xc4]
mov edi, esi
adc ecx, dword [esp + 0xc8]
add eax, dword [esp + 0x38]
adc ecx, dword [esp + 0x3c]
add eax, 0x8189dbbc
adc ecx, 0xe9b5dba5
add dword [esp + 0x40], eax
mov dword [esp + 0x14], ecx
mov dword [esp + 0x10], eax
adc dword [esp + 0x44], ecx
mov ecx, dword [esp + 0x34]
mov ebx, ecx
shrd edi, ebx, 0x1c
mov eax, esi
shr ebx, 0x1c
xor edx, edx
or edx, edi
mov ebp, ecx
shld ebp, esi, 0x1e
shl eax, 4
or eax, ebx
xor ebx, ebx
shl esi, 0x1e
mov edi, ecx
shr edi, 2
or edi, esi
or ebx, ebp
xor eax, ebx
mov ebx, dword [esp + 0x30]
xor edx, edi
mov esi, ecx
mov ebp, ecx
shr esi, 7
xor edi, edi
shld ebp, ebx, 0x19
or edi, ebp
xor eax, edi
mov edi, dword [esp + 0x28]
mov ebp, dword [esp + 0x2c]
shl ebx, 0x19
or esi, ebx
xor edx, esi
mov esi, dword [esp + 0x30]
mov ebx, edi
and edi, esi
xor ebx, esi
and ebx, dword [esp + 0x20]
mov esi, dword [esp + 0x2c]
and esi, ecx
xor ebx, edi
xor ebp, ecx
and ebp, dword [esp + 0x24]
mov ecx, dword [esp + 0x60]
xor ebp, esi
add edx, ebx
adc eax, ebp
add edx, dword [esp + 0x10]
adc eax, dword [esp + 0x14]
mov dword [esp + 0x38], edx
mov dword [esp + 0x3c], eax
movzx eax, byte [ecx + 0x1e]
cdq
shld edx, eax, 8
shl eax, 8
mov esi, eax
movzx eax, byte [ecx + 0x1f]
mov edi, edx
cdq
or esi, eax
movzx eax, byte [ecx + 0x20]
or edi, edx
shld edi, esi, 8
shl esi, 8
cdq
or esi, eax
movzx eax, byte [ecx + 0x21]
or edi, edx
shld edi, esi, 8
shl esi, 8
cdq
or esi, eax
movzx eax, byte [ecx + 0x22]
or edi, edx
shld edi, esi, 8
shl esi, 8
cdq
or esi, eax
movzx eax, byte [ecx + 0x23]
or edi, edx
shld edi, esi, 8
shl esi, 8
cdq
or esi, eax
movzx eax, byte [ecx + 0x24]
or edi, edx
shld edi, esi, 8
cdq
shl esi, 8
or esi, eax
movzx eax, byte [ecx + 0x25]
or edi, edx
shld edi, esi, 8
cdq
shl esi, 8
or esi, eax
or edi, edx
mov edx, dword [esp + 0x40]
mov dword [esp + 0xcc], esi
mov esi, dword [esp + 0x44]
mov dword [esp + 0xd0], edi
mov eax, esi
mov edi, edx
mov ebx, esi
shr eax, 9
xor ecx, ecx
shld ebx, edi, 0x17
or ecx, ebx
shl edi, 0x17
or eax, edi
xor ebx, ebx
mov ebp, edx
shrd ebp, esi, 0x12
or ebx, ebp
mov ebp, dword [esp + 0x44]
xor eax, ebx
shr esi, 0x12
mov edi, edx
shl edi, 0xe
or edi, esi
xor ecx, edi
xor edi, edi
mov ebx, edx
shrd ebx, ebp, 0xe
or edi, ebx
xor eax, edi
shr ebp, 0xe
mov esi, edx
shl esi, 0x12
or esi, ebp
mov ebp, dword [esp + 0x48]
xor ecx, esi
mov esi, dword [esp + 0x44]
and ebp, edx
mov edi, edx
mov edx, dword [esp + 0x4c]
and edx, esi
not edi
and edi, dword [esp + 0x18]
mov ebx, esi
xor edi, ebp
not ebx
and ebx, dword [esp + 0x1c]
mov esi, dword [esp + 0x38]
xor ebx, edx
add eax, edi
adc ecx, ebx
add eax, dword [esp + 0xcc]
mov edi, esi
adc ecx, dword [esp + 0xd0]
add eax, dword [esp + 0x50]
adc ecx, dword [esp + 0x54]
add eax, 0xf348b538
adc ecx, 0x3956c25b
add dword [esp + 0x20], eax
mov dword [esp + 0x14], ecx
mov dword [esp + 0x10], eax
adc dword [esp + 0x24], ecx
mov ecx, dword [esp + 0x3c]
mov eax, esi
mov ebx, ecx
shrd edi, ebx, 0x1c
shr ebx, 0x1c
shl eax, 4
or eax, ebx
mov ebp, ecx
shld ebp, esi, 0x1e
xor ebx, ebx
or ebx, ebp
xor edx, edx
or edx, edi
xor eax, ebx
mov ebx, dword [esp + 0x38]
shl esi, 0x1e
mov edi, ecx
shr edi, 2
or edi, esi
mov ebp, ecx
shld ebp, ebx, 0x19
xor edx, edi
mov esi, ecx
shr esi, 7
shl ebx, 0x19
xor edi, edi
or esi, ebx
or edi, ebp
xor edx, esi
xor eax, edi
mov edi, dword [esp + 0x30]
mov esi, dword [esp + 0x38]
mov ebp, dword [esp + 0x34]
mov ebx, edi
and edi, esi
xor ebx, esi
and ebx, dword [esp + 0x28]
mov esi, dword [esp + 0x34]
and esi, ecx
xor ebx, edi
xor ebp, ecx
and ebp, dword [esp + 0x2c]
mov ecx, dword [esp + 0x60]
xor ebp, esi
add edx, ebx
adc eax, ebp
add edx, dword [esp + 0x10]
adc eax, dword [esp + 0x14]
mov dword [esp + 0x50], edx
mov dword [esp + 0x54], eax
movzx eax, byte [ecx + 0x26]
cdq
shld edx, eax, 8
shl eax, 8
mov esi, eax
movzx eax, byte [ecx + 0x27]
mov edi, edx
cdq
or esi, eax
movzx eax, byte [ecx + 0x28]
or edi, edx
shld edi, esi, 8
shl esi, 8
cdq
or esi, eax
movzx eax, byte [ecx + 0x29]
or edi, edx
shld edi, esi, 8
shl esi, 8
cdq
or esi, eax
movzx eax, byte [ecx + 0x2a]
or edi, edx
shld edi, esi, 8
shl esi, 8
cdq
or esi, eax
movzx eax, byte [ecx + 0x2b]
or edi, edx
shld edi, esi, 8
cdq
or edi, edx
shl esi, 8
or esi, eax
movzx eax, byte [ecx + 0x2c]
shld edi, esi, 8
cdq
or edi, edx
shl esi, 8
or esi, eax
movzx eax, byte [ecx + 0x2d]
shld edi, esi, 8
cdq
shl esi, 8
or esi, eax
or edi, edx
mov edx, dword [esp + 0x20]
mov dword [esp + 0xd8], edi
mov dword [esp + 0xd4], esi
mov esi, dword [esp + 0x24]
mov edi, edx
mov ebx, esi
shld ebx, edi, 0x17
mov eax, esi
shl edi, 0x17
shr eax, 9
xor ecx, ecx
or eax, edi
or ecx, ebx
mov edi, edx
xor ebx, ebx
shl edi, 0xe
mov ebp, edx
shrd ebp, esi, 0x12
or ebx, ebp
mov ebp, dword [esp + 0x24]
xor eax, ebx
shr esi, 0x12
or edi, esi
xor ecx, edi
xor edi, edi
mov ebx, edx
shrd ebx, ebp, 0xe
or edi, ebx
xor eax, edi
shr ebp, 0xe
mov esi, edx
shl esi, 0x12
or esi, ebp
xor ecx, esi
mov esi, dword [esp + 0x24]
mov ebx, esi
and esi, dword [esp + 0x44]
not ebx
and ebx, dword [esp + 0x4c]
mov edi, edx
and edx, dword [esp + 0x40]
xor ebx, esi
not edi
and edi, dword [esp + 0x48]
mov esi, dword [esp + 0x50]
xor edi, edx
add eax, edi
adc ecx, ebx
add eax, dword [esp + 0xd4]
mov edi, esi
adc ecx, dword [esp + 0xd8]
add eax, dword [esp + 0x18]
adc ecx, dword [esp + 0x1c]
add eax, 0xb605d019
adc ecx, 0x59f111f1
add dword [esp + 0x28], eax
mov dword [esp + 0x14], ecx
mov dword [esp + 0x10], eax
adc dword [esp + 0x2c], ecx
mov ecx, dword [esp + 0x54]
mov eax, esi
mov ebx, ecx
shrd edi, ebx, 0x1c
shr ebx, 0x1c
shl eax, 4
or eax, ebx
xor ebx, ebx
mov ebp, ecx
shld ebp, esi, 0x1e
or ebx, ebp
xor edx, edx
or edx, edi
xor eax, ebx
mov ebx, dword [esp + 0x50]
shl esi, 0x1e
mov edi, ecx
shr edi, 2
or edi, esi
xor edx, edi
mov ebp, ecx
shld ebp, ebx, 0x19
xor edi, edi
or edi, ebp
mov ebp, dword [esp + 0x3c]
shl ebx, 0x19
mov esi, ecx
shr esi, 7
or esi, ebx
xor eax, edi
mov edi, dword [esp + 0x38]
xor edx, esi
mov esi, dword [esp + 0x50]
mov ebx, edi
xor ebx, esi
xor ebp, ecx
and ebx, dword [esp + 0x30]
and edi, esi
and ebp, dword [esp + 0x34]
mov esi, dword [esp + 0x3c]
and esi, ecx
mov ecx, dword [esp + 0x60]
xor ebp, esi
xor ebx, edi
add edx, ebx
adc eax, ebp
add edx, dword [esp + 0x10]
adc eax, dword [esp + 0x14]
mov dword [esp + 0x18], edx
mov dword [esp + 0x1c], eax
movzx eax, byte [ecx + 0x2e]
cdq
shld edx, eax, 8
shl eax, 8
mov esi, eax
movzx eax, byte [ecx + 0x2f]
mov edi, edx
cdq
or esi, eax
movzx eax, byte [ecx + 0x30]
or edi, edx
shld edi, esi, 8
shl esi, 8
cdq
or esi, eax
movzx eax, byte [ecx + 0x31]
or edi, edx
shld edi, esi, 8
shl esi, 8
cdq
or esi, eax
movzx eax, byte [ecx + 0x32]
or edi, edx
shld edi, esi, 8
shl esi, 8
cdq
or esi, eax
movzx eax, byte [ecx + 0x33]
or edi, edx
shld edi, esi, 8
shl esi, 8
cdq
or esi, eax
movzx eax, byte [ecx + 0x34]
or edi, edx
shld edi, esi, 8
cdq
or edi, edx
shl esi, 8
or esi, eax
movzx eax, byte [ecx + 0x35]
shld edi, esi, 8
cdq
shl esi, 8
or esi, eax
or edi, edx
mov edx, dword [esp + 0x28]
mov dword [esp + 0xe0], edi
mov dword [esp + 0xdc], esi
mov esi, dword [esp + 0x2c]
mov ebx, esi
mov edi, edx
shld ebx, edi, 0x17
mov eax, esi
shl edi, 0x17
mov ebp, edx
shrd ebp, esi, 0x12
shr eax, 9
or eax, edi
xor ecx, ecx
or ecx, ebx
mov edi, edx
xor ebx, ebx
shl edi, 0xe
shr esi, 0x12
or ebx, ebp
or edi, esi
xor eax, ebx
mov ebp, dword [esp + 0x2c]
xor ecx, edi
xor edi, edi
mov ebx, edx
shrd ebx, ebp, 0xe
or edi, ebx
xor eax, edi
shr ebp, 0xe
mov esi, edx
shl esi, 0x12
or esi, ebp
mov ebp, dword [esp + 0x20]
xor ecx, esi
mov esi, dword [esp + 0x2c]
and ebp, edx
mov ebx, esi
not ebx
and ebx, dword [esp + 0x44]
mov edi, edx
mov edx, dword [esp + 0x24]
and edx, esi
xor ebx, edx
not edi
and edi, dword [esp + 0x40]
mov esi, dword [esp + 0x18]
xor edi, ebp
add eax, edi
adc ecx, ebx
add eax, dword [esp + 0xdc]
mov edi, esi
adc ecx, dword [esp + 0xe0]
add eax, dword [esp + 0x48]
adc ecx, dword [esp + 0x4c]
add eax, 0xaf194f9b
adc ecx, 0x923f82a4
add dword [esp + 0x30], eax
mov dword [esp + 0x14], ecx
mov dword [esp + 0x10], eax
adc dword [esp + 0x34], ecx
mov ecx, dword [esp + 0x1c]
mov eax, esi
mov ebx, ecx
shrd edi, ebx, 0x1c
shr ebx, 0x1c
shl eax, 4
or eax, ebx
xor ebx, ebx
mov ebp, ecx
shld ebp, esi, 0x1e
or ebx, ebp
xor edx, edx
or edx, edi
xor eax, ebx
mov ebx, dword [esp + 0x18]
shl esi, 0x1e
mov edi, ecx
shr edi, 2
or edi, esi
xor edx, edi
mov ebp, ecx
shld ebp, ebx, 0x19
xor edi, edi
or edi, ebp
mov ebp, dword [esp + 0x54]
shl ebx, 0x19
mov esi, ecx
shr esi, 7
or esi, ebx
xor eax, edi
mov edi, dword [esp + 0x50]
xor edx, esi
mov esi, dword [esp + 0x18]
mov ebx, edi
xor ebx, esi
and ebx, dword [esp + 0x38]
and edi, esi
mov esi, dword [esp + 0x54]
xor ebp, ecx
and ebp, dword [esp + 0x3c]
and esi, ecx
xor ebx, edi
mov ecx, dword [esp + 0x60]
xor ebp, esi
add edx, ebx
adc eax, ebp
add edx, dword [esp + 0x10]
adc eax, dword [esp + 0x14]
mov dword [esp + 0x48], edx
mov dword [esp + 0x4c], eax
movzx eax, byte [ecx + 0x36]
cdq
shld edx, eax, 8
shl eax, 8
mov esi, eax
movzx eax, byte [ecx + 0x37]
mov edi, edx
cdq
or esi, eax
movzx eax, byte [ecx + 0x38]
or edi, edx
shld edi, esi, 8
shl esi, 8
cdq
or esi, eax
movzx eax, byte [ecx + 0x39]
or edi, edx
shld edi, esi, 8
shl esi, 8
cdq
or esi, eax
movzx eax, byte [ecx + 0x3a]
or edi, edx
shld edi, esi, 8
shl esi, 8
cdq
or esi, eax
movzx eax, byte [ecx + 0x3b]
or edi, edx
shld edi, esi, 8
shl esi, 8
cdq
or esi, eax
movzx eax, byte [ecx + 0x3c]
or edi, edx
shld edi, esi, 8
shl esi, 8
cdq
or esi, eax
movzx eax, byte [ecx + 0x3d]
or edi, edx
shld edi, esi, 8
cdq
shl esi, 8
or esi, eax
or edi, edx
mov edx, dword [esp + 0x30]
mov dword [esp + 0xe4], esi
mov esi, dword [esp + 0x34]
mov dword [esp + 0xe8], edi
mov ebx, esi
mov edi, edx
shld ebx, edi, 0x17
mov eax, esi
shl edi, 0x17
shr eax, 9
or eax, edi
mov ebp, edx
shrd ebp, esi, 0x12
xor ecx, ecx
or ecx, ebx
mov edi, edx
shl edi, 0xe
shr esi, 0x12
xor ebx, ebx
or edi, esi
or ebx, ebp
xor ecx, edi
xor eax, ebx
mov esi, edx
xor edi, edi
shl esi, 0x12
mov ebx, edx
mov ebp, dword [esp + 0x34]
shrd ebx, ebp, 0xe
or edi, ebx
xor eax, edi
shr ebp, 0xe
or esi, ebp
mov ebp, dword [esp + 0x28]
xor ecx, esi
mov esi, dword [esp + 0x34]
and ebp, edx
mov edi, edx
mov edx, dword [esp + 0x2c]
and edx, esi
not edi
and edi, dword [esp + 0x20]
mov ebx, esi
xor edi, ebp
not ebx
and ebx, dword [esp + 0x24]
mov esi, dword [esp + 0x48]
xor ebx, edx
add eax, edi
adc ecx, ebx
add eax, dword [esp + 0xe4]
mov edi, esi
adc ecx, dword [esp + 0xe8]
add eax, dword [esp + 0x40]
adc ecx, dword [esp + 0x44]
add eax, 0xda6d8118
adc ecx, 0xab1c5ed5
add dword [esp + 0x38], eax
mov dword [esp + 0x14], ecx
mov dword [esp + 0x10], eax
adc dword [esp + 0x3c], ecx
mov ecx, dword [esp + 0x4c]
mov eax, esi
mov ebx, ecx
shrd edi, ebx, 0x1c
shr ebx, 0x1c
shl eax, 4
or eax, ebx
xor ebx, ebx
mov ebp, ecx
shld ebp, esi, 0x1e
or ebx, ebp
xor eax, ebx
mov ebx, dword [esp + 0x48]
xor edx, edx
or edx, edi
shl esi, 0x1e
mov edi, ecx
shr edi, 2
or edi, esi
xor edx, edi
mov ebp, ecx
shld ebp, ebx, 0x19
xor edi, edi
or edi, ebp
mov ebp, dword [esp + 0x1c]
shl ebx, 0x19
mov esi, ecx
shr esi, 7
or esi, ebx
xor eax, edi
mov edi, dword [esp + 0x18]
xor edx, esi
mov esi, dword [esp + 0x48]
mov ebx, edi
xor ebx, esi
and ebx, dword [esp + 0x50]
and edi, esi
mov esi, dword [esp + 0x1c]
xor ebp, ecx
and ebp, dword [esp + 0x54]
and esi, ecx
xor ebx, edi
xor ebp, esi
add edx, ebx
adc eax, ebp
add edx, dword [esp + 0x10]
mov dword [esp + 0x40], edx
adc eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x60]
mov dword [esp + 0x44], eax
movzx eax, byte [ecx + 0x3e]
cdq
shld edx, eax, 8
shl eax, 8
mov esi, eax
movzx eax, byte [ecx + 0x3f]
mov edi, edx
cdq
or esi, eax
movzx eax, byte [ecx + 0x40]
or edi, edx
shld edi, esi, 8
shl esi, 8
cdq
or esi, eax
movzx eax, byte [ecx + 0x41]
or edi, edx
shld edi, esi, 8
shl esi, 8
cdq
or esi, eax
movzx eax, byte [ecx + 0x42]
or edi, edx
shld edi, esi, 8
shl esi, 8
cdq
or esi, eax
movzx eax, byte [ecx + 0x43]
or edi, edx
shld edi, esi, 8
shl esi, 8
cdq
or esi, eax
movzx eax, byte [ecx + 0x44]
or edi, edx
shld edi, esi, 8
shl esi, 8
cdq
or esi, eax
movzx eax, byte [ecx + 0x45]
or edi, edx
shld edi, esi, 8
cdq
shl esi, 8
or esi, eax
or edi, edx
mov edx, dword [esp + 0x38]
mov dword [esp + 0xec], esi
mov esi, dword [esp + 0x3c]
mov dword [esp + 0xf0], edi
mov ebx, esi
mov eax, esi
mov edi, edx
shld ebx, edi, 0x17
shl edi, 0x17
xor ecx, ecx
or ecx, ebx
mov ebp, edx
shrd ebp, esi, 0x12
xor ebx, ebx
or ebx, ebp
mov ebp, dword [esp + 0x3c]
shr eax, 9
or eax, edi
xor eax, ebx
shr esi, 0x12
mov edi, edx
shl edi, 0xe
or edi, esi
mov ebx, edx
shrd ebx, ebp, 0xe
xor ecx, edi
mov esi, edx
xor edi, edi
shl esi, 0x12
shr ebp, 0xe
or edi, ebx
or esi, ebp
mov ebp, dword [esp + 0x30]
xor eax, edi
and ebp, edx
xor ecx, esi
mov esi, dword [esp + 0x3c]
mov edi, edx
mov edx, dword [esp + 0x34]
and edx, esi
not edi
and edi, dword [esp + 0x28]
mov ebx, esi
mov esi, dword [esp + 0x50]
xor edi, ebp
not ebx
and ebx, dword [esp + 0x2c]
mov ebp, dword [esp + 0x4c]
xor ebx, edx
add eax, edi
adc ecx, ebx
add eax, dword [esp + 0xec]
mov edi, dword [esp + 0x54]
adc ecx, dword [esp + 0xf0]
add eax, dword [esp + 0x20]
mov ebx, dword [esp + 0x48]
adc ecx, dword [esp + 0x24]
mov edx, dword [esp + 0x44]
add eax, 0xa3030242
adc ecx, 0xd807aa98
add esi, eax
adc edi, ecx
mov dword [esp + 0x10], eax
mov eax, ebx
mov dword [esp + 0x14], ecx
mov ecx, dword [esp + 0x40]
xor eax, ecx
mov dword [esp + 0x80], eax
mov eax, ebp
xor eax, edx
mov dword [esp + 0x84], eax
mov eax, ebx
and eax, ecx
mov dword [esp + 0x78], eax
mov eax, ebp
and eax, edx
mov ebp, ecx
shrd ebp, edx, 0x1c
mov dword [esp + 0x7c], eax
mov eax, ecx
xor ebx, ebx
or ebx, ebp
shr edx, 0x1c
shl eax, 4
or eax, edx
mov edx, dword [esp + 0x44]
mov dword [esp + 0x144], ebx
mov ebx, edx
shld edx, ecx, 0x1e
xor ebp, ebp
or ebp, edx
shl ecx, 0x1e
shr ebx, 2
or ebx, ecx
mov ecx, dword [esp + 0x44]
xor dword [esp + 0x144], ebx
xor eax, ebp
mov ebp, dword [esp + 0x40]
mov edx, ecx
shld ecx, ebp, 0x19
xor ebx, ebx
or ebx, ecx
mov ecx, dword [esp + 0x144]
shr edx, 7
shl ebp, 0x19
or edx, ebp
xor ecx, edx
mov edx, dword [esp + 0x80]
xor eax, ebx
and edx, dword [esp + 0x18]
mov ebx, dword [esp + 0x84]
mov dword [esp + 0x50], esi
mov dword [esp + 0x54], edi
and ebx, dword [esp + 0x1c]
xor edx, dword [esp + 0x78]
xor ebx, dword [esp + 0x7c]
add ecx, edx
adc eax, ebx
add ecx, dword [esp + 0x10]
adc eax, dword [esp + 0x14]
mov dword [esp + 0x20], ecx
mov ecx, dword [esp + 0x60]
mov dword [esp + 0x24], eax
movzx eax, byte [ecx + 0x46]
cdq
shld edx, eax, 8
shl eax, 8
mov ebx, eax
movzx eax, byte [ecx + 0x47]
mov ebp, edx
cdq
or ebx, eax
movzx eax, byte [ecx + 0x48]
or ebp, edx
shld ebp, ebx, 8
shl ebx, 8
cdq
or ebx, eax
movzx eax, byte [ecx + 0x49]
or ebp, edx
shld ebp, ebx, 8
shl ebx, 8
cdq
or ebx, eax
movzx eax, byte [ecx + 0x4a]
or ebp, edx
shld ebp, ebx, 8
shl ebx, 8
cdq
or ebx, eax
movzx eax, byte [ecx + 0x4b]
or ebp, edx
shld ebp, ebx, 8
cdq
or ebp, edx
shl ebx, 8
or ebx, eax
movzx eax, byte [ecx + 0x4c]
shld ebp, ebx, 8
cdq
or ebp, edx
shl ebx, 8
or ebx, eax
movzx eax, byte [ecx + 0x4d]
shld ebp, ebx, 8
cdq
or ebp, edx
shl ebx, 8
or ebx, eax
mov dword [esp + 0xf4], ebx
mov edx, esi
mov ebx, edi
shld ebx, edx, 0x17
xor eax, eax
or eax, ebx
mov dword [esp + 0xf8], ebp
shl edx, 0x17
mov dword [esp + 0x188], eax
mov ebx, esi
mov ebp, edi
shrd ebx, ebp, 0x12
mov ecx, edi
shr ecx, 9
or ecx, edx
mov eax, esi
xor edx, edx
shl eax, 0xe
shr ebp, 0x12
or edx, ebx
or eax, ebp
xor dword [esp + 0x188], eax
xor ecx, edx
mov edx, esi
xor eax, eax
shl edx, 0x12
mov ebx, esi
mov ebp, edi
shrd ebx, ebp, 0xe
or eax, ebx
xor ecx, eax
mov eax, dword [esp + 0x188]
shr ebp, 0xe
or edx, ebp
xor eax, edx
mov ebp, dword [esp + 0x38]
and ebp, esi
mov edx, esi
mov esi, dword [esp + 0x3c]
and esi, edi
not edx
and edx, dword [esp + 0x30]
mov ebx, edi
xor edx, ebp
not ebx
and ebx, dword [esp + 0x34]
mov ebp, dword [esp + 0x24]
xor ebx, esi
add ecx, edx
adc eax, ebx
add ecx, dword [esp + 0xf4]
mov edx, dword [esp + 0x20]
adc eax, dword [esp + 0xf8]
add ecx, dword [esp + 0x28]
mov ebx, edx
adc eax, dword [esp + 0x2c]
add ecx, 0x45706fbe
adc eax, 0x12835b01
add dword [esp + 0x18], ecx
mov dword [esp + 0x14], eax
adc dword [esp + 0x1c], eax
shrd ebx, ebp, 0x1c
xor esi, esi
or esi, ebx
mov dword [esp + 0x154], esi
mov esi, dword [esp + 0x24]
mov eax, edx
mov ebx, esi
shld esi, edx, 0x1e
shl edx, 0x1e
shl eax, 4
shr ebx, 2
or ebx, edx
xor dword [esp + 0x154], ebx
mov edx, dword [esp + 0x24]
mov ebx, dword [esp + 0x20]
shr ebp, 0x1c
or eax, ebp
xor ebp, ebp
or ebp, esi
mov esi, edx
shld edx, ebx, 0x19
xor eax, ebp
shr esi, 7
shl ebx, 0x19
or esi, ebx
mov ebx, dword [esp + 0x154]
xor ebp, ebp
or ebp, edx
mov edx, dword [esp + 0x80]
and edx, dword [esp + 0x20]
xor ebx, esi
mov esi, dword [esp + 0x84]
and esi, dword [esp + 0x24]
xor edx, dword [esp + 0x78]
xor esi, dword [esp + 0x7c]
xor eax, ebp
add ebx, edx
adc eax, esi
add ebx, ecx
adc eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x60]
mov dword [esp + 0x2c], eax
movzx eax, byte [ecx + 0x4e]
mov dword [esp + 0x28], ebx
cdq
shld edx, eax, 8
shl eax, 8
mov esi, eax
movzx eax, byte [ecx + 0x4f]
mov ebx, edx
cdq
or esi, eax
movzx eax, byte [ecx + 0x50]
or ebx, edx
shld ebx, esi, 8
shl esi, 8
cdq
or esi, eax
movzx eax, byte [ecx + 0x51]
or ebx, edx
shld ebx, esi, 8
shl esi, 8
cdq
or esi, eax
movzx eax, byte [ecx + 0x52]
or ebx, edx
shld ebx, esi, 8
shl esi, 8
cdq
or esi, eax
movzx eax, byte [ecx + 0x53]
or ebx, edx
shld ebx, esi, 8
shl esi, 8
cdq
or esi, eax
movzx eax, byte [ecx + 0x54]
or ebx, edx
shld ebx, esi, 8
shl esi, 8
cdq
or esi, eax
movzx eax, byte [ecx + 0x55]
or ebx, edx
shld ebx, esi, 8
shl esi, 8
cdq
or esi, eax
or ebx, edx
mov edx, dword [esp + 0x18]
mov dword [esp + 0xfc], esi
mov esi, dword [esp + 0x1c]
mov dword [esp + 0x100], ebx
mov ebp, esi
mov ebx, edx
shld ebp, ebx, 0x17
mov eax, esi
shl ebx, 0x17
shr eax, 9
or eax, ebx
mov ebx, edx
shrd edx, esi, 0x12
xor ecx, ecx
or ecx, ebp
xor ebp, ebp
or ebp, edx
mov edx, dword [esp + 0x18]
shr esi, 0x12
shl ebx, 0xe
or ebx, esi
xor eax, ebp
mov ebp, dword [esp + 0x1c]
mov esi, edx
shrd edx, ebp, 0xe
xor ecx, ebx
xor ebx, ebx
shl esi, 0x12
or ebx, edx
mov edx, dword [esp + 0x18]
shr ebp, 0xe
or esi, ebp
xor eax, ebx
mov ebx, dword [esp + 0x1c]
xor ecx, esi
mov esi, edx
not esi
and esi, dword [esp + 0x38]
and edi, dword [esp + 0x1c]
mov ebp, dword [esp + 0x50]
and ebp, edx
xor esi, ebp
not ebx
and ebx, dword [esp + 0x3c]
xor ebx, edi
add eax, esi
adc ecx, ebx
add eax, dword [esp + 0xfc]
mov esi, dword [esp + 0x28]
adc ecx, dword [esp + 0x100]
add eax, dword [esp + 0x30]
mov edi, esi
adc ecx, dword [esp + 0x34]
add eax, 0x4ee4b28c
adc ecx, 0x243185be
add dword [esp + 0x48], eax
mov dword [esp + 0x10], eax
mov dword [esp + 0x14], ecx
adc dword [esp + 0x4c], ecx
mov ecx, dword [esp + 0x2c]
mov eax, esi
shl eax, 4
mov ebx, ecx
shrd edi, ebx, 0x1c
shr ebx, 0x1c
or eax, ebx
xor ebx, ebx
mov ebp, ecx
shld ebp, esi, 0x1e
or ebx, ebp
xor eax, ebx
mov ebx, dword [esp + 0x28]
xor edx, edx
or edx, edi
shl esi, 0x1e
mov edi, ecx
shr edi, 2
or edi, esi
xor edx, edi
mov ebp, ecx
shld ebp, ebx, 0x19
shl ebx, 0x19
mov esi, ecx
shr esi, 7
or esi, ebx
xor edx, esi
mov esi, dword [esp + 0x28]
xor edi, edi
or edi, ebp
xor eax, edi
mov edi, dword [esp + 0x40]
mov ebx, esi
xor ebx, edi
and ebx, dword [esp + 0x20]
mov ebp, ecx
xor ebp, dword [esp + 0x44]
and ecx, dword [esp + 0x44]
and ebp, dword [esp + 0x24]
and esi, edi
xor ebx, esi
xor ebp, ecx
mov ecx, dword [esp + 0x60]
add edx, ebx
adc eax, ebp
add edx, dword [esp + 0x10]
adc eax, dword [esp + 0x14]
mov dword [esp + 0x30], edx
mov dword [esp + 0x34], eax
movzx eax, byte [ecx + 0x56]
cdq
shld edx, eax, 8
shl eax, 8
mov esi, eax
movzx eax, byte [ecx + 0x57]
mov edi, edx
cdq
or esi, eax
or edi, edx
shld edi, esi, 8
movzx eax, byte [ecx + 0x58]
shl esi, 8
cdq
or esi, eax
movzx eax, byte [ecx + 0x59]
or edi, edx
shld edi, esi, 8
shl esi, 8
cdq
or esi, eax
movzx eax, byte [ecx + 0x5a]
or edi, edx
shld edi, esi, 8
shl esi, 8
cdq
or esi, eax
movzx eax, byte [ecx + 0x5b]
or edi, edx
shld edi, esi, 8
shl esi, 8
cdq
or esi, eax
movzx eax, byte [ecx + 0x5c]
or edi, edx
shld edi, esi, 8
shl esi, 8
cdq
or esi, eax
movzx eax, byte [ecx + 0x5d]
or edi, edx
shld edi, esi, 8
shl esi, 8
cdq
or esi, eax
or edi, edx
mov edx, dword [esp + 0x48]
mov dword [esp + 0x108], edi
mov dword [esp + 0x104], esi
mov esi, dword [esp + 0x4c]
mov ebx, esi
mov eax, esi
mov edi, edx
shld ebx, edi, 0x17
shl edi, 0x17
mov ebp, edx
shrd ebp, esi, 0x12
xor ecx, ecx
or ecx, ebx
xor ebx, ebx
or ebx, ebp
mov ebp, dword [esp + 0x4c]
shr eax, 9
or eax, edi
xor eax, ebx
shr esi, 0x12
mov edi, edx
shl edi, 0xe
or edi, esi
mov ebx, edx
shrd ebx, ebp, 0xe
xor ecx, edi
mov esi, edx
shr ebp, 0xe
xor edi, edi
or edi, ebx
shl esi, 0x12
or esi, ebp
mov ebp, dword [esp + 0x18]
xor eax, edi
xor ecx, esi
mov esi, dword [esp + 0x4c]
mov edi, edx
mov ebx, esi
and ebp, edx
mov edx, dword [esp + 0x1c]
not edi
and edi, dword [esp + 0x50]
not ebx
and ebx, dword [esp + 0x54]
and edx, esi
xor edi, ebp
xor ebx, edx
add eax, edi
adc ecx, ebx
add eax, dword [esp + 0x104]
mov esi, dword [esp + 0x30]
adc ecx, dword [esp + 0x108]
add eax, dword [esp + 0x38]
mov edi, esi
adc ecx, dword [esp + 0x3c]
add eax, 0xd5ffb4e2
adc ecx, 0x550c7dc3
add dword [esp + 0x40], eax
mov dword [esp + 0x10], eax
mov eax, esi
adc dword [esp + 0x44], ecx
shl eax, 4
mov dword [esp + 0x14], ecx
mov ecx, dword [esp + 0x34]
mov ebx, ecx
shrd edi, ebx, 0x1c
shr ebx, 0x1c
or eax, ebx
xor ebx, ebx
xor edx, edx
or edx, edi
mov ebp, ecx
shld ebp, esi, 0x1e
or ebx, ebp
xor eax, ebx
mov ebx, dword [esp + 0x30]
shl esi, 0x1e
mov edi, ecx
shr edi, 2
or edi, esi
xor edx, edi
xor edi, edi
mov ebp, ecx
shld ebp, ebx, 0x19
or edi, ebp
mov ebp, dword [esp + 0x2c]
xor eax, edi
mov edi, dword [esp + 0x28]
shl ebx, 0x19
mov esi, ecx
shr esi, 7
or esi, ebx
xor edx, esi
mov esi, dword [esp + 0x30]
mov ebx, edi
xor ebx, esi
and ebx, dword [esp + 0x20]
and edi, esi
mov esi, dword [esp + 0x2c]
xor ebp, ecx
and ebp, dword [esp + 0x24]
and esi, ecx
mov ecx, dword [esp + 0x60]
xor ebp, esi
xor ebx, edi
add edx, ebx
adc eax, ebp
add edx, dword [esp + 0x10]
adc eax, dword [esp + 0x14]
mov dword [esp + 0x38], edx
mov dword [esp + 0x3c], eax
movzx eax, byte [ecx + 0x5e]
cdq
shld edx, eax, 8
shl eax, 8
mov esi, eax
movzx eax, byte [ecx + 0x5f]
mov edi, edx
cdq
or esi, eax
movzx eax, byte [ecx + 0x60]
or edi, edx
shld edi, esi, 8
cdq
shl esi, 8
or esi, eax
movzx eax, byte [ecx + 0x61]
or edi, edx
shld edi, esi, 8
shl esi, 8
cdq
or esi, eax
movzx eax, byte [ecx + 0x62]
or edi, edx
shld edi, esi, 8
shl esi, 8
cdq
or esi, eax
movzx eax, byte [ecx + 0x63]
or edi, edx
shld edi, esi, 8
shl esi, 8
cdq
or esi, eax
movzx eax, byte [ecx + 0x64]
or edi, edx
shld edi, esi, 8
shl esi, 8
cdq
or edi, edx
or esi, eax
movzx eax, byte [ecx + 0x65]
shld edi, esi, 8
cdq
or edi, edx
mov edx, dword [esp + 0x40]
shl esi, 8
or esi, eax
mov dword [esp + 0x110], edi
mov dword [esp + 0x10c], esi
mov esi, dword [esp + 0x44]
mov ebx, esi
mov eax, esi
mov edi, edx
shld ebx, edi, 0x17
shl edi, 0x17
xor ecx, ecx
or ecx, ebx
xor ebx, ebx
mov ebp, edx
shrd ebp, esi, 0x12
or ebx, ebp
mov ebp, dword [esp + 0x44]
shr eax, 9
or eax, edi
xor eax, ebx
shr esi, 0x12
mov edi, edx
shl edi, 0xe
or edi, esi
xor ecx, edi
mov ebx, edx
shrd ebx, ebp, 0xe
xor edi, edi
or edi, ebx
mov esi, edx
shr ebp, 0xe
shl esi, 0x12
or esi, ebp
mov ebp, dword [esp + 0x48]
xor eax, edi
xor ecx, esi
mov esi, dword [esp + 0x44]
mov edi, edx
and ebp, edx
mov edx, dword [esp + 0x4c]
not edi
and edi, dword [esp + 0x18]
mov ebx, esi
not ebx
and ebx, dword [esp + 0x1c]
and edx, esi
xor edi, ebp
xor ebx, edx
add eax, edi
adc ecx, ebx
add eax, dword [esp + 0x10c]
adc ecx, dword [esp + 0x110]
add eax, dword [esp + 0x50]
mov edx, dword [esp + 0x3c]
adc ecx, dword [esp + 0x54]
mov esi, dword [esp + 0x38]
add eax, 0xf27b896f
adc ecx, 0x72be5d74
add dword [esp + 0x20], eax
mov edi, esi
mov dword [esp + 0x10], eax
adc dword [esp + 0x24], ecx
mov eax, esi
shl eax, 4
mov ebx, edx
shrd edi, ebx, 0x1c
shr ebx, 0x1c
or eax, ebx
xor ebx, ebx
mov ebp, edx
shld ebp, esi, 0x1e
or ebx, ebp
xor eax, ebx
mov ebx, dword [esp + 0x38]
shl esi, 0x1e
mov dword [esp + 0x14], ecx
xor ecx, ecx
or ecx, edi
mov edi, edx
shr edi, 2
or edi, esi
xor ecx, edi
xor edi, edi
mov ebp, edx
shld ebp, ebx, 0x19
or edi, ebp
mov ebp, dword [esp + 0x34]
xor eax, edi
mov edi, dword [esp + 0x30]
mov esi, edx
shr esi, 7
shl ebx, 0x19
or esi, ebx
xor ecx, esi
mov esi, dword [esp + 0x38]
mov ebx, edi
and edi, esi
xor ebx, esi
and ebx, dword [esp + 0x28]
mov esi, dword [esp + 0x34]
and esi, edx
xor ebp, edx
and ebp, dword [esp + 0x2c]
xor ebx, edi
xor ebp, esi
add ecx, ebx
adc eax, ebp
add ecx, dword [esp + 0x10]
adc eax, dword [esp + 0x14]
mov dword [esp + 0x50], ecx
mov ecx, dword [esp + 0x60]
mov dword [esp + 0x54], eax
movzx eax, byte [ecx + 0x66]
cdq
shld edx, eax, 8
shl eax, 8
mov esi, eax
movzx eax, byte [ecx + 0x67]
mov edi, edx
cdq
or esi, eax
movzx eax, byte [ecx + 0x68]
or edi, edx
shld edi, esi, 8
cdq
shl esi, 8
or esi, eax
movzx eax, byte [ecx + 0x69]
or edi, edx
shld edi, esi, 8
shl esi, 8
cdq
or esi, eax
movzx eax, byte [ecx + 0x6a]
or edi, edx
shld edi, esi, 8
shl esi, 8
cdq
or esi, eax
movzx eax, byte [ecx + 0x6b]
or edi, edx
shld edi, esi, 8
shl esi, 8
cdq
or esi, eax
movzx eax, byte [ecx + 0x6c]
or edi, edx
shld edi, esi, 8
shl esi, 8
cdq
or esi, eax
movzx eax, byte [ecx + 0x6d]
or edi, edx
shld edi, esi, 8
shl esi, 8
cdq
or esi, eax
or edi, edx
mov edx, dword [esp + 0x20]
mov dword [esp + 0x118], edi
mov dword [esp + 0x114], esi
mov esi, dword [esp + 0x24]
mov ebx, esi
xor ecx, ecx
mov eax, esi
mov edi, edx
shld ebx, edi, 0x17
or ecx, ebx
shl edi, 0x17
xor ebx, ebx
shr eax, 9
or eax, edi
mov ebp, edx
shrd ebp, esi, 0x12
or ebx, ebp
mov ebp, dword [esp + 0x24]
xor eax, ebx
shr esi, 0x12
mov edi, edx
shl edi, 0xe
or edi, esi
xor ecx, edi
xor edi, edi
mov ebx, edx
shrd ebx, ebp, 0xe
or edi, ebx
shr ebp, 0xe
mov esi, edx
shl esi, 0x12
or esi, ebp
xor ecx, esi
mov esi, dword [esp + 0x24]
xor eax, edi
mov edi, edx
and edx, dword [esp + 0x40]
mov ebx, esi
and esi, dword [esp + 0x44]
not edi
and edi, dword [esp + 0x48]
not ebx
and ebx, dword [esp + 0x4c]
xor edi, edx
xor ebx, esi
add eax, edi
adc ecx, ebx
add eax, dword [esp + 0x114]
adc ecx, dword [esp + 0x118]
add eax, dword [esp + 0x18]
adc ecx, dword [esp + 0x1c]
add eax, 0x3b1696b1
adc ecx, 0x80deb1fe
mov dword [esp + 0x10], eax
mov dword [esp + 0x14], ecx
add dword [esp + 0x28], eax
mov esi, dword [esp + 0x50]
mov edi, esi
adc dword [esp + 0x2c], ecx
mov ecx, dword [esp + 0x54]
mov eax, esi
shl eax, 4
xor edx, edx
mov ebx, ecx
shrd edi, ebx, 0x1c
or edx, edi
shr ebx, 0x1c
or eax, ebx
xor ebx, ebx
mov ebp, ecx
shld ebp, esi, 0x1e
shl esi, 0x1e
or ebx, ebp
xor eax, ebx
mov ebx, dword [esp + 0x50]
mov edi, ecx
shr edi, 2
or edi, esi
xor edx, edi
xor edi, edi
mov ebp, ecx
shld ebp, ebx, 0x19
or edi, ebp
mov ebp, dword [esp + 0x3c]
xor eax, edi
mov edi, dword [esp + 0x38]
shl ebx, 0x19
mov esi, ecx
shr esi, 7
or esi, ebx
xor edx, esi
mov esi, dword [esp + 0x50]
mov ebx, edi
and edi, esi
xor ebx, esi
and ebx, dword [esp + 0x30]
mov esi, dword [esp + 0x3c]
and esi, ecx
xor ebp, ecx
and ebp, dword [esp + 0x34]
mov ecx, dword [esp + 0x60]
xor ebp, esi
xor ebx, edi
add edx, ebx
adc eax, ebp
add edx, dword [esp + 0x10]
adc eax, dword [esp + 0x14]
mov dword [esp + 0x18], edx
mov dword [esp + 0x1c], eax
movzx eax, byte [ecx + 0x6e]
cdq
shld edx, eax, 8
shl eax, 8
mov esi, eax
movzx eax, byte [ecx + 0x6f]
mov edi, edx
cdq
or esi, eax
movzx eax, byte [ecx + 0x70]
or edi, edx
shld edi, esi, 8
shl esi, 8
cdq
or esi, eax
movzx eax, byte [ecx + 0x71]
or edi, edx
shld edi, esi, 8
cdq
shl esi, 8
or esi, eax
movzx eax, byte [ecx + 0x72]
or edi, edx
shld edi, esi, 8
cdq
shl esi, 8
or esi, eax
movzx eax, byte [ecx + 0x73]
or edi, edx
shld edi, esi, 8
shl esi, 8
cdq
or esi, eax
movzx eax, byte [ecx + 0x74]
or edi, edx
shld edi, esi, 8
shl esi, 8
cdq
or esi, eax
movzx eax, byte [ecx + 0x75]
or edi, edx
shld edi, esi, 8
shl esi, 8
cdq
or esi, eax
or edi, edx
mov edx, dword [esp + 0x28]
mov dword [esp + 0x120], edi
mov dword [esp + 0x11c], esi
mov esi, dword [esp + 0x2c]
xor ecx, ecx
mov ebx, esi
mov eax, esi
mov edi, edx
shld ebx, edi, 0x17
or ecx, ebx
shl edi, 0x17
xor ebx, ebx
shr eax, 9
or eax, edi
mov ebp, edx
shrd ebp, esi, 0x12
or ebx, ebp
mov ebp, dword [esp + 0x2c]
xor eax, ebx
shr esi, 0x12
mov edi, edx
shl edi, 0xe
or edi, esi
xor ecx, edi
mov ebx, edx
shrd ebx, ebp, 0xe
xor edi, edi
or edi, ebx
shr ebp, 0xe
mov esi, edx
shl esi, 0x12
or esi, ebp
mov ebp, dword [esp + 0x20]
xor ecx, esi
mov esi, dword [esp + 0x2c]
xor eax, edi
and ebp, edx
mov edi, edx
mov edx, dword [esp + 0x24]
and edx, esi
mov ebx, esi
mov esi, dword [esp + 0x18]
not edi
and edi, dword [esp + 0x40]
not ebx
and ebx, dword [esp + 0x44]
xor edi, ebp
xor ebx, edx
add eax, edi
adc ecx, ebx
add eax, dword [esp + 0x11c]
adc ecx, dword [esp + 0x120]
add eax, dword [esp + 0x48]
adc ecx, dword [esp + 0x4c]
add eax, 0x25c71235
adc ecx, 0x9bdc06a7
add dword [esp + 0x30], eax
mov dword [esp + 0x10], eax
mov dword [esp + 0x14], ecx
adc dword [esp + 0x34], ecx
mov eax, esi
xor edx, edx
mov ecx, dword [esp + 0x1c]
mov edi, esi
shl eax, 4
mov ebx, ecx
shrd edi, ebx, 0x1c
or edx, edi
shr ebx, 0x1c
or eax, ebx
xor ebx, ebx
mov ebp, ecx
shld ebp, esi, 0x1e
shl esi, 0x1e
or ebx, ebp
xor eax, ebx
mov ebx, dword [esp + 0x18]
mov edi, ecx
shr edi, 2
or edi, esi
xor edx, edi
xor edi, edi
mov ebp, ecx
shld ebp, ebx, 0x19
or edi, ebp
xor eax, edi
mov edi, dword [esp + 0x50]
mov ebp, dword [esp + 0x54]
shl ebx, 0x19
mov esi, ecx
shr esi, 7
or esi, ebx
xor edx, esi
mov esi, dword [esp + 0x18]
mov ebx, edi
and edi, esi
xor ebx, esi
and ebx, dword [esp + 0x38]
mov esi, dword [esp + 0x54]
and esi, ecx
xor ebx, edi
xor ebp, ecx
and ebp, dword [esp + 0x3c]
mov ecx, dword [esp + 0x60]
xor ebp, esi
add edx, ebx
adc eax, ebp
add edx, dword [esp + 0x10]
adc eax, dword [esp + 0x14]
mov dword [esp + 0x48], edx
mov dword [esp + 0x4c], eax
movzx eax, byte [ecx + 0x76]
cdq
shld edx, eax, 8
shl eax, 8
mov esi, eax
movzx eax, byte [ecx + 0x77]
mov edi, edx
cdq
or esi, eax
movzx eax, byte [ecx + 0x78]
or edi, edx
shld edi, esi, 8
shl esi, 8
cdq
or esi, eax
movzx eax, byte [ecx + 0x79]
or edi, edx
shld edi, esi, 8
cdq
shl esi, 8
or esi, eax
movzx eax, byte [ecx + 0x7a]
or edi, edx
shld edi, esi, 8
cdq
shl esi, 8
or esi, eax
movzx eax, byte [ecx + 0x7b]
or edi, edx
shld edi, esi, 8
shl esi, 8
cdq
or esi, eax
movzx eax, byte [ecx + 0x7c]
or edi, edx
shld edi, esi, 8
shl esi, 8
cdq
or esi, eax
movzx eax, byte [ecx + 0x7d]
or edi, edx
shld edi, esi, 8
shl esi, 8
cdq
or esi, eax
or edi, edx
mov edx, dword [esp + 0x30]
mov dword [esp + 0x128], edi
mov dword [esp + 0x124], esi
mov esi, dword [esp + 0x34]
xor ecx, ecx
mov ebx, esi
mov eax, esi
mov edi, edx
shld ebx, edi, 0x17
or ecx, ebx
shl edi, 0x17
xor ebx, ebx
shr eax, 9
or eax, edi
mov ebp, edx
shrd ebp, esi, 0x12
or ebx, ebp
mov ebp, dword [esp + 0x34]
xor eax, ebx
shr esi, 0x12
mov edi, edx
shl edi, 0xe
or edi, esi
xor ecx, edi
xor edi, edi
mov ebx, edx
shrd ebx, ebp, 0xe
or edi, ebx
shr ebp, 0xe
xor eax, edi
mov esi, edx
shl esi, 0x12
or esi, ebp
mov ebp, dword [esp + 0x28]
xor ecx, esi
mov esi, dword [esp + 0x34]
and ebp, edx
mov edi, edx
mov edx, dword [esp + 0x2c]
and edx, esi
not edi
and edi, dword [esp + 0x20]
mov ebx, esi
mov esi, dword [esp + 0x48]
not ebx
and ebx, dword [esp + 0x24]
xor edi, ebp
xor ebx, edx
add eax, edi
adc ecx, ebx
add eax, dword [esp + 0x124]
mov edi, esi
adc ecx, dword [esp + 0x128]
add eax, dword [esp + 0x40]
adc ecx, dword [esp + 0x44]
add eax, 0xcf692694
adc ecx, 0xc19bf174
add dword [esp + 0x38], eax
mov dword [esp + 0x10], eax
mov dword [esp + 0x14], ecx
adc dword [esp + 0x3c], ecx
mov ecx, dword [esp + 0x4c]
mov eax, esi
mov ebx, ecx
xor edx, edx
shl eax, 4
shrd edi, ebx, 0x1c
shr ebx, 0x1c
or eax, ebx
xor ebx, ebx
or edx, edi
mov ebp, ecx
shld ebp, esi, 0x1e
or ebx, ebp
xor eax, ebx
mov ebx, dword [esp + 0x48]
shl esi, 0x1e
mov edi, ecx
shr edi, 2
or edi, esi
xor edx, edi
mov ebp, ecx
shld ebp, ebx, 0x19
xor edi, edi
or edi, ebp
mov ebp, dword [esp + 0x1c]
shl ebx, 0x19
mov esi, ecx
shr esi, 7
or esi, ebx
xor eax, edi
mov edi, dword [esp + 0x18]
xor edx, esi
mov esi, dword [esp + 0x48]
xor ebp, ecx
and ebp, dword [esp + 0x54]
mov ebx, edi
xor ebx, esi
and ebx, dword [esp + 0x50]
and edi, esi
mov esi, dword [esp + 0x1c]
and esi, ecx
xor ebx, edi
xor ebp, esi
add edx, ebx
adc eax, ebp
add edx, dword [esp + 0x10]
mov ecx, 0x11
adc eax, dword [esp + 0x14]
mov dword [esp + 0x40], edx
mov dword [esp + 0x44], eax
mov dword [esp + 0x6c], ecx
mov dword [esp + 0x70], 0x56f670
mov eax, ecx
lea esi, [ecx - 3]
lea edi, [ecx - 7]
dec ecx
and eax, 0xf
and ecx, 0xf
lea edx, [esp + eax*8 + 0xac]
mov eax, dword [edx]
mov dword [esp + 0x8c], edx
mov edx, dword [edx + 4]
lea ecx, [esp + ecx*8 + 0xac]
mov dword [esp + 0x5c], edx
and esi, 0xf
mov edx, dword [esp + esi*8 + 0xac]
mov dword [esp + 0x98], ecx
lea esi, [esp + esi*8 + 0xac]
mov ecx, edx
mov dword [esp + 0xa0], esi
mov esi, dword [esi + 4]
mov ebp, esi
shrd ecx, ebp, 0x13
xor ebx, ebx
or ebx, ecx
mov dword [esp + 0x64], edx
mov dword [esp + 0x88], edi
mov edi, edx
mov dword [esp + 0x68], esi
mov ecx, esi
shld esi, edx, 3
add edx, edx
add edx, edx
shr ecx, 0x1d
add edx, edx
or ecx, edx
mov edx, dword [esp + 0x64]
xor ebx, ecx
mov ecx, dword [esp + 0x68]
shrd edx, ecx, 6
shr ebp, 0x13
shl edi, 0xd
or edi, ebp
xor ebp, ebp
or ebp, esi
xor ebx, edx
xor edi, ebp
shr ecx, 6
xor edi, ecx
mov ecx, dword [esp + 0x5c]
mov ebp, ecx
mov dword [esp + 0x74], ebx
mov ebx, eax
shrd ebx, ebp, 8
xor esi, esi
or esi, ebx
mov dword [esp + 0x58], eax
mov edx, eax
mov ebx, eax
shrd eax, ecx, 1
shl edx, 0x18
shr ebp, 8
or edx, ebp
shr ecx, 1
xor ebp, ebp
or ebp, eax
mov eax, dword [esp + 0x5c]
shl ebx, 0x1f
or ebx, ecx
mov ecx, dword [esp + 0x58]
shrd ecx, eax, 7
shr eax, 7
xor esi, ebp
xor edx, ebx
xor edx, eax
mov eax, dword [esp + 0x88]
xor esi, ecx
mov ecx, dword [esp + 0x74]
add ecx, esi
adc edi, edx
dec eax
and eax, 0xf
add ecx, dword [esp + eax*8 + 0xac]
adc edi, dword [esp + eax*8 + 0xb0]
mov eax, dword [esp + 0x98]
add dword [eax], ecx
mov edx, dword [esp + 0x38]
mov esi, dword [esp + 0x3c]
adc dword [eax + 4], edi
mov edi, edx
xor ecx, ecx
mov ebx, esi
shld ebx, edi, 0x17
or ecx, ebx
shl edi, 0x17
mov ebp, edx
mov eax, esi
shrd ebp, esi, 0x12
xor ebx, ebx
or ebx, ebp
mov ebp, dword [esp + 0x3c]
shr eax, 9
or eax, edi
xor eax, ebx
mov edi, edx
shl edi, 0xe
mov ebx, edx
shrd ebx, ebp, 0xe
shr esi, 0x12
or edi, esi
xor ecx, edi
mov esi, edx
xor edi, edi
or edi, ebx
shl esi, 0x12
shr ebp, 0xe
or esi, ebp
mov ebp, dword [esp + 0x30]
xor eax, edi
xor ecx, esi
mov esi, dword [esp + 0x3c]
and ebp, edx
mov edi, edx
mov edx, dword [esp + 0x34]
and edx, esi
mov ebx, esi
mov esi, dword [esp + 0x48]
not edi
and edi, dword [esp + 0x28]
not ebx
and ebx, dword [esp + 0x2c]
xor edi, ebp
xor ebx, edx
mov edx, dword [esp + 0x70]
add eax, edi
adc ecx, ebx
add eax, dword [edx - 8]
mov edi, dword [esp + 0x4c]
adc ecx, dword [edx - 4]
mov edx, dword [esp + 0x98]
add eax, dword [edx]
adc ecx, dword [edx + 4]
add eax, dword [esp + 0x20]
mov edx, edi
adc ecx, dword [esp + 0x24]
add dword [esp + 0x50], eax
mov dword [esp + 0x10], eax
mov dword [esp + 0x14], ecx
adc dword [esp + 0x54], ecx
mov ecx, dword [esp + 0x40]
mov eax, esi
xor eax, ecx
mov dword [esp + 0x80], eax
mov eax, dword [esp + 0x44]
xor edx, eax
mov dword [esp + 0x84], edx
mov edx, esi
and edx, ecx
mov dword [esp + 0x78], edx
mov edx, edi
and edx, eax
mov dword [esp + 0x7c], edx
mov edx, ecx
xor esi, esi
mov edi, ecx
shl edx, 4
mov ebx, eax
shrd edi, ebx, 0x1c
shr ebx, 0x1c
or edx, ebx
or esi, edi
xor ebx, ebx
mov ebp, eax
shld ebp, ecx, 0x1e
shl ecx, 0x1e
or ebx, ebp
xor edx, ebx
mov ebx, dword [esp + 0x40]
mov edi, eax
shr edi, 2
or edi, ecx
xor esi, edi
mov ecx, eax
shld eax, ebx, 0x19
shr ecx, 7
shl ebx, 0x19
or ecx, ebx
xor esi, ecx
mov ecx, dword [esp + 0x84]
and ecx, dword [esp + 0x1c]
xor edi, edi
xor ecx, dword [esp + 0x7c]
or edi, eax
mov eax, dword [esp + 0x80]
and eax, dword [esp + 0x18]
xor edx, edi
xor eax, dword [esp + 0x78]
add esi, eax
adc edx, ecx
add esi, dword [esp + 0x10]
adc edx, dword [esp + 0x14]
xor edi, edi
mov dword [esp + 0x24], edx
mov edx, dword [esp + 0x6c]
lea ecx, [edx + 1]
and ecx, 0xf
mov eax, dword [esp + ecx*8 + 0xac]
lea ecx, [esp + ecx*8 + 0xac]
add edx, 0xfffffffe
mov dword [esp + 0x94], ecx
mov ecx, dword [ecx + 4]
and edx, 0xf
mov dword [esp + 0x5c], ecx
mov ecx, dword [esp + edx*8 + 0xac]
lea edx, [esp + edx*8 + 0xac]
mov dword [esp + 0x9c], edx
mov edx, dword [edx + 4]
mov ebx, ecx
mov ebp, edx
shrd ebx, ebp, 0x13
mov dword [esp + 0x64], ecx
or edi, ebx
mov dword [esp + 0x20], esi
mov esi, ecx
mov dword [esp + 0x68], edx
mov ebx, edx
shld edx, ecx, 3
add ecx, ecx
shr ebp, 0x13
shl esi, 0xd
add ecx, ecx
or esi, ebp
add ecx, ecx
shr ebx, 0x1d
xor ebp, ebp
or ebx, ecx
mov ecx, dword [esp + 0x68]
or ebp, edx
mov edx, dword [esp + 0x64]
shrd edx, ecx, 6
xor edi, ebx
xor esi, ebp
shr ecx, 6
mov dword [esp + 0x58], eax
xor edi, edx
xor esi, ecx
mov ecx, dword [esp + 0x5c]
mov dword [esp + 0x74], edi
xor edi, edi
mov ebp, ecx
mov ebx, eax
shrd ebx, ebp, 8
or edi, ebx
shr ebp, 8
mov edx, eax
mov ebx, eax
shrd eax, ecx, 1
shl edx, 0x18
or edx, ebp
shl ebx, 0x1f
shr ecx, 1
or ebx, ecx
mov ecx, dword [esp + 0x58]
xor ebp, ebp
or ebp, eax
mov eax, dword [esp + 0x5c]
xor edi, ebp
shrd ecx, eax, 7
xor edi, ecx
mov ecx, dword [esp + 0x74]
xor edx, ebx
shr eax, 7
xor edx, eax
mov eax, dword [esp + 0x88]
add ecx, edi
adc esi, edx
and eax, 0xf
add ecx, dword [esp + eax*8 + 0xac]
adc esi, dword [esp + eax*8 + 0xb0]
mov eax, dword [esp + 0x8c]
add dword [eax], ecx
adc dword [eax + 4], esi
mov eax, dword [esp + 0x50]
mov esi, dword [esp + 0x54]
mov ebx, esi
mov ecx, esi
mov edi, eax
shld ebx, edi, 0x17
shl edi, 0x17
mov ebp, eax
shrd ebp, esi, 0x12
xor edx, edx
or edx, ebx
xor ebx, ebx
or ebx, ebp
mov ebp, dword [esp + 0x54]
shr ecx, 9
or ecx, edi
xor ecx, ebx
shr esi, 0x12
mov edi, eax
shl edi, 0xe
or edi, esi
mov ebx, eax
shrd ebx, ebp, 0xe
xor edx, edi
mov esi, eax
xor edi, edi
or edi, ebx
shr ebp, 0xe
shl esi, 0x12
or esi, ebp
mov ebp, dword [esp + 0x38]
xor ecx, edi
xor edx, esi
mov esi, dword [esp + 0x54]
mov edi, eax
not edi
and edi, dword [esp + 0x30]
and ebp, eax
mov eax, dword [esp + 0x3c]
mov ebx, esi
not ebx
and ebx, dword [esp + 0x34]
and eax, esi
xor edi, ebp
xor ebx, eax
mov eax, dword [esp + 0x70]
add ecx, edi
adc edx, ebx
add ecx, dword [eax]
adc edx, dword [eax + 4]
mov eax, dword [esp + 0x8c]
add ecx, dword [eax]
adc edx, dword [eax + 4]
add ecx, dword [esp + 0x28]
mov eax, dword [esp + 0x20]
adc edx, dword [esp + 0x2c]
add dword [esp + 0x18], ecx
mov dword [esp + 0x14], edx
mov ebx, eax
adc dword [esp + 0x1c], edx
mov edx, dword [esp + 0x24]
mov ebp, edx
shrd ebx, ebp, 0x1c
xor edi, edi
or edi, ebx
mov esi, eax
shr ebp, 0x1c
mov ebx, edx
shld edx, eax, 0x1e
shl esi, 4
or esi, ebp
xor ebp, ebp
or ebp, edx
shl eax, 0x1e
xor esi, ebp
mov ebp, dword [esp + 0x20]
shr ebx, 2
or ebx, eax
mov eax, dword [esp + 0x24]
mov edx, eax
shld eax, ebp, 0x19
xor edi, ebx
shr edx, 7
xor ebx, ebx
or ebx, eax
mov eax, dword [esp + 0x80]
and eax, dword [esp + 0x20]
shl ebp, 0x19
xor eax, dword [esp + 0x78]
or edx, ebp
xor edi, edx
mov edx, dword [esp + 0x84]
and edx, dword [esp + 0x24]
xor esi, ebx
xor edx, dword [esp + 0x7c]
add edi, eax
mov eax, dword [esp + 0x6c]
adc esi, edx
mov edx, dword [esp + 0x98]
add edi, ecx
adc esi, dword [esp + 0x14]
lea ecx, [eax + 2]
and ecx, 0xf
mov eax, dword [esp + ecx*8 + 0xac]
lea ecx, [esp + ecx*8 + 0xac]
mov dword [esp + 0x74], ecx
mov ecx, dword [ecx + 4]
mov dword [esp + 0x5c], ecx
mov ecx, dword [edx]
mov edx, dword [edx + 4]
mov ebx, ecx
mov ebp, edx
shrd ebx, ebp, 0x13
mov dword [esp + 0x2c], esi
mov dword [esp + 0x28], edi
mov esi, ecx
xor edi, edi
shl esi, 0xd
shr ebp, 0x13
or edi, ebx
mov dword [esp + 0x58], eax
mov dword [esp + 0x64], ecx
mov dword [esp + 0x68], edx
or esi, ebp
mov ebx, edx
shld edx, ecx, 3
add ecx, ecx
add ecx, ecx
shr ebx, 0x1d
add ecx, ecx
or ebx, ecx
mov ecx, dword [esp + 0x68]
xor edi, ebx
xor ebp, ebp
or ebp, edx
mov edx, dword [esp + 0x64]
shrd edx, ecx, 6
xor esi, ebp
xor edi, edx
shr ecx, 6
xor esi, ecx
mov ecx, dword [esp + 0x5c]
mov ebx, eax
mov ebp, ecx
shrd ebx, ebp, 8
mov dword [esp + 0x90], edi
xor edi, edi
or edi, ebx
mov edx, eax
mov ebx, eax
shrd eax, ecx, 1
shr ebp, 8
shl edx, 0x18
or edx, ebp
shl ebx, 0x1f
shr ecx, 1
or ebx, ecx
mov ecx, dword [esp + 0x58]
xor ebp, ebp
or ebp, eax
mov eax, dword [esp + 0x5c]
shrd ecx, eax, 7
xor edi, ebp
xor edi, ecx
mov ecx, dword [esp + 0x90]
shr eax, 7
xor edx, ebx
xor edx, eax
mov eax, dword [esp + 0x88]
add ecx, edi
adc esi, edx
mov edx, dword [esp + 0x18]
inc eax
and eax, 0xf
add ecx, dword [esp + eax*8 + 0xac]
mov edi, edx
adc esi, dword [esp + eax*8 + 0xb0]
mov eax, dword [esp + 0x94]
add dword [eax], ecx
mov ebp, edx
adc dword [eax + 4], esi
mov esi, dword [esp + 0x1c]
mov ebx, esi
shld ebx, edi, 0x17
mov eax, esi
shrd ebp, esi, 0x12
xor ecx, ecx
or ecx, ebx
shl edi, 0x17
xor ebx, ebx
shr eax, 9
or eax, edi
or ebx, ebp
mov ebp, dword [esp + 0x1c]
xor eax, ebx
shr esi, 0x12
mov edi, edx
shl edi, 0xe
or edi, esi
mov ebx, edx
shrd ebx, ebp, 0xe
xor ecx, edi
mov esi, edx
xor edi, edi
shl esi, 0x12
shr ebp, 0xe
or edi, ebx
or esi, ebp
mov ebp, dword [esp + 0x50]
xor ecx, esi
mov esi, dword [esp + 0x1c]
and ebp, edx
xor eax, edi
mov edi, edx
mov edx, dword [esp + 0x54]
and edx, esi
mov ebx, esi
not ebx
and ebx, dword [esp + 0x3c]
not edi
and edi, dword [esp + 0x38]
xor ebx, edx
mov edx, dword [esp + 0x70]
xor edi, ebp
add eax, edi
adc ecx, ebx
add eax, dword [edx + 8]
adc ecx, dword [edx + 0xc]
add eax, dword [esp + 0x30]
mov edx, dword [esp + 0x94]
adc ecx, dword [esp + 0x34]
add eax, dword [edx]
adc ecx, dword [edx + 4]
add dword [esp + 0x48], eax
mov dword [esp + 0x14], ecx
mov dword [esp + 0x10], eax
adc dword [esp + 0x4c], ecx
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0x28]
mov edx, ecx
mov esi, ecx
mov ebx, eax
shrd edx, ebx, 0x1c
shr ebx, 0x1c
shl esi, 4
or esi, ebx
xor ebx, ebx
mov ebp, eax
shld ebp, ecx, 0x1e
or ebx, ebp
xor esi, ebx
mov ebx, dword [esp + 0x28]
xor edi, edi
or edi, edx
shl ecx, 0x1e
mov edx, eax
shr edx, 2
or edx, ecx
mov ebp, eax
shld ebp, ebx, 0x19
shl ebx, 0x19
xor edi, edx
mov ecx, eax
shr ecx, 7
or ecx, ebx
xor edx, edx
or edx, ebp
xor edi, ecx
mov ecx, dword [esp + 0x28]
xor esi, edx
mov edx, dword [esp + 0x40]
mov ebx, ecx
xor ebx, edx
and ebx, dword [esp + 0x20]
mov ebp, eax
xor ebp, dword [esp + 0x44]
and eax, dword [esp + 0x44]
and ebp, dword [esp + 0x24]
and ecx, edx
xor ebx, ecx
xor ebp, eax
add edi, ebx
adc esi, ebp
add edi, dword [esp + 0x10]
adc esi, dword [esp + 0x14]
mov dword [esp + 0x30], edi
mov dword [esp + 0x34], esi
mov eax, dword [esp + 0x6c]
mov edx, dword [esp + 0x8c]
lea ecx, [eax + 3]
and ecx, 0xf
mov eax, dword [esp + ecx*8 + 0xac]
lea ecx, [esp + ecx*8 + 0xac]
mov dword [esp + 0x88], ecx
mov ecx, dword [ecx + 4]
mov dword [esp + 0x5c], ecx
mov ecx, dword [edx]
mov edx, dword [edx + 4]
mov ebx, ecx
mov ebp, edx
shrd ebx, ebp, 0x13
mov dword [esp + 0x64], ecx
mov esi, ecx
xor edi, edi
or edi, ebx
mov dword [esp + 0x68], edx
mov ebx, edx
shld edx, ecx, 3
add ecx, ecx
shr ebp, 0x13
add ecx, ecx
shl esi, 0xd
or esi, ebp
add ecx, ecx
shr ebx, 0x1d
or ebx, ecx
mov ecx, dword [esp + 0x68]
xor ebp, ebp
or ebp, edx
mov edx, dword [esp + 0x64]
shrd edx, ecx, 6
xor esi, ebp
shr ecx, 6
xor esi, ecx
mov ecx, dword [esp + 0x5c]
xor edi, ebx
xor edi, edx
mov ebx, eax
mov ebp, ecx
shrd ebx, ebp, 8
mov dword [esp + 0x58], eax
mov edx, eax
mov dword [esp + 0x90], edi
xor edi, edi
or edi, ebx
mov ebx, eax
shrd eax, ecx, 1
shl edx, 0x18
shr ebp, 8
or edx, ebp
shr ecx, 1
xor ebp, ebp
or ebp, eax
mov eax, dword [esp + 0x5c]
shl ebx, 0x1f
or ebx, ecx
mov ecx, dword [esp + 0x58]
shrd ecx, eax, 7
shr eax, 7
xor edi, ebp
xor edx, ebx
xor edx, eax
mov eax, dword [esp + 0x6c]
xor edi, ecx
mov ecx, dword [esp + 0x90]
add ecx, edi
adc esi, edx
add eax, 0xfffffffb
and eax, 0xf
add ecx, dword [esp + eax*8 + 0xac]
adc esi, dword [esp + eax*8 + 0xb0]
mov eax, dword [esp + 0x74]
add dword [eax], ecx
adc dword [eax + 4], esi
mov esi, dword [esp + 0x4c]
mov eax, esi
shr eax, 9
xor ecx, ecx
mov edx, dword [esp + 0x48]
mov edi, edx
mov ebx, esi
shld ebx, edi, 0x17
or ecx, ebx
shl edi, 0x17
or eax, edi
xor ebx, ebx
mov ebp, edx
shrd ebp, esi, 0x12
or ebx, ebp
mov ebp, dword [esp + 0x4c]
xor eax, ebx
shr esi, 0x12
mov edi, edx
shl edi, 0xe
or edi, esi
xor ecx, edi
mov ebx, edx
shrd ebx, ebp, 0xe
mov esi, edx
xor edi, edi
or edi, ebx
shl esi, 0x12
shr ebp, 0xe
or esi, ebp
mov ebp, dword [esp + 0x18]
xor ecx, esi
mov esi, dword [esp + 0x4c]
and ebp, edx
xor eax, edi
mov edi, edx
mov edx, dword [esp + 0x1c]
and edx, esi
mov ebx, esi
not ebx
and ebx, dword [esp + 0x54]
not edi
and edi, dword [esp + 0x50]
xor ebx, edx
mov edx, dword [esp + 0x70]
xor edi, ebp
add eax, edi
adc ecx, ebx
add eax, dword [edx + 0x10]
adc ecx, dword [edx + 0x14]
add eax, dword [esp + 0x38]
mov edx, dword [esp + 0x74]
adc ecx, dword [esp + 0x3c]
add eax, dword [edx]
adc ecx, dword [edx + 4]
add dword [esp + 0x40], eax
mov dword [esp + 0x14], ecx
mov dword [esp + 0x10], eax
adc dword [esp + 0x44], ecx
mov eax, dword [esp + 0x34]
mov ecx, dword [esp + 0x30]
mov edx, ecx
mov esi, ecx
mov ebx, eax
shrd edx, ebx, 0x1c
xor edi, edi
or edi, edx
mov ebp, eax
shld ebp, ecx, 0x1e
shr ebx, 0x1c
shl esi, 4
or esi, ebx
shl ecx, 0x1e
mov edx, eax
shr edx, 2
xor ebx, ebx
or edx, ecx
or ebx, ebp
mov ecx, eax
xor esi, ebx
mov ebx, dword [esp + 0x30]
xor edi, edx
shr ecx, 7
xor edx, edx
mov ebp, eax
shld ebp, ebx, 0x19
or edx, ebp
mov ebp, dword [esp + 0x2c]
xor esi, edx
mov edx, dword [esp + 0x28]
shl ebx, 0x19
or ecx, ebx
xor edi, ecx
mov ecx, dword [esp + 0x30]
xor ebp, eax
and ebp, dword [esp + 0x24]
mov ebx, edx
xor ebx, ecx
and ebx, dword [esp + 0x20]
and edx, ecx
mov ecx, dword [esp + 0x2c]
xor ebx, edx
mov edx, dword [esp + 0x6c]
and ecx, eax
xor ebp, ecx
add edi, ebx
adc esi, ebp
add edi, dword [esp + 0x10]
lea ecx, [edx + 4]
adc esi, dword [esp + 0x14]
mov edx, dword [esp + 0x94]
and ecx, 0xf
mov eax, dword [esp + ecx*8 + 0xac]
lea ecx, [esp + ecx*8 + 0xac]
mov dword [esp + 0x8c], ecx
mov ecx, dword [ecx + 4]
mov dword [esp + 0x5c], ecx
mov ecx, dword [edx]
mov edx, dword [edx + 4]
mov ebx, ecx
mov ebp, edx
shrd ebx, ebp, 0x13
mov dword [esp + 0x38], edi
mov dword [esp + 0x64], ecx
xor edi, edi
or edi, ebx
mov dword [esp + 0x68], edx
mov ebx, edx
mov dword [esp + 0x3c], esi
mov esi, ecx
shld edx, ecx, 3
shr ebp, 0x13
add ecx, ecx
add ecx, ecx
shl esi, 0xd
or esi, ebp
shr ebx, 0x1d
xor ebp, ebp
or ebp, edx
mov edx, dword [esp + 0x64]
add ecx, ecx
or ebx, ecx
mov ecx, dword [esp + 0x68]
shrd edx, ecx, 6
xor esi, ebp
xor edi, ebx
shr ecx, 6
xor esi, ecx
mov ecx, dword [esp + 0x5c]
xor edi, edx
mov ebp, ecx
mov ebx, eax
shrd ebx, ebp, 8
mov dword [esp + 0x90], edi
xor edi, edi
or edi, ebx
mov edx, eax
mov ebx, eax
mov dword [esp + 0x58], eax
shr ebp, 8
shl edx, 0x18
shrd eax, ecx, 1
or edx, ebp
xor ebp, ebp
shl ebx, 0x1f
shr ecx, 1
or ebx, ecx
mov ecx, dword [esp + 0x58]
or ebp, eax
mov eax, dword [esp + 0x5c]
shrd ecx, eax, 7
xor edi, ebp
xor edi, ecx
mov ecx, dword [esp + 0x90]
xor edx, ebx
shr eax, 7
xor edx, eax
mov eax, dword [esp + 0x6c]
add ecx, edi
adc esi, edx
mov edx, dword [esp + 0x40]
add eax, 0xfffffffc
and eax, 0xf
add ecx, dword [esp + eax*8 + 0xac]
mov edi, edx
adc esi, dword [esp + eax*8 + 0xb0]
mov eax, dword [esp + 0x88]
add dword [eax], ecx
mov ebp, edx
adc dword [eax + 4], esi
mov esi, dword [esp + 0x44]
xor ecx, ecx
mov ebx, esi
shld ebx, edi, 0x17
or ecx, ebx
shl edi, 0x17
xor ebx, ebx
mov eax, esi
shrd ebp, esi, 0x12
or ebx, ebp
mov ebp, dword [esp + 0x44]
shr eax, 9
or eax, edi
xor eax, ebx
shr esi, 0x12
mov edi, edx
shl edi, 0xe
or edi, esi
xor ecx, edi
mov ebx, edx
shrd ebx, ebp, 0xe
xor edi, edi
or edi, ebx
shr ebp, 0xe
mov esi, edx
shl esi, 0x12
or esi, ebp
mov ebp, dword [esp + 0x48]
xor ecx, esi
mov esi, dword [esp + 0x44]
xor eax, edi
and ebp, edx
mov edi, edx
mov edx, dword [esp + 0x4c]
and edx, esi
not edi
and edi, dword [esp + 0x18]
mov ebx, esi
not ebx
and ebx, dword [esp + 0x1c]
xor edi, ebp
xor ebx, edx
mov edx, dword [esp + 0x70]
add eax, edi
adc ecx, ebx
add eax, dword [edx + 0x18]
adc ecx, dword [edx + 0x1c]
mov edx, dword [esp + 0x88]
add eax, dword [edx]
adc ecx, dword [edx + 4]
add eax, dword [esp + 0x50]
adc ecx, dword [esp + 0x54]
add dword [esp + 0x20], eax
mov dword [esp + 0x14], ecx
mov dword [esp + 0x10], eax
adc dword [esp + 0x24], ecx
mov ecx, dword [esp + 0x38]
mov eax, dword [esp + 0x3c]
mov edx, ecx
mov esi, ecx
shl esi, 4
mov ebx, eax
shrd edx, ebx, 0x1c
shr ebx, 0x1c
or esi, ebx
xor ebx, ebx
xor edi, edi
or edi, edx
mov ebp, eax
shld ebp, ecx, 0x1e
or ebx, ebp
xor esi, ebx
mov ebx, dword [esp + 0x38]
shl ecx, 0x1e
mov edx, eax
shr edx, 2
or edx, ecx
xor edi, edx
xor edx, edx
mov ebp, eax
shld ebp, ebx, 0x19
or edx, ebp
mov ebp, dword [esp + 0x34]
shl ebx, 0x19
xor esi, edx
mov edx, dword [esp + 0x30]
mov ecx, eax
shr ecx, 7
or ecx, ebx
xor edi, ecx
mov ecx, dword [esp + 0x38]
xor ebp, eax
and ebp, dword [esp + 0x2c]
mov ebx, edx
xor ebx, ecx
and ebx, dword [esp + 0x28]
and edx, ecx
mov ecx, dword [esp + 0x34]
and ecx, eax
xor ebp, ecx
xor ebx, edx
mov edx, dword [esp + 0x6c]
add edi, ebx
adc esi, ebp
add edi, dword [esp + 0x10]
lea ecx, [edx + 5]
adc esi, dword [esp + 0x14]
mov edx, dword [esp + 0x74]
and ecx, 0xf
mov eax, dword [esp + ecx*8 + 0xac]
lea ecx, [esp + ecx*8 + 0xac]
mov dword [esp + 0x94], ecx
mov ecx, dword [ecx + 4]
mov dword [esp + 0x5c], ecx
mov ecx, dword [edx]
mov edx, dword [edx + 4]
mov ebx, ecx
mov ebp, edx
shrd ebx, ebp, 0x13
mov dword [esp + 0x50], edi
xor edi, edi
mov dword [esp + 0x54], esi
mov esi, ecx
mov dword [esp + 0x64], ecx
or edi, ebx
mov ebx, edx
mov dword [esp + 0x68], edx
shld edx, ecx, 3
add ecx, ecx
shr ebp, 0x13
shl esi, 0xd
add ecx, ecx
or esi, ebp
shr ebx, 0x1d
add ecx, ecx
xor ebp, ebp
mov dword [esp + 0x58], eax
or ebx, ecx
mov ecx, dword [esp + 0x68]
or ebp, edx
mov edx, dword [esp + 0x64]
xor edi, ebx
xor esi, ebp
shrd edx, ecx, 6
xor edi, edx
shr ecx, 6
xor esi, ecx
mov ecx, dword [esp + 0x5c]
mov ebp, ecx
mov dword [esp + 0x90], edi
xor edi, edi
mov ebx, eax
shrd ebx, ebp, 8
or edi, ebx
mov edx, eax
mov ebx, eax
shrd eax, ecx, 1
shr ebp, 8
shl ebx, 0x1f
shl edx, 0x18
or edx, ebp
shr ecx, 1
or ebx, ecx
mov ecx, dword [esp + 0x58]
xor ebp, ebp
or ebp, eax
mov eax, dword [esp + 0x5c]
xor edi, ebp
shrd ecx, eax, 7
xor edi, ecx
mov ecx, dword [esp + 0x90]
xor edx, ebx
shr eax, 7
xor edx, eax
mov eax, dword [esp + 0xa0]
add ecx, edi
adc esi, edx
add ecx, dword [eax]
mov edx, dword [esp + 0x20]
adc esi, dword [eax + 4]
mov eax, dword [esp + 0x8c]
add dword [eax], ecx
mov edi, edx
mov ebp, edx
adc dword [eax + 4], esi
mov esi, dword [esp + 0x24]
mov ebx, esi
shld ebx, edi, 0x17
mov eax, esi
shrd ebp, esi, 0x12
shl edi, 0x17
xor ecx, ecx
or ecx, ebx
xor ebx, ebx
or ebx, ebp
mov ebp, dword [esp + 0x24]
shr eax, 9
or eax, edi
xor eax, ebx
shr esi, 0x12
mov edi, edx
shl edi, 0xe
or edi, esi
mov ebx, edx
shrd ebx, ebp, 0xe
xor ecx, edi
xor edi, edi
or edi, ebx
mov esi, edx
shl esi, 0x12
shr ebp, 0xe
or esi, ebp
xor eax, edi
xor ecx, esi
mov esi, dword [esp + 0x24]
mov edi, edx
mov ebx, esi
not edi
not ebx
and edx, dword [esp + 0x40]
and ebx, dword [esp + 0x4c]
and esi, dword [esp + 0x44]
and edi, dword [esp + 0x48]
xor ebx, esi
xor edi, edx
mov edx, dword [esp + 0x70]
add eax, edi
adc ecx, ebx
add eax, dword [edx + 0x20]
adc ecx, dword [edx + 0x24]
mov edx, dword [esp + 0x8c]
add eax, dword [edx]
adc ecx, dword [edx + 4]
add eax, dword [esp + 0x18]
adc ecx, dword [esp + 0x1c]
add dword [esp + 0x28], eax
mov dword [esp + 0x14], ecx
mov dword [esp + 0x10], eax
adc dword [esp + 0x2c], ecx
mov eax, dword [esp + 0x54]
mov ecx, dword [esp + 0x50]
mov edx, ecx
mov esi, ecx
mov ebx, eax
shrd edx, ebx, 0x1c
shr ebx, 0x1c
shl esi, 4
or esi, ebx
xor ebx, ebx
mov ebp, eax
shld ebp, ecx, 0x1e
or ebx, ebp
xor esi, ebx
mov ebx, dword [esp + 0x50]
shl ecx, 0x1e
xor edi, edi
or edi, edx
mov edx, eax
shr edx, 2
or edx, ecx
xor edi, edx
xor edx, edx
mov ebp, eax
shld ebp, ebx, 0x19
or edx, ebp
mov ebp, dword [esp + 0x3c]
shl ebx, 0x19
xor esi, edx
mov edx, dword [esp + 0x38]
mov ecx, eax
shr ecx, 7
or ecx, ebx
xor edi, ecx
mov ecx, dword [esp + 0x50]
mov ebx, edx
xor ebx, ecx
and ebx, dword [esp + 0x30]
and edx, ecx
mov ecx, dword [esp + 0x3c]
xor ebp, eax
and ebp, dword [esp + 0x34]
and ecx, eax
xor ebp, ecx
xor ebx, edx
mov edx, dword [esp + 0x6c]
add edi, ebx
adc esi, ebp
add edi, dword [esp + 0x10]
lea ecx, [edx + 6]
adc esi, dword [esp + 0x14]
mov edx, dword [esp + 0x88]
and ecx, 0xf
mov eax, dword [esp + ecx*8 + 0xac]
lea ecx, [esp + ecx*8 + 0xac]
mov dword [esp + 0x74], ecx
mov ecx, dword [ecx + 4]
mov dword [esp + 0x18], edi
mov dword [esp + 0x1c], esi
mov dword [esp + 0x58], eax
mov dword [esp + 0x5c], ecx
mov ecx, dword [edx]
mov edx, dword [edx + 4]
mov ebx, ecx
xor edi, edi
mov ebp, edx
shrd ebx, ebp, 0x13
or edi, ebx
mov dword [esp + 0x64], ecx
mov esi, ecx
mov dword [esp + 0x68], edx
mov ebx, edx
shld edx, ecx, 3
add ecx, ecx
add ecx, ecx
shr ebp, 0x13
add ecx, ecx
shl esi, 0xd
or esi, ebp
shr ebx, 0x1d
or ebx, ecx
mov ecx, dword [esp + 0x68]
xor ebp, ebp
or ebp, edx
mov edx, dword [esp + 0x64]
shrd edx, ecx, 6
xor edi, ebx
xor esi, ebp
shr ecx, 6
xor edi, edx
xor esi, ecx
mov ecx, dword [esp + 0x5c]
mov ebp, ecx
mov ebx, eax
shrd ebx, ebp, 8
mov dword [esp + 0xa0], edi
xor edi, edi
or edi, ebx
mov edx, eax
mov ebx, eax
shrd eax, ecx, 1
shl edx, 0x18
shr ebp, 8
or edx, ebp
shr ecx, 1
shl ebx, 0x1f
or ebx, ecx
mov ecx, dword [esp + 0x58]
xor ebp, ebp
or ebp, eax
mov eax, dword [esp + 0x5c]
shrd ecx, eax, 7
xor edi, ebp
xor edi, ecx
mov ecx, dword [esp + 0xa0]
shr eax, 7
xor edx, ebx
xor edx, eax
mov eax, dword [esp + 0x9c]
add ecx, edi
adc esi, edx
add ecx, dword [eax]
mov edx, dword [esp + 0x28]
adc esi, dword [eax + 4]
mov eax, dword [esp + 0x94]
add dword [eax], ecx
mov edi, edx
mov ebp, edx
adc dword [eax + 4], esi
mov esi, dword [esp + 0x2c]
mov ebx, esi
shld ebx, edi, 0x17
mov eax, esi
shl edi, 0x17
shr eax, 9
or eax, edi
xor ecx, ecx
or ecx, ebx
mov edi, edx
xor ebx, ebx
shl edi, 0xe
shrd ebp, esi, 0x12
or ebx, ebp
mov ebp, dword [esp + 0x2c]
xor eax, ebx
shr esi, 0x12
or edi, esi
xor ecx, edi
mov ebx, edx
shrd ebx, ebp, 0xe
mov esi, edx
xor edi, edi
or edi, ebx
shr ebp, 0xe
shl esi, 0x12
or esi, ebp
mov ebp, dword [esp + 0x20]
xor ecx, esi
mov esi, dword [esp + 0x2c]
and ebp, edx
xor eax, edi
mov edi, edx
mov edx, dword [esp + 0x24]
and edx, esi
mov ebx, esi
not ebx
and ebx, dword [esp + 0x44]
not edi
and edi, dword [esp + 0x40]
xor ebx, edx
mov edx, dword [esp + 0x70]
xor edi, ebp
add eax, edi
adc ecx, ebx
add eax, dword [edx + 0x28]
adc ecx, dword [edx + 0x2c]
add eax, dword [esp + 0x48]
mov edx, dword [esp + 0x94]
adc ecx, dword [esp + 0x4c]
add eax, dword [edx]
adc ecx, dword [edx + 4]
add dword [esp + 0x30], eax
mov dword [esp + 0x14], ecx
mov dword [esp + 0x10], eax
adc dword [esp + 0x34], ecx
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x18]
mov edx, ecx
mov esi, ecx
mov ebx, eax
shrd edx, ebx, 0x1c
shr ebx, 0x1c
shl esi, 4
or esi, ebx
xor ebx, ebx
mov ebp, eax
shld ebp, ecx, 0x1e
or ebx, ebp
xor edi, edi
or edi, edx
xor esi, ebx
mov ebx, dword [esp + 0x18]
shl ecx, 0x1e
mov edx, eax
shr edx, 2
or edx, ecx
xor edi, edx
mov ebp, eax
shld ebp, ebx, 0x19
xor edx, edx
shl ebx, 0x19
or edx, ebp
mov ebp, dword [esp + 0x54]
mov ecx, eax
shr ecx, 7
or ecx, ebx
xor esi, edx
mov edx, dword [esp + 0x50]
xor edi, ecx
mov ecx, dword [esp + 0x18]
mov ebx, edx
xor ebx, ecx
xor ebp, eax
and ebx, dword [esp + 0x38]
and ebp, dword [esp + 0x3c]
and edx, ecx
mov ecx, dword [esp + 0x54]
and ecx, eax
xor ebp, ecx
mov ecx, dword [esp + 0x6c]
xor ebx, edx
add edi, ebx
adc esi, ebp
add edi, dword [esp + 0x10]
adc esi, dword [esp + 0x14]
add ecx, 7
and ecx, 0xf
mov edx, dword [esp + ecx*8 + 0xb0]
mov eax, dword [esp + ecx*8 + 0xac]
mov dword [esp + 0x5c], edx
mov edx, dword [esp + 0x8c]
mov ecx, dword [edx]
mov edx, dword [edx + 4]
mov ebx, ecx
mov ebp, edx
shrd ebx, ebp, 0x13
mov dword [esp + 0x64], ecx
mov dword [esp + 0x48], edi
xor edi, edi
or edi, ebx
mov dword [esp + 0x68], edx
mov ebx, edx
mov dword [esp + 0x4c], esi
mov esi, ecx
shld edx, ecx, 3
add ecx, ecx
shr ebp, 0x13
add ecx, ecx
add ecx, ecx
shl esi, 0xd
or esi, ebp
shr ebx, 0x1d
or ebx, ecx
mov ecx, dword [esp + 0x68]
xor ebp, ebp
or ebp, edx
mov edx, dword [esp + 0x64]
shrd edx, ecx, 6
shr ecx, 6
xor edi, ebx
xor esi, ebp
xor esi, ecx
mov ecx, dword [esp + 0x5c]
xor edi, edx
mov ebp, ecx
mov ebx, eax
shrd ebx, ebp, 8
mov dword [esp + 0x9c], edi
xor edi, edi
or edi, ebx
mov dword [esp + 0x58], eax
mov edx, eax
mov ebx, eax
shrd eax, ecx, 1
shl edx, 0x18
shr ebp, 8
or edx, ebp
shr ecx, 1
xor ebp, ebp
or ebp, eax
mov eax, dword [esp + 0x5c]
shl ebx, 0x1f
or ebx, ecx
mov ecx, dword [esp + 0x58]
shrd ecx, eax, 7
xor edi, ebp
shr eax, 7
xor edx, ebx
xor edi, ecx
mov ecx, dword [esp + 0x9c]
xor edx, eax
mov eax, dword [esp + 0x98]
add ecx, edi
adc esi, edx
add ecx, dword [eax]
mov edx, dword [esp + 0x30]
adc esi, dword [eax + 4]
mov eax, dword [esp + 0x74]
add dword [eax], ecx
mov edi, edx
mov ebp, edx
adc dword [eax + 4], esi
mov esi, dword [esp + 0x34]
xor ecx, ecx
mov ebx, esi
shld ebx, edi, 0x17
or ecx, ebx
shl edi, 0x17
xor ebx, ebx
mov eax, esi
shrd ebp, esi, 0x12
or ebx, ebp
mov ebp, dword [esp + 0x34]
shr eax, 9
or eax, edi
xor eax, ebx
shr esi, 0x12
mov edi, edx
shl edi, 0xe
or edi, esi
xor ecx, edi
mov ebx, edx
shrd ebx, ebp, 0xe
xor edi, edi
or edi, ebx
mov esi, edx
shl esi, 0x12
shr ebp, 0xe
or esi, ebp
mov ebp, dword [esp + 0x28]
xor ecx, esi
mov esi, dword [esp + 0x34]
xor eax, edi
and ebp, edx
mov edi, edx
mov edx, dword [esp + 0x2c]
and edx, esi
mov ebx, esi
not ebx
and ebx, dword [esp + 0x24]
not edi
and edi, dword [esp + 0x20]
xor ebx, edx
mov edx, dword [esp + 0x70]
xor edi, ebp
add eax, edi
adc ecx, ebx
add eax, dword [edx + 0x30]
adc ecx, dword [edx + 0x34]
add eax, dword [esp + 0x40]
mov edx, dword [esp + 0x74]
adc ecx, dword [esp + 0x44]
add eax, dword [edx]
adc ecx, dword [edx + 4]
add dword [esp + 0x38], eax
mov dword [esp + 0x14], ecx
mov dword [esp + 0x10], eax
adc dword [esp + 0x3c], ecx
mov ecx, dword [esp + 0x48]
mov eax, dword [esp + 0x4c]
mov edx, ecx
mov ebx, eax
shrd edx, ebx, 0x1c
mov esi, ecx
xor edi, edi
mov ebp, eax
shr ebx, 0x1c
or edi, edx
shl esi, 4
shld ebp, ecx, 0x1e
or esi, ebx
mov edx, eax
shr edx, 2
xor ebx, ebx
shl ecx, 0x1e
or ebx, ebp
or edx, ecx
xor esi, ebx
mov ebx, dword [esp + 0x48]
xor edi, edx
xor edx, edx
mov ebp, eax
shld ebp, ebx, 0x19
or edx, ebp
mov ebp, dword [esp + 0x1c]
shl ebx, 0x19
xor esi, edx
mov edx, dword [esp + 0x18]
mov ecx, eax
shr ecx, 7
or ecx, ebx
xor edi, ecx
mov ecx, dword [esp + 0x48]
mov ebx, edx
xor ebx, ecx
and ebx, dword [esp + 0x50]
and edx, ecx
mov ecx, dword [esp + 0x1c]
xor ebp, eax
and ebp, dword [esp + 0x54]
and ecx, eax
xor ebp, ecx
mov ecx, dword [esp + 0x6c]
xor ebx, edx
add edi, ebx
adc esi, ebp
add edi, dword [esp + 0x10]
adc esi, dword [esp + 0x14]
add dword [esp + 0x70], 0x40
add ecx, 8
mov edx, edi
lea edi, [ecx - 1]
cmp edi, 0x50
mov dword [esp + 0x40], edx
mov dword [esp + 0x44], esi
mov dword [esp + 0x6c], ecx
jl 0x4caea1
mov ecx, dword [esp + 0x198]
mov edi, dword [esp + 0x174]
add edi, edx
mov edx, dword [esp + 0x178]
adc edx, esi
mov esi, dword [esp + 0x138]
mov dword [ecx + 4], edx
mov edx, dword [esp + 0x134]
add edx, dword [esp + 0x48]
mov dword [ecx], edi
adc esi, eax
mov eax, dword [esp + 0x13c]
add eax, dword [esp + 0x18]
mov dword [ecx + 8], edx
mov edx, dword [esp + 0x140]
adc edx, dword [esp + 0x1c]
mov dword [ecx + 0x10], eax
mov eax, dword [esp + 0x14c]
add eax, dword [esp + 0x50]
mov dword [ecx + 0x14], edx
mov edx, dword [esp + 0x150]
adc edx, dword [esp + 0x54]
mov dword [ecx + 0x18], eax
mov eax, dword [esp + 0x15c]
add eax, dword [esp + 0x38]
mov dword [ecx + 0x1c], edx
mov edx, dword [esp + 0x160]
adc edx, dword [esp + 0x3c]
mov dword [ecx + 0x20], eax
mov eax, dword [esp + 0x16c]
add eax, dword [esp + 0x30]
mov dword [ecx + 0x24], edx
mov edx, dword [esp + 0x170]
adc edx, dword [esp + 0x34]
mov dword [ecx + 0x28], eax
mov eax, dword [esp + 0x17c]
add eax, dword [esp + 0x28]
mov dword [ecx + 0x2c], edx
mov edx, dword [esp + 0x180]
adc edx, dword [esp + 0x2c]
mov dword [ecx + 0x30], eax
mov eax, dword [esp + 0xa4]
add eax, dword [esp + 0x20]
mov dword [ecx + 0x34], edx
mov edx, dword [esp + 0xa8]
adc edx, dword [esp + 0x24]
mov dword [ecx + 0xc], esi
mov esi, dword [esp + 0x60]
sub esi, 0xffffff80
cmp dword [esp + 0x19c], 0
mov dword [ecx + 0x38], eax
mov dword [ecx + 0x3c], edx
mov dword [esp + 0x60], esi
jne 0x4c9100
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x184
ret