Function at 0x14f40ef
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x3ec
mov eax, dword [0x42b238]
mov esi, dword [esp + 0x408]
mov edi, dword [esp + 0x404]
mov ebp, dword [esp + 0x400]
mov dword [esp + 0x3e8], eax
xor eax, eax
mov edx, esi
xor ecx, ecx
add edx, dword [ebp + eax*4 + 0xc4]
setb cl
mov dword [ebp + eax*4 + 0xc4], edx
inc eax
cmp eax, 4
mov edx, ecx
jne 0x14f411e
mov eax, dword [ebp + 0xc0]
lea ecx, [eax + esi]
test eax, eax
je 0x14f4168
cmp ecx, 0x80
jge 0x14f4168
lea eax, [ebp + eax + 0x40]
push esi
push edi
push eax
call fcn.01521fac
add esp, 0xc
add esi, dword [ebp + 0xc0]
jmp 0x14f4fed
cmp ecx, 0x80
jl 0x14f4fdf
mov edx, 0x80
mov dword [esp + 0xe0], esi
lea ecx, [ebp + eax + 0x40]
sub edx, eax
push edx
push edi
push ecx
call fcn.01521fac
add esp, 0xc
mov eax, dword [ebp + 0xc0]
mov ecx, 0x80
sub ecx, eax
neg eax
lea edi, [edi + eax + 0x80]
xor eax, eax
mov dword [esp + 0xd8], ecx
mov dword [esp + 0xdc], edi
movdqu xmm3, xmmword [ebp + eax*8 + 0x40]
movdqu xmm7, xmmword [ebp + eax*8 + 0x50]
movdqa xmm1, xmmword [0x4164c0]
movdqa xmm6, xmmword [0x4164d0]
pxor xmm5, xmm5
movdqa xmm0, xmm7
movdqa xmm2, xmm3
movdqa xmm4, xmm3
movdqa xmm3, xmm6
pand xmm0, xmm1
pand xmm2, xmm1
movdqa xmm1, xmm7
movdqu xmmword [esp + 0x30], xmm4
packuswb xmm2, xmm0
movdqa xmm0, xmm7
punpckhbw xmm1, xmm5
punpcklbw xmm0, xmm5
movdqu xmmword [esp + 0xb0], xmm1
packuswb xmm2, xmm2
movdqu xmmword [esp + 0x60], xmm0
punpcklwd xmm0, xmm1
movdqa xmm1, xmm4
packuswb xmm2, xmm2
movdqu xmmword [esp + 0xc0], xmm0
packuswb xmm0, xmm0
punpckhbw xmm1, xmm5
pandn xmm3, xmm0
movdqa xmm0, xmm4
pxor xmm4, xmm4
movdqu xmmword [esp + 0xa0], xmm1
punpcklbw xmm0, xmm5
movdqa xmm5, xmm0
movdqu xmmword [esp + 0x50], xmm0
punpcklwd xmm5, xmm1
pxor xmm1, xmm1
pshufd xmm0, xmm5, 0xe5
packuswb xmm0, xmm0
pand xmm0, xmm6
por xmm0, xmm3
movdqa xmm3, xmm6
punpcklbw xmm0, xmm4
movdqa xmm4, xmmword [0x413bd0]
punpcklwd xmm1, xmm0
movdqu xmmword [esp + 0x90], xmm1
pxor xmm1, xmm1
punpcklbw xmm2, xmm1
pand xmm7, xmm4
punpcklwd xmm2, xmm1
pshufd xmm0, xmm7, 0xe8
pslld xmm2, 0x18
movdqu xmmword [esp + 0x80], xmm7
movdqa xmm7, xmm6
pshuflw xmm0, xmm0, 0xd4
packuswb xmm0, xmm0
pandn xmm3, xmm0
movdqu xmm0, xmmword [esp + 0x30]
pand xmm0, xmm4
movdqa xmm4, xmm6
movdqu xmmword [esp + 0x30], xmm0
pshufd xmm0, xmm0, 0xe8
pshuflw xmm0, xmm0, 0xed
packuswb xmm0, xmm0
pand xmm0, xmm6
por xmm0, xmm3
punpcklbw xmm0, xmm1
punpcklwd xmm0, xmm1
movdqu xmm1, xmmword [esp + 0xc0]
pslld xmm0, 8
por xmm0, xmm2
pshufd xmm2, xmm5, 0xe7
movdqu xmm5, xmmword [esp + 0xa0]
packuswb xmm2, xmm0
pshufd xmm1, xmm1, 0x4e
pand xmm2, xmm6
packuswb xmm1, xmm0
pandn xmm7, xmm1
pxor xmm1, xmm1
por xmm2, xmm7
punpcklbw xmm2, xmm1
punpcklwd xmm2, xmm1
por xmm2, xmm0
movdqu xmm0, xmmword [esp + 0x90]
por xmm2, xmm0
movdqu xmm0, xmmword [esp + 0x80]
pshufd xmm1, xmm0, 0xe7
pshuflw xmm0, xmm1, 0x24
pshuflw xmm1, xmm1, 0x74
packuswb xmm0, xmm0
pandn xmm4, xmm0
movdqu xmm0, xmmword [esp + 0x30]
pshufd xmm7, xmm0, 0xe7
pshuflw xmm3, xmm7, 0xe2
pshuflw xmm7, xmm7, 0xe7
packuswb xmm3, xmm0
movdqu xmm0, xmmword [esp + 0xb0]
pand xmm3, xmm6
por xmm3, xmm4
movdqu xmm4, xmmword [esp + 0x60]
punpckhwd xmm4, xmm0
movdqa xmm0, xmm4
movdqu xmmword [esp + 0x60], xmm4
movdqa xmm4, xmm6
packuswb xmm0, xmm0
pandn xmm4, xmm0
movdqu xmm0, xmmword [esp + 0x50]
punpckhwd xmm0, xmm5
pshufd xmm5, xmm0, 0xe5
movdqu xmmword [esp + 0x50], xmm0
packuswb xmm5, xmm0
pxor xmm0, xmm0
pand xmm5, xmm6
por xmm5, xmm4
movdqa xmm4, xmm6
punpcklbw xmm5, xmmword [0x4164e0]
punpcklwd xmm0, xmm5
pxor xmm5, xmm5
packuswb xmm7, xmm0
packuswb xmm1, xmm0
punpcklbw xmm3, xmm5
pandn xmm4, xmm1
pand xmm7, xmm6
punpcklwd xmm3, xmm5
por xmm7, xmm4
movdqu xmm4, xmmword [esp + 0x60]
pslld xmm3, 0x18
punpcklbw xmm7, xmm5
punpcklwd xmm7, xmm5
pxor xmm5, xmm5
pslld xmm7, 8
pshufd xmm4, xmm4, 0x4e
por xmm7, xmm3
movdqa xmm3, xmm6
packuswb xmm4, xmm0
pandn xmm3, xmm4
movdqu xmm4, xmmword [esp + 0x50]
pshufd xmm4, xmm4, 0xe7
packuswb xmm4, xmm0
pand xmm4, xmm6
por xmm4, xmm3
punpcklbw xmm4, xmm5
punpcklwd xmm4, xmm5
por xmm4, xmm7
por xmm4, xmm0
movdqa xmm0, xmm2
punpckhdq xmm2, xmm4
punpckldq xmm0, xmm4
movdqu xmmword [esp + eax*8 + 0xf8], xmm2
movdqu xmmword [esp + eax*8 + 0xe8], xmm0
add eax, 4
cmp eax, 0x10
jne 0x14f41b7
mov ecx, 0x20
lea edi, [esp + 0x168]
lea esi, [esp + 0xe8]
xor ebx, ebx
rep movsd dword es:[edi], dword [esi]
mov eax, dword [esp + 0x168]
mov dword [esp + 0x50], eax
mov eax, dword [esp + 0x16c]
mov esi, dword [esp + ebx*8 + 0x1d8]
mov edi, dword [esp + ebx*8 + 0x1dc]
mov dword [esp + 0x30], eax
mov edx, esi
mov ecx, edi
mov ebp, esi
mov eax, edi
shld edx, edi, 0xd
shld ebp, edi, 3
shld ecx, esi, 3
shrd edi, esi, 6
shld eax, esi, 0xd
shr esi, 6
xor edi, ecx
mov ecx, dword [esp + ebx*8 + 0x170]
xor esi, eax
xor edi, edx
mov edx, dword [esp + ebx*8 + 0x174]
xor esi, ebp
add esi, dword [esp + 0x50]
mov eax, ecx
mov ebp, ecx
mov dword [esp + 0x50], ecx
shld eax, edx, 0x18
shld ebp, edx, 0x19
mov dword [esp + 0x60], edx
xor ebp, eax
mov eax, ecx
add esi, dword [esp + ebx*8 + 0x1b0]
shld eax, edx, 0x1f
xor ebp, eax
mov eax, edx
mov edx, ecx
shld eax, ecx, 0x1f
shr edx, 7
xor edx, eax
mov eax, dword [esp + 0x60]
shld eax, ecx, 0x18
xor edx, eax
add ebp, edi
mov eax, dword [esp + 0x60]
adc esi, edx
xor edx, edx
add ebp, dword [esp + ebx*8 + 0x1b4]
setb dl
add ebp, dword [esp + 0x30]
adc edx, esi
mov dword [esp + ebx*8 + 0x1ec], ebp
mov dword [esp + ebx*8 + 0x1e8], edx
inc ebx
cmp ebx, 0x40
jne 0x14f44b8
mov eax, dword [esp + 0x400]
mov ecx, dword [eax]
mov dword [esp + 8], ecx
mov ecx, dword [eax + 4]
mov dword [esp + 0xa0], ecx
mov ecx, dword [eax + 8]
mov dword [esp + 0x90], ecx
mov ecx, dword [eax + 0xc]
mov dword [esp + 0xb0], ecx
mov ecx, dword [eax + 0x10]
mov dword [esp + 0xc], ecx
mov ecx, dword [eax + 0x14]
mov dword [esp + 0x18], ecx
mov ecx, dword [eax + 0x18]
mov dword [esp + 0x30], ecx
mov ecx, dword [eax + 0x1c]
mov dword [esp + 0xc0], ecx
mov ecx, dword [eax + 0x28]
mov edx, dword [eax + 0x20]
mov esi, dword [eax + 0x24]
mov dword [esp + 0x80], ecx
mov ecx, dword [eax + 0x2c]
mov dword [esp + 0x1c], ecx
mov ecx, dword [eax + 0x30]
mov dword [esp + 0x20], ecx
mov ecx, dword [eax + 0x34]
mov dword [esp + 0x24], ecx
mov edi, dword [eax + 0x38]
mov eax, dword [eax + 0x3c]
mov dword [esp + 0x60], 0xfffffff8
mov dword [esp + 0x28], eax
mov ebp, esi
mov eax, edx
mov esi, edx
mov ebx, edx
mov ecx, ebp
shld eax, ebp, 0xe
shld esi, ebp, 0x17
mov dword [esp + 0x50], ebp
mov dword [esp + 0x14], ebx
shld ecx, edx, 0x17
xor ecx, eax
mov eax, edx
shld eax, ebp, 0x12
xor ecx, eax
mov eax, ebp
shld eax, edx, 0xe
xor esi, eax
mov eax, ebp
shld eax, edx, 0x12
mov edx, dword [esp + 0x1c]
xor esi, eax
mov eax, ebp
not eax
add esi, edi
mov edi, dword [esp + 8]
and eax, dword [esp + 0x24]
and edx, ebp
mov ebp, dword [esp + 0x80]
xor edx, eax
mov eax, ebx
not eax
and ebp, ebx
mov ebx, dword [esp + 0xa0]
and eax, dword [esp + 0x20]
xor ebp, eax
mov eax, dword [esp + 0x60]
add ebp, esi
add edx, ecx
mov esi, ebx
mov ecx, dword [esp + 0x90]
adc ebp, dword [eax*8 + 0x4165f0]
add edx, dword [eax*8 + 0x4165f4]
adc ebp, dword [esp + eax*8 + 0x1a8]
add edx, dword [esp + eax*8 + 0x1ac]
mov eax, 0
setb al
add edx, dword [esp + 0x28]
adc eax, ebp
shld esi, edi, 0x19
mov ebp, edi
and ecx, edi
mov dword [esp + 0x10], eax
mov eax, ebx
shld ebp, ebx, 0x19
mov dword [esp + 0x2c], ecx
mov ecx, edi
shld eax, edi, 0x1e
xor esi, eax
mov eax, edi
shld eax, ebx, 4
xor esi, eax
mov eax, edi
shld eax, ebx, 0x1e
xor ebp, eax
mov eax, ebx
shld eax, edi, 4
mov edi, dword [esp + 0x90]
xor ebp, eax
mov eax, dword [esp + 0xb0]
xor edi, ecx
and eax, ebx
and edi, dword [esp + 0xc]
mov dword [esp + 0x4c], eax
mov eax, ebx
mov ebx, dword [esp + 0xb0]
mov dword [esp + 0xa0], eax
xor edi, dword [esp + 0x2c]
xor ebx, eax
mov eax, dword [esp + 0x10]
and ebx, dword [esp + 0x18]
xor ebx, dword [esp + 0x4c]
add ebx, esi
mov esi, dword [esp + 0xc0]
adc edi, ebp
mov ebp, dword [esp + 0x30]
add esi, edx
adc ebp, eax
add ebx, edx
mov edx, esi
adc edi, eax
mov eax, ebp
shld esi, ebp, 0x17
mov ecx, ebp
mov dword [esp + 0xc0], edx
mov dword [esp + 0x30], ebp
shld eax, edx, 0xe
shld ecx, edx, 0x17
xor esi, eax
mov eax, ebp
shld eax, edx, 0x12
xor esi, eax
mov eax, edx
shld eax, ebp, 0xe
xor ecx, eax
mov eax, edx
shld eax, ebp, 0x12
xor ecx, eax
mov eax, edx
and edx, dword [esp + 0x50]
not eax
and eax, dword [esp + 0x1c]
xor edx, eax
mov eax, ebp
mov ebp, dword [esp + 0x30]
not eax
and eax, dword [esp + 0x80]
and ebp, dword [esp + 0x14]
xor ebp, eax
xor eax, eax
add edx, esi
mov esi, dword [esp + 0x60]
setb al
mov dword [esp + 0x7c], eax
mov eax, dword [esp + 0x20]
add eax, dword [esi*8 + 0x4165f8]
add eax, dword [esp + esi*8 + 0x1b0]
add eax, ebp
mov ebp, edi
add eax, ecx
add edx, dword [esi*8 + 0x4165fc]
adc eax, dword [esp + 0x7c]
xor ecx, ecx
add edx, dword [esp + esi*8 + 0x1b4]
mov esi, ebx
setb cl
add edx, dword [esp + 0x24]
adc ecx, eax
mov eax, ebx
shld esi, edi, 0x19
shld eax, edi, 0x1e
xor esi, eax
mov eax, edi
shld eax, ebx, 4
xor esi, eax
mov eax, edi
mov edi, ebx
mov ebx, ebp
shld eax, edi, 0x1e
shld ebp, edi, 0x19
mov dword [esp + 0x10], ebx
mov dword [esp + 0x28], edi
xor ebp, eax
mov eax, edi
shld eax, ebx, 4
mov ebx, edi
and ebx, dword [esp + 0xa0]
xor ebp, eax
mov eax, edi
and eax, dword [esp + 0xb0]
xor ebx, dword [esp + 0x4c]
xor ebx, eax
mov eax, dword [esp + 0x10]
mov edi, eax
and eax, dword [esp + 0x90]
and edi, dword [esp + 8]
xor edi, dword [esp + 0x2c]
xor edi, eax
add ebx, esi
mov esi, dword [esp + 0x18]
adc edi, ebp
mov ebp, dword [esp + 0xc]
add esi, edx
adc ebp, ecx
add ebx, edx
mov edx, esi
mov eax, ebp
adc edi, ecx
shld esi, ebp, 0x17
mov ecx, ebp
mov dword [esp + 0x18], edx
mov dword [esp + 0xc], ebp
mov dword [esp + 0x24], ebx
shld eax, edx, 0xe
shld ecx, edx, 0x17
mov dword [esp + 0x20], edi
xor esi, eax
mov eax, ebp
shld eax, edx, 0x12
xor esi, eax
mov eax, edx
shld eax, ebp, 0xe
xor ecx, eax
mov eax, edx
shld eax, ebp, 0x12
xor ecx, eax
mov eax, edx
and edx, dword [esp + 0xc0]
not eax
and eax, dword [esp + 0x50]
xor edx, eax
mov eax, ebp
mov ebp, dword [esp + 0xc]
not eax
and eax, dword [esp + 0x14]
and ebp, dword [esp + 0x30]
xor ebp, eax
xor eax, eax
add edx, esi
mov esi, dword [esp + 0x60]
setb al
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x80]
add eax, dword [esi*8 + 0x416600]
add eax, dword [esp + esi*8 + 0x1b8]
add eax, ebp
add eax, ecx
add edx, dword [esi*8 + 0x416604]
mov ecx, ebx
adc eax, dword [esp + 0x2c]
mov ebp, eax
xor eax, eax
add edx, dword [esp + esi*8 + 0x1bc]
mov esi, ebx
setb al
add edx, dword [esp + 0x1c]
adc eax, ebp
shld esi, edi, 0x19
mov ebp, edi
mov dword [esp + 0x80], eax
mov eax, ebx
shld ebp, ebx, 0x19
shld eax, edi, 0x1e
xor esi, eax
mov eax, edi
shld eax, ebx, 4
xor esi, eax
mov eax, edi
shld eax, ebx, 0x1e
xor ebp, eax
mov eax, ebx
shld eax, edi, 4
xor ebp, eax
mov eax, dword [esp + 0x28]
xor ebx, eax
and ecx, eax
mov eax, edi
and ebx, dword [esp + 0xa0]
xor ebx, ecx
mov ecx, dword [esp + 0x10]
xor edi, ecx
and eax, ecx
mov ecx, dword [esp + 0xb0]
and edi, dword [esp + 8]
xor edi, eax
add ebx, esi
mov esi, dword [esp + 0x80]
adc edi, ebp
add ecx, edx
mov eax, edi
mov edi, dword [esp + 0x90]
adc edi, esi
add ebx, edx
mov edx, ecx
adc eax, esi
mov esi, edx
mov ecx, edi
mov dword [esp + 0xb0], edx
mov ebp, edi
mov dword [esp + 0x90], edi
mov dword [esp + 0x1c], ebx
mov dword [esp + 0x80], eax
mov eax, edi
shld esi, edi, 0x17
shld ecx, edx, 0x17
and ebp, dword [esp + 0xc]
shld eax, edx, 0xe
xor esi, eax
mov eax, edi
shld eax, edx, 0x12
xor esi, eax
mov eax, edx
shld eax, edi, 0xe
xor ecx, eax
mov eax, edx
shld eax, edi, 0x12
xor ecx, eax
mov eax, edx
and edx, dword [esp + 0x18]
not eax
and eax, dword [esp + 0xc0]
xor edx, eax
mov eax, edi
mov edi, dword [esp + 0x14]
not eax
and eax, dword [esp + 0x30]
xor ebp, eax
xor eax, eax
add edx, esi
mov esi, dword [esp + 0x60]
setb al
add edi, dword [esi*8 + 0x416608]
add edi, dword [esp + esi*8 + 0x1c0]
add edi, ebp
add edi, ecx
add edx, dword [esi*8 + 0x41660c]
adc edi, eax
xor eax, eax
add edx, dword [esp + esi*8 + 0x1c4]
mov esi, ebx
setb al
add edx, dword [esp + 0x50]
adc eax, edi
mov edi, dword [esp + 0x80]
mov dword [esp + 0x14], eax
mov eax, ebx
shld eax, edi, 0x1e
shld esi, edi, 0x19
mov ebp, edi
mov ecx, edi
xor esi, eax
mov eax, edi
shld ebp, ebx, 0x19
shld eax, ebx, 4
xor esi, eax
mov eax, edi
shld eax, ebx, 0x1e
xor ebp, eax
mov eax, ebx
shld eax, edi, 4
mov edi, dword [esp + 0x24]
xor ebp, eax
mov eax, ebx
xor ebx, edi
and eax, edi
mov edi, dword [esp + 0xa0]
and ebx, dword [esp + 0x28]
xor ebx, eax
mov eax, ecx
mov dword [esp + 0x50], ebx
mov ebx, dword [esp + 0x20]
xor eax, ebx
and ecx, ebx
and eax, dword [esp + 0x10]
xor eax, ecx
mov ecx, dword [esp + 0x50]
add ecx, esi
mov esi, dword [esp + 0x14]
adc eax, ebp
add edi, edx
mov ebx, eax
mov eax, dword [esp + 8]
mov dword [esp + 0xa0], edi
adc eax, esi
add ecx, edx
adc ebx, esi
mov edx, eax
mov esi, edi
shld eax, edi, 0xe
mov dword [esp + 0x50], ecx
shld esi, edx, 0x17
mov ecx, edx
mov ebp, edx
xor esi, eax
mov eax, edx
shld ecx, edi, 0x17
mov dword [esp + 8], ebp
shld eax, edi, 0x12
xor esi, eax
mov eax, edi
shld eax, edx, 0xe
xor ecx, eax
mov eax, edi
shld eax, edx, 0x12
mov edx, edi
xor ecx, eax
mov eax, edi
and edx, dword [esp + 0xb0]
mov edi, dword [esp + 0x30]
not eax
and eax, dword [esp + 0x18]
xor edx, eax
mov eax, ebp
and ebp, dword [esp + 0x90]
not eax
and eax, dword [esp + 0xc]
xor ebp, eax
xor eax, eax
add edx, esi
mov esi, dword [esp + 0x60]
setb al
add edi, dword [esi*8 + 0x416610]
add edi, dword [esp + esi*8 + 0x1c8]
add edi, ebp
add edi, ecx
add edx, dword [esi*8 + 0x416614]
mov ecx, ebx
mov ebx, dword [esp + 0x1c]
mov ebp, ecx
mov dword [esp + 0x14], ecx
adc edi, eax
xor eax, eax
add edx, dword [esp + esi*8 + 0x1cc]
setb al
add edx, dword [esp + 0xc0]
adc eax, edi
mov edi, dword [esp + 0x50]
mov dword [esp + 0x30], eax
mov eax, edi
mov esi, edi
shld ebp, edi, 0x19
shld eax, ecx, 0x1e
shld esi, ecx, 0x19
xor esi, eax
mov eax, ecx
shld eax, edi, 4
xor esi, eax
mov eax, ecx
shld eax, edi, 0x1e
xor ebp, eax
mov eax, edi
shld eax, ecx, 4
xor ebp, eax
mov eax, edi
xor edi, ebx
and edi, dword [esp + 0x24]
and eax, ebx
xor edi, eax
mov eax, ecx
mov ebx, edi
mov edi, dword [esp + 0x80]
xor ecx, edi
and eax, edi
mov edi, dword [esp + 0x28]
and ecx, dword [esp + 0x20]
xor ecx, eax
add ebx, esi
mov eax, dword [esp + 0x10]
mov esi, dword [esp + 0x30]
adc ecx, ebp
add edi, edx
mov dword [esp + 0x28], edi
adc eax, esi
add ebx, edx
adc ecx, esi
mov edx, eax
mov esi, edi
shld eax, edi, 0xe
mov dword [esp + 0xc0], ebx
shld esi, edx, 0x17
mov dword [esp + 0x30], ecx
mov ecx, edx
mov ebx, edx
xor esi, eax
mov eax, edx
shld ecx, edi, 0x17
mov ebp, ebx
mov dword [esp + 0x10], ebx
shld eax, edi, 0x12
and ebp, dword [esp + 8]
xor esi, eax
mov eax, edi
shld eax, edx, 0xe
xor ecx, eax
mov eax, edi
shld eax, edx, 0x12
mov edx, edi
xor ecx, eax
mov eax, edi
and edx, dword [esp + 0xa0]
mov edi, dword [esp + 0x60]
not eax
and eax, dword [esp + 0xb0]
xor edx, eax
mov eax, ebx
mov ebx, dword [esp + 0xc0]
not eax
and eax, dword [esp + 0x90]
xor ebp, eax
xor eax, eax
add edx, esi
mov esi, dword [esp + 0xc]
setb al
add esi, dword [edi*8 + 0x416618]
add esi, dword [esp + edi*8 + 0x1d0]
add esi, ebp
add esi, ecx
add edx, dword [edi*8 + 0x41661c]
mov ecx, dword [esp + 0x50]
adc esi, eax
xor eax, eax
add edx, dword [esp + edi*8 + 0x1d4]
mov edi, dword [esp + 0x30]
setb al
add edx, dword [esp + 0x18]
mov ebp, edi
adc eax, esi
mov esi, ebx
shld ebp, ebx, 0x19
mov dword [esp + 0xc], eax
mov eax, ebx
shld esi, edi, 0x19
shld eax, edi, 0x1e
xor esi, eax
mov eax, edi
shld eax, ebx, 4
xor esi, eax
mov eax, edi
shld eax, ebx, 0x1e
xor ebp, eax
mov eax, ebx
shld eax, edi, 4
xor ebp, eax
mov eax, ebx
xor ebx, ecx
and ebx, dword [esp + 0x1c]
and eax, ecx
xor ebx, eax
mov eax, dword [esp + 0x14]
mov ecx, ebx
mov ebx, edi
xor edi, eax
and ebx, eax
mov eax, dword [esp + 0x20]
and edi, dword [esp + 0x80]
xor edi, ebx
add ecx, esi
mov esi, dword [esp + 0xc]
adc edi, ebp
mov ebp, dword [esp + 0x24]
add ebp, edx
adc eax, esi
add ecx, edx
mov ebx, ebp
adc edi, esi
mov dword [esp + 0x18], ecx
mov ecx, eax
mov esi, ebp
shld eax, ebp, 0xe
mov dword [esp + 0x24], ebx
and ebx, dword [esp + 0x28]
shld esi, ecx, 0x17
mov edx, ecx
mov dword [esp + 0x20], ecx
mov dword [esp + 0xc], edi
xor esi, eax
mov eax, ecx
shld edx, ebp, 0x17
shld eax, ebp, 0x12
xor esi, eax
mov eax, ebp
shld eax, ecx, 0xe
xor edx, eax
mov eax, ebp
shld eax, ecx, 0x12
xor edx, eax
mov eax, ebp
mov ebp, ecx
not eax
and ebp, dword [esp + 0x10]
and eax, dword [esp + 0xa0]
xor ebx, eax
mov eax, ecx
mov ecx, dword [esp + 0x60]
not eax
and eax, dword [esp + 8]
xor ebp, eax
xor eax, eax
add ebx, esi
mov esi, dword [esp + ecx*8 + 0x1d8]
setb al
add esi, dword [ecx*8 + 0x416620]
add esi, dword [esp + 0x90]
add esi, ebp
mov ebp, edi
add esi, edx
add ebx, dword [ecx*8 + 0x416624]
mov edx, dword [esp + 0x18]
adc esi, eax
add ebx, dword [esp + ecx*8 + 0x1dc]
mov eax, 0
mov ecx, edi
setb al
add ebx, dword [esp + 0xb0]
adc eax, esi
mov esi, edx
and ecx, dword [esp + 0x30]
shld ebp, edx, 0x19
mov dword [esp + 0xe4], eax
mov eax, edx
shld esi, edi, 0x19
shld eax, edi, 0x1e
xor esi, eax
mov eax, edi
shld eax, edx, 4
mov dword [esp + 0x2c], ecx
mov ecx, edx
xor esi, eax
mov eax, edi
xor ecx, dword [esp + 0xc0]
shld eax, edx, 0x1e
xor ebp, eax
mov eax, edx
shld eax, edi, 4
xor edi, dword [esp + 0x30]
xor ebp, eax
mov eax, edx
mov dword [esp + 0x7c], ecx
and ecx, dword [esp + 0x50]
mov edx, dword [esp + 0x80]
and eax, dword [esp + 0xc0]
mov dword [esp + 0x4c], edi
and edi, dword [esp + 0x14]
xor ecx, eax
mov dword [esp + 0x90], eax
mov eax, ecx
mov ecx, dword [esp + 0x1c]
xor edi, dword [esp + 0x2c]
add eax, esi
mov esi, dword [esp + 0xe4]
adc edi, ebp
add ecx, ebx
adc edx, esi
add eax, ebx
mov dword [esp + 0x1c], ecx
mov dword [esp + 0xb0], eax
adc edi, esi
mov eax, edx
mov esi, ecx
mov ebx, edx
mov ebp, edx
mov dword [esp + 0x80], edx
shld eax, ecx, 0xe
shld esi, edx, 0x17
shld ebx, ecx, 0x17
and ebp, dword [esp + 0x20]
xor esi, eax
mov eax, edx
shld eax, ecx, 0x12
xor esi, eax
mov eax, ecx
shld eax, edx, 0xe
xor ebx, eax
mov eax, ecx
shld eax, edx, 0x12
xor ebx, eax
mov eax, ecx
and ecx, dword [esp + 0x24]
not eax
and eax, dword [esp + 0x28]
xor ecx, eax
mov eax, edx
xor edx, edx
not eax
and eax, dword [esp + 0x10]
xor ebp, eax
add ecx, esi
mov esi, dword [esp + 0x60]
setb dl
mov eax, dword [esp + esi*8 + 0x1e0]
add eax, dword [esi*8 + 0x416628]
add eax, dword [esp + 8]
add eax, ebp
mov ebp, edi
add eax, ebx
add ecx, dword [esi*8 + 0x41662c]
mov ebx, dword [esp + 0x7c]
adc eax, edx
xor edx, edx
add ecx, dword [esp + esi*8 + 0x1e4]
setb dl
add ecx, dword [esp + 0xa0]
adc edx, eax
mov dword [esp + 8], edx
mov edx, dword [esp + 0xb0]
mov eax, edx
mov esi, edx
shld ebp, edx, 0x19
and ebx, edx
shld eax, edi, 0x1e
shld esi, edi, 0x19
xor ebx, dword [esp + 0x90]
mov dword [esp + 0x90], edi
xor esi, eax
mov eax, edi
shld eax, edx, 4
xor esi, eax
mov eax, edi
shld eax, edx, 0x1e
xor ebp, eax
mov eax, edx
mov edx, dword [esp + 0x14]
shld eax, edi, 4
xor ebp, eax
mov eax, dword [esp + 0x4c]
and eax, edi
xor eax, dword [esp + 0x2c]
add ebx, esi
mov esi, dword [esp + 0x50]
mov edi, ebx
mov ebx, dword [esp + 8]
adc eax, ebp
add esi, ecx
mov ebp, eax
mov eax, edi
adc edx, ebx
add eax, ecx
mov edi, ebp
mov ecx, dword [esp + 0x60]
adc edi, ebx
mov dword [esp + 0xa0], eax
mov dword [esp + 8], edi
mov edi, dword [esp + 0x10]
add ecx, 8
cmp ecx, 0x48
mov dword [esp + 0x60], ecx
jl 0x14f45f2
mov ecx, dword [esp + 0xe0]
mov ebp, dword [esp + 0x400]
mov eax, dword [esp + 0xa0]
sub ecx, dword [esp + 0xd8]
add eax, dword [ebp + 4]
mov dword [ebp + 4], eax
mov eax, dword [esp + 8]
adc dword [ebp], eax
mov eax, dword [esp + 0xb0]
add eax, dword [ebp + 0xc]
mov dword [ebp + 0xc], eax
mov eax, dword [esp + 0x90]
adc dword [ebp + 8], eax
mov eax, dword [esp + 0x18]
add eax, dword [ebp + 0x14]
mov dword [ebp + 0x14], eax
mov eax, dword [esp + 0xc]
adc dword [ebp + 0x10], eax
mov eax, dword [esp + 0xc0]
add eax, dword [ebp + 0x1c]
mov dword [ebp + 0x1c], eax
mov eax, dword [esp + 0x30]
adc dword [ebp + 0x18], eax
add esi, dword [ebp + 0x24]
mov dword [ebp + 0x24], esi
adc dword [ebp + 0x20], edx
mov esi, ecx
mov ecx, dword [esp + 0x1c]
mov eax, dword [ebp + 0x28]
add ecx, dword [ebp + 0x2c]
mov dword [ebp + 0x2c], ecx
adc eax, dword [esp + 0x80]
mov dword [ebp + 0x28], eax
mov ecx, dword [esp + 0x24]
mov eax, dword [ebp + 0x30]
add ecx, dword [ebp + 0x34]
mov dword [ebp + 0x34], ecx
adc eax, dword [esp + 0x20]
mov dword [ebp + 0x30], eax
mov ecx, dword [esp + 0x28]
mov eax, dword [ebp + 0x38]
add ecx, dword [ebp + 0x3c]
adc eax, edi
mov dword [ebp + 0x3c], ecx
mov dword [ebp + 0x38], eax
mov dword [ebp + 0xc0], 0
xor eax, eax
cmp esi, 0x7f
mov edi, dword [esp + 0xdc]
jg 0x14f4174
lea eax, [ebp + 0x40]
push esi
push edi
push eax
call fcn.01521fac
add esp, 0xc
mov dword [ebp + 0xc0], esi
mov ecx, dword [esp + 0x3e8]
call fcn.0151fa06
add esp, 0x3ec
pop esi
pop edi
pop ebx
pop ebp
ret