Function at 0x499270
Capabilities:
Encode data using xor
Resolve function by parsing pe exports

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0xc4
mov ebx, edx
mov dword [esp + 0x58], ecx
mov eax, dword [esp + 0xd8]
mov ecx, dword [0x502034]
xor ecx, esp
mov dword [esp + 0xc0], ecx
mov dword [esp + 0xbc], 0
mov dword [esp + 0xb8], 0
mov dword [esp + 0xb4], 0
mov dword [esp + 0xb0], 0
mov dword [esp + 0xac], 0
mov dword [esp + 0xa8], 0
mov dword [esp + 0xa4], 0
mov dword [esp + 0xa0], 0
lea edx, [eax + 0xf]
cmp edx, 0x1f
jb 0x49a9b6
mov ecx, dword [esp + 0x58]
lea esi, [ecx - 0x310]
mov dword [esp + 0x6c], esi
test eax, eax
cmovns edx, eax
sar edx, 4
lea eax, [ecx - 0x2f0]
mov dword [esp + 0x74], eax
lea ebp, [ecx - 0x38]
mov dword [esp + 0x78], ebp
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp edx, 2
mov eax, 2
mov dword [esp + 0x80], edx
cmovb eax, edx
mov dword [esp + 0x70], eax
shl eax, 4
mov dword [esp + 0x7c], eax
push eax
mov dword [esp + 0x88], ebx
push ebx
lea eax, [esp + 0xa8]
push eax
call fcn.004a2420
add esp, 0xc
movzx eax, word [esp + 0xa4]
movzx ecx, byte [esp + 0xa6]
shl ecx, 0x10
or ecx, eax
movzx edx, byte [esp + 0xa7]
shl edx, 0x18
or edx, ecx
mov ebx, dword [esp + 0xa0]
mov eax, dword [esp + 0xa8]
mov dword [esp + 4], eax
movzx eax, word [esp + 0xac]
movzx edi, byte [esp + 0xae]
shl edi, 0x10
or edi, eax
mov esi, edx
shr esi, 7
mov ebp, ebx
shr ebp, 7
xor esi, ecx
xor ebp, ebx
mov eax, 0xaa00aa
and esi, eax
and ebp, eax
mov ecx, esi
shl ecx, 7
add ecx, esi
mov esi, ebp
shl esi, 7
add esi, ebp
movzx eax, byte [esp + 0xaf]
shl eax, 0x18
or eax, edi
xor ecx, edx
xor esi, ebx
mov ebp, eax
shr ebp, 7
mov edx, dword [esp + 4]
mov ebx, edx
shr ebx, 7
xor ebp, edi
xor ebx, edx
mov edx, 0xaa00aa
and ebp, edx
and ebx, edx
mov edx, ebp
shl edx, 7
add edx, ebp
mov edi, ebx
shl edi, 7
add edi, ebx
xor edx, eax
xor edi, dword [esp + 4]
mov ebx, ecx
shr ebx, 0xe
mov eax, esi
shr eax, 0xe
xor ebx, ecx
xor eax, esi
mov ebp, 0xcccc
and ebx, ebp
and eax, ebp
mov ebp, ebx
shl ebp, 0xe
add ebp, ebx
mov ebx, eax
shl ebx, 0xe
add ebx, eax
xor ebp, ecx
xor ebx, esi
mov ecx, edx
shr ecx, 0xe
mov eax, edi
shr eax, 0xe
xor ecx, edx
xor eax, edi
mov esi, 0xcccc
and ecx, esi
and eax, esi
mov esi, ecx
shl esi, 0xe
add esi, ecx
mov ecx, eax
shl ecx, 0xe
add ecx, eax
xor esi, edx
xor ecx, edi
mov eax, ebp
shl eax, 4
xor eax, ebx
and eax, 0xf0f0f0f0
mov edx, 0x10000001
mul edx
mov edi, edx
xor edi, ebp
xor eax, ebx
mov ebp, eax
mov eax, esi
shl eax, 4
xor eax, ecx
and eax, 0xf0f0f0f0
mov edx, 0x10000001
mul edx
xor edx, esi
xor eax, ecx
mov ecx, edi
shr ecx, 8
mov esi, ebp
shr esi, 8
xor ecx, edx
xor esi, eax
mov ebx, 0xff00ff
and ecx, ebx
and esi, ebx
mov ebx, ecx
shl ebx, 8
xor ebx, edi
mov dword [esp + 0x14], ebx
mov edi, esi
shl edi, 8
xor edi, ebp
mov dword [esp + 4], edi
xor ecx, edx
mov dword [esp + 0xc], ecx
xor esi, eax
mov dword [esp + 0x1c], esi
movzx ecx, word [esp + 0xb4]
movzx eax, byte [esp + 0xb6]
shl eax, 0x10
or eax, ecx
movzx edx, word [esp + 0xbc]
movzx ecx, byte [esp + 0xbe]
shl ecx, 0x10
or ecx, edx
movzx esi, byte [esp + 0xb7]
shl esi, 0x18
or esi, eax
mov edx, esi
shr edx, 7
xor edx, eax
mov ebp, 0xaa00aa
and edx, ebp
mov eax, edx
shl eax, 7
add eax, edx
mov edi, dword [esp + 0xb0]
mov ebx, edi
shr ebx, 7
xor ebx, edi
and ebx, ebp
mov edx, ebx
shl edx, 7
add edx, ebx
xor eax, esi
mov ebp, eax
xor edx, edi
movzx edi, byte [esp + 0xbf]
shl edi, 0x18
or edi, ecx
mov esi, edi
shr esi, 7
xor esi, ecx
mov eax, 0xaa00aa
and esi, eax
mov ecx, esi
shl ecx, 7
add ecx, esi
mov eax, dword [esp + 0xb8]
mov ebx, eax
shr ebx, 7
xor ebx, eax
mov esi, 0xaa00aa
and ebx, esi
mov esi, ebx
shl esi, 7
add esi, ebx
xor ecx, edi
mov dword [esp], ecx
xor esi, eax
mov ecx, ebp
shr ecx, 0xe
xor ecx, ebp
mov eax, ebp
mov ebx, 0xcccc
and ecx, ebx
mov edi, ecx
shl edi, 0xe
add edi, ecx
mov ecx, edx
shr ecx, 0xe
xor ecx, edx
and ecx, ebx
mov ebp, ecx
shl ebp, 0xe
add ebp, ecx
xor edi, eax
xor ebp, edx
mov ecx, dword [esp]
mov eax, ecx
shr eax, 0xe
xor eax, ecx
mov edx, ecx
mov ecx, 0xcccc
and eax, ecx
mov ebx, eax
shl ebx, 0xe
add ebx, eax
mov eax, esi
shr eax, 0xe
xor eax, esi
and eax, ecx
mov ecx, eax
shl ecx, 0xe
add ecx, eax
xor ebx, edx
xor ecx, esi
mov eax, edi
shl eax, 4
xor eax, ebp
and eax, 0xf0f0f0f0
mov edx, 0x10000001
mul edx
mov esi, edx
xor esi, edi
xor eax, ebp
mov dword [esp], eax
mov eax, ebx
shl eax, 4
xor eax, ecx
and eax, 0xf0f0f0f0
mov edx, 0x10000001
mul edx
xor edx, ebx
xor eax, ecx
mov ecx, eax
mov edi, esi
shr edi, 8
xor edi, edx
mov eax, 0xff00ff
and edi, eax
mov ebp, edi
shl ebp, 8
xor ebp, esi
mov eax, dword [esp]
mov ebx, eax
shr ebx, 8
xor ebx, ecx
mov esi, 0xff00ff
and ebx, esi
mov esi, ebx
shl esi, 8
xor esi, eax
xor edi, edx
xor ebx, ecx
mov edx, esi
shl edx, 0x10
mov ecx, dword [esp + 4]
movzx eax, cx
or edx, eax
mov dword [esp], edx
shr ecx, 0x10
mov eax, ebp
shld eax, esi, 0x10
and esi, 0xffff0000
or esi, ecx
mov dword [esp + 4], esi
mov ecx, eax
and ecx, 0xffff0000
mov edx, dword [esp + 0x14]
movzx eax, dx
or ecx, eax
mov dword [esp + 8], ecx
shr edx, 0x10
and ebp, 0xffff0000
or ebp, edx
mov esi, ebx
shl esi, 0x10
mov edx, dword [esp + 0x1c]
movzx eax, dx
or esi, eax
mov eax, esi
mov ecx, edi
shld ecx, ebx, 0x10
shr edx, 0x10
and ebx, 0xffff0000
or ebx, edx
mov edx, dword [esp + 0xc]
movzx esi, dx
mov dword [esp + 0x1c], esi
shr edx, 0x10
and edi, 0xffff0000
or edi, edx
mov dword [esp + 0xc], edi
and ecx, 0xffff0000
mov dword [esp + 0x10], ecx
mov edx, dword [esp + 0x58]
mov esi, dword [edx - 0x40]
mov dword [esp + 0x68], esi
shl esi, 5
mov dword [esp + 0x48], esi
mov edi, dword [esp]
xor edi, dword [edx + esi - 0x310]
xor eax, dword [edx + esi - 0x30c]
mov dword [esp + 0x18], eax
mov eax, dword [esp + 4]
xor eax, dword [edx + esi - 0x308]
mov dword [esp + 4], eax
xor ebx, dword [edx + esi - 0x304]
mov ecx, dword [esp + 8]
xor ecx, dword [edx + esi - 0x300]
mov eax, ebp
xor eax, dword [edx + esi - 0x2f8]
mov dword [esp + 0x14], eax
mov ebp, dword [esp + 0xc]
xor ebp, dword [edx + esi - 0x2f4]
mov dword [esp + 0xc], ebp
mov edx, dword [esp + 0x1c]
add dword [esp + 0x10], edx
xor eax, ecx
mov ebp, ecx
mov dword [esp + 8], ecx
mov ecx, eax
mov edx, eax
xor ecx, edi
xor ebp, ebx
mov eax, edi
xor edi, ebp
mov dword [esp + 0x20], ebp
mov dword [esp], edi
mov esi, edi
mov dword [esp + 0x54], edx
and esi, edx
xor esi, ecx
mov dword [esp + 0x1c], esi
xor ecx, dword [esp + 0x18]
mov dword [esp + 0x28], ecx
xor ecx, ebp
mov dword [esp + 0x44], ecx
mov esi, ecx
mov ebp, dword [esp + 0xc]
xor esi, ebp
xor edx, ebp
xor dword [esp + 8], ebp
xor ebp, dword [esp + 0x14]
mov dword [esp + 0xc], ebp
mov ecx, eax
xor ecx, ebx
mov dword [esp + 0x50], ecx
mov edi, dword [esp + 4]
xor edi, esi
mov dword [esp + 4], edi
xor esi, ebx
mov dword [esp + 0x40], esi
mov eax, dword [esp + 0x10]
mov ebx, dword [esp + 0x48]
mov esi, dword [esp + 0x58]
xor eax, dword [esi + ebx - 0x2fc]
mov dword [esp + 0x10], eax
mov ebx, dword [esp + 0x28]
xor ebx, eax
mov dword [esp + 0x14], ebx
xor ebx, dword [esp]
mov dword [esp + 0x34], ebx
mov eax, ebp
xor eax, ecx
mov dword [esp + 0x2c], eax
mov esi, dword [esp + 0x20]
xor ebp, esi
mov dword [esp + 0x4c], ebp
mov eax, edi
xor eax, esi
mov edi, eax
xor edi, dword [esp + 0x14]
mov dword [esp + 0x24], edi
mov ebp, edx
mov dword [esp + 0x38], edx
xor edi, edx
mov ecx, edi
mov edx, edi
mov dword [esp + 0x30], edi
xor ecx, ebx
mov dword [esp + 0x3c], ecx
and eax, esi
and ecx, dword [esp + 0x4c]
xor ecx, eax
mov ebx, dword [esp + 0x2c]
and ebx, dword [esp + 0xc]
xor ebx, eax
mov edi, dword [esp + 0x24]
and edi, dword [esp + 0x28]
xor edi, dword [esp + 0x50]
and edx, dword [esp + 0x40]
mov eax, ebp
and eax, dword [esp + 8]
xor eax, dword [esp + 4]
xor eax, edx
xor edi, ebx
xor edi, edx
mov ebp, dword [esp + 0x18]
xor ebp, dword [esp]
mov dword [esp + 0x18], ebp
mov esi, dword [esp + 0x34]
and esi, ebp
xor esi, dword [esp + 0x10]
xor eax, ecx
mov edx, dword [esp + 0x1c]
xor edx, esi
xor edx, ecx
mov dword [esp + 0x1c], edx
mov ecx, dword [esp + 0x44]
and ecx, dword [esp + 0x14]
xor ecx, dword [esp + 0x20]
xor ecx, esi
xor ecx, ebx
mov ebp, eax
xor ebp, edi
and eax, edx
mov esi, eax
xor esi, ecx
mov ebx, esi
and ebx, ebp
xor ebx, edi
mov edx, dword [esp + 0x1c]
xor edx, ecx
xor edi, eax
and edi, edx
mov edx, edi
xor edi, eax
xor edx, ecx
and edi, ecx
mov eax, dword [esp + 0x1c]
xor eax, edi
xor edi, esi
and edi, ebx
xor edi, ebp
and dword [esp + 0x30], eax
mov ecx, eax
and eax, dword [esp + 0x40]
mov dword [esp + 0x1c], eax
xor ecx, edx
mov eax, edi
xor eax, ecx
mov dword [esp + 0x10], eax
mov esi, dword [esp + 0x38]
and esi, ecx
and ecx, dword [esp + 8]
mov dword [esp + 0x40], ecx
mov ecx, ebx
xor ecx, edx
and dword [esp + 0x24], edx
and edx, dword [esp + 0x28]
mov dword [esp + 0x28], edx
mov eax, edi
xor eax, ebx
mov ebp, dword [esp + 0x34]
and ebp, eax
mov dword [esp + 0x34], ebp
and eax, dword [esp + 0x18]
mov dword [esp + 8], eax
and dword [esp], edi
and edi, dword [esp + 0x54]
and dword [esp + 0x14], ebx
and ebx, dword [esp + 0x44]
mov eax, dword [esp + 0x10]
xor eax, ecx
and dword [esp + 0x3c], eax
and eax, dword [esp + 0x4c]
mov dword [esp + 0x18], eax
mov edx, dword [esp + 0x2c]
mov eax, dword [esp + 0x10]
and edx, eax
mov dword [esp + 0x2c], edx
and eax, dword [esp + 0xc]
mov dword [esp + 0x10], eax
and dword [esp + 0x20], ecx
and ecx, dword [esp + 4]
mov eax, dword [esp + 8]
xor eax, dword [esp + 0x18]
mov dword [esp + 8], eax
xor ecx, edi
xor ecx, edx
xor ecx, eax
mov edx, ecx
xor ecx, ebp
mov dword [esp + 4], ecx
mov ebp, ecx
mov eax, dword [esp]
xor ebp, eax
xor ebx, esi
xor esi, dword [esp + 0x14]
xor esi, eax
xor edx, dword [esp + 0x30]
xor esi, edx
mov dword [esp + 0x38], esi
mov eax, dword [esp + 0x24]
xor edx, eax
mov dword [esp + 0xc], edx
mov ecx, dword [esp + 0x28]
xor eax, ecx
xor eax, dword [esp + 0x40]
mov dword [esp + 0x24], eax
mov esi, dword [esp + 0x2c]
xor esi, dword [esp + 0x3c]
xor ebx, eax
xor ebx, ebp
xor esi, ebp
mov eax, ecx
xor eax, dword [esp + 0x1c]
mov edx, dword [esp + 0x10]
xor eax, edx
mov ecx, dword [esp + 0x20]
xor ecx, eax
xor eax, dword [esp + 8]
xor edi, ebx
xor eax, ebx
mov ebp, eax
mov ebx, dword [esp + 0x14]
xor dword [esp + 4], ebx
xor ebx, dword [esp + 0x30]
xor ebx, dword [esp + 0x24]
xor ebx, edx
xor ebx, dword [esp + 0x34]
xor ebx, dword [esp + 0x18]
mov eax, ecx
shr eax, 8
xor eax, ecx
and eax, 0xcc00cc
mov edx, eax
shl edx, 8
or edx, eax
xor edx, ecx
mov eax, edx
shl eax, 4
and eax, 0xaaa0aaa0
mov ecx, edx
and edx, 0x55555555
or edx, eax
shr ecx, 0xc
and ecx, 0xa000a
or edx, ecx
mov dword [esp + 0x18], edx
mov eax, esi
shr eax, 8
xor eax, esi
and eax, 0xcc00cc
mov edx, eax
shl edx, 8
or edx, eax
xor ebx, esi
xor edx, esi
mov eax, edx
shl eax, 4
and eax, 0xaaa0aaa0
mov ecx, edx
and edx, 0x55555555
or edx, eax
shr ecx, 0xc
and ecx, 0xa000a
or edx, ecx
mov dword [esp], edx
mov ecx, dword [esp + 0x38]
mov eax, ecx
shr eax, 8
xor eax, ecx
and eax, 0xcc00cc
mov edx, eax
shl edx, 8
or edx, eax
xor edx, ecx
mov eax, edx
shl eax, 4
and eax, 0xaaa0aaa0
mov ecx, edx
and edx, 0x55555555
or edx, eax
shr ecx, 0xc
and ecx, 0xa000a
or edx, ecx
mov dword [esp + 0x28], edx
mov eax, ebx
shr eax, 8
xor eax, ebx
and eax, 0xcc00cc
mov esi, eax
shl esi, 8
or esi, eax
xor esi, ebx
mov eax, esi
shl eax, 4
and eax, 0xaaa0aaa0
mov ecx, esi
and esi, 0x55555555
or esi, eax
shr ecx, 0xc
and ecx, 0xa000a
or esi, ecx
mov eax, dword [esp + 0xc]
mov ecx, eax
shr ecx, 8
xor ecx, eax
mov edx, eax
and ecx, 0xcc00cc
mov eax, ecx
shl eax, 8
or eax, ecx
xor eax, edx
mov edx, eax
shl edx, 4
and edx, 0xaaa0aaa0
mov ecx, eax
and eax, 0x55555555
or eax, edx
shr ecx, 0xc
and ecx, 0xa000a
or eax, ecx
mov edx, eax
mov ecx, edi
shr ecx, 8
xor ecx, edi
and ecx, 0xcc00cc
mov eax, ecx
shl eax, 8
or eax, ecx
xor eax, edi
mov edi, eax
shl edi, 4
and edi, 0xaaa0aaa0
mov ecx, eax
and eax, 0x55555555
or eax, edi
shr ecx, 0xc
and ecx, 0xa000a
or eax, ecx
mov dword [esp + 0x20], eax
mov eax, ebp
shr eax, 8
xor eax, ebp
and eax, 0xcc00cc
mov edi, eax
shl edi, 8
or edi, eax
xor edi, ebp
mov eax, edi
shl eax, 4
and eax, 0xaaa0aaa0
mov ecx, edi
and edi, 0x55555555
or edi, eax
shr ecx, 0xc
and ecx, 0xa000a
or edi, ecx
mov dword [esp + 8], edi
mov ecx, dword [esp + 4]
mov eax, ecx
shr eax, 8
xor eax, ecx
and eax, 0xcc00cc
mov edi, eax
shl edi, 8
or edi, eax
xor edi, ecx
mov eax, edi
shl eax, 4
and eax, 0xaaa0aaa0
mov ecx, edi
and edi, 0x55555555
or edi, eax
shr ecx, 0xc
and ecx, 0xa000a
or edi, ecx
mov ebx, edi
mov ecx, dword [esp + 0x68]
mov eax, dword [esp + 0x6c]
mov edi, dword [esp + 0x48]
mov ebp, edi
add edi, eax
add edi, 0xffffffe0
mov dword [esp + 0x1c], edi
add ecx, 0xffffffff
je 0x49a6e0
mov edi, dword [esp + 0x28]
mov dword [esp + 0xc], esi
mov dword [esp + 0x14], edx
mov esi, dword [esp + 0x20]
mov eax, dword [esp + 0x1c]
mov edx, dword [esp + 8]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov dword [esp + 0x1c], eax
mov dword [esp + 0x68], ecx
mov ecx, dword [esp + 0x18]
xor ecx, dword [eax]
mov dword [esp + 0x18], ecx
xor ebx, dword [eax + 0x1c]
mov ebp, ebx
xor ebp, ecx
mov eax, ebp
and eax, 0xf1111111
mov ecx, ebp
shr ecx, 1
and ecx, 0x77777777
lea eax, [ecx + eax*8]
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x1c]
xor esi, dword [eax + 0x14]
mov dword [esp + 0x20], esi
mov eax, dword [esp + 0x1c]
xor edx, dword [eax + 0x18]
mov ecx, edx
xor ecx, esi
mov dword [esp + 0x24], ecx
mov esi, ebp
mov eax, ebp
xor esi, ecx
mov dword [esp + 0x10], esi
mov ecx, esi
and ecx, 0xf1111111
mov ebp, edx
mov edx, esi
shr edx, 1
and edx, 0x77777777
lea ecx, [edx + ecx*8]
mov dword [esp + 4], ecx
mov ecx, dword [esp + 0x1c]
xor edi, dword [ecx + 8]
mov esi, ebx
xor esi, edi
mov dword [esp + 0x2c], esi
mov edx, esi
and edx, 0xf1111111
shr esi, 1
and esi, 0x77777777
lea edx, [esi + edx*8]
mov dword [esp + 0x30], edx
mov edx, ebp
and edx, 0xf1111111
mov esi, ebp
shr esi, 1
and esi, 0x77777777
lea edx, [esi + edx*8]
mov dword [esp + 0x48], edx
mov esi, ebp
mov dword [esp + 8], ebp
mov edx, ebp
and edx, 0xf3333333
shr esi, 2
and esi, 0x33333333
lea edx, [esi + edx*4]
mov dword [esp + 0x3c], edx
mov esi, eax
mov dword [esp + 0x34], eax
and eax, 0xf3333333
shr esi, 2
and esi, 0x33333333
lea ecx, [esi + eax*4]
mov eax, dword [esp + 0x10]
xor dword [esp + 4], eax
mov eax, dword [esp + 0x1c]
mov edx, dword [esp + 0x14]
xor edx, dword [eax + 0x10]
mov esi, edx
mov dword [esp + 0x14], edx
mov eax, edx
and eax, 0xf3333333
shr edx, 2
and edx, 0x33333333
lea eax, [edx + eax*4]
mov edx, dword [esp + 0x1c]
mov ebp, dword [esp]
xor ebp, dword [edx + 4]
mov dword [esp], ebp
xor eax, esi
mov edx, eax
and edx, 0xf1111111
shr eax, 1
and eax, 0x77777777
lea edx, [eax + edx*8]
mov eax, dword [esp + 0x1c]
mov esi, dword [esp + 0xc]
xor esi, dword [eax + 0xc]
mov dword [esp + 0xc], esi
mov eax, dword [esp + 0x34]
xor dword [esp + 0x38], eax
xor ecx, eax
mov dword [esp + 0x64], ecx
mov ecx, dword [esp + 0x2c]
xor eax, ecx
mov dword [esp + 0x10], eax
xor dword [esp + 0x30], ecx
mov ebp, dword [esp + 8]
xor ecx, ebp
mov dword [esp + 0x2c], ecx
mov ecx, ebx
xor ecx, ebp
mov dword [esp + 0x44], ecx
xor dword [esp + 0x48], ebp
xor dword [esp + 0x3c], ebp
mov ecx, ebp
xor edx, ebp
mov dword [esp + 0x9c], edx
mov eax, ebp
xor eax, dword [esp]
mov dword [esp + 0x60], eax
mov ecx, dword [esp + 0x20]
xor ecx, esi
xor ecx, eax
xor dword [esp + 0x10], ecx
mov ecx, eax
xor ecx, dword [esp + 0x18]
mov edx, ecx
xor edx, dword [esp + 0x24]
mov esi, edx
and esi, 0xf1111111
mov eax, edi
mov dword [esp + 0x28], edi
mov edi, edx
shr edi, 1
and edi, 0x77777777
mov ebp, ebx
lea ebx, [edi + esi*8]
xor ecx, eax
mov esi, ecx
and esi, 0xf1111111
mov edi, ecx
shr edi, 1
and edi, 0x77777777
lea eax, [edi + esi*8]
xor ebx, edx
mov dword [esp + 8], ebx
xor eax, ecx
mov dword [esp + 0x94], eax
mov eax, dword [esp + 0x10]
mov ecx, eax
and ecx, 0xf1111111
mov edx, eax
shr edx, 1
and edx, 0x77777777
lea ecx, [edx + ecx*8]
xor ecx, eax
mov dword [esp + 0x10], ecx
mov eax, ebp
and eax, 0xf1111111
mov ecx, ebp
shr ecx, 1
and ecx, 0x77777777
lea esi, [ecx + eax*8]
mov edi, dword [esp + 0x20]
mov ecx, edi
and ecx, 0xf3333333
mov edx, edi
shr edx, 2
and edx, 0x33333333
lea ecx, [edx + ecx*4]
xor ecx, edi
mov edx, ecx
and edx, 0xf1111111
shr ecx, 1
and ecx, 0x77777777
lea eax, [ecx + edx*8]
xor esi, ebp
mov dword [esp + 0x5c], esi
xor eax, ebp
mov dword [esp + 0x98], eax
mov esi, ebp
xor esi, dword [esp + 0xc]
mov ecx, esi
and ecx, 0xf1111111
mov edx, esi
shr edx, 1
and edx, 0x77777777
lea eax, [edx + ecx*8]
mov dword [esp + 0x50], eax
mov eax, dword [esp + 0x14]
mov ecx, eax
and ecx, 0xf1111111
mov edx, eax
shr edx, 1
and edx, 0x77777777
lea edx, [edx + ecx*8]
mov ecx, edi
and ecx, 0xf1111111
mov ebx, edi
shr ebx, 1
and ebx, 0x77777777
lea ecx, [ebx + ecx*8]
mov ebp, dword [esp + 0x24]
xor ebp, eax
xor ebp, esi
mov dword [esp + 0x24], ebp
mov ebx, ebp
and ebx, 0xf1111111
shr ebp, 1
and ebp, 0x77777777
lea eax, [ebx*8]
add eax, ebp
mov dword [esp + 0x40], eax
mov ebp, dword [esp + 0x14]
xor edx, ebp
mov ebx, edx
and ebx, 0xf3333333
shr edx, 2
and edx, 0x33333333
lea eax, [edx + ebx*4]
mov edx, esi
and edx, 0xf3333333
mov ebx, esi
shr ebx, 2
and ebx, 0x33333333
lea ebx, [ebx + edx*4]
xor ecx, edi
xor eax, edi
mov dword [esp + 0x34], eax
mov edx, edi
xor edx, ebp
xor dword [esp + 0x50], esi
xor ebx, esi
mov edi, esi
xor edi, edx
xor edi, dword [esp + 0x2c]
mov ebp, edi
and ebp, 0xf1111111
mov esi, edi
shr esi, 1
and esi, 0x77777777
lea eax, [esi + ebp*8]
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0x24]
xor dword [esp + 0x40], eax
xor edx, dword [esp + 0x44]
mov esi, edx
and esi, 0xf1111111
mov ebp, edx
shr ebp, 1
and ebp, 0x77777777
lea eax, [esi*8]
add eax, ebp
mov dword [esp + 0x54], eax
mov ebp, dword [esp + 4]
mov eax, ebp
and eax, 0xf3333333
shr ebp, 2
and ebp, 0x33333333
lea eax, [eax*4]
add eax, ebp
mov dword [esp + 0x90], eax
mov ebp, dword [esp]
mov esi, ebp
and esi, 0xf1111111
shr ebp, 1
and ebp, 0x77777777
lea esi, [esi*8]
add esi, ebp
mov eax, dword [esp + 0x5c]
mov ebp, eax
and ebp, 0xf3333333
shr eax, 2
and eax, 0x33333333
lea eax, [eax + ebp*4]
mov dword [esp + 0x88], eax
mov eax, dword [esp + 0x38]
mov ebp, eax
and ebp, 0xf3333333
shr eax, 2
and eax, 0x33333333
lea eax, [eax + ebp*4]
mov dword [esp + 0x8c], eax
xor esi, dword [esp]
mov ebp, esi
and ebp, 0xf3333333
shr esi, 2
and esi, 0x33333333
lea eax, [esi + ebp*4]
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x30]
mov esi, eax
and esi, 0xf3333333
shr eax, 2
and eax, 0x33333333
lea eax, [eax + esi*4]
mov dword [esp + 0x5c], eax
mov eax, dword [esp + 0x50]
mov esi, eax
and esi, 0xf3333333
shr eax, 2
and eax, 0x33333333
lea eax, [eax + esi*4]
mov dword [esp + 0x50], eax
mov eax, ecx
and eax, 0xf3333333
shr ecx, 2
and ecx, 0x33333333
lea eax, [ecx + eax*4]
mov dword [esp + 0x38], eax
mov ecx, dword [esp + 0x48]
mov eax, ecx
and eax, 0xf3333333
shr ecx, 2
and ecx, 0x33333333
lea eax, [ecx + eax*4]
mov dword [esp + 0x24], eax
mov esi, dword [esp + 0x44]
mov eax, esi
and eax, 0xf3333333
mov ecx, esi
shr ecx, 2
and ecx, 0x33333333
lea eax, [ecx + eax*4]
xor dword [esp + 0x54], edx
xor eax, esi
mov esi, dword [esp + 0x60]
mov ecx, esi
and ecx, 0xf3333333
mov edx, esi
mov ebp, esi
shr edx, 2
and edx, 0x33333333
lea edx, [edx + ecx*4]
mov esi, dword [esp + 0x2c]
mov ecx, esi
and ecx, 0xf3333333
shr esi, 2
and esi, 0x33333333
lea ecx, [esi + ecx*4]
xor dword [esp + 0x4c], edi
mov esi, ebp
xor edx, ebp
xor edi, ebp
mov dword [esp + 0x30], edi
mov ebp, dword [esp + 8]
mov esi, ebp
and esi, 0xf3333333
shr ebp, 2
and ebp, 0x33333333
lea esi, [esi*4]
add esi, ebp
mov dword [esp + 0x48], esi
xor ecx, dword [esp + 0x2c]
mov ebp, dword [esp + 0x3c]
mov edi, ebp
and edi, 0xf1111111
shr ebp, 1
and ebp, 0x77777777
lea esi, [edi*8]
add esi, ebp
mov dword [esp + 0x60], esi
mov edi, eax
and edi, 0xf1111111
shr eax, 1
and eax, 0x77777777
lea esi, [eax + edi*8]
mov edi, dword [esp + 0x64]
mov eax, edi
and eax, 0xf1111111
shr edi, 1
and edi, 0x77777777
lea eax, [edi + eax*8]
mov dword [esp + 0x64], eax
mov eax, edx
and eax, 0xf1111111
shr edx, 1
and edx, 0x77777777
lea eax, [edx + eax*8]
mov dword [esp + 0x44], eax
mov eax, ecx
and eax, 0xf1111111
shr ecx, 1
and ecx, 0x77777777
lea eax, [ecx + eax*8]
mov dword [esp + 0x2c], eax
mov eax, ebx
and eax, 0xf1111111
shr ebx, 1
and ebx, 0x77777777
lea eax, [ebx + eax*8]
mov dword [esp + 0x3c], eax
mov edi, dword [esp + 4]
xor edi, dword [esp + 0x18]
mov ebx, dword [esp + 0x20]
xor ebx, dword [esp + 0x28]
mov ecx, dword [esp + 0x94]
xor ebx, ecx
mov eax, ecx
and ecx, 0xf3333333
shr eax, 2
and eax, 0x33333333
lea eax, [eax + ecx*4]
mov dword [esp + 0x20], eax
mov ebp, dword [esp + 0x10]
mov eax, ebp
and eax, 0xf3333333
mov edx, ebp
shr edx, 2
and edx, 0x33333333
lea eax, [edx + eax*4]
mov dword [esp + 0x28], eax
mov eax, edi
xor eax, dword [esp + 0x60]
xor eax, dword [esp + 0x88]
xor eax, dword [esp + 0x90]
mov dword [esp + 4], eax
mov edx, dword [esp + 0x40]
xor dword [esp + 0x38], edx
mov eax, edx
and edx, 0xf3333333
shr eax, 2
and eax, 0x33333333
lea eax, [eax + edx*4]
mov dword [esp + 0x18], eax
mov ecx, dword [esp + 8]
xor ecx, dword [esp]
xor ecx, dword [esp + 0x8c]
xor ecx, esi
mov edx, dword [esp + 0x54]
xor dword [esp + 0x24], edx
mov eax, edx
and edx, 0xf3333333
shr eax, 2
and eax, 0x33333333
lea eax, [eax + edx*4]
mov dword [esp], eax
mov edi, dword [esp + 0x30]
mov eax, edi
and eax, 0xf1111111
shr edi, 1
and edi, 0x77777777
lea esi, [edi + eax*8]
xor ecx, dword [esp + 0x48]
mov dword [esp + 8], ecx
xor ebx, dword [esp + 0x64]
xor ebx, dword [esp + 0x20]
mov dword [esp + 0x20], ebx
mov edx, dword [esp + 0x34]
mov edi, dword [esp + 0x4c]
xor edx, edi
mov ecx, edi
and edi, 0xf3333333
shr ecx, 2
and ecx, 0x33333333
lea ecx, [ecx + edi*4]
mov eax, ebp
xor eax, dword [esp + 0xc]
xor eax, dword [esp + 0x44]
xor eax, dword [esp + 0x5c]
mov ebp, esi
xor ebp, dword [esp + 0x30]
mov esi, ebp
and esi, 0xf3333333
mov edi, ebp
shr edi, 2
and edi, 0x33333333
lea esi, [edi + esi*4]
xor eax, dword [esp + 0x28]
mov dword [esp + 0x10], eax
xor ebp, dword [esp + 0x14]
xor ebp, dword [esp + 0x50]
xor ebp, dword [esp + 0x2c]
xor edx, dword [esp + 0x3c]
xor edx, ecx
mov dword [esp + 0x34], edx
mov ebx, dword [esp + 0x38]
xor ebx, dword [esp + 0x9c]
xor ebp, esi
xor ebx, dword [esp + 0x18]
mov eax, dword [esp + 0x24]
xor eax, dword [esp + 0x98]
xor eax, dword [esp]
mov edx, ebp
xor edx, ebx
mov dword [esp + 0x40], edx
mov edi, edx
xor edi, dword [esp + 4]
mov dword [esp], edi
xor edi, dword [esp + 8]
mov dword [esp + 0x30], edi
mov ecx, ebp
mov esi, ebp
xor ecx, dword [esp + 0x10]
mov ebp, edi
xor ebp, ecx
mov dword [esp + 0x48], ebp
mov edi, ecx
mov dword [esp + 0x2c], ecx
xor ebp, eax
mov ecx, edx
xor ecx, eax
mov dword [esp + 0x18], ecx
xor esi, eax
mov dword [esp + 0x3c], esi
xor eax, ebx
mov dword [esp + 0x24], eax
mov edx, dword [esp + 0x20]
xor edx, ebp
mov dword [esp + 0x20], edx
mov ebx, dword [esp + 0x10]
xor ebp, ebx
mov dword [esp + 0x4c], ebp
mov ebp, dword [esp + 4]
xor ebx, ebp
xor ebp, edi
mov ecx, dword [esp + 0x30]
mov esi, dword [esp + 0x34]
xor ecx, esi
mov eax, ecx
mov dword [esp + 0xc], ecx
xor eax, ebp
mov edi, eax
mov dword [esp + 0x38], eax
mov eax, dword [esp + 8]
xor eax, ebp
mov dword [esp + 8], eax
mov dword [esp + 4], ebp
and edi, eax
xor edi, esi
and ebp, dword [esp + 0x40]
xor ebp, dword [esp]
mov dword [esp + 0x14], ebp
mov esi, edx
mov eax, dword [esp + 0x2c]
xor esi, eax
mov edx, esi
xor edx, ecx
mov dword [esp + 0x28], edx
mov ecx, edx
and ecx, dword [esp + 0x30]
xor ecx, ebx
mov ebp, ebx
mov ebx, dword [esp + 0x24]
xor ebp, ebx
mov dword [esp], ebp
mov ebp, eax
xor ebp, ebx
mov dword [esp + 0x54], ebp
mov ebx, edx
mov edx, dword [esp + 0x18]
xor ebx, edx
mov dword [esp + 0x34], ebx
and esi, eax
xor ebx, dword [esp + 0x38]
mov dword [esp + 0x44], ebx
and ebx, ebp
xor ebx, esi
mov ebp, dword [esp]
and ebp, dword [esp + 0x24]
xor ebp, esi
mov eax, dword [esp + 0x34]
and eax, dword [esp + 0x4c]
mov esi, edx
and esi, dword [esp + 0x3c]
xor esi, dword [esp + 0x20]
xor esi, eax
xor esi, ebx
mov edx, dword [esp + 0x14]
xor edx, edi
xor edx, ebx
mov dword [esp + 0x14], edx
mov ebx, dword [esp + 0x48]
and ebx, dword [esp + 0xc]
xor ebx, dword [esp + 0x2c]
xor ebx, edi
xor ecx, ebp
xor ecx, eax
xor ebx, ebp
mov ebp, esi
xor ebp, ecx
and esi, edx
mov eax, esi
xor eax, ebx
mov edi, eax
and edi, ebp
xor edi, ecx
mov edx, dword [esp + 0x14]
xor edx, ebx
xor ecx, esi
and ecx, edx
mov edx, ecx
xor ecx, esi
xor edx, ebx
and ecx, ebx
mov esi, dword [esp + 0x14]
xor esi, ecx
xor ecx, eax
and ecx, edi
xor ecx, ebp
mov eax, esi
and dword [esp + 0x34], esi
and eax, dword [esp + 0x4c]
mov dword [esp + 0x14], eax
mov eax, edx
xor esi, edx
mov edx, ecx
xor edx, esi
mov ebp, edx
and dword [esp + 0x18], esi
and esi, dword [esp + 0x3c]
mov dword [esp + 0x3c], esi
mov edx, edi
xor edx, eax
and dword [esp + 0x28], eax
and eax, dword [esp + 0x30]
mov dword [esp + 0x10], eax
and dword [esp + 4], ecx
mov esi, ecx
and ecx, dword [esp + 0x40]
xor esi, edi
and dword [esp + 0xc], edi
and edi, dword [esp + 0x48]
and dword [esp + 0x38], esi
and esi, dword [esp + 8]
mov ebx, ebp
mov eax, ebp
xor ebx, edx
and dword [esp + 0x44], ebx
and ebx, dword [esp + 0x54]
mov dword [esp + 0x30], ebx
mov ebp, dword [esp]
and ebp, eax
mov dword [esp], ebp
and eax, dword [esp + 0x24]
mov dword [esp + 8], eax
and dword [esp + 0x2c], edx
and edx, dword [esp + 0x20]
xor esi, ebx
xor edx, ecx
xor edx, ebp
xor edx, esi
mov eax, edx
xor edx, dword [esp + 0x38]
mov ebx, edx
mov ebp, dword [esp + 0x18]
xor edi, ebp
xor ebp, dword [esp + 0xc]
xor ebp, dword [esp + 4]
xor edx, dword [esp + 4]
xor eax, dword [esp + 0x34]
xor ebp, eax
mov dword [esp + 0x18], ebp
mov dword [esp + 4], eax
mov ebp, dword [esp + 0x28]
xor dword [esp + 4], ebp
xor ebp, dword [esp + 0x10]
xor ebp, dword [esp + 0x3c]
mov dword [esp + 0x28], ebp
mov eax, dword [esp]
xor eax, dword [esp + 0x44]
xor edi, ebp
xor edi, edx
xor eax, edx
mov dword [esp], eax
mov edx, dword [esp + 0x10]
xor edx, dword [esp + 0x14]
xor edx, dword [esp + 8]
mov ebp, dword [esp + 0x2c]
xor ebp, edx
xor edx, esi
xor ecx, edi
xor edx, edi
mov dword [esp + 0x10], edx
mov eax, dword [esp + 0xc]
xor ebx, eax
mov dword [esp + 0x24], ebx
xor eax, dword [esp + 0x34]
xor eax, dword [esp + 0x28]
xor eax, dword [esp + 8]
xor eax, dword [esp + 0x38]
xor eax, dword [esp + 0x30]
mov dword [esp + 0xc], eax
mov eax, ebp
shr eax, 8
xor eax, ebp
and eax, 0xcc00cc
mov ebx, eax
shl ebx, 8
or ebx, eax
mov esi, dword [esp]
mov eax, esi
shr eax, 8
xor eax, esi
and eax, 0xcc00cc
mov edi, eax
shl edi, 8
or edi, eax
xor ebx, ebp
mov edx, ebx
shl edx, 4
and edx, 0xaaa0aaa0
mov dword [esp + 8], ebx
and ebx, 0x55555555
or ebx, edx
xor dword [esp + 0xc], esi
xor edi, esi
mov edx, edi
shl edx, 4
and edx, 0xaaa0aaa0
mov esi, edi
and edi, 0x55555555
or edi, edx
shr esi, 0xc
and esi, 0xa000a
or edi, esi
mov dword [esp], edi
mov eax, dword [esp + 0x18]
mov edx, eax
shr edx, 8
xor edx, eax
and edx, 0xcc00cc
mov edi, edx
shl edi, 8
or edi, edx
xor edi, eax
mov edx, edi
shl edx, 4
and edx, 0xaaa0aaa0
mov esi, edi
and edi, 0x55555555
or edi, edx
shr esi, 0xc
and esi, 0xa000a
or edi, esi
mov eax, dword [esp + 4]
mov esi, eax
shr esi, 8
xor esi, eax
mov ebp, eax
and esi, 0xcc00cc
mov edx, esi
shl edx, 8
or edx, esi
mov eax, dword [esp + 0xc]
mov esi, eax
shr esi, 8
xor esi, eax
and esi, 0xcc00cc
mov eax, esi
shl eax, 8
or eax, esi
xor edx, ebp
mov ebp, edx
shl ebp, 4
mov esi, edx
and edx, 0x55555555
and ebp, 0xaaa0aaa0
or edx, ebp
mov ebp, dword [esp + 8]
shr ebp, 0xc
and ebp, 0xa000a
or ebx, ebp
mov dword [esp + 0x18], ebx
shr esi, 0xc
and esi, 0xa000a
or edx, esi
mov dword [esp + 0x14], edx
xor eax, dword [esp + 0xc]
mov edx, eax
shl edx, 4
and edx, 0xaaa0aaa0
mov ebx, eax
and eax, 0x55555555
or eax, edx
mov edx, ecx
shr edx, 8
xor edx, ecx
and edx, 0xcc00cc
mov esi, edx
shl esi, 8
or esi, edx
xor esi, ecx
mov ecx, esi
shl ecx, 4
and ecx, 0xaaa0aaa0
mov edx, esi
and esi, 0x55555555
or esi, ecx
shr edx, 0xc
and edx, 0xa000a
or esi, edx
shr ebx, 0xc
and ebx, 0xa000a
or eax, ebx
mov dword [esp + 0xc], eax
mov ecx, dword [esp + 0x10]
mov eax, ecx
shr eax, 8
xor eax, ecx
and eax, 0xcc00cc
mov edx, eax
shl edx, 8
or edx, eax
xor edx, ecx
mov eax, edx
shl eax, 4
and eax, 0xaaa0aaa0
mov ecx, edx
and edx, 0x55555555
or edx, eax
shr ecx, 0xc
and ecx, 0xa000a
or edx, ecx
mov ecx, dword [esp + 0x24]
mov eax, ecx
shr eax, 8
xor eax, ecx
and eax, 0xcc00cc
mov ebx, eax
shl ebx, 8
or ebx, eax
xor ebx, ecx
mov eax, ebx
shl eax, 4
and eax, 0xaaa0aaa0
mov ecx, ebx
and ebx, 0x55555555
or ebx, eax
mov eax, dword [esp + 0x1c]
shr ecx, 0xc
and ecx, 0xa000a
or ebx, ecx
mov ecx, dword [esp + 0x68]
add eax, 0xffffffe0
add ecx, 0xffffffff
jne 0x499bb0
mov dword [esp + 8], edx
mov dword [esp + 0x20], esi
mov ebp, dword [esp + 0x74]
mov eax, dword [esp + 0x6c]
mov esi, dword [esp + 0xc]
mov edx, dword [esp + 0x14]
jmp 0x49a6ea
add ebp, eax
mov edi, dword [esp + 0x28]
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x18]
xor ecx, dword [eax]
mov dword [esp + 0x18], ecx
mov eax, dword [esp]
xor eax, dword [ebp - 0x1c]
mov dword [esp], eax
xor edi, dword [ebp - 0x18]
mov dword [esp + 0x28], edi
xor esi, dword [ebp - 0x14]
mov dword [esp + 0xc], esi
xor edx, dword [ebp - 0x10]
mov dword [esp + 0x14], edx
mov eax, dword [esp + 0x20]
xor eax, dword [ebp - 0xc]
mov dword [esp + 0x20], eax
mov eax, dword [esp + 8]
xor eax, dword [ebp - 8]
mov dword [esp + 8], eax
xor ebx, dword [ebp - 4]
mov dword [esp + 0x2c], ebx
xor ecx, ecx
mov dl, 1
lea ebp, [esp + 0xa0]
nop
nop
nop
nop
nop
nop
mov dword [esp + 0x24], edx
mov dword [esp + 0x1c], ebp
mov eax, dword [esp + 0x2c]
shr eax, cl
mov edx, dword [esp + 0x20]
shr edx, cl
shl eax, 0x10
movzx edx, dx
or edx, eax
mov ebx, edx
mov dword [esp + 0x10], edx
mov edx, dword [esp + 0xc]
shr edx, cl
shl edx, 0x10
mov eax, dword [esp]
shr eax, cl
movzx eax, ax
or eax, edx
mov esi, dword [esp + 8]
shr esi, cl
shl esi, 0x10
mov edx, dword [esp + 0x14]
shr edx, cl
movzx edx, dx
mov edi, dword [esp + 0x28]
shr edi, cl
or edx, esi
mov esi, dword [esp + 0x18]
shr esi, cl
shl edi, 0x10
movzx ecx, si
or ecx, edi
mov ebp, ecx
shr ebp, 8
xor ebp, eax
mov esi, 0xff00ff
and ebp, esi
mov edi, ebp
shl edi, 8
xor edi, ecx
mov ecx, edx
shr ecx, 8
xor ecx, ebx
and ecx, esi
mov esi, ecx
shl esi, 8
xor esi, edx
xor ebp, eax
mov eax, esi
shl eax, 4
xor eax, edi
and eax, 0xf0f0f0f0
mov edx, 0x10000001
mul edx
mov dword [esp + 4], eax
mov ebx, edx
xor ecx, dword [esp + 0x10]
xor ebx, esi
mov eax, ecx
shl eax, 4
xor eax, ebp
and eax, 0xf0f0f0f0
mov edx, 0x10000001
mul edx
xor dword [esp + 4], edi
xor edx, ecx
xor eax, ebp
mov ecx, ebx
shr ecx, 0xe
xor ecx, ebx
mov esi, 0xcccc
and ecx, esi
mov esi, ecx
shl esi, 0xe
add esi, ecx
mov edi, dword [esp + 4]
mov ecx, edi
shr ecx, 0xe
xor ecx, edi
mov ebp, 0xcccc
and ecx, ebp
mov ebp, ecx
shl ebp, 0xe
add ebp, ecx
xor ebp, edi
xor esi, ebx
mov edi, edx
shr edi, 0xe
xor edi, edx
mov ecx, 0xcccc
and edi, ecx
mov ebx, 0xcccc
mov ecx, edi
shl ecx, 0xe
add ecx, edi
mov edi, eax
shr edi, 0xe
xor edi, eax
and edi, ebx
mov ebx, edi
shl ebx, 0xe
add ebx, edi
xor ebx, eax
xor ecx, edx
mov edx, ebp
shr edx, 7
xor edx, ebp
mov eax, 0xaa00aa
and edx, eax
mov eax, edx
shl eax, 7
add eax, edx
mov edi, esi
shr edi, 7
xor edi, esi
mov edx, 0xaa00aa
and edi, edx
xor eax, ebp
mov ebp, dword [esp + 0x1c]
mov byte [ebp], al
mov byte [ebp + 1], ah
mov edx, eax
shr edx, 0x10
mov byte [ebp + 2], dl
mov edx, edi
shl edx, 7
add edx, edi
xor edx, esi
mov esi, ebx
shr esi, 7
xor esi, ebx
mov edi, 0xaa00aa
and esi, edi
shr eax, 0x18
mov byte [ebp + 3], al
mov byte [ebp + 4], dl
mov byte [ebp + 5], dh
mov eax, edx
shr eax, 0x10
mov byte [ebp + 6], al
mov eax, esi
shl eax, 7
add eax, esi
xor eax, ebx
mov esi, ecx
shr esi, 7
xor esi, ecx
and esi, edi
shr edx, 0x18
mov byte [ebp + 7], dl
mov byte [ebp + 8], al
mov byte [ebp + 9], ah
mov edx, eax
shr edx, 0x10
mov byte [ebp + 0xa], dl
mov edx, esi
shl edx, 7
add edx, esi
xor edx, ecx
shr eax, 0x18
mov byte [ebp + 0xb], al
mov byte [ebp + 0xc], dl
mov byte [ebp + 0xd], dh
mov eax, edx
shr eax, 0x10
mov byte [ebp + 0xe], al
shr edx, 0x18
mov byte [ebp + 0xf], dl
add ebp, 0x10
mov ecx, 0x10
xor edi, edi
test byte [esp + 0x24], 1
mov edx, 0
jne 0x49a740
mov eax, dword [esp + 0x70]
cmp eax, 2
mov esi, 1
cmovae esi, eax
shl esi, 4
mov ebx, dword [esp + 0x84]
mov ebp, dword [esp + 0x78]
lea ecx, [esp + edi]
add ecx, 0xa0
mov edx, ecx
push ebp
call fcn.00498310
add esp, 4
mov eax, dword [ebx + edi + 0xc]
mov dword [ebp + 0xc], eax
mov eax, dword [ebx + edi + 8]
mov dword [ebp + 8], eax
mov eax, dword [ebx + edi]
mov ecx, dword [ebx + edi + 4]
mov dword [ebp + 4], ecx
mov dword [ebp], eax
mov eax, dword [esp + edi + 0xa0]
mov ecx, dword [esp + edi + 0xa4]
mov dword [ebx + edi], eax
mov dword [ebx + edi + 4], ecx
mov eax, dword [esp + edi + 0xa8]
mov dword [ebx + edi + 8], eax
mov eax, dword [esp + edi + 0xac]
mov dword [ebx + edi + 0xc], eax
add edi, 0x10
cmp esi, edi
jne 0x49a940
add ebx, dword [esp + 0x7c]
mov edx, dword [esp + 0x80]
sub edx, dword [esp + 0x70]
jne 0x499330
lea eax, [esp + 0xa0]
push 0x20
push eax
call fcn.00467170
add esp, 8
mov ecx, dword [esp + 0xc0]
xor ecx, esp
call fcn.0049fc40
add esp, 0xc4
pop esi
pop edi
pop ebx
pop ebp
ret