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

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x12c
mov dword [esp + 0x54], ecx
mov edi, dword [esp + 0x140]
test edi, edi
jle 0x43539e
mov ecx, dword [esp + 0x54]
lea eax, [ecx - 0x24]
lea ebp, [ecx - 4]
add edi, edx
lea esi, [ecx - 0x34]
mov dword [esp + 0x64], esi
mov dword [esp + 0x58], eax
movd xmm0, eax
pshufd xmm0, xmm0, 0x50
movdqa xmm2, xmmword [0x49b620]
paddd xmm2, xmm0
movdqa xmm3, xmmword [0x49b630]
paddd xmm3, xmm0
movdqa xmm4, xmmword [0x49b640]
paddd xmm4, xmm0
movdqa xmm1, xmmword [0x49b650]
paddd xmm1, xmm0
movdqu xmmword [esp + 0xe0], xmm1
movdqa xmm1, xmmword [0x49b660]
paddd xmm1, xmm0
movdqu xmmword [esp + 0xd0], xmm1
paddd xmm0, xmmword [0x49b670]
movdqu xmmword [esp + 0x80], xmm0
lea eax, [ecx - 0x2e8]
mov dword [esp + 0x5c], eax
mov eax, 0x1c
movd xmm1, eax
mov eax, dword [ecx - 4]
xorps xmm5, xmm5
movss xmm5, xmm1
movups xmmword [esp + 0xc0], xmm5
lea ecx, [ecx - 0x15]
mov dword [esp + 0x68], ecx
movdqu xmmword [esp + 0x110], xmm2
pshufd xmm1, xmm2, 0x55
movdqu xmmword [esp + 0xb0], xmm1
movdqu xmmword [esp + 0x100], xmm3
pshufd xmm1, xmm3, 0x55
movdqu xmmword [esp + 0xa0], xmm1
movdqu xmmword [esp + 0xf0], xmm4
pshufd xmm1, xmm4, 0x55
movdqu xmmword [esp + 0x90], xmm1
mov dword [esp + 0x70], edi
mov dword [esp + 0x6c], ebp
cmp eax, ebp
jne 0x435374
mov dword [esp + 0x74], edx
mov eax, dword [esp + 0x68]
mov ecx, dword [esp + 0x58]
mov edi, dword [esp + 0x64]
xor edx, edx
mov esi, edi
mov edi, dword [esi]
bswap edi
mov dword [eax + edx*4 - 3], edi
dec edx
add esi, 4
cmp edx, 0xfffffffc
jne 0x434047
xor edx, edx
xor esi, esi
inc esi
mov edi, dword [esp + 0x64]
xor ebx, ebx
add dword [edi + edx*4], esi
setb bl
inc edx
mov esi, ebx
cmp edx, 4
jne 0x434061
add ecx, 0x10
add eax, 0x10
cmp ecx, ebp
jb 0x434043
mov ebx, dword [esp + 0x54]
movzx eax, word [ebx - 0x24]
movzx ecx, byte [ebx - 0x22]
shl ecx, 0x10
movzx edx, byte [ebx - 0x21]
movzx esi, word [ebx - 0x1c]
movzx edi, byte [ebx - 0x1a]
shl edi, 0x10
movd xmm1, eax
movd xmm2, esi
punpcklqdq xmm2, xmm1
movd xmm1, ecx
movd xmm3, edi
punpcklqdq xmm3, xmm1
por xmm3, xmm2
movzx eax, byte [ebx - 0x19]
movd xmm1, edx
movd xmm2, eax
punpcklqdq xmm2, xmm1
psllq xmm2, 0x18
por xmm2, xmm3
movzx eax, byte [ebx - 0x18]
movzx ecx, byte [ebx - 0x20]
shl ecx, 8
or ecx, eax
movd xmm1, ecx
pxor xmm0, xmm0
punpcklbw xmm1, xmm0
punpcklwd xmm1, xmm0
pxor xmm6, xmm6
pxor xmm3, xmm3
punpckldq xmm3, xmm1
por xmm3, xmm2
movdqu xmm1, xmmword [esp + 0x110]
movd eax, xmm1
movzx eax, byte [eax]
movdqu xmm1, xmmword [esp + 0xb0]
movd ecx, xmm1
movzx ecx, byte [ecx]
shl ecx, 8
or ecx, eax
movd xmm1, ecx
punpcklbw xmm1, xmm6
punpcklwd xmm1, xmm6
pshufd xmm1, xmm1, 0xd4
psllq xmm1, 0x28
por xmm1, xmm3
movdqu xmm2, xmmword [esp + 0x100]
movd eax, xmm2
movzx eax, byte [eax]
movdqu xmm2, xmmword [esp + 0xa0]
movd ecx, xmm2
movzx ecx, byte [ecx]
shl ecx, 8
or ecx, eax
movd xmm2, ecx
punpcklbw xmm2, xmm6
punpcklwd xmm2, xmm6
pshufd xmm2, xmm2, 0xd4
psllq xmm2, 0x30
por xmm2, xmm1
movdqu xmm1, xmmword [esp + 0xf0]
movd eax, xmm1
movdqu xmm1, xmmword [esp + 0x90]
movd ecx, xmm1
movzx ecx, byte [ecx]
movzx eax, byte [eax]
movd xmm1, eax
pinsrw xmm1, ecx, 4
psllq xmm1, 0x38
por xmm1, xmm2
movdqa xmm3, xmm1
psrlq xmm3, 7
pxor xmm3, xmm2
movdqa xmm0, xmmword [0x49b4b0]
pand xmm3, xmm0
movdqa xmm2, xmm3
psllq xmm2, 7
por xmm2, xmm3
pxor xmm2, xmm1
movdqa xmm3, xmm2
psrlq xmm3, 0xe
pxor xmm3, xmm2
movdqa xmm7, xmmword [0x49b4c0]
pand xmm3, xmm7
movdqa xmm1, xmm3
psllq xmm1, 0xe
por xmm1, xmm3
pxor xmm1, xmm2
movdqa xmm3, xmm1
psrlq xmm3, 0x1c
pxor xmm3, xmm1
movdqa xmm2, xmmword [0x49b4d0]
pand xmm3, xmm2
pshufd xmm2, xmm3, 0xee
movd eax, xmm2
shr eax, 4
movd xmm2, eax
movq xmm2, xmm2
movups xmm0, xmmword [esp + 0xc0]
movaps xmm4, xmm0
shufps xmm4, xmm2, 0x24
movdqa xmm2, xmm3
psllq xmm2, 0x1c
orps xmm4, xmm3
movsd xmm4, xmm2
por xmm2, xmm3
pxor xmm2, xmm1
movsd xmm1, xmm3
xorpd xmm1, xmm4
pshufd xmm3, xmm1, 0xee
movd eax, xmm3
pshufd xmm3, xmm1, 0xff
movd ecx, xmm3
shrd eax, ecx, 8
mov dword [esp + 8], eax
shr ecx, 8
movzx edx, word [ebx - 0x14]
movzx esi, byte [ebx - 0x12]
shl esi, 0x10
movzx edi, byte [ebx - 0x11]
movzx eax, word [ebx - 0xc]
movzx ebp, byte [ebx - 0xa]
shl ebp, 0x10
movd xmm3, edx
movd xmm4, eax
punpcklqdq xmm4, xmm3
movd xmm3, esi
movd xmm5, ebp
punpcklqdq xmm5, xmm3
por xmm5, xmm4
movzx edx, byte [ebx - 9]
movd xmm3, edi
movd xmm4, edx
punpcklqdq xmm4, xmm3
psllq xmm4, 0x18
por xmm4, xmm5
movzx edx, byte [ebx - 8]
movzx esi, byte [ebx - 0x10]
shl esi, 8
or esi, edx
movd xmm3, esi
punpcklbw xmm3, xmm6
punpcklwd xmm3, xmm6
pxor xmm5, xmm5
punpckldq xmm5, xmm3
por xmm5, xmm4
movdqu xmm3, xmmword [esp + 0xe0]
movd edx, xmm3
movzx edx, byte [edx]
pshufd xmm3, xmm3, 0x55
movd esi, xmm3
movzx esi, byte [esi]
shl esi, 8
or esi, edx
movd xmm3, esi
punpcklbw xmm3, xmm6
punpcklwd xmm3, xmm6
pshufd xmm3, xmm3, 0xd4
psllq xmm3, 0x28
por xmm3, xmm5
movdqu xmm4, xmmword [esp + 0xd0]
movd edx, xmm4
movzx edx, byte [edx]
pshufd xmm4, xmm4, 0x55
movd esi, xmm4
movzx esi, byte [esi]
shl esi, 8
or esi, edx
movd xmm4, esi
pxor xmm5, xmm5
punpcklbw xmm4, xmm5
punpcklwd xmm4, xmm5
pxor xmm7, xmm7
pshufd xmm4, xmm4, 0xd4
psllq xmm4, 0x30
movdqu xmm5, xmmword [esp + 0x80]
movd edx, xmm5
pshufd xmm5, xmm5, 0x55
movd esi, xmm5
movzx esi, byte [esi]
movzx edx, byte [edx]
movd xmm5, edx
pinsrw xmm5, esi, 4
por xmm4, xmm3
psllq xmm5, 0x38
por xmm5, xmm4
movdqa xmm3, xmm5
psrlq xmm3, 7
pxor xmm3, xmm4
pand xmm3, xmmword [0x49b4b0]
movdqa xmm4, xmm3
psllq xmm4, 7
por xmm4, xmm3
pxor xmm4, xmm5
movdqa xmm5, xmm4
psrlq xmm5, 0xe
pxor xmm5, xmm4
pand xmm5, xmmword [0x49b4c0]
movdqa xmm3, xmm5
psllq xmm3, 0xe
por xmm3, xmm5
pxor xmm3, xmm4
movdqa xmm5, xmm3
psrlq xmm5, 0x1c
pxor xmm5, xmm3
pand xmm5, xmmword [0x49b4d0]
pshufd xmm4, xmm5, 0xee
movd edx, xmm4
shr edx, 4
movd xmm4, edx
movq xmm4, xmm4
shufps xmm0, xmm4, 0x24
movdqa xmm4, xmm5
psllq xmm4, 0x1c
orps xmm0, xmm5
movsd xmm0, xmm4
por xmm4, xmm5
pxor xmm4, xmm3
movsd xmm3, xmm5
xorpd xmm3, xmm0
punpcklqdq xmm4, xmm2
pshufd xmm2, xmm3, 0xee
movd edx, xmm2
pshufd xmm2, xmm3, 0xff
movd esi, xmm2
shrd edx, esi, 8
shr esi, 8
movd xmm2, dword [esp + 8]
movd xmm5, ecx
punpckldq xmm2, xmm5
movd xmm5, edx
movd xmm6, esi
punpckldq xmm5, xmm6
punpcklqdq xmm5, xmm2
pxor xmm5, xmm4
punpckhqdq xmm3, xmm1
movdqa xmm1, xmm5
psllw xmm5, 8
pxor xmm3, xmm5
pshufd xmm2, xmm3, 0xff
movd eax, xmm2
pshufd xmm2, xmm3, 0xee
movd edi, xmm2
movdqa xmm2, xmm3
punpckhwd xmm2, xmm7
movd ecx, xmm2
pand xmm1, xmmword [0x49b580]
shr edi, 0x10
shr eax, 0x10
pxor xmm1, xmm4
pshufd xmm2, xmm1, 0xff
movd ebx, xmm2
movdqa xmm2, xmm1
punpckhwd xmm2, xmm7
movd dword [esp + 8], xmm2
pshufd xmm2, xmm3, 0x55
movd ebp, xmm3
mov esi, ebp
shl esi, 0x10
or esi, ecx
movd ecx, xmm2
pshufd xmm2, xmm1, 0xee
mov edx, 0xffff0000
and ebp, edx
mov edx, 0xffff0000
or ebp, edi
and ecx, edx
or ecx, eax
mov dword [esp + 0x1c], ecx
movd eax, xmm1
mov edi, eax
shl edi, 0x10
add edi, dword [esp + 8]
movd edx, xmm2
shr edx, 0x10
movdqa xmm2, xmm3
psrlq xmm2, 0x20
psrlq xmm3, 0x10
movdqa xmm0, xmmword [0x49b590]
pand xmm3, xmm0
punpckhwd xmm2, xmm7
por xmm2, xmm3
pshufd xmm3, xmm1, 0x55
mov ecx, 0xffff0000
and eax, ecx
or eax, edx
movd ecx, xmm3
shr ebx, 0x10
mov edx, 0xffff0000
and ecx, edx
or ecx, ebx
mov edx, esi
movd ebx, xmm2
movdqa xmm2, xmm1
psrlq xmm2, 0x20
psrlq xmm1, 0x10
pand xmm1, xmm0
punpckhwd xmm2, xmm7
mov esi, dword [esp + 0x54]
xor edx, dword [esi - 0x308]
mov dword [esp + 0x24], edx
xor edi, dword [esi - 0x304]
mov dword [esp + 0x10], edi
xor ebp, dword [esi - 0x300]
mov dword [esp + 8], ebp
xor eax, dword [esi - 0x2fc]
por xmm2, xmm1
xor ebx, dword [esi - 0x2f8]
mov dword [esp + 0x18], ebx
movd ebp, xmm2
xor ebp, dword [esi - 0x2f4]
mov edx, dword [esp + 0x1c]
xor edx, dword [esi - 0x2f0]
mov dword [esp + 0x1c], edx
xor ecx, dword [esi - 0x2ec]
mov dword [esp + 0xc], ecx
mov edx, dword [esi - 0x38]
cmp edx, 1
jne 0x4345d8
mov edx, dword [esp + 0x5c]
mov dword [esp + 0x60], edx
mov edx, dword [esp + 0x1c]
jmp 0x434cc6
dec edx
mov ecx, 1
cmove edx, ecx
mov dword [esp + 0x78], edx
shl edx, 5
mov ecx, dword [esp + 0x5c]
add edx, ecx
mov dword [esp + 0x60], edx
mov dword [esp + 0x50], ecx
mov ebx, ebp
mov ecx, dword [esp + 0xc]
mov edx, dword [esp + 0x1c]
mov esi, dword [esp + 0x18]
mov ebp, dword [esp + 8]
xor esi, ebp
mov edi, ecx
mov dword [esp + 0xc], ecx
xor edi, dword [esp + 0x10]
mov dword [esp + 0x3c], edi
xor ecx, ebp
mov dword [esp + 0x20], ecx
xor ebx, edx
mov dword [esp + 0x34], ebx
mov ecx, edi
xor ecx, esi
mov dword [esp + 0x30], ecx
mov ebp, esi
mov dword [esp + 0x7c], esi
xor eax, ecx
mov esi, dword [esp + 8]
xor esi, eax
mov dword [esp + 8], esi
xor eax, edx
mov ecx, dword [esp + 0xc]
xor ecx, dword [esp + 0x18]
xor esi, ebx
mov edx, eax
xor edx, ecx
mov dword [esp + 0x4c], ecx
mov edi, esi
mov dword [esp + 0x28], esi
xor edi, edx
mov dword [esp + 0x44], edi
mov dword [esp + 0x2c], edx
and edx, ecx
and edi, ebp
xor edi, edx
mov ecx, esi
mov esi, dword [esp + 0x20]
and ecx, esi
xor ecx, edx
mov edx, ebx
mov ebp, dword [esp + 0x24]
xor edx, ebp
mov dword [esp + 0x14], edx
mov ebx, dword [esp + 0x10]
xor ebx, edx
mov dword [esp + 0x10], ebx
xor ebx, esi
mov dword [esp + 0x40], ebx
mov esi, dword [esp + 8]
mov ebx, esi
xor ebx, ebp
mov dword [esp + 0x38], ebx
mov edx, esi
and edx, dword [esp + 0x30]
and ebx, dword [esp + 0x40]
xor eax, edx
xor eax, ebx
mov esi, dword [esp + 0x18]
xor esi, dword [esp + 0x14]
mov dword [esp + 0x18], esi
and esi, ebp
xor esi, dword [esp + 0x20]
xor esi, dword [esp + 0x28]
xor esi, edx
mov ebx, dword [esp + 0x34]
xor ebx, dword [esp + 0x2c]
mov dword [esp + 0x34], ebx
mov edx, dword [esp + 0x10]
and edx, dword [esp + 0x14]
mov dword [esp + 0x1c], edx
mov edx, ebx
mov ebp, dword [esp + 0x3c]
or edx, ebp
xor edx, dword [esp + 0x1c]
xor eax, edi
xor edx, edi
mov edi, dword [esp + 0x14]
xor edi, dword [esp + 0xc]
mov dword [esp + 0x48], edi
mov edi, ebp
not edi
and edi, ebx
xor edi, dword [esp + 0xc]
mov ebp, dword [esp + 0x2c]
xor ebp, dword [esp + 0x24]
mov dword [esp + 0x1c], ebp
and ebp, dword [esp + 0x48]
xor esi, ecx
xor ecx, ebp
xor ecx, edi
mov ebx, eax
xor ebx, esi
and eax, edx
mov edi, eax
xor edi, ecx
mov dword [esp + 0xc], edi
and edi, ebx
xor edi, esi
mov ebp, ecx
xor ebp, edx
xor esi, eax
and esi, ebp
mov ebp, esi
xor esi, eax
xor ebp, ecx
and esi, ecx
xor edx, esi
xor esi, dword [esp + 0xc]
mov eax, edi
and esi, edi
xor esi, ebx
and dword [esp + 8], edx
mov ecx, edx
and edx, dword [esp + 0x30]
xor ecx, ebp
mov ebx, esi
xor ebx, ecx
and dword [esp + 0x38], ecx
and ecx, dword [esp + 0x40]
mov dword [esp + 0x30], ecx
xor edi, ebp
and dword [esp + 0x24], ebp
and ebp, dword [esp + 0x18]
mov dword [esp + 0xc], ebp
mov ebp, esi
xor ebp, eax
and dword [esp + 0x34], ebp
and ebp, dword [esp + 0x3c]
and dword [esp + 0x14], esi
and esi, dword [esp + 0x10]
and dword [esp + 0x1c], eax
and eax, dword [esp + 0x48]
mov dword [esp + 0x40], eax
mov eax, ebx
xor eax, edi
mov ecx, dword [esp + 0x2c]
and ecx, edi
and edi, dword [esp + 0x4c]
and dword [esp + 0x44], eax
and eax, dword [esp + 0x7c]
mov dword [esp + 0x18], eax
and dword [esp + 0x28], ebx
and ebx, dword [esp + 0x20]
mov dword [esp + 0x20], ebx
mov eax, dword [esp + 0x30]
xor dword [esp + 0xc], eax
xor eax, edx
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0x1c]
xor esi, eax
mov ebx, ebp
mov edx, dword [esp + 0x24]
xor ebx, edx
mov dword [esp + 0x10], ebx
xor eax, edx
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 8]
mov edx, dword [esp + 0x34]
xor eax, edx
mov dword [esp + 8], eax
xor ecx, edx
mov ebx, dword [esp + 0x44]
xor dword [esp + 0x28], ebx
xor ecx, ebx
mov dword [esp + 0x2c], ecx
xor ebp, esi
mov ebx, dword [esp + 0x10]
xor ebx, eax
xor dword [esp + 0x40], ebx
xor ebx, esi
xor edi, dword [esp + 0x18]
xor ebx, edi
mov eax, dword [esp + 0x14]
xor edi, eax
mov ecx, dword [esp + 0x28]
xor ecx, edi
xor edi, dword [esp + 0x30]
mov esi, dword [esp + 0x2c]
xor eax, esi
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x38]
xor eax, edi
xor edi, esi
mov dword [esp + 0x24], edi
mov edi, dword [esp + 0x40]
xor edi, ecx
xor ecx, ebp
mov esi, ecx
mov ecx, dword [esp + 8]
xor ecx, eax
mov dword [esp + 8], ecx
xor eax, dword [esp + 0x1c]
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x20]
xor eax, dword [esp + 0x18]
mov edx, ecx
mov ecx, dword [esp + 0x14]
xor edx, ecx
mov dword [esp + 0x44], edx
xor eax, ecx
mov ecx, edi
mov ebp, dword [esp + 0xc]
xor ebp, edi
xor eax, edi
mov dword [esp + 0x20], eax
mov eax, ebx
shr eax, 8
xor eax, ebx
mov dword [esp + 0x10], ebx
mov ecx, 0xcc00cc
and eax, ecx
mov edx, eax
shl edx, 8
or edx, eax
xor edx, ebx
mov eax, edx
shl eax, 0xc
mov ecx, 0xa000a000
and eax, ecx
mov ecx, edx
mov edi, 0x55555555
and edx, edi
or edx, eax
shr ecx, 4
mov eax, 0xaaa0aaa
and ecx, eax
mov ebx, 0xaaa0aaa
or edx, ecx
mov dword [esp + 0x14], edx
mov ecx, esi
mov dword [esp + 0x28], esi
mov eax, esi
shr eax, 8
xor eax, esi
mov edi, 0xcc00cc
and eax, edi
mov esi, eax
shl esi, 8
or esi, eax
xor esi, ecx
mov eax, esi
shl eax, 0xc
mov ecx, 0xa000a000
and eax, ecx
mov ecx, esi
mov edx, 0x55555555
and esi, edx
or esi, eax
shr ecx, 4
and ecx, ebx
or esi, ecx
mov dword [esp + 0xc], ebp
mov ecx, ebp
shr ecx, 8
xor ecx, ebp
and ecx, edi
mov edi, 0xcc00cc
mov eax, ecx
shl eax, 8
or eax, ecx
xor eax, ebp
mov ecx, eax
shl ecx, 0xc
mov edx, 0xa000a000
and ecx, edx
mov edx, eax
mov ebx, 0x55555555
and eax, ebx
mov ebx, 0x55555555
or eax, ecx
shr edx, 4
mov ecx, 0xaaa0aaa
and edx, ecx
or eax, edx
mov edx, dword [esp + 0x38]
mov ecx, edx
shr ecx, 8
xor ecx, edx
and ecx, edi
mov ebp, 0xcc00cc
mov edi, ecx
shl edi, 8
or edi, ecx
xor edi, edx
mov ecx, edi
shl ecx, 0xc
mov edx, 0xa000a000
and ecx, edx
mov edx, edi
and edi, ebx
mov ebx, 0x55555555
or edi, ecx
shr edx, 4
mov ecx, 0xaaa0aaa
and edx, ecx
or edi, edx
mov dword [esp + 0x18], edi
mov edx, dword [esp + 8]
mov ecx, edx
shr ecx, 8
xor ecx, edx
and ecx, ebp
mov ebp, 0xcc00cc
mov edi, ecx
shl edi, 8
or edi, ecx
xor edi, edx
mov ecx, edi
shl ecx, 0xc
mov edx, 0xa000a000
and ecx, edx
mov edx, edi
and edi, ebx
mov ebx, 0x55555555
or edi, ecx
shr edx, 4
mov ecx, 0xaaa0aaa
and edx, ecx
or edi, edx
mov dword [esp + 0x2c], edi
mov edx, dword [esp + 0x20]
mov ecx, edx
shr ecx, 8
xor ecx, edx
and ecx, ebp
mov ebp, 0xcc00cc
mov edi, ecx
shl edi, 8
or edi, ecx
xor edi, edx
mov ecx, edi
shl ecx, 0xc
mov edx, 0xa000a000
and ecx, edx
mov edx, edi
and edi, ebx
or edi, ecx
shr edx, 4
mov ecx, 0xaaa0aaa
and edx, ecx
or edi, edx
mov dword [esp + 0x3c], edi
mov edx, dword [esp + 0x44]
mov ecx, edx
shr ecx, 8
xor ecx, edx
mov ebx, edx
and ecx, ebp
mov ebp, 0xcc00cc
mov edi, ecx
shl edi, 8
or edi, ecx
xor edi, edx
mov ecx, edi
shl ecx, 0xc
mov edx, 0xa000a000
and ecx, edx
mov ebx, edi
mov edx, 0x55555555
and edi, edx
or edi, ecx
shr ebx, 4
mov ecx, 0xaaa0aaa
and ebx, ecx
or edi, ebx
mov edx, dword [esp + 0x24]
mov ebx, edx
shr ebx, 8
xor ebx, edx
and ebx, ebp
mov ecx, ebx
shl ecx, 8
or ecx, ebx
xor ecx, edx
mov ebx, ecx
shl ebx, 0xc
mov edx, 0xa000a000
and ebx, edx
mov ebp, ecx
mov edx, 0x55555555
and ecx, edx
or ecx, ebx
shr ebp, 4
mov edx, 0xaaa0aaa
and ebp, edx
or ecx, ebp
mov dword [esp + 0x1c], ecx
mov ebp, 0xf1111111
mov ecx, dword [esp + 0x10]
and ecx, ebp
mov ebx, dword [esp + 0x14]
shr ebx, 1
mov edx, 0x77777777
and ebx, edx
lea ecx, [ebx + ecx*8]
mov dword [esp + 0x34], ecx
mov ecx, dword [esp + 0x28]
and ecx, ebp
mov ebx, esi
shr ebx, 1
and ebx, edx
lea ecx, [ebx + ecx*8]
mov dword [esp + 0x10], ecx
mov ecx, dword [esp + 0xc]
and ecx, ebp
mov ebx, eax
shr ebx, 1
and ebx, edx
lea ecx, [ebx + ecx*8]
mov dword [esp + 0x30], ecx
mov ecx, dword [esp + 0x38]
and ecx, ebp
mov ebx, dword [esp + 0x18]
shr ebx, 1
and ebx, edx
lea ebx, [ebx + ecx*8]
mov dword [esp + 0x28], ebx
mov ecx, dword [esp + 8]
and ecx, ebp
mov ebx, dword [esp + 0x2c]
shr ebx, 1
and ebx, edx
lea ebx, [ebx + ecx*8]
mov dword [esp + 0x38], ebx
mov ecx, dword [esp + 0x20]
and ecx, ebp
mov ebx, dword [esp + 0x3c]
shr ebx, 1
and ebx, edx
lea ecx, [ebx + ecx*8]
mov dword [esp + 0x20], ecx
mov ecx, dword [esp + 0x44]
and ecx, ebp
mov ebx, edi
shr ebx, 1
and ebx, edx
mov edx, 0x77777777
lea ecx, [ebx + ecx*8]
mov dword [esp + 0x44], ecx
mov ecx, dword [esp + 0x24]
and ecx, ebp
mov ebx, dword [esp + 0x1c]
shr ebx, 1
and ebx, edx
lea ecx, [ebx + ecx*8]
mov dword [esp + 0x40], ecx
mov ebp, dword [esp + 0x14]
xor ebp, dword [esp + 0x34]
mov ebx, ebp
mov dword [esp + 0x14], ebp
and ebx, 0xf3333333
shr ebp, 2
mov ecx, 0x33333333
and ebp, ecx
mov edx, 0x33333333
lea ecx, [ebx*4]
add ecx, ebp
mov dword [esp + 0x24], ecx
xor eax, dword [esp + 0x30]
mov ebx, eax
mov ecx, 0xf3333333
and ebx, ecx
mov ebp, eax
shr ebp, 2
and ebp, edx
lea ecx, [ebx*4]
add ecx, ebp
xor esi, dword [esp + 0x10]
xor ecx, esi
mov dword [esp + 8], ecx
mov ebx, esi
mov ecx, 0xf3333333
and esi, ecx
shr ebx, 2
mov edx, 0x33333333
and ebx, edx
lea esi, [ebx + esi*4]
mov dword [esp + 0x4c], esi
mov ebx, dword [esp + 0x18]
xor ebx, dword [esp + 0x28]
mov dword [esp + 0x18], ebx
mov esi, ebx
and esi, ecx
mov ebp, 0xf3333333
shr ebx, 2
and ebx, edx
mov edx, 0x33333333
lea ecx, [ebx + esi*4]
mov dword [esp + 0x48], ecx
mov ecx, dword [esp + 0x1c]
xor ecx, dword [esp + 0x40]
mov esi, ecx
and esi, ebp
mov ebp, ecx
shr ebp, 2
and ebp, edx
lea edx, [esi*4]
add edx, ebp
xor edi, dword [esp + 0x44]
xor edx, edi
mov dword [esp + 0xc], edx
mov esi, edi
mov ebp, 0xf3333333
and edi, ebp
shr esi, 2
mov ebx, 0x33333333
and esi, ebx
lea edx, [esi + edi*4]
mov edi, dword [esp + 0x3c]
xor edi, dword [esp + 0x20]
xor edx, edi
mov dword [esp + 0x1c], edx
mov edx, edi
and edi, ebp
mov ebp, 0xf3333333
shr edx, 2
and edx, ebx
mov esi, 0x33333333
lea ebx, [edx + edi*4]
mov edi, dword [esp + 0x2c]
xor edi, dword [esp + 0x38]
xor ebx, edi
mov edx, edi
and edi, ebp
shr edx, 2
and edx, esi
mov ebp, dword [esp + 0x50]
mov esi, dword [esp + 0x34]
xor esi, dword [ebp]
lea edx, [edx + edi*4]
mov edi, dword [esp + 0x24]
xor edi, ecx
xor edi, esi
mov dword [esp + 0x24], edi
mov esi, dword [esp + 0x10]
xor esi, ecx
xor esi, dword [esp + 0x4c]
mov edi, dword [esp + 0x14]
xor edi, dword [ebp + 4]
xor esi, edi
mov dword [esp + 0x10], esi
mov esi, dword [esp + 0x30]
xor esi, dword [ebp + 8]
xor dword [esp + 8], esi
xor eax, dword [esp + 0x28]
xor eax, dword [esp + 0x48]
mov esi, dword [esp + 0x18]
mov edi, dword [ebp + 0xc]
xor edi, ecx
xor eax, edi
xor esi, dword [esp + 0x38]
xor esi, edx
mov edx, dword [esp + 0x1c]
xor ecx, dword [ebp + 0x10]
xor esi, ecx
mov dword [esp + 0x18], esi
mov ecx, dword [esp + 0xc]
mov esi, dword [esp + 0x20]
xor esi, dword [ebp + 0x14]
xor ebx, esi
mov esi, dword [esp + 0x44]
xor esi, dword [ebp + 0x18]
mov edi, dword [esp + 0x40]
xor edi, dword [ebp + 0x1c]
xor edx, esi
xor ecx, edi
add ebp, 0x20
mov dword [esp + 0x50], ebp
dec dword [esp + 0x78]
jne 0x434600
mov dword [esp + 0xc], ecx
mov ebp, ebx
mov ecx, dword [esp + 8]
mov esi, ecx
xor esi, dword [esp + 0x18]
mov dword [esp + 0x44], esi
mov edi, dword [esp + 0x10]
mov ebx, dword [esp + 0xc]
xor edi, ebx
mov dword [esp + 0x50], edi
xor ebp, edx
xor edi, esi
mov dword [esp + 0x30], edi
xor eax, edi
mov esi, ecx
xor ecx, eax
mov dword [esp + 8], ecx
xor eax, edx
mov dword [esp + 0xc], ebx
xor esi, ebx
mov dword [esp + 0x1c], esi
mov edx, dword [esp + 0x24]
mov dword [esp + 0x34], ebp
xor edx, ebp
mov dword [esp + 0x14], edx
mov esi, edx
mov edi, dword [esp + 0x18]
xor esi, edi
mov dword [esp + 0x20], esi
xor edi, ebx
mov dword [esp + 0x18], edi
mov edx, ecx
xor edx, ebp
mov ecx, eax
xor ecx, edi
mov ebx, edi
mov esi, edx
mov edi, edx
mov dword [esp + 0x2c], edx
xor esi, ecx
mov dword [esp + 0x40], esi
mov dword [esp + 0x28], ecx
and ecx, ebx
mov edx, esi
and edx, dword [esp + 0x44]
xor edx, ecx
mov esi, dword [esp + 0x1c]
and edi, esi
xor edi, ecx
mov ebp, dword [esp + 0x10]
xor ebp, dword [esp + 0x14]
mov dword [esp + 0x10], ebp
xor ebp, esi
mov dword [esp + 0x3c], ebp
mov ecx, dword [esp + 8]
mov ebp, ecx
mov ebx, dword [esp + 0x24]
xor ebp, ebx
mov dword [esp + 0x38], ebp
and ecx, dword [esp + 0x30]
mov esi, ebp
and esi, dword [esp + 0x3c]
xor eax, ecx
xor eax, esi
mov esi, dword [esp + 0x20]
and esi, ebx
xor esi, dword [esp + 0x1c]
xor esi, dword [esp + 0x2c]
xor esi, ecx
mov ecx, dword [esp + 0x34]
xor ecx, dword [esp + 0x28]
mov dword [esp + 0x34], ecx
mov ebx, dword [esp + 0x10]
and ebx, dword [esp + 0x14]
mov dword [esp + 0x48], ebx
mov ebp, ecx
mov ebx, dword [esp + 0x50]
or ebp, ebx
xor ebp, dword [esp + 0x48]
xor eax, edx
xor ebp, edx
mov edx, dword [esp + 0x14]
xor edx, dword [esp + 0xc]
mov dword [esp + 0x48], edx
mov edx, ebx
not edx
and edx, ecx
xor edx, dword [esp + 0xc]
mov ebx, dword [esp + 0x28]
xor ebx, dword [esp + 0x24]
mov dword [esp + 0xc], ebx
and ebx, dword [esp + 0x48]
xor esi, edi
xor edi, ebx
xor edi, edx
mov ecx, eax
xor ecx, esi
mov dword [esp + 0x4c], ecx
and eax, ebp
mov ebx, eax
xor ebx, edi
mov edx, ebx
and edx, ecx
xor edx, esi
mov ecx, edi
xor ecx, ebp
xor esi, eax
and esi, ecx
mov ecx, esi
xor esi, eax
xor ecx, edi
and esi, edi
xor ebp, esi
xor esi, ebx
and esi, edx
xor esi, dword [esp + 0x4c]
and dword [esp + 8], ebp
mov edi, ebp
and ebp, dword [esp + 0x30]
mov dword [esp + 0x4c], ebp
mov eax, ecx
xor edi, ecx
mov ecx, esi
xor ecx, edi
and dword [esp + 0x38], edi
and edi, dword [esp + 0x3c]
mov dword [esp + 0x30], edi
mov ebx, edx
xor ebx, eax
and dword [esp + 0x24], eax
and eax, dword [esp + 0x20]
mov dword [esp + 0x20], eax
mov edi, esi
xor edi, edx
mov ebp, dword [esp + 0x34]
and ebp, edi
and edi, dword [esp + 0x50]
mov dword [esp + 0x3c], edi
and dword [esp + 0x14], esi
and esi, dword [esp + 0x10]
and dword [esp + 0xc], edx
and edx, dword [esp + 0x48]
mov dword [esp + 0x34], edx
mov edx, ecx
xor edx, ebx
and dword [esp + 0x28], ebx
and ebx, dword [esp + 0x18]
and dword [esp + 0x40], edx
and edx, dword [esp + 0x44]
mov dword [esp + 0x10], edx
mov edi, dword [esp + 0x2c]
and edi, ecx
and ecx, dword [esp + 0x1c]
mov dword [esp + 0x18], ecx
mov ecx, dword [esp + 0x30]
xor dword [esp + 0x20], ecx
xor ecx, dword [esp + 0x4c]
mov dword [esp + 0x30], ecx
mov edx, dword [esp + 0xc]
xor esi, edx
mov ecx, dword [esp + 0x3c]
mov eax, dword [esp + 0x24]
xor ecx, eax
xor edx, eax
mov dword [esp + 0xc], edx
mov edx, dword [esp + 8]
xor edx, ebp
mov dword [esp + 8], edx
mov eax, dword [esp + 0x28]
xor eax, ebp
mov ebp, dword [esp + 0x40]
xor edi, ebp
mov dword [esp + 0x2c], edi
xor eax, ebp
mov edi, dword [esp + 0x3c]
xor edi, esi
xor ecx, edx
xor dword [esp + 0x34], ecx
xor ecx, esi
xor ebx, dword [esp + 0x10]
xor ecx, ebx
mov ebp, ebx
mov edx, dword [esp + 0x14]
xor ebp, edx
mov ebx, dword [esp + 0x2c]
xor ebx, ebp
xor ebp, dword [esp + 0x30]
xor edx, eax
mov dword [esp + 0x14], edx
mov edx, dword [esp + 0x38]
xor edx, ebp
xor ebp, eax
mov dword [esp + 0x2c], ebp
mov esi, dword [esp + 0x34]
xor esi, ebx
xor ebx, edi
mov eax, dword [esp + 8]
xor eax, edx
mov dword [esp + 8], eax
xor edx, dword [esp + 0xc]
mov dword [esp + 0x38], edx
mov edi, dword [esp + 0x18]
xor edi, dword [esp + 0x10]
mov edx, eax
mov eax, dword [esp + 0x14]
xor edx, eax
mov dword [esp + 0x10], edx
xor edi, eax
mov eax, esi
xor dword [esp + 0x20], esi
xor edi, esi
mov dword [esp + 0x18], edi
mov eax, ecx
shr eax, 8
xor eax, ecx
mov edx, 0xcc00cc
and eax, edx
mov edi, 0xcc00cc
mov edx, eax
shl edx, 8
or edx, eax
xor edx, ecx
mov eax, edx
shl eax, 0xc
mov ecx, 0xa000a000
and eax, ecx
mov ecx, edx
mov esi, 0x55555555
and edx, esi
or edx, eax
shr ecx, 4
mov eax, 0xaaa0aaa
and ecx, eax
or edx, ecx
mov dword [esp + 0x24], edx
mov eax, ebx
shr eax, 8
xor eax, ebx
and eax, edi
mov ebp, eax
shl ebp, 8
or ebp, eax
xor ebp, ebx
mov eax, ebp
shl eax, 0xc
mov esi, 0xa000a000
and eax, esi
mov ecx, ebp
mov edi, 0x55555555
and ebp, edi
or ebp, eax
shr ecx, 4
mov edx, 0xaaa0aaa
and ecx, edx
or ebp, ecx
mov dword [esp + 0x14], ebp
mov ecx, dword [esp + 0x20]
mov eax, ecx
shr eax, 8
xor eax, ecx
mov ebx, 0xcc00cc
and eax, ebx
mov ebp, eax
shl ebp, 8
or ebp, eax
xor ebp, ecx
mov eax, ebp
shl eax, 0xc
and eax, esi
mov esi, 0xa000a000
mov ecx, ebp
and ebp, edi
mov edi, 0x55555555
or ebp, eax
shr ecx, 4
and ecx, edx
mov edx, 0xaaa0aaa
or ebp, ecx
mov dword [esp + 0x28], ebp
mov ecx, dword [esp + 0x38]
mov eax, ecx
shr eax, 8
xor eax, ecx
and eax, ebx
mov ebx, 0xcc00cc
mov ebp, eax
shl ebp, 8
or ebp, eax
xor ebp, ecx
mov eax, ebp
shl eax, 0xc
and eax, esi
mov esi, 0xa000a000
mov ecx, ebp
and ebp, edi
mov edi, 0x55555555
or ebp, eax
shr ecx, 4
and ecx, edx
or ebp, ecx
mov dword [esp + 0xc], ebp
mov ecx, dword [esp + 8]
mov eax, ecx
shr eax, 8
xor eax, ecx
and eax, ebx
mov edx, 0xcc00cc
mov ebx, eax
shl ebx, 8
or ebx, eax
xor ebx, ecx
mov eax, ebx
shl eax, 0xc
and eax, esi
mov ecx, ebx
and ebx, edi
mov esi, 0x55555555
or ebx, eax
shr ecx, 4
mov eax, 0xaaa0aaa
and ecx, eax
or ebx, ecx
mov ecx, dword [esp + 0x18]
mov eax, ecx
shr eax, 8
xor eax, ecx
and eax, edx
mov edi, eax
shl edi, 8
or edi, eax
xor edi, ecx
mov eax, edi
shl eax, 0xc
mov ecx, 0xa000a000
and eax, ecx
mov ecx, edi
and edi, esi
mov esi, 0x55555555
or edi, eax
shr ecx, 4
mov eax, 0xaaa0aaa
and ecx, eax
or edi, ecx
mov ecx, dword [esp + 0x10]
mov eax, ecx
shr eax, 8
xor eax, ecx
mov edx, ecx
mov ecx, 0xcc00cc
and eax, ecx
mov ecx, eax
shl ecx, 8
or ecx, eax
xor ecx, edx
mov edx, ecx
shl edx, 0xc
mov eax, 0xa000a000
and edx, eax
mov eax, ecx
and ecx, esi
or ecx, edx
shr eax, 4
mov edx, 0xaaa0aaa
and eax, edx
or ecx, eax
mov eax, dword [esp + 0x2c]
mov edx, eax
shr edx, 8
xor edx, eax
mov esi, eax
mov eax, 0xcc00cc
and edx, eax
mov eax, edx
shl eax, 8
or eax, edx
xor eax, esi
mov esi, eax
shl esi, 0xc
mov edx, 0xa000a000
and esi, edx
mov edx, eax
mov ebp, 0x55555555
and eax, ebp
or eax, esi
shr edx, 4
mov esi, 0xaaa0aaa
and edx, esi
or eax, edx
mov edx, dword [esp + 0x60]
mov esi, dword [esp + 0x24]
xor esi, dword [edx]
mov dword [esp + 0x24], esi
mov esi, dword [esp + 0x14]
xor esi, dword [edx + 4]
mov dword [esp + 0x14], esi
mov esi, dword [esp + 0x28]
xor esi, dword [edx + 8]
mov dword [esp + 0x28], esi
mov esi, dword [esp + 0xc]
xor esi, dword [edx + 0xc]
mov dword [esp + 0xc], esi
xor ebx, dword [edx + 0x10]
mov dword [esp + 0x38], ebx
xor edi, dword [edx + 0x14]
mov dword [esp + 0x2c], edi
xor ecx, dword [edx + 0x18]
mov dword [esp + 0x34], ecx
xor eax, dword [edx + 0x1c]
mov dword [esp + 0x20], eax
xor ecx, ecx
mov dl, 1
mov eax, dword [esp + 0x58]
mov dword [esp + 8], eax
mov dword [esp + 0x18], edx
mov edx, dword [esp + 0x20]
shr edx, cl
shl edx, 0x10
mov eax, dword [esp + 0x2c]
shr eax, cl
mov edi, 0xffff
and eax, edi
or eax, edx
mov dword [esp + 0x10], eax
mov esi, dword [esp + 0xc]
shr esi, cl
shl esi, 0x10
mov edx, dword [esp + 0x14]
shr edx, cl
and edx, edi
mov edi, dword [esp + 0x34]
shr edi, cl
or edx, esi
mov eax, dword [esp + 0x38]
shr eax, cl
shl edi, 0x10
mov ebx, dword [esp + 0x28]
shr ebx, cl
mov esi, 0xffff
and eax, esi
mov ebp, dword [esp + 0x24]
shr ebp, cl
or eax, edi
shl ebx, 0x10
and ebp, esi
or ebp, ebx
mov ecx, ebp
shr ecx, 8
xor ecx, edx
mov ebx, 0xff00ff
and ecx, ebx
mov edi, ecx
shl edi, 8
xor edi, ebp
mov esi, eax
shr esi, 8
mov ebp, dword [esp + 0x10]
xor esi, ebp
and esi, ebx
mov ebx, esi
shl ebx, 8
xor ebx, eax
xor ecx, edx
xor esi, ebp
mov ebp, ebx
shl ebp, 4
xor ebp, edi
mov eax, 0xf0f0f0f0
and ebp, eax
mov edx, ebp
shr edx, 4
xor edx, ebx
xor ebp, edi
mov eax, esi
shl eax, 4
xor eax, ecx
mov edi, 0xf0f0f0f0
and eax, edi
mov ebx, eax
shr ebx, 4
xor ebx, esi
xor eax, ecx
mov ecx, ebp
shr ecx, 0xe
xor ecx, ebp
mov edi, 0xcccc
and ecx, edi
mov esi, ecx
shl esi, 0xe
or esi, ecx
mov ecx, edx
shr ecx, 0xe
xor ecx, edx
and ecx, edi
mov edi, ecx
shl edi, 0xe
or edi, ecx
xor edi, edx
xor esi, ebp
mov ecx, eax
shr ecx, 0xe
xor ecx, eax
mov edx, 0xcccc
and ecx, edx
mov ebp, ecx
shl ebp, 0xe
or ebp, ecx
mov edx, ebx
shr edx, 0xe
xor edx, ebx
mov ecx, 0xcccc
and edx, ecx
mov ecx, edx
shl ecx, 0xe
or ecx, edx
xor ecx, ebx
mov dword [esp + 0x10], ecx
xor ebp, eax
mov edx, esi
shr edx, 7
xor edx, esi
mov eax, 0xaa00aa
and edx, eax
mov ecx, 0xaa00aa
mov eax, edx
shl eax, 7
or eax, edx
mov ebx, edi
shr ebx, 7
xor ebx, edi
and ebx, ecx
xor eax, esi
mov ecx, dword [esp + 8]
mov byte [ecx], al
mov byte [ecx + 1], ah
mov edx, eax
shr edx, 0x10
mov byte [ecx + 2], dl
mov edx, ebx
shl edx, 7
or edx, ebx
xor edx, edi
mov esi, ebp
shr esi, 7
xor esi, ebp
mov ebx, 0xaa00aa
and esi, ebx
shr eax, 0x18
mov byte [ecx + 3], al
mov byte [ecx + 4], dl
mov byte [ecx + 5], dh
mov eax, edx
shr eax, 0x10
mov byte [ecx + 6], al
mov eax, esi
shl eax, 7
or eax, esi
xor eax, ebp
mov edi, dword [esp + 0x10]
mov esi, edi
shr esi, 7
xor esi, edi
and esi, ebx
shr edx, 0x18
mov byte [ecx + 7], dl
mov byte [ecx + 8], al
mov byte [ecx + 9], ah
mov edx, eax
shr edx, 0x10
mov byte [ecx + 0xa], dl
mov edx, esi
shl edx, 7
or edx, esi
xor edx, edi
shr eax, 0x18
mov byte [ecx + 0xb], al
mov byte [ecx + 0xc], dl
mov byte [ecx + 0xd], dh
mov eax, edx
shr eax, 0x10
mov byte [ecx + 0xe], al
shr edx, 0x18
mov byte [ecx + 0xf], dl
add ecx, 0x10
mov dword [esp + 8], ecx
mov ecx, 0x10
test byte [esp + 0x18], 1
mov edx, 0
jne 0x435183
mov eax, dword [esp + 0x58]
mov ebp, dword [esp + 0x6c]
mov dword [ebp], eax
mov edx, dword [esp + 0x74]
mov edi, dword [esp + 0x70]
mov ecx, dword [eax]
mov esi, dword [eax + 4]
xor dword [edx], ecx
xor dword [edx + 4], esi
mov ecx, dword [eax + 8]
mov eax, dword [eax + 0xc]
xor dword [edx + 8], ecx
xor dword [edx + 0xc], eax
mov eax, dword [ebp]
add eax, 0x10
mov dword [ebp], eax
add edx, 0x10
cmp edx, edi
jb 0x43402b
add esp, 0x12c
pop esi
pop edi
pop ebx
pop ebp
ret