Function at 0x4bc590
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x18
push ebx
push ebp
push esi
push edi
mov esi, ecx
call fcn.004bc240
mov ebx, dword [esp + 0x30]
mov eax, ebx
sub eax, 0x80
je 0x4bc5e0
sub eax, 0x40
je 0x4bc5d2
sub eax, 0x40
je 0x4bc5c4
pop edi
pop esi
pop ebp
mov eax, 0x80070057
pop ebx
add esp, 0x18
ret 8
lea eax, [esi + 0x3a40]
mov dword [eax], 0xe
jmp 0x4bc5ec
lea eax, [esi + 0x3a40]
mov dword [eax], 0xc
jmp 0x4bc5ec
lea eax, [esi + 0x3a40]
mov dword [eax], 0xa
mov edx, dword [esp + 0x2c]
lea ebp, [esi + 0x3840]
shr ebx, 5
xor edi, edi
mov dword [esp + 0x10], eax
add edx, 2
movzx ecx, byte [edx - 2]
lea edx, [edx + 4]
movzx eax, byte [edx - 5]
shl ecx, 8
or ecx, eax
movzx eax, byte [edx - 4]
shl ecx, 8
or ecx, eax
movzx eax, byte [edx - 3]
shl ecx, 8
or ecx, eax
mov dword [ebp + edi*4], ecx
inc edi
cmp edi, ebx
jl 0x4bc602
mov eax, dword [esp + 0x30]
lea ecx, [esi + 0x3a40]
mov dword [esp + 0x2c], ecx
sub eax, 0x80
je 0x4bd07c
sub eax, 0x40
je 0x4bcc4e
sub eax, 0x40
jne 0x4bd434
mov ecx, dword [ebp + 0x1c]
lea edi, [esi + 0x3840]
mov eax, ecx
mov edx, dword [edi + 0xc]
shr eax, 0x10
movzx eax, al
mov dword [esp + 0x2c], ecx
mov ebp, dword [esi + eax*4 + 0x10]
mov eax, ecx
shr eax, 8
movzx eax, al
shl ebp, 8
xor ebp, dword [esi + eax*4 + 0x10]
movzx eax, cl
shl ebp, 8
xor ebp, dword [esi + eax*4 + 0x10]
mov eax, ecx
mov ecx, dword [edi + 8]
shr eax, 0x18
shl ebp, 8
xor ebp, dword [esi + eax*4 + 0x10]
xor ebp, dword [esi + 0x2810]
xor ebp, dword [edi]
mov eax, dword [edi + 4]
xor eax, ebp
mov dword [edi + 0x20], ebp
xor ecx, eax
mov dword [edi + 0x24], eax
mov dword [esp + 0x14], eax
xor edx, ecx
mov dword [edi + 0x28], ecx
mov eax, edx
shr eax, 0x18
mov dword [edi + 0x2c], edx
mov dword [esp + 0x18], ecx
mov ecx, dword [esp + 0x2c]
mov ebx, dword [esi + eax*4 + 0x10]
mov eax, edx
shr eax, 0x10
movzx eax, al
shl ebx, 8
xor ebx, dword [esi + eax*4 + 0x10]
mov eax, edx
shr eax, 8
movzx eax, al
shl ebx, 8
xor ebx, dword [esi + eax*4 + 0x10]
shl ebx, 8
movzx eax, dl
xor ebx, dword [esi + eax*4 + 0x10]
xor ebx, dword [edi + 0x10]
mov dword [edi + 0x30], ebx
mov edi, dword [edi + 0x14]
xor edi, ebx
mov dword [esp + 0x1c], ebx
mov ebx, dword [esi + 0x3858]
xor ebx, edi
mov dword [esi + 0x3874], edi
xor ecx, ebx
mov dword [esi + 0x3878], ebx
mov eax, ecx
mov dword [esi + 0x387c], ecx
shr eax, 0x10
movzx eax, al
mov dword [esp + 0x2c], ecx
mov eax, dword [esi + eax*4 + 0x10]
shl eax, 8
mov dword [esp + 0x30], eax
mov eax, ecx
mov ecx, dword [esp + 0x30]
shr eax, 8
movzx eax, al
xor ecx, dword [esi + eax*4 + 0x10]
mov eax, dword [esp + 0x2c]
mov dword [esp + 0x30], ecx
shl dword [esp + 0x30], 8
mov ecx, dword [esp + 0x30]
movzx eax, al
xor ecx, dword [esi + eax*4 + 0x10]
mov dword [esp + 0x30], ecx
shl dword [esp + 0x30], 8
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0x30]
shr eax, 0x18
xor ecx, dword [esi + eax*4 + 0x10]
mov eax, ecx
mov dword [esp + 0x30], ecx
xor eax, dword [esi + 0x2814]
xor eax, ebp
mov ecx, dword [esp + 0x14]
xor ecx, eax
mov dword [esi + 0x3880], eax
mov dword [esp + 0x30], eax
mov dword [esi + 0x3884], ecx
mov dword [esp + 0x14], ecx
xor ecx, dword [esp + 0x18]
mov dword [esi + 0x3888], ecx
mov dword [esp + 0x18], ecx
xor ecx, edx
mov dword [esi + 0x388c], ecx
mov eax, ecx
shr eax, 0x18
mov edx, dword [esi + eax*4 + 0x10]
mov eax, ecx
shr eax, 0x10
movzx eax, al
shl edx, 8
xor edx, dword [esi + eax*4 + 0x10]
mov eax, ecx
shr eax, 8
movzx eax, al
shl edx, 8
xor edx, dword [esi + eax*4 + 0x10]
movzx eax, cl
shl edx, 8
xor edx, dword [esi + eax*4 + 0x10]
xor edx, dword [esp + 0x1c]
mov dword [esi + 0x3890], edx
mov dword [esp + 0x1c], edx
xor edx, edi
mov edi, edx
mov dword [esi + 0x3894], edx
xor edi, ebx
mov ebx, edi
mov dword [esi + 0x3898], edi
xor ebx, dword [esp + 0x2c]
mov eax, ebx
mov dword [esi + 0x389c], ebx
shr eax, 0x10
movzx eax, al
mov eax, dword [esi + eax*4 + 0x10]
shl eax, 8
mov dword [esp + 0x2c], eax
mov eax, ebx
mov ebp, dword [esp + 0x2c]
shr eax, 8
movzx eax, al
xor ebp, dword [esi + eax*4 + 0x10]
mov dword [esp + 0x2c], ebp
shl dword [esp + 0x2c], 8
mov ebp, dword [esp + 0x2c]
movzx eax, bl
xor ebp, dword [esi + eax*4 + 0x10]
mov eax, ebx
shr eax, 0x18
mov dword [esp + 0x2c], ebp
shl dword [esp + 0x2c], 8
mov ebp, dword [esp + 0x2c]
xor ebp, dword [esi + eax*4 + 0x10]
mov eax, ebp
mov dword [esp + 0x2c], ebp
xor eax, dword [esi + 0x2818]
xor eax, dword [esp + 0x30]
mov dword [esp + 0x2c], eax
mov dword [esi + 0x38a0], eax
xor eax, dword [esp + 0x14]
mov dword [esp + 0x20], eax
mov dword [esi + 0x38a4], eax
xor eax, dword [esp + 0x18]
mov dword [esp + 0x18], eax
mov dword [esi + 0x38a8], eax
xor eax, ecx
mov dword [esi + 0x38ac], eax
mov dword [esp + 0x30], eax
mov ecx, eax
shr eax, 0x18
mov ebp, dword [esi + eax*4 + 0x10]
mov eax, ecx
shr eax, 0x10
movzx eax, al
shl ebp, 8
xor ebp, dword [esi + eax*4 + 0x10]
mov eax, ecx
shr eax, 8
movzx eax, al
shl ebp, 8
xor ebp, dword [esi + eax*4 + 0x10]
movzx eax, cl
shl ebp, 8
xor ebp, dword [esi + eax*4 + 0x10]
xor ebp, dword [esp + 0x1c]
mov dword [esi + 0x38b0], ebp
mov dword [esp + 0x1c], ebp
xor ebp, edx
mov edx, ebp
mov dword [esi + 0x38b4], ebp
xor edx, edi
mov eax, edx
mov dword [esi + 0x38b8], edx
xor eax, ebx
mov dword [esi + 0x38bc], eax
mov dword [esp + 0x14], eax
mov ebx, eax
shr eax, 0x10
movzx eax, al
mov edi, dword [esi + eax*4 + 0x10]
mov eax, ebx
shr eax, 8
movzx eax, al
shl edi, 8
xor edi, dword [esi + eax*4 + 0x10]
shl edi, 8
movzx eax, bl
xor edi, dword [esi + eax*4 + 0x10]
mov eax, ebx
shr eax, 0x18
shl edi, 8
xor edi, dword [esi + eax*4 + 0x10]
xor edi, dword [esi + 0x281c]
xor edi, dword [esp + 0x2c]
mov dword [esi + 0x38c0], edi
mov dword [esp + 0x24], edi
xor edi, dword [esp + 0x20]
mov eax, edi
mov dword [esi + 0x38c4], edi
xor eax, dword [esp + 0x18]
mov dword [esi + 0x38c8], eax
mov dword [esp + 0x20], eax
xor eax, ecx
mov dword [esi + 0x38cc], eax
mov dword [esp + 0x30], eax
shr eax, 0x18
mov ecx, dword [esi + eax*4 + 0x10]
mov eax, dword [esp + 0x30]
shr eax, 0x10
movzx eax, al
shl ecx, 8
xor ecx, dword [esi + eax*4 + 0x10]
mov eax, dword [esp + 0x30]
shr eax, 8
movzx eax, al
shl ecx, 8
xor ecx, dword [esi + eax*4 + 0x10]
mov eax, dword [esp + 0x30]
movzx eax, al
shl ecx, 8
xor ecx, dword [esi + eax*4 + 0x10]
xor ecx, dword [esp + 0x1c]
mov dword [esp + 0x1c], ecx
mov dword [esi + 0x38d0], ecx
xor ecx, ebp
mov dword [esi + 0x38d4], ecx
mov ebp, ecx
xor ebp, edx
mov eax, ebp
mov dword [esi + 0x38d8], ebp
xor eax, ebx
mov dword [esi + 0x38dc], eax
mov dword [esp + 0x2c], eax
shr eax, 0x10
mov ebx, dword [esp + 0x2c]
movzx eax, al
mov edx, dword [esi + eax*4 + 0x10]
mov eax, ebx
shr eax, 8
movzx eax, al
shl edx, 8
xor edx, dword [esi + eax*4 + 0x10]
movzx eax, bl
shl edx, 8
xor edx, dword [esi + eax*4 + 0x10]
mov eax, ebx
shr eax, 0x18
shl edx, 8
xor edx, dword [esi + eax*4 + 0x10]
xor edx, dword [esi + 0x2820]
xor edx, dword [esp + 0x24]
mov eax, dword [esp + 0x30]
mov dword [esi + 0x38e0], edx
mov dword [esp + 0x24], edx
xor edx, edi
mov edi, edx
mov dword [esi + 0x38e4], edx
xor edi, dword [esp + 0x20]
xor eax, edi
mov dword [esi + 0x38e8], edi
mov dword [esi + 0x38ec], eax
mov dword [esp + 0x30], eax
shr eax, 0x18
mov ebx, dword [esi + eax*4 + 0x10]
mov eax, dword [esp + 0x30]
shr eax, 0x10
movzx eax, al
shl ebx, 8
xor ebx, dword [esi + eax*4 + 0x10]
mov eax, dword [esp + 0x30]
shr eax, 8
movzx eax, al
shl ebx, 8
xor ebx, dword [esi + eax*4 + 0x10]
mov eax, dword [esp + 0x30]
movzx eax, al
shl ebx, 8
xor ebx, dword [esi + eax*4 + 0x10]
xor ebx, dword [esp + 0x1c]
mov eax, dword [esp + 0x2c]
mov dword [esi + 0x38f0], ebx
mov dword [esp + 0x20], ebx
xor ebx, ecx
mov ecx, ebx
mov dword [esi + 0x38f4], ebx
xor ecx, ebp
xor eax, ecx
mov dword [esi + 0x38f8], ecx
mov dword [esi + 0x38fc], eax
mov dword [esp + 0x2c], eax
shr eax, 0x10
movzx eax, al
mov ebp, dword [esi + eax*4 + 0x10]
mov eax, dword [esp + 0x2c]
shr eax, 8
movzx eax, al
shl ebp, 8
xor ebp, dword [esi + eax*4 + 0x10]
mov eax, dword [esp + 0x2c]
movzx eax, al
shl ebp, 8
xor ebp, dword [esi + eax*4 + 0x10]
mov eax, dword [esp + 0x2c]
shr eax, 0x18
shl ebp, 8
xor ebp, dword [esi + eax*4 + 0x10]
xor ebp, dword [esi + 0x2824]
xor ebp, dword [esp + 0x24]
mov dword [esi + 0x3900], ebp
mov dword [esp + 0x24], ebp
xor ebp, edx
mov dword [esi + 0x3904], ebp
mov dword [esp + 0x1c], ebp
xor ebp, edi
mov dword [esi + 0x3908], ebp
mov eax, ebp
xor eax, dword [esp + 0x30]
mov dword [esi + 0x390c], eax
mov dword [esp + 0x30], eax
shr eax, 0x18
mov edx, dword [esi + eax*4 + 0x10]
mov eax, dword [esp + 0x30]
shr eax, 0x10
movzx eax, al
shl edx, 8
xor edx, dword [esi + eax*4 + 0x10]
mov eax, dword [esp + 0x30]
shr eax, 8
movzx eax, al
shl edx, 8
xor edx, dword [esi + eax*4 + 0x10]
mov eax, dword [esp + 0x30]
movzx eax, al
shl edx, 8
xor edx, dword [esi + eax*4 + 0x10]
xor edx, dword [esp + 0x20]
mov eax, edx
mov dword [esi + 0x3910], edx
xor eax, ebx
mov dword [esp + 0x20], edx
mov dword [esi + 0x3914], eax
mov edi, eax
xor edi, ecx
mov dword [esp + 0x18], eax
mov ebx, edi
mov dword [esi + 0x3918], edi
xor ebx, dword [esp + 0x2c]
mov eax, ebx
mov dword [esi + 0x391c], ebx
shr eax, 0x10
movzx eax, al
mov ecx, dword [esi + eax*4 + 0x10]
mov eax, ebx
shr eax, 8
movzx eax, al
shl ecx, 8
xor ecx, dword [esi + eax*4 + 0x10]
shl ecx, 8
movzx eax, bl
xor ecx, dword [esi + eax*4 + 0x10]
mov eax, ebx
shr eax, 0x18
shl ecx, 8
xor ecx, dword [esi + eax*4 + 0x10]
xor ecx, dword [esi + 0x2828]
xor ecx, dword [esp + 0x24]
mov eax, dword [esp + 0x1c]
xor eax, ecx
mov dword [esi + 0x3920], ecx
mov dword [esi + 0x3924], eax
xor ebp, eax
mov eax, dword [esp + 0x30]
xor eax, ebp
mov dword [esi + 0x3928], ebp
mov dword [esi + 0x392c], eax
mov dword [esp + 0x30], eax
shr eax, 0x18
mov ecx, dword [esi + eax*4 + 0x10]
mov eax, dword [esp + 0x30]
shr eax, 0x10
movzx eax, al
shl ecx, 8
xor ecx, dword [esi + eax*4 + 0x10]
mov eax, dword [esp + 0x30]
shr eax, 8
movzx eax, al
shl ecx, 8
xor ecx, dword [esi + eax*4 + 0x10]
shl ecx, 8
mov eax, dword [esp + 0x30]
lea ebp, [esi + 0x3920]
movzx eax, al
xor ecx, dword [esi + eax*4 + 0x10]
mov eax, dword [esp + 0x18]
xor ecx, edx
xor eax, ecx
mov dword [esi + 0x3930], ecx
xor edi, eax
mov dword [esi + 0x3934], eax
mov eax, dword [esp + 0x10]
xor ebx, edi
mov dword [esi + 0x3938], edi
mov dword [esi + 0x393c], ebx
mov dword [esp + 0x2c], eax
jmp 0x4bd43e
mov ecx, dword [ebp + 0x14]
mov eax, ecx
shr eax, 0x10
movzx eax, al
mov edx, dword [ebp + 0xc]
mov edi, dword [ebp + 0x10]
mov dword [esp + 0x30], ecx
mov ebx, dword [esi + eax*4 + 0x10]
mov eax, ecx
shr eax, 8
movzx eax, al
shl ebx, 8
xor ebx, dword [esi + eax*4 + 0x10]
movzx eax, cl
shl ebx, 8
xor ebx, dword [esi + eax*4 + 0x10]
mov eax, ecx
mov ecx, dword [ebp + 8]
shr eax, 0x18
shl ebx, 8
xor ebx, dword [esi + eax*4 + 0x10]
xor ebx, dword [esi + 0x2810]
xor ebx, dword [ebp]
mov eax, dword [ebp + 4]
xor eax, ebx
mov dword [ebp + 0x18], ebx
mov dword [ebp + 0x1c], eax
xor ecx, eax
mov dword [esp + 0x2c], eax
xor edx, ecx
mov eax, dword [esp + 0x30]
xor edi, edx
xor eax, edi
mov dword [ebp + 0x20], ecx
mov dword [ebp + 0x2c], eax
mov dword [esp + 0x30], eax
shr eax, 0x10
movzx eax, al
mov dword [ebp + 0x24], edx
mov dword [ebp + 0x28], edi
mov ebp, dword [esi + eax*4 + 0x10]
mov eax, dword [esp + 0x30]
shr eax, 8
movzx eax, al
shl ebp, 8
xor ebp, dword [esi + eax*4 + 0x10]
mov eax, dword [esp + 0x30]
movzx eax, al
shl ebp, 8
xor ebp, dword [esi + eax*4 + 0x10]
mov eax, dword [esp + 0x30]
shr eax, 0x18
shl ebp, 8
xor ebp, dword [esi + eax*4 + 0x10]
xor ebp, dword [esi + 0x2814]
mov eax, dword [esp + 0x2c]
xor ebp, ebx
xor eax, ebp
mov dword [esi + 0x3870], ebp
mov ebx, eax
mov dword [esi + 0x3874], eax
xor ebx, ecx
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x30]
mov ecx, ebx
xor ecx, edx
mov dword [esi + 0x3878], ebx
mov edx, ecx
mov dword [esi + 0x387c], ecx
xor edx, edi
xor eax, edx
mov dword [esi + 0x3880], edx
mov dword [esi + 0x3884], eax
mov dword [esp + 0x30], eax
shr eax, 0x10
movzx eax, al
mov edi, dword [esi + eax*4 + 0x10]
mov eax, dword [esp + 0x30]
shl edi, 8
shr eax, 8
movzx eax, al
xor edi, dword [esi + eax*4 + 0x10]
mov eax, dword [esp + 0x30]
movzx eax, al
shl edi, 8
xor edi, dword [esi + eax*4 + 0x10]
mov eax, dword [esp + 0x30]
shr eax, 0x18
shl edi, 8
xor edi, dword [esi + eax*4 + 0x10]
xor edi, dword [esi + 0x2818]
mov eax, dword [esp + 0x30]
xor edi, ebp
mov dword [esi + 0x3888], edi
mov dword [esp + 0x24], edi
xor edi, dword [esp + 0x2c]
mov ebp, edi
mov dword [esi + 0x388c], edi
xor ebp, ebx
mov ebx, ebp
mov dword [esi + 0x3890], ebp
xor ebx, ecx
mov ecx, ebx
mov dword [esi + 0x3894], ebx
xor ecx, edx
xor eax, ecx
mov dword [esi + 0x3898], ecx
mov dword [esi + 0x389c], eax
mov dword [esp + 0x30], eax
shr eax, 0x10
movzx eax, al
mov edx, dword [esi + eax*4 + 0x10]
mov eax, dword [esp + 0x30]
shr eax, 8
movzx eax, al
shl edx, 8
xor edx, dword [esi + eax*4 + 0x10]
mov eax, dword [esp + 0x30]
movzx eax, al
shl edx, 8
xor edx, dword [esi + eax*4 + 0x10]
mov eax, dword [esp + 0x30]
shr eax, 0x18
shl edx, 8
xor edx, dword [esi + eax*4 + 0x10]
xor edx, dword [esi + 0x281c]
xor edx, dword [esp + 0x24]
mov eax, dword [esp + 0x30]
mov dword [esi + 0x38a0], edx
mov dword [esp + 0x2c], edx
xor edx, edi
mov edi, edx
mov dword [esi + 0x38a4], edx
xor edi, ebp
mov ebp, edi
mov dword [esi + 0x38a8], edi
xor ebp, ebx
mov ebx, ebp
mov dword [esi + 0x38ac], ebp
xor ebx, ecx
xor eax, ebx
mov dword [esi + 0x38b0], ebx
mov dword [esi + 0x38b4], eax
mov dword [esp + 0x30], eax
shr eax, 0x10
movzx eax, al
mov ecx, dword [esi + eax*4 + 0x10]
mov eax, dword [esp + 0x30]
shr eax, 8
movzx eax, al
shl ecx, 8
xor ecx, dword [esi + eax*4 + 0x10]
mov eax, dword [esp + 0x30]
movzx eax, al
shl ecx, 8
xor ecx, dword [esi + eax*4 + 0x10]
mov eax, dword [esp + 0x30]
shr eax, 0x18
shl ecx, 8
xor ecx, dword [esi + eax*4 + 0x10]
xor ecx, dword [esi + 0x2820]
xor ecx, dword [esp + 0x2c]
mov dword [esi + 0x38b8], ecx
lea eax, [esi + 0x3840]
mov dword [esp + 0x2c], ecx
xor ecx, edx
mov dword [eax + 0x7c], ecx
mov edx, ecx
xor edx, edi
mov dword [eax + 0x80], edx
mov edi, edx
xor edi, ebp
mov dword [esp + 0x24], edx
mov dword [eax + 0x84], edi
mov ebp, edi
xor ebp, ebx
mov dword [eax + 0x88], ebp
mov ebx, ebp
xor ebx, dword [esp + 0x30]
mov dword [eax + 0x8c], ebx
mov eax, ebx
shr eax, 0x10
movzx eax, al
mov eax, dword [esi + eax*4 + 0x10]
shl eax, 8
mov dword [esp + 0x30], eax
mov eax, ebx
mov edx, dword [esp + 0x30]
shr eax, 8
movzx eax, al
xor edx, dword [esi + eax*4 + 0x10]
movzx eax, bl
mov dword [esp + 0x30], edx
shl dword [esp + 0x30], 8
mov edx, dword [esp + 0x30]
xor edx, dword [esi + eax*4 + 0x10]
mov eax, ebx
shr eax, 0x18
mov dword [esp + 0x30], edx
shl dword [esp + 0x30], 8
mov edx, dword [esp + 0x30]
xor edx, dword [esi + eax*4 + 0x10]
mov eax, edx
mov dword [esp + 0x30], edx
xor eax, dword [esi + 0x2824]
xor eax, dword [esp + 0x2c]
mov dword [esi + 0x38d0], eax
mov dword [esp + 0x30], eax
xor eax, ecx
mov ecx, eax
mov dword [esi + 0x38d4], eax
xor ecx, dword [esp + 0x24]
mov dword [esp + 0x20], eax
mov edx, ecx
xor edx, edi
mov dword [esi + 0x38d8], ecx
mov edi, edx
mov dword [esi + 0x38dc], edx
xor edi, ebp
mov eax, edi
mov dword [esi + 0x38e0], edi
xor eax, ebx
mov dword [esi + 0x38e4], eax
mov dword [esp + 0x2c], eax
shr eax, 0x10
movzx eax, al
mov ebx, dword [esi + eax*4 + 0x10]
mov eax, dword [esp + 0x2c]
shr eax, 8
movzx eax, al
shl ebx, 8
xor ebx, dword [esi + eax*4 + 0x10]
mov eax, dword [esp + 0x2c]
movzx eax, al
shl ebx, 8
xor ebx, dword [esi + eax*4 + 0x10]
mov eax, dword [esp + 0x2c]
shr eax, 0x18
shl ebx, 8
xor ebx, dword [esi + eax*4 + 0x10]
xor ebx, dword [esi + 0x2828]
xor ebx, dword [esp + 0x30]
mov dword [esp + 0x30], ebx
mov dword [esi + 0x38e8], ebx
xor ebx, dword [esp + 0x20]
mov ebp, ebx
mov dword [esi + 0x38ec], ebx
xor ebp, ecx
mov eax, ebp
mov dword [esi + 0x38f0], ebp
xor eax, edx
mov dword [esi + 0x38f4], eax
mov edx, eax
mov dword [esp + 0x24], eax
xor edx, edi
mov eax, dword [esp + 0x2c]
xor eax, edx
mov dword [esi + 0x38f8], edx
mov dword [esi + 0x38fc], eax
mov dword [esp + 0x2c], eax
shr eax, 0x10
movzx eax, al
mov ecx, dword [esi + eax*4 + 0x10]
mov eax, dword [esp + 0x2c]
shl ecx, 8
shr eax, 8
movzx eax, al
xor ecx, dword [esi + eax*4 + 0x10]
mov eax, dword [esp + 0x2c]
shl ecx, 8
movzx eax, al
xor ecx, dword [esi + eax*4 + 0x10]
mov eax, dword [esp + 0x2c]
shl ecx, 8
shr eax, 0x18
xor ecx, dword [esi + eax*4 + 0x10]
xor ecx, dword [esi + 0x282c]
xor ecx, dword [esp + 0x30]
mov eax, dword [esp + 0x10]
mov dword [esi + 0x3900], ecx
xor ecx, ebx
mov dword [esi + 0x3904], ecx
xor ecx, ebp
mov dword [esi + 0x3908], ecx
lea ebp, [esi + 0x3900]
xor ecx, dword [esp + 0x24]
mov dword [esi + 0x390c], ecx
xor ecx, edx
mov edx, dword [esp + 0x2c]
xor edx, ecx
mov dword [esi + 0x3910], ecx
mov dword [esi + 0x3914], edx
mov dword [esp + 0x2c], eax
jmp 0x4bd43e
mov ebx, dword [ebp + 0xc]
mov eax, ebx
shr eax, 0x10
movzx eax, al
mov ecx, dword [ebp + 4]
mov edx, dword [ebp + 8]
mov edi, dword [esi + eax*4 + 0x10]
mov eax, ebx
shr eax, 8
movzx eax, al
shl edi, 8
xor edi, dword [esi + eax*4 + 0x10]
movzx eax, bl
shl edi, 8
xor edi, dword [esi + eax*4 + 0x10]
mov eax, ebx
shr eax, 0x18
shl edi, 8
xor edi, dword [esi + eax*4 + 0x10]
xor edi, dword [esi + 0x2810]
xor edi, dword [ebp]
xor ecx, edi
mov dword [ebp + 0x10], edi
xor edx, ecx
mov dword [ebp + 0x14], ecx
xor ebx, edx
mov dword [ebp + 0x18], edx
mov dword [ebp + 0x1c], ebx
mov eax, ebx
shr eax, 0x10
movzx eax, al
mov dword [esp + 0x30], ebx
mov ebx, dword [esi + eax*4 + 0x10]
mov eax, dword [esp + 0x30]
shr eax, 8
movzx eax, al
shl ebx, 8
xor ebx, dword [esi + eax*4 + 0x10]
mov eax, dword [esp + 0x30]
movzx eax, al
shl ebx, 8
xor ebx, dword [esi + eax*4 + 0x10]
mov eax, dword [esp + 0x30]
shr eax, 0x18
shl ebx, 8
xor ebx, dword [esi + eax*4 + 0x10]
xor ebx, dword [esi + 0x2814]
xor ebx, edi
mov edi, ebx
mov dword [ebp + 0x20], ebx
xor edi, ecx
mov ecx, edi
mov dword [ebp + 0x24], edi
xor ecx, edx
mov edx, ecx
mov dword [ebp + 0x28], ecx
xor edx, dword [esp + 0x30]
mov dword [ebp + 0x2c], edx
mov eax, edx
shr eax, 0x10
movzx eax, al
mov ebp, dword [esi + eax*4 + 0x10]
mov eax, edx
shr eax, 8
shl ebp, 8
movzx eax, al
xor ebp, dword [esi + eax*4 + 0x10]
shl ebp, 8
movzx eax, dl
xor ebp, dword [esi + eax*4 + 0x10]
mov eax, edx
shr eax, 0x18
shl ebp, 8
xor ebp, dword [esi + eax*4 + 0x10]
xor ebp, dword [esi + 0x2818]
xor ebp, ebx
mov ebx, ebp
mov dword [esi + 0x3870], ebp
xor ebx, edi
mov dword [esi + 0x3874], ebx
mov edi, ebx
xor edi, ecx
mov dword [esi + 0x3878], edi
mov ecx, edi
xor ecx, edx
mov dword [esi + 0x387c], ecx
mov eax, ecx
shr eax, 0x10
movzx eax, al
mov edx, dword [esi + eax*4 + 0x10]
mov eax, ecx
shr eax, 8
movzx eax, al
shl edx, 8
xor edx, dword [esi + eax*4 + 0x10]
movzx eax, cl
shl edx, 8
xor edx, dword [esi + eax*4 + 0x10]
mov eax, ecx
shr eax, 0x18
shl edx, 8
xor edx, dword [esi + eax*4 + 0x10]
xor edx, dword [esi + 0x281c]
xor edx, ebp
mov dword [esi + 0x3880], edx
mov dword [esp + 0x2c], edx
xor edx, ebx
mov ebx, edx
mov dword [esi + 0x3884], edx
xor ebx, edi
mov eax, ebx
mov dword [esi + 0x3888], ebx
xor eax, ecx
mov dword [esi + 0x388c], eax
mov dword [esp + 0x30], eax
mov ecx, eax
shr eax, 0x10
movzx eax, al
mov ebp, dword [esi + eax*4 + 0x10]
mov eax, ecx
shr eax, 8
movzx eax, al
shl ebp, 8
xor ebp, dword [esi + eax*4 + 0x10]
movzx eax, cl
shl ebp, 8
xor ebp, dword [esi + eax*4 + 0x10]
mov eax, ecx
shr eax, 0x18
shl ebp, 8
xor ebp, dword [esi + eax*4 + 0x10]
xor ebp, dword [esi + 0x2820]
xor ebp, dword [esp + 0x2c]
mov edi, ebp
mov dword [esi + 0x3890], ebp
xor edi, edx
mov edx, edi
mov dword [esi + 0x3894], edi
xor edx, ebx
mov ebx, edx
mov dword [esi + 0x3898], edx
xor ebx, ecx
mov eax, ebx
mov dword [esi + 0x389c], ebx
shr eax, 0x10
movzx eax, al
mov ecx, dword [esi + eax*4 + 0x10]
mov eax, ebx
shr eax, 8
shl ecx, 8
movzx eax, al
xor ecx, dword [esi + eax*4 + 0x10]
shl ecx, 8
movzx eax, bl
xor ecx, dword [esi + eax*4 + 0x10]
mov eax, ebx
shr eax, 0x18
shl ecx, 8
xor ecx, dword [esi + eax*4 + 0x10]
xor ecx, dword [esi + 0x2824]
xor ecx, ebp
mov dword [esi + 0x38a0], ecx
mov ebp, ecx
xor ebp, edi
mov edi, ebp
mov dword [esi + 0x38a4], ebp
xor edi, edx
mov edx, edi
mov dword [esi + 0x38a8], edi
xor edx, ebx
mov ebx, edx
mov dword [esp + 0x30], edx
mov dword [esi + 0x38ac], ebx
mov eax, ebx
shr eax, 0x10
movzx eax, al
mov edx, dword [esi + eax*4 + 0x10]
mov eax, ebx
shr eax, 8
movzx eax, al
shl edx, 8
xor edx, dword [esi + eax*4 + 0x10]
shl edx, 8
movzx eax, bl
xor edx, dword [esi + eax*4 + 0x10]
mov eax, ebx
shr eax, 0x18
shl edx, 8
xor edx, dword [esi + eax*4 + 0x10]
xor edx, dword [esi + 0x2828]
xor edx, ecx
xor ebp, edx
mov dword [esi + 0x38b0], edx
xor edi, ebp
mov dword [esi + 0x38b4], ebp
xor ebx, edi
mov dword [esi + 0x38b8], edi
mov dword [esp + 0x30], edi
mov eax, ebx
shr eax, 0x10
movzx eax, al
mov dword [esi + 0x38bc], ebx
mov edi, dword [esi + eax*4 + 0x10]
mov eax, ebx
shr eax, 8
movzx eax, al
shl edi, 8
xor edi, dword [esi + eax*4 + 0x10]
shl edi, 8
movzx eax, bl
xor edi, dword [esi + eax*4 + 0x10]
mov eax, ebx
shr eax, 0x18
shl edi, 8
xor edi, dword [esi + eax*4 + 0x10]
xor edi, dword [esi + 0x282c]
xor edi, edx
mov ecx, edi
mov dword [esi + 0x38c0], edi
xor ecx, ebp
mov edx, ecx
mov dword [esi + 0x38c4], ecx
xor edx, dword [esp + 0x30]
xor ebx, edx
mov dword [esi + 0x38c8], edx
mov eax, ebx
mov dword [esi + 0x38cc], ebx
shr eax, 0x10
movzx eax, al
mov dword [esp + 0x30], ebx
mov ebp, dword [esi + eax*4 + 0x10]
mov eax, ebx
shr eax, 8
movzx eax, al
shl ebp, 8
xor ebp, dword [esi + eax*4 + 0x10]
movzx eax, bl
shl ebp, 8
xor ebp, dword [esi + eax*4 + 0x10]
mov eax, ebx
shr eax, 0x18
shl ebp, 8
xor ebp, dword [esi + eax*4 + 0x10]
xor ebp, dword [esi + 0x2830]
xor ebp, edi
mov edi, ebp
mov dword [esi + 0x38d0], ebp
xor edi, ecx
mov ebx, edi
mov dword [esi + 0x38d4], edi
xor ebx, edx
mov edx, dword [esp + 0x30]
xor edx, ebx
mov dword [esi + 0x38d8], ebx
mov eax, edx
mov dword [esi + 0x38dc], edx
shr eax, 0x10
movzx eax, al
mov ecx, dword [esi + eax*4 + 0x10]
mov eax, edx
shr eax, 8
shl ecx, 8
movzx eax, al
xor ecx, dword [esi + eax*4 + 0x10]
shl ecx, 8
movzx eax, dl
xor ecx, dword [esi + eax*4 + 0x10]
mov eax, edx
shl ecx, 8
shr eax, 0x18
xor ecx, dword [esi + eax*4 + 0x10]
xor ecx, dword [esi + 0x2834]
mov eax, dword [esp + 0x10]
xor ecx, ebp
mov dword [esi + 0x38e0], ecx
lea ebp, [esi + 0x38e0]
xor ecx, edi
mov dword [esp + 0x2c], eax
mov dword [esi + 0x38e4], ecx
xor ecx, ebx
mov dword [esi + 0x38e8], ecx
xor ecx, edx
mov dword [esi + 0x38ec], ecx
jmp 0x4bd43e
mov eax, dword [esp + 0x10]
lea ebp, [esi + 0x3840]
cmp dword [esi + 0x383c], 0
jne 0x4bd4a9
lea edx, [esi + 0x283c]
mov dword [esp + 0x2c], eax
mov edi, 0x100
jmp 0x4bd460
mov ecx, dword [edx - 0x282c]
lea edx, [edx + 4]
mov eax, dword [esi + ecx*4 + 0x1810]
mov dword [edx - 4], eax
mov eax, dword [esi + ecx*4 + 0x1c10]
mov dword [edx + 0x3fc], eax
mov eax, dword [esi + ecx*4 + 0x2010]
mov dword [edx + 0x7fc], eax
mov eax, dword [esi + ecx*4 + 0x2410]
mov dword [edx + 0xbfc], eax
sub edi, 1
jne 0x4bd460
mov dword [esi + 0x383c], 1
mov eax, dword [ebp]
lea edi, [esi + 0x3940]
mov dword [edi], eax
mov ebx, 1
mov eax, dword [ebp + 4]
mov dword [edi + 4], eax
mov eax, dword [ebp + 8]
mov dword [edi + 8], eax
mov eax, dword [ebp + 0xc]
add ebp, 0x10
mov dword [edi + 0xc], eax
add edi, 0x10
mov eax, dword [esp + 0x2c]
cmp dword [eax], ebx
jle 0x4bd5da
lea ecx, [ecx]
mov edx, dword [ebp - 0x20]
inc ebx
mov eax, edx
shr eax, 8
movzx ecx, al
mov eax, edx
shr eax, 0x10
movzx eax, al
mov ecx, dword [esi + ecx*4 + 0x303c]
xor ecx, dword [esi + eax*4 + 0x2c3c]
mov eax, edx
shr eax, 0x18
xor ecx, dword [esi + eax*4 + 0x283c]
movzx eax, dl
xor ecx, dword [esi + eax*4 + 0x343c]
mov dword [edi], ecx
mov edx, dword [ebp - 0x1c]
mov eax, edx
shr eax, 8
movzx ecx, al
mov eax, edx
shr eax, 0x10
movzx eax, al
mov ecx, dword [esi + ecx*4 + 0x303c]
xor ecx, dword [esi + eax*4 + 0x2c3c]
mov eax, edx
shr eax, 0x18
xor ecx, dword [esi + eax*4 + 0x283c]
movzx eax, dl
xor ecx, dword [esi + eax*4 + 0x343c]
mov dword [edi + 4], ecx
mov edx, dword [ebp - 0x18]
mov eax, edx
shr eax, 8
movzx ecx, al
mov eax, edx
shr eax, 0x10
movzx eax, al
mov ecx, dword [esi + ecx*4 + 0x303c]
xor ecx, dword [esi + eax*4 + 0x2c3c]
mov eax, edx
shr eax, 0x18
xor ecx, dword [esi + eax*4 + 0x283c]
movzx eax, dl
xor ecx, dword [esi + eax*4 + 0x343c]
mov dword [edi + 8], ecx
mov edx, dword [ebp - 0x14]
mov eax, edx
shr eax, 8
add ebp, 0xfffffff0
movzx ecx, al
mov eax, edx
shr eax, 0x10
movzx eax, al
mov ecx, dword [esi + ecx*4 + 0x303c]
xor ecx, dword [esi + eax*4 + 0x2c3c]
mov eax, edx
shr eax, 0x18
xor ecx, dword [esi + eax*4 + 0x283c]
movzx eax, dl
xor ecx, dword [esi + eax*4 + 0x343c]
mov eax, dword [esp + 0x2c]
mov dword [edi + 0xc], ecx
add edi, 0x10
cmp ebx, dword [eax]
jl 0x4bd4e0
mov eax, dword [ebp - 0x20]
mov dword [edi], eax
mov eax, dword [ebp - 0x1c]
mov dword [edi + 4], eax
mov eax, dword [ebp - 0x18]
mov dword [edi + 8], eax
mov eax, dword [ebp - 0x14]
mov dword [edi + 0xc], eax
xor eax, eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x18
ret 8