Function at 0x472920
Capabilities:
Encode data using xor
Encrypt data using aes
Reference aes constants
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x5f4608
mov eax, dword fs:[0]
push eax
sub esp, 0x68
mov eax, dword [0x6baac0]
xor eax, ebp
mov dword [ebp - 0x10], eax
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov edi, ecx
mov dword [ebp - 0x6c], edi
mov eax, dword [ebp + 0x10]
lea ecx, [ebp - 0x3c]
mov esi, dword [ebp + 0xc]
xorps xmm0, xmm0
mov dword [ebp - 0x70], eax
mov eax, dword [ebp + 0x14]
push str.initCrypt_aes2
push eax
mov dword [ebp - 0x74], esi
movq qword [ebp - 0x3c], xmm0
mov dword [ebp - 0x34], 0
call fcn.00430cc0
mov eax, dword [esi + 4]
mov dword [ebp - 4], 0
cmp eax, 3
je 0x4729a1
cmp eax, 6
je 0x4729a1
cmp eax, 2
je 0x4729a1
cmp eax, 5
je 0x4729a1
cmp eax, 4
mov al, byte [ebp + 8]
jne 0x4729a3
mov al, 1
mov byte [edi + 0x88], al
mov ecx, dword [esi + 0xc]
cmp ecx, 0xc1
jl 0x4729bd
mov dword [esi + 0xc], 0x100
jmp 0x4729d3
cmp ecx, 0x81
mov eax, 0x80
mov edx, 0xc0
cmovge eax, edx
mov dword [esi + 0xc], eax
mov eax, dword [esi + 0xc]
xorps xmm0, xmm0
add esi, 0x10
mov dword [ebp - 0x44], eax
mov ecx, esi
movups xmmword [ebp - 0x30], xmm0
movups xmmword [ebp - 0x20], xmm0
call fcn.00414910
test eax, eax
je 0x472a3b
mov ecx, esi
call fcn.00401c90
test eax, eax
je 0x472a3b
mov ecx, esi
call fcn.00401c90
mov ecx, esi
cmp eax, 0x20
jbe 0x472a21
call fcn.00414910
movups xmm0, xmmword [eax]
movups xmmword [ebp - 0x30], xmm0
movups xmm0, xmmword [eax + 0x10]
movups xmmword [ebp - 0x20], xmm0
jmp 0x472a3b
call fcn.00401c90
push eax
mov ecx, esi
call fcn.00414910
push eax
lea eax, [ebp - 0x30]
push eax
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
mov ecx, dword [ebp - 0x44]
mov eax, ecx
sub eax, 0x80
je 0x472a72
sub eax, 0x40
je 0x472a66
sub eax, 0x40
je 0x472a5a
mov byte [ebp - 0x55], 0
jmp 0x473bca
mov dword [edi + 0x28c], 0xe
jmp 0x472a7c
mov dword [edi + 0x28c], 0xc
jmp 0x472a7c
mov dword [edi + 0x28c], 0xa
sar ecx, 5
lea eax, [edi + 0x8c]
xor esi, esi
mov dword [ebp - 0x4c], eax
mov dword [ebp - 0x44], ecx
test ecx, ecx
jle 0x472ad5
mov edi, dword [ebp - 0x44]
mov ecx, eax
lea eax, [ebp - 0x2f]
sub ecx, eax
mov eax, ecx
nop dword [eax]
movzx edx, byte [ebp + esi*4 - 0x30]
movzx ecx, byte [ebp + esi*4 - 0x2f]
shl edx, 8
or edx, ecx
movzx ecx, byte [ebp + esi*4 - 0x2e]
shl edx, 8
or edx, ecx
movzx ecx, byte [ebp + esi*4 - 0x2d]
shl edx, 8
or edx, ecx
lea ecx, [eax + esi*4]
inc esi
mov dword [ebp + ecx - 0x2f], edx
cmp esi, edi
jl 0x472aa0
mov eax, dword [ebp - 0x4c]
mov edi, dword [ebp - 0x6c]
mov ecx, dword [edi + 0x28c]
cmp ecx, 0xa
jne 0x472f30
mov edx, dword [eax + 0xc]
mov ecx, edx
shr ecx, 0x10
movzx ecx, cl
mov esi, dword [eax + 4]
mov edi, dword [ecx*4 + str.cwko0]
mov ecx, edx
shr ecx, 8
xor edi, 1
movzx ecx, cl
shl edi, 8
xor edi, dword [ecx*4 + str.cwko0]
shl edi, 8
movzx ecx, dl
xor edi, dword [ecx*4 + str.cwko0]
mov ecx, edx
shr ecx, 0x18
shl edi, 8
xor edi, dword [ecx*4 + str.cwko0]
xor edi, dword [eax]
xor esi, edi
mov dword [ebp - 0x4c], edi
mov dword [eax + 0x10], edi
mov edi, dword [eax + 8]
xor edi, esi
mov dword [eax + 0x14], esi
mov ecx, edi
mov dword [ebp - 0x44], edi
xor ecx, edx
mov dword [eax + 0x18], edi
mov dword [ebp - 0x48], ecx
mov edx, ecx
mov dword [eax + 0x1c], ecx
shr ecx, 0x10
movzx ecx, cl
mov ecx, dword [ecx*4 + str.cwko0]
xor ecx, 2
shl ecx, 8
mov dword [ebp - 0x40], ecx
mov ecx, edx
mov edi, dword [ebp - 0x40]
shr ecx, 8
movzx ecx, cl
xor edi, dword [ecx*4 + str.cwko0]
movzx ecx, byte [eax + 0x1c]
mov dword [ebp - 0x40], edi
shl dword [ebp - 0x40], 8
mov edi, dword [ebp - 0x40]
xor edi, dword [ecx*4 + str.cwko0]
mov ecx, edx
shr ecx, 0x18
mov dword [ebp - 0x40], edi
shl dword [ebp - 0x40], 8
mov edi, dword [ebp - 0x40]
xor edi, dword [ecx*4 + str.cwko0]
mov ecx, edi
mov dword [ebp - 0x40], edi
xor ecx, dword [ebp - 0x4c]
mov dword [ebp - 0x40], ecx
mov dword [eax + 0x20], ecx
xor ecx, esi
mov esi, ecx
mov dword [ebp - 0x48], ecx
xor esi, dword [ebp - 0x44]
mov dword [eax + 0x24], ecx
mov edi, esi
xor edi, edx
mov dword [eax + 0x28], esi
mov ecx, edi
mov dword [ebp - 0x44], edi
shr ecx, 0x10
movzx ecx, cl
mov dword [eax + 0x2c], edi
mov edx, dword [ecx*4 + str.cwko0]
mov ecx, edi
shr ecx, 8
xor edx, 4
movzx ecx, cl
shl edx, 8
xor edx, dword [ecx*4 + str.cwko0]
shl edx, 8
movzx ecx, byte [eax + 0x2c]
xor edx, dword [ecx*4 + str.cwko0]
mov ecx, edi
shr ecx, 0x18
mov edi, dword [ebp - 0x48]
shl edx, 8
xor edx, dword [ecx*4 + str.cwko0]
xor edx, dword [ebp - 0x40]
mov ecx, dword [ebp - 0x44]
xor edi, edx
xor esi, edi
mov dword [eax + 0x34], edi
xor ecx, esi
mov dword [ebp - 0x48], esi
mov dword [ebp - 0x44], ecx
mov dword [eax + 0x3c], ecx
shr ecx, 0x10
movzx ecx, cl
mov dword [eax + 0x38], esi
mov dword [eax + 0x30], edx
mov esi, dword [ecx*4 + str.cwko0]
mov ecx, dword [ebp - 0x44]
xor esi, 8
shr ecx, 8
movzx ecx, cl
shl esi, 8
xor esi, dword [ecx*4 + str.cwko0]
movzx ecx, byte [eax + 0x3c]
shl esi, 8
xor esi, dword [ecx*4 + str.cwko0]
mov ecx, dword [ebp - 0x44]
shr ecx, 0x18
shl esi, 8
xor esi, dword [ecx*4 + str.cwko0]
xor esi, edx
mov dword [ebp - 0x4c], esi
mov dword [eax + 0x40], esi
xor esi, edi
mov dword [ebp - 0x50], esi
mov dword [eax + 0x44], esi
xor esi, dword [ebp - 0x48]
mov edi, esi
mov dword [eax + 0x48], esi
xor edi, dword [ebp - 0x44]
mov ecx, edi
mov dword [eax + 0x4c], edi
shr ecx, 0x10
movzx ecx, cl
mov ecx, dword [ecx*4 + str.cwko0]
xor ecx, 0x10
shl ecx, 8
mov dword [ebp - 0x40], ecx
mov ecx, edi
mov edx, dword [ebp - 0x40]
shr ecx, 8
movzx ecx, cl
xor edx, dword [ecx*4 + str.cwko0]
movzx ecx, byte [eax + 0x4c]
mov dword [ebp - 0x40], edx
shl dword [ebp - 0x40], 8
mov edx, dword [ebp - 0x40]
xor edx, dword [ecx*4 + str.cwko0]
mov ecx, edi
mov dword [ebp - 0x40], edx
shl dword [ebp - 0x40], 8
mov edx, dword [ebp - 0x40]
shr ecx, 0x18
xor edx, dword [ecx*4 + str.cwko0]
mov ecx, edx
mov dword [ebp - 0x40], edx
xor ecx, dword [ebp - 0x4c]
mov dword [ebp - 0x40], ecx
mov dword [eax + 0x50], ecx
xor ecx, dword [ebp - 0x50]
mov edx, ecx
mov dword [ebp - 0x50], ecx
xor edx, esi
mov dword [eax + 0x54], ecx
mov esi, edx
mov dword [eax + 0x58], edx
xor esi, edi
mov ecx, esi
mov dword [eax + 0x5c], esi
shr ecx, 0x10
movzx ecx, cl
mov edi, dword [ecx*4 + str.cwko0]
mov ecx, esi
shr ecx, 8
xor edi, 0x20
movzx ecx, cl
shl edi, 8
xor edi, dword [ecx*4 + str.cwko0]
movzx ecx, byte [eax + 0x5c]
shl edi, 8
xor edi, dword [ecx*4 + str.cwko0]
mov ecx, esi
shr ecx, 0x18
shl edi, 8
xor edi, dword [ecx*4 + str.cwko0]
xor edi, dword [ebp - 0x40]
mov dword [ebp - 0x48], edi
mov dword [eax + 0x60], edi
xor edi, dword [ebp - 0x50]
mov ecx, edi
mov dword [eax + 0x64], edi
xor ecx, edx
mov edx, ecx
mov dword [ebp - 0x50], ecx
xor edx, esi
mov dword [eax + 0x68], ecx
mov ecx, edx
mov dword [eax + 0x6c], edx
shr ecx, 0x10
movzx ecx, cl
mov esi, dword [ecx*4 + str.cwko0]
mov ecx, edx
shr ecx, 8
xor esi, 0x40
movzx ecx, cl
shl esi, 8
xor esi, dword [ecx*4 + str.cwko0]
shl esi, 8
movzx ecx, dl
xor esi, dword [ecx*4 + str.cwko0]
mov ecx, edx
shr ecx, 0x18
shl esi, 8
xor esi, dword [ecx*4 + str.cwko0]
xor esi, dword [ebp - 0x48]
mov dword [ebp - 0x48], esi
mov dword [eax + 0x70], esi
xor esi, edi
mov edi, esi
mov dword [ebp - 0x4c], esi
xor edi, dword [ebp - 0x50]
mov ecx, edi
mov dword [eax + 0x74], esi
xor ecx, edx
mov dword [eax + 0x78], edi
mov dword [ebp - 0x50], ecx
mov edx, ecx
mov dword [eax + 0x7c], ecx
shr ecx, 0x10
movzx ecx, cl
mov ecx, dword [ecx*4 + str.cwko0]
xor ecx, 0xffffff80
shl ecx, 8
mov dword [ebp - 0x40], ecx
mov ecx, edx
mov esi, dword [ebp - 0x40]
shr ecx, 8
movzx ecx, cl
xor esi, dword [ecx*4 + str.cwko0]
movzx ecx, byte [eax + 0x7c]
mov dword [ebp - 0x40], esi
shl dword [ebp - 0x40], 8
mov esi, dword [ebp - 0x40]
xor esi, dword [ecx*4 + str.cwko0]
mov ecx, edx
mov dword [ebp - 0x40], esi
shl dword [ebp - 0x40], 8
shr ecx, 0x18
mov esi, dword [ebp - 0x40]
xor esi, dword [ecx*4 + str.cwko0]
mov ecx, esi
mov dword [ebp - 0x40], esi
xor ecx, dword [ebp - 0x48]
mov dword [ebp - 0x40], ecx
mov dword [eax + 0x80], ecx
xor ecx, dword [ebp - 0x4c]
mov esi, ecx
mov dword [ebp - 0x50], ecx
mov dword [eax + 0x84], ecx
xor esi, edi
mov edi, esi
mov dword [eax + 0x88], esi
xor edi, edx
mov ecx, edi
mov dword [eax + 0x8c], edi
shr ecx, 0x10
movzx ecx, cl
mov edx, dword [ecx*4 + str.cwko0]
mov ecx, edi
xor edx, 0x1b
shr ecx, 8
shl edx, 8
movzx ecx, cl
xor edx, dword [ecx*4 + str.cwko0]
movzx ecx, byte [eax + 0x8c]
shl edx, 8
xor edx, dword [ecx*4 + str.cwko0]
mov ecx, edi
shl edx, 8
shr ecx, 0x18
xor edx, dword [ecx*4 + str.cwko0]
xor edx, dword [ebp - 0x40]
mov dword [eax + 0x90], edx
mov dword [ebp - 0x48], edx
xor edx, dword [ebp - 0x50]
mov dword [eax + 0x94], edx
mov dword [ebp - 0x50], edx
xor edx, esi
mov esi, edx
mov dword [eax + 0x98], edx
xor esi, edi
mov dword [ebp - 0x4c], edx
mov ecx, esi
mov dword [eax + 0x9c], esi
shr ecx, 0x10
movzx ecx, cl
mov edx, dword [ecx*4 + str.cwko0]
mov ecx, esi
xor edx, 0x36
shr ecx, 8
shl edx, 8
movzx ecx, cl
xor edx, dword [ecx*4 + str.cwko0]
movzx ecx, byte [eax + 0x9c]
shl edx, 8
xor edx, dword [ecx*4 + str.cwko0]
mov ecx, esi
shl edx, 8
shr ecx, 0x18
xor edx, dword [ecx*4 + str.cwko0]
xor edx, dword [ebp - 0x48]
mov dword [eax + 0xa0], edx
xor edx, dword [ebp - 0x50]
mov dword [eax + 0xa4], edx
xor edx, dword [ebp - 0x4c]
mov dword [eax + 0xa8], edx
xor edx, esi
mov dword [eax + 0xac], edx
add eax, 0xa0
jmp 0x4739e3
cmp ecx, 0xc
jne 0x473390
mov edx, dword [eax + 0x14]
mov ecx, edx
shr ecx, 0x10
movzx ecx, cl
mov edi, dword [eax + 0xc]
mov esi, dword [ecx*4 + str.cwko0]
mov ecx, edx
shr ecx, 8
xor esi, 1
movzx ecx, cl
shl esi, 8
xor esi, dword [ecx*4 + str.cwko0]
movzx ecx, dl
shl esi, 8
xor esi, dword [ecx*4 + str.cwko0]
mov ecx, edx
mov edx, dword [eax + 4]
shr ecx, 0x18
shl esi, 8
xor esi, dword [ecx*4 + str.cwko0]
xor esi, dword [eax]
mov ecx, dword [eax + 0x10]
xor edx, esi
mov dword [ebp - 0x50], esi
mov dword [eax + 0x18], esi
mov esi, dword [eax + 8]
xor esi, edx
mov dword [ebp - 0x48], edx
mov dword [eax + 0x1c], edx
xor edi, esi
mov edx, dword [eax + 0x14]
xor ecx, edi
xor edx, ecx
mov dword [ebp - 0x44], ecx
mov dword [eax + 0x28], ecx
mov ecx, edx
shr ecx, 0x10
movzx ecx, cl
mov dword [ebp - 0x4c], edx
mov dword [eax + 0x2c], edx
mov dword [eax + 0x20], esi
mov ecx, dword [ecx*4 + str.cwko0]
xor ecx, 2
mov dword [eax + 0x24], edi
shl ecx, 8
mov dword [ebp - 0x40], ecx
mov ecx, edx
mov edx, dword [ebp - 0x40]
shr ecx, 8
movzx ecx, cl
xor edx, dword [ecx*4 + str.cwko0]
movzx ecx, byte [eax + 0x2c]
mov dword [ebp - 0x40], edx
shl dword [ebp - 0x40], 8
mov edx, dword [ebp - 0x40]
xor edx, dword [ecx*4 + str.cwko0]
mov ecx, dword [ebp - 0x4c]
shr ecx, 0x18
mov dword [ebp - 0x40], edx
shl dword [ebp - 0x40], 8
mov edx, dword [ebp - 0x40]
xor edx, dword [ecx*4 + str.cwko0]
mov ecx, edx
mov dword [ebp - 0x40], edx
xor ecx, dword [ebp - 0x50]
mov dword [ebp - 0x40], ecx
mov dword [eax + 0x30], ecx
xor ecx, dword [ebp - 0x48]
mov dword [ebp - 0x50], ecx
mov dword [eax + 0x34], ecx
xor ecx, esi
mov esi, ecx
mov dword [ebp - 0x48], ecx
xor esi, edi
mov dword [eax + 0x38], ecx
mov edi, esi
mov dword [eax + 0x3c], esi
xor edi, dword [ebp - 0x44]
mov ecx, edi
mov dword [eax + 0x40], edi
xor ecx, dword [ebp - 0x4c]
mov dword [ebp - 0x4c], ecx
mov dword [eax + 0x44], ecx
shr ecx, 0x10
movzx ecx, cl
mov ecx, dword [ecx*4 + str.cwko0]
xor ecx, 4
shl ecx, 8
mov dword [ebp - 0x44], ecx
mov ecx, dword [ebp - 0x4c]
mov edx, dword [ebp - 0x44]
shr ecx, 8
movzx ecx, cl
xor edx, dword [ecx*4 + str.cwko0]
movzx ecx, byte [eax + 0x44]
mov dword [ebp - 0x44], edx
shl dword [ebp - 0x44], 8
mov edx, dword [ebp - 0x44]
xor edx, dword [ecx*4 + str.cwko0]
mov ecx, dword [ebp - 0x4c]
shr ecx, 0x18
mov dword [ebp - 0x44], edx
shl dword [ebp - 0x44], 8
mov edx, dword [ebp - 0x44]
xor edx, dword [ecx*4 + str.cwko0]
mov ecx, edx
mov dword [ebp - 0x44], edx
xor ecx, dword [ebp - 0x40]
mov dword [ebp - 0x44], ecx
mov dword [eax + 0x48], ecx
xor ecx, dword [ebp - 0x50]
mov dword [ebp - 0x50], ecx
mov dword [eax + 0x4c], ecx
xor ecx, dword [ebp - 0x48]
mov dword [ebp - 0x48], ecx
mov dword [eax + 0x50], ecx
xor ecx, esi
mov esi, ecx
mov dword [ebp - 0x54], ecx
mov dword [eax + 0x54], ecx
xor esi, edi
mov edi, esi
mov dword [eax + 0x58], esi
xor edi, dword [ebp - 0x4c]
mov ecx, edi
mov dword [eax + 0x5c], edi
shr ecx, 0x10
movzx ecx, cl
mov ecx, dword [ecx*4 + str.cwko0]
xor ecx, 8
shl ecx, 8
mov dword [ebp - 0x40], ecx
mov ecx, edi
mov edx, dword [ebp - 0x40]
shr ecx, 8
movzx ecx, cl
xor edx, dword [ecx*4 + str.cwko0]
movzx ecx, byte [eax + 0x5c]
mov dword [ebp - 0x40], edx
shl dword [ebp - 0x40], 8
mov edx, dword [ebp - 0x40]
xor edx, dword [ecx*4 + str.cwko0]
mov ecx, edi
shr ecx, 0x18
mov dword [ebp - 0x40], edx
shl dword [ebp - 0x40], 8
mov edx, dword [ebp - 0x40]
xor edx, dword [ecx*4 + str.cwko0]
mov ecx, edx
mov dword [ebp - 0x40], edx
xor ecx, dword [ebp - 0x44]
mov dword [ebp - 0x40], ecx
mov dword [eax + 0x60], ecx
xor ecx, dword [ebp - 0x50]
mov dword [ebp - 0x50], ecx
mov dword [eax + 0x64], ecx
xor ecx, dword [ebp - 0x48]
mov dword [ebp - 0x48], ecx
mov dword [eax + 0x68], ecx
xor ecx, dword [ebp - 0x54]
mov dword [ebp - 0x54], ecx
mov dword [eax + 0x6c], ecx
mov edx, ecx
xor edx, esi
mov esi, edx
mov dword [eax + 0x70], edx
xor esi, edi
mov ecx, esi
mov dword [eax + 0x74], esi
shr ecx, 0x10
movzx ecx, cl
mov edi, dword [ecx*4 + str.cwko0]
mov ecx, esi
shr ecx, 8
xor edi, 0x10
movzx ecx, cl
shl edi, 8
xor edi, dword [ecx*4 + str.cwko0]
movzx ecx, byte [eax + 0x74]
shl edi, 8
xor edi, dword [ecx*4 + str.cwko0]
mov ecx, esi
shr ecx, 0x18
shl edi, 8
xor edi, dword [ecx*4 + str.cwko0]
xor edi, dword [ebp - 0x40]
mov dword [ebp - 0x4c], edi
mov dword [eax + 0x78], edi
xor edi, dword [ebp - 0x50]
mov ecx, edi
mov dword [eax + 0x7c], edi
xor ecx, dword [ebp - 0x48]
mov dword [ebp - 0x50], ecx
mov dword [eax + 0x80], ecx
xor ecx, dword [ebp - 0x54]
mov dword [ebp - 0x54], ecx
mov dword [eax + 0x84], ecx
xor ecx, edx
mov edx, ecx
mov dword [ebp - 0x48], ecx
xor edx, esi
mov dword [eax + 0x88], ecx
mov ecx, edx
mov dword [eax + 0x8c], edx
shr ecx, 0x10
movzx ecx, cl
mov esi, dword [ecx*4 + str.cwko0]
mov ecx, edx
shr ecx, 8
xor esi, 0x20
movzx ecx, cl
shl esi, 8
xor esi, dword [ecx*4 + str.cwko0]
shl esi, 8
movzx ecx, dl
xor esi, dword [ecx*4 + str.cwko0]
mov ecx, edx
shr ecx, 0x18
shl esi, 8
xor esi, dword [ecx*4 + str.cwko0]
xor esi, dword [ebp - 0x4c]
mov dword [ebp - 0x4c], esi
mov dword [eax + 0x90], esi
xor esi, edi
mov edi, esi
mov dword [ebp - 0x40], esi
xor edi, dword [ebp - 0x50]
mov ecx, edi
mov dword [eax + 0x94], esi
xor ecx, dword [ebp - 0x54]
mov dword [ebp - 0x50], ecx
mov dword [eax + 0x9c], ecx
xor ecx, dword [ebp - 0x48]
mov dword [ebp - 0x48], ecx
mov dword [eax + 0xa0], ecx
xor ecx, edx
mov dword [ebp - 0x54], ecx
mov dword [eax + 0xa4], ecx
shr ecx, 0x10
movzx ecx, cl
mov dword [eax + 0x98], edi
mov ecx, dword [ecx*4 + str.cwko0]
xor ecx, 0x40
mov edx, dword [ebp - 0x54]
shl ecx, 8
mov dword [ebp - 0x44], ecx
mov ecx, edx
mov esi, dword [ebp - 0x44]
shr ecx, 8
movzx ecx, cl
xor esi, dword [ecx*4 + str.cwko0]
movzx ecx, byte [eax + 0xa4]
mov dword [ebp - 0x44], esi
shl dword [ebp - 0x44], 8
mov esi, dword [ebp - 0x44]
xor esi, dword [ecx*4 + str.cwko0]
mov ecx, edx
shr ecx, 0x18
mov dword [ebp - 0x44], esi
shl dword [ebp - 0x44], 8
mov esi, dword [ebp - 0x44]
xor esi, dword [ecx*4 + str.cwko0]
mov ecx, esi
mov dword [ebp - 0x44], esi
xor ecx, dword [ebp - 0x4c]
mov dword [ebp - 0x44], ecx
mov dword [eax + 0xa8], ecx
xor ecx, dword [ebp - 0x40]
mov dword [ebp - 0x54], ecx
mov dword [eax + 0xac], ecx
xor ecx, edi
mov dword [ebp - 0x4c], ecx
mov dword [eax + 0xb0], ecx
xor ecx, dword [ebp - 0x50]
mov dword [ebp - 0x50], ecx
mov dword [eax + 0xb4], ecx
xor ecx, dword [ebp - 0x48]
mov esi, ecx
mov dword [ebp - 0x48], ecx
xor esi, edx
mov dword [eax + 0xb8], ecx
mov ecx, esi
mov edi, dword [ebp - 0x54]
shr ecx, 0x10
movzx ecx, cl
mov dword [eax + 0xbc], esi
mov edx, dword [ecx*4 + str.cwko0]
mov ecx, esi
xor edx, 0xffffff80
shr ecx, 8
shl edx, 8
movzx ecx, cl
xor edx, dword [ecx*4 + str.cwko0]
movzx ecx, byte [eax + 0xbc]
shl edx, 8
xor edx, dword [ecx*4 + str.cwko0]
mov ecx, esi
shl edx, 8
shr ecx, 0x18
xor edx, dword [ecx*4 + str.cwko0]
xor edx, dword [ebp - 0x44]
xor edi, edx
mov dword [eax + 0xc0], edx
mov edx, dword [ebp - 0x4c]
xor edx, edi
mov dword [eax + 0xc4], edi
mov edi, dword [ebp - 0x50]
xor edi, edx
mov dword [eax + 0xc8], edx
mov edx, dword [ebp - 0x48]
xor edx, edi
mov dword [eax + 0xcc], edi
xor esi, edx
mov dword [eax + 0xd0], edx
mov dword [eax + 0xd4], esi
add eax, 0xc0
jmp 0x4739e3
cmp ecx, 0xe
jne 0x4739e6
mov edx, dword [eax + 0x1c]
mov ecx, edx
shr ecx, 0x10
movzx ecx, cl
mov edi, dword [eax + 0xc]
mov esi, dword [ecx*4 + str.cwko0]
mov ecx, edx
shr ecx, 8
xor esi, 1
movzx ecx, cl
shl esi, 8
xor esi, dword [ecx*4 + str.cwko0]
movzx ecx, dl
shl esi, 8
xor esi, dword [ecx*4 + str.cwko0]
mov ecx, edx
mov edx, dword [eax + 4]
shr ecx, 0x18
shl esi, 8
xor esi, dword [ecx*4 + str.cwko0]
xor esi, dword [eax]
xor edx, esi
mov dword [ebp - 0x54], esi
mov dword [ebp - 0x50], edx
mov dword [eax + 0x24], edx
mov dword [eax + 0x20], esi
mov esi, dword [eax + 8]
xor esi, edx
xor edi, esi
mov dword [eax + 0x28], esi
mov ecx, edi
mov dword [eax + 0x2c], edi
shr ecx, 0x18
mov edx, dword [ecx*4 + str.cwko0]
mov ecx, edi
shr ecx, 0x10
movzx ecx, cl
shl edx, 8
xor edx, dword [ecx*4 + str.cwko0]
mov ecx, edi
shr ecx, 8
shl edx, 8
movzx ecx, cl
xor edx, dword [ecx*4 + str.cwko0]
movzx ecx, byte [eax + 0x2c]
shl edx, 8
xor edx, dword [ecx*4 + str.cwko0]
xor edx, dword [eax + 0x10]
mov ecx, dword [eax + 0x14]
xor ecx, edx
mov dword [ebp - 0x48], edx
mov dword [eax + 0x30], edx
mov edx, dword [eax + 0x18]
xor edx, ecx
mov dword [ebp - 0x40], ecx
mov dword [eax + 0x34], ecx
mov ecx, edx
mov dword [ebp - 0x44], edx
mov edx, dword [eax + 0x1c]
xor edx, ecx
mov dword [eax + 0x38], ecx
mov ecx, edx
mov dword [ebp - 0x4c], edx
shr ecx, 0x10
movzx ecx, cl
mov dword [eax + 0x3c], edx
mov edx, dword [ecx*4 + str.cwko0]
mov ecx, dword [ebp - 0x4c]
xor edx, 2
shr ecx, 8
movzx ecx, cl
shl edx, 8
xor edx, dword [ecx*4 + str.cwko0]
movzx ecx, byte [eax + 0x3c]
shl edx, 8
xor edx, dword [ecx*4 + str.cwko0]
mov ecx, dword [ebp - 0x4c]
shr ecx, 0x18
shl edx, 8
xor edx, dword [ecx*4 + str.cwko0]
xor edx, dword [ebp - 0x54]
mov ecx, edx
mov dword [ebp - 0x54], edx
xor ecx, dword [ebp - 0x50]
mov dword [ebp - 0x50], ecx
mov dword [eax + 0x44], ecx
xor ecx, esi
mov esi, ecx
mov dword [ebp - 0x5c], ecx
mov dword [eax + 0x48], ecx
xor esi, edi
mov ecx, esi
mov dword [eax + 0x4c], esi
shr ecx, 0x18
mov dword [eax + 0x40], edx
mov edi, dword [ecx*4 + str.cwko0]
mov ecx, esi
shr ecx, 0x10
movzx ecx, cl
shl edi, 8
xor edi, dword [ecx*4 + str.cwko0]
mov ecx, esi
shr ecx, 8
movzx ecx, cl
shl edi, 8
xor edi, dword [ecx*4 + str.cwko0]
movzx ecx, byte [eax + 0x4c]
shl edi, 8
xor edi, dword [ecx*4 + str.cwko0]
xor edi, dword [ebp - 0x48]
mov dword [ebp - 0x48], edi
mov dword [eax + 0x50], edi
xor edi, dword [ebp - 0x40]
mov ecx, edi
mov dword [eax + 0x54], edi
xor ecx, dword [ebp - 0x44]
mov dword [ebp - 0x40], ecx
mov dword [eax + 0x58], ecx
xor ecx, dword [ebp - 0x4c]
mov dword [ebp - 0x4c], ecx
mov dword [eax + 0x5c], ecx
shr ecx, 0x10
movzx ecx, cl
mov ecx, dword [ecx*4 + str.cwko0]
xor ecx, 4
shl ecx, 8
mov dword [ebp - 0x44], ecx
mov ecx, dword [ebp - 0x4c]
mov edx, dword [ebp - 0x44]
shr ecx, 8
movzx ecx, cl
xor edx, dword [ecx*4 + str.cwko0]
movzx ecx, byte [eax + 0x5c]
mov dword [ebp - 0x44], edx
shl dword [ebp - 0x44], 8
mov edx, dword [ebp - 0x44]
xor edx, dword [ecx*4 + str.cwko0]
mov ecx, dword [ebp - 0x4c]
shr ecx, 0x18
mov dword [ebp - 0x44], edx
shl dword [ebp - 0x44], 8
mov edx, dword [ebp - 0x44]
xor edx, dword [ecx*4 + str.cwko0]
mov ecx, edx
mov dword [ebp - 0x44], edx
xor ecx, dword [ebp - 0x54]
mov dword [ebp - 0x44], ecx
mov dword [eax + 0x60], ecx
xor ecx, dword [ebp - 0x50]
mov dword [ebp - 0x54], ecx
mov dword [eax + 0x64], ecx
xor ecx, dword [ebp - 0x5c]
mov edx, ecx
mov dword [ebp - 0x5c], ecx
xor edx, esi
mov dword [eax + 0x68], ecx
mov ecx, edx
mov dword [eax + 0x6c], edx
shr ecx, 0x18
mov esi, dword [ecx*4 + str.cwko0]
mov ecx, edx
shl esi, 8
shr ecx, 0x10
movzx ecx, cl
xor esi, dword [ecx*4 + str.cwko0]
mov ecx, edx
shr ecx, 8
movzx ecx, cl
shl esi, 8
xor esi, dword [ecx*4 + str.cwko0]
shl esi, 8
movzx ecx, dl
xor esi, dword [ecx*4 + str.cwko0]
xor esi, dword [ebp - 0x48]
mov dword [ebp - 0x50], esi
mov dword [eax + 0x70], esi
xor esi, edi
mov edi, esi
mov dword [ebp - 0x60], esi
xor edi, dword [ebp - 0x40]
mov ecx, edi
mov dword [eax + 0x74], esi
xor ecx, dword [ebp - 0x4c]
mov dword [ebp - 0x4c], ecx
mov dword [eax + 0x7c], ecx
shr ecx, 0x10
movzx ecx, cl
mov dword [eax + 0x78], edi
mov ecx, dword [ecx*4 + str.cwko0]
xor ecx, 8
shl ecx, 8
mov dword [ebp - 0x40], ecx
mov ecx, dword [ebp - 0x4c]
mov esi, dword [ebp - 0x40]
shr ecx, 8
movzx ecx, cl
xor esi, dword [ecx*4 + str.cwko0]
movzx ecx, byte [eax + 0x7c]
mov dword [ebp - 0x40], esi
shl dword [ebp - 0x40], 8
mov esi, dword [ebp - 0x40]
xor esi, dword [ecx*4 + str.cwko0]
mov ecx, dword [ebp - 0x4c]
shr ecx, 0x18
mov dword [ebp - 0x40], esi
shl dword [ebp - 0x40], 8
mov esi, dword [ebp - 0x40]
xor esi, dword [ecx*4 + str.cwko0]
mov ecx, esi
mov dword [ebp - 0x40], esi
xor ecx, dword [ebp - 0x44]
mov dword [ebp - 0x40], ecx
mov dword [eax + 0x80], ecx
xor ecx, dword [ebp - 0x54]
mov dword [ebp - 0x54], ecx
mov dword [eax + 0x84], ecx
xor ecx, dword [ebp - 0x5c]
mov dword [ebp - 0x5c], ecx
mov dword [eax + 0x88], ecx
xor ecx, edx
mov dword [ebp - 0x48], ecx
mov dword [eax + 0x8c], ecx
shr ecx, 0x18
mov esi, dword [ecx*4 + str.cwko0]
mov ecx, dword [ebp - 0x48]
shr ecx, 0x10
movzx ecx, cl
shl esi, 8
xor esi, dword [ecx*4 + str.cwko0]
mov ecx, dword [ebp - 0x48]
shr ecx, 8
movzx ecx, cl
shl esi, 8
xor esi, dword [ecx*4 + str.cwko0]
movzx ecx, byte [eax + 0x8c]
shl esi, 8
xor esi, dword [ecx*4 + str.cwko0]
xor esi, dword [ebp - 0x50]
mov ecx, esi
mov dword [ebp - 0x50], esi
xor ecx, dword [ebp - 0x60]
mov dword [eax + 0x90], esi
mov dword [ebp - 0x64], ecx
mov dword [eax + 0x94], ecx
xor ecx, edi
mov edi, ecx
mov dword [ebp - 0x68], ecx
xor edi, dword [ebp - 0x4c]
mov dword [eax + 0x98], ecx
mov ecx, edi
shr ecx, 0x10
movzx ecx, cl
mov dword [eax + 0x9c], edi
mov ecx, dword [ecx*4 + str.cwko0]
xor ecx, 0x10
shl ecx, 8
mov dword [ebp - 0x44], ecx
mov ecx, edi
mov edx, dword [ebp - 0x44]
shr ecx, 8
movzx ecx, cl
xor edx, dword [ecx*4 + str.cwko0]
movzx ecx, byte [eax + 0x9c]
mov dword [ebp - 0x44], edx
shl dword [ebp - 0x44], 8
mov edx, dword [ebp - 0x44]
xor edx, dword [ecx*4 + str.cwko0]
mov ecx, edi
shr ecx, 0x18
mov dword [ebp - 0x44], edx
shl dword [ebp - 0x44], 8
mov edx, dword [ebp - 0x44]
xor edx, dword [ecx*4 + str.cwko0]
mov ecx, edx
mov dword [ebp - 0x44], edx
xor ecx, dword [ebp - 0x40]
mov dword [ebp - 0x44], ecx
mov dword [eax + 0xa0], ecx
xor ecx, dword [ebp - 0x54]
mov dword [ebp - 0x54], ecx
mov dword [eax + 0xa4], ecx
xor ecx, dword [ebp - 0x5c]
mov dword [ebp - 0x5c], ecx
mov dword [eax + 0xa8], ecx
xor ecx, dword [ebp - 0x48]
mov dword [ebp - 0x60], ecx
mov edx, ecx
mov dword [eax + 0xac], ecx
shr ecx, 0x18
mov ecx, dword [ecx*4 + str.cwko0]
shl ecx, 8
mov dword [ebp - 0x40], ecx
mov ecx, edx
mov esi, dword [ebp - 0x40]
shr ecx, 0x10
movzx ecx, cl
xor esi, dword [ecx*4 + str.cwko0]
mov ecx, edx
shr ecx, 8
mov dword [ebp - 0x40], esi
shl dword [ebp - 0x40], 8
mov esi, dword [ebp - 0x40]
movzx ecx, cl
xor esi, dword [ecx*4 + str.cwko0]
movzx ecx, byte [eax + 0xac]
mov dword [ebp - 0x40], esi
shl dword [ebp - 0x40], 8
mov esi, dword [ebp - 0x40]
xor esi, dword [ecx*4 + str.cwko0]
mov ecx, esi
mov dword [ebp - 0x40], esi
xor ecx, dword [ebp - 0x50]
mov dword [ebp - 0x40], ecx
mov dword [eax + 0xb0], ecx
xor ecx, dword [ebp - 0x64]
mov dword [ebp - 0x64], ecx
mov dword [eax + 0xb4], ecx
xor ecx, dword [ebp - 0x68]
mov esi, ecx
mov dword [ebp - 0x68], ecx
xor esi, edi
mov dword [eax + 0xb8], ecx
mov dword [eax + 0xbc], esi
mov ecx, esi
shr ecx, 0x10
movzx ecx, cl
mov edi, dword [ecx*4 + str.cwko0]
mov ecx, esi
shr ecx, 8
xor edi, 0x20
movzx ecx, cl
shl edi, 8
xor edi, dword [ecx*4 + str.cwko0]
movzx ecx, byte [eax + 0xbc]
shl edi, 8
xor edi, dword [ecx*4 + str.cwko0]
mov ecx, esi
shr ecx, 0x18
shl edi, 8
xor edi, dword [ecx*4 + str.cwko0]
xor edi, dword [ebp - 0x44]
mov dword [ebp - 0x60], edi
mov dword [eax + 0xc0], edi
xor edi, dword [ebp - 0x54]
mov ecx, edi
mov dword [eax + 0xc4], edi
xor ecx, dword [ebp - 0x5c]
mov dword [ebp - 0x5c], ecx
mov dword [eax + 0xc8], ecx
xor ecx, edx
mov dword [ebp - 0x4c], ecx
mov dword [eax + 0xcc], ecx
shr ecx, 0x18
mov ecx, dword [ecx*4 + str.cwko0]
shl ecx, 8
mov dword [ebp - 0x44], ecx
mov ecx, dword [ebp - 0x4c]
mov edx, dword [ebp - 0x44]
shr ecx, 0x10
movzx ecx, cl
xor edx, dword [ecx*4 + str.cwko0]
mov ecx, dword [ebp - 0x4c]
mov dword [ebp - 0x44], edx
shl dword [ebp - 0x44], 8
mov edx, dword [ebp - 0x44]
shr ecx, 8
movzx ecx, cl
xor edx, dword [ecx*4 + str.cwko0]
movzx ecx, byte [eax + 0xcc]
shl edx, 8
xor edx, dword [ecx*4 + str.cwko0]
xor edx, dword [ebp - 0x40]
mov ecx, edx
mov dword [ebp - 0x44], edx
xor ecx, dword [ebp - 0x64]
mov dword [ebp - 0x64], ecx
mov dword [eax + 0xd4], ecx
xor ecx, dword [ebp - 0x68]
mov dword [ebp - 0x68], ecx
mov dword [eax + 0xd8], ecx
xor ecx, esi
mov dword [ebp - 0x40], ecx
mov dword [eax + 0xdc], ecx
shr ecx, 0x10
mov dword [eax + 0xd0], edx
movzx ecx, cl
mov edx, dword [ecx*4 + str.cwko0]
mov ecx, dword [ebp - 0x40]
xor edx, 0x40
shr ecx, 8
shl edx, 8
movzx ecx, cl
xor edx, dword [ecx*4 + str.cwko0]
movzx ecx, byte [eax + 0xdc]
shl edx, 8
xor edx, dword [ecx*4 + str.cwko0]
mov ecx, dword [ebp - 0x40]
shr ecx, 0x18
shl edx, 8
xor edx, dword [ecx*4 + str.cwko0]
xor edx, dword [ebp - 0x60]
mov dword [eax + 0xe0], edx
xor edx, edi
mov dword [eax + 0xe4], edx
xor edx, dword [ebp - 0x5c]
mov dword [eax + 0xe8], edx
xor edx, dword [ebp - 0x4c]
mov ecx, edx
mov dword [ebp - 0x48], edx
mov dword [eax + 0xec], edx
shr ecx, 0x18
mov edx, dword [ecx*4 + str.cwko0]
mov ecx, dword [ebp - 0x48]
shr ecx, 0x10
shl edx, 8
movzx ecx, cl
xor edx, dword [ecx*4 + str.cwko0]
mov ecx, dword [ebp - 0x48]
shl edx, 8
shr ecx, 8
movzx ecx, cl
xor edx, dword [ecx*4 + str.cwko0]
movzx ecx, byte [eax + 0xec]
shl edx, 8
xor edx, dword [ecx*4 + str.cwko0]
xor edx, dword [ebp - 0x44]
mov dword [eax + 0xf0], edx
xor edx, dword [ebp - 0x64]
mov dword [eax + 0xf4], edx
xor edx, dword [ebp - 0x68]
mov dword [eax + 0xf8], edx
xor edx, dword [ebp - 0x40]
mov dword [eax + 0xfc], edx
add eax, 0xe0
mov edi, dword [ebp - 0x6c]
cmp byte [0x6bedf8], 0
jne 0x473a3d
xor esi, esi
mov edx, dword [esi + str.cwko0]
mov ecx, dword [edx*4 + 0x643c40]
mov dword [esi + 0x6bddf8], ecx
mov ecx, dword [edx*4 + 0x644040]
mov dword [esi + 0x6be1f8], ecx
mov ecx, dword [edx*4 + 0x644440]
mov dword [esi + 0x6be5f8], ecx
mov ecx, dword [edx*4 + 0x644840]
mov dword [esi + 0x6be9f8], ecx
add esi, 4
cmp esi, 0x400
jl 0x4739f1
mov byte [0x6bedf8], 1
mov ecx, dword [eax]
lea esi, [edi + 0x18c]
mov dword [esi], ecx
mov ecx, dword [eax + 4]
mov dword [esi + 4], ecx
mov ecx, dword [eax + 8]
mov dword [esi + 8], ecx
mov ecx, dword [eax + 0xc]
add eax, 0x10
mov dword [esi + 0xc], ecx
add esi, 0x10
cmp dword [edi + 0x28c], 1
mov dword [ebp - 0x48], 1
jle 0x473b73
mov ecx, dword [eax - 0x20]
mov edx, ecx
shr ecx, 0x10
movzx ecx, cl
shr edx, 0x18
mov edx, dword [edx*4 + 0x6bddf8]
xor edx, dword [ecx*4 + 0x6be1f8]
mov ecx, dword [eax - 0x20]
shr ecx, 8
movzx ecx, cl
xor edx, dword [ecx*4 + 0x6be5f8]
movzx ecx, byte [eax - 0x20]
xor edx, dword [ecx*4 + 0x6be9f8]
mov dword [esi], edx
mov ecx, dword [eax - 0x1c]
mov edx, ecx
shr ecx, 0x10
movzx ecx, cl
shr edx, 0x18
mov edx, dword [edx*4 + 0x6bddf8]
xor edx, dword [ecx*4 + 0x6be1f8]
mov ecx, dword [eax - 0x1c]
shr ecx, 8
movzx ecx, cl
xor edx, dword [ecx*4 + 0x6be5f8]
movzx ecx, byte [eax - 0x1c]
xor edx, dword [ecx*4 + 0x6be9f8]
mov dword [esi + 4], edx
mov ecx, dword [eax - 0x18]
mov edx, ecx
shr ecx, 0x10
movzx ecx, cl
shr edx, 0x18
mov edx, dword [edx*4 + 0x6bddf8]
xor edx, dword [ecx*4 + 0x6be1f8]
mov ecx, dword [eax - 0x18]
shr ecx, 8
movzx ecx, cl
xor edx, dword [ecx*4 + 0x6be5f8]
movzx ecx, byte [eax - 0x18]
xor edx, dword [ecx*4 + 0x6be9f8]
mov dword [esi + 8], edx
mov ecx, dword [eax - 0x14]
mov edx, ecx
shr ecx, 0x10
shr edx, 0x18
movzx ecx, cl
mov edx, dword [edx*4 + 0x6bddf8]
xor edx, dword [ecx*4 + 0x6be1f8]
mov ecx, dword [eax - 0x14]
shr ecx, 8
movzx ecx, cl
xor edx, dword [ecx*4 + 0x6be5f8]
movzx ecx, byte [eax - 0x14]
add eax, 0xfffffff0
xor edx, dword [ecx*4 + 0x6be9f8]
mov ecx, dword [ebp - 0x48]
mov dword [esi + 0xc], edx
inc ecx
add esi, 0x10
mov dword [ebp - 0x48], ecx
cmp ecx, dword [edi + 0x28c]
jl 0x473a73
cmp dword [ebp - 0x70], 0
mov ecx, dword [eax - 0x20]
mov dword [esi], ecx
mov ecx, dword [eax - 0x1c]
mov dword [esi + 4], ecx
mov ecx, dword [eax - 0x18]
mov dword [esi + 8], ecx
mov eax, dword [eax - 0x14]
mov dword [esi + 0xc], eax
je 0x473bc6
mov esi, dword [ebp - 0x74]
mov eax, dword [esi + 4]
cmp eax, 3
je 0x473ba0
cmp eax, 4
jne 0x473bc6
push dword [edi + 0x80]
lea ecx, [esi + 0x30]
call fcn.00401c90
push eax
lea ecx, [esi + 0x30]
call fcn.00414910
mov ecx, dword [ebp - 0x70]
push eax
lea ecx, [ecx + 0x484]
call fcn.004d5ce0
mov byte [ebp - 0x55], 1
lea ecx, [ebp - 0x3c]
call fcn.00430db0
mov al, byte [ebp - 0x55]
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.005ebe04
mov esp, ebp
pop ebp
ret 0x10