Function at 0x4776b0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x30
push ebx
mov ebx, dword [ebp + 8]
push esi
push edi
mov edi, dword [ebp + 0x10]
add dword [ebx + 0x350], edi
lea eax, [ebx + 0x2ec]
mov dword [ebp - 0x10], eax
lea ecx, [ebx + 0xec]
adc dword [ebx + 0x354], 0
lea eax, [ebx + 0x32c]
cmp dword [ebx + 0x358], 0
lea edx, [ebx + 0x38]
mov dword [ebp - 0x30], eax
mov eax, ecx
mov dword [ebp - 0xc], eax
mov dword [ebp - 0x1c], eax
mov eax, dword [ebx + 0x35c]
mov dword [ebp - 8], ebx
mov dword [ebp - 0x20], ebx
mov dword [ebp - 0x14], edx
mov dword [ebp - 4], edx
mov dword [ebp - 0x24], edx
mov dword [ebp - 0x28], ecx
mov dword [ebp - 0x2c], eax
je 0x478000
mov esi, 0x20
lea eax, [ebx + 0x30c]
sub esi, dword [ebx + 0x358]
mov dword [ebp - 0x18], eax
cmp edi, esi
mov eax, dword [ebx + 0x358]
cmovb esi, edi
add eax, 0x30c
push esi
push dword [ebp + 0xc]
add eax, ebx
push eax
call fcn.004d0d60
mov eax, dword [ebx + 0x358]
sub edi, esi
add dword [ebp + 0xc], esi
add eax, esi
and eax, 0x1f
mov dword [ebp + 0x10], edi
add esp, 0xc
mov dword [ebx + 0x358], eax
test eax, eax
jne 0x477fef
mov esi, dword [ebp - 0x10]
mov edi, dword [ebp - 0x20]
mov ecx, 8
rep movsd dword es:[edi], dword [esi]
sub esi, 0x20
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
mov eax, dword [esi]
mov ebx, dword [esi + 4]
xor dword [edi - 8], eax
xor dword [edi - 4], ebx
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
mov eax, dword [esi]
mov ebx, dword [esi + 4]
xor dword [edi - 8], eax
xor dword [edi - 4], ebx
lodsd eax, dword [esi]
xor eax, dword [esi + 4]
not eax
stosd dword es:[edi], eax
lodsd eax, dword [esi]
xor eax, dword [esi + 4]
not eax
stosd dword es:[edi], eax
mov esi, dword [ebp - 0x18]
mov edi, dword [ebp - 0x24]
mov ecx, 8
rep movsd dword es:[edi], dword [esi]
sub esi, 0x20
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
mov eax, dword [esi]
mov ebx, dword [esi + 4]
xor dword [edi - 8], eax
xor dword [edi - 4], ebx
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
mov eax, dword [esi]
mov ebx, dword [esi + 4]
xor dword [edi - 8], eax
xor dword [edi - 4], ebx
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
mov eax, dword [esi]
mov ebx, dword [esi + 4]
xor dword [edi - 8], eax
xor dword [edi - 4], ebx
mov eax, dword [edi - 0x18]
xor eax, dword [esi]
stosd dword es:[edi], eax
mov eax, dword [edi - 0x18]
xor eax, dword [esi + 4]
stosd dword es:[edi], eax
sub esi, 0x18
movsd dword es:[edi], dword [esi]
mov eax, dword [esi + 0xc]
xor dword [edi - 4], eax
movsd dword es:[edi], dword [esi]
mov eax, dword [esi + 0xc]
xor dword [edi - 4], eax
movsd dword es:[edi], dword [esi]
mov eax, dword [esi + 0xc]
xor dword [edi - 4], eax
movsd dword es:[edi], dword [esi]
mov eax, dword [esi + 0xc]
xor dword [edi - 4], eax
push ebp
mov esi, dword [ebp - 8]
mov edi, dword [ebp - 4]
xor ebx, ebx
mov ebp, ebx
mov ecx, ebx
lodsd eax, dword [esi]
add esi, 4
xor eax, dword [edi]
mov bl, al
mov bp, bx
mov bl, ah
rol eax, 0x10
mov cl, ah
mov edx, eax
lodsd eax, dword [esi]
add esi, 4
xor eax, dword [edi + 8]
mov bh, ah
shl ax, 8
or bp, ax
rol eax, 0x10
mov ch, ah
rol ecx, 0x10
mov dh, al
lodsd eax, dword [esi]
add esi, 4
xor eax, dword [edi + 0x10]
shld edx, eax, 0x10
ror edx, 8
rol eax, 8
mov cl, al
shld ebx, eax, 0x10
rol eax, 8
shld ebp, eax, 0x10
lodsd eax, dword [esi]
sub esi, 0x18
xor eax, dword [edi + 0x18]
ror ebp, 8
shrd ebp, eax, 8
mov bh, ah
rol ebx, 0x10
rol eax, 0x10
shrd edx, eax, 8
mov ch, ah
rol ecx, 0x10
push ecx
push edx
push ebx
push ebp
xor ebx, ebx
mov ebp, ebx
mov ecx, ebx
lodsd eax, dword [esi]
add esi, 4
xor eax, dword [edi + 4]
mov bl, al
mov bp, bx
mov bl, ah
rol eax, 0x10
mov cl, ah
mov edx, eax
lodsd eax, dword [esi]
add esi, 4
xor eax, dword [edi + 0xc]
mov bh, ah
shl ax, 8
or bp, ax
rol eax, 0x10
mov ch, ah
rol ecx, 0x10
mov dh, al
lodsd eax, dword [esi]
add esi, 4
xor eax, dword [edi + 0x14]
shld edx, eax, 0x10
ror edx, 8
rol eax, 8
mov cl, al
shld ebx, eax, 0x10
rol eax, 8
shld ebp, eax, 0x10
lodsd eax, dword [esi]
xor eax, dword [edi + 0x1c]
ror ebp, 8
shrd ebp, eax, 8
mov bh, ah
rol ebx, 0x10
rol eax, 0x10
shrd edx, eax, 8
mov ch, ah
rol ecx, 0x10
push ebp
mov ebp, dword [esp + 0x14]
mov edi, dword [ebp - 0xc]
pop ebp
pop eax
stosd dword es:[edi], eax
pop eax
stosd dword es:[edi], eax
pop eax
stosd dword es:[edi], eax
pop eax
stosd dword es:[edi], eax
mov eax, ebp
stosd dword es:[edi], eax
mov eax, ebx
stosd dword es:[edi], eax
mov eax, edx
stosd dword es:[edi], eax
mov eax, ecx
stosd dword es:[edi], eax
pop ebp
mov esi, edi
sub esi, 0x20
mov ecx, 0x10
rep movsd dword es:[edi], dword [esi]
lodsd eax, dword [esi]
mov dword [edi + 0x1c], eax
lodsd eax, dword [esi]
mov dword [edi + 0x18], eax
lodsd eax, dword [esi]
mov dword [edi + 0x14], eax
lodsd eax, dword [esi]
mov dword [edi + 0x10], eax
lodsd eax, dword [esi]
mov dword [edi + 0xc], eax
lodsd eax, dword [esi]
mov dword [edi + 8], eax
lodsd eax, dword [esi]
mov dword [edi + 4], eax
lodsd eax, dword [esi]
mov dword [edi], eax
add dword [ebp - 8], 8
add dword [ebp - 4], 0x10
sub dword [ebp - 0xc], 0xffffff80
push ebp
mov esi, dword [ebp - 8]
mov edi, dword [ebp - 4]
xor ebx, ebx
mov ebp, ebx
mov ecx, ebx
lodsd eax, dword [esi]
add esi, 4
xor eax, dword [edi]
mov bl, al
mov bp, bx
mov bl, ah
rol eax, 0x10
mov cl, ah
mov edx, eax
lodsd eax, dword [esi]
add esi, 4
xor eax, dword [edi + 8]
mov bh, ah
shl ax, 8
or bp, ax
rol eax, 0x10
mov ch, ah
rol ecx, 0x10
mov dh, al
lodsd eax, dword [esi]
add esi, 4
xor eax, dword [edi + 0x10]
shld edx, eax, 0x10
ror edx, 8
rol eax, 8
mov cl, al
shld ebx, eax, 0x10
rol eax, 8
shld ebp, eax, 0x10
lodsd eax, dword [esi]
sub esi, 0x18
xor eax, dword [edi + 0x18]
ror ebp, 8
shrd ebp, eax, 8
mov bh, ah
rol ebx, 0x10
rol eax, 0x10
shrd edx, eax, 8
mov ch, ah
rol ecx, 0x10
push ecx
push edx
push ebx
push ebp
xor ebx, ebx
mov ebp, ebx
mov ecx, ebx
lodsd eax, dword [esi]
add esi, 4
xor eax, dword [edi + 4]
mov bl, al
mov bp, bx
mov bl, ah
rol eax, 0x10
mov cl, ah
mov edx, eax
lodsd eax, dword [esi]
add esi, 4
xor eax, dword [edi + 0xc]
mov bh, ah
shl ax, 8
or bp, ax
rol eax, 0x10
mov ch, ah
rol ecx, 0x10
mov dh, al
lodsd eax, dword [esi]
add esi, 4
xor eax, dword [edi + 0x14]
shld edx, eax, 0x10
ror edx, 8
rol eax, 8
mov cl, al
shld ebx, eax, 0x10
rol eax, 8
shld ebp, eax, 0x10
lodsd eax, dword [esi]
xor eax, dword [edi + 0x1c]
ror ebp, 8
shrd ebp, eax, 8
mov bh, ah
rol ebx, 0x10
rol eax, 0x10
shrd edx, eax, 8
mov ch, ah
rol ecx, 0x10
push ebp
mov ebp, dword [esp + 0x14]
mov edi, dword [ebp - 0xc]
pop ebp
pop eax
stosd dword es:[edi], eax
pop eax
stosd dword es:[edi], eax
pop eax
stosd dword es:[edi], eax
pop eax
stosd dword es:[edi], eax
mov eax, ebp
stosd dword es:[edi], eax
mov eax, ebx
stosd dword es:[edi], eax
mov eax, edx
stosd dword es:[edi], eax
mov eax, ecx
stosd dword es:[edi], eax
pop ebp
mov esi, edi
sub esi, 0x20
mov ecx, 0x10
rep movsd dword es:[edi], dword [esi]
lodsd eax, dword [esi]
mov dword [edi + 0x1c], eax
lodsd eax, dword [esi]
mov dword [edi + 0x18], eax
lodsd eax, dword [esi]
mov dword [edi + 0x14], eax
lodsd eax, dword [esi]
mov dword [edi + 0x10], eax
lodsd eax, dword [esi]
mov dword [edi + 0xc], eax
lodsd eax, dword [esi]
mov dword [edi + 8], eax
lodsd eax, dword [esi]
mov dword [edi + 4], eax
lodsd eax, dword [esi]
mov dword [edi], eax
mov eax, dword [ebp - 0x1c]
add dword [ebp - 8], 8
add eax, 0x100
add dword [ebp - 4], 0x10
mov dword [ebp - 0xc], eax
mov ecx, 8
mov esi, dword [0x587584]
mov edi, dword [ebp - 8]
lodsd eax, dword [esi]
xor dword [edi], eax
add edi, 4
loop 0x477a9b
push ebp
mov esi, dword [ebp - 8]
mov edi, dword [ebp - 4]
xor ebx, ebx
mov ebp, ebx
mov ecx, ebx
lodsd eax, dword [esi]
add esi, 4
xor eax, dword [edi]
mov bl, al
mov bp, bx
mov bl, ah
rol eax, 0x10
mov cl, ah
mov edx, eax
lodsd eax, dword [esi]
add esi, 4
xor eax, dword [edi + 8]
mov bh, ah
shl ax, 8
or bp, ax
rol eax, 0x10
mov ch, ah
rol ecx, 0x10
mov dh, al
lodsd eax, dword [esi]
add esi, 4
xor eax, dword [edi + 0x10]
shld edx, eax, 0x10
ror edx, 8
rol eax, 8
mov cl, al
shld ebx, eax, 0x10
rol eax, 8
shld ebp, eax, 0x10
lodsd eax, dword [esi]
sub esi, 0x18
xor eax, dword [edi + 0x18]
ror ebp, 8
shrd ebp, eax, 8
mov bh, ah
rol ebx, 0x10
rol eax, 0x10
shrd edx, eax, 8
mov ch, ah
rol ecx, 0x10
push ecx
push edx
push ebx
push ebp
xor ebx, ebx
mov ebp, ebx
mov ecx, ebx
lodsd eax, dword [esi]
add esi, 4
xor eax, dword [edi + 4]
mov bl, al
mov bp, bx
mov bl, ah
rol eax, 0x10
mov cl, ah
mov edx, eax
lodsd eax, dword [esi]
add esi, 4
xor eax, dword [edi + 0xc]
mov bh, ah
shl ax, 8
or bp, ax
rol eax, 0x10
mov ch, ah
rol ecx, 0x10
mov dh, al
lodsd eax, dword [esi]
add esi, 4
xor eax, dword [edi + 0x14]
shld edx, eax, 0x10
ror edx, 8
rol eax, 8
mov cl, al
shld ebx, eax, 0x10
rol eax, 8
shld ebp, eax, 0x10
lodsd eax, dword [esi]
xor eax, dword [edi + 0x1c]
ror ebp, 8
shrd ebp, eax, 8
mov bh, ah
rol ebx, 0x10
rol eax, 0x10
shrd edx, eax, 8
mov ch, ah
rol ecx, 0x10
push ebp
mov ebp, dword [esp + 0x14]
mov edi, dword [ebp - 0xc]
pop ebp
pop eax
stosd dword es:[edi], eax
pop eax
stosd dword es:[edi], eax
pop eax
stosd dword es:[edi], eax
pop eax
stosd dword es:[edi], eax
mov eax, ebp
stosd dword es:[edi], eax
mov eax, ebx
stosd dword es:[edi], eax
mov eax, edx
stosd dword es:[edi], eax
mov eax, ecx
stosd dword es:[edi], eax
pop ebp
mov esi, edi
sub esi, 0x20
mov ecx, 0x10
rep movsd dword es:[edi], dword [esi]
lodsd eax, dword [esi]
mov dword [edi + 0x1c], eax
lodsd eax, dword [esi]
mov dword [edi + 0x18], eax
lodsd eax, dword [esi]
mov dword [edi + 0x14], eax
lodsd eax, dword [esi]
mov dword [edi + 0x10], eax
lodsd eax, dword [esi]
mov dword [edi + 0xc], eax
lodsd eax, dword [esi]
mov dword [edi + 8], eax
lodsd eax, dword [esi]
mov dword [edi + 4], eax
lodsd eax, dword [esi]
mov dword [edi], eax
mov eax, dword [ebp - 0x1c]
add dword [ebp - 8], 8
add eax, 0x180
add dword [ebp - 4], 0x10
mov dword [ebp - 0xc], eax
push ebp
mov esi, dword [ebp - 8]
mov edi, dword [ebp - 4]
xor ebx, ebx
mov ebp, ebx
mov ecx, ebx
lodsd eax, dword [esi]
add esi, 4
xor eax, dword [edi]
mov bl, al
mov bp, bx
mov bl, ah
rol eax, 0x10
mov cl, ah
mov edx, eax
lodsd eax, dword [esi]
add esi, 4
xor eax, dword [edi + 8]
mov bh, ah
shl ax, 8
or bp, ax
rol eax, 0x10
mov ch, ah
rol ecx, 0x10
mov dh, al
lodsd eax, dword [esi]
add esi, 4
xor eax, dword [edi + 0x10]
shld edx, eax, 0x10
ror edx, 8
rol eax, 8
mov cl, al
shld ebx, eax, 0x10
rol eax, 8
shld ebp, eax, 0x10
lodsd eax, dword [esi]
sub esi, 0x18
xor eax, dword [edi + 0x18]
ror ebp, 8
shrd ebp, eax, 8
mov bh, ah
rol ebx, 0x10
rol eax, 0x10
shrd edx, eax, 8
mov ch, ah
rol ecx, 0x10
push ecx
push edx
push ebx
push ebp
xor ebx, ebx
mov ebp, ebx
mov ecx, ebx
lodsd eax, dword [esi]
add esi, 4
xor eax, dword [edi + 4]
mov bl, al
mov bp, bx
mov bl, ah
rol eax, 0x10
mov cl, ah
mov edx, eax
lodsd eax, dword [esi]
add esi, 4
xor eax, dword [edi + 0xc]
mov bh, ah
shl ax, 8
or bp, ax
rol eax, 0x10
mov ch, ah
rol ecx, 0x10
mov dh, al
lodsd eax, dword [esi]
add esi, 4
xor eax, dword [edi + 0x14]
shld edx, eax, 0x10
ror edx, 8
rol eax, 8
mov cl, al
shld ebx, eax, 0x10
rol eax, 8
shld ebp, eax, 0x10
lodsd eax, dword [esi]
xor eax, dword [edi + 0x1c]
ror ebp, 8
shrd ebp, eax, 8
mov bh, ah
rol ebx, 0x10
rol eax, 0x10
shrd edx, eax, 8
mov ch, ah
rol ecx, 0x10
push ebp
mov ebp, dword [esp + 0x14]
mov edi, dword [ebp - 0xc]
pop ebp
pop eax
stosd dword es:[edi], eax
pop eax
stosd dword es:[edi], eax
pop eax
stosd dword es:[edi], eax
pop eax
stosd dword es:[edi], eax
mov eax, ebp
stosd dword es:[edi], eax
mov eax, ebx
stosd dword es:[edi], eax
mov eax, edx
stosd dword es:[edi], eax
mov eax, ecx
stosd dword es:[edi], eax
pop ebp
mov esi, edi
sub esi, 0x20
mov ecx, 0x10
rep movsd dword es:[edi], dword [esi]
lodsd eax, dword [esi]
mov dword [edi + 0x1c], eax
lodsd eax, dword [esi]
mov dword [edi + 0x18], eax
lodsd eax, dword [esi]
mov dword [edi + 0x14], eax
lodsd eax, dword [esi]
mov dword [edi + 0x10], eax
lodsd eax, dword [esi]
mov dword [edi + 0xc], eax
lodsd eax, dword [esi]
mov dword [edi + 8], eax
lodsd eax, dword [esi]
mov dword [edi + 4], eax
lodsd eax, dword [esi]
mov dword [edi], eax
mov eax, dword [ebp - 0x10]
mov dword [ebp - 8], eax
mov eax, dword [ebp - 0x28]
mov dword [ebp - 0xc], eax
mov eax, dword [ebp - 0x14]
mov dword [ebp - 4], eax
pushal
mov esi, dword [ebp - 0xc]
mov edi, dword [ebp - 0x2c]
mov ecx, esi
mov esi, dword [ebp - 8]
lodsd eax, dword [esi]
mov edx, eax
lodsd eax, dword [esi]
mov dword [ebp - 8], esi
mov esi, ecx
xchg edx, eax
mov ecx, 0x20
push ebp
mov ebp, eax
add eax, dword [esi]
add esi, 4
movzx ebx, al
xor edx, dword [edi + ebx*4]
mov bl, ah
xor edx, dword [edi + ebx*4 + 0x400]
shr eax, 0x10
mov bl, ah
xor edx, dword [edi + ebx*4 + 0xc00]
mov bl, al
xor edx, dword [edi + ebx*4 + 0x800]
mov eax, edx
mov edx, ebp
loop 0x477d4c
pop ebp
mov ecx, esi
mov esi, dword [ebp - 4]
mov dword [esi], edx
mov dword [esi + 4], eax
add esi, 8
mov dword [ebp - 4], esi
mov esi, ecx
mov ecx, esi
mov esi, dword [ebp - 8]
lodsd eax, dword [esi]
mov edx, eax
lodsd eax, dword [esi]
mov dword [ebp - 8], esi
mov esi, ecx
xchg edx, eax
mov ecx, 0x20
push ebp
mov ebp, eax
add eax, dword [esi]
add esi, 4
movzx ebx, al
xor edx, dword [edi + ebx*4]
mov bl, ah
xor edx, dword [edi + ebx*4 + 0x400]
shr eax, 0x10
mov bl, ah
xor edx, dword [edi + ebx*4 + 0xc00]
mov bl, al
xor edx, dword [edi + ebx*4 + 0x800]
mov eax, edx
mov edx, ebp
loop 0x477da5
pop ebp
mov ecx, esi
mov esi, dword [ebp - 4]
mov dword [esi], edx
mov dword [esi + 4], eax
add esi, 8
mov dword [ebp - 4], esi
mov esi, ecx
mov ecx, esi
mov esi, dword [ebp - 8]
lodsd eax, dword [esi]
mov edx, eax
lodsd eax, dword [esi]
mov dword [ebp - 8], esi
mov esi, ecx
xchg edx, eax
mov ecx, 0x20
push ebp
mov ebp, eax
add eax, dword [esi]
add esi, 4
movzx ebx, al
xor edx, dword [edi + ebx*4]
mov bl, ah
xor edx, dword [edi + ebx*4 + 0x400]
shr eax, 0x10
mov bl, ah
xor edx, dword [edi + ebx*4 + 0xc00]
mov bl, al
xor edx, dword [edi + ebx*4 + 0x800]
mov eax, edx
mov edx, ebp
loop 0x477dfe
pop ebp
mov ecx, esi
mov esi, dword [ebp - 4]
mov dword [esi], edx
mov dword [esi + 4], eax
add esi, 8
mov dword [ebp - 4], esi
mov esi, ecx
mov ecx, esi
mov esi, dword [ebp - 8]
lodsd eax, dword [esi]
mov edx, eax
lodsd eax, dword [esi]
mov dword [ebp - 8], esi
mov esi, ecx
xchg edx, eax
mov ecx, 0x20
push ebp
mov ebp, eax
add eax, dword [esi]
add esi, 4
movzx ebx, al
xor edx, dword [edi + ebx*4]
mov bl, ah
xor edx, dword [edi + ebx*4 + 0x400]
shr eax, 0x10
mov bl, ah
xor edx, dword [edi + ebx*4 + 0xc00]
mov bl, al
xor edx, dword [edi + ebx*4 + 0x800]
mov eax, edx
mov edx, ebp
loop 0x477e57
pop ebp
mov ecx, esi
mov esi, dword [ebp - 4]
mov dword [esi], edx
mov dword [esi + 4], eax
add esi, 8
mov dword [ebp - 4], esi
mov esi, ecx
popal
mov eax, dword [ebp - 0x14]
mov dword [ebp - 4], eax
mov esi, dword [ebp - 4]
mov ecx, 6
lodsd eax, dword [esi]
mov edx, eax
shr edx, 0x10
xor edx, eax
lodsd eax, dword [esi]
mov ebx, eax
xor edx, eax
rol eax, 0x10
xor edx, eax
mov eax, dword [esi + 0x10]
xor edx, eax
mov eax, dword [esi + 0x14]
shr eax, 0x10
xor dx, ax
mov eax, edx
shl eax, 0x10
xor edx, eax
lodsd eax, dword [esi]
mov edi, eax
shl eax, 0x10
xor edx, eax
mov dword [esi + 0x14], edx
mov edx, ebx
shr edx, 0x10
xor edx, ebx
mov eax, edi
loop 0x477eb3
add dword [ebp - 4], 0x18
mov ecx, 8
mov esi, dword [ebp - 0x10]
mov edi, dword [ebp - 4]
mov ebx, dword [ebp - 0x18]
xor edx, edx
lodsd eax, dword [esi]
shrd edx, eax, 0x10
xor edx, dword [ebx]
xor dword [edi], edx
add edi, 4
add ebx, 4
mov edx, eax
loop 0x477efb
xor edx, dword [esi - 0xc]
mov dx, ax
xor edx, dword [esi - 0x20]
xor dx, word [esi - 0x1c]
mov eax, edx
shr eax, 0x10
xor ax, dx
xor dword [edi - 0x20], eax
mov esi, dword [ebp - 4]
mov ecx, 1
lodsd eax, dword [esi]
mov edx, eax
shr edx, 0x10
xor edx, eax
lodsd eax, dword [esi]
mov ebx, eax
xor edx, eax
rol eax, 0x10
xor edx, eax
mov eax, dword [esi + 0x10]
xor edx, eax
mov eax, dword [esi + 0x14]
shr eax, 0x10
xor dx, ax
mov eax, edx
shl eax, 0x10
xor edx, eax
lodsd eax, dword [esi]
mov edi, eax
shl eax, 0x10
xor edx, eax
mov dword [esi + 0x14], edx
mov edx, ebx
shr edx, 0x10
xor edx, ebx
mov eax, edi
loop 0x477f37
add dword [ebp - 4], 4
mov esi, dword [ebp - 4]
mov ecx, 0x1e
lodsd eax, dword [esi]
mov edx, eax
shr edx, 0x10
xor edx, eax
lodsd eax, dword [esi]
mov ebx, eax
xor edx, eax
rol eax, 0x10
xor edx, eax
mov eax, dword [esi + 0x10]
xor edx, eax
mov eax, dword [esi + 0x14]
shr eax, 0x10
xor dx, ax
mov eax, edx
shl eax, 0x10
xor edx, eax
lodsd eax, dword [esi]
mov edi, eax
shl eax, 0x10
xor edx, eax
mov dword [esi + 0x14], edx
mov edx, ebx
shr edx, 0x10
xor edx, ebx
mov eax, edi
loop 0x477f80
mov eax, dword [ebp - 4]
mov ecx, dword [ebp - 0x10]
add eax, 0x78
push 0x20
push eax
push ecx
mov dword [ebp - 4], eax
mov dword [ebp - 0x10], ecx
call fcn.004d0d60
add esp, 0xc
mov esi, dword [ebp - 0x18]
mov edi, dword [ebp - 0x30]
mov ecx, 8
xor edx, edx
shr edx, 1
lodsd eax, dword [esi]
adc dword [edi], eax
setb dl
add edi, 4
loop 0x477fdc
mov ebx, dword [ebp + 8]
mov edi, dword [ebp + 0x10]
test edi, edi
je 0x4788ee
lea edx, [ebx + 0x38]
lea ecx, [ebx + 0xec]
cmp edi, 0x1f
jbe 0x4788ce
mov eax, ecx
lea ecx, [edi - 0x20]
shr ecx, 5
inc ecx
mov dword [ebp - 0xc], eax
mov dword [ebp - 0x18], ecx
nop dword [eax + eax]
mov dword [ebp - 8], ebx
mov dword [ebp - 0x1c], eax
mov dword [ebp - 4], edx
mov esi, dword [ebp - 0x10]
mov edi, dword [ebp - 0x20]
mov ecx, 8
rep movsd dword es:[edi], dword [esi]
sub esi, 0x20
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
mov eax, dword [esi]
mov ebx, dword [esi + 4]
xor dword [edi - 8], eax
xor dword [edi - 4], ebx
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
mov eax, dword [esi]
mov ebx, dword [esi + 4]
xor dword [edi - 8], eax
xor dword [edi - 4], ebx
lodsd eax, dword [esi]
xor eax, dword [esi + 4]
not eax
stosd dword es:[edi], eax
lodsd eax, dword [esi]
xor eax, dword [esi + 4]
not eax
stosd dword es:[edi], eax
mov esi, dword [ebp + 0xc]
mov edi, dword [ebp - 0x24]
mov ecx, 8
rep movsd dword es:[edi], dword [esi]
sub esi, 0x20
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
mov eax, dword [esi]
mov ebx, dword [esi + 4]
xor dword [edi - 8], eax
xor dword [edi - 4], ebx
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
mov eax, dword [esi]
mov ebx, dword [esi + 4]
xor dword [edi - 8], eax
xor dword [edi - 4], ebx
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
mov eax, dword [esi]
mov ebx, dword [esi + 4]
xor dword [edi - 8], eax
xor dword [edi - 4], ebx
mov eax, dword [edi - 0x18]
xor eax, dword [esi]
stosd dword es:[edi], eax
mov eax, dword [edi - 0x18]
xor eax, dword [esi + 4]
stosd dword es:[edi], eax
sub esi, 0x18
movsd dword es:[edi], dword [esi]
mov eax, dword [esi + 0xc]
xor dword [edi - 4], eax
movsd dword es:[edi], dword [esi]
mov eax, dword [esi + 0xc]
xor dword [edi - 4], eax
movsd dword es:[edi], dword [esi]
mov eax, dword [esi + 0xc]
xor dword [edi - 4], eax
movsd dword es:[edi], dword [esi]
mov eax, dword [esi + 0xc]
xor dword [edi - 4], eax
push ebp
mov esi, dword [ebp - 8]
mov edi, dword [ebp - 4]
xor ebx, ebx
mov ebp, ebx
mov ecx, ebx
lodsd eax, dword [esi]
add esi, 4
xor eax, dword [edi]
mov bl, al
mov bp, bx
mov bl, ah
rol eax, 0x10
mov cl, ah
mov edx, eax
lodsd eax, dword [esi]
add esi, 4
xor eax, dword [edi + 8]
mov bh, ah
shl ax, 8
or bp, ax
rol eax, 0x10
mov ch, ah
rol ecx, 0x10
mov dh, al
lodsd eax, dword [esi]
add esi, 4
xor eax, dword [edi + 0x10]
shld edx, eax, 0x10
ror edx, 8
rol eax, 8
mov cl, al
shld ebx, eax, 0x10
rol eax, 8
shld ebp, eax, 0x10
lodsd eax, dword [esi]
sub esi, 0x18
xor eax, dword [edi + 0x18]
ror ebp, 8
shrd ebp, eax, 8
mov bh, ah
rol ebx, 0x10
rol eax, 0x10
shrd edx, eax, 8
mov ch, ah
rol ecx, 0x10
push ecx
push edx
push ebx
push ebp
xor ebx, ebx
mov ebp, ebx
mov ecx, ebx
lodsd eax, dword [esi]
add esi, 4
xor eax, dword [edi + 4]
mov bl, al
mov bp, bx
mov bl, ah
rol eax, 0x10
mov cl, ah
mov edx, eax
lodsd eax, dword [esi]
add esi, 4
xor eax, dword [edi + 0xc]
mov bh, ah
shl ax, 8
or bp, ax
rol eax, 0x10
mov ch, ah
rol ecx, 0x10
mov dh, al
lodsd eax, dword [esi]
add esi, 4
xor eax, dword [edi + 0x14]
shld edx, eax, 0x10
ror edx, 8
rol eax, 8
mov cl, al
shld ebx, eax, 0x10
rol eax, 8
shld ebp, eax, 0x10
lodsd eax, dword [esi]
xor eax, dword [edi + 0x1c]
ror ebp, 8
shrd ebp, eax, 8
mov bh, ah
rol ebx, 0x10
rol eax, 0x10
shrd edx, eax, 8
mov ch, ah
rol ecx, 0x10
push ebp
mov ebp, dword [esp + 0x14]
mov edi, dword [ebp - 0xc]
pop ebp
pop eax
stosd dword es:[edi], eax
pop eax
stosd dword es:[edi], eax
pop eax
stosd dword es:[edi], eax
pop eax
stosd dword es:[edi], eax
mov eax, ebp
stosd dword es:[edi], eax
mov eax, ebx
stosd dword es:[edi], eax
mov eax, edx
stosd dword es:[edi], eax
mov eax, ecx
stosd dword es:[edi], eax
pop ebp
mov esi, edi
sub esi, 0x20
mov ecx, 0x10
rep movsd dword es:[edi], dword [esi]
lodsd eax, dword [esi]
mov dword [edi + 0x1c], eax
lodsd eax, dword [esi]
mov dword [edi + 0x18], eax
lodsd eax, dword [esi]
mov dword [edi + 0x14], eax
lodsd eax, dword [esi]
mov dword [edi + 0x10], eax
lodsd eax, dword [esi]
mov dword [edi + 0xc], eax
lodsd eax, dword [esi]
mov dword [edi + 8], eax
lodsd eax, dword [esi]
mov dword [edi + 4], eax
lodsd eax, dword [esi]
mov dword [edi], eax
add dword [ebp - 8], 8
add dword [ebp - 4], 0x10
sub dword [ebp - 0xc], 0xffffff80
push ebp
mov esi, dword [ebp - 8]
mov edi, dword [ebp - 4]
xor ebx, ebx
mov ebp, ebx
mov ecx, ebx
lodsd eax, dword [esi]
add esi, 4
xor eax, dword [edi]
mov bl, al
mov bp, bx
mov bl, ah
rol eax, 0x10
mov cl, ah
mov edx, eax
lodsd eax, dword [esi]
add esi, 4
xor eax, dword [edi + 8]
mov bh, ah
shl ax, 8
or bp, ax
rol eax, 0x10
mov ch, ah
rol ecx, 0x10
mov dh, al
lodsd eax, dword [esi]
add esi, 4
xor eax, dword [edi + 0x10]
shld edx, eax, 0x10
ror edx, 8
rol eax, 8
mov cl, al
shld ebx, eax, 0x10
rol eax, 8
shld ebp, eax, 0x10
lodsd eax, dword [esi]
sub esi, 0x18
xor eax, dword [edi + 0x18]
ror ebp, 8
shrd ebp, eax, 8
mov bh, ah
rol ebx, 0x10
rol eax, 0x10
shrd edx, eax, 8
mov ch, ah
rol ecx, 0x10
push ecx
push edx
push ebx
push ebp
xor ebx, ebx
mov ebp, ebx
mov ecx, ebx
lodsd eax, dword [esi]
add esi, 4
xor eax, dword [edi + 4]
mov bl, al
mov bp, bx
mov bl, ah
rol eax, 0x10
mov cl, ah
mov edx, eax
lodsd eax, dword [esi]
add esi, 4
xor eax, dword [edi + 0xc]
mov bh, ah
shl ax, 8
or bp, ax
rol eax, 0x10
mov ch, ah
rol ecx, 0x10
mov dh, al
lodsd eax, dword [esi]
add esi, 4
xor eax, dword [edi + 0x14]
shld edx, eax, 0x10
ror edx, 8
rol eax, 8
mov cl, al
shld ebx, eax, 0x10
rol eax, 8
shld ebp, eax, 0x10
lodsd eax, dword [esi]
xor eax, dword [edi + 0x1c]
ror ebp, 8
shrd ebp, eax, 8
mov bh, ah
rol ebx, 0x10
rol eax, 0x10
shrd edx, eax, 8
mov ch, ah
rol ecx, 0x10
push ebp
mov ebp, dword [esp + 0x14]
mov edi, dword [ebp - 0xc]
pop ebp
pop eax
stosd dword es:[edi], eax
pop eax
stosd dword es:[edi], eax
pop eax
stosd dword es:[edi], eax
pop eax
stosd dword es:[edi], eax
mov eax, ebp
stosd dword es:[edi], eax
mov eax, ebx
stosd dword es:[edi], eax
mov eax, edx
stosd dword es:[edi], eax
mov eax, ecx
stosd dword es:[edi], eax
pop ebp
mov esi, edi
sub esi, 0x20
mov ecx, 0x10
rep movsd dword es:[edi], dword [esi]
lodsd eax, dword [esi]
mov dword [edi + 0x1c], eax
lodsd eax, dword [esi]
mov dword [edi + 0x18], eax
lodsd eax, dword [esi]
mov dword [edi + 0x14], eax
lodsd eax, dword [esi]
mov dword [edi + 0x10], eax
lodsd eax, dword [esi]
mov dword [edi + 0xc], eax
lodsd eax, dword [esi]
mov dword [edi + 8], eax
lodsd eax, dword [esi]
mov dword [edi + 4], eax
lodsd eax, dword [esi]
mov dword [edi], eax
mov eax, dword [ebp - 0x1c]
add dword [ebp - 8], 8
add eax, 0x100
add dword [ebp - 4], 0x10
mov dword [ebp - 0xc], eax
mov ecx, 8
mov esi, dword [0x587584]
mov edi, dword [ebp - 8]
lodsd eax, dword [esi]
xor dword [edi], eax
add edi, 4
loop 0x478359
push ebp
mov esi, dword [ebp - 8]
mov edi, dword [ebp - 4]
xor ebx, ebx
mov ebp, ebx
mov ecx, ebx
lodsd eax, dword [esi]
add esi, 4
xor eax, dword [edi]
mov bl, al
mov bp, bx
mov bl, ah
rol eax, 0x10
mov cl, ah
mov edx, eax
lodsd eax, dword [esi]
add esi, 4
xor eax, dword [edi + 8]
mov bh, ah
shl ax, 8
or bp, ax
rol eax, 0x10
mov ch, ah
rol ecx, 0x10
mov dh, al
lodsd eax, dword [esi]
add esi, 4
xor eax, dword [edi + 0x10]
shld edx, eax, 0x10
ror edx, 8
rol eax, 8
mov cl, al
shld ebx, eax, 0x10
rol eax, 8
shld ebp, eax, 0x10
lodsd eax, dword [esi]
sub esi, 0x18
xor eax, dword [edi + 0x18]
ror ebp, 8
shrd ebp, eax, 8
mov bh, ah
rol ebx, 0x10
rol eax, 0x10
shrd edx, eax, 8
mov ch, ah
rol ecx, 0x10
push ecx
push edx
push ebx
push ebp
xor ebx, ebx
mov ebp, ebx
mov ecx, ebx
lodsd eax, dword [esi]
add esi, 4
xor eax, dword [edi + 4]
mov bl, al
mov bp, bx
mov bl, ah
rol eax, 0x10
mov cl, ah
mov edx, eax
lodsd eax, dword [esi]
add esi, 4
xor eax, dword [edi + 0xc]
mov bh, ah
shl ax, 8
or bp, ax
rol eax, 0x10
mov ch, ah
rol ecx, 0x10
mov dh, al
lodsd eax, dword [esi]
add esi, 4
xor eax, dword [edi + 0x14]
shld edx, eax, 0x10
ror edx, 8
rol eax, 8
mov cl, al
shld ebx, eax, 0x10
rol eax, 8
shld ebp, eax, 0x10
lodsd eax, dword [esi]
xor eax, dword [edi + 0x1c]
ror ebp, 8
shrd ebp, eax, 8
mov bh, ah
rol ebx, 0x10
rol eax, 0x10
shrd edx, eax, 8
mov ch, ah
rol ecx, 0x10
push ebp
mov ebp, dword [esp + 0x14]
mov edi, dword [ebp - 0xc]
pop ebp
pop eax
stosd dword es:[edi], eax
pop eax
stosd dword es:[edi], eax
pop eax
stosd dword es:[edi], eax
pop eax
stosd dword es:[edi], eax
mov eax, ebp
stosd dword es:[edi], eax
mov eax, ebx
stosd dword es:[edi], eax
mov eax, edx
stosd dword es:[edi], eax
mov eax, ecx
stosd dword es:[edi], eax
pop ebp
mov esi, edi
sub esi, 0x20
mov ecx, 0x10
rep movsd dword es:[edi], dword [esi]
lodsd eax, dword [esi]
mov dword [edi + 0x1c], eax
lodsd eax, dword [esi]
mov dword [edi + 0x18], eax
lodsd eax, dword [esi]
mov dword [edi + 0x14], eax
lodsd eax, dword [esi]
mov dword [edi + 0x10], eax
lodsd eax, dword [esi]
mov dword [edi + 0xc], eax
lodsd eax, dword [esi]
mov dword [edi + 8], eax
lodsd eax, dword [esi]
mov dword [edi + 4], eax
lodsd eax, dword [esi]
mov dword [edi], eax
mov eax, dword [ebp - 0x1c]
add dword [ebp - 8], 8
add eax, 0x180
add dword [ebp - 4], 0x10
mov dword [ebp - 0xc], eax
push ebp
mov esi, dword [ebp - 8]
mov edi, dword [ebp - 4]
xor ebx, ebx
mov ebp, ebx
mov ecx, ebx
lodsd eax, dword [esi]
add esi, 4
xor eax, dword [edi]
mov bl, al
mov bp, bx
mov bl, ah
rol eax, 0x10
mov cl, ah
mov edx, eax
lodsd eax, dword [esi]
add esi, 4
xor eax, dword [edi + 8]
mov bh, ah
shl ax, 8
or bp, ax
rol eax, 0x10
mov ch, ah
rol ecx, 0x10
mov dh, al
lodsd eax, dword [esi]
add esi, 4
xor eax, dword [edi + 0x10]
shld edx, eax, 0x10
ror edx, 8
rol eax, 8
mov cl, al
shld ebx, eax, 0x10
rol eax, 8
shld ebp, eax, 0x10
lodsd eax, dword [esi]
sub esi, 0x18
xor eax, dword [edi + 0x18]
ror ebp, 8
shrd ebp, eax, 8
mov bh, ah
rol ebx, 0x10
rol eax, 0x10
shrd edx, eax, 8
mov ch, ah
rol ecx, 0x10
push ecx
push edx
push ebx
push ebp
xor ebx, ebx
mov ebp, ebx
mov ecx, ebx
lodsd eax, dword [esi]
add esi, 4
xor eax, dword [edi + 4]
mov bl, al
mov bp, bx
mov bl, ah
rol eax, 0x10
mov cl, ah
mov edx, eax
lodsd eax, dword [esi]
add esi, 4
xor eax, dword [edi + 0xc]
mov bh, ah
shl ax, 8
or bp, ax
rol eax, 0x10
mov ch, ah
rol ecx, 0x10
mov dh, al
lodsd eax, dword [esi]
add esi, 4
xor eax, dword [edi + 0x14]
shld edx, eax, 0x10
ror edx, 8
rol eax, 8
mov cl, al
shld ebx, eax, 0x10
rol eax, 8
shld ebp, eax, 0x10
lodsd eax, dword [esi]
xor eax, dword [edi + 0x1c]
ror ebp, 8
shrd ebp, eax, 8
mov bh, ah
rol ebx, 0x10
rol eax, 0x10
shrd edx, eax, 8
mov ch, ah
rol ecx, 0x10
push ebp
mov ebp, dword [esp + 0x14]
mov edi, dword [ebp - 0xc]
pop ebp
pop eax
stosd dword es:[edi], eax
pop eax
stosd dword es:[edi], eax
pop eax
stosd dword es:[edi], eax
pop eax
stosd dword es:[edi], eax
mov eax, ebp
stosd dword es:[edi], eax
mov eax, ebx
stosd dword es:[edi], eax
mov eax, edx
stosd dword es:[edi], eax
mov eax, ecx
stosd dword es:[edi], eax
pop ebp
mov esi, edi
sub esi, 0x20
mov ecx, 0x10
rep movsd dword es:[edi], dword [esi]
lodsd eax, dword [esi]
mov dword [edi + 0x1c], eax
lodsd eax, dword [esi]
mov dword [edi + 0x18], eax
lodsd eax, dword [esi]
mov dword [edi + 0x14], eax
lodsd eax, dword [esi]
mov dword [edi + 0x10], eax
lodsd eax, dword [esi]
mov dword [edi + 0xc], eax
lodsd eax, dword [esi]
mov dword [edi + 8], eax
lodsd eax, dword [esi]
mov dword [edi + 4], eax
lodsd eax, dword [esi]
mov dword [edi], eax
mov eax, dword [ebp - 0x10]
mov dword [ebp - 8], eax
mov eax, dword [ebp - 0x28]
mov dword [ebp - 0xc], eax
mov eax, dword [ebp - 0x14]
mov dword [ebp - 4], eax
pushal
mov esi, dword [ebp - 0xc]
mov edi, dword [ebp - 0x2c]
mov ecx, esi
mov esi, dword [ebp - 8]
lodsd eax, dword [esi]
mov edx, eax
lodsd eax, dword [esi]
mov dword [ebp - 8], esi
mov esi, ecx
xchg edx, eax
mov ecx, 0x20
push ebp
mov ebp, eax
add eax, dword [esi]
add esi, 4
movzx ebx, al
xor edx, dword [edi + ebx*4]
mov bl, ah
xor edx, dword [edi + ebx*4 + 0x400]
shr eax, 0x10
mov bl, ah
xor edx, dword [edi + ebx*4 + 0xc00]
mov bl, al
xor edx, dword [edi + ebx*4 + 0x800]
mov eax, edx
mov edx, ebp
loop 0x47860a
pop ebp
mov ecx, esi
mov esi, dword [ebp - 4]
mov dword [esi], edx
mov dword [esi + 4], eax
add esi, 8
mov dword [ebp - 4], esi
mov esi, ecx
mov ecx, esi
mov esi, dword [ebp - 8]
lodsd eax, dword [esi]
mov edx, eax
lodsd eax, dword [esi]
mov dword [ebp - 8], esi
mov esi, ecx
xchg edx, eax
mov ecx, 0x20
push ebp
mov ebp, eax
add eax, dword [esi]
add esi, 4
movzx ebx, al
xor edx, dword [edi + ebx*4]
mov bl, ah
xor edx, dword [edi + ebx*4 + 0x400]
shr eax, 0x10
mov bl, ah
xor edx, dword [edi + ebx*4 + 0xc00]
mov bl, al
xor edx, dword [edi + ebx*4 + 0x800]
mov eax, edx
mov edx, ebp
loop 0x478663
pop ebp
mov ecx, esi
mov esi, dword [ebp - 4]
mov dword [esi], edx
mov dword [esi + 4], eax
add esi, 8
mov dword [ebp - 4], esi
mov esi, ecx
mov ecx, esi
mov esi, dword [ebp - 8]
lodsd eax, dword [esi]
mov edx, eax
lodsd eax, dword [esi]
mov dword [ebp - 8], esi
mov esi, ecx
xchg edx, eax
mov ecx, 0x20
push ebp
mov ebp, eax
add eax, dword [esi]
add esi, 4
movzx ebx, al
xor edx, dword [edi + ebx*4]
mov bl, ah
xor edx, dword [edi + ebx*4 + 0x400]
shr eax, 0x10
mov bl, ah
xor edx, dword [edi + ebx*4 + 0xc00]
mov bl, al
xor edx, dword [edi + ebx*4 + 0x800]
mov eax, edx
mov edx, ebp
loop 0x4786bc
pop ebp
mov ecx, esi
mov esi, dword [ebp - 4]
mov dword [esi], edx
mov dword [esi + 4], eax
add esi, 8
mov dword [ebp - 4], esi
mov esi, ecx
mov ecx, esi
mov esi, dword [ebp - 8]
lodsd eax, dword [esi]
mov edx, eax
lodsd eax, dword [esi]
mov dword [ebp - 8], esi
mov esi, ecx
xchg edx, eax
mov ecx, 0x20
push ebp
mov ebp, eax
add eax, dword [esi]
add esi, 4
movzx ebx, al
xor edx, dword [edi + ebx*4]
mov bl, ah
xor edx, dword [edi + ebx*4 + 0x400]
shr eax, 0x10
mov bl, ah
xor edx, dword [edi + ebx*4 + 0xc00]
mov bl, al
xor edx, dword [edi + ebx*4 + 0x800]
mov eax, edx
mov edx, ebp
loop 0x478715
pop ebp
mov ecx, esi
mov esi, dword [ebp - 4]
mov dword [esi], edx
mov dword [esi + 4], eax
add esi, 8
mov dword [ebp - 4], esi
mov esi, ecx
popal
mov eax, dword [ebp - 0x14]
mov dword [ebp - 4], eax
mov esi, dword [ebp - 4]
mov ecx, 6
lodsd eax, dword [esi]
mov edx, eax
shr edx, 0x10
xor edx, eax
lodsd eax, dword [esi]
mov ebx, eax
xor edx, eax
rol eax, 0x10
xor edx, eax
mov eax, dword [esi + 0x10]
xor edx, eax
mov eax, dword [esi + 0x14]
shr eax, 0x10
xor dx, ax
mov eax, edx
shl eax, 0x10
xor edx, eax
lodsd eax, dword [esi]
mov edi, eax
shl eax, 0x10
xor edx, eax
mov dword [esi + 0x14], edx
mov edx, ebx
shr edx, 0x10
xor edx, ebx
mov eax, edi
loop 0x478771
add dword [ebp - 4], 0x18
mov ecx, 8
mov esi, dword [ebp - 0x10]
mov edi, dword [ebp - 4]
mov ebx, dword [ebp + 0xc]
xor edx, edx
lodsd eax, dword [esi]
shrd edx, eax, 0x10
xor edx, dword [ebx]
xor dword [edi], edx
add edi, 4
add ebx, 4
mov edx, eax
loop 0x4787b9
xor edx, dword [esi - 0xc]
mov dx, ax
xor edx, dword [esi - 0x20]
xor dx, word [esi - 0x1c]
mov eax, edx
shr eax, 0x10
xor ax, dx
xor dword [edi - 0x20], eax
mov esi, dword [ebp - 4]
mov ecx, 1
lodsd eax, dword [esi]
mov edx, eax
shr edx, 0x10
xor edx, eax
lodsd eax, dword [esi]
mov ebx, eax
xor edx, eax
rol eax, 0x10
xor edx, eax
mov eax, dword [esi + 0x10]
xor edx, eax
mov eax, dword [esi + 0x14]
shr eax, 0x10
xor dx, ax
mov eax, edx
shl eax, 0x10
xor edx, eax
lodsd eax, dword [esi]
mov edi, eax
shl eax, 0x10
xor edx, eax
mov dword [esi + 0x14], edx
mov edx, ebx
shr edx, 0x10
xor edx, ebx
mov eax, edi
loop 0x4787f5
add dword [ebp - 4], 4
mov esi, dword [ebp - 4]
mov ecx, 0x1e
lodsd eax, dword [esi]
mov edx, eax
shr edx, 0x10
xor edx, eax
lodsd eax, dword [esi]
mov ebx, eax
xor edx, eax
rol eax, 0x10
xor edx, eax
mov eax, dword [esi + 0x10]
xor edx, eax
mov eax, dword [esi + 0x14]
shr eax, 0x10
xor dx, ax
mov eax, edx
shl eax, 0x10
xor edx, eax
lodsd eax, dword [esi]
mov edi, eax
shl eax, 0x10
xor edx, eax
mov dword [esi + 0x14], edx
mov edx, ebx
shr edx, 0x10
xor edx, ebx
mov eax, edi
loop 0x47883e
mov eax, dword [ebp - 4]
mov ecx, dword [ebp - 0x10]
add eax, 0x78
push 0x20
push eax
push ecx
mov dword [ebp - 4], eax
mov dword [ebp - 0x10], ecx
call fcn.004d0d60
add esp, 0xc
mov esi, dword [ebp + 0xc]
mov edi, dword [ebp - 0x30]
mov ecx, 8
xor edx, edx
shr edx, 1
lodsd eax, dword [esi]
adc dword [edi], eax
setb dl
add edi, 4
loop 0x47889a
mov ecx, dword [ebp + 0xc]
mov edi, dword [ebp + 0x10]
add ecx, 0x20
mov ebx, dword [ebp + 8]
sub edi, 0x20
sub dword [ebp - 0x18], 1
mov eax, dword [ebp - 0xc]
mov dword [ebp + 0xc], ecx
mov dword [ebp + 0x10], edi
lea edx, [ebx + 0x38]
jne 0x478020
jmp 0x4788d1
mov ecx, dword [ebp + 0xc]
mov eax, dword [ebp + 8]
mov dword [eax + 0x358], edi
test edi, edi
je 0x4788ee
push edi
push ecx
add eax, 0x30c
push eax
call fcn.004d0d60
add esp, 0xc
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret